aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/ConditionEstimator.h
diff options
context:
space:
mode:
authorGravatar Rasmus Munk Larsen <rmlarsen@google.com>2016-04-09 15:29:56 -0700
committerGravatar Rasmus Munk Larsen <rmlarsen@google.com>2016-04-09 15:29:56 -0700
commit096e355f8e1b12d3c1f50a8f69dfd7b01def54c5 (patch)
tree44fca3ddf1b69a33026f7d47a423eae969de4426 /Eigen/src/Core/ConditionEstimator.h
parent4a92b590a01f5e28486f428f2ba56d5aaddd6931 (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.h13
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)