\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 r28408 = im;
double r28409 = re;
double r28410 = atan2(r28408, r28409);
double r28411 = base;
double r28412 = log(r28411);
double r28413 = r28410 * r28412;
double r28414 = r28409 * r28409;
double r28415 = r28408 * r28408;
double r28416 = r28414 + r28415;
double r28417 = sqrt(r28416);
double r28418 = log(r28417);
double r28419 = 0.0;
double r28420 = r28418 * r28419;
double r28421 = r28413 - r28420;
double r28422 = r28412 * r28412;
double r28423 = r28419 * r28419;
double r28424 = r28422 + r28423;
double r28425 = r28421 / r28424;
return r28425;
}
double f(double re, double im, double base) {
double r28426 = im;
double r28427 = re;
double r28428 = atan2(r28426, r28427);
double r28429 = 1.0;
double r28430 = base;
double r28431 = log(r28430);
double r28432 = r28429 / r28431;
double r28433 = r28428 * r28432;
return r28433;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 31.6
Taylor expanded around 0 0.3
rmApplied div-inv0.4
Final simplification0.4
herbie shell --seed 2019347
(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))))