\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 r87041 = re;
double r87042 = r87041 * r87041;
double r87043 = im;
double r87044 = r87043 * r87043;
double r87045 = r87042 + r87044;
double r87046 = sqrt(r87045);
double r87047 = log(r87046);
return r87047;
}
double f(double re, double im) {
double r87048 = re;
double r87049 = im;
double r87050 = hypot(r87048, r87049);
double r87051 = log(r87050);
return r87051;
}



Bits error versus re



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