FractionFreeRightEuclidean - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Mozilla Firefox.

Online Help

All Products    Maple    MapleSim


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

Calling Sequence

Modular[FractionFreeRightEuclidean](Poly1, Poly2, p, A, 'c1', 'c2')

Modular[RightEuclidean](Poly1, Poly2, p, A, 'c1', 'c2')

Parameters

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

Description

• 

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 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 Modular[RightEuclidean] 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.

Examples

> 

with⁡OreTools:

> 

A≔SetOreRing⁡x,differential

A≔UnivariateOreRing⁡x,differential

(1)
> 

Ore1≔OrePoly⁡1,3⁢x,x2−1+x,23⁢x+1

Ore1≔OrePoly⁡1,3⁢x,x2−x−1,23⁢x+1

(2)
> 

Ore2≔OrePoly⁡x,x,x2+x+1

Ore2≔OrePoly⁡x,x,x2+x+1

(3)
> 

U≔ModularRightEuclidean⁡Ore1,Ore2,11,A,c1,c2

U≔4,S

(4)
> 

m≔U1;S≔U2

m≔4

S≔S

(5)
> 

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

(6)

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

OrePoly⁡0

OrePoly⁡0

OrePoly⁡0

(7)

Check the LCLM.

> 

W3≔ModularMultiply⁡c15,Ore1,11,A:

> 

W4≔ModularMultiply⁡c25,Ore2,11,A:

> 

ModularAdd⁡W3,W4,11

OrePoly⁡0

(8)

Try fraction-free right Euclidean algorithm.

> 

A≔SetOreRing⁡x,differential

A≔UnivariateOreRing⁡x,differential

(9)
> 

Ore1≔OrePoly⁡1,3⁢x,x2−1+x,23⁢x+1

Ore1≔OrePoly⁡1,3⁢x,x2−x−1,23⁢x+1

(10)
> 

Ore2≔OrePoly⁡x,x,x2+x+1

Ore2≔OrePoly⁡x,x,x2+x+1

(11)
> 

U≔ModularFractionFreeRightEuclidean⁡Ore1,Ore2,11,A,c1,c2

U≔4,S

(12)
> 

m≔U1;S≔U2

m≔4

S≔S

(13)
> 

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⁢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

(14)

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

OrePoly⁡0

OrePoly⁡0

OrePoly⁡0

(15)

Check the LCLM.

> 

W3≔ModularMultiply⁡c15,Ore1,11,A:

> 

W4≔ModularMultiply⁡c25,Ore2,11,A:

> 

ModularAdd⁡W3,W4,11

OrePoly⁡0

(16)

References

  

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]