\log \left(\sqrt{re \cdot re + im \cdot im}\right)\begin{array}{l}
\mathbf{if}\;re \le -8.203187278539673 \cdot 10^{+152}:\\
\;\;\;\;\log \left(-re\right)\\
\mathbf{elif}\;re \le 1.426377138919928 \cdot 10^{+124}:\\
\;\;\;\;\log \left(\sqrt{im \cdot im + re \cdot re}\right)\\
\mathbf{else}:\\
\;\;\;\;\log re\\
\end{array}double f(double re, double im) {
double r787785 = re;
double r787786 = r787785 * r787785;
double r787787 = im;
double r787788 = r787787 * r787787;
double r787789 = r787786 + r787788;
double r787790 = sqrt(r787789);
double r787791 = log(r787790);
return r787791;
}
double f(double re, double im) {
double r787792 = re;
double r787793 = -8.203187278539673e+152;
bool r787794 = r787792 <= r787793;
double r787795 = -r787792;
double r787796 = log(r787795);
double r787797 = 1.426377138919928e+124;
bool r787798 = r787792 <= r787797;
double r787799 = im;
double r787800 = r787799 * r787799;
double r787801 = r787792 * r787792;
double r787802 = r787800 + r787801;
double r787803 = sqrt(r787802);
double r787804 = log(r787803);
double r787805 = log(r787792);
double r787806 = r787798 ? r787804 : r787805;
double r787807 = r787794 ? r787796 : r787806;
return r787807;
}



Bits error versus re



Bits error versus im
Results
if re < -8.203187278539673e+152Initial program 62.0
Taylor expanded around -inf 7.4
Simplified7.4
if -8.203187278539673e+152 < re < 1.426377138919928e+124Initial program 20.6
if 1.426377138919928e+124 < re Initial program 54.7
Taylor expanded around inf 8.2
Final simplification17.1
herbie shell --seed 2019155
(FPCore (re im)
:name "math.log/1 on complex, real part"
(log (sqrt (+ (* re re) (* im im)))))