\frac{x + \frac{y \cdot z}{t}}{\left(a + 1.0\right) + \frac{y \cdot b}{t}}\begin{array}{l}
\mathbf{if}\;\frac{\frac{z \cdot y}{t} + x}{\frac{b \cdot y}{t} + \left(a + 1.0\right)} \le -5.995296774722577 \cdot 10^{-195}:\\
\;\;\;\;\frac{\frac{1}{\frac{\frac{t}{y}}{z}} + x}{\frac{b \cdot y}{t} + \left(a + 1.0\right)}\\
\mathbf{elif}\;\frac{\frac{z \cdot y}{t} + x}{\frac{b \cdot y}{t} + \left(a + 1.0\right)} \le 8.5564551367445 \cdot 10^{-317}:\\
\;\;\;\;\frac{x + \frac{y}{\frac{t}{z}}}{\left(a + 1.0\right) + b \cdot \frac{y}{t}}\\
\mathbf{elif}\;\frac{\frac{z \cdot y}{t} + x}{\frac{b \cdot y}{t} + \left(a + 1.0\right)} \le 5.849501499538423 \cdot 10^{+283}:\\
\;\;\;\;\frac{1}{\frac{b \cdot y}{t} + \left(a + 1.0\right)} \cdot \left(\frac{1}{\frac{t}{z \cdot y}} + x\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{x + \frac{y}{\frac{t}{z}}}{\left(a + 1.0\right) + b \cdot \frac{y}{t}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r34242211 = x;
double r34242212 = y;
double r34242213 = z;
double r34242214 = r34242212 * r34242213;
double r34242215 = t;
double r34242216 = r34242214 / r34242215;
double r34242217 = r34242211 + r34242216;
double r34242218 = a;
double r34242219 = 1.0;
double r34242220 = r34242218 + r34242219;
double r34242221 = b;
double r34242222 = r34242212 * r34242221;
double r34242223 = r34242222 / r34242215;
double r34242224 = r34242220 + r34242223;
double r34242225 = r34242217 / r34242224;
return r34242225;
}
double f(double x, double y, double z, double t, double a, double b) {
double r34242226 = z;
double r34242227 = y;
double r34242228 = r34242226 * r34242227;
double r34242229 = t;
double r34242230 = r34242228 / r34242229;
double r34242231 = x;
double r34242232 = r34242230 + r34242231;
double r34242233 = b;
double r34242234 = r34242233 * r34242227;
double r34242235 = r34242234 / r34242229;
double r34242236 = a;
double r34242237 = 1.0;
double r34242238 = r34242236 + r34242237;
double r34242239 = r34242235 + r34242238;
double r34242240 = r34242232 / r34242239;
double r34242241 = -5.995296774722577e-195;
bool r34242242 = r34242240 <= r34242241;
double r34242243 = 1.0;
double r34242244 = r34242229 / r34242227;
double r34242245 = r34242244 / r34242226;
double r34242246 = r34242243 / r34242245;
double r34242247 = r34242246 + r34242231;
double r34242248 = r34242247 / r34242239;
double r34242249 = 8.5564551367445e-317;
bool r34242250 = r34242240 <= r34242249;
double r34242251 = r34242229 / r34242226;
double r34242252 = r34242227 / r34242251;
double r34242253 = r34242231 + r34242252;
double r34242254 = r34242227 / r34242229;
double r34242255 = r34242233 * r34242254;
double r34242256 = r34242238 + r34242255;
double r34242257 = r34242253 / r34242256;
double r34242258 = 5.849501499538423e+283;
bool r34242259 = r34242240 <= r34242258;
double r34242260 = r34242243 / r34242239;
double r34242261 = r34242229 / r34242228;
double r34242262 = r34242243 / r34242261;
double r34242263 = r34242262 + r34242231;
double r34242264 = r34242260 * r34242263;
double r34242265 = r34242259 ? r34242264 : r34242257;
double r34242266 = r34242250 ? r34242257 : r34242265;
double r34242267 = r34242242 ? r34242248 : r34242266;
return r34242267;
}




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.3 |
| Herbie | 13.1 |
if (/ (+ x (/ (* y z) t)) (+ (+ a 1.0) (/ (* y b) t))) < -5.995296774722577e-195Initial program 8.1
rmApplied clear-num8.1
rmApplied associate-/r*7.1
if -5.995296774722577e-195 < (/ (+ x (/ (* y z) t)) (+ (+ a 1.0) (/ (* y b) t))) < 8.5564551367445e-317 or 5.849501499538423e+283 < (/ (+ x (/ (* y z) t)) (+ (+ a 1.0) (/ (* y b) t))) Initial program 38.0
rmApplied clear-num38.0
rmApplied div-inv38.0
rmApplied *-un-lft-identity38.0
Applied associate-*l*38.0
Simplified33.4
rmApplied *-un-lft-identity33.4
Applied associate-/r*33.4
Simplified29.6
if 8.5564551367445e-317 < (/ (+ x (/ (* y z) t)) (+ (+ a 1.0) (/ (* y b) t))) < 5.849501499538423e+283Initial program 0.6
rmApplied clear-num0.6
rmApplied div-inv0.7
Final simplification13.1
herbie shell --seed 2019158
(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 (* (+ x (* (/ y t) z)) (/ 1 (+ (+ a 1.0) (* (/ y t) b))))) (if (< t 3.036967103737246e-130) (/ z b) (* 1 (* (+ x (* (/ y t) z)) (/ 1 (+ (+ a 1.0) (* (/ y t) b)))))))
(/ (+ x (/ (* y z) t)) (+ (+ a 1.0) (/ (* y b) t))))