[pypy-commit] [Git][pypy/pypy][branch/default] 32 commits: randomly implement a faster divmod for very large numbers, following Mark

Carl Friedrich Bolz-Tereick foss at heptapod.net
Tue Apr 13 04:48:33 EDT 2021



Carl Friedrich Bolz-Tereick pushed to branch branch/default at PyPy / pypy


Commits:
9732fa80 by Carl Friedrich Bolz-Tereick at 2021-03-19T21:33:13+01:00
randomly implement a faster divmod for very large numbers, following Mark
Dickinson's approach from this issue: https://bugs.python.org/issue3451

--HG--
branch : faster-rbigint-big-divmod

- - - - -
0185aad6 by Carl Friedrich Bolz-Tereick at 2021-03-19T21:34:17+01:00
for reference, before the introduction of extract_bits

--HG--
branch : faster-rbigint-big-divmod

- - - - -
d3fd8ae9 by Carl Friedrich Bolz-Tereick at 2021-03-19T21:34:35+01:00
and get it back

--HG--
branch : faster-rbigint-big-divmod

- - - - -
4400655a by Carl Friedrich Bolz-Tereick at 2021-03-20T16:56:17+01:00
boost size once, not many times during the recursion

--HG--
branch : faster-rbigint-big-divmod

- - - - -
dde7da59 by Carl Friedrich Bolz-Tereick at 2021-03-21T13:02:43+01:00
some tweaks

--HG--
branch : faster-rbigint-big-divmod

- - - - -
379a10b8 by Carl Friedrich Bolz-Tereick at 2021-03-21T15:39:38+01:00
some tweaks (more possible)

--HG--
branch : faster-rbigint-big-divmod

- - - - -
2419dc5c by Carl Friedrich Bolz-Tereick at 2021-03-21T18:54:26+01:00
remove quadraticness

--HG--
branch : faster-rbigint-big-divmod

- - - - -
c52b6ad0 by Carl Friedrich Bolz-Tereick at 2021-03-21T20:34:16+01:00
tweaks

--HG--
branch : faster-rbigint-big-divmod

- - - - -
ed5bf211 by Carl Friedrich Bolz-Tereick at 2021-03-22T07:26:48+01:00
do less extracting

--HG--
branch : faster-rbigint-big-divmod

- - - - -
f881ae87 by Carl Friedrich Bolz-Tereick at 2021-03-22T11:39:36+01:00
no need for extract_bits any more, all based on digits

--HG--
branch : faster-rbigint-big-divmod

- - - - -
43f8b55e by Carl Friedrich Bolz-Tereick at 2021-03-22T13:06:03+01:00
start integrating divmod_big

--HG--
branch : faster-rbigint-big-divmod

- - - - -
06fd2475 by Carl Friedrich Bolz-Tereick at 2021-03-22T13:50:32+01:00
tweak heuristics

--HG--
branch : faster-rbigint-big-divmod

- - - - -
6b60817e by Carl Friedrich Bolz-Tereick at 2021-03-22T14:00:42+01:00
tune _full_digits_lshift_then_or

--HG--
branch : faster-rbigint-big-divmod

- - - - -
a2eb5fde by Carl Friedrich Bolz-Tereick at 2021-03-23T13:20:20+01:00
test and fix: should never use the length of ._digits, always numdigits()

bug found by afl after 12h!

--HG--
branch : faster-rbigint-big-divmod

- - - - -
53fc4b57 by Carl Friedrich Bolz-Tereick at 2021-03-23T13:23:19+01:00
rename

--HG--
branch : faster-rbigint-big-divmod

- - - - -
519e74bd by Carl Friedrich Bolz-Tereick at 2021-03-24T10:43:59+01:00
add a diagram

--HG--
branch : faster-rbigint-big-divmod

