\frac{x \cdot \left(\left(y - z\right) + 1\right)}{z}\frac{x}{z} \cdot \left(1 + y\right) - xdouble f(double x, double y, double z) {
double r712063 = x;
double r712064 = y;
double r712065 = z;
double r712066 = r712064 - r712065;
double r712067 = 1.0;
double r712068 = r712066 + r712067;
double r712069 = r712063 * r712068;
double r712070 = r712069 / r712065;
return r712070;
}
double f(double x, double y, double z) {
double r712071 = x;
double r712072 = z;
double r712073 = r712071 / r712072;
double r712074 = 1.0;
double r712075 = y;
double r712076 = r712074 + r712075;
double r712077 = r712073 * r712076;
double r712078 = r712077 - r712071;
return r712078;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 10.1 |
|---|---|
| Target | 0.4 |
| Herbie | 1.5 |
Initial program 10.1
Taylor expanded around 0 3.8
Taylor expanded around 0 3.8
Simplified1.5
Final simplification1.5
herbie shell --seed 2020020
(FPCore (x y z)
:name "Diagrams.TwoD.Segment.Bernstein:evaluateBernstein from diagrams-lib-1.3.0.3"
:precision binary64
:herbie-target
(if (< x -2.71483106713436e-162) (- (* (+ 1 y) (/ x z)) x) (if (< x 3.874108816439546e-197) (* (* x (+ (- y z) 1)) (/ 1 z)) (- (* (+ 1 y) (/ x z)) x)))
(/ (* x (+ (- y z) 1)) z))