From 49597568c5ba3c5ae68f4294acce0ab4c2603ef7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hannes=20R=C3=BCter?= Date: Tue, 3 Feb 2026 21:10:30 +0000 Subject: [PATCH] Handle expressions not representable by SymPy --- mathics/builtin/numbers/algebra.py | 6 ++++-- mathics/eval/numbers/numbers.py | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/mathics/builtin/numbers/algebra.py b/mathics/builtin/numbers/algebra.py index be3288e59..4c693954f 100644 --- a/mathics/builtin/numbers/algebra.py +++ b/mathics/builtin/numbers/algebra.py @@ -402,8 +402,9 @@ def eval(self, expr, var, evaluation: Evaluation): expr_sympy = expr.to_sympy() var_sympy = var.to_sympy() + # If the expression cannot be handled by Sympy, just return it. if expr_sympy is None or var_sympy is None: - return None + return expr try: result = sympy.apart(expr_sympy, var_sympy) @@ -1393,8 +1394,9 @@ def eval(self, expr, evaluation): "Factor[expr_]" expr_sympy = expr.to_sympy() + # If the expression cannot be handled by Sympy, just return it. if expr_sympy is None: - return None + return expr try: return from_sympy(sympy_factor(expr_sympy)) diff --git a/mathics/eval/numbers/numbers.py b/mathics/eval/numbers/numbers.py index 52821e044..3352adda0 100644 --- a/mathics/eval/numbers/numbers.py +++ b/mathics/eval/numbers/numbers.py @@ -207,8 +207,9 @@ def cancel(expr): else: try: result = expr.to_sympy() + # If the expression cannot be handled by Sympy, just return it. if result is None: - return None + return expr # result = sympy.powsimp(result, deep=True) result = tracing.run_sympy(sympy.cancel, result)