\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(\left(\sqrt[3]{\sqrt[3]{\mathsf{hypot}\left(re, im\right)}} \cdot \sqrt[3]{\sqrt[3]{\mathsf{hypot}\left(re, im\right)}}\right) \cdot \left(\sqrt[3]{\mathsf{hypot}\left(re, im\right)} \cdot \sqrt[3]{\sqrt[3]{\mathsf{hypot}\left(re, im\right)}}\right)\right)\right)}{\log base}double f(double re, double im, double base) {
double r2197498 = re;
double r2197499 = r2197498 * r2197498;
double r2197500 = im;
double r2197501 = r2197500 * r2197500;
double r2197502 = r2197499 + r2197501;
double r2197503 = sqrt(r2197502);
double r2197504 = log(r2197503);
double r2197505 = base;
double r2197506 = log(r2197505);
double r2197507 = r2197504 * r2197506;
double r2197508 = atan2(r2197500, r2197498);
double r2197509 = 0.0;
double r2197510 = r2197508 * r2197509;
double r2197511 = r2197507 + r2197510;
double r2197512 = r2197506 * r2197506;
double r2197513 = r2197509 * r2197509;
double r2197514 = r2197512 + r2197513;
double r2197515 = r2197511 / r2197514;
return r2197515;
}
double f(double re, double im, double base) {
double r2197516 = re;
double r2197517 = im;
double r2197518 = hypot(r2197516, r2197517);
double r2197519 = cbrt(r2197518);
double r2197520 = cbrt(r2197519);
double r2197521 = r2197520 * r2197520;
double r2197522 = r2197519 * r2197520;
double r2197523 = r2197521 * r2197522;
double r2197524 = r2197519 * r2197523;
double r2197525 = log(r2197524);
double r2197526 = base;
double r2197527 = log(r2197526);
double r2197528 = r2197525 / r2197527;
return r2197528;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 31.5
Simplified0.4
rmApplied add-cube-cbrt0.4
rmApplied add-cube-cbrt0.4
Applied associate-*l*0.4
Final simplification0.4
herbie shell --seed 2019144 +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))))