Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
cdef extern from 'symmetrica/def.h': INT mult_schubert_schubert(OP a, OP b, OP result) INT m_perm_sch(OP a, OP b) INT t_SCHUBERT_POLYNOM(OP a, OP b) INT t_POLYNOM_SCHUBERT(OP a, OP b) INT mult_schubert_variable(OP a, OP i, OP r) INT divdiff_perm_schubert(OP perm, OP sb, OP res) INT scalarproduct_schubert(OP a, OP b, OP c) INT divdiff_schubert(OP a, OP schub, OP res)
INT t_2SCHUBERT_POLYNOM(OP a,OP b) INT mult_schubert_polynom(OP a,OP b,OP c)
cdef object _check_schubert(object a, OP ca): else: raise ValueError("a must be a Schubert polynomial over ZZ or QQ") else: raise TypeError("a must be a permutation or a Schubert polynomial")
def mult_schubert_schubert_symmetrica(a, b): """ Multiplies the Schubert polynomials a and b.
EXAMPLES: sage: symmetrica.mult_schubert_schubert([3,2,1], [3,2,1]) X[5, 3, 1, 2, 4] """
except (ValueError, TypeError), err: freeall(ca); freeall(cb); freeall(cres) raise err
def t_SCHUBERT_POLYNOM_symmetrica(a): """ Converts a Schubert polynomial to a 'regular' multivariate polynomial.
EXAMPLES: sage: symmetrica.t_SCHUBERT_POLYNOM([3,2,1]) x0^2*x1 """
except (ValueError, TypeError), err: freeall(ca); freeall(cres) raise err
def t_POLYNOM_SCHUBERT_symmetrica(a): """ Converts a multivariate polynomial a to a Schubert polynomial.
EXAMPLES: sage: R.<x1,x2,x3> = QQ[] sage: w0 = x1^2*x2 sage: symmetrica.t_POLYNOM_SCHUBERT(w0) X[3, 2, 1] """
freeall(ca); freeall(cres) raise TypeError("a (= %s) must be a multivariate polynomial") else: freeall(ca); freeall(cres) raise ValueError("a's base ring must be either ZZ or QQ") else:
def mult_schubert_variable_symmetrica(a, i): """ Returns the product of a and x_i. Note that indexing with i starts at 1.
EXAMPLES: sage: symmetrica.mult_schubert_variable([3,2,1], 2) X[3, 2, 4, 1] sage: symmetrica.mult_schubert_variable([3,2,1], 4) X[3, 2, 1, 4, 6, 5] - X[3, 2, 1, 5, 4] """
except (ValueError, TypeError), err: freeall(ca); freeall(ci); freeall(cres) raise err
def divdiff_perm_schubert_symmetrica(perm, a): r""" Returns the result of applying the divided difference operator $\delta_i$ to $a$ where $a$ is either a permutation or a Schubert polynomial over QQ.
EXAMPLES: sage: symmetrica.divdiff_perm_schubert([2,3,1], [3,2,1]) X[2, 1] sage: symmetrica.divdiff_perm_schubert([3,1,2], [3,2,1]) X[1, 3, 2] sage: symmetrica.divdiff_perm_schubert([3,2,4,1], [3,2,1]) Traceback (most recent call last): ... ValueError: cannot apply \delta_{[3, 2, 4, 1]} to a (= [3, 2, 1]) """
except (ValueError, TypeError), err: freeall(ca); freeall(cperm); freeall(cres) raise err
freeall(ca); freeall(cperm); freeall(cres) raise TypeError("perm must be a permutation") else:
def scalarproduct_schubert_symmetrica(a, b): """ EXAMPLES: sage: symmetrica.scalarproduct_schubert([3,2,1], [3,2,1]) X[1, 3, 5, 2, 4] sage: symmetrica.scalarproduct_schubert([3,2,1], [2,1,3]) X[1, 2, 4, 3] """
except (ValueError, TypeError), err: freeall(ca); freeall(cb); freeall(cres) raise err
else:
def divdiff_schubert_symmetrica(i, a): r""" Returns the result of applying the divided difference operator $\delta_i$ to $a$ where $a$ is either a permutation or a Schubert polynomial over QQ.
EXAMPLES: sage: symmetrica.divdiff_schubert(1, [3,2,1]) X[2, 3, 1] sage: symmetrica.divdiff_schubert(2, [3,2,1]) X[3, 1, 2] sage: symmetrica.divdiff_schubert(3, [3,2,1]) Traceback (most recent call last): ... ValueError: cannot apply \delta_{3} to a (= [3, 2, 1]) """
except (ValueError, TypeError), err: freeall(ca); freeall(ci); freeall(cres) raise err
freeall(ca); freeall(ci); freeall(cres) raise TypeError("i must be an integer") else:
|