#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 . | |
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 Functions | |
(Note that these are not member functions.) | |
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. |
A sparse vector is a vector where most elements are zero. The maximum number of none-zero elements is a parameter to the constructor.
Definition at line 94 of file svec.h.
itpp::Sparse_Vec< T >::Sparse_Vec | ( | ) | [inline] |
itpp::Sparse_Vec< T >::Sparse_Vec | ( | int | sz, | |
int | data_init = 200 | |||
) | [inline] |
itpp::Sparse_Vec< T >::Sparse_Vec | ( | const Sparse_Vec< T > & | v | ) | [inline] |
Initiate a new sparse vector.
v | The elements of v are copied into the new sparse vector |
Definition at line 391 of file svec.h.
References itpp::Sparse_Vec< T >::check_small_elems_flag, itpp::Sparse_Vec< T >::data, itpp::Sparse_Vec< T >::data_size, itpp::Sparse_Vec< T >::eps, itpp::Sparse_Vec< T >::index, itpp::Sparse_Vec< T >::used_size, and itpp::Sparse_Vec< T >::v_size.
itpp::Sparse_Vec< T >::Sparse_Vec | ( | const Vec< T > & | v | ) | [inline] |
Initiate a new sparse vector from a dense vector.
v | The elements of v are copied into the new sparse vector |
Definition at line 408 of file svec.h.
References itpp::Sparse_Vec< T >::compact(), min, itpp::Sparse_Vec< T >::resize_data(), and itpp::Vec< Num_T >::size().
itpp::Sparse_Vec< T >::Sparse_Vec | ( | const Vec< T > & | v, | |
T | epsilon | |||
) | [inline] |
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 429 of file svec.h.
References itpp::abs(), itpp::Sparse_Vec< T >::compact(), min, itpp::Sparse_Vec< T >::resize_data(), and itpp::Vec< Num_T >::size().
itpp::Sparse_Vec< T >::~Sparse_Vec | ( | ) | [inline] |
void itpp::Sparse_Vec< T >::set_size | ( | int | sz, | |
int | data_init = -1 | |||
) | [inline] |
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) |
int itpp::Sparse_Vec< T >::size | ( | ) | const [inline] |
Returns the size of the sparse vector.
Definition at line 141 of file svec.h.
Referenced by itpp::operator *(), itpp::Sparse_Vec< T >::operator+=(), and itpp::Sparse_Vec< T >::operator-=().
int itpp::Sparse_Vec< T >::nnz | ( | ) | [inline] |
Number of non-zero elements in the sparse vector.
Definition at line 144 of file svec.h.
References itpp::Sparse_Vec< T >::remove_small_elements().
Referenced by itpp::operator *().
double itpp::Sparse_Vec< T >::density | ( | ) | [inline] |
Returns the density of the sparse vector: (number of non-zero elements)/(size of the vector).
Definition at line 470 of file svec.h.
References itpp::Sparse_Vec< T >::remove_small_elements().
void itpp::Sparse_Vec< T >::set_small_element | ( | const T & | epsilon | ) | [inline] |
Set that all elements smaller than epsilon should be set to zero.
Definition at line 480 of file svec.h.
References itpp::Sparse_Vec< T >::remove_small_elements().
void itpp::Sparse_Vec< T >::remove_small_elements | ( | ) | [inline] |
Removes all elements that are smaller than epsilon from the non-zero elements.
epsilon=0
. Definition at line 487 of file svec.h.
References itpp::abs().
Referenced by itpp::Sparse_Vec< T >::compact(), itpp::Sparse_Vec< T >::density(), itpp::Sparse_Vec< T >::get_nz(), itpp::Sparse_Vec< T >::get_nz_data(), itpp::Sparse_Vec< T >::get_nz_index(), itpp::Sparse_Vec< T >::nnz(), itpp::Sparse_Vec< T >::operator==(), itpp::Sparse_Vec< T >::set(), and itpp::Sparse_Vec< T >::set_small_element().
void itpp::Sparse_Vec< T >::resize_data | ( | int | new_size | ) | [inline] |
Set the maximum number of non-zero elements to new_size
.
new_size | The new maximum number of non-zero elements. |
Definition at line 514 of file svec.h.
References it_assert.
Referenced by itpp::Sparse_Vec< T >::add(), itpp::Sparse_Vec< T >::add_elem(), itpp::Sparse_Vec< T >::compact(), itpp::elem_mult(), itpp::Sparse_Vec< T >::get_subvector(), itpp::operator+(), itpp::Sparse_Vec< T >::operator=(), itpp::Sparse_Vec< T >::set(), itpp::Sparse_Vec< T >::set_new(), and itpp::Sparse_Vec< T >::Sparse_Vec().
void itpp::Sparse_Vec< T >::compact | ( | ) | [inline] |
Set the maximum number of non-zero elements equal to the actual number of non-zero elements.
Definition at line 537 of file svec.h.
References itpp::Sparse_Vec< T >::remove_small_elements(), and itpp::Sparse_Vec< T >::resize_data().
Referenced by itpp::Sparse_Vec< T >::get_subvector(), itpp::Sparse_Vec< T >::operator=(), and itpp::Sparse_Vec< T >::Sparse_Vec().
void itpp::Sparse_Vec< T >::full | ( | Vec< T > & | v | ) | const [inline] |
Returns a full, dense vector in v
.
Definition at line 546 of file svec.h.
References itpp::Vec< Num_T >::set_size().
Referenced by itpp::full(), and itpp::operator *().
Vec< T > itpp::Sparse_Vec< T >::full | ( | ) | const [inline] |
T itpp::Sparse_Vec< T >::operator() | ( | int | i | ) | const [inline] |
void itpp::Sparse_Vec< T >::set | ( | int | i, | |
T | v | |||
) | [inline] |
Set element i
equal to v
.
Definition at line 581 of file svec.h.
References itpp::abs(), it_assert0, itpp::Sparse_Vec< T >::remove_small_elements(), and itpp::Sparse_Vec< T >::resize_data().
void itpp::Sparse_Vec< T >::set | ( | const ivec & | index_vec, | |
const Vec< T > & | v | |||
) | [inline] |
Set the elements of the sparse vector with indices index_vec
to the values in v
.
Definition at line 749 of file svec.h.
References itpp::Sparse_Vec< T >::clear(), it_assert0, and itpp::max().
void itpp::Sparse_Vec< T >::set_new | ( | int | i, | |
T | v | |||
) | [inline] |
Set a new element with index i
equal to v
.
Definition at line 616 of file svec.h.
References itpp::abs(), it_assert0, and itpp::Sparse_Vec< T >::resize_data().
void itpp::Sparse_Vec< T >::set_new | ( | const ivec & | index_vec, | |
const Vec< T > & | v | |||
) | [inline] |
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 761 of file svec.h.
References itpp::abs(), itpp::Sparse_Vec< T >::clear(), it_assert0, itpp::max(), itpp::Sparse_Vec< T >::resize_data(), and itpp::Vec< Num_T >::size().
void itpp::Sparse_Vec< T >::add_elem | ( | const int | i, | |
const T | v | |||
) | [inline] |
Add element i
with v
.
Definition at line 631 of file svec.h.
References it_assert0, and itpp::Sparse_Vec< T >::resize_data().
Referenced by itpp::Sparse_Vec< T >::operator+=(), and itpp::Sparse_Vec< T >::operator-=().
void itpp::Sparse_Vec< T >::add | ( | const ivec & | index_vec, | |
const Vec< T > & | v | |||
) | [inline] |
Add v
to the elements specified by index_vec
with v
.
Definition at line 659 of file svec.h.
References it_assert0, itpp::max(), itpp::Sparse_Vec< T >::resize_data(), and itpp::Vec< Num_T >::size().
void itpp::Sparse_Vec< T >::zeros | ( | ) | [inline] |
void itpp::Sparse_Vec< T >::zero_elem | ( | const int | i | ) | [inline] |
Set the i-th element to zero (i.e. clear that element if it contains a non-zero value).
Definition at line 700 of file svec.h.
References it_assert0.
void itpp::Sparse_Vec< T >::clear | ( | ) | [inline] |
Clear all non-zero elements of the sparse vector.
Definition at line 721 of file svec.h.
Referenced by itpp::Sparse_Vec< T >::set(), and itpp::Sparse_Vec< T >::set_new().
void itpp::Sparse_Vec< T >::clear_elem | ( | const int | i | ) | [inline] |
Clear the i-th element (if it contains a non-zero value).
Definition at line 728 of file svec.h.
References it_assert0.
void itpp::Sparse_Vec< T >::get_nz_data | ( | int | p, | |
T & | data_out | |||
) | [inline] |
Extract the reference to the p-th non-zero data element.
Definition at line 217 of file svec.h.
References itpp::Sparse_Vec< T >::remove_small_elements().
Referenced by itpp::operator *().
T itpp::Sparse_Vec< T >::get_nz_data | ( | int | p | ) | [inline] |
Returns the p-th non-zero data element.
Definition at line 226 of file svec.h.
References itpp::Sparse_Vec< T >::remove_small_elements().
int itpp::Sparse_Vec< T >::get_nz_index | ( | int | p | ) | [inline] |
Returns the vector index of the p-th non-zero element.
Definition at line 235 of file svec.h.
References itpp::Sparse_Vec< T >::remove_small_elements().
Referenced by itpp::operator *().
void itpp::Sparse_Vec< T >::get_nz | ( | int | p, | |
int & | idx, | |||
T & | dat | |||
) | [inline] |
Returns the p-th non-zero value in dat
and the corresponding vector index in idx
.
Definition at line 244 of file svec.h.
References itpp::Sparse_Vec< T >::remove_small_elements().
Sparse_Vec< T > itpp::Sparse_Vec< T >::get_subvector | ( | int | i1, | |
int | i2 | |||
) | const [inline] |
Return sparse subvector from index i1
to index i2
.
Definition at line 783 of file svec.h.
References itpp::Sparse_Vec< T >::check_small_elems_flag, itpp::Sparse_Vec< T >::compact(), itpp::Sparse_Vec< T >::data, itpp::Sparse_Vec< T >::data_size, itpp::Sparse_Vec< T >::eps, itpp::Sparse_Vec< T >::index, it_assert0, itpp::Sparse_Vec< T >::resize_data(), and itpp::Sparse_Vec< T >::used_size.
T itpp::Sparse_Vec< T >::sqr | ( | ) | const [inline] |
Returns the sum of all values squared.
Definition at line 806 of file svec.h.
References itpp::sum().
void itpp::Sparse_Vec< T >::operator= | ( | const Sparse_Vec< T > & | v | ) | [inline] |
Assign sparse vector the value and length of the sparse vector v
.
Definition at line 816 of file svec.h.
References itpp::Sparse_Vec< T >::check_small_elems_flag, itpp::Sparse_Vec< T >::data, itpp::Sparse_Vec< T >::data_size, itpp::Sparse_Vec< T >::eps, itpp::Sparse_Vec< T >::index, itpp::Sparse_Vec< T >::used_size, and itpp::Sparse_Vec< T >::v_size.
void itpp::Sparse_Vec< T >::operator= | ( | const Vec< T > & | v | ) | [inline] |
Assign sparse vector the value and length of the dense vector v
.
Definition at line 833 of file svec.h.
References itpp::Sparse_Vec< T >::compact(), min, itpp::Sparse_Vec< T >::resize_data(), and itpp::Vec< Num_T >::size().
Sparse_Vec< T > itpp::Sparse_Vec< T >::operator- | ( | ) | const [inline] |
Returns the sign inverse of all elements in the sparse vector.
Definition at line 856 of file svec.h.
References itpp::Sparse_Vec< T >::data, itpp::Sparse_Vec< T >::index, and itpp::Sparse_Vec< T >::used_size.
bool itpp::Sparse_Vec< T >::operator== | ( | const Sparse_Vec< T > & | v | ) | [inline] |
Compare two sparse vectors. False if wrong sizes or different values.
Definition at line 870 of file svec.h.
References itpp::Sparse_Vec< T >::data, itpp::Sparse_Vec< T >::index, itpp::Sparse_Vec< T >::remove_small_elements(), itpp::Sparse_Vec< T >::used_size, and itpp::Sparse_Vec< T >::v_size.
void itpp::Sparse_Vec< T >::operator+= | ( | const Sparse_Vec< T > & | v | ) | [inline] |
Add sparse vector v
to all non-zero elements of the sparse vector.
Definition at line 927 of file svec.h.
References itpp::Sparse_Vec< T >::add_elem(), itpp::Sparse_Vec< T >::data, itpp::Sparse_Vec< T >::index, it_assert0, itpp::Sparse_Vec< T >::size(), and itpp::Sparse_Vec< T >::used_size.
void itpp::Sparse_Vec< T >::operator+= | ( | const Vec< T > & | v | ) | [inline] |
Add vector v
to all non-zero elements of the sparse vector.
Definition at line 946 of file svec.h.
References itpp::Sparse_Vec< T >::add_elem(), it_assert0, and itpp::Vec< Num_T >::size().
void itpp::Sparse_Vec< T >::operator-= | ( | const Sparse_Vec< T > & | v | ) | [inline] |
Subtract sparse vector v
from all non-zero elements of the sparse vector.
Definition at line 961 of file svec.h.
References itpp::Sparse_Vec< T >::add_elem(), itpp::Sparse_Vec< T >::data, itpp::Sparse_Vec< T >::index, it_assert0, itpp::Sparse_Vec< T >::size(), and itpp::Sparse_Vec< T >::used_size.
void itpp::Sparse_Vec< T >::operator-= | ( | const Vec< T > & | v | ) | [inline] |
Subtract vector v
from all non-zero elements of the sparse vector.
Definition at line 980 of file svec.h.
References itpp::Sparse_Vec< T >::add_elem(), it_assert0, and itpp::Vec< Num_T >::size().
void itpp::Sparse_Vec< T >::operator *= | ( | const T & | v | ) | [inline] |
void itpp::Sparse_Vec< T >::operator/= | ( | const T & | v | ) | [inline] |
Divide all non-zero elements of the sparse vector with the scalar v
.
Definition at line 1005 of file svec.h.
References itpp::abs().
typedef Sparse_Vec<int> sparse_ivec [related] |
typedef Sparse_Vec<double> sparse_vec [related] |
typedef Sparse_Vec<std::complex<double> > sparse_cvec [related] |
Sparse_Vec<T> operator+ | ( | const Sparse_Vec< T > & | v1, | |
const Sparse_Vec< T > & | v2 | |||
) | [friend] |
Addition v1+v2 where v1 and v2 are sparse vector.
T operator * | ( | const Sparse_Vec< T > & | v1, | |
const Sparse_Vec< T > & | v2 | |||
) | [friend] |
Scalar product v1*v2 where v1 and v2 are sparse vectors.
T operator * | ( | const Sparse_Vec< T > & | v1, | |
const Vec< T > & | v2 | |||
) | [friend] |
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 | |||
) | [friend] |
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 | |||
) | [friend] |
Element wise multiplication of two sparse vectors.
Vec<T> elem_mult | ( | const Sparse_Vec< T > & | v1, | |
const Vec< T > & | v2 | |||
) | [friend] |
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 | |||
) | [friend] |
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 | |||
) | [friend] |
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 | |||
) | [friend] |
Element wise multiplication of a a dense vector and a sparse vector returning a sparse vector.
Generated on Wed Apr 18 11:20:03 2007 for IT++ by Doxygen 1.5.2