\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 -2039.492255936364927038084715604782104492:\\
\;\;\;\;\frac{\frac{\tan^{-1}_* \frac{im}{re} \cdot 0.0 + \log base \cdot \log \left(-re\right)}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}{\sqrt{0.0 \cdot 0.0 + \sqrt[3]{\left(\left(\log base \cdot \log base\right) \cdot \left(\log base \cdot \log base\right)\right) \cdot \left(\log base \cdot \log base\right)}}}\\
\mathbf{elif}\;re \le 4.884463756615851339998987097792534597928 \cdot 10^{57}:\\
\;\;\;\;\frac{\frac{\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right) + \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}}\\
\mathbf{else}:\\
\;\;\;\;\frac{-\log re}{-\log base}\\
\end{array}double f(double re, double im, double base) {
double r2354424 = re;
double r2354425 = r2354424 * r2354424;
double r2354426 = im;
double r2354427 = r2354426 * r2354426;
double r2354428 = r2354425 + r2354427;
double r2354429 = sqrt(r2354428);
double r2354430 = log(r2354429);
double r2354431 = base;
double r2354432 = log(r2354431);
double r2354433 = r2354430 * r2354432;
double r2354434 = atan2(r2354426, r2354424);
double r2354435 = 0.0;
double r2354436 = r2354434 * r2354435;
double r2354437 = r2354433 + r2354436;
double r2354438 = r2354432 * r2354432;
double r2354439 = r2354435 * r2354435;
double r2354440 = r2354438 + r2354439;
double r2354441 = r2354437 / r2354440;
return r2354441;
}
double f(double re, double im, double base) {
double r2354442 = re;
double r2354443 = -2039.492255936365;
bool r2354444 = r2354442 <= r2354443;
double r2354445 = im;
double r2354446 = atan2(r2354445, r2354442);
double r2354447 = 0.0;
double r2354448 = r2354446 * r2354447;
double r2354449 = base;
double r2354450 = log(r2354449);
double r2354451 = -r2354442;
double r2354452 = log(r2354451);
double r2354453 = r2354450 * r2354452;
double r2354454 = r2354448 + r2354453;
double r2354455 = r2354450 * r2354450;
double r2354456 = r2354447 * r2354447;
double r2354457 = r2354455 + r2354456;
double r2354458 = sqrt(r2354457);
double r2354459 = r2354454 / r2354458;
double r2354460 = r2354455 * r2354455;
double r2354461 = r2354460 * r2354455;
double r2354462 = cbrt(r2354461);
double r2354463 = r2354456 + r2354462;
double r2354464 = sqrt(r2354463);
double r2354465 = r2354459 / r2354464;
double r2354466 = 4.884463756615851e+57;
bool r2354467 = r2354442 <= r2354466;
double r2354468 = r2354445 * r2354445;
double r2354469 = r2354442 * r2354442;
double r2354470 = r2354468 + r2354469;
double r2354471 = sqrt(r2354470);
double r2354472 = log(r2354471);
double r2354473 = r2354450 * r2354472;
double r2354474 = r2354473 + r2354448;
double r2354475 = r2354474 / r2354458;
double r2354476 = r2354475 / r2354458;
double r2354477 = log(r2354442);
double r2354478 = -r2354477;
double r2354479 = -r2354450;
double r2354480 = r2354478 / r2354479;
double r2354481 = r2354467 ? r2354476 : r2354480;
double r2354482 = r2354444 ? r2354465 : r2354481;
return r2354482;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -2039.492255936365Initial program 41.1
rmApplied add-sqr-sqrt41.1
Applied associate-/r*41.1
rmApplied add-cbrt-cube41.2
Taylor expanded around -inf 13.5
Simplified13.5
if -2039.492255936365 < re < 4.884463756615851e+57Initial program 23.1
rmApplied add-sqr-sqrt23.1
Applied associate-/r*23.0
rmApplied add-cbrt-cube23.1
rmApplied pow323.1
Applied rem-cbrt-cube23.0
if 4.884463756615851e+57 < re Initial program 45.0
Taylor expanded around inf 10.5
Simplified10.5
Final simplification18.1
herbie shell --seed 2019169
(FPCore (re im base)
:name "math.log/2 on complex, real part"
(/ (+ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (atan2 im re) 0.0)) (+ (* (log base) (log base)) (* 0.0 0.0))))