[PATCH 2/3] collect_common_factors: improve handling of powers.
Now collect_common_factors((a*x+a*y)^(-2)) evaluates to (x+y)^(-2)*a^(-2) as one might expect. --- ginac/normal.cpp | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ginac/normal.cpp b/ginac/normal.cpp index 49f0bd7..fc89710 100644 --- a/ginac/normal.cpp +++ b/ginac/normal.cpp @@ -2513,7 +2513,7 @@ static ex find_common_factor(const ex & for (size_t i=0; i<num; i++) { ex x = e.op(i).to_polynomial(repl); - if (is_exactly_a<add>(x) || is_exactly_a<mul>(x)) { + if (is_exactly_a<add>(x) || is_exactly_a<mul>(x) || is_a<power>(x)) { ex f = 1; x = find_common_factor(x, f, repl); x *= f; @@ -2573,7 +2573,7 @@ term_done: ; } else if (is_exactly_a<power>(e)) { const ex e_exp(e.op(1)); - if (e_exp.info(info_flags::posint)) { + if (e_exp.info(info_flags::integer)) { ex eb = e.op(0).to_polynomial(repl); ex factor_local(_ex1); ex pre_res = find_common_factor(eb, factor_local, repl); -- All science is either physics or stamp collecting.
participants (1)
-
Alexei Sheplyakov