\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 r86260 = im;
double r86261 = re;
double r86262 = atan2(r86260, r86261);
double r86263 = base;
double r86264 = log(r86263);
double r86265 = r86262 * r86264;
double r86266 = r86261 * r86261;
double r86267 = r86260 * r86260;
double r86268 = r86266 + r86267;
double r86269 = sqrt(r86268);
double r86270 = log(r86269);
double r86271 = 0.0;
double r86272 = r86270 * r86271;
double r86273 = r86265 - r86272;
double r86274 = r86264 * r86264;
double r86275 = r86271 * r86271;
double r86276 = r86274 + r86275;
double r86277 = r86273 / r86276;
return r86277;
}
double f(double re, double im, double base) {
double r86278 = im;
double r86279 = re;
double r86280 = atan2(r86278, r86279);
double r86281 = base;
double r86282 = log(r86281);
double r86283 = r86280 / r86282;
return r86283;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 32.1
Simplified0.4
Taylor expanded around -inf 64.0
Simplified0.3
Final simplification0.3
herbie shell --seed 2019198 +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))))