Classes | Namespaces | Defines
SelfadjointMatrixVector_MKL.h File Reference

Go to the source code of this file.

Classes

struct  Eigen::internal::selfadjoint_matrix_vector_product_symv< Scalar, Index, StorageOrder, UpLo, ConjugateLhs, ConjugateRhs >

Namespaces

namespace  Eigen
namespace  Eigen::internal

Defines

#define EIGEN_MKL_SYMV_SPECIALIZATION(EIGTYPE, MKLTYPE, MKLFUNC)
#define EIGEN_MKL_SYMV_SPECIALIZE(Scalar)

Define Documentation

#define EIGEN_MKL_SYMV_SPECIALIZATION (   EIGTYPE,
  MKLTYPE,
  MKLFUNC 
)
Value:
template<typename Index, int StorageOrder, int UpLo, bool ConjugateLhs, bool ConjugateRhs> \
struct selfadjoint_matrix_vector_product_symv<EIGTYPE,Index,StorageOrder,UpLo,ConjugateLhs,ConjugateRhs> \
{ \
typedef Matrix<EIGTYPE,Dynamic,1,ColMajor> SYMVVector;\
\
static EIGEN_DONT_INLINE void run( \
Index size, const EIGTYPE*  lhs, Index lhsStride, \
const EIGTYPE* _rhs, Index rhsIncr, EIGTYPE* res, EIGTYPE alpha) \
{ \
  enum {\
    IsRowMajor = StorageOrder==RowMajor ? 1 : 0, \
    IsLower = UpLo == Lower ? 1 : 0 \
  }; \
  MKL_INT n=size, lda=lhsStride, incx=rhsIncr, incy=1; \
  MKLTYPE alpha_, beta_; \
  const EIGTYPE *x_ptr, myone(1); \
  char uplo=(IsRowMajor) ? (IsLower ? 'U' : 'L') : (IsLower ? 'L' : 'U'); \
  assign_scalar_eig2mkl(alpha_, alpha); \
  assign_scalar_eig2mkl(beta_, myone); \
  SYMVVector x_tmp; \
  if (ConjugateRhs) { \
    Map<const SYMVVector, 0, InnerStride<> > map_x(_rhs,size,1,InnerStride<>(incx)); \
    x_tmp=map_x.conjugate(); \
    x_ptr=x_tmp.data(); \
    incx=1; \
  } else x_ptr=_rhs; \
  MKLFUNC(&uplo, &n, &alpha_, (const MKLTYPE*)lhs, &lda, (const MKLTYPE*)x_ptr, &incx, &beta_, (MKLTYPE*)res, &incy); \
}\
};

Definition at line 74 of file SelfadjointMatrixVector_MKL.h.

#define EIGEN_MKL_SYMV_SPECIALIZE (   Scalar)
Value:
template<typename Index, int StorageOrder, int UpLo, bool ConjugateLhs, bool ConjugateRhs> \
struct selfadjoint_matrix_vector_product<Scalar,Index,StorageOrder,UpLo,ConjugateLhs,ConjugateRhs,Specialized> { \
static EIGEN_DONT_INLINE void run( \
  Index size, const Scalar*  lhs, Index lhsStride, \
  const Scalar* _rhs, Index rhsIncr, Scalar* res, Scalar alpha) { \
    enum {\
      IsColMajor = StorageOrder==ColMajor \
    }; \
    if (IsColMajor == ConjugateLhs) {\
      selfadjoint_matrix_vector_product<Scalar,Index,StorageOrder,UpLo,ConjugateLhs,ConjugateRhs,BuiltIn>::run( \
        size, lhs, lhsStride, _rhs, rhsIncr, res, alpha);  \
    } else {\
      selfadjoint_matrix_vector_product_symv<Scalar,Index,StorageOrder,UpLo,ConjugateLhs,ConjugateRhs>::run( \
        size, lhs, lhsStride, _rhs, rhsIncr, res, alpha);  \
    }\
  } \
}; \

Definition at line 50 of file SelfadjointMatrixVector_MKL.h.



win_eigen
Author(s): Daniel Stonier
autogenerated on Wed Sep 16 2015 07:12:41