[pypy-commit] pypy default: ~1% speedup to GCD.

Stian Andreassen pypy.commits at gmail.com
Thu Jul 11 05:26:19 EDT 2019


Author: Stian Andreassen
Branch: 
Changeset: r96962:f138227813b8
Date: 2019-07-10 22:41 +0200
http://bitbucket.org/pypy/pypy/changeset/f138227813b8/

Log:	~1% speedup to GCD.

diff --git a/rpython/rlib/rbigint.py b/rpython/rlib/rbigint.py
--- a/rpython/rlib/rbigint.py
+++ b/rpython/rlib/rbigint.py
@@ -3013,7 +3013,7 @@
         a, b = b, a
 
     while b.size > 1:
-        a_ms = a.digit(a.size-1)
+        a_ms = a.digit(abs(a.size-1))
 
         x = 0
         while a_ms & (0xFF << SHIFT-8) == 0:
@@ -3024,12 +3024,12 @@
             a_ms <<= 1
             x += 1
 
-        a_ms |= a.digit(a.size-2) >> SHIFT-x
+        a_ms |= a.digit(abs(a.size-2)) >> SHIFT-x
 
         if a.size == b.size:
-            b_ms = (b.digit(b.size-1) << x) | (b.digit(b.size-2) >> SHIFT-x)
+            b_ms = (b.digit(abs(b.size-1)) << x) | (b.digit(abs(b.size-2)) >> SHIFT-x)
         elif a.size == b.size+1:
-            b_ms = b.digit(b.size-1) >> SHIFT-x
+            b_ms = b.digit(abs(b.size-1)) >> SHIFT-x
         else:
             b_ms = 0
 


More information about the pypy-commit mailing list