\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 -1.967499584174674248364030486477827237773 \cdot 10^{140}:\\
\;\;\;\;\left(a + z\right) - b\\
\mathbf{elif}\;y \le -2.073956642809603980847998976244338730115 \cdot 10^{98}:\\
\;\;\;\;\frac{1}{\frac{\left(t + y\right) + x}{\left(\left(y + x\right) \cdot z + a \cdot \left(t + y\right)\right) - y \cdot b}}\\
\mathbf{elif}\;y \le -2.310983057827040438914549423634512128913 \cdot 10^{48}:\\
\;\;\;\;\left(a + z\right) - b\\
\mathbf{elif}\;y \le 3.386128128459719612981223918062857795656 \cdot 10^{60}:\\
\;\;\;\;\frac{1}{\frac{\left(t + y\right) + x}{\left(\left(y + x\right) \cdot z + a \cdot \left(t + y\right)\right) - y \cdot b}}\\
\mathbf{else}:\\
\;\;\;\;\left(a + z\right) - b\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r40667948 = x;
double r40667949 = y;
double r40667950 = r40667948 + r40667949;
double r40667951 = z;
double r40667952 = r40667950 * r40667951;
double r40667953 = t;
double r40667954 = r40667953 + r40667949;
double r40667955 = a;
double r40667956 = r40667954 * r40667955;
double r40667957 = r40667952 + r40667956;
double r40667958 = b;
double r40667959 = r40667949 * r40667958;
double r40667960 = r40667957 - r40667959;
double r40667961 = r40667948 + r40667953;
double r40667962 = r40667961 + r40667949;
double r40667963 = r40667960 / r40667962;
return r40667963;
}
double f(double x, double y, double z, double t, double a, double b) {
double r40667964 = y;
double r40667965 = -1.9674995841746742e+140;
bool r40667966 = r40667964 <= r40667965;
double r40667967 = a;
double r40667968 = z;
double r40667969 = r40667967 + r40667968;
double r40667970 = b;
double r40667971 = r40667969 - r40667970;
double r40667972 = -2.073956642809604e+98;
bool r40667973 = r40667964 <= r40667972;
double r40667974 = 1.0;
double r40667975 = t;
double r40667976 = r40667975 + r40667964;
double r40667977 = x;
double r40667978 = r40667976 + r40667977;
double r40667979 = r40667964 + r40667977;
double r40667980 = r40667979 * r40667968;
double r40667981 = r40667967 * r40667976;
double r40667982 = r40667980 + r40667981;
double r40667983 = r40667964 * r40667970;
double r40667984 = r40667982 - r40667983;
double r40667985 = r40667978 / r40667984;
double r40667986 = r40667974 / r40667985;
double r40667987 = -2.3109830578270404e+48;
bool r40667988 = r40667964 <= r40667987;
double r40667989 = 3.3861281284597196e+60;
bool r40667990 = r40667964 <= r40667989;
double r40667991 = r40667990 ? r40667986 : r40667971;
double r40667992 = r40667988 ? r40667971 : r40667991;
double r40667993 = r40667973 ? r40667986 : r40667992;
double r40667994 = r40667966 ? r40667971 : r40667993;
return r40667994;
}




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.8 |
|---|---|
| Target | 11.1 |
| Herbie | 16.0 |
if y < -1.9674995841746742e+140 or -2.073956642809604e+98 < y < -2.3109830578270404e+48 or 3.3861281284597196e+60 < y Initial program 42.8
Simplified42.8
Taylor expanded around inf 14.1
if -1.9674995841746742e+140 < y < -2.073956642809604e+98 or -2.3109830578270404e+48 < y < 3.3861281284597196e+60Initial program 17.1
Simplified17.1
rmApplied clear-num17.2
Final simplification16.0
herbie shell --seed 2019179
(FPCore (x y z t a b)
:name "AI.Clustering.Hierarchical.Internal:ward from clustering-0.2.1"
: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.0 (/ (+ (+ 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)))