328{
329 int lev, i, d;
330 int lo =
nodes[0]->output_free_module()->lowest_primary_degree();
332 {
333 int lo1 =
nodes[1]->output_free_module()->lowest_primary_degree() - 1;
334 if (lo1 < lo) lo = lo1;
335 }
337 {
338 int lo2 =
nodes[2]->output_free_module()->lowest_primary_degree() - 2;
339 if (lo2 < lo) lo = lo2;
340 }
341 int hi = lo;
342 int len = 1;
343
344
345 for (lev = 0; lev <
n_nodes; lev++)
346 {
348 if (F->
rank() > 0) len = lev;
349
350 for (i = 0; i < F->
rank(); i++)
351 {
353 if (d > hi) hi = d;
354 }
355 }
356
357 int *bettis;
359
360 for (lev = 0; lev <= len; lev++)
361 {
363
364 for (i = 0; i < F->
rank(); i++)
365 {
367 bettis[lev + (len + 1) * d]++;
368 }
369 }
373}
int primary_degree(int i) const
static void betti_init(int lo, int hi, int len, int *&bettis)
static M2_arrayint betti_make(int lo, int hi, int len, int *bettis)
const FreeModule * free_module(int level) const
VALGRIND_MAKE_MEM_DEFINED & result(result)