\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}\frac{-\tan^{-1}_* \frac{im}{re}}{-\log base}double f(double re, double im, double base) {
double r987868 = im;
double r987869 = re;
double r987870 = atan2(r987868, r987869);
double r987871 = base;
double r987872 = log(r987871);
double r987873 = r987870 * r987872;
double r987874 = r987869 * r987869;
double r987875 = r987868 * r987868;
double r987876 = r987874 + r987875;
double r987877 = sqrt(r987876);
double r987878 = log(r987877);
double r987879 = 0.0;
double r987880 = r987878 * r987879;
double r987881 = r987873 - r987880;
double r987882 = r987872 * r987872;
double r987883 = r987879 * r987879;
double r987884 = r987882 + r987883;
double r987885 = r987881 / r987884;
return r987885;
}
double f(double re, double im, double base) {
double r987886 = im;
double r987887 = re;
double r987888 = atan2(r987886, r987887);
double r987889 = -r987888;
double r987890 = base;
double r987891 = log(r987890);
double r987892 = -r987891;
double r987893 = r987889 / r987892;
return r987893;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 30.8
Simplified0.3
rmApplied div-inv0.4
Taylor expanded around inf 0.3
Simplified0.3
Final simplification0.3
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))))