\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\begin{array}{l}
\mathbf{if}\;t \le 3.834895060413277958924619445076940887487 \cdot 10^{-32}:\\
\;\;\;\;\frac{x + \frac{1}{\frac{t}{y \cdot z}}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\\
\mathbf{else}:\\
\;\;\;\;{\left(\frac{\mathsf{fma}\left(\frac{z}{t}, y, x\right)}{\mathsf{fma}\left(\frac{y}{t}, b, a + 1\right)}\right)}^{1}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r832933 = x;
double r832934 = y;
double r832935 = z;
double r832936 = r832934 * r832935;
double r832937 = t;
double r832938 = r832936 / r832937;
double r832939 = r832933 + r832938;
double r832940 = a;
double r832941 = 1.0;
double r832942 = r832940 + r832941;
double r832943 = b;
double r832944 = r832934 * r832943;
double r832945 = r832944 / r832937;
double r832946 = r832942 + r832945;
double r832947 = r832939 / r832946;
return r832947;
}
double f(double x, double y, double z, double t, double a, double b) {
double r832948 = t;
double r832949 = 3.834895060413278e-32;
bool r832950 = r832948 <= r832949;
double r832951 = x;
double r832952 = 1.0;
double r832953 = y;
double r832954 = z;
double r832955 = r832953 * r832954;
double r832956 = r832948 / r832955;
double r832957 = r832952 / r832956;
double r832958 = r832951 + r832957;
double r832959 = a;
double r832960 = 1.0;
double r832961 = r832959 + r832960;
double r832962 = b;
double r832963 = r832953 * r832962;
double r832964 = r832963 / r832948;
double r832965 = r832961 + r832964;
double r832966 = r832958 / r832965;
double r832967 = r832954 / r832948;
double r832968 = fma(r832967, r832953, r832951);
double r832969 = r832953 / r832948;
double r832970 = fma(r832969, r832962, r832961);
double r832971 = r832968 / r832970;
double r832972 = pow(r832971, r832952);
double r832973 = r832950 ? r832966 : r832972;
return r832973;
}




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.4 |
|---|---|
| Target | 13.5 |
| Herbie | 14.5 |
if t < 3.834895060413278e-32Initial program 18.3
rmApplied clear-num18.3
if 3.834895060413278e-32 < t Initial program 11.6
rmApplied div-inv11.6
rmApplied div-inv11.7
rmApplied pow111.7
Applied pow111.7
Applied pow-prod-down11.7
Simplified5.0
Final simplification14.5
herbie shell --seed 2019362 +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))))