diff options
author | Gael Guennebaud <g.gael@free.fr> | 2008-09-03 20:52:26 +0000 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2008-09-03 20:52:26 +0000 |
commit | c29c7b0ea95b86f73d77224efb26f96abdc189ac (patch) | |
tree | 621b6db8df4a4d9e3f771bc6ffdb455e24bc25e5 /Eigen/src | |
parent | e14aa8c8aa1646bbfdf501a84b0665bb17220229 (diff) |
Fix bugs reported by Timothy Hunter:
* CholeskyWithoutSqrt with 1x1 matrices
* .part<Diagonal>()
Updated unit tests to handle these cases
Diffstat (limited to 'Eigen/src')
-rw-r--r-- | Eigen/src/Cholesky/CholeskyWithoutSquareRoot.h | 6 | ||||
-rw-r--r-- | Eigen/src/Core/Part.h | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/Eigen/src/Cholesky/CholeskyWithoutSquareRoot.h b/Eigen/src/Cholesky/CholeskyWithoutSquareRoot.h index db33b04f9..4040869b0 100644 --- a/Eigen/src/Cholesky/CholeskyWithoutSquareRoot.h +++ b/Eigen/src/Cholesky/CholeskyWithoutSquareRoot.h @@ -96,6 +96,12 @@ void CholeskyWithoutSquareRoot<MatrixType>::compute(const MatrixType& a) m_isPositiveDefinite = true; const RealScalar eps = ei_sqrt(precision<Scalar>()); + if (size<=1) + { + m_matrix = a; + return; + } + // Let's preallocate a temporay vector to evaluate the matrix-vector product into it. // Unlike the standard Cholesky decomposition, here we cannot evaluate it to the destination // matrix because it a sub-row which is not compatible suitable for efficient packet evaluation. diff --git a/Eigen/src/Core/Part.h b/Eigen/src/Core/Part.h index 4d39c4c08..931933575 100644 --- a/Eigen/src/Core/Part.h +++ b/Eigen/src/Core/Part.h @@ -88,7 +88,7 @@ template<typename MatrixType, unsigned int Mode> class Part inline Scalar coeff(int row, int col) const { - if(Flags & LowerTriangularBit ? col>row : row>col) + if( (Flags & LowerTriangularBit) && (col>row) || (Flags & UpperTriangularBit) && (row>col) ) return (Flags & SelfAdjointBit) ? ei_conj(m_matrix.coeff(col, row)) : (Scalar)0; if(Flags & UnitDiagBit) return col==row ? (Scalar)1 : m_matrix.coeff(row, col); |