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 r801459 = 2.0;
double r801460 = x;
double r801461 = y;
double r801462 = r801460 * r801461;
double r801463 = z;
double r801464 = r801460 * r801463;
double r801465 = r801462 + r801464;
double r801466 = r801461 * r801463;
double r801467 = r801465 + r801466;
double r801468 = sqrt(r801467);
double r801469 = r801459 * r801468;
return r801469;
}
double f(double x, double y, double z) {
double r801470 = 2.0;
double r801471 = x;
double r801472 = y;
double r801473 = r801471 * r801472;
double r801474 = z;
double r801475 = r801471 * r801474;
double r801476 = r801473 + r801475;
double r801477 = r801472 * r801474;
double r801478 = r801476 + r801477;
double r801479 = sqrt(r801478);
double r801480 = r801470 * r801479;
return r801480;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 19.4 |
|---|---|
| Target | 18.9 |
| Herbie | 19.4 |
Initial program 19.4
Final simplification19.4
herbie shell --seed 2020045
(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)))))