\frac{\tan^{-1}_* \frac{im}{re} \cdot \log base - \log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot 0}{\log base \cdot \log base + 0 \cdot 0}\tan^{-1}_* \frac{im}{re} \cdot \sqrt[3]{\left(\frac{1}{\log base} \cdot \frac{1}{\log base}\right) \cdot \frac{1}{\log base}}double f(double re, double im, double base) {
double r999844 = im;
double r999845 = re;
double r999846 = atan2(r999844, r999845);
double r999847 = base;
double r999848 = log(r999847);
double r999849 = r999846 * r999848;
double r999850 = r999845 * r999845;
double r999851 = r999844 * r999844;
double r999852 = r999850 + r999851;
double r999853 = sqrt(r999852);
double r999854 = log(r999853);
double r999855 = 0.0;
double r999856 = r999854 * r999855;
double r999857 = r999849 - r999856;
double r999858 = r999848 * r999848;
double r999859 = r999855 * r999855;
double r999860 = r999858 + r999859;
double r999861 = r999857 / r999860;
return r999861;
}
double f(double re, double im, double base) {
double r999862 = im;
double r999863 = re;
double r999864 = atan2(r999862, r999863);
double r999865 = 1.0;
double r999866 = base;
double r999867 = log(r999866);
double r999868 = r999865 / r999867;
double r999869 = r999868 * r999868;
double r999870 = r999869 * r999868;
double r999871 = cbrt(r999870);
double r999872 = r999864 * r999871;
return r999872;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 30.8
Simplified0.3
rmApplied div-inv0.4
rmApplied add-cbrt-cube0.7
Final simplification0.7
herbie shell --seed 2019153 +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)) (+ (* (log base) (log base)) (* 0 0))))