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

◆ mult_monomials()

ring_elem SchurRing::mult_monomials ( const int * m,
const int * n )
private

Definition at line 233 of file schur.cpp.

234{
235 int i;
236
237 exponents_t a_part = ALLOCATE_EXPONENTS(sizeof(int) * (nvars_ + 1));
238 exponents_t b_part = ALLOCATE_EXPONENTS(sizeof(int) * (nvars_ + 1));
239 exponents_t lambda = ALLOCATE_EXPONENTS(2 * sizeof(int) * (nvars_ + 1));
240 exponents_t p = ALLOCATE_EXPONENTS(2 * sizeof(int) * (nvars_ + 1));
241
242 // First: obtain the partitions
243 to_partition(m, a_part);
244 to_partition(n, b_part);
245
246 // Second: make the skew partition
247 int a = b_part[1];
248 for (i = 1; i <= nvars_ && a_part[i] != 0; i++)
249 {
250 p[i] = a + a_part[i];
251 lambda[i] = a;
252 }
253 int top = i - 1;
254 for (i = 1; i <= nvars_ && b_part[i] != 0; i++)
255 {
256 p[top + i] = b_part[i];
257 lambda[top + i] = 0;
258 }
259 p[top + i] = 0;
260 lambda[top + i] = 0;
261
262 // Call the SM() algorithm
263 return skew_schur(lambda, p);
264}
exponents::Exponents exponents_t
Nterm * skew_schur(int *lambda, int *p)
Definition schur.cpp:215
void to_partition(const int *m, int *exp) const
Definition schur.cpp:120
int p
#define ALLOCATE_EXPONENTS(byte_len)
Definition monoid.hpp:62

References ALLOCATE_EXPONENTS, PolynomialRing::nvars_, p, skew_schur(), and to_partition().

Referenced by mult_by_term().