Author: Armin Rigo <[email protected]>
Branch: 
Changeset: r65427:941cffc3ef01
Date: 2013-07-17 12:26 +0200
http://bitbucket.org/pypy/pypy/changeset/941cffc3ef01/

Log:    int_mul

diff --git a/pypy/module/__pypy__/interp_intop.py 
b/pypy/module/__pypy__/interp_intop.py
--- a/pypy/module/__pypy__/interp_intop.py
+++ b/pypy/module/__pypy__/interp_intop.py
@@ -9,3 +9,7 @@
 @unwrap_spec(n=int, m=int)
 def int_sub(space, n, m):
     return space.wrap(intmask(n - m))
+
+@unwrap_spec(n=int, m=int)
+def int_mul(space, n, m):
+    return space.wrap(intmask(n * m))
diff --git a/pypy/module/__pypy__/test/test_intop.py 
b/pypy/module/__pypy__/test/test_intop.py
--- a/pypy/module/__pypy__/test/test_intop.py
+++ b/pypy/module/__pypy__/test/test_intop.py
@@ -3,6 +3,23 @@
 class AppTestIntOp:
     spaceconfig = dict(usemodules=['__pypy__'])
 
+    def w_intmask(self, n):
+        import sys
+        n &= (sys.maxint*2+1)
+        if n > sys.maxint:
+            n -= 2*(sys.maxint+1)
+        return int(n)
+
+    def test_intmask(self):
+        import sys
+        assert self.intmask(sys.maxint) == sys.maxint
+        assert self.intmask(sys.maxint+1) == -sys.maxint-1
+        assert self.intmask(-sys.maxint-2) == sys.maxint
+        N = 2 ** 128
+        assert self.intmask(N+sys.maxint) == sys.maxint
+        assert self.intmask(N+sys.maxint+1) == -sys.maxint-1
+        assert self.intmask(N-sys.maxint-2) == sys.maxint
+
     def test_int_add(self):
         import sys
         from __pypy__ import intop
@@ -16,3 +33,10 @@
         assert intop.int_sub(40, -2) == 42
         assert intop.int_sub(sys.maxint, -1) == -sys.maxint-1
         assert intop.int_sub(-2, sys.maxint) == sys.maxint
+
+    def test_int_mul(self):
+        import sys
+        from __pypy__ import intop
+        assert intop.int_mul(40, -2) == -80
+        assert intop.int_mul(-sys.maxint, -sys.maxint) == (
+            self.intmask(sys.maxint ** 2))
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to