@@ -2246,6 +2246,7 @@ def eval(self, eqs, vars, evaluation: Evaluation):
2246
2246
eq_list = eqs .elements
2247
2247
else :
2248
2248
eq_list = [eqs ]
2249
+ sympy_conditions = []
2249
2250
sympy_eqs = []
2250
2251
sympy_denoms = []
2251
2252
for eq in eq_list :
@@ -2254,8 +2255,7 @@ def eval(self, eqs, vars, evaluation: Evaluation):
2254
2255
elif eq is SymbolFalse :
2255
2256
return ListExpression ()
2256
2257
elif not eq .has_form ("Equal" , 2 ):
2257
- evaluation .message ("Solve" , "eqf" , eqs )
2258
- return
2258
+ sympy_conditions .append (eq .to_sympy ())
2259
2259
else :
2260
2260
left , right = eq .elements
2261
2261
left = left .to_sympy ()
@@ -2269,6 +2269,10 @@ def eval(self, eqs, vars, evaluation: Evaluation):
2269
2269
numer , denom = eq .as_numer_denom ()
2270
2270
sympy_denoms .append (denom )
2271
2271
2272
+ if not sympy_eqs :
2273
+ evaluation .message ("Solve" , "eqf" , eqs )
2274
+ return
2275
+
2272
2276
vars_sympy = [var .to_sympy () for var in vars ]
2273
2277
if None in vars_sympy :
2274
2278
return
@@ -2333,6 +2337,10 @@ def transform_solution(sol):
2333
2337
for sol in result :
2334
2338
results .extend (transform_solution (sol ))
2335
2339
result = results
2340
+ # filter with conditions before further translation
2341
+ conditions = sympy .And (* sympy_conditions )
2342
+ result = [sol for sol in result if conditions .subs (sol )]
2343
+
2336
2344
if any (
2337
2345
sol and any (var not in sol for var in all_vars_sympy ) for sol in result
2338
2346
):
0 commit comments