\log \left(\sqrt{re \cdot re + im \cdot im}\right)\begin{array}{l}
\mathbf{if}\;re \le -4.2086579624594044 \cdot 10^{+130}:\\
\;\;\;\;\log \left(-re\right)\\
\mathbf{elif}\;re \le 3.714487936304632 \cdot 10^{+58}:\\
\;\;\;\;\log \left(\sqrt{im \cdot im + re \cdot re}\right)\\
\mathbf{else}:\\
\;\;\;\;\log re\\
\end{array}double f(double re, double im) {
double r2080142 = re;
double r2080143 = r2080142 * r2080142;
double r2080144 = im;
double r2080145 = r2080144 * r2080144;
double r2080146 = r2080143 + r2080145;
double r2080147 = sqrt(r2080146);
double r2080148 = log(r2080147);
return r2080148;
}
double f(double re, double im) {
double r2080149 = re;
double r2080150 = -4.2086579624594044e+130;
bool r2080151 = r2080149 <= r2080150;
double r2080152 = -r2080149;
double r2080153 = log(r2080152);
double r2080154 = 3.714487936304632e+58;
bool r2080155 = r2080149 <= r2080154;
double r2080156 = im;
double r2080157 = r2080156 * r2080156;
double r2080158 = r2080149 * r2080149;
double r2080159 = r2080157 + r2080158;
double r2080160 = sqrt(r2080159);
double r2080161 = log(r2080160);
double r2080162 = log(r2080149);
double r2080163 = r2080155 ? r2080161 : r2080162;
double r2080164 = r2080151 ? r2080153 : r2080163;
return r2080164;
}



Bits error versus re



Bits error versus im
Results
if re < -4.2086579624594044e+130Initial program 56.6
Taylor expanded around -inf 6.7
Simplified6.7
if -4.2086579624594044e+130 < re < 3.714487936304632e+58Initial program 20.6
if 3.714487936304632e+58 < re Initial program 44.1
Taylor expanded around inf 11.2
Final simplification16.8
herbie shell --seed 2019125
(FPCore (re im)
:name "math.log/1 on complex, real part"
(log (sqrt (+ (* re re) (* im im)))))