Hi John, Thanks for looking into it...what file did you have to change? I'll back port it into 1.2.3 and give it a try..
Cheers, Teryl On Wed, Mar 21, 2012 at 12:47 AM, K. John Wu <[email protected]> wrote: > Hi, Teryl, > > Thanks for the test case. The problem turned out to not too hard to > fix -- Please check out SVN revision 497 from codeforge.lbl.gov with > the following command > > svn checkout https://codeforge.lbl.gov/anonscm/fastbit > > Please let me know if this fix the problem for you. > > Thanks again. > > John > > > > > On 3/20/12 5:02 PM, Teryl Taylor wrote: > > Hi John, > > > > Sure, here is the code to demonstrate the problem: > > > > > > > --------------------------------------------------------------------------------------------- > > #include <stdlib.h> > > #include <stdio.h> > > #include <iostream> > > #include <bitvector.h> > > > > int main(int argc, char *argv[]) { > > ibis::bitvector bv; > > ibis::bitvector bv2; > > > > bv2.setBit(0,1); > > bv2.print(std::cout); > > for(int i = 0; i < 315; i++) > > { > > bv.setBit(i, 0); > > } > > bv.setBit(315,1); > > bv.print(std::cout); > > bv = bv2; > > bv.print(std::cout); > > } > > > > ______________________________________________________ > > > > > > The output of this is: > > > > > > This bitvector stores 0 bits of a 1-bit (1 set) sequence in a 0-word > > array and one bit in the active word > > 0 1 1 2 2 3 > > 0123456789012345678901234567890 > > ------------------------------- > > 40000000 1 > > > > This bitvector stores 310 bits of a 316-bit (1 set) sequence in a > > 1-word array and 6 bits in the active word > > 0 1 1 2 2 3 > > 0123456789012345678901234567890 > > ------------------------------- > > 0 8000000a 310*0 > > 02000000 000001 > > > > This bitvector stores 310 bits of a 311-bit (1 set) sequence in a > > 1-word array and one bit in the active word > > 0 1 1 2 2 3 > > 0123456789012345678901234567890 > > ------------------------------- > > 0 8000000a 310*0 > > 40000000 1 > > > > > -------------------------------------------------------------------------------------------------------- > > > > Note that bv still has 310 0's out front when it should just be a > > single 1.... > > > > > > Hope that helps, > > > > I fixed it by calling clear on bv before reassigning it.... Perhaps > > clear should be called inside the "=" operator. > > > > If you need anything else, let me know..... > > > > Cheers, > > > > Teryl > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Tue, Mar 20, 2012 at 7:20 PM, K. John Wu <[email protected] > > <mailto:[email protected]>> wrote: > > > > Hi, Teryl, > > > > Thanks for your patience. I imagine that you have a small test > > program that demonstrate this little problem. Would you mind sharing > > it with us? It would save me some trouble of recreate it. > > > > Thanks. > > > > John > > > > > > > > On 3/19/12 1:19 PM, Teryl Taylor wrote: > > > Okay, looks like I found the problem. The problem isn't with > > > adjustSize, it's with the bitvector "=" operator. I had the > > > following setup similar to this: > > > > > > bitvector bitv = "0000000000000000000000000000000000" > > > bitvector bitv2 = "1"; > > > > > > I did a > > > bitv = bitv2 > > > > > > and expected bitv = "1" > > > but it actually was bitv = "0000000000000000000000000000000001" > > > > > > So that screwed up the |= operation further down. > > > > > > The work around I used to solve this was to clear bitv before > > > assigning bitv2. > > > > > > bitv.clear(); > > > bitv = bitv2; > > > > > > now bitv = "1" > > > > > > > > > Not sure if that is the intended usage of "=". > > > > > > Thanks John! > > > > > > Take Care, > > > > > > Teryl > > > > > > > > > > > > > > > > > > On Mon, Mar 19, 2012 at 2:56 PM, Teryl Taylor > > <[email protected] <mailto:[email protected]> > > > <mailto:[email protected] <mailto:[email protected]>>> > > wrote: > > > > > > Hi John, > > > > > > So looking into this a little more, it looks like appendFill > > (used > > > by adjustSize) pushes the existing bitmap over and fills in the > > > LSBs. So if I have a bitmap with 1 at the zero element, and I > > > adust the size, to 10, the 1 gets pushed to over 10. Was > > this the > > > intended functionality of the function? I'm looking for > > something > > > that will leave the 1 in it's same location and put the zeros > on > > > the other side of it. Is there an easy way to do that? > > > > > > Best Regards, > > > > > > Teryl > > > > > > > > > On Mon, Mar 19, 2012 at 12:40 PM, Teryl Taylor > > > <[email protected] <mailto:[email protected]> > > <mailto:[email protected] <mailto:[email protected]>>> > > wrote: > > > > > > Hi John, > > > > > > It looks like the adjustSize is the problem. If I call > > > adjustsSize(0, 316) on the vector, it prepends the zeros to > > > the front of the bitvector instead of appending the zeros > to > > > the end of the bitvector. > > > > > > Is that the intended functionality of adjustSize? > > > > > > Cheers, > > > > > > Teryl > > > > > > > > > > > > > > > On Fri, Mar 16, 2012 at 2:13 PM, K. John Wu <[email protected] > > <mailto:[email protected]> > > > <mailto:[email protected] <mailto:[email protected]>>> wrote: > > > > > > Hi, Teryl, > > > > > > Looks like the code for handling tow bitvectors with > > > differing sizes > > > has some bugs in it. I will look into the problem. In > > > the mean time, > > > simply making sure the two bitvectors represents the > > same > > > number of > > > bits should give the desired answer. The function > > to use > > > to make sure > > > the shorter one has the same number of bits as the > > longer > > > one is > > > ibis::bitvector::adjustSize. This function takes two > > > arguments, it > > > will fill the bitvector with 1s until the position > given > > > by the first > > > argument and then fill the remaining positions with 0s > > > until the > > > second argument. > > > > > > Good luck. > > > > > > John > > > > > > PS: The documentation of ibis::bitvector::adjustSize is > > > available > > > online at > > > > > > > > > http://lbl.gov/~kwu/fastbit/doc/html/classibis_1_1bitvector.html#a96d95020682574405a91ac6dfed1da69 > > < > http://lbl.gov/%7Ekwu/fastbit/doc/html/classibis_1_1bitvector.html#a96d95020682574405a91ac6dfed1da69 > > > > > > > < > http://lbl.gov/%7Ekwu/fastbit/doc/html/classibis_1_1bitvector.html#a96d95020682574405a91ac6dfed1da69 > > > > > > > > > > > > > > On 3/16/12 9:31 AM, Teryl Taylor wrote: > > > > Hi John, > > > > > > > > I hope all is going well! I'm playing around > > with the > > > > ibis::bitvector API and I'm seeing some peculiar > > > behavior. I'm > > > > trying to AND two bitmaps of different sizes > > > together.... The first > > > > bitmap looks as follows: > > > > > > > > > > > > > > > > > > > > > > +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > > > > > ----------------------------------------------------------- > > > > > > > > This bitvector stores 0 bits of a 1-bit (1 set) > > sequence > > > in a 0-word > > > > array and one bit in the active word > > > > 0 1 1 2 2 3 > > > > 0123456789012345678901234567890 > > > > ------------------------------- > > > > 40000000 1 > > > > > > ----------------------------------------------------------- > > > > > > > > > > > > > > > > > > +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > > > It has one set bit, and that is the zeroth bit in the > > > bitmap. It is > > > > basically one 32 bit literal. > > > > > > > > > > > > I want to And it with the following bitmap which > > is 326 > > > bits long > > > > which is basically all 1's. > > > > > > > > > > > > > > > > > > +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > > > > > > > This bitvector stores 310 bits of a 326-bit (326 set) > > > sequence in a > > > > 1-word array and 16 bits in the active word > > > > 0 1 1 2 2 3 > > > > 0123456789012345678901234567890 > > > > ------------------------------- > > > > 0 c000000a 310*1 > > > > 7fff8000 1111111111111111 > > > > > > > > > > > > > > > > > > +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > > > > > > > Now, the first bitmap, should match with the first > bit > > > of the second > > > > bitmap (so, basically the first bitmap should be > > seen as > > > 326 bits > > > > long...with the first bit being set to 1, and the > rest > > > zeros). So > > > > when I AND the two together, I want the result to be > a > > > bitvector with > > > > the first bit set to one, and the following 325 > > bits all > > > set to zero. > > > > > > > > > > > > But what I'm seeing is the following result: > > > > > > > > > > > > > > +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > > > > > > > This bitvector stores 310 bits of a 326-bit (1 set) > > > sequence in a > > > > 1-word array and 16 bits in the active word > > > > 0 1 1 2 2 3 > > > > 0123456789012345678901234567890 > > > > ------------------------------- > > > > 0 8000000a 310*0 > > > > 40000000 1000000000000000 > > > > > > > > > > > > > > +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > > > Which has 310 0's before the one bit is set.... I'm > > > using the &= > > > > operator to do operation. so it goes smallBitmap &= > > > bigBitmap. > > > > > > > > > > > > Is there an easy way to get the answer I am > > looking for? > > > Or am I > > > > using the bitvectors incorrectly? > > > > > > > > > > > > Best Regards, > > > > > > > > > > > > Teryl > > > > > > > > > > > > > > > > > > > > _______________________________________________ > > > > FastBit-users mailing list > > > > [email protected] > > <mailto:[email protected]> > > > <mailto:[email protected] > > <mailto:[email protected]>> > > > > > > > > > https://hpcrdm.lbl.gov/cgi-bin/mailman/listinfo/fastbit-users > > > > > > > > > > > > > > > > >
_______________________________________________ FastBit-users mailing list [email protected] https://hpcrdm.lbl.gov/cgi-bin/mailman/listinfo/fastbit-users
