\frac{x - y \cdot z}{t - a \cdot z}\left(x - z \cdot y\right) \cdot \frac{1}{t - a \cdot z}double f(double x, double y, double z, double t, double a) {
double r31781848 = x;
double r31781849 = y;
double r31781850 = z;
double r31781851 = r31781849 * r31781850;
double r31781852 = r31781848 - r31781851;
double r31781853 = t;
double r31781854 = a;
double r31781855 = r31781854 * r31781850;
double r31781856 = r31781853 - r31781855;
double r31781857 = r31781852 / r31781856;
return r31781857;
}
double f(double x, double y, double z, double t, double a) {
double r31781858 = x;
double r31781859 = z;
double r31781860 = y;
double r31781861 = r31781859 * r31781860;
double r31781862 = r31781858 - r31781861;
double r31781863 = 1.0;
double r31781864 = t;
double r31781865 = a;
double r31781866 = r31781865 * r31781859;
double r31781867 = r31781864 - r31781866;
double r31781868 = r31781863 / r31781867;
double r31781869 = r31781862 * r31781868;
return r31781869;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.8 |
|---|---|
| Target | 1.7 |
| Herbie | 11.0 |
Initial program 10.8
rmApplied div-inv11.0
Final simplification11.0
herbie shell --seed 2019172
(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.0 (- t (* a z)))) (- (/ x (- t (* a z))) (/ y (- (/ t z) a)))))
(/ (- x (* y z)) (- t (* a z))))