10#ifndef EIGEN_BLASUTIL_H
11#define EIGEN_BLASUTIL_H
21template<
typename LhsScalar,
typename RhsScalar,
typename Index,
typename DataMapper,
int mr,
int nr,
bool ConjugateLhs=false,
bool ConjugateRhs=false>
24template<
typename Scalar,
typename Index,
typename DataMapper,
int nr,
int StorageOrder,
bool Conjugate = false,
bool PanelMode=false>
27template<
typename Scalar,
typename Index,
typename DataMapper,
int Pack1,
int Pack2,
typename Packet,
int StorageOrder,
bool Conjugate = false,
bool PanelMode = false>
37template<
typename Index,
52template<
typename Scalar,
typename Index>
60 template <
typename Packet,
int AlignmentType>
65 template <
typename Packet>
74template<
typename Scalar,
typename Index,
int AlignmentType,
int Incr=1>
77template<
typename Scalar,
typename Index,
int AlignmentType>
96 template<
typename PacketType>
101 template<
typename PacketType>
111template<
typename Scalar,
typename Index,
int StorageOrder,
int AlignmentType = Unaligned,
int Incr = 1>
118template<
typename Index,
typename Scalar,
typename Packet,
int n,
int idx,
int StorageOrder>
129template<
typename Index,
typename Scalar,
typename Packet,
int n,
int idx>
139template<
typename Index,
typename Scalar,
typename Packet,
int n,
int StorageOrder>
151template<
typename Index,
typename Scalar,
typename Packet,
int n>
163template<
typename Scalar,
typename Index,
int StorageOrder,
int AlignmentType>
196 template<
typename PacketType>
201 template <
typename PacketT,
int AlignmentT>
206 template<
typename SubPacket>
211 template<
typename SubPacket>
223 return internal::first_default_aligned(
m_data,
size);
226 template<
typename SubPacket,
int n>
239template<
typename Scalar,
typename Index,
int AlignmentType,
int Incr>
253 template<
typename PacketType>
258 template<
typename PacketType>
268template<
typename Scalar,
typename Index,
int StorageOrder,
int AlignmentType,
int Incr>
290 template<
typename PacketType>
295 template <
typename PacketT,
int AlignmentT>
300 template<
typename SubPacket>
305 template<
typename SubPacket>
311 template<
typename SubPacket,
typename ScalarT,
int n,
int idx>
325 template<
typename SubPacket,
int n,
int idx>
333 std::complex<float> *
v = &
sup->operator()(
i+l,
j+
idx);
340 template<
typename SubPacket,
int n,
int idx>
348 std::complex<double> *
v = &
sup->operator()(
i+l,
j+
idx);
355 template<
typename SubPacket,
typename ScalarT,
int n>
362 template<
typename SubPacket,
int n>
369 template<
typename SubPacket,
int n>
376 template<
typename SubPacket,
int n>
388template<
typename Scalar,
typename Index,
int StorageOrder>
412 && (
bool(XprType::IsVectorAtCompileTime)
419 typename _ExtractType::PlainObject
426template<
typename Scalar,
typename NestedXpr>
443template<
typename Scalar,
typename NestedXpr,
typename Plain>
455 {
return x.lhs().functor().m_other * Base::extractScalarFactor(
x.rhs()); }
457template<
typename Scalar,
typename NestedXpr,
typename Plain>
469 {
return Base::extractScalarFactor(
x.lhs()) *
x.rhs().functor().m_other; }
471template<
typename Scalar,
typename Plain1,
typename Plain2>
474 :
blas_traits<CwiseNullaryOp<scalar_constant_op<Scalar>,Plain1> >
478template<
typename Scalar,
typename NestedXpr>
490 {
return - Base::extractScalarFactor(
x.nestedExpression()); }
494template<
typename NestedXpr>
498 typedef typename NestedXpr::Scalar
Scalar;
505 typename ExtractType::PlainObject
529 static typename T::Scalar*
run(
const T&) {
return 0; }
542template<
typename ResScalar,
typename Lhs,
typename Rhs>
554template<
typename Lhs,
typename Rhs>
567template<
typename ResScalar,
typename Lhs,
typename Rhs>
572template<
typename ResScalar,
typename Lhs,
typename Rhs>
Matrix3f m
Definition AngleAxis_mimic_euler.cpp:1
Array< int, Dynamic, 1 > v
Definition Array_initializer_list_vector_cxx11.cpp:1
int n
Definition BiCGSTAB_simple.cpp:1
int i
Definition BiCGSTAB_step_by_step.cpp:9
#define EIGEN_RESTRICT
Definition Macros.h:1160
#define EIGEN_ALWAYS_INLINE
Definition Macros.h:932
#define EIGEN_UNUSED_VARIABLE(var)
Definition Macros.h:1076
#define EIGEN_DEVICE_FUNC
Definition Macros.h:976
#define EIGEN_ONLY_USED_FOR_DEBUG(x)
Definition Macros.h:1049
#define eigen_assert(x)
Definition Macros.h:1037
#define EIGEN_STRONG_INLINE
Definition Macros.h:917
int data[]
Definition Map_placement_new.cpp:1
float * p
Definition Tutorial_Map_using.cpp:9
m m block(1, 0, 2, 2)<< 4
Scalar Scalar int size
Definition benchVecAdd.cpp:17
SCALAR Scalar
Definition bench_gemm.cpp:46
mp::number< mp::cpp_dec_float< 100 >, mp::et_on > Real
Definition boostmultiprec.cpp:78
Generic expression where a coefficient-wise binary operator is applied to two expressions.
Definition CwiseBinaryOp.h:84
Generic expression of a matrix where all coefficients are defined by a functor.
Definition CwiseNullaryOp.h:61
Generic expression where a coefficient-wise unary operator is applied to an expression.
Definition CwiseUnaryOp.h:56
Expression of the transpose of a matrix.
Definition Transpose.h:54
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void storePacket(Index i, const PacketType &p) const
Definition BlasUtil.h:102
Scalar * m_data
Definition BlasUtil.h:107
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE BlasLinearMapper(Scalar *data, Index incr=1)
Definition BlasUtil.h:81
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Scalar & operator()(Index i) const
Definition BlasUtil.h:92
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE PacketType loadPacket(Index i) const
Definition BlasUtil.h:97
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void prefetch(int i) const
Definition BlasUtil.h:88
Definition BlasUtil.h:241
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void prefetch(int i) const
Definition BlasUtil.h:245
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE PacketType loadPacket(Index i) const
Definition BlasUtil.h:254
Scalar * m_data
Definition BlasUtil.h:264
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void storePacket(Index i, const PacketType &p) const
Definition BlasUtil.h:259
const internal::variable_if_dynamic< Index, Incr > m_incr
Definition BlasUtil.h:265
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Scalar & operator()(Index i) const
Definition BlasUtil.h:249
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE BlasLinearMapper(Scalar *data, Index incr)
Definition BlasUtil.h:243
Scalar * m_data
Definition BlasUtil.h:71
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Packet load(Index i) const
Definition BlasUtil.h:61
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Scalar operator()(Index i) const
Definition BlasUtil.h:57
EIGEN_DEVICE_FUNC bool aligned(Index i) const
Definition BlasUtil.h:66
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE BlasVectorMapper(Scalar *data)
Definition BlasUtil.h:55
BlasVectorMapper< Scalar, Index > VectorMapper
Definition BlasUtil.h:168
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE LinearMapper getLinearMapper(Index i, Index j) const
Definition BlasUtil.h:182
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE PacketType loadPacket(Index i, Index j) const
Definition BlasUtil.h:197
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void storePacketBlock(Index i, Index j, const PacketBlock< SubPacket, n > &block) const
Definition BlasUtil.h:227
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE SubPacket gatherPacket(Index i, Index j) const
Definition BlasUtil.h:212
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Scalar & operator()(Index i, Index j) const
Definition BlasUtil.h:192
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE blas_data_mapper< Scalar, Index, StorageOrder, AlignmentType > getSubMapper(Index i, Index j) const
Definition BlasUtil.h:178
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE blas_data_mapper(Scalar *data, Index stride, Index incr=1)
Definition BlasUtil.h:170
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE VectorMapper getVectorMapper(Index i, Index j) const
Definition BlasUtil.h:186
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void scatterPacket(Index i, Index j, const SubPacket &p) const
Definition BlasUtil.h:207
Scalar *EIGEN_RESTRICT m_data
Definition BlasUtil.h:232
const Index m_stride
Definition BlasUtil.h:233
EIGEN_DEVICE_FUNC const Scalar * data() const
Definition BlasUtil.h:217
EIGEN_DEVICE_FUNC Index firstAligned(Index size) const
Definition BlasUtil.h:219
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE PacketT load(Index i, Index j) const
Definition BlasUtil.h:202
EIGEN_DEVICE_FUNC const Index stride() const
Definition BlasUtil.h:216
BlasLinearMapper< Scalar, Index, AlignmentType > LinearMapper
Definition BlasUtil.h:167
Definition BlasUtil.h:270
const internal::variable_if_dynamic< Index, Incr > m_incr
Definition BlasUtil.h:384
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE PacketType loadPacket(Index i, Index j) const
Definition BlasUtil.h:291
Scalar *EIGEN_RESTRICT m_data
Definition BlasUtil.h:382
const Index m_stride
Definition BlasUtil.h:383
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE LinearMapper getLinearMapper(Index i, Index j) const
Definition BlasUtil.h:281
BlasLinearMapper< Scalar, Index, AlignmentType, Incr > LinearMapper
Definition BlasUtil.h:272
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE PacketT load(Index i, Index j) const
Definition BlasUtil.h:296
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE blas_data_mapper(Scalar *data, Index stride, Index incr)
Definition BlasUtil.h:274
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void storePacketBlock(Index i, Index j, const PacketBlock< SubPacket, n > &block) const
Definition BlasUtil.h:377
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE blas_data_mapper getSubMapper(Index i, Index j) const
Definition BlasUtil.h:277
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE SubPacket gatherPacket(Index i, Index j) const
Definition BlasUtil.h:306
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Scalar & operator()(Index i, Index j) const
Definition BlasUtil.h:286
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void scatterPacket(Index i, Index j, const SubPacket &p) const
Definition BlasUtil.h:301
Definition BlasUtil.h:389
EIGEN_ALWAYS_INLINE const_blas_data_mapper< Scalar, Index, StorageOrder > getSubMapper(Index i, Index j) const
Definition BlasUtil.h:393
EIGEN_ALWAYS_INLINE const_blas_data_mapper(const Scalar *data, Index stride)
Definition BlasUtil.h:391
set noclip points set clip one set noclip two set bar set border lt lw set xdata set ydata set zdata set x2data set y2data set boxwidth set dummy x
Definition gnuplot_common_settings.hh:12
AlignmentType
Definition Constants.h:232
@ RowMajor
Definition Constants.h:321
const unsigned int DirectAccessBit
Definition Constants.h:155
RealScalar alpha
Definition level1_cplx_impl.h:147
std::size_t UIntPtr
Definition Meta.h:92
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE ResScalar combine_scalar_factors(const ResScalar &alpha, const Lhs &lhs, const Rhs &rhs)
Definition BlasUtil.h:568
EIGEN_DEVICE_FUNC void prefetch(const Scalar *addr)
Definition GenericPacketMath.h:719
@ Lhs
Definition TensorContractionMapper.h:19
@ Rhs
Definition TensorContractionMapper.h:18
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE const T::Scalar * extract_data(const T &m)
Definition BlasUtil.h:533
Namespace containing all symbols from the Eigen library.
Definition bench_norm.cpp:85
const AutoDiffScalar< DerType > & conj(const AutoDiffScalar< DerType > &x)
Definition AutoDiffScalar.h:574
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition Meta.h:74
@ Specialized
Definition Constants.h:310
Definition BandTriangularSolver.h:13
CwiseBinaryOp< internal::scalar_sum_op< double, double >, const CpyMatrixXd, const CpyMatrixXd > XprType
Definition nestbyvalue.cpp:15
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition NumTraits.h:233
Definition TensorMeta.h:50
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void store(Scalar *to, const Index stride, Index i, Index j, const PacketBlock< Packet, n > &block) const
Definition BlasUtil.h:154
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void store(Scalar *to, const Index stride, Index i, Index j, const PacketBlock< Packet, n > &block) const
Definition BlasUtil.h:142
PacketBlockManagement< Index, Scalar, Packet, n, idx - 1, RowMajor > pbm
Definition BlasUtil.h:132
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void store(Scalar *to, const Index stride, Index i, Index j, const PacketBlock< Packet, n > &block) const
Definition BlasUtil.h:133
Definition BlasUtil.h:120
PacketBlockManagement< Index, Scalar, Packet, n, idx - 1, StorageOrder > pbm
Definition BlasUtil.h:121
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void store(Scalar *to, const Index stride, Index i, Index j, const PacketBlock< Packet, n > &block) const
Definition BlasUtil.h:122
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void store(const blas_data_mapper< Scalar, Index, StorageOrder, AlignmentType, Incr > *, Index, Index, const PacketBlock< SubPacket, n > &) const
Definition BlasUtil.h:358
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void store(const blas_data_mapper< Scalar, Index, StorageOrder, AlignmentType, Incr > *, Index, Index, const PacketBlock< SubPacket, n > &) const
Definition BlasUtil.h:372
storePacketBlock_helper< SubPacket, std::complex< float >, n, idx-1 > spbh
Definition BlasUtil.h:328
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void store(const blas_data_mapper< Scalar, Index, StorageOrder, AlignmentType, Incr > *sup, Index i, Index j, const PacketBlock< SubPacket, n > &block) const
Definition BlasUtil.h:329
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void store(const blas_data_mapper< Scalar, Index, StorageOrder, AlignmentType, Incr > *, Index, Index, const PacketBlock< SubPacket, n > &) const
Definition BlasUtil.h:365
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void store(const blas_data_mapper< Scalar, Index, StorageOrder, AlignmentType, Incr > *sup, Index i, Index j, const PacketBlock< SubPacket, n > &block) const
Definition BlasUtil.h:344
storePacketBlock_helper< SubPacket, std::complex< double >, n, idx-1 > spbh
Definition BlasUtil.h:343
Definition BlasUtil.h:313
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void store(const blas_data_mapper< Scalar, Index, StorageOrder, AlignmentType, Incr > *sup, Index i, Index j, const PacketBlock< SubPacket, n > &block) const
Definition BlasUtil.h:315
storePacketBlock_helper< SubPacket, ScalarT, n, idx-1 > spbh
Definition BlasUtil.h:314
Base::ExtractType ExtractType
Definition BlasUtil.h:452
static EIGEN_DEVICE_FUNC ExtractType extract(const XprType &x)
Definition BlasUtil.h:453
CwiseBinaryOp< scalar_product_op< Scalar >, const CwiseNullaryOp< scalar_constant_op< Scalar >, Plain >, NestedXpr > XprType
Definition BlasUtil.h:451
blas_traits< NestedXpr > Base
Definition BlasUtil.h:450
static EIGEN_DEVICE_FUNC Scalar extractScalarFactor(const XprType &x)
Definition BlasUtil.h:454
blas_traits< NestedXpr > Base
Definition BlasUtil.h:464
static ExtractType extract(const XprType &x)
Definition BlasUtil.h:467
static Scalar extractScalarFactor(const XprType &x)
Definition BlasUtil.h:468
CwiseBinaryOp< scalar_product_op< Scalar >, NestedXpr, const CwiseNullaryOp< scalar_constant_op< Scalar >, Plain > > XprType
Definition BlasUtil.h:465
Base::ExtractType ExtractType
Definition BlasUtil.h:466
static ExtractType extract(const XprType &x)
Definition BlasUtil.h:438
CwiseUnaryOp< scalar_conjugate_op< Scalar >, NestedXpr > XprType
Definition BlasUtil.h:431
blas_traits< NestedXpr > Base
Definition BlasUtil.h:430
static Scalar extractScalarFactor(const XprType &x)
Definition BlasUtil.h:439
Base::ExtractType ExtractType
Definition BlasUtil.h:432
static ExtractType extract(const XprType &x)
Definition BlasUtil.h:488
Base::ExtractType ExtractType
Definition BlasUtil.h:487
blas_traits< NestedXpr > Base
Definition BlasUtil.h:485
CwiseUnaryOp< scalar_opposite_op< Scalar >, NestedXpr > XprType
Definition BlasUtil.h:486
static Scalar extractScalarFactor(const XprType &x)
Definition BlasUtil.h:489
static ExtractType extract(const XprType &x)
Definition BlasUtil.h:510
Transpose< NestedXpr > XprType
Definition BlasUtil.h:500
blas_traits< NestedXpr > Base
Definition BlasUtil.h:499
NestedXpr::Scalar Scalar
Definition BlasUtil.h:498
conditional< bool(Base::HasUsableDirectAccess), ExtractType, typenameExtractType::PlainObject >::type DirectLinearAccessType
Definition BlasUtil.h:506
Transpose< const typename Base::_ExtractType > _ExtractType
Definition BlasUtil.h:502
static Scalar extractScalarFactor(const XprType &x)
Definition BlasUtil.h:511
Transpose< const typename Base::_ExtractType > ExtractType
Definition BlasUtil.h:501
Definition BlasUtil.h:403
conditional< bool(HasUsableDirectAccess), ExtractType, typename_ExtractType::PlainObject >::type DirectLinearAccessType
Definition BlasUtil.h:420
static EIGEN_DEVICE_FUNC const Scalar extractScalarFactor(const XprType &)
Definition BlasUtil.h:422
static EIGEN_DEVICE_FUNC ExtractType extract(const XprType &x)
Definition BlasUtil.h:421
const XprType & ExtractType
Definition BlasUtil.h:405
traits< XprType >::Scalar Scalar
Definition BlasUtil.h:404
XprType _ExtractType
Definition BlasUtil.h:406
@ HasUsableDirectAccess
Definition BlasUtil.h:411
@ NeedToConjugate
Definition BlasUtil.h:410
@ HasScalarFactor
Definition BlasUtil.h:415
@ IsComplex
Definition BlasUtil.h:408
@ IsTransposed
Definition BlasUtil.h:409
EIGEN_DEVICE_FUNC static EIGEN_ALWAYS_INLINE bool run(const Lhs &lhs, const Rhs &rhs)
Definition BlasUtil.h:557
EIGEN_DEVICE_FUNC static EIGEN_ALWAYS_INLINE bool run(const bool &alpha, const Lhs &lhs, const Rhs &rhs)
Definition BlasUtil.h:561
Definition BlasUtil.h:544
EIGEN_DEVICE_FUNC static EIGEN_ALWAYS_INLINE ResScalar run(const Lhs &lhs, const Rhs &rhs)
Definition BlasUtil.h:545
EIGEN_DEVICE_FUNC static EIGEN_ALWAYS_INLINE ResScalar run(const ResScalar &alpha, const Lhs &lhs, const Rhs &rhs)
Definition BlasUtil.h:549
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE NumTraits< Scalar >::Real run(const Scalar &x)
Definition BlasUtil.h:48
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE To run(const From &x)
Definition BlasUtil.h:43
Definition DenseCoeffsBase.h:659
Definition UnaryFunctors.h:109
Definition NullaryFunctors.h:18
Definition UnaryFunctors.h:22
Definition BinaryFunctors.h:71
Definition ForwardDeclarations.h:17
Definition datatypes.h:12
std::ptrdiff_t j
Definition tut_arithmetic_redux_minmax.cpp:2
Definition PacketMath.h:47