diff --git a/books/bookvol10.4.pamphlet b/books/bookvol10.4.pamphlet index 6703c8d..42c5029 100644 --- a/books/bookvol10.4.pamphlet +++ b/books/bookvol10.4.pamphlet @@ -26765,6 +26765,155 @@ FiniteFieldSolveLinearPolynomialEquation(F:FiniteFieldCategory, @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package FFSQFR FiniteFieldSquareFreeDecomposition} +<>= +)set break resume +)sys rm -f FiniteFieldSquareFreeDecomposition.output +)spool FiniteFieldSquareFreeDecomposition.output +)set message test on +)set message auto off +)clear all + +--S 1 of 1 +)show FiniteFieldSquareFreeDecomposition +--R FiniteFieldSquareFreeDecomposition(K: FiniteFieldCategory,PolK: UnivariatePolynomialCategory K) is a package constructor +--R Abbreviation for FiniteFieldSquareFreeDecomposition is FFSQFR +--R This constructor is exposed in this frame. +--R Issue )edit bookvol10.4.pamphlet to see algebra source code for FFSQFR +--R +--R------------------------------- Operations -------------------------------- +--R Musser : PolK -> Factored PolK Yun : PolK -> Factored PolK +--R +--E 1 + +)spool + +@ +<>= +==================================================================== +FiniteFieldSquareFreeDecomposition examples +==================================================================== + +See also: + +o )show FiniteFieldSquareFreeDecomposition + +@ +\pagehead{FiniteFieldSquareFreeDecomposition}{FFSQFR} +\pagepic{ps/v104finitefieldsquarefreedecomposition.ps}{FFSQFR}{1.00} + +{\bf Exports:}\\ +\cross{FFSQFR}{PolK} +\cross{FFSQFR}{Yun} + +<>= +)abbrev package FFSQFR FiniteFieldSquareFreeDecomposition +++ Author: Patrice Naudin and Claude Quitte +++ Date Created: September 1996 +++ Date Last Updated: April 2010 by Tim Daly +++ Description: +++ Part of the package for Algebraic Function Fields in one variable (PAFF) +FiniteFieldSquareFreeDecomposition (K : FiniteFieldCategory, + PolK : UnivariatePolynomialCategory (K)) : with + Musser : PolK -> Factored (PolK) + Yun : PolK -> Factored (PolK) + == add + + p : NonNegativeInteger := characteristic()$K + tableOfSquareFreePolynomials := Table (Integer, PolK) + oneYunStep2uple := Record ( + simpleDecomposition : tableOfSquareFreePolynomials, + gcdOfArgumentAndDerivative : PolK + ) + + rawMusser (P : PolK) : Factored(PolK) == + Q : PolK := gcd(P, D(P)) + A : PolK := P quo Q + decomposition : Factored(PolK) := 1 + B : PolK + + for i in 1 .. repeat + if i rem p ^= 0 then + B := gcd(A, Q) + decomposition := sqfrFactor(A quo B, i) * decomposition + if B = 1 then leave + A := B + Q := Q quo A + if Q ^= 1 then + decomposition:=decomposition * rawMusser (charthRoot(Q)::PolK) ** p + return decomposition + + Musser (P : PolK) : Factored(PolK) == + degree (P) = 0 => return P::Factored(PolK) + if (lcP : K := leadingCoefficient(P)) ^= 1 then P := inv(lcP) * P + return lcP::PolK * rawMusser (P) + + oneYunStep (P : PolK) : oneYunStep2uple == + C : PolK := D (P) ; A : PolK := gcd(P, C) + gcd_P_P' : PolK := A ; B : PolK := P quo A + result : tableOfSquareFreePolynomials := empty () + i : Integer := 1 + + repeat + C := (C quo A) - D(B) + if C = 0 then leave + A := gcd(B, C) + if A ^= 1 then + result (i) := A + B := B quo A + i := i + 1 + result (i) := B + return [result, gcd_P_P'] + + rawYun (P : PolK) : tableOfSquareFreePolynomials == + u : oneYunStep2uple := oneYunStep (P) + gcd_P_P' : PolK := u.gcdOfArgumentAndDerivative + U : tableOfSquareFreePolynomials := u.simpleDecomposition + + R : PolK := gcd_P_P' + for j in indices (U) repeat + for k in 1 .. j-1 repeat + R := R quo U(j) + if R = 1 then return U + V : tableOfSquareFreePolynomials := rawYun (charthRoot (R)::PolK) + + result : tableOfSquareFreePolynomials := empty () + gcd_Uj_Vk : PolK ; + for k in indices (V) repeat -- boucle 1 + + for j in indices (U) | not (U(j) = 1) repeat -- boucle 2 + gcd_Uj_Vk := gcd (U(j), V(k)) + if not (gcd_Uj_Vk = 1) then + result (j+p*k) := gcd_Uj_Vk + V (k) := V(k) quo gcd_Uj_Vk + U (j) := U(j) quo gcd_Uj_Vk + if V(k) = 1 then leave + + if not (V(k) = 1) then + result (p*k):= V (k) + + for j in indices (U) | not (U(j) = 1) repeat -- boucle 3 + result (j) := U (j) + + return result + + Yun(P : PolK) : Factored(PolK) == + degree (P) = 0 => P::Factored(PolK) + if (lcP := leadingCoefficient (P)) ^= 1 then P := inv (lcP)*P + U : tableOfSquareFreePolynomials := rawYun (P) + PFactored : Factored(PolK) := 1 + for i in indices (U) repeat + PFactored := PFactored * sqfrFactor (U (i), i) + return (lcP::PolK) * PFactored + +@ +<>= +"FFSQFR" [color="#FF4488",href="bookvol10.4.pdf#nameddest=FFSQFR"] +"PFECAT" [color="#4488FF",href="bookvol10.2.pdf#nameddest=PFECAT"] +"FFSQFR" -> "PFECAT" + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{package FLAGG2 FiniteLinearAggregateFunctions2} \pagehead{FiniteLinearAggregateFunctions2}{FLAGG2} \pagepic{ps/v104finitelinearaggregatefunctions2.ps}{FLAGG2}{1.00} @@ -153860,6 +154009,7 @@ ZeroDimensionalSolvePackage(R,ls,ls2): Exports == Implementation where <> <> <> +<> <> <> <> diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet index 1a58ea4..344afd6 100644 --- a/books/bookvol5.pamphlet +++ b/books/bookvol5.pamphlet @@ -23917,6 +23917,7 @@ otherwise the new algebra won't be loaded by the interpreter when needed. (|FiniteFieldPolynomialPackage2| . FFPOLY2) (|FiniteFieldNormalBasis| . FFNB) (|FiniteFieldHomomorphisms| . FFHOM) + (|FiniteFieldSquareFreeDecomposition| . FFSQFR) (|FiniteLinearAggregateFunctions2| . FLAGG2) (|FiniteLinearAggregateSort| . FLASORT) (|FiniteSetAggregateFunctions2| . FSAGG2) @@ -24181,6 +24182,7 @@ otherwise the new algebra won't be loaded by the interpreter when needed. (|UnivariatePolynomialCommonDenominator| . UPCDEN) (|UnivariatePolynomialFunctions2| . UP2) (|UnivariatePolynomialMultiplicationPackage| . UPMP) + (|UnivariateTaylorSeriesCZero| . UTSZ) (|UnivariatePuiseuxSeriesFunctions2| . UPXS2) (|UnivariateTaylorSeriesFunctions2| . UTS2) (|UniversalSegment| . UNISEG) diff --git a/changelog b/changelog index 01d63cd..bef0167 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,7 @@ +20100419 tpd src/axiom-website/patches.html 20100419.03.tpd.patch +20100419 tpd src/algebra/Makefile help and regression tests for FFSQFR +20100419 tpd books/bookvol5 expose FiniteFieldSquareFreeDecomposition +20100419 tpd books/bookvol10.4 add FiniteFieldSquareFreeDecomposition 20100419 tpd src/axiom-website/patches.html 20100419.02.tpd.patch 20100419 tpd books/bookvol10.1 rename and align biblio with bookvolbib 20100419 tpd books/bookvolbib rename and align biblio with bookvol10.1 diff --git a/src/algebra/Makefile.pamphlet b/src/algebra/Makefile.pamphlet index 14ff66f..30afa87 100644 --- a/src/algebra/Makefile.pamphlet +++ b/src/algebra/Makefile.pamphlet @@ -5147,7 +5147,8 @@ LAYER11=\ ${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}/FFFGF.o ${OUT}/FFHOM.o ${OUT}/FFNB.o ${OUT}/FFNBX.o \ - ${OUT}/FFPOLY.o ${OUT}/FFX.o ${OUT}/FFSLPE.o ${OUT}/FGLMICPK.o \ + ${OUT}/FFPOLY.o ${OUT}/FFSQFR.o \ + ${OUT}/FFX.o ${OUT}/FFSLPE.o ${OUT}/FGLMICPK.o \ ${OUT}/FILE.o ${OUT}/FINAALG.o ${OUT}/FINAALG-.o ${OUT}/FINRALG.o \ ${OUT}/FINRALG-.o ${OUT}/FFF.o ${OUT}/FLOATRP.o ${OUT}/FNAME.o \ ${OUT}/FOP.o ${OUT}/FORMULA.o ${OUT}/FORT.o ${OUT}/FRAC.o \ @@ -6059,6 +6060,22 @@ LAYER11=\ /*"FFPOLY" -> {"CLAGG-"; "HOAGG-"; "ORDSET-"; "AGG-"; "ELTAGG-"}*/ /*"FFPOLY" -> {"SETCAT-"; "BASTYPE-"}*/ +"FFSQFR" [color="#FF4488",href="bookvol10.4.pdf#nameddest=FFSQFR"] +/*"FFSQFR" -> {"FFIELDC"; "FPC"; "FIELD"; "EUCDOM"; "PID"; "GCDDOM"}*/ +/*"FFSQFR" -> {"INTDOM"; "COMRING"; "RING"; "RNG"; "ABELGRP"; "CABMON"}*/ +/*"FFSQFR" -> {"ABELMON"; "ABELSG"; "SETCAT"; "BASTYPE"; "KOERCE"; "SGROUP"}*/ +/*"FFSQFR" -> {"MONOID"; "LMODULE"; "BMODULE"; "RMODULE"; "ALGEBRA"}*/ +/*"FFSQFR" -> {"MODULE"; "ENTIRER"; "UFD"; "DIVRING"; "CHARNZ"; "FINITE"}*/ +/*"FFSQFR" -> {"STEP"; "DIFRING"; "UPOLYC"; "POLYCAT"; "PDRING"; "FAMR"}*/ +/*"FFSQFR" -> {"AMR"; "CHARZ"; "FRETRCT"; "RETRACT"; "EVALAB"; "IEVALAB"}*/ +/*"FFSQFR" -> {"FLINEXP"; "LINEXP"; "ORDSET"; "KONVERT"; "PATMAB"}*/ +"FFSQFR" -> "PFECAT" +/*"FFSQFR" -> {"ELTAB"; "DIFEXT"; "INS"; "OINTDOM"; "ORDRING"; "OAGROUP"}*/ +/*"FFSQFR" -> {"OCAMON"; "OAMON"; "OASGP"; "CFCAT"; "REAL"; "SINT"; "NNI"}*/ +/*"FFSQFR" -> {"INT"; "BOOLEAN"; "INS-"; "EUCDOM-"; "UFD-"; "GCDDOM-"}*/ +/*"FFSQFR" -> {"INTDOM-"; "ALGEBRA-"; "DIFRING-"; "ORDRING-"; "MODULE-"}*/ +/*"FFSQFR" -> {"RING-"; "ABELGRP-"}*/ + "FFX" [color="#88FF44",href="bookvol10.3.pdf#nameddest=FFX"] "FFX" -> "FAXF" /*"FFX" -> {"XF"; "FIELD"; "EUCDOM"; "PID"; "GCDDOM"; "INTDOM"; "COMRING"}*/ @@ -15123,6 +15140,7 @@ LAYER18=\ "UTS" -> "ACFS" /*"UTS" -> {"ACF"; "FS"; "ES"; "FRETRCT"; "GROUP"; "OAMONS"}*/ +"UTSZ" [color="#88FF44",href="bookvol10.3.pdf#nameddest=UTSZ"] /*"UTSZ" -> {"UTSCAT"; "UPSCAT"; "PSCAT"; "AMR"; "RING"; "RNG"; "ABELGRP"}*/ /*"UTSZ" -> {"CABMON"; "ABELMON"; "ABELSG"; "SETCAT"; "BASTYPE"; "KOERCE"}*/ /*"UTSZ" -> {"SGROUP"; "MONOID"; "LMODULE"; "BMODULE"; "RMODULE"}*/ @@ -16470,6 +16488,7 @@ SPADHELP=\ ${HELP}/FactoredFunctions2.help \ ${HELP}/File.help \ ${HELP}/FileName.help \ + ${HELP}/FiniteFieldSquareFreeDecomposition.help \ ${HELP}/FlexibleArray.help \ ${HELP}/Float.help \ ${HELP}/Fraction.help \ @@ -16626,6 +16645,7 @@ REGRESS= \ FactoredFunctions2.regress \ File.regress \ FileName.regress \ + FiniteFieldSquareFreeDecomposition.regress \ FlexibleArray.regress \ Float.regress \ Fraction.regress \ @@ -17081,6 +17101,18 @@ ${HELP}/FileName.help: ${BOOKS}/bookvol10.3.pamphlet >${INPUT}/FileName.input @echo "FileName (FNAME)" >>${HELPFILE} +${HELP}/FiniteFieldSquareFreeDecomposition.help: ${BOOKS}/bookvol10.4.pamphlet + @echo 7305 create FiniteFieldSquareFreeDecomposition.help from \ + ${BOOKS}/bookvol10.4.pamphlet + @${TANGLE} -R"FiniteFieldSquareFreeDecomposition.help" \ + ${BOOKS}/bookvol10.4.pamphlet \ + >${HELP}/FiniteFieldSquareFreeDecomposition.help + @cp ${HELP}/FiniteFieldSquareFreeDecomposition.help ${HELP}/FFSQFR.help + @${TANGLE} -R"FiniteFieldSquareFreeDecomposition.input" \ + ${BOOKS}/bookvol10.4.pamphlet \ + >${INPUT}/FiniteFieldSquareFreeDecomposition.input + @echo "FiniteFieldSquareFreeDecomposition (FFSQFR)" >>${HELPFILE} + ${HELP}/FlexibleArray.help: ${BOOKS}/bookvol10.3.pamphlet @echo 7310 create FlexibleArray.help from ${BOOKS}/bookvol10.3.pamphlet @${TANGLE} -R"FlexibleArray.help" ${BOOKS}/bookvol10.3.pamphlet \ diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html index 9611744..35adcd6 100644 --- a/src/axiom-website/patches.html +++ b/src/axiom-website/patches.html @@ -2641,5 +2641,7 @@ books/bookvolbib add citation SDJ07
books/bookvolbib Du95, Ga95, Ha95, Ha96, HI96, HL95, LR88, St93
20100419.02.tpd.patch books/bookvolbib,bookvol1 rename and align biblio sections
+20100419.03.tpd.patch +books/bookvol10.4 add FiniteFieldSquareFreeDecomposition