\log \left(\sqrt{re \cdot re + im \cdot im}\right)\begin{array}{l}
\mathbf{if}\;re \le -4.1975508038006968 \cdot 10^{153}:\\
\;\;\;\;\log \left(-re\right)\\
\mathbf{elif}\;re \le -9.52817244882649108 \cdot 10^{-265}:\\
\;\;\;\;\log \left(\sqrt{re \cdot re + im \cdot im}\right)\\
\mathbf{elif}\;re \le 1.04745553524127593 \cdot 10^{-281}:\\
\;\;\;\;\log im\\
\mathbf{elif}\;re \le 8.0421619395688348 \cdot 10^{92}:\\
\;\;\;\;\log \left(\sqrt{re \cdot re + im \cdot im}\right)\\
\mathbf{else}:\\
\;\;\;\;\log re\\
\end{array}double f(double re, double im) {
double r37141 = re;
double r37142 = r37141 * r37141;
double r37143 = im;
double r37144 = r37143 * r37143;
double r37145 = r37142 + r37144;
double r37146 = sqrt(r37145);
double r37147 = log(r37146);
return r37147;
}
double f(double re, double im) {
double r37148 = re;
double r37149 = -4.197550803800697e+153;
bool r37150 = r37148 <= r37149;
double r37151 = -r37148;
double r37152 = log(r37151);
double r37153 = -9.528172448826491e-265;
bool r37154 = r37148 <= r37153;
double r37155 = r37148 * r37148;
double r37156 = im;
double r37157 = r37156 * r37156;
double r37158 = r37155 + r37157;
double r37159 = sqrt(r37158);
double r37160 = log(r37159);
double r37161 = 1.047455535241276e-281;
bool r37162 = r37148 <= r37161;
double r37163 = log(r37156);
double r37164 = 8.042161939568835e+92;
bool r37165 = r37148 <= r37164;
double r37166 = log(r37148);
double r37167 = r37165 ? r37160 : r37166;
double r37168 = r37162 ? r37163 : r37167;
double r37169 = r37154 ? r37160 : r37168;
double r37170 = r37150 ? r37152 : r37169;
return r37170;
}



Bits error versus re



Bits error versus im
Results
if re < -4.197550803800697e+153Initial program 63.9
Taylor expanded around -inf 6.5
Simplified6.5
if -4.197550803800697e+153 < re < -9.528172448826491e-265 or 1.047455535241276e-281 < re < 8.042161939568835e+92Initial program 21.3
if -9.528172448826491e-265 < re < 1.047455535241276e-281Initial program 31.7
Taylor expanded around 0 33.5
if 8.042161939568835e+92 < re Initial program 50.4
Taylor expanded around inf 7.8
Final simplification17.8
herbie shell --seed 2020046
(FPCore (re im)
:name "math.log/1 on complex, real part"
:precision binary64
(log (sqrt (+ (* re re) (* im im)))))