10#ifndef EIGEN_SELFADJOINT_PRODUCT_H
11#define EIGEN_SELFADJOINT_PRODUCT_H
22template<
typename Scalar,
typename Index,
int UpLo,
bool ConjLhs,
bool ConjRhs>
38template<
typename Scalar,
typename Index,
int UpLo,
bool ConjLhs,
bool ConjRhs>
43 selfadjoint_rank1_update<Scalar,Index,ColMajor,UpLo==Lower?Upper:Lower,ConjRhs,ConjLhs>::run(
size,
mat,stride,vecY,vecX,
alpha);
47template<
typename MatrixType,
typename OtherType,
int UpLo,
bool OtherIsVector = OtherType::IsVectorAtCompileTime>
50template<
typename MatrixType,
typename OtherType,
int UpLo>
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()));
78 ::run(other.size(),
mat.data(),
mat.outerStride(), actualOtherPtr, actualOtherPtr, actualAlpha);
82template<
typename MatrixType,
typename OtherType,
int UpLo>
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
101 Index depth = actualOther.cols();
104 MatrixType::MaxColsAtCompileTime, MatrixType::MaxColsAtCompileTime, _ActualOtherType::MaxColsAtCompileTime> BlockingType;
106 BlockingType blocking(
size,
size, depth, 1,
false);
112 IsRowMajor ?
RowMajor :
ColMajor, MatrixType::InnerStrideAtCompileTime, UpLo>
114 actualOther.data(), actualOther.outerStride(), actualOther.data(), actualOther.outerStride(),
115 mat.data(),
mat.innerStride(),
mat.outerStride(), actualAlpha, blocking);
121template<
typename MatrixType,
unsigned int UpLo>
122template<
typename DerivedU>
123EIGEN_DEVICE_FUNC SelfAdjointView<MatrixType,UpLo>& SelfAdjointView<MatrixType,UpLo>
int i
Definition BiCGSTAB_step_by_step.cpp:9
#define EIGEN_DEVICE_FUNC
Definition Macros.h:976
#define ei_declare_aligned_stack_constructed_variable(TYPE, NAME, SIZE, BUFFER)
Definition Memory.h:768
MatrixXf mat
Definition Tutorial_AdvancedInitialization_CommaTemporary.cpp:1
Scalar Scalar int size
Definition benchVecAdd.cpp:17
SCALAR Scalar
Definition bench_gemm.cpp:46
MatrixXf MatrixType
Definition benchmark-blocking-sizes.cpp:52
A matrix or vector expression mapping an existing array of data.
Definition Map.h:96
Base class for all dense matrices, vectors, and expressions.
Definition MatrixBase.h:50
internal::traits< SelfAdjointView >::Scalar Scalar
The type of coefficients in this matrix.
Definition SelfAdjointView.h:61
Definition TensorRef.h:81
Definition GeneralMatrixMatrix.h:248
@ Lower
Definition Constants.h:209
@ ColMajor
Definition Constants.h:319
@ RowMajor
Definition Constants.h:321
const unsigned int RowMajorBit
Definition Constants.h:66
RealScalar alpha
Definition level1_cplx_impl.h:147
Namespace containing all symbols from the Eigen library.
Definition bench_norm.cpp:85
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition Meta.h:74
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition NumTraits.h:233
Definition GeneralMatrixMatrixTriangular.h:36
Definition ForwardDeclarations.h:17
static void run(MatrixType &mat, const OtherType &other, const typename MatrixType::Scalar &alpha)
Definition SelfadjointProduct.h:85
static void run(MatrixType &mat, const OtherType &other, const typename MatrixType::Scalar &alpha)
Definition SelfadjointProduct.h:53
Definition SelfadjointProduct.h:48
static void run(Index size, Scalar *mat, Index stride, const Scalar *vecX, const Scalar *vecY, const Scalar &alpha)
Definition SelfadjointProduct.h:25
static void run(Index size, Scalar *mat, Index stride, const Scalar *vecX, const Scalar *vecY, const Scalar &alpha)
Definition SelfadjointProduct.h:41
Definition GeneralMatrixMatrixTriangular.h:16