\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\begin{array}{l}
\mathbf{if}\;y \le -954416122714153287680:\\
\;\;\;\;\frac{1}{\frac{\left(a + 1\right) + y \cdot \frac{b}{t}}{x + y \cdot \frac{z}{t}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + \frac{1}{\frac{\frac{t}{z}}{y}}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r441114 = x;
double r441115 = y;
double r441116 = z;
double r441117 = r441115 * r441116;
double r441118 = t;
double r441119 = r441117 / r441118;
double r441120 = r441114 + r441119;
double r441121 = a;
double r441122 = 1.0;
double r441123 = r441121 + r441122;
double r441124 = b;
double r441125 = r441115 * r441124;
double r441126 = r441125 / r441118;
double r441127 = r441123 + r441126;
double r441128 = r441120 / r441127;
return r441128;
}
double f(double x, double y, double z, double t, double a, double b) {
double r441129 = y;
double r441130 = -9.544161227141533e+20;
bool r441131 = r441129 <= r441130;
double r441132 = 1.0;
double r441133 = a;
double r441134 = 1.0;
double r441135 = r441133 + r441134;
double r441136 = b;
double r441137 = t;
double r441138 = r441136 / r441137;
double r441139 = r441129 * r441138;
double r441140 = r441135 + r441139;
double r441141 = x;
double r441142 = z;
double r441143 = r441142 / r441137;
double r441144 = r441129 * r441143;
double r441145 = r441141 + r441144;
double r441146 = r441140 / r441145;
double r441147 = r441132 / r441146;
double r441148 = r441137 / r441142;
double r441149 = r441148 / r441129;
double r441150 = r441132 / r441149;
double r441151 = r441141 + r441150;
double r441152 = r441129 * r441136;
double r441153 = r441152 / r441137;
double r441154 = r441135 + r441153;
double r441155 = r441151 / r441154;
double r441156 = r441131 ? r441147 : r441155;
return r441156;
}




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.4 |
|---|---|
| Target | 13.2 |
| Herbie | 15.9 |
if y < -9.544161227141533e+20Initial program 30.0
rmApplied associate-/l*26.3
rmApplied *-un-lft-identity26.3
Applied times-frac21.7
Simplified21.7
rmApplied div-inv21.7
Simplified21.6
rmApplied clear-num21.8
if -9.544161227141533e+20 < y Initial program 12.4
rmApplied associate-/l*14.1
rmApplied clear-num14.1
Final simplification15.9
herbie shell --seed 2019326
(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))))