\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 -6.531289779340832 \cdot 10^{88}:\\
\;\;\;\;\frac{\log \left(-1 \cdot re\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\\
\mathbf{elif}\;re \le 2.02980740653083079 \cdot 10^{115}:\\
\;\;\;\;\frac{\left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base\right) \cdot \left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base\right) - \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right)}{\left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base - \tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \left(0.0 \cdot 0.0 + {\left(\log base\right)}^{2}\right)}\\
\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 r41631 = re;
double r41632 = r41631 * r41631;
double r41633 = im;
double r41634 = r41633 * r41633;
double r41635 = r41632 + r41634;
double r41636 = sqrt(r41635);
double r41637 = log(r41636);
double r41638 = base;
double r41639 = log(r41638);
double r41640 = r41637 * r41639;
double r41641 = atan2(r41633, r41631);
double r41642 = 0.0;
double r41643 = r41641 * r41642;
double r41644 = r41640 + r41643;
double r41645 = r41639 * r41639;
double r41646 = r41642 * r41642;
double r41647 = r41645 + r41646;
double r41648 = r41644 / r41647;
return r41648;
}
double f(double re, double im, double base) {
double r41649 = re;
double r41650 = -6.531289779340832e+88;
bool r41651 = r41649 <= r41650;
double r41652 = -1.0;
double r41653 = r41652 * r41649;
double r41654 = log(r41653);
double r41655 = base;
double r41656 = log(r41655);
double r41657 = r41654 * r41656;
double r41658 = im;
double r41659 = atan2(r41658, r41649);
double r41660 = 0.0;
double r41661 = r41659 * r41660;
double r41662 = r41657 + r41661;
double r41663 = r41656 * r41656;
double r41664 = r41660 * r41660;
double r41665 = r41663 + r41664;
double r41666 = r41662 / r41665;
double r41667 = 2.029807406530831e+115;
bool r41668 = r41649 <= r41667;
double r41669 = r41649 * r41649;
double r41670 = r41658 * r41658;
double r41671 = r41669 + r41670;
double r41672 = sqrt(r41671);
double r41673 = log(r41672);
double r41674 = r41673 * r41656;
double r41675 = r41674 * r41674;
double r41676 = r41661 * r41661;
double r41677 = r41675 - r41676;
double r41678 = r41674 - r41661;
double r41679 = 2.0;
double r41680 = pow(r41656, r41679);
double r41681 = r41664 + r41680;
double r41682 = r41678 * r41681;
double r41683 = r41677 / r41682;
double r41684 = 1.0;
double r41685 = r41684 / r41649;
double r41686 = log(r41685);
double r41687 = r41684 / r41655;
double r41688 = log(r41687);
double r41689 = r41686 / r41688;
double r41690 = r41668 ? r41683 : r41689;
double r41691 = r41651 ? r41666 : r41690;
return r41691;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -6.531289779340832e+88Initial program 49.6
Taylor expanded around -inf 9.4
if -6.531289779340832e+88 < re < 2.029807406530831e+115Initial program 21.7
rmApplied flip-+21.7
Applied associate-/l/21.7
Simplified21.7
if 2.029807406530831e+115 < re Initial program 55.7
Taylor expanded around inf 8.7
Final simplification17.5
herbie shell --seed 2020065
(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))))