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_py_transition

def schubmult_py_transition(perm_dict, v)

C++ transition + Monk kernel; same contract as schubmult_py.

schubmult_py_hybrid

def schubmult_py_hybrid(perm_dict, v)

C++ cost-model dispatch between the v-path and transition kernels; same contract as schubmult_py.

pipe_dream_count

def pipe_dream_count(v)

C++ S_v(1, ..., 1); returns None if v exceeds MAXN.

schubmult_double

def schubmult_double(perm_dict, v, var2, var3, probabilistic=False)

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,
                            probabilistic=False)

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,
                                probabilistic=False)

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.