X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginac%2Fpower.cpp;h=8cb6223860cdd2cfef628841cb3cb1fa86766d81;hp=10542b6cc18f9bb7720ccfdccdf9b63b5920dcc3;hb=ebc7c9b1ef9b051ec35a954ff2e6d2da18ab37e4;hpb=f0378a59a453a38ad1887444bf3aee773ee55de1 diff --git a/ginac/power.cpp b/ginac/power.cpp index 10542b6c..8cb62238 100644 --- a/ginac/power.cpp +++ b/ginac/power.cpp @@ -479,13 +479,16 @@ ex power::evalf(int level) const ex eexponent; if (level==1) { - ebasis=basis; - eexponent=exponent; + ebasis = basis; + eexponent = exponent; } else if (level == -max_recursion_level) { throw(std::runtime_error("max recursion level reached")); } else { - ebasis=basis.evalf(level-1); - eexponent=exponent.evalf(level-1); + ebasis = basis.evalf(level-1); + if (!is_ex_exactly_of_type(eexponent,numeric)) + eexponent = exponent.evalf(level-1); + else + eexponent = exponent; } return power(ebasis,eexponent);