diff options
Diffstat (limited to 'Eigen/src/Core/Product.h')
-rw-r--r-- | Eigen/src/Core/Product.h | 46 |
1 files changed, 23 insertions, 23 deletions
diff --git a/Eigen/src/Core/Product.h b/Eigen/src/Core/Product.h index 865387b11..f814382a9 100644 --- a/Eigen/src/Core/Product.h +++ b/Eigen/src/Core/Product.h @@ -84,28 +84,28 @@ public: * based on the three dimensions of the product. * This is a compile time mapping from {1,Small,Large}^3 -> {product types} */ // FIXME I'm not sure the current mapping is the ideal one. -template<int Rows, int Cols> struct ei_product_type_selector<Rows, Cols, 1> { enum { ret = OuterProduct }; }; -template<int Depth> struct ei_product_type_selector<1, 1, Depth> { enum { ret = InnerProduct }; }; -template<> struct ei_product_type_selector<1, 1, 1> { enum { ret = InnerProduct }; }; -template<> struct ei_product_type_selector<Small,1, Small> { enum { ret = CoeffBasedProductMode }; }; -template<> struct ei_product_type_selector<1, Small,Small> { enum { ret = CoeffBasedProductMode }; }; -template<> struct ei_product_type_selector<Small,Small,Small> { enum { ret = CoeffBasedProductMode }; }; -template<> struct ei_product_type_selector<Small, Small, 1> { enum { ret = LazyCoeffBasedProductMode }; }; -template<> struct ei_product_type_selector<Small, Large, 1> { enum { ret = LazyCoeffBasedProductMode }; }; -template<> struct ei_product_type_selector<Large, Small, 1> { enum { ret = LazyCoeffBasedProductMode }; }; -template<> struct ei_product_type_selector<1, Large,Small> { enum { ret = CoeffBasedProductMode }; }; -template<> struct ei_product_type_selector<1, Large,Large> { enum { ret = GemvProduct }; }; -template<> struct ei_product_type_selector<1, Small,Large> { enum { ret = CoeffBasedProductMode }; }; -template<> struct ei_product_type_selector<Large,1, Small> { enum { ret = CoeffBasedProductMode }; }; -template<> struct ei_product_type_selector<Large,1, Large> { enum { ret = GemvProduct }; }; -template<> struct ei_product_type_selector<Small,1, Large> { enum { ret = CoeffBasedProductMode }; }; -template<> struct ei_product_type_selector<Small,Small,Large> { enum { ret = GemmProduct }; }; -template<> struct ei_product_type_selector<Large,Small,Large> { enum { ret = GemmProduct }; }; -template<> struct ei_product_type_selector<Small,Large,Large> { enum { ret = GemmProduct }; }; -template<> struct ei_product_type_selector<Large,Large,Large> { enum { ret = GemmProduct }; }; -template<> struct ei_product_type_selector<Large,Small,Small> { enum { ret = GemmProduct }; }; -template<> struct ei_product_type_selector<Small,Large,Small> { enum { ret = GemmProduct }; }; -template<> struct ei_product_type_selector<Large,Large,Small> { enum { ret = GemmProduct }; }; +template<> struct ei_product_type_selector<Large,Large,1> { enum { ret = OuterProduct }; }; +template<int Depth> struct ei_product_type_selector<1, 1, Depth> { enum { ret = InnerProduct }; }; +template<> struct ei_product_type_selector<1, 1, 1> { enum { ret = InnerProduct }; }; +template<> struct ei_product_type_selector<Small,1, Small> { enum { ret = CoeffBasedProductMode }; }; +template<> struct ei_product_type_selector<1, Small,Small> { enum { ret = CoeffBasedProductMode }; }; +template<> struct ei_product_type_selector<Small,Small,Small> { enum { ret = CoeffBasedProductMode }; }; +template<> struct ei_product_type_selector<Small, Small, 1> { enum { ret = LazyCoeffBasedProductMode }; }; +template<> struct ei_product_type_selector<Small, Large, 1> { enum { ret = LazyCoeffBasedProductMode }; }; +template<> struct ei_product_type_selector<Large, Small, 1> { enum { ret = LazyCoeffBasedProductMode }; }; +template<> struct ei_product_type_selector<1, Large,Small> { enum { ret = CoeffBasedProductMode }; }; +template<> struct ei_product_type_selector<1, Large,Large> { enum { ret = GemvProduct }; }; +template<> struct ei_product_type_selector<1, Small,Large> { enum { ret = CoeffBasedProductMode }; }; +template<> struct ei_product_type_selector<Large,1, Small> { enum { ret = CoeffBasedProductMode }; }; +template<> struct ei_product_type_selector<Large,1, Large> { enum { ret = GemvProduct }; }; +template<> struct ei_product_type_selector<Small,1, Large> { enum { ret = CoeffBasedProductMode }; }; +template<> struct ei_product_type_selector<Small,Small,Large> { enum { ret = GemmProduct }; }; +template<> struct ei_product_type_selector<Large,Small,Large> { enum { ret = GemmProduct }; }; +template<> struct ei_product_type_selector<Small,Large,Large> { enum { ret = GemmProduct }; }; +template<> struct ei_product_type_selector<Large,Large,Large> { enum { ret = GemmProduct }; }; +template<> struct ei_product_type_selector<Large,Small,Small> { enum { ret = GemmProduct }; }; +template<> struct ei_product_type_selector<Small,Large,Small> { enum { ret = GemmProduct }; }; +template<> struct ei_product_type_selector<Large,Large,Small> { enum { ret = GemmProduct }; }; /** \class ProductReturnType * @@ -298,7 +298,7 @@ struct ei_gemv_selector<OnTheLeft,StorageOrder,BlasCompatible> { Transpose<Dest> destT(dest); ei_gemv_selector<OnTheRight,!StorageOrder,BlasCompatible> - ::run(GeneralProduct<Transpose<typename ProductType::_RhsNested>,Transpose<typename ProductType::_LhsNested> > + ::run(GeneralProduct<Transpose<typename ProductType::_RhsNested>,Transpose<typename ProductType::_LhsNested>, GemvProduct> (prod.rhs().transpose(), prod.lhs().transpose()), destT, alpha); } }; |