search.cpan.org is shutting down
Hugo W.L. ter Doest > Statistics-MaxEntropy-0.9 > Statistics::SparseVector
Module Version: 0.1   Source   Latest Release: Statistics-MaxEntropy-1.0

NAME

Statistics::SparseVector - Perl5 extension for manipulating sparse bitvectors

SYNOPSIS

``` use Statistics::SparseVector;

# methods that create new bitvectors
\$vec = Statistics::SparseVector->new(\$n);
\$vec2 = \$vec1->Clone();
\$vec = Statistics::SparseVector->new_Enum(\$s, \$n);
\$vec = Statistics::SparseVector->new_Bin(\$s, \$n);

# miscellaneous
\$vec2->Substitute_Vector(\$vec1, \$of22, \$len2, \$off1, \$len1);
\$vec->Size();
\$vec->to_Enum();
\$vec->to_Bin();
\$vec->Fill();
\$vec->Empty();
\$vec->increment();
\$n = \$vec->Norm();
@list = \$vec->indices();

# manipulation on the bit level
\$vec->Bit_Off(\$i);
\$vec->Bit_On(\$i);
\$vec->bit_flip(\$i);
\$vec->bit_test(\$i);

# increment
\$vec++;
# stringify
"\$vec"```

DESCRIPTION

This module implements sparse bitvectors. Several methods for manipulating bitvectors are implemented. On purpose the naming of the methods is identical to the Bit::Vector package by Stephen Beyer; if you find your vectors to be sparse (have little bits that are on) you can easily switch to a less memory consuming representation.

Creation of bitvectors

`new`
` \$vec = Statistics::BitVector->new(\$n);`

A bitvector of length `\$n` is created. All bits are zero.

`Clone`
` \$clone = \$vec->Clone();`

A copy of `\$vec` is returned.

`new_Enum`
` \$vec = Statistics::BitVector->new_Enum(\$enumstring, \$n);`

A new bitvector of length `\$n` is created from the comma-separated list of in `\$enumstring`.

`new_Bin`
` \$vec = Statistics::BitVector->new_Bin(\$bitstring, \$n);`

A new bitvector of length `\$n` is created from bitstring `\$bitstring`.

Vector-wide manipulation of bits

`Substitute_Vector`
` \$vec2->Substitute_Vector(\$vec1, \$off2, \$len2, \$off1, \$len1);`

`\$len2` contiguous bits in target vector `\$vec2` starting from `\$off2` are replaced by `\$len1` contiguous bits from source vector `\$vec1` starting at bit `\$off1`. If `\$off2` equals the length of `\$vec2` the bits from `\$vec1` are appended. If `\$len1` is zero the `\$len2` bits from `\$vec2` are deleted.

`Fill`
` \$vec->Fill();`

All bits of `\$vec` are set to one.

`Empty`
` \$vec->Empty();`

All bits of `\$vec` are set to zero.

`increment`
` \$vec->increment(); \$vec++;`

The integer value of the bitvector is increased by one.

`Bit_Off`
` \$vec->Bit_Off(\$i);`

Bit `\$i` is set to zero.

`Bit_On`
` \$vec->Bit_On(\$i);`

Bit `\$i` is set to one.

`bit_flip`
` \$vec->bit_flip(\$i);`

Bit `\$i` is flipped.

`bit_test`
` \$vec->bit_test(\$i);`

Returns `1` if bit `\$i` is one, `0` otherwise.

Miscellany

`Size`
` \$n = \$vec->Size();`

Returns the size of the vector.

`to_Enum`
` \$enumstring = \$vec->to_Enum();`

Returns a comma-separated list of bits that are set.

`indices`

Returns an array of indices of bits that are set.

`to_Bin`
` \$bitstring = \$vec->to_Bin();`

Returns a bitstring; bits should be read from right to left.

`Norm`

Returns the number of set bits.

`++`
` \$vec++;`

Same as method `increment`.

Double quotes
` \$string = "\$vec";`

`Data::Dumper` wants to stringify vectors. Probably because `Statistics::SparseVector` is an overloaded package it expects double quotes to be overloaded as well.

• Internally sparse vectors are represented by hashes.
• Only a few methods from Bit::Vector are implemented. Maybe new ones will follow in the future.
• Method `Substitute_Vector` is not thorougly debugged.

Version 0.1.

AUTHOR

`Statistics::MaxEntropy` comes with ABSOLUTELY NO WARRANTY and may be copied only under the terms of the GNU Library General Public License (version 2, or later), which may be found in the distribution.