diff --git a/changelog b/changelog index eaa591a..fbb5d26 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,25 @@ +20070825 tpd doc/src/algebra/spadhelp add all abbreviation files +20070825 tpd src/doc/spadhelp add all abbreviations +20070825 tpd src/doc/spadhelp add DoubleFloat +20070825 tpd src/algebra/Makefile add DoubleFloat.help +20070825 tpd src/algebra/sf.spad add DoubleFloat.help +20070825 tpd src/algebra/sf.spad add DoubleFloat.input +20070825 tpd src/doc/spadhelp add EqTable +20070825 tpd src/algebra/Makefile add EqTable.help +20070825 tpd src/algebra/table.spad add EqTable.help +20070825 tpd src/algebra/table.spad add EqTable.input +20070825 tpd src/doc/spadhelp add DistributedMultivariatePolynomial +20070825 tpd src/algebra/Makefile add DMP.help +20070825 tpd src/algebra/gdpoly.spad add DMP.help +20070825 tpd src/algebra/gdpoly.spad add DMP.input +20070825 tpd src/doc/spadhelp add GeneralDistributedMultivariatePolynomial +20070825 tpd src/algebra/Makefile add GDMP.help +20070825 tpd src/algebra/gdpoly.spad add GDMP.help +20070825 tpd src/algebra/gdpoly.spad add GDMP.input +20070825 tpd src/algebra/carten.spad fix help typo +20070825 tpd src/algebra/gaussian.spad fix help typo +20070825 tpd src/algebra/derham.spad fix help typo +20070825 tpd src/algebra/cycles.spad fix help typo 20070824 tpd src/doc/spadhelp add DecimalExpansion 20070824 tpd src/algebra/Makefile add DecimalExpansion.help 20070824 tpd src/algebra/radix.spad add DecimalExpansion.help diff --git a/src/algebra/Makefile.pamphlet b/src/algebra/Makefile.pamphlet index 3fa3009..542e42d 100644 --- a/src/algebra/Makefile.pamphlet +++ b/src/algebra/Makefile.pamphlet @@ -2026,7 +2026,11 @@ SPADHELP=\ ${HELP}/CharacterClass.help ${HELP}/CliffordAlgebra.help \ ${HELP}/Complex.help ${HELP}/ContinuedFraction.help \ ${HELP}/CycleIndicators.help ${HELP}/DeRhamComplex.help \ - ${HELP}/DecimalExpansion.help + ${HELP}/DecimalExpansion.help ${HELP}/DoubleFloat.help \ + ${HELP}/EqTable.help \ + ${HELP}/DistributedMultivariatePolynomial.help \ + ${HELP}/GeneralDistributedMultivariatePolynomial.help \ + ${HELP}/HomogeneousDistributedMultivariatePolynomial.help @ The algebra files contain input chunks in regress format. @@ -2044,7 +2048,11 @@ REGRESS=\ CharacterClass.regress CliffordAlgebra.regress \ Complex.regress ContinuedFraction.regress \ CycleIndicators.regress DeRhamComplex.regress \ - DecimalExpansion.regress + DecimalExpansion.regress DoubleFloat.regress \ + EqTable.regress \ + DistributedMultivariatePolynomial.regress \ + GeneralDistributedMultivariatePolynomial.regress \ + HomogeneousDistributedMultivariatePolynomial.regress %.regress: %.input @ echo algebra regression testing $* @@ -2061,6 +2069,7 @@ ${HELP}/AssociationList.help: ${IN}/list.spad.pamphlet @echo 7000 create AssociationList.help from ${IN}/list.spad.pamphlet @${TANGLE} -R"AssociationList.help" ${IN}/list.spad.pamphlet \ >${HELP}/AssociationList.help + @cp ${HELP}/AssociationList.help ${HELP}/ALIST.help @${TANGLE} -R"AssociationList.input" ${IN}/list.spad.pamphlet \ >${INPUT}/AssociationList.input @@ -2068,6 +2077,7 @@ ${HELP}/BalancedBinaryTree.help: ${IN}/tree.spad.pamphlet @echo 7001 create BalancedBinaryTree.help from ${IN}/tree.spad.pamphlet @${TANGLE} -R"BalancedBinaryTree.help" ${IN}/tree.spad.pamphlet \ >${HELP}/BalancedBinaryTree.help + @cp ${HELP}/BalancedBinaryTree.help ${HELP}/BBTREE.help @${TANGLE} -R"BalancedBinaryTree.input" ${IN}/tree.spad.pamphlet \ >${INPUT}/BalancedBinaryTree.input @@ -2075,6 +2085,7 @@ ${HELP}/BasicOperator.help: ${IN}/op.spad.pamphlet @echo 7002 create BasicOperator.help from ${IN}/op.spad.pamphlet @${TANGLE} -R"BasicOperator.help" ${IN}/op.spad.pamphlet \ >${HELP}/BasicOperator.help + @cp ${HELP}/BasicOperator.help ${HELP}/BOP.help @${TANGLE} -R"BasicOperator.input" ${IN}/op.spad.pamphlet \ >${INPUT}/BasicOperator.input @@ -2082,6 +2093,7 @@ ${HELP}/BinaryExpansion.help: ${IN}/radix.spad.pamphlet @echo 7003 create BinaryExpansion.help from ${IN}/radix.spad.pamphlet @${TANGLE} -R"BinaryExpansion.help" ${IN}/radix.spad.pamphlet \ >${HELP}/BinaryExpansion.help + @cp ${HELP}/BinaryExpansion.help ${HELP}/BINARY.help @${TANGLE} -R"BinaryExpansion.input" ${IN}/radix.spad.pamphlet \ >${INPUT}/BinaryExpansion.input @@ -2089,6 +2101,7 @@ ${HELP}/BinarySearchTree.help: ${IN}/tree.spad.pamphlet @echo 7004 create BinarySearchTree.help from ${IN}/tree.spad.pamphlet @${TANGLE} -R"BinarySearchTree.help" ${IN}/tree.spad.pamphlet \ >${HELP}/BinarySearchTree.help + @cp ${HELP}/BinarySearchTree.help ${HELP}/BSTREE.help @${TANGLE} -R"BinarySearchTree.input" ${IN}/tree.spad.pamphlet \ >${INPUT}/BinarySearchTree.input @@ -2096,6 +2109,7 @@ ${HELP}/CardinalNumber.help: ${IN}/card.spad.pamphlet @echo 7005 create CardinalNumber.help from ${IN}/card.spad.pamphlet @${TANGLE} -R"CardinalNumber.help" ${IN}/card.spad.pamphlet \ >${HELP}/CardinalNumber.help + @cp ${HELP}/CardinalNumber.help ${HELP}/CARD.help @${TANGLE} -R"CardinalNumber.input" ${IN}/card.spad.pamphlet \ >${INPUT}/CardinalNumber.input @@ -2103,6 +2117,7 @@ ${HELP}/CartesianTensor.help: ${IN}/carten.spad.pamphlet @echo 7006 create CartesianTensor.help from ${IN}/carten.spad.pamphlet @${TANGLE} -R"CartesianTensor.help" ${IN}/carten.spad.pamphlet \ >${HELP}/CartesianTensor.help + @cp ${HELP}/CartesianTensor.help ${HELP}/CARTEN.help @${TANGLE} -R"CartesianTensor.input" ${IN}/carten.spad.pamphlet \ >${INPUT}/CartesianTensor.input @@ -2110,6 +2125,7 @@ ${HELP}/Character.help: ${IN}/string.spad.pamphlet @echo 7007 create Character.help from ${IN}/string.spad.pamphlet @${TANGLE} -R"Character.help" ${IN}/string.spad.pamphlet \ >${HELP}/Character.help + @cp ${HELP}/Character.help ${HELP}/CHAR.help @${TANGLE} -R"Character.input" ${IN}/string.spad.pamphlet \ >${INPUT}/Character.input @@ -2117,6 +2133,7 @@ ${HELP}/CharacterClass.help: ${IN}/string.spad.pamphlet @echo 7008 create CharacterClass.help from ${IN}/string.spad.pamphlet @${TANGLE} -R"CharacterClass.help" ${IN}/string.spad.pamphlet \ >${HELP}/CharacterClass.help + @cp ${HELP}/CharacterClass.help ${HELP}/CCLASS.help @${TANGLE} -R"CharacterClass.input" ${IN}/string.spad.pamphlet \ >${INPUT}/CharacterClass.input @@ -2125,6 +2142,7 @@ ${HELP}/CliffordAlgebra.help: ${IN}/clifford.spad.pamphlet ${IN}/clifford.spad.pamphlet @${TANGLE} -R"CliffordAlgebra.help" ${IN}/clifford.spad.pamphlet \ >${HELP}/CliffordAlgebra.help + @cp ${HELP}/CliffordAlgebra.help ${HELP}/CLIF.help @${TANGLE} -R"CliffordAlgebra.input" ${IN}/clifford.spad.pamphlet \ >${INPUT}/CliffordAlgebra.input @@ -2132,6 +2150,7 @@ ${HELP}/Complex.help: ${IN}/gaussian.spad.pamphlet @echo 7010 create Complex.help from ${IN}/gaussian.spad.pamphlet @${TANGLE} -R"Complex.help" ${IN}/gaussian.spad.pamphlet \ >${HELP}/Complex.help + @cp ${HELP}/Complex.help ${HELP}/COMPLEX.help @${TANGLE} -R"Complex.input" ${IN}/gaussian.spad.pamphlet \ >${INPUT}/Complex.input @@ -2140,6 +2159,7 @@ ${HELP}/ContinuedFraction.help: ${IN}/contfrac.spad.pamphlet ${IN}/contfrac.spad.pamphlet @${TANGLE} -R"ContinuedFraction.help" ${IN}/contfrac.spad.pamphlet \ >${HELP}/ContinuedFraction.help + @cp ${HELP}/ContinuedFraction.help ${HELP}/CONTFRAC.help @${TANGLE} -R"ContinuedFraction.input" ${IN}/contfrac.spad.pamphlet \ >${INPUT}/ContinuedFraction.input @@ -2148,6 +2168,7 @@ ${HELP}/CycleIndicators.help: ${IN}/cycles.spad.pamphlet ${IN}/cycles.spad.pamphlet @${TANGLE} -R"CycleIndicators.help" ${IN}/cycles.spad.pamphlet \ >${HELP}/CycleIndicators.help + @cp ${HELP}/CycleIndicators.help ${HELP}/CYCLES.help @${TANGLE} -R"CycleIndicators.input" ${IN}/cycles.spad.pamphlet \ >${INPUT}/CycleIndicators.input @@ -2155,6 +2176,7 @@ ${HELP}/DeRhamComplex.help: ${IN}/derham.spad.pamphlet @echo 7013 create DeRhamComplex.help from ${IN}/derham.spad.pamphlet @${TANGLE} -R"DeRhamComplex.help" ${IN}/derham.spad.pamphlet \ >${HELP}/DeRhamComplex.help + @cp ${HELP}/DeRhamComplex.help ${HELP}/DERHAM.help @${TANGLE} -R"DeRhamComplex.input" ${IN}/derham.spad.pamphlet \ >${INPUT}/DeRhamComplex.input @@ -2162,9 +2184,64 @@ ${HELP}/DecimalExpansion.help: ${IN}/radix.spad.pamphlet @echo 7014 create DecimalExpansion.help from ${IN}/radix.spad.pamphlet @${TANGLE} -R"DecimalExpansion.help" ${IN}/radix.spad.pamphlet \ >${HELP}/DecimalExpansion.help + @cp ${HELP}/DecimalExpansion.help ${HELP}/DECIMAL.help @${TANGLE} -R"DecimalExpansion.input" ${IN}/radix.spad.pamphlet \ >${INPUT}/DecimalExpansion.input +${HELP}/DistributedMultivariatePolynomial.help: \ + ${IN}/gdpoly.spad.pamphlet + @echo 7015 create DistributedMultivariatePolynomial.help \ + from ${IN}/gdpoly.spad.pamphlet + @${TANGLE} -R"DistributedMultivariatePolynomial.help" \ + ${IN}/gdpoly.spad.pamphlet \ + >${HELP}/DistributedMultivariatePolynomial.help + @cp ${HELP}/DistributedMultivariatePolynomial.help ${HELP}/DMP.help + @${TANGLE} -R"DistributedMultivariatePolynomial.input" \ + ${IN}/gdpoly.spad.pamphlet \ + >${INPUT}/DistributedMultivariatePolynomial.input + +${HELP}/DoubleFloat.help: ${IN}/sf.spad.pamphlet + @echo 7016 create DoubleFloat.help from ${IN}/sf.spad.pamphlet + @${TANGLE} -R"DoubleFloat.help" ${IN}/sf.spad.pamphlet \ + >${HELP}/DoubleFloat.help + @cp ${HELP}/DoubleFloat.help ${HELP}/DFLOAT.help + @${TANGLE} -R"DoubleFloat.input" ${IN}/sf.spad.pamphlet \ + >${INPUT}/DoubleFloat.input + +${HELP}/EqTable.help: ${IN}/table.spad.pamphlet + @echo 7017 create EqTable.help from ${IN}/table.spad.pamphlet + @${TANGLE} -R"EqTable.help" ${IN}/table.spad.pamphlet \ + >${HELP}/EqTable.help + @cp ${HELP}/EqTable.help ${HELP}/EQTBL.help + @${TANGLE} -R"EqTable.input" ${IN}/table.spad.pamphlet \ + >${INPUT}/EqTable.input + +${HELP}/GeneralDistributedMultivariatePolynomial.help: \ + ${IN}/gdpoly.spad.pamphlet + @echo 7018 create GeneralDistributedMultivariatePolynomial.help \ + from ${IN}/gdpoly.spad.pamphlet + @${TANGLE} -R"GeneralDistributedMultivariatePolynomial.help" \ + ${IN}/gdpoly.spad.pamphlet \ + >${HELP}/GeneralDistributedMultivariatePolynomial.help + @cp ${HELP}/GeneralDistributedMultivariatePolynomial.help \ + ${HELP}/GDMP.help + @${TANGLE} -R"GeneralDistributedMultivariatePolynomial.input" \ + ${IN}/gdpoly.spad.pamphlet \ + >${INPUT}/GeneralDistributedMultivariatePolynomial.input + +${HELP}/HomogeneousDistributedMultivariatePolynomial.help: \ + ${IN}/gdpoly.spad.pamphlet + @echo 7019 create HomogeneousDistributedMultivariatePolynomial.help \ + from ${IN}/gdpoly.spad.pamphlet + @${TANGLE} -R"HomogeneousDistributedMultivariatePolynomial.help" \ + ${IN}/gdpoly.spad.pamphlet \ + >${HELP}/HomogeneousDistributedMultivariatePolynomial.help + @cp ${HELP}/HomogeneousDistributedMultivariatePolynomial.help \ + ${HELP}/HDMP.help + @${TANGLE} -R"HomogeneousDistributedMultivariatePolynomial.input" \ + ${IN}/gdpoly.spad.pamphlet \ + >${INPUT}/HomogeneousDistributedMultivariatePolynomial.input + @ \section{The Makefile} diff --git a/src/algebra/carten.spad.pamphlet b/src/algebra/carten.spad.pamphlet index 5bcaa75..85f7027 100644 --- a/src/algebra/carten.spad.pamphlet +++ b/src/algebra/carten.spad.pamphlet @@ -574,7 +574,7 @@ contract(epsilon*Tm*epsilon, 1,2) = 2 * determinant m @ <>= ==================================================================== -CartesianTensor +CartesianTensor examples ==================================================================== CartesianTensor(i0,dim,R) provides Cartesian tensors with components diff --git a/src/algebra/cycles.spad.pamphlet b/src/algebra/cycles.spad.pamphlet index c831683..ccc8311 100644 --- a/src/algebra/cycles.spad.pamphlet +++ b/src/algebra/cycles.spad.pamphlet @@ -477,8 +477,8 @@ eval(Integers, sf3221) @ <>= ==================================================================== -\section{CycleIndicators} -\label{CycleIndicatorsXmpPage} +CycleIndicators examples +==================================================================== This section is based upon the paper J. H. Redfield, ``The Theory of Group-Reduced Distributions'', American J. Math.,49 (1927) 433-455, diff --git a/src/algebra/derham.spad.pamphlet b/src/algebra/derham.spad.pamphlet index 47d2db1..1055a99 100644 --- a/src/algebra/derham.spad.pamphlet +++ b/src/algebra/derham.spad.pamphlet @@ -637,7 +637,7 @@ gamma := alpha * beta @ <>= ==================================================================== -DeRhamComplex +DeRhamComplex examples ==================================================================== The domain constructor DeRhamComplex creates the class of differential diff --git a/src/algebra/gaussian.spad.pamphlet b/src/algebra/gaussian.spad.pamphlet index 744488b..d74aecc 100644 --- a/src/algebra/gaussian.spad.pamphlet +++ b/src/algebra/gaussian.spad.pamphlet @@ -688,7 +688,7 @@ factor complex(2,0) @ <>= ==================================================================== -Complex +Complex examples ==================================================================== The Complex constructor implements complex objects over a commutative diff --git a/src/algebra/gdpoly.spad.pamphlet b/src/algebra/gdpoly.spad.pamphlet index 6c3ae4f..dd3f68a 100644 --- a/src/algebra/gdpoly.spad.pamphlet +++ b/src/algebra/gdpoly.spad.pamphlet @@ -10,6 +10,216 @@ \tableofcontents \eject \section{domain GDMP GeneralDistributedMultivariatePolynomial} +<>= +-- gdpoly.spad.pamphlet GeneralDistributedMultivariatePolynomial.input +)spool GeneralDistributedMultivariatePolynomial.output +)set message test on +)set message auto off +)clear all +--S 1 of 10 +(d1,d2,d3) : DMP([z,y,x],FRAC INT) +--R +--R Type: Void +--E 1 + +--S 2 of 10 +d1 := -4*z + 4*y**2*x + 16*x**2 + 1 +--R +--R +--R 2 2 +--R (2) - 4z + 4y x + 16x + 1 +--R Type: DistributedMultivariatePolynomial([z,y,x],Fraction Integer) +--E 2 + +--S 3 of 10 +d2 := 2*z*y**2 + 4*x + 1 +--R +--R +--R 2 +--R (3) 2z y + 4x + 1 +--R Type: DistributedMultivariatePolynomial([z,y,x],Fraction Integer) +--E 3 + +--S 4 of 10 +d3 := 2*z*x**2 - 2*y**2 - x +--R +--R +--R 2 2 +--R (4) 2z x - 2y - x +--R Type: DistributedMultivariatePolynomial([z,y,x],Fraction Integer) +--E 4 + +--S 5 of 10 +groebner [d1,d2,d3] +--R +--R +--R (5) +--R 1568 6 1264 5 6 4 182 3 2047 2 103 2857 +--R [z - ---- x - ---- x + --- x + --- x - ---- x - ---- x - -----, +--R 2745 305 305 549 610 2745 10980 +--R 2 112 6 84 5 1264 4 13 3 84 2 1772 2 +--R y + ---- x - --- x - ---- x - --- x + --- x + ---- x + ----, +--R 2745 305 305 549 305 2745 2745 +--R 7 29 6 17 4 11 3 1 2 15 1 +--R x + -- x - -- x - -- x + -- x + -- x + -] +--R 4 16 8 32 16 4 +--R Type: List DistributedMultivariatePolynomial([z,y,x],Fraction Integer) +--E 5 + +--S 6 of 10 +(n1,n2,n3) : HDMP([z,y,x],FRAC INT) +--R +--R Type: Void +--E 6 + +--S 7 of 10 +n1 := d1 +--R +--R +--R 2 2 +--R (7) 4y x + 16x - 4z + 1 +--R Type: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer) +--E 7 + +--S 8 of 10 +n2 := d2 +--R +--R +--R 2 +--R (8) 2z y + 4x + 1 +--R Type: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer) +--E 8 + +--S 9 of 10 +n3 := d3 +--R +--R +--R 2 2 +--R (9) 2z x - 2y - x +--R Type: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer) +--E 9 + +--S 10 of 10 +groebner [n1,n2,n3] +--R +--R +--R (10) +--R 4 3 3 2 1 1 4 29 3 1 2 7 9 1 +--R [y + 2x - - x + - z - -, x + -- x - - y - - z x - -- x - -, +--R 2 2 8 4 8 4 16 4 +--R 2 1 2 2 1 2 2 1 +--R z y + 2x + -, y x + 4x - z + -, z x - y - - x, +--R 2 4 2 +--R 2 2 2 1 3 +--R z - 4y + 2x - - z - - x] +--R 4 2 +--RType: List HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer) +--E 10 +)spool +)lisp (bye) +@ + +<>= +==================================================================== +MultivariatePolynomial +DistributedMultivariatePolynomial +HomogeneousDistributedMultivariatePolynomial +GeneralDistributedMultivariatePolynomial +==================================================================== + +DistributedMultivariatePolynomial which is abbreviated as DMP and +HomogeneousDistributedMultivariatePolynomial, which is abbreviated +as HDMP, are very similar to MultivariatePolynomial except that +they are represented and displayed in a non-recursive manner. + + (d1,d2,d3) : DMP([z,y,x],FRAC INT) + Type: Void + +The constructor DMP orders its monomials lexicographically while +HDMP orders them by total order refined by reverse lexicographic +order. + + d1 := -4*z + 4*y**2*x + 16*x**2 + 1 + 2 2 + - 4z + 4y x + 16x + 1 + Type: DistributedMultivariatePolynomial([z,y,x],Fraction Integer) + + d2 := 2*z*y**2 + 4*x + 1 + 2 + 2z y + 4x + 1 + Type: DistributedMultivariatePolynomial([z,y,x],Fraction Integer) + + d3 := 2*z*x**2 - 2*y**2 - x + 2 2 + 2z x - 2y - x + Type: DistributedMultivariatePolynomial([z,y,x],Fraction Integer) + +These constructors are mostly used in Groebner basis calculations. + + groebner [d1,d2,d3] + 1568 6 1264 5 6 4 182 3 2047 2 103 2857 + [z - ---- x - ---- x + --- x + --- x - ---- x - ---- x - -----, + 2745 305 305 549 610 2745 10980 + 2 112 6 84 5 1264 4 13 3 84 2 1772 2 + y + ---- x - --- x - ---- x - --- x + --- x + ---- x + ----, + 2745 305 305 549 305 2745 2745 + 7 29 6 17 4 11 3 1 2 15 1 + x + -- x - -- x - -- x + -- x + -- x + -] + 4 16 8 32 16 4 + Type: List DistributedMultivariatePolynomial([z,y,x],Fraction Integer) + + (n1,n2,n3) : HDMP([z,y,x],FRAC INT) + Type: Void + + n1 := d1 + 2 2 + 4y x + 16x - 4z + 1 + Type: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer) + + n2 := d2 + 2 + 2z y + 4x + 1 + Type: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer) + + n3 := d3 + 2 2 + 2z x - 2y - x + Type: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer) + +Note that we get a different Groebner basis when we use the HDMP +polynomials, as expected. + + groebner [n1,n2,n3] + 4 3 3 2 1 1 4 29 3 1 2 7 9 1 + [y + 2x - - x + - z - -, x + -- x - - y - - z x - -- x - -, + 2 2 8 4 8 4 16 4 + 2 1 2 2 1 2 2 1 + z y + 2x + -, y x + 4x - z + -, z x - y - - x, + 2 4 2 + 2 2 2 1 3 + z - 4y + 2x - - z - - x] + 4 2 + Type: List HomogeneousDistributedMultivariatePolynomial([z,y,x], + Fraction Integer) + +GeneralDistributedMultivariatePolynomial is somewhat more flexible in +the sense that as well as accepting a list of variables to specify the +variable ordering, it also takes a predicate on exponent vectors to +specify the term ordering. With this polynomial type the user can +experiment with the effect of using completely arbitrary term orderings. +This flexibility is mostly important for algorithms such as Groebner +basis calculations which can be very sensitive to term ordering. + +See Also: +o )help Polynomial +o )help UnivariatePolynomial +o )help MultivariatePolynomial +o )help HomogeneousDistributedMultivariatePolynomial +o )help DistributedMultivariatePolynomial +o )show GeneralDistributedMultivariatePolynomial +o $AXIOM/doc/src/algebra/gdpoly.spad.dvi + +@ <>= )abbrev domain GDMP GeneralDistributedMultivariatePolynomial ++ Author: Barry Trager @@ -262,6 +472,216 @@ GeneralDistributedMultivariatePolynomial(vl,R,E): public == private where @ \section{domain DMP DistributedMultivariatePolynomial} +<>= +-- gdpoly.spad.pamphlet DistributedMultivariatePolynomial.input +)spool DistributedMultivariatePolynomial.output +)set message test on +)set message auto off +)clear all +--S 1 of 10 +(d1,d2,d3) : DMP([z,y,x],FRAC INT) +--R +--R Type: Void +--E 1 + +--S 2 of 10 +d1 := -4*z + 4*y**2*x + 16*x**2 + 1 +--R +--R +--R 2 2 +--R (2) - 4z + 4y x + 16x + 1 +--R Type: DistributedMultivariatePolynomial([z,y,x],Fraction Integer) +--E 2 + +--S 3 of 10 +d2 := 2*z*y**2 + 4*x + 1 +--R +--R +--R 2 +--R (3) 2z y + 4x + 1 +--R Type: DistributedMultivariatePolynomial([z,y,x],Fraction Integer) +--E 3 + +--S 4 of 10 +d3 := 2*z*x**2 - 2*y**2 - x +--R +--R +--R 2 2 +--R (4) 2z x - 2y - x +--R Type: DistributedMultivariatePolynomial([z,y,x],Fraction Integer) +--E 4 + +--S 5 of 10 +groebner [d1,d2,d3] +--R +--R +--R (5) +--R 1568 6 1264 5 6 4 182 3 2047 2 103 2857 +--R [z - ---- x - ---- x + --- x + --- x - ---- x - ---- x - -----, +--R 2745 305 305 549 610 2745 10980 +--R 2 112 6 84 5 1264 4 13 3 84 2 1772 2 +--R y + ---- x - --- x - ---- x - --- x + --- x + ---- x + ----, +--R 2745 305 305 549 305 2745 2745 +--R 7 29 6 17 4 11 3 1 2 15 1 +--R x + -- x - -- x - -- x + -- x + -- x + -] +--R 4 16 8 32 16 4 +--R Type: List DistributedMultivariatePolynomial([z,y,x],Fraction Integer) +--E 5 + +--S 6 of 10 +(n1,n2,n3) : HDMP([z,y,x],FRAC INT) +--R +--R Type: Void +--E 6 + +--S 7 of 10 +n1 := d1 +--R +--R +--R 2 2 +--R (7) 4y x + 16x - 4z + 1 +--R Type: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer) +--E 7 + +--S 8 of 10 +n2 := d2 +--R +--R +--R 2 +--R (8) 2z y + 4x + 1 +--R Type: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer) +--E 8 + +--S 9 of 10 +n3 := d3 +--R +--R +--R 2 2 +--R (9) 2z x - 2y - x +--R Type: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer) +--E 9 + +--S 10 of 10 +groebner [n1,n2,n3] +--R +--R +--R (10) +--R 4 3 3 2 1 1 4 29 3 1 2 7 9 1 +--R [y + 2x - - x + - z - -, x + -- x - - y - - z x - -- x - -, +--R 2 2 8 4 8 4 16 4 +--R 2 1 2 2 1 2 2 1 +--R z y + 2x + -, y x + 4x - z + -, z x - y - - x, +--R 2 4 2 +--R 2 2 2 1 3 +--R z - 4y + 2x - - z - - x] +--R 4 2 +--RType: List HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer) +--E 10 +)spool +)lisp (bye) +@ + +<>= +==================================================================== +MultivariatePolynomial +DistributedMultivariatePolynomial +HomogeneousDistributedMultivariatePolynomial +GeneralDistributedMultivariatePolynomial +==================================================================== + +DistributedMultivariatePolynomial which is abbreviated as DMP and +HomogeneousDistributedMultivariatePolynomial, which is abbreviated +as HDMP, are very similar to MultivariatePolynomial except that +they are represented and displayed in a non-recursive manner. + + (d1,d2,d3) : DMP([z,y,x],FRAC INT) + Type: Void + +The constructor DMP orders its monomials lexicographically while +HDMP orders them by total order refined by reverse lexicographic +order. + + d1 := -4*z + 4*y**2*x + 16*x**2 + 1 + 2 2 + - 4z + 4y x + 16x + 1 + Type: DistributedMultivariatePolynomial([z,y,x],Fraction Integer) + + d2 := 2*z*y**2 + 4*x + 1 + 2 + 2z y + 4x + 1 + Type: DistributedMultivariatePolynomial([z,y,x],Fraction Integer) + + d3 := 2*z*x**2 - 2*y**2 - x + 2 2 + 2z x - 2y - x + Type: DistributedMultivariatePolynomial([z,y,x],Fraction Integer) + +These constructors are mostly used in Groebner basis calculations. + + groebner [d1,d2,d3] + 1568 6 1264 5 6 4 182 3 2047 2 103 2857 + [z - ---- x - ---- x + --- x + --- x - ---- x - ---- x - -----, + 2745 305 305 549 610 2745 10980 + 2 112 6 84 5 1264 4 13 3 84 2 1772 2 + y + ---- x - --- x - ---- x - --- x + --- x + ---- x + ----, + 2745 305 305 549 305 2745 2745 + 7 29 6 17 4 11 3 1 2 15 1 + x + -- x - -- x - -- x + -- x + -- x + -] + 4 16 8 32 16 4 + Type: List DistributedMultivariatePolynomial([z,y,x],Fraction Integer) + + (n1,n2,n3) : HDMP([z,y,x],FRAC INT) + Type: Void + + n1 := d1 + 2 2 + 4y x + 16x - 4z + 1 + Type: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer) + + n2 := d2 + 2 + 2z y + 4x + 1 + Type: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer) + + n3 := d3 + 2 2 + 2z x - 2y - x + Type: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer) + +Note that we get a different Groebner basis when we use the HDMP +polynomials, as expected. + + groebner [n1,n2,n3] + 4 3 3 2 1 1 4 29 3 1 2 7 9 1 + [y + 2x - - x + - z - -, x + -- x - - y - - z x - -- x - -, + 2 2 8 4 8 4 16 4 + 2 1 2 2 1 2 2 1 + z y + 2x + -, y x + 4x - z + -, z x - y - - x, + 2 4 2 + 2 2 2 1 3 + z - 4y + 2x - - z - - x] + 4 2 + Type: List HomogeneousDistributedMultivariatePolynomial([z,y,x], + Fraction Integer) + +GeneralDistributedMultivariatePolynomial is somewhat more flexible in +the sense that as well as accepting a list of variables to specify the +variable ordering, it also takes a predicate on exponent vectors to +specify the term ordering. With this polynomial type the user can +experiment with the effect of using completely arbitrary term orderings. +This flexibility is mostly important for algorithms such as Groebner +basis calculations which can be very sensitive to term ordering. + +See Also: +o )help Polynomial +o )help UnivariatePolynomial +o )help MultivariatePolynomial +o )help HomogeneousDistributedMultivariatePolynomial +o )help GeneralDistributedMultivariatePolynomial +o )show DistributedMultivariatePolynomial +o $AXIOM/doc/src/algebra/gdpoly.spad.dvi + +@ <>= )abbrev domain DMP DistributedMultivariatePolynomial ++ Author: Barry Trager @@ -297,6 +717,216 @@ DistributedMultivariatePolynomial(vl,R): public == private where @ \section{domain HDMP HomogeneousDistributedMultivariatePolynomial} +<>= +-- gdpoly.spad.pamphlet HomogeneousDistributedMultivariatePolynomial.input +)spool HomogeneousDistributedMultivariatePolynomial.output +)set message test on +)set message auto off +)clear all +--S 1 of 10 +(d1,d2,d3) : DMP([z,y,x],FRAC INT) +--R +--R Type: Void +--E 1 + +--S 2 of 10 +d1 := -4*z + 4*y**2*x + 16*x**2 + 1 +--R +--R +--R 2 2 +--R (2) - 4z + 4y x + 16x + 1 +--R Type: DistributedMultivariatePolynomial([z,y,x],Fraction Integer) +--E 2 + +--S 3 of 10 +d2 := 2*z*y**2 + 4*x + 1 +--R +--R +--R 2 +--R (3) 2z y + 4x + 1 +--R Type: DistributedMultivariatePolynomial([z,y,x],Fraction Integer) +--E 3 + +--S 4 of 10 +d3 := 2*z*x**2 - 2*y**2 - x +--R +--R +--R 2 2 +--R (4) 2z x - 2y - x +--R Type: DistributedMultivariatePolynomial([z,y,x],Fraction Integer) +--E 4 + +--S 5 of 10 +groebner [d1,d2,d3] +--R +--R +--R (5) +--R 1568 6 1264 5 6 4 182 3 2047 2 103 2857 +--R [z - ---- x - ---- x + --- x + --- x - ---- x - ---- x - -----, +--R 2745 305 305 549 610 2745 10980 +--R 2 112 6 84 5 1264 4 13 3 84 2 1772 2 +--R y + ---- x - --- x - ---- x - --- x + --- x + ---- x + ----, +--R 2745 305 305 549 305 2745 2745 +--R 7 29 6 17 4 11 3 1 2 15 1 +--R x + -- x - -- x - -- x + -- x + -- x + -] +--R 4 16 8 32 16 4 +--R Type: List DistributedMultivariatePolynomial([z,y,x],Fraction Integer) +--E 5 + +--S 6 of 10 +(n1,n2,n3) : HDMP([z,y,x],FRAC INT) +--R +--R Type: Void +--E 6 + +--S 7 of 10 +n1 := d1 +--R +--R +--R 2 2 +--R (7) 4y x + 16x - 4z + 1 +--R Type: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer) +--E 7 + +--S 8 of 10 +n2 := d2 +--R +--R +--R 2 +--R (8) 2z y + 4x + 1 +--R Type: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer) +--E 8 + +--S 9 of 10 +n3 := d3 +--R +--R +--R 2 2 +--R (9) 2z x - 2y - x +--R Type: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer) +--E 9 + +--S 10 of 10 +groebner [n1,n2,n3] +--R +--R +--R (10) +--R 4 3 3 2 1 1 4 29 3 1 2 7 9 1 +--R [y + 2x - - x + - z - -, x + -- x - - y - - z x - -- x - -, +--R 2 2 8 4 8 4 16 4 +--R 2 1 2 2 1 2 2 1 +--R z y + 2x + -, y x + 4x - z + -, z x - y - - x, +--R 2 4 2 +--R 2 2 2 1 3 +--R z - 4y + 2x - - z - - x] +--R 4 2 +--RType: List HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer) +--E 10 +)spool +)lisp (bye) +@ + +<>= +==================================================================== +MultivariatePolynomial +DistributedMultivariatePolynomial +HomogeneousDistributedMultivariatePolynomial +GeneralDistributedMultivariatePolynomial +==================================================================== + +DistributedMultivariatePolynomial which is abbreviated as DMP and +HomogeneousDistributedMultivariatePolynomial, which is abbreviated +as HDMP, are very similar to MultivariatePolynomial except that +they are represented and displayed in a non-recursive manner. + + (d1,d2,d3) : DMP([z,y,x],FRAC INT) + Type: Void + +The constructor DMP orders its monomials lexicographically while +HDMP orders them by total order refined by reverse lexicographic +order. + + d1 := -4*z + 4*y**2*x + 16*x**2 + 1 + 2 2 + - 4z + 4y x + 16x + 1 + Type: DistributedMultivariatePolynomial([z,y,x],Fraction Integer) + + d2 := 2*z*y**2 + 4*x + 1 + 2 + 2z y + 4x + 1 + Type: DistributedMultivariatePolynomial([z,y,x],Fraction Integer) + + d3 := 2*z*x**2 - 2*y**2 - x + 2 2 + 2z x - 2y - x + Type: DistributedMultivariatePolynomial([z,y,x],Fraction Integer) + +These constructors are mostly used in Groebner basis calculations. + + groebner [d1,d2,d3] + 1568 6 1264 5 6 4 182 3 2047 2 103 2857 + [z - ---- x - ---- x + --- x + --- x - ---- x - ---- x - -----, + 2745 305 305 549 610 2745 10980 + 2 112 6 84 5 1264 4 13 3 84 2 1772 2 + y + ---- x - --- x - ---- x - --- x + --- x + ---- x + ----, + 2745 305 305 549 305 2745 2745 + 7 29 6 17 4 11 3 1 2 15 1 + x + -- x - -- x - -- x + -- x + -- x + -] + 4 16 8 32 16 4 + Type: List DistributedMultivariatePolynomial([z,y,x],Fraction Integer) + + (n1,n2,n3) : HDMP([z,y,x],FRAC INT) + Type: Void + + n1 := d1 + 2 2 + 4y x + 16x - 4z + 1 + Type: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer) + + n2 := d2 + 2 + 2z y + 4x + 1 + Type: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer) + + n3 := d3 + 2 2 + 2z x - 2y - x + Type: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer) + +Note that we get a different Groebner basis when we use the HDMP +polynomials, as expected. + + groebner [n1,n2,n3] + 4 3 3 2 1 1 4 29 3 1 2 7 9 1 + [y + 2x - - x + - z - -, x + -- x - - y - - z x - -- x - -, + 2 2 8 4 8 4 16 4 + 2 1 2 2 1 2 2 1 + z y + 2x + -, y x + 4x - z + -, z x - y - - x, + 2 4 2 + 2 2 2 1 3 + z - 4y + 2x - - z - - x] + 4 2 + Type: List HomogeneousDistributedMultivariatePolynomial([z,y,x], + Fraction Integer) + +GeneralDistributedMultivariatePolynomial is somewhat more flexible in +the sense that as well as accepting a list of variables to specify the +variable ordering, it also takes a predicate on exponent vectors to +specify the term ordering. With this polynomial type the user can +experiment with the effect of using completely arbitrary term orderings. +This flexibility is mostly important for algorithms such as Groebner +basis calculations which can be very sensitive to term ordering. + +See Also: +o )help Polynomial +o )help UnivariatePolynomial +o )help MultivariatePolynomial +o )help DistributedMultivariatePolynomial +o )help GeneralDistributedMultivariatePolynomial +o )show HomogeneousDistributedMultivariatePolynomial +o $AXIOM/doc/src/algebra/gdpoly.spad.dvi + +@ <>= )abbrev domain HDMP HomogeneousDistributedMultivariatePolynomial ++ Author: Barry Trager @@ -376,3 +1006,4 @@ HomogeneousDistributedMultivariatePolynomial(vl,R): public == private where \bibitem{1} nothing \end{thebibliography} \end{document} + diff --git a/src/algebra/sf.spad.pamphlet b/src/algebra/sf.spad.pamphlet index f8a13b3..8ed563d 100644 --- a/src/algebra/sf.spad.pamphlet +++ b/src/algebra/sf.spad.pamphlet @@ -770,6 +770,183 @@ complex number.) \end{quote} +<>= +-- sf.spad.pamphlet DoubleFloat.input +)spool DoubleFloat.output +)set message test on +)set message auto off +)clear all +--S 1 of 10 +2.71828 +--R +--R +--R (1) 2.71828 +--R Type: Float +--E 1 + +--S 2 of 10 +2.71828@DoubleFloat +--R +--R +--R (2) 2.71828 +--R Type: DoubleFloat +--E 2 + +--S 3 of 10 +2.71828 :: DoubleFloat +--R +--R +--R (3) 2.71828 +--R Type: DoubleFloat +--E 3 + +--S 4 of 10 +eApprox : DoubleFloat := 2.71828 +--R +--R +--R (4) 2.71828 +--R Type: DoubleFloat +--E 4 + +--S 5 of 10 +avg : List DoubleFloat -> DoubleFloat +--R +--R Type: Void +--E 5 + +--S 6 of 10 +avg l == + empty? l => 0 :: DoubleFloat + reduce(_+,l) / #l +--R +--R Type: Void +--E 6 + +--S 7 of 10 +avg [] +--R +--R Compiling function avg with type List DoubleFloat -> DoubleFloat +--R +--R (7) 0. +--R Type: DoubleFloat +--E 7 + +--S 8 of 10 +avg [3.4,9.7,-6.8] +--R +--R +--R (8) 2.1000000000000001 +--R Type: DoubleFloat +--E 8 + +--S 9 of 10 +cos(3.1415926)$DoubleFloat +--R +--R +--R (9) -0.99999999999999856 +--R Type: DoubleFloat +--E 9 + +--S 10 of 10 +cos(3.1415926 :: DoubleFloat) +--R +--R +--R (10) -0.99999999999999856 +--R Type: DoubleFloat +--E 10 +)spool +)lisp (bye) +@ + +<>= +==================================================================== +DoubleFloat examples +==================================================================== + +Axiom provides two kinds of floating point numbers. The domain Float +(abbreviation FLOAT) implements a model of arbitrary precision +floating point numbers. The domain DoubleFloat (abbreviation DFLOAT) +is intended to make available hardware floating point arithmetic in +Axiom. The actual model of floating point DoubleFloat that provides +is system-dependent. For example, on the IBM system 370 Axiom uses +IBM double precision which has fourteen hexadecimal digits of +precision or roughly sixteen decimal digits. Arbitrary precision +floats allow the user to specify the precision at which arithmetic +operations are computed. Although this is an attractive facility, it +comes at a cost. Arbitrary-precision floating-point arithmetic +typically takes twenty to two hundred times more time than hardware +floating point. + +The usual arithmetic and elementary functions are available for +DoubleFloat. By default, floating point numbers that you enter into +Axiom are of type Float. + + 2.71828 + 2.71828 + Type: Float + +You must therefore tell Axiom that you want to use DoubleFloat values +and operations. The following are some conservative guidelines for +getting Axiom to use DoubleFloat. + +To get a value of type DoubleFloat, use a target with @, ... + + 2.71828@DoubleFloat + 2.71828 + Type: DoubleFloat + +a conversion, ... + + 2.71828 :: DoubleFloat + 2.71828 + Type: DoubleFloat + +or an assignment to a declared variable. It is more efficient if you +use a target rather than an explicit or implicit conversion. + + eApprox : DoubleFloat := 2.71828 + 2.71828 + Type: DoubleFloat + +You also need to declare functions that work with DoubleFloat. + + avg : List DoubleFloat -> DoubleFloat + Type: Void + + avg l == + empty? l => 0 :: DoubleFloat + reduce(_+,l) / #l + Type: Void + + avg [] + 0. + Type: DoubleFloat + + avg [3.4,9.7,-6.8] + 2.1000000000000001 + Type: DoubleFloat + +Use package-calling for operations from DoubleFloat unless the +arguments themselves are already of type DoubleFloat. + + cos(3.1415926)$DoubleFloat + -0.99999999999999856 + Type: DoubleFloat + + cos(3.1415926 :: DoubleFloat) + -0.99999999999999856 + Type: DoubleFloat + +By far, the most common usage of DoubleFloat is for functions to be +graphed. + + +See Also: +0 )help Float +o )show DoubleFloat +o $AXIOM/doc/src/algebra/sf.spad.dvi + +@ <>= )abbrev domain DFLOAT DoubleFloat ++ Author: Michael Monagan diff --git a/src/algebra/table.spad.pamphlet b/src/algebra/table.spad.pamphlet index 4d07304..fc97720 100644 --- a/src/algebra/table.spad.pamphlet +++ b/src/algebra/table.spad.pamphlet @@ -115,6 +115,109 @@ Table(Key: SetCategory, Entry: SetCategory):Exports == Implementation where @ \section{domain EQTBL EqTable} +<>= +-- table.spad.pamphlet EqTable.input +)spool EqTable.output +)set message test on +)set message auto off +)clear all +--S 1 of 6 +e: EqTable(List Integer, Integer) := table() +--R +--R +--R (1) table() +--R Type: EqTable(List Integer,Integer) +--E 1 + +--S 2 of 6 +l1 := [1,2,3] +--R +--R +--R (2) [1,2,3] +--R Type: List PositiveInteger +--E 2 + +--S 3 of 6 +l2 := [1,2,3] +--R +--R +--R (3) [1,2,3] +--R Type: List PositiveInteger +--E 3 + +--S 4 of 6 +e.l1 := 111 +--R +--R +--R (4) 111 +--R Type: PositiveInteger +--E 4 + +--S 5 of 6 +e.l2 := 222 +--R +--R +--R (5) 222 +--R Type: PositiveInteger +--E 5 + +--S 6 of 6 +e.l1 +--R +--R +--R (6) 111 +--R Type: PositiveInteger +--E 6 +)spool +)lisp (bye) +@ +<>= +==================================================================== +EqTable examples +==================================================================== + +The EqTable domain provides tables where the keys are compared using +eq?. Keys are considered equal only if they are the same instance of +a structure. This is useful if the keys are themselves updatable +structures. Otherwise, all operations are the same as for type Table. + +The operation table is here used to create a table where the keys are +lists of integers. + + e: EqTable(List Integer, Integer) := table() + table() + Type: EqTable(List Integer,Integer) + +These two lists are equal according to =, but not according to eq?. + + l1 := [1,2,3] + [1,2,3] + Type: List PositiveInteger + + l2 := [1,2,3] + [1,2,3] + Type: List PositiveInteger +Because the two lists are not eq?, separate values can be stored under +each. + + e.l1 := 111 + 111 + Type: PositiveInteger + + e.l2 := 222 + 222 + Type: PositiveInteger + + e.l1 + 111 + Type: PositiveInteger + +See Also: +o )help Table +o )show EqTable +o $AXIOM/doc/src/algebra/table.spad.dvi + +@ <>= )abbrev domain EQTBL EqTable ++ Author: Stephen M. Watt diff --git a/src/doc/spadhelp.pamphlet b/src/doc/spadhelp.pamphlet index f0e163d..6e03ff3 100644 --- a/src/doc/spadhelp.pamphlet +++ b/src/doc/spadhelp.pamphlet @@ -1482,12 +1482,17 @@ syntax trace undo what while Available algebra help topics are: -AssociationList BalancedBinaryTree BasicOperator -BinaryExpansion BinarySearchTree CardinalNumber -CartesianTensor Character CharacterClass -CliffordAlgebra Complex ContinuedFraction -CycleIndicators DeRhamComplex DecimalExpansion - +AssociationList (ALIST) BalancedBinaryTree (BBTREE) +BasicOperator (BOP) BinaryExpansion (BINARY) +BinarySearchTree (BSTREE) CardinalNumber (CARD) +CartesianTensor (CARTEN) Character (CHAR) +CharacterClass (CCLASS) CliffordAlgebra (CLIF) +Complex (COMPLEX) ContinuedFraction (CONTFRAC) +CycleIndicators (CYCLES) DeRhamComplex (DERHAM) +DecimalExpansion (DECIMAL) DistributedMultivariatePolynomial (DMP) +DoubleFloat (DFLOAT) EqTable (EQTBL) +GeneralDistributedMultivariatePolynomial (GDMP) +HomogeneousDistributedMultivariatePolynomial (HDMP) @