Macaulay2 Engine
Loading...
Searching...
No Matches
poly.hpp
Go to the documentation of this file.
1// Copyright 1995 Michael E. Stillman
2
3#ifndef _poly_hpp_
4#define _poly_hpp_
5
34
35#include "ring.hpp"
36#include "ringelem.hpp"
37#include "skew.hpp"
38
40
41class TermIdeal;
42class Matrix;
43class GBRing;
44class GBRingSkew;
45class GBComputation;
47#include "polyring.hpp"
48
63class PolyRing : public PolyRingFlat
64{
65 friend class GBRingSkew;
66 friend class FreeModule;
67 friend class ChineseRemainder;
68
69 friend class MatrixStream; // for new_term()
70 void initialize_poly_ring(const Ring *K,
71 const Monoid *M,
72 const PolynomialRing *deg_ring);
73 // Only to be called from initialize_poly_ring and make_trivial_ZZ_poly_ring
74
75 protected:
76 void initialize_poly_ring(const Ring *K, const Monoid *M);
77 // Called by subclasses (e.g. skew comm, Weyl, solvable.
78 // After this, set the information for the special multiplication.
79 // Then set the gb_ring
80
81 virtual ~PolyRing();
84 static void make_trivial_ZZ_poly_ring();
85
86 public:
87 static const PolyRing *create(const Ring *K, const Monoid *M);
88
89 public:
90 virtual void clear();
91
92 static const PolyRing *get_trivial_poly_ring();
93
94 virtual const PolyRing *cast_to_PolyRing() const { return this; }
95 virtual PolyRing *cast_to_PolyRing() { return this; }
96 virtual void text_out(buffer &o) const;
97
99 // Arithmetic ///////////
101
102 ring_elem fromCoefficient(ring_elem &coeff) const;
103
104 virtual ring_elem from_long(long n) const;
105 virtual ring_elem from_int(mpz_srcptr n) const;
106 virtual bool from_rational(mpq_srcptr q, ring_elem &result) const;
107
108 virtual bool from_BigComplex(gmp_CC z, ring_elem &result) const;
109 virtual bool from_BigReal(gmp_RR z, ring_elem &result) const;
110 virtual bool from_Interval(gmp_RRi z, ring_elem &result) const;
111 virtual bool from_ComplexInterval(gmp_CCi z, ring_elem &result) const;
112 virtual bool from_double(double a, ring_elem &result) const;
113 virtual bool from_complex_double(double re,
114 double im,
115 ring_elem &result) const;
116
117 virtual ring_elem var(int v) const;
118
119 virtual int index_of_var(const ring_elem a) const;
120 virtual M2_arrayint support(const ring_elem a) const;
121
122 virtual bool promote(const Ring *R,
123 const ring_elem f,
124 ring_elem &result) const;
125 virtual bool lift(const Ring *R, const ring_elem f, ring_elem &result) const;
126
127 virtual ring_elem preferred_associate(ring_elem f) const;
129 // ff is an element of 'this'.
130 // result is in the coefficient ring
131 // If the coefficient ring of this is
132 // ZZ -- gcd of all, same sign as lead coeff
133 // QQ -- gcd(numerators)/lcm(denominators)
134 // basic field -- lead coeff
135 // frac(poly ring) -- gcd(numerators)/lcm(denominators)
136 // frac(quotient of a poly ring) -- error
137
138 virtual bool is_unit(const ring_elem f) const;
139 virtual bool is_zero(const ring_elem f) const;
140 virtual bool is_equal(const ring_elem f, const ring_elem g) const;
141 virtual int compare_elems(const ring_elem f, const ring_elem g) const;
142
143 virtual bool is_homogeneous(const ring_elem f) const;
144 virtual bool multi_degree(const ring_elem f, monomial d) const;
145 virtual void degree_weights(const ring_elem f,
146 const std::vector<int> &wts,
147 int &lo,
148 int &hi) const;
149 virtual ring_elem homogenize(const ring_elem f,
150 int v,
151 int deg,
152 const std::vector<int> &wts) const;
153 virtual ring_elem homogenize(const ring_elem f,
154 int v,
155 const std::vector<int> &wts) const;
156
157 virtual ring_elem copy(const ring_elem f) const;
158 virtual void remove(ring_elem &f) const;
159
160 void internal_negate_to(ring_elem &f) const;
161 void internal_add_to(ring_elem &f, ring_elem &g) const;
162 void internal_subtract_to(ring_elem &f, ring_elem &g) const;
163
164 virtual ring_elem negate(const ring_elem f) const;
165 virtual ring_elem add(const ring_elem f, const ring_elem g) const;
166 virtual ring_elem subtract(const ring_elem f, const ring_elem g) const;
167 virtual ring_elem mult(const ring_elem f, const ring_elem g) const;
168 virtual ring_elem power(const ring_elem f, mpz_srcptr n) const;
169 virtual ring_elem power(const ring_elem f, int n) const;
170 virtual ring_elem invert(const ring_elem f) const;
171 virtual ring_elem divide(const ring_elem f, const ring_elem g) const;
172 ring_elem gcd(const ring_elem f, const ring_elem g) const;
174 const ring_elem g,
175 ring_elem &u,
176 ring_elem &v) const;
177
178 protected:
179 void minimal_monomial(ring_elem f, monomial &monom) const;
180 Nterm *division_algorithm(Nterm *f, Nterm *g, Nterm *&quot) const;
181 Nterm *division_algorithm(Nterm *f, Nterm *g) const;
183 std::vector<int> setNegativeExponentMonomial(Nterm* f) const;
185
186 public:
187 virtual ring_elem remainder(const ring_elem f, const ring_elem g) const;
188 virtual ring_elem quotient(const ring_elem f, const ring_elem g) const;
190 const ring_elem g,
191 ring_elem &quot) const;
192
193 virtual void syzygy(const ring_elem a,
194 const ring_elem b,
195 ring_elem &x,
196 ring_elem &y) const;
197
198 virtual ring_elem random() const;
199
200 virtual void elem_text_out(buffer &o,
201 const ring_elem f,
202 bool p_one = true,
203 bool p_plus = false,
204 bool p_parens = false) const;
205
206 virtual ring_elem eval(const RingMap *map,
207 const ring_elem f,
208 int first_var) const;
209
210 virtual ring_elem mult_by_term(const ring_elem f,
211 const ring_elem c,
212 const_monomial m) const;
213
214 virtual int n_flat_terms(const ring_elem f) const;
215 virtual int n_logical_terms(int nvars0, const ring_elem f) const;
216
217 virtual ring_elem get_coeff(const Ring *coeffR,
218 const ring_elem f,
219 const_varpower vp) const;
220 virtual ring_elem get_terms(int nvars0,
221 const ring_elem f,
222 int lo,
223 int hi) const;
224
225 virtual ring_elem make_flat_term(const ring_elem a, const_monomial m) const;
226 virtual ring_elem make_logical_term(const Ring *coeffR,
227 const ring_elem a,
228 const_exponents exp) const;
229
230 virtual ring_elem lead_flat_coeff(const ring_elem f) const;
231 virtual ring_elem lead_logical_coeff(const Ring *coeffR,
232 const ring_elem f) const;
233
234 virtual const_monomial lead_flat_monomial(const ring_elem f) const;
235 virtual void lead_logical_exponents(int nvars0,
236 const ring_elem f,
237 exponents_t result_exp) const;
238
239 ring_elem lead_term(const ring_elem f) const; // copies the lead term
240
241 virtual engine_RawArrayPairOrNull list_form(const Ring *coeffR,
242 const ring_elem f) const;
243 virtual ring_elem *get_parts(const std::vector<int> &wts,
244 const ring_elem f,
245 long &result_len) const;
246 virtual ring_elem get_part(const std::vector<int> &wts,
247 const ring_elem f,
248 bool lobound_given,
249 bool hibound_given,
250 long lobound,
251 long hibound) const;
252
253 virtual void mult_coeff_to(ring_elem a, ring_elem &f) const;
254 virtual void divide_coeff_to(ring_elem &f, ring_elem a) const;
255
256 virtual ring_elem lead_term(int nparts, const ring_elem f) const;
257
258 public:
260 // Univariate polynomial translation //
262 ring_elem fromSmallIntegerCoefficients(const std::vector<long> &coeffs,
263 int var) const;
264
265 public:
267 // RRR and CCC support //
269 virtual ring_elem zeroize_tiny(gmp_RR epsilon, const ring_elem f) const;
270 virtual void increase_maxnorm(gmp_RRmutable norm, const ring_elem f) const;
271 // If any real number appearing in f has larger absolute value than norm,
272 // replace norm.
273
274 public:
275 virtual vec vec_lead_term(int nparts, const FreeModule *F, vec v) const;
276
277 virtual vec vec_top_coefficient(const vec v, int &var, int &exp) const;
278
279 const vecterm *vec_locate_lead_term(const FreeModule *F, vec v) const;
280 // Returns a pointer to the lead vector of v.
281 // This works if F has a Schreyer order, or an up/down order.
282
283 protected:
284 vec vec_coefficient_of_var(vec v, int var, int exp) const;
285
288 monomial resultmon,
289 int use_coeff) const;
290 ring_elem power_direct(const ring_elem f, int n) const;
291
292 ring_elem get_logical_coeff(const Ring *coeffR, const Nterm *&f) const;
293 // Given an Nterm f, return the coeff of its logical monomial, in the
294 // polynomial ring coeffR. f is modified, in that it is replaced by
295 // the pointer to the first term of f not used (possibly 0).
296
297 public:
298 virtual void monomial_divisor(const ring_elem a, exponents_t exp) const; // not used
299
300 virtual ring_elem diff(ring_elem a, ring_elem b, int use_coeff) const;
301 virtual bool in_subring(int nslots, const ring_elem a) const;
302 virtual void degree_of_var(int n, const ring_elem a, int &lo, int &hi) const;
303 virtual ring_elem divide_by_var(int n, int d, const ring_elem a) const;
305 const ring_elem a) const;
306
307 virtual void lower_content(ring_elem &cont, ring_elem new_coeff) const;
308 virtual ring_elem content(ring_elem f) const;
309 virtual ring_elem content(ring_elem f, ring_elem g) const;
311
312 // Routines special to polynomial rings
313 // possibly others?
314 // Rideal, exterior_vars.
315 // nbits
316 // heap merge of elements...?
317
318 // Routines special to fields (anything else?)
319 protected:
320 Nterm *new_term() const;
321 Nterm *copy_term(const Nterm *t) const;
322
324 ring_elem g,
325 ring_elem &coeff,
326 monomial monom) const;
327
328 protected:
330 const ring_elem c,
331 const_monomial m) const;
333 ring_elem a,
335 const ring_elem g) const;
336
337 public:
338 void sort(Nterm *&f) const;
339
341 // Used in gbvector <--> vector/ringelem translation //
343 // These are only meant to be called by Ring's.
344 public:
345 void determine_common_denominator_QQ(ring_elem f, mpz_ptr denom_so_far) const;
346
348
350
352 const vec v,
353 ring_elem &result_denominator) const;
354
356 const gbvector *v,
357 const ring_elem denom) const;
358
360
362
364 const vec v,
365 ring_elem &result_denominator) const;
366
367 vec translate_gbvector_to_vec(const FreeModule *F, const gbvector *v) const;
368
370 const gbvector *v,
371 const ring_elem denom) const;
372 // Translate v/denom to a vector in F. denom does not need to be positive,
373 // although it had better be non-zero.
374};
375
376// Returns a PolyRing iff R = ZZ/p[x], for some variable x, and some prime p.
377// Otherwise returns null.
378const PolyRing * /* or null */ isUnivariateOverPrimeField(const Ring *R);
379
380#endif
381
382// Local Variables:
383// compile-command: "make -C $M2BUILDDIR/Macaulay2/e "
384// indent-tabs-mode: nil
385// End:
varpower::ConstExponents const_varpower
exponents::ConstExponents const_exponents
exponents::Exponents exponents_t
base class for Groebner basis computations.
Definition comp-gb.hpp:69
Polynomial-ring view tuned for the inner loop of classical Buchberger Groebner-basis computations.
Definition gbring.hpp:120
GBRing specialisation for skew-commutative (exterior-like) polynomial rings.
Definition gbring.hpp:645
Engine-side commutative monomial monoid: variable names, ordering, multidegree machinery,...
Definition monoid.hpp:89
friend class FreeModule
Definition poly.hpp:66
virtual bool from_ComplexInterval(gmp_CCi z, ring_elem &result) const
Definition poly.cpp:262
void internal_negate_to(ring_elem &f) const
Definition poly.cpp:665
ring_elem power_direct(const ring_elem f, int n) const
Definition poly.cpp:868
virtual bool is_equal(const ring_elem f, const ring_elem g) const
Definition poly.cpp:493
ring_elem diff_term(const_monomial m, const_monomial n, monomial resultmon, int use_coeff) const
Definition poly.cpp:2036
virtual vec vec_lead_term(int nparts, const FreeModule *F, vec v) const
Definition poly.cpp:2331
virtual void text_out(buffer &o) const
Definition poly.cpp:140
void internal_add_to(ring_elem &f, ring_elem &g) const
Definition poly.cpp:675
static const PolyRing * get_trivial_poly_ring()
Definition poly.cpp:35
virtual void increase_maxnorm(gmp_RRmutable norm, const ring_elem f) const
Definition poly.cpp:1385
friend class GBRingSkew
Definition poly.hpp:65
friend class MatrixStream
Definition poly.hpp:69
virtual void syzygy(const ring_elem a, const ring_elem b, ring_elem &x, ring_elem &y) const
Definition poly.cpp:1217
static const PolyRing * create(const Ring *K, const Monoid *M)
Definition poly.cpp:101
Nterm * copy_term(const Nterm *t) const
Definition poly.cpp:161
virtual void degree_weights(const ring_elem f, const std::vector< int > &wts, int &lo, int &hi) const
Definition poly.cpp:580
virtual vec vec_top_coefficient(const vec v, int &var, int &exp) const
Definition poly.cpp:2374
vec translate_gbvector_to_vec_denom(const FreeModule *F, const gbvector *v, const ring_elem denom) const
Definition poly.cpp:2703
virtual ring_elem power(const ring_elem f, mpz_srcptr n) const
Exponentiation. This is the default function, if a class doesn't define this.
Definition poly.cpp:829
virtual void elem_text_out(buffer &o, const ring_elem f, bool p_one=true, bool p_plus=false, bool p_parens=false) const
Definition poly.cpp:1308
void initialize_poly_ring(const Ring *K, const Monoid *M, const PolynomialRing *deg_ring)
Definition poly.cpp:72
virtual ring_elem from_long(long n) const
Definition poly.cpp:169
virtual void divide_coeff_to(ring_elem &f, ring_elem a) const
Definition poly.cpp:809
virtual void clear()
Definition poly.cpp:27
virtual int n_flat_terms(const ring_elem f) const
Definition poly.cpp:1958
virtual const PolyRing * cast_to_PolyRing() const
Definition poly.hpp:94
ring_elem preferred_associate_divisor(ring_elem ff) const
Definition poly.cpp:459
ring_elem fromCoefficient(ring_elem &coeff) const
Definition poly.cpp:213
std::vector< int > setNegativeExponentMonomial(Nterm *f) const
Create an exponent vector whose i-th value is the minimum of the exponents of that variable,...
Definition poly.cpp:1401
virtual ring_elem mult(const ring_elem f, const ring_elem g) const
Definition poly.cpp:821
virtual void mult_coeff_to(ring_elem a, ring_elem &f) const
Definition poly.cpp:799
virtual bool from_BigComplex(gmp_CC z, ring_elem &result) const
Definition poly.cpp:226
virtual ring_elem content(ring_elem f) const
Definition poly.cpp:2200
virtual ring_elem homogenize(const ring_elem f, int v, int deg, const std::vector< int > &wts) const
Definition poly.cpp:603
virtual ring_elem remainder(const ring_elem f, const ring_elem g) const
Definition poly.cpp:1145
virtual ring_elem var(int v) const
Definition poly.cpp:299
ring_elem get_denominator_QQ(ring_elem f) const
Definition poly.cpp:2431
virtual ring_elem divide_by_expvector(const_exponents exp, const ring_elem a) const
Definition poly.cpp:2175
gbvector * translate_gbvector_from_ringelem_QQ(ring_elem coeff) const
Definition poly.cpp:2470
void imp_subtract_multiple_to(ring_elem &f, ring_elem a, const_monomial m, const ring_elem g) const
Definition poly.cpp:1000
ring_elem vec_get_denominator_QQ(vec f) const
Definition poly.cpp:2450
virtual bool from_complex_double(double re, double im, ring_elem &result) const
Definition poly.cpp:285
friend class ChineseRemainder
Definition poly.hpp:67
virtual ring_elem invert(const ring_elem f) const
Definition poly.cpp:961
virtual bool is_unit(const ring_elem f) const
Definition poly.cpp:478
virtual ring_elem diff(ring_elem a, ring_elem b, int use_coeff) const
Definition poly.cpp:2014
virtual ring_elem eval(const RingMap *map, const ring_elem f, int first_var) const
Definition poly.cpp:1346
virtual ring_elem divide_by_given_content(ring_elem f, ring_elem c) const
Definition poly.cpp:2219
virtual ring_elem zeroize_tiny(gmp_RR epsilon, const ring_elem f) const
Definition poly.cpp:1367
Nterm * division_algorithm_with_laurent_variables(Nterm *f, Nterm *g, Nterm *&quot) const
Definition poly.cpp:1422
virtual bool promote(const Ring *R, const ring_elem f, ring_elem &result) const
Definition poly.cpp:379
virtual bool is_homogeneous(const ring_elem f) const
Definition poly.cpp:533
virtual ring_elem from_int(mpz_srcptr n) const
Definition poly.cpp:181
virtual ring_elem mult_by_term(const ring_elem f, const ring_elem c, const_monomial m) const
Definition poly.cpp:781
virtual int index_of_var(const ring_elem a) const
Definition poly.cpp:319
virtual ring_elem make_flat_term(const ring_elem a, const_monomial m) const
Definition poly.cpp:1965
virtual ~PolyRing()
Definition poly.cpp:34
virtual ring_elem copy(const ring_elem f) const
Definition poly.cpp:653
Nterm * division_algorithm(Nterm *f, Nterm *g, Nterm *&quot) const
Definition poly.cpp:1458
vec translate_gbvector_to_vec(const FreeModule *F, const gbvector *v) const
Definition poly.cpp:2639
virtual void monomial_divisor(const ring_elem a, exponents_t exp) const
Definition poly.cpp:2137
virtual ring_elem remainderAndQuotient(const ring_elem f, const ring_elem g, ring_elem &quot) const
Definition poly.cpp:1163
virtual ring_elem get_part(const std::vector< int > &wts, const ring_elem f, bool lobound_given, bool hibound_given, long lobound, long hibound) const
Definition poly.cpp:1855
virtual ring_elem add(const ring_elem f, const ring_elem g) const
Definition poly.cpp:765
virtual bool from_double(double a, ring_elem &result) const
Definition poly.cpp:274
ring_elem gcd_extended(const ring_elem f, const ring_elem g, ring_elem &u, ring_elem &v) const
Definition poly.cpp:1083
virtual PolyRing * cast_to_PolyRing()
Definition poly.hpp:95
virtual ring_elem * get_parts(const std::vector< int > &wts, const ring_elem f, long &result_len) const
Definition poly.cpp:1838
virtual ring_elem negate(const ring_elem f) const
Definition poly.cpp:750
ring_elem get_logical_coeff(const Ring *coeffR, const Nterm *&f) const
Definition poly.cpp:1701
const vecterm * vec_locate_lead_term(const FreeModule *F, vec v) const
Definition poly.cpp:2295
ring_elem imp_skew_mult_by_term(const ring_elem f, const ring_elem c, const_monomial m) const
virtual void remove(ring_elem &f) const
Definition poly.cpp:664
gbvector * translate_gbvector_from_ringelem(ring_elem coeff) const
Definition poly.cpp:2487
virtual int compare_elems(const ring_elem f, const ring_elem g) const
Definition poly.cpp:510
virtual ring_elem make_logical_term(const Ring *coeffR, const ring_elem a, const_exponents exp) const
Definition poly.cpp:1882
gbvector * translate_gbvector_from_vec_QQ(const FreeModule *F, const vec v, ring_elem &result_denominator) const
Definition poly.cpp:2504
virtual ring_elem get_terms(int nvars0, const ring_elem f, int lo, int hi) const
Definition poly.cpp:1919
Nterm * powerseries_division_algorithm(Nterm *f, Nterm *g, Nterm *&quot) const
Definition poly.cpp:1553
virtual ring_elem random() const
Definition poly.cpp:1303
virtual bool from_BigReal(gmp_RR z, ring_elem &result) const
Definition poly.cpp:238
bool imp_attempt_to_cancel_lead_term(ring_elem &f, ring_elem g, ring_elem &coeff, monomial monom) const
Definition poly.cpp:1010
virtual ring_elem preferred_associate(ring_elem f) const
Definition poly.cpp:447
ring_elem gcd(const ring_elem f, const ring_elem g) const
Definition poly.cpp:1060
virtual ring_elem subtract(const ring_elem f, const ring_elem g) const
Definition poly.cpp:773
void minimal_monomial(ring_elem f, monomial &monom) const
Definition poly.cpp:1134
virtual void lead_logical_exponents(int nvars0, const ring_elem f, exponents_t result_exp) const
Definition poly.cpp:1746
virtual bool in_subring(int nslots, const ring_elem a) const
Definition poly.cpp:2108
vec vec_coefficient_of_var(vec v, int var, int exp) const
Definition poly.cpp:2345
virtual void degree_of_var(int n, const ring_elem a, int &lo, int &hi) const
Definition poly.cpp:2115
virtual void lower_content(ring_elem &cont, ring_elem new_coeff) const
Definition poly.cpp:2194
virtual bool multi_degree(const ring_elem f, monomial d) const
Definition poly.cpp:553
static void make_trivial_ZZ_poly_ring()
Definition poly.cpp:54
Nterm * new_term() const
Definition poly.cpp:146
virtual bool from_rational(mpq_srcptr q, ring_elem &result) const
Definition poly.cpp:194
virtual int n_logical_terms(int nvars0, const ring_elem f) const
Definition poly.cpp:1764
ring_elem fromSmallIntegerCoefficients(const std::vector< long > &coeffs, int var) const
Definition poly.cpp:2249
PolyRing()
Definition poly.hpp:82
virtual ring_elem divide(const ring_elem f, const ring_elem g) const
Warning! This function works even if g does not divide f.
Definition poly.cpp:993
virtual bool lift(const Ring *R, const ring_elem f, ring_elem &result) const
Definition poly.cpp:415
virtual bool from_Interval(gmp_RRi z, ring_elem &result) const
Definition poly.cpp:250
ring_elem lead_term(const ring_elem f) const
virtual ring_elem get_coeff(const Ring *coeffR, const ring_elem f, const_varpower vp) const
Definition poly.cpp:1989
vec translate_gbvector_to_vec_QQ(const FreeModule *F, const gbvector *v, const ring_elem denom) const
Definition poly.cpp:2576
virtual engine_RawArrayPairOrNull list_form(const Ring *coeffR, const ring_elem f) const
Definition poly.cpp:1789
virtual bool is_zero(const ring_elem f) const
Definition poly.cpp:487
void determine_common_denominator_QQ(ring_elem f, mpz_ptr denom_so_far) const
Definition poly.cpp:2418
virtual M2_arrayint support(const ring_elem a) const
Definition poly.cpp:339
virtual ring_elem lead_logical_coeff(const Ring *coeffR, const ring_elem f) const
Definition poly.cpp:1757
void sort(Nterm *&f) const
Definition poly.cpp:2077
virtual const_monomial lead_flat_monomial(const ring_elem f) const
Definition poly.cpp:1982
virtual ring_elem quotient(const ring_elem f, const ring_elem g) const
Definition poly.cpp:1154
virtual ring_elem lead_flat_coeff(const ring_elem f) const
Definition poly.cpp:1975
gbvector * translate_gbvector_from_vec(const FreeModule *F, const vec v, ring_elem &result_denominator) const
Definition poly.cpp:2542
static PolyRing * trivial_poly_ring
Definition poly.hpp:83
void internal_subtract_to(ring_elem &f, ring_elem &g) const
Definition poly.cpp:744
virtual ring_elem divide_by_var(int n, int d, const ring_elem a) const
Definition poly.cpp:2149
PolynomialRing subclass whose elements are represented as a single flat Nterm* linked list (no fracti...
Definition polyring.hpp:466
Concrete PolyRingFlat subclass implementing ordinary commutative polynomial rings K[x_1,...
Definition poly.hpp:64
Ring()
Definition ring.hpp:136
xxx xxx xxx
Definition ring.hpp:102
Engine-side ring homomorphism: stores, for each source-ring variable, the target-ring element it maps...
Definition ringmap.hpp:60
#define Matrix
Definition factory.cpp:14
#define monomial
Definition gb-toric.cpp:11
const int * const_monomial
Definition imonorder.hpp:45
VALGRIND_MAKE_MEM_DEFINED & result(result)
mpfr_srcptr gmp_RR
Definition m2-types.h:148
struct gmp_CC_struct * gmp_CC
Definition m2-types.h:156
mpfr_ptr gmp_RRmutable
Definition m2-types.h:150
mpfi_srcptr gmp_RRi
Definition m2-types.h:153
engine_RawArrayPair engine_RawArrayPairOrNull
Definition m2-types.h:184
struct gmp_CCi_struct * gmp_CCi
Definition m2-types.h:162
volatile int x
const PolyRing * isUnivariateOverPrimeField(const Ring *R)
Definition poly.cpp:2240
PolynomialRing — abstract polynomial-ring base, the engine's most-reused class.
Ring — the legacy abstract base class for every coefficient and polynomial ring.
ring_elem — the universal value type carried by every Ring* in the engine.
SkewMultiplication — configuration object naming the skew-commuting variables of a ring.
Singly linked-list node carrying one term of a polynomial-ring element.
Definition ringelem.hpp:156