$SPAD/src/input r21bugs.input

Mike Dewar, Barry Trager, and Timothy Daly

December 3, 2016

Abstract

Contents

2

1 License

— license —

--Copyright The Numerical Algorithms Group Limited 1991.

———-

— * —

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

———-

This file tests bugs fixed since release 2.1. – Mike Dewar 19-11-96

This bug, spotted by Claude Quitte, meant that we generated incorrect expressions for Chebyshev polynomials of the second kind, so that they did not satisfy the recurrence relation: U_{n}(x) − xU_{n−1}(x) = T_{n}(x)

— * —

--S 1 of 95
)set expose add constructor PolynomialNumberTheoryFunctions
--R
--R   PolynomialNumberTheoryFunctions is now explicitly exposed in frame
--R      initial
--E 1
--S 2 of 95
X : UP('x, Integer) := x
--R
--R
--R   (1)  x
--R                                        Type: UnivariatePolynomial(x,Integer)
--E 2
--S 3 of 95
[chebyshevU(n) - X*chebyshevU(n-1) - chebyshevT(n) for n in 1 .. ]
--R
--R
--R   (2)  [0,0,0,0,0,0,0,0,0,0,...]
--R                            Type: Stream(SparseUnivariatePolynomial(Integer))
--E 3
)clear completely
--S 4 of 95

Fp:=PF 2
--R
--R
--R   (1)  PrimeField(2)
--R                                                                 Type: Domain
--E 4
--S 5 of 95
poly:=createIrreduciblePoly(4)$FFPOLY(Fp)
--R
--R
--R         4
--R   (2)  ?  + ? + 1
--R                              Type: SparseUnivariatePolynomial(PrimeField(2))
--E 5
--S 6 of 95
Fq:=FFP(Fp, poly)    -- Field with 16 elements
--R
--R
--R   (3)  FiniteFieldExtensionByPolynomial(PrimeField(2),?^4+?+1)
--R                                                                 Type: Domain
--E 6
--S 7 of 95
R:=DMP([X,Y,Z],Fq)
--R
--R
--R   (4)
--R  DistributedMultivariatePolynomial([X,Y,Z],FiniteFieldExtensionByPolynomial(Pr
--R  imeField(2),?^4+?+1))
--R                                                                 Type: Domain
--E 7
--S 8 of 95
Q:=FRAC R
--R
--R
--R   (5)
--R  Fraction(DistributedMultivariatePolynomial([X,Y,Z],FiniteFieldExtensionByPoly
--R  nomial(PrimeField(2),?^4+?+1)))
--R                                                                 Type: Domain
--E 8
--S 9 of 95
F:=X**4+X*Z**3
--R
--R
--R           3    4
--R   (6)  X Z  + X

--R                                                    Type: Polynomial(Integer)
--E 9
--S 10 of 95
G:=X**4+X**2*Y**2+Z**4
--R
--R
--R         4    2 2    4
--R   (7)  Z  + X Y  + X
--R                                                    Type: Polynomial(Integer)
--E 10
--S 11 of 95
h:Q:=F/G
--R
--R
--R            4      3
--R           X  + X Z
--R   (8)  --------------
--R         4    2 2    4
--R        X  + X Y  + Z
--IType: Fraction(DistributedMultivariatePolynomial([X,Y,Z],...
--E 11
)clear completely
--S 12 of 95
squareFree ((c^15*e^8+c^23*d^4)::POLY PF 2)
--R
--R
--R         15  2    2  4
--R   (1)  c  (e  + c d)
--R                                    Type: Factored(Polynomial(PrimeField(2)))
--E 12
)clear completely
--S 13 of 95
FiniteFieldExtensionByPolynomial(FF(3,3),1+2*x**2+x**3)
--R
--R
--R   (1)  FiniteFieldExtensionByPolynomial(FiniteField(3,3),?^3+2*?^2+1)
--R                                                                 Type: Domain
--E 13
)clear completely
--S 14 of 95
Field has Ring
--R

