/usr/share/axiom-20170501/src/algebra/CYCLOTOM.spad is in axiom-source 20170501-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | )abbrev package CYCLOTOM CyclotomicPolynomialPackage
++ Description:
++ This package has no description
CyclotomicPolynomialPackage() : SIG == CODE where
SUP ==> SparseUnivariatePolynomial(Integer)
LSUP ==> List(SUP)
NNI ==> NonNegativeInteger
FR ==> Factored SUP
IFP ==> IntegerFactorizationPackage Integer
SIG ==> with
cyclotomicDecomposition : Integer -> LSUP
++ cyclotomicDecomposition(n) \undocumented{}
cyclotomic : Integer -> SUP
++ cyclotomic(n) \undocumented{}
cyclotomicFactorization : Integer -> FR
++ cyclotomicFactorization(n) \undocumented{}
CODE ==> add
cyclotomic(n:Integer): SUP ==
x,y,z,l: SUP
g := factors factor(n)$IFP
--Now, for each prime in the factorization apply recursion
l := monomial(1,1) - monomial(1,0)
for u in g repeat
l := (monicDivide(multiplyExponents(l,u.factor::NNI),l)).quotient
if u.exponent>1 then
l := multiplyExponents(l,((u.factor)**((u.exponent-1)::NNI))::NNI)
l
cyclotomicDecomposition(n:Integer):LSUP ==
x,y,z: SUP
l,ll,m: LSUP
rr: Integer
g := factors factor(n)$IFP
l := [monomial(1,1) - monomial(1,0)]
--Now, for each prime in the factorization apply recursion
for u in g repeat
m := [(monicDivide(
multiplyExponents(z,u.factor::NNI),z)).quotient for z in l]
for rr in 1..(u.exponent-1) repeat
l := append(l,m)
m := [multiplyExponents(z,u.factor::NNI) for z in m]
l := append(l,m)
l
cyclotomicFactorization(n:Integer):FR ==
f : SUP
fr : FR := 1$FR
for f in cyclotomicDecomposition(n) repeat
fr := fr * primeFactor(f,1$Integer)
fr
|