|
MOAB
4.9.3pre
|
#include <ProductEvaluators.h>
Public Types | |
| typedef nested_eval < ExpressionType, 1 >::type | MatrixType |
| typedef remove_all< MatrixType > ::type | MatrixTypeCleaned |
Static Public Member Functions | |
| template<typename Dest , typename TranspositionType > | |
| static void | run (Dest &dst, const TranspositionType &tr, const ExpressionType &xpr) |
Internal helper class implementing the product between a permutation matrix and a matrix.
Definition at line 990 of file ProductEvaluators.h.
| typedef nested_eval<ExpressionType, 1>::type Eigen::internal::transposition_matrix_product< ExpressionType, Side, Transposed, ExpressionShape >::MatrixType |
Definition at line 992 of file ProductEvaluators.h.
| typedef remove_all<MatrixType>::type Eigen::internal::transposition_matrix_product< ExpressionType, Side, Transposed, ExpressionShape >::MatrixTypeCleaned |
Definition at line 993 of file ProductEvaluators.h.
| static void Eigen::internal::transposition_matrix_product< ExpressionType, Side, Transposed, ExpressionShape >::run | ( | Dest & | dst, |
| const TranspositionType & | tr, | ||
| const ExpressionType & | xpr | ||
| ) | [inline, static] |
Definition at line 996 of file ProductEvaluators.h.
{
MatrixType mat(xpr);
typedef typename TranspositionType::StorageIndex StorageIndex;
const Index size = tr.size();
StorageIndex j = 0;
if(!(is_same<MatrixTypeCleaned,Dest>::value && extract_data(dst) == extract_data(mat)))
dst = mat;
for(Index k=(Transposed?size-1:0) ; Transposed?k>=0:k<size ; Transposed?--k:++k)
if(Index(j=tr.coeff(k))!=k)
{
if(Side==OnTheLeft) dst.row(k).swap(dst.row(j));
else if(Side==OnTheRight) dst.col(k).swap(dst.col(j));
}
}