\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 r773002 = im;
double r773003 = re;
double r773004 = atan2(r773002, r773003);
double r773005 = base;
double r773006 = log(r773005);
double r773007 = r773004 * r773006;
double r773008 = r773003 * r773003;
double r773009 = r773002 * r773002;
double r773010 = r773008 + r773009;
double r773011 = sqrt(r773010);
double r773012 = log(r773011);
double r773013 = 0.0;
double r773014 = r773012 * r773013;
double r773015 = r773007 - r773014;
double r773016 = r773006 * r773006;
double r773017 = r773013 * r773013;
double r773018 = r773016 + r773017;
double r773019 = r773015 / r773018;
return r773019;
}
double f(double re, double im, double base) {
double r773020 = im;
double r773021 = re;
double r773022 = atan2(r773020, r773021);
double r773023 = base;
double r773024 = log(r773023);
double r773025 = r773022 / r773024;
return r773025;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 31.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2019154 +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))))