\frac{x + y}{1 - \frac{y}{z}}\frac{x + y}{1 - \frac{y}{z}}double f(double x, double y, double z) {
double r650556 = x;
double r650557 = y;
double r650558 = r650556 + r650557;
double r650559 = 1.0;
double r650560 = z;
double r650561 = r650557 / r650560;
double r650562 = r650559 - r650561;
double r650563 = r650558 / r650562;
return r650563;
}
double f(double x, double y, double z) {
double r650564 = x;
double r650565 = y;
double r650566 = r650564 + r650565;
double r650567 = 1.0;
double r650568 = z;
double r650569 = r650565 / r650568;
double r650570 = r650567 - r650569;
double r650571 = r650566 / r650570;
return r650571;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 7.8 |
|---|---|
| Target | 4.3 |
| Herbie | 7.8 |
Initial program 7.8
Final simplification7.8
herbie shell --seed 2020060 +o rules:numerics
(FPCore (x y z)
:name "Graphics.Rendering.Chart.Backend.Diagrams:calcFontMetrics from Chart-diagrams-1.5.1, A"
:precision binary64
:herbie-target
(if (< y -3.7429310762689856e+171) (* (/ (+ y x) (- y)) z) (if (< y 3.5534662456086734e+168) (/ (+ x y) (- 1 (/ y z))) (* (/ (+ y x) (- y)) z)))
(/ (+ x y) (- 1 (/ y z))))