14 for (
int v = 0; v < nskew; v++)
_skew_exp[skew_list[v]] =
true;
21 if (a == 0 || b == 0)
return 1;
32 return (
result % 2 == 0 ? 1 : -1);
35 else if (v1[a] > v2[b])
41 return (
result % 2 == 0 ? 1 : -1);
53 for (
int i = 0; i <
_n_skew; i++)
56 if (exp[v] > 0) deg++;
71 if (exp[v] > 0)
result[next++] = v;
86 if (exp[v] > 0)
result[next++] = v;
115 for (
int i = 0; i <
_n_vars; i++)
117 int cmp = exp2[i] - exp1[i];
118 if (cmp < 0)
return 0;
125 int sign =
sort_sign(a, SKEW1, b, SKEW2);
127 if (c == 2 || c == 3) sign = -sign;
136 for (
int i = 0; i <
_n_vars; i++)
138 int cmp = exp1[i] - exp2[i];
139 if (cmp < 0)
return 0;
149 for (
int i = 0; i <
_n_skew; i++)
152 if (exp[v] >= 2)
return true;
exponents::Exponents exponents_t
int skew_degree(const int *exp) const
unsigned long skew_byte_size
int mult_sign(const int *exp1, const int *exp2) const
bool exp_is_zero(const int *exp) const
int diff(const int *exp1, const int *exp2, int *result) const
int skew_vars(const int *exp, int *result) const
int divide(const int *exp1, const int *exp2, int *result) const
VALGRIND_MAKE_MEM_DEFINED & result(result)
#define ALLOCATE_EXPONENTS(byte_len)
#define EXPONENT_BYTE_SIZE(nvars)
Monoid — variable count, naming, grading, and monomial order of a polynomial ring.
#define newarray_atomic_clear(T, len)
static int sort_sign(int a, int *v1, int b, int *v2)
SkewMultiplication — configuration object naming the skew-commuting variables of a ring.