\log \left(\sqrt{re \cdot re + im \cdot im}\right)\begin{array}{l}
\mathbf{if}\;re \le -1.272776742038984 \cdot 10^{+36}:\\
\;\;\;\;\log \left(-re\right)\\
\mathbf{elif}\;re \le -2.5387418282241494 \cdot 10^{-275}:\\
\;\;\;\;\log \left(\sqrt{im \cdot im + re \cdot re}\right)\\
\mathbf{elif}\;re \le 3.259709475737078 \cdot 10^{-301}:\\
\;\;\;\;\log im\\
\mathbf{elif}\;re \le 8.145199547234516 \cdot 10^{-246}:\\
\;\;\;\;\log \left(\sqrt{im \cdot im + re \cdot re}\right)\\
\mathbf{elif}\;re \le 4.071831069248947 \cdot 10^{-214}:\\
\;\;\;\;\log im\\
\mathbf{elif}\;re \le 6.734502278787053 \cdot 10^{+66}:\\
\;\;\;\;\log \left(\sqrt{im \cdot im + re \cdot re}\right)\\
\mathbf{else}:\\
\;\;\;\;\log re\\
\end{array}double f(double re, double im) {
double r1793495 = re;
double r1793496 = r1793495 * r1793495;
double r1793497 = im;
double r1793498 = r1793497 * r1793497;
double r1793499 = r1793496 + r1793498;
double r1793500 = sqrt(r1793499);
double r1793501 = log(r1793500);
return r1793501;
}
double f(double re, double im) {
double r1793502 = re;
double r1793503 = -1.272776742038984e+36;
bool r1793504 = r1793502 <= r1793503;
double r1793505 = -r1793502;
double r1793506 = log(r1793505);
double r1793507 = -2.5387418282241494e-275;
bool r1793508 = r1793502 <= r1793507;
double r1793509 = im;
double r1793510 = r1793509 * r1793509;
double r1793511 = r1793502 * r1793502;
double r1793512 = r1793510 + r1793511;
double r1793513 = sqrt(r1793512);
double r1793514 = log(r1793513);
double r1793515 = 3.259709475737078e-301;
bool r1793516 = r1793502 <= r1793515;
double r1793517 = log(r1793509);
double r1793518 = 8.145199547234516e-246;
bool r1793519 = r1793502 <= r1793518;
double r1793520 = 4.071831069248947e-214;
bool r1793521 = r1793502 <= r1793520;
double r1793522 = 6.734502278787053e+66;
bool r1793523 = r1793502 <= r1793522;
double r1793524 = log(r1793502);
double r1793525 = r1793523 ? r1793514 : r1793524;
double r1793526 = r1793521 ? r1793517 : r1793525;
double r1793527 = r1793519 ? r1793514 : r1793526;
double r1793528 = r1793516 ? r1793517 : r1793527;
double r1793529 = r1793508 ? r1793514 : r1793528;
double r1793530 = r1793504 ? r1793506 : r1793529;
return r1793530;
}



Bits error versus re



Bits error versus im
Results
if re < -1.272776742038984e+36Initial program 41.3
Taylor expanded around -inf 11.8
Simplified11.8
if -1.272776742038984e+36 < re < -2.5387418282241494e-275 or 3.259709475737078e-301 < re < 8.145199547234516e-246 or 4.071831069248947e-214 < re < 6.734502278787053e+66Initial program 20.8
if -2.5387418282241494e-275 < re < 3.259709475737078e-301 or 8.145199547234516e-246 < re < 4.071831069248947e-214Initial program 33.3
Taylor expanded around 0 32.3
if 6.734502278787053e+66 < re Initial program 43.5
Taylor expanded around inf 9.0
Final simplification17.0
herbie shell --seed 2019151
(FPCore (re im)
:name "math.log/1 on complex, real part"
(log (sqrt (+ (* re re) (* im im)))))