\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\begin{array}{l}
\mathbf{if}\;t \le -2.55463461620758721 \cdot 10^{39} \lor \neg \left(t \le 2.18799200804665815 \cdot 10^{39}\right):\\
\;\;\;\;\frac{x + y \cdot \frac{z}{t}}{\left(a + 1\right) + \frac{1}{\frac{\frac{t}{y}}{b}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{1}{\frac{t}{y \cdot b}}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r819947 = x;
double r819948 = y;
double r819949 = z;
double r819950 = r819948 * r819949;
double r819951 = t;
double r819952 = r819950 / r819951;
double r819953 = r819947 + r819952;
double r819954 = a;
double r819955 = 1.0;
double r819956 = r819954 + r819955;
double r819957 = b;
double r819958 = r819948 * r819957;
double r819959 = r819958 / r819951;
double r819960 = r819956 + r819959;
double r819961 = r819953 / r819960;
return r819961;
}
double f(double x, double y, double z, double t, double a, double b) {
double r819962 = t;
double r819963 = -2.5546346162075872e+39;
bool r819964 = r819962 <= r819963;
double r819965 = 2.1879920080466582e+39;
bool r819966 = r819962 <= r819965;
double r819967 = !r819966;
bool r819968 = r819964 || r819967;
double r819969 = x;
double r819970 = y;
double r819971 = z;
double r819972 = r819971 / r819962;
double r819973 = r819970 * r819972;
double r819974 = r819969 + r819973;
double r819975 = a;
double r819976 = 1.0;
double r819977 = r819975 + r819976;
double r819978 = 1.0;
double r819979 = r819962 / r819970;
double r819980 = b;
double r819981 = r819979 / r819980;
double r819982 = r819978 / r819981;
double r819983 = r819977 + r819982;
double r819984 = r819974 / r819983;
double r819985 = r819970 * r819971;
double r819986 = r819985 / r819962;
double r819987 = r819969 + r819986;
double r819988 = r819970 * r819980;
double r819989 = r819962 / r819988;
double r819990 = r819978 / r819989;
double r819991 = r819977 + r819990;
double r819992 = r819987 / r819991;
double r819993 = r819968 ? r819984 : r819992;
return r819993;
}




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.6 |
|---|---|
| Target | 13.1 |
| Herbie | 12.8 |
if t < -2.5546346162075872e+39 or 2.1879920080466582e+39 < t Initial program 11.7
rmApplied clear-num11.7
rmApplied associate-/r*8.6
rmApplied *-un-lft-identity8.6
Applied times-frac3.4
Simplified3.4
if -2.5546346162075872e+39 < t < 2.1879920080466582e+39Initial program 20.7
rmApplied clear-num20.7
Final simplification12.8
herbie shell --seed 2020042
(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))))