\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{1}{\frac{\log base}{\log \left(\mathsf{hypot}\left(re, im\right)\right)}}double f(double re, double im, double base) {
double r1424032 = re;
double r1424033 = r1424032 * r1424032;
double r1424034 = im;
double r1424035 = r1424034 * r1424034;
double r1424036 = r1424033 + r1424035;
double r1424037 = sqrt(r1424036);
double r1424038 = log(r1424037);
double r1424039 = base;
double r1424040 = log(r1424039);
double r1424041 = r1424038 * r1424040;
double r1424042 = atan2(r1424034, r1424032);
double r1424043 = 0.0;
double r1424044 = r1424042 * r1424043;
double r1424045 = r1424041 + r1424044;
double r1424046 = r1424040 * r1424040;
double r1424047 = r1424043 * r1424043;
double r1424048 = r1424046 + r1424047;
double r1424049 = r1424045 / r1424048;
return r1424049;
}
double f(double re, double im, double base) {
double r1424050 = 1.0;
double r1424051 = base;
double r1424052 = log(r1424051);
double r1424053 = re;
double r1424054 = im;
double r1424055 = hypot(r1424053, r1424054);
double r1424056 = log(r1424055);
double r1424057 = r1424052 / r1424056;
double r1424058 = r1424050 / r1424057;
return r1424058;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 30.5
Simplified0.4
rmApplied clear-num0.4
Final simplification0.4
herbie shell --seed 2019162 +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))))