template<class T>
SparseMatrix<T>& SparseMatrix<T>::operator *= (const T& V)
{
- for (int i=0; i<this->Rows(); i++)
+ for (int i=0; i<rows; i++)
{
- for(int ii=0;ii<m_ppElements[i].size();i++){m_ppElements[i][ii].Value*=V;}
+ for(int ii=0;ii<rowSizes[i];i++){m_ppElements[i][ii].Value*=V;}
}
return *this;
}
template<class T>
SparseMatrix<T> SparseMatrix<T>::Multiply( const SparseMatrix<T>& M ) const
{
- SparseMatrix<T> R( this->Rows(), M.Columns() );
- for(int i=0; i<R.Rows(); i++){
- for(int ii=0;ii<m_ppElements[i].size();ii++){
+ SparseMatrix<T> R( rows, M._maxEntriesPerRow );
+ for(int i=0; i<R.rows; i++){
+ for(int ii=0;ii<rowSizes[i];ii++){
int N=m_ppElements[i][ii].N;
T Value=m_ppElements[i][ii].Value;
- for(int jj=0;jj<M.m_ppElements[N].size();jj++){
+ for(int jj=0;jj<M.rowSizes[N];jj++){
R(i,M.m_ppElements[N][jj].N) += Value * M.m_ppElements[N][jj].Value;
}
}
template<class T>
SparseMatrix<T> SparseMatrix<T>::Transpose() const
{
- SparseMatrix<T> M( this->Columns(), this->Rows() );
+ SparseMatrix<T> M( _maxEntriesPerRow, rows );
- for (int i=0; i<this->Rows(); i++)
+ for (int i=0; i<rows; i++)
{
- for(int ii=0;ii<m_ppElements[i].size();ii++){
+ for(int ii=0;ii<rowSizes[i];ii++){
M(m_ppElements[i][ii].N,i) = m_ppElements[i][ii].Value;
}
}