2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + y \cdot z}2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + y \cdot z}double f(double x, double y, double z) {
double r582097 = 2.0;
double r582098 = x;
double r582099 = y;
double r582100 = r582098 * r582099;
double r582101 = z;
double r582102 = r582098 * r582101;
double r582103 = r582100 + r582102;
double r582104 = r582099 * r582101;
double r582105 = r582103 + r582104;
double r582106 = sqrt(r582105);
double r582107 = r582097 * r582106;
return r582107;
}
double f(double x, double y, double z) {
double r582108 = 2.0;
double r582109 = x;
double r582110 = y;
double r582111 = r582109 * r582110;
double r582112 = z;
double r582113 = r582109 * r582112;
double r582114 = r582111 + r582113;
double r582115 = r582110 * r582112;
double r582116 = r582114 + r582115;
double r582117 = sqrt(r582116);
double r582118 = r582108 * r582117;
return r582118;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 19.8 |
|---|---|
| Target | 18.9 |
| Herbie | 19.8 |
Initial program 19.8
Final simplification19.8
herbie shell --seed 2020046
(FPCore (x y z)
:name "Diagrams.TwoD.Apollonian:descartes from diagrams-contrib-1.3.0.5"
:precision binary64
:herbie-target
(if (< z 7.636950090573675e+176) (* 2 (sqrt (+ (* (+ x y) z) (* x y)))) (* (* (+ (* 0.25 (* (* (pow y -0.75) (* (pow z -0.75) x)) (+ y z))) (* (pow z 0.25) (pow y 0.25))) (+ (* 0.25 (* (* (pow y -0.75) (* (pow z -0.75) x)) (+ y z))) (* (pow z 0.25) (pow y 0.25)))) 2))
(* 2 (sqrt (+ (+ (* x y) (* x z)) (* y z)))))