X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginac%2Finifcns.cpp;h=d4087e22b5003fd837d278f552e799fb765a1a97;hp=02c909f313180456e7598794500cad82c4a0370f;hb=f72e1912c287b73a91fda054c6ca68440fb8d0ca;hpb=cfdc2c31088bb196426dd071de5181248df2e160 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(); }