search.cpan.org is shutting down
Hugo W.L. ter Doest > Statistics-MaxEntropy-1.0 > Statistics::SparseVector
Module Version: 0.2

# NAME

Statistics::SparseVector - Perl5 extension for representing and manipulating sparse binary and integer vectors

# SYNOPSIS

``` use Statistics::SparseVector;

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

# miscellaneous
\$vec2->Substitute_Vector(\$vec1, \$of22, \$len2, \$off1, \$len1);
\$vec->insert_column(\$pos, \$val);
\$vec->delete_column(\$pos);
\$vec->Size();
\$vec->to_Enum();
\$vec->to_Bin(\$sep);
\$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->Inc(\$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.

## 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 vector of length `\$n` is created from the comma-separated list of in `\$enumstring`.

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

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

`new_Int`
` \$vec = Statistics::BitVector->new_Int(\$n, \$intlist);`

A new vector of length `\$n` is created from whitespace-separated list of integers `\$intlist`.

## Vector-wide manipulation of vector elements

`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.

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

Delete position `\$i`, the other elements are shifted as necessary.

`insert_column`
` \$vec->insert_column(\$i, \$val);`

Insert a vector element at position `\$i` with value `\$val`.

`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.

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

The integer at position `\$i` is increased by 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(\$sep);`

Returns a string of bits separated by `\$sep`; bits should be read from left to right

`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.2.

# 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.