\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 r32150 = re;
double r32151 = r32150 * r32150;
double r32152 = im;
double r32153 = r32152 * r32152;
double r32154 = r32151 + r32153;
double r32155 = sqrt(r32154);
double r32156 = log(r32155);
return r32156;
}
double f(double re, double im) {
double r32157 = 1.0;
double r32158 = sqrt(r32157);
double r32159 = re;
double r32160 = im;
double r32161 = hypot(r32159, r32160);
double r32162 = r32158 * r32161;
double r32163 = log(r32162);
return r32163;
}



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 2020064 +o rules:numerics
(FPCore (re im)
:name "math.log/1 on complex, real part"
:precision binary64
(log (sqrt (+ (* re re) (* im im)))))