10 #ifndef EIGEN_BLASUTIL_H    11 #define EIGEN_BLASUTIL_H    21 template<
typename LhsScalar, 
typename RhsScalar, 
typename Index, 
int mr, 
int nr, 
bool ConjugateLhs=false, 
bool ConjugateRhs=false>
    24 template<
typename Scalar, 
typename Index, 
int nr, 
int StorageOrder, 
bool Conjugate = false, 
bool PanelMode=false>
    27 template<
typename Scalar, 
typename Index, 
int Pack1, 
int Pack2, 
int StorageOrder, 
bool Conjugate = false, 
bool PanelMode = false>
    32   typename LhsScalar, 
int LhsStorageOrder, 
bool ConjugateLhs,
    33   typename RhsScalar, 
int RhsStorageOrder, 
bool ConjugateRhs,
    37 template<
typename Index, 
typename LhsScalar, 
int LhsStorageOrder, 
bool ConjugateLhs, 
typename RhsScalar, 
bool ConjugateRhs, 
int Version=Specialized>
    45   inline T 
operator()(
const T& x) { 
return numext::conj(x); }
    54   inline const T& 
pconj(
const T& x) { 
return x; }
    57 template<
typename Scalar> 
struct conj_helper<Scalar,Scalar,false,false>
    63 template<
typename RealScalar> 
struct conj_helper<
std::complex<RealScalar>, std::complex<RealScalar>, false,true>
    65   typedef std::complex<RealScalar> 
Scalar;
    67   { 
return c + 
pmul(x,y); }
    73 template<
typename RealScalar> 
struct conj_helper<
std::complex<RealScalar>, std::complex<RealScalar>, true,false>
    75   typedef std::complex<RealScalar> 
Scalar;
    77   { 
return c + 
pmul(x,y); }
    83 template<
typename RealScalar> 
struct conj_helper<
std::complex<RealScalar>, std::complex<RealScalar>, true,true>
    85   typedef std::complex<RealScalar> 
Scalar;
    87   { 
return c + 
pmul(x,y); }
    93 template<
typename RealScalar,
bool Conj> 
struct conj_helper<
std::complex<RealScalar>, RealScalar, Conj,false>
    95   typedef std::complex<RealScalar> 
Scalar;
   102 template<
typename RealScalar,
bool Conj> 
struct conj_helper<RealScalar, 
std::complex<RealScalar>, false,Conj>
   122 template<
typename Scalar, 
typename Index, 
int StorageOrder>
   128     { 
return m_data[StorageOrder==
RowMajor ? j + i*m_stride : i + j*m_stride]; }
   135 template<
typename Scalar, 
typename Index, 
int StorageOrder>
   141     { 
return m_data[StorageOrder==
RowMajor ? j + i*m_stride : i + j*m_stride]; }
   158     IsTransposed = 
false,
   159     NeedToConjugate = 
