\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 r25522047 = x;
double r25522048 = y;
double r25522049 = z;
double r25522050 = r25522048 * r25522049;
double r25522051 = r25522047 - r25522050;
double r25522052 = t;
double r25522053 = a;
double r25522054 = r25522053 * r25522049;
double r25522055 = r25522052 - r25522054;
double r25522056 = r25522051 / r25522055;
return r25522056;
}
double f(double x, double y, double z, double t, double a) {
double r25522057 = x;
double r25522058 = z;
double r25522059 = y;
double r25522060 = r25522058 * r25522059;
double r25522061 = r25522057 - r25522060;
double r25522062 = 1.0;
double r25522063 = t;
double r25522064 = a;
double r25522065 = r25522064 * r25522058;
double r25522066 = r25522063 - r25522065;
double r25522067 = r25522062 / r25522066;
double r25522068 = r25522061 * r25522067;
return r25522068;
}




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 +o rules:numerics
(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))))