Skip to content

Commit 516b3ca

Browse files
committed
Relational Parsing
1 parent 01b6906 commit 516b3ca

File tree

2 files changed

+17
-9
lines changed

2 files changed

+17
-9
lines changed

symengine/lib/symengine_wrapper.pyx

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -73,13 +73,13 @@ cdef c2py(RCP[const symengine.Basic] o):
7373
else:
7474
r = BooleanAtom.__new__(BooleanFalse)
7575
elif (symengine.is_a_Equality(deref(o))):
76-
r = Equality.__new__(Equality)
76+
r = Relational.__new__(Equality)
7777
elif (symengine.is_a_Unequality(deref(o))):
78-
r = Unequality.__new__(Unequality)
78+
r = Relational.__new__(Unequality)
7979
elif (symengine.is_a_LessThan(deref(o))):
80-
r = LessThan.__new__(LessThan)
80+
r = Relational.__new__(LessThan)
8181
elif (symengine.is_a_StrictLessThan(deref(o))):
82-
r = StrictLessThan.__new__(StrictLessThan)
82+
r = Relational.__new__(StrictLessThan)
8383
elif (symengine.is_a_Gamma(deref(o))):
8484
r = Function.__new__(Gamma)
8585
elif (symengine.is_a_Derivative(deref(o))):
@@ -595,15 +595,14 @@ cdef class Basic(object):
595595
return symengine.eq(deref(A.thisptr), deref(B.thisptr))
596596
elif (op == 3):
597597
return symengine.neq(deref(A.thisptr), deref(B.thisptr))
598-
from sympy import Rel
599598
if (op == 0):
600-
return Rel(A, B, '<')
599+
return c2py(<RCP[const symengine.Basic]>(symengine.Lt(A.thisptr, B.thisptr)))
601600
elif (op == 1):
602-
return Rel(A, B, '<=')
601+
return c2py(<RCP[const symengine.Basic]>(symengine.Le(A.thisptr, B.thisptr)))
603602
elif (op == 4):
604-
return Rel(A, B, '>')
603+
return c2py(<RCP[const symengine.Basic]>(symengine.Gt(A.thisptr, B.thisptr)))
605604
elif (op == 5):
606-
return Rel(A, B, '>=')
605+
return c2py(<RCP[const symengine.Basic]>(symengine.Ge(A.thisptr, B.thisptr)))
607606

608607
def expand(Basic self not None):
609608
return c2py(symengine.expand(self.thisptr))

symengine/tests/test_logic.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@
33
Ge, Gt, Le, Lt, Symbol, I)
44

55
x = Symbol("x")
6+
y = Symbol("y")
67

78
def test_relationals():
9+
assert Eq(0) == true
10+
assert Eq(1) == false
811
assert Eq(x, x) == true
912
assert Eq(0, 0) == true
1013
assert Eq(1, 0) == false
@@ -22,3 +25,9 @@ def test_relationals():
2225
assert Ge(1, 1) == true
2326
assert Eq(I, 2) == false
2427
assert Ne(I, 2) == true
28+
29+
def test_rich_cmp():
30+
assert (x < y) == Lt(x, y)
31+
assert (x <= y) == Le(x, y)
32+
assert (x > y) == Gt(x, y)
33+
assert (x >= y) == Ge(x, y)

0 commit comments

Comments
 (0)