\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 -4.1747357255582834 \cdot 10^{100}:\\
\;\;\;\;\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 1.416747423590482 \cdot 10^{-267}:\\
\;\;\;\;\frac{\frac{\log base \cdot \log \left(\sqrt{re \cdot re + im \cdot im}\right) + \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 9.89259955978615659 \cdot 10^{-168}:\\
\;\;\;\;\frac{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}\\
\mathbf{elif}\;re \le 1.40365716029594419 \cdot 10^{50}:\\
\;\;\;\;\frac{\frac{\log base \cdot \log \left(\sqrt{re \cdot re + im \cdot im}\right) + \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 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 = -4.1747357255582834e+100;
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 = 1.4167474235904818e-267;
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 = r41656 * r41673;
double r41675 = r41674 + r41661;
double r41676 = sqrt(r41665);
double r41677 = r41675 / r41676;
double r41678 = r41677 / r41676;
double r41679 = 9.892599559786157e-168;
bool r41680 = r41649 <= r41679;
double r41681 = 1.0;
double r41682 = r41681 / r41649;
double r41683 = log(r41682);
double r41684 = r41681 / r41655;
double r41685 = log(r41684);
double r41686 = r41683 / r41685;
double r41687 = 1.4036571602959442e+50;
bool r41688 = r41649 <= r41687;
double r41689 = r41688 ? r41678 : r41686;
double r41690 = r41680 ? r41686 : r41689;
double r41691 = r41668 ? r41678 : r41690;
double r41692 = r41651 ? r41666 : r41691;
return r41692;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -4.1747357255582834e+100Initial program 50.5
Taylor expanded around -inf 10.3
if -4.1747357255582834e+100 < re < 1.4167474235904818e-267 or 9.892599559786157e-168 < re < 1.4036571602959442e+50Initial program 20.4
rmApplied add-sqr-sqrt20.4
Applied associate-/r*20.3
rmApplied *-commutative20.3
if 1.4167474235904818e-267 < re < 9.892599559786157e-168 or 1.4036571602959442e+50 < re Initial program 40.4
Taylor expanded around inf 21.9
Final simplification19.0
herbie shell --seed 2020049
(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))))