- - - - -
453eb266 by Carl Friedrich Bolz-Tereick at 2021-03-24T10:55:46+01:00
typo :-(

--HG--
branch : faster-rbigint-big-divmod

- - - - -
5d37d08c by Carl Friedrich Bolz-Tereick at 2021-03-24T13:33:53+01:00
kill c-based comments

--HG--
branch : faster-rbigint-big-divmod

- - - - -
16715209 by Carl Friedrich Bolz-Tereick at 2021-03-24T19:28:42+01:00
kill redundant code

--HG--
branch : faster-rbigint-big-divmod

- - - - -
83abb3cc by Carl Friedrich Bolz-Tereick at 2021-03-24T20:20:43+01:00
shortcut

--HG--
branch : faster-rbigint-big-divmod

- - - - -
a08e2415 by Carl Friedrich Bolz-Tereick at 2021-03-25T09:02:54+01:00
center

--HG--
branch : faster-rbigint-big-divmod

- - - - -
2a90c6a5 by Carl Friedrich Bolz-Tereick at 2021-03-25T10:15:48+01:00
run the hypothesis tests in a special mode where SHIFT is set to a small value,
to find edge cases more easily

--HG--
branch : faster-rbigint-big-divmod

- - - - -
65734934 by Carl Friedrich Bolz-Tereick at 2021-03-26T12:57:30+01:00
fixes

--HG--
branch : faster-rbigint-big-divmod

- - - - -
3ac5b256 by Carl Friedrich Bolz-Tereick at 2021-03-26T13:35:52+01:00
improve coverage

--HG--
branch : faster-rbigint-big-divmod

- - - - -
8e246f9f by Carl Friedrich Bolz-Tereick at 2021-04-12T10:58:34+02:00
oops, fix wrong test

--HG--
branch : faster-rbigint-big-divmod

- - - - -
5ba4e56d by Carl Friedrich Bolz-Tereick at 2021-04-12T10:59:09+02:00
be paranoid: check that the result of divmod is correct, if we use the new
faster (and more complicated) code path. better an assertion error than a wrong
result

--HG--
branch : faster-rbigint-big-divmod

- - - - -
4ce4db16 by Carl Friedrich Bolz-Tereick at 2021-04-12T12:41:00+02:00
ouch, something wrong on 32 bit. add some debug prints to find it on the buildbot

--HG--
branch : faster-rbigint-big-divmod

- - - - -
e9d01388 by Carl Friedrich Bolz-Tereick at 2021-04-12T12:48:50+02:00
hrmpf

--HG--
branch : faster-rbigint-big-divmod

- - - - -
16f8b228 by Carl Friedrich Bolz-Tereick at 2021-04-12T14:18:32+02:00
another attempt

--HG--
branch : faster-rbigint-big-divmod

- - - - -
f9127129 by Carl Friedrich Bolz-Tereick at 2021-04-12T19:58:53+02:00
last attempt :-(

--HG--
branch : faster-rbigint-big-divmod

- - - - -
27a36ee0 by Carl Friedrich Bolz-Tereick at 2021-04-12T21:07:42+02:00
the assert itself was wrong :-(((((. This is just incompetent flailing at this
point.

--HG--
branch : faster-rbigint-big-divmod

- - - - -
8224a96f by Carl Friedrich Bolz-Tereick at 2021-04-13T10:48:20+02:00
merge faster-rbigint-big-divmod: a faster divide-and-conquer divmod
implementation for divmod of rbigints, given large enough numbers. based on
python code by Mark Dickinson here: https://bugs.python.org/issue3451

- - - - -


3 changed files:

- .hgignore
- rpython/rlib/rbigint.py
- rpython/rlib/test/test_rbigint.py


View it on GitLab: https://foss.heptapod.net/pypy/pypy/-/compare/9489e8f51ffc6c2d952c90992f6a7de766bde47c...8224a96f034ed96f01f44a998b6981a1106c67b6

-- 
View it on Heptapod: https://foss.heptapod.net/pypy/pypy/-/compare/9489e8f51ffc6c2d952c90992f6a7de766bde47c...8224a96f034ed96f01f44a998b6981a1106c67b6
You're receiving this email because of your account on foss.heptapod.net.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.python.org/pipermail/pypy-commit/attachments/20210413/c338af34/attachment.html>


More information about the pypy-commit mailing list