\frac{x - y \cdot z}{t - a \cdot z}\left(x - y \cdot z\right) \cdot \frac{1}{t - a \cdot z}double f(double x, double y, double z, double t, double a) {
double r794188 = x;
double r794189 = y;
double r794190 = z;
double r794191 = r794189 * r794190;
double r794192 = r794188 - r794191;
double r794193 = t;
double r794194 = a;
double r794195 = r794194 * r794190;
double r794196 = r794193 - r794195;
double r794197 = r794192 / r794196;
return r794197;
}
double f(double x, double y, double z, double t, double a) {
double r794198 = x;
double r794199 = y;
double r794200 = z;
double r794201 = r794199 * r794200;
double r794202 = r794198 - r794201;
double r794203 = 1.0;
double r794204 = t;
double r794205 = a;
double r794206 = r794205 * r794200;
double r794207 = r794204 - r794206;
double r794208 = r794203 / r794207;
double r794209 = r794202 * r794208;
return r794209;
}




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.9 |
| Herbie | 10.6 |
Initial program 10.5
rmApplied div-inv10.6
Final simplification10.6
herbie shell --seed 2020018 +o rules:numerics
(FPCore (x y z t a)
:name "Diagrams.Solve.Tridiagonal:solveTriDiagonal from diagrams-solve-0.1, A"
:precision binary64
:herbie-target
(if (< z -32113435955957344) (- (/ x (- t (* a z))) (/ y (- (/ t z) a))) (if (< z 3.5139522372978296e-86) (* (- x (* y z)) (/ 1 (- t (* a z)))) (- (/ x (- t (* a z))) (/ y (- (/ t z) a)))))
(/ (- x (* y z)) (- t (* a z))))