\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.9117574672565738 \cdot 10^{83} \lor \neg \left(y \le 1.3202613471666877 \cdot 10^{132}\right):\\
\;\;\;\;\left(a + z\right) - b\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(x + y\right) \cdot z + \mathsf{fma}\left(y, a - b, a \cdot t\right)}{\left(x + t\right) + y}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r1221825 = x;
double r1221826 = y;
double r1221827 = r1221825 + r1221826;
double r1221828 = z;
double r1221829 = r1221827 * r1221828;
double r1221830 = t;
double r1221831 = r1221830 + r1221826;
double r1221832 = a;
double r1221833 = r1221831 * r1221832;
double r1221834 = r1221829 + r1221833;
double r1221835 = b;
double r1221836 = r1221826 * r1221835;
double r1221837 = r1221834 - r1221836;
double r1221838 = r1221825 + r1221830;
double r1221839 = r1221838 + r1221826;
double r1221840 = r1221837 / r1221839;
return r1221840;
}
double f(double x, double y, double z, double t, double a, double b) {
double r1221841 = y;
double r1221842 = -1.9117574672565738e+83;
bool r1221843 = r1221841 <= r1221842;
double r1221844 = 1.3202613471666877e+132;
bool r1221845 = r1221841 <= r1221844;
double r1221846 = !r1221845;
bool r1221847 = r1221843 || r1221846;
double r1221848 = a;
double r1221849 = z;
double r1221850 = r1221848 + r1221849;
double r1221851 = b;
double r1221852 = r1221850 - r1221851;
double r1221853 = x;
double r1221854 = r1221853 + r1221841;
double r1221855 = r1221854 * r1221849;
double r1221856 = r1221848 - r1221851;
double r1221857 = t;
double r1221858 = r1221848 * r1221857;
double r1221859 = fma(r1221841, r1221856, r1221858);
double r1221860 = r1221855 + r1221859;
double r1221861 = r1221853 + r1221857;
double r1221862 = r1221861 + r1221841;
double r1221863 = r1221860 / r1221862;
double r1221864 = r1221847 ? r1221852 : r1221863;
return r1221864;
}




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 | 27.0 |
|---|---|
| Target | 11.1 |
| Herbie | 16.0 |
if y < -1.9117574672565738e+83 or 1.3202613471666877e+132 < y Initial program 46.0
rmApplied associate--l+46.0
Simplified46.0
rmApplied clear-num46.0
Taylor expanded around 0 12.2
if -1.9117574672565738e+83 < y < 1.3202613471666877e+132Initial program 17.8
rmApplied associate--l+17.8
Simplified17.8
Final simplification16.0
herbie shell --seed 2020034 +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.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)))