\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}\;\frac{\left(\left(x + y\right) \cdot z + \left(t + y\right) \cdot a\right) - y \cdot b}{\left(x + t\right) + y} = -\infty \lor \neg \left(\frac{\left(\left(x + y\right) \cdot z + \left(t + y\right) \cdot a\right) - y \cdot b}{\left(x + t\right) + y} \le 2.28361267216235624 \cdot 10^{241}\right):\\
\;\;\;\;\left(a + z\right) - b\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(\left(x + y\right) \cdot z + \left(t + y\right) \cdot a\right) - y \cdot b}{\left(x + t\right) + y}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r959263 = x;
double r959264 = y;
double r959265 = r959263 + r959264;
double r959266 = z;
double r959267 = r959265 * r959266;
double r959268 = t;
double r959269 = r959268 + r959264;
double r959270 = a;
double r959271 = r959269 * r959270;
double r959272 = r959267 + r959271;
double r959273 = b;
double r959274 = r959264 * r959273;
double r959275 = r959272 - r959274;
double r959276 = r959263 + r959268;
double r959277 = r959276 + r959264;
double r959278 = r959275 / r959277;
return r959278;
}
double f(double x, double y, double z, double t, double a, double b) {
double r959279 = x;
double r959280 = y;
double r959281 = r959279 + r959280;
double r959282 = z;
double r959283 = r959281 * r959282;
double r959284 = t;
double r959285 = r959284 + r959280;
double r959286 = a;
double r959287 = r959285 * r959286;
double r959288 = r959283 + r959287;
double r959289 = b;
double r959290 = r959280 * r959289;
double r959291 = r959288 - r959290;
double r959292 = r959279 + r959284;
double r959293 = r959292 + r959280;
double r959294 = r959291 / r959293;
double r959295 = -inf.0;
bool r959296 = r959294 <= r959295;
double r959297 = 2.2836126721623562e+241;
bool r959298 = r959294 <= r959297;
double r959299 = !r959298;
bool r959300 = r959296 || r959299;
double r959301 = r959286 + r959282;
double r959302 = r959301 - r959289;
double r959303 = r959300 ? r959302 : r959294;
return r959303;
}




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 | 27.1 |
|---|---|
| Target | 11.5 |
| Herbie | 7.9 |
if (/ (- (+ (* (+ x y) z) (* (+ t y) a)) (* y b)) (+ (+ x t) y)) < -inf.0 or 2.2836126721623562e+241 < (/ (- (+ (* (+ x y) z) (* (+ t y) a)) (* y b)) (+ (+ x t) y)) Initial program 61.7
rmApplied clear-num61.7
Simplified61.7
Taylor expanded around 0 17.8
if -inf.0 < (/ (- (+ (* (+ x y) z) (* (+ t y) a)) (* y b)) (+ (+ x t) y)) < 2.2836126721623562e+241Initial program 0.3
Final simplification7.9
herbie shell --seed 2020046 +o rules:numerics
(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)))