\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 r28163 = im;
double r28164 = re;
double r28165 = atan2(r28163, r28164);
double r28166 = base;
double r28167 = log(r28166);
double r28168 = r28165 * r28167;
double r28169 = r28164 * r28164;
double r28170 = r28163 * r28163;
double r28171 = r28169 + r28170;
double r28172 = sqrt(r28171);
double r28173 = log(r28172);
double r28174 = 0.0;
double r28175 = r28173 * r28174;
double r28176 = r28168 - r28175;
double r28177 = r28167 * r28167;
double r28178 = r28174 * r28174;
double r28179 = r28177 + r28178;
double r28180 = r28176 / r28179;
return r28180;
}
double f(double re, double im, double base) {
double r28181 = im;
double r28182 = re;
double r28183 = atan2(r28181, r28182);
double r28184 = base;
double r28185 = log(r28184);
double r28186 = r28183 / r28185;
return r28186;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 32.0
Taylor expanded around 0 0.3
rmApplied div-inv0.4
rmApplied *-un-lft-identity0.4
Applied associate-*l*0.4
Simplified0.3
Final simplification0.3
herbie shell --seed 2020003
(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))))