MOAB  4.9.3pre
Eigen::internal::transposition_matrix_product< ExpressionType, Side, Transposed, ExpressionShape > Class Template Reference

#include <ProductEvaluators.h>

List of all members.

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)

Detailed Description

template<typename ExpressionType, int Side, bool Transposed, typename ExpressionShape>
class Eigen::internal::transposition_matrix_product< ExpressionType, Side, Transposed, ExpressionShape >

Internal helper class implementing the product between a permutation matrix and a matrix.

Definition at line 990 of file ProductEvaluators.h.


Member Typedef Documentation

template<typename ExpressionType , int Side, bool Transposed, typename ExpressionShape >
typedef nested_eval<ExpressionType, 1>::type Eigen::internal::transposition_matrix_product< ExpressionType, Side, Transposed, ExpressionShape >::MatrixType

Definition at line 992 of file ProductEvaluators.h.

template<typename ExpressionType , int Side, bool Transposed, typename ExpressionShape >
typedef remove_all<MatrixType>::type Eigen::internal::transposition_matrix_product< ExpressionType, Side, Transposed, ExpressionShape >::MatrixTypeCleaned

Definition at line 993 of file ProductEvaluators.h.


Member Function Documentation

template<typename ExpressionType , int Side, bool Transposed, typename ExpressionShape >
template<typename Dest , typename TranspositionType >
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));
      }
  }

The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines