Changeset: 2134a22996ff for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2134a22996ff Branch: typing Log Message:
Merged with Oct2020 diffs (truncated from 822 to 300 lines): diff --git a/gdk/gdk_calc.c b/gdk/gdk_calc.c --- a/gdk/gdk_calc.c +++ b/gdk/gdk_calc.c @@ -5600,6 +5600,12 @@ mul_##TYPE1##_##TYPE2##_##TYPE3(const TY #define rounddbl(x) round(x) #endif +#define absbte(x) abs(x) +#define abssht(x) abs(x) +#define absint(x) abs(x) +#define abslng(x) llabs(x) +#define abshge(x) ABSOLUTE(x) + #define MUL_INT_FLT_INT(TYPE1, TYPE2, TYPE3) \ static BUN \ mul_##TYPE1##_##TYPE2##_##TYPE3( \ @@ -5622,7 +5628,7 @@ mul_##TYPE1##_##TYPE2##_##TYPE3( \ nils++; \ } else if (lft[i] == 0 || rgt[j] == 0) { \ dst[k] = 0; \ - } else if (max / rgt[i] < lft[j]) { \ + } else if (max / fabs(rgt[j]) < abs##TYPE1(lft[i])) { \ if (abort_on_error) \ ON_OVERFLOW(TYPE1, TYPE2, "*"); \ dst[k] = TYPE3##_nil; \ @@ -5643,7 +5649,7 @@ mul_##TYPE1##_##TYPE2##_##TYPE3( \ nils++; \ } else if (lft[i] == 0 || rgt[j] == 0) { \ dst[k] = 0; \ - } else if (max / rgt[i] < lft[j]) { \ + } else if (max / fabs(rgt[j]) < abs##TYPE1(lft[i])) { \ if (abort_on_error) \ ON_OVERFLOW(TYPE1, TYPE2, "*"); \ dst[k] = TYPE3##_nil; \ @@ -5661,17 +5667,27 @@ MUL_INT_FLT_INT(bte, flt, bte) MUL_INT_FLT_INT(bte, flt, sht) MUL_INT_FLT_INT(bte, flt, int) MUL_INT_FLT_INT(bte, flt, lng) +MUL_INT_FLT_INT(sht, flt, bte) MUL_INT_FLT_INT(sht, flt, sht) MUL_INT_FLT_INT(sht, flt, int) MUL_INT_FLT_INT(sht, flt, lng) +MUL_INT_FLT_INT(int, flt, bte) +MUL_INT_FLT_INT(int, flt, sht) MUL_INT_FLT_INT(int, flt, int) MUL_INT_FLT_INT(int, flt, lng) +MUL_INT_FLT_INT(lng, flt, bte) +MUL_INT_FLT_INT(lng, flt, sht) +MUL_INT_FLT_INT(lng, flt, int) MUL_INT_FLT_INT(lng, flt, lng) #ifdef HAVE_HGE MUL_INT_FLT_INT(bte, flt, hge) MUL_INT_FLT_INT(sht, flt, hge) MUL_INT_FLT_INT(int, flt, hge) MUL_INT_FLT_INT(lng, flt, hge) +MUL_INT_FLT_INT(hge, flt, bte) +MUL_INT_FLT_INT(hge, flt, sht) +MUL_INT_FLT_INT(hge, flt, int) +MUL_INT_FLT_INT(hge, flt, lng) MUL_INT_FLT_INT(hge, flt, hge) #endif @@ -5679,17 +5695,27 @@ MUL_INT_FLT_INT(bte, dbl, bte) MUL_INT_FLT_INT(bte, dbl, sht) MUL_INT_FLT_INT(bte, dbl, int) MUL_INT_FLT_INT(bte, dbl, lng) +MUL_INT_FLT_INT(sht, dbl, bte) MUL_INT_FLT_INT(sht, dbl, sht) MUL_INT_FLT_INT(sht, dbl, int) MUL_INT_FLT_INT(sht, dbl, lng) +MUL_INT_FLT_INT(int, dbl, bte) +MUL_INT_FLT_INT(int, dbl, sht) MUL_INT_FLT_INT(int, dbl, int) MUL_INT_FLT_INT(int, dbl, lng) +MUL_INT_FLT_INT(lng, dbl, bte) +MUL_INT_FLT_INT(lng, dbl, sht) +MUL_INT_FLT_INT(lng, dbl, int) MUL_INT_FLT_INT(lng, dbl, lng) #ifdef HAVE_HGE MUL_INT_FLT_INT(bte, dbl, hge) MUL_INT_FLT_INT(sht, dbl, hge) MUL_INT_FLT_INT(int, dbl, hge) MUL_INT_FLT_INT(lng, dbl, hge) +MUL_INT_FLT_INT(hge, dbl, bte) +MUL_INT_FLT_INT(hge, dbl, sht) +MUL_INT_FLT_INT(hge, dbl, int) +MUL_INT_FLT_INT(hge, dbl, lng) MUL_INT_FLT_INT(hge, dbl, hge) #endif @@ -6383,6 +6409,13 @@ mul_typeswitchloop(const void *lft, int #endif case TYPE_flt: switch (tp) { + case TYPE_bte: + nils = mul_sht_flt_bte(lft, incr1, rgt, incr2, + dst, GDK_bte_max, + ci1, ci2, + candoff1, candoff2, + abort_on_error); + break; case TYPE_sht: nils = mul_sht_flt_sht(lft, incr1, rgt, incr2, dst, GDK_sht_max, @@ -6431,6 +6464,13 @@ mul_typeswitchloop(const void *lft, int break; case TYPE_dbl: switch (tp) { + case TYPE_bte: + nils = mul_sht_dbl_bte(lft, incr1, rgt, incr2, + dst, GDK_bte_max, + ci1, ci2, + candoff1, candoff2, + abort_on_error); + break; case TYPE_sht: nils = mul_sht_dbl_sht(lft, incr1, rgt, incr2, dst, GDK_sht_max, @@ -6651,6 +6691,20 @@ mul_typeswitchloop(const void *lft, int #endif case TYPE_flt: switch (tp) { + case TYPE_bte: + nils = mul_int_flt_bte(lft, incr1, rgt, incr2, + dst, GDK_bte_max, + ci1, ci2, + candoff1, candoff2, + abort_on_error); + break; + case TYPE_sht: + nils = mul_int_flt_sht(lft, incr1, rgt, incr2, + dst, GDK_sht_max, + ci1, ci2, + candoff1, candoff2, + abort_on_error); + break; case TYPE_int: nils = mul_int_flt_int(lft, incr1, rgt, incr2, dst, GDK_int_max, @@ -6692,6 +6746,20 @@ mul_typeswitchloop(const void *lft, int break; case TYPE_dbl: switch (tp) { + case TYPE_bte: + nils = mul_int_dbl_bte(lft, incr1, rgt, incr2, + dst, GDK_bte_max, + ci1, ci2, + candoff1, candoff2, + abort_on_error); + break; + case TYPE_sht: + nils = mul_int_dbl_sht(lft, incr1, rgt, incr2, + dst, GDK_sht_max, + ci1, ci2, + candoff1, candoff2, + abort_on_error); + break; case TYPE_int: nils = mul_int_dbl_int(lft, incr1, rgt, incr2, dst, GDK_int_max, @@ -6887,6 +6955,27 @@ mul_typeswitchloop(const void *lft, int #endif case TYPE_flt: switch (tp) { + case TYPE_bte: + nils = mul_lng_flt_bte(lft, incr1, rgt, incr2, + dst, GDK_bte_max, + ci1, ci2, + candoff1, candoff2, + abort_on_error); + break; + case TYPE_sht: + nils = mul_lng_flt_sht(lft, incr1, rgt, incr2, + dst, GDK_sht_max, + ci1, ci2, + candoff1, candoff2, + abort_on_error); + break; + case TYPE_int: + nils = mul_lng_flt_int(lft, incr1, rgt, incr2, + dst, GDK_int_max, + ci1, ci2, + candoff1, candoff2, + abort_on_error); + break; case TYPE_lng: nils = mul_lng_flt_lng(lft, incr1, rgt, incr2, dst, GDK_lng_max, @@ -6921,6 +7010,27 @@ mul_typeswitchloop(const void *lft, int break; case TYPE_dbl: switch (tp) { + case TYPE_bte: + nils = mul_lng_dbl_bte(lft, incr1, rgt, incr2, + dst, GDK_bte_max, + ci1, ci2, + candoff1, candoff2, + abort_on_error); + break; + case TYPE_sht: + nils = mul_lng_dbl_sht(lft, incr1, rgt, incr2, + dst, GDK_sht_max, + ci1, ci2, + candoff1, candoff2, + abort_on_error); + break; + case TYPE_int: + nils = mul_lng_dbl_int(lft, incr1, rgt, incr2, + dst, GDK_int_max, + ci1, ci2, + candoff1, candoff2, + abort_on_error); + break; case TYPE_lng: nils = mul_lng_dbl_lng(lft, incr1, rgt, incr2, dst, GDK_lng_max, @@ -7076,6 +7186,34 @@ mul_typeswitchloop(const void *lft, int break; case TYPE_flt: switch (tp) { + case TYPE_bte: + nils = mul_hge_flt_bte(lft, incr1, rgt, incr2, + dst, GDK_bte_max, + ci1, ci2, + candoff1, candoff2, + abort_on_error); + break; + case TYPE_sht: + nils = mul_hge_flt_sht(lft, incr1, rgt, incr2, + dst, GDK_sht_max, + ci1, ci2, + candoff1, candoff2, + abort_on_error); + break; + case TYPE_int: + nils = mul_hge_flt_int(lft, incr1, rgt, incr2, + dst, GDK_int_max, + ci1, ci2, + candoff1, candoff2, + abort_on_error); + break; + case TYPE_lng: + nils = mul_hge_flt_lng(lft, incr1, rgt, incr2, + dst, GDK_lng_max, + ci1, ci2, + candoff1, candoff2, + abort_on_error); + break; case TYPE_hge: nils = mul_hge_flt_hge(lft, incr1, rgt, incr2, dst, GDK_hge_max, @@ -7101,6 +7239,34 @@ mul_typeswitchloop(const void *lft, int break; case TYPE_dbl: switch (tp) { + case TYPE_bte: + nils = mul_hge_dbl_bte(lft, incr1, rgt, incr2, + dst, GDK_bte_max, + ci1, ci2, + candoff1, candoff2, + abort_on_error); + break; + case TYPE_sht: + nils = mul_hge_dbl_sht(lft, incr1, rgt, incr2, + dst, GDK_sht_max, + ci1, ci2, + candoff1, candoff2, + abort_on_error); + break; + case TYPE_int: + nils = mul_hge_dbl_int(lft, incr1, rgt, incr2, + dst, GDK_int_max, + ci1, ci2, + candoff1, candoff2, + abort_on_error); + break; + case TYPE_lng: + nils = mul_hge_dbl_lng(lft, incr1, rgt, incr2, + dst, GDK_lng_max, + ci1, ci2, + candoff1, candoff2, + abort_on_error); + break; case TYPE_hge: nils = mul_hge_dbl_hge(lft, incr1, rgt, incr2, dst, GDK_hge_max, @@ -7715,6 +7881,137 @@ div_##TYPE1##_##TYPE2##_##TYPE3(const TY return nils; \ } +#define DIV_INT_FLT_INT(TYPE1, TYPE2, TYPE3) \ +static BUN \ +div_##TYPE1##_##TYPE2##_##TYPE3( \ + const TYPE1 *lft, bool incr1, const TYPE2 *rgt, bool incr2, \ + TYPE3 *restrict dst, TYPE3 max, \ + struct canditer *restrict ci1, struct canditer *restrict ci2, \ + oid candoff1, oid candoff2, bool abort_on_error) \ +{ \ + BUN nils = 0; \ + BUN i = 0, j = 0; \ _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list