\log \left(\sqrt{re \cdot re + im \cdot im}\right)\log \left(1 \cdot \mathsf{hypot}\left(re, im\right)\right)double f(double re, double im) {
double r30015 = re;
double r30016 = r30015 * r30015;
double r30017 = im;
double r30018 = r30017 * r30017;
double r30019 = r30016 + r30018;
double r30020 = sqrt(r30019);
double r30021 = log(r30020);
return r30021;
}
double f(double re, double im) {
double r30022 = 1.0;
double r30023 = re;
double r30024 = im;
double r30025 = hypot(r30023, r30024);
double r30026 = r30022 * r30025;
double r30027 = log(r30026);
return r30027;
}



Bits error versus re



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