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

◆ complexity()

size_t MutableComplex::complexity ( const iterator & i,
const size_t flags ) const

Definition at line 25 of file mutablecomplex.cpp.

29{
30 (void) flags;
31 ring_elem e;
32 const size_t n = i.index();
33 const std::pair<size_t, size_t> u = *i;
34 mDifferential[n]->get_entry(u.first, u.second, e);
35 // Count terms in the column
36 int s = 0;
37 if (mLocalRing == nullptr)
38 s = mPolynomialRing->n_terms(e);
39 else
40 s = mLocalRing->n_terms(e);
41 for (size_t r = 0; r < mBetti[n]; ++r)
42 {
43 if (r == u.first) continue;
44 mDifferential[n]->get_entry(r, u.second, e);
45 if (mRing->is_zero(e)) continue;
46 if (mLocalRing == nullptr)
47 s += mPolynomialRing->n_terms(e);
48 else
49 s += mLocalRing->n_terms(e);
50 }
51 // Count terms in the row
52 for (size_t c = 0; c < mBetti[n + 1]; ++c)
53 {
54 if (c == u.second) continue;
55 mDifferential[n]->get_entry(u.first, c, e);
56 if (mRing->is_zero(e)) continue;
57 if (mLocalRing == nullptr)
58 s += mPolynomialRing->n_terms(e);
59 else
60 s += mLocalRing->n_terms(e);
61 }
62 // std::cout<<s<<std::endl;
63 // Local case: (size numerator elt) * (row/numerator/size//sum) *
64 // (col/numerator/size//sum)
65 return static_cast<size_t>(s);
66}
std::vector< size_t > mBetti
const size_t flags
const Ring * mRing
const LocalRing * mLocalRing
const PolynomialRing * mPolynomialRing
void size_t s
Definition m2-mem.cpp:271

References flags, mBetti, mLocalRing, mPolynomialRing, mRing, and s.

Referenced by find_unit().