\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 r508220 = x;
double r508221 = y;
double r508222 = z;
double r508223 = t;
double r508224 = r508222 * r508223;
double r508225 = r508221 - r508224;
double r508226 = r508220 / r508225;
return r508226;
}
double f(double x, double y, double z, double t) {
double r508227 = x;
double r508228 = -r508227;
double r508229 = t;
double r508230 = z;
double r508231 = y;
double r508232 = -r508231;
double r508233 = fma(r508229, r508230, r508232);
double r508234 = r508228 / r508233;
return r508234;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 2.6 |
|---|---|
| Target | 1.6 |
| Herbie | 2.6 |
Initial program 2.6
rmApplied frac-2neg2.6
Simplified2.6
Final simplification2.6
herbie shell --seed 2019198 +o rules:numerics
(FPCore (x y z t)
:name "Diagrams.Solve.Tridiagonal:solveTriDiagonal from diagrams-solve-0.1, B"
:herbie-target
(if (< x -1.618195973607049e+50) (/ 1.0 (- (/ y x) (* (/ z x) t))) (if (< x 2.1378306434876444e+131) (/ x (- y (* z t))) (/ 1.0 (- (/ y x) (* (/ z x) t)))))
(/ x (- y (* z t))))