mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-06-04 18:54:00 +08:00
fix grave bug introduced by me: the low-level matrix-vector product functions can't be fed strided vectors, only strided matrices.
This commit is contained in:
parent
941a7e4ebd
commit
4ba032c9ab
@ -297,7 +297,8 @@ struct ei_gemv_selector<OnTheLeft,StorageOrder,BlasCompatible>
|
|||||||
static void run(const ProductType& prod, Dest& dest, typename ProductType::Scalar alpha)
|
static void run(const ProductType& prod, Dest& dest, typename ProductType::Scalar alpha)
|
||||||
{
|
{
|
||||||
Transpose<Dest> destT(dest);
|
Transpose<Dest> destT(dest);
|
||||||
ei_gemv_selector<OnTheRight,!StorageOrder,BlasCompatible>
|
enum { OtherStorageOrder = StorageOrder == RowMajor ? ColMajor : RowMajor };
|
||||||
|
ei_gemv_selector<OnTheRight,OtherStorageOrder,BlasCompatible>
|
||||||
::run(GeneralProduct<Transpose<typename ProductType::_RhsNested>,Transpose<typename ProductType::_LhsNested>, GemvProduct>
|
::run(GeneralProduct<Transpose<typename ProductType::_RhsNested>,Transpose<typename ProductType::_LhsNested>, GemvProduct>
|
||||||
(prod.rhs().transpose(), prod.lhs().transpose()), destT, alpha);
|
(prod.rhs().transpose(), prod.lhs().transpose()), destT, alpha);
|
||||||
}
|
}
|
||||||
|
@ -159,7 +159,10 @@ template<typename XprType> struct ei_blas_traits
|
|||||||
IsTransposed = false,
|
IsTransposed = false,
|
||||||
NeedToConjugate = false,
|
NeedToConjugate = false,
|
||||||
ActualAccess = ( (int(XprType::Flags)&DirectAccessBit)
|
ActualAccess = ( (int(XprType::Flags)&DirectAccessBit)
|
||||||
&& (bool(XprType::IsVectorAtCompileTime) || int(ei_inner_stride_at_compile_time<XprType>::ret) == 1)
|
&& ( /* Uncomment this when the low-level matrix-vector product functions support strided vectors
|
||||||
|
bool(XprType::IsVectorAtCompileTime)
|
||||||
|
|| */
|
||||||
|
int(ei_inner_stride_at_compile_time<XprType>::ret) == 1)
|
||||||
) ? HasDirectAccess : NoDirectAccess
|
) ? HasDirectAccess : NoDirectAccess
|
||||||
};
|
};
|
||||||
typedef typename ei_meta_if<int(ActualAccess)==HasDirectAccess,
|
typedef typename ei_meta_if<int(ActualAccess)==HasDirectAccess,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user