Changeset: e97e94dd8a35 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e97e94dd8a35 Modified Files: gdk/gdk_analytic_func.c Branch: window-tunning Log Message:
Small cleanup
diffs (truncated from 330 to 300 lines):
diff --git a/gdk/gdk_analytic_func.c b/gdk/gdk_analytic_func.c
--- a/gdk/gdk_analytic_func.c
+++ b/gdk/gdk_analytic_func.c
@@ -1895,17 +1895,22 @@ GDKanalyticalsum(BAT *r, BAT *p, BAT *b,
}
/* product on integers */
+#define PROD_NUM(TPE1, TPE2, TPE3) \
+ do { \
+ if (!is_##TPE1##_nil(v)) { \
+ if (is_##TPE2##_nil(curval)) \
+ curval = (TPE2) v; \
+ else \
+ MUL4_WITH_CHECK(v, curval, TPE2, curval,
GDK_##TPE2##_max, TPE3, goto calc_overflow); \
+ } \
+ } while(0)
+
#define ANALYTICAL_PROD_CALC_NUM_UNBOUNDED_TILL_CURRENT_ROW(TPE1, TPE2, TPE3) \
do { \
TPE2 curval = TPE2##_nil; \
for (; k < i; k++) { \
TPE1 v = bp[k]; \
- if (!is_##TPE1##_nil(v)) { \
- if (is_##TPE2##_nil(curval)) \
- curval = (TPE2) v; \
- else \
- MUL4_WITH_CHECK(v, curval, TPE2,
curval, GDK_##TPE2##_max, TPE3, goto calc_overflow); \
- } \
+ PROD_NUM(TPE1, TPE2, TPE3); \
rb[k] = curval; \
has_nils |= is_##TPE2##_nil(curval); \
} \
@@ -1916,12 +1921,7 @@ GDKanalyticalsum(BAT *r, BAT *p, BAT *b,
TPE2 curval = TPE2##_nil; \
for (j = i - 1; j >= k; j--) { \
TPE1 v = bp[j]; \
- if (!is_##TPE1##_nil(v)) { \
- if (is_##TPE2##_nil(curval)) \
- curval = (TPE2) v; \
- else \
- MUL4_WITH_CHECK(v, curval, TPE2,
curval, GDK_##TPE2##_max, TPE3, goto calc_overflow); \
- } \
+ PROD_NUM(TPE1, TPE2, TPE3); \
rb[j] = curval; \
has_nils |= is_##TPE2##_nil(curval); \
} \
@@ -1933,12 +1933,7 @@ GDKanalyticalsum(BAT *r, BAT *p, BAT *b,
TPE2 curval = TPE2##_nil; \
for (; j < i; j++) { \
TPE1 v = bp[j]; \
- if (!is_##TPE1##_nil(v)) { \
- if (is_##TPE2##_nil(curval)) \
- curval = (TPE2) v; \
- else \
- MUL4_WITH_CHECK(v, curval, TPE2,
curval, GDK_##TPE2##_max, TPE3, goto calc_overflow); \
- } \
+ PROD_NUM(TPE1, TPE2, TPE3); \
} \
for (; k < i; k++) \
rb[k] = curval; \
@@ -1962,16 +1957,10 @@ GDKanalyticalsum(BAT *r, BAT *p, BAT *b,
do { \
TPE2 curval = TPE2##_nil; \
for (; k < i; k++) { \
- TPE1 *bs = bp + start[k];
\
- TPE1 *be = bp + end[k]; \
+ TPE1 *bs = bp + start[k], *be = bp + end[k];
\
for (; bs < be; bs++) { \
TPE1 v = *bs; \
- if (!is_##TPE1##_nil(v)) { \
- if (is_##TPE2##_nil(curval)) \
- curval = (TPE2) v; \
- else \
- MUL4_WITH_CHECK(v, curval,
TPE2, curval, GDK_##TPE2##_max, TPE3, goto calc_overflow); \
- } \
+ PROD_NUM(TPE1, TPE2, TPE3); \
} \
rb[k] = curval; \
if (is_##TPE2##_nil(curval)) \
@@ -1982,17 +1971,22 @@ GDKanalyticalsum(BAT *r, BAT *p, BAT *b,
} while (0)
/* product on integers while checking for overflows on the output */
+#define PROD_NUM_LIMIT(TPE1, TPE2, REAL_IMP) \
+ do { \
+ if (!is_##TPE1##_nil(v)) { \
+ if (is_##TPE2##_nil(curval)) \
+ curval = (TPE2) v; \
+ else \
+ REAL_IMP(v, curval, curval, GDK_##TPE2##_max,
goto calc_overflow); \
+ } \
+ } while(0)
+
#define ANALYTICAL_PROD_CALC_NUM_LIMIT_UNBOUNDED_TILL_CURRENT_ROW(TPE1, TPE2,
REAL_IMP) \
do { \
TPE2 curval = TPE2##_nil; \
for (; k < i; k++) { \
TPE1 v = bp[k]; \
- if (!is_##TPE1##_nil(v)) { \
- if (is_##TPE2##_nil(curval)) \
- curval = (TPE2) v; \
- else \
- REAL_IMP(v, curval, curval,
GDK_##TPE2##_max, goto calc_overflow); \
- } \
+ PROD_NUM_LIMIT(TPE1, TPE2, REAL_IMP); \
rb[k] = curval; \
has_nils |= is_##TPE2##_nil(curval); \
} \
@@ -2003,12 +1997,7 @@ GDKanalyticalsum(BAT *r, BAT *p, BAT *b,
TPE2 curval = TPE2##_nil; \
for (j = i - 1; j >= k; j--) { \
TPE1 v = bp[j]; \
- if (!is_##TPE1##_nil(v)) { \
- if (is_##TPE2##_nil(curval)) \
- curval = (TPE2) v; \
- else \
- REAL_IMP(v, curval, curval,
GDK_##TPE2##_max, goto calc_overflow); \
- } \
+ PROD_NUM_LIMIT(TPE1, TPE2, REAL_IMP); \
rb[j] = curval; \
has_nils |= is_##TPE2##_nil(curval); \
} \
@@ -2020,12 +2009,7 @@ GDKanalyticalsum(BAT *r, BAT *p, BAT *b,
TPE2 curval = TPE2##_nil; \
for (; j < i; j++) { \
TPE1 v = bp[j]; \
- if (!is_##TPE1##_nil(v)) { \
- if (is_##TPE2##_nil(curval)) \
- curval = (TPE2) v; \
- else \
- REAL_IMP(v, curval, curval,
GDK_##TPE2##_max, goto calc_overflow); \
- } \
+ PROD_NUM_LIMIT(TPE1, TPE2, REAL_IMP); \
} \
for (; k < i; k++) \
rb[k] = curval; \
@@ -2049,16 +2033,10 @@ GDKanalyticalsum(BAT *r, BAT *p, BAT *b,
do { \
TPE2 curval = TPE2##_nil; \
for (; k < i; k++) { \
- TPE1 *bs = bp + start[k];
\
- TPE1 *be = bp + end[k]; \
+ TPE1 *bs = bp + start[k], *be = bp + end[k];
\
for (; bs < be; bs++) { \
TPE1 v = *bs; \
- if (!is_##TPE1##_nil(v)) { \
- if (is_##TPE2##_nil(curval)) \
- curval = (TPE2) v; \
- else \
- REAL_IMP(v, curval, curval,
GDK_##TPE2##_max, goto calc_overflow); \
- } \
+ PROD_NUM_LIMIT(TPE1, TPE2, REAL_IMP); \
} \
rb[k] = curval; \
if (is_##TPE2##_nil(curval)) \
@@ -2069,75 +2047,58 @@ GDKanalyticalsum(BAT *r, BAT *p, BAT *b,
} while (0)
/* product on floating-points */
-#define ANALYTICAL_PROD_CALC_FP_UNBOUNDED_TILL_CURRENT_ROW(TPE1, TPE2) \
+#define PROD_FP(TPE1, TPE2) \
+ do { \
+ if (!is_##TPE1##_nil(v)) { \
+ if (is_##TPE2##_nil(curval)) { \
+ curval = (TPE2) v; \
+ } else if (ABSOLUTE(curval) > 1 && GDK_##TPE2##_max /
ABSOLUTE(v) < ABSOLUTE(curval)) { \
+ if (abort_on_error) \
+ goto calc_overflow; \
+ curval = TPE2##_nil; \
+ nils++; \
+ } else { \
+ curval *= v; \
+ } \
+ } \
+ } while(0)
+
+#define ANALYTICAL_PROD_CALC_FP_UNBOUNDED_TILL_CURRENT_ROW(TPE1, TPE2, ARG3)
/* ARG3 is ignored here */ \
do { \
TPE2 curval = TPE2##_nil; \
for (; k < i; k++) { \
TPE1 v = bp[k]; \
- if (!is_##TPE1##_nil(v)) { \
- if (is_##TPE2##_nil(curval)) { \
- curval = (TPE2) v; \
- } else if (ABSOLUTE(curval) > 1 &&
GDK_##TPE2##_max / ABSOLUTE(v) < ABSOLUTE(curval)) { \
- if (abort_on_error) \
- goto calc_overflow; \
- curval = TPE2##_nil; \
- nils++; \
- } else { \
- curval *= v; \
- } \
- } \
+ PROD_FP(TPE1, TPE2); \
rb[k] = curval; \
has_nils |= is_##TPE2##_nil(curval); \
} \
} while (0)
-#define ANALYTICAL_PROD_CALC_FP_CURRENT_ROW_TILL_UNBOUNDED(TPE1, TPE2) \
+#define ANALYTICAL_PROD_CALC_FP_CURRENT_ROW_TILL_UNBOUNDED(TPE1, TPE2, ARG3)
/* ARG3 is ignored here */ \
do { \
TPE2 curval = TPE2##_nil; \
for (j = i - 1; j >= k; j--) { \
TPE1 v = bp[j]; \
- if (!is_##TPE1##_nil(v)) { \
- if (is_##TPE2##_nil(curval)) { \
- curval = (TPE2) v; \
- } else if (ABSOLUTE(curval) > 1 &&
GDK_##TPE2##_max / ABSOLUTE(v) < ABSOLUTE(curval)) { \
- if (abort_on_error) \
- goto calc_overflow; \
- curval = TPE2##_nil; \
- nils++; \
- } else { \
- curval *= v; \
- } \
- } \
+ PROD_FP(TPE1, TPE2); \
rb[j] = curval; \
has_nils |= is_##TPE2##_nil(curval); \
} \
k = i; \
} while (0)
-#define ANALYTICAL_PROD_CALC_FP_ALL_ROWS(TPE1, TPE2) \
+#define ANALYTICAL_PROD_CALC_FP_ALL_ROWS(TPE1, TPE2, ARG3) /* ARG3 is
ignored here */ \
do { \
TPE2 curval = TPE2##_nil; \
for (; j < i; j++) { \
TPE1 v = bp[j]; \
- if (!is_##TPE1##_nil(v)) { \
- if (is_##TPE2##_nil(curval)) { \
- curval = (TPE2) v; \
- } else if (ABSOLUTE(curval) > 1 &&
GDK_##TPE2##_max / ABSOLUTE(v) < ABSOLUTE(curval)) { \
- if (abort_on_error) \
- goto calc_overflow; \
- curval = TPE2##_nil; \
- nils++; \
- } else { \
- curval *= v; \
- } \
- } \
+ PROD_FP(TPE1, TPE2); \
} \
for (; k < i; k++) \
rb[k] = curval; \
has_nils |= is_##TPE2##_nil(curval); \
} while (0)
-#define ANALYTICAL_PROD_CALC_FP_CURRENT_ROW(TPE1, TPE2) \
+#define ANALYTICAL_PROD_CALC_FP_CURRENT_ROW(TPE1, TPE2, ARG3) /* ARG3 is
ignored here */ \
do { \
for (; k < i; k++) { \
TPE1 v = bp[k]; \
@@ -2150,26 +2111,14 @@ GDKanalyticalsum(BAT *r, BAT *p, BAT *b,
} \
} while (0)
-#define ANALYTICAL_PROD_CALC_FP_OTHERS(TPE1, TPE2)
\
+#define ANALYTICAL_PROD_CALC_FP_OTHERS(TPE1, TPE2, ARG3) /* ARG3 is
ignored here */ \
do { \
TPE2 curval = TPE2##_nil; \
for (; k < i; k++) { \
- TPE1 *bs = bp + start[i];
\
- TPE1 *be = bp + end[i]; \
+ TPE1 *bs = bp + start[i], *be = bp + end[i]; \
for (; bs < be; bs++) { \
TPE1 v = *bs; \
- if (!is_##TPE1##_nil(v)) { \
- if (is_##TPE2##_nil(curval)) { \
- curval = (TPE2) v; \
- } else if (ABSOLUTE(curval) > 1 &&
GDK_##TPE2##_max / ABSOLUTE(v) < ABSOLUTE(curval)) { \
- if (abort_on_error) \
- goto calc_overflow; \
- curval = TPE2##_nil; \
- nils++; \
- } else { \
- curval *= v; \
- } \
- } \
+ PROD_FP(TPE1, TPE2); \
} \
rb[k] = curval; \
if (is_##TPE2##_nil(curval)) \
@@ -2196,23 +2145,6 @@ GDKanalyticalsum(BAT *r, BAT *p, BAT *b,
} \
} while (0)
-#define ANALYTICAL_PROD_CALC_FP_PARTITIONS(TPE1, TPE2, IMP) \
- do { \
- TPE1 *bp = (TPE1*)Tloc(b, 0); \
- TPE2 *restrict rb = (TPE2*)Tloc(r, 0); \
- if (p) { \
- for (; i < cnt; i++) { \
- if (np[i]) \
- IMP(TPE1, TPE2); \
- } \
- i = cnt; \
- IMP(TPE1, TPE2); \
- } else { \
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list
