From 3f3efed3315f06ca3412bc8f4506e994ab84a8b3 Mon Sep 17 00:00:00 2001 From: "Miss Islington (bot)" <31488909+miss-islington@users.noreply.github.com> Date: Sun, 16 Jun 2019 10:14:02 -0700 Subject: [PATCH] Turn math.isqrt assertion into a comment to clarify its purpose. (GH-14131) (cherry picked from commit 2dfeaa9222e2ed6b6e32faaf08e5b0f77318f0a7) Co-authored-by: Mark Dickinson --- Modules/mathmodule.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/mathmodule.c b/Modules/mathmodule.c index 76d821c65b..82a9a14724 100644 --- a/Modules/mathmodule.c +++ b/Modules/mathmodule.c @@ -1527,10 +1527,10 @@ Here's Python code equivalent to the C implementation below: a = 1 d = 0 for s in reversed(range(c.bit_length())): + # Loop invariant: (a-1)**2 < (n >> 2*(c - d)) < (a+1)**2 e = d d = c >> s a = (a << d - e - 1) + (n >> 2*c - e - d + 1) // a - assert (a-1)**2 < n >> 2*(c - d) < (a+1)**2 return a - (a*a > n) -- 2.50.1