\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\begin{array}{l}
\mathbf{if}\;z \le -5.0213726882368712246896067821148316655 \cdot 10^{81}:\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\
\mathbf{elif}\;z \le 2.653747744881045351380565842467581880116 \cdot 10^{131}:\\
\;\;\;\;\frac{x + \left(y \cdot z - x\right) \cdot \frac{1}{t \cdot z - x}}{x + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\
\end{array}double f(double x, double y, double z, double t) {
double r27832927 = x;
double r27832928 = y;
double r27832929 = z;
double r27832930 = r27832928 * r27832929;
double r27832931 = r27832930 - r27832927;
double r27832932 = t;
double r27832933 = r27832932 * r27832929;
double r27832934 = r27832933 - r27832927;
double r27832935 = r27832931 / r27832934;
double r27832936 = r27832927 + r27832935;
double r27832937 = 1.0;
double r27832938 = r27832927 + r27832937;
double r27832939 = r27832936 / r27832938;
return r27832939;
}
double f(double x, double y, double z, double t) {
double r27832940 = z;
double r27832941 = -5.021372688236871e+81;
bool r27832942 = r27832940 <= r27832941;
double r27832943 = x;
double r27832944 = y;
double r27832945 = t;
double r27832946 = r27832944 / r27832945;
double r27832947 = r27832943 + r27832946;
double r27832948 = 1.0;
double r27832949 = r27832943 + r27832948;
double r27832950 = r27832947 / r27832949;
double r27832951 = 2.6537477448810454e+131;
bool r27832952 = r27832940 <= r27832951;
double r27832953 = r27832944 * r27832940;
double r27832954 = r27832953 - r27832943;
double r27832955 = 1.0;
double r27832956 = r27832945 * r27832940;
double r27832957 = r27832956 - r27832943;
double r27832958 = r27832955 / r27832957;
double r27832959 = r27832954 * r27832958;
double r27832960 = r27832943 + r27832959;
double r27832961 = r27832960 / r27832949;
double r27832962 = r27832952 ? r27832961 : r27832950;
double r27832963 = r27832942 ? r27832950 : r27832962;
return r27832963;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.3 |
|---|---|
| Target | 0.4 |
| Herbie | 3.7 |
if z < -5.021372688236871e+81 or 2.6537477448810454e+131 < z Initial program 19.7
Taylor expanded around inf 8.1
if -5.021372688236871e+81 < z < 2.6537477448810454e+131Initial program 1.6
rmApplied div-inv1.7
Final simplification3.7
herbie shell --seed 2019179 +o rules:numerics
(FPCore (x y z t)
:name "Diagrams.Trail:splitAtParam from diagrams-lib-1.3.0.3, A"
:herbie-target
(/ (+ x (- (/ y (- t (/ x z))) (/ x (- (* t z) x)))) (+ x 1.0))
(/ (+ x (/ (- (* y z) x) (- (* t z) x))) (+ x 1.0)))