\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 r27406 = im;
double r27407 = re;
double r27408 = atan2(r27406, r27407);
double r27409 = base;
double r27410 = log(r27409);
double r27411 = r27408 * r27410;
double r27412 = r27407 * r27407;
double r27413 = r27406 * r27406;
double r27414 = r27412 + r27413;
double r27415 = sqrt(r27414);
double r27416 = log(r27415);
double r27417 = 0.0;
double r27418 = r27416 * r27417;
double r27419 = r27411 - r27418;
double r27420 = r27410 * r27410;
double r27421 = r27417 * r27417;
double r27422 = r27420 + r27421;
double r27423 = r27419 / r27422;
return r27423;
}
double f(double re, double im, double base) {
double r27424 = im;
double r27425 = re;
double r27426 = atan2(r27424, r27425);
double r27427 = base;
double r27428 = log(r27427);
double r27429 = r27426 / r27428;
return r27429;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 31.3
Taylor expanded around 0 0.3
Final simplification0.3
herbie shell --seed 2019352
(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))))