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

qetasamba.spad line 672 [edit on github]

F: QEtaGradedAlgebra C

AB: QEtaAlgebraBasisCategory(C, F) with

basisElements: % -> XHashTable(Integer, List F)

Y: QEtaComputationCategory(F, AB)

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.