OreTools
Quotient
compute the right or left quotient of two Ore polynomials
Remainder
compute the right or left remainder of two Ore polynomials
Calling Sequence
Parameters
Description
Examples
Quotient['right'](Poly1, Poly2, A, 'R')
Quotient(Poly1, Poly2, A, 'R')
Quotient['left'](Poly1, Poly2, A, 'R')
Remainder['right'](Poly1, Poly2, A, 'Q')
Remainder(Poly1, Poly2, A, 'Q')
Remainder['left'](Poly1, Poly2, A, 'Q')
Poly1
-
Ore polynomial; to define an Ore polynomial, use the OrePoly structure.
Poly2
nonzero Ore polynomial; to define an Ore polynomial, use the OrePoly structure.
A
Ore algebra; to define an Ore algebra, use the SetOreRing function.
Q, R
(optional) unevaluated names.
The Quotient['right'](Poly1, Poly2, A) or Quotient(Poly1, Poly2, A) calling sequence returns the right quotient Q of Poly1 and Poly2 such that:
Poly1=QPoly2+R
where the degree of the right remainder R is less than that of Poly2.
If the fourth argument 'R' is specified, it is assigned the right remainder defined above.
The Quotient['left'](Poly1, Poly2, A) calling sequence returns the right quotient Q of Poly1 and Poly2 such that:
Poly1=Poly2Q+R
where the degree of the left remainder R is less than that of Poly2.
If the fourth argument 'R' is specified, it is assigned the left remainder defined above.
The Remainder['right'](Poly1, Poly2, A) or Remainder(Poly1, Poly2, A) calling sequence returns the right remainder R of Poly1 and Poly2 such that:
where the degree of R is less than that of Poly2 and Q is the right quotient.
If the fourth argument 'Q' is specified, it is assigned the right quotient defined above.
The Remainder['left'](Poly1, Poly2, A) calling sequence returns the left remainder R of Poly1 and Poly2 such that:
where the degree of R is less than that of Poly2 and Q is the left quotient.
withOreTools:
A≔SetOreRingx,differential
A≔UnivariateOreRingx,differential
Poly1≔OrePoly1x,0,xx+1,x2x+2
Poly2≔OrePolyx,x+1x,x
R1≔RemainderrightPoly1,Poly2,A
R1≔OrePolyx2+4x+2xx+1x+2,−x4−x2−2x−1x+2x2
R2≔RemainderPoly1,Poly2,A
R2≔OrePolyx2+4x+2xx+1x+2,−x4−x2−2x−1x+2x2
MinusR1,R2
OrePoly0
R3≔RemainderleftPoly1,Poly2,A
R3≔OrePoly5x9+40x8+151x7+287x6+302x5+193x4+58x3−30x2−32x−8x3x+13x+24,−x8+6x7+13x6+22x5+23x4+12x3+x2−8x−4x+12x+23x2
R≔RemainderrightPoly1,Poly2,A,Q
R≔OrePolyx2+4x+2xx+1x+2,−x4−x2−2x−1x+2x2
Q
OrePoly−x2+x+1xx+1x+2,xx+2
MinusPoly1,AddMultiplyQ,Poly2,A,R
R≔RemainderleftPoly1,Poly2,A,Q
R≔OrePoly5x9+40x8+151x7+287x6+302x5+193x4+58x3−30x2−32x−8x3x+13x+24,−x8+6x7+13x6+22x5+23x4+12x3+x2−8x−4x+12x+23x2
OrePoly−4x2+5x+2x+1x+22x,xx+2
MinusPoly1,AddMultiplyPoly2,Q,A,R
B≔SetOreRingx,shift
B≔UnivariateOreRingx,shift
Q≔QuotientPoly1,Poly2,B
Q≔OrePoly1x+12,x2x+2x+1
Q≔QuotientrightPoly1,Poly2,B,R
R
OrePoly2x+1xx+12,−x4+x3+x+2x+2xx+1
MinusPoly1,AddMultiplyQ,Poly2,B,R
Q≔QuotientleftPoly1,Poly2,B
Q≔OrePoly1x−1x−22,x−2x
Q≔QuotientleftPoly1,Poly2,B,R
OrePolyx3−6x2+8x−4xx−1x−22,−x5−4x4+5x3−2x2+x+1x2x−12
MinusPoly1,AddMultiplyPoly2,Q,B,R
See Also
OreTools/Add
OreTools/Euclidean
OreTools/Multiply
OreTools/OreAlgebra
OreTools/OrePoly
OreTools[SetOreRing]
Download Help Document