\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\begin{array}{l}
\mathbf{if}\;y \le -1.3244460391049904 \cdot 10^{-149}:\\
\;\;\;\;\frac{x + y \cdot \frac{z}{t}}{\left(a + 1\right) + \frac{y}{\frac{t}{b}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y}{t} \cdot b}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r669024 = x;
double r669025 = y;
double r669026 = z;
double r669027 = r669025 * r669026;
double r669028 = t;
double r669029 = r669027 / r669028;
double r669030 = r669024 + r669029;
double r669031 = a;
double r669032 = 1.0;
double r669033 = r669031 + r669032;
double r669034 = b;
double r669035 = r669025 * r669034;
double r669036 = r669035 / r669028;
double r669037 = r669033 + r669036;
double r669038 = r669030 / r669037;
return r669038;
}
double f(double x, double y, double z, double t, double a, double b) {
double r669039 = y;
double r669040 = -1.3244460391049904e-149;
bool r669041 = r669039 <= r669040;
double r669042 = x;
double r669043 = z;
double r669044 = t;
double r669045 = r669043 / r669044;
double r669046 = r669039 * r669045;
double r669047 = r669042 + r669046;
double r669048 = a;
double r669049 = 1.0;
double r669050 = r669048 + r669049;
double r669051 = b;
double r669052 = r669044 / r669051;
double r669053 = r669039 / r669052;
double r669054 = r669050 + r669053;
double r669055 = r669047 / r669054;
double r669056 = r669039 * r669043;
double r669057 = r669056 / r669044;
double r669058 = r669042 + r669057;
double r669059 = r669039 / r669044;
double r669060 = r669059 * r669051;
double r669061 = r669050 + r669060;
double r669062 = r669058 / r669061;
double r669063 = r669041 ? r669055 : r669062;
return r669063;
}




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.5 |
|---|---|
| Target | 13.0 |
| Herbie | 14.8 |
if y < -1.3244460391049904e-149Initial program 22.3
rmApplied associate-/l*20.7
rmApplied *-un-lft-identity20.7
Applied times-frac18.1
Simplified18.1
if -1.3244460391049904e-149 < y Initial program 13.1
rmApplied associate-/l*14.6
rmApplied associate-/r/12.8
Final simplification14.8
herbie shell --seed 2020100
(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))))