\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}\;z \le -3.8781444753116508 \cdot 10^{76}:\\
\;\;\;\;z - \frac{y}{\left(x + t\right) + y} \cdot b\\
\mathbf{elif}\;z \le -1.331450716195835 \cdot 10^{-231}:\\
\;\;\;\;\frac{\left(x + y\right) \cdot z + \left(t + y\right) \cdot a}{\left(x + t\right) + y} - \frac{y}{\left(x + t\right) + y} \cdot b\\
\mathbf{elif}\;z \le 7.62480360204854082 \cdot 10^{-203}:\\
\;\;\;\;a - \frac{y}{\frac{\left(x + t\right) + y}{b}}\\
\mathbf{elif}\;z \le 7.11326089674771819 \cdot 10^{108}:\\
\;\;\;\;\frac{\left(x + y\right) \cdot z + \left(t + y\right) \cdot a}{\left(x + t\right) + y} - \frac{y}{\left(x + t\right) + y} \cdot b\\
\mathbf{else}:\\
\;\;\;\;z - \frac{y}{\left(x + t\right) + y} \cdot b\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r618434 = x;
double r618435 = y;
double r618436 = r618434 + r618435;
double r618437 = z;
double r618438 = r618436 * r618437;
double r618439 = t;
double r618440 = r618439 + r618435;
double r618441 = a;
double r618442 = r618440 * r618441;
double r618443 = r618438 + r618442;
double r618444 = b;
double r618445 = r618435 * r618444;
double r618446 = r618443 - r618445;
double r618447 = r618434 + r618439;
double r618448 = r618447 + r618435;
double r618449 = r618446 / r618448;
return r618449;
}
double f(double x, double y, double z, double t, double a, double b) {
double r618450 = z;
double r618451 = -3.878144475311651e+76;
bool r618452 = r618450 <= r618451;
double r618453 = y;
double r618454 = x;
double r618455 = t;
double r618456 = r618454 + r618455;
double r618457 = r618456 + r618453;
double r618458 = r618453 / r618457;
double r618459 = b;
double r618460 = r618458 * r618459;
double r618461 = r618450 - r618460;
double r618462 = -1.331450716195835e-231;
bool r618463 = r618450 <= r618462;
double r618464 = r618454 + r618453;
double r618465 = r618464 * r618450;
double r618466 = r618455 + r618453;
double r618467 = a;
double r618468 = r618466 * r618467;
double r618469 = r618465 + r618468;
double r618470 = r618469 / r618457;
double r618471 = r618470 - r618460;
double r618472 = 7.624803602048541e-203;
bool r618473 = r618450 <= r618472;
double r618474 = r618457 / r618459;
double r618475 = r618453 / r618474;
double r618476 = r618467 - r618475;
double r618477 = 7.113260896747718e+108;
bool r618478 = r618450 <= r618477;
double r618479 = r618478 ? r618471 : r618461;
double r618480 = r618473 ? r618476 : r618479;
double r618481 = r618463 ? r618471 : r618480;
double r618482 = r618452 ? r618461 : r618481;
return r618482;
}




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.3 |
| Herbie | 19.6 |
if z < -3.878144475311651e+76 or 7.113260896747718e+108 < z Initial program 40.4
rmApplied div-sub40.4
rmApplied associate-/l*40.5
rmApplied associate-/r/39.7
Taylor expanded around inf 25.4
if -3.878144475311651e+76 < z < -1.331450716195835e-231 or 7.624803602048541e-203 < z < 7.113260896747718e+108Initial program 20.3
rmApplied div-sub20.3
rmApplied associate-/l*16.6
rmApplied associate-/r/16.0
if -1.331450716195835e-231 < z < 7.624803602048541e-203Initial program 17.5
rmApplied div-sub17.5
rmApplied associate-/l*15.0
Taylor expanded around 0 18.3
Final simplification19.6
herbie shell --seed 2019199
(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)))