IT++ 4.3.1
|
Templated sparse vector class. More...
#include <itpp/base/svec.h>
Public Member Functions | |
Sparse_Vec () | |
Default constructor. | |
Sparse_Vec (int sz, int data_init=200) | |
Initiate an empty sparse vector. | |
Sparse_Vec (const Sparse_Vec< T > &v) | |
Initiate a new sparse vector. | |
Sparse_Vec (const Vec< T > &v) | |
Initiate a new sparse vector from a dense vector. | |
Sparse_Vec (const Vec< T > &v, T epsilon) | |
Initiate a new sparse vector from a dense vector. Elements of v larger than epsilon are copied into the new sparse vector. | |
~Sparse_Vec () | |
Destructor. | |
void | set_size (int sz, int data_init=-1) |
Set the size sz of the sparse vector. Default value data_init=-1 => allocated size for the data is not changed. | |
int | size () const |
Returns the size of the sparse vector. | |
int | nnz () |
Number of non-zero elements in the sparse vector. | |
double | density () |
Returns the density of the sparse vector: (number of non-zero elements)/(size of the vector) | |
void | set_small_element (const T &epsilon) |
Set that all elements smaller than epsilon should be set to zero. | |
void | remove_small_elements () |
void | resize_data (int new_size) |
Set the maximum number of non-zero elements to new_size . | |
void | compact () |
Set the maximum number of non-zero elements equal to the actual number of non-zero elements. | |
void | full (Vec< T > &v) const |
Returns a full, dense vector in v . | |
Vec< T > | full () const |
Returns a full, dense vector. | |
T | operator() (int i) const |
Returns the element with index i . | |
void | set (int i, T v) |
Set element i equal to v . | |
void | set (const ivec &index_vec, const Vec< T > &v) |
Set the elements of the sparse vector with indices index_vec to the values in v . | |
void | set_new (int i, T v) |
Set a new element with index i equal to v . | |
void | set_new (const ivec &index_vec, const Vec< T > &v) |
Set new elements with indices index_vec equal to the values in v (no check whether the same index is used several times) | |
void | add_elem (const int i, const T v) |
Add element i with v . | |
void | add (const ivec &index_vec, const Vec< T > &v) |
Add v to the elements specified by index_vec with v . | |
void | zeros () |
Set the sparse vector to the all zero vector (removes all non-zero elements) | |
void | zero_elem (const int i) |
Set the i-th element to zero (i.e. clear that element if it contains a non-zero value) | |
void | clear () |
Clear all non-zero elements of the sparse vector. | |
void | clear_elem (const int i) |
Clear the i-th element (if it contains a non-zero value) | |
void | get_nz_data (int p, T &data_out) |
Extract the reference to the p-th non-zero data element. | |
T | get_nz_data (int p) |
Returns the p-th non-zero data element. | |
int | get_nz_index (int p) |
Returns the vector index of the p-th non-zero element. | |
void | get_nz (int p, int &idx, T &dat) |
Returns the p-th non-zero value in dat and the corresponding vector index in idx . | |
ivec | get_nz_indices () |
Return the indices of non-zero values. | |
Sparse_Vec< T > | get_subvector (int i1, int i2) const |
Return sparse subvector from index i1 to index i2 . | |
T | sqr () const |
Returns the sum of all values squared. | |
void | operator= (const Sparse_Vec< T > &v) |
Assign sparse vector the value and length of the sparse vector v . | |
void | operator= (const Vec< T > &v) |
Assign sparse vector the value and length of the dense vector v . | |
Sparse_Vec< T > | operator- () const |
Returns the sign inverse of all elements in the sparse vector. | |
bool | operator== (const Sparse_Vec< T > &v) |
Compare two sparse vectors. False if wrong sizes or different values. | |
void | operator+= (const Sparse_Vec< T > &v) |
Add sparse vector v to all non-zero elements of the sparse vector. | |
void | operator+= (const Vec< T > &v) |
Add vector v to all non-zero elements of the sparse vector. | |
void | operator-= (const Sparse_Vec< T > &v) |
Subtract sparse vector v from all non-zero elements of the sparse vector. | |
void | operator-= (const Vec< T > &v) |
Subtract vector v from all non-zero elements of the sparse vector. | |
void | operator*= (const T &v) |
Multiply the scalar v to all non-zero elements of the sparse vector. | |
void | operator/= (const T &v) |
Divide all non-zero elements of the sparse vector with the scalar v . | |
Friends | |
Sparse_Vec< T > | operator+ (const Sparse_Vec< T > &v1, const Sparse_Vec< T > &v2) |
Addition v1+v2 where v1 and v2 are sparse vector. | |
T | operator* (const Sparse_Vec< T > &v1, const Sparse_Vec< T > &v2) |
Scalar product v1*v2 where v1 and v2 are sparse vectors. | |
T | operator* (const Sparse_Vec< T > &v1, const Vec< T > &v2) |
Scalar product v1*v2 where v1 is a sparse vector and v2 is a dense vector. | |
T | operator* (const Vec< T > &v1, const Sparse_Vec< T > &v2) |
Scalar product v1*v2 where v1 is a dense vector and v2 is a sparse vector. | |
Sparse_Vec< T > | elem_mult (const Sparse_Vec< T > &v1, const Sparse_Vec< T > &v2) |
Element wise multiplication of two sparse vectors. | |
Vec< T > | elem_mult (const Sparse_Vec< T > &v1, const Vec< T > &v2) |
Element wise multiplication of a sparse vector and a dense vector. | |
Sparse_Vec< T > | elem_mult_s (const Sparse_Vec< T > &v1, const Vec< T > &v2) |
Element wise multiplication of a sparse vector and a dense vector returning a sparse vector. | |
Vec< T > | elem_mult (const Vec< T > &v1, const Sparse_Vec< T > &v2) |
Element wise multiplication of a a dense vector and a sparse vector. | |
Sparse_Vec< T > | elem_mult_s (const Vec< T > &v1, const Sparse_Vec< T > &v2) |
Element wise multiplication of a a dense vector and a sparse vector returning a sparse vector. | |
Related Symbols | |
(Note that these are not member symbols.) | |
typedef Sparse_Vec< int > | sparse_ivec |
Type definition of an integer sparse vector. | |
typedef Sparse_Vec< double > | sparse_vec |
Type definition of a double sparse vector. | |
typedef Sparse_Vec< std::complex< double > > | sparse_cvec |
Type definition of a complex<double> sparse vector. | |
Templated sparse vector class.
A sparse vector is a vector where most elements are zero. The maximum number of none-zero elements is a parameter to the constructor. The elements are stored in random order, i.e. they are not sorted.
itpp::Sparse_Vec< T >::Sparse_Vec | ( | ) |
Default constructor.
Definition at line 388 of file svec.h.
Referenced by elem_mult, elem_mult, elem_mult, elem_mult_s, elem_mult_s, get_subvector(), operator*, operator*, operator*, operator+, operator+=(), operator-(), operator-=(), operator=(), operator==(), and Sparse_Vec().
itpp::Sparse_Vec< T >::Sparse_Vec | ( | int | sz, |
int | data_init = 200 ) |
itpp::Sparse_Vec< T >::Sparse_Vec | ( | const Sparse_Vec< T > & | v | ) |
Initiate a new sparse vector.
v | The elements of v are copied into the new sparse vector |
Definition at line 404 of file svec.h.
References Sparse_Vec().
itpp::Sparse_Vec< T >::Sparse_Vec | ( | const Vec< T > & | v | ) |
Initiate a new sparse vector from a dense vector.
v | The elements of v are copied into the new sparse vector |
Definition at line 421 of file svec.h.
References compact(), resize_data(), and itpp::Vec< Num_T >::size().
itpp::Sparse_Vec< T >::Sparse_Vec | ( | const Vec< T > & | v, |
T | epsilon ) |
Initiate a new sparse vector from a dense vector. Elements of v
larger than epsilon
are copied into the new sparse vector.
v
larger than abs(epsilon)
are copied into the new sparse vector. Definition at line 442 of file svec.h.
References std::abs(), compact(), resize_data(), and itpp::Vec< Num_T >::size().
itpp::Sparse_Vec< T >::~Sparse_Vec | ( | ) |
void itpp::Sparse_Vec< T >::set_size | ( | int | sz, |
int | data_init = -1 ) |
Set the size sz
of the sparse vector. Default value data_init=-1
=>
allocated size for the data is not changed.
sz | Size of the sparse vector (i.e. maximum index is (sz - 1)) |
data_init | Maximum number of non-zero elements in the sparse vector (default value -1 => allocated size for the data is not changed) |
|
inline |
Returns the size of the sparse vector.
Definition at line 155 of file svec.h.
Referenced by itpp::Sparse_Mat< T >::operator*, operator*, operator*, operator+=(), and operator-=().
|
inline |
Number of non-zero elements in the sparse vector.
Definition at line 158 of file svec.h.
Referenced by itpp::LDPC_Parity_Unstructured::cycle_removal_MGW(), get_nz_indices(), itpp::Sparse_Mat< T >::operator*, and itpp::Sparse_Mat< T >::operator*.
double itpp::Sparse_Vec< T >::density | ( | ) |
Returns the density of the sparse vector: (number of non-zero elements)/(size of the vector)
Definition at line 482 of file svec.h.
References remove_small_elements().
void itpp::Sparse_Vec< T >::set_small_element | ( | const T & | epsilon | ) |
Set that all elements smaller than epsilon should be set to zero.
Definition at line 492 of file svec.h.
References std::abs(), and remove_small_elements().
void itpp::Sparse_Vec< T >::remove_small_elements | ( | ) |
Removes all elements that are smaller than epsilon from the non-zero elements.
epsilon=0
. Definition at line 499 of file svec.h.
References std::abs().
Referenced by compact(), density(), itpp::Sparse_Vec< bin >::get_nz(), itpp::Sparse_Vec< bin >::get_nz_data(), itpp::Sparse_Vec< bin >::get_nz_data(), itpp::Sparse_Vec< bin >::get_nz_index(), itpp::Sparse_Vec< bin >::nnz(), operator==(), set(), and set_small_element().
void itpp::Sparse_Vec< T >::resize_data | ( | int | new_size | ) |
Set the maximum number of non-zero elements to new_size
.
new_size | The new maximum number of non-zero elements. |
Definition at line 524 of file svec.h.
References it_assert.
Referenced by add(), add_elem(), compact(), elem_mult, elem_mult_s, elem_mult_s, get_subvector(), operator+, operator=(), set(), set_new(), set_new(), Sparse_Vec(), and Sparse_Vec().
void itpp::Sparse_Vec< T >::compact | ( | ) |
Set the maximum number of non-zero elements equal to the actual number of non-zero elements.
Definition at line 547 of file svec.h.
References remove_small_elements(), and resize_data().
Referenced by elem_mult, elem_mult_s, elem_mult_s, get_subvector(), itpp::Sparse_Mat< T >::operator*, operator+, operator=(), Sparse_Vec(), and Sparse_Vec().
void itpp::Sparse_Vec< T >::full | ( | Vec< T > & | v | ) | const |
Returns a full, dense vector in v
.
Definition at line 556 of file svec.h.
References itpp::Vec< Num_T >::set_size().
Referenced by itpp::full(), and operator*.
Vec< T > itpp::Sparse_Vec< T >::full | ( | ) | const |
T itpp::Sparse_Vec< T >::operator() | ( | int | i | ) | const |
Returns the element with index i
.
Definition at line 575 of file svec.h.
References it_assert_debug.
void itpp::Sparse_Vec< T >::set | ( | int | i, |
T | v ) |
Set element i
equal to v
.
Definition at line 591 of file svec.h.
References std::abs(), it_assert_debug, remove_small_elements(), and resize_data().
void itpp::Sparse_Vec< T >::set | ( | const ivec & | index_vec, |
const Vec< T > & | v ) |
Set the elements of the sparse vector with indices index_vec
to the values in v
.
Definition at line 759 of file svec.h.
References add(), clear(), it_assert_debug, and itpp::max().
void itpp::Sparse_Vec< T >::set_new | ( | int | i, |
T | v ) |
Set a new element with index i
equal to v
.
Definition at line 626 of file svec.h.
References std::abs(), it_assert_debug, and resize_data().
void itpp::Sparse_Vec< T >::set_new | ( | const ivec & | index_vec, |
const Vec< T > & | v ) |
Set new elements with indices index_vec
equal to the values in v
(no check whether the same index is used several times)
Definition at line 771 of file svec.h.
References std::abs(), clear(), it_assert_debug, itpp::max(), resize_data(), and itpp::Vec< Num_T >::size().
void itpp::Sparse_Vec< T >::add_elem | ( | const int | i, |
const T | v ) |
Add element i
with v
.
Definition at line 641 of file svec.h.
References it_assert_debug, and resize_data().
Referenced by itpp::Sparse_Mat< T >::operator*, operator+=(), operator+=(), operator-=(), and operator-=().
void itpp::Sparse_Vec< T >::add | ( | const ivec & | index_vec, |
const Vec< T > & | v ) |
Add v
to the elements specified by index_vec
with v
.
Definition at line 669 of file svec.h.
References it_assert_debug, itpp::max(), resize_data(), and itpp::Vec< Num_T >::size().
Referenced by set().
void itpp::Sparse_Vec< T >::zeros | ( | ) |
void itpp::Sparse_Vec< T >::zero_elem | ( | const int | i | ) |
Set the i-th element to zero (i.e. clear that element if it contains a non-zero value)
Definition at line 710 of file svec.h.
References it_assert_debug.
void itpp::Sparse_Vec< T >::clear | ( | ) |
void itpp::Sparse_Vec< T >::clear_elem | ( | const int | i | ) |
Clear the i-th element (if it contains a non-zero value)
Definition at line 738 of file svec.h.
References it_assert_debug.
|
inline |
Extract the reference to the p-th non-zero data element.
Definition at line 230 of file svec.h.
Referenced by itpp::Sparse_Mat< T >::operator*, and itpp::Sparse_Mat< T >::operator*.
|
inline |
|
inline |
Returns the vector index of the p-th non-zero element.
Definition at line 246 of file svec.h.
Referenced by itpp::LDPC_Parity_Unstructured::cycle_removal_MGW(), get_nz_indices(), itpp::Sparse_Mat< T >::operator*, and itpp::Sparse_Mat< T >::operator*.
|
inline |
ivec itpp::Sparse_Vec< T >::get_nz_indices | ( | ) |
Return the indices of non-zero values.
Definition at line 793 of file svec.h.
References get_nz_index(), and nnz().
Referenced by itpp::LDPC_Parity::check_connectivity(), itpp::LDPC_Parity::check_for_cycles(), and itpp::LDPC_Code::decoder_parameterization().
Sparse_Vec< T > itpp::Sparse_Vec< T >::get_subvector | ( | int | i1, |
int | i2 ) const |
Return sparse subvector from index i1
to index i2
.
Definition at line 804 of file svec.h.
References compact(), it_assert_debug, resize_data(), and Sparse_Vec().
T itpp::Sparse_Vec< T >::sqr | ( | ) | const |
Returns the sum of all values squared.
Definition at line 827 of file svec.h.
References itpp::sum().
void itpp::Sparse_Vec< T >::operator= | ( | const Sparse_Vec< T > & | v | ) |
Assign sparse vector the value and length of the sparse vector v
.
Definition at line 837 of file svec.h.
References Sparse_Vec().
void itpp::Sparse_Vec< T >::operator= | ( | const Vec< T > & | v | ) |
Assign sparse vector the value and length of the dense vector v
.
Definition at line 854 of file svec.h.
References std::abs(), compact(), resize_data(), and itpp::Vec< Num_T >::size().
Sparse_Vec< T > itpp::Sparse_Vec< T >::operator- | ( | ) | const |
Returns the sign inverse of all elements in the sparse vector.
Definition at line 877 of file svec.h.
References Sparse_Vec().
bool itpp::Sparse_Vec< T >::operator== | ( | const Sparse_Vec< T > & | v | ) |
Compare two sparse vectors. False if wrong sizes or different values.
Definition at line 891 of file svec.h.
References std::abs(), remove_small_elements(), and Sparse_Vec().
void itpp::Sparse_Vec< T >::operator+= | ( | const Sparse_Vec< T > & | v | ) |
Add sparse vector v
to all non-zero elements of the sparse vector.
Definition at line 949 of file svec.h.
References add_elem(), it_assert_debug, size(), and Sparse_Vec().
void itpp::Sparse_Vec< T >::operator+= | ( | const Vec< T > & | v | ) |
Add vector v
to all non-zero elements of the sparse vector.
Definition at line 968 of file svec.h.
References add_elem(), it_assert_debug, and itpp::Vec< Num_T >::size().
void itpp::Sparse_Vec< T >::operator-= | ( | const Sparse_Vec< T > & | v | ) |
Subtract sparse vector v
from all non-zero elements of the sparse vector.
Definition at line 983 of file svec.h.
References add_elem(), it_assert_debug, size(), and Sparse_Vec().
void itpp::Sparse_Vec< T >::operator-= | ( | const Vec< T > & | v | ) |
Subtract vector v
from all non-zero elements of the sparse vector.
Definition at line 1002 of file svec.h.
References add_elem(), it_assert_debug, and itpp::Vec< Num_T >::size().
void itpp::Sparse_Vec< T >::operator*= | ( | const T & | v | ) |
void itpp::Sparse_Vec< T >::operator/= | ( | const T & | v | ) |
|
|
|
|
friend |
Addition v1+v2 where v1 and v2 are sparse vector.
Definition at line 1171 of file svec.h.
References compact(), it_assert_debug, resize_data(), and Sparse_Vec().
|
friend |
Scalar product v1*v2 where v1 and v2 are sparse vectors.
Definition at line 1041 of file svec.h.
References full(), it_assert_debug, Sparse_Vec(), and itpp::sum().
|
friend |
Scalar product v1*v2 where v1 is a sparse vector and v2 is a dense vector.
Definition at line 1057 of file svec.h.
References it_assert_debug, size(), itpp::Vec< Num_T >::size(), Sparse_Vec(), and itpp::sum().
|
friend |
Scalar product v1*v2 where v1 is a dense vector and v2 is a sparse vector.
Definition at line 1069 of file svec.h.
References it_assert_debug, size(), itpp::Vec< Num_T >::size(), Sparse_Vec(), and itpp::sum().
|
friend |
Element wise multiplication of two sparse vectors.
Definition at line 1081 of file svec.h.
References compact(), it_assert_debug, resize_data(), and Sparse_Vec().
|
friend |
Element wise multiplication of a sparse vector and a dense vector.
Definition at line 1105 of file svec.h.
References it_assert_debug, itpp::Vec< Num_T >::size(), and Sparse_Vec().
|
friend |
Element wise multiplication of a sparse vector and a dense vector returning a sparse vector.
Definition at line 1118 of file svec.h.
References compact(), it_assert_debug, resize_data(), itpp::Vec< Num_T >::size(), and Sparse_Vec().
|
friend |
Element wise multiplication of a a dense vector and a sparse vector.
Definition at line 1138 of file svec.h.
References it_assert_debug, itpp::Vec< Num_T >::size(), and Sparse_Vec().
|
friend |
Element wise multiplication of a a dense vector and a sparse vector returning a sparse vector.
Definition at line 1151 of file svec.h.
References compact(), it_assert_debug, resize_data(), itpp::Vec< Num_T >::size(), and Sparse_Vec().