\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 r41442 = im;
double r41443 = re;
double r41444 = atan2(r41442, r41443);
double r41445 = base;
double r41446 = log(r41445);
double r41447 = r41444 * r41446;
double r41448 = r41443 * r41443;
double r41449 = r41442 * r41442;
double r41450 = r41448 + r41449;
double r41451 = sqrt(r41450);
double r41452 = log(r41451);
double r41453 = 0.0;
double r41454 = r41452 * r41453;
double r41455 = r41447 - r41454;
double r41456 = r41446 * r41446;
double r41457 = r41453 * r41453;
double r41458 = r41456 + r41457;
double r41459 = r41455 / r41458;
return r41459;
}
double f(double re, double im, double base) {
double r41460 = im;
double r41461 = re;
double r41462 = atan2(r41460, r41461);
double r41463 = base;
double r41464 = log(r41463);
double r41465 = -r41464;
double r41466 = r41462 / r41465;
double r41467 = -r41466;
return r41467;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 31.6
Taylor expanded around inf 0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2020045
(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))))