Skip to content
Snippets Groups Projects
Commit f886cfe6 authored by René Fritze's avatar René Fritze
Browse files

move row matrix mult

parent 633b894b
No related branches found
No related tags found
No related merge requests found
...@@ -63,34 +63,6 @@ static RangeType1 dyadicProduct(const RangeType2& arg1, const RangeType2& arg2) ...@@ -63,34 +63,6 @@ static RangeType1 dyadicProduct(const RangeType2& arg1, const RangeType2& arg2)
return ret; return ret;
} }
/**
* \brief multiplies rows of arg2 with arg1
* \todo doc
**/
template <class FieldMatrixImp>
FieldMatrixImp rowWiseMatrixMultiplication(const FieldMatrixImp& arg1, const FieldMatrixImp& arg2)
{
typedef FieldMatrixImp FieldMatrixType;
typedef typename FieldMatrixType::row_type RowType;
typedef typename FieldMatrixType::ConstRowIterator ConstRowIteratorType;
typedef typename FieldMatrixType::RowIterator RowIteratorType;
assert(arg2.rowdim() == arg1.coldim());
FieldMatrixType ret(0.0);
ConstRowIteratorType arg2RowItEnd = arg2.end();
RowIteratorType retRowItEnd = ret.end();
RowIteratorType retRowIt = ret.begin();
for (ConstRowIteratorType arg2RowIt = arg2.begin(); arg2RowIt != arg2RowItEnd, retRowIt != retRowItEnd;
++arg2RowIt, ++retRowIt) {
RowType row(0.0);
arg1.mv(*arg2RowIt, row);
*retRowIt = row;
}
return ret;
}
/** \brief a vector wrapper for continiously updating min,max,avg of some element type vector /** \brief a vector wrapper for continiously updating min,max,avg of some element type vector
\todo find use? it's only used in minimal as testcase for itself... \todo find use? it's only used in minimal as testcase for itself...
**/ **/
......
...@@ -215,6 +215,35 @@ void readSparseMatrix(SparseMatrixImpl& matrix, Input& in) ...@@ -215,6 +215,35 @@ void readSparseMatrix(SparseMatrixImpl& matrix, Input& in)
} }
} }
/**
* \brief multiplies rows of arg2 with arg1
* \todo doc
**/
template <class FieldMatrixImp>
FieldMatrixImp rowWiseMatrixMultiplication(const FieldMatrixImp& arg1, const FieldMatrixImp& arg2)
{
typedef FieldMatrixImp FieldMatrixType;
typedef typename FieldMatrixType::row_type RowType;
typedef typename FieldMatrixType::ConstRowIterator ConstRowIteratorType;
typedef typename FieldMatrixType::RowIterator RowIteratorType;
assert(arg2.rowdim() == arg1.coldim());
FieldMatrixType ret(0.0);
ConstRowIteratorType arg2RowItEnd = arg2.end();
RowIteratorType retRowItEnd = ret.end();
RowIteratorType retRowIt = ret.begin();
for (ConstRowIteratorType arg2RowIt = arg2.begin(); arg2RowIt != arg2RowItEnd, retRowIt != retRowItEnd;
++arg2RowIt, ++retRowIt) {
RowType row(0.0);
arg1.mv(*arg2RowIt, row);
*retRowIt = row;
}
return ret;
}
namespace Matrix { namespace Matrix {
//! prints actual memusage of matrix in kB //! prints actual memusage of matrix in kB
template <class MatrixType, class Stream> template <class MatrixType, class Stream>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment