diff options
author | Mark Dickinson <mdickinson@enthought.com> | 2019-05-19 16:51:56 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-19 16:51:56 (GMT) |
commit | 5c08ce9bf712acbb3f05a3a57baf51fcb534cdf0 (patch) | |
tree | f31a368cd3f31951303766f605111f9589612d44 /Lib | |
parent | 7c59362a15dfce538512ff1fce4e07d33a925cfb (diff) | |
download | cpython-5c08ce9bf712acbb3f05a3a57baf51fcb534cdf0.zip cpython-5c08ce9bf712acbb3f05a3a57baf51fcb534cdf0.tar.gz cpython-5c08ce9bf712acbb3f05a3a57baf51fcb534cdf0.tar.bz2 |
bpo-36957: Speed up math.isqrt (#13405)
* Add math.isqrt function computing the integer square root.
* Code cleanup: remove redundant comments, rename some variables.
* Tighten up code a bit more; use Py_XDECREF to simplify error handling.
* Update Modules/mathmodule.c
Co-Authored-By: Serhiy Storchaka <storchaka@gmail.com>
* Update Modules/mathmodule.c
Use real argument clinic type instead of an alias
Co-Authored-By: Serhiy Storchaka <storchaka@gmail.com>
* Add proof sketch
* Updates from review.
* Correct and expand documentation.
* Fix bad reference handling on error; make some variables block-local; other tidying.
* Style and consistency fixes.
* Add missing error check; don't try to DECREF a NULL a
* Simplify some error returns.
* Another two test cases:
- clarify that floats are rejected even if they happen to be
squares of small integers
- TypeError beats ValueError for a negative float
* Add fast path for small inputs. Needs tests.
* Speed up isqrt for n >= 2**64 as well; add extra tests.
* Reduce number of test-cases to avoid dominating the run-time of test_math.
* Don't perform unnecessary extra iterations when computing c_bit_length.
* Abstract common uint64_t code out into a separate function.
* Cleanup.
* Add a missing Py_DECREF in an error branch. More cleanup.
* Update Modules/mathmodule.c
Add missing `static` declaration to helper function.
Co-Authored-By: Serhiy Storchaka <storchaka@gmail.com>
* Add missing backtick.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/test_math.py | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/Lib/test/test_math.py b/Lib/test/test_math.py index a11a344..853a0e6 100644 --- a/Lib/test/test_math.py +++ b/Lib/test/test_math.py @@ -917,6 +917,7 @@ class MathTests(unittest.TestCase): test_values = ( list(range(1000)) + list(range(10**6 - 1000, 10**6 + 1000)) + + [2**e + i for e in range(60, 200) for i in range(-40, 40)] + [3**9999, 10**5001] ) |