\log \left(\sqrt{re \cdot re + im \cdot im}\right)\begin{array}{l}
\mathbf{if}\;re \le -86.01993975715544:\\
\;\;\;\;\log \left(-re\right)\\
\mathbf{elif}\;re \le 4.875955891928815 \cdot 10^{-233}:\\
\;\;\;\;\log \left(\sqrt{im \cdot im + re \cdot re}\right)\\
\mathbf{elif}\;re \le 5.785268620035206 \cdot 10^{-190}:\\
\;\;\;\;\log im\\
\mathbf{elif}\;re \le 3.884985694072655 \cdot 10^{+111}:\\
\;\;\;\;\log \left(\sqrt{im \cdot im + re \cdot re}\right)\\
\mathbf{else}:\\
\;\;\;\;\log re\\
\end{array}double f(double re, double im) {
double r662849 = re;
double r662850 = r662849 * r662849;
double r662851 = im;
double r662852 = r662851 * r662851;
double r662853 = r662850 + r662852;
double r662854 = sqrt(r662853);
double r662855 = log(r662854);
return r662855;
}
double f(double re, double im) {
double r662856 = re;
double r662857 = -86.01993975715544;
bool r662858 = r662856 <= r662857;
double r662859 = -r662856;
double r662860 = log(r662859);
double r662861 = 4.875955891928815e-233;
bool r662862 = r662856 <= r662861;
double r662863 = im;
double r662864 = r662863 * r662863;
double r662865 = r662856 * r662856;
double r662866 = r662864 + r662865;
double r662867 = sqrt(r662866);
double r662868 = log(r662867);
double r662869 = 5.785268620035206e-190;
bool r662870 = r662856 <= r662869;
double r662871 = log(r662863);
double r662872 = 3.884985694072655e+111;
bool r662873 = r662856 <= r662872;
double r662874 = log(r662856);
double r662875 = r662873 ? r662868 : r662874;
double r662876 = r662870 ? r662871 : r662875;
double r662877 = r662862 ? r662868 : r662876;
double r662878 = r662858 ? r662860 : r662877;
return r662878;
}



Bits error versus re



Bits error versus im
Results
if re < -86.01993975715544Initial program 38.6
Taylor expanded around -inf 12.2
Simplified12.2
if -86.01993975715544 < re < 4.875955891928815e-233 or 5.785268620035206e-190 < re < 3.884985694072655e+111Initial program 21.1
if 4.875955891928815e-233 < re < 5.785268620035206e-190Initial program 33.7
Taylor expanded around 0 31.5
if 3.884985694072655e+111 < re Initial program 52.7
Taylor expanded around inf 8.9
Final simplification17.2
herbie shell --seed 2019153
(FPCore (re im)
:name "math.log/1 on complex, real part"
(log (sqrt (+ (* re re) (* im im)))))