\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0}{\log base \cdot \log base + 0 \cdot 0}\begin{array}{l}
\mathbf{if}\;re \le -1.6633647338752457 \cdot 10^{+69}:\\
\;\;\;\;\frac{0 \cdot \tan^{-1}_* \frac{im}{re} + \log base \cdot \log \left(-re\right)}{\log base \cdot \log base}\\
\mathbf{elif}\;re \le 3.581675146123889 \cdot 10^{-235}:\\
\;\;\;\;\frac{\frac{\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)}{\left|\log base\right|}}{\sqrt{\log base \cdot \log base}}\\
\mathbf{elif}\;re \le 6.649021261519885 \cdot 10^{-193}:\\
\;\;\;\;\frac{\log im}{\log base}\\
\mathbf{elif}\;re \le 7.455578618187527 \cdot 10^{+81}:\\
\;\;\;\;\left(\frac{\log base}{\log base \cdot \log base} \cdot \frac{\log \left(\sqrt{im \cdot im + re \cdot re}\right)}{\left(\log base \cdot \log base\right) \cdot \left(\log base \cdot \log base\right)}\right) \cdot \left(\left(\log base \cdot \log base\right) \cdot 0 + \left(\log base \cdot \log base\right) \cdot \left(\log base \cdot \log base\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{-\frac{\log base}{\frac{\left|\log base\right|}{-\log re}}}{\sqrt{\log base \cdot \log base}}\\
\end{array}double f(double re, double im, double base) {
double r843580 = re;
double r843581 = r843580 * r843580;
double r843582 = im;
double r843583 = r843582 * r843582;
double r843584 = r843581 + r843583;
double r843585 = sqrt(r843584);
double r843586 = log(r843585);
double r843587 = base;
double r843588 = log(r843587);
double r843589 = r843586 * r843588;
double r843590 = atan2(r843582, r843580);
double r843591 = 0.0;
double r843592 = r843590 * r843591;
double r843593 = r843589 + r843592;
double r843594 = r843588 * r843588;
double r843595 = r843591 * r843591;
double r843596 = r843594 + r843595;
double r843597 = r843593 / r843596;
return r843597;
}
double f(double re, double im, double base) {
double r843598 = re;
double r843599 = -1.6633647338752457e+69;
bool r843600 = r843598 <= r843599;
double r843601 = 0.0;
double r843602 = im;
double r843603 = atan2(r843602, r843598);
double r843604 = r843601 * r843603;
double r843605 = base;
double r843606 = log(r843605);
double r843607 = -r843598;
double r843608 = log(r843607);
double r843609 = r843606 * r843608;
double r843610 = r843604 + r843609;
double r843611 = r843606 * r843606;
double r843612 = r843610 / r843611;
double r843613 = 3.581675146123889e-235;
bool r843614 = r843598 <= r843613;
double r843615 = r843602 * r843602;
double r843616 = r843598 * r843598;
double r843617 = r843615 + r843616;
double r843618 = sqrt(r843617);
double r843619 = log(r843618);
double r843620 = r843606 * r843619;
double r843621 = fabs(r843606);
double r843622 = r843620 / r843621;
double r843623 = sqrt(r843611);
double r843624 = r843622 / r843623;
double r843625 = 6.649021261519885e-193;
bool r843626 = r843598 <= r843625;
double r843627 = log(r843602);
double r843628 = r843627 / r843606;
double r843629 = 7.455578618187527e+81;
bool r843630 = r843598 <= r843629;
double r843631 = r843606 / r843611;
double r843632 = r843611 * r843611;
double r843633 = r843619 / r843632;
double r843634 = r843631 * r843633;
double r843635 = r843611 * r843601;
double r843636 = r843635 + r843632;
double r843637 = r843634 * r843636;
double r843638 = log(r843598);
double r843639 = -r843638;
double r843640 = r843621 / r843639;
double r843641 = r843606 / r843640;
double r843642 = -r843641;
double r843643 = r843642 / r843623;
double r843644 = r843630 ? r843637 : r843643;
double r843645 = r843626 ? r843628 : r843644;
double r843646 = r843614 ? r843624 : r843645;
double r843647 = r843600 ? r843612 : r843646;
return r843647;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -1.6633647338752457e+69Initial program 45.9
Taylor expanded around -inf 9.9
Simplified9.9
if -1.6633647338752457e+69 < re < 3.581675146123889e-235Initial program 22.0
rmApplied add-sqr-sqrt22.0
Applied associate-/r*21.9
Simplified21.9
if 3.581675146123889e-235 < re < 6.649021261519885e-193Initial program 32.8
Simplified32.8
Taylor expanded around 0 30.1
if 6.649021261519885e-193 < re < 7.455578618187527e+81Initial program 17.7
rmApplied flip3-+17.8
Applied associate-/r/17.8
Simplified17.7
if 7.455578618187527e+81 < re Initial program 47.3
rmApplied add-sqr-sqrt47.3
Applied associate-/r*47.3
Simplified47.3
Taylor expanded around inf 9.2
Simplified9.2
Final simplification16.6
herbie shell --seed 2019153
(FPCore (re im base)
:name "math.log/2 on complex, real part"
(/ (+ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (atan2 im re) 0)) (+ (* (log base) (log base)) (* 0 0))))