[pypy-svn] r45945 - in pypy/branch/pypy-more-rtti-inprogress: annotation rpython rpython/lltypesystem rpython/test

fijal at codespeak.net fijal at codespeak.net
Fri Aug 24 11:48:41 CEST 2007


Author: fijal
Date: Fri Aug 24 11:48:40 2007
New Revision: 45945

Modified:
   pypy/branch/pypy-more-rtti-inprogress/annotation/binaryop.py
   pypy/branch/pypy-more-rtti-inprogress/rpython/lltypesystem/lloperation.py
   pypy/branch/pypy-more-rtti-inprogress/rpython/rfloat.py
   pypy/branch/pypy-more-rtti-inprogress/rpython/test/test_rfloat.py
Log:
Implement float % float


Modified: pypy/branch/pypy-more-rtti-inprogress/annotation/binaryop.py
==============================================================================
--- pypy/branch/pypy-more-rtti-inprogress/annotation/binaryop.py	(original)
+++ pypy/branch/pypy-more-rtti-inprogress/annotation/binaryop.py	Fri Aug 24 11:48:40 2007
@@ -419,7 +419,7 @@
     def union((flt1, flt2)):
         return SomeFloat()
 
-    add = sub = mul = div = truediv = union
+    mod = add = sub = mul = div = truediv = union
 
     def pow((flt1, flt2), obj3):
         return SomeFloat()

Modified: pypy/branch/pypy-more-rtti-inprogress/rpython/lltypesystem/lloperation.py
==============================================================================
--- pypy/branch/pypy-more-rtti-inprogress/rpython/lltypesystem/lloperation.py	(original)
+++ pypy/branch/pypy-more-rtti-inprogress/rpython/lltypesystem/lloperation.py	Fri Aug 24 11:48:40 2007
@@ -234,6 +234,7 @@
     'float_gt':             LLOp(canfold=True),
     'float_ge':             LLOp(canfold=True),
     'float_pow':            LLOp(canfold=True),
+    'float_mod':            LLOp(canfold=True),
 
     'llong_is_true':        LLOp(canfold=True),
     'llong_neg':            LLOp(canfold=True),

Modified: pypy/branch/pypy-more-rtti-inprogress/rpython/rfloat.py
==============================================================================
--- pypy/branch/pypy-more-rtti-inprogress/rpython/rfloat.py	(original)
+++ pypy/branch/pypy-more-rtti-inprogress/rpython/rfloat.py	Fri Aug 24 11:48:40 2007
@@ -47,6 +47,11 @@
 
     rtype_inplace_truediv = rtype_truediv
 
+    def rtype_mod(_, hop):
+        return _rtype_template(hop, 'mod')
+
+    rtype_inplace_mod = rtype_mod
+
     # turn 'div' on floats into 'truediv'
     rtype_div         = rtype_truediv
     rtype_inplace_div = rtype_inplace_truediv

Modified: pypy/branch/pypy-more-rtti-inprogress/rpython/test/test_rfloat.py
==============================================================================
--- pypy/branch/pypy-more-rtti-inprogress/rpython/test/test_rfloat.py	(original)
+++ pypy/branch/pypy-more-rtti-inprogress/rpython/test/test_rfloat.py	Fri Aug 24 11:48:40 2007
@@ -108,6 +108,12 @@
         res = self.interpret(fn, [2.0, 3.0])
         assert res == 8.0
 
+    def test_float_mod(self):
+        def fn(x, y):
+            return x % y
+        res = self.interpret(fn, [2.33, 1.0])
+        assert res - 0.33 < 0.00000000001
+
 class TestLLtype(BaseTestRfloat, LLRtypeMixin):
 
     def test_hash(self):



More information about the Pypy-commit mailing list