\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 -8.2529321969344202 \cdot 10^{97}:\\
\;\;\;\;\frac{1}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}} \cdot \frac{\tan^{-1}_* \frac{im}{re} \cdot 0.0 + \log base \cdot \log \left(-re\right)}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}\\
\mathbf{elif}\;re \le -7.7296027907141122 \cdot 10^{-226}:\\
\;\;\;\;\left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \frac{1}{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}\\
\mathbf{elif}\;re \le 6.31099625192104387 \cdot 10^{-197}:\\
\;\;\;\;\frac{\log im}{\log base}\\
\mathbf{elif}\;re \le 3.1293650531822621 \cdot 10^{107}:\\
\;\;\;\;\frac{\frac{\left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log \left(\sqrt{re \cdot re + im \cdot im}\right)\right) \cdot {\left(\log base\right)}^{2} - \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right)}{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base - \tan^{-1}_* \frac{im}{re} \cdot 0.0}\\
\mathbf{else}:\\
\;\;\;\;\frac{-\log re}{-\log base}\\
\end{array}double f(double re, double im, double base) {
double r42476 = re;
double r42477 = r42476 * r42476;
double r42478 = im;
double r42479 = r42478 * r42478;
double r42480 = r42477 + r42479;
double r42481 = sqrt(r42480);
double r42482 = log(r42481);
double r42483 = base;
double r42484 = log(r42483);
double r42485 = r42482 * r42484;
double r42486 = atan2(r42478, r42476);
double r42487 = 0.0;
double r42488 = r42486 * r42487;
double r42489 = r42485 + r42488;
double r42490 = r42484 * r42484;
double r42491 = r42487 * r42487;
double r42492 = r42490 + r42491;
double r42493 = r42489 / r42492;
return r42493;
}
double f(double re, double im, double base) {
double r42494 = re;
double r42495 = -8.25293219693442e+97;
bool r42496 = r42494 <= r42495;
double r42497 = 1.0;
double r42498 = 0.0;
double r42499 = r42498 * r42498;
double r42500 = base;
double r42501 = log(r42500);
double r42502 = 2.0;
double r42503 = pow(r42501, r42502);
double r42504 = r42499 + r42503;
double r42505 = sqrt(r42504);
double r42506 = r42497 / r42505;
double r42507 = im;
double r42508 = atan2(r42507, r42494);
double r42509 = r42508 * r42498;
double r42510 = -r42494;
double r42511 = log(r42510);
double r42512 = r42501 * r42511;
double r42513 = r42509 + r42512;
double r42514 = r42513 / r42505;
double r42515 = r42506 * r42514;
double r42516 = -7.729602790714112e-226;
bool r42517 = r42494 <= r42516;
double r42518 = r42494 * r42494;
double r42519 = r42507 * r42507;
double r42520 = r42518 + r42519;
double r42521 = sqrt(r42520);
double r42522 = log(r42521);
double r42523 = r42522 * r42501;
double r42524 = r42523 + r42509;
double r42525 = r42497 / r42504;
double r42526 = r42524 * r42525;
double r42527 = 6.310996251921044e-197;
bool r42528 = r42494 <= r42527;
double r42529 = log(r42507);
double r42530 = r42529 / r42501;
double r42531 = 3.129365053182262e+107;
bool r42532 = r42494 <= r42531;
double r42533 = r42522 * r42522;
double r42534 = r42533 * r42503;
double r42535 = r42509 * r42509;
double r42536 = r42534 - r42535;
double r42537 = r42536 / r42504;
double r42538 = r42523 - r42509;
double r42539 = r42537 / r42538;
double r42540 = log(r42494);
double r42541 = -r42540;
double r42542 = -r42501;
double r42543 = r42541 / r42542;
double r42544 = r42532 ? r42539 : r42543;
double r42545 = r42528 ? r42530 : r42544;
double r42546 = r42517 ? r42526 : r42545;
double r42547 = r42496 ? r42515 : r42546;
return r42547;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -8.25293219693442e+97Initial program 51.4
rmApplied add-sqr-sqrt51.4
Applied *-un-lft-identity51.4
Applied times-frac51.4
Simplified51.4
Simplified51.4
Taylor expanded around -inf 8.1
Simplified8.1
if -8.25293219693442e+97 < re < -7.729602790714112e-226Initial program 20.2
rmApplied div-inv20.3
Simplified20.3
if -7.729602790714112e-226 < re < 6.310996251921044e-197Initial program 32.3
Taylor expanded around 0 34.5
if 6.310996251921044e-197 < re < 3.129365053182262e+107Initial program 17.0
rmApplied div-inv17.1
Simplified17.1
rmApplied flip-+17.1
Applied associate-*l/17.1
Simplified17.1
if 3.129365053182262e+107 < re Initial program 53.3
Taylor expanded around inf 8.4
Simplified8.4
Final simplification17.6
herbie shell --seed 2020047
(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))))