20 template<
typename T,
typename U,
22 bool NeedToTranspose = T::IsVectorAtCompileTime
23 && U::IsVectorAtCompileTime
24 && ((int(T::RowsAtCompileTime) == 1 && int(U::ColsAtCompileTime) == 1)
27 (
int(T::ColsAtCompileTime) == 1 && int(U::RowsAtCompileTime) == 1))
34 return a.template binaryExpr<scalar_conj_product_op<typename traits<T>::Scalar,
typename traits<U>::Scalar> >(b).sum();
38 template<
typename T,
typename U>
44 return a.
transpose().template binaryExpr<scalar_conj_product_op<typename traits<T>::Scalar,
typename traits<U>::Scalar> >(b).sum();
60 template<
typename Derived>
61 template<
typename OtherDerived>
86 template<
typename Derived>
87 template<
typename OtherDerived>
95 YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY)
112 template<
typename Derived>
124 template<
typename Derived>
128 return sqrt(squaredNorm());
137 template<
typename Derived>
143 _Nested n(derived());
153 template<
typename Derived>
163 template<
typename Derived,
int p>
170 return pow(m.
cwiseAbs().array().pow(p).sum(), RealScalar(1)/p);
174 template<
typename Derived>
183 template<
typename Derived>
192 template<
typename Derived>
209 template<
typename Derived>
225 template<
typename Derived>
226 template<
typename OtherDerived>
232 return numext::abs2(nested.dot(otherNested)) <= prec * prec * nested.squaredNorm() * otherNested.squaredNorm();
246 template<
typename Derived>
249 typename Derived::Nested nested(derived());
250 for(
Index i = 0; i < cols(); ++i)
254 for(
Index j = 0; j < i; ++j)
263 #endif // EIGEN_DOT_H const Eigen::CwiseUnaryOp< Eigen::internal::scalar_pow_op< typename Derived::Scalar >, const Derived > pow(const Eigen::ArrayBase< Derived > &x, const typename Derived::Scalar &exponent)
#define EIGEN_STRONG_INLINE
#define EIGEN_STATIC_ASSERT_SAME_VECTOR_SIZE(TYPE0, TYPE1)
internal::traits< Derived >::Index Index
The type of indices.
static ResScalar run(const MatrixBase< T > &a, const MatrixBase< U > &b)
EIGEN_STRONG_INLINE const CwiseUnaryOp< internal::scalar_abs_op< Scalar >, const Derived > cwiseAbs() const
const CwiseUnaryOp< internal::scalar_pow_op< Scalar >, const Derived > pow(const Scalar &exponent) const
internal::scalar_product_traits< typename internal::traits< Derived >::Scalar, typename internal::traits< OtherDerived >::Scalar >::ReturnType dot(const MatrixBase< OtherDerived > &other) const
scalar_product_traits< typename traits< T >::Scalar, typename traits< U >::Scalar >::ReturnType ResScalar
Holds information about the various numeric (i.e. scalar) types allowed by Eigen. ...
#define EIGEN_STATIC_ASSERT(CONDITION, MSG)
bool isMuchSmallerThan(const Scalar &x, const OtherScalar &y, typename NumTraits< Scalar >::Real precision=NumTraits< Scalar >::dummy_precision())
internal::traits< Derived >::Scalar Scalar
EIGEN_STRONG_INLINE const CwiseUnaryOp< internal::scalar_abs2_op< Scalar >, const Derived > abs2() const
Eigen::Transpose< Derived > transpose()
RealReturnType real() const
bool isApprox(const Scalar &x, const Scalar &y, typename NumTraits< Scalar >::Real precision=NumTraits< Scalar >::dummy_precision())
static RealScalar run(const MatrixBase< Derived > &m)
const PlainObject normalized() const
NumTraits< typename traits< Derived >::Scalar >::Real RealScalar
static NumTraits< typename traits< Derived >::Scalar >::Real run(const MatrixBase< Derived > &m)
RealScalar squaredNorm() const
static NumTraits< typename traits< Derived >::Scalar >::Real run(const MatrixBase< Derived > &m)
NumTraits< Scalar >::Real RealScalar
bool isUnitary(const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const
scalar_product_traits< typename traits< T >::Scalar, typename traits< U >::Scalar >::ReturnType ResScalar
static ResScalar run(const MatrixBase< T > &a, const MatrixBase< U > &b)
bool isOrthogonal(const MatrixBase< OtherDerived > &other, const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const
const CwiseUnaryOp< internal::scalar_sqrt_op< Scalar >, const Derived > sqrt() const
The matrix class, also used for vectors and row-vectors.
RealScalar lpNorm() const
#define EIGEN_STATIC_ASSERT_VECTOR_ONLY(TYPE)
Base class for all dense matrices, vectors, and expressions.
static NumTraits< typename traits< Derived >::Scalar >::Real run(const MatrixBase< Derived > &m)
#define EIGEN_CHECK_BINARY_COMPATIBILIY(BINOP, LHS, RHS)