diff --git a/books/bookvol0.pamphlet b/books/bookvol0.pamphlet index 4410502..03af651 100644 --- a/books/bookvol0.pamphlet +++ b/books/bookvol0.pamphlet @@ -64002,6 +64002,9 @@ $\hbox{{\rm op}}_{j}$ & is an operation exported by the category. % \condata{LSAGG}{ListAggregate}{ExtensibleLinearAggregate FiniteLinearAggregate StreamAggregate}{list} % +\condata{MAGCDOC}{ModularAlgebraicGcdOperations}{}{ + canonicalIfCan degree MPtoMPT packExps packModulus pseudoRem repack1 zero?} + \condata{MATCAT}{MatrixCategory}{TwoDimensionalArrayCategory}{{\tt *} {\tt **} {\tt +} {\tt -} {\tt /} antisymmetric? coerce determinant diagonal? diagonalMatrix elt exquo horizConcat inverse listOfLists matrix minordet nullSpace nullity rank rowEchelon scalarMatrix setelt setsubMatrix! square? squareTop subMatrix swapColumns! swapRows! symmetric? diff --git a/books/bookvol10.2.pamphlet b/books/bookvol10.2.pamphlet index 7e5f5ec..3e48804 100644 --- a/books/bookvol10.2.pamphlet +++ b/books/bookvol10.2.pamphlet @@ -286,6 +286,7 @@ This is the root of the category hierarchy and is not represented by code. \pageto{HyperbolicFunctionCategory}{HYPCAT} \pageto{InnerEvalable}{IEVALAB} \pageto{Logic}{LOGIC} +\pageto{ModularAlgebraicGcdOperations}{MAGCDOC} \pageto{OpenMath}{OM} \pageto{PartialTranscendentalFunctions}{PTRANFN} \pageto{Patternable}{PATAB} @@ -1688,6 +1689,154 @@ digraph pic { \end{chunk} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{ModularAlgebraicGcdOperations}{MAGCDOC} +\pagepic{ps/v102modularalgebraicgcdoperations.ps}{MAGCDOC}{1.00} + +\begin{chunk}{ModularAlgebraicGcdOperations.input} +)set break resume +)sys rm -f ModularAlgebraicGcdOperations.output +)spool ModularAlgebraicGcdOperations.output +)set message test on +)set message auto off +)clear all + +--S 1 of 1 +)show ModularAlgebraicGcdOperations +--R ModularAlgebraicGcdOperations(MPT: Type,MD: Type) is a category constructor +--R Abbreviation for ModularAlgebraicGcdOperations is MAGCDOC +--R This constructor is exposed in this frame. +--R Issue )edit bookvol10.2.pamphlet to see algebra source code for MAGCDOC +--R +--R------------------------------- Operations -------------------------------- +--R degree : MPT -> Integer pseudoRem : (MPT,MPT,MD) -> MPT +--R zero? : MPT -> Boolean +--R MPtoMPT : (Polynomial(Integer),Symbol,List(Symbol),MD) -> MPT +--R canonicalIfCan : (MPT,MD) -> Union(MPT,"failed") +--R packExps : (Integer,Integer,MD) -> SortedExponentVector +--R packModulus : (List(Polynomial(Integer)),List(Symbol),Integer) -> Union(MD,"failed") +--R repack1 : (MPT,U32Vector,Integer,MD) -> Void +--R +--E 1 + +)spool +)lisp (bye) +\end{chunk} +\begin{chunk}{ModularAlgebraicGcdOperations.help} +==================================================================== +ModularAlgebraicGcdOperations +==================================================================== + +This category specifies operations needed by ModularAlgebraicGcd +package. Since we have multiple implementations we specify interface +here and put implementations in separate packages. Most operations +are done using special purpose abstract representation. Apropriate +types are passesd as parametes: MPT is type of modular polynomials in +one variable with coefficients in some algebraic extension. MD is +type of modulus. Final results are converted to packed representation, +with coefficients (from prime field) stored in one array and exponents +(in main variable and in auxilary variables representing generators +of algebrac extension) stored in parallel array. + +\end{chunk} + +{\bf Exports:}\\ + +\begin{tabular}{lllll} +\cross{MAGCDOC}{canonicalIfCan} & +\cross{MAGCDOC}{degree} & +\cross{MAGCDOC}{MPtoMPT} & +\cross{MAGCDOC}{packExps} & +\cross{MAGCDOC}{packModulus} \\ +\cross{MAGCDOC}{pseudoRem} & +\cross{MAGCDOC}{repack1} & +\cross{MAGCDOC}{zero?} & +\end{tabular} + +These are directly exported but not implemented: +\begin{verbatim} + canonicalIfCan : (MPT,MD) -> Union(MPT,"failed") + degree : MPT -> Integer + MPtoMPT : (Polynomial(Integer),Symbol,List(Symbol),MD) -> MPT + packExps : (Integer,Integer,MD) -> SortedExponentVector + packModulus : (List(Polynomial(Integer)),List(Symbol),Integer) -> + Union(MD,"failed") + pseudoRem : (MPT,MPT,MD) -> MPT + repack1 : (MPT,U32Vector,Integer,MD) -> Void + zero? : MPT -> Boolean +\end{verbatim} + +\begin{chunk}{category MAGCDOC ModularAlgebraicGcdOperations} +)abbrev category MAGCDOC ModularAlgebraicGcdOperations +++ Description: This category specifies operations needed by +++ ModularAlgebraicGcd package. Since we have multiple +++ implementations we specify interface here and put +++ implementations in separate packages. Most operations +++ are done using special purpose abstract representation. +++ Apropriate types are passesd as parametes: MPT is type +++ of modular polynomials in one variable with coefficients +++ in some algebraic extension. MD is type of modulus. +++ Final results are converted to packed representation, +++ with coefficients (from prime field) stored in one +++ array and exponents (in main variable and in auxilary +++ variables representing generators of algebrac extension) +++ stored in parallel array. +ModularAlgebraicGcdOperations(MPT : Type, MD : Type) : Category == + Exports where + MP ==> Polynomial Integer + PA ==> U32Vector + Exports ==> with + pseudoRem : (MPT, MPT, MD) -> MPT + ++ pseudoRem(x, y, m) computes pseudoremainder of x by y + ++ modulo m. + canonicalIfCan : (MPT, MD) -> Union(MPT, "failed") + ++ canonicalIfCan(x, m) tries to divide x by its leading + ++ coefficient modulo m. + packModulus : (List MP, List(Symbol), Integer) -> Union(MD, "failed") + ++ packModulus(lp, ls, p) converts lp, ls and prime p which + ++ together describe algebraic extension to packed + ++ representation. + MPtoMPT : (MP, Symbol, List(Symbol), MD) -> MPT + ++ MPtoMPT(p, s, ls, m) coverts p to packed represntation. + zero? : MPT -> Boolean + ++ zero?(x) checks if x is zero. + degree : MPT -> Integer + ++ degree(x) gives degree of x. + packExps : (Integer, Integer, MD) -> SortedExponentVector + ++ packExps(d, s, m) produces vector of exponents up + ++ to degree d. s is size (degree) of algebraic extension. + ++ Use together with repack1. + repack1 : (MPT, PA, Integer, MD) -> Void + ++ repack1(x, a, d, m) stores coefficients of x in a. + ++ d is degree of x. Corresponding exponents are given + ++ by packExps. + +\end{chunk} +\begin{chunk}{MAGCDOC.dotabb} +"MAGCDOC" + [color=lightblue,href="bookvol10.2.pdf#nameddest=MAGCDOC"]; +"MAGCDOC" -> "CATEGORY" + +\end{chunk} +\begin{chunk}{MAGCDOC.dotfull} +"ModularAlgebraicGcdOperations()" + [color=lightblue,href="bookvol10.2.pdf#nameddest=MAGCDOC"]; +"ModularAlgebraicGcdOperations(a:Type,b:Type)" -> "Category" + +\end{chunk} +\begin{chunk}{MAGCDOC.dotpic} +digraph pic { + fontsize=10; + bgcolor="#ECEA81"; + node [shape=box, color=white, style=filled]; + +"MAGCDOC" [color=lightblue]; +"MAGCDOC" -> "Category" + +"Category" [color=lightblue]; +} + +\end{chunk} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{OpenMath}{OM} \pagepic{ps/v102openmath.ps}{OM}{1.00} @@ -91606,6 +91755,7 @@ digraph dotabb { \getchunk{LOGIC.dotabb} \getchunk{LSAGG.dotabb} \getchunk{LZSTAGG.dotabb} +\getchunk{MAGCDOC.dotabb} \getchunk{MATCAT.dotabb} \getchunk{MDAGG.dotabb} \getchunk{MLO.dotabb} @@ -91831,6 +91981,7 @@ digraph dotfull { \getchunk{LOGIC.dotfull} \getchunk{LSAGG.dotfull} \getchunk{LZSTAGG.dotfull} +\getchunk{MAGCDOC.dotfull} \getchunk{MATCAT.dotfull} \getchunk{MDAGG.dotfull} \getchunk{MLO.dotfull} diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet index 4f214d6..3d91d00 100644 --- a/books/bookvol5.pamphlet +++ b/books/bookvol5.pamphlet @@ -24449,6 +24449,7 @@ otherwise the new algebra won't be loaded by the interpreter when needed. (|MatrixCommonDenominator| . MCDEN) (|MatrixLinearAlgebraFunctions| . MATLIN) (|MergeThing| . MTHING) + (|ModularAlgebraicGcdOperations| . MAGCDOC) (|ModularDistinctDegreeFactorizer| . MDDFACT) (|ModuleOperator| . MODOP) (|MonoidRingFunctions2| . MRF2) diff --git a/books/ps/v102modularalgebraicgcdoperations.ps b/books/ps/v102modularalgebraicgcdoperations.ps new file mode 100644 index 0000000..ac67cae --- /dev/null +++ b/books/ps/v102modularalgebraicgcdoperations.ps @@ -0,0 +1,270 @@ +%!PS-Adobe-3.0 +%%Creator: graphviz version 2.26.3 (20100126.1600) +%%Title: pic +%%Pages: (atend) +%%BoundingBox: (atend) +%%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 136 152 +%%PageOrientation: Portrait +0 0 1 beginpage +gsave +36 36 100 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 +97 112 lineto +97 -5 lineto +closepath fill +1 setlinewidth +0.16355 0.45339 0.92549 graphcolor +newpath -4 -5 moveto +-4 112 lineto +97 112 lineto +97 -5 lineto +closepath stroke +% MAGCDOC +gsave +0.53725 0.24706 0.90196 nodecolor +newpath 92 108 moveto +0 108 lineto +0 72 lineto +92 72 lineto +closepath fill +1 setlinewidth +filled +0.53725 0.24706 0.90196 nodecolor +newpath 92 108 moveto +0 108 lineto +0 72 lineto +92 72 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +8 86.4 moveto 76 (MAGCDOC) alignedtext +grestore +% Category +gsave +0.53725 0.24706 0.90196 nodecolor +newpath 86 36 moveto +6 36 lineto +6 0 lineto +86 0 lineto +closepath fill +1 setlinewidth +filled +0.53725 0.24706 0.90196 nodecolor +newpath 86 36 moveto +6 36 lineto +6 0 lineto +86 0 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +14 14.4 moveto 64 (Category) alignedtext +grestore +% MAGCDOC->Category +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 46 71.83 moveto +46 64.13 46 54.97 46 46.42 curveto +stroke +0 0 0 edgecolor +newpath 49.5 46.41 moveto +46 36.41 lineto +42.5 46.41 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 49.5 46.41 moveto +46 36.41 lineto +42.5 46.41 lineto +closepath stroke +grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +%%BoundingBox: 36 36 136 152 +end +restore +%%EOF diff --git a/changelog b/changelog index b25eb70..1e20baf 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,9 @@ +20130216 tpd src/axiom-website/patches.html 20130216.02.tpd.patch +20130216 tpd src/algebra/Makefile compile MAGCDOC +20130216 tpd books/bookvol5 expose MAGCDOC +20130216 tpd books/bookvol10.2 add MAGCDOC +20130216 tpd books/bookvol0 add condata for MAGCDOC +20130216 tpd books/ps/v102modularalgebraicgcdoperations.ps added 20130216 gdr src/axiom-website/patches.html 20130216.01.gdr.patch 20130216 gdr books/bookvol10.2 add matrix initializer function 20130214 tpd src/axiom-website/patches.html 20130214.02.tpd.patch diff --git a/src/algebra/Makefile.pamphlet b/src/algebra/Makefile.pamphlet index 43695a7..e2c499b 100644 --- a/src/algebra/Makefile.pamphlet +++ b/src/algebra/Makefile.pamphlet @@ -171,7 +171,7 @@ The help section gets typed out when the user types: )help BasicStochasticDifferential \end{verbatim} \begin{verbatim} ->= +begin{chunk}{BasicStochasticDifferential.help} ==================================================================== BasicStochasticDifferential examples ==================================================================== @@ -199,7 +199,7 @@ o )help BasicStochasticDifferential o )help HexadecimalExpansion o )show BasicStochasticDifferential - @ +end{chunk} \end{verbatim} \subsubsection{The pagehead section} @@ -585,7 +585,8 @@ Used by next layer: BASTYPE CFCAT KOERCE KONVERT TYPE LAYER0=\ ${OUT}/AHYP.o ${OUT}/ATTREG.o ${OUT}/BASTYPE.o ${OUT}/BASTYPE-.o \ ${OUT}/CFCAT.o ${OUT}/ELTAB.o ${OUT}/ESCONT1.o ${OUT}/GRDEF.o \ - ${OUT}/INTBIT.o ${OUT}/KOERCE.o ${OUT}/KONVERT.o ${OUT}/MSYSCMD.o \ + ${OUT}/INTBIT.o ${OUT}/KOERCE.o ${OUT}/KONVERT.o \ + ${OUT}/MAGCDOC.o ${OUT}/MSYSCMD.o \ ${OUT}/ODEIFTBL.o ${OUT}/OM.o ${OUT}/OMCONN.o ${OUT}/OMDEV.o \ ${OUT}/OUT.o ${OUT}/PRIMCAT.o ${OUT}/PRINT.o ${OUT}/PTRANFN.o \ ${OUT}/RFDIST.o ${OUT}/RIDIST.o ${OUT}/SPFCAT.o ${OUT}/TYPE.o \ @@ -640,6 +641,9 @@ LAYER0=\ "KONVERT" [color="#4488FF",href="bookvol10.2.pdf#nameddest=KONVERT"] "KONVERT" -> "Category" +"MAGCDOC" [color="#4488FF",href="bookvol10.2.pdf#nameddest=MAGCDOC"] +"MAGCDOC" -> "Category" + "MSYSCMD" [color="#FF4488",href="bookvol10.4.pdf#nameddest=MSYSCMD"] "MSYSCMD" -> "Package" diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html index a04ccb0..3c75a15 100644 --- a/src/axiom-website/patches.html +++ b/src/axiom-website/patches.html @@ -3973,5 +3973,7 @@ buglist add bug 7232 src/input/rsa.input added 20130216.01.gdr.patch books/bookvol10.2 add matrix initializer function +20130216.02.tpd.patch +books/bookvol10.2 add MAGCDOC