Add short-circuit to avoid calling matrix norm for empty matrix.

This commit is contained in:
Rasmus Munk Larsen 2016-04-09 15:29:56 -07:00
parent 4a92b590a0
commit 096e355f8e

View File

@ -65,6 +65,7 @@ typename Decomposition::RealScalar ReciprocalConditionNumberEstimate(
const Decomposition& dec) {
eigen_assert(matrix.rows() == dec.rows());
eigen_assert(matrix.cols() == dec.cols());
if (dec.rows() == 0) return typename Decomposition::RealScalar(1);
return ReciprocalConditionNumberEstimate(MatrixL1Norm(matrix), dec);
}
@ -89,15 +90,9 @@ typename Decomposition::RealScalar ReciprocalConditionNumberEstimate(
typename Decomposition::RealScalar matrix_norm, const Decomposition& dec) {
typedef typename Decomposition::RealScalar RealScalar;
eigen_assert(dec.rows() == dec.cols());
if (dec.rows() == 0) {
return RealScalar(1);
}
if (matrix_norm == RealScalar(0)) {
return RealScalar(0);
}
if (dec.rows() == 1) {
return RealScalar(1);
}
if (dec.rows() == 0) return RealScalar(1);
if (matrix_norm == RealScalar(0)) return RealScalar(0);
if (dec.rows() == 1) return RealScalar(1);
const typename Decomposition::RealScalar inverse_matrix_norm =
InverseMatrixL1NormEstimate(dec);
return (inverse_matrix_norm == RealScalar(0)