\log \left(\sqrt{re \cdot re + im \cdot im}\right)\begin{array}{l}
\mathbf{if}\;re \le -8.915974928248364 \cdot 10^{+114}:\\
\;\;\;\;\log \left(-re\right)\\
\mathbf{elif}\;re \le -4.892315061161181 \cdot 10^{-257}:\\
\;\;\;\;\log \left(\sqrt{im \cdot im + re \cdot re}\right)\\
\mathbf{elif}\;re \le 1.475790091087918 \cdot 10^{-158}:\\
\;\;\;\;\log im\\
\mathbf{elif}\;re \le 9.724903723406665 \cdot 10^{+105}:\\
\;\;\;\;\log \left(\sqrt{im \cdot im + re \cdot re}\right)\\
\mathbf{else}:\\
\;\;\;\;\log re\\
\end{array}double f(double re, double im) {
double r1477165 = re;
double r1477166 = r1477165 * r1477165;
double r1477167 = im;
double r1477168 = r1477167 * r1477167;
double r1477169 = r1477166 + r1477168;
double r1477170 = sqrt(r1477169);
double r1477171 = log(r1477170);
return r1477171;
}
double f(double re, double im) {
double r1477172 = re;
double r1477173 = -8.915974928248364e+114;
bool r1477174 = r1477172 <= r1477173;
double r1477175 = -r1477172;
double r1477176 = log(r1477175);
double r1477177 = -4.892315061161181e-257;
bool r1477178 = r1477172 <= r1477177;
double r1477179 = im;
double r1477180 = r1477179 * r1477179;
double r1477181 = r1477172 * r1477172;
double r1477182 = r1477180 + r1477181;
double r1477183 = sqrt(r1477182);
double r1477184 = log(r1477183);
double r1477185 = 1.475790091087918e-158;
bool r1477186 = r1477172 <= r1477185;
double r1477187 = log(r1477179);
double r1477188 = 9.724903723406665e+105;
bool r1477189 = r1477172 <= r1477188;
double r1477190 = log(r1477172);
double r1477191 = r1477189 ? r1477184 : r1477190;
double r1477192 = r1477186 ? r1477187 : r1477191;
double r1477193 = r1477178 ? r1477184 : r1477192;
double r1477194 = r1477174 ? r1477176 : r1477193;
return r1477194;
}



Bits error versus re



Bits error versus im
Results
if re < -8.915974928248364e+114Initial program 53.9
Taylor expanded around -inf 9.3
Simplified9.3
if -8.915974928248364e+114 < re < -4.892315061161181e-257 or 1.475790091087918e-158 < re < 9.724903723406665e+105Initial program 18.2
if -4.892315061161181e-257 < re < 1.475790091087918e-158Initial program 30.7
Taylor expanded around 0 35.3
if 9.724903723406665e+105 < re Initial program 52.5
Taylor expanded around inf 8.9
Final simplification18.1
herbie shell --seed 2019165
(FPCore (re im)
:name "math.log/1 on complex, real part"
(log (sqrt (+ (* re re) (* im im)))))