Alexander Belopolsky <belopol...@users.sourceforge.net> added the comment:

I also started to wonder if a tighter upper limit for an acceptable argument 
can be found.

In discussion of issue2138 I saw the following exchange:

"""
> Should there be some upper limit on the argument math.factorial would
take?

I'd say not.  Any such limit would be artificial, and an arbitrary
choice.  Just let the natural time and space requirements be the
limiting factor.
""" - msg62541 - Mark Dickinson -

Still, the original and proposed implementations bail out if n is larger than 
system LONG_MAX.  This is not a limitation because because the result for 
LONG_MAX! would exceed the number of digits that python long integer can hold.

It seems to me that the value of n for which number of digits will exceed 
sys.maxsize can be estimated fairly accurately using Stirling formula.  Only 
two values are relevant in practice - one for sys.maxsize = 2**63-1 and the 
other for sys.maxsize = 2**31-1.  These values can be hardcoded and factorial 
can quickly report the case when n! will exceed maxsize digits instead of 
hanging until memory is exhausted.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue8692>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to