\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\begin{array}{l}
\mathbf{if}\;re \le -3.21907540931537393 \cdot 10^{117}:\\
\;\;\;\;\frac{\frac{\left(-1 \cdot \log \left(\frac{-1}{re}\right)\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\
\mathbf{elif}\;re \le -7.2713402830638425 \cdot 10^{-171}:\\
\;\;\;\;\frac{\frac{\log \left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\
\mathbf{elif}\;re \le 1.9780598850161828 \cdot 10^{-206}:\\
\;\;\;\;\frac{\log im}{\log base}\\
\mathbf{elif}\;re \le 6.21416753908483653 \cdot 10^{-142}:\\
\;\;\;\;\frac{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}\\
\mathbf{elif}\;re \le 1.492585514901269 \cdot 10^{-103}:\\
\;\;\;\;\frac{\log im}{\log base}\\
\mathbf{elif}\;re \le 2.43405196972925384 \cdot 10^{101}:\\
\;\;\;\;\frac{\frac{\log \left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}\\
\end{array}double f(double re, double im, double base) {
double r40471 = re;
double r40472 = r40471 * r40471;
double r40473 = im;
double r40474 = r40473 * r40473;
double r40475 = r40472 + r40474;
double r40476 = sqrt(r40475);
double r40477 = log(r40476);
double r40478 = base;
double r40479 = log(r40478);
double r40480 = r40477 * r40479;
double r40481 = atan2(r40473, r40471);
double r40482 = 0.0;
double r40483 = r40481 * r40482;
double r40484 = r40480 + r40483;
double r40485 = r40479 * r40479;
double r40486 = r40482 * r40482;
double r40487 = r40485 + r40486;
double r40488 = r40484 / r40487;
return r40488;
}
double f(double re, double im, double base) {
double r40489 = re;
double r40490 = -3.219075409315374e+117;
bool r40491 = r40489 <= r40490;
double r40492 = -1.0;
double r40493 = r40492 / r40489;
double r40494 = log(r40493);
double r40495 = r40492 * r40494;
double r40496 = base;
double r40497 = log(r40496);
double r40498 = r40495 * r40497;
double r40499 = im;
double r40500 = atan2(r40499, r40489);
double r40501 = 0.0;
double r40502 = r40500 * r40501;
double r40503 = r40498 + r40502;
double r40504 = r40497 * r40497;
double r40505 = r40501 * r40501;
double r40506 = r40504 + r40505;
double r40507 = sqrt(r40506);
double r40508 = r40503 / r40507;
double r40509 = r40508 / r40507;
double r40510 = -7.2713402830638425e-171;
bool r40511 = r40489 <= r40510;
double r40512 = r40489 * r40489;
double r40513 = r40499 * r40499;
double r40514 = r40512 + r40513;
double r40515 = sqrt(r40514);
double r40516 = cbrt(r40515);
double r40517 = r40516 * r40516;
double r40518 = r40517 * r40516;
double r40519 = log(r40518);
double r40520 = r40519 * r40497;
double r40521 = r40520 + r40502;
double r40522 = r40521 / r40507;
double r40523 = r40522 / r40507;
double r40524 = 1.9780598850161828e-206;
bool r40525 = r40489 <= r40524;
double r40526 = log(r40499);
double r40527 = r40526 / r40497;
double r40528 = 6.2141675390848365e-142;
bool r40529 = r40489 <= r40528;
double r40530 = 1.0;
double r40531 = r40530 / r40489;
double r40532 = log(r40531);
double r40533 = r40530 / r40496;
double r40534 = log(r40533);
double r40535 = r40532 / r40534;
double r40536 = 1.4925855149012688e-103;
bool r40537 = r40489 <= r40536;
double r40538 = 2.4340519697292538e+101;
bool r40539 = r40489 <= r40538;
double r40540 = r40539 ? r40523 : r40535;
double r40541 = r40537 ? r40527 : r40540;
double r40542 = r40529 ? r40535 : r40541;
double r40543 = r40525 ? r40527 : r40542;
double r40544 = r40511 ? r40523 : r40543;
double r40545 = r40491 ? r40509 : r40544;
return r40545;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -3.219075409315374e+117Initial program 55.6
rmApplied add-sqr-sqrt55.6
Applied associate-/r*55.6
Taylor expanded around -inf 64.0
Simplified7.9
if -3.219075409315374e+117 < re < -7.2713402830638425e-171 or 1.4925855149012688e-103 < re < 2.4340519697292538e+101Initial program 15.5
rmApplied add-sqr-sqrt15.5
Applied associate-/r*15.4
rmApplied add-cube-cbrt15.5
if -7.2713402830638425e-171 < re < 1.9780598850161828e-206 or 6.2141675390848365e-142 < re < 1.4925855149012688e-103Initial program 30.4
Taylor expanded around 0 34.8
if 1.9780598850161828e-206 < re < 6.2141675390848365e-142 or 2.4340519697292538e+101 < re Initial program 45.5
Taylor expanded around inf 17.5
Final simplification19.1
herbie shell --seed 2020100
(FPCore (re im base)
:name "math.log/2 on complex, real part"
:precision binary64
(/ (+ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (atan2 im re) 0.0)) (+ (* (log base) (log base)) (* 0.0 0.0))))