\frac{x}{y - z \cdot t}\frac{x}{y - z \cdot t}double f(double x, double y, double z, double t) {
double r32729596 = x;
double r32729597 = y;
double r32729598 = z;
double r32729599 = t;
double r32729600 = r32729598 * r32729599;
double r32729601 = r32729597 - r32729600;
double r32729602 = r32729596 / r32729601;
return r32729602;
}
double f(double x, double y, double z, double t) {
double r32729603 = x;
double r32729604 = y;
double r32729605 = z;
double r32729606 = t;
double r32729607 = r32729605 * r32729606;
double r32729608 = r32729604 - r32729607;
double r32729609 = r32729603 / r32729608;
return r32729609;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.8 |
|---|---|
| Target | 1.7 |
| Herbie | 2.8 |
Initial program 2.8
Final simplification2.8
herbie shell --seed 2019200 +o rules:numerics
(FPCore (x y z t)
:name "Diagrams.Solve.Tridiagonal:solveTriDiagonal from diagrams-solve-0.1, B"
:herbie-target
(if (< x -1.618195973607049e+50) (/ 1.0 (- (/ y x) (* (/ z x) t))) (if (< x 2.1378306434876444e+131) (/ x (- y (* z t))) (/ 1.0 (- (/ y x) (* (/ z x) t)))))
(/ x (- y (* z t))))