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))
36 return a.template binaryExpr<conj_prod>(b).sum();
40 template<
typename T,
typename U>
48 return a.
transpose().template binaryExpr<conj_prod>(b).sum();
64 template<
typename Derived>
65 template<
typename OtherDerived>
73 #if !(defined(EIGEN_NO_STATIC_ASSERT) && defined(EIGEN_NO_DEBUG)) 91 template<
typename Derived>
103 template<
typename Derived>
118 template<
typename Derived>
123 _Nested n(derived());
140 template<
typename Derived>
161 template<
typename Derived>
166 _Nested n(derived());
186 template<
typename Derived>
199 template<
typename Derived,
int p>
206 EIGEN_USING_STD_MATH(
pow)
207 return pow(m.
cwiseAbs().array().pow(p).sum(), RealScalar(1)/p);
211 template<
typename Derived>
221 template<
typename Derived>
231 template<
typename Derived>
238 if(Derived::SizeAtCompileTime==0 || (Derived::SizeAtCompileTime==
Dynamic && m.size()==0))
239 return RealScalar(0);
256 template<
typename Derived>
258 #ifndef EIGEN_PARSED_BY_DOXYGEN 276 template<
typename Derived>
277 template<
typename OtherDerived>
283 return numext::abs2(nested.dot(otherNested)) <= prec * prec * nested.squaredNorm() * otherNested.squaredNorm();
297 template<
typename Derived>
301 for(
Index i = 0; i < cols(); ++i)
303 if(!internal::isApprox(
self.
col(i).squaredNorm(), static_cast<RealScalar>(1), prec))
305 for(
Index j = 0; j < i; ++j)
306 if(!internal::isMuchSmallerThan(
self.
col(i).dot(
self.
col(j)), static_cast<Scalar>(1), prec))
314 #endif // EIGEN_DOT_H conj_prod::result_type ResScalar
static EIGEN_DEVICE_FUNC NumTraits< typename traits< Derived >::Scalar >::Real run(const MatrixBase< Derived > &m)
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC half pow(const half &a, const half &b)
#define EIGEN_STRONG_INLINE
internal::traits< Derived >::Scalar Scalar
EIGEN_DEVICE_FUNC RealReturnType real() const
#define EIGEN_STATIC_ASSERT_SAME_VECTOR_SIZE(TYPE0, TYPE1)
static EIGEN_DEVICE_FUNC ResScalar run(const MatrixBase< T > &a, const MatrixBase< U > &b)
bool isUnitary(const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const
EIGEN_DEVICE_FUNC ColXpr col(Index i)
This is the const version of col(). */.
static EIGEN_DEVICE_FUNC NumTraits< typename traits< Derived >::Scalar >::Real run(const MatrixBase< Derived > &m)
static EIGEN_DEVICE_FUNC RealScalar run(const MatrixBase< Derived > &m)
Holds information about the various numeric (i.e. scalar) types allowed by Eigen. ...
EIGEN_DEVICE_FUNC const PlainObject normalized() const
EIGEN_DEVICE_FUNC TransposeReturnType transpose()
EIGEN_DEVICE_FUNC RealScalar squaredNorm() const
NumTraits< typename traits< Derived >::Scalar >::Real RealScalar
EIGEN_DEVICE_FUNC void normalize()
EIGEN_DEVICE_FUNC RealScalar norm() const
conj_prod::result_type ResScalar
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Abs2ReturnType abs2() const
EIGEN_DEVICE_FUNC void stableNormalize()
EIGEN_DEVICE_FUNC RealScalar lpNorm() const
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
NumTraits< Scalar >::Real RealScalar
Base::PlainObject PlainObject
NumTraits< typename traits< Derived >::Scalar >::Real RealScalar
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CwiseAbsReturnType cwiseAbs() const
scalar_conj_product_op< typename traits< T >::Scalar, typename traits< U >::Scalar > conj_prod
EIGEN_DEVICE_FUNC ScalarBinaryOpTraits< typename internal::traits< Derived >::Scalar, typename internal::traits< OtherDerived >::Scalar >::ReturnType dot(const MatrixBase< OtherDerived > &other) const
EIGEN_DEVICE_FUNC const PlainObject stableNormalized() const
NumTraits< Scalar >::Real RealScalar
ScalarBinaryOpTraits< LhsScalar, RhsScalar, scalar_conj_product_op >::ReturnType result_type
static EIGEN_DEVICE_FUNC ResScalar run(const MatrixBase< T > &a, const MatrixBase< U > &b)
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CwiseAbsReturnType cwiseAbs() const
#define EIGEN_CHECK_BINARY_COMPATIBILIY(BINOP, LHS, RHS)
static EIGEN_DEVICE_FUNC RealScalar run(const MatrixBase< Derived > &m)
Determines whether the given binary operation of two numeric types is allowed and what the scalar ret...
bool isOrthogonal(const MatrixBase< OtherDerived > &other, const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE float sqrt(const float &x)
#define EIGEN_STATIC_ASSERT_VECTOR_ONLY(TYPE)
Base class for all dense matrices, vectors, and expressions.
scalar_conj_product_op< typename traits< T >::Scalar, typename traits< U >::Scalar > conj_prod