aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/Product.h
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2008-10-13 13:14:43 +0000
committerGravatar Gael Guennebaud <g.gael@free.fr>2008-10-13 13:14:43 +0000
commite2bd8623f88c3e7aa1c4a2eaa5dc7ab351219a33 (patch)
tree53276dd191e8138b1df91026e3a53b73a6ae23d3 /Eigen/src/Core/Product.h
parent537a0e0a522123fd9e2938487d42e5c95ea4b640 (diff)
Solve the issue found by Timothy in solveTriangular:
=> row-major rhs are now evaluated to a column-major temporary before the computations. Add solveInPlace in Cholesky*
Diffstat (limited to 'Eigen/src/Core/Product.h')
-rw-r--r--Eigen/src/Core/Product.h17
1 files changed, 2 insertions, 15 deletions
diff --git a/Eigen/src/Core/Product.h b/Eigen/src/Core/Product.h
index 04deae0ab..429cdc0e9 100644
--- a/Eigen/src/Core/Product.h
+++ b/Eigen/src/Core/Product.h
@@ -36,8 +36,6 @@ struct ei_product_coeff_impl;
template<int StorageOrder, int Index, typename Lhs, typename Rhs, typename PacketScalar, int LoadMode>
struct ei_product_packet_impl;
-template<typename T> struct ei_product_eval_to_column_major;
-
/** \class ProductReturnType
*
* \brief Helper class to get the correct and optimized returned type of operator*
@@ -70,7 +68,7 @@ struct ProductReturnType<Lhs,Rhs,CacheFriendlyProduct>
typedef typename ei_nested<Lhs,Rhs::ColsAtCompileTime>::type LhsNested;
typedef typename ei_nested<Rhs,Lhs::RowsAtCompileTime,
- typename ei_product_eval_to_column_major<Rhs>::type
+ typename ei_eval_to_column_major<Rhs>::type
>::type RhsNested;
typedef Product<LhsNested, RhsNested, CacheFriendlyProduct> Type;
@@ -706,23 +704,12 @@ inline Derived& MatrixBase<Derived>::lazyAssign(const Product<Lhs,Rhs,CacheFrien
return derived();
}
-template<typename T> struct ei_product_eval_to_column_major
-{
- typedef Matrix<typename ei_traits<T>::Scalar,
- ei_traits<T>::RowsAtCompileTime,
- ei_traits<T>::ColsAtCompileTime,
- ColMajor,
- ei_traits<T>::MaxRowsAtCompileTime,
- ei_traits<T>::MaxColsAtCompileTime
- > type;
-};
-
template<typename T> struct ei_product_copy_rhs
{
typedef typename ei_meta_if<
(ei_traits<T>::Flags & RowMajorBit)
|| (!(ei_traits<T>::Flags & DirectAccessBit)),
- typename ei_product_eval_to_column_major<T>::type,
+ typename ei_eval_to_column_major<T>::type,
const T&
>::ret type;
};