\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 -2.929915037932605 \cdot 10^{+116}:\\
\;\;\;\;\frac{-1}{\frac{\log base}{\log \left(\frac{-1}{re}\right)}}\\
\mathbf{elif}\;re \le 3.688680909166565 \cdot 10^{-273}:\\
\;\;\;\;\frac{1}{\log base} \cdot \log \left(\sqrt{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt{\sqrt{im \cdot im + re \cdot re}}\right)\\
\mathbf{elif}\;re \le 1.483347789429306 \cdot 10^{-239}:\\
\;\;\;\;\frac{\log im}{\log base}\\
\mathbf{elif}\;re \le 1.687660857647486 \cdot 10^{+127}:\\
\;\;\;\;\frac{\frac{1}{2}}{\frac{\log base}{\log \left(im \cdot im + re \cdot re\right)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\log base} \cdot \log re\\
\end{array}double f(double re, double im, double base) {
double r2009778 = re;
double r2009779 = r2009778 * r2009778;
double r2009780 = im;
double r2009781 = r2009780 * r2009780;
double r2009782 = r2009779 + r2009781;
double r2009783 = sqrt(r2009782);
double r2009784 = log(r2009783);
double r2009785 = base;
double r2009786 = log(r2009785);
double r2009787 = r2009784 * r2009786;
double r2009788 = atan2(r2009780, r2009778);
double r2009789 = 0.0;
double r2009790 = r2009788 * r2009789;
double r2009791 = r2009787 + r2009790;
double r2009792 = r2009786 * r2009786;
double r2009793 = r2009789 * r2009789;
double r2009794 = r2009792 + r2009793;
double r2009795 = r2009791 / r2009794;
return r2009795;
}
double f(double re, double im, double base) {
double r2009796 = re;
double r2009797 = -2.929915037932605e+116;
bool r2009798 = r2009796 <= r2009797;
double r2009799 = -1.0;
double r2009800 = base;
double r2009801 = log(r2009800);
double r2009802 = r2009799 / r2009796;
double r2009803 = log(r2009802);
double r2009804 = r2009801 / r2009803;
double r2009805 = r2009799 / r2009804;
double r2009806 = 3.688680909166565e-273;
bool r2009807 = r2009796 <= r2009806;
double r2009808 = 1.0;
double r2009809 = r2009808 / r2009801;
double r2009810 = im;
double r2009811 = r2009810 * r2009810;
double r2009812 = r2009796 * r2009796;
double r2009813 = r2009811 + r2009812;
double r2009814 = sqrt(r2009813);
double r2009815 = sqrt(r2009814);
double r2009816 = r2009815 * r2009815;
double r2009817 = log(r2009816);
double r2009818 = r2009809 * r2009817;
double r2009819 = 1.483347789429306e-239;
bool r2009820 = r2009796 <= r2009819;
double r2009821 = log(r2009810);
double r2009822 = r2009821 / r2009801;
double r2009823 = 1.687660857647486e+127;
bool r2009824 = r2009796 <= r2009823;
double r2009825 = 0.5;
double r2009826 = log(r2009813);
double r2009827 = r2009801 / r2009826;
double r2009828 = r2009825 / r2009827;
double r2009829 = log(r2009796);
double r2009830 = r2009809 * r2009829;
double r2009831 = r2009824 ? r2009828 : r2009830;
double r2009832 = r2009820 ? r2009822 : r2009831;
double r2009833 = r2009807 ? r2009818 : r2009832;
double r2009834 = r2009798 ? r2009805 : r2009833;
return r2009834;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -2.929915037932605e+116Initial program 52.3
Simplified52.3
Taylor expanded around -inf 62.8
Simplified7.9
if -2.929915037932605e+116 < re < 3.688680909166565e-273Initial program 20.7
Simplified20.6
rmApplied add-sqr-sqrt20.6
Applied sqrt-prod20.6
rmApplied div-inv20.6
if 3.688680909166565e-273 < re < 1.483347789429306e-239Initial program 32.1
Simplified32.0
Taylor expanded around 0 31.2
if 1.483347789429306e-239 < re < 1.687660857647486e+127Initial program 19.2
Simplified19.1
rmApplied pow1/219.1
Applied log-pow19.1
Applied associate-/l*19.1
if 1.687660857647486e+127 < re Initial program 55.3
Simplified55.3
rmApplied add-sqr-sqrt55.3
Applied sqrt-prod55.3
rmApplied div-inv55.3
Taylor expanded around inf 8.6
Final simplification16.8
herbie shell --seed 2019158
(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))))