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

◆ get_betti()

M2_arrayint res_comp::get_betti ( int type) const
virtual

Implements ResolutionComputation.

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

1180{
1181 int lo = low_degree();
1182 int hi = high_degree();
1183 int len = (type == 0 ? length_limit : max_level());
1184
1185 int *bettis;
1186 betti_init(lo, hi, len, bettis);
1187
1188 for (int d = lo; d <= hi; d++)
1189 for (int lev = 0; lev <= len; lev++)
1190 {
1191 int val = 0;
1192 switch (type)
1193 {
1194 case 0:
1195 val = n_minimal(lev, d);
1196 break;
1197 case 1:
1198 val = n_pairs(lev, d);
1199 break;
1200 case 2:
1201 val = n_left(lev, d);
1202 break;
1203 case 3:
1204 val = n_monoms(lev, d);
1205 break;
1206 case 4:
1207 ERROR(
1208 "cannot use Minimize=>true unless "
1209 "res(...,FastNonminimal=>true) was used");
1210 return nullptr;
1211 default:
1212 val = -1;
1213 break;
1214 }
1215 bettis[lev + (len + 1) * (d - lo)] = val;
1216 }
1217
1218 M2_arrayint result = betti_make(lo, hi, len, bettis);
1219 freemem(bettis);
1220 return result;
1221}
static void betti_init(int lo, int hi, int len, int *&bettis)
Definition comp-res.cpp:151
static M2_arrayint betti_make(int lo, int hi, int len, int *bettis)
Definition comp-res.cpp:157
int n_left(int lev, int d) const
Definition res-a1.cpp:1142
int n_monoms(int lev, int d) const
Definition res-a1.cpp:1165
int max_level() const
Definition res-a1.cpp:1176
int low_degree() const
Definition res-a1.cpp:1177
int length_limit
Definition res-a1.hpp:99
int n_pairs(int lev, int d) const
Definition res-a1.cpp:1135
int n_minimal(int lev, int d) const
Definition res-a1.cpp:1154
int high_degree() const
Definition res-a1.cpp:1178
void freemem(void *s)
Definition m2-mem.cpp:103
const int ERROR
Definition m2-mem.cpp:55
VALGRIND_MAKE_MEM_DEFINED & result(result)

References ResolutionComputation::betti_init(), ResolutionComputation::betti_make(), ERROR, freemem(), high_degree(), length_limit, low_degree(), max_level(), n_left(), n_minimal(), n_monoms(), n_pairs(), and result().

Referenced by betti_minimal(), betti_nmonoms(), betti_remaining(), and betti_skeleton().