\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 r33225 = re;
double r33226 = r33225 * r33225;
double r33227 = im;
double r33228 = r33227 * r33227;
double r33229 = r33226 + r33228;
double r33230 = sqrt(r33229);
double r33231 = log(r33230);
return r33231;
}
double f(double re, double im) {
double r33232 = re;
double r33233 = -4.197550803800697e+153;
bool r33234 = r33232 <= r33233;
double r33235 = -r33232;
double r33236 = log(r33235);
double r33237 = -9.528172448826491e-265;
bool r33238 = r33232 <= r33237;
double r33239 = r33232 * r33232;
double r33240 = im;
double r33241 = r33240 * r33240;
double r33242 = r33239 + r33241;
double r33243 = sqrt(r33242);
double r33244 = log(r33243);
double r33245 = 1.047455535241276e-281;
bool r33246 = r33232 <= r33245;
double r33247 = log(r33240);
double r33248 = 8.042161939568835e+92;
bool r33249 = r33232 <= r33248;
double r33250 = log(r33232);
double r33251 = r33249 ? r33244 : r33250;
double r33252 = r33246 ? r33247 : r33251;
double r33253 = r33238 ? r33244 : r33252;
double r33254 = r33234 ? r33236 : r33253;
return r33254;
}



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)))))