SparsePoly0ps-MinPoly

© 2018 John Abbott, Anna M. Bigatti

GNU Free Documentation License, Version 1.2

CoCoALib Documentation Index

Examples

-

User documentation

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);
    

Verbosity

"MinPolyQuot" uses modular methods when coefficients are in "QQ". At level 80 it lists all primes used indicating any which are "bad".

Maintainer documentation

Main changes

2018

  • August (v0.99600):
    • added documentation -