\frac{x - y \cdot z}{t - a \cdot z}\frac{\frac{1}{t - z \cdot a}}{\frac{1}{x - z \cdot y}}double f(double x, double y, double z, double t, double a) {
double r35038716 = x;
double r35038717 = y;
double r35038718 = z;
double r35038719 = r35038717 * r35038718;
double r35038720 = r35038716 - r35038719;
double r35038721 = t;
double r35038722 = a;
double r35038723 = r35038722 * r35038718;
double r35038724 = r35038721 - r35038723;
double r35038725 = r35038720 / r35038724;
return r35038725;
}
double f(double x, double y, double z, double t, double a) {
double r35038726 = 1.0;
double r35038727 = t;
double r35038728 = z;
double r35038729 = a;
double r35038730 = r35038728 * r35038729;
double r35038731 = r35038727 - r35038730;
double r35038732 = r35038726 / r35038731;
double r35038733 = x;
double r35038734 = y;
double r35038735 = r35038728 * r35038734;
double r35038736 = r35038733 - r35038735;
double r35038737 = r35038726 / r35038736;
double r35038738 = r35038732 / r35038737;
return r35038738;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.2 |
|---|---|
| Target | 1.6 |
| Herbie | 10.4 |
Initial program 10.2
rmApplied sub-neg10.2
rmApplied clear-num10.6
Simplified10.6
rmApplied div-inv10.6
Applied associate-/r*10.4
Final simplification10.4
herbie shell --seed 2019163
(FPCore (x y z t a)
:name "Diagrams.Solve.Tridiagonal:solveTriDiagonal from diagrams-solve-0.1, A"
:herbie-target
(if (< z -32113435955957344.0) (- (/ x (- t (* a z))) (/ y (- (/ t z) a))) (if (< z 3.5139522372978296e-86) (* (- x (* y z)) (/ 1 (- t (* a z)))) (- (/ x (- t (* a z))) (/ y (- (/ t z) a)))))
(/ (- x (* y z)) (- t (* a z))))