Macaulay2 Engine
Loading...
Searching...
No Matches

◆ coeffMode()

enum factoryCoeffMode coeffMode ( const PolynomialRing * P)
static

Definition at line 51 of file factory.cpp.

52{
53 const Ring *F = P->getCoefficientRing();
54 // if (F->cast_to_QQ()) return modeQQ;
55 if (F->is_QQ()) return modeQQ;
56 if (F->cast_to_RingZZ()) return modeZZ;
57 // factory will abort if the characteristic is too large
58 if (F->characteristic() > 536870909) {
59 ERROR("characteristic is too large (max is 2^29)");
60 return modeError;
61 }
62 if (F->isFinitePrimeField()) return modeZn;
63 if (F->isGaloisField()) return modeGF;
64 ERROR("expected coefficient ring of the form ZZ/n, ZZ, QQ, or GF");
65 return modeError;
66}
const Ring * getCoefficientRing() const
Definition polyring.hpp:200
virtual bool isGaloisField() const
Definition ring.hpp:170
long characteristic() const
Definition ring.hpp:159
virtual const RingZZ * cast_to_RingZZ() const
Definition ring.hpp:235
virtual bool is_QQ() const
Definition ring.hpp:172
virtual bool isFinitePrimeField() const
Definition ring.hpp:169
xxx xxx xxx
Definition ring.hpp:102
@ modeQQ
Definition factory.cpp:45
@ modeGF
Definition factory.cpp:48
@ modeZZ
Definition factory.cpp:46
@ modeZn
Definition factory.cpp:47
@ modeError
Definition factory.cpp:44
const int ERROR
Definition m2-mem.cpp:55

References Ring::cast_to_RingZZ(), Ring::characteristic(), ERROR, PolynomialRing::getCoefficientRing(), Ring::is_QQ(), Ring::isFinitePrimeField(), Ring::isGaloisField(), modeError, modeGF, modeQQ, modeZn, and modeZZ.

Referenced by enter_factory::enter_factory().