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 r886185 = 2.0;
double r886186 = x;
double r886187 = y;
double r886188 = r886186 * r886187;
double r886189 = z;
double r886190 = r886186 * r886189;
double r886191 = r886188 + r886190;
double r886192 = r886187 * r886189;
double r886193 = r886191 + r886192;
double r886194 = sqrt(r886193);
double r886195 = r886185 * r886194;
return r886195;
}
double f(double x, double y, double z) {
double r886196 = 2.0;
double r886197 = x;
double r886198 = y;
double r886199 = r886197 * r886198;
double r886200 = z;
double r886201 = r886197 * r886200;
double r886202 = r886199 + r886201;
double r886203 = r886198 * r886200;
double r886204 = r886202 + r886203;
double r886205 = sqrt(r886204);
double r886206 = r886196 * r886205;
return r886206;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 19.9 |
|---|---|
| Target | 19.1 |
| Herbie | 19.9 |
Initial program 19.9
Final simplification19.9
herbie shell --seed 2019353
(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)))))