\log \left(\sqrt{re \cdot re + im \cdot im}\right)\begin{array}{l}
\mathbf{if}\;re \le -1.9126520588893617 \cdot 10^{+89}:\\
\;\;\;\;\log \left(-re\right)\\
\mathbf{elif}\;re \le -1.0485843961505591 \cdot 10^{-243}:\\
\;\;\;\;\log \left(\sqrt{im \cdot im + re \cdot re}\right)\\
\mathbf{elif}\;re \le 1.6776212883736178 \cdot 10^{-164}:\\
\;\;\;\;\log im\\
\mathbf{elif}\;re \le 3384984853102974.0:\\
\;\;\;\;\log \left(\sqrt{im \cdot im + re \cdot re}\right)\\
\mathbf{else}:\\
\;\;\;\;\log re\\
\end{array}double f(double re, double im) {
double r579525 = re;
double r579526 = r579525 * r579525;
double r579527 = im;
double r579528 = r579527 * r579527;
double r579529 = r579526 + r579528;
double r579530 = sqrt(r579529);
double r579531 = log(r579530);
return r579531;
}
double f(double re, double im) {
double r579532 = re;
double r579533 = -1.9126520588893617e+89;
bool r579534 = r579532 <= r579533;
double r579535 = -r579532;
double r579536 = log(r579535);
double r579537 = -1.0485843961505591e-243;
bool r579538 = r579532 <= r579537;
double r579539 = im;
double r579540 = r579539 * r579539;
double r579541 = r579532 * r579532;
double r579542 = r579540 + r579541;
double r579543 = sqrt(r579542);
double r579544 = log(r579543);
double r579545 = 1.6776212883736178e-164;
bool r579546 = r579532 <= r579545;
double r579547 = log(r579539);
double r579548 = 3384984853102974.0;
bool r579549 = r579532 <= r579548;
double r579550 = log(r579532);
double r579551 = r579549 ? r579544 : r579550;
double r579552 = r579546 ? r579547 : r579551;
double r579553 = r579538 ? r579544 : r579552;
double r579554 = r579534 ? r579536 : r579553;
return r579554;
}



Bits error versus re



Bits error versus im
Results
if re < -1.9126520588893617e+89Initial program 48.1
Taylor expanded around -inf 9.3
Simplified9.3
if -1.9126520588893617e+89 < re < -1.0485843961505591e-243 or 1.6776212883736178e-164 < re < 3384984853102974.0Initial program 18.5
if -1.0485843961505591e-243 < re < 1.6776212883736178e-164Initial program 30.2
Taylor expanded around 0 35.3
if 3384984853102974.0 < re Initial program 40.1
Taylor expanded around inf 11.6
Final simplification18.1
herbie shell --seed 2019120
(FPCore (re im)
:name "math.log/1 on complex, real part"
(log (sqrt (+ (* re re) (* im im)))))