\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\begin{array}{l}
\mathbf{if}\;z \le -1.68308155764658379047185600858342380105 \cdot 10^{215}:\\
\;\;\;\;\frac{x + \frac{1}{t} \cdot \left(y \cdot z\right)}{\left(1 + a\right) + \frac{b \cdot y}{t}}\\
\mathbf{elif}\;z \le 3.794251549758276033940358680162827177832 \cdot 10^{146}:\\
\;\;\;\;\frac{x + \frac{y}{\frac{t}{z}}}{\left(1 + a\right) + \frac{b \cdot y}{t}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + \frac{y \cdot z}{t}}{\frac{y}{\frac{t}{b}} + \left(1 + a\right)}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r34211032 = x;
double r34211033 = y;
double r34211034 = z;
double r34211035 = r34211033 * r34211034;
double r34211036 = t;
double r34211037 = r34211035 / r34211036;
double r34211038 = r34211032 + r34211037;
double r34211039 = a;
double r34211040 = 1.0;
double r34211041 = r34211039 + r34211040;
double r34211042 = b;
double r34211043 = r34211033 * r34211042;
double r34211044 = r34211043 / r34211036;
double r34211045 = r34211041 + r34211044;
double r34211046 = r34211038 / r34211045;
return r34211046;
}
double f(double x, double y, double z, double t, double a, double b) {
double r34211047 = z;
double r34211048 = -1.6830815576465838e+215;
bool r34211049 = r34211047 <= r34211048;
double r34211050 = x;
double r34211051 = 1.0;
double r34211052 = t;
double r34211053 = r34211051 / r34211052;
double r34211054 = y;
double r34211055 = r34211054 * r34211047;
double r34211056 = r34211053 * r34211055;
double r34211057 = r34211050 + r34211056;
double r34211058 = 1.0;
double r34211059 = a;
double r34211060 = r34211058 + r34211059;
double r34211061 = b;
double r34211062 = r34211061 * r34211054;
double r34211063 = r34211062 / r34211052;
double r34211064 = r34211060 + r34211063;
double r34211065 = r34211057 / r34211064;
double r34211066 = 3.794251549758276e+146;
bool r34211067 = r34211047 <= r34211066;
double r34211068 = r34211052 / r34211047;
double r34211069 = r34211054 / r34211068;
double r34211070 = r34211050 + r34211069;
double r34211071 = r34211070 / r34211064;
double r34211072 = r34211055 / r34211052;
double r34211073 = r34211050 + r34211072;
double r34211074 = r34211052 / r34211061;
double r34211075 = r34211054 / r34211074;
double r34211076 = r34211075 + r34211060;
double r34211077 = r34211073 / r34211076;
double r34211078 = r34211067 ? r34211071 : r34211077;
double r34211079 = r34211049 ? r34211065 : r34211078;
return r34211079;
}




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.3 |
|---|---|
| Target | 13.0 |
| Herbie | 16.6 |
if z < -1.6830815576465838e+215Initial program 30.5
rmApplied div-inv30.6
if -1.6830815576465838e+215 < z < 3.794251549758276e+146Initial program 13.2
rmApplied associate-/l*13.3
if 3.794251549758276e+146 < z Initial program 29.1
rmApplied associate-/l*31.0
Final simplification16.6
herbie shell --seed 2019170
(FPCore (x y z t a b)
:name "Diagrams.Solve.Tridiagonal:solveCyclicTriDiagonal from diagrams-solve-0.1, B"
:herbie-target
(if (< t -1.3659085366310088e-271) (* 1.0 (* (+ x (* (/ y t) z)) (/ 1.0 (+ (+ a 1.0) (* (/ y t) b))))) (if (< t 3.036967103737246e-130) (/ z b) (* 1.0 (* (+ x (* (/ y t) z)) (/ 1.0 (+ (+ a 1.0) (* (/ y t) b)))))))
(/ (+ x (/ (* y z) t)) (+ (+ a 1.0) (/ (* y b) t))))