10#ifndef EIGEN_SELFADJOINT_MATRIX_MATRIX_H
11#define EIGEN_SELFADJOINT_MATRIX_MATRIX_H
18template<
typename Scalar,
typename Index,
int Pack1,
int Pack2_dummy,
int StorageOrder>
21 template<
int BlockRows>
inline
33 blockA[
count++] = numext::conj(lhs(k,
i+
w));
35 blockA[
count++] = numext::real(lhs(k,k));
44 blockA[
count++] = numext::conj(lhs(k,
i+
w));
53 HasHalf = (
int)HalfPacketSize < (
int)PacketSize,
66 if(
Pack1>=3*PacketSize)
70 if(
Pack1>=2*PacketSize)
74 if(
Pack1>=1*PacketSize)
90 blockA[
count++] = lhs(
i, k);
92 blockA[
count++] = numext::real(lhs(
i,
i));
95 blockA[
count++] = numext::conj(lhs(k,
i));
100template<
typename Scalar,
typename Index,
int nr,
int StorageOrder>
145 blockB[
count+0] = numext::conj(rhs(
j2+0,k));
146 blockB[
count+1] = numext::conj(rhs(
j2+1,k));
147 blockB[
count+2] = numext::conj(rhs(
j2+2,k));
148 blockB[
count+3] = numext::conj(rhs(
j2+3,k));
149 blockB[
count+4] = numext::conj(rhs(
j2+4,k));
150 blockB[
count+5] = numext::conj(rhs(
j2+5,k));
151 blockB[
count+6] = numext::conj(rhs(
j2+6,k));
152 blockB[
count+7] = numext::conj(rhs(
j2+7,k));
163 blockB[
count+h] = numext::real(rhs(k,k));
167 blockB[
count+
w] = numext::conj(rhs(
j2+
w,k));
194 blockB[
count+0] = numext::conj(rhs(
j2+0,k));
195 blockB[
count+1] = numext::conj(rhs(
j2+1,k));
196 blockB[
count+2] = numext::conj(rhs(
j2+2,k));
197 blockB[
count+3] = numext::conj(rhs(
j2+3,k));
208 blockB[
count+h] = numext::real(rhs(k,k));
212 blockB[
count+
w] = numext::conj(rhs(
j2+
w,k));
235 blockB[
count+0] = numext::conj(rhs(
j2+0,k));
236 blockB[
count+1] = numext::conj(rhs(
j2+1,k));
237 blockB[
count+2] = numext::conj(rhs(
j2+2,k));
238 blockB[
count+3] = numext::conj(rhs(
j2+3,k));
239 blockB[
count+4] = numext::conj(rhs(
j2+4,k));
240 blockB[
count+5] = numext::conj(rhs(
j2+5,k));
241 blockB[
count+6] = numext::conj(rhs(
j2+6,k));
242 blockB[
count+7] = numext::conj(rhs(
j2+7,k));
253 blockB[
count+0] = numext::conj(rhs(
j2+0,k));
254 blockB[
count+1] = numext::conj(rhs(
j2+1,k));
255 blockB[
count+2] = numext::conj(rhs(
j2+2,k));
256 blockB[
count+3] = numext::conj(rhs(
j2+3,k));
269 blockB[
count] = numext::conj(rhs(
j2,k));
275 blockB[
count] = numext::real(rhs(
j2,
j2));
295 int LhsStorageOrder,
bool LhsSelfAdjoint,
bool ConjugateLhs,
296 int RhsStorageOrder,
bool RhsSelfAdjoint,
bool ConjugateRhs,
297 int ResStorageOrder,
int ResInnerStride>
320 ::run(
cols,
rows, rhs,
rhsStride, lhs,
lhsStride,
res,
resIncr,
resStride,
alpha,
blocking);
325 int LhsStorageOrder,
bool ConjugateLhs,
326 int RhsStorageOrder,
bool ConjugateRhs,
366 kc = (std::min)(kc,mc);
367 std::size_t
sizeA = kc*mc;
456 std::size_t
sizeA = kc*mc;
490template<
typename Lhs,
int LhsMode,
typename Rhs,
int RhsMode>
507 template<
typename Dest>
516 * RhsBlasTraits::extractScalarFactor(
a_rhs);
519 Lhs::MaxRowsAtCompileTime, Rhs::MaxColsAtCompileTime, Lhs::MaxColsAtCompileTime,1>
BlockingType;
529 Dest::InnerStrideAtCompileTime>
531 lhs.rows(), rhs.cols(),
532 &lhs.coeffRef(0,0), lhs.outerStride(),
533 &rhs.coeffRef(0,0), rhs.outerStride(),
534 &
dst.coeffRef(0,0),
dst.innerStride(),
dst.outerStride(),
int i
Definition BiCGSTAB_step_by_step.cpp:9
#define EIGEN_LOGICAL_XOR(a, b)
Definition Macros.h:1313
#define EIGEN_DONT_INLINE
Definition Macros.h:940
#define eigen_assert(x)
Definition Macros.h:1037
#define EIGEN_STRONG_INLINE
Definition Macros.h:917
RowVector3d w
Definition Matrix_resize_int.cpp:3
#define ei_declare_aligned_stack_constructed_variable(TYPE, NAME, SIZE, BUFFER)
Definition Memory.h:768
cout<< "Here is the matrix m:"<< endl<< m<< endl;Matrix< ptrdiff_t, 3, 1 > res
Definition PartialRedux_count.cpp:3
int rows
Definition Tutorial_commainit_02.cpp:1
int cols
Definition Tutorial_commainit_02.cpp:1
Scalar Scalar int size
Definition benchVecAdd.cpp:17
SCALAR Scalar
Definition bench_gemm.cpp:46
Expression of the product of two arbitrary matrices or vectors.
Definition Product.h:75
Definition BlasUtil.h:389
Definition GeneralMatrixMatrix.h:248
@ SelfAdjoint
Definition Constants.h:225
@ Lower
Definition Constants.h:209
@ Upper
Definition Constants.h:211
@ 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
@ Lhs
Definition TensorContractionMapper.h:19
@ Rhs
Definition TensorContractionMapper.h:18
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
Definition BandTriangularSolver.h:13
uint8_t count
Definition ref_serial.h:256
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition NumTraits.h:233
Definition GeneralBlockPanelKernel.h:1058
Definition GenericPacketMath.h:107
static EIGEN_STRONG_INLINE void run(Index rows, Index cols, const Scalar *lhs, Index lhsStride, const Scalar *rhs, Index rhsStride, Scalar *res, Index resIncr, Index resStride, const Scalar &alpha, level3_blocking< Scalar, Scalar > &blocking)
Definition SelfadjointMatrixMatrix.h:307
Definition SelfadjointMatrixMatrix.h:298
internal::blas_traits< Lhs > LhsBlasTraits
Definition SelfadjointMatrixMatrix.h:495
Product< Lhs, Rhs >::Scalar Scalar
Definition SelfadjointMatrixMatrix.h:493
RhsBlasTraits::DirectLinearAccessType ActualRhsType
Definition SelfadjointMatrixMatrix.h:498
LhsBlasTraits::DirectLinearAccessType ActualLhsType
Definition SelfadjointMatrixMatrix.h:496
static void run(Dest &dst, const Lhs &a_lhs, const Rhs &a_rhs, const Scalar &alpha)
Definition SelfadjointMatrixMatrix.h:508
internal::blas_traits< Rhs > RhsBlasTraits
Definition SelfadjointMatrixMatrix.h:497
Definition ProductEvaluators.h:793
Definition SelfadjointMatrixMatrix.h:20
void pack(Scalar *blockA, const const_blas_data_mapper< Scalar, Index, StorageOrder > &lhs, Index cols, Index i, Index &count)
Definition SelfadjointMatrixMatrix.h:22
void operator()(Scalar *blockA, const Scalar *_lhs, Index lhsStride, Index cols, Index rows)
Definition SelfadjointMatrixMatrix.h:46
Definition SelfadjointMatrixMatrix.h:102
@ PacketSize
Definition SelfadjointMatrixMatrix.h:103
void operator()(Scalar *blockB, const Scalar *_rhs, Index rhsStride, Index rows, Index cols, Index k2)
Definition SelfadjointMatrixMatrix.h:104
Definition ForwardDeclarations.h:17
Definition GenericPacketMath.h:133