X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=libcds%2Fsrc%2Fstatic_bitsequence%2Fstatic_bitsequence.cpp;h=e4740ea43023856ad358ac8d06360db3f29cb3c0;hb=bbeeb03980ddf51c0f32fd3c42321dc9ef708c27;hp=65de9c40bc12617160adb773471b5cfa8ac42d35;hpb=0bf9688e2615a9fc07860c5762240e4ce26ee5d3;p=SXSI%2FXMLTree.git diff --git a/libcds/src/static_bitsequence/static_bitsequence.cpp b/libcds/src/static_bitsequence/static_bitsequence.cpp index 65de9c4..e4740ea 100644 --- a/libcds/src/static_bitsequence/static_bitsequence.cpp +++ b/libcds/src/static_bitsequence/static_bitsequence.cpp @@ -26,8 +26,9 @@ uint static_bitsequence::rank0(uint i) { } uint static_bitsequence::rank1(uint i) { - if(i>=len) return ones; - if(ones==0) return -1; + if(i>=len) return (uint)-1; + if(ones==0) return 0; + if(ones==len) return i+1; uint ini = 1; uint fin = ones; while(inilen-ones) return len; + if(i>len-ones) return -1; if(i==0) return -1; + if(ones==0) return i-1; uint ini = 0; uint fin = len-1; while(iniones) return len; - if(i==0) return 0; + if(i>ones) return -1; + if(i==0) return -1; + if(ones==len) return i-1; uint ini = 0; uint fin = len-1; while(ini