10 #ifndef EIGEN_SELFADJOINT_PRODUCT_H    11 #define EIGEN_SELFADJOINT_PRODUCT_H    22 template<
typename Scalar, 
typename Index, 
int UpLo, 
bool ConjLhs, 
bool ConjRhs>
    25   static void run(
Index size, Scalar* mat, 
Index stride, 
const Scalar* vecX, 
const Scalar* vecY, 
const Scalar& alpha)
    30     for (
Index i=0; i<size; ++i)
    33           += (alpha * cj(vecY[i])) * ConjLhsType(OtherMap(vecX+(UpLo==
Lower ? i : 0),UpLo==
Lower ? size-i : (i+1)));
    38 template<
typename Scalar, 
typename Index, 
int UpLo, 
bool ConjLhs, 
bool ConjRhs>
    41   static void run(
Index size, Scalar* mat, 
Index stride, 
const Scalar* vecX, 
const Scalar* vecY, 
const Scalar& alpha)
    43     selfadjoint_rank1_update<Scalar,Index,ColMajor,UpLo==Lower?Upper:Lower,ConjRhs,ConjLhs>::run(size,mat,stride,vecY,vecX,alpha);
    47 template<
typename MatrixType, 
typename OtherType, 
int UpLo, 
bool OtherIsVector = OtherType::IsVectorAtCompileTime>
    50 template<
typename MatrixType, 
typename OtherType, 
int UpLo>
    53   static void run(MatrixType& mat, 
const OtherType& other, 
const typename MatrixType::Scalar& alpha)
    55     typedef typename MatrixType::Scalar Scalar;
    57     typedef typename OtherBlasTraits::DirectLinearAccessType ActualOtherType;
    61     Scalar actualAlpha = alpha * OtherBlasTraits::extractScalarFactor(other.derived());
    65       UseOtherDirectly = _ActualOtherType::InnerStrideAtCompileTime==1
    70       (UseOtherDirectly ? 
const_cast<Scalar*
>(actualOther.data()) : static_other.data()));
    77                             (!OtherBlasTraits::NeedToConjugate) && NumTraits<Scalar>::IsComplex>
    78           ::run(other.size(), mat.data(), mat.outerStride(), actualOtherPtr, actualOtherPtr, actualAlpha);
    82 template<
typename MatrixType, 
typename OtherType, 
int UpLo>
    85   static void run(MatrixType& mat, 
const OtherType& other, 
const typename MatrixType::Scalar& alpha)
    87     typedef typename MatrixType::Scalar Scalar;
    89     typedef typename OtherBlasTraits::DirectLinearAccessType ActualOtherType;
    93     Scalar actualAlpha = alpha * OtherBlasTraits::extractScalarFactor(other.derived());
    97       OtherIsRowMajor = _ActualOtherType::Flags&
RowMajorBit ? 1 : 0
   100     Index size = mat.cols();
   101     Index depth = actualOther.cols();
   104               MatrixType::MaxColsAtCompileTime, MatrixType::MaxColsAtCompileTime, _ActualOtherType::MaxColsAtCompileTime> BlockingType;
   106     BlockingType blocking(size, size, depth, 1, 
false);
   111       Scalar, OtherIsRowMajor ? 
ColMajor : 
RowMajor, (!OtherBlasTraits::NeedToConjugate) && NumTraits<Scalar>::IsComplex,
   114             &actualOther.coeffRef(0,0), actualOther.outerStride(), &actualOther.coeffRef(0,0), actualOther.outerStride(),
   115             mat.data(), mat.outerStride(), actualAlpha, blocking);
   121 template<
typename MatrixType, 
unsigned int UpLo>
   122 template<
typename DerivedU>
   133 #endif // EIGEN_SELFADJOINT_PRODUCT_H static void run(MatrixType &mat, const OtherType &other, const typename MatrixType::Scalar &alpha)
A matrix or vector expression mapping an existing array of data. 
Holds information about the various numeric (i.e. scalar) types allowed by Eigen. ...
const unsigned int RowMajorBit
internal::traits< SelfAdjointView >::Scalar Scalar
The type of coefficients in this matrix. 
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API. 
static void run(MatrixType &mat, const OtherType &other, const typename MatrixType::Scalar &alpha)
Expression of a selfadjoint matrix from a triangular part of a dense matrix. 
static void run(Index size, Scalar *mat, Index stride, const Scalar *vecX, const Scalar *vecY, const Scalar &alpha)
EIGEN_DEVICE_FUNC SelfAdjointView & rankUpdate(const MatrixBase< DerivedU > &u, const MatrixBase< DerivedV > &v, const Scalar &alpha=Scalar(1))
#define ei_declare_aligned_stack_constructed_variable(TYPE, NAME, SIZE, BUFFER)
static void run(Index size, Scalar *mat, Index stride, const Scalar *vecX, const Scalar *vecY, const Scalar &alpha)
Base class for all dense matrices, vectors, and expressions.