70#error integer type definitions not available
153 const std::vector<int>& heftDegrees,
154 const std::vector<int>& moduleHeftDegrees);
176 for (
int i = 0; i <
nslots; i++) *target++ = *src++;
201 for (
int i = 0; i <
nvars; i++)
211 for (
int i = 0; i <
nvars; i++)
214 if (a > 0) val += a * wt[i];
248 long &result_comp)
const
260 int &result_comp)
const
266 result_comp =
static_cast<int>(m[1]);
268 for (
int i = 0; i < nvars; i++) *result++ = static_cast<int>(*m++);
280 for (
int i =
nvars - 1; i >= 0; i--)
300 for (
int i = 2; i <
nslots; i++)
336 for (
int j =
nslots; j > 0; --j)
337 if (*m++ != *n++)
return false;
346 if (*m++ != *n++)
return false;
349 for (
int j =
nslots - 2; j > 0; --j)
350 if (*m++ != *n++)
return false;
359 for (
int j =
nslots - 1; j > 0; --j)
360 if (
mask & (*m++))
return false;
369 for (
int j =
nslots; j > 0; --j) *
result++ = *m++ + *n++;
377 for (
int j =
nslots; j > 0; --j) *
result++ = *m++ - *n++;
393 for (
int i =
nslots - 2; i > 0; i--)
396 if (cmp < 0)
return false;
424 for (
int i =
nslots - 2; i > 0; i--)
427 if (cmp < 0)
return -1;
428 if (cmp > 0)
return 1;
431 if (cmp < 0)
return 1;
432 if (cmp > 0)
return -1;
445 printf(
"compare_schreyer: ");
454 printf(
" tiebreakers: %ld %ld\n", tie1, tie2);
460 for (
int i =
nslots - 2; i > 0; i--)
463 if (cmp < 0)
return -1;
464 if (cmp > 0)
return 1;
467 if (cmp < 0)
return 1;
468 if (cmp > 0)
return -1;
477 for (
int i =
nslots - 2; i > 0; i--)
480 if (cmp > 0)
return -1;
481 if (cmp < 0)
return 1;
484 if (cmp < 0)
return 1;
485 if (cmp > 0)
return -1;
498 if (cmp > 0)
return -1;
499 if (cmp < 0)
return 1;
503 for (
int i =
nvars - 1; i > 0; i--)
506 if (cmp < 0)
return -1;
507 if (cmp > 0)
return 1;
510 if (cmp < 0)
return 1;
511 if (cmp > 0)
return -1;
529 if (cmp > 0)
return GT;
530 if (cmp < 0)
return LT;
536 for (
int i =
nvars - 1; i >= 0; i--)
539 if (cmp < 0)
return GT;
540 if (cmp > 0)
return LT;
545 for (
int i = 0; i <
nvars; ++i)
548 if (cmp > 0)
return GT;
549 if (cmp < 0)
return LT;
554 if (cmp < 0)
return LT;
555 if (cmp > 0)
return GT;
562 std::cout <<
"comparing: ";
567 std::cout <<
" result: " <<
result << std::endl;
599 for (
int i = 0; i <
nvars; i++)
601 if (m[i] > lcm[i])
return false;
602 if (m[i] == lcm[i])
continue;
603 if (!A &&
p1[i] < lcm[i])
608 if (!B && p2[i] < lcm[i])
653 for (
int i = 0; i <
nvars; i++)
654 if (m[i] > lcm[i])
return false;
656 for (
int i = 0; i <
nvars; i++)
659 if (
p1[i] < a && m[i] < a)
666 if (!A)
return false;
669 for (
int i = 0; i <
nvars; i++)
672 if (p2[i] < a && m[i] < a)
return true;
689 bool &are_disjoint)
const
699 for (
int i =
nvars - 1; i >= 0; --i)
701 if (a[i] != 0 && b[i] != 0) are_disjoint =
false;
702 long c = a[i] - b[i];
712 deg_result =
static_cast<int>(deg);
bool is_equal(const_packed_monomial m, const_packed_monomial n) const
unsigned long ncalls_weight
unsigned long ncalls_to_varpower
void unchecked_divide(const_packed_monomial m, const_packed_monomial n, packed_monomial result) const
unsigned long ncalls_from_expvector
int compare(const_packed_monomial m, const_packed_monomial n) const
compare:
void set_component(long component, packed_monomial m) const
int skew_vars(const SkewMultiplication *skew, const_packed_monomial m, int *skewvars) const
const_packed_monomial const_monomial
void quotient_as_vp(const_packed_monomial a, const_packed_monomial b, varpower_monomial result, int °_result, bool &are_disjoint) const
void to_varpower_monomial(const_packed_monomial m, varpower_monomial result) const
long hash_value(const_packed_monomial m) const
unsigned long ncalls_is_equal_true
unsigned long ncalls_compare
unsigned long ncalls_quotient_as_vp
unsigned long ncalls_unneccesary
std::vector< int > mHeftDegrees
bool to_expvector(const_packed_monomial m, ntuple_monomial result, long &result_comp) const
MonomialInfo(int nvars, const MonomialOrdering *mo, const std::vector< int > &heftDegrees, const std::vector< int > &moduleHeftDegrees)
bool check_monomial(const_packed_monomial m) const
bool unnecessary(const_packed_monomial m, const_packed_monomial p1, const_packed_monomial p2, const_packed_monomial lcm) const
void copy(const_packed_monomial src, packed_monomial target) const
int compare_schreyer(const_packed_monomial m, const_packed_monomial n, const_packed_monomial m0, const_packed_monomial n0, long tie1, long tie2) const
int compare_weightvector(const_packed_monomial m, const_packed_monomial n) const
int componentLocation() const
int max_monomial_size() const
int skew_mult_sign(const SkewMultiplication *skew, const_packed_monomial m, const_packed_monomial n) const
void unchecked_mult(const_packed_monomial m, const_packed_monomial n, packed_monomial result) const
std::vector< int > mModuleHeftDegrees
long last_exponent(const_packed_monomial m) const
int compareVerbose(const_packed_monomial m, const_packed_monomial n) const
int compare_grevlex(const_packed_monomial m, const_packed_monomial n) const
bool divide(const_packed_monomial m, const_packed_monomial n, packed_monomial result) const
long get_component(const_packed_monomial m) const
unsigned long ncalls_to_expvector
bool mult(const_packed_monomial m, const_packed_monomial n, packed_monomial result) const
std::vector< int > mWeightVectors
unsigned long ncalls_get_component
monomial_word monomial_heft(const_packed_monomial m) const
void variable_as_vp(int v, varpower_monomial result) const
int compare_lex(const_packed_monomial m, const_packed_monomial n) const
bool monomial_part_is_equal(const_packed_monomial m, const_packed_monomial n) const
void showAlpha(const_packed_monomial m) const
int monomial_size(const_packed_monomial m) const
unsigned long ncalls_is_equal
unsigned long ncalls_divide
unsigned long ncalls_from_varpower
bool from_expvector(const_ntuple_monomial e, long comp, packed_monomial result) const
unsigned long ncalls_mult
bool one(long comp, packed_monomial result) const
void from_varpower_monomial(const_varpower_monomial m, long comp, packed_monomial result) const
bool to_intstar_vector(const_packed_monomial m, int *result, int &result_comp) const
bool unnecessary1(const_packed_monomial m, const_packed_monomial p1, const_packed_monomial p2, const_packed_monomial lcm) const
int mult_sign(const int *exp1, const int *exp2) const
int skew_vars(const int *exp, int *result) const
Sign-rule helper used by every ring that has a skew-commutative subset of variables (exterior factor,...
VALGRIND_MAKE_MEM_DEFINED & result(result)
Engine-to-interpreter type vocabulary across the C++ / .dd boundary.
monomial_word * packed_monomial
const monomial_word * const_packed_monomial
Engine-boundary C API for assembling block-level MonomialOrderings from declarative pieces.
our_new_delete — per-class opt-in routing of new / delete through bdwgc.
ntuple_word * ntuple_monomial
const ntuple_word * const_ntuple_monomial
F4's dense int64_t exponent-vector specialisation of ExponentVector (legacy).
SkewMultiplication — configuration object naming the skew-commuting variables of a ring.
Front-end-side description of a monomial ordering as a list of mon_part blocks.
varpower_word * varpower_monomial
const varpower_word * const_varpower_monomial
varpower_monomials::Exponent varpower_word
ExponentListIterator< long, false > index_varpower_monomial
F4's (variable, exponent) sparse-monomial ExponentList specialisation (legacy).