\frac{x - y \cdot z}{t - a \cdot z}\left(x - z \cdot y\right) \cdot \frac{1}{t - a \cdot z}double f(double x, double y, double z, double t, double a) {
double r35221644 = x;
double r35221645 = y;
double r35221646 = z;
double r35221647 = r35221645 * r35221646;
double r35221648 = r35221644 - r35221647;
double r35221649 = t;
double r35221650 = a;
double r35221651 = r35221650 * r35221646;
double r35221652 = r35221649 - r35221651;
double r35221653 = r35221648 / r35221652;
return r35221653;
}
double f(double x, double y, double z, double t, double a) {
double r35221654 = x;
double r35221655 = z;
double r35221656 = y;
double r35221657 = r35221655 * r35221656;
double r35221658 = r35221654 - r35221657;
double r35221659 = 1.0;
double r35221660 = t;
double r35221661 = a;
double r35221662 = r35221661 * r35221655;
double r35221663 = r35221660 - r35221662;
double r35221664 = r35221659 / r35221663;
double r35221665 = r35221658 * r35221664;
return r35221665;
}




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.7 |
| Herbie | 11.0 |
Initial program 10.8
rmApplied div-inv11.0
Final simplification11.0
herbie shell --seed 2019172
(FPCore (x y z t a)
:name "Diagrams.Solve.Tridiagonal:solveTriDiagonal from diagrams-solve-0.1, A"
:herbie-target
(if (< z -32113435955957344.0) (- (/ x (- t (* a z))) (/ y (- (/ t z) a))) (if (< z 3.5139522372978296e-86) (* (- x (* y z)) (/ 1.0 (- t (* a z)))) (- (/ x (- t (* a z))) (/ y (- (/ t z) a)))))
(/ (- x (* y z)) (- t (* a z))))