Mark Dickinson <dicki...@gmail.com> added the comment: > 5. This one bugs me a bit. It is nice to have all the factorial > formulas just work and not have a piecewise definition.
IIRC, in the 'Concrete Mathematics' book, Knuth and co use something like (n choose k) = (n-to-the-k-falling)/k! to get around this: this definition works for all k >= 0 and all integers (or even real numbers) n. Here x-to-the-k-falling means x * (x-1) * ... * (x-k+1). See: http://mathworld.wolfram.com/FallingFactorial.html > Another thought before I forget: The piecewise definition of the > choose function or for binomial coefficients suggests that > supporting the r>n case should be accompanied by supporting > the r<0 case. I'd say not: in the context of sets of combinations/permutations, (rather than just defining the nCr or nPr symbols) r has a definite meaning as a cardinality: "enumerate all subsets of iter of cardinality r" and so it makes sense to me to restrict to the case where r is nonnegative. (If we were talking about the integer-valued function nCr, then I'd agree.) My own guess would be that having combinations(range(n), r) give the empty iterator for r > n is the right thing in the vast majority of situations, even (especially?) where the programmer hasn't anticipated the possibility of r > n. I have yet to see a case where it's useful to raise ValueError. I have access to the Magma algebra package at work; I'll check tomorrow or Friday to see what that does. _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue4816> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com