34 for (
int i = 1; i <=
wt; i++)
35 if (
xloc[i] ==
x &&
yloc[i] == y)
return i;
38 fprintf(stderr,
"tableau: location (%d,%d) out of range\n",
x, y);
52 for (i = 1;
p[i] != 0; i++)
55 for (j =
p[i]; j > a; j--)
67 for (i = 1;
p[i] != 0; i++)
69 for (j = 1; j <=
lambda[i]; j++) fprintf(stdout,
"-- ");
70 for (; j <=
p[i]; j++) fprintf(stdout,
"%2d ",
elem(i, j));
71 fprintf(stdout,
"\n");
91 if (!
result->initialize_schur())
return nullptr;
100 ERROR(
"not implemented yet");
107 ERROR(
"not implemented yet");
125 M_->to_expvector(m, EXP1);
127 for (
int i =
nvars_ - 1; i >= 1; i--) exp[i] = exp[i + 1] + EXP1[i - 1];
133 for (
int i =
nvars_ - 1; i > 0; i--) EXP1[i - 1] = exp[i] - exp[i + 1];
134 M_->from_expvector(EXP1, m);
149 for (k = 1; k <=
nvars_; k++)
168 int xabove =
_SMtab.xloc[above];
169 int yabove =
_SMtab.yloc[above];
170 for (i = xabove + 1; i <= hi; i++)
171 if (
_SMtab.p[i] < yabove)
break;
199 for (
int i = lo; i <= hi; i++)
203 if (last_one > this_one)
220 for (
int i = 1;
p[i] != 0; i++)
_SMfinalwt += (
p[i] - lambda[i]);
248 for (i = 1; i <=
nvars_ && a_part[i] != 0; i++)
250 p[i] = a + a_part[i];
254 for (i = 1; i <=
nvars_ && b_part[i] != 0; i++)
256 p[top + i] = b_part[i];
293 return power(f, n1.second);
305 for (
int i = 0; i < n; i++)
323 for (i = 1; i <
nvars_; i++)
324 for (j = i + 1; j <=
nvars_; j++)
325 if (exp[i] != exp[j]) mpz_mul_ui(
result,
result, exp[i] - exp[j] + j - i);
327 for (i = 1; i <
nvars_; i++)
328 for (j = i + 1; j <=
nvars_; j++)
329 if (exp[i] != exp[j]) mpz_fdiv_q_ui(
result,
result, j - i);
360 bool needs_parens = p_parens && (n > 1);
363 if (p_plus) o <<
'+';
371 int isone =
M_->is_one(t.monom);
373 K_->elem_text_out(o, t.coeff, p_one, p_plus, p_parens);
376 for (
int i = 2; i <=
nvars_ && EXP[i] != 0; i++) o <<
"," << EXP[i];
380 if (needs_parens) o <<
')';
exponents::Exponents exponents_t
Legacy RingZZ — a Ring-derived integer ring backed by GMP mpz_t.
virtual ring_elem from_long(long n) const
virtual ring_elem mult(const ring_elem f, const ring_elem g) const
virtual void remove(ring_elem &f) const
void sort(Nterm *&f) const
int n_terms(const ring_elem f) const
virtual const Monoid * getMonoid() const
virtual const Ring * getCoefficients() const
void add_to(ring_elem &f, const ring_elem &g) const
static std::pair< bool, int > get_si(mpz_srcptr n)
Nterm * skew_schur(int *lambda, int *p)
ring_elem mult_monomials(const int *m, const int *n)
static SchurRing * create(const PolynomialRing *R)
void to_partition(const int *m, int *exp) const
void bounds(int &lo, int &hi)
virtual void text_out(buffer &o) const
void from_partition(const int *exp, int *m) const
virtual ring_elem mult_by_term(const ring_elem f, const ring_elem c, const int *m) const
void dimension(const int *exp, mpz_t result) const
static SchurRing * createInfinite(const Ring *A)
ring_elem power(const ring_elem f, mpz_srcptr n) const
Exponentiation. This is the default function, if a class doesn't define this.
virtual void elem_text_out(buffer &o, const ring_elem f, bool p_one=true, bool p_plus=false, bool p_parens=false) const
int elem(int x, int y) const
void initialize(int nvars)
void fill(int *lamb, int *pp)
VALGRIND_MAKE_MEM_DEFINED & result(result)
#define ALLOCATE_EXPONENTS(byte_len)
Monoid — variable count, naming, grading, and monomial order of a polynomial ring.
#define newarray_atomic_clear(T, len)
#define newarray_atomic(T, len)
SchurRing — symmetric-function ring with Schur-basis multiplication via Littlewood-Richardson.
Singly linked-list node carrying one term of a polynomial-ring element.
Text-formatting helpers layered on buffer: bignum print, line wrapping, M2_gbTrace-gated emit.