aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/Product.h
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2010-03-05 17:16:19 +0100
committerGravatar Gael Guennebaud <g.gael@free.fr>2010-03-05 17:16:19 +0100
commitf2a246c2258c400993a1bf52999a4b8e29bf4ff1 (patch)
tree0e731a1995672a82d632cd6bc8c3f738dd2fd145 /Eigen/src/Core/Product.h
parentc44220835864d2994a2a2b030100125fa00aa378 (diff)
add a small program to bench all combinations of small products
Diffstat (limited to 'Eigen/src/Core/Product.h')
-rw-r--r--Eigen/src/Core/Product.h46
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);
}
};