10 #ifndef EIGEN_SPARSE_DOT_H 11 #define EIGEN_SPARSE_DOT_H 15 template<
typename Derived>
16 template<
typename OtherDerived>
17 typename internal::traits<Derived>::Scalar
18 SparseMatrixBase<Derived>::dot(
const MatrixBase<OtherDerived>& other)
const 20 EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
21 EIGEN_STATIC_ASSERT_VECTOR_ONLY(OtherDerived)
22 EIGEN_STATIC_ASSERT_SAME_VECTOR_SIZE(Derived,OtherDerived)
23 EIGEN_STATIC_ASSERT((
internal::is_same<Scalar, typename OtherDerived::Scalar>::value),
24 YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY)
26 eigen_assert(size() == other.size());
27 eigen_assert(other.size()>0 && "you are using a non initialized vector");
29 internal::evaluator<Derived> thisEval(derived());
30 typename
internal::evaluator<Derived>::InnerIterator i(thisEval, 0);
34 res += numext::conj(i.value()) * other.coeff(i.index());
40 template<
typename Derived>
41 template<
typename OtherDerived>
42 typename internal::traits<Derived>::Scalar
43 SparseMatrixBase<Derived>::dot(
const SparseMatrixBase<OtherDerived>& other)
const 45 EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
46 EIGEN_STATIC_ASSERT_VECTOR_ONLY(OtherDerived)
47 EIGEN_STATIC_ASSERT_SAME_VECTOR_SIZE(Derived,OtherDerived)
48 EIGEN_STATIC_ASSERT((
internal::is_same<Scalar, typename OtherDerived::Scalar>::value),
49 YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY)
51 eigen_assert(size() == other.size());
53 internal::evaluator<Derived> thisEval(derived());
54 typename
internal::evaluator<Derived>::InnerIterator i(thisEval, 0);
56 internal::evaluator<OtherDerived> otherEval(other.derived());
57 typename
internal::evaluator<OtherDerived>::InnerIterator j(otherEval, 0);
62 if (i.index()==j.index())
64 res += numext::conj(i.value()) * j.value();
67 else if (i.index()<j.index())
75 template<
typename Derived>
76 inline typename NumTraits<typename internal::traits<Derived>::Scalar>::Real
77 SparseMatrixBase<Derived>::squaredNorm()
const 79 return numext::real((*this).cwiseAbs2().sum());
82 template<
typename Derived>
83 inline typename NumTraits<typename internal::traits<Derived>::Scalar>::Real
84 SparseMatrixBase<Derived>::norm()
const 87 return sqrt(squaredNorm());
90 template<
typename Derived>
91 inline typename NumTraits<typename internal::traits<Derived>::Scalar>::Real
92 SparseMatrixBase<Derived>::blueNorm()
const 94 return internal::blueNorm_impl(*
this);
98 #endif // EIGEN_SPARSE_DOT_H Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:85
Definition: BandTriangularSolver.h:13