\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\frac{\frac{\mathsf{fma}\left(\log base, \log \left(\mathsf{hypot}\left(re, im\right)\right), \tan^{-1}_* \frac{im}{re} \cdot 0.0\right)}{\sqrt{\mathsf{fma}\left(0.0, 0.0, \sqrt[3]{\left(\left(\log base \cdot \log base\right) \cdot \log base\right) \cdot \left(\left(\log base \cdot \log base\right) \cdot \log base\right)}\right)}}}{\sqrt{\mathsf{fma}\left(0.0, 0.0, \log base \cdot \log base\right)}}double f(double re, double im, double base) {
double r1353650 = re;
double r1353651 = r1353650 * r1353650;
double r1353652 = im;
double r1353653 = r1353652 * r1353652;
double r1353654 = r1353651 + r1353653;
double r1353655 = sqrt(r1353654);
double r1353656 = log(r1353655);
double r1353657 = base;
double r1353658 = log(r1353657);
double r1353659 = r1353656 * r1353658;
double r1353660 = atan2(r1353652, r1353650);
double r1353661 = 0.0;
double r1353662 = r1353660 * r1353661;
double r1353663 = r1353659 + r1353662;
double r1353664 = r1353658 * r1353658;
double r1353665 = r1353661 * r1353661;
double r1353666 = r1353664 + r1353665;
double r1353667 = r1353663 / r1353666;
return r1353667;
}
double f(double re, double im, double base) {
double r1353668 = base;
double r1353669 = log(r1353668);
double r1353670 = re;
double r1353671 = im;
double r1353672 = hypot(r1353670, r1353671);
double r1353673 = log(r1353672);
double r1353674 = atan2(r1353671, r1353670);
double r1353675 = 0.0;
double r1353676 = r1353674 * r1353675;
double r1353677 = fma(r1353669, r1353673, r1353676);
double r1353678 = r1353669 * r1353669;
double r1353679 = r1353678 * r1353669;
double r1353680 = r1353679 * r1353679;
double r1353681 = cbrt(r1353680);
double r1353682 = fma(r1353675, r1353675, r1353681);
double r1353683 = sqrt(r1353682);
double r1353684 = r1353677 / r1353683;
double r1353685 = fma(r1353675, r1353675, r1353678);
double r1353686 = sqrt(r1353685);
double r1353687 = r1353684 / r1353686;
return r1353687;
}



Bits error versus re



Bits error versus im



Bits error versus base
Initial program 32.2
Simplified0.5
rmApplied add-sqr-sqrt0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
rmApplied associate-*l/0.4
rmApplied add-cbrt-cube0.5
Applied add-cbrt-cube0.7
Applied cbrt-unprod0.5
Final simplification0.5
herbie shell --seed 2019171 +o rules:numerics
(FPCore (re im base)
:name "math.log/2 on complex, real part"
(/ (+ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (atan2 im re) 0.0)) (+ (* (log base) (log base)) (* 0.0 0.0))))