\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1.0}\begin{array}{l}
\mathbf{if}\;z \le -2.648599861110283 \cdot 10^{+100}:\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1.0}\\
\mathbf{elif}\;z \le 9.631568013141158 \cdot 10^{+215}:\\
\;\;\;\;\frac{x + \left(y \cdot z - x\right) \cdot \frac{1}{t \cdot z - x}}{x + 1.0}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1.0}\\
\end{array}double f(double x, double y, double z, double t) {
double r34324931 = x;
double r34324932 = y;
double r34324933 = z;
double r34324934 = r34324932 * r34324933;
double r34324935 = r34324934 - r34324931;
double r34324936 = t;
double r34324937 = r34324936 * r34324933;
double r34324938 = r34324937 - r34324931;
double r34324939 = r34324935 / r34324938;
double r34324940 = r34324931 + r34324939;
double r34324941 = 1.0;
double r34324942 = r34324931 + r34324941;
double r34324943 = r34324940 / r34324942;
return r34324943;
}
double f(double x, double y, double z, double t) {
double r34324944 = z;
double r34324945 = -2.648599861110283e+100;
bool r34324946 = r34324944 <= r34324945;
double r34324947 = x;
double r34324948 = y;
double r34324949 = t;
double r34324950 = r34324948 / r34324949;
double r34324951 = r34324947 + r34324950;
double r34324952 = 1.0;
double r34324953 = r34324947 + r34324952;
double r34324954 = r34324951 / r34324953;
double r34324955 = 9.631568013141158e+215;
bool r34324956 = r34324944 <= r34324955;
double r34324957 = r34324948 * r34324944;
double r34324958 = r34324957 - r34324947;
double r34324959 = 1.0;
double r34324960 = r34324949 * r34324944;
double r34324961 = r34324960 - r34324947;
double r34324962 = r34324959 / r34324961;
double r34324963 = r34324958 * r34324962;
double r34324964 = r34324947 + r34324963;
double r34324965 = r34324964 / r34324953;
double r34324966 = r34324956 ? r34324965 : r34324954;
double r34324967 = r34324946 ? r34324954 : r34324966;
return r34324967;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.0 |
|---|---|
| Target | 0.3 |
| Herbie | 3.8 |
if z < -2.648599861110283e+100 or 9.631568013141158e+215 < z Initial program 20.9
Taylor expanded around inf 6.8
if -2.648599861110283e+100 < z < 9.631568013141158e+215Initial program 2.9
rmApplied div-inv2.9
Final simplification3.8
herbie shell --seed 2019162 +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)))