\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 -1.329351671379600395696054258455065074018 \cdot 10^{162}:\\
\;\;\;\;a - y \cdot \frac{b}{\left(x + t\right) + y}\\
\mathbf{elif}\;a \le 5.325165846082585887271445202627113987297 \cdot 10^{-212}:\\
\;\;\;\;\frac{\mathsf{fma}\left(x + y, z, \left(t + y\right) \cdot a\right)}{\left(x + t\right) + y} - \frac{y}{\sqrt[3]{\left(x + t\right) + y} \cdot \sqrt[3]{\left(x + t\right) + y}} \cdot \frac{b}{\sqrt[3]{\left(x + t\right) + y}}\\
\mathbf{elif}\;a \le 1.908584443905937974655168865478710611307 \cdot 10^{-45}:\\
\;\;\;\;z - y \cdot \frac{b}{\left(x + t\right) + y}\\
\mathbf{elif}\;a \le 1.978965818958528848241507275261864808485 \cdot 10^{164}:\\
\;\;\;\;\frac{\mathsf{fma}\left(x + y, z, \left(t + y\right) \cdot a\right)}{\left(x + t\right) + y} - \frac{y}{\frac{\left(x + t\right) + y}{b}}\\
\mathbf{else}:\\
\;\;\;\;a - y \cdot \frac{b}{\left(x + t\right) + y}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r519258 = x;
double r519259 = y;
double r519260 = r519258 + r519259;
double r519261 = z;
double r519262 = r519260 * r519261;
double r519263 = t;
double r519264 = r519263 + r519259;
double r519265 = a;
double r519266 = r519264 * r519265;
double r519267 = r519262 + r519266;
double r519268 = b;
double r519269 = r519259 * r519268;
double r519270 = r519267 - r519269;
double r519271 = r519258 + r519263;
double r519272 = r519271 + r519259;
double r519273 = r519270 / r519272;
return r519273;
}
double f(double x, double y, double z, double t, double a, double b) {
double r519274 = a;
double r519275 = -1.3293516713796004e+162;
bool r519276 = r519274 <= r519275;
double r519277 = y;
double r519278 = b;
double r519279 = x;
double r519280 = t;
double r519281 = r519279 + r519280;
double r519282 = r519281 + r519277;
double r519283 = r519278 / r519282;
double r519284 = r519277 * r519283;
double r519285 = r519274 - r519284;
double r519286 = 5.325165846082586e-212;
bool r519287 = r519274 <= r519286;
double r519288 = r519279 + r519277;
double r519289 = z;
double r519290 = r519280 + r519277;
double r519291 = r519290 * r519274;
double r519292 = fma(r519288, r519289, r519291);
double r519293 = r519292 / r519282;
double r519294 = cbrt(r519282);
double r519295 = r519294 * r519294;
double r519296 = r519277 / r519295;
double r519297 = r519278 / r519294;
double r519298 = r519296 * r519297;
double r519299 = r519293 - r519298;
double r519300 = 1.908584443905938e-45;
bool r519301 = r519274 <= r519300;
double r519302 = r519289 - r519284;
double r519303 = 1.9789658189585288e+164;
bool r519304 = r519274 <= r519303;
double r519305 = r519282 / r519278;
double r519306 = r519277 / r519305;
double r519307 = r519293 - r519306;
double r519308 = r519304 ? r519307 : r519285;
double r519309 = r519301 ? r519302 : r519308;
double r519310 = r519287 ? r519299 : r519309;
double r519311 = r519276 ? r519285 : r519310;
return r519311;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
| Original | 26.3 |
|---|---|
| Target | 11.6 |
| Herbie | 20.6 |
if a < -1.3293516713796004e+162 or 1.9789658189585288e+164 < a Initial program 42.9
rmApplied div-sub42.9
Simplified42.9
rmApplied *-un-lft-identity42.9
Applied times-frac43.6
Simplified43.6
Taylor expanded around 0 25.0
if -1.3293516713796004e+162 < a < 5.325165846082586e-212Initial program 20.3
rmApplied div-sub20.3
Simplified20.3
rmApplied *-un-lft-identity20.3
Applied times-frac17.5
Simplified17.5
rmApplied add-cube-cbrt17.7
Applied *-un-lft-identity17.7
Applied times-frac17.7
Applied associate-*r*16.9
Simplified16.9
if 5.325165846082586e-212 < a < 1.908584443905938e-45Initial program 18.8
rmApplied div-sub18.8
Simplified18.8
rmApplied *-un-lft-identity18.8
Applied times-frac15.4
Simplified15.4
Taylor expanded around inf 22.0
if 1.908584443905938e-45 < a < 1.9789658189585288e+164Initial program 26.4
rmApplied div-sub26.4
Simplified26.4
rmApplied associate-/l*23.7
Final simplification20.6
herbie shell --seed 2019303 +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.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)))