\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(\log \left(im \cdot im + re \cdot re\right) \cdot \frac{1}{\log base}\right) \cdot \frac{1}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log re}{\log base}\\
\end{array}double f(double re, double im, double base) {
double r2565963 = re;
double r2565964 = r2565963 * r2565963;
double r2565965 = im;
double r2565966 = r2565965 * r2565965;
double r2565967 = r2565964 + r2565966;
double r2565968 = sqrt(r2565967);
double r2565969 = log(r2565968);
double r2565970 = base;
double r2565971 = log(r2565970);
double r2565972 = r2565969 * r2565971;
double r2565973 = atan2(r2565965, r2565963);
double r2565974 = 0.0;
double r2565975 = r2565973 * r2565974;
double r2565976 = r2565972 + r2565975;
double r2565977 = r2565971 * r2565971;
double r2565978 = r2565974 * r2565974;
double r2565979 = r2565977 + r2565978;
double r2565980 = r2565976 / r2565979;
return r2565980;
}
double f(double re, double im, double base) {
double r2565981 = re;
double r2565982 = -5.139279335366515e+91;
bool r2565983 = r2565981 <= r2565982;
double r2565984 = -r2565981;
double r2565985 = log(r2565984);
double r2565986 = base;
double r2565987 = log(r2565986);
double r2565988 = r2565985 / r2565987;
double r2565989 = 6.605815153598046e+41;
bool r2565990 = r2565981 <= r2565989;
double r2565991 = im;
double r2565992 = r2565991 * r2565991;
double r2565993 = r2565981 * r2565981;
double r2565994 = r2565992 + r2565993;
double r2565995 = log(r2565994);
double r2565996 = 1.0;
double r2565997 = r2565996 / r2565987;
double r2565998 = r2565995 * r2565997;
double r2565999 = 0.5;
double r2566000 = r2565998 * r2565999;
double r2566001 = log(r2565981);
double r2566002 = r2566001 / r2565987;
double r2566003 = r2565990 ? r2566000 : r2566002;
double r2566004 = r2565983 ? r2565988 : r2566003;
return r2566004;
}



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 pow121.8
Applied log-pow21.8
Applied pow1/221.8
Applied log-pow21.8
Applied times-frac21.8
Simplified21.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))))