\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} \le -1.485966962889639314182950872628569480956 \cdot 10^{259} \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 9.56574528958459179758686821776355245136 \cdot 10^{256}\right):\\
\;\;\;\;\left(a + z\right) - b\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(x + y\right) \cdot z + \left(t + y\right) \cdot a}{\left(x + t\right) + y} + \frac{-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 r538392 = x;
double r538393 = y;
double r538394 = r538392 + r538393;
double r538395 = z;
double r538396 = r538394 * r538395;
double r538397 = t;
double r538398 = r538397 + r538393;
double r538399 = a;
double r538400 = r538398 * r538399;
double r538401 = r538396 + r538400;
double r538402 = b;
double r538403 = r538393 * r538402;
double r538404 = r538401 - r538403;
double r538405 = r538392 + r538397;
double r538406 = r538405 + r538393;
double r538407 = r538404 / r538406;
return r538407;
}
double f(double x, double y, double z, double t, double a, double b) {
double r538408 = x;
double r538409 = y;
double r538410 = r538408 + r538409;
double r538411 = z;
double r538412 = r538410 * r538411;
double r538413 = t;
double r538414 = r538413 + r538409;
double r538415 = a;
double r538416 = r538414 * r538415;
double r538417 = r538412 + r538416;
double r538418 = b;
double r538419 = r538409 * r538418;
double r538420 = r538417 - r538419;
double r538421 = r538408 + r538413;
double r538422 = r538421 + r538409;
double r538423 = r538420 / r538422;
double r538424 = -1.4859669628896393e+259;
bool r538425 = r538423 <= r538424;
double r538426 = 9.565745289584592e+256;
bool r538427 = r538423 <= r538426;
double r538428 = !r538427;
bool r538429 = r538425 || r538428;
double r538430 = r538415 + r538411;
double r538431 = r538430 - r538418;
double r538432 = r538417 / r538422;
double r538433 = -r538419;
double r538434 = r538433 / r538422;
double r538435 = r538432 + r538434;
double r538436 = r538429 ? r538431 : r538435;
return r538436;
}




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.0 |
|---|---|
| Target | 11.3 |
| Herbie | 7.7 |
if (/ (- (+ (* (+ x y) z) (* (+ t y) a)) (* y b)) (+ (+ x t) y)) < -1.4859669628896393e+259 or 9.565745289584592e+256 < (/ (- (+ (* (+ x y) z) (* (+ t y) a)) (* y b)) (+ (+ x t) y)) Initial program 60.5
rmApplied clear-num60.5
Taylor expanded around 0 17.1
if -1.4859669628896393e+259 < (/ (- (+ (* (+ x y) z) (* (+ t y) a)) (* y b)) (+ (+ x t) y)) < 9.565745289584592e+256Initial program 0.3
rmApplied clear-num0.4
rmApplied div-inv0.5
Applied add-cube-cbrt0.5
Applied times-frac0.5
Simplified0.5
Simplified0.4
rmApplied sub-neg0.4
Applied distribute-lft-in0.4
Simplified0.3
Simplified0.3
Final simplification7.7
herbie shell --seed 2019304
(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)))