cpython/Lib
Mark Dickinson 4c8a9a2df3 Issue #8692: Improve performance of math.factorial:
(1) use a different algorithm that roughly halves the total number of
    multiplications required and results in more balanced multiplications
(2) use a lookup table for small arguments
(3) fast accumulation of products in C integer arithmetic rather than
    PyLong arithmetic when possible.

Typical speedup, from unscientific testing on a 64-bit laptop, is 4.5x
to 6.5x for arguments in the range 100 - 10000.

Patch by Daniel Stutzbach; extensive reviews by Alexander Belopolsky.
2010-05-15 17:02:38 +00:00
..
ctypes Merged revisions 80761,80766 via svnmerge from 2010-05-04 19:17:41 +00:00
curses
dbm
distutils Remove traces of MacOS9 support. 2010-05-05 19:11:21 +00:00
email Merged revisions 80800 via svnmerge from 2010-05-06 01:41:14 +00:00
encodings Merged revisions 78806 via svnmerge from 2010-03-08 22:17:58 +00:00
html
http Merged revisions 80583 via svnmerge from 2010-04-28 17:39:48 +00:00
idlelib Merged revisions 79297,79310,79382,79425-79427,79450 via svnmerge from 2010-03-28 00:25:02 +00:00
importlib Remove unnecessary XXX 2010-04-17 00:31:11 +00:00
json Merged revisions 76708 via svnmerge from 2009-12-08 15:57:31 +00:00
lib2to3 Merged revisions 80934 via svnmerge from 2010-05-07 19:10:11 +00:00
logging Merged revisions 79279,79284,79293,79373,79376,79379,79876,79888 via svnmerge from 2010-04-11 16:25:06 +00:00
msilib
multiprocessing Issue #7316: the acquire() method of lock objects in the :mod:`threading` 2010-04-14 15:44:10 +00:00
plat-aix4
plat-darwin
plat-freebsd4 Merged revisions 78644 via svnmerge from 2010-03-04 02:11:41 +00:00
plat-freebsd5 Merged revisions 78644 via svnmerge from 2010-03-04 02:11:41 +00:00
plat-freebsd6 Merged revisions 78644 via svnmerge from 2010-03-04 02:11:41 +00:00
plat-freebsd7 Merged revisions 78644 via svnmerge from 2010-03-04 02:11:41 +00:00
plat-freebsd8 Merged revisions 78644 via svnmerge from 2010-03-04 02:11:41 +00:00
plat-generic
plat-linux2
plat-netbsd1
plat-next3
plat-os2emx Merged revisions 78644 via svnmerge from 2010-03-04 02:11:41 +00:00
plat-sunos5 Merged revisions 78678,78680,78682 via svnmerge from 2010-03-05 03:33:11 +00:00
plat-unixware7
pydoc_data
site-packages
sqlite3 Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from 2010-04-28 22:31:17 +00:00
test Issue #8692: Improve performance of math.factorial: 2010-05-15 17:02:38 +00:00
tkinter Merged revisions 79903,79907 via svnmerge from 2010-04-11 22:04:51 +00:00
unittest remove now useless __ne__ 2010-05-11 00:07:48 +00:00
urllib Merged revisions 81130 via svnmerge from 2010-05-13 03:37:23 +00:00
wsgiref Manually copy patch for bug 7250 from the release26-maint branch. I suck 2010-03-01 21:53:00 +00:00
xml Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from 2010-03-13 23:24:31 +00:00
xmlrpc Issue #7606: XML-RPC traceback stored in X-traceback is now encoded to ASCII 2010-04-16 13:28:05 +00:00
__future__.py
__phello__.foo.py
_abcoll.py
_compat_pickle.py
_dummy_thread.py Issue #7316: the acquire() method of lock objects in the :mod:`threading` 2010-04-14 15:44:10 +00:00
_markupbase.py
_pyio.py Merged revisions 80720 via svnmerge from 2010-05-03 16:48:20 +00:00
_strptime.py
_threading_local.py fixes issue #1522237, bad init check in _threading_local 2010-02-22 19:55:46 +00:00
_weakrefset.py Issue #7105: Make WeakKeyDictionary and WeakValueDictionary robust against 2010-01-08 17:54:23 +00:00
abc.py Merged revisions 77789 via svnmerge from 2010-01-27 02:25:58 +00:00
aifc.py
antigravity.py
argparse.py Merged revisions 79385 via svnmerge from 2010-03-24 22:10:42 +00:00
ast.py
asynchat.py
asyncore.py Merged revisions 80880 via svnmerge from 2010-05-06 20:02:37 +00:00
base64.py convert shebang lines: python -> python3 2010-03-11 22:53:45 +00:00
bdb.py
binhex.py
bisect.py
build_class.py
cProfile.py convert shebang lines: python -> python3 2010-03-11 22:53:45 +00:00
calendar.py
cgi.py Merged revisions 78844 via svnmerge from 2010-03-11 22:05:58 +00:00
cgitb.py
chunk.py
cmd.py Merged revisions 77185-77188,77262,77313,77317,77331-77333,77337-77338 via svnmerge from 2010-01-09 18:53:06 +00:00
code.py
codecs.py
codeop.py
collections.py Minor factoring 2010-04-11 20:41:56 +00:00
colorsys.py
compileall.py Create __pycache__ dir when the pyc path is explicitly given 2010-05-08 19:52:21 +00:00
configparser.py Merged revisions 78232 via svnmerge from 2010-02-19 06:08:41 +00:00
contextlib.py
copy.py
copyreg.py
csv.py Merged revisions 78384 via svnmerge from 2010-02-23 22:57:58 +00:00
decimal.py Merged revisions 80753 via svnmerge from 2010-05-04 14:35:33 +00:00
difflib.py Merged revisions 80004 via svnmerge from 2010-04-12 16:58:02 +00:00
dis.py factor out constant 2010-04-04 23:26:50 +00:00
doctest.py Rolled back revisions 79307 via svnmerge from 2010-04-11 21:39:55 +00:00
dummy_threading.py
filecmp.py
fileinput.py
fnmatch.py
formatter.py
fractions.py Merged revisions 79629 via svnmerge from 2010-04-03 11:18:52 +00:00
ftplib.py Fix issue #4972: adds ftplib.FTP context manager protocol 2010-05-10 14:53:29 +00:00
functools.py Issue 8361: Remove assert from functools.total_ordering 2010-04-10 16:59:03 +00:00
genericpath.py Merged revisions 78018,78035-78040,78042-78043,78046,78048-78052,78054,78059,78075-78080 via svnmerge from 2010-03-14 10:23:39 +00:00
getopt.py
getpass.py
gettext.py
glob.py
gzip.py Merged revisions 80762 via svnmerge from 2010-05-04 18:47:04 +00:00
hashlib.py Merged revisions 78528 via svnmerge from 2010-03-01 02:05:26 +00:00
heapq.py
hmac.py
imaplib.py Merged revisions 77041 via svnmerge from 2009-12-24 16:12:49 +00:00
imghdr.py
inspect.py PEP 3147 2010-04-17 00:19:56 +00:00
io.py
keyword.py convert shebang lines: python -> python3 2010-03-11 22:53:45 +00:00
linecache.py
locale.py Merged revisions 80512 via svnmerge from 2010-04-27 02:45:53 +00:00
macpath.py Merged revisions 79195 via svnmerge from 2010-03-21 12:29:50 +00:00
macurl2path.py
mailbox.py Merged revisions 77952,78030,78102,78104,78107,78206,78216,78296-78297,78328,78331-78332,78336,78339,78343,78378-78379,78415,78559,78717,78791 via svnmerge from 2010-03-21 22:03:03 +00:00
mailcap.py Issue #8496: make mailcap.lookup() always return a list, rather than an iterator. 2010-04-22 13:30:10 +00:00
mimetypes.py Merged revisions 78018,78035-78040,78042-78043,78046,78048-78052,78054,78059,78075-78080 via svnmerge from 2010-03-14 10:23:39 +00:00
modulefinder.py
netrc.py
nntplib.py
ntpath.py Fix ntpath abspath to deal with bytes. 2010-03-08 14:44:41 +00:00
nturl2path.py
numbers.py
opcode.py
optparse.py
os.py Issue #8514: Add os.fsencode() function (Unix only): encode a string to bytes 2010-05-08 11:10:09 +00:00
os2emxpath.py
pdb.doc
pdb.py convert shebang lines: python -> python3 2010-03-11 22:53:45 +00:00
pickle.py Issue #8383: pickle and pickletools use surrogatepass error handler when 2010-04-13 11:07:24 +00:00
pickletools.py Issue #8383: pickle and pickletools use surrogatepass error handler when 2010-04-13 11:07:24 +00:00
pipes.py Merged revisions 77952,78030,78102,78104,78107,78206,78216,78296-78297,78328,78331-78332,78336,78339,78343,78378-78379,78415,78559,78717,78791 via svnmerge from 2010-03-21 22:03:03 +00:00
pkgutil.py
platform.py Merged revisions 80857 via svnmerge from 2010-05-06 03:05:50 +00:00
plistlib.py Merged revisions 80279 via svnmerge from 2010-04-20 21:00:34 +00:00
poplib.py
posixpath.py Merged revisions 78018,78035-78040,78042-78043,78046,78048-78052,78054,78059,78075-78080 via svnmerge from 2010-03-14 10:23:39 +00:00
pprint.py
profile.py Remove traces of MacOS9 support. 2010-05-05 19:11:21 +00:00
pstats.py Forward port total_ordering() and cmp_to_key(). 2010-04-05 18:56:31 +00:00
pty.py
py_compile.py Create __pycache__ dir when the pyc path is explicitly given 2010-05-08 19:52:21 +00:00
pyclbr.py
pydoc.py Remove traces of MacOS9 support. 2010-05-05 19:11:21 +00:00
queue.py
quopri.py convert shebang lines: python -> python3 2010-03-11 22:53:45 +00:00
random.py Issue #7435: Remove duplicate int/long tests, and other 2009-12-05 20:28:34 +00:00
re.py
reprlib.py
rlcompleter.py
runpy.py PEP 3147 2010-04-17 00:19:56 +00:00
sched.py
shelve.py Merged revisions 78141-78142 via svnmerge from 2010-02-11 02:42:19 +00:00
shlex.py
shutil.py Merged revisions 80837 via svnmerge from 2010-05-05 22:43:04 +00:00
site.py Merged revisions 80967 via svnmerge from 2010-05-08 10:49:43 +00:00
smtpd.py convert shebang lines: python -> python3 2010-03-11 22:53:45 +00:00
smtplib.py convert shebang lines: python -> python3 2010-03-11 22:53:45 +00:00
sndhdr.py
socket.py Merged revisions 74426 via svnmerge from 2010-01-04 04:50:36 +00:00
socketserver.py Merged revisions 80484 via svnmerge from 2010-04-25 22:01:43 +00:00
sre_compile.py
sre_constants.py
sre_parse.py #6509: fix re.sub to work properly when the pattern, the string, and the replacement were all bytes. Patch by Antoine Pitrou. 2010-03-06 15:24:08 +00:00
ssl.py Remove unused import 2010-04-26 23:06:26 +00:00
stat.py
string.py
stringprep.py
struct.py
subprocess.py Merged revisions 81179 via svnmerge from 2010-05-14 21:53:45 +00:00
sunau.py
symbol.py convert shebang lines: python -> python3 2010-03-11 22:53:45 +00:00
symtable.py
sysconfig.py Merged revisions 80967 via svnmerge from 2010-05-08 10:49:43 +00:00
tabnanny.py convert shebang lines: python -> python3 2010-03-11 22:53:45 +00:00
tarfile.py Issue #8390: tarfile uses surrogateespace as the default error handler 2010-05-05 21:43:57 +00:00
telnetlib.py
tempfile.py #6077: on Windows, fix truncation of a tempfile.TemporaryFile opened in "wt+" mode: 2009-11-30 00:08:56 +00:00
textwrap.py
this.py
threading.py Issue #850728: Add a *timeout* parameter to the `acquire()` method of 2010-04-17 23:51:58 +00:00
timeit.py convert shebang lines: python -> python3 2010-03-11 22:53:45 +00:00
token.py convert shebang lines: python -> python3 2010-03-11 22:53:45 +00:00
tokenize.py fix for files with coding cookies and BOMs 2010-03-18 22:34:15 +00:00
trace.py convert shebang lines: python -> python3 2010-03-11 22:53:45 +00:00
traceback.py Issue #4486: When an exception has an explicit cause, do not print its implicit context too. 2009-11-28 16:12:28 +00:00
tty.py
turtle.py Merged revisions 79297,79310,79382,79425-79427,79450 via svnmerge from 2010-03-28 00:25:02 +00:00
types.py
uu.py convert shebang lines: python -> python3 2010-03-11 22:53:45 +00:00
uuid.py Merged revisions 80784 via svnmerge from 2010-05-05 15:32:33 +00:00
warnings.py
wave.py use floor division where needed #7681 2010-01-13 03:49:50 +00:00
weakref.py Issue #7105: Make WeakKeyDictionary and WeakValueDictionary robust against 2010-01-08 17:54:23 +00:00
webbrowser.py Merged revisions 80698 via svnmerge from 2010-05-02 09:54:35 +00:00
wsgiref.egg-info
xdrlib.py
zipfile.py PEP 3147 2010-04-17 00:19:56 +00:00