2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + y \cdot z}2 \cdot \sqrt{x \cdot y + z \cdot \left(x + y\right)}double f(double x, double y, double z) {
double r657502 = 2.0;
double r657503 = x;
double r657504 = y;
double r657505 = r657503 * r657504;
double r657506 = z;
double r657507 = r657503 * r657506;
double r657508 = r657505 + r657507;
double r657509 = r657504 * r657506;
double r657510 = r657508 + r657509;
double r657511 = sqrt(r657510);
double r657512 = r657502 * r657511;
return r657512;
}
double f(double x, double y, double z) {
double r657513 = 2.0;
double r657514 = x;
double r657515 = y;
double r657516 = r657514 * r657515;
double r657517 = z;
double r657518 = r657514 + r657515;
double r657519 = r657517 * r657518;
double r657520 = r657516 + r657519;
double r657521 = sqrt(r657520);
double r657522 = r657513 * r657521;
return r657522;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 20.3 |
|---|---|
| Target | 19.4 |
| Herbie | 20.3 |
Initial program 20.3
rmApplied associate-+l+20.3
Simplified20.3
Final simplification20.3
herbie shell --seed 1978988140
(FPCore (x y z)
:name "Diagrams.TwoD.Apollonian:descartes from diagrams-contrib-1.3.0.5"
:precision binary64
:herbie-target
(if (< z 7.6369500905736745e176) (* 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)))))