aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2010-07-19 10:45:06 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2010-07-19 10:45:06 +0200
commitcac147ba10dc82927c95c9c70bb35a4afa66ac45 (patch)
tree2b2572f2fe3833f4684c0c595fde79c3a3315ae8
parent78d3c54631e0ca25cde3efab6ba0445f83ef3514 (diff)
add support for determinant on empty matrix
-rw-r--r--Eigen/src/LU/Determinant.h2
-rw-r--r--test/determinant.cpp3
2 files changed, 5 insertions, 0 deletions
diff --git a/Eigen/src/LU/Determinant.h b/Eigen/src/LU/Determinant.h
index d0b70a31c..ea7db9c0f 100644
--- a/Eigen/src/LU/Determinant.h
+++ b/Eigen/src/LU/Determinant.h
@@ -47,6 +47,8 @@ template<typename Derived,
{
static inline typename ei_traits<Derived>::Scalar run(const Derived& m)
{
+ if(Derived::ColsAtCompileTime==Dynamic && m.rows()==0)
+ return typename ei_traits<Derived>::Scalar(1);
return m.partialPivLu().determinant();
}
};
diff --git a/test/determinant.cpp b/test/determinant.cpp
index 494fa5eab..8112131b7 100644
--- a/test/determinant.cpp
+++ b/test/determinant.cpp
@@ -61,6 +61,9 @@ template<typename MatrixType> void determinant(const MatrixType& m)
m2 = m1;
m2.row(i) *= x;
VERIFY_IS_APPROX(m2.determinant(), m1.determinant() * x);
+
+ // check empty matrix
+ VERIFY_IS_APPROX(m2.block(0,0,0,0).determinant(), Scalar(1));
}
void test_determinant()