\frac{x - y \cdot z}{t - a \cdot z}\begin{array}{l}
\mathbf{if}\;z \le -3.7911710689350596 \cdot 10^{47}:\\
\;\;\;\;\frac{x}{t - a \cdot z} - \frac{1}{\frac{\frac{t}{z} - a}{y}}\\
\mathbf{elif}\;z \le 99120762.3127832562:\\
\;\;\;\;\frac{x}{t - a \cdot z} - \frac{1}{t - a \cdot z} \cdot \left(y \cdot z\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{x}{\sqrt[3]{t - a \cdot z} \cdot \sqrt[3]{t - a \cdot z}}}{\sqrt[3]{t - a \cdot z}} - \frac{y}{\frac{t}{z} - a}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r775877 = x;
double r775878 = y;
double r775879 = z;
double r775880 = r775878 * r775879;
double r775881 = r775877 - r775880;
double r775882 = t;
double r775883 = a;
double r775884 = r775883 * r775879;
double r775885 = r775882 - r775884;
double r775886 = r775881 / r775885;
return r775886;
}
double f(double x, double y, double z, double t, double a) {
double r775887 = z;
double r775888 = -3.79117106893506e+47;
bool r775889 = r775887 <= r775888;
double r775890 = x;
double r775891 = t;
double r775892 = a;
double r775893 = r775892 * r775887;
double r775894 = r775891 - r775893;
double r775895 = r775890 / r775894;
double r775896 = 1.0;
double r775897 = r775891 / r775887;
double r775898 = r775897 - r775892;
double r775899 = y;
double r775900 = r775898 / r775899;
double r775901 = r775896 / r775900;
double r775902 = r775895 - r775901;
double r775903 = 99120762.31278326;
bool r775904 = r775887 <= r775903;
double r775905 = r775896 / r775894;
double r775906 = r775899 * r775887;
double r775907 = r775905 * r775906;
double r775908 = r775895 - r775907;
double r775909 = cbrt(r775894);
double r775910 = r775909 * r775909;
double r775911 = r775890 / r775910;
double r775912 = r775911 / r775909;
double r775913 = r775899 / r775898;
double r775914 = r775912 - r775913;
double r775915 = r775904 ? r775908 : r775914;
double r775916 = r775889 ? r775902 : r775915;
return r775916;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.7 |
|---|---|
| Target | 1.7 |
| Herbie | 1.7 |
if z < -3.79117106893506e+47Initial program 25.3
rmApplied div-sub25.3
rmApplied associate-/l*16.7
rmApplied div-sub16.7
Simplified3.3
rmApplied clear-num3.7
if -3.79117106893506e+47 < z < 99120762.31278326Initial program 0.3
rmApplied div-sub0.3
rmApplied associate-/l*2.9
rmApplied div-inv2.9
Applied *-un-lft-identity2.9
Applied times-frac0.4
Simplified0.3
if 99120762.31278326 < z Initial program 21.5
rmApplied div-sub21.5
rmApplied associate-/l*13.4
rmApplied div-sub13.4
Simplified2.9
rmApplied add-cube-cbrt3.1
Applied associate-/r*3.1
Final simplification1.7
herbie shell --seed 2020027
(FPCore (x y z t a)
:name "Diagrams.Solve.Tridiagonal:solveTriDiagonal from diagrams-solve-0.1, A"
:precision binary64
:herbie-target
(if (< z -32113435955957344) (- (/ x (- t (* a z))) (/ y (- (/ t z) a))) (if (< z 3.5139522372978296e-86) (* (- x (* y z)) (/ 1 (- t (* a z)))) (- (/ x (- t (* a z))) (/ y (- (/ t z) a)))))
(/ (- x (* y z)) (- t (* a z))))