\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}\;y \le -1.377781447530395283080383565792233554007 \cdot 10^{49}:\\
\;\;\;\;\left(a + z\right) - b\\
\mathbf{elif}\;y \le 2.740519347061663533893075988126946093752 \cdot 10^{102}:\\
\;\;\;\;\frac{1}{\left(t + y\right) + x} \cdot \left(\left(z \cdot \left(y + x\right) + a \cdot \left(t + y\right)\right) - y \cdot b\right)\\
\mathbf{else}:\\
\;\;\;\;\left(a + z\right) - b\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r40336819 = x;
double r40336820 = y;
double r40336821 = r40336819 + r40336820;
double r40336822 = z;
double r40336823 = r40336821 * r40336822;
double r40336824 = t;
double r40336825 = r40336824 + r40336820;
double r40336826 = a;
double r40336827 = r40336825 * r40336826;
double r40336828 = r40336823 + r40336827;
double r40336829 = b;
double r40336830 = r40336820 * r40336829;
double r40336831 = r40336828 - r40336830;
double r40336832 = r40336819 + r40336824;
double r40336833 = r40336832 + r40336820;
double r40336834 = r40336831 / r40336833;
return r40336834;
}
double f(double x, double y, double z, double t, double a, double b) {
double r40336835 = y;
double r40336836 = -1.3777814475303953e+49;
bool r40336837 = r40336835 <= r40336836;
double r40336838 = a;
double r40336839 = z;
double r40336840 = r40336838 + r40336839;
double r40336841 = b;
double r40336842 = r40336840 - r40336841;
double r40336843 = 2.7405193470616635e+102;
bool r40336844 = r40336835 <= r40336843;
double r40336845 = 1.0;
double r40336846 = t;
double r40336847 = r40336846 + r40336835;
double r40336848 = x;
double r40336849 = r40336847 + r40336848;
double r40336850 = r40336845 / r40336849;
double r40336851 = r40336835 + r40336848;
double r40336852 = r40336839 * r40336851;
double r40336853 = r40336838 * r40336847;
double r40336854 = r40336852 + r40336853;
double r40336855 = r40336835 * r40336841;
double r40336856 = r40336854 - r40336855;
double r40336857 = r40336850 * r40336856;
double r40336858 = r40336844 ? r40336857 : r40336842;
double r40336859 = r40336837 ? r40336842 : r40336858;
return r40336859;
}




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 | 27.0 |
|---|---|
| Target | 11.3 |
| Herbie | 16.0 |
if y < -1.3777814475303953e+49 or 2.7405193470616635e+102 < y Initial program 43.2
Simplified43.2
Taylor expanded around inf 14.0
if -1.3777814475303953e+49 < y < 2.7405193470616635e+102Initial program 17.1
Simplified17.1
rmApplied clear-num17.2
rmApplied associate-/r/17.2
Final simplification16.0
herbie shell --seed 2019174
(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)))