Prusa Slicer 2.6.0
Loading...
Searching...
No Matches
Eigen::internal::transposition_matrix_product< ExpressionType, Side, Transposed, ExpressionShape > Struct Template Reference

#include <src/eigen/Eigen/src/Core/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)
 

Detailed Description

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

Member Typedef Documentation

◆ MatrixType

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

◆ MatrixTypeCleaned

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

Member Function Documentation

◆ run()

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 
)
inlinestatic
1049 {
1050 MatrixType mat(xpr);
1051 typedef typename TranspositionType::StorageIndex StorageIndex;
1052 const Index size = tr.size();
1053 StorageIndex j = 0;
1054
1055 if(!is_same_dense(dst,mat))
1056 dst = mat;
1057
1058 for(Index k=(Transposed?size-1:0) ; Transposed?k>=0:k<size ; Transposed?--k:++k)
1059 if(Index(j=tr.coeff(k))!=k)
1060 {
1061 if(Side==OnTheLeft) dst.row(k).swap(dst.row(j));
1062 else if(Side==OnTheRight) dst.col(k).swap(dst.col(j));
1063 }
1064 }
@ OnTheLeft
Definition Constants.h:333
@ OnTheRight
Definition Constants.h:335
bool is_same_dense(const T1 &mat1, const T2 &mat2, typename enable_if< has_direct_access< T1 >::ret &&has_direct_access< T2 >::ret, T1 >::type *=0)
Definition XprHelper.h:661
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition Meta.h:33
constexpr auto size(const C &c) -> decltype(c.size())
Definition span.hpp:183
nested_eval< ExpressionType, 1 >::type MatrixType
Definition ProductEvaluators.h:1044

References Eigen::internal::is_same_dense(), Eigen::OnTheLeft, and Eigen::OnTheRight.

+ Here is the call graph for this function:

The documentation for this struct was generated from the following file: