2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + y \cdot z}\sqrt{z \cdot y + \left(y \cdot x + x \cdot z\right)} \cdot 2double f(double x, double y, double z) {
double r532072 = 2.0;
double r532073 = x;
double r532074 = y;
double r532075 = r532073 * r532074;
double r532076 = z;
double r532077 = r532073 * r532076;
double r532078 = r532075 + r532077;
double r532079 = r532074 * r532076;
double r532080 = r532078 + r532079;
double r532081 = sqrt(r532080);
double r532082 = r532072 * r532081;
return r532082;
}
double f(double x, double y, double z) {
double r532083 = z;
double r532084 = y;
double r532085 = r532083 * r532084;
double r532086 = x;
double r532087 = r532084 * r532086;
double r532088 = r532086 * r532083;
double r532089 = r532087 + r532088;
double r532090 = r532085 + r532089;
double r532091 = sqrt(r532090);
double r532092 = 2.0;
double r532093 = r532091 * r532092;
return r532093;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 19.6 |
|---|---|
| Target | 19.1 |
| Herbie | 19.6 |
Initial program 19.6
Final simplification19.6
herbie shell --seed 2019194
(FPCore (x y z)
:name "Diagrams.TwoD.Apollonian:descartes from diagrams-contrib-1.3.0.5"
:herbie-target
(if (< z 7.636950090573675e+176) (* 2.0 (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.0))
(* 2.0 (sqrt (+ (+ (* x y) (* x z)) (* y z)))))