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

Reply via email to