diff options
author | Gael Guennebaud <g.gael@free.fr> | 2010-11-05 12:54:32 +0100 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2010-11-05 12:54:32 +0100 |
commit | 3fdea699b80c429738ac0af8c9b7479594b90583 (patch) | |
tree | ab9f6f36fdf3632961516e4526878dc869199860 /Eigen/src/Core/products/TriangularSolverVector.h | |
parent | 0e6c1170abab3aac8eb79b5662fdb9edae77e3cf (diff) |
trsv: simplifications/cleaning
Diffstat (limited to 'Eigen/src/Core/products/TriangularSolverVector.h')
-rw-r--r-- | Eigen/src/Core/products/TriangularSolverVector.h | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/Eigen/src/Core/products/TriangularSolverVector.h b/Eigen/src/Core/products/TriangularSolverVector.h index fcf8bcae0..25e739178 100644 --- a/Eigen/src/Core/products/TriangularSolverVector.h +++ b/Eigen/src/Core/products/TriangularSolverVector.h @@ -27,9 +27,21 @@ namespace internal { +template<typename LhsScalar, typename RhsScalar, typename Index, int Mode, bool Conjugate, int StorageOrder> +struct triangular_solve_vector<LhsScalar, RhsScalar, Index, OnTheRight, Mode, Conjugate, StorageOrder> +{ + static void run(int size, const LhsScalar* _lhs, Index lhsStride, RhsScalar* rhs) + { + triangular_solve_vector<LhsScalar,RhsScalar,Index,OnTheLeft, + ((Mode&Upper)==Upper ? Lower : Upper) | (Mode&UnitDiag), + Conjugate,StorageOrder==RowMajor?ColMajor:RowMajor + >::run(size, _lhs, lhsStride, rhs); + } +}; + // forward and backward substitution, row-major, rhs is a vector template<typename LhsScalar, typename RhsScalar, typename Index, int Mode, bool Conjugate> -struct triangular_solve_vector<LhsScalar, RhsScalar, Index, Mode, Conjugate, RowMajor> +struct triangular_solve_vector<LhsScalar, RhsScalar, Index, OnTheLeft, Mode, Conjugate, RowMajor> { enum { IsLower = ((Mode&Lower)==Lower) @@ -83,7 +95,7 @@ struct triangular_solve_vector<LhsScalar, RhsScalar, Index, Mode, Conjugate, Row // forward and backward substitution, column-major, rhs is a vector template<typename LhsScalar, typename RhsScalar, typename Index, int Mode, bool Conjugate> -struct triangular_solve_vector<LhsScalar, RhsScalar, Index, Mode, Conjugate, ColMajor> +struct triangular_solve_vector<LhsScalar, RhsScalar, Index, OnTheLeft, Mode, Conjugate, ColMajor> { enum { IsLower = ((Mode&Lower)==Lower) |