\frac{x - y \cdot z}{t - a \cdot z}\frac{x}{t - a \cdot z} - \frac{y}{\frac{t}{z} - a}double f(double x, double y, double z, double t, double a) {
double r544645 = x;
double r544646 = y;
double r544647 = z;
double r544648 = r544646 * r544647;
double r544649 = r544645 - r544648;
double r544650 = t;
double r544651 = a;
double r544652 = r544651 * r544647;
double r544653 = r544650 - r544652;
double r544654 = r544649 / r544653;
return r544654;
}
double f(double x, double y, double z, double t, double a) {
double r544655 = x;
double r544656 = t;
double r544657 = a;
double r544658 = z;
double r544659 = r544657 * r544658;
double r544660 = r544656 - r544659;
double r544661 = r544655 / r544660;
double r544662 = y;
double r544663 = r544656 / r544658;
double r544664 = r544663 - r544657;
double r544665 = r544662 / r544664;
double r544666 = r544661 - r544665;
return r544666;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.7 |
|---|---|
| Target | 1.7 |
| Herbie | 3.0 |
Initial program 10.7
rmApplied div-sub10.7
Simplified8.3
rmApplied div-sub8.3
Simplified3.0
Final simplification3.0
herbie shell --seed 2019196
(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))))