#ifndef EIGEN_BLASUTIL_H
#define EIGEN_BLASUTIL_H
#include "../InternalHeaderCheck.h"
namespace Eigen {
namespace internal {
template <typename LhsScalar, typename RhsScalar, typename Index, typename DataMapper, int mr, int nr,
bool ConjugateLhs = false, bool ConjugateRhs = false>
struct gebp_kernel;
template <typename Scalar, typename Index, typename DataMapper, int nr, int StorageOrder, bool Conjugate = false,
bool PanelMode = false>
struct gemm_pack_rhs;
template <typename Scalar, typename Index, typename DataMapper, int Pack1, int Pack2, typename Packet, int StorageOrder,
bool Conjugate = false, bool PanelMode = false>
struct gemm_pack_lhs;
template <typename Index, typename LhsScalar, int LhsStorageOrder, bool ConjugateLhs, typename RhsScalar,
int RhsStorageOrder, bool ConjugateRhs, int ResStorageOrder, int ResInnerStride>
struct general_matrix_matrix_product;
template <typename Index, typename LhsScalar, typename LhsMapper, int LhsStorageOrder, bool ConjugateLhs,
typename RhsScalar, typename RhsMapper, bool ConjugateRhs, int Version = Specialized>
struct general_matrix_vector_product;
template <typename From, typename To>
struct get_factor { … };
get_factor<Scalar, typename NumTraits<Scalar>::Real>;
template <typename Scalar, typename Index>
class BlasVectorMapper { … };
template <typename Scalar, typename Index, int AlignmentType, int Incr = 1>
class BlasLinearMapper;
BlasLinearMapper<Scalar, Index, AlignmentType>;
template <typename Scalar, typename Index, int StorageOrder, int AlignmentType = Unaligned, int Incr = 1>
class blas_data_mapper;
template <typename Index, typename Scalar, typename Packet, int n, int idx, int StorageOrder>
struct PacketBlockManagement { … };
PacketBlockManagement<Index, Scalar, Packet, n, idx, RowMajor>;
PacketBlockManagement<Index, Scalar, Packet, n, -1, StorageOrder>;
PacketBlockManagement<Index, Scalar, Packet, n, -1, RowMajor>;
blas_data_mapper<Scalar, Index, StorageOrder, AlignmentType, 1>;
template <typename Scalar, typename Index, int AlignmentType, int Incr>
class BlasLinearMapper { … };
template <typename Scalar, typename Index, int StorageOrder, int AlignmentType, int Incr>
class blas_data_mapper { … };
template <typename Scalar, typename Index, int StorageOrder>
class const_blas_data_mapper : public blas_data_mapper<const Scalar, Index, StorageOrder> { … };
template <typename XprType>
struct blas_traits { … };
blas_traits<CwiseUnaryOp<scalar_conjugate_op<Scalar>, NestedXpr>>;
blas_traits<CwiseBinaryOp<scalar_product_op<Scalar>, const CwiseNullaryOp<scalar_constant_op<Scalar>, Plain>, NestedXpr>>;
blas_traits<CwiseBinaryOp<scalar_product_op<Scalar>, NestedXpr, const CwiseNullaryOp<scalar_constant_op<Scalar>, Plain>>>;
blas_traits<CwiseBinaryOp<scalar_product_op<Scalar>, const CwiseNullaryOp<scalar_constant_op<Scalar>, Plain1>, const CwiseNullaryOp<scalar_constant_op<Scalar>, Plain2>>>;
blas_traits<CwiseUnaryOp<scalar_opposite_op<Scalar>, NestedXpr>>;
blas_traits<Transpose<NestedXpr>>;
blas_traits<const T>;
template <typename T, bool HasUsableDirectAccess = blas_traits<T>::HasUsableDirectAccess>
struct extract_data_selector { … };
extract_data_selector<T, false>;
template <typename T>
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE const typename T::Scalar* extract_data(const T& m) { … }
template <typename ResScalar, typename Lhs, typename Rhs>
struct combine_scalar_factors_impl { … };
combine_scalar_factors_impl<bool, Lhs, Rhs>;
template <typename ResScalar, typename Lhs, typename Rhs>
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE ResScalar combine_scalar_factors(const ResScalar& alpha, const Lhs& lhs,
const Rhs& rhs) { … }
template <typename ResScalar, typename Lhs, typename Rhs>
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE ResScalar combine_scalar_factors(const Lhs& lhs, const Rhs& rhs) { … }
}
}
#endif