17 int nelems = (hidegree - lodegree + 1) *
mNLevels;
19 for (
int i = 0; i < nelems; i++)
mValues[i] = 0;
63 BettiDisplay C(new_lo_degree, new_hi_degree, new_length);
64 int lodeg = std::max(new_lo_degree,
mLoDegree);
65 int hideg = std::min(new_hi_degree,
mHiDegree);
66 int len = std::min(new_length,
mHiLength);
67 for (
int deg = lodeg; deg <= hideg; deg++)
68 for (
int lev = 0; lev <= len; lev++) C.
entry(deg, lev) =
entry(deg, lev);
75 std::cout <<
"Internal error: (" << deg <<
"," << lev <<
") out of range"
97 std::cout << o.
str() << std::endl;
107 for (d = hi; d >= lo; d--)
109 for (lev = 0; lev <= len; lev++)
110 if (bettis[lev + (len + 1) * (d - lo)] > 0)
115 if (hi1 <= hi)
break;
117 if (hi1 > hi) hi1 = hi;
120 for (lev = len; lev >= 0; lev--)
122 for (d = lo; d <= hi1; d++)
123 if (bettis[lev + (len + 1) * (d - lo)] > 0)
128 if (len1 <= len)
break;
130 if (len1 > len) len1 = len;
132 int totallen = (hi1 - lo + 1) * (len1 + 1);
140 for (d = lo; d <= hi1; d++)
141 for (lev = 0; lev <= len1; lev++)
142 result->array[next++] = bettis[lev + (len + 1) * (d - lo)];
155 for (
int lev = 0; lev < len; lev++)
158 for (
int d = lo; d <= hi; d++) sum += a[len * (d - lo) + lev + 3];
163 o <<
" [" << total_sum <<
"]" <<
newline;
164 for (
int d = lo; d <= hi; d++)
168 for (
int lev = 0; lev < len; lev++)
170 int c = a[len * (d - lo) + lev + 3];
BettiDisplay — engine-side container and renderer for the Betti table of a free resolution.
M2_arrayint getBetti() const
void resize(int new_lo_degree, int new_hi_degree, int new_length)
BettiDisplay & operator=(const BettiDisplay &B)
void displayBetti(buffer &o) const
int & entry(int deg, int lev)
static void betti_display(buffer &o, M2_arrayint ar)
void swap(BettiDisplay &B)
static M2_arrayint betti_make(int lo, int hi, int len, int *bettis)
VALGRIND_MAKE_MEM_DEFINED & result(result)
M2_arrayint M2_makearrayint(int n)
void swap(mpfr::mpreal &x, mpfr::mpreal &y)