\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 r580595 = x;
double r580596 = y;
double r580597 = z;
double r580598 = r580596 * r580597;
double r580599 = r580595 - r580598;
double r580600 = t;
double r580601 = a;
double r580602 = r580601 * r580597;
double r580603 = r580600 - r580602;
double r580604 = r580599 / r580603;
return r580604;
}
double f(double x, double y, double z, double t, double a) {
double r580605 = x;
double r580606 = y;
double r580607 = z;
double r580608 = r580606 * r580607;
double r580609 = r580605 - r580608;
double r580610 = t;
double r580611 = a;
double r580612 = r580611 * r580607;
double r580613 = r580610 - r580612;
double r580614 = r580609 / r580613;
return r580614;
}




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.9 |
| Herbie | 10.8 |
Initial program 10.8
Final simplification10.8
herbie shell --seed 2019294
(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))))