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>
32 typename LhsScalar,
int LhsStorageOrder,
bool ConjugateLhs,
33 typename RhsScalar,
int RhsStorageOrder,
bool ConjugateRhs,
34 int ResStorageOrder,
int ResInnerStride>
37template<
typename Index,
38 typename LhsScalar,
typename LhsMapper,
int LhsStorageOrder,
bool ConjugateLhs,
39 typename RhsScalar,
typename RhsMapper,
bool ConjugateRhs,
int Version=
Specialized>
52template<
typename Scalar,
typename Index>
60 template <
typename Packet,
int AlignmentType>
62 return ploadt<Packet, AlignmentType>(
m_data + i);
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>
98 return ploadt<PacketType, AlignmentType>(
m_data + i);
101 template<
typename PacketType>
103 pstoret<Scalar, PacketType, AlignmentType>(
m_data + i, p);
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>
124 pstoreu<Scalar>(to + i + (j + idx)*stride,
block.packet[idx]);
129template<
typename Index,
typename Scalar,
typename Packet,
int n,
int idx>
135 pstoreu<Scalar>(to + j + (i + idx)*stride,
block.packet[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>
198 return ploadt<PacketType, AlignmentType>(&
operator()(i, j));
201 template <
typename PacketT,
int AlignmentT>
203 return ploadt<PacketT, AlignmentT>(&
operator()(i, j));
206 template<
typename SubPacket>
208 pscatter<Scalar, SubPacket>(&
operator()(i, j), p,
m_stride);
211 template<
typename SubPacket>
213 return pgather<Scalar, SubPacket>(&
operator()(i, j),
m_stride);
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>
292 return pgather<Scalar,PacketType>(&
operator()(i, j),
m_incr.
value());
295 template <
typename PacketT,
int AlignmentT>
297 return pgather<Scalar,PacketT>(&
operator()(i, j),
m_incr.
value());
300 template<
typename SubPacket>
302 pscatter<Scalar, SubPacket>(&
operator()(i, j), p,
m_stride);
305 template<
typename SubPacket>
307 return pgather<Scalar, SubPacket>(&
operator()(i, j),
m_stride);
311 template<
typename SubPacket,
typename ScalarT,
int n,
int idx>
319 ScalarT *v = &sup->operator()(i+l, j+idx);
320 *v =
block.packet[idx][l];
325 template<
typename SubPacket,
int n,
int idx>
333 std::complex<float> *v = &sup->operator()(i+l, j+idx);
334 v->real(
block.packet[idx].v[2*l+0]);
335 v->imag(
block.packet[idx].v[2*l+1]);
340 template<
typename SubPacket,
int n,
int idx>
348 std::complex<double> *v = &sup->operator()(i+l, j+idx);
349 v->real(
block.packet[idx].v[2*l+0]);
350 v->imag(
block.packet[idx].v[2*l+1]);
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>
494template<
typename NestedXpr>
498 typedef typename NestedXpr::Scalar
Scalar;
503 typedef typename conditional<bool(Base::HasUsableDirectAccess),
505 typename ExtractType::PlainObject
519template<typename T, bool HasUsableDirectAccess=blas_traits<T>::HasUsableDirectAccess>
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>
EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE FixedBlockXpr< internal::get_fixed_value< NRowsType >::value, internal::get_fixed_value< NColsType >::value >::Type block(Index startRow, Index startCol, NRowsType blockRows, NColsType blockCols)
Definition: BlockMethods.h:96
EIGEN_DEVICE_FUNC RealReturnType real() const
Definition: CommonCwiseUnaryOps.h:100
#define EIGEN_RESTRICT
Definition: Macros.h:1170
#define EIGEN_ALWAYS_INLINE
Definition: Macros.h:942
#define EIGEN_UNUSED_VARIABLE(var)
Definition: Macros.h:1086
#define EIGEN_DEVICE_FUNC
Definition: Macros.h:986
#define EIGEN_ONLY_USED_FOR_DEBUG(x)
Definition: Macros.h:1059
#define eigen_assert(x)
Definition: Macros.h:1047
#define EIGEN_STRONG_INLINE
Definition: Macros.h:927
Generic expression where a coefficient-wise binary operator is applied to two expressions.
Definition: CwiseBinaryOp.h:84
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const _RhsNested & rhs() const
Definition: CwiseBinaryOp.h:135
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const _LhsNested & lhs() const
Definition: CwiseBinaryOp.h:132
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
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const internal::remove_all< XprTypeNested >::type & nestedExpression() const
Definition: CwiseUnaryOp.h:80
Expression of the transpose of a matrix.
Definition: Transpose.h:54
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const internal::remove_all< MatrixTypeNested >::type & nestedExpression() const
Definition: Transpose.h:76
Definition: BlasUtil.h:79
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
Definition: BlasUtil.h:53
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
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR T value()
Definition: XprHelper.h:135
type
Definition: core.h:575
AlignmentType
Enum for indicating whether a buffer is aligned or not.
Definition: Constants.h:232
@ RowMajor
Storage order is row major (see TopicStorageOrders).
Definition: Constants.h:321
const unsigned int DirectAccessBit
Means that the underlying array of coefficients can be directly accessed as a plain strided array.
Definition: Constants.h:155
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
EIGEN_CONSTEXPR Index size(const T &x)
Definition: Meta.h:479
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE const T::Scalar * extract_data(const T &m)
Definition: BlasUtil.h:533
EIGEN_DEVICE_FUNC Index first_default_aligned(const Scalar *array, Index size)
Definition: Memory.h:497
Namespace containing all symbols from the Eigen library.
Definition: MatrixExponential.h:16
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:74
@ Specialized
Definition: Constants.h:310
Definition: Eigen_Colamd.h:50
Definition: StdDeque.h:50
Holds information about the various numeric (i.e.
Definition: NumTraits.h:233
Definition: GenericPacketMath.h:1014
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
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
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
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 > *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
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
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
@ 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
traits< XprType >::Scalar Scalar
Definition: BlasUtil.h:404
XprType _ExtractType
Definition: BlasUtil.h:406
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
combine_scalar_factors extracts and multiplies factors from GEMM and GEMV products.
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
Definition: BlasUtil.h:28
Definition: BlasUtil.h:25
Definition: BlasUtil.h:35
Definition: BlasUtil.h:40
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE NumTraits< Scalar >::Real run(const Scalar &x)
Definition: BlasUtil.h:48
Definition: BlasUtil.h:42
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: format.h:1544