\frac{x + \frac{y \cdot z}{t}}{\left(a + 1.0\right) + \frac{y \cdot b}{t}}\begin{array}{l}
\mathbf{if}\;t \le -3.8379120371637104 \cdot 10^{-143}:\\
\;\;\;\;\left(\frac{z}{\sqrt[3]{t}} \cdot \frac{y}{\sqrt[3]{t} \cdot \sqrt[3]{t}} + x\right) \cdot \frac{1}{\frac{b}{\sqrt[3]{t}} \cdot \frac{y}{\sqrt[3]{t} \cdot \sqrt[3]{t}} + \left(a + 1.0\right)}\\
\mathbf{elif}\;t \le -1.0344055968847788 \cdot 10^{-306}:\\
\;\;\;\;\left(\left(a - 1.0\right) \cdot t\right) \cdot \frac{x + \frac{y \cdot z}{t}}{\left(b \cdot y\right) \cdot \left(a - 1.0\right) + t \cdot \left(\left(a + 1.0\right) \cdot \left(a - 1.0\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + \frac{\sqrt[3]{z}}{\sqrt[3]{\sqrt{t}}} \cdot \left(\frac{y}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{\sqrt[3]{z} \cdot \sqrt[3]{z}}{\sqrt[3]{\sqrt{t}}}\right)}{\frac{b}{\sqrt[3]{\sqrt[3]{t}}} \cdot \frac{\frac{y}{\sqrt[3]{t} \cdot \sqrt[3]{t}}}{\sqrt[3]{\sqrt[3]{t} \cdot \sqrt[3]{t}}} + \left(a + 1.0\right)}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r13325686 = x;
double r13325687 = y;
double r13325688 = z;
double r13325689 = r13325687 * r13325688;
double r13325690 = t;
double r13325691 = r13325689 / r13325690;
double r13325692 = r13325686 + r13325691;
double r13325693 = a;
double r13325694 = 1.0;
double r13325695 = r13325693 + r13325694;
double r13325696 = b;
double r13325697 = r13325687 * r13325696;
double r13325698 = r13325697 / r13325690;
double r13325699 = r13325695 + r13325698;
double r13325700 = r13325692 / r13325699;
return r13325700;
}
double f(double x, double y, double z, double t, double a, double b) {
double r13325701 = t;
double r13325702 = -3.8379120371637104e-143;
bool r13325703 = r13325701 <= r13325702;
double r13325704 = z;
double r13325705 = cbrt(r13325701);
double r13325706 = r13325704 / r13325705;
double r13325707 = y;
double r13325708 = r13325705 * r13325705;
double r13325709 = r13325707 / r13325708;
double r13325710 = r13325706 * r13325709;
double r13325711 = x;
double r13325712 = r13325710 + r13325711;
double r13325713 = 1.0;
double r13325714 = b;
double r13325715 = r13325714 / r13325705;
double r13325716 = r13325715 * r13325709;
double r13325717 = a;
double r13325718 = 1.0;
double r13325719 = r13325717 + r13325718;
double r13325720 = r13325716 + r13325719;
double r13325721 = r13325713 / r13325720;
double r13325722 = r13325712 * r13325721;
double r13325723 = -1.0344055968847788e-306;
bool r13325724 = r13325701 <= r13325723;
double r13325725 = r13325717 - r13325718;
double r13325726 = r13325725 * r13325701;
double r13325727 = r13325707 * r13325704;
double r13325728 = r13325727 / r13325701;
double r13325729 = r13325711 + r13325728;
double r13325730 = r13325714 * r13325707;
double r13325731 = r13325730 * r13325725;
double r13325732 = r13325719 * r13325725;
double r13325733 = r13325701 * r13325732;
double r13325734 = r13325731 + r13325733;
double r13325735 = r13325729 / r13325734;
double r13325736 = r13325726 * r13325735;
double r13325737 = cbrt(r13325704);
double r13325738 = sqrt(r13325701);
double r13325739 = cbrt(r13325738);
double r13325740 = r13325737 / r13325739;
double r13325741 = r13325737 * r13325737;
double r13325742 = r13325741 / r13325739;
double r13325743 = r13325709 * r13325742;
double r13325744 = r13325740 * r13325743;
double r13325745 = r13325711 + r13325744;
double r13325746 = cbrt(r13325705);
double r13325747 = r13325714 / r13325746;
double r13325748 = cbrt(r13325708);
double r13325749 = r13325709 / r13325748;
double r13325750 = r13325747 * r13325749;
double r13325751 = r13325750 + r13325719;
double r13325752 = r13325745 / r13325751;
double r13325753 = r13325724 ? r13325736 : r13325752;
double r13325754 = r13325703 ? r13325722 : r13325753;
return r13325754;
}




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.2 |
|---|---|
| Target | 13.1 |
| Herbie | 15.0 |
if t < -3.8379120371637104e-143Initial program 12.1
rmApplied add-cube-cbrt12.3
Applied times-frac10.6
rmApplied add-cube-cbrt10.6
Applied times-frac8.0
rmApplied div-inv8.1
if -3.8379120371637104e-143 < t < -1.0344055968847788e-306Initial program 27.5
rmApplied flip-+34.8
Applied frac-add34.9
Applied associate-/r/36.9
Simplified36.9
if -1.0344055968847788e-306 < t Initial program 16.3
rmApplied add-cube-cbrt16.5
Applied times-frac16.3
rmApplied add-cube-cbrt16.3
Applied times-frac14.8
rmApplied add-cube-cbrt14.8
Applied cbrt-prod14.8
Applied *-un-lft-identity14.8
Applied times-frac14.9
Applied associate-*r*14.8
Simplified14.8
rmApplied add-sqr-sqrt14.9
Applied cbrt-prod15.0
Applied add-cube-cbrt15.0
Applied times-frac15.0
Applied associate-*r*14.3
Final simplification15.0
herbie shell --seed 2019156
(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))))