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 r408391 = 2.0;
double r408392 = x;
double r408393 = y;
double r408394 = r408392 * r408393;
double r408395 = z;
double r408396 = r408392 * r408395;
double r408397 = r408394 + r408396;
double r408398 = r408393 * r408395;
double r408399 = r408397 + r408398;
double r408400 = sqrt(r408399);
double r408401 = r408391 * r408400;
return r408401;
}
double f(double x, double y, double z) {
double r408402 = 2.0;
double r408403 = x;
double r408404 = y;
double r408405 = r408403 * r408404;
double r408406 = z;
double r408407 = r408403 * r408406;
double r408408 = r408405 + r408407;
double r408409 = r408404 * r408406;
double r408410 = r408408 + r408409;
double r408411 = sqrt(r408410);
double r408412 = r408402 * r408411;
return r408412;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 19.5 |
|---|---|
| Target | 18.8 |
| Herbie | 19.5 |
Initial program 19.5
Final simplification19.5
herbie shell --seed 2019325
(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)))))