diff --git a/books/bookvol10.4.pamphlet b/books/bookvol10.4.pamphlet index ff7071b..2b910c8 100644 --- a/books/bookvol10.4.pamphlet +++ b/books/bookvol10.4.pamphlet @@ -30641,6 +30641,282 @@ FiniteDivisorFunctions2(R1, UP1, UPUP1, F1, R2, UP2, UPUP2, F2): \end{chunk} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package FFFACTOR FiniteFieldFactorization} +\begin{chunk}{FiniteFieldFactorization.input} +)set break resume +)sys rm -f FiniteFieldFactorization.output +)spool FiniteFieldFactorization.output +)set message test on +)set message auto off +)clear all + +--S 1 of 1 +)show FiniteFieldFactorization +--R FiniteFieldFactorization(K: FiniteFieldCategory,PolK: UnivariatePolynomialCategory(K)) is a package constructor +--R Abbreviation for FiniteFieldFactorization is FFFACTOR +--R This constructor is exposed in this frame. +--R Issue )edit bookvol10.4.pamphlet to see algebra source code for FFFACTOR +--R +--R------------------------------- Operations -------------------------------- +--R factor : PolK -> Factored(PolK) irreducible? : PolK -> Boolean +--R factorCantorZassenhaus : (PolK,NonNegativeInteger) -> List(PolK) +--R factorSquareFree : PolK -> List(PolK) +--R factorUsingMusser : PolK -> Factored(PolK) +--R factorUsingYun : PolK -> Factored(PolK) +--R +--E 1 + +)spool +)lisp (bye) +\end{chunk} + +\begin{chunk}{FiniteFieldFactorization.help} +==================================================================== +FiniteFieldFactorization examples +==================================================================== + +Part of the package for Algebraic Function Fields in one variable (PAFF) + +See Also: +o )show FiniteFieldFactorization + +\end{chunk} +\pagehead{FiniteFieldFactorization}{FFFACTOR} +\pagepic{ps/v104finitefieldfactorization.eps}{FFFACTOR}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lll} +\cross{FFFACTOR}{factor} & +\cross{FFFACTOR}{factorCantorZassenhaus} & +\cross{FFFACTOR}{factorSquareFree} \\ +\cross{FFFACTOR}{factorUsingMusser} & +\cross{FFFACTOR}{factorUsingYun} & +\cross{FFFACTOR}{irreducible?} +\end{tabular} + + +\begin{chunk}{package FFFACTOR FiniteFieldFactorization} +)abbreviation package FFFACTOR FiniteFieldFactorization +++ Author: Gaetan Hache +++ Date Created: 17 nov 1992 +++ Date Last Updated: March 2013 by Tim Daly +++ Description: +++ Part of the PAFF package +FiniteFieldFactorization(K : FiniteFieldCategory, + PolK : UnivariatePolynomialCategory(K)) : with + + factorSquareFree : PolK -> List(PolK) + + factorCantorZassenhaus : (PolK, NonNegativeInteger) -> List(PolK) + + factor : PolK -> Factored(PolK) + + factorUsingYun : PolK -> Factored(PolK) + + factorUsingMusser : PolK -> Factored(PolK) + + irreducible? : PolK -> Boolean + + == add + + import FiniteFieldSquareFreeDecomposition(K, PolK) + + p : NonNegativeInteger := characteristic()$K + + p' : NonNegativeInteger := p quo 2 -- used for odd p : (p-1)/2 + + q : NonNegativeInteger := size()$K + + q' : NonNegativeInteger := q quo 2 -- used for odd q : (q-1)/2 + + X : PolK := monomial(1, 1) + + primeKdim : NonNegativeInteger := + q_quo_p : NonNegativeInteger := q quo p ; e : NonNegativeInteger := 1 + while q_quo_p > 1 repeat (e := e + 1 ; q_quo_p := q_quo_p quo p) + e + + exp(P : PolK, n : NonNegativeInteger, R : PolK) : PolK == + PP : PolK := P rem R ; Q : PolK := 1 + repeat + if odd?(n) then Q := Q * PP rem R + (n := n quo 2) = 0 => leave + PP := PP * PP rem R + return Q + + pPowers(P : PolK) : PrimitiveArray(PolK) == -- P is monic + n := degree(P) + result : PrimitiveArray(PolK) := new(n, 1) + result(1) := Qi := Q := exp(X, p, P) + for i in 2 .. n-1 repeat (Qi := Qi*Q rem P ; result(i) := Qi) + return result + + pExp(Q : PolK, Xpowers : PrimitiveArray(PolK)) : PolK == + Q' : PolK := 0 + while Q ^= 0 repeat + Q' := Q' +primeFrobenius(leadingCoefficient(Q))*Xpowers(degree(Q)) + Q := reductum(Q) + return Q' + + pTrace(Q : PolK, d : NonNegativeInteger, P : PolK, + Xpowers : PrimitiveArray(PolK)) : PolK == + Q : PolK := Q rem P + result : PolK := Q + for i in 1 .. d-1 repeat result := Q + pExp(result, Xpowers) + return result rem P + + random(n : NonNegativeInteger) : PolK == + repeat + if (deg := (random(n)$Integer)::NonNegativeInteger) > 0 then leave + repeat + if (x : K := random()$K) ^= 0 then leave + result : PolK := + monomial(x, deg) + +/[monomial(random()$K, i) for i in 0 .. deg-1] + return result + + internalFactorCZ(P : PolK, -- P monic-squarefree + d:NonNegativeInteger, Xpowers:PrimitiveArray(PolK)) : List(PolK) == + + listOfFactors : List(PolK) := [P] + degree(P) = d => return listOfFactors + result : List(PolK) := [] + pDim : NonNegativeInteger := d * primeKdim + Q : PolK := P + + repeat + G := pTrace(random(degree(Q)), pDim, Q, Xpowers) + if p > 2 then G := exp(G, p', Q) - 1 + Q1 := gcd(G, Q) ; d1 := degree(Q1) + if d1 > 0 and d1 < degree(Q) then + listOfFactors := rest(listOfFactors) + if d1 = d then result := cons(Q1, result) + else listOfFactors := cons(Q1, listOfFactors) + Q1 := Q quo Q1 ; d1 := degree(Q1) + if d1 = d then result := cons(Q1, result) + else listOfFactors := cons(Q1, listOfFactors) + if empty?(listOfFactors) then leave + Q := first(listOfFactors) + return result + + internalFactorSquareFree(P : PolK):List(PolK) == -- P is monic-squareFree + degree(P) = 1 => [P] + result : List(PolK) := [] + Xpowers : PrimitiveArray(PolK) := pPowers(P) + S : PolK := Xpowers(1) + for j in 1..primeKdim-1 repeat S := pExp(S, Xpowers) + for i in 1 .. repeat -- S = X**(q**i) mod P + if degree(R := gcd(S - X, P)) > 0 then + result := concat(internalFactorCZ(R, i, Xpowers), result) + if degree (P) = degree (R) then return result + P := P quo R + if i >= degree(P) quo 2 then return cons(P, result) + for j in 0 .. degree(P)-1 repeat Xpowers(j):=Xpowers(j) rem P + S := S rem P + else if i >= degree(P) quo 2 then return cons(P, result) + for j in 1 .. primeKdim repeat S := pExp(S, Xpowers) + + internalFactor(P:PolK, sqrfree:PolK -> Factored(PolK)) : Factored(PolK) == + result : Factored(PolK) + if (d := minimumDegree(P)) > 0 then + P := P quo monomial(1, d) + result := primeFactor(X, d) + else + result := 1 + degree(P) = 0 => P * result + if (lcP := leadingCoefficient(P)) ^= 1 then P := inv(lcP) * P + degree(P) = 1 => lcP::PolK * primeFactor(P, 1) * result + sqfP : Factored(PolK) := sqrfree(P) + for x in factors(sqfP) repeat + xFactors : List(PolK) := internalFactorSquareFree(x.factor) + result:= result * */[primeFactor(Q, x.exponent) for Q in xFactors] + return lcP::PolK * result + + factorUsingYun(P : PolK) : Factored(PolK) == internalFactor(P, Yun) + + factorUsingMusser(P : PolK) : Factored(PolK) == internalFactor(P, Musser) + + factor(P : PolK) : Factored(PolK) == factorUsingYun(P) + + factorSquareFree(P : PolK) : List(PolK) == + degree(P) = 0 => [] + discriminant(P) = 0 => error("factorSquareFree : non quadratfrei") + if (lcP := leadingCoefficient(P)) ^= 1 then P := inv(lcP) * P + return internalFactorSquareFree(P) + + factorCantorZassenhaus(P : PolK, d : NonNegativeInteger) : List(PolK) == + if (lcP := leadingCoefficient(P)) ^= 1 then P := inv(lcP) * P + degree(P) = 1 => [P] + return internalFactorCZ(P, d, pPowers(P)) + + qExp(Q : PolK, XqPowers : PrimitiveArray(PolK)) : PolK == + Q' : PolK := 0 + while Q ^= 0 repeat + Q' := Q' + leadingCoefficient(Q) * XqPowers(degree(Q)) + Q := reductum(Q) + return Q' + + qPowers (Xq : PolK, P : PolK) : PrimitiveArray(PolK) == -- Xq = X**q mod P + n := degree(P) + result : PrimitiveArray(PolK) := new(n, 1) + result(1) := Q := Xq + for i in 2 .. n-1 repeat (Q := Q*Xq rem P ; result(i) := Q) + return result + + discriminantTest?(P : PolK) : Boolean == + (delta : K := discriminant(P)) = 0 => true + StickelbergerTest : Boolean := (delta ** q' = 1) = even?(degree(P)) + return StickelbergerTest + + evenCharacteristicIrreducible?(P : PolK) : Boolean == + (n := degree(P)) = 0 => false + n = 1 => true + degree(gcd(P, D(P))) > 0 => false + if (lcP := leadingCoefficient(P)) ^= 1 then P := inv(lcP) * P + S : PolK := exp(X, q, P) + if degree(gcd(S - X, P)) > 0 then + return false + if n < 4 then return true + maxDegreeToTest : NonNegativeInteger := n quo 2 + XqPowers : PrimitiveArray(PolK) := qPowers(S, P) + for i in 2 .. maxDegreeToTest repeat + S := qExp(S, XqPowers) + if degree(gcd(S - X, P)) > 0 then + return false + return true + + oddCharacteristicIrreducible?(P : PolK) : Boolean == + (n := degree(P)) = 0 => false + n = 1 => true + discriminantTest?(P) => false + if (lcP := leadingCoefficient(P)) ^= 1 then P := inv(lcP) * P + S : PolK := exp(X, q, P) + if degree(gcd(S - X, P)) > 0 then + return false + if n < 6 then return true + maxDegreeToTest : NonNegativeInteger := n quo 3 + XqPowers : PrimitiveArray(PolK) := qPowers(S, P) + for i in 2 .. maxDegreeToTest repeat + S := qExp(S, XqPowers) + if degree(gcd(S - X, P)) > 0 then + return false + return true + + if p = 2 then + + irreducible?(P : PolK) : Boolean == evenCharacteristicIrreducible?(P) + + else + + irreducible?(P : PolK) : Boolean == oddCharacteristicIrreducible?(P) + +\end{chunk} +\begin{chunk}{FFFACTOR.dotabb} +"FFFACTOR" [color="#FF4488",href="bookvol10.4.pdf#nameddest=FFFACTOR"] +"PFECAT" [color="#4488FF",href="bookvol10.2.pdf#nameddest=PFECAT"] +"FFFACTOR" -> "PFECAT" + +\end{chunk} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{package FFFACTSE FiniteFieldFactorizationWithSizeParseBySideEffect} \begin{chunk}{FiniteFieldFactorizationWithSizeParseBySideEffect.input} )set break resume @@ -174874,6 +175150,7 @@ ZeroDimensionalSolvePackage(R,ls,ls2): Exports == Implementation where \getchunk{package FORDER FindOrderFinite} \getchunk{package FAMR2 FiniteAbelianMonoidRingFunctions2} \getchunk{package FDIV2 FiniteDivisorFunctions2} +\getchunk{package FFFACTOR FiniteFieldFactorization} \getchunk{package FFFACTSE FiniteFieldFactorizationWithSizeParseBySideEffect} \getchunk{package FFF FiniteFieldFunctions} \getchunk{package FFHOM FiniteFieldHomomorphisms} diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet index 187deb4..eca5c02 100644 --- a/books/bookvol5.pamphlet +++ b/books/bookvol5.pamphlet @@ -24330,8 +24330,9 @@ otherwise the new algebra won't be loaded by the interpreter when needed. (|FileName| . FNAME) (|FiniteAbelianMonoidRingFunctions2| . FAMR2) (|FiniteDivisorFunctions2| . FDIV2) - (|FiniteFieldFactorizationWithSizeParseBySideEffect| . FFFACTSE) (|FiniteField| . FF) + (|FiniteFieldFactorization| . FFFACTOR) + (|FiniteFieldFactorizationWithSizeParseBySideEffect| . FFFACTSE) (|FiniteFieldCyclicGroup| . FFCG) (|FiniteFieldPolynomialPackage2| . FFPOLY2) (|FiniteFieldNormalBasis| . FFNB) diff --git a/books/ps/v104finitefieldfactorization.eps b/books/ps/v104finitefieldfactorization.eps new file mode 100644 index 0000000..f1763ca --- /dev/null +++ b/books/ps/v104finitefieldfactorization.eps @@ -0,0 +1,278 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: graphviz version 2.26.3 (20100126.1600) +%%Title: pic +%%Pages: 1 +%%BoundingBox: 36 36 132 152 +%%EndComments +save +%%BeginProlog +/DotDict 200 dict def +DotDict begin + +/setupLatin1 { +mark +/EncodingVector 256 array def + EncodingVector 0 + +ISOLatin1Encoding 0 255 getinterval putinterval +EncodingVector 45 /hyphen put + +% Set up ISO Latin 1 character encoding +/starnetISO { + dup dup findfont dup length dict begin + { 1 index /FID ne { def }{ pop pop } ifelse + } forall + /Encoding EncodingVector def + currentdict end definefont +} def +/Times-Roman starnetISO def +/Times-Italic starnetISO def +/Times-Bold starnetISO def +/Times-BoldItalic starnetISO def +/Helvetica starnetISO def +/Helvetica-Oblique starnetISO def +/Helvetica-Bold starnetISO def +/Helvetica-BoldOblique starnetISO def +/Courier starnetISO def +/Courier-Oblique starnetISO def +/Courier-Bold starnetISO def +/Courier-BoldOblique starnetISO def +cleartomark +} bind def + +%%BeginResource: procset graphviz 0 0 +/coord-font-family /Times-Roman def +/default-font-family /Times-Roman def +/coordfont coord-font-family findfont 8 scalefont def + +/InvScaleFactor 1.0 def +/set_scale { + dup 1 exch div /InvScaleFactor exch def + scale +} bind def + +% styles +/solid { [] 0 setdash } bind def +/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def +/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def +/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def +/bold { 2 setlinewidth } bind def +/filled { } bind def +/unfilled { } bind def +/rounded { } bind def +/diagonals { } bind def + +% hooks for setting color +/nodecolor { sethsbcolor } bind def +/edgecolor { sethsbcolor } bind def +/graphcolor { sethsbcolor } bind def +/nopcolor {pop pop pop} bind def + +/beginpage { % i j npages + /npages exch def + /j exch def + /i exch def + /str 10 string def + npages 1 gt { + gsave + coordfont setfont + 0 0 moveto + (\() show i str cvs show (,) show j str cvs show (\)) show + grestore + } if +} bind def + +/set_font { + findfont exch + scalefont setfont +} def + +% draw text fitted to its expected width +/alignedtext { % width text + /text exch def + /width exch def + gsave + width 0 gt { + [] 0 setdash + text stringwidth pop width exch sub text length div 0 text ashow + } if + grestore +} def + +/boxprim { % xcorner ycorner xsize ysize + 4 2 roll + moveto + 2 copy + exch 0 rlineto + 0 exch rlineto + pop neg 0 rlineto + closepath +} bind def + +/ellipse_path { + /ry exch def + /rx exch def + /y exch def + /x exch def + matrix currentmatrix + newpath + x y translate + rx ry scale + 0 0 1 0 360 arc + setmatrix +} bind def + +/endpage { showpage } bind def +/showpage { } def + +/layercolorseq + [ % layer color sequence - darkest to lightest + [0 0 0] + [.2 .8 .8] + [.4 .8 .8] + [.6 .8 .8] + [.8 .8 .8] + ] +def + +/layerlen layercolorseq length def + +/setlayer {/maxlayer exch def /curlayer exch def + layercolorseq curlayer 1 sub layerlen mod get + aload pop sethsbcolor + /nodecolor {nopcolor} def + /edgecolor {nopcolor} def + /graphcolor {nopcolor} def +} bind def + +/onlayer { curlayer ne {invis} if } def + +/onlayers { + /myupper exch def + /mylower exch def + curlayer mylower lt + curlayer myupper gt + or + {invis} if +} def + +/curlayer 0 def + +%%EndResource +%%EndProlog +%%BeginSetup +14 default-font-family set_font +1 setmiterlimit +% /arrowlength 10 def +% /arrowwidth 5 def + +% make sure pdfmark is harmless for PS-interpreters other than Distiller +/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse +% make '<<' and '>>' safe on PS Level 1 devices +/languagelevel where {pop languagelevel}{1} ifelse +2 lt { + userdict (<<) cvn ([) cvn load put + userdict (>>) cvn ([) cvn load put +} if + +%%EndSetup +setupLatin1 +%%Page: 1 1 +%%PageBoundingBox: 36 36 132 152 +%%PageOrientation: Portrait +0 0 1 beginpage +gsave +36 36 96 116 boxprim clip newpath +1 1 set_scale 0 rotate 40 41 translate +0.16355 0.45339 0.92549 graphcolor +newpath -4 -5 moveto +-4 112 lineto +93 112 lineto +93 -5 lineto +closepath fill +1 setlinewidth +0.16355 0.45339 0.92549 graphcolor +newpath -4 -5 moveto +-4 112 lineto +93 112 lineto +93 -5 lineto +closepath stroke +% FFFACTOR +gsave +[ /Rect [ 0 72 88 108 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (bookvol10.4.pdf#nameddest=FFFACTOR) >> + /Subtype /Link +/ANN pdfmark +0.93939 0.73333 1 nodecolor +newpath 88 108 moveto +0 108 lineto +0 72 lineto +88 72 lineto +closepath fill +1 setlinewidth +filled +0.93939 0.73333 1 nodecolor +newpath 88 108 moveto +0 108 lineto +0 72 lineto +88 72 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +7.5 86.4 moveto 73 (FFFACTOR) alignedtext +grestore +% PFECAT +gsave +[ /Rect [ 9 0 79 36 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (bookvol10.2.pdf#nameddest=PFECAT) >> + /Subtype /Link +/ANN pdfmark +0.60606 0.73333 1 nodecolor +newpath 79 36 moveto +9 36 lineto +9 0 lineto +79 0 lineto +closepath fill +1 setlinewidth +filled +0.60606 0.73333 1 nodecolor +newpath 79 36 moveto +9 36 lineto +9 0 lineto +79 0 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +16.5 14.4 moveto 55 (PFECAT) alignedtext +grestore +% FFFACTOR->PFECAT +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 44 71.83 moveto +44 64.13 44 54.97 44 46.42 curveto +stroke +0 0 0 edgecolor +newpath 47.5 46.41 moveto +44 36.41 lineto +40.5 46.41 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 47.5 46.41 moveto +44 36.41 lineto +40.5 46.41 lineto +closepath stroke +grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +end +restore +%%EOF diff --git a/changelog b/changelog index e8de559..e2f9290 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,8 @@ +20130321 tpd src/axiom-website/patches.html 20130321.01.tpd.patch +20130321 tpd books/ps/v104finitefieldfactorization.eps add FFFACTOR +20130321 tpd src/algebra/Makefile compile FiniteFieldFactorization +20130321 tpd books/bookvol5 expose FiniteFieldFactorization +20130321 tpd books/bookvol10.4 add FiniteFieldFactorization 20130320 tpd src/axiom-website/patches.html 20130320.01.tpd.patch 20130320 tpd src/input/richhyper200-299.input cleanup 20130320 tpd src/input/richhyper000-099.input cleanup diff --git a/src/algebra/Makefile.pamphlet b/src/algebra/Makefile.pamphlet index 6811bd9..1f75a01 100644 --- a/src/algebra/Makefile.pamphlet +++ b/src/algebra/Makefile.pamphlet @@ -5868,7 +5868,8 @@ LAYER11=\ ${OUT}/ERROR.o ${OUT}/EVALCYC.o ${OUT}/EXP3D.o \ ${OUT}/E04DGFA.o ${OUT}/E04FDFA.o \ ${OUT}/E04GCFA.o ${OUT}/E04JAFA.o ${OUT}/E04UCFA.o ${OUT}/FACUTIL.o \ - ${OUT}/FF.o ${OUT}/FFCG.o ${OUT}/FFCGX.o ${OUT}/FFFG.o \ + ${OUT}/FF.o ${OUT}/FFFACTOR.o \ + ${OUT}/FFCG.o ${OUT}/FFCGX.o ${OUT}/FFFG.o \ ${OUT}/FFFGF.o ${OUT}/FFHOM.o ${OUT}/FFNB.o ${OUT}/FFNBX.o \ ${OUT}/FFPOLY.o ${OUT}/FFSQFR.o \ ${OUT}/FFX.o ${OUT}/FFSLPE.o ${OUT}/FGLMICPK.o \ @@ -6714,6 +6715,22 @@ LAYER11=\ /*"FF" -> {"OCAMON"; "OAMON"; "OASGP"; "ORDSET"; "INS"; "OINTDOM"}*/ /*"FF" -> {"ORDRING"; "OAGROUP"; "LINEXP"; "PATMAB"; "CFCAT"; "REAL"}*/ +"FFFFACTOR" [color="#FF4488",href="bookvol10.4.pdf#nameddest=FFFFACTOR"] +/*"FFFACTOR" -> {"FFIELDC", "FPC", "FIELD", "EUCDOM", "PID", "GCDDOM"}*/ +/*"FFFACTOR" -> {"INTDOM", "COMRING", "RING", "RNG", "ABELGRP", "CABMON"}*/ +/*"FFFACTOR" -> {"ABELMON", "ABELSG", "SETCAT", "BASTYPE", "KOERCE","SGROUP"}*/ +/*"FFFACTOR" -> {"MONOID", "LMODULE", "BMODULE", "RMODULE", "ALGEBRA"}*/ +/*"FFFACTOR" -> {"MODULE", "ENTIRER", "UFD", "DIVRING", "CHARNZ", "FINITE"}*/ +/*"FFFACTOR" -> {"STEP", "DIFRING", "UPOLYC", "POLYCAT", "PDRING", "FAMR"}*/ +/*"FFFACTOR" -> {"AMR", "CHARZ", "FRETRCT", "RETRACT", "EVALAB", "IEVALAB"}*/ +/*"FFFACTOR" -> {"FLINEXP", "LINEXP", "ORDSET", "KONVERT", "PATMAB"}*/ +"FFFACTOR" -> "PFECAT" +/*"FFFACTOR" -> {"ELTAB", "DIFEXT", "NNI", "INT", "PI", "PRIMARR", "A1AGG"}*/ +/*"FFFACTOR" -> {"FLAGG", "LNAGG", "IXAGG", "HOAGG", "AGG", "TYPE", "ELTAGG"}*/ +/*"FFFACTOR" -> {"CLAGG", "BOOLEAN", "SINT", "LIST", "ILIST", "LSAGG-"}*/ +/*"FFFACTOR" -> {"STAGG-", "INS-", "INS", "OINTDOM", "ORDRING", "OAGROUP"}*/ +/*"FFFACTOR" -> {"OCAMON", "OAMON", "OASGP", "CFCAT", "REAL"}*/ + "FFCG" [color="#88FF44",href="bookvol10.3.pdf#nameddest=FFCG"] "FFCG" -> "FAXF" /*"FFCG" -> {"XF"; "FIELD"; "EUCDOM"; "PID"; "GCDDOM"; "INTDOM"}*/ @@ -18083,6 +18100,7 @@ REGRESS= \ FiniteFieldCyclicGroupExtensionByPolynomial.regress \ FiniteFieldExtension.regress \ FiniteFieldExtensionByPolynomial.regress \ + FiniteFieldFactorization.regress \ FiniteFieldFactorizationWithSizeParseBySideEffect.regress \ FiniteFieldFunctions.regress \ FiniteFieldHomomorphisms.regress \ diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html index a2d0f79..088f509 100644 --- a/src/axiom-website/patches.html +++ b/src/axiom-website/patches.html @@ -4109,5 +4109,7 @@ fix broken tests regression test cleaup 20130320.01.tpd.patch regression test cleaup +20130321.01.tpd.patch +books/bookvol10.4 add FiniteFieldFactorization