\frac{\left(\left(x + y\right) \cdot z + \left(t + y\right) \cdot a\right) - y \cdot b}{\left(x + t\right) + y}\begin{array}{l}
\mathbf{if}\;y \le -4.01366251018719627563554580206231643302 \cdot 10^{58} \lor \neg \left(y \le 2.570868954028346230983943961068138861492 \cdot 10^{-7}\right):\\
\;\;\;\;\left(a + z\right) - b\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\frac{\left(x + t\right) + y}{\left(\left(x + y\right) \cdot z + \left(t + y\right) \cdot a\right) - y \cdot b}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r916730 = x;
double r916731 = y;
double r916732 = r916730 + r916731;
double r916733 = z;
double r916734 = r916732 * r916733;
double r916735 = t;
double r916736 = r916735 + r916731;
double r916737 = a;
double r916738 = r916736 * r916737;
double r916739 = r916734 + r916738;
double r916740 = b;
double r916741 = r916731 * r916740;
double r916742 = r916739 - r916741;
double r916743 = r916730 + r916735;
double r916744 = r916743 + r916731;
double r916745 = r916742 / r916744;
return r916745;
}
double f(double x, double y, double z, double t, double a, double b) {
double r916746 = y;
double r916747 = -4.013662510187196e+58;
bool r916748 = r916746 <= r916747;
double r916749 = 2.570868954028346e-07;
bool r916750 = r916746 <= r916749;
double r916751 = !r916750;
bool r916752 = r916748 || r916751;
double r916753 = a;
double r916754 = z;
double r916755 = r916753 + r916754;
double r916756 = b;
double r916757 = r916755 - r916756;
double r916758 = 1.0;
double r916759 = x;
double r916760 = t;
double r916761 = r916759 + r916760;
double r916762 = r916761 + r916746;
double r916763 = r916759 + r916746;
double r916764 = r916763 * r916754;
double r916765 = r916760 + r916746;
double r916766 = r916765 * r916753;
double r916767 = r916764 + r916766;
double r916768 = r916746 * r916756;
double r916769 = r916767 - r916768;
double r916770 = r916762 / r916769;
double r916771 = r916758 / r916770;
double r916772 = r916752 ? r916757 : r916771;
return r916772;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
Results
| Original | 26.2 |
|---|---|
| Target | 11.3 |
| Herbie | 16.3 |
if y < -4.013662510187196e+58 or 2.570868954028346e-07 < y Initial program 39.3
rmApplied clear-num39.4
Taylor expanded around 0 17.5
if -4.013662510187196e+58 < y < 2.570868954028346e-07Initial program 15.1
rmApplied clear-num15.2
Final simplification16.3
herbie shell --seed 2019354
(FPCore (x y z t a b)
:name "AI.Clustering.Hierarchical.Internal:ward from clustering-0.2.1"
:precision binary64
:herbie-target
(if (< (/ (- (+ (* (+ x y) z) (* (+ t y) a)) (* y b)) (+ (+ x t) y)) -3.5813117084150564e+153) (- (+ z a) b) (if (< (/ (- (+ (* (+ x y) z) (* (+ t y) a)) (* y b)) (+ (+ x t) y)) 1.2285964308315609e+82) (/ 1 (/ (+ (+ x t) y) (- (+ (* (+ x y) z) (* (+ t y) a)) (* y b)))) (- (+ z a) b)))
(/ (- (+ (* (+ x y) z) (* (+ t y) a)) (* y b)) (+ (+ x t) y)))