\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 r1579286 = re;
double r1579287 = r1579286 * r1579286;
double r1579288 = im;
double r1579289 = r1579288 * r1579288;
double r1579290 = r1579287 + r1579289;
double r1579291 = sqrt(r1579290);
double r1579292 = log(r1579291);
double r1579293 = base;
double r1579294 = log(r1579293);
double r1579295 = r1579292 * r1579294;
double r1579296 = atan2(r1579288, r1579286);
double r1579297 = 0.0;
double r1579298 = r1579296 * r1579297;
double r1579299 = r1579295 + r1579298;
double r1579300 = r1579294 * r1579294;
double r1579301 = r1579297 * r1579297;
double r1579302 = r1579300 + r1579301;
double r1579303 = r1579299 / r1579302;
return r1579303;
}
double f(double re, double im, double base) {
double r1579304 = 1.0;
double r1579305 = base;
double r1579306 = log(r1579305);
double r1579307 = re;
double r1579308 = im;
double r1579309 = hypot(r1579307, r1579308);
double r1579310 = log(r1579309);
double r1579311 = r1579306 / r1579310;
double r1579312 = r1579304 / r1579311;
return r1579312;
}



Bits error versus re



Bits error versus im



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