PseudoRemainderSequence(R, polR)¶
prs.spad line 1 [edit on github]
polR: UnivariatePolynomialCategory R
This package contains some functions: discriminant, resultant, subResultantGcd, chainSubResultants, degreeSubResultant, lastSubResultant, resultantEuclidean, subResultantGcdEuclidean, \ ``semiSubResultantGcdEuclidean1`\ <l50736575646f52656d61696e64657253657175656e6365-5c20606073656d69537562526573756c74616e744763644575636c696465616e3160605c20>`, \ ``semiSubResultantGcdEuclidean2`\ <l50736575646f52656d61696e64657253657175656e6365-5c20606073656d69537562526573756c74616e744763644575636c696465616e3260605c20>`, etc. These procedures are coming from improvements of the subresultants algorithm.
- chainSubResultants: (polR, polR) -> List polR
chainSubResultants(P, Q)
computes the list of non zero subresultants ofP
andQ
.
- degreeSubResultant: (polR, polR, NonNegativeInteger) -> polR
degreeSubResultant(P, Q, d)
computes a subresultant of degreed
.
- degreeSubResultantEuclidean: (polR, polR, NonNegativeInteger) -> Record(coef1: polR, coef2: polR, subResultant: polR)
degreeSubResultantEuclidean(P, Q, d)
returns a subresultantS_i
of degreed
and carries out the equalitycoef1*P + coef2*Q = S_i
.
- discriminant: polR -> R
discriminant(P)
returns the discriminant ofP
.
- discriminantEuclidean: polR -> Record(coef1: polR, coef2: polR, discriminant: R)
discriminantEuclidean(P)
carries out the equalitycoef1 * 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 ofF
byG
.
- gcd: (polR, polR) -> polR if R has GcdDomain
gcd(P, Q)
returns thegcd
ofP
andQ
.
- indiceSubResultant: (polR, polR, NonNegativeInteger) -> polR
indiceSubResultant(P, Q, i)
returns the subresultant of indicei
- indiceSubResultantEuclidean: (polR, polR, NonNegativeInteger) -> Record(coef1: polR, coef2: polR, subResultant: polR)
indiceSubResultant(P, Q, i)
returns the subresultantS_i(P, Q)
and carries out the equalitycoef1*P + coef2*Q = S_i(P, Q)
- lastSubResultant: (polR, polR) -> polR
lastSubResultant(P, Q)
computes the last non zero subresultant ofP
andQ
- lastSubResultantEuclidean: (polR, polR) -> Record(coef1: polR, coef2: polR, subResultant: polR)
lastSubResultantEuclidean(P, Q)
computes the last non zero subresultantS
and carries out the equalitycoef1*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)
computesx^n exquo y^(n-1)
- next_sousResultant2: (polR, polR, polR, R) -> polR
next_sousResultant2(P, Q, Z, s)
returns the subresultantS_{e-1}
whereP ~ S_d, Q = S_{d-1}, Z = S_e, s = lc(S_d)
- resultant: (polR, polR) -> R
resultant(P, Q)
returns the resultant ofP
andQ
- resultantEuclidean: (polR, polR) -> Record(coef1: polR, coef2: polR, resultant: R)
resultantEuclidean(P, Q)
carries out the equalitycoef1*P + coef2*Q = resultant(P, Q)
- resultantReduit: (polR, polR) -> R if R has GcdDomain
resultantReduit(P,Q)
returns the “reduce resultant” ofP
andQ
.
- 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 equalitycoef1*P + coef2*Q = resultantReduit(P, Q)
.
- schema: (polR, polR) -> List NonNegativeInteger
schema(P, Q)
returns the list of degrees of non zero subresultants ofP
andQ
.
- semiDegreeSubResultantEuclidean: (polR, polR, NonNegativeInteger) -> Record(coef2: polR, subResultant: polR)
semiDegreeSubResultantEuclidean(P, Q, d)
returns a subresultantS_i
of degreed
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 subresultantS_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 subresultantS
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 equalitycoef1.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 equalitycoef1*P + ... Q = +/- S_i(P, Q)
where the degree (not the indice) of the subresultantS_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 subresultantS_i(P, Q)
is as small as possible. Warning:degree(P) >= degree(Q)
.
- subResultantGcd: (polR, polR) -> polR
subResultantGcd(P, Q)
returns thegcd
of two primitive polynomialsP
andQ
.
- subResultantGcdEuclidean: (polR, polR) -> Record(coef1: polR, coef2: polR, gcd: polR)
subResultantGcdEuclidean(P, Q)
carries out the equalitycoef1*P + coef2*Q = +/- S_i(P, Q)
where the degree (not the indice) of the subresultantS_i(P, Q)
is as small as possible.