\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 r33736048 = x;
double r33736049 = y;
double r33736050 = z;
double r33736051 = r33736049 * r33736050;
double r33736052 = r33736048 - r33736051;
double r33736053 = t;
double r33736054 = a;
double r33736055 = r33736054 * r33736050;
double r33736056 = r33736053 - r33736055;
double r33736057 = r33736052 / r33736056;
return r33736057;
}
double f(double x, double y, double z, double t, double a) {
double r33736058 = x;
double r33736059 = z;
double r33736060 = y;
double r33736061 = r33736059 * r33736060;
double r33736062 = r33736058 - r33736061;
double r33736063 = 1.0;
double r33736064 = t;
double r33736065 = a;
double r33736066 = r33736065 * r33736059;
double r33736067 = r33736064 - r33736066;
double r33736068 = r33736063 / r33736067;
double r33736069 = r33736062 * r33736068;
return r33736069;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.5 |
|---|---|
| Target | 1.8 |
| Herbie | 10.6 |
Initial program 10.5
rmApplied div-inv10.6
Final simplification10.6
herbie shell --seed 2019170
(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))))