diff options
author | Gael Guennebaud <g.gael@free.fr> | 2010-10-27 14:31:23 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2010-10-27 14:31:23 +0200 |
commit | 241e5ee3e7a306feb7b70f7f57b94c7e045abb67 (patch) | |
tree | 3fc218e53b823c9ff04284138b6fa49e3fdb9166 /Eigen | |
parent | 5d4ff3f99c68570aa825cf2c45023f422b839772 (diff) |
add the possibility to solve for sparse rhs with Cholmod
Diffstat (limited to 'Eigen')
-rw-r--r-- | Eigen/src/Sparse/DynamicSparseMatrix.h | 19 | ||||
-rw-r--r-- | Eigen/src/Sparse/SparseMatrix.h | 9 | ||||
-rw-r--r-- | Eigen/src/Sparse/SparseMatrixBase.h | 7 | ||||
-rw-r--r-- | Eigen/src/Sparse/SparseVector.h | 4 |
4 files changed, 31 insertions, 8 deletions
diff --git a/Eigen/src/Sparse/DynamicSparseMatrix.h b/Eigen/src/Sparse/DynamicSparseMatrix.h index 2c85a1d96..88ad85f84 100644 --- a/Eigen/src/Sparse/DynamicSparseMatrix.h +++ b/Eigen/src/Sparse/DynamicSparseMatrix.h @@ -44,8 +44,8 @@ */ namespace internal { -template<typename _Scalar, int _Flags, typename _Index> -struct traits<DynamicSparseMatrix<_Scalar, _Flags, _Index> > +template<typename _Scalar, int _Options, typename _Index> +struct traits<DynamicSparseMatrix<_Scalar, _Options, _Index> > { typedef _Scalar Scalar; typedef _Index Index; @@ -56,16 +56,16 @@ struct traits<DynamicSparseMatrix<_Scalar, _Flags, _Index> > ColsAtCompileTime = Dynamic, MaxRowsAtCompileTime = Dynamic, MaxColsAtCompileTime = Dynamic, - Flags = _Flags | NestByRefBit | LvalueBit, + Flags = _Options | NestByRefBit | LvalueBit, CoeffReadCost = NumTraits<Scalar>::ReadCost, SupportedAccessPatterns = OuterRandomAccessPattern }; }; } -template<typename _Scalar, int _Flags, typename _Index> +template<typename _Scalar, int _Options, typename _Index> class DynamicSparseMatrix - : public SparseMatrixBase<DynamicSparseMatrix<_Scalar, _Flags, _Index> > + : public SparseMatrixBase<DynamicSparseMatrix<_Scalar, _Options, _Index> > { public: EIGEN_SPARSE_PUBLIC_INTERFACE(DynamicSparseMatrix) @@ -74,6 +74,9 @@ class DynamicSparseMatrix // EIGEN_SPARSE_INHERIT_ASSIGNMENT_OPERATOR(DynamicSparseMatrix, -=) typedef MappedSparseMatrix<Scalar,Flags> Map; using Base::IsRowMajor; + enum { + Options = _Options + }; protected: @@ -325,10 +328,10 @@ class DynamicSparseMatrix EIGEN_DEPRECATED void endFill() {} }; -template<typename Scalar, int _Flags, typename _Index> -class DynamicSparseMatrix<Scalar,_Flags,_Index>::InnerIterator : public SparseVector<Scalar,_Flags>::InnerIterator +template<typename Scalar, int _Options, typename _Index> +class DynamicSparseMatrix<Scalar,_Options,_Index>::InnerIterator : public SparseVector<Scalar,_Options>::InnerIterator { - typedef typename SparseVector<Scalar,_Flags>::InnerIterator Base; + typedef typename SparseVector<Scalar,_Options>::InnerIterator Base; public: InnerIterator(const DynamicSparseMatrix& mat, Index outer) : Base(mat.m_data[outer]), m_outer(outer) diff --git a/Eigen/src/Sparse/SparseMatrix.h b/Eigen/src/Sparse/SparseMatrix.h index c8b75a96c..9a6e0b763 100644 --- a/Eigen/src/Sparse/SparseMatrix.h +++ b/Eigen/src/Sparse/SparseMatrix.h @@ -78,6 +78,9 @@ class SparseMatrix typedef MappedSparseMatrix<Scalar,Flags> Map; using Base::IsRowMajor; typedef CompressedStorage<Scalar,Index> Storage; + enum { + Options = _Options + }; protected: @@ -436,6 +439,12 @@ class SparseMatrix { return Base::operator=(product); } + + template<typename OtherDerived> + EIGEN_STRONG_INLINE SparseMatrix& operator=(const ReturnByValue<OtherDerived>& func) + { + return Base::operator=(func); + } #endif template<typename OtherDerived> diff --git a/Eigen/src/Sparse/SparseMatrixBase.h b/Eigen/src/Sparse/SparseMatrixBase.h index 8750de12c..ba6f64ab7 100644 --- a/Eigen/src/Sparse/SparseMatrixBase.h +++ b/Eigen/src/Sparse/SparseMatrixBase.h @@ -183,6 +183,13 @@ template<typename Derived> class SparseMatrixBase : public EigenBase<Derived> this->operator=<Derived>(other); return derived(); } + + template<typename OtherDerived> + Derived& operator=(const ReturnByValue<OtherDerived>& other) + { + other.evalTo(derived()); + return derived(); + } template<typename OtherDerived> diff --git a/Eigen/src/Sparse/SparseVector.h b/Eigen/src/Sparse/SparseVector.h index be1ad4c50..c640eadff 100644 --- a/Eigen/src/Sparse/SparseVector.h +++ b/Eigen/src/Sparse/SparseVector.h @@ -72,6 +72,10 @@ class SparseVector typedef SparseMatrixBase<SparseVector> SparseBase; enum { IsColVector = internal::traits<SparseVector>::IsColVector }; + + enum { + Options = _Options + }; CompressedStorage<Scalar,Index> m_data; Index m_size; |