aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2010-10-27 14:31:23 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2010-10-27 14:31:23 +0200
commit241e5ee3e7a306feb7b70f7f57b94c7e045abb67 (patch)
tree3fc218e53b823c9ff04284138b6fa49e3fdb9166 /Eigen
parent5d4ff3f99c68570aa825cf2c45023f422b839772 (diff)
add the possibility to solve for sparse rhs with Cholmod
Diffstat (limited to 'Eigen')
-rw-r--r--Eigen/src/Sparse/DynamicSparseMatrix.h19
-rw-r--r--Eigen/src/Sparse/SparseMatrix.h9
-rw-r--r--Eigen/src/Sparse/SparseMatrixBase.h7
-rw-r--r--Eigen/src/Sparse/SparseVector.h4
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;