aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2008-09-03 20:52:26 +0000
committerGravatar Gael Guennebaud <g.gael@free.fr>2008-09-03 20:52:26 +0000
commitc29c7b0ea95b86f73d77224efb26f96abdc189ac (patch)
tree621b6db8df4a4d9e3f771bc6ffdb455e24bc25e5 /Eigen/src
parente14aa8c8aa1646bbfdf501a84b0665bb17220229 (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.h6
-rw-r--r--Eigen/src/Core/Part.h2
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);