/usr/share/axiom-20170501/src/algebra/NORMRETR.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 | )abbrev package NORMRETR NormRetractPackage
++ Description:
++ This package has no description
NormRetractPackage(F, ExtF, SUEx, ExtP, n) : SIG == CODE where
F : FiniteFieldCategory
ExtF : FiniteAlgebraicExtensionField(F)
SUEx : UnivariatePolynomialCategory ExtF
ExtP : UnivariatePolynomialCategory SUEx
n : PositiveInteger
SUP ==> SparseUnivariatePolynomial
R ==> SUP F
P ==> SUP R
SIG ==> with
normFactors : ExtP -> List ExtP
++ normFactors(x) \undocumented
retractIfCan : ExtP -> Union(P, "failed")
++ retractIfCan(x) \undocumented
Frobenius : ExtP -> ExtP
++ Frobenius(x) \undocumented
CODE ==> add
normFactors(p:ExtP):List ExtP ==
facs : List ExtP := [p]
for i in 1..n-1 repeat
member?((p := Frobenius p), facs) => return facs
facs := cons(p, facs)
facs
Frobenius(ff:ExtP):ExtP ==
fft:ExtP:=0
while ff^=0 repeat
fft:=fft + monomial(map(Frobenius, leadingCoefficient ff),
degree ff)
ff:=reductum ff
fft
retractIfCan(ff:ExtP):Union(P, "failed") ==
fft:P:=0
while ff ^= 0 repeat
lc : SUEx := leadingCoefficient ff
plc: SUP F := 0
while lc ^= 0 repeat
lclc:ExtF := leadingCoefficient lc
(retlc := retractIfCan lclc) case "failed" => return "failed"
plc := plc + monomial(retlc::F, degree lc)
lc := reductum lc
fft:=fft+monomial(plc, degree ff)
ff:=reductum ff
fft
|