\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}-1 \cdot \frac{\tan^{-1}_* \frac{im}{re}}{\left(2 \cdot \log \left(\sqrt[3]{1}\right) - \mathsf{fma}\left(\frac{2}{3}, \log base, \log \left(\sqrt[3]{\sqrt[3]{base} \cdot \sqrt[3]{base}}\right)\right)\right) + \log \left(\frac{\sqrt[3]{1}}{\sqrt[3]{\sqrt[3]{base}}}\right)}double f(double re, double im, double base) {
double r46510 = im;
double r46511 = re;
double r46512 = atan2(r46510, r46511);
double r46513 = base;
double r46514 = log(r46513);
double r46515 = r46512 * r46514;
double r46516 = r46511 * r46511;
double r46517 = r46510 * r46510;
double r46518 = r46516 + r46517;
double r46519 = sqrt(r46518);
double r46520 = log(r46519);
double r46521 = 0.0;
double r46522 = r46520 * r46521;
double r46523 = r46515 - r46522;
double r46524 = r46514 * r46514;
double r46525 = r46521 * r46521;
double r46526 = r46524 + r46525;
double r46527 = r46523 / r46526;
return r46527;
}
double f(double re, double im, double base) {
double r46528 = -1.0;
double r46529 = im;
double r46530 = re;
double r46531 = atan2(r46529, r46530);
double r46532 = 2.0;
double r46533 = 1.0;
double r46534 = cbrt(r46533);
double r46535 = log(r46534);
double r46536 = r46532 * r46535;
double r46537 = 0.6666666666666666;
double r46538 = base;
double r46539 = log(r46538);
double r46540 = cbrt(r46538);
double r46541 = r46540 * r46540;
double r46542 = cbrt(r46541);
double r46543 = log(r46542);
double r46544 = fma(r46537, r46539, r46543);
double r46545 = r46536 - r46544;
double r46546 = cbrt(r46540);
double r46547 = r46534 / r46546;
double r46548 = log(r46547);
double r46549 = r46545 + r46548;
double r46550 = r46531 / r46549;
double r46551 = r46528 * r46550;
return r46551;
}



Bits error versus re



Bits error versus im



Bits error versus base
Initial program 31.9
Taylor expanded around inf 0.3
rmApplied add-cube-cbrt0.3
Applied add-cube-cbrt0.3
Applied times-frac0.3
Applied log-prod0.4
Simplified0.4
Simplified0.4
rmApplied add-cube-cbrt0.4
Applied cbrt-prod0.4
Applied add-cube-cbrt0.4
Applied times-frac0.4
Applied log-prod0.4
Applied associate-+r+0.4
Simplified0.3
Final simplification0.3
herbie shell --seed 2020024 +o rules:numerics
(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))))