\log \left(\sqrt{re \cdot re + im \cdot im}\right)\begin{array}{l}
\mathbf{if}\;re \le -2.552702335522331775782681989067170419459 \cdot 10^{114}:\\
\;\;\;\;\log \left(-1 \cdot re\right)\\
\mathbf{elif}\;re \le -8.357854099413858949922341791993400005698 \cdot 10^{-296}:\\
\;\;\;\;\log \left(\sqrt{re \cdot re + im \cdot im}\right)\\
\mathbf{elif}\;re \le 7.758435713562231820695193588189493548713 \cdot 10^{-281}:\\
\;\;\;\;\log im\\
\mathbf{elif}\;re \le 1.241086545067041095458499268505642473269 \cdot 10^{67}:\\
\;\;\;\;\log \left(\sqrt{re \cdot re + im \cdot im}\right)\\
\mathbf{else}:\\
\;\;\;\;\log re\\
\end{array}double f(double re, double im) {
double r36519 = re;
double r36520 = r36519 * r36519;
double r36521 = im;
double r36522 = r36521 * r36521;
double r36523 = r36520 + r36522;
double r36524 = sqrt(r36523);
double r36525 = log(r36524);
return r36525;
}
double f(double re, double im) {
double r36526 = re;
double r36527 = -2.552702335522332e+114;
bool r36528 = r36526 <= r36527;
double r36529 = -1.0;
double r36530 = r36529 * r36526;
double r36531 = log(r36530);
double r36532 = -8.357854099413859e-296;
bool r36533 = r36526 <= r36532;
double r36534 = r36526 * r36526;
double r36535 = im;
double r36536 = r36535 * r36535;
double r36537 = r36534 + r36536;
double r36538 = sqrt(r36537);
double r36539 = log(r36538);
double r36540 = 7.758435713562232e-281;
bool r36541 = r36526 <= r36540;
double r36542 = log(r36535);
double r36543 = 1.2410865450670411e+67;
bool r36544 = r36526 <= r36543;
double r36545 = log(r36526);
double r36546 = r36544 ? r36539 : r36545;
double r36547 = r36541 ? r36542 : r36546;
double r36548 = r36533 ? r36539 : r36547;
double r36549 = r36528 ? r36531 : r36548;
return r36549;
}



Bits error versus re



Bits error versus im
Results
if re < -2.552702335522332e+114Initial program 53.5
Taylor expanded around -inf 8.2
if -2.552702335522332e+114 < re < -8.357854099413859e-296 or 7.758435713562232e-281 < re < 1.2410865450670411e+67Initial program 21.3
if -8.357854099413859e-296 < re < 7.758435713562232e-281Initial program 29.5
Taylor expanded around 0 34.3
if 1.2410865450670411e+67 < re Initial program 45.0
Taylor expanded around inf 9.6
Final simplification17.3
herbie shell --seed 2019352
(FPCore (re im)
:name "math.log/1 on complex, real part"
:precision binary64
(log (sqrt (+ (* re re) (* im im)))))