\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 r1291439 = re;
double r1291440 = r1291439 * r1291439;
double r1291441 = im;
double r1291442 = r1291441 * r1291441;
double r1291443 = r1291440 + r1291442;
double r1291444 = sqrt(r1291443);
double r1291445 = log(r1291444);
double r1291446 = base;
double r1291447 = log(r1291446);
double r1291448 = r1291445 * r1291447;
double r1291449 = atan2(r1291441, r1291439);
double r1291450 = 0.0;
double r1291451 = r1291449 * r1291450;
double r1291452 = r1291448 + r1291451;
double r1291453 = r1291447 * r1291447;
double r1291454 = r1291450 * r1291450;
double r1291455 = r1291453 + r1291454;
double r1291456 = r1291452 / r1291455;
return r1291456;
}
double f(double re, double im, double base) {
double r1291457 = re;
double r1291458 = im;
double r1291459 = hypot(r1291457, r1291458);
double r1291460 = log(r1291459);
double r1291461 = 1.0;
double r1291462 = base;
double r1291463 = log(r1291462);
double r1291464 = r1291461 / r1291463;
double r1291465 = r1291460 * r1291464;
return r1291465;
}



Bits error versus re



Bits error versus im



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