===================================== Package "Bit::Vector" Version 7.4 ===================================== Copyright (c) 1995 - 2013 by Steffen Beyer. All rights reserved. Credits: -------- Many thanks to Andreas Koenig <firstname.lastname@example.org> for his efforts as upload-manager for the CPAN, his patience, and lots of good advice and suggestions! Thank you for doing such a tremendous (and time- consuming) job!! Also many thanks to David Jenkins <email@example.com> for reviewing the first version of the README file and the man page. Many thanks to Jarkko Hietaniemi <Jarkko.Hietaniemi@hut.fi> for his suggestions while I was developing the first release of this package! Many thanks also to the people of the perl5-porters <firstname.lastname@example.org> mailing list, specifically: Andreas Koenig <email@example.com> Tim Bunce <Tim.Bunce@ig.co.uk> Jarkko Hietaniemi <Jarkko.Hietaniemi@hut.fi> Felix Gallo <firstname.lastname@example.org> Mark A Biggar <email@example.com> Nick Ing-Simmons <firstname.lastname@example.org> John Macdonald <email@example.com> for discussing and clarifying the naming and other issues of this package! Also many thanks to David Thompson <firstname.lastname@example.org> for reporting a problem he encountered concerning the inclusion of the Perl distribution ("Unable to find include file ...") and for suggesting a solution for this problem. (That's the most pleasant kind of problem report, of course! ;-) ) Many thanks to Rob Johnson <email@example.com> for an improved algorithm for computing binomials with always integer intermediate results (and numbers never getting too big)! Thanks to Banchong Harangsri <firstname.lastname@example.org> for reporting the problem of the version 1.1 of this module with Perl 5.002! Special thanks to Dean Roehrich <email@example.com> for his assistance in trying to find the cause of and a remedy for the above problem! Many thanks to Andreas Koenig for notifying me of the alternative for the directory structure using the "lib" subdirectory and a way to use "confess" in an XSUB via "perl_eval_sv". Many special thanks to Larry Schwimmer <firstname.lastname@example.org> for reporting the bug related to 64 bit machines and finding where an implicit assumption of 32 bit integers was hidden, and for testing the new version on his machine! Many thanks to Ralf S. Engelschall <email@example.com> for suggesting the four new methods "Size()", "Empty_Interval()", "Fill_Interval()" and "Flip_Interval()", implemented in version 3.0 of the "Set::IntegerFast" module (and also in the "Set::IntegerRange" module)! Also many thanks to Ralf Engelschall for the many good suggestions that went into version 4.0 of this package (concerning many different aspects)! Many thanks to Stas Bekman <firstname.lastname@example.org> for raising the question of bitwise shift and rotation operations in Perl, which gave me the idea to implement such shift registers with arbitrary size, which in turn and with time gave me the idea of implementing a "Bit::Vector" base class capable of this along with already existing functionality (for sets and boolean matrices). Also many thanks to Jon Orwant <email@example.com> and Tim Bunce <Tim.Bunce@ig.co.uk> for their suggestions and comments concerning my first attempts at writing a module for bitwise shift and rotate operations in Perl, which eventually went into version 4.0 of this module! Many thanks to Brian S. Julin <firstname.lastname@example.org> for sharing his ideas, his questions and the code of his "Bit::File" module with me, which inspired me to write the routines to access arbitrary chunks of bits. Many thanks to Hau-Yung Chen <email@example.com> for suggesting the string conversion routines to convert to/from binary representation and the possibility to concatenate bit vectors. Many thanks to Jarkko Hietaniemi <Jarkko.Hietaniemi@hut.fi> for suggesting the implementation of the transpose of a matrix in C for better performance. The transpose can be used in finding the strongly connected components of a graph. Many thanks go to Daniel Koch <firstname.lastname@example.org> for suggesting the "Index_List_Store()" and "Index_List_Read()" methods! Many thanks again to Hau-Yung Chen <email@example.com> for suggesting a way for speeding up the conversion to decimal in "to_Dec()" (by dividing the bit vector through the largest possible power of ten that will fit into a machine word and then breaking down the rest using only machine words, which is faster than repeatedly dividing the whole bit vector by ten). According to my measurements, this resulted in an 8-fold speed increase. Many thanks go to Krzysztof Koczyjan <firstname.lastname@example.org> for suggesting and extensively benchmarking a more efficient method for bit counting in the method "Norm()", which was adopted in version 5.2. Many thanks again to Krzysztof Koczyjan <email@example.com> for an additional improvement of the method "Norm()", which was adopted in version 5.3. Many thanks to Bryan Bayerdorffer <firstname.lastname@example.org> for notifying me of the bug in the "Divide()" method, which was immediately fixed in version 5.4. Many thanks to Rob W. Koeling <email@example.com> for reporting and to Paul J. Schinder <firstname.lastname@example.org> for reporting and helping to investigate the error of the failed tests 96-131 of test script "t/01________new.t" under HP-UX 10! This was fixed in version 5.5. Many thanks to the "CPAN testers" (http://www.connect.net/gbarr/cpan-test/) in general and to Jarkko Hietaniemi <email@example.com> in particular for testing this module and for reporting the compiler warning which occurred on line 2067 of "BitVector.c" with the native "cc" compiler under Digital Unix, which has been fixed in version 5.6. Also many thanks to Matt Knecht <firstname.lastname@example.org> for pushing me hard enough ;-) to suppress those annoying leading zeros in the output from "to_Hex()" in version 5.6! Many thanks to Roland Titze <Roland.Titze@ks.sel.alcatel.de> and to Andrew Brown <email@example.com> for pointing out the misspelling of "whether" (was: wether) throughout my documentation, corrected in version 5.8. Thanks also go to Steve Tolkin <firstname.lastname@example.org> for suggesting that I should emphasize in the README.txt file that the reading of the INSTALL.txt file is important, especially if running Perl under Windows. :-) Many special thanks to Joshua N. Pritikin <email@example.com> for sending in valuable patches to make this module ready for Perl 5.6.0 and to optimize the "strEQ" away from the typemap section in Vector.xs. Lots of thanks also to Yitzchak Scott-Thoennes <firstname.lastname@example.org> for sending in a patch to make this module ready for Perl 5.6.0 and for extremely useful hints (and a patch) as to why the test suite had failures with Perl 5.6.0 all of a sudden. Many thanks to John Peacock <email@example.com> for reporting a problem with the VMS linker which is unable to differentiate case - in violation of the ANSI C standard - and for sending a patch to fix this problem. Many thanks to Tom Oelke <firstname.lastname@example.org> for reporting a problem with test "t/01________new.t" when Perl was built to use 64 bit integers and for suggesting two possible fixes. The second one (adding "use integer;" at the top of the script) was adopted in version 6.2. Many thanks to Clint Olsen <email@example.com> for his many interesting questions and suggestions, one of which led to my writing the new example file "examples/test.c" in version 6.2. Many thanks to Tels <firstname.lastname@example.org> for his criticism of "GCD()" and the documentation (with respect to common method name aliases such as Or, And, Xor, etc.). Both weaknesses have been fixed in version 6.2. Many thanks to Mike Swieton <email@example.com> (and many other people in the past) for sending in a patch so that ToolBox.h will compile with C++ compilers. Many thanks to Runip Gopisetty <Runip.Gopisetty@Procket.com> for sending a patch for adding functions for generic string import and export functions. However, I decided to realize these in Perl instead (at least for the time being); you can find them in the new module "Bit::Vector::String". This way even octal representation and enumerations are supported. Many heartfelt thanks go to Jamie Blustein <firstname.lastname@example.org> / <email@example.com> / <jamie@ACM.org> for sending me the article "Performance Investigation of Bit-Counting Algorithms with a Speedup to Lookup Table", by Eyas El-Qawasmeh, Department of Computer Science and Information Systems, Jordan University of Science and Technology, cited from the Journal of Research and Practice in Information Technology, Vol. 32, No. 3/4, August/ November 2000, thus prompting my reconsideration of the implementation of the "Norm()" method in this module. See also his web pages, especially the pages about bit vectors, at: http://www.cs.dal.ca/~jamie/ http://www.csd.uwo.ca/~jamie/ http://www.csd.uwo.ca/%7ejamie/.Refs/code.html http://www.csd.uwo.ca/%7ejamie/publications.html#BitVectors http://www.csd.uwo.ca/~jamie/BitVectors/ Thanks a lot to Jesse Vincent <firstname.lastname@example.org> and to Alistair Francis <email@example.com> for reporting the ongoing problem with the boolean type in MacOS X and to Tatsuhiko Miyagawa (?) and Alistair Francis for providing patches. Also many thanks to Joost Diepenmaat <firstname.lastname@example.org> for alerting me about Bit::Vector not being thread-safe, and for providing a patch. Thanks a lot to Adam Kennedy <email@example.com> for telling me about STORABLE_attach. Many thanks to Stephen McCamant <smcc@CS.Berkeley.EDU> for alerting me about the fact that the function "BitVector_Boot()" in BitVector.c leaks memory if called more than once, because of the dynamic allocation of the BITMASKTAB. This has been fixed in version 6.6 and improved in version 6.8. Thanks a lot to Christopher Jones <firstname.lastname@example.org> for notifying me about the failing tests in "t/28___chunklist.t" under MacOs X / Darwin and for running some test scripts on his machine for me. Many thanks to Nicholas, Zefram, Slaven Rezic and Andreas Koenig for providing a patch for the definition of the "boolean" data type in Toolbox.h: http://cpan.cpantesters.org/authors/id/A/AN/ANDK/patches/Bit-Vector-7.1-ZEFRAMish-01.patch.gz Many thanks to Gisle Aas <GAAS@cpan.org> for his patch to make "t/02_____destroy.t" pass on perl-5.17.11. Many thanks to A. Bernardo Carvalho <email@example.com> for letting me use his modification of ToolBox.h in order to allow bit vectors with more than 2^32 bits. On most machines this will allow bit vectors with up to 2^64 bits. He needed this for and successfully used it in his research in genomics. See http://www.ncbi.nlm.nih.gov/pubmed/23921660 or http://genome.cshlp.org/content/early/2013/08/06/gr.156034.113.abstract for his corresponding paper.