\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 -6.3766260127845671 \cdot 10^{136}:\\
\;\;\;\;z - \frac{y}{\left(x + t\right) + y} \cdot b\\
\mathbf{elif}\;z \le -7.5553554336738665 \cdot 10^{-50}:\\
\;\;\;\;\frac{\left(x + y\right) \cdot z + \left(t + y\right) \cdot a}{\left(x + t\right) + y} - \frac{1}{\frac{\frac{\left(x + t\right) + y}{b}}{y}}\\
\mathbf{elif}\;z \le -1.4420526235398581 \cdot 10^{-96}:\\
\;\;\;\;a - \frac{y}{\left(x + t\right) + y} \cdot b\\
\mathbf{elif}\;z \le -5.2560627363695754 \cdot 10^{-198}:\\
\;\;\;\;\left(\sqrt[3]{\left(x + y\right) \cdot z + \left(t + y\right) \cdot a} \cdot \sqrt[3]{\left(x + y\right) \cdot z + \left(t + y\right) \cdot a}\right) \cdot \frac{\sqrt[3]{\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 -3.0011721532957425 \cdot 10^{-279}:\\
\;\;\;\;a - \frac{y}{\frac{\left(x + t\right) + y}{b}}\\
\mathbf{elif}\;z \le -8.4694881761373042 \cdot 10^{-290}:\\
\;\;\;\;\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}\\
\mathbf{elif}\;z \le 1.829058436943914 \cdot 10^{-282}:\\
\;\;\;\;\frac{a \cdot \left(t + y\right) + z \cdot y}{\left(x + t\right) + y} - \frac{y}{\left(x + t\right) + y} \cdot b\\
\mathbf{elif}\;z \le 5.14388566176424308 \cdot 10^{-183}:\\
\;\;\;\;a - \frac{y}{\left(x + t\right) + y} \cdot b\\
\mathbf{elif}\;z \le 1.1248158106174079 \cdot 10^{-25}:\\
\;\;\;\;\left(\sqrt[3]{\left(x + y\right) \cdot z + \left(t + y\right) \cdot a} \cdot \sqrt[3]{\left(x + y\right) \cdot z + \left(t + y\right) \cdot a}\right) \cdot \frac{\sqrt[3]{\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 4.44861392459712437 \cdot 10^{27}:\\
\;\;\;\;a - \frac{y}{\left(x + t\right) + y} \cdot b\\
\mathbf{elif}\;z \le 1.07400177686964386 \cdot 10^{86}:\\
\;\;\;\;\frac{\left(x + y\right) \cdot z + \left(t + y\right) \cdot a}{\left(x + t\right) + y} - \frac{1}{\frac{\frac{\left(x + t\right) + y}{b}}{y}}\\
\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 r891190 = x;
double r891191 = y;
double r891192 = r891190 + r891191;
double r891193 = z;
double r891194 = r891192 * r891193;
double r891195 = t;
double r891196 = r891195 + r891191;
double r891197 = a;
double r891198 = r891196 * r891197;
double r891199 = r891194 + r891198;
double r891200 = b;
double r891201 = r891191 * r891200;
double r891202 = r891199 - r891201;
double r891203 = r891190 + r891195;
double r891204 = r891203 + r891191;
double r891205 = r891202 / r891204;
return r891205;
}
double f(double x, double y, double z, double t, double a, double b) {
double r891206 = z;
double r891207 = -6.376626012784567e+136;
bool r891208 = r891206 <= r891207;
double r891209 = y;
double r891210 = x;
double r891211 = t;
double r891212 = r891210 + r891211;
double r891213 = r891212 + r891209;
double r891214 = r891209 / r891213;
double r891215 = b;
double r891216 = r891214 * r891215;
double r891217 = r891206 - r891216;
double r891218 = -7.5553554336738665e-50;
bool r891219 = r891206 <= r891218;
double r891220 = r891210 + r891209;
double r891221 = r891220 * r891206;
double r891222 = r891211 + r891209;
double r891223 = a;
double r891224 = r891222 * r891223;
double r891225 = r891221 + r891224;
double r891226 = r891225 / r891213;
double r891227 = 1.0;
double r891228 = r891213 / r891215;
double r891229 = r891228 / r891209;
double r891230 = r891227 / r891229;
double r891231 = r891226 - r891230;
double r891232 = -1.442052623539858e-96;
bool r891233 = r891206 <= r891232;
double r891234 = r891223 - r891216;
double r891235 = -5.2560627363695754e-198;
bool r891236 = r891206 <= r891235;
double r891237 = cbrt(r891225);
double r891238 = r891237 * r891237;
double r891239 = r891237 / r891213;
double r891240 = r891238 * r891239;
double r891241 = r891240 - r891216;
double r891242 = -3.0011721532957425e-279;
bool r891243 = r891206 <= r891242;
double r891244 = r891209 / r891228;
double r891245 = r891223 - r891244;
double r891246 = -8.469488176137304e-290;
bool r891247 = r891206 <= r891246;
double r891248 = r891209 * r891215;
double r891249 = r891225 - r891248;
double r891250 = r891227 / r891213;
double r891251 = r891249 * r891250;
double r891252 = 1.829058436943914e-282;
bool r891253 = r891206 <= r891252;
double r891254 = r891223 * r891222;
double r891255 = r891206 * r891209;
double r891256 = r891254 + r891255;
double r891257 = r891256 / r891213;
double r891258 = r891257 - r891216;
double r891259 = 5.143885661764243e-183;
bool r891260 = r891206 <= r891259;
double r891261 = 1.124815810617408e-25;
bool r891262 = r891206 <= r891261;
double r891263 = 4.4486139245971244e+27;
bool r891264 = r891206 <= r891263;
double r891265 = 1.0740017768696439e+86;
bool r891266 = r891206 <= r891265;
double r891267 = r891266 ? r891231 : r891217;
double r891268 = r891264 ? r891234 : r891267;
double r891269 = r891262 ? r891241 : r891268;
double r891270 = r891260 ? r891234 : r891269;
double r891271 = r891253 ? r891258 : r891270;
double r891272 = r891247 ? r891251 : r891271;
double r891273 = r891243 ? r891245 : r891272;
double r891274 = r891236 ? r891241 : r891273;
double r891275 = r891233 ? r891234 : r891274;
double r891276 = r891219 ? r891231 : r891275;
double r891277 = r891208 ? r891217 : r891276;
return r891277;
}




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.4 |
|---|---|
| Target | 11.1 |
| Herbie | 20.4 |
if z < -6.376626012784567e+136 or 1.0740017768696439e+86 < z Initial program 39.4
rmApplied div-sub39.4
rmApplied associate-/l*39.7
rmApplied associate-/r/38.8
Taylor expanded around inf 24.4
if -6.376626012784567e+136 < z < -7.5553554336738665e-50 or 4.4486139245971244e+27 < z < 1.0740017768696439e+86Initial program 24.2
rmApplied div-sub24.2
rmApplied associate-/l*21.5
rmApplied clear-num21.5
if -7.5553554336738665e-50 < z < -1.442052623539858e-96 or 1.829058436943914e-282 < z < 5.143885661764243e-183 or 1.124815810617408e-25 < z < 4.4486139245971244e+27Initial program 19.1
rmApplied div-sub19.1
rmApplied associate-/l*16.5
rmApplied associate-/r/14.8
Taylor expanded around 0 21.8
if -1.442052623539858e-96 < z < -5.2560627363695754e-198 or 5.143885661764243e-183 < z < 1.124815810617408e-25Initial program 17.7
rmApplied div-sub17.7
rmApplied associate-/l*14.1
rmApplied associate-/r/13.0
rmApplied *-un-lft-identity13.0
Applied add-cube-cbrt13.6
Applied times-frac13.6
Simplified13.6
if -5.2560627363695754e-198 < z < -3.0011721532957425e-279Initial program 20.2
rmApplied div-sub20.1
rmApplied associate-/l*16.2
Taylor expanded around 0 18.7
if -3.0011721532957425e-279 < z < -8.469488176137304e-290Initial program 17.9
rmApplied div-inv17.9
if -8.469488176137304e-290 < z < 1.829058436943914e-282Initial program 18.4
rmApplied div-sub18.3
rmApplied associate-/l*15.2
rmApplied associate-/r/13.4
Taylor expanded around inf 15.8
Simplified15.8
Final simplification20.4
herbie shell --seed 2020036
(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)))