\log \left(\sqrt{re \cdot re + im \cdot im}\right)\log \left(\mathsf{hypot}\left(re, im\right)\right)double f(double re, double im) {
double r31482 = re;
double r31483 = r31482 * r31482;
double r31484 = im;
double r31485 = r31484 * r31484;
double r31486 = r31483 + r31485;
double r31487 = sqrt(r31486);
double r31488 = log(r31487);
return r31488;
}
double f(double re, double im) {
double r31489 = re;
double r31490 = im;
double r31491 = hypot(r31489, r31490);
double r31492 = log(r31491);
return r31492;
}



Bits error versus re



Bits error versus im
Results
Initial program 32.6
rmApplied hypot-def0
Final simplification0
herbie shell --seed 2020002 +o rules:numerics
(FPCore (re im)
:name "math.log/1 on complex, real part"
:precision binary64
(log (sqrt (+ (* re re) (* im im)))))