--R
--R   (1)  true
--R                                                                Type: Boolean
--E 14
)clear completely
-- from bmt
--S 15 of 95
y:=operator y
--R
--R
--R   (1)  y
--R                                                          Type: BasicOperator
--E 15
--S 16 of 95
u:=operator u
--R
--R
--R   (2)  u
--R                                                          Type: BasicOperator
--E 16
--S 17 of 95
eval(y x, y, c[1]*x,x)
--R
--R   Compiling function %B with type Expression(Integer) -> Expression(
--R      Integer)
--R
--R   (3)  c x
--R         1
--R                                                    Type: Expression(Integer)
--E 17
--S 18 of 95
eval(y x, y, D(u t,t),t)
--R
--R   Compiling function %C with type Expression(Integer) -> Expression(
--R      Integer)
--R
--R         ,
--R   (4)  u (x)
--R
--R                                                    Type: Expression(Integer)
--E 18
--S 19 of 95
eval(y x ,y, integral(u t,t),t)
--R

--R   Compiling function %E with type Expression(Integer) -> Expression(
--R      Integer)
--R
--R           x
--R         ++
--R   (5)   |   u(%D)d%D
--R        ++
--R                                                    Type: Expression(Integer)
--E 19
--S 20 of 95
eval(y x ,y, integral(u z,z=z0..t),t)
--R
--R   Compiling function %F with type Expression(Integer) -> Expression(
--R      Integer)
--R
--R           x
--R         ++
--R   (6)   |   u(z)dz
--R        ++
--R        z0
--R                                                    Type: Expression(Integer)
--E 20
--S 21 of 95
eval(y x+D(y x,x), y, u t+ D(u t,t),t)
--R
--R   Compiling function %G with type Expression(Integer) -> Expression(
--R      Integer)
--R
--R         ,,        ,
--R   (7)  u  (x) + 2u (x) + u(x)
--R
--R                                                    Type: Expression(Integer)
--E 21
--S 22 of 95
eval(D(y x,x)+y(x),y,D(u x,x)+u(x),x)
--R
--R   Compiling function %H with type Expression(Integer) -> Expression(
--R      Integer)
--R
--R         ,,        ,
--R   (8)  u  (x) + 2u (x) + u(x)
--R
--R                                                    Type: Expression(Integer)
--E 22
)clear completely

-- from bmt
--S 23 of 95
ps:=x::TS FRAC INT
--R
--R
--R   (1)  x
--R                                        Type: TaylorSeries(Fraction(Integer))
--E 23
--S 24 of 95
D(ps,x) -- fails to find function
--R
--R
--R   (2)  1
--R                                        Type: TaylorSeries(Fraction(Integer))
--E 24
--S 25 of 95
D(ps,[x]) -- works
--R
--R
--R   (3)  1
--R                                        Type: TaylorSeries(Fraction(Integer))
--E 25
--S 26 of 95
D(ps,[y]) -- causes ccl to disappear (at least under windows)
--R
--R
--R   (4)  0
--R                                        Type: TaylorSeries(Fraction(Integer))
--E 26
)clear completely
-- from bmt
--S 27 of 95
T1:=3
--R
--R
--R   (1)  3
--R                                                        Type: PositiveInteger
--E 27
--S 28 of 95
a | a^2+1
--R
--R   Your statement has resulted in the following assignments and
--R      declaration:
--R

