\log \left(\sqrt{re \cdot re + im \cdot im}\right)\begin{array}{l}
\mathbf{if}\;re \le -4.219332295965777137041720193068407814529 \cdot 10^{82}:\\
\;\;\;\;\log \left(-1 \cdot re\right)\\
\mathbf{elif}\;re \le -3.743447547042940916879606925039648794356 \cdot 10^{-217}:\\
\;\;\;\;\log \left(\sqrt{re \cdot re + im \cdot im}\right)\\
\mathbf{elif}\;re \le -1.6117218241464792617406634329935791946 \cdot 10^{-282}:\\
\;\;\;\;\log im\\
\mathbf{elif}\;re \le 124645931887550053482496:\\
\;\;\;\;\log \left(\sqrt{re \cdot re + im \cdot im}\right)\\
\mathbf{else}:\\
\;\;\;\;\log re\\
\end{array}double f(double re, double im) {
double r39013 = re;
double r39014 = r39013 * r39013;
double r39015 = im;
double r39016 = r39015 * r39015;
double r39017 = r39014 + r39016;
double r39018 = sqrt(r39017);
double r39019 = log(r39018);
return r39019;
}
double f(double re, double im) {
double r39020 = re;
double r39021 = -4.219332295965777e+82;
bool r39022 = r39020 <= r39021;
double r39023 = -1.0;
double r39024 = r39023 * r39020;
double r39025 = log(r39024);
double r39026 = -3.743447547042941e-217;
bool r39027 = r39020 <= r39026;
double r39028 = r39020 * r39020;
double r39029 = im;
double r39030 = r39029 * r39029;
double r39031 = r39028 + r39030;
double r39032 = sqrt(r39031);
double r39033 = log(r39032);
double r39034 = -1.6117218241464793e-282;
bool r39035 = r39020 <= r39034;
double r39036 = log(r39029);
double r39037 = 1.2464593188755005e+23;
bool r39038 = r39020 <= r39037;
double r39039 = log(r39020);
double r39040 = r39038 ? r39033 : r39039;
double r39041 = r39035 ? r39036 : r39040;
double r39042 = r39027 ? r39033 : r39041;
double r39043 = r39022 ? r39025 : r39042;
return r39043;
}



Bits error versus re



Bits error versus im
Results
if re < -4.219332295965777e+82Initial program 49.1
Taylor expanded around -inf 10.0
if -4.219332295965777e+82 < re < -3.743447547042941e-217 or -1.6117218241464793e-282 < re < 1.2464593188755005e+23Initial program 21.7
if -3.743447547042941e-217 < re < -1.6117218241464793e-282Initial program 34.5
Taylor expanded around 0 34.1
if 1.2464593188755005e+23 < re Initial program 41.7
Taylor expanded around inf 11.8
Final simplification17.8
herbie shell --seed 2019322
(FPCore (re im)
:name "math.log/1 on complex, real part"
:precision binary64
(log (sqrt (+ (* re re) (* im im)))))