10 #ifndef EIGEN_SPARSE_DOT_H
11 #define EIGEN_SPARSE_DOT_H
13 #include "./InternalHeaderCheck.h"
17 template<
typename Derived>
18 template<
typename OtherDerived>
19 typename internal::traits<Derived>::Scalar
20 SparseMatrixBase<Derived>::dot(
const MatrixBase<OtherDerived>& other)
const
22 EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
23 EIGEN_STATIC_ASSERT_VECTOR_ONLY(OtherDerived)
24 EIGEN_STATIC_ASSERT_SAME_VECTOR_SIZE(Derived,OtherDerived)
25 EIGEN_STATIC_ASSERT((internal::is_same<Scalar, typename OtherDerived::Scalar>::value),
26 YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY)
28 eigen_assert(size() == other.size());
29 eigen_assert(other.size()>0 &&
"you are using a non initialized vector");
31 internal::evaluator<Derived> thisEval(derived());
32 typename internal::evaluator<Derived>::InnerIterator i(thisEval, 0);
36 res += numext::conj(i.value()) * other.coeff(i.index());
42 template<
typename Derived>
43 template<
typename OtherDerived>
44 typename internal::traits<Derived>::Scalar
45 SparseMatrixBase<Derived>::dot(
const SparseMatrixBase<OtherDerived>& other)
const
47 EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
48 EIGEN_STATIC_ASSERT_VECTOR_ONLY(OtherDerived)
49 EIGEN_STATIC_ASSERT_SAME_VECTOR_SIZE(Derived,OtherDerived)
50 EIGEN_STATIC_ASSERT((internal::is_same<Scalar, typename OtherDerived::Scalar>::value),
51 YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY)
53 eigen_assert(size() == other.size());
55 internal::evaluator<Derived> thisEval(derived());
56 typename internal::evaluator<Derived>::InnerIterator i(thisEval, 0);
58 internal::evaluator<OtherDerived> otherEval(other.derived());
59 typename internal::evaluator<OtherDerived>::InnerIterator j(otherEval, 0);
64 if (i.index()==j.index())
66 res += numext::conj(i.value()) * j.value();
69 else if (i.index()<j.index())
77 template<
typename Derived>
78 inline typename NumTraits<typename internal::traits<Derived>::Scalar>::Real
79 SparseMatrixBase<Derived>::squaredNorm()
const
81 return numext::real((*this).cwiseAbs2().sum());
84 template<
typename Derived>
85 inline typename NumTraits<typename internal::traits<Derived>::Scalar>::Real
86 SparseMatrixBase<Derived>::norm()
const
89 return sqrt(squaredNorm());
92 template<
typename Derived>
93 inline typename NumTraits<typename internal::traits<Derived>::Scalar>::Real
94 SparseMatrixBase<Derived>::blueNorm()
const
96 return internal::blueNorm_impl(*
this);
Namespace containing all symbols from the Eigen library.
Definition: Core:139
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_sqrt_op< typename Derived::Scalar >, const Derived > sqrt(const Eigen::ArrayBase< Derived > &x)