\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}-\tan^{-1}_* \frac{im}{re} \cdot \frac{-1}{\log base}double f(double re, double im, double base) {
double r96115 = im;
double r96116 = re;
double r96117 = atan2(r96115, r96116);
double r96118 = base;
double r96119 = log(r96118);
double r96120 = r96117 * r96119;
double r96121 = r96116 * r96116;
double r96122 = r96115 * r96115;
double r96123 = r96121 + r96122;
double r96124 = sqrt(r96123);
double r96125 = log(r96124);
double r96126 = 0.0;
double r96127 = r96125 * r96126;
double r96128 = r96120 - r96127;
double r96129 = r96119 * r96119;
double r96130 = r96126 * r96126;
double r96131 = r96129 + r96130;
double r96132 = r96128 / r96131;
return r96132;
}
double f(double re, double im, double base) {
double r96133 = im;
double r96134 = re;
double r96135 = atan2(r96133, r96134);
double r96136 = -1.0;
double r96137 = base;
double r96138 = log(r96137);
double r96139 = r96136 / r96138;
double r96140 = r96135 * r96139;
double r96141 = -r96140;
return r96141;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 31.8
Simplified0.4
Taylor expanded around inf 0.3
Simplified0.3
rmApplied div-inv0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2020046 +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))))