\log \left(\sqrt{re \cdot re + im \cdot im}\right)\log \left(\sqrt{1} \cdot \mathsf{hypot}\left(re, im\right)\right)double f(double re, double im) {
double r44849 = re;
double r44850 = r44849 * r44849;
double r44851 = im;
double r44852 = r44851 * r44851;
double r44853 = r44850 + r44852;
double r44854 = sqrt(r44853);
double r44855 = log(r44854);
return r44855;
}
double f(double re, double im) {
double r44856 = 1.0;
double r44857 = sqrt(r44856);
double r44858 = re;
double r44859 = im;
double r44860 = hypot(r44858, r44859);
double r44861 = r44857 * r44860;
double r44862 = log(r44861);
return r44862;
}



Bits error versus re



Bits error versus im
Results
Initial program 31.3
rmApplied *-un-lft-identity31.3
Applied sqrt-prod31.3
Simplified0
Final simplification0
herbie shell --seed 2019352 +o rules:numerics
(FPCore (re im)
:name "math.log/1 on complex, real part"
:precision binary64
(log (sqrt (+ (* re re) (* im im)))))