\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.12340553540398282974395246595228861055 \cdot 10^{66}:\\
\;\;\;\;\left(a + z\right) - b\\
\mathbf{elif}\;y \le -1.472184673179024906311519965673653353206 \cdot 10^{-191}:\\
\;\;\;\;\left(a \cdot \left(y + t\right) + \left(\left(x + y\right) \cdot z - y \cdot b\right)\right) \cdot \frac{1}{x + \left(y + t\right)}\\
\mathbf{elif}\;y \le -1.624020243223143567434005918463591296748 \cdot 10^{-228}:\\
\;\;\;\;a\\
\mathbf{elif}\;y \le 0.001960496957535617142814876601164542080369:\\
\;\;\;\;\left(a \cdot \left(y + t\right) + \left(\left(x + y\right) \cdot z - y \cdot b\right)\right) \cdot \frac{1}{x + \left(y + t\right)}\\
\mathbf{else}:\\
\;\;\;\;\left(a + z\right) - b\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r44720540 = x;
double r44720541 = y;
double r44720542 = r44720540 + r44720541;
double r44720543 = z;
double r44720544 = r44720542 * r44720543;
double r44720545 = t;
double r44720546 = r44720545 + r44720541;
double r44720547 = a;
double r44720548 = r44720546 * r44720547;
double r44720549 = r44720544 + r44720548;
double r44720550 = b;
double r44720551 = r44720541 * r44720550;
double r44720552 = r44720549 - r44720551;
double r44720553 = r44720540 + r44720545;
double r44720554 = r44720553 + r44720541;
double r44720555 = r44720552 / r44720554;
return r44720555;
}
double f(double x, double y, double z, double t, double a, double b) {
double r44720556 = y;
double r44720557 = -1.1234055354039828e+66;
bool r44720558 = r44720556 <= r44720557;
double r44720559 = a;
double r44720560 = z;
double r44720561 = r44720559 + r44720560;
double r44720562 = b;
double r44720563 = r44720561 - r44720562;
double r44720564 = -1.472184673179025e-191;
bool r44720565 = r44720556 <= r44720564;
double r44720566 = t;
double r44720567 = r44720556 + r44720566;
double r44720568 = r44720559 * r44720567;
double r44720569 = x;
double r44720570 = r44720569 + r44720556;
double r44720571 = r44720570 * r44720560;
double r44720572 = r44720556 * r44720562;
double r44720573 = r44720571 - r44720572;
double r44720574 = r44720568 + r44720573;
double r44720575 = 1.0;
double r44720576 = r44720569 + r44720567;
double r44720577 = r44720575 / r44720576;
double r44720578 = r44720574 * r44720577;
double r44720579 = -1.6240202432231436e-228;
bool r44720580 = r44720556 <= r44720579;
double r44720581 = 0.001960496957535617;
bool r44720582 = r44720556 <= r44720581;
double r44720583 = r44720582 ? r44720578 : r44720563;
double r44720584 = r44720580 ? r44720559 : r44720583;
double r44720585 = r44720565 ? r44720578 : r44720584;
double r44720586 = r44720558 ? r44720563 : r44720585;
return r44720586;
}




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.6 |
| Herbie | 17.6 |
if y < -1.1234055354039828e+66 or 0.001960496957535617 < y Initial program 39.5
Simplified39.5
Taylor expanded around inf 16.5
if -1.1234055354039828e+66 < y < -1.472184673179025e-191 or -1.6240202432231436e-228 < y < 0.001960496957535617Initial program 16.8
Simplified16.8
rmApplied div-inv16.9
if -1.472184673179025e-191 < y < -1.6240202432231436e-228Initial program 17.9
Simplified17.9
rmApplied clear-num18.0
Taylor expanded around 0 41.8
Final simplification17.6
herbie shell --seed 2019171
(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)))