\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\begin{array}{l}
\mathbf{if}\;t \le -902502022872164864:\\
\;\;\;\;\frac{x + \frac{z}{t} \cdot y}{\frac{y}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{b}{\sqrt[3]{t}} + \left(1 + a\right)}\\
\mathbf{elif}\;t \le 1.271889293578493398262974690376538205057 \cdot 10^{-21}:\\
\;\;\;\;\frac{1}{\frac{\frac{y \cdot b}{t} + \left(1 + a\right)}{\frac{y \cdot z}{t} + x}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + \frac{z}{t} \cdot y}{\frac{y}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{b}{\sqrt[3]{t}} + \left(1 + a\right)}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r35065174 = x;
double r35065175 = y;
double r35065176 = z;
double r35065177 = r35065175 * r35065176;
double r35065178 = t;
double r35065179 = r35065177 / r35065178;
double r35065180 = r35065174 + r35065179;
double r35065181 = a;
double r35065182 = 1.0;
double r35065183 = r35065181 + r35065182;
double r35065184 = b;
double r35065185 = r35065175 * r35065184;
double r35065186 = r35065185 / r35065178;
double r35065187 = r35065183 + r35065186;
double r35065188 = r35065180 / r35065187;
return r35065188;
}
double f(double x, double y, double z, double t, double a, double b) {
double r35065189 = t;
double r35065190 = -9.025020228721649e+17;
bool r35065191 = r35065189 <= r35065190;
double r35065192 = x;
double r35065193 = z;
double r35065194 = r35065193 / r35065189;
double r35065195 = y;
double r35065196 = r35065194 * r35065195;
double r35065197 = r35065192 + r35065196;
double r35065198 = cbrt(r35065189);
double r35065199 = r35065198 * r35065198;
double r35065200 = r35065195 / r35065199;
double r35065201 = b;
double r35065202 = r35065201 / r35065198;
double r35065203 = r35065200 * r35065202;
double r35065204 = 1.0;
double r35065205 = a;
double r35065206 = r35065204 + r35065205;
double r35065207 = r35065203 + r35065206;
double r35065208 = r35065197 / r35065207;
double r35065209 = 1.2718892935784934e-21;
bool r35065210 = r35065189 <= r35065209;
double r35065211 = 1.0;
double r35065212 = r35065195 * r35065201;
double r35065213 = r35065212 / r35065189;
double r35065214 = r35065213 + r35065206;
double r35065215 = r35065195 * r35065193;
double r35065216 = r35065215 / r35065189;
double r35065217 = r35065216 + r35065192;
double r35065218 = r35065214 / r35065217;
double r35065219 = r35065211 / r35065218;
double r35065220 = r35065210 ? r35065219 : r35065208;
double r35065221 = r35065191 ? r35065208 : r35065220;
return r35065221;
}




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.9 |
|---|---|
| Target | 13.6 |
| Herbie | 13.0 |
if t < -9.025020228721649e+17 or 1.2718892935784934e-21 < t Initial program 12.2
rmApplied add-cube-cbrt12.2
Applied times-frac9.2
rmApplied *-un-lft-identity9.2
Applied times-frac4.5
Simplified4.5
if -9.025020228721649e+17 < t < 1.2718892935784934e-21Initial program 21.9
rmApplied clear-num22.1
Final simplification13.0
herbie shell --seed 2019168
(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.0 (* (+ x (* (/ y t) z)) (/ 1.0 (+ (+ a 1.0) (* (/ y t) b))))) (if (< t 3.036967103737246e-130) (/ z b) (* 1.0 (* (+ x (* (/ y t) z)) (/ 1.0 (+ (+ a 1.0) (* (/ y t) b)))))))
(/ (+ x (/ (* y z) t)) (+ (+ a 1.0) (/ (* y b) t))))