Q-Pochhammer
def q_pochhammer(a, q, n): """ calculate q-pochhammer defined as n-1 k (a;q) = prod (1 - a q ) n k=0 """ product = 1 for k in range(n): term = 1 - a * (q ** k) product *= term return product for a, q, n in [ (2, 2, 1), (2, 2, 4), (5, 5, 4), (1 / 3, 1 / 3, 100), (1 / 2, 1 / 2, 1), (1 / 2, 1 / 2, 2), (1 / 2, 1 / 2, 3), (1 / 2, 1 / 2, 4), (1 / 2, 1 / 2, 10), (1 / 2, 1 / 2, 50), (1 / 2, 1 / 2, 100),..