\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 -2.276364532810895682126701738942978934868 \cdot 10^{99}:\\
\;\;\;\;\frac{1}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}} \cdot \frac{\log \left(-re\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\
\mathbf{elif}\;re \le -8.321374673661262893479589263154025294127 \cdot 10^{-172}:\\
\;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log \left(\sqrt[3]{base} \cdot \sqrt[3]{base}\right) \cdot \log base + \log \left(\sqrt[3]{base}\right) \cdot \log base\right) + 0.0 \cdot 0.0}\\
\mathbf{elif}\;re \le -9.727151345646148762551396689308006140934 \cdot 10^{-225}:\\
\;\;\;\;\frac{\log im}{\log base}\\
\mathbf{elif}\;re \le 2.354844938989890697506129101764848076997 \cdot 10^{121}:\\
\;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log \left(\sqrt[3]{base} \cdot \sqrt[3]{base}\right) \cdot \log base + \log \left(\sqrt[3]{base}\right) \cdot \log base\right) + 0.0 \cdot 0.0}\\
\mathbf{else}:\\
\;\;\;\;\frac{-\log re}{-\log base}\\
\end{array}double f(double re, double im, double base) {
double r2868540 = re;
double r2868541 = r2868540 * r2868540;
double r2868542 = im;
double r2868543 = r2868542 * r2868542;
double r2868544 = r2868541 + r2868543;
double r2868545 = sqrt(r2868544);
double r2868546 = log(r2868545);
double r2868547 = base;
double r2868548 = log(r2868547);
double r2868549 = r2868546 * r2868548;
double r2868550 = atan2(r2868542, r2868540);
double r2868551 = 0.0;
double r2868552 = r2868550 * r2868551;
double r2868553 = r2868549 + r2868552;
double r2868554 = r2868548 * r2868548;
double r2868555 = r2868551 * r2868551;
double r2868556 = r2868554 + r2868555;
double r2868557 = r2868553 / r2868556;
return r2868557;
}
double f(double re, double im, double base) {
double r2868558 = re;
double r2868559 = -2.2763645328108957e+99;
bool r2868560 = r2868558 <= r2868559;
double r2868561 = 1.0;
double r2868562 = base;
double r2868563 = log(r2868562);
double r2868564 = r2868563 * r2868563;
double r2868565 = 0.0;
double r2868566 = r2868565 * r2868565;
double r2868567 = r2868564 + r2868566;
double r2868568 = sqrt(r2868567);
double r2868569 = r2868561 / r2868568;
double r2868570 = -r2868558;
double r2868571 = log(r2868570);
double r2868572 = r2868571 * r2868563;
double r2868573 = im;
double r2868574 = atan2(r2868573, r2868558);
double r2868575 = r2868574 * r2868565;
double r2868576 = r2868572 + r2868575;
double r2868577 = r2868576 / r2868568;
double r2868578 = r2868569 * r2868577;
double r2868579 = -8.321374673661263e-172;
bool r2868580 = r2868558 <= r2868579;
double r2868581 = r2868558 * r2868558;
double r2868582 = r2868573 * r2868573;
double r2868583 = r2868581 + r2868582;
double r2868584 = sqrt(r2868583);
double r2868585 = log(r2868584);
double r2868586 = r2868585 * r2868563;
double r2868587 = r2868586 + r2868575;
double r2868588 = cbrt(r2868562);
double r2868589 = r2868588 * r2868588;
double r2868590 = log(r2868589);
double r2868591 = r2868590 * r2868563;
double r2868592 = log(r2868588);
double r2868593 = r2868592 * r2868563;
double r2868594 = r2868591 + r2868593;
double r2868595 = r2868594 + r2868566;
double r2868596 = r2868587 / r2868595;
double r2868597 = -9.727151345646149e-225;
bool r2868598 = r2868558 <= r2868597;
double r2868599 = log(r2868573);
double r2868600 = r2868599 / r2868563;
double r2868601 = 2.3548449389898907e+121;
bool r2868602 = r2868558 <= r2868601;
double r2868603 = log(r2868558);
double r2868604 = -r2868603;
double r2868605 = -r2868563;
double r2868606 = r2868604 / r2868605;
double r2868607 = r2868602 ? r2868596 : r2868606;
double r2868608 = r2868598 ? r2868600 : r2868607;
double r2868609 = r2868580 ? r2868596 : r2868608;
double r2868610 = r2868560 ? r2868578 : r2868609;
return r2868610;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -2.2763645328108957e+99Initial program 51.8
rmApplied add-sqr-sqrt51.8
Applied *-un-lft-identity51.8
Applied times-frac51.8
Taylor expanded around -inf 10.8
Simplified10.8
if -2.2763645328108957e+99 < re < -8.321374673661263e-172 or -9.727151345646149e-225 < re < 2.3548449389898907e+121Initial program 21.2
rmApplied add-cube-cbrt21.3
Applied log-prod21.3
Applied distribute-rgt-in21.3
if -8.321374673661263e-172 < re < -9.727151345646149e-225Initial program 29.7
Taylor expanded around 0 37.5
if 2.3548449389898907e+121 < re Initial program 55.6
Taylor expanded around inf 8.8
Simplified8.7
Final simplification18.3
herbie shell --seed 2019174
(FPCore (re im base)
:name "math.log/2 on complex, real part"
(/ (+ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (atan2 im re) 0.0)) (+ (* (log base) (log base)) (* 0.0 0.0))))