add a conj_product functor and optimize dot products

This commit is contained in:
Gael Guennebaud
2010-07-07 10:00:08 +02:00
parent f8d3b4c060
commit e38fc9692d
3 changed files with 25 additions and 2 deletions

View File

@@ -41,7 +41,7 @@ struct ei_dot_nocheck
{
static inline typename ei_traits<T>::Scalar run(const MatrixBase<T>& a, const MatrixBase<U>& b)
{
return a.conjugate().cwiseProduct(b).sum();
return a.template binaryExpr<ei_scalar_conj_product_op<typename ei_traits<T>::Scalar> >(b).sum();
}
};
@@ -50,7 +50,7 @@ struct ei_dot_nocheck<T, U, true>
{
static inline typename ei_traits<T>::Scalar run(const MatrixBase<T>& a, const MatrixBase<U>& b)
{
return a.adjoint().cwiseProduct(b).sum();
return a.transpose().template binaryExpr<ei_scalar_conj_product_op<typename ei_traits<T>::Scalar> >(b).sum();
}
};