Macaulay2 Engine
Loading...
Searching...
No Matches

◆ skeleton_stats()

void res_comp::skeleton_stats ( const VECTOR(res_pair *)& reslevel)

Definition at line 1607 of file res-a1.cpp.

1608{
1609 buffer o;
1610 int level;
1611 int maxlevel = reslevel.size() - 1;
1612 int maxdegree = skeleton_maxdegree(reslevel); // max slanted degree
1613 int *bettis = newarray_atomic_clear(int, (maxlevel + 1) * (maxdegree + 1));
1614 for (level = 0; level < reslevel.size(); level++)
1615 {
1616 for (res_pair *p = reslevel[level]; p != nullptr; p = p->next)
1617 {
1618 int d = degree(p);
1619 d -= level;
1620 d -= lodegree;
1621 bettis[level + (maxlevel + 1) * d] += 1;
1622 }
1623 }
1624
1625 // Now make an arrayint so that we may just use betti_display
1626 int lo = lodegree;
1627 int hi = maxdegree;
1628 int len = maxlevel;
1629 int totallen = 3 + (hi - lo + 1) * (len + 1);
1630 M2_arrayint betti = M2_makearrayint(totallen);
1631
1632 betti->array[0] = lo;
1633 betti->array[1] = hi;
1634 betti->array[2] = len;
1635 int next = 3;
1636
1637 for (int d = 0; d <= maxdegree - lodegree; d++)
1638 for (level = 0; level <= maxlevel; level++)
1639 betti->array[next++] = bettis[level + (maxlevel + 1) * d];
1640
1641 betti_display(o, betti);
1642 freemem(bettis);
1643
1644 for (level = 0; level <= maxlevel; level++)
1645 {
1646 o << "---- level " << level << " ----" << newline;
1647 for (res_pair *p = reslevel[level]; p != nullptr; p = p->next)
1648 {
1649 int d = degree(p);
1650 o.put(d, 4);
1651 o << ' ';
1652 text_out(o, p);
1653 }
1654 }
1655 emit(o.str());
1656}
static void betti_display(buffer &o, M2_arrayint a)
Definition comp-res.cpp:207
char * str()
Definition buffer.hpp:72
void put(const char *s)
Definition buffer.cpp:35
int degree(const res_pair *q) const
Definition res-a1.cpp:273
int lodegree
Definition res-a1.hpp:97
void text_out(const res_pair *p) const
Definition res-a1.cpp:1287
int skeleton_maxdegree(const VECTOR(res_pair *)&reslevel)
Definition res-a1.cpp:1593
int p
void freemem(void *s)
Definition m2-mem.cpp:103
M2_arrayint M2_makearrayint(int n)
Definition m2-types.cpp:6
char newline[]
Definition m2-types.cpp:49
#define newarray_atomic_clear(T, len)
Definition newdelete.hpp:93
void emit(const char *s)
Definition text-io.cpp:41

References ResolutionComputation::betti_display(), degree(), emit(), freemem(), lodegree, M2_makearrayint(), newarray_atomic_clear, newline, p, buffer::put(), skeleton_maxdegree(), buffer::str(), and text_out().

Referenced by skeleton().