\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}\log \left(\mathsf{hypot}\left(re, im\right)\right) \cdot \frac{1}{\log base}double f(double re, double im, double base) {
double r1256519 = re;
double r1256520 = r1256519 * r1256519;
double r1256521 = im;
double r1256522 = r1256521 * r1256521;
double r1256523 = r1256520 + r1256522;
double r1256524 = sqrt(r1256523);
double r1256525 = log(r1256524);
double r1256526 = base;
double r1256527 = log(r1256526);
double r1256528 = r1256525 * r1256527;
double r1256529 = atan2(r1256521, r1256519);
double r1256530 = 0.0;
double r1256531 = r1256529 * r1256530;
double r1256532 = r1256528 + r1256531;
double r1256533 = r1256527 * r1256527;
double r1256534 = r1256530 * r1256530;
double r1256535 = r1256533 + r1256534;
double r1256536 = r1256532 / r1256535;
return r1256536;
}
double f(double re, double im, double base) {
double r1256537 = re;
double r1256538 = im;
double r1256539 = hypot(r1256537, r1256538);
double r1256540 = log(r1256539);
double r1256541 = 1.0;
double r1256542 = base;
double r1256543 = log(r1256542);
double r1256544 = r1256541 / r1256543;
double r1256545 = r1256540 * r1256544;
return r1256545;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 30.9
Simplified0.4
rmApplied div-inv0.4
Final simplification0.4
herbie shell --seed 2019139 +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))))