\frac{x + \frac{y \cdot z}{t}}{\left(a + 1.0\right) + \frac{y \cdot b}{t}}\begin{array}{l}
\mathbf{if}\;t \le -1.1737891160443873 \cdot 10^{-106}:\\
\;\;\;\;\left(\frac{\frac{y}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot z}{\sqrt[3]{t}} + x\right) \cdot \frac{1}{y \cdot \frac{b}{t} + \left(a + 1.0\right)}\\
\mathbf{elif}\;t \le 2.2341029313449467 \cdot 10^{-122}:\\
\;\;\;\;\frac{x + \frac{y}{\frac{t}{z}}}{\left(b \cdot y + \left(a + 1.0\right) \cdot t\right) \cdot \left(a - 1.0\right)} \cdot \left(\left(a - 1.0\right) \cdot t\right)\\
\mathbf{else}:\\
\;\;\;\;\sqrt[3]{\frac{\frac{y}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{z}{\sqrt[3]{t}} + x}{y \cdot \frac{b}{t} + \left(a + 1.0\right)}} \cdot \left(\sqrt[3]{\frac{\frac{y}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{z}{\sqrt[3]{t}} + x}{y \cdot \frac{b}{t} + \left(a + 1.0\right)}} \cdot \sqrt[3]{\frac{\frac{y}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{z}{\sqrt[3]{t}} + x}{y \cdot \frac{b}{t} + \left(a + 1.0\right)}}\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r33310597 = x;
double r33310598 = y;
double r33310599 = z;
double r33310600 = r33310598 * r33310599;
double r33310601 = t;
double r33310602 = r33310600 / r33310601;
double r33310603 = r33310597 + r33310602;
double r33310604 = a;
double r33310605 = 1.0;
double r33310606 = r33310604 + r33310605;
double r33310607 = b;
double r33310608 = r33310598 * r33310607;
double r33310609 = r33310608 / r33310601;
double r33310610 = r33310606 + r33310609;
double r33310611 = r33310603 / r33310610;
return r33310611;
}
double f(double x, double y, double z, double t, double a, double b) {
double r33310612 = t;
double r33310613 = -1.1737891160443873e-106;
bool r33310614 = r33310612 <= r33310613;
double r33310615 = y;
double r33310616 = cbrt(r33310612);
double r33310617 = r33310616 * r33310616;
double r33310618 = r33310615 / r33310617;
double r33310619 = z;
double r33310620 = r33310618 * r33310619;
double r33310621 = r33310620 / r33310616;
double r33310622 = x;
double r33310623 = r33310621 + r33310622;
double r33310624 = 1.0;
double r33310625 = b;
double r33310626 = r33310625 / r33310612;
double r33310627 = r33310615 * r33310626;
double r33310628 = a;
double r33310629 = 1.0;
double r33310630 = r33310628 + r33310629;
double r33310631 = r33310627 + r33310630;
double r33310632 = r33310624 / r33310631;
double r33310633 = r33310623 * r33310632;
double r33310634 = 2.2341029313449467e-122;
bool r33310635 = r33310612 <= r33310634;
double r33310636 = r33310612 / r33310619;
double r33310637 = r33310615 / r33310636;
double r33310638 = r33310622 + r33310637;
double r33310639 = r33310625 * r33310615;
double r33310640 = r33310630 * r33310612;
double r33310641 = r33310639 + r33310640;
double r33310642 = r33310628 - r33310629;
double r33310643 = r33310641 * r33310642;
double r33310644 = r33310638 / r33310643;
double r33310645 = r33310642 * r33310612;
double r33310646 = r33310644 * r33310645;
double r33310647 = r33310619 / r33310616;
double r33310648 = r33310618 * r33310647;
double r33310649 = r33310648 + r33310622;
double r33310650 = r33310649 / r33310631;
double r33310651 = cbrt(r33310650);
double r33310652 = r33310651 * r33310651;
double r33310653 = r33310651 * r33310652;
double r33310654 = r33310635 ? r33310646 : r33310653;
double r33310655 = r33310614 ? r33310633 : r33310654;
return r33310655;
}




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.3 |
| Herbie | 16.5 |
if t < -1.1737891160443873e-106Initial program 12.0
rmApplied add-cube-cbrt12.2
Applied times-frac9.9
rmApplied *-un-lft-identity9.9
Applied times-frac7.2
Simplified7.2
rmApplied div-inv7.2
rmApplied associate-*r/7.9
if -1.1737891160443873e-106 < t < 2.2341029313449467e-122Initial program 27.4
rmApplied flip-+35.3
Applied frac-add35.3
Applied associate-/r/38.1
Simplified35.5
if 2.2341029313449467e-122 < t Initial program 12.8
rmApplied add-cube-cbrt13.0
Applied times-frac10.9
rmApplied *-un-lft-identity10.9
Applied times-frac8.1
Simplified8.1
rmApplied add-cube-cbrt8.9
Final simplification16.5
herbie shell --seed 2019165
(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))))