\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\begin{array}{l}
\mathbf{if}\;t \le -1812207.16226367117:\\
\;\;\;\;\frac{x + y \cdot \frac{z}{t}}{\left(a + 1\right) + y \cdot \frac{b}{t}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + \left(y \cdot z\right) \cdot \frac{1}{t}}{\left(a + 1\right) + y \cdot \frac{b}{t}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r672913 = x;
double r672914 = y;
double r672915 = z;
double r672916 = r672914 * r672915;
double r672917 = t;
double r672918 = r672916 / r672917;
double r672919 = r672913 + r672918;
double r672920 = a;
double r672921 = 1.0;
double r672922 = r672920 + r672921;
double r672923 = b;
double r672924 = r672914 * r672923;
double r672925 = r672924 / r672917;
double r672926 = r672922 + r672925;
double r672927 = r672919 / r672926;
return r672927;
}
double f(double x, double y, double z, double t, double a, double b) {
double r672928 = t;
double r672929 = -1812207.1622636712;
bool r672930 = r672928 <= r672929;
double r672931 = x;
double r672932 = y;
double r672933 = z;
double r672934 = r672933 / r672928;
double r672935 = r672932 * r672934;
double r672936 = r672931 + r672935;
double r672937 = a;
double r672938 = 1.0;
double r672939 = r672937 + r672938;
double r672940 = b;
double r672941 = r672940 / r672928;
double r672942 = r672932 * r672941;
double r672943 = r672939 + r672942;
double r672944 = r672936 / r672943;
double r672945 = r672932 * r672933;
double r672946 = 1.0;
double r672947 = r672946 / r672928;
double r672948 = r672945 * r672947;
double r672949 = r672931 + r672948;
double r672950 = r672949 / r672943;
double r672951 = r672930 ? r672944 : r672950;
return r672951;
}




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.9 |
|---|---|
| Target | 13.0 |
| Herbie | 16.1 |
if t < -1812207.1622636712Initial program 12.6
rmApplied *-un-lft-identity12.6
Applied times-frac9.5
Simplified9.5
rmApplied *-un-lft-identity9.5
Applied times-frac3.9
Simplified3.9
if -1812207.1622636712 < t Initial program 18.4
rmApplied *-un-lft-identity18.4
Applied times-frac20.1
Simplified20.1
rmApplied div-inv20.1
Final simplification16.1
herbie shell --seed 2020081
(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.036967103737246e-130) (/ z b) (* 1 (* (+ x (* (/ y t) z)) (/ 1 (+ (+ a 1) (* (/ y t) b)))))))
(/ (+ x (/ (* y z) t)) (+ (+ a 1) (/ (* y b) t))))