in evaluation/latex2sympy/latex2sympy2.py [0:0]
def convert_relation(rel):
if rel.expr():
return convert_expr(rel.expr())
lh = convert_relation(rel.relation(0))
rh = convert_relation(rel.relation(1))
if rel.LT():
return sympy.StrictLessThan(lh, rh, evaluate=False)
elif rel.LTE():
return sympy.LessThan(lh, rh, evaluate=False)
elif rel.GT():
return sympy.StrictGreaterThan(lh, rh, evaluate=False)
elif rel.GTE():
return sympy.GreaterThan(lh, rh, evaluate=False)
elif rel.EQUAL():
return sympy.Eq(lh, rh, evaluate=False)
elif rel.ASSIGNMENT():
# !Use Global variances
if lh.is_Symbol:
# set value
variances[lh] = rh
var[str(lh)] = rh
return rh
else:
# find the symbols in lh - rh
equation = lh - rh
syms = equation.atoms(sympy.Symbol)
if len(syms) > 0:
# Solve equation
result = []
for sym in syms:
values = sympy.solve(equation, sym)
for value in values:
result.append(sympy.Eq(sym, value, evaluate=False))
return result
else:
return sympy.Eq(lh, rh, evaluate=False)
elif rel.IN():
# !Use Global variances
if hasattr(rh, 'is_Pow') and rh.is_Pow and hasattr(rh.exp, 'is_Mul'):
n = rh.exp.args[0]
m = rh.exp.args[1]
if n in variances:
n = variances[n]
if m in variances:
m = variances[m]
rh = sympy.MatrixSymbol(lh, n, m)
variances[lh] = rh
var[str(lh)] = rh
else:
raise Exception("Don't support this form of definition of matrix symbol.")
return lh
elif rel.UNEQUAL():
return sympy.Ne(lh, rh, evaluate=False)