\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 r571675 = x;
double r571676 = y;
double r571677 = z;
double r571678 = r571676 - r571677;
double r571679 = 1.0;
double r571680 = r571678 + r571679;
double r571681 = r571675 * r571680;
double r571682 = r571681 / r571677;
return r571682;
}
double f(double x, double y, double z) {
double r571683 = x;
double r571684 = y;
double r571685 = z;
double r571686 = r571684 - r571685;
double r571687 = 1.0;
double r571688 = r571686 + r571687;
double r571689 = r571683 * r571688;
double r571690 = r571689 / r571685;
return r571690;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 10.0 |
|---|---|
| Target | 0.5 |
| Herbie | 10.0 |
if x < -5.1532315076989797e+73Initial program 34.2
rmApplied *-un-lft-identity34.2
Applied times-frac0.1
Simplified0.1
rmApplied div-inv0.2
if -5.1532315076989797e+73 < x < 9.872650849754673e-49Initial program 0.9
Taylor expanded around 0 0.3
if 9.872650849754673e-49 < x Initial program 20.5
rmApplied *-un-lft-identity20.5
Applied times-frac0.2
Simplified0.2
Final simplification10.0
herbie shell --seed 2019298
(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))