\log \left(\sqrt{re \cdot re + im \cdot im}\right)\begin{array}{l}
\mathbf{if}\;re \le -2.111326592735039579788335414834132413433 \cdot 10^{117}:\\
\;\;\;\;\log \left(-1 \cdot re\right)\\
\mathbf{elif}\;re \le 5.246446846048960229429099302337261201176 \cdot 10^{-199}:\\
\;\;\;\;\log \left(\sqrt{re \cdot re + im \cdot im}\right)\\
\mathbf{elif}\;re \le 1.178720592182588159154577176110759415934 \cdot 10^{-172}:\\
\;\;\;\;\log re\\
\mathbf{elif}\;re \le 9.769663399544422990952065102026170637802 \cdot 10^{95}:\\
\;\;\;\;\log \left(\sqrt{re \cdot re + im \cdot im}\right)\\
\mathbf{else}:\\
\;\;\;\;\log re\\
\end{array}double f(double re, double im) {
double r47893 = re;
double r47894 = r47893 * r47893;
double r47895 = im;
double r47896 = r47895 * r47895;
double r47897 = r47894 + r47896;
double r47898 = sqrt(r47897);
double r47899 = log(r47898);
return r47899;
}
double f(double re, double im) {
double r47900 = re;
double r47901 = -2.1113265927350396e+117;
bool r47902 = r47900 <= r47901;
double r47903 = -1.0;
double r47904 = r47903 * r47900;
double r47905 = log(r47904);
double r47906 = 5.24644684604896e-199;
bool r47907 = r47900 <= r47906;
double r47908 = r47900 * r47900;
double r47909 = im;
double r47910 = r47909 * r47909;
double r47911 = r47908 + r47910;
double r47912 = sqrt(r47911);
double r47913 = log(r47912);
double r47914 = 1.1787205921825882e-172;
bool r47915 = r47900 <= r47914;
double r47916 = log(r47900);
double r47917 = 9.769663399544423e+95;
bool r47918 = r47900 <= r47917;
double r47919 = r47918 ? r47913 : r47916;
double r47920 = r47915 ? r47916 : r47919;
double r47921 = r47907 ? r47913 : r47920;
double r47922 = r47902 ? r47905 : r47921;
return r47922;
}



Bits error versus re



Bits error versus im
Results
if re < -2.1113265927350396e+117Initial program 54.5
Taylor expanded around -inf 8.6
if -2.1113265927350396e+117 < re < 5.24644684604896e-199 or 1.1787205921825882e-172 < re < 9.769663399544423e+95Initial program 21.7
if 5.24644684604896e-199 < re < 1.1787205921825882e-172 or 9.769663399544423e+95 < re Initial program 48.7
Taylor expanded around inf 13.5
Final simplification18.1
herbie shell --seed 2019298
(FPCore (re im)
:name "math.log/1 on complex, real part"
:precision binary64
(log (sqrt (+ (* re re) (* im im)))))