Changeset: 9d002481bbe9 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9d002481bbe9
Modified Files:
        monetdb5/extras/bwd/operations.c
        monetdb5/extras/bwd/utilities.c
Branch: bwd
Log Message:

* fixed that I used to use one bit to few when the value range was entirely 
covered (i.e., values 0 to 8 actually need four bits, not three)


Unterschiede (49 Zeilen):

diff --git a/monetdb5/extras/bwd/operations.c b/monetdb5/extras/bwd/operations.c
--- a/monetdb5/extras/bwd/operations.c
+++ b/monetdb5/extras/bwd/operations.c
@@ -1362,13 +1362,13 @@ str BWDGroupedSumApproximate(int *retid,
        return result;
 }
 
-str AX3aggrX3_sum3_int_int(int *retid,int *bid, int *gid, int *eid);
+str AX3aggrX3_sum3_int_lng(int *retid,int *bid, int *gid, int *eid);
 str BWDGroupedSumRefine(int *retid,int *bid, int *gid, int *eid, bat* approx){
        /* BAT *left = BATdescriptor(*bid2); */
        /* BAT* result = BATnew(TYPE_void, TYPE_int, 0); */
        /* BBPreleaseref(left->batCacheid); */
        /* BBPkeepref(*retid = result->batCacheid); */
-       return AX3aggrX3_sum3_int_int(retid, bid, gid, eid);
+       return AX3aggrX3_sum3_int_lng(retid, bid, gid, eid);
        /* BBPincref(*retid = *approx, 1); */
        return MAL_SUCCEED;
 }
diff --git a/monetdb5/extras/bwd/utilities.c b/monetdb5/extras/bwd/utilities.c
--- a/monetdb5/extras/bwd/utilities.c
+++ b/monetdb5/extras/bwd/utilities.c
@@ -404,7 +404,7 @@ void forceLoadOntoGPU(clTail* approximat
 
 unsigned int decomposeIntArray(const int* subject, const size_t size, const 
size_t baseBitsPlusApproximationBits, bat* batID){
        const bounds subjectBounds = findBounds(subject,size);
-       const int neededBits = ceil(log2(subjectBounds.max - 
subjectBounds.min));
+       const int neededBits = ceil(log2(subjectBounds.max - subjectBounds.min 
+ 1));
        const unsigned int newIndex = getNextFreeDecomposedBATSlotIndex(*batID);
        DecomposedBATSlot* slot = getDecomposedBATSlotForIndex(newIndex);
        const unsigned int residualBits = 32-baseBitsPlusApproximationBits;
@@ -500,7 +500,7 @@ unsigned int transferOIDArray(const oid*
 
 unsigned int decomposeLngArray(const lng* subject, const size_t size, const 
size_t baseBitsPlusApproximationBits, bat* batID){
        const bounds subjectBounds = findLngBounds(subject,size);
-       const int neededBits = ceil(log2(subjectBounds.max - 
subjectBounds.min));
+       const int neededBits = ceil(log2(subjectBounds.max - subjectBounds.min 
+ 1));
 
        const unsigned int newIndex = getNextFreeDecomposedBATSlotIndex(*batID);
        DecomposedBATSlot* slot = getDecomposedBATSlotForIndex(newIndex);
@@ -577,7 +577,7 @@ bounds findVarchar1Bounds(const char* su
 
 unsigned int decomposeVarchar1Array(const char* subject, const size_t size, 
const size_t width, const char* dictionary, const size_t 
baseBitsPlusApproximationBits, bat* batID){
        const bounds subjectBounds = findVarchar1Bounds(subject, size, width, 
dictionary);
-       const int neededBits = ceil(log2(subjectBounds.max - 
subjectBounds.min));
+       const int neededBits = ceil(log2(subjectBounds.max - subjectBounds.min 
+ 1));
        const unsigned int newIndex = getNextFreeDecomposedBATSlotIndex(*batID);
        DecomposedBATSlot* slot = getDecomposedBATSlotForIndex(newIndex);
        const unsigned int residualBits = 8-baseBitsPlusApproximationBits;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to