Go to the documentation of this file.
10 #ifndef EIGEN_BLASUTIL_H
11 #define EIGEN_BLASUTIL_H
21 template<
typename LhsScalar,
typename RhsScalar,
typename Index,
typename DataMapper,
int mr,
int nr,
bool ConjugateLhs=false,
bool ConjugateRhs=false>
24 template<
typename Scalar,
typename Index,
typename DataMapper,
int nr,
int StorageOrder,
bool Conjugate = false,
bool PanelMode=false>
27 template<
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>
37 template<
typename Index,
38 typename LhsScalar,
typename LhsMapper,
int LhsStorageOrder,
bool ConjugateLhs,
39 typename RhsScalar,
typename RhsMapper,
bool ConjugateRhs,
int Version=
Specialized>
52 template<
typename Scalar,
typename Index>
60 template <
typename Packet,
int AlignmentType>
62 return ploadt<Packet, AlignmentType>(
m_data +
i);
65 template <
typename Packet>
74 template<
typename Scalar,
typename Index,
int AlignmentType,
int Incr=1>
77 template<
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);
111 template<
typename Scalar,
typename Index,
int StorageOrder,
int AlignmentType = Unaligned,
int Incr = 1>
118 template<
typename Index,
typename Scalar,
typename Packet,
int n,
int idx,
int StorageOrder>
124 pstoreu<Scalar>(to +
i + (
j + idx)*stride,
block.packet[idx]);
129 template<
typename Index,
typename Scalar,
typename Packet,
int n,
int idx>
135 pstoreu<Scalar>(to +
j + (
i + idx)*stride,
block.packet[idx]);
139 template<
typename Index,
typename Scalar,
typename Packet,
int n,
int StorageOrder>
151 template<
typename Index,
typename Scalar,
typename Packet,
int n>
163 template<
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>
239 template<
typename Scalar,
typename Index,
int AlignmentType,
int Incr>
253 template<
typename PacketType>
258 template<
typename PacketType>
268 template<
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);
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>
378 storePacketBlock_helper<SubPacket,
Scalar,
n,
n-1> spb;
388 template<
typename Scalar,
typename Index,
int StorageOrder>
412 && (
bool(XprType::IsVectorAtCompileTime)
419 typename _ExtractType::PlainObject
426 template<
typename Scalar,
typename NestedXpr>
443 template<
typename Scalar,
typename NestedXpr,
typename Plain>
455 {
return x.lhs().functor().m_other * Base::extractScalarFactor(
x.rhs()); }
457 template<
typename Scalar,
typename NestedXpr,
typename Plain>
469 {
return Base::extractScalarFactor(
x.lhs()) *
x.rhs().functor().m_other; }
471 template<
typename Scalar,
typename Plain1,
typename Plain2>
474 :
blas_traits<CwiseNullaryOp<scalar_constant_op<Scalar>,Plain1> >
478 template<
typename Scalar,
typename NestedXpr>
490 {
return - Base::extractScalarFactor(
x.nestedExpression()); }
494 template<
typename NestedXpr>
503 typedef typename conditional<bool(Base::HasUsableDirectAccess),
505 typename ExtractType::PlainObject
519 template<typename T, bool HasUsableDirectAccess=blas_traits<T>::HasUsableDirectAccess>
542 template<
typename ResScalar,
typename Lhs,
typename Rhs>
554 template<
typename Lhs,
typename Rhs>
567 template<
typename ResScalar,
typename Lhs,
typename Rhs>
572 template<
typename ResScalar,
typename Lhs,
typename Rhs>
583 #endif // EIGEN_BLASUTIL_H
Base::ExtractType ExtractType
EIGEN_ALWAYS_INLINE const_blas_data_mapper< Scalar, Index, StorageOrder > getSubMapper(Index i, Index j) const
const AutoDiffScalar< DerType > & conj(const AutoDiffScalar< DerType > &x)
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Packet load(Index i) const
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE VectorMapper getVectorMapper(Index i, Index j) const
#define EIGEN_DEVICE_FUNC
Namespace containing all symbols from the Eigen library.
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE SubPacket gatherPacket(Index i, Index j) const
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Scalar & operator()(Index i) const
Scalar *EIGEN_RESTRICT m_data
Generic expression where a coefficient-wise binary operator is applied to two expressions.
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Scalar & operator()(Index i, Index j) const
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void storePacketBlock(Index i, Index j, const PacketBlock< SubPacket, n > &block) const
internal::packet_traits< Scalar >::type Packet
const EIGEN_DEVICE_FUNC Scalar * data() const
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void prefetch(int i) const
Transpose< const typename Base::_ExtractType > _ExtractType
EIGEN_DEVICE_FUNC static EIGEN_ALWAYS_INLINE ResScalar run(const ResScalar &alpha, const Lhs &lhs, const Rhs &rhs)
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
Transpose< const typename Base::_ExtractType > ExtractType
PacketBlockManagement< Index, Scalar, Packet, n, idx - 1, RowMajor > pbm
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void store(const blas_data_mapper< Scalar, Index, StorageOrder, AlignmentType, Incr > *, Index, Index, const PacketBlock< SubPacket, n > &) const
const typedef XprType & ExtractType
blas_traits< NestedXpr > Base
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void store(Scalar *to, const Index stride, Index i, Index j, const PacketBlock< Packet, n > &block) const
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE blas_data_mapper getSubMapper(Index i, Index j) const
conditional< bool(HasUsableDirectAccess), ExtractType, typename _ExtractType::PlainObject >::type DirectLinearAccessType
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE SubPacket gatherPacket(Index i, Index j) const
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE PacketT load(Index i, Index j) const
static ExtractType extract(const XprType &x)
static ExtractType extract(const XprType &x)
static EIGEN_DEVICE_FUNC Scalar extractScalarFactor(const XprType &x)
blas_traits< NestedXpr > Base
storePacketBlock_helper< SubPacket, ScalarT, n, idx-1 > spbh
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE blas_data_mapper(Scalar *data, Index stride, Index incr=1)
m m block(1, 0, 2, 2)<< 4
static EIGEN_DEVICE_FUNC ExtractType extract(const XprType &x)
Expression of the transpose of a matrix.
const unsigned int DirectAccessBit
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE BlasLinearMapper(Scalar *data, Index incr=1)
BlasLinearMapper< Scalar, Index, AlignmentType, Incr > LinearMapper
storePacketBlock_helper< SubPacket, std::complex< float >, n, idx-1 > spbh
#define EIGEN_ONLY_USED_FOR_DEBUG(x)
PacketBlockManagement< Index, Scalar, Packet, n, idx - 1, StorageOrder > pbm
Generic expression of a matrix where all coefficients are defined by a functor.
Base::ExtractType ExtractType
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE LinearMapper getLinearMapper(Index i, Index j) const
EIGEN_DEVICE_FUNC Index firstAligned(Index size) const
static Scalar extractScalarFactor(const XprType &x)
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Scalar & operator()(Index i, Index j) const
BlasLinearMapper< Scalar, Index, AlignmentType > LinearMapper
Scalar *EIGEN_RESTRICT m_data
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void store(const blas_data_mapper< Scalar, Index, StorageOrder, AlignmentType, Incr > *, Index, Index, const PacketBlock< SubPacket, n > &) const
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void storePacket(Index i, const PacketType &p) const
#define EIGEN_UNUSED_VARIABLE(var)
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
CwiseBinaryOp< scalar_product_op< Scalar >, NestedXpr, const CwiseNullaryOp< scalar_constant_op< Scalar >, Plain > > XprType
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void scatterPacket(Index i, Index j, const SubPacket &p) const
EIGEN_DEVICE_FUNC static EIGEN_ALWAYS_INLINE ResScalar run(const Lhs &lhs, const Rhs &rhs)
blas_traits< NestedXpr > Base
conditional< bool(Base::HasUsableDirectAccess), ExtractType, typename ExtractType::PlainObject >::type DirectLinearAccessType
EIGEN_DEVICE_FUNC bool aligned(Index i) const
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void store(Scalar *to, const Index stride, Index i, Index j, const PacketBlock< Packet, n > &block) const
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR T value()
static const Line3 l(Rot3(), 1, 1)
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void store(Scalar *to, const Index stride, Index i, Index j, const PacketBlock< Packet, n > &block) const
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE blas_data_mapper(Scalar *data, Index stride, Index incr)
#define EIGEN_STRONG_INLINE
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE To run(const From &x)
Base::ExtractType ExtractType
EIGEN_ALWAYS_INLINE const_blas_data_mapper(const Scalar *data, Index stride)
blas_traits< NestedXpr > Base
static ExtractType extract(const XprType &x)
static Scalar extractScalarFactor(const XprType &x)
#define EIGEN_ALWAYS_INLINE
storePacketBlock_helper< SubPacket, std::complex< double >, n, idx-1 > spbh
const EIGEN_DEVICE_FUNC Index stride() const
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE PacketType loadPacket(Index i) const
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE BlasVectorMapper(Scalar *data)
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
traits< XprType >::Scalar Scalar
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void storePacketBlock(Index i, Index j, const PacketBlock< SubPacket, n > &block) const
CwiseBinaryOp< internal::scalar_sum_op< double, double >, const CpyMatrixXd, const CpyMatrixXd > XprType
static EIGEN_DEVICE_FUNC ExtractType extract(const XprType &x)
CwiseUnaryOp< scalar_opposite_op< Scalar >, NestedXpr > XprType
EIGEN_DEVICE_FUNC void prefetch(const Scalar *addr)
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void store(Scalar *to, const Index stride, Index i, Index j, const PacketBlock< Packet, n > &block) const
blas_traits< NestedXpr > Base
EIGEN_DEVICE_FUNC static EIGEN_ALWAYS_INLINE bool run(const bool &alpha, const Lhs &lhs, const Rhs &rhs)
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void prefetch(int i) const
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void store(const blas_data_mapper< Scalar, Index, StorageOrder, AlignmentType, Incr > *, Index, Index, const PacketBlock< SubPacket, n > &) const
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void storePacket(Index i, const PacketType &p) const
Base::ExtractType ExtractType
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE NumTraits< Scalar >::Real run(const Scalar &x)
EIGEN_DEVICE_FUNC static EIGEN_ALWAYS_INLINE bool run(const Lhs &lhs, const Rhs &rhs)
Generic expression where a coefficient-wise unary operator is applied to an expression.
EIGEN_DEVICE_FUNC const EIGEN_ALWAYS_INLINE T::Scalar * extract_data(const T &m)
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE BlasLinearMapper(Scalar *data, Index incr)
static Scalar extractScalarFactor(const XprType &x)
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
mp::number< mp::cpp_dec_float< 100 >, mp::et_on > Real
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE LinearMapper getLinearMapper(Index i, Index j) const
Array< int, Dynamic, 1 > v
static ExtractType extract(const XprType &x)
const internal::variable_if_dynamic< Index, Incr > m_incr
static Index first_default_aligned(const DenseBase< Derived > &m)
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Scalar operator()(Index i) const
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE PacketType loadPacket(Index i, Index j) const
BlasVectorMapper< Scalar, Index > VectorMapper
static const EIGEN_DEVICE_FUNC Scalar extractScalarFactor(const XprType &)
EIGEN_CONSTEXPR Index size(const T &x)
static Scalar extractScalarFactor(const XprType &x)
const internal::variable_if_dynamic< Index, Incr > m_incr
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE PacketType loadPacket(Index i, Index j) const
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void scatterPacket(Index i, Index j, const SubPacket &p) const
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE PacketT load(Index i, Index j) const
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE blas_data_mapper< Scalar, Index, StorageOrder, AlignmentType > getSubMapper(Index i, Index j) const
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE ResScalar combine_scalar_factors(const ResScalar &alpha, const Lhs &lhs, const Rhs &rhs)
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Scalar & operator()(Index i) const
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE PacketType loadPacket(Index i) const
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Transpose< NestedXpr > XprType
CwiseBinaryOp< scalar_product_op< Scalar >, const CwiseNullaryOp< scalar_constant_op< Scalar >, Plain >, NestedXpr > XprType
CwiseUnaryOp< scalar_conjugate_op< Scalar >, NestedXpr > XprType
gtsam
Author(s):
autogenerated on Sat Nov 16 2024 04:01:56