[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