2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + y \cdot z}\sqrt{y \cdot z + x \cdot \left(y + z\right)} \cdot 2double f(double x, double y, double z) {
double r721067 = 2.0;
double r721068 = x;
double r721069 = y;
double r721070 = r721068 * r721069;
double r721071 = z;
double r721072 = r721068 * r721071;
double r721073 = r721070 + r721072;
double r721074 = r721069 * r721071;
double r721075 = r721073 + r721074;
double r721076 = sqrt(r721075);
double r721077 = r721067 * r721076;
return r721077;
}
double f(double x, double y, double z) {
double r721078 = y;
double r721079 = z;
double r721080 = r721078 * r721079;
double r721081 = x;
double r721082 = r721078 + r721079;
double r721083 = r721081 * r721082;
double r721084 = r721080 + r721083;
double r721085 = sqrt(r721084);
double r721086 = 2.0;
double r721087 = r721085 * r721086;
return r721087;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 20.8 |
|---|---|
| Target | 20.0 |
| Herbie | 20.8 |
Initial program 20.8
Simplified20.8
Final simplification20.8
herbie shell --seed 2020047
(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)))))