\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)}\begin{array}{l}
\mathbf{if}\;z \le -7.798985094449376949568764879566821686662 \cdot 10^{118}:\\
\;\;\;\;\frac{t}{b} - \frac{a}{b}\\
\mathbf{elif}\;z \le 9.172440773991011001801781464965121024877 \cdot 10^{81}:\\
\;\;\;\;\frac{1}{\frac{\mathsf{fma}\left(b - y, z, y\right)}{\mathsf{fma}\left(y, x, z \cdot \left(t - a\right)\right)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{t}{b} - \frac{a}{b}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r28519905 = x;
double r28519906 = y;
double r28519907 = r28519905 * r28519906;
double r28519908 = z;
double r28519909 = t;
double r28519910 = a;
double r28519911 = r28519909 - r28519910;
double r28519912 = r28519908 * r28519911;
double r28519913 = r28519907 + r28519912;
double r28519914 = b;
double r28519915 = r28519914 - r28519906;
double r28519916 = r28519908 * r28519915;
double r28519917 = r28519906 + r28519916;
double r28519918 = r28519913 / r28519917;
return r28519918;
}
double f(double x, double y, double z, double t, double a, double b) {
double r28519919 = z;
double r28519920 = -7.798985094449377e+118;
bool r28519921 = r28519919 <= r28519920;
double r28519922 = t;
double r28519923 = b;
double r28519924 = r28519922 / r28519923;
double r28519925 = a;
double r28519926 = r28519925 / r28519923;
double r28519927 = r28519924 - r28519926;
double r28519928 = 9.172440773991011e+81;
bool r28519929 = r28519919 <= r28519928;
double r28519930 = 1.0;
double r28519931 = y;
double r28519932 = r28519923 - r28519931;
double r28519933 = fma(r28519932, r28519919, r28519931);
double r28519934 = x;
double r28519935 = r28519922 - r28519925;
double r28519936 = r28519919 * r28519935;
double r28519937 = fma(r28519931, r28519934, r28519936);
double r28519938 = r28519933 / r28519937;
double r28519939 = r28519930 / r28519938;
double r28519940 = r28519929 ? r28519939 : r28519927;
double r28519941 = r28519921 ? r28519927 : r28519940;
return r28519941;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
| Original | 23.5 |
|---|---|
| Target | 18.0 |
| Herbie | 19.2 |
if z < -7.798985094449377e+118 or 9.172440773991011e+81 < z Initial program 46.8
rmApplied clear-num46.8
Simplified46.8
Taylor expanded around inf 33.6
if -7.798985094449377e+118 < z < 9.172440773991011e+81Initial program 11.8
rmApplied clear-num11.9
Simplified11.9
Final simplification19.2
herbie shell --seed 2019170 +o rules:numerics
(FPCore (x y z t a b)
:name "Development.Shake.Progress:decay from shake-0.15.5"
:herbie-target
(- (/ (+ (* z t) (* y x)) (+ y (* z (- b y)))) (/ a (+ (- b y) (/ y z))))
(/ (+ (* x y) (* z (- t a))) (+ y (* z (- b y)))))