\log \left(\sqrt{re \cdot re + im \cdot im}\right)\begin{array}{l}
\mathbf{if}\;re \le -3.106642014201959 \cdot 10^{+51}:\\
\;\;\;\;\log \left(-re\right)\\
\mathbf{elif}\;re \le -2.1939575593023075 \cdot 10^{-249}:\\
\;\;\;\;\log \left(\sqrt{im \cdot im + re \cdot re}\right)\\
\mathbf{elif}\;re \le 1.3130508878524708 \cdot 10^{-291}:\\
\;\;\;\;\log im\\
\mathbf{elif}\;re \le 3.4696741244957 \cdot 10^{+92}:\\
\;\;\;\;\log \left(\sqrt{im \cdot im + re \cdot re}\right)\\
\mathbf{else}:\\
\;\;\;\;\log re\\
\end{array}double f(double re, double im) {
double r953408 = re;
double r953409 = r953408 * r953408;
double r953410 = im;
double r953411 = r953410 * r953410;
double r953412 = r953409 + r953411;
double r953413 = sqrt(r953412);
double r953414 = log(r953413);
return r953414;
}
double f(double re, double im) {
double r953415 = re;
double r953416 = -3.106642014201959e+51;
bool r953417 = r953415 <= r953416;
double r953418 = -r953415;
double r953419 = log(r953418);
double r953420 = -2.1939575593023075e-249;
bool r953421 = r953415 <= r953420;
double r953422 = im;
double r953423 = r953422 * r953422;
double r953424 = r953415 * r953415;
double r953425 = r953423 + r953424;
double r953426 = sqrt(r953425);
double r953427 = log(r953426);
double r953428 = 1.3130508878524708e-291;
bool r953429 = r953415 <= r953428;
double r953430 = log(r953422);
double r953431 = 3.4696741244957e+92;
bool r953432 = r953415 <= r953431;
double r953433 = log(r953415);
double r953434 = r953432 ? r953427 : r953433;
double r953435 = r953429 ? r953430 : r953434;
double r953436 = r953421 ? r953427 : r953435;
double r953437 = r953417 ? r953419 : r953436;
return r953437;
}



Bits error versus re



Bits error versus im
Results
if re < -3.106642014201959e+51Initial program 43.1
Taylor expanded around -inf 10.1
Simplified10.1
if -3.106642014201959e+51 < re < -2.1939575593023075e-249 or 1.3130508878524708e-291 < re < 3.4696741244957e+92Initial program 20.4
if -2.1939575593023075e-249 < re < 1.3130508878524708e-291Initial program 31.9
Taylor expanded around 0 34.2
if 3.4696741244957e+92 < re Initial program 49.1
Taylor expanded around inf 10.1
Final simplification17.4
herbie shell --seed 2019154
(FPCore (re im)
:name "math.log/1 on complex, real part"
(log (sqrt (+ (* re re) (* im im)))))