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 r586630 = 2.0;
double r586631 = x;
double r586632 = y;
double r586633 = r586631 * r586632;
double r586634 = z;
double r586635 = r586631 * r586634;
double r586636 = r586633 + r586635;
double r586637 = r586632 * r586634;
double r586638 = r586636 + r586637;
double r586639 = sqrt(r586638);
double r586640 = r586630 * r586639;
return r586640;
}
double f(double x, double y, double z) {
double r586641 = 2.0;
double r586642 = x;
double r586643 = y;
double r586644 = r586642 * r586643;
double r586645 = z;
double r586646 = r586642 * r586645;
double r586647 = r586644 + r586646;
double r586648 = r586643 * r586645;
double r586649 = r586647 + r586648;
double r586650 = sqrt(r586649);
double r586651 = r586641 * r586650;
return r586651;
}




Bits error versus x




Bits error versus y




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