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

◆ betti_make()

M2_arrayint BettiDisplay::betti_make ( int lo,
int hi,
int len,
int * bettis )
staticprivate

Definition at line 100 of file betti.cpp.

101{
102 int d, lev;
103 int hi1 = hi + 1;
104 int len1 = len + 1;
105
106 // Reset 'hi1' to reflect the top degree that occurs
107 for (d = hi; d >= lo; d--)
108 {
109 for (lev = 0; lev <= len; lev++)
110 if (bettis[lev + (len + 1) * (d - lo)] > 0)
111 {
112 hi1 = d;
113 break;
114 }
115 if (hi1 <= hi) break;
116 }
117 if (hi1 > hi) hi1 = hi;
118
119 // Reset 'len1' to reflect the top level that occurs
120 for (lev = len; lev >= 0; lev--)
121 {
122 for (d = lo; d <= hi1; d++)
123 if (bettis[lev + (len + 1) * (d - lo)] > 0)
124 {
125 len1 = lev;
126 break;
127 }
128 if (len1 <= len) break;
129 }
130 if (len1 > len) len1 = len;
131
132 int totallen = (hi1 - lo + 1) * (len1 + 1);
133 M2_arrayint result = M2_makearrayint(3 + totallen);
134
135 result->array[0] = lo;
136 result->array[1] = hi1;
137 result->array[2] = len1;
138
139 int next = 3;
140 for (d = lo; d <= hi1; d++)
141 for (lev = 0; lev <= len1; lev++)
142 result->array[next++] = bettis[lev + (len + 1) * (d - lo)];
143
144 return result;
145}
VALGRIND_MAKE_MEM_DEFINED & result(result)
M2_arrayint M2_makearrayint(int n)
Definition m2-types.cpp:6

References M2_makearrayint(), and result().

Referenced by getBetti().