\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 r36367649 = x;
double r36367650 = y;
double r36367651 = z;
double r36367652 = r36367650 * r36367651;
double r36367653 = r36367649 - r36367652;
double r36367654 = t;
double r36367655 = a;
double r36367656 = r36367655 * r36367651;
double r36367657 = r36367654 - r36367656;
double r36367658 = r36367653 / r36367657;
return r36367658;
}
double f(double x, double y, double z, double t, double a) {
double r36367659 = x;
double r36367660 = y;
double r36367661 = z;
double r36367662 = r36367660 * r36367661;
double r36367663 = r36367659 - r36367662;
double r36367664 = t;
double r36367665 = a;
double r36367666 = r36367665 * r36367661;
double r36367667 = r36367664 - r36367666;
double r36367668 = r36367663 / r36367667;
return r36367668;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.3 |
|---|---|
| Target | 1.6 |
| Herbie | 10.3 |
Initial program 10.3
rmApplied div-inv10.4
rmApplied add-cube-cbrt11.1
rmApplied associate-*r/11.1
Simplified10.3
Final simplification10.3
herbie shell --seed 2019179
(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))))