10 #ifndef EIGEN_SPARSE_DOT_H 11 #define EIGEN_SPARSE_DOT_H 15 template<
typename Derived>
16 template<
typename OtherDerived>
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");
33 res += numext::conj(i.value()) * other.coeff(i.index());
39 template<
typename Derived>
40 template<
typename OtherDerived>
42 SparseMatrixBase<Derived>::dot(
const SparseMatrixBase<OtherDerived>& other)
const 44 EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
45 EIGEN_STATIC_ASSERT_VECTOR_ONLY(OtherDerived)
46 EIGEN_STATIC_ASSERT_SAME_VECTOR_SIZE(Derived,OtherDerived)
47 EIGEN_STATIC_ASSERT((
internal::is_same<Scalar, typename OtherDerived::Scalar>::value),
48 YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY)
50 eigen_assert(
size() == other.
size());
52 typedef typename Derived::Nested Nested;
53 typedef typename OtherDerived::Nested OtherNested;
54 typedef typename
internal::remove_all<Nested>::type NestedCleaned;
55 typedef typename
internal::remove_all<OtherNested>::type OtherNestedCleaned;
57 Nested nthis(derived());
58 OtherNested nother(other.derived());
65 if (i.index()==j.index())
67 res += numext::conj(i.value()) * j.value();
70 else if (i.index()<j.index())
78 template<
typename Derived>
80 SparseMatrixBase<Derived>::squaredNorm()
const 82 return numext::real((*this).cwiseAbs2().sum());
85 template<
typename Derived>
87 SparseMatrixBase<Derived>::norm()
const 90 return sqrt(squaredNorm());
93 template<
typename Derived>
95 SparseMatrixBase<Derived>::blueNorm()
const 97 return internal::blueNorm_impl(*
this);
101 #endif // EIGEN_SPARSE_DOT_H iterative scaling algorithm to equilibrate rows and column norms in matrices
Definition: TestIMU_Common.h:87
detail::size< coerce_list< Ts... >> size
Get the size of a list (number of elements.)
Definition: Size.h:56
Definition: BandTriangularSolver.h:13
An InnerIterator allows to loop over the element of a sparse (or dense) matrix or expression...
double Scalar
Common scalar type.
Definition: FlexibleKalmanBase.h:48