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

◆ create()

gbA * gbA::create ( const Matrix * m,
M2_bool collect_syz,
int n_rows_to_keep,
M2_arrayint gb_weights,
int strategy,
M2_bool use_max_degree,
int max_degree,
int max_reduction_count )
static

Definition at line 55 of file gb-default.cpp.

63{
64 (void) use_max_degree_limit;
65 (void) max_degree_limit;
66 const PolynomialRing *origR = m->get_ring()->cast_to_PolynomialRing();
67 if (origR == nullptr)
68 {
69 ERROR("ring is not a polynomial ring");
70 return nullptr;
71 }
72 if (origR->getMonoid()->numInvertibleVariables() > 0)
73 {
74 ERROR(
75 "cannot compute Groebner basis of ideal over a Laurent polynomial "
76 "ring, ie. with Inverses=>true");
77 return nullptr;
78 }
79 bool overZZ = origR->coefficient_type() == Ring::COEFF_ZZ;
80 bool isLocal = origR->getMonoid()->numNonTermOrderVariables() > 0;
81 if (overZZ and isLocal)
82 {
83 ERROR(
84 "Groebner bases in rings over ZZ with variables less than zero are "
85 "not yet supported");
86 return nullptr;
87 }
88
89 gbA *result = new gbA;
90 result->initialize(m,
91 collect_syz,
92 n_rows_to_keep,
94 strategy,
96 return result;
97}
const Ring * get_ring() const
Definition matrix.hpp:134
int numNonTermOrderVariables() const
Definition monoid.hpp:190
int numInvertibleVariables() const
Definition monoid.hpp:189
virtual const Monoid * getMonoid() const
Definition polyring.hpp:282
CoefficientType coefficient_type() const
Definition polyring.hpp:191
virtual const PolynomialRing * cast_to_PolynomialRing() const
Definition ring.hpp:243
@ COEFF_ZZ
Definition ring.hpp:222
long max_reduction_count
M2_arrayint gb_weights
const int ERROR
Definition m2-mem.cpp:55
VALGRIND_MAKE_MEM_DEFINED & result(result)

References Ring::cast_to_PolynomialRing(), Ring::COEFF_ZZ, PolynomialRing::coefficient_type(), ERROR, gb_weights, Matrix::get_ring(), PolynomialRing::getMonoid(), Matrix, max_reduction_count, Monoid::numInvertibleVariables(), Monoid::numNonTermOrderVariables(), and result().

Referenced by GBComputation::choose_gb().