\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 r100310 = im;
double r100311 = re;
double r100312 = atan2(r100310, r100311);
double r100313 = base;
double r100314 = log(r100313);
double r100315 = r100312 * r100314;
double r100316 = r100311 * r100311;
double r100317 = r100310 * r100310;
double r100318 = r100316 + r100317;
double r100319 = sqrt(r100318);
double r100320 = log(r100319);
double r100321 = 0.0;
double r100322 = r100320 * r100321;
double r100323 = r100315 - r100322;
double r100324 = r100314 * r100314;
double r100325 = r100321 * r100321;
double r100326 = r100324 + r100325;
double r100327 = r100323 / r100326;
return r100327;
}
double f(double re, double im, double base) {
double r100328 = im;
double r100329 = re;
double r100330 = atan2(r100328, r100329);
double r100331 = base;
double r100332 = log(r100331);
double r100333 = r100330 / r100332;
return r100333;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 31.4
Simplified0.4
Taylor expanded around -inf 64.0
Simplified0.3
Final simplification0.3
herbie shell --seed 2019179 +o rules:numerics
(FPCore (re im base)
:name "math.log/2 on complex, imaginary part"
(/ (- (* (atan2 im re) (log base)) (* (log (sqrt (+ (* re re) (* im im)))) 0.0)) (+ (* (log base) (log base)) (* 0.0 0.0))))