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 r507429 = 2.0;
double r507430 = x;
double r507431 = y;
double r507432 = r507430 * r507431;
double r507433 = z;
double r507434 = r507430 * r507433;
double r507435 = r507432 + r507434;
double r507436 = r507431 * r507433;
double r507437 = r507435 + r507436;
double r507438 = sqrt(r507437);
double r507439 = r507429 * r507438;
return r507439;
}
double f(double x, double y, double z) {
double r507440 = 2.0;
double r507441 = x;
double r507442 = y;
double r507443 = r507441 * r507442;
double r507444 = z;
double r507445 = r507441 * r507444;
double r507446 = r507443 + r507445;
double r507447 = r507442 * r507444;
double r507448 = r507446 + r507447;
double r507449 = sqrt(r507448);
double r507450 = r507440 * r507449;
return r507450;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 19.8 |
|---|---|
| Target | 19.2 |
| Herbie | 19.8 |
Initial program 19.8
Final simplification19.8
herbie shell --seed 2019323
(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)))))