\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 -3.208881572790857737196159469868540715329 \cdot 10^{84}:\\
\;\;\;\;\frac{1}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}} \cdot \frac{\log \left(-1 \cdot re\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\
\mathbf{elif}\;re \le -2.154730296546261167661637354506697066031 \cdot 10^{-277}:\\
\;\;\;\;\frac{1}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}} \cdot \frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\
\mathbf{elif}\;re \le 6.204032340478080690018028804633966533235 \cdot 10^{-222}:\\
\;\;\;\;\frac{\log im}{\log base}\\
\mathbf{elif}\;re \le 1.491308852675900446685390979722992003802 \cdot 10^{116}:\\
\;\;\;\;\frac{1}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}} \cdot \frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}\\
\end{array}double f(double re, double im, double base) {
double r45542 = re;
double r45543 = r45542 * r45542;
double r45544 = im;
double r45545 = r45544 * r45544;
double r45546 = r45543 + r45545;
double r45547 = sqrt(r45546);
double r45548 = log(r45547);
double r45549 = base;
double r45550 = log(r45549);
double r45551 = r45548 * r45550;
double r45552 = atan2(r45544, r45542);
double r45553 = 0.0;
double r45554 = r45552 * r45553;
double r45555 = r45551 + r45554;
double r45556 = r45550 * r45550;
double r45557 = r45553 * r45553;
double r45558 = r45556 + r45557;
double r45559 = r45555 / r45558;
return r45559;
}
double f(double re, double im, double base) {
double r45560 = re;
double r45561 = -3.2088815727908577e+84;
bool r45562 = r45560 <= r45561;
double r45563 = 1.0;
double r45564 = base;
double r45565 = log(r45564);
double r45566 = r45565 * r45565;
double r45567 = 0.0;
double r45568 = r45567 * r45567;
double r45569 = r45566 + r45568;
double r45570 = sqrt(r45569);
double r45571 = r45563 / r45570;
double r45572 = -1.0;
double r45573 = r45572 * r45560;
double r45574 = log(r45573);
double r45575 = r45574 * r45565;
double r45576 = im;
double r45577 = atan2(r45576, r45560);
double r45578 = r45577 * r45567;
double r45579 = r45575 + r45578;
double r45580 = r45579 / r45570;
double r45581 = r45571 * r45580;
double r45582 = -2.1547302965462612e-277;
bool r45583 = r45560 <= r45582;
double r45584 = r45560 * r45560;
double r45585 = r45576 * r45576;
double r45586 = r45584 + r45585;
double r45587 = sqrt(r45586);
double r45588 = log(r45587);
double r45589 = r45588 * r45565;
double r45590 = r45589 + r45578;
double r45591 = r45590 / r45570;
double r45592 = r45571 * r45591;
double r45593 = 6.204032340478081e-222;
bool r45594 = r45560 <= r45593;
double r45595 = log(r45576);
double r45596 = r45595 / r45565;
double r45597 = 1.4913088526759004e+116;
bool r45598 = r45560 <= r45597;
double r45599 = r45563 / r45560;
double r45600 = log(r45599);
double r45601 = r45563 / r45564;
double r45602 = log(r45601);
double r45603 = r45600 / r45602;
double r45604 = r45598 ? r45592 : r45603;
double r45605 = r45594 ? r45596 : r45604;
double r45606 = r45583 ? r45592 : r45605;
double r45607 = r45562 ? r45581 : r45606;
return r45607;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -3.2088815727908577e+84Initial program 49.8
rmApplied add-sqr-sqrt49.8
Applied *-un-lft-identity49.8
Applied times-frac49.8
Taylor expanded around -inf 10.0
if -3.2088815727908577e+84 < re < -2.1547302965462612e-277 or 6.204032340478081e-222 < re < 1.4913088526759004e+116Initial program 19.9
rmApplied add-sqr-sqrt19.9
Applied *-un-lft-identity19.9
Applied times-frac19.9
if -2.1547302965462612e-277 < re < 6.204032340478081e-222Initial program 33.1
Taylor expanded around 0 33.6
if 1.4913088526759004e+116 < re Initial program 54.9
Taylor expanded around inf 8.6
Final simplification17.7
herbie shell --seed 2019291
(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))))