[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
var
:: Main variable (indeterminate) of rat.
indeterminate
rational expression
x
, y
, z
, u
, v
, w
, p
, q
,
r
, s
, t
, a
, b
, c
, d
, e
,
f
, g
, h
, i
, j
, k
, l
, m
,
n
, o
. The other variables will be ordered after the above noted variables
so that the first comer will be ordered prior to the followers.
[0] var(x^2+y^2+a^2); x [1] var(a*b*c*d*e); a [2] var(3/abc+2*xy/efg); abc
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
vars
:: A list of variables (indeterminates) in an expression obj.
list
arbitrary
[0] vars(x^2+y^2+a^2); [x,y,a] [1] vars(3/abc+2*xy/efg); [abc,xy,efg] [2] vars([x,y,z]); [x,y,z]
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
uc
:: Create a new indeterminate for an undermined coeficient.
indeterminate with its vtype
1.
uc()
, a new indeterminate in
the sequence of indeterminates _0
, _1
, _2
, …
is created successively.
uc()
cannot be input on the keyboard.
By this property, you are free, no matter how many indeterminates you
will create dynamically by a program, from collision of created names
with indeterminates input from the keyboard or from program files.
rtostr()
and strtov()
, are used to create
ordinary indeterminates (indeterminates having 0 for their vtype
).
uc()
is 1.
(vtype(uc())
=1)
[0] A=uc(); _0 [1] B=uc(); _1 [2] (uc()+uc())^2; _2^2+2*_3*_2+_3^2 [3] (A+B)^2; _0^2+2*_1*_0+_1^2
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
coef
:: The coefficient of a polynomial poly at degree deg with respect to the variable var (main variable if unspecified).
polynomial
polynomial
indeterminate
non-negative integer
[0] A = (x+y+z)^3; x^3+(3*y+3*z)*x^2+(3*y^2+6*z*y+3*z^2)*x+y^3+3*z*y^2+3*z^2*y+z^3 [1] coef(A,1,y); 3*x^2+6*z*x+3*z^2 [2] coef(A,0); y^3+3*z*y^2+3*z^2*y+z^3
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
deg
, mindeg
:: The degree of a polynomial poly with respect to variable.
:: The least exponent of the terms with non-zero coefficients in a polynomial poly with respect to the variable var. In this manual, this quantity is sometimes referred to the minimum degree of a polynomial for short.
non-negative integer
polynomial
indeterminate
[0] deg((x+y+z)^10,x); 10 [1] deg((x+y+z)^10,w); 0 [75] mindeg(x^2+3*x*y,x); 1
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
nmono
:: Number of monomials in rational expression rat.
non-negative integer
rational expression
[0] nmono((x+y)^10); 11 [1] nmono((x+y)^10/(x+z)^10); 22 [2] nmono(sin((x+y)^10)); 1
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ord
:: It sets the ordering of indeterminates (variables).
list of indeterminates
list of indeterminates
[0] ord(); [x,y,z,u,v,w,p,q,r,s,t,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,_x,_y,_z,_u,_v, _w,_p,_q,_r,_s,_t,_a,_b,_c,_d,_e,_f,_g,_h,_i,_j,_k,_l,_m,_n,_o, exp(_x),(_x)^(_y),log(_x),(_x)^(_y-1),cos(_x),sin(_x),tan(_x), (-_x^2+1)^(-1/2),cosh(_x),sinh(_x),tanh(_x), (_x^2+1)^(-1/2),(_x^2-1)^(-1/2)] [1] ord([dx,dy,dz,a,b,c]); [dx,dy,dz,a,b,c,x,y,z,u,v,w,p,q,r,s,t,d,e,f,g,h,i,j,k,l,m,n,o,_x,_y, _z,_u,_v,_w,_p,_q,_r,_s,_t,_a,_b,_c,_d,_e,_f,_g,_h,_i,_j,_k,_l,_m,_n, _o,exp(_x),(_x)^(_y),log(_x),(_x)^(_y-1),cos(_x),sin(_x),tan(_x), (-_x^2+1)^(-1/2),cosh(_x),sinh(_x),tanh(_x), (_x^2+1)^(-1/2),(_x^2-1)^(-1/2)]
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
sdiv
, sdivm
, srem
, sremm
, sqr
, sqrm
:: Quotient of poly1 divided by poly2 provided that the division can be performed within polynomial arithmetic over the rationals.
:: Remainder of poly1 divided by poly2 provided that the division can be performed within polynomial arithmetic over the rationals.
:: Quotient and remainder of poly1 divided by poly2 provided that the division can be performed within polynomial arithmetic over the rationals.
sdiv()
, sdivm()
, srem()
, sremm()
: polynomial sqr()
, sqrm()
: a list [quotient,remainder]
polynomial
indeterminate
prime
sdiv()
and
srem()
compute
the polynomial quotient and remainder of poly1 divided by poly2.
sdivm()
, sremm()
, sqrm()
execute the same
operation over GF(mod).
sqr()
to get both the quotient and remainder at once.
idiv()
, irem()
for integer quotient.
%
.
[0] sdiv((x+y+z)^3,x^2+y+a); x+3*y+3*z [1] srem((x+y+z)^2,x^2+y+a); (2*y+2*z)*x+y^2+(2*z-1)*y+z^2-a [2] X=(x+y+z)*(x-y-z)^2; x^3+(-y-z)*x^2+(-y^2-2*z*y-z^2)*x+y^3+3*z*y^2+3*z^2*y+z^3 [3] Y=(x+y+z)^2*(x-y-z); x^3+(y+z)*x^2+(-y^2-2*z*y-z^2)*x-y^3-3*z*y^2-3*z^2*y-z^3 [4] G=gcd(X,Y); x^2-y^2-2*z*y-z^2 [5] sqr(X,G); [x-y-z,0] [6] sqr(Y,G); [x+y+z,0] [7] sdiv(y*x^3+x+1,y*x+1); divsp: cannot happen return to toplevel
idiv
, irem
, %
.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
tdiv
:: Tests whether poly2 divides poly1.
Quotient if poly2 divides poly1, 0 otherwise.
polynomial
tdiv()
to the polynomials repeatedly yields the multiplicity.
[11] Y=(x+y+z)^5*(x-y-z)^3; x^8+(2*y+2*z)*x^7+(-2*y^2-4*z*y-2*z^2)*x^6 +(-6*y^3-18*z*y^2-18*z^2*y-6*z^3)*x^5 +(6*y^5+30*z*y^4+60*z^2*y^3+60*z^3*y^2+30*z^4*y+6*z^5)*x^3 +(2*y^6+12*z*y^5+30*z^2*y^4+40*z^3*y^3+30*z^4*y^2+12*z^5*y+2*z^6)*x^2 +(-2*y^7-14*z*y^6-42*z^2*y^5-70*z^3*y^4-70*z^4*y^3-42*z^5*y^2 -14*z^6*y-2*z^7)*x-y^8-8*z*y^7-28*z^2*y^6-56*z^3*y^5-70*z^4*y^4 -56*z^5*y^3-28*z^6*y^2-8*z^7*y-z^8 [12] for(I=0,F=x+y+z,T=Y; T=tdiv(T,F); I++); [13] I; 5
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
%
:: integer remainder to all integer coefficients of the polynomial.
integer or polynomial
integer or polynomial with integer coefficients
intger
irem()
except that the result is normalized to
a non-negative integer.
[0] (x+2)^5 % 3; x^5+x^4+x^3+2*x^2+2*x+2 [1] (x-2)^5 % 3; x^5+2*x^4+x^3+x^2+2*x+1 [2] (-5) % 4; 3 [3] irem(-5,4); -1
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
subst
, psubst
:: Substitute ratn for varn in expression rat. (n=1,2,…. Substitution will be done successively from left to right if arguments are repeated.)
rational expression
rational expression
indeterminate
subst()
performs
substitution at all levels of a scalar algebraic expression creeping
into arguments of function forms recursively.
Function psubst()
regards such a function form as an independent
indeterminate, and does not attempt to apply substitution to its
arguments. (The name comes after Partial SUBSTitution.)
[0] subst(x^3-3*y*x^2+3*y^2*x-y^3,y,2); x^3-6*x^2+12*x-8 [1] subst(@@,x,-1); -27 [2] subst(x^3-3*y*x^2+3*y^2*x-y^3,y,2,x,-1); -27 [3] subst(x*y^3,x,y,y,x); x^4 [4] subst(x*y^3,y,x,x,y); y^4 [5] subst(x*y^3,x,t,y,x,t,y); y*x^3 [6] subst(x*sin(x),x,t); sint(t)*t [7] psubst(x*sin(x),x,t); sin(x)*t
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
diff
:: Differentiate rat successively by var’s for the first form, or by variables in varlist for the second form.
expression
rational expression which contains elementary functions.
indeterminate
list of indeterminates
[0] diff((x+2*y)^2,x); 2*x+4*y [1] diff((x+2*y)^2,x,y); 4 [2] diff(x/sin(log(x)+1),x); (sin(log(x)+1)-cos(log(x)+1))/(sin(log(x)+1)^2) [3] diff(sin(x),[x,x,x,x]); sin(x)
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ediff
:: Differentiate poly successively by Euler operators of var’s for the first form, or by Euler operators of variables in varlist for the second form.
polynomial
polynomial
indeterminate
list of indeterminates
[0] ediff((x+2*y)^2,x); 2*x^2+4*y*x [1] ediff((x+2*y)^2,x,y); 4*y*x
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
res
:: Resultant of poly1 and poly2 with respect to var.
polynomial
indeterminate
polynomial
prime
[0] res(t,(t^3+1)*x+1,(t^3+1)*y+t); -x^3-x^2-y^3
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
fctr
, sqfr
:: Factorize polynomial poly over the rationals.
:: Gets a square-free factorization of polynomial poly.
list
polynomial with rational coefficients
fctr()
for irreducible factorization;
sqfr()
for square-free factorization.
[[num,1],[factor,multiplicity],...].
ptozp
.)
[0] fctr(x^10-1); [[1,1],[x-1,1],[x+1,1],[x^4+x^3+x^2+x+1,1],[x^4-x^3+x^2-x+1,1]] [1] fctr(x^3+y^3+(z/3)^3-x*y*z); [[1/27,1],[9*x^2+(-9*y-3*z)*x+9*y^2-3*z*y+z^2,1],[3*x+3*y+z,1]] [2] A=(a+b+c+d)^2; a^2+(2*b+2*c+2*d)*a+b^2+(2*c+2*d)*b+c^2+2*d*c+d^2 [3] fctr(A); [[1,1],[a+b+c+d,2]] [4] A=(x+1)*(x^2-y^2)^2; x^5+x^4-2*y^2*x^3-2*y^2*x^2+y^4*x+y^4 [5] sqfr(A); [[1,1],[x+1,1],[-x^2+y^2,2]] [6] fctr(A); [[1,1],[x+1,1],[-x-y,2],[x-y,2]]
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ufctrhint
:: Factorizes uni-variate polynomial poly over the rational number field when the degrees of its factors are known to be some integer multiples of hint.
list
uni-variate polynomial with rational coefficients
non-negative integer
fctr()
.
ufctrhint()
is the same as fctr()
for
uni-variate polynomials.
An typical application where ufctrhint()
is effective:
Consider the case where poly is a norm (Algebraic numbers)
of a certain polynomial over an extension field with its extension
degree d, and it is square free; Then, every irreducible factor
has a degree that is a multiple of d.
[10] A=t^9-15*t^6-87*t^3-125; t^9-15*t^6-87*t^3-125 0msec [11] N=res(t,subst(A,t,x-2*t),A); -x^81+1215*x^78-567405*x^75+139519665*x^72-19360343142*x^69 +1720634125410*x^66-88249977024390*x^63-4856095669551930*x^60 +1999385245240571421*x^57-15579689952590251515*x^54 +15956967531741971462865*x^51 ... +140395588720353973535526123612661444550659875*x^6 +10122324287343155430042768923500799484375*x^3 +139262743444407310133459021182733314453125 980msec + gc : 250msec [12] sqfr(N); [[-1,1],[x^81-1215*x^78+567405*x^75-139519665*x^72+19360343142*x^69 -1720634125410*x^66+88249977024390*x^63+4856095669551930*x^60 -1999385245240571421*x^57+15579689952590251515*x^54 ... -10122324287343155430042768923500799484375*x^3 -139262743444407310133459021182733314453125,1]] 20msec [13] fctr(N); [[-1,1],[x^9-405*x^6-63423*x^3-2460375,1], [x^18-486*x^15+98739*x^12-9316620*x^9+945468531*x^6-12368049246*x^3 +296607516309,1],[x^18-8667*x^12+19842651*x^6+19683,1], [x^18-324*x^15+44469*x^12-1180980*x^9+427455711*x^6+2793253896*x^3 +31524548679,1], [x^18+10773*x^12+2784051*x^6+307546875,1]] 167.050sec + gc : 1.890sec [14] ufctrhint(N,9); [[-1,1],[x^9-405*x^6-63423*x^3-2460375,1], [x^18-486*x^15+98739*x^12-9316620*x^9+945468531*x^6-12368049246*x^3 +296607516309,1],[x^18-8667*x^12+19842651*x^6+19683,1], [x^18-324*x^15+44469*x^12-1180980*x^9+427455711*x^6+2793253896*x^3 +31524548679,1], [x^18+10773*x^12+2784051*x^6+307546875,1]] 119.340sec + gc : 1.300sec
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
modfctr
:: Factorizer over small finite fields
list
Polynomial with integer coefficients
non-negative integer
[[num,1],[factor,multiplicity],...].
fctr_ff
(see section Finite fields,fctr_ff
).
[0] modfctr(x^10+x^2+1,2147483647); [[1,1],[x+1513477736,1],[x+2055628767,1],[x+91854880,1], [x+634005911,1],[x+1513477735,1],[x+634005912,1], [x^4+1759639395*x^2+2045307031,1]] [1] modfctr(2*x^6+(y^2+z*y)*x^4+2*z*y^3*x^2+(2*z^2*y^2+z^3*y)*x+z^4,3); [[2,1],[2*x^3+z*y*x+z^2,1],[2*x^3+y^2*x+2*z^2,1]]
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ptozp
:: Converts a polynomial poly with rational coefficients into an integral polynomial such that GCD of all its coefficients is 1.
polynomial
polynomial
red
does not convert rational coefficients of the
numerator.
You cannot obtain an integral polynomial by direct use of the function
nm()
. The function nm()
returns the numerator of its
argument, and a polynomial with rational coefficients is
the numerator of itself and will be returned as it is.
[0] ptozp(2*x+5/3); 6*x+5 [1] nm(2*x+5/3); 2*x+5/3
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
prim
, cont
:: Primitive part of poly.
:: Content of poly.
polynomial over the rationals
indeterminate
[0] E=(y-z)*(x+y)*(x-z)*(2*x-y); (2*y-2*z)*x^3+(y^2-3*z*y+2*z^2)*x^2+(-y^3+z^2*y)*x+z*y^3-z^2*y^2 [1] prim(E); 2*x^3+(y-2*z)*x^2+(-y^2-z*y)*x+z*y^2 [2] cont(E); y-z [3] prim(E,z); (y-z)*x-z*y+z^2
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
gcd
, gcdz
:: The polynomial greatest common divisor of poly1 and poly2.
polynomial
polynomial
prime
gcd()
and gcdz()
return the greatest common divisor
(GCD) of the given two polynomials.
gcd()
returns an integral polynomial GCD over the
rational number field. The coefficients are normalized such that
their GCD is 1. It returns 1 in case that the given polynomials are
mutually prime.
gcdz()
works for arguments of integral polynomials,
and returns a polynomial GCD over the integer ring, that is,
it returns gcd()
multiplied by the contents of all coefficients
of the two input polynomials.
gcd()
computes the GCD over GF(mod) if mod is specified.
[0] gcd(12*(x^2+2*x+1)^2,18*(x^2+(y+1)*x+y)^3); x^3+3*x^2+3*x+1 [1] gcdz(12*(x^2+2*x+1)^2,18*(x^2+(y+1)*x+y)^3); 6*x^3+18*x^2+18*x+6 [2] gcd((x+y)*(x-y)^2,(x+y)^2*(x-y)); x^2-y^2 [3] gcd((x+y)*(x-y)^2,(x+y)^2*(x-y),2); x^3+y*x^2+y^2*x+y^3
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
red
:: Reduced form of rat by canceling common divisors.
rational expression
rational expression
[0] (x^3-1)/(x-1); (x^3-1)/(x-1) [1] red((x^3-1)/(x-1)); x^2+x+1 [2] red((x^3+y^3+z^3-3*x*y*z)/(x+y+z)); x^2+(-y-z)*x+y^2-z*y+z^2 [3] red((3*x*y)/(12*x^2+21*y^3*x)); (y)/(4*x+7*y^3) [4] red((3/4*x^2+5/6*x)/(2*y*x+4/3*x)); (9/8*x+5/4)/(3*y+2)
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] |
This document was generated on February 28, 2020 using texi2html 5.0.