]> granicus.if.org Git - python/commit
bpo-36887: add math.isqrt (GH-13244)
authorMark Dickinson <dickinsm@gmail.com>
Sat, 18 May 2019 11:29:50 +0000 (12:29 +0100)
committerGitHub <noreply@github.com>
Sat, 18 May 2019 11:29:50 +0000 (12:29 +0100)
commit73934b9da07daefb203e7d26089e7486a1ce4fdf
tree6d5f9d2f8bd86dbd219685a3e6124af44a158811
parent410759fba80aded5247b693c60745aa16906f3bb
bpo-36887: add math.isqrt (GH-13244)

* 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

* Documentation and markup improvements; thanks Serhiy for the suggestions!

* Cleaner Misc/NEWS entry wording.

* Clean up (with one fix) to the algorithm explanation and proof.
Doc/library/math.rst
Doc/whatsnew/3.8.rst
Lib/test/test_math.py
Misc/NEWS.d/next/Library/2019-05-11-14-50-59.bpo-36887.XD3f22.rst [new file with mode: 0644]
Modules/clinic/mathmodule.c.h
Modules/mathmodule.c