\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 r604312 = x;
double r604313 = y;
double r604314 = z;
double r604315 = r604313 * r604314;
double r604316 = r604312 - r604315;
double r604317 = t;
double r604318 = a;
double r604319 = r604318 * r604314;
double r604320 = r604317 - r604319;
double r604321 = r604316 / r604320;
return r604321;
}
double f(double x, double y, double z, double t, double a) {
double r604322 = x;
double r604323 = y;
double r604324 = z;
double r604325 = r604323 * r604324;
double r604326 = r604322 - r604325;
double r604327 = t;
double r604328 = a;
double r604329 = r604328 * r604324;
double r604330 = r604327 - r604329;
double r604331 = r604326 / r604330;
return r604331;
}




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 | 10.9 |
Initial program 10.9
Final simplification10.9
herbie shell --seed 2019304
(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.51395223729782958e-86) (* (- x (* y z)) (/ 1 (- t (* a z)))) (- (/ x (- t (* a z))) (/ y (- (/ t z) a)))))
(/ (- x (* y z)) (- t (* a z))))