\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 r714867 = x;
double r714868 = y;
double r714869 = z;
double r714870 = r714868 * r714869;
double r714871 = r714867 - r714870;
double r714872 = t;
double r714873 = a;
double r714874 = r714873 * r714869;
double r714875 = r714872 - r714874;
double r714876 = r714871 / r714875;
return r714876;
}
double f(double x, double y, double z, double t, double a) {
double r714877 = x;
double r714878 = y;
double r714879 = z;
double r714880 = r714878 * r714879;
double r714881 = r714877 - r714880;
double r714882 = t;
double r714883 = a;
double r714884 = r714883 * r714879;
double r714885 = r714882 - r714884;
double r714886 = r714881 / r714885;
return r714886;
}




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.8 |
| Herbie | 10.8 |
Initial program 10.8
Final simplification10.8
herbie shell --seed 2020021 +o rules:numerics
(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))))