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

◆ SM()

void SchurRing::SM ( )
private

Definition at line 176 of file schur.cpp.

177{
178 int lo, hi;
179
180 if (_SMcurrent == _SMfinalwt)
181 {
182 // partition is to be output
183 Nterm *f = new_term();
184 f->coeff = K_->from_long(1);
185 // fprintf(stderr, "partition: ");
186 // for (int i=1; i <= nvars_; i++)
187 // fprintf(stderr, " %d", _SMtab.p[i]);
188 // fprintf(stderr, "\n");
190 f->next = _SMresult;
191 _SMresult = f;
192 return;
193 }
194
195 _SMcurrent++;
196 bounds(lo, hi);
197 int this_one = LARGE_NUMBER; // larger than any entry of _SMtab
198 int last_one;
199 for (int i = lo; i <= hi; i++)
200 {
201 last_one = this_one;
202 this_one = _SMtab.p[i];
203 if (last_one > this_one)
204 {
205 _SMtab.p[i]++;
206 _SMtab.xloc[_SMcurrent] = i;
207 _SMtab.yloc[_SMcurrent] = _SMtab.p[i];
208 SM();
209 _SMtab.p[i]--;
210 }
211 }
212 _SMcurrent--;
213}
Nterm * new_term() const
Definition poly.cpp:146
const Ring * K_
Definition polyring.hpp:123
int _SMcurrent
Definition schur.hpp:88
tableau _SMtab
Definition schur.hpp:86
void SM()
Definition schur.cpp:176
void bounds(int &lo, int &hi)
Definition schur.cpp:137
void from_partition(const int *exp, int *m) const
Definition schur.cpp:129
Nterm * _SMresult
Definition schur.hpp:90
int _SMfinalwt
Definition schur.hpp:89
const int LARGE_NUMBER
Definition schur.hpp:41
Nterm * next
Definition ringelem.hpp:157
ring_elem coeff
Definition ringelem.hpp:158
int monom[1]
Definition ringelem.hpp:160

References _SMcurrent, _SMfinalwt, _SMresult, _SMtab, bounds(), Nterm::coeff, from_partition(), PolynomialRing::K_, LARGE_NUMBER, Nterm::monom, PolyRing::new_term(), Nterm::next, and SM().

Referenced by skew_schur(), and SM().