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
void run(
Index size,
const EIGTYPE* lhs,
Index lhsStride,
const EIGTYPE* _rhs, EIGTYPE*
res, \
enum { IsRowMajor = StorageOrder ==
RowMajor ? 1 : 0, IsLower = UpLo ==
Lower ? 1 : 0 }; \
BlasIndex
n = convert_index<BlasIndex>(
size),
lda = convert_index<BlasIndex>(lhsStride),
incx = 1,
incy = 1; \
const EIGTYPE* x_ptr; \
char
uplo = (IsRowMajor) ? (IsLower ?
'U' :
'L') : (IsLower ?
'L' :
'U'); \
SYMVVector x_tmp; \
if (ConjugateRhs) { \
Map<const SYMVVector, 0> map_x(_rhs,
size, 1); \
x_tmp = map_x.conjugate(); \
x_ptr = x_tmp.data(); \
} else \
x_ptr = _rhs; \
} \
};
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
cout<< "Here is the matrix m:"<< endl<< m<< endl;Matrix< ptrdiff_t, 3, 1 > res
Definition: PartialRedux_count.cpp:3
Scalar Scalar int size
Definition: benchVecAdd.cpp:17
@ Lower
Definition: Constants.h:211
@ RowMajor
Definition: Constants.h:320
int RealScalar int RealScalar int * incy
Definition: level1_cplx_impl.h:124
if n return
Definition: level1_cplx_impl.h:31
RealScalar alpha
Definition: level1_cplx_impl.h:151
RealScalar RealScalar int * incx
Definition: level1_cplx_impl.h:27
const char * uplo
Definition: level2_cplx_impl.h:20
const char const int const RealScalar const RealScalar const int * lda
Definition: level2_cplx_impl.h:20
Scalar beta
Definition: level2_cplx_impl.h:36
EIGEN_DEVICE_FUNC internal::add_const_on_value_type_t< EIGEN_MATHFUNC_RETVAL(real_ref, Scalar)> real_ref(const Scalar &x)
Definition: MathFunctions.h:1051
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
void run(const string &dir_name, LinearSolver *linear_solver_pt, const unsigned nel_1d, bool mess_up_order)
Definition: two_d_poisson_compare_solvers.cc:317