[pypy-commit] pypy math-improvements: remove copy-pasted code between mod and int_mod
cfbolz
pypy.commits at gmail.com
Mon Feb 5 06:03:32 EST 2018
Author: Carl Friedrich Bolz-Tereick <cfbolz at gmx.de>
Branch: math-improvements
Changeset: r93758:f6e9839f73ac
Date: 2018-02-05 12:01 +0100
http://bitbucket.org/pypy/pypy/changeset/f6e9839f73ac/
Log: remove copy-pasted code between mod and int_mod
diff --git a/rpython/rlib/rbigint.py b/rpython/rlib/rbigint.py
--- a/rpython/rlib/rbigint.py
+++ b/rpython/rlib/rbigint.py
@@ -837,32 +837,9 @@
return NULLRBIGINT
if other.sign != 0 and other.numdigits() == 1:
- digit = other.digit(0)
- if digit == 1:
- return NULLRBIGINT
- elif digit == 2:
- modm = self.digit(0) & 1
- if modm:
- return ONENEGATIVERBIGINT if other.sign == -1 else ONERBIGINT
- return NULLRBIGINT
- elif digit & (digit - 1) == 0:
- mod = self.int_and_(digit - 1)
- else:
- # Perform
- size = UDIGIT_TYPE(self.numdigits() - 1)
-
- if size > 0:
- wrem = self.widedigit(size)
- while size > 0:
- size -= 1
- wrem = ((wrem << SHIFT) | self.digit(size)) % digit
- rem = _store_digit(wrem)
- else:
- rem = _store_digit(self.digit(0) % digit)
-
- if rem == 0:
- return NULLRBIGINT
- mod = rbigint([rem], -1 if self.sign < 0 else 1, 1)
+ otherint = other.digit(0) * other.sign
+ assert int_in_valid_range(otherint)
+ return self.int_mod(otherint)
else:
div, mod = _divrem(self, other)
if mod.sign * other.sign == -1:
@@ -892,7 +869,7 @@
else:
# Perform
size = UDIGIT_TYPE(self.numdigits() - 1)
-
+
if size > 0:
wrem = self.widedigit(size)
while size > 0:
More information about the pypy-commit
mailing list