diff options
author | Rasmus Munk Larsen <rmlarsen@google.com> | 2016-04-09 15:29:56 -0700 |
---|---|---|
committer | Rasmus Munk Larsen <rmlarsen@google.com> | 2016-04-09 15:29:56 -0700 |
commit | 096e355f8e1b12d3c1f50a8f69dfd7b01def54c5 (patch) | |
tree | 44fca3ddf1b69a33026f7d47a423eae969de4426 /Eigen/src/Core/ConditionEstimator.h | |
parent | 4a92b590a01f5e28486f428f2ba56d5aaddd6931 (diff) |
Add short-circuit to avoid calling matrix norm for empty matrix.
Diffstat (limited to 'Eigen/src/Core/ConditionEstimator.h')
-rw-r--r-- | Eigen/src/Core/ConditionEstimator.h | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/Eigen/src/Core/ConditionEstimator.h b/Eigen/src/Core/ConditionEstimator.h index 5fb0cdbd5..f53c2a837 100644 --- a/Eigen/src/Core/ConditionEstimator.h +++ b/Eigen/src/Core/ConditionEstimator.h @@ -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) |