\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.71025579622562754 \cdot 10^{72} \lor \neg \left(z \le 7.73695011696723767 \cdot 10^{43}\right):\\
\;\;\;\;\frac{t}{b} - \frac{a}{b}\\
\mathbf{else}:\\
\;\;\;\;\frac{\mathsf{fma}\left(x, y, z \cdot \left(t - a\right)\right)}{\mathsf{fma}\left(z, b - y, y\right)}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r800752 = x;
double r800753 = y;
double r800754 = r800752 * r800753;
double r800755 = z;
double r800756 = t;
double r800757 = a;
double r800758 = r800756 - r800757;
double r800759 = r800755 * r800758;
double r800760 = r800754 + r800759;
double r800761 = b;
double r800762 = r800761 - r800753;
double r800763 = r800755 * r800762;
double r800764 = r800753 + r800763;
double r800765 = r800760 / r800764;
return r800765;
}
double f(double x, double y, double z, double t, double a, double b) {
double r800766 = z;
double r800767 = -7.710255796225628e+72;
bool r800768 = r800766 <= r800767;
double r800769 = 7.736950116967238e+43;
bool r800770 = r800766 <= r800769;
double r800771 = !r800770;
bool r800772 = r800768 || r800771;
double r800773 = t;
double r800774 = b;
double r800775 = r800773 / r800774;
double r800776 = a;
double r800777 = r800776 / r800774;
double r800778 = r800775 - r800777;
double r800779 = x;
double r800780 = y;
double r800781 = r800773 - r800776;
double r800782 = r800766 * r800781;
double r800783 = fma(r800779, r800780, r800782);
double r800784 = r800774 - r800780;
double r800785 = fma(r800766, r800784, r800780);
double r800786 = r800783 / r800785;
double r800787 = r800772 ? r800778 : r800786;
return r800787;
}




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.1 |
| Herbie | 20.4 |
if z < -7.710255796225628e+72 or 7.736950116967238e+43 < z Initial program 42.5
Simplified42.5
rmApplied clear-num42.6
Simplified42.6
Taylor expanded around inf 34.9
if -7.710255796225628e+72 < z < 7.736950116967238e+43Initial program 10.6
Simplified10.6
Final simplification20.4
herbie shell --seed 2020046 +o rules:numerics
(FPCore (x y z t a b)
:name "Development.Shake.Progress:decay from shake-0.15.5"
:precision binary64
:herbie-target
(- (/ (+ (* z t) (* y x)) (+ y (* z (- b y)))) (/ a (+ (- b y) (/ y z))))
(/ (+ (* x y) (* z (- t a))) (+ y (* z (- b y)))))