aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/products
diff options
context:
space:
mode:
authorGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2010-02-27 10:03:27 -0500
committerGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2010-02-27 10:03:27 -0500
commitd9f638049994b90ed388c68c8a0ab7efc2e5615c (patch)
treefdd921ada1341f7c71e4f18234d113488873c49d /Eigen/src/Core/products
parentb5c79e729122215a8210da24588c87a13f5c37d7 (diff)
Remove the dot product's separate implementation and use cwiseProduct.sum instead.
Also take special care to get nicely working static assertions.
Diffstat (limited to 'Eigen/src/Core/products')
-rw-r--r--Eigen/src/Core/products/CoeffBasedProduct.h20
1 files changed, 4 insertions, 16 deletions
diff --git a/Eigen/src/Core/products/CoeffBasedProduct.h b/Eigen/src/Core/products/CoeffBasedProduct.h
index 3343b1875..e8016e915 100644
--- a/Eigen/src/Core/products/CoeffBasedProduct.h
+++ b/Eigen/src/Core/products/CoeffBasedProduct.h
@@ -305,10 +305,7 @@ struct ei_product_coeff_vectorized_dyn_selector
{
EIGEN_STRONG_INLINE static void run(int row, int col, const Lhs& lhs, const Rhs& rhs, typename Lhs::Scalar &res)
{
- res = ei_dot_impl<
- Block<Lhs, 1, ei_traits<Lhs>::ColsAtCompileTime>,
- Block<Rhs, ei_traits<Rhs>::RowsAtCompileTime, 1>,
- LinearVectorizedTraversal, NoUnrolling>::run(lhs.row(row), rhs.col(col));
+ res = lhs.row(row).cwiseProduct(rhs.col(col)).sum();
}
};
@@ -319,10 +316,7 @@ struct ei_product_coeff_vectorized_dyn_selector<Lhs,Rhs,1,RhsCols>
{
EIGEN_STRONG_INLINE static void run(int /*row*/, int col, const Lhs& lhs, const Rhs& rhs, typename Lhs::Scalar &res)
{
- res = ei_dot_impl<
- Lhs,
- Block<Rhs, ei_traits<Rhs>::RowsAtCompileTime, 1>,
- LinearVectorizedTraversal, NoUnrolling>::run(lhs, rhs.col(col));
+ res = lhs.cwiseProduct(rhs.col(col)).sum();
}
};
@@ -331,10 +325,7 @@ struct ei_product_coeff_vectorized_dyn_selector<Lhs,Rhs,LhsRows,1>
{
EIGEN_STRONG_INLINE static void run(int row, int /*col*/, const Lhs& lhs, const Rhs& rhs, typename Lhs::Scalar &res)
{
- res = ei_dot_impl<
- Block<Lhs, 1, ei_traits<Lhs>::ColsAtCompileTime>,
- Rhs,
- LinearVectorizedTraversal, NoUnrolling>::run(lhs.row(row), rhs);
+ res = lhs.row(row).cwiseProduct(rhs).sum();
}
};
@@ -343,10 +334,7 @@ struct ei_product_coeff_vectorized_dyn_selector<Lhs,Rhs,1,1>
{
EIGEN_STRONG_INLINE static void run(int /*row*/, int /*col*/, const Lhs& lhs, const Rhs& rhs, typename Lhs::Scalar &res)
{
- res = ei_dot_impl<
- Lhs,
- Rhs,
- LinearVectorizedTraversal, NoUnrolling>::run(lhs, rhs);
+ res = lhs.cwiseProduct(rhs).sum();
}
};