13{
15 {
16 ERROR(
"Weyl algebra homogenizing variable out of range");
17 return false;
18 }
20 if (derivs->len != comms->len)
21 {
22 ERROR(
"Weyl algebra: expected arrays of the same length");
23 return false;
24 }
25 for (unsigned int i = 0; i < derivs->len; i++)
26 {
27 if (derivs->array[i] < 0 || derivs->array[i] >=
nvars_)
28 {
29 ERROR(
"Weyl algebra: variable out of range");
30 return false;
31 }
32 if (comms->array[i] < 0 || comms->array[i] >=
nvars_)
33 {
34 ERROR(
"Weyl algebra: variable out of range");
35 return false;
36 }
37 }
38
42
46 {
49 }
50
51
52
53
55 {
56 bool isgraded = true;
60 {
63 D->mult(degx, degD, degxD);
64 if (not D->is_one(degxD))
65 {
66 isgraded = false;
67 break;
68 }
69 }
71 }
72 else
73 {
79 D->mult(degh, degh, deg2h);
80
82 {
85 D->mult(degx, degD, degxD);
86 if (D->compare(deg2h, degxD) !=
EQ)
87 {
88 ERROR(
"Weyl algebra: failed to create homogeneous Weyl algebra");
89 return false;
90 }
91 }
92 }
93
94
96 return true;
97}
void setIsGraded(bool new_val)
const Monoid * degree_monoid() const
bool _homogeneous_weyl_algebra
const int * const_monomial
#define newarray_atomic(T, len)