X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=libcds%2Fsrc%2Fstatic_bitsequence%2Fstatic_bitsequence.cpp;fp=libcds%2Fsrc%2Fstatic_bitsequence%2Fstatic_bitsequence.cpp;h=e4740ea43023856ad358ac8d06360db3f29cb3c0;hb=bbeeb03980ddf51c0f32fd3c42321dc9ef708c27;hp=7813d8cc5297de873c46bce35577457353070891;hpb=6a9117a97674437c9fe00b099c40ccb61d45d704;p=SXSI%2FXMLTree.git diff --git a/libcds/src/static_bitsequence/static_bitsequence.cpp b/libcds/src/static_bitsequence/static_bitsequence.cpp index 7813d8c..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