\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)}\begin{array}{l}
\mathbf{if}\;z \le -1.304579087607779 \cdot 10^{+161}:\\
\;\;\;\;\frac{t}{b} - \frac{a}{b}\\
\mathbf{elif}\;z \le 5.613870853735117 \cdot 10^{+120}:\\
\;\;\;\;\frac{\mathsf{fma}\left(z, t - a, y \cdot x\right)}{\mathsf{fma}\left(b - y, z, y\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 r34429847 = x;
double r34429848 = y;
double r34429849 = r34429847 * r34429848;
double r34429850 = z;
double r34429851 = t;
double r34429852 = a;
double r34429853 = r34429851 - r34429852;
double r34429854 = r34429850 * r34429853;
double r34429855 = r34429849 + r34429854;
double r34429856 = b;
double r34429857 = r34429856 - r34429848;
double r34429858 = r34429850 * r34429857;
double r34429859 = r34429848 + r34429858;
double r34429860 = r34429855 / r34429859;
return r34429860;
}
double f(double x, double y, double z, double t, double a, double b) {
double r34429861 = z;
double r34429862 = -1.304579087607779e+161;
bool r34429863 = r34429861 <= r34429862;
double r34429864 = t;
double r34429865 = b;
double r34429866 = r34429864 / r34429865;
double r34429867 = a;
double r34429868 = r34429867 / r34429865;
double r34429869 = r34429866 - r34429868;
double r34429870 = 5.613870853735117e+120;
bool r34429871 = r34429861 <= r34429870;
double r34429872 = r34429864 - r34429867;
double r34429873 = y;
double r34429874 = x;
double r34429875 = r34429873 * r34429874;
double r34429876 = fma(r34429861, r34429872, r34429875);
double r34429877 = r34429865 - r34429873;
double r34429878 = fma(r34429877, r34429861, r34429873);
double r34429879 = r34429876 / r34429878;
double r34429880 = r34429871 ? r34429879 : r34429869;
double r34429881 = r34429863 ? r34429869 : r34429880;
return r34429881;
}




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.6 |
|---|---|
| Target | 18.6 |
| Herbie | 19.3 |
if z < -1.304579087607779e+161 or 5.613870853735117e+120 < z Initial program 49.1
Simplified49.1
rmApplied clear-num49.1
Taylor expanded around inf 32.7
if -1.304579087607779e+161 < z < 5.613870853735117e+120Initial program 14.5
Simplified14.5
Final simplification19.3
herbie shell --seed 2019165 +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)))))