\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}\;a \le -2.894955572700637 \cdot 10^{+43}:\\
\;\;\;\;\left(z + a\right) - b \cdot \frac{y}{\left(t + y\right) + x}\\
\mathbf{elif}\;a \le -8.234919045173266 \cdot 10^{-138}:\\
\;\;\;\;\frac{z \cdot \left(x + y\right) + \left(t + y\right) \cdot a}{\left(t + y\right) + x} - b \cdot \frac{y}{\left(t + y\right) + x}\\
\mathbf{elif}\;a \le -1.1722878479406442 \cdot 10^{-195}:\\
\;\;\;\;z - b \cdot \frac{y}{\left(t + y\right) + x}\\
\mathbf{elif}\;a \le 5.907781539963392 \cdot 10^{+58}:\\
\;\;\;\;\frac{z \cdot \left(x + y\right) + \left(t + y\right) \cdot a}{\left(t + y\right) + x} - b \cdot \frac{y}{\left(t + y\right) + x}\\
\mathbf{else}:\\
\;\;\;\;\left(z + a\right) - b \cdot \frac{y}{\left(t + y\right) + x}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r46174260 = x;
double r46174261 = y;
double r46174262 = r46174260 + r46174261;
double r46174263 = z;
double r46174264 = r46174262 * r46174263;
double r46174265 = t;
double r46174266 = r46174265 + r46174261;
double r46174267 = a;
double r46174268 = r46174266 * r46174267;
double r46174269 = r46174264 + r46174268;
double r46174270 = b;
double r46174271 = r46174261 * r46174270;
double r46174272 = r46174269 - r46174271;
double r46174273 = r46174260 + r46174265;
double r46174274 = r46174273 + r46174261;
double r46174275 = r46174272 / r46174274;
return r46174275;
}
double f(double x, double y, double z, double t, double a, double b) {
double r46174276 = a;
double r46174277 = -2.894955572700637e+43;
bool r46174278 = r46174276 <= r46174277;
double r46174279 = z;
double r46174280 = r46174279 + r46174276;
double r46174281 = b;
double r46174282 = y;
double r46174283 = t;
double r46174284 = r46174283 + r46174282;
double r46174285 = x;
double r46174286 = r46174284 + r46174285;
double r46174287 = r46174282 / r46174286;
double r46174288 = r46174281 * r46174287;
double r46174289 = r46174280 - r46174288;
double r46174290 = -8.234919045173266e-138;
bool r46174291 = r46174276 <= r46174290;
double r46174292 = r46174285 + r46174282;
double r46174293 = r46174279 * r46174292;
double r46174294 = r46174284 * r46174276;
double r46174295 = r46174293 + r46174294;
double r46174296 = r46174295 / r46174286;
double r46174297 = r46174296 - r46174288;
double r46174298 = -1.1722878479406442e-195;
bool r46174299 = r46174276 <= r46174298;
double r46174300 = r46174279 - r46174288;
double r46174301 = 5.907781539963392e+58;
bool r46174302 = r46174276 <= r46174301;
double r46174303 = r46174302 ? r46174297 : r46174289;
double r46174304 = r46174299 ? r46174300 : r46174303;
double r46174305 = r46174291 ? r46174297 : r46174304;
double r46174306 = r46174278 ? r46174289 : r46174305;
return r46174306;
}




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 | 24.9 |
|---|---|
| Target | 11.4 |
| Herbie | 16.8 |
if a < -2.894955572700637e+43 or 5.907781539963392e+58 < a Initial program 34.4
Simplified34.4
rmApplied associate-+r-34.4
Applied div-sub34.4
rmApplied *-un-lft-identity34.4
Applied times-frac33.5
Simplified33.5
Taylor expanded around inf 20.7
if -2.894955572700637e+43 < a < -8.234919045173266e-138 or -1.1722878479406442e-195 < a < 5.907781539963392e+58Initial program 17.7
Simplified17.7
rmApplied associate-+r-17.7
Applied div-sub17.7
rmApplied *-un-lft-identity17.7
Applied times-frac13.6
Simplified13.6
if -8.234919045173266e-138 < a < -1.1722878479406442e-195Initial program 20.3
Simplified20.3
rmApplied associate-+r-20.3
Applied div-sub20.3
rmApplied *-un-lft-identity20.3
Applied times-frac15.0
Simplified15.0
Taylor expanded around 0 18.5
Final simplification16.8
herbie shell --seed 2019162
(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 (/ (+ (+ 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)))