\log \left(\sqrt{re \cdot re + im \cdot im}\right)\begin{array}{l}
\mathbf{if}\;re \le -1.10321569695692608 \cdot 10^{72}:\\
\;\;\;\;\log \left(-1 \cdot re\right)\\
\mathbf{elif}\;re \le -1.3504253849915568 \cdot 10^{-194}:\\
\;\;\;\;\log \left(\sqrt{re \cdot re + im \cdot im}\right)\\
\mathbf{elif}\;re \le -2.968956980813959 \cdot 10^{-266}:\\
\;\;\;\;\log im\\
\mathbf{elif}\;re \le 6.80536176757501775 \cdot 10^{-229}:\\
\;\;\;\;\log \left(\sqrt{re \cdot re + im \cdot im}\right)\\
\mathbf{elif}\;re \le 1.30573406095301773 \cdot 10^{-191}:\\
\;\;\;\;\log im\\
\mathbf{elif}\;re \le 5.15621950091572796 \cdot 10^{39}:\\
\;\;\;\;\log \left(\sqrt{re \cdot re + im \cdot im}\right)\\
\mathbf{else}:\\
\;\;\;\;\log re\\
\end{array}double code(double re, double im) {
return log(sqrt(((re * re) + (im * im))));
}
double code(double re, double im) {
double temp;
if ((re <= -1.103215696956926e+72)) {
temp = log((-1.0 * re));
} else {
double temp_1;
if ((re <= -1.3504253849915568e-194)) {
temp_1 = log(sqrt(((re * re) + (im * im))));
} else {
double temp_2;
if ((re <= -2.968956980813959e-266)) {
temp_2 = log(im);
} else {
double temp_3;
if ((re <= 6.805361767575018e-229)) {
temp_3 = log(sqrt(((re * re) + (im * im))));
} else {
double temp_4;
if ((re <= 1.3057340609530177e-191)) {
temp_4 = log(im);
} else {
double temp_5;
if ((re <= 5.156219500915728e+39)) {
temp_5 = log(sqrt(((re * re) + (im * im))));
} else {
temp_5 = log(re);
}
temp_4 = temp_5;
}
temp_3 = temp_4;
}
temp_2 = temp_3;
}
temp_1 = temp_2;
}
temp = temp_1;
}
return temp;
}



Bits error versus re



Bits error versus im
Results
if re < -1.103215696956926e+72Initial program 46.8
Taylor expanded around -inf 9.3
if -1.103215696956926e+72 < re < -1.3504253849915568e-194 or -2.968956980813959e-266 < re < 6.805361767575018e-229 or 1.3057340609530177e-191 < re < 5.156219500915728e+39Initial program 21.1
if -1.3504253849915568e-194 < re < -2.968956980813959e-266 or 6.805361767575018e-229 < re < 1.3057340609530177e-191Initial program 32.2
Taylor expanded around 0 34.8
if 5.156219500915728e+39 < re Initial program 43.9
Taylor expanded around inf 11.6
Final simplification18.1
herbie shell --seed 2020057
(FPCore (re im)
:name "math.log/1 on complex, real part"
:precision binary64
(log (sqrt (+ (* re re) (* im im)))))