\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0}{\log base \cdot \log base + 0 \cdot 0}\frac{\log \left(\sqrt[3]{\mathsf{hypot}\left(re, im\right)} \cdot \left(\sqrt[3]{\mathsf{hypot}\left(re, im\right)} \cdot \sqrt[3]{\mathsf{hypot}\left(re, im\right)}\right)\right)}{\log base}double f(double re, double im, double base) {
double r1462127 = re;
double r1462128 = r1462127 * r1462127;
double r1462129 = im;
double r1462130 = r1462129 * r1462129;
double r1462131 = r1462128 + r1462130;
double r1462132 = sqrt(r1462131);
double r1462133 = log(r1462132);
double r1462134 = base;
double r1462135 = log(r1462134);
double r1462136 = r1462133 * r1462135;
double r1462137 = atan2(r1462129, r1462127);
double r1462138 = 0.0;
double r1462139 = r1462137 * r1462138;
double r1462140 = r1462136 + r1462139;
double r1462141 = r1462135 * r1462135;
double r1462142 = r1462138 * r1462138;
double r1462143 = r1462141 + r1462142;
double r1462144 = r1462140 / r1462143;
return r1462144;
}
double f(double re, double im, double base) {
double r1462145 = re;
double r1462146 = im;
double r1462147 = hypot(r1462145, r1462146);
double r1462148 = cbrt(r1462147);
double r1462149 = r1462148 * r1462148;
double r1462150 = r1462148 * r1462149;
double r1462151 = log(r1462150);
double r1462152 = base;
double r1462153 = log(r1462152);
double r1462154 = r1462151 / r1462153;
return r1462154;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 31.1
Simplified0.4
rmApplied add-cube-cbrt0.4
Final simplification0.4
herbie shell --seed 2019164 +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)) (+ (* (log base) (log base)) (* 0 0))))