[pypy-svn] r45583 - in pypy/dist/pypy/lang/prolog: builtin interpreter/test
cfbolz at codespeak.net
cfbolz at codespeak.net
Fri Aug 10 15:17:09 CEST 2007
Author: cfbolz
Date: Fri Aug 10 15:17:06 2007
New Revision: 45583
Modified:
pypy/dist/pypy/lang/prolog/builtin/arithmeticbuiltin.py
pypy/dist/pypy/lang/prolog/interpreter/test/test_arithmetic.py
Log:
fix problem of comparisons
Modified: pypy/dist/pypy/lang/prolog/builtin/arithmeticbuiltin.py
==============================================================================
--- pypy/dist/pypy/lang/prolog/builtin/arithmeticbuiltin.py (original)
+++ pypy/dist/pypy/lang/prolog/builtin/arithmeticbuiltin.py Fri Aug 10 15:17:06 2007
@@ -41,10 +41,20 @@
eq = False
if isinstance(num1, term.Number):
if isinstance(num2, term.Number):
- eq = num1.num %s num2.num
- elif isinstance(num1, term.Float):
- if isinstance(num2, term.Float):
- eq = num1.floatval %s num2.floatval
+ if not (num1.num %s num2.num):
+ raise error.UnificationFailed()
+ else:
+ return
+ n1 = num1.num
+ else:
+ assert isinstance(num1, term.Float)
+ n1 = num1.floatval
+ if isinstance(num2, term.Number):
+ n2 = num2.num
+ else:
+ assert isinstance(num2, term.Float)
+ n2 = num2.floatval
+ eq = n1 %s n2
if not eq:
raise error.UnificationFailed()""" % (ext, python, python)).compile()
expose_builtin(globals()["impl_arith_%s" % (ext, )], prolog,
Modified: pypy/dist/pypy/lang/prolog/interpreter/test/test_arithmetic.py
==============================================================================
--- pypy/dist/pypy/lang/prolog/interpreter/test/test_arithmetic.py (original)
+++ pypy/dist/pypy/lang/prolog/interpreter/test/test_arithmetic.py Fri Aug 10 15:17:06 2007
@@ -99,5 +99,6 @@
assert_true("1 + 0.001 >= 1 + 0.001.")
assert_true("1 + 0.001 =< 1 + 0.001.")
assert_false("1 > 1.")
+ assert_true("1.1 > 1.")
assert_false("1 =\\= 1.0.")
assert_true("1 =\\= 32.")
More information about the pypy-svn
mailing list