\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 r85505 = im;
double r85506 = re;
double r85507 = atan2(r85505, r85506);
double r85508 = base;
double r85509 = log(r85508);
double r85510 = r85507 * r85509;
double r85511 = r85506 * r85506;
double r85512 = r85505 * r85505;
double r85513 = r85511 + r85512;
double r85514 = sqrt(r85513);
double r85515 = log(r85514);
double r85516 = 0.0;
double r85517 = r85515 * r85516;
double r85518 = r85510 - r85517;
double r85519 = r85509 * r85509;
double r85520 = r85516 * r85516;
double r85521 = r85519 + r85520;
double r85522 = r85518 / r85521;
return r85522;
}
double f(double re, double im, double base) {
double r85523 = im;
double r85524 = re;
double r85525 = atan2(r85523, r85524);
double r85526 = base;
double r85527 = log(r85526);
double r85528 = r85525 / r85527;
return r85528;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 32.0
Simplified0.4
Taylor expanded around 0 0.3
Final simplification0.3
herbie shell --seed 2019351 +o rules:numerics
(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))))