From 7cee68903674409c4ce18b88a761e74217c795ee Mon Sep 17 00:00:00 2001 From: Thomas Guillermo Albers Raviola Date: Wed, 29 Jul 2026 17:08:07 +0200 Subject: Fix expand_term error on atomic terms --- series.mac | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'series.mac') diff --git a/series.mac b/series.mac index b1b490d..14849d7 100644 --- a/series.mac +++ b/series.mac @@ -249,23 +249,24 @@ coefficients and finally multiply only upto expansion_order. */ expand_term(expr, coeffs) := block( [tmp], + if atom(expr) then ( + apply1(__expand_term_subst(wrap_exp(expr), coeffs), r_simp_small)) /* TODO: Recursive call instead of error */ - if op(expr) = "+" then ( + elseif op(expr) = "+" then ( error("Term is itself a sum!")) /* For single negation just call recursively */ elseif op(expr) = "-" then ( if length(args(expr)) # 1 then ( error("Unexpected '-' operator with more than 1 argument")), expand(- expand_term(part(expr, 1), coeffs))) - elseif op(expr) = "*" then ( + elseif op(expr) = "*" or op(expr) = "^" then ( expand(__expand_term_prod(expr, coeffs))) elseif op(expr) = "/" then block( [n : part(expr, 1), d : part(expr, 2), expansion_order : expansion_order], expansion_order : expansion_order - lopow(d, r), expand(expand_term(n, coeffs) / d)) - /* TODO: better handle exponents */ else ( - apply1(__expand_term_subst(wrap_exp(expr), coeffs), r_simp_small))); + error(printf(false, "expand_term: invalid operator '~a'", op(expr))))); /* Solve main equations term by term */ -- cgit v1.3