\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\begin{array}{l}
\mathbf{if}\;t \le -6.1483665754079292 \cdot 10^{144} \lor \neg \left(t \le 408.529868483533221\right):\\
\;\;\;\;\left(x + \frac{y}{\frac{t}{z}}\right) \cdot \frac{1}{\mathsf{fma}\left(\frac{y}{t}, b, a + 1\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\frac{\left(a + 1\right) + \frac{y \cdot b}{t}}{x + \frac{y \cdot z}{t}}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r572323 = x;
double r572324 = y;
double r572325 = z;
double r572326 = r572324 * r572325;
double r572327 = t;
double r572328 = r572326 / r572327;
double r572329 = r572323 + r572328;
double r572330 = a;
double r572331 = 1.0;
double r572332 = r572330 + r572331;
double r572333 = b;
double r572334 = r572324 * r572333;
double r572335 = r572334 / r572327;
double r572336 = r572332 + r572335;
double r572337 = r572329 / r572336;
return r572337;
}
double f(double x, double y, double z, double t, double a, double b) {
double r572338 = t;
double r572339 = -6.148366575407929e+144;
bool r572340 = r572338 <= r572339;
double r572341 = 408.5298684835332;
bool r572342 = r572338 <= r572341;
double r572343 = !r572342;
bool r572344 = r572340 || r572343;
double r572345 = x;
double r572346 = y;
double r572347 = z;
double r572348 = r572338 / r572347;
double r572349 = r572346 / r572348;
double r572350 = r572345 + r572349;
double r572351 = 1.0;
double r572352 = r572346 / r572338;
double r572353 = b;
double r572354 = a;
double r572355 = 1.0;
double r572356 = r572354 + r572355;
double r572357 = fma(r572352, r572353, r572356);
double r572358 = r572351 / r572357;
double r572359 = r572350 * r572358;
double r572360 = r572346 * r572353;
double r572361 = r572360 / r572338;
double r572362 = r572356 + r572361;
double r572363 = r572346 * r572347;
double r572364 = r572363 / r572338;
double r572365 = r572345 + r572364;
double r572366 = r572362 / r572365;
double r572367 = r572351 / r572366;
double r572368 = r572344 ? r572359 : r572367;
return r572368;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
| Original | 16.9 |
|---|---|
| Target | 12.8 |
| Herbie | 13.8 |
if t < -6.148366575407929e+144 or 408.5298684835332 < t Initial program 11.5
rmApplied associate-/l*7.5
rmApplied div-inv7.6
Simplified3.3
if -6.148366575407929e+144 < t < 408.5298684835332Initial program 20.5
rmApplied clear-num20.7
Final simplification13.8
herbie shell --seed 2020034 +o rules:numerics
(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))))