\frac{x \cdot \left(\left(y - z\right) + 1\right)}{z}\frac{x \cdot \left(\left(y - z\right) + 1\right)}{z}double f(double x, double y, double z) {
double r549175 = x;
double r549176 = y;
double r549177 = z;
double r549178 = r549176 - r549177;
double r549179 = 1.0;
double r549180 = r549178 + r549179;
double r549181 = r549175 * r549180;
double r549182 = r549181 / r549177;
return r549182;
}
double f(double x, double y, double z) {
double r549183 = x;
double r549184 = y;
double r549185 = z;
double r549186 = r549184 - r549185;
double r549187 = 1.0;
double r549188 = r549186 + r549187;
double r549189 = r549183 * r549188;
double r549190 = r549189 / r549185;
return r549190;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 10.2 |
|---|---|
| Target | 0.5 |
| Herbie | 10.2 |
if z < -0.4122874216555284 or 2355.8937832261954 < z Initial program 17.0
rmApplied associate-/l*0.1
if -0.4122874216555284 < z < 2355.8937832261954Initial program 0.1
Final simplification10.2
herbie shell --seed 2019294
(FPCore (x y z)
:name "Diagrams.TwoD.Segment.Bernstein:evaluateBernstein from diagrams-lib-1.3.0.3"
:precision binary64
:herbie-target
(if (< x -2.7148310671343599e-162) (- (* (+ 1 y) (/ x z)) x) (if (< x 3.87410881643954616e-197) (* (* x (+ (- y z) 1)) (/ 1 z)) (- (* (+ 1 y) (/ x z)) x)))
(/ (* x (+ (- y z) 1)) z))