PseudoRemainderSequence(R, polR)ΒΆ

prs.spad line 1

This package contains some functions: discriminant, resultant, subResultantGcd, chainSubResultants, degreeSubResultant, lastSubResultant, resultantEuclidean, subResultantGcdEuclidean, semiSubResultantGcdEuclidean1, semiSubResultantGcdEuclidean2, etc. These procedures are coming from improvements of the subresultants algorithm. Version: 7 References: Lionel Ducos “Optimizations of the subresultant algorithm” to appear in the Journal of Pure and Applied Algebra. Author: Ducos Lionel Lionel.Ducos@mathlabo.univ-poitiers.fr

chainSubResultants: (polR, polR) -> List polR
chainSubResultants(P, Q) computes the list of non zero subresultants of P and Q.
degreeSubResultant: (polR, polR, NonNegativeInteger) -> polR
degreeSubResultant(P, Q, d) computes a subresultant of degree d.
degreeSubResultantEuclidean: (polR, polR, NonNegativeInteger) -> Record(coef1: polR, coef2: polR, subResultant: polR)
degreeSubResultantEuclidean(P, Q, d) returns a subresultant S_i of degree d and carries out the equality coef1*P + coef2*Q = S_i.
discriminant: polR -> R
discriminant(P) returns the discriminant of P.
discriminantEuclidean: polR -> Record(coef1: polR, coef2: polR, discriminant: R)
discriminantEuclidean(P) carries out the equality coef1 * P + coef2 * D(P) = discriminant(P).
divide: (polR, polR) -> Record(quotient: polR, remainder: polR)
divide(F, G) computes quotient and rest of the exact euclidean division of F by G.
gcd: (polR, polR) -> polR if R has GcdDomain
gcd(P, Q) returns the gcd of P and Q.
indiceSubResultant: (polR, polR, NonNegativeInteger) -> polR
indiceSubResultant(P, Q, i) returns the subresultant of indice i
indiceSubResultantEuclidean: (polR, polR, NonNegativeInteger) -> Record(coef1: polR, coef2: polR, subResultant: polR)
indiceSubResultant(P, Q, i) returns the subresultant S_i(P, Q) and carries out the equality coef1*P + coef2*Q = S_i(P, Q)
lastSubResultant: (polR, polR) -> polR
lastSubResultant(P, Q) computes the last non zero subresultant of P and Q
lastSubResultantEuclidean: (polR, polR) -> Record(coef1: polR, coef2: polR, subResultant: polR)
lastSubResultantEuclidean(P, Q) computes the last non zero subresultant S and carries out the equality coef1*P + coef2*Q = S.
LazardQuotient2: (polR, R, R, NonNegativeInteger) -> polR
LazardQuotient2(F, x, y, n) computes (x^(n-1) * F) exquo y^(n-1)
LazardQuotient: (R, R, NonNegativeInteger) -> R
LazardQuotient(x, y, n) computes x^n exquo y^(n-1)
next_sousResultant2: (polR, polR, polR, R) -> polR
next_sousResultant2(P, Q, Z, s) returns the subresultant S_{e-1} where P ~ S_d, Q = S_{d-1}, Z = S_e, s = lc(S_d)
resultant: (polR, polR) -> R
resultant(P, Q) returns the resultant of P and Q
resultantEuclidean: (polR, polR) -> Record(coef1: polR, coef2: polR, resultant: R)
resultantEuclidean(P, Q) carries out the equality coef1*P + coef2*Q = resultant(P, Q)
resultantReduit: (polR, polR) -> R if R has GcdDomain
resultantReduit(P,Q) returns the “reduce resultant” of P and Q.
resultantReduitEuclidean: (polR, polR) -> Record(coef1: polR, coef2: polR, resultantReduit: R) if R has GcdDomain
resultantReduitEuclidean(P, Q) returns the “reduce resultant” and carries out the equality coef1*P + coef2*Q = resultantReduit(P, Q).
schema: (polR, polR) -> List NonNegativeInteger
schema(P, Q) returns the list of degrees of non zero subresultants of P and Q.
semiDegreeSubResultantEuclidean: (polR, polR, NonNegativeInteger) -> Record(coef2: polR, subResultant: polR)
semiDegreeSubResultantEuclidean(P, Q, d) returns a subresultant S_i of degree d and carries out the equality ... P + coef2*Q = S_i. Warning: degree(P) >= degree(Q).
semiDiscriminantEuclidean: polR -> Record(coef2: polR, discriminant: R)
discriminantEuclidean(P) carries out the equality ... P + coef2 * D(P) = discriminant(P). Warning: degree(P) >= degree(Q).
semiIndiceSubResultantEuclidean: (polR, polR, NonNegativeInteger) -> Record(coef2: polR, subResultant: polR)
semiIndiceSubResultantEuclidean(P, Q, i) returns the subresultant S_i(P, Q) and carries out the equality ... P + coef2*Q = S_i(P, Q) Warning: degree(P) >= degree(Q).
semiLastSubResultantEuclidean: (polR, polR) -> Record(coef2: polR, subResultant: polR)
semiLastSubResultantEuclidean(P, Q) computes the last non zero subresultant S and carries out the equality ... P + coef2*Q = S. Warning: degree(P) >= degree(Q).
semiResultantEuclidean1: (polR, polR) -> Record(coef1: polR, resultant: R)
semiResultantEuclidean1(P, Q) carries out the equality coef1.P + ... Q = resultant(P, Q).
semiResultantEuclidean2: (polR, polR) -> Record(coef2: polR, resultant: R)
semiResultantEuclidean2(P, Q) carries out the equality ... P + coef2*Q = resultant(P, Q). Warning: degree(P) >= degree(Q).
semiResultantReduitEuclidean: (polR, polR) -> Record(coef2: polR, resultantReduit: R) if R has GcdDomain
semiResultantReduitEuclidean(P, Q) returns the “reduce resultant” and carries out the equality ... P + coef2*Q = resultantReduit(P, Q).
semiSubResultantGcdEuclidean1: (polR, polR) -> Record(coef1: polR, gcd: polR)
semiSubResultantGcdEuclidean1(P, Q) carries out the equality coef1*P + ... Q = +/- S_i(P, Q) where the degree (not the indice) of the subresultant S_i(P, Q) is as small as possible.
semiSubResultantGcdEuclidean2: (polR, polR) -> Record(coef2: polR, gcd: polR)
semiSubResultantGcdEuclidean2(P, Q) carries out the equality ... P + coef2*Q = +/- S_i(P, Q) where the degree (not the indice) of the subresultant S_i(P, Q) is as small as possible. Warning: degree(P) >= degree(Q).
subResultantGcd: (polR, polR) -> polR
subResultantGcd(P, Q) returns the gcd of two primitive polynomials P and Q.
subResultantGcdEuclidean: (polR, polR) -> Record(coef1: polR, coef2: polR, gcd: polR)
subResultantGcdEuclidean(P, Q) carries out the equality coef1*P + coef2*Q = +/- S_i(P, Q) where the degree (not the indice) of the subresultant S_i(P, Q) is as small as possible.