\frac{x - y \cdot z}{t - a \cdot z}\left(x - y \cdot z\right) \cdot \frac{1}{t - a \cdot z}double f(double x, double y, double z, double t, double a) {
double r710791 = x;
double r710792 = y;
double r710793 = z;
double r710794 = r710792 * r710793;
double r710795 = r710791 - r710794;
double r710796 = t;
double r710797 = a;
double r710798 = r710797 * r710793;
double r710799 = r710796 - r710798;
double r710800 = r710795 / r710799;
return r710800;
}
double f(double x, double y, double z, double t, double a) {
double r710801 = x;
double r710802 = y;
double r710803 = z;
double r710804 = r710802 * r710803;
double r710805 = r710801 - r710804;
double r710806 = 1.0;
double r710807 = t;
double r710808 = a;
double r710809 = r710808 * r710803;
double r710810 = r710807 - r710809;
double r710811 = r710806 / r710810;
double r710812 = r710805 * r710811;
return r710812;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.9 |
|---|---|
| Target | 1.8 |
| Herbie | 11.0 |
Initial program 10.9
rmApplied div-inv11.0
Final simplification11.0
herbie shell --seed 2020036
(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))))