\frac{\tan^{-1}_* \frac{im}{re} \cdot \log base - \log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\frac{1}{\frac{\log base}{\tan^{-1}_* \frac{im}{re}}}double f(double re, double im, double base) {
double r1964958 = im;
double r1964959 = re;
double r1964960 = atan2(r1964958, r1964959);
double r1964961 = base;
double r1964962 = log(r1964961);
double r1964963 = r1964960 * r1964962;
double r1964964 = r1964959 * r1964959;
double r1964965 = r1964958 * r1964958;
double r1964966 = r1964964 + r1964965;
double r1964967 = sqrt(r1964966);
double r1964968 = log(r1964967);
double r1964969 = 0.0;
double r1964970 = r1964968 * r1964969;
double r1964971 = r1964963 - r1964970;
double r1964972 = r1964962 * r1964962;
double r1964973 = r1964969 * r1964969;
double r1964974 = r1964972 + r1964973;
double r1964975 = r1964971 / r1964974;
return r1964975;
}
double f(double re, double im, double base) {
double r1964976 = 1.0;
double r1964977 = base;
double r1964978 = log(r1964977);
double r1964979 = im;
double r1964980 = re;
double r1964981 = atan2(r1964979, r1964980);
double r1964982 = r1964978 / r1964981;
double r1964983 = r1964976 / r1964982;
return r1964983;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 32.1
Simplified0.4
Taylor expanded around 0 0.3
rmApplied clear-num0.5
Final simplification0.5
herbie shell --seed 2019171 +o rules:numerics
(FPCore (re im base)
:name "math.log/2 on complex, imaginary part"
(/ (- (* (atan2 im re) (log base)) (* (log (sqrt (+ (* re re) (* im im)))) 0.0)) (+ (* (log base) (log base)) (* 0.0 0.0))))