\frac{x}{y - z \cdot t}\frac{-x}{\mathsf{fma}\left(t, z, -y\right)}double f(double x, double y, double z, double t) {
double r726901 = x;
double r726902 = y;
double r726903 = z;
double r726904 = t;
double r726905 = r726903 * r726904;
double r726906 = r726902 - r726905;
double r726907 = r726901 / r726906;
return r726907;
}
double f(double x, double y, double z, double t) {
double r726908 = x;
double r726909 = -r726908;
double r726910 = t;
double r726911 = z;
double r726912 = y;
double r726913 = -r726912;
double r726914 = fma(r726910, r726911, r726913);
double r726915 = r726909 / r726914;
return r726915;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 3.0 |
|---|---|
| Target | 1.7 |
| Herbie | 3.0 |
Initial program 3.0
rmApplied frac-2neg3.0
Simplified3.0
Final simplification3.0
herbie shell --seed 2020045 +o rules:numerics
(FPCore (x y z t)
:name "Diagrams.Solve.Tridiagonal:solveTriDiagonal from diagrams-solve-0.1, B"
:precision binary64
:herbie-target
(if (< x -1.618195973607049e+50) (/ 1 (- (/ y x) (* (/ z x) t))) (if (< x 2.1378306434876444e+131) (/ x (- y (* z t))) (/ 1 (- (/ y x) (* (/ z x) t)))))
(/ x (- y (* z t))))