false,
   161                               && (   
bool(XprType::IsVectorAtCompileTime)
   165   typedef typename conditional<bool(HasUsableDirectAccess),
   167     typename _ExtractType::PlainObject
   169   static inline ExtractType 
extract(
const XprType& x) { 
return x; }
   174 template<
typename Scalar, 
typename NestedXpr>
   184     NeedToConjugate = Base::NeedToConjugate ? 0 : IsComplex
   191 template<
typename Scalar, 
typename NestedXpr>
   204 template<
typename Scalar, 
typename NestedXpr>
   217 template<
typename NestedXpr>
   221   typedef typename NestedXpr::Scalar 
Scalar;
   226   typedef typename conditional<bool(Base::HasUsableDirectAccess),
   228     typename ExtractType::PlainObject
   231     IsTransposed = Base::IsTransposed ? 0 : 1
   242 template<typename T, bool HasUsableDirectAccess=blas_traits<T>::HasUsableDirectAccess>
   244   static const typename T::Scalar* 
run(
const T& m)
   252   static typename T::Scalar* 
run(
const T&) { 
return 0; }
   255 template<
typename T> 
const typename T::Scalar* 
extract_data(
const T& m)
   264 #endif // EIGEN_BLASUTIL_H const Scalar *EIGEN_RESTRICT m_data
const UnaryOp & functor() const 
EIGEN_STRONG_INLINE Scalar pmul(const Scalar &x, const RealScalar &y) const 
Base::ExtractType ExtractType
CwiseUnaryOp< scalar_opposite_op< Scalar >, NestedXpr > XprType
blas_traits< NestedXpr > Base
blas_data_mapper(Scalar *data, Index stride)
#define EIGEN_STRONG_INLINE
blas_traits< NestedXpr > Base
static ExtractType extract(const XprType &x)
EIGEN_STRONG_INLINE Scalar pmadd(const Scalar &x, const Scalar &y, const Scalar &c) const 
const T & operator()(const T &x)
static const Scalar extractScalarFactor(const XprType &)
const internal::remove_all< typename XprType::Nested >::type & nestedExpression() const 
Expression of the transpose of a matrix. 
const unsigned int DirectAccessBit
conditional< bool(HasUsableDirectAccess), ExtractType, typename _ExtractType::PlainObject >::type DirectLinearAccessType
EIGEN_STRONG_INLINE Scalar & operator()(Index i, Index j)
static EIGEN_STRONG_INLINE NumTraits< Scalar >::Real run(const Scalar &x)
Holds information about the various numeric (i.e. scalar) types allowed by Eigen. ...
EIGEN_STRONG_INLINE Scalar pmadd(const RealScalar &x, const Scalar &y, const Scalar &c) const 
static Scalar extractScalarFactor(const XprType &x)
std::complex< RealScalar > Scalar
EIGEN_STRONG_INLINE Scalar pmul(const Scalar &x, const Scalar &y) const 
const ImagReturnType imag() const 
blas_traits< NestedXpr > Base
EIGEN_STRONG_INLINE Scalar pmul(const Scalar &x, const Scalar &y) const 
static ExtractType extract(const XprType &x)
Transpose< const typename Base::_ExtractType > ExtractType
RealReturnType real() const 
static ExtractType extract(const XprType &x)
std::complex< RealScalar > Scalar
CwiseUnaryOp< scalar_multiple_op< Scalar >, NestedXpr > XprType
std::complex< RealScalar > Scalar
Base::ExtractType ExtractType
static ExtractType extract(const XprType &x)
static Scalar extractScalarFactor(const XprType &x)
CwiseUnaryOp< scalar_conjugate_op< Scalar >, NestedXpr > XprType
Transpose< NestedXpr > XprType
EIGEN_STRONG_INLINE Scalar pmadd(const Scalar &x, const Scalar &y, const Scalar &c) const 
EIGEN_STRONG_INLINE Packet2cf pconj(const Packet2cf &a)
static Scalar extractScalarFactor(const XprType &x)
EIGEN_STRONG_INLINE Scalar pmadd(const Scalar &x, const Scalar &y, const Scalar &c) const 
EIGEN_STRONG_INLINE Scalar pmul(const Scalar &x, const Scalar &y) const 
Scalar *EIGEN_RESTRICT m_data
Base::ExtractType ExtractType
EIGEN_STRONG_INLINE Scalar pmul(const Scalar &x, const Scalar &y) const 
EIGEN_STRONG_INLINE Scalar pmul(const RealScalar &x, const Scalar &y) const 
EIGEN_STRONG_INLINE const Scalar & operator()(Index i, Index j) const 
EIGEN_STRONG_INLINE Scalar pmadd(const Scalar &x, const Scalar &y, const Scalar &c) const 
static EIGEN_STRONG_INLINE To run(const From &x)
EIGEN_STRONG_INLINE Packet4f pmadd(const Packet4f &a, const Packet4f &b, const Packet4f &c)
Packet pmul(const Packet &a, const Packet &b)
conditional< bool(Base::HasUsableDirectAccess), ExtractType, typename ExtractType::PlainObject >::type DirectLinearAccessType
blas_traits< NestedXpr > Base
const_blas_data_mapper(const Scalar *data, Index stride)
const T::Scalar * extract_data(const T &m)
Generic expression where a coefficient-wise unary operator is applied to an expression. 
EIGEN_STRONG_INLINE Scalar pmadd(const Scalar &x, const RealScalar &y, const Scalar &c) const 
traits< XprType >::Scalar Scalar
static Scalar extractScalarFactor(const XprType &x)
const internal::remove_all< typename MatrixType::Nested >::type & nestedExpression() const 
std::complex< RealScalar > Scalar
static ExtractType extract(const XprType &x)
Packet padd(const Packet &a, const Packet &b)
std::complex< RealScalar > Scalar
Transpose< const typename Base::_ExtractType > _ExtractType
const XprType & ExtractType
const T & pconj(const T &x)