summaryrefslogtreecommitdiffstats
path: root/Doc/library/math.rst
diff options
context:
space:
mode:
authorMark Dickinson <dickinsm@gmail.com>2019-05-18 11:29:50 (GMT)
committerGitHub <noreply@github.com>2019-05-18 11:29:50 (GMT)
commit73934b9da07daefb203e7d26089e7486a1ce4fdf (patch)
tree6d5f9d2f8bd86dbd219685a3e6124af44a158811 /Doc/library/math.rst
parent410759fba80aded5247b693c60745aa16906f3bb (diff)
downloadcpython-73934b9da07daefb203e7d26089e7486a1ce4fdf.zip
cpython-73934b9da07daefb203e7d26089e7486a1ce4fdf.tar.gz
cpython-73934b9da07daefb203e7d26089e7486a1ce4fdf.tar.bz2
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.
Diffstat (limited to 'Doc/library/math.rst')
-rw-r--r--Doc/library/math.rst17
1 files changed, 17 insertions, 0 deletions
diff --git a/Doc/library/math.rst b/Doc/library/math.rst
index 49f932d..bf660ae 100644
--- a/Doc/library/math.rst
+++ b/Doc/library/math.rst
@@ -166,6 +166,20 @@ Number-theoretic and representation functions
Return ``True`` if *x* is a NaN (not a number), and ``False`` otherwise.
+.. function:: isqrt(n)
+
+ Return the integer square root of the nonnegative integer *n*. This is the
+ floor of the exact square root of *n*, or equivalently the greatest integer
+ *a* such that *a*\ ² |nbsp| ≤ |nbsp| *n*.
+
+ For some applications, it may be more convenient to have the least integer
+ *a* such that *n* |nbsp| ≤ |nbsp| *a*\ ², or in other words the ceiling of
+ the exact square root of *n*. For positive *n*, this can be computed using
+ ``a = 1 + isqrt(n - 1)``.
+
+ .. versionadded:: 3.8
+
+
.. function:: ldexp(x, i)
Return ``x * (2**i)``. This is essentially the inverse of function
@@ -538,3 +552,6 @@ Constants
Module :mod:`cmath`
Complex number versions of many of these functions.
+
+.. |nbsp| unicode:: 0xA0
+ :trim: