\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 -5.139279335366515 \cdot 10^{+91}:\\
\;\;\;\;\frac{\log \left(-re\right)}{\log base}\\
\mathbf{elif}\;re \le 6.605815153598046 \cdot 10^{+41}:\\
\;\;\;\;\left(\frac{1}{2} \cdot \log \left(im \cdot im + re \cdot re\right)\right) \cdot \frac{1}{\log base}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log re}{\log base}\\
\end{array}double f(double re, double im, double base) {
double r2827910 = re;
double r2827911 = r2827910 * r2827910;
double r2827912 = im;
double r2827913 = r2827912 * r2827912;
double r2827914 = r2827911 + r2827913;
double r2827915 = sqrt(r2827914);
double r2827916 = log(r2827915);
double r2827917 = base;
double r2827918 = log(r2827917);
double r2827919 = r2827916 * r2827918;
double r2827920 = atan2(r2827912, r2827910);
double r2827921 = 0.0;
double r2827922 = r2827920 * r2827921;
double r2827923 = r2827919 + r2827922;
double r2827924 = r2827918 * r2827918;
double r2827925 = r2827921 * r2827921;
double r2827926 = r2827924 + r2827925;
double r2827927 = r2827923 / r2827926;
return r2827927;
}
double f(double re, double im, double base) {
double r2827928 = re;
double r2827929 = -5.139279335366515e+91;
bool r2827930 = r2827928 <= r2827929;
double r2827931 = -r2827928;
double r2827932 = log(r2827931);
double r2827933 = base;
double r2827934 = log(r2827933);
double r2827935 = r2827932 / r2827934;
double r2827936 = 6.605815153598046e+41;
bool r2827937 = r2827928 <= r2827936;
double r2827938 = 0.5;
double r2827939 = im;
double r2827940 = r2827939 * r2827939;
double r2827941 = r2827928 * r2827928;
double r2827942 = r2827940 + r2827941;
double r2827943 = log(r2827942);
double r2827944 = r2827938 * r2827943;
double r2827945 = 1.0;
double r2827946 = r2827945 / r2827934;
double r2827947 = r2827944 * r2827946;
double r2827948 = log(r2827928);
double r2827949 = r2827948 / r2827934;
double r2827950 = r2827937 ? r2827947 : r2827949;
double r2827951 = r2827930 ? r2827935 : r2827950;
return r2827951;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -5.139279335366515e+91Initial program 47.9
Simplified47.9
Taylor expanded around -inf 9.2
Simplified9.2
if -5.139279335366515e+91 < re < 6.605815153598046e+41Initial program 21.9
Simplified21.8
rmApplied pow1/221.8
Applied log-pow21.8
rmApplied div-inv21.9
if 6.605815153598046e+41 < re Initial program 43.4
Simplified43.3
Taylor expanded around inf 11.8
Final simplification17.4
herbie shell --seed 2019163
(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))))