$SPAD/src/input exprpoly.input

Timothy Daly December 3, 2016

Abstract

Contents

2

1 License

— license —

--Copyright The Numerical Algorithms Group Limited 1991.

———-

— * —

)set break resume
)spool exprpoly.output
)set message test on
)set message auto off
)clear all

———-

2 Expression Coercion

This file test coercing objects of type Expression to various polynomial types and back.

Start with a simple expression involving variables — * —

--S 1 of 20
a := sin(i)*x**2 - y*x*sin(j)
--R
--R
--R                        2
--R   (1)  - x y sin(j) + x sin(i)
--R                                                    Type: Expression(Integer)
--E 1

———-

Coerce it to various multivariate polynomial types — * —

--S 2 of 20
a :: DMP([x,y], EXPR INT)
--R
--R
--R               2
--R   (2)  sin(i)x  - sin(j)x y
--R           Type: DistributedMultivariatePolynomial([x,y],Expression(Integer))
--E 2
--S 3 of 20

leadingCoefficient %
--R
--R
--R   (3)  sin(i)
--R                                                    Type: Expression(Integer)
--E 3
--S 4 of 20
a :: HDMP([x,y], EXPR INT)
--R
--R
--R               2
--R   (4)  sin(i)x  - sin(j)x y
--RType: HomogeneousDistributedMultivariatePolynomial([x,y],Expression(Integer))
--E 4
--S 5 of 20
a :: MPOLY([x,y], EXPR INT)
--R
--R
--R               2
--R   (5)  sin(i)x  - sin(j)y x
--R                      Type: MultivariatePolynomial([x,y],Expression(Integer))
--E 5
--S 6 of 20
a :: MPOLY([y,x], EXPR INT)
--R
--R
--R                             2
--R   (6)  - sin(j)x y + sin(i)x
--R                      Type: MultivariatePolynomial([y,x],Expression(Integer))
--E 6

———-

Coerce it back to type Expression — * —

--S 7 of 20
% :: EXPR INT
--R
--R
--R                        2
--R   (7)  - x y sin(j) + x sin(i)
--R                                                    Type: Expression(Integer)
--E 7
--S 8 of 20
a - %

--R
--R
--R   (8)  0
--R                                                    Type: Expression(Integer)
--E 8

———-

Coerce the expression to various univariate polynomial types — * —

--S 9 of 20
a :: UP(x, EXPR INT)
--R
--R
--R               2
--R   (9)  sin(i)x  - y sin(j)x
--R                            Type: UnivariatePolynomial(x,Expression(Integer))
--E 9
--S 10 of 20
a :: UP(y, EXPR INT)
--R
--R
--R                        2
--R   (10)  - x sin(j)y + x sin(i)
--R                            Type: UnivariatePolynomial(y,Expression(Integer))
--E 10
--S 11 of 20
a :: UP(y, UP(x, EXPR INT))
--R
--R
--R                              2
--R   (11)  - sin(j)x y + sin(i)x
--R    Type: UnivariatePolynomial(y,UnivariatePolynomial(x,Expression(Integer)))
--E 11

———-

Coerce it back to type Expression — * —

--S 12 of 20
% :: EXPR INT
--R
--R
--R                         2
--R   (12)  - x y sin(j) + x sin(i)
--R                                                    Type: Expression(Integer)
--E 12

--S 13 of 20
a - %
--R
--R
--R   (13)  0
--R                                                    Type: Expression(Integer)
--E 13

———-

We needn’t have had such a complicated expression. The following is really just a multivariate polynomial.

— * —

--S 14 of 20
b : EXPR INT := (x - 2*y + 3*z)**3
--R
--R
--R   (14)
--R      3                 2       2             2       3        2     2     3
--R   27z  + (- 54y + 27x)z  + (36y  - 36x y + 9x )z - 8y  + 12x y  - 6x y + x
--R                                                    Type: Expression(Integer)
--E 14
--S 15 of 20
b :: DMP([x,y,z], Integer)
--R
--R
--R   (15)
--R    3     2      2         2                  2     3      2         2      3
--R   x  - 6x y + 9x z + 12x y  - 36x y z + 27x z  - 8y  + 36y z - 54y z  + 27z
--R                     Type: DistributedMultivariatePolynomial([x,y,z],Integer)
--E 15
--S 16 of 20
b :: HDMP([y,x,z], Integer)
--R
--R
--R   (16)
--R       3      2        2    3      2                2         2        2      3
--R   - 8y  + 12y x - 6y x  + x  + 36y z - 36y x z + 9x z - 54y z  + 27x z  + 27z
--R          Type: HomogeneousDistributedMultivariatePolynomial([y,x,z],Integer)
--E 16
--S 17 of 20
b - (% :: EXPR INT)
--R
--R
--R   (17)  0

--R                                                    Type: Expression(Integer)
--E 17
--S 18 of 20
b :: MPOLY([z,y,x], Integer)
--R
--R
--R   (18)
--R      3                 2       2             2       3        2     2     3
--R   27z  + (- 54y + 27x)z  + (36y  - 36x y + 9x )z - 8y  + 12x y  - 6x y + x
--R                                Type: MultivariatePolynomial([z,y,x],Integer)
--E 18
--S 19 of 20
b :: UP(y, HDMP([x,z], Integer))
--R
--R
--R   (19)
--R       3               2        2              2      3     2         2      3
--R   - 8y  + (12x + 36z)y  + (- 6x  - 36x z - 54z )y + x  + 9x z + 27x z  + 27z
--IType: UnivariatePolynomial(y,...
--E 19
--S 20 of 20
b - (% :: EXPR INT)
--R
--R
--R   (20)  0
--R                                                    Type: Expression(Integer)
--E 20
)spool
)lisp (bye)

———-

References^{[1] nothing}

8