\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 -2.266036080509631 \cdot 10^{+125}:\\
\;\;\;\;\frac{\log \left(-re\right)}{\log base}\\
\mathbf{elif}\;re \le 4.571038187985704 \cdot 10^{+56}:\\
\;\;\;\;\log \left(\sqrt{im \cdot im + re \cdot re}\right) \cdot \frac{1}{\log base}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log re}{\log base}\\
\end{array}double f(double re, double im, double base) {
double r955562 = re;
double r955563 = r955562 * r955562;
double r955564 = im;
double r955565 = r955564 * r955564;
double r955566 = r955563 + r955565;
double r955567 = sqrt(r955566);
double r955568 = log(r955567);
double r955569 = base;
double r955570 = log(r955569);
double r955571 = r955568 * r955570;
double r955572 = atan2(r955564, r955562);
double r955573 = 0.0;
double r955574 = r955572 * r955573;
double r955575 = r955571 + r955574;
double r955576 = r955570 * r955570;
double r955577 = r955573 * r955573;
double r955578 = r955576 + r955577;
double r955579 = r955575 / r955578;
return r955579;
}
double f(double re, double im, double base) {
double r955580 = re;
double r955581 = -2.266036080509631e+125;
bool r955582 = r955580 <= r955581;
double r955583 = -r955580;
double r955584 = log(r955583);
double r955585 = base;
double r955586 = log(r955585);
double r955587 = r955584 / r955586;
double r955588 = 4.571038187985704e+56;
bool r955589 = r955580 <= r955588;
double r955590 = im;
double r955591 = r955590 * r955590;
double r955592 = r955580 * r955580;
double r955593 = r955591 + r955592;
double r955594 = sqrt(r955593);
double r955595 = log(r955594);
double r955596 = 1.0;
double r955597 = r955596 / r955586;
double r955598 = r955595 * r955597;
double r955599 = log(r955580);
double r955600 = r955599 / r955586;
double r955601 = r955589 ? r955598 : r955600;
double r955602 = r955582 ? r955587 : r955601;
return r955602;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -2.266036080509631e+125Initial program 54.3
Simplified54.3
Taylor expanded around -inf 8.4
Simplified8.4
if -2.266036080509631e+125 < re < 4.571038187985704e+56Initial program 21.5
Simplified21.4
rmApplied div-inv21.4
if 4.571038187985704e+56 < re Initial program 43.9
Simplified43.8
Taylor expanded around inf 10.5
Final simplification17.3
herbie shell --seed 2019156
(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))))