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

◆ betti_make()

M2_arrayint ResolutionComputation::betti_make ( int lo,
int hi,
int len,
int * bettis )
static

Definition at line 157 of file comp-res.cpp.

161{
162 int d, lev;
163 int hi1 = hi + 1;
164 int len1 = len + 1;
165
166 // Reset 'hi1' to reflect the top degree that occurs
167 for (d = hi; d >= lo; d--)
168 {
169 for (lev = 0; lev <= len; lev++)
170 if (bettis[lev + (len + 1) * (d - lo)] > 0)
171 {
172 hi1 = d;
173 break;
174 }
175 if (hi1 <= hi) break;
176 }
177 if (hi1 > hi) hi1 = hi;
178
179 // Reset 'len1' to reflect the top level that occurs
180 for (lev = len; lev >= 0; lev--)
181 {
182 for (d = lo; d <= hi1; d++)
183 if (bettis[lev + (len + 1) * (d - lo)] > 0)
184 {
185 len1 = lev;
186 break;
187 }
188 if (len1 <= len) break;
189 }
190 if (len1 > len) len1 = len;
191
192 int totallen = (hi1 - lo + 1) * (len1 + 1);
193 M2_arrayint result = M2_makearrayint(3 + totallen);
194
195 result->array[0] = lo;
196 result->array[1] = hi1;
197 result->array[2] = len1;
198
199 int next = 3;
200 for (d = lo; d <= hi1; d++)
201 for (lev = 0; lev <= len1; lev++)
202 result->array[next++] = bettis[lev + (len + 1) * (d - lo)];
203
204 return result;
205}
VALGRIND_MAKE_MEM_DEFINED & result(result)
M2_arrayint M2_makearrayint(int n)
Definition m2-types.cpp:6

References M2_makearrayint(), and result().

Referenced by gbres_comp::betti_minimal(), res2_comp::betti_minimal(), res2_comp::betti_nmonoms(), res2_comp::betti_remaining(), and res_comp::get_betti().