\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.5789142602105122 \cdot 10^{46} \lor \neg \left(y \le 3.00522161855546254 \cdot 10^{112}\right):\\
\;\;\;\;\left(a + z\right) - b\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(x + y\right) \cdot z + \left(t + y\right) \cdot a\right) - y \cdot b\right) \cdot \frac{1}{\left(x + t\right) + y}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r951262 = x;
double r951263 = y;
double r951264 = r951262 + r951263;
double r951265 = z;
double r951266 = r951264 * r951265;
double r951267 = t;
double r951268 = r951267 + r951263;
double r951269 = a;
double r951270 = r951268 * r951269;
double r951271 = r951266 + r951270;
double r951272 = b;
double r951273 = r951263 * r951272;
double r951274 = r951271 - r951273;
double r951275 = r951262 + r951267;
double r951276 = r951275 + r951263;
double r951277 = r951274 / r951276;
return r951277;
}
double f(double x, double y, double z, double t, double a, double b) {
double r951278 = y;
double r951279 = -1.5789142602105122e+46;
bool r951280 = r951278 <= r951279;
double r951281 = 3.0052216185554625e+112;
bool r951282 = r951278 <= r951281;
double r951283 = !r951282;
bool r951284 = r951280 || r951283;
double r951285 = a;
double r951286 = z;
double r951287 = r951285 + r951286;
double r951288 = b;
double r951289 = r951287 - r951288;
double r951290 = x;
double r951291 = r951290 + r951278;
double r951292 = r951291 * r951286;
double r951293 = t;
double r951294 = r951293 + r951278;
double r951295 = r951294 * r951285;
double r951296 = r951292 + r951295;
double r951297 = r951278 * r951288;
double r951298 = r951296 - r951297;
double r951299 = 1.0;
double r951300 = r951290 + r951293;
double r951301 = r951300 + r951278;
double r951302 = r951299 / r951301;
double r951303 = r951298 * r951302;
double r951304 = r951284 ? r951289 : r951303;
return r951304;
}




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.9 |
|---|---|
| Target | 11.4 |
| Herbie | 16.0 |
if y < -1.5789142602105122e+46 or 3.0052216185554625e+112 < y Initial program 43.7
rmApplied clear-num43.8
Simplified43.8
Taylor expanded around 0 14.3
if -1.5789142602105122e+46 < y < 3.0052216185554625e+112Initial program 16.9
rmApplied div-inv17.0
Final simplification16.0
herbie shell --seed 2020057 +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)))