I mean:

def binom(n, *ks):
    # Check that there is at least one ki, and that their sum is less than n, and that they are all nonnegative.
    # Returns n! / (prod(ki! for ki in ks) * (n-sum(ks))!)

This would still work for binom(n, k), but would also work for the mulinomial case.

On Sunday, March 22, 2020 at 2:01:18 PM UTC-4, Neil Girdhar wrote:
I really like this idea.  It fixes the weirdness whereby cmath is for complex numbers, and math is for real numbers and integers.  I like separating them into three categories.

One suggestion: Consider generalizing binom to the multinomial coefficent.

def binom(n, *ks):
    # Returns n! / prod(ki! for ki in ks)



On Thursday, July 12, 2018 at 7:57:08 AM UTC-4, Serhiy Storchaka wrote:
What are your thoughts about adding a new imath module for integer
mathematics? It could contain the following functions:

* factorial(n)

Is just moved from the math module, but non-integer types are rejected.
Currently math.factorial() accepts also integer floats like 3.0. It
looks to me, the rationale was that at the time when math.factorial()
was added, all function in the math module worked with floats. But now
we can revise this decision.

* gcd(n, m)

Is just moved from the math module.

* as_integer_ration(x)

Equivalents to:

def as_integer_ration(x):
     if hasattr(x, 'as_integer_ration'):
         return x.as_integer_ration()
         return (x.numerator, x.denominator)

* binom(n, k)

Returns factorial(n) // (factorial(k) * factorial(n-k)), but uses more
efficient algorithm.

* sqrt(n)

Returns the largest integer r such that r**2 <= n and (r+1)**2 > n.

* isprime(n)

Tests if n is a prime number.

* primes()

Returns an iterator of prime numbers: 2, 3, 5, 7, 11, 13,...

Are there more ideas?

Python-ideas mailing list
Code of Conduct: http://python.org/psf/codeofconduct/