\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 r920448 = x;
double r920449 = y;
double r920450 = r920448 + r920449;
double r920451 = z;
double r920452 = r920450 * r920451;
double r920453 = t;
double r920454 = r920453 + r920449;
double r920455 = a;
double r920456 = r920454 * r920455;
double r920457 = r920452 + r920456;
double r920458 = b;
double r920459 = r920449 * r920458;
double r920460 = r920457 - r920459;
double r920461 = r920448 + r920453;
double r920462 = r920461 + r920449;
double r920463 = r920460 / r920462;
return r920463;
}
double f(double x, double y, double z, double t, double a, double b) {
double r920464 = z;
double r920465 = -6.376626012784567e+136;
bool r920466 = r920464 <= r920465;
double r920467 = y;
double r920468 = x;
double r920469 = t;
double r920470 = r920468 + r920469;
double r920471 = r920470 + r920467;
double r920472 = r920467 / r920471;
double r920473 = b;
double r920474 = r920472 * r920473;
double r920475 = r920464 - r920474;
double r920476 = -7.5553554336738665e-50;
bool r920477 = r920464 <= r920476;
double r920478 = r920468 + r920467;
double r920479 = r920478 * r920464;
double r920480 = r920469 + r920467;
double r920481 = a;
double r920482 = r920480 * r920481;
double r920483 = r920479 + r920482;
double r920484 = r920483 / r920471;
double r920485 = 1.0;
double r920486 = r920471 / r920473;
double r920487 = r920486 / r920467;
double r920488 = r920485 / r920487;
double r920489 = r920484 - r920488;
double r920490 = -1.442052623539858e-96;
bool r920491 = r920464 <= r920490;
double r920492 = r920481 - r920474;
double r920493 = -5.2560627363695754e-198;
bool r920494 = r920464 <= r920493;
double r920495 = cbrt(r920483);
double r920496 = r920495 * r920495;
double r920497 = r920495 / r920471;
double r920498 = r920496 * r920497;
double r920499 = r920498 - r920474;
double r920500 = -3.0011721532957425e-279;
bool r920501 = r920464 <= r920500;
double r920502 = r920467 / r920486;
double r920503 = r920481 - r920502;
double r920504 = -8.469488176137304e-290;
bool r920505 = r920464 <= r920504;
double r920506 = r920467 * r920473;
double r920507 = r920483 - r920506;
double r920508 = r920485 / r920471;
double r920509 = r920507 * r920508;
double r920510 = 1.829058436943914e-282;
bool r920511 = r920464 <= r920510;
double r920512 = r920481 * r920480;
double r920513 = r920464 * r920467;
double r920514 = r920512 + r920513;
double r920515 = r920514 / r920471;
double r920516 = r920515 - r920474;
double r920517 = 5.143885661764243e-183;
bool r920518 = r920464 <= r920517;
double r920519 = 1.124815810617408e-25;
bool r920520 = r920464 <= r920519;
double r920521 = 4.4486139245971244e+27;
bool r920522 = r920464 <= r920521;
double r920523 = 1.0740017768696439e+86;
bool r920524 = r920464 <= r920523;
double r920525 = r920524 ? r920489 : r920475;
double r920526 = r920522 ? r920492 : r920525;
double r920527 = r920520 ? r920499 : r920526;
double r920528 = r920518 ? r920492 : r920527;
double r920529 = r920511 ? r920516 : r920528;
double r920530 = r920505 ? r920509 : r920529;
double r920531 = r920501 ? r920503 : r920530;
double r920532 = r920494 ? r920499 : r920531;
double r920533 = r920491 ? r920492 : r920532;
double r920534 = r920477 ? r920489 : r920533;
double r920535 = r920466 ? r920475 : r920534;
return r920535;
}




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)))