\log \left(\sqrt{re \cdot re + im \cdot im}\right)\begin{array}{l}
\mathbf{if}\;re \le -6.35114368572189993071033166198605826169 \cdot 10^{103}:\\
\;\;\;\;\log \left(-re\right)\\
\mathbf{elif}\;re \le -3.240034389533803828723034610715031267776 \cdot 10^{-262}:\\
\;\;\;\;\log \left(\sqrt{im \cdot im + re \cdot re}\right)\\
\mathbf{elif}\;re \le 2.715396324398381567593668375558902625339 \cdot 10^{-222}:\\
\;\;\;\;\log im\\
\mathbf{elif}\;re \le 1.669118752094688727866220975814758475131 \cdot 10^{123}:\\
\;\;\;\;\log \left(\sqrt{im \cdot im + re \cdot re}\right)\\
\mathbf{else}:\\
\;\;\;\;\log re\\
\end{array}double f(double re, double im) {
double r1580643 = re;
double r1580644 = r1580643 * r1580643;
double r1580645 = im;
double r1580646 = r1580645 * r1580645;
double r1580647 = r1580644 + r1580646;
double r1580648 = sqrt(r1580647);
double r1580649 = log(r1580648);
return r1580649;
}
double f(double re, double im) {
double r1580650 = re;
double r1580651 = -6.3511436857219e+103;
bool r1580652 = r1580650 <= r1580651;
double r1580653 = -r1580650;
double r1580654 = log(r1580653);
double r1580655 = -3.240034389533804e-262;
bool r1580656 = r1580650 <= r1580655;
double r1580657 = im;
double r1580658 = r1580657 * r1580657;
double r1580659 = r1580650 * r1580650;
double r1580660 = r1580658 + r1580659;
double r1580661 = sqrt(r1580660);
double r1580662 = log(r1580661);
double r1580663 = 2.7153963243983816e-222;
bool r1580664 = r1580650 <= r1580663;
double r1580665 = log(r1580657);
double r1580666 = 1.6691187520946887e+123;
bool r1580667 = r1580650 <= r1580666;
double r1580668 = log(r1580650);
double r1580669 = r1580667 ? r1580662 : r1580668;
double r1580670 = r1580664 ? r1580665 : r1580669;
double r1580671 = r1580656 ? r1580662 : r1580670;
double r1580672 = r1580652 ? r1580654 : r1580671;
return r1580672;
}



Bits error versus re



Bits error versus im
Results
if re < -6.3511436857219e+103Initial program 52.3
Taylor expanded around -inf 8.0
Simplified8.0
if -6.3511436857219e+103 < re < -3.240034389533804e-262 or 2.7153963243983816e-222 < re < 1.6691187520946887e+123Initial program 19.1
if -3.240034389533804e-262 < re < 2.7153963243983816e-222Initial program 33.2
Taylor expanded around 0 31.8
if 1.6691187520946887e+123 < re Initial program 55.3
Taylor expanded around inf 7.0
Final simplification16.8
herbie shell --seed 2019200
(FPCore (re im)
:name "math.log/1 on complex, real part"
(log (sqrt (+ (* re re) (* im im)))))