[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