OreTools[Modular]
FractionFreeRightEucliean
perform a fraction-free version of right Euclidean algorithm (usual, half-extended, and extended) modulo a prime
RightEuclidean
perform right Euclidean algorithm (usual, half-extended, and extended)
Calling Sequence
Parameters
Description
Examples
References
Modular[FractionFreeRightEuclidean](Poly1, Poly2, p, A, 'c1', 'c2')
Modular[RightEuclidean](Poly1, Poly2, p, A, 'c1', 'c2')
Poly1, Poly2
-
nonzero Ore polynomials; to define an Ore polynomial, use the OrePoly structure
p
prime
A
Ore algebra; to define an Ore algebra, use the SetOreRing command
'c1', 'c2'
(optional) unevaluated names
Modular[FractionFreeRightEuclidean](Poly1, Poly2, p, A, 'c1', 'c2') calling sequence returns a list [m, S] where m is a positive integer and S is an array with m elements storing the subresultant sequence of the first kind of Poly1 and Poly2.
The Modular[FractionFreeRightEuclidean] command requires that Poly1 and Poly2 be fraction-free, and that the commutation rule of the Ore algebra A also be fraction-free.
If the optional fourth argument to the FractionFreeRightEuclidean command c1 is specified, it is assigned the first co-sequence of Poly1 and Poly2 so that:
c1i⁢Poly2=Si⁢⁢⁢mod Poly1⁢and⁢p,i=1,2,...,m
and c1[m+1] Poly2 is a least common left multiple (LCLM) of Poly1 and Poly2.
If the optional fifth argument to the FractionFreeRightEuclidean command c2 is specified, it is assigned the second co-sequence of Poly1 and Poly2 so that:
c1i⁢Poly2+c2i⁢Poly1=Si⁢⁢⁢mod⁢p⁢i=1,2,...,m
and c1[m+1] Poly2 = - c2[m+1] Poly1 mod p is an LCLM of Poly1 and Poly2.
Modular[RightEuclidean](Poly1, Poly2, p, A, 'c1', 'c2') calling sequence returns a list [m, S] where m is a positive integer and S is an array with m elements storing the right Euclidean polynomial remainder sequence of Poly1 and Poly2.
If the optional fifth argument to the Modular[RightEuclidean] command c2 is specified, it is assigned the second co-sequence of Poly1 and Poly2 so that:
with⁡OreTools:
A≔SetOreRing⁡x,differential
A≔UnivariateOreRing⁡x,differential
Ore1≔OrePoly⁡1,3⁢x,x2−1+x,23⁢x+1
Ore1≔OrePoly⁡1,3⁢x,x2−x−1,23⁢x+1
Ore2≔OrePoly⁡x,x,x2+x+1
U≔ModularRightEuclidean⁡Ore1,Ore2,11,A,c1,c2
U≔4,S
m≔U1;S≔U2
m≔4
S≔S
print⁡S
OrePoly⁡1,3⁢x,x2+10⁢x+10,1+xOrePoly⁡x,x,x2+x+1OrePoly⁡10⁢x5+x4+5⁢x3+7⁢x2+2⁢xx4+2⁢x3+3⁢x2+2⁢x+1,2⁢x5+5⁢x4+10⁢x3+8⁢x2+2⁢x+10x4+2⁢x3+3⁢x2+2⁢x+1OrePoly⁡3⁢x12+4⁢x11+5⁢x10+x9+8⁢x8+3⁢x7+8⁢x6+3⁢x5+6⁢x4+3⁢x3+6⁢x2+7⁢x+6x10+5⁢x9+8⁢x8+3⁢x6+7⁢x4+3⁢x3+8⁢x2+10⁢x+3
Check the co-sequences.
foritomdoW1≔ModularMultiply⁡c1i,Ore1,11,A;W2≔ModularMultiply⁡c2i,Ore2,11,A;W≔ModularAdd⁡W1,W2,11;C≔ModularMinus⁡W,Si,11;print⁡Cenddo:
OrePoly⁡0
Check the LCLM.
W3≔ModularMultiply⁡c15,Ore1,11,A:
W4≔ModularMultiply⁡c25,Ore2,11,A:
ModularAdd⁡W3,W4,11
Try fraction-free right Euclidean algorithm.
U≔ModularFractionFreeRightEuclidean⁡Ore1,Ore2,11,A,c1,c2
OrePoly⁡1,3⁢x,x2+10⁢x+10,1+xOrePoly⁡x,x,x2+x+1OrePoly⁡10⁢x5+x4+5⁢x3+7⁢x2+2⁢x,2⁢x5+5⁢x4+10⁢x3+8⁢x2+2⁢x+10OrePoly⁡x8+3⁢x7+4⁢x5+6⁢x4+7⁢x3+3⁢x2+2⁢x+2
Li, Z. "A subresultant theory for Ore polynomials with applications." Proc. of ISSAC'98, pp.132-139. Edited by O. Gloor. ACM Press, 1998.
See Also
OreTools
OreTools/Divisions
OreTools/Modular
OreTools/OreAlgebra
OreTools/OrePoly
OreTools[SetOreRing]
Download Help Document