\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\begin{array}{l}
\mathbf{if}\;t \le -2.697433997227182860846341323864432125566 \cdot 10^{75}:\\
\;\;\;\;\frac{\frac{x + \frac{y}{t} \cdot z}{\sqrt[3]{\left(a + 1\right) + y \cdot \frac{b}{t}} \cdot \sqrt[3]{\left(a + 1\right) + y \cdot \frac{b}{t}}}}{\sqrt[3]{\left(a + 1\right) + y \cdot \frac{b}{t}}}\\
\mathbf{elif}\;t \le 1.625660671319587146448715347668017899923 \cdot 10^{-15}:\\
\;\;\;\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{1}{\frac{t}{y \cdot b}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\frac{\left(a + 1\right) + y \cdot \frac{b}{t}}{x + \frac{y}{\frac{t}{z}}}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r455824 = x;
double r455825 = y;
double r455826 = z;
double r455827 = r455825 * r455826;
double r455828 = t;
double r455829 = r455827 / r455828;
double r455830 = r455824 + r455829;
double r455831 = a;
double r455832 = 1.0;
double r455833 = r455831 + r455832;
double r455834 = b;
double r455835 = r455825 * r455834;
double r455836 = r455835 / r455828;
double r455837 = r455833 + r455836;
double r455838 = r455830 / r455837;
return r455838;
}
double f(double x, double y, double z, double t, double a, double b) {
double r455839 = t;
double r455840 = -2.697433997227183e+75;
bool r455841 = r455839 <= r455840;
double r455842 = x;
double r455843 = y;
double r455844 = r455843 / r455839;
double r455845 = z;
double r455846 = r455844 * r455845;
double r455847 = r455842 + r455846;
double r455848 = a;
double r455849 = 1.0;
double r455850 = r455848 + r455849;
double r455851 = b;
double r455852 = r455851 / r455839;
double r455853 = r455843 * r455852;
double r455854 = r455850 + r455853;
double r455855 = cbrt(r455854);
double r455856 = r455855 * r455855;
double r455857 = r455847 / r455856;
double r455858 = r455857 / r455855;
double r455859 = 1.6256606713195871e-15;
bool r455860 = r455839 <= r455859;
double r455861 = r455843 * r455845;
double r455862 = r455861 / r455839;
double r455863 = r455842 + r455862;
double r455864 = 1.0;
double r455865 = r455843 * r455851;
double r455866 = r455839 / r455865;
double r455867 = r455864 / r455866;
double r455868 = r455850 + r455867;
double r455869 = r455863 / r455868;
double r455870 = r455839 / r455845;
double r455871 = r455843 / r455870;
double r455872 = r455842 + r455871;
double r455873 = r455854 / r455872;
double r455874 = r455864 / r455873;
double r455875 = r455860 ? r455869 : r455874;
double r455876 = r455841 ? r455858 : r455875;
return r455876;
}




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.1 |
| Herbie | 13.5 |
if t < -2.697433997227183e+75Initial program 11.6
rmApplied *-un-lft-identity11.6
Applied times-frac8.3
Simplified8.3
rmApplied associate-/l*2.5
rmApplied associate-/r/2.9
rmApplied add-cube-cbrt3.4
Applied associate-/r*3.4
if -2.697433997227183e+75 < t < 1.6256606713195871e-15Initial program 21.4
rmApplied clear-num21.4
if 1.6256606713195871e-15 < t Initial program 11.8
rmApplied *-un-lft-identity11.8
Applied times-frac9.2
Simplified9.2
rmApplied associate-/l*4.7
rmApplied clear-num5.0
Final simplification13.5
herbie shell --seed 2019325
(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))))