\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0}{\log base \cdot \log base + 0 \cdot 0}\begin{array}{l}
\mathbf{if}\;re \le -7.705421844557647 \cdot 10^{+61}:\\
\;\;\;\;\frac{\log \left(-re\right)}{\log base}\\
\mathbf{elif}\;re \le -9.4018337374793 \cdot 10^{-211}:\\
\;\;\;\;\frac{\log \left(\sqrt{im \cdot im + re \cdot re}\right)}{\log base}\\
\mathbf{elif}\;re \le -1.0773202820966665 \cdot 10^{-239}:\\
\;\;\;\;\frac{\log im}{\log base}\\
\mathbf{elif}\;re \le -4.429404736105875 \cdot 10^{-277}:\\
\;\;\;\;\frac{\log \left(\sqrt{im \cdot im + re \cdot re}\right)}{\log base}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log im}{\log base}\\
\end{array}double f(double re, double im, double base) {
double r1755437 = re;
double r1755438 = r1755437 * r1755437;
double r1755439 = im;
double r1755440 = r1755439 * r1755439;
double r1755441 = r1755438 + r1755440;
double r1755442 = sqrt(r1755441);
double r1755443 = log(r1755442);
double r1755444 = base;
double r1755445 = log(r1755444);
double r1755446 = r1755443 * r1755445;
double r1755447 = atan2(r1755439, r1755437);
double r1755448 = 0.0;
double r1755449 = r1755447 * r1755448;
double r1755450 = r1755446 + r1755449;
double r1755451 = r1755445 * r1755445;
double r1755452 = r1755448 * r1755448;
double r1755453 = r1755451 + r1755452;
double r1755454 = r1755450 / r1755453;
return r1755454;
}
double f(double re, double im, double base) {
double r1755455 = re;
double r1755456 = -7.705421844557647e+61;
bool r1755457 = r1755455 <= r1755456;
double r1755458 = -r1755455;
double r1755459 = log(r1755458);
double r1755460 = base;
double r1755461 = log(r1755460);
double r1755462 = r1755459 / r1755461;
double r1755463 = -9.4018337374793e-211;
bool r1755464 = r1755455 <= r1755463;
double r1755465 = im;
double r1755466 = r1755465 * r1755465;
double r1755467 = r1755455 * r1755455;
double r1755468 = r1755466 + r1755467;
double r1755469 = sqrt(r1755468);
double r1755470 = log(r1755469);
double r1755471 = r1755470 / r1755461;
double r1755472 = -1.0773202820966665e-239;
bool r1755473 = r1755455 <= r1755472;
double r1755474 = log(r1755465);
double r1755475 = r1755474 / r1755461;
double r1755476 = -4.429404736105875e-277;
bool r1755477 = r1755455 <= r1755476;
double r1755478 = r1755477 ? r1755471 : r1755475;
double r1755479 = r1755473 ? r1755475 : r1755478;
double r1755480 = r1755464 ? r1755471 : r1755479;
double r1755481 = r1755457 ? r1755462 : r1755480;
return r1755481;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -7.705421844557647e+61Initial program 45.1
Simplified45.1
Taylor expanded around -inf 11.0
Simplified11.0
rmApplied associate-/l*10.9
Simplified10.9
if -7.705421844557647e+61 < re < -9.4018337374793e-211 or -1.0773202820966665e-239 < re < -4.429404736105875e-277Initial program 20.2
Simplified20.2
rmApplied associate-/r*20.2
Simplified20.1
if -9.4018337374793e-211 < re < -1.0773202820966665e-239 or -4.429404736105875e-277 < re Initial program 30.1
Simplified30.1
Taylor expanded around 0 33.9
Final simplification17.7
herbie shell --seed 2019142
(FPCore (re im base)
:name "math.log/2 on complex, real part"
(/ (+ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (atan2 im re) 0)) (+ (* (log base) (log base)) (* 0 0))))