\frac{x - y \cdot z}{t - a \cdot z}\frac{x - y \cdot z}{t - a \cdot z}double f(double x, double y, double z, double t, double a) {
double r751865 = x;
double r751866 = y;
double r751867 = z;
double r751868 = r751866 * r751867;
double r751869 = r751865 - r751868;
double r751870 = t;
double r751871 = a;
double r751872 = r751871 * r751867;
double r751873 = r751870 - r751872;
double r751874 = r751869 / r751873;
return r751874;
}
double f(double x, double y, double z, double t, double a) {
double r751875 = x;
double r751876 = y;
double r751877 = z;
double r751878 = r751876 * r751877;
double r751879 = r751875 - r751878;
double r751880 = t;
double r751881 = a;
double r751882 = r751881 * r751877;
double r751883 = r751880 - r751882;
double r751884 = r751879 / r751883;
return r751884;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.6 |
|---|---|
| Target | 1.8 |
| Herbie | 10.6 |
Initial program 10.6
Final simplification10.6
herbie shell --seed 2020003
(FPCore (x y z t a)
:name "Diagrams.Solve.Tridiagonal:solveTriDiagonal from diagrams-solve-0.1, A"
:precision binary64
:herbie-target
(if (< z -32113435955957344) (- (/ 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))))