\log \left(\sqrt{re \cdot re + im \cdot im}\right)\begin{array}{l}
\mathbf{if}\;re \le -44144913.1003666148:\\
\;\;\;\;\log \left(-re\right)\\
\mathbf{elif}\;re \le 5.7520550571681611 \cdot 10^{125}:\\
\;\;\;\;\log \left(\sqrt{re \cdot re + im \cdot im}\right)\\
\mathbf{else}:\\
\;\;\;\;\log re\\
\end{array}double f(double re, double im) {
double r35467 = re;
double r35468 = r35467 * r35467;
double r35469 = im;
double r35470 = r35469 * r35469;
double r35471 = r35468 + r35470;
double r35472 = sqrt(r35471);
double r35473 = log(r35472);
return r35473;
}
double f(double re, double im) {
double r35474 = re;
double r35475 = -44144913.100366615;
bool r35476 = r35474 <= r35475;
double r35477 = -r35474;
double r35478 = log(r35477);
double r35479 = 5.752055057168161e+125;
bool r35480 = r35474 <= r35479;
double r35481 = r35474 * r35474;
double r35482 = im;
double r35483 = r35482 * r35482;
double r35484 = r35481 + r35483;
double r35485 = sqrt(r35484);
double r35486 = log(r35485);
double r35487 = log(r35474);
double r35488 = r35480 ? r35486 : r35487;
double r35489 = r35476 ? r35478 : r35488;
return r35489;
}



Bits error versus re



Bits error versus im
Results
if re < -44144913.100366615Initial program 41.6
Taylor expanded around -inf 12.6
Simplified12.6
if -44144913.100366615 < re < 5.752055057168161e+125Initial program 22.3
if 5.752055057168161e+125 < re Initial program 56.0
Taylor expanded around inf 7.7
Final simplification17.8
herbie shell --seed 2019199
(FPCore (re im)
:name "math.log/1 on complex, real part"
(log (sqrt (+ (* re re) (* im im)))))