\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\begin{array}{l}
\mathbf{if}\;re \le -1318044099381772512265940808597708967248000:\\
\;\;\;\;\frac{\log \left(-1 \cdot re\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\\
\mathbf{elif}\;re \le 6.261598578150243116619193101283974553908 \cdot 10^{58}:\\
\;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(-{0.0}^{3}\right) \cdot 0.0 + {\left(\log base\right)}^{4}} \cdot \left(\log base \cdot \log base - 0.0 \cdot 0.0\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\log re \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\
\end{array}double f(double re, double im, double base) {
double r54269 = re;
double r54270 = r54269 * r54269;
double r54271 = im;
double r54272 = r54271 * r54271;
double r54273 = r54270 + r54272;
double r54274 = sqrt(r54273);
double r54275 = log(r54274);
double r54276 = base;
double r54277 = log(r54276);
double r54278 = r54275 * r54277;
double r54279 = atan2(r54271, r54269);
double r54280 = 0.0;
double r54281 = r54279 * r54280;
double r54282 = r54278 + r54281;
double r54283 = r54277 * r54277;
double r54284 = r54280 * r54280;
double r54285 = r54283 + r54284;
double r54286 = r54282 / r54285;
return r54286;
}
double f(double re, double im, double base) {
double r54287 = re;
double r54288 = -1.3180440993817725e+42;
bool r54289 = r54287 <= r54288;
double r54290 = -1.0;
double r54291 = r54290 * r54287;
double r54292 = log(r54291);
double r54293 = base;
double r54294 = log(r54293);
double r54295 = r54292 * r54294;
double r54296 = im;
double r54297 = atan2(r54296, r54287);
double r54298 = 0.0;
double r54299 = r54297 * r54298;
double r54300 = r54295 + r54299;
double r54301 = r54294 * r54294;
double r54302 = r54298 * r54298;
double r54303 = r54301 + r54302;
double r54304 = r54300 / r54303;
double r54305 = 6.261598578150243e+58;
bool r54306 = r54287 <= r54305;
double r54307 = r54287 * r54287;
double r54308 = r54296 * r54296;
double r54309 = r54307 + r54308;
double r54310 = sqrt(r54309);
double r54311 = log(r54310);
double r54312 = r54311 * r54294;
double r54313 = r54312 + r54299;
double r54314 = 3.0;
double r54315 = pow(r54298, r54314);
double r54316 = -r54315;
double r54317 = r54316 * r54298;
double r54318 = 4.0;
double r54319 = pow(r54294, r54318);
double r54320 = r54317 + r54319;
double r54321 = r54313 / r54320;
double r54322 = r54301 - r54302;
double r54323 = r54321 * r54322;
double r54324 = log(r54287);
double r54325 = r54324 * r54294;
double r54326 = r54325 + r54299;
double r54327 = sqrt(r54303);
double r54328 = r54326 / r54327;
double r54329 = r54328 / r54327;
double r54330 = r54306 ? r54323 : r54329;
double r54331 = r54289 ? r54304 : r54330;
return r54331;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -1.3180440993817725e+42Initial program 44.9
Taylor expanded around -inf 11.4
if -1.3180440993817725e+42 < re < 6.261598578150243e+58Initial program 22.6
rmApplied flip-+22.6
Applied associate-/r/22.7
Simplified22.7
if 6.261598578150243e+58 < re Initial program 45.3
rmApplied add-sqr-sqrt45.3
Applied associate-/r*45.2
Taylor expanded around inf 11.6
Final simplification18.0
herbie shell --seed 2019297
(FPCore (re im base)
:name "math.log/2 on complex, real part"
:precision binary64
(/ (+ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (atan2 im re) 0.0)) (+ (* (log base) (log base)) (* 0.0 0.0))))