\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}\;z \le -1.061610428241891645480708199708681011513 \cdot 10^{213}:\\
\;\;\;\;z\\
\mathbf{elif}\;z \le 1.719219137598275093556354895685157553131 \cdot 10^{166}:\\
\;\;\;\;\frac{\left(x + y\right) \cdot z + \left(t + y\right) \cdot a}{\left(x + t\right) + y} - y \cdot \frac{b}{\left(x + t\right) + y}\\
\mathbf{else}:\\
\;\;\;\;z\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r577976 = x;
double r577977 = y;
double r577978 = r577976 + r577977;
double r577979 = z;
double r577980 = r577978 * r577979;
double r577981 = t;
double r577982 = r577981 + r577977;
double r577983 = a;
double r577984 = r577982 * r577983;
double r577985 = r577980 + r577984;
double r577986 = b;
double r577987 = r577977 * r577986;
double r577988 = r577985 - r577987;
double r577989 = r577976 + r577981;
double r577990 = r577989 + r577977;
double r577991 = r577988 / r577990;
return r577991;
}
double f(double x, double y, double z, double t, double a, double b) {
double r577992 = z;
double r577993 = -1.0616104282418916e+213;
bool r577994 = r577992 <= r577993;
double r577995 = 1.719219137598275e+166;
bool r577996 = r577992 <= r577995;
double r577997 = x;
double r577998 = y;
double r577999 = r577997 + r577998;
double r578000 = r577999 * r577992;
double r578001 = t;
double r578002 = r578001 + r577998;
double r578003 = a;
double r578004 = r578002 * r578003;
double r578005 = r578000 + r578004;
double r578006 = r577997 + r578001;
double r578007 = r578006 + r577998;
double r578008 = r578005 / r578007;
double r578009 = b;
double r578010 = r578009 / r578007;
double r578011 = r577998 * r578010;
double r578012 = r578008 - r578011;
double r578013 = r577996 ? r578012 : r577992;
double r578014 = r577994 ? r577992 : r578013;
return r578014;
}




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.4 |
|---|---|
| Target | 11.2 |
| Herbie | 20.7 |
if z < -1.0616104282418916e+213 or 1.719219137598275e+166 < z Initial program 43.8
Taylor expanded around inf 25.6
if -1.0616104282418916e+213 < z < 1.719219137598275e+166Initial program 22.3
rmApplied add-cube-cbrt22.9
rmApplied div-sub22.9
Simplified22.3
rmApplied *-un-lft-identity22.3
Applied times-frac19.6
Simplified19.6
Final simplification20.7
herbie shell --seed 2019325
(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)))