diff --git a/changelog b/changelog index 9315770..b66ffb6 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,18 @@ +20141208 tpd src/axiom-website/patches.html 20141208.02.tpd.patch +20141207 tpd src/input/Makefile remove unused .as files +20141208 tpd src/input/as-eg1.input +20141208 tpd src/input/as-eg2.input +20141208 tpd src/input/as-eg3.input +20141208 tpd src/input/as-eg4.input +20141208 tpd src/input/as-eg5.input +20141208 tpd src/input/as-eg6.input +20141208 tpd src/input/aseg6.as +20141208 tpd src/input/aseg7.as +20141208 tpd src/input/ecfact.as +20141208 tpd src/input/hilbert.as +20141208 tpd src/input/matops.as +20141208 tpd src/input/pdecomp0.as +20141208 tpd src/input/romnum.as 20141208 tpd src/axiom-website/patches.html 20141208.01.tpd.patch 20141208 tpd src/input/fixed.input fix latex conversion from ** to ^ 20141207 tpd src/axiom-website/patches.html 20141207.06.tpd.patch diff --git a/patch b/patch index 8554ae2..ff9a90c 100644 --- a/patch +++ b/patch @@ -1,2 +1,3 @@ -src/input/fixed.input fix latex conversion from ** to ^ +src/input/Makefile remove unused .as files +Aldor is no longer supported. Remove input test files. diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html index 6ce6401..5e71dd4 100644 --- a/src/axiom-website/patches.html +++ b/src/axiom-website/patches.html @@ -4784,6 +4784,8 @@ books/bookvol10.4 NAGF07 absorb src/input test case files
books/bookvol10.4 NAGS absorb src/input test case files
20141208.01.tpd.patch src/input/fixed.input fix latex conversion from ** to ^
+20141208.02.tpd.patch +src/input/Makefile remove unused .as files
diff --git a/src/input/Makefile.pamphlet b/src/input/Makefile.pamphlet index 26d6c2e..bf0bc4c 100644 --- a/src/input/Makefile.pamphlet +++ b/src/input/Makefile.pamphlet @@ -66,15 +66,6 @@ ${MID}/%.input: ${IN}/%.input.pamphlet echo '(tangle "${IN}/$*.input.pamphlet" "*" "$*.input")' | \ ${LISPTANGLE} ) -${OUT}/%.as: ${MID}/%.as - @echo si03 making ${OUT}/$*.as from ${MID}/$*.as - @ cp ${MID}/$*.as ${OUT}/$*.as - -${MID}/%.as: ${IN}/%.as.pamphlet - @echo si04 making ${MID}/$*.as from ${IN}/$*.as.pamphlet - @(cd ${MID} ; \ - ${BOOKS}/tanglec ${IN}/$*.as.pamphlet >$*.as) - ${DOC}/axiom.sty: @echo si05 making ${DOC}/axiom.sty from ${BOOKS}/axiom.sty @cp ${BOOKS}/axiom.sty ${DOC} @@ -93,16 +84,6 @@ ${DOC}/%.input.dvi: ${IN}/%.input.pamphlet ${DOC}/axiom.sty rm -f ${DOC}/$*.input.log ; \ rm -f ${DOC}/$*.input.toc ) ; fi -${DOC}/%.as.dvi: ${IN}/%.as.pamphlet - @ echo si07 making ${DOC}/$*.as.dvi from ${IN}/$*.as.pamphlet - @ (cd ${DOC} ; \ - cp ${IN}/$*.as.pamphlet ${DOC} ; \ - ${EXTRACT} $*.as.pamphlet ; \ - rm -f ${DOC}/$*.as.pamphlet ; \ - rm -f ${DOC}/$*.as.tex ; \ - rm -f ${DOC}/$*.as.dvi ; \ - rm -f ${DOC}/$*.as ) - \end{chunk} \section{Testing stanzas (to be added)} \begin{chunk}{testing} @@ -185,9 +166,7 @@ to the list. DAASE=${MNT}/${SYS} TESTSYS=${OBJ}/${SYS}/bin/interpsys -SKIP= as-eg1.output as-eg2.output \ - as-eg3.output as-eg4.output as-eg5.output as-eg6.output \ - bern.output bernpoly.output \ +SKIP= bern.output bernpoly.output \ cdraw.output color.output cone.output \ coordsys.output \ cycloid2.output cycloid3.output cycloid.output \ @@ -603,10 +582,6 @@ OUT=${MNT}/${SYS}/input DOC=${MNT}/${SYS}/doc/src/input -ASFILES=${OUT}/aseg6.as ${OUT}/aseg7.as ${OUT}/ecfact.as \ - ${OUT}/hilbert.as ${OUT}/matops.as ${OUT}/pdecomp0.as \ - ${OUT}/romnum.as - FILES= ${OUT}/ackermann.input \ ${OUT}/algaggr.input ${OUT}/algbrbf.input ${OUT}/algfacob.input \ ${OUT}/alist.input ${OUT}/allfact.input ${OUT}/antoine.input \ @@ -919,9 +894,6 @@ RICHINPUT= \ ${OUT}/richtrig800-899.input \ ${OUT}/richtrig900-920.input -BROKEN=${OUT}/as-eg1.input ${OUT}/as-eg2.input ${OUT}/as-eg3.input \ - ${OUT}/as-eg4.input ${OUT}/as-eg5.input ${OUT}/as-eg6.input - # This viewport has already been closed! VIEWPORT=${OUT}/graphics.input @@ -938,10 +910,6 @@ DOCFILES= \ ${DOC}/allfact.input.dvi ${DOC}/antoine.input.dvi \ ${DOC}/arith.input.dvi ${DOC}/array1.input.dvi \ ${DOC}/array2.input.dvi ${DOC}/arrows.input.dvi \ - ${DOC}/as-eg1.input.dvi ${DOC}/as-eg2.input.dvi \ - ${DOC}/as-eg3.input.dvi ${DOC}/as-eg4.input.dvi \ - ${DOC}/as-eg5.input.dvi ${DOC}/aseg6.as.dvi \ - ${DOC}/as-eg6.input.dvi ${DOC}/aseg7.as.dvi \ ${DOC}/asec.input.dvi ${DOC}/asinatan.input.dvi \ ${DOC}/asinhatanh.input.dvi \ ${DOC}/assign.input.dvi ${DOC}/atansqrt.input.dvi \ @@ -1000,7 +968,7 @@ DOCFILES= \ ${DOC}/drawpoly.input.dvi ${DOC}/drawx.input.dvi \ ${DOC}/dropt.input.dvi ${DOC}/e1.input.dvi \ ${DOC}/ei.input.dvi ${DOC}/easter.input.dvi \ - ${DOC}/ecfact.as.dvi ${DOC}/efi.input.dvi \ + ${DOC}/efi.input.dvi \ ${DOC}/egg.input.dvi ${DOC}/eigen.input.dvi \ ${DOC}/elemfun.input.dvi ${DOC}/elemnum.input.dvi \ ${DOC}/elfuts.input.dvi ${DOC}/elt.input.dvi \ @@ -1047,7 +1015,7 @@ DOCFILES= \ ${DOC}/heat.input.dvi ${DOC}/helix.input.dvi \ ${DOC}/help.input.dvi ${DOC}/herm.input.dvi \ ${DOC}/heugcd.input.dvi \ - ${DOC}/hexadec.input.dvi ${DOC}/hilbert.as.dvi \ + ${DOC}/hexadec.input.dvi \ ${DOC}/huang.input.dvi ${DOC}/hyperbolicrules.input.dvi \ ${DOC}/hyperell.input.dvi \ ${DOC}/ico.input.dvi \ @@ -1096,7 +1064,7 @@ DOCFILES= \ ${DOC}/manuel.input.dvi ${DOC}/mapleok.input.dvi \ ${DOC}/marcbench.input.dvi ${DOC}/matbug.input.dvi \ ${DOC}/mathml.input.dvi \ - ${DOC}/matops.as.dvi ${DOC}/matrix1.input.dvi \ + ${DOC}/matrix1.input.dvi \ ${DOC}/matrix22.input.dvi ${DOC}/matrix.input.dvi \ ${DOC}/matrox.input.dvi ${DOC}/mfinfact.input.dvi \ ${DOC}/mkfunc.input.dvi ${DOC}/monitortest.input.dvi \ @@ -1126,7 +1094,7 @@ DOCFILES= \ ${DOC}/pascal1.input.dvi ${DOC}/pascal.input.dvi \ ${DOC}/pat.input.dvi ${DOC}/patch51.input.dvi \ ${DOC}/patmatch.input.dvi \ - ${DOC}/pdecomp0.as.dvi ${DOC}/perman.input.dvi \ + ${DOC}/perman.input.dvi \ ${DOC}/perm.input.dvi ${DOC}/pfaffian.input.dvi \ ${DOC}/pfr1.input.dvi ${DOC}/pgcd.input.dvi \ ${DOC}/pfr.input.dvi ${DOC}/pinch.input.dvi \ @@ -1238,7 +1206,7 @@ DOCFILES= \ ${DOC}/richtrig900-920.input.dvi \ ${DOC}/rk4draw.input.dvi ${DOC}/risch.input.dvi \ ${DOC}/robidoux.input.dvi ${DOC}/roman.input.dvi \ - ${DOC}/romnum.as.dvi ${DOC}/roots.input.dvi \ + ${DOC}/roots.input.dvi \ ${DOC}/rsa.input.dvi \ ${DOC}/ruleset.input.dvi ${DOC}/rules.input.dvi \ ${DOC}/segletes.input.dvi \ diff --git a/src/input/as-eg1.input.pamphlet b/src/input/as-eg1.input.pamphlet deleted file mode 100644 index cefbc7a..0000000 --- a/src/input/as-eg1.input.pamphlet +++ /dev/null @@ -1,36 +0,0 @@ -\documentclass{article} -\usepackage{axiom} -\setlength{\textwidth}{400pt} -\begin{document} -\title{\$SPAD/src/input as-eg1.input} -\author{The Axiom Team} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{License} -\begin{chunk}{license} ---Copyright The Numerical Algorithms Group Limited 1994. -\end{chunk} -\begin{chunk}{*} -\getchunk{license} -)compile romnum.as -a:RomanNumber:=3 -a+a -a*a -gcd(a-1,a+1) -x+a -%^3 -sin a -%^2+cos(a)^2 -simplify % -matrix [[a,a+1],[a-1,a-2]] -inverse % -\end{chunk} -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/input/as-eg2.input.pamphlet b/src/input/as-eg2.input.pamphlet deleted file mode 100644 index a232337..0000000 --- a/src/input/as-eg2.input.pamphlet +++ /dev/null @@ -1,28 +0,0 @@ -\documentclass{article} -\usepackage{axiom} -\setlength{\textwidth}{400pt} -\begin{document} -\title{\$SPAD/src/input as-eg2.input} -\author{The Axiom Team} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{License} -\begin{chunk}{license} ---Copyright The Numerical Algorithms Group Limited 1994. -\end{chunk} -\begin{chunk}{*} -\getchunk{license} -)co matops.as -)sh MatrixOpSym -matrix [[3,4],[5,6]] -symmetricPart % -\end{chunk} -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/input/as-eg3.input.pamphlet b/src/input/as-eg3.input.pamphlet deleted file mode 100644 index bba4b6a..0000000 --- a/src/input/as-eg3.input.pamphlet +++ /dev/null @@ -1,50 +0,0 @@ -\documentclass{article} -\usepackage{axiom} -\setlength{\textwidth}{400pt} -\begin{document} -\title{\$SPAD/src/input as-eg3.input} -\author{The Axiom Team} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{License} -\begin{chunk}{license} ---Copyright The Numerical Algorithms Group Limited 1994. -\end{chunk} -\begin{chunk}{*} -\getchunk{license} - -)compile hilbert.as - -monomial l == (l::Vector SingleInteger) pretend Monomial -mon1 := monomial [4,0,0,0]; -mon2:= monomial [3,3,0,0]; -mon3 := monomial [3,2,1,0]; -mon4 := monomial[3,1,2,0]; -mon5 := monomial[0,2,0,1]; -mon6 := monomial[0,1,0,5]; -l := [mon1, mon2, mon3, mon4, mon5, mon6]; -Hilbert l -idA := varMonomsPower(6,5); -#idA -Hilbert idA -idB := varMonomsPower(6,6); -#idB -Hilbert idB -idC := varMonomsPower(12,3); -#idC -Hilbert idC -idD:=[monomial[2,0,0,0],monomial[1,1,0,0],monomial[1,0,1,0],monomial[1,0,0,1],_ - monomial[0,3,0,0],monomial[0,2,1,0]]^4; -#idD -Hilbert idD - -\end{chunk} -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/input/as-eg4.input.pamphlet b/src/input/as-eg4.input.pamphlet deleted file mode 100644 index dadbcad..0000000 --- a/src/input/as-eg4.input.pamphlet +++ /dev/null @@ -1,29 +0,0 @@ -\documentclass{article} -\usepackage{axiom} -\setlength{\textwidth}{400pt} -\begin{document} -\title{\$SPAD/src/input as-eg4.input} -\author{The Axiom Team} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{License} -\begin{chunk}{license} ---Copyright The Numerical Algorithms Group Limited 1994. -\end{chunk} -\begin{chunk}{*} -\getchunk{license} -)co ecfact.as -n1:=nextPrime 1000000 -n2:=nextPrime n1 -n:=n1*n2 -LenstraEllipticMethod n -\end{chunk} -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/input/as-eg5.input.pamphlet b/src/input/as-eg5.input.pamphlet deleted file mode 100644 index d4ba8c0..0000000 --- a/src/input/as-eg5.input.pamphlet +++ /dev/null @@ -1,31 +0,0 @@ -\documentclass{article} -\usepackage{axiom} -\setlength{\textwidth}{400pt} -\begin{document} -\title{\$SPAD/src/input as-eg5.input} -\author{The Axiom Team} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{License} -\begin{chunk}{license} ---Copyright The Numerical Algorithms Group Limited 1994. -\end{chunk} -\begin{chunk}{*} -\getchunk{license} -)co pdecomp0.as -(u,v):UP(x,FRAC INT) -u:=x^2+x+2 -v:=x^3+2*x^2+x+1 -compose(u,v) -decompose % - -\end{chunk} -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/input/as-eg6.input.pamphlet b/src/input/as-eg6.input.pamphlet deleted file mode 100644 index e627bc8..0000000 --- a/src/input/as-eg6.input.pamphlet +++ /dev/null @@ -1,48 +0,0 @@ -\documentclass{article} -\usepackage{axiom} -\setlength{\textwidth}{400pt} -\begin{document} -\title{\$SPAD/src/input as-eg6.input} -\author{The Axiom Team} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{License} -\begin{chunk}{license} ---Copyright The Numerical Algorithms Group Limited 1995. -\end{chunk} -\begin{chunk}{*} -\getchunk{license} - -)co aseg6.as - -)show C1 -)show C2 -)show C3 -)show C4 -)show D1 -)show D2 -)show D3 -)show D4 -)show D5 - -)show C2 Integer -)show C4 Integer -)show D2 Integer -)show D4 Integer - -x: D5 Integer := 1 --- should be 3 -x+x - --- should be 13 -foof(12)$D3 -\end{chunk} -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/input/aseg6.as.pamphlet b/src/input/aseg6.as.pamphlet deleted file mode 100644 index 2d6553d..0000000 --- a/src/input/aseg6.as.pamphlet +++ /dev/null @@ -1,119 +0,0 @@ -\documentclass{article} -\usepackage{axiom} -\setlength{\textwidth}{400pt} -\begin{document} -\title{\$SPAD/src/input aseg6.input} -\author{The Axiom Team} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{License} -\begin{verbatim} --- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. --- All rights reserved. --- --- Redistribution and use in source and binary forms, with or without --- modification, are permitted provided that the following conditions are --- met: --- --- - Redistributions of source code must retain the above copyright --- notice, this list of conditions and the following disclaimer. --- --- - Redistributions in binary form must reproduce the above copyright --- notice, this list of conditions and the following disclaimer in --- the documentation and/or other materials provided with the --- distribution. --- --- - Neither the name of The Numerical ALgorithms Group Ltd. nor the --- names of its contributors may be used to endorse or promote products --- derived from this software without specific prior written permission. --- --- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS --- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED --- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A --- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER --- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, --- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, --- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR --- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF --- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING --- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS --- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -\end{verbatim} -\begin{chunk}{*} - -#include "axiom" - -C1: Category == with { - foo: % -> %; -} - -C2(X: BasicType): Category == with { - foo: % -> X; - oof: X -> %; - foof: X -> X; - - default { - foof(x: X): X == foo(oof x); - } - -} - -C3: Category == Join(Ring, C1) with { - foo2: % -> % -} - -C4(X: Ring): Category == Join(Ring, C2 X) with { - foo2: % -> %; -} - - -D1: C1 with { - new: Integer -> %; -} == add { - Rep ==> Integer; - import from Rep; - - foo(x: %): % == x; - new(n: Integer): % == per n; -} - -D2(X: BasicType): C1 with { - new: X -> %; -} == add { - Rep ==> X; - foo(x: %): % == x; - new(n: X): % == per n; -} - -D3: C2(Integer) with == add { - Rep ==> Integer; - X ==> Integer; - - foo(x: %): X == rep x; - oof(x: X): % == per(x+1); -} - -D4(X: BasicType): C2(X) with == add { - Rep ==> X; - - foo(x: %): X == rep x; - oof(x: X): % == per x; -} - -D5(X: Ring): Ring == X add { - Rep ==> X; - import from Rep; - (a: %) + (b: %): % == per(rep(a) + rep(b) + 1@Rep); -} - -\end{chunk} -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/input/aseg7.as.pamphlet b/src/input/aseg7.as.pamphlet deleted file mode 100644 index c9a7670..0000000 --- a/src/input/aseg7.as.pamphlet +++ /dev/null @@ -1,109 +0,0 @@ -\documentclass{article} -\usepackage{axiom} -\setlength{\textwidth}{400pt} -\begin{document} -\title{\$SPAD/src/input aseg7.as} -\author{The Axiom Team} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{License} -\begin{verbatim} --- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. --- All rights reserved. --- --- Redistribution and use in source and binary forms, with or without --- modification, are permitted provided that the following conditions are --- met: --- --- - Redistributions of source code must retain the above copyright --- notice, this list of conditions and the following disclaimer. --- --- - Redistributions in binary form must reproduce the above copyright --- notice, this list of conditions and the following disclaimer in --- the documentation and/or other materials provided with the --- distribution. --- --- - Neither the name of The Numerical ALgorithms Group Ltd. nor the --- names of its contributors may be used to endorse or promote products --- derived from this software without specific prior written permission. --- --- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS --- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED --- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A --- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER --- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, --- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, --- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR --- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF --- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING --- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS --- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -\end{verbatim} -\begin{chunk}{*} - -#include "axiom.as" - -L ==> List; - -Test2(R:EuclideanDomain) : with { - constPtrs? :() -> R; - set : R->R; - resetConstPtrs :()->R; -} == add { - - import from R; - local constantPtrs:R:=0; - - - constPtrs?():R == { - free constantPtrs; - constantPtrs; - } - - set(c:R):R == { - free constantPtrs; - constantPtrs := c; - } - - resetConstPtrs():R == { - free constantPtrs; - constantPtrs := 0; - } -} - -Test3 : with { - constPtrs? : ()-> Integer; - set: Integer->Integer; - resetConstPtrs: () ->Integer; - -} == add { - import from Integer; - constantPtrs:Integer:=0; - constPtrs?():Integer == { - free constantPtrs; - constantPtrs; - } - - set(c:Integer):Integer == { - free constantPtrs; - constantPtrs := c; - } - - resetConstPtrs():Integer == { - free constantPtrs; - constantPtrs := 0; - } -} - -foo2 : with {constPtrs? : ()-> Integer; set: Integer->Integer; resetConstPtrs: () ->Integer } == Test2(Integer) add {} -\end{chunk} -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/input/ecfact.as.pamphlet b/src/input/ecfact.as.pamphlet deleted file mode 100644 index c78064b..0000000 --- a/src/input/ecfact.as.pamphlet +++ /dev/null @@ -1,283 +0,0 @@ -\documentclass{article} -\usepackage{axiom} -\setlength{\textwidth}{400pt} -\begin{document} -\title{\$SPAD/src/input ecfact.as} -\author{The Axiom Team} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{License} -\begin{verbatim} --- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. --- All rights reserved. --- --- Redistribution and use in source and binary forms, with or without --- modification, are permitted provided that the following conditions are --- met: --- --- - Redistributions of source code must retain the above copyright --- notice, this list of conditions and the following disclaimer. --- --- - Redistributions in binary form must reproduce the above copyright --- notice, this list of conditions and the following disclaimer in --- the documentation and/or other materials provided with the --- distribution. --- --- - Neither the name of The Numerical ALgorithms Group Ltd. nor the --- names of its contributors may be used to endorse or promote products --- derived from this software without specific prior written permission. --- --- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS --- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED --- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A --- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER --- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, --- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, --- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR --- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF --- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING --- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS --- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -\end{verbatim} -\begin{chunk}{*} - -#include "axiom.as" -#pile - ---% Elliptic curve method for integer factorization --- This file implements Lenstra's algorithm for integer factorization. --- A divisor of N is found by computing a large multiple of a rational --- point on a randomly generated elliptic curve in P2 Z/NZ. --- The Hessian model is used for the curve (1) to simplify the selection --- of the initial point on the random curve and (2) to minimize the --- cost of adding points. --- Ref: IBM RC 11262, DV Chudnovsky & GV Chudnovsky --- SMW Sept 86. - ---% EllipticCurveRationalPoints ---)abbrev domain ECPTS EllipticCurveRationalPoints - -EllipticCurveRationalPoints(x0:Integer, y0:Integer, z0:Integer, n:Integer): ECcat == ECdef where - Point ==> Record(x: Integer, y: Integer, z: Integer) - - ECcat ==> AbelianGroup with - double: % -> % - p0: % - HessianCoordinates: % -> Point - - ECdef ==> add - Rep == Point - import from Rep - import from List Integer - - Ex == OutputForm - - default u, v: % - - apply(u:%,x:'x'):Integer == rep(u).x - apply(u:%,y:'y'):Integer == rep(u).y - apply(u:%,z:'z'):Integer == rep(u).z - import from 'x' - import from 'y' - import from 'z' - - coerce(u:%): Ex == [u.x, u.y, u.z]$List(Integer) :: Ex - p0:% == per [x0 rem n, y0 rem n, z0 rem n] - HessianCoordinates(u:%):Point == rep u - - 0:% == - per [1, (-1) rem n, 0] - -(u:%):% == - per [u.y, u.x, u.z] - (u:%) = (v:%):Boolean == - XuZv := u.x * v.z - XvZu := v.x * u.z - YuZv := u.y * v.z - YvZu := v.y * u.z - (XuZv-XvZu) rem n = 0 and (YuZv-YvZu) rem n = 0 - (u:%) + (v:%): % == - XuZv := u.x * v.z - XvZu := v.x * u.z - YuZv := u.y * v.z - YvZu := v.y * u.z - (XuZv-XvZu) rem n = 0 and (YuZv-YvZu) rem n = 0 => double u - XuYv := u.x * v.y - XvYu := v.x * u.y - Xw := XuZv*XuYv - XvZu*XvYu - Yw := YuZv*XvYu - YvZu*XuYv - Zw := XvZu*YvZu - XuZv*YuZv - per [Yw rem n, Xw rem n, Zw rem n] - double(u:%): % == - import from PositiveInteger - X3 := u.x**(3@PositiveInteger) - Y3 := u.y**(3@PositiveInteger) - Z3 := u.z**(3@PositiveInteger) - Xw := u.x*(Y3 - Z3) - Yw := u.y*(Z3 - X3) - Zw := u.z*(X3 - Y3) - per [Yw rem n, Xw rem n, Zw rem n] - (n:Integer)*(u:%): % == - n < 0 => (-n)*(-u) - v := 0 - import from UniversalSegment Integer - for i in 0..length n - 1 repeat - if bit?(n,i) then v := u + v - u := double u - v - - ---% EllipticCurveFactorization ---)abbrev package ECFACT EllipticCurveFactorization - -EllipticCurveFactorization: with - LenstraEllipticMethod: (Integer) -> Integer - LenstraEllipticMethod: (Integer, Float) -> Integer - LenstraEllipticMethod: (Integer, Integer, Integer) -> Integer - LenstraEllipticMethod: (Integer, Integer) -> Integer - - lcmLimit: Integer -> Integer - lcmLimit: Float-> Integer - - solveBound: Float -> Float - bfloor: Float -> Integer - primesTo: Integer -> List Integer - lcmTo: Integer -> Integer - == add - import from List Integer - Ex == OutputForm - import from Ex - import from String - import from Float - - NNI==> NonNegativeInteger - import from OutputPackage - import from Integer, NonNegativeInteger - import from UniversalSegment Integer - - blather:Boolean := true - - --% Finding the multiplier - flabs (f: Float): Float == abs f - flsqrt(f: Float): Float == sqrt f - nthroot(f:Float,n:Integer):Float == exp(log f/n::Float) - - bfloor(f: Float): Integer == wholePart floor f - - lcmLimit(n: Integer):Integer == - lcmLimit nthroot(n::Float, 3) - lcmLimit(divisorBound: Float):Integer == - y := solveBound divisorBound - lcmLim := bfloor exp(log divisorBound/y) - if blather then - output("The divisor bound is", divisorBound::Ex) - output("The lcm Limit is", lcmLim::Ex) - lcmLim - - -- Solve the bound equation using a Newton iteration. - -- - -- f = y**2 - log(B)/log(y+1) - -- - -- f/f' = fdf = - -- 2 2 - -- y (y + 1)log(y + 1) - (y + 1)log(y + 1) logB - -- --------------------------------------------- - -- 2 - -- 2y(y + 1)log(y + 1) + logB - -- - fdf(y: Float, logB: Float): Float == - logy := log(y + 1) - ylogy := (y + 1)*logy - ylogy2:= y*logy*ylogy - (y*ylogy2 - logB*ylogy)/((2@Integer)*ylogy2 + logB) - solveBound(divisorBound:Float):Float == - -- solve y**2 = log(B)/log(y + 1) - -- although it may be y**2 = log(B)/(log(y)+1) - relerr := (10::Float)**(-5) - logB := log divisorBound - y0 := flsqrt log10 divisorBound - y1 := y0 - fdf(y0, logB) - while flabs((y1 - y0)/y0) > relerr repeat - y0 := y1 - y1 := y0 - fdf(y0, logB) - y1 - - -- maxpin(p, n, logn) is max d s.t. p**d <= n - maxpin(p:Integer,n:Integer,logn:Float): NonNegativeInteger == - d: Integer := bfloor(logn/log(p::Float)) - if d < 0 then d := 0 - d::NonNegativeInteger - - multiple?(i: Integer, plist: List Integer): Boolean == - for p in plist repeat if i rem p = 0 then return true - false - - primesTo(n:Integer):List Integer == - n < 2 => [] - n = 2 => [2] - plist := [3, 2] - i:Integer := 5 - while i <= n repeat - if not multiple?(i, plist) then plist := cons(i, plist) - i := i + 2 - if not multiple?(i, plist) then plist := cons(i, plist) - i := i + 4 - plist - lcmTo(n:Integer):Integer == - plist := primesTo n - m: Integer := 1 - logn := log(n::Float) - for p in plist repeat m := m * p**maxpin(p,n,logn) - if blather then - output("The lcm of 1..", n::Ex) - output(" is", m::Ex) - m - LenstraEllipticMethod(n: Integer):Integer == - LenstraEllipticMethod(n, flsqrt(n::Float)) - LenstraEllipticMethod(n: Integer, divisorBound: Float):Integer == - lcmLim0 := lcmLimit divisorBound - multer0 := lcmTo lcmLim0 - LenstraEllipticMethod(n, lcmLim0, multer0) - InnerLenstraEllipticMethod(n:Integer, multer:Integer, - X0:Integer, Y0:Integer, Z0:Integer):Integer == - import from EllipticCurveRationalPoints(X0,Y0,Z0,n) - import from Record(x: Integer, y: Integer, z: Integer) - p := p0 - pn := multer * p - Zn := HessianCoordinates.pn.z - gcd(n, Zn) - - LenstraEllipticMethod(n: Integer, multer: Integer):Integer == - X0:Integer := random() - Y0:Integer := random() - Z0:Integer := random() - InnerLenstraEllipticMethod(n, multer, X0, Y0, Z0) - - LenstraEllipticMethod(n:Integer, lcmLim0:Integer, multer0:Integer):Integer == - nfact: Integer := 1 - for i:Integer in 1.. while nfact = 1 repeat - output("Trying elliptic curve number", i::Ex) - X0:Integer := random() - Y0:Integer := random() - Z0:Integer := random() - nfact := InnerLenstraEllipticMethod(n, multer0, X0, Y0, Z0) - if nfact = n then - lcmLim := lcmLim0 - while nfact = n repeat - output("Too many iterations... backing off") - lcmLim := bfloor(lcmLim * 0.6) - multer := lcmTo lcmLim - nfact := InnerLenstraEllipticMethod(n, multer0, X0, Y0, Z0) - nfact - - -\end{chunk} -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/input/hilbert.as.pamphlet b/src/input/hilbert.as.pamphlet deleted file mode 100644 index 802e653..0000000 --- a/src/input/hilbert.as.pamphlet +++ /dev/null @@ -1,318 +0,0 @@ -\documentclass{article} -\usepackage{axiom} -\setlength{\textwidth}{400pt} -\begin{document} -\title{\$SPAD/src/input hilbert.as} -\author{The Axiom Team} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{Hilbert input tests} -\begin{chunk}{input} -)compile hilbert.as -mon1 := monom(4,0,0,0) -mon2:= monom(3,3,0,0) -mon3 := monom(3,2,1,0) -mon4 := monom(3,1,2,0) -mon5 := monom(0,2,0,1) -mon6 := monom(0,1,0,5) -l := [mon1, mon2, mon3, mon4, mon5, mon6] -Hilbert l -idA := varMonomsPower(6,5); -#idA -Hilbert idA -idB := varMonomsPower(6,6); -#idB -Hilbert idB -idC := varMonomsPower(12,3); -#idC -Hilbert idC -idD:=[monom(2,0,0,0),monom(1,1,0,0),monom(1,0,1,0),monom(1,0,0,1),_ - monom(0,3,0,0),monom(0,2,1,0)]^4; -#idD -Hilbert idD -\end{chunk} -\section{License} -\begin{verbatim} --- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. --- All rights reserved. --- --- Redistribution and use in source and binary forms, with or without --- modification, are permitted provided that the following conditions are --- met: --- --- - Redistributions of source code must retain the above copyright --- notice, this list of conditions and the following disclaimer. --- --- - Redistributions in binary form must reproduce the above copyright --- notice, this list of conditions and the following disclaimer in --- the documentation and/or other materials provided with the --- distribution. --- --- - Neither the name of The Numerical ALgorithms Group Ltd. nor the --- names of its contributors may be used to endorse or promote products --- derived from this software without specific prior written permission. --- --- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS --- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED --- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A --- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER --- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, --- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, --- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR --- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF --- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING --- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS --- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -\end{verbatim} -\begin{chunk}{*} - -\getchunk{input} - -#include "axiom.as" -#pile - --- This file computes hilbert functions for monomial ideals --- ref: "On the Computation of Hilbert-Poincare Series", --- Bigatti, Caboara, Robbiano, --- AAECC vol 2 #1 (1991) pp 21-33 - -macro - Monom == Monomial - L == List - SI == SingleInteger - B == Boolean - POLY == SparseUnivariatePolynomial Integer - Array == Vector - -import from NonNegativeInteger -import from SingleInteger -import from Segment SI -import from Integer - -Monomial : OrderedSet with - totalDegree: % -> SI - divides?: (%, %) -> B - homogLess: (%, %) -> B - quo: (%, %) -> % - quo: (%, SI) -> % - *: (%, %) -> % - varMonom: (i:SI,n:SI, deg:SI) -> % - variables: L % -> L SI - apply: (%, SI) -> SI - #: % -> SI - monom: Tuple SI -> % - == Array(SingleInteger) add - Rep ==> Array(SingleInteger) - import from Rep - - monom(t:Tuple SI):% == per [ t ] - - totalDegree(m:%):SI == - sum:SI := 0 - for e in rep m repeat sum := sum + e - sum - - divides?(m1:%, m2:%):B == - for e1 in rep m1 for e2 in rep m2 repeat - if e1 > e2 then return false - true - - (m1:%) < (m2:%):B == - for e1 in rep m1 for e2 in rep m2 repeat - if e1 < e2 then return true - if e1 > e2 then return false - false - --- (m1:%) > (m2:%):B == m2 < m1 - - homogLess(m1:%, m2:%):B == - (d1:=totalDegree(m1)) < (d2:=totalDegree(m2)) => true - d1 > d2 => false - ( m1 < m2) - - (m:%) quo (v:SI):% == --remove vth variable --- per [((if i=v then 0 else (rep m).i) for i in 1..#rep m)] - m2:= copy rep m - m2.v := 0 - per m2 - - (m1:%) quo (m2:%):% == - per [(max(a1-a2,0) for a1 in rep m1 for a2 in rep m2)] - - (m1:%) * (m2:%):% == per [(a1+a2 for a1 in rep m1 for a2 in rep m2)] - - varMonom(i:SI,n:SI, deg:SI):% == --- per [((if j=i then deg else 0$SI) for j in 1..n)] - m:Rep := new(n, 0) - m.i := deg - per m - - variables(I:L %) :L SI == - empty? I => nil - n:SI:=# rep first I - ans : L SI := nil - v:SI:=0 - while (v:=v+1)<=n repeat --- for v in 1..n repeat - for m in I repeat - (rep m).v ~= 0 => - ans := cons(v, ans) - break - ans - - -HilbertFunctionPackage: with - Hilbert: L Monom -> POLY - adjoin: (Monom, L Monom) -> L Monom - == add - - adjoin(m:Monom, lm:L Monom):L Monom == - empty?(lm) => cons(m, nil) - ris1:L Monom:= empty() - ris2:L Monom:= empty() - while not empty? lm repeat - m1:Monom := first lm - lm := rest lm - if m <= m1 then - if not divides?(m,m1) then (ris1 := cons(m1, ris1)) - iterate - ris2 := cons(m1, ris2) - if divides?(m1, m) then - return concat!(reverse!(ris1), concat!(reverse! ris2, lm)) - concat!(reverse!(ris1), cons(m, reverse! ris2)) - - reduce(lm:L Monom):L Monom == - lm := sortHomogRemDup(lm) - empty? lm => lm - ris :L Monom := nil - risd:L Monom := list first lm - d := totalDegree first lm - for m in rest lm repeat - if totalDegree(m)=d then risd := cons(m, risd) - else - ris := mergeDiv(ris, risd) - d := totalDegree m - risd := [m] - mergeDiv(ris, risd) - - mergeDiv( small:L Monom, big:L Monom): L Monom == - ans : L Monom := small - for m in big repeat - if not contained?(m,small) then ans := cons(m, ans) - ans - - contained?(m:Monom, id: L Monom) : B == - for mm in id repeat - divides?(mm, m) => return true - false - - (I:L Monom) quo (m:Monom):L Monom == - reduce [mm quo m for mm in I] - - sort(I:L Monom, v:SI):L Monom == - sort((a:Monom,b:Monom):B+->(a.v < b.v), I) - - sortHomogRemDup(l:L Monom):L Monom == - l:=sort(homogLess, l) - empty? l => l - ans:L Monom := list first l - for m in rest l repeat - if m ~= first(ans) then ans:=cons(m, ans) - reverse! ans - - decompose(I:L Monom, v:SI):Record(size:SI, ideals:L L Monom, degs:L SI) == - I := sort(I, v) - idlist: L L Monom := nil - deglist : L SI := nil - size : SI := 0 - J: L Monom := nil - while not empty? I repeat - d := first(I).v - tj : L Monom := nil - local m:Monom - while not empty? I and d=(m:=first I).v repeat - tj := cons(m quo v, tj) - I := rest I - J := mergeDiv(tj, J) - idlist := cons(J, idlist) - deglist := cons(d, deglist) - size := size + ((#J)::Integer::SI) - [size, idlist, deglist] - - - var(n:SI) : SparseUnivariatePolynomial Integer == - monomial(1$Integer, n::Integer::NonNegativeInteger) - - - Hilbert(I:L Monom):POLY == - empty? I => 1 -- no non-zero generators = 0 ideal - empty? rest I => var(0) - var(totalDegree first I) - lvar :L SI := variables I - import from Record(size:SI, ideals:L L Monom, degs:L SI) - Jbest := decompose(I, first lvar) - for v in rest lvar while (#I)::Integer::SI < Jbest.size repeat - JJ := decompose(I, v) - JJ.size < Jbest.size => Jbest := JJ - import from L L Monom - import from L SI - Jold:List Monom := first(Jbest.ideals) - dold:SI := first(Jbest.degs) - f:SparseUnivariatePolynomial Integer:=var(dold)*Hilbert(Jold) - for J:List Monom in rest Jbest.ideals for d:SI in rest Jbest.degs repeat - f := f + (var(d) - var(dold)) * Hilbert(J) - dold := d - var(0) - var(dold) + f - -MonomialIdealPackage: with - varMonomsPower: (SI, SI) -> L Monom - *: (L Monom, L Monom) -> L Monom - ^: (L Monom, SI) -> L Monom - == add - - varMonoms(n:SI):L Monom == --- [varMonom(i,n,1) for i in 1..n] - i:SI:=0 - [varMonom(i,n,1) while {free i; (i:=i+1)<=n}] - - varMonomsPower(n:SI, deg:SI):L Monom == - n = 1 => [ monom(deg)] - ans : L Monom := nil --- for j in 0..deg repeat - j:SI:=-1 - while (j:=j+1)<=deg repeat - ans := concat(varMonomMult(j,varMonomsPower(n-1,deg-j)), ans) - ans - - varMonomMult(i:SI, mlist : L Monom) : L Monom == - [varMonomMult(i, m) for m in mlist] - - varMonomMult(i:SI, m:Monom) : Monom == - nm:Array SI := new(#m + 1, i) --- for k in 1..#m repeat nm.k :=m.k - k:SI:=0 - while (k:=k+1)<=#m repeat nm.k :=m.k - nm pretend Monom - - (i1:L Monom) * (i2:L Monom):L Monom == - import from HilbertFunctionPackage - ans : L Monom := nil - for m1 in i1 repeat for m2 in i2 repeat - ans := adjoin(m1*m2, ans) - ans - - (i:L Monom) ^ (n:SI) : L Monom == - n = 1 => i - odd? n => i * (i*i)^shift(n, -1) - (i*i)^shift(n,-1) - -\end{chunk} -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/input/matops.as.pamphlet b/src/input/matops.as.pamphlet deleted file mode 100644 index 5052206..0000000 --- a/src/input/matops.as.pamphlet +++ /dev/null @@ -1,80 +0,0 @@ -\documentclass{article} -\usepackage{axiom} -\setlength{\textwidth}{400pt} -\begin{document} -\title{\$SPAD/src/input matops.as} -\author{The Axiom Team} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{Input tests} -\begin{chunk}{input} -)compile matops.as -)show MatrixOpSym -matrix [[3,4],[5,6]] -symmetricPart % -\end{chunk} -\section{License} -\begin{verbatim} --- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. --- All rights reserved. --- --- Redistribution and use in source and binary forms, with or without --- modification, are permitted provided that the following conditions are --- met: --- --- - Redistributions of source code must retain the above copyright --- notice, this list of conditions and the following disclaimer. --- --- - Redistributions in binary form must reproduce the above copyright --- notice, this list of conditions and the following disclaimer in --- the documentation and/or other materials provided with the --- distribution. --- --- - Neither the name of The Numerical ALgorithms Group Ltd. nor the --- names of its contributors may be used to endorse or promote products --- derived from this software without specific prior written permission. --- --- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS --- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED --- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A --- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER --- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, --- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, --- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR --- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF --- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING --- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS --- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -\end{verbatim} -\begin{chunk}{*} - -#include "axiom.as" -#pile - -MatrixOpSym(R:Field) : MOD == Definition where - Mat ==> Matrix R - - MOD ==> with - - symmetricPart : Mat -> Mat - ++ \spad{symmetricPart(m)} returns the symmetric part of m - - Definition ==> add - - symmetricPart(m:Mat) : Mat == - m1:=transpose m - import from Integer - import from R - inv(2::R) *(m+m1) - -\end{chunk} -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/input/pdecomp0.as.pamphlet b/src/input/pdecomp0.as.pamphlet deleted file mode 100644 index e8633b9..0000000 --- a/src/input/pdecomp0.as.pamphlet +++ /dev/null @@ -1,141 +0,0 @@ -\documentclass{article} -\usepackage{axiom} -\setlength{\textwidth}{400pt} -\begin{document} -\title{\$SPAD/src/input pdecomp0.as} -\author{The Axiom Team} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{License} -\begin{verbatim} --- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. --- All rights reserved. --- --- Redistribution and use in source and binary forms, with or without --- modification, are permitted provided that the following conditions are --- met: --- --- - Redistributions of source code must retain the above copyright --- notice, this list of conditions and the following disclaimer. --- --- - Redistributions in binary form must reproduce the above copyright --- notice, this list of conditions and the following disclaimer in --- the documentation and/or other materials provided with the --- distribution. --- --- - Neither the name of The Numerical ALgorithms Group Ltd. nor the --- names of its contributors may be used to endorse or promote products --- derived from this software without specific prior written permission. --- --- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS --- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED --- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A --- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER --- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, --- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, --- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR --- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF --- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING --- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS --- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -\end{verbatim} -\begin{chunk}{*} -#pile -#include "axiom.as" - ---% Polynomial composition and decomposition functions --- If f = g o h then g = leftFactor(f, h) & h = rightFactor(f, g) --- SMW Dec 86 - ---% PolynomialComposition ---)abbrev package PCOMP PolynomialComposition ---)abbrev package PDECOMP PolynomialDecomposition - -PolynomialComposition(UP: UnivariatePolynomialCategory(R), R: Ring): with - compose: (UP, UP) -> UP - - == add - compose(g:UP, h:UP):UP == - r: UP := 0 - while g ~= 0 repeat - r := leadingCoefficient(g)*h**degree(g) + r - g := reductum g - r - - --- Ref: Kozen and Landau, Cornell University TR 86-773 - ---% PolynomialDecomposition - - -PolynomialDecomposition(UP:UPC F, F:Field): PDcat == PDdef where - UPC ==> UnivariatePolynomialCategory - NNI ==> NonNegativeInteger - LR ==> Record(left: UP, right: UP) - - PDcat ==> with - decompose: UP -> List UP - decompose: (UP, NNI, NNI) -> Union(value1:LR, failed:'failed') - leftFactor: (UP, UP) -> Union(value1:UP, failed:'failed') - rightFactorCandidate: (UP, NNI) -> UP - PDdef ==> add - - import from F - import from LR - import from Union(value1:UP, failed:'failed') - import from Float - import from NNI - import from UniversalSegment NNI - import from Record(quotient:UP, remainder:UP); - - leftFactor(f:UP, h:UP):Union(value1:UP, failed:'failed') == - g: UP := 0 - for i in 0.. while f ~= 0 repeat - fr := divide(f, h) - f := fr.quotient - r := fr.remainder - degree r > 0 => return [failed] - g := g + r * monomial(1, i) - [g] - - decompose(f:UP, dg:NNI, dh:NNI):Union(value1:LR, failed:'failed') == - df := degree f - dg*dh ~= df => [failed] - h := rightFactorCandidate(f, dh) - g:Union(value1:UP, failed:'failed') := leftFactor(f, h) - g case failed => [failed] - [[g.value1, h]] - - decompose(f:UP):List UP == - df := degree f - for dh in 2..df-1 | df rem dh = 0 repeat - h := rightFactorCandidate(f, dh) - g := leftFactor(f, h) - g case value1 => return - append(decompose(g.value1), decompose h) - [f] - - - rightFactorCandidate(f:UP, dh:NNI):UP == - f := f / leadingCoefficient f - df := degree f - dg := df quo dh - h := monomial(1, dh) - for k in 1..dh repeat - hdg:= h**dg - c := (coefficient(f,df-k)-coefficient(hdg,df-k))/ - (dg::Integer::F) - h := h + monomial(c, dh-k) - h - monomial(coefficient(h, 0), 0) -- drop constant term - -\end{chunk} -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/input/romnum.as.pamphlet b/src/input/romnum.as.pamphlet deleted file mode 100644 index 3389744..0000000 --- a/src/input/romnum.as.pamphlet +++ /dev/null @@ -1,69 +0,0 @@ -\documentclass{article} -\usepackage{axiom} -\setlength{\textwidth}{400pt} -\begin{document} -\title{\$SPAD/src/input romnum.as} -\author{The Axiom Team} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{License} -\begin{verbatim} --- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. --- All rights reserved. --- --- Redistribution and use in source and binary forms, with or without --- modification, are permitted provided that the following conditions are --- met: --- --- - Redistributions of source code must retain the above copyright --- notice, this list of conditions and the following disclaimer. --- --- - Redistributions in binary form must reproduce the above copyright --- notice, this list of conditions and the following disclaimer in --- the documentation and/or other materials provided with the --- distribution. --- --- - Neither the name of The Numerical ALgorithms Group Ltd. nor the --- names of its contributors may be used to endorse or promote products --- derived from this software without specific prior written permission. --- --- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS --- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED --- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A --- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER --- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, --- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, --- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR --- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF --- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING --- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS --- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -\end{verbatim} -\begin{chunk}{*} - -#pile -#include "axiom.as" - -RomanNumber : IntegerNumberSystem == Integer add - import from NumberFormats - coerce(r:%):OutputForm == - import from Integer - n := convert(r)@Integer - -- okay, we stretch it - zero? n => n::OutputForm - negative? n => - ((-r)::OutputForm) - import from PositiveInteger - message FormatRoman(n::PositiveInteger) - - -\end{chunk} -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document}