# QEtaSambaPackage(C, F, AB, Y)¶

QEtaSambaPackage implements the algorithm Samba from an article of Ralf Hemmecke: “Dancing Samba with Ramanujan Partition Congruences” (Journal of Symbolic Computation). doi:10.1016/j.jsc.2017.02.001 http://www.risc.jku.at/publications/download/risc_5338/DancingSambaRamanujan.pdf

samba: (F, List F) -> AB

samba(t, m) returns a list z such that C[t, m] and the C[t]-module generated by 1 and z are equal as sets. Assume that qetaGrade(t)>0.

samba: (F, List F, Integer) -> AB

samnba(t, m, g) returns a list z such that C[t, m] and the C[t]-module generated by 1 and z are equal as sets. Assume that qetaGrade(t)>0. The computation is aborted if numberOfGaps(qetaGrade t, [qetaGrade b for b in basis]) is smaller or equal to g. Here basis stands for an intermediate basis that is order-complete, i.e. for each k in 1..qetaGrade(t)-1 it contain an element b with k = positiveRemainder(qetaGrade b, qetaGrade t). In case C is not a field, a basis only counts as order-complete if among the b belonging to the same k the one with the highest grade has a unit as leading coefficient. WARNING! If C is not a field it cannot be guaranteed that the resulting basis is the same as if computing without the genus = number of gaps criterion. One of the untreated elements might lead to a basis element of smaller grade that does not influence the number of gaps, but the property whether or not an element reduces to zero modulo the resulting basis.

samba: (F, List F, Integer, Y -> Y) -> AB

samba(t, m, g, oneStep!) repeats oneStep! as long as there are critical elements in the internal “computation” data structure. It returns earlier if the number of gaps in the basis is equal to g.