This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author rhettinger PedanticHacker, Stefan Pochmann, mark.dickinson, mcognetta, rhettinger, serhiy.storchaka, tim.peters 2022-01-13.03:42:10 -1.0 Yes <1642045330.14.0.612366836289.issue37295@roundup.psfhosted.org>
Content
```def comb64(n, k):
'comb(n, k) in multiplicative group modulo 64-bits'
return (F[n] * Finv[k] * Finv[n-k] & (2**64-1)) << (S[n] - S[k] - S[n - k])

def comb_iterative(n, k):
'Straight multiply and divide when k is small.'
result = 1
for r in range(1, k+1):
result *= n - r + 1
result //= r
return result

def C(n, k):
k = min(k, n - k)
if k == 0: return 1
if k == 1: return n
if k < len(k2n) and n <= k2n[k]:  return comb64(n, k) # 64-bit fast case
if k == FixedJ and n <= Jlim:  return KnownComb[n]    # Precomputed diagonal
if k < 10: return comb_iterative(n, k)                # Non-recursive for small k
j = FixedJ if k > FixedJ and n <= Jlim else k // 2
return C(n, j) * C(n-j, k-j) // C(k, j)               # Recursive case```
History
Date User Action Args
2022-01-13 03:42:10rhettingersetrecipients: + rhettinger, tim.peters, mark.dickinson, serhiy.storchaka, PedanticHacker, mcognetta, Stefan Pochmann
2022-01-13 03:42:10rhettingersetmessageid: <1642045330.14.0.612366836289.issue37295@roundup.psfhosted.org>