\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{\tan^{-1}_* \frac{im}{re}}{\log base}double f(double re, double im, double base) {
double r43253 = im;
double r43254 = re;
double r43255 = atan2(r43253, r43254);
double r43256 = base;
double r43257 = log(r43256);
double r43258 = r43255 * r43257;
double r43259 = r43254 * r43254;
double r43260 = r43253 * r43253;
double r43261 = r43259 + r43260;
double r43262 = sqrt(r43261);
double r43263 = log(r43262);
double r43264 = 0.0;
double r43265 = r43263 * r43264;
double r43266 = r43258 - r43265;
double r43267 = r43257 * r43257;
double r43268 = r43264 * r43264;
double r43269 = r43267 + r43268;
double r43270 = r43266 / r43269;
return r43270;
}
double f(double re, double im, double base) {
double r43271 = im;
double r43272 = re;
double r43273 = atan2(r43271, r43272);
double r43274 = base;
double r43275 = log(r43274);
double r43276 = r43273 / r43275;
return r43276;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 31.6
Taylor expanded around 0 0.3
Final simplification0.3
herbie shell --seed 2020100
(FPCore (re im base)
:name "math.log/2 on complex, imaginary part"
:precision binary64
(/ (- (* (atan2 im re) (log base)) (* (log (sqrt (+ (* re re) (* im im)))) 0.0)) (+ (* (log base) (log base)) (* 0.0 0.0))))