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 r565199 = 2.0;
double r565200 = x;
double r565201 = y;
double r565202 = r565200 * r565201;
double r565203 = z;
double r565204 = r565200 * r565203;
double r565205 = r565202 + r565204;
double r565206 = r565201 * r565203;
double r565207 = r565205 + r565206;
double r565208 = sqrt(r565207);
double r565209 = r565199 * r565208;
return r565209;
}
double f(double x, double y, double z) {
double r565210 = z;
double r565211 = y;
double r565212 = r565210 * r565211;
double r565213 = x;
double r565214 = r565211 * r565213;
double r565215 = r565213 * r565210;
double r565216 = r565214 + r565215;
double r565217 = r565212 + r565216;
double r565218 = sqrt(r565217);
double r565219 = 2.0;
double r565220 = r565218 * r565219;
return r565220;
}




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)))))