\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 r37039 = im;
double r37040 = re;
double r37041 = atan2(r37039, r37040);
double r37042 = base;
double r37043 = log(r37042);
double r37044 = r37041 * r37043;
double r37045 = r37040 * r37040;
double r37046 = r37039 * r37039;
double r37047 = r37045 + r37046;
double r37048 = sqrt(r37047);
double r37049 = log(r37048);
double r37050 = 0.0;
double r37051 = r37049 * r37050;
double r37052 = r37044 - r37051;
double r37053 = r37043 * r37043;
double r37054 = r37050 * r37050;
double r37055 = r37053 + r37054;
double r37056 = r37052 / r37055;
return r37056;
}
double f(double re, double im, double base) {
double r37057 = im;
double r37058 = re;
double r37059 = atan2(r37057, r37058);
double r37060 = base;
double r37061 = log(r37060);
double r37062 = r37059 / r37061;
return r37062;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 31.3
Taylor expanded around 0 0.3
Final simplification0.3
herbie shell --seed 2019352 +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))))