Skip to content

schubmult.mult._accel

C++ multiplication kernels (the schubmult_cpp extension, built from cpp/ by setup.py).

schubmult_py, schubmult_double, schubmult_q_fast, schubmult_q_double_fast and the *_from_elems kernels dispatch here. The extension is a required part of the package; the pure-Python kernels remain only as the fallback for permutations beyond the compiled MAXN (the wrappers return None in that case). Set SCHUBMULT_NO_CPP=1 to force the Python kernels.

schubmult_py

def schubmult_py(perm_dict, v)

C++ schubmult_py; returns None if any coefficient is non-integer or the size exceeds MAXN.

schubmult_double

def schubmult_double(perm_dict, v, var2, var3)

C++ schubmult_double; returns None if the size exceeds MAXN.

schubmult_q_fast

def schubmult_q_fast(perm_dict, v, q_var)

C++ schubmult_q_fast; non-integer coefficients are handled by linearity, one key at a time.

schubmult_q_double_fast

def schubmult_q_double_fast(perm_dict, v, var2, var3, q_var)

C++ schubmult_q_double_fast; returns None if the size exceeds MAXN.

schubmult_double_from_elems

def schubmult_double_from_elems(perm_dict, v, var2, var3, elem_func)

C++ schubmult_double with a custom elementary-symmetric elem_func; None if size exceeds MAXN.

schubmult_double_alt_from_elems

def schubmult_double_alt_from_elems(perm_dict, v, var2, var3, elem_func)

C++ schubmult_double_alt_from_elems; None if size exceeds MAXN.