Changeset: 335b42ba9584 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=335b42ba9584
Modified Files:
        gdk/gdk_analytic_func.c
Branch: window-tunning
Log Message:

More cleanup, this is still not right


diffs (truncated from 884 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
@@ -11,10 +11,6 @@
 #include "gdk_analytic.h"
 #include "gdk_calc_private.h"
 
-/* needed for some operators on floating-points */
-#define NAN_CHECK(TPE, i) || (is_##TPE##_nil(v) && is_##TPE##_nil(bp[i]))
-#define NO_NAN_CHECK(TPE, i)
-
 #define NTILE_CALC(TPE, NEXT_VALUE, LNG_HGE, UPCAST)   \
        do {                                    \
                for (TPE i = 0; rb < rp; i++, rb++) {   \
@@ -791,20 +787,20 @@ GDKanalyticallead(BAT *r, BAT *b, BAT *p
        return GDK_SUCCEED;
 }
 
-#define ANALYTICAL_MIN_MAX_CALC_FIXED_UNBOUNDED_TILL_CURRENT_ROW(TPE, 
NAN_CHECK, MIN_MAX)      \
+#define ANALYTICAL_MIN_MAX_CALC_FIXED_UNBOUNDED_TILL_CURRENT_ROW(TPE, MIN_MAX) 
\
        do { \
                for (; k < i;) { \
                        TPE v = bp[k]; \
                        TPE curval = v; \
                        j = k++; \
-                       while (k < i && (bp[k] == v NAN_CHECK(TPE, k))) { \
-                               k++; \
+                       while (k < i && bp[k] == v) { \
                                if (!is_##TPE##_nil(bp[k])) {           \
                                        if (is_##TPE##_nil(curval))     \
                                                curval = bp[k]; \
                                        else                            \
                                                curval = MIN_MAX(bp[k], 
curval); \
                                }                                       \
+                               k++; \
                        } \
                        for (; j < k; j++) \
                                rb[j] = curval; \
@@ -812,20 +808,20 @@ GDKanalyticallead(BAT *r, BAT *b, BAT *p
                } \
        } while (0)
 
-#define ANALYTICAL_MIN_MAX_CALC_FIXED_CURRENT_ROW_TILL_UNBOUNDED(TPE, 
NAN_CHECK, MIN_MAX)      \
+#define ANALYTICAL_MIN_MAX_CALC_FIXED_CURRENT_ROW_TILL_UNBOUNDED(TPE, MIN_MAX) 
\
        do { \
                for (j = i - 1; j >= k; ) { \
                        TPE v = bp[j]; \
                        TPE curval = v; \
                        l = j--; \
-                       while (j >= k && (bp[j] == v NAN_CHECK(TPE, j))) { \
-                               j--; \
+                       while (j >= k && bp[j] == v) { \
                                if (!is_##TPE##_nil(bp[j])) {           \
                                        if (is_##TPE##_nil(curval))     \
                                                curval = bp[j]; \
                                        else                            \
                                                curval = MIN_MAX(bp[j], 
curval); \
                                }                                       \
+                               j--; \
                        } \
                        m = MAX(k, j); \
                        for (; l >= m; l--) \
@@ -835,7 +831,7 @@ GDKanalyticallead(BAT *r, BAT *b, BAT *p
                k = i; \
        } while (0)
 
-#define ANALYTICAL_MIN_MAX_CALC_FIXED_ALL_ROWS(TPE, NAN_CHECK, MIN_MAX)        
\
+#define ANALYTICAL_MIN_MAX_CALC_FIXED_ALL_ROWS(TPE, MIN_MAX)   \
        do { \
                TPE curval = TPE##_nil; \
                for (j = k; j < i; j++) { \
@@ -852,7 +848,7 @@ GDKanalyticallead(BAT *r, BAT *b, BAT *p
                has_nils |= is_##TPE##_nil(curval); \
        } while (0)
 
-#define ANALYTICAL_MIN_MAX_CALC_FIXED_CURRENT_ROW(TPE, NAN_CHECK, MIN_MAX)     
\
+#define ANALYTICAL_MIN_MAX_CALC_FIXED_CURRENT_ROW(TPE, MIN_MAX)        \
        do { \
                for (; k < i; k++) { \
                        TPE v = bp[k]; \
@@ -861,7 +857,7 @@ GDKanalyticallead(BAT *r, BAT *b, BAT *p
                } \
        } while (0)
 
-#define ANALYTICAL_MIN_MAX_CALC_FIXED_OTHERS(TPE, NAN_CHECK, MIN_MAX)  \
+#define ANALYTICAL_MIN_MAX_CALC_FIXED_OTHERS(TPE, MIN_MAX)     \
        do { \
                TPE curval = TPE##_nil; \
                for (; k < i; k++) { \
@@ -890,7 +886,6 @@ GDKanalyticallead(BAT *r, BAT *b, BAT *p
                        void *next = BUNtail(bpi, k), *curval = next;   \
                        j = k++; \
                        while (k < i && atomcmp(BUNtail(bpi, k), next) == 0) { \
-                               k++; \
                                void *nnext = BUNtail(bpi, k); \
                                if (atomcmp(nnext, nil) != 0) {         \
                                        if (atomcmp(curval, nil) == 0)  \
@@ -898,6 +893,7 @@ GDKanalyticallead(BAT *r, BAT *b, BAT *p
                                        else                            \
                                                curval = atomcmp(nnext, curval) 
GT_LT 0 ? curval : nnext; \
                                }                                       \
+                               k++; \
                        } \
                        for (; j < k; j++) \
                                if (tfastins_nocheckVAR(r, j, curval, Tsize(r)) 
!= GDK_SUCCEED) \
@@ -912,7 +908,6 @@ GDKanalyticallead(BAT *r, BAT *b, BAT *p
                        void *next = BUNtail(bpi, j), *curval = next;   \
                        l = j--; \
                        while (j >= k && atomcmp(BUNtail(bpi, j), next) == 0) { 
\
-                               j--; \
                                void *nnext = BUNtail(bpi, j); \
                                if (atomcmp(nnext, nil) != 0) {         \
                                        if (atomcmp(curval, nil) == 0)  \
@@ -920,6 +915,7 @@ GDKanalyticallead(BAT *r, BAT *b, BAT *p
                                        else                            \
                                                curval = atomcmp(nnext, curval) 
GT_LT 0 ? curval : nnext; \
                                }                                       \
+                               j--; \
                        } \
                        m = MAX(k, j); \
                        for (; l >= m; l--) \
@@ -980,23 +976,23 @@ GDKanalyticallead(BAT *r, BAT *b, BAT *p
                }                                                       \
        } while (0)
 
-#define ANALYTICAL_MIN_MAX_PARTITIONS(TPE, NAN_CHECK, MIN_MAX, IMP)            
\
+#define ANALYTICAL_MIN_MAX_PARTITIONS(TPE, MIN_MAX, IMP)               \
        do {                                    \
                TPE *bp = (TPE*)Tloc(b, 0), *restrict rb = (TPE*)Tloc(r, 0); \
                if (p) {                                        \
                        for (; i < cnt; i++) {          \
                                if (np[i])                      \
-                                       
ANALYTICAL_MIN_MAX_CALC_FIXED_##IMP(TPE, NAN_CHECK, MIN_MAX); \
+                                       
ANALYTICAL_MIN_MAX_CALC_FIXED_##IMP(TPE, MIN_MAX); \
                        }                                               \
                }               \
                i = cnt;                                        \
-               ANALYTICAL_MIN_MAX_CALC_FIXED_##IMP(TPE, NAN_CHECK, MIN_MAX);   
\
+               ANALYTICAL_MIN_MAX_CALC_FIXED_##IMP(TPE, MIN_MAX);      \
        } while (0)
 
 #ifdef HAVE_HGE
 #define ANALYTICAL_MIN_MAX_LIMIT(MIN_MAX, IMP)                 \
        case TYPE_hge:                                  \
-               ANALYTICAL_MIN_MAX_PARTITIONS(hge, NO_NAN_CHECK, MIN_MAX, IMP); 
\
+               ANALYTICAL_MIN_MAX_PARTITIONS(hge, MIN_MAX, IMP);       \
        break;
 #else
 #define ANALYTICAL_MIN_MAX_LIMIT(MIN_MAX, IMP)
@@ -1006,23 +1002,23 @@ GDKanalyticallead(BAT *r, BAT *b, BAT *p
        do { \
                switch (ATOMbasetype(tpe)) {                            \
                case TYPE_bte:                                                  
\
-                       ANALYTICAL_MIN_MAX_PARTITIONS(bte, NO_NAN_CHECK, 
MIN_MAX, IMP);                 \
+                       ANALYTICAL_MIN_MAX_PARTITIONS(bte, MIN_MAX, IMP);       
                \
                        break;                                                  
\
                case TYPE_sht:                                                  
\
-                       ANALYTICAL_MIN_MAX_PARTITIONS(sht, NO_NAN_CHECK, 
MIN_MAX, IMP);                 \
+                       ANALYTICAL_MIN_MAX_PARTITIONS(sht, MIN_MAX, IMP);       
                \
                        break;                                                  
\
                case TYPE_int:                                                  
\
-                       ANALYTICAL_MIN_MAX_PARTITIONS(int, NO_NAN_CHECK, 
MIN_MAX, IMP);                 \
+                       ANALYTICAL_MIN_MAX_PARTITIONS(int, MIN_MAX, IMP);       
                \
                        break;                                                  
\
                case TYPE_lng:                                                  
\
-                       ANALYTICAL_MIN_MAX_PARTITIONS(lng, NO_NAN_CHECK, 
MIN_MAX, IMP);                 \
+                       ANALYTICAL_MIN_MAX_PARTITIONS(lng, MIN_MAX, IMP);       
                \
                        break;                                                  
\
                        ANALYTICAL_MIN_MAX_LIMIT(MIN_MAX, IMP)                  
        \
                case TYPE_flt:                                                  
\
-                       ANALYTICAL_MIN_MAX_PARTITIONS(flt, NAN_CHECK, MIN_MAX, 
IMP);                    \
+                       ANALYTICAL_MIN_MAX_PARTITIONS(flt, MIN_MAX, IMP);       
                \
                        break;                                                  
\
                case TYPE_dbl:                                                  
\
-                       ANALYTICAL_MIN_MAX_PARTITIONS(dbl, NAN_CHECK, MIN_MAX, 
IMP);                    \
+                       ANALYTICAL_MIN_MAX_PARTITIONS(dbl, MIN_MAX, IMP);       
                \
                        break;                                                  
\
                default: {                                                      
\
                        if (p) {                                                
\
@@ -1076,7 +1072,7 @@ ANALYTICAL_MIN_MAX(min, MIN, >)
 ANALYTICAL_MIN_MAX(max, MAX, <)
 
 /* Counting no nils for fixed sizes */
-#define ANALYTICAL_COUNT_NO_NIL_FIXED_UNBOUNDED_TILL_CURRENT_ROW(TPE, 
NAN_CHECK) \
+#define ANALYTICAL_COUNT_NO_NIL_FIXED_UNBOUNDED_TILL_CURRENT_ROW(TPE) \
        do { \
                curval = 0; \
                if (count_all) { \
@@ -1084,9 +1080,9 @@ ANALYTICAL_MIN_MAX(max, MAX, <)
                                TPE v = bp[k]; \
                                j = k++; \
                                curval++; \
-                               while (k < i && (bp[k] == v NAN_CHECK(TPE, k))) 
{ \
+                               while (k < i && bp[k] == v) { \
+                                       curval++; \
                                        k++; \
-                                       curval++; \
                                } \
                                for (; j < k; j++) \
                                        rb[j] = curval; \
@@ -1095,10 +1091,10 @@ ANALYTICAL_MIN_MAX(max, MAX, <)
                        for (; k < i;) { \
                                TPE v = bp[k]; \
                                j = k++; \
-                               curval += !is_##TPE##_nil(bp[k]); \
-                               while (k < i && (bp[k] == v NAN_CHECK(TPE, k))) 
{ \
+                               curval += !is_##TPE##_nil(v); \
+                               while (k < i && bp[k] == v) { \
+                                       curval += !is_##TPE##_nil(bp[k]); \
                                        k++; \
-                                       curval += !is_##TPE##_nil(bp[k]); \
                                } \
                                for (; j < k; j++) \
                                        rb[j] = curval; \
@@ -1106,7 +1102,7 @@ ANALYTICAL_MIN_MAX(max, MAX, <)
                }       \
        } while (0)
 
-#define ANALYTICAL_COUNT_NO_NIL_FIXED_CURRENT_ROW_TILL_UNBOUNDED(TPE, 
NAN_CHECK) \
+#define ANALYTICAL_COUNT_NO_NIL_FIXED_CURRENT_ROW_TILL_UNBOUNDED(TPE) \
        do { \
                curval = 0; \
                if (count_all) { \
@@ -1114,9 +1110,9 @@ ANALYTICAL_MIN_MAX(max, MAX, <)
                                TPE v = bp[j]; \
                                l = j--; \
                                curval++; \
-                               while (j >= k && (bp[j] == v NAN_CHECK(TPE, 
j))) { \
+                               while (j >= k && bp[j] == v) { \
+                                       curval++; \
                                        j--; \
-                                       curval++; \
                                } \
                                m = MAX(k, j); \
                                for (; l >= m; l--) \
@@ -1127,9 +1123,9 @@ ANALYTICAL_MIN_MAX(max, MAX, <)
                                TPE v = bp[j]; \
                                l = j--; \
                                curval += !is_##TPE##_nil(bp[j]); \
-                               while (j >= k && (bp[j] == v NAN_CHECK(TPE, 
j))) { \
+                               while (j >= k && bp[j] == v) { \
+                                       curval += !is_##TPE##_nil(bp[j]); \
                                        j--; \
-                                       curval += !is_##TPE##_nil(bp[j]); \
                                } \
                                m = MAX(k, j); \
                                for (; l >= m; l--) \
@@ -1139,7 +1135,7 @@ ANALYTICAL_MIN_MAX(max, MAX, <)
                k = i; \
        } while (0)
 
-#define ANALYTICAL_COUNT_NO_NIL_FIXED_ALL_ROWS(TPE, NAN_CHECK) \
+#define ANALYTICAL_COUNT_NO_NIL_FIXED_ALL_ROWS(TPE) \
        do { \
                if (count_all) { \
                        curval = i - k; \
@@ -1154,7 +1150,7 @@ ANALYTICAL_MIN_MAX(max, MAX, <)
                }       \
        } while (0)
 
-#define ANALYTICAL_COUNT_NO_NIL_FIXED_CURRENT_ROW(TPE, NAN_CHECK) \
+#define ANALYTICAL_COUNT_NO_NIL_FIXED_CURRENT_ROW(TPE) \
        do { \
                if (count_all) { \
                        for (; k < i; k++) \
@@ -1165,7 +1161,7 @@ ANALYTICAL_MIN_MAX(max, MAX, <)
                } \
        } while (0)
 
-#define ANALYTICAL_COUNT_NO_NIL_FIXED_OTHERS(TPE, NAN_CHECK) \
+#define ANALYTICAL_COUNT_NO_NIL_FIXED_OTHERS(TPE) \
        do { \
                if (count_all) { \
                        for (; k < i; k++) \
@@ -1194,8 +1190,8 @@ ANALYTICAL_MIN_MAX(max, MAX, <)
                                        j = k++; \
                                        curval++; \
                                        while (k < i && cmp(base + ((const 
var_t *) bheap)[k], v) == 0) { \
+                                               curval++; \
                                                k++; \
-                                               curval++; \
                                        } \
                                        for (; j < k; j++) \
                                                rb[j] = curval; \
@@ -1206,8 +1202,8 @@ ANALYTICAL_MIN_MAX(max, MAX, <)
                                        j = k++; \
                                        curval++; \
                                        while (k < i && cmp(Tloc(b, k), v) == 
0) { \
+                                               curval++; \
                                                k++; \
-                                               curval++; \
                                        } \
                                        for (; j < k; j++) \
                                                rb[j] = curval; \
@@ -1220,8 +1216,8 @@ ANALYTICAL_MIN_MAX(max, MAX, <)
                                        j = k++; \
                                        curval += cmp(v, nil) != 0; \
                                        while (k < i && cmp(base + ((const 
var_t *) bheap)[k], v) == 0) { \
+                                               curval += cmp(base + ((const 
var_t *) bheap)[k], nil) != 0; \
                                                k++; \
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to