[pypy-svn] r40485 - in pypy/dist/pypy: rpython/test translator/cli translator/cli/test

antocuni at codespeak.net antocuni at codespeak.net
Wed Mar 14 15:23:15 CET 2007


Author: antocuni
Date: Wed Mar 14 15:23:12 2007
New Revision: 40485

Modified:
   pypy/dist/pypy/rpython/test/test_rint.py
   pypy/dist/pypy/translator/cli/opcodes.py
   pypy/dist/pypy/translator/cli/test/runtest.py
Log:
implement cast_longlong_to_float for cli and fix the tests



Modified: pypy/dist/pypy/rpython/test/test_rint.py
==============================================================================
--- pypy/dist/pypy/rpython/test/test_rint.py	(original)
+++ pypy/dist/pypy/rpython/test/test_rint.py	Wed Mar 14 15:23:12 2007
@@ -166,7 +166,7 @@
         assert res == 100000000.
         res = self.interpret(f, [r_longlong(1234567890123456789)])
         assert type(res) is float
-        assert res == 1.2345678901234568e+18
+        assert self.float_eq(res, 1.2345678901234568e+18)
 
     def test_float_conversion_implicit(self):
         def f(ii):
@@ -176,7 +176,7 @@
         assert res == 100000001.
         res = self.interpret(f, [r_longlong(1234567890123456789)])
         assert type(res) is float
-        assert res == 1.2345678901234568e+18
+        assert self.float_eq(res, 1.2345678901234568e+18)
 
     def test_rarithmetic(self):
         inttypes = [int, r_uint, r_longlong, r_ulonglong]

Modified: pypy/dist/pypy/translator/cli/opcodes.py
==============================================================================
--- pypy/dist/pypy/translator/cli/opcodes.py	(original)
+++ pypy/dist/pypy/translator/cli/opcodes.py	Wed Mar 14 15:23:12 2007
@@ -224,6 +224,7 @@
     'cast_uint_to_float':       [PushAllArgs, 'conv.u8', 'conv.r8'],
     'cast_float_to_int':        'conv.i4',
     'cast_float_to_uint':       'conv.u4',
+    'cast_longlong_to_float':   'conv.r8',
     'truncate_longlong_to_int': 'conv.i4',
 }
 

Modified: pypy/dist/pypy/translator/cli/test/runtest.py
==============================================================================
--- pypy/dist/pypy/translator/cli/test/runtest.py	(original)
+++ pypy/dist/pypy/translator/cli/test/runtest.py	Wed Mar 14 15:23:12 2007
@@ -23,7 +23,7 @@
 from pypy.translator.cli.entrypoint import BaseEntryPoint
 from pypy.translator.cli.support import patch, unpatch
 
-FLOAT_PRECISION = 8
+FLOAT_PRECISION = 10
 
 def check(func, annotation, args):
     mono = compile_function(func, annotation)
@@ -287,7 +287,8 @@
             assert False, 'function did raise no exception at all'
 
     def float_eq(self, x, y):
-        return round(x, FLOAT_PRECISION) == round(y, FLOAT_PRECISION)        
+        diff = abs(x-y)
+        return diff/x < 10**-FLOAT_PRECISION
 
     def ll_to_string(self, s):
         return s



More information about the Pypy-commit mailing list