--R   SAEa := SimpleAlgebraicExtension(Fraction(Integer),UnivariatePolynomial(a,Fraction(Integer)),a^2+1)
--R   a : SAEa := a
--R
--R   (2)  a
--IType: SimpleAlgebraicExtension(Fraction(Integer),...
--E 28

———-

Gets an error while trying to display the type of the expression since it uses fortran code generation stuff which wants to use the variable name T1 for some other purpose

— * —

)clear completely
-- from bmt
--S 29 of 95
u1 := operator 'u1
--R
--R
--R   (1)  u1
--R                                                          Type: BasicOperator
--E 29
--S 30 of 95
u2 := operator 'u2
--R
--R
--R   (2)  u2
--R                                                          Type: BasicOperator
--E 30
--S 31 of 95
eq1 := D(u1(t),t,2) + 5*u1(t) = 2*u2(t)
--R
--R
--R          ,,
--R   (3)  u1  (t) + 5u1(t)= 2u2(t)
--R
--R                                          Type: Equation(Expression(Integer))
--E 31
--S 32 of 95
eq2 := D(u2(t),t,2) + 2*u2(t) = 2*u1(t)
--R
--R
--R          ,,
--R   (4)  u2  (t) + 2u2(t)= 2u1(t)
--R

--R                                          Type: Equation(Expression(Integer))
--E 32
--S 33 of 95
eq1/2
--R
--R
--R          ,,
--R        u1  (t) + 5u1(t)
--R
--R   (5)  ----------------= u2(t)
--R                2
--R                                          Type: Equation(Expression(Integer))
--E 33
--S 34 of 95
_rule(rhs %, lhs %)
--R
--R
--R                   ,,
--R                 u1  (t) + 5u1(t)
--R
--R   (6)  u2(t) == ----------------
--R                         2
--R                       Type: RewriteRule(Integer,Integer,Expression(Integer))
--E 34
--S 35 of 95
%(lhs eq2)
--R
--R
--R          (iv)         ,,
--R        u1    (t) + 7u1  (t) + 10u1(t)
--R
--R   (7)  ------------------------------
--R                       2
--R                                                    Type: Expression(Integer)
--E 35
--S 36 of 95
eval(%,t=0)
--R
--R
--R          (iv)         ,,
--R        u1    (0) + 7u1  (0) + 10u1(0)
--R
--R   (8)  ------------------------------
--R                       2
--R                                                    Type: Expression(Integer)
--E 36

)clear completely
-- from bmt
--S 37 of 95
bug := [exp(sqrt(-5))]
--R
--R
--R            +---+
--R           \|- 5
--R   (1)  [%e      ]
--R                                              Type: List(Expression(Integer))
--E 37
--S 38 of 95
complexForm(bug.1) -- works
--R
--R
--R             +-+         +-+
--R   (2)  cos(\|5 ) + sin(\|5 )%i
--R                                           Type: Complex(Expression(Integer))
--E 38
--S 39 of 95
map(complexForm,bug::List EXPR COMPLEX INT) -- works
--R
--R
--R              +-+         +-+
--R   (3)  [cos(\|5 ) + sin(\|5 )%i]
--R                                     Type: List(Complex(Expression(Integer)))
--E 39
--S 40 of 95
map(complexForm,bug) -- fails
--R
--R
--R              +-+         +-+
--R   (4)  [cos(\|5 ) + sin(\|5 )%i]
--R                                     Type: List(Complex(Expression(Integer)))
--E 40
)clear completely

-- from bmt
--S 41 of 95
f x == c[1]*exp(x)
--R
--R                                                                   Type: Void
--E 41

--S 42 of 95
f x -- works
--R
--R   Compiling function f with type Variable(x) -> Expression(Integer)
--R
--R            x
--R   (2)  c %e
--R         1
--R                                                    Type: Expression(Integer)
--E 42
--S 43 of 95
g(x:EXPR(INT)):EXPR(INT) == c[1]*exp(x)
--R
--R   Function declaration g : Expression(Integer) -> Expression(Integer)
--R      has been added to workspace.
--R                                                                   Type: Void
--E 43
--S 44 of 95
g x -- fails
--R
--R   There are no library operations named c
--R      Use HyperDoc Browse or issue
--R                                 )what op c
--R      to learn if there is any operation containing " c " in its name.
--R   Cannot find a definition or applicable library operation named c
--R      with argument type(s)
--R                            List(PositiveInteger)
--R
--R      Perhaps you should use "@" to indicate the required return type,
--R      or "$" to specify which version of the function you need.
--R   AXIOM will attempt to step through and interpret the code.
--R   Compiling function g with type Expression(Integer) -> Expression(
--R      Integer)
--R   There are no library operations named c
--R      Use HyperDoc Browse or issue
--R                                 )what op c
--R      to learn if there is any operation containing " c " in its name.
--R
--RDaly Bug
--R   Cannot find a definition or applicable library operation named c
--R      with argument type(s)
--R                            List(PositiveInteger)
--R
--R      Perhaps you should use "@" to indicate the required return type,
--R      or "$" to specify which version of the function you need.
--E 44

--S 45 of 95
g(x:EXPR(INT)):EXPR(INT) == (c[1]::EXPR INT)*exp(x)
--R
--R   Function declaration g : Expression(Integer) -> Expression(Integer)
--R      has been added to workspace.
--R   Compiled code for g has been cleared.
--R   1 old definition(s) deleted for function or rule g
--R                                                                   Type: Void
--E 45
--S 46 of 95
g x -- fails
--R
--R   Compiling function g with type Expression(Integer) -> Expression(
--R      Integer)
--R
--R            x
--R   (5)  c %e
--R         1
--R                                                    Type: Expression(Integer)
--E 46
)clear completely
-- from bmt
--S 47 of 95
a | a**8+a**4+a**3+a**2+(1::PF 2)
--R
--R   Your statement has resulted in the following assignments and
--R      declaration:
--R
--I   SAEa := SimpleAlgebraicExtension(PrimeField(2),...
--R   a : SAEa := a
--R
--R   (1)  a
--IType: SimpleAlgebraicExtension(PrimeField(2),...
--E 47
--S 48 of 95
tt:Matrix SAEa:=[_
[0,0,0,1,1,1,0,1],_
[1,0,0,0,0,0,0,0],_
[0,1,0,0,0,0,0,0],_
[0,0,1,0,0,0,0,0],_
[0,0,0,1,0,0,0,0],_
[0,0,0,0,1,0,0,0],_
[0,0,0,0,0,1,0,0],_
[0,0,0,0,0,0,1,0]];
--R
--R

--IType: Matrix(SimpleAlgebraicExtension(PrimeField(2),...
--E 48
--S 49 of 95
T:=transpose tt
--R
--R
--R        +0  1  0  0  0  0  0  0+
--R        |                      |
--R        |0  0  1  0  0  0  0  0|
--R        |                      |
--R        |0  0  0  1  0  0  0  0|
--R        |                      |
--R        |1  0  0  0  1  0  0  0|
--R   (3)  |                      |
--R        |1  0  0  0  0  1  0  0|
--R        |                      |
--R        |1  0  0  0  0  0  1  0|
--R        |                      |
--R        |0  0  0  0  0  0  0  1|
--R        |                      |
--R        +1  0  0  0  0  0  0  0+
--IType: Matrix(SimpleAlgebraicExtension(PrimeField(2),...
--E 49
--S 50 of 95
T0:=T**91
--R
--R
--R        +0  1  1  1  0  1  0  1+
--R        |                      |
--R        |1  0  1  1  1  0  1  0|
--R        |                      |
--R        |0  1  0  1  1  1  0  1|
--R        |                      |
--R        |0  0  1  0  1  1  1  0|
--R   (4)  |                      |
--R        |0  1  1  0  0  0  1  0|
--R        |                      |
--R        |0  1  0  0  0  1  0  0|
--R        |                      |
--R        |1  1  0  1  0  1  1  1|
--R        |                      |
--R        +1  1  1  0  1  0  1  1+
--IType: Matrix(SimpleAlgebraicExtension(PrimeField(2),...
--E 50
--S 51 of 95
T1:=T**95
--R

--R
--R        +0  0  0  1  0  1  1  1+
--R        |                      |
--R        |1  0  0  0  1  0  1  1|
--R        |                      |
--R        |0  1  0  0  0  1  0  1|
--R        |                      |
--R        |0  0  1  0  0  0  1  0|
--R   (5)  |                      |
--R        |0  0  0  0  0  1  1  0|
--R        |                      |
--R        |1  0  0  1  0  1  0  0|
--R        |                      |
--R        |0  1  0  1  1  1  0  1|
--R        |                      |
--R        +0  0  1  0  1  1  1  0+
--IType: Matrix(SimpleAlgebraicExtension(PrimeField(2),...
--E 51
)clear completely
-- from bmt
--S 52 of 95
u1:=operator 'u1
--R
--R
--R   (1)  u1
--R                                                          Type: BasicOperator
--E 52
--S 53 of 95
u2:=operator 'u2
--R
--R
--R   (2)  u2
--R                                                          Type: BasicOperator
--E 53
--S 54 of 95
eq1 := D(u1(t),t,2) + 5*u1(t) = 2*u2(t)
--R
--R
--R          ,,
--R   (3)  u1  (t) + 5u1(t)= 2u2(t)
--R
--R                                          Type: Equation(Expression(Integer))
--E 54
--S 55 of 95
eq2 := D(u2(t),t,2) + 2*u2(t) = 2*u1(t)

--R
--R
--R          ,,
--R   (4)  u2  (t) + 2u2(t)= 2u1(t)
--R
--R                                          Type: Equation(Expression(Integer))
--E 55
--S 56 of 95
eq1/2
--R
--R
--R          ,,
--R        u1  (t) + 5u1(t)
--R
--R   (5)  ----------------= u2(t)
--R                2
--R                                          Type: Equation(Expression(Integer))
--E 56
--S 57 of 95
_rule(rhs %, lhs %)
--R
--R
--R                   ,,
--R                 u1  (t) + 5u1(t)
--R
--R   (6)  u2(t) == ----------------
--R                         2
--R                       Type: RewriteRule(Integer,Integer,Expression(Integer))
--E 57
--S 58 of 95
%(lhs eq2)=%(rhs eq2)
--R
--R
--R          (iv)         ,,
--R        u1    (t) + 7u1  (t) + 10u1(t)
--R
--R   (7)  ------------------------------= 2u1(t)
--R                       2
--R                                          Type: Equation(Expression(Integer))
--E 58
--S 59 of 95
rightZero %
--R
--R
--R          (iv)         ,,
--R        u1    (t) + 7u1  (t) + 6u1(t)

--R
--R   (8)  -----------------------------= 0
--R                      2
--R                                          Type: Equation(Expression(Integer))
--E 59
--S 60 of 95
-2*%
--R
--R
--R            (iv)         ,,
--R   (9)  - u1    (t) - 7u1  (t) - 6u1(t)= 0
--R
--R                                          Type: Equation(Expression(Integer))
--E 60
--S 61 of 95
eval(lhs %,u1,exp(r*t),t)
--R
--R   Compiling function %B with type Expression(Integer) -> Expression(
--R      Integer)
--R
--R             4     2       r t
--R   (10)  (- r  - 7r  - 6)%e
--R                                                    Type: Expression(Integer)
--E 61
--S 62 of 95
%/exp(r*t)
--R
--R
--R            4     2
--R   (11)  - r  - 7r  - 6
--R                                                    Type: Expression(Integer)
--E 62
--S 63 of 95
solve(%,r)
--R
--R
--R              +---+       +---+     +---+       +---+
--R   (12)  [r= \|- 1 ,r= - \|- 1 ,r= \|- 6 ,r= - \|- 6 ]
--R                                    Type: List(Equation(Expression(Integer)))
--E 63
--S 64 of 95
[eval(exp(r*t),eq) for eq in %]
--R
--R
--R              +---+       +---+     +---+       +---+

--R            t\|- 1    - t\|- 1    t\|- 6    - t\|- 6
--R   (13)  [%e       ,%e         ,%e       ,%e         ]
--R                                              Type: List(Expression(Integer))
--E 64
--S 65 of 95
map(complexForm, %::List EXPR COMPLEX INT)
--R
--R
--R   (14)
--R                                                +-+          +-+
--R   [cos(t) + sin(t)%i, cos(t) - sin(t)%i, cos(t\|6 ) + sin(t\|6 )%i,
--R          +-+          +-+
--R    cos(t\|6 ) - sin(t\|6 )%i]
--R                                     Type: List(Complex(Expression(Integer)))
--E 65
--S 66 of 95
[real %(1), imag %(1), real %(3), imag %(3)]
--R
--R
--R                              +-+        +-+
--R   (15)  [cos(t),sin(t),cos(t\|6 ),sin(t\|6 )]
--R                                              Type: List(Expression(Integer))
--E 66
--S 67 of 95
gform:= u1(t)=reduce(+, [c[i]*%.i for i in 1..#%])
--R
--R
--R                        +-+                       +-+
--R   (16)  u1(t)= c sin(t\|6 ) + c sin(t) + c cos(t\|6 ) + c cos(t)
--R                 4              2          3              1
--R                                          Type: Equation(Expression(Integer))
--E 67
--S 68 of 95
_rule(lhs %, rhs %)
--R
--R
--R                          +-+                       +-+
--R   (17)  u1(t) == c sin(t\|6 ) + c sin(t) + c cos(t\|6 ) + c cos(t)
--R                   4              2          3              1
--R                       Type: RewriteRule(Integer,Integer,Expression(Integer))
--E 68
--S 69 of 95
%(lhs eq1)=rhs eq1
--R
--R

--R                   +-+                        +-+
--R   (18)  - c sin(t\|6 ) + 4c sin(t) - c cos(t\|6 ) + 4c cos(t)= 2u2(t)
--R            4               2          3               1
--R                                          Type: Equation(Expression(Integer))
--E 69
--S 70 of 95
%/2
--R
--R
--R                   +-+                        +-+
--R         - c sin(t\|6 ) + 4c sin(t) - c cos(t\|6 ) + 4c cos(t)
--R            4               2          3               1
--R   (19)  -----------------------------------------------------= u2(t)
--R                                   2
--R                                          Type: Equation(Expression(Integer))
--E 70
--part c
--S 71 of 95
inits := [u1(0)=1, eval(D(u1 t,t),t=0)=0, u2(0)=2, eval(D(u2 t,t),t=0)=0]
--R
--R
--R                     ,                  ,
--R   (20)  [u1(0)= 1,u1 (0)= 0,u2(0)= 2,u2 (0)= 0]
--R
--R                                    Type: List(Equation(Expression(Integer)))
--E 71
--S 72 of 95
eqq := eq1-5*u1(t)
--R
--R
--R           ,,
--R   (21)  u1  (t)= 2u2(t) - 5u1(t)
--R
--R                                          Type: Equation(Expression(Integer))
--E 72
--S 73 of 95
eval(eqq,t=0)
--R
--R
--R           ,,
--R   (22)  u1  (0)= 2u2(0) - 5u1(0)
--R
--R                                          Type: Equation(Expression(Integer))
--E 73
--S 74 of 95

eval(%,inits)
--R
--R
--R           ,,
--R   (23)  u1  (0)= - 1
--R
--R                                          Type: Equation(Expression(Integer))
--E 74
--S 75 of 95
inits:=cons(%,inits)
--R
--R
--R            ,,                    ,                  ,
--R   (24)  [u1  (0)= - 1,u1(0)= 1,u1 (0)= 0,u2(0)= 2,u2 (0)= 0]
--R
--R                                    Type: List(Equation(Expression(Integer)))
--E 75
--S 76 of 95
D(eqq,t)
--R
--R
--R           ,,,        ,         ,
--R   (25)  u1   (t)= 2u2 (t) - 5u1 (t)
--R
--R                                          Type: Equation(Expression(Integer))
--E 76
--S 77 of 95
eval(%,t=0)
--R
--R
--R           ,,,        ,         ,
--R   (26)  u1   (0)= 2u2 (0) - 5u1 (0)
--R
--R                                          Type: Equation(Expression(Integer))
--E 77
)clear completely
-- from bmt
--S 78 of 95
u:=operator 'u
--R
--R
--R   (1)  u
--R                                                          Type: BasicOperator
--E 78

--S 79 of 95
exp:=D(u t,t)
--R
--R
--R         ,
--R   (2)  u (t)
--R
--R                                                    Type: Expression(Integer)
--E 79
--S 80 of 95
k:=kernels(exp).1
--R
--R
--R         ,
--R   (3)  u (t)
--R
--R                                            Type: Kernel(Expression(Integer))
--E 80
--S 81 of 95
l:=argument %
--R
--R
--R   (4)  [u(%%01),%%01,t]
--R                                              Type: List(Expression(Integer))
--E 81
--S 82 of 95
difop:=operator k
--R
--R
--R   (5)  %diff
--R                                                          Type: BasicOperator
--E 82
--S 83 of 95
l2:=[l.1+l.2,l.2,l.3]
--R
--R
--R   (6)  [u(%%01) + %%01,%%01,t]
--R                                              Type: List(Expression(Integer))
--E 83
--S 84 of 95
bug:=evaluate(difop,l2)
--R
--R
--R         ,
--R   (7)  u (t) + 1

--R
--R                                         Type: Union(Expression(Integer),...)
--E 84
--S 85 of 95
kernels(bug).1
--R
--R
--R         ,
--R   (8)  u (t)
--R
--R                                            Type: Kernel(Expression(Integer))
--E 85
--S 86 of 95
argument %
--R
--R
--R   (9)  [u(%%01),%%01,t]
--R                                              Type: List(Expression(Integer))
--E 86
--S 87 of 95
eval(bug,t=0)
--R
--R
--R          ,
--R   (10)  u (0) + 1
--R
--R                                                    Type: Expression(Integer)
--E 87
)clear completely
--S 88 of 95
R := Polynomial(PrimeField(3)) ;
--R
--R
--R                                                                 Type: Domain
--E 88
--S 89 of 95
A := UP('X, R)
--R
--R
--R   (2)  UnivariatePolynomial(X,Polynomial(PrimeField(3)))
--R                                                                 Type: Domain
--E 89
--S 90 of 95

X : A := monomial(1, 1) ;
--R
--R
--R                      Type: UnivariatePolynomial(X,Polynomial(PrimeField(3)))
--E 90
--S 91 of 95
f : A := a*X^3 + b*X^2 + c*X + d
--R
--R
--R           3      2
--R   (4)  a X  + b X  + c X + d
--R                      Type: UnivariatePolynomial(X,Polynomial(PrimeField(3)))
--E 91
--S 92 of 95
discriminant(f)
--R
--R
--R          3        3    2 2
--R   (5)  2b d + 2a c  + b c
--R                                              Type: Polynomial(PrimeField(3))
--E 92
--S 93 of 95
s := differentiate f
--R
--R
--R   (6)  2b X + c
--R                      Type: UnivariatePolynomial(X,Polynomial(PrimeField(3)))
--E 93
--S 94 of 95
resultant(f,s)
--R
--R
--R         3       3     2 2
--R   (7)  b d + a c  + 2b c
--R                                              Type: Polynomial(PrimeField(3))
--E 94
--S 95 of 95
exquo(%,leadingCoefficient(f))
--R
--R
--R   (8)  "failed"
--R                                                    Type: Union("failed",...)
--E 95
)spool
)lisp (bye)

———- 24

References^{[1] nothing}

25