-
Let M
denote a matrix.
Let z
denote an indeterminate in a polynomial ring.
RingElem MinPoly(ConstMatrixView M, ConstRefRingElem z);
the minimal polynomial (in z
) of M
.
Let P
denote a SparsePolyRing
over Z/(p)
or QQ
.
Let I
denote an ideal in P
.
Let f
denote an element of P
.
Let fbar
denote an element of P/I
.
Let f
denote an element of P
.
Let NumChecks
denote a VerificationLevel
.
RingElem MinPoly(fbar, z)
--
the minimal polynomial (in z
) of fbar
.
RingElem MinPolyQuot(f, I, z, NumChecks)
--
the minimal polynomial (in z
) of f
modulo I
.
Uses modular computation and MinPolyQuotDef
.
The modular computation is verified over NumChecks
new primes.
For NumChecks
=0 there is full verification over QQ
.
RingElem MinPolyQuot(f, I, z)
-- same as MinPolyQuot(f,I,z, 0)
RingElem MinPolyQuotMat(ConstRefRingElem f, const ideal& I, ConstRefRingElem z); RingElem MinPolyQuotDef(ConstRefRingElem f, const ideal& I, ConstRefRingElem z); RingElem MinPolyQuotDefLin(ConstRefRingElem f, const ideal& I, ConstRefRingElem z); RingElem MinPolyQuotElim(ConstRefRingElem f, const ideal& I, ConstRefRingElem z); RingElem MinPolyMat(ConstRefRingElem fbar, ConstRefRingElem z); RingElem MinPolyDef(ConstRefRingElem fbar, ConstRefRingElem z); RingElem MinPolyElim(ConstRefRingElem fbar, ConstRefRingElem z);specific implementations (not modular: computation actually in
QQ
if coeff are in QQ
)
See article Abbott, Bigatti, Palezzato, Robbiano
"Computing and Using Minimal Polynomials"
("https://arxiv.org/abs/1702.07262")
matrix FrobeniusMat(const ideal& I); matrix FrobeniusMat(const ideal& I, const std::vector<PPMonoidElem>& QB2); std::vector<RingElem> ShapeLemma(const ideal& I);
"MinPolyQuot" uses modular methods when coefficients are in "QQ". At level 80 it lists all primes used indicating any which are "bad".
2018