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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list
