mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-04-10 11:34:33 +08:00
cleaning and fix a perf issue
This commit is contained in:
@@ -63,7 +63,7 @@ struct ei_selfadjoint_rank2_update_selector<Scalar,UType,VType,UpperTriangular>
|
|||||||
};
|
};
|
||||||
|
|
||||||
template<bool Cond, typename T> struct ei_conj_expr_if
|
template<bool Cond, typename T> struct ei_conj_expr_if
|
||||||
: ei_meta_if<!Cond, T,
|
: ei_meta_if<!Cond, const T&,
|
||||||
CwiseUnaryOp<ei_scalar_conjugate_op<typename ei_traits<T>::Scalar>,T> > {};
|
CwiseUnaryOp<ei_scalar_conjugate_op<typename ei_traits<T>::Scalar>,T> > {};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -37,12 +37,12 @@ struct ei_product_triangular_vector_selector<Lhs,Rhs,Result,Mode,ConjLhs,ConjRhs
|
|||||||
IsLowerTriangular = ((Mode&LowerTriangularBit)==LowerTriangularBit),
|
IsLowerTriangular = ((Mode&LowerTriangularBit)==LowerTriangularBit),
|
||||||
HasUnitDiag = (Mode & UnitDiagBit)==UnitDiagBit
|
HasUnitDiag = (Mode & UnitDiagBit)==UnitDiagBit
|
||||||
};
|
};
|
||||||
static void run(const Lhs& lhs, const Rhs& rhs, Result& res, typename ei_traits<Lhs>::Scalar alpha)
|
static EIGEN_DONT_INLINE void run(const Lhs& lhs, const Rhs& rhs, Result& res, typename ei_traits<Lhs>::Scalar alpha)
|
||||||
{
|
{
|
||||||
static const int PanelWidth = EIGEN_TUNE_TRIANGULAR_PANEL_WIDTH;
|
static const int PanelWidth = EIGEN_TUNE_TRIANGULAR_PANEL_WIDTH;
|
||||||
typename ei_conj_expr_if<ConjLhs,Lhs>::ret cjLhs(lhs);
|
typename ei_conj_expr_if<ConjLhs,Lhs>::ret cjLhs(lhs);
|
||||||
typename ei_conj_expr_if<ConjRhs,Rhs>::ret cjRhs(rhs);
|
typename ei_conj_expr_if<ConjRhs,Rhs>::ret cjRhs(rhs);
|
||||||
|
|
||||||
int size = lhs.cols();
|
int size = lhs.cols();
|
||||||
for (int pi=0; pi<size; pi+=PanelWidth)
|
for (int pi=0; pi<size; pi+=PanelWidth)
|
||||||
{
|
{
|
||||||
@@ -113,52 +113,6 @@ struct ei_product_triangular_vector_selector<Lhs,Rhs,Result,Mode,ConjLhs,ConjRhs
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// template<typename Lhs,typename Rhs>
|
|
||||||
// struct ei_triangular_vector_product_returntype
|
|
||||||
// : public ReturnByValue<ei_triangular_vector_product_returntype<Lhs,Rhs>,
|
|
||||||
// Matrix<typename ei_traits<Rhs>::Scalar,
|
|
||||||
// Rhs::RowsAtCompileTime,Rhs::ColsAtCompileTime> >
|
|
||||||
// {
|
|
||||||
// typedef typename Lhs::Scalar Scalar;
|
|
||||||
// typedef typename ei_cleantype<typename Rhs::Nested>::type RhsNested;
|
|
||||||
// ei_triangular_vector_product_returntype(const Lhs& lhs, const Rhs& rhs, Scalar alpha)
|
|
||||||
// : m_lhs(lhs), m_rhs(rhs), m_alpha(alpha)
|
|
||||||
// {}
|
|
||||||
//
|
|
||||||
// template<typename Dest> void evalTo(Dest& dst) const
|
|
||||||
// {
|
|
||||||
// typedef typename Lhs::MatrixType MatrixType;
|
|
||||||
//
|
|
||||||
// typedef ei_blas_traits<MatrixType> LhsBlasTraits;
|
|
||||||
// typedef typename LhsBlasTraits::DirectLinearAccessType ActualLhsType;
|
|
||||||
// typedef typename ei_cleantype<ActualLhsType>::type _ActualLhsType;
|
|
||||||
// const ActualLhsType actualLhs = LhsBlasTraits::extract(m_lhs._expression());
|
|
||||||
//
|
|
||||||
// typedef ei_blas_traits<Rhs> RhsBlasTraits;
|
|
||||||
// typedef typename RhsBlasTraits::DirectLinearAccessType ActualRhsType;
|
|
||||||
// typedef typename ei_cleantype<ActualRhsType>::type _ActualRhsType;
|
|
||||||
// const ActualRhsType actualRhs = RhsBlasTraits::extract(m_rhs);
|
|
||||||
//
|
|
||||||
// Scalar actualAlpha = m_alpha * LhsBlasTraits::extractScalarFactor(m_lhs._expression())
|
|
||||||
// * RhsBlasTraits::extractScalarFactor(m_rhs);
|
|
||||||
//
|
|
||||||
// dst.resize(m_rhs.rows(), m_rhs.cols());
|
|
||||||
// dst.setZero();
|
|
||||||
// ei_product_triangular_vector_selector
|
|
||||||
// <_ActualLhsType,_ActualRhsType,Dest,
|
|
||||||
// ei_traits<Lhs>::Mode,
|
|
||||||
// LhsBlasTraits::NeedToConjugate,
|
|
||||||
// RhsBlasTraits::NeedToConjugate,
|
|
||||||
// ei_traits<Lhs>::Flags&RowMajorBit>
|
|
||||||
// ::run(actualLhs,actualRhs,dst,actualAlpha);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// const Lhs m_lhs;
|
|
||||||
// const typename Rhs::Nested m_rhs;
|
|
||||||
// const Scalar m_alpha;
|
|
||||||
// };
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
* Wrapper to ei_product_triangular_vector
|
* Wrapper to ei_product_triangular_vector
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
@@ -207,8 +161,6 @@ struct ei_triangular_product_returntype<Mode,true,Lhs,false,Rhs,true>
|
|||||||
Scalar actualAlpha = alpha * LhsBlasTraits::extractScalarFactor(m_lhs)
|
Scalar actualAlpha = alpha * LhsBlasTraits::extractScalarFactor(m_lhs)
|
||||||
* RhsBlasTraits::extractScalarFactor(m_rhs);
|
* RhsBlasTraits::extractScalarFactor(m_rhs);
|
||||||
|
|
||||||
dst.resize(m_rhs.rows(), m_rhs.cols());
|
|
||||||
dst.setZero();
|
|
||||||
ei_product_triangular_vector_selector
|
ei_product_triangular_vector_selector
|
||||||
<_ActualLhsType,_ActualRhsType,Dest,
|
<_ActualLhsType,_ActualRhsType,Dest,
|
||||||
Mode,
|
Mode,
|
||||||
|
|||||||
Reference in New Issue
Block a user