\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}\;a \le -9.936654150029262825244469501044403686678 \cdot 10^{95}:\\
\;\;\;\;a - \frac{y}{\left(x + t\right) + y} \cdot b\\
\mathbf{elif}\;a \le 1.208693876705612329500717088392973051565 \cdot 10^{-302}:\\
\;\;\;\;\frac{\left(x + y\right) \cdot z + \left(t + y\right) \cdot a}{\left(x + t\right) + y} - \frac{y}{\left(x + t\right) + y} \cdot b\\
\mathbf{elif}\;a \le 1.14480033436725852809181048882882069905 \cdot 10^{-209}:\\
\;\;\;\;z - \frac{y}{\frac{\left(x + t\right) + y}{b}}\\
\mathbf{elif}\;a \le 2.680679968880847721751866050236761271388 \cdot 10^{110}:\\
\;\;\;\;\frac{\left(x + y\right) \cdot z + \left(t + y\right) \cdot a}{\left(x + t\right) + y} - \frac{y}{\left(x + t\right) + y} \cdot b\\
\mathbf{else}:\\
\;\;\;\;a - \frac{y}{\left(x + t\right) + y} \cdot b\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r688938 = x;
double r688939 = y;
double r688940 = r688938 + r688939;
double r688941 = z;
double r688942 = r688940 * r688941;
double r688943 = t;
double r688944 = r688943 + r688939;
double r688945 = a;
double r688946 = r688944 * r688945;
double r688947 = r688942 + r688946;
double r688948 = b;
double r688949 = r688939 * r688948;
double r688950 = r688947 - r688949;
double r688951 = r688938 + r688943;
double r688952 = r688951 + r688939;
double r688953 = r688950 / r688952;
return r688953;
}
double f(double x, double y, double z, double t, double a, double b) {
double r688954 = a;
double r688955 = -9.936654150029263e+95;
bool r688956 = r688954 <= r688955;
double r688957 = y;
double r688958 = x;
double r688959 = t;
double r688960 = r688958 + r688959;
double r688961 = r688960 + r688957;
double r688962 = r688957 / r688961;
double r688963 = b;
double r688964 = r688962 * r688963;
double r688965 = r688954 - r688964;
double r688966 = 1.2086938767056123e-302;
bool r688967 = r688954 <= r688966;
double r688968 = r688958 + r688957;
double r688969 = z;
double r688970 = r688968 * r688969;
double r688971 = r688959 + r688957;
double r688972 = r688971 * r688954;
double r688973 = r688970 + r688972;
double r688974 = r688973 / r688961;
double r688975 = r688974 - r688964;
double r688976 = 1.1448003343672585e-209;
bool r688977 = r688954 <= r688976;
double r688978 = r688961 / r688963;
double r688979 = r688957 / r688978;
double r688980 = r688969 - r688979;
double r688981 = 2.6806799688808477e+110;
bool r688982 = r688954 <= r688981;
double r688983 = r688982 ? r688975 : r688965;
double r688984 = r688977 ? r688980 : r688983;
double r688985 = r688967 ? r688975 : r688984;
double r688986 = r688956 ? r688965 : r688985;
return r688986;
}




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.3 |
|---|---|
| Target | 11.2 |
| Herbie | 18.8 |
if a < -9.936654150029263e+95 or 2.6806799688808477e+110 < a Initial program 39.9
rmApplied div-sub39.9
rmApplied associate-/l*40.3
rmApplied associate-/r/39.4
Taylor expanded around 0 24.9
if -9.936654150029263e+95 < a < 1.2086938767056123e-302 or 1.1448003343672585e-209 < a < 2.6806799688808477e+110Initial program 19.5
rmApplied div-sub19.5
rmApplied associate-/l*16.3
rmApplied associate-/r/15.6
if 1.2086938767056123e-302 < a < 1.1448003343672585e-209Initial program 20.1
rmApplied div-sub20.1
rmApplied associate-/l*14.9
Taylor expanded around inf 17.2
Final simplification18.8
herbie shell --seed 2019306
(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.5813117084150564e153) (- (+ z a) b) (if (< (/ (- (+ (* (+ x y) z) (* (+ t y) a)) (* y b)) (+ (+ x t) y)) 1.2285964308315609e82) (/ 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)))