\log \left(\sqrt{re \cdot re + im \cdot im}\right)\begin{array}{l}
\mathbf{if}\;re \le -9.850726757232304656097215039461175225007 \cdot 10^{116}:\\
\;\;\;\;\log \left(-re\right)\\
\mathbf{elif}\;re \le 9282772713307497733004856393728:\\
\;\;\;\;\log \left(\sqrt{im \cdot im + re \cdot re}\right)\\
\mathbf{else}:\\
\;\;\;\;\log re\\
\end{array}double f(double re, double im) {
double r42337 = re;
double r42338 = r42337 * r42337;
double r42339 = im;
double r42340 = r42339 * r42339;
double r42341 = r42338 + r42340;
double r42342 = sqrt(r42341);
double r42343 = log(r42342);
return r42343;
}
double f(double re, double im) {
double r42344 = re;
double r42345 = -9.850726757232305e+116;
bool r42346 = r42344 <= r42345;
double r42347 = -r42344;
double r42348 = log(r42347);
double r42349 = 9.282772713307498e+30;
bool r42350 = r42344 <= r42349;
double r42351 = im;
double r42352 = r42351 * r42351;
double r42353 = r42344 * r42344;
double r42354 = r42352 + r42353;
double r42355 = sqrt(r42354);
double r42356 = log(r42355);
double r42357 = log(r42344);
double r42358 = r42350 ? r42356 : r42357;
double r42359 = r42346 ? r42348 : r42358;
return r42359;
}



Bits error versus re



Bits error versus im
Results
if re < -9.850726757232305e+116Initial program 55.5
Taylor expanded around -inf 8.0
Simplified8.0
if -9.850726757232305e+116 < re < 9.282772713307498e+30Initial program 21.0
if 9.282772713307498e+30 < re Initial program 41.9
Taylor expanded around inf 11.8
Final simplification16.9
herbie shell --seed 2019194
(FPCore (re im)
:name "math.log/1 on complex, real part"
(log (sqrt (+ (* re re) (* im im)))))