diff options
| author | Thomas Guillermo Albers Raviola <thomas@thomaslabs.org> | 2026-07-29 17:08:07 +0200 |
|---|---|---|
| committer | Thomas Guillermo Albers Raviola <thomas@thomaslabs.org> | 2026-07-29 17:08:07 +0200 |
| commit | 7cee68903674409c4ce18b88a761e74217c795ee (patch) | |
| tree | 9f68d4cc99237dc628d1d6467cd45eb51fd7950a | |
| parent | 7951b981dba39c5f3a7cab91af3c9a3d5edafbfb (diff) | |
Fix expand_term error on atomic terms
| -rw-r--r-- | series.mac | 9 |
1 files changed, 5 insertions, 4 deletions
@@ -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 */ |
