\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 r30881 = re;
double r30882 = r30881 * r30881;
double r30883 = im;
double r30884 = r30883 * r30883;
double r30885 = r30882 + r30884;
double r30886 = sqrt(r30885);
double r30887 = log(r30886);
return r30887;
}
double f(double re, double im) {
double r30888 = re;
double r30889 = im;
double r30890 = hypot(r30888, r30889);
double r30891 = log(r30890);
return r30891;
}



Bits error versus re



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