\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}double f(double x, double y, double z, double t, double a, double b) {
double r600883 = x;
double r600884 = y;
double r600885 = z;
double r600886 = r600884 * r600885;
double r600887 = t;
double r600888 = r600886 / r600887;
double r600889 = r600883 + r600888;
double r600890 = a;
double r600891 = 1.0;
double r600892 = r600890 + r600891;
double r600893 = b;
double r600894 = r600884 * r600893;
double r600895 = r600894 / r600887;
double r600896 = r600892 + r600895;
double r600897 = r600889 / r600896;
return r600897;
}
double f(double x, double y, double z, double t, double a, double b) {
double r600898 = x;
double r600899 = y;
double r600900 = z;
double r600901 = r600899 * r600900;
double r600902 = t;
double r600903 = r600901 / r600902;
double r600904 = r600898 + r600903;
double r600905 = a;
double r600906 = 1.0;
double r600907 = r600905 + r600906;
double r600908 = b;
double r600909 = r600899 * r600908;
double r600910 = r600909 / r600902;
double r600911 = r600907 + r600910;
double r600912 = r600904 / r600911;
return r600912;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
Results
| Original | 16.8 |
|---|---|
| Target | 13.6 |
| Herbie | 16.8 |
if t < -3.89960207249468e+31 or 2.5169594849587127e-197 < t Initial program 13.3
rmApplied add-cube-cbrt13.4
Applied times-frac11.4
rmApplied *-un-lft-identity11.4
Applied times-frac9.0
Simplified9.0
if -3.89960207249468e+31 < t < 2.5169594849587127e-197Initial program 23.2
rmApplied clear-num23.3
Final simplification16.8
herbie shell --seed 2019297
(FPCore (x y z t a b)
:name "Diagrams.Solve.Tridiagonal:solveCyclicTriDiagonal from diagrams-solve-0.1, B"
:precision binary64
:herbie-target
(if (< t -1.3659085366310088e-271) (* 1 (* (+ x (* (/ y t) z)) (/ 1 (+ (+ a 1) (* (/ y t) b))))) (if (< t 3.0369671037372459e-130) (/ z b) (* 1 (* (+ x (* (/ y t) z)) (/ 1 (+ (+ a 1) (* (/ y t) b)))))))
(/ (+ x (/ (* y z) t)) (+ (+ a 1) (/ (* y b) t))))