\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 r42150 = re;
double r42151 = r42150 * r42150;
double r42152 = im;
double r42153 = r42152 * r42152;
double r42154 = r42151 + r42153;
double r42155 = sqrt(r42154);
double r42156 = log(r42155);
return r42156;
}
double f(double re, double im) {
double r42157 = re;
double r42158 = -9.850726757232305e+116;
bool r42159 = r42157 <= r42158;
double r42160 = -r42157;
double r42161 = log(r42160);
double r42162 = 9.282772713307498e+30;
bool r42163 = r42157 <= r42162;
double r42164 = im;
double r42165 = r42164 * r42164;
double r42166 = r42157 * r42157;
double r42167 = r42165 + r42166;
double r42168 = sqrt(r42167);
double r42169 = log(r42168);
double r42170 = log(r42157);
double r42171 = r42163 ? r42169 : r42170;
double r42172 = r42159 ? r42161 : r42171;
return r42172;
}



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)))))