diff options
author | 2008-09-02 19:55:26 +0000 | |
---|---|---|
committer | 2008-09-02 19:55:26 +0000 | |
commit | d8df318d77b8a9bd9d6274f25145639603c2e8d4 (patch) | |
tree | d695b2297fb0346daf5fbfb3e87068b36e514d5a /Eigen/src/Core | |
parent | 8fb1678f0f174e85f6550e14f349841e406c8f53 (diff) |
resurrected sparse triangular solver
Diffstat (limited to 'Eigen/src/Core')
-rw-r--r-- | Eigen/src/Core/Flagged.h | 1 | ||||
-rwxr-xr-x | Eigen/src/Core/SolveTriangular.h | 6 | ||||
-rw-r--r-- | Eigen/src/Core/util/Constants.h | 10 | ||||
-rw-r--r-- | Eigen/src/Core/util/XprHelper.h | 2 |
4 files changed, 8 insertions, 11 deletions
diff --git a/Eigen/src/Core/Flagged.h b/Eigen/src/Core/Flagged.h index a6abe617b..387854b20 100644 --- a/Eigen/src/Core/Flagged.h +++ b/Eigen/src/Core/Flagged.h @@ -62,6 +62,7 @@ template<typename ExpressionType, unsigned int Added, unsigned int Removed> clas EIGEN_GENERIC_PUBLIC_INTERFACE(Flagged) typedef typename ei_meta_if<ei_must_nest_by_value<ExpressionType>::ret, ExpressionType, const ExpressionType&>::ret ExpressionTypeNested; + typedef typename ExpressionType::InnerIterator InnerIterator; inline Flagged(const ExpressionType& matrix) : m_matrix(matrix) {} diff --git a/Eigen/src/Core/SolveTriangular.h b/Eigen/src/Core/SolveTriangular.h index 0f7aa3b3e..aaebc5989 100755 --- a/Eigen/src/Core/SolveTriangular.h +++ b/Eigen/src/Core/SolveTriangular.h @@ -35,7 +35,7 @@ template<typename Lhs, typename Rhs, ? Upper : -1, int StorageOrder = ei_is_part<Lhs>::value ? -1 // this is to solve ambiguous specializations - : int(Lhs::Flags) & RowMajorBit ? RowMajor : ColMajor + : int(Lhs::Flags) & (RowMajorBit|SparseBit) > struct ei_solve_triangular_selector; @@ -51,7 +51,7 @@ struct ei_solve_triangular_selector<Part<Lhs,LhsMode>,Rhs,UpLo,StorageOrder> // forward substitution, row-major template<typename Lhs, typename Rhs, int UpLo> -struct ei_solve_triangular_selector<Lhs,Rhs,UpLo,RowMajor> +struct ei_solve_triangular_selector<Lhs,Rhs,UpLo,RowMajor|IsDense> { typedef typename Rhs::Scalar Scalar; static void run(const Lhs& lhs, Rhs& other) @@ -138,7 +138,7 @@ struct ei_solve_triangular_selector<Lhs,Rhs,UpLo,RowMajor> // - inv(Upper, ColMajor) * Column vector // - inv(Upper,UnitDiag,ColMajor) * Column vector template<typename Lhs, typename Rhs, int UpLo> -struct ei_solve_triangular_selector<Lhs,Rhs,UpLo,ColMajor> +struct ei_solve_triangular_selector<Lhs,Rhs,UpLo,ColMajor|IsDense> { typedef typename Rhs::Scalar Scalar; typedef typename ei_packet_traits<Scalar>::type Packet; diff --git a/Eigen/src/Core/util/Constants.h b/Eigen/src/Core/util/Constants.h index d08af60e0..e852fffa0 100644 --- a/Eigen/src/Core/util/Constants.h +++ b/Eigen/src/Core/util/Constants.h @@ -200,19 +200,15 @@ enum { }; enum { - Dense = 0, - Sparse = SparseBit -}; - -enum { ColMajor = 0, RowMajor = RowMajorBit }; enum { - NoDirectAccess = 0, + IsDense = 0, + NoDirectAccess = 0, HasDirectAccess = DirectAccessBit, - IsSparse = SparseBit + IsSparse = SparseBit }; const int FullyCoherentAccessPattern = 0x1; diff --git a/Eigen/src/Core/util/XprHelper.h b/Eigen/src/Core/util/XprHelper.h index 225100118..00f1a39ea 100644 --- a/Eigen/src/Core/util/XprHelper.h +++ b/Eigen/src/Core/util/XprHelper.h @@ -110,7 +110,7 @@ template<int _Rows, int _Cols> struct ei_size_at_compile_time template<typename T, int Sparseness = ei_traits<T>::Flags&SparseBit> class ei_eval; -template<typename T> struct ei_eval<T,Dense> +template<typename T> struct ei_eval<T,IsDense> { typedef Matrix<typename ei_traits<T>::Scalar, ei_traits<T>::RowsAtCompileTime, |