From f72e1912c287b73a91fda054c6ca68440fb8d0ca Mon Sep 17 00:00:00 2001 From: "Vladimir V. Kisil" Date: Wed, 31 Dec 2014 18:07:26 +0000 Subject: [PATCH] Evaluate abs(z)^(2n) -> z^n * conjugate(z)^n. --- ginac/inifcns.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/ginac/inifcns.cpp b/ginac/inifcns.cpp index 02c909f3..d4087e22 100644 --- a/ginac/inifcns.cpp +++ b/ginac/inifcns.cpp @@ -302,10 +302,12 @@ static ex abs_imag_part(const ex& arg) static ex abs_power(const ex & arg, const ex & exp) { - if (arg.is_equal(arg.conjugate()) && ((is_a(exp) && ex_to(exp).is_even()) - || exp.info(info_flags::even))) - return power(arg, exp); - else + if ((is_a(exp) && ex_to(exp).is_even()) || exp.info(info_flags::even)) { + if (arg.info(info_flags::real) || arg.is_equal(arg.conjugate())) + return power(arg, exp); + else + return power(arg, exp/2)*power(arg.conjugate(), exp/2); + } else return power(abs(arg), exp).hold(); } -- 2.44.0