From 49ba9a79907da70d11a4316ae1af8fc3f5b323a5 Mon Sep 17 00:00:00 2001 From: alexma3312 Date: Mon, 28 Sep 2020 20:52:31 -0400 Subject: [PATCH 1/2] Throw an exception when n=0 . --- gtsam/geometry/Point3.cpp | 1 + gtsam/geometry/Point3.h | 1 + 2 files changed, 2 insertions(+) diff --git a/gtsam/geometry/Point3.cpp b/gtsam/geometry/Point3.cpp index ce4ceee895..7837412620 100644 --- a/gtsam/geometry/Point3.cpp +++ b/gtsam/geometry/Point3.cpp @@ -77,6 +77,7 @@ double dot(const Point3 &p, const Point3 &q, OptionalJacobian<1, 3> H1, Point3Pair mean(const std::vector &abPointPairs) { const size_t n = abPointPairs.size(); + if (n == 0) throw std::invalid_argument("input should have at least 1 pair of points"); Point3 aCentroid(0, 0, 0), bCentroid(0, 0, 0); for (const Point3Pair &abPair : abPointPairs) { aCentroid += abPair.first; diff --git a/gtsam/geometry/Point3.h b/gtsam/geometry/Point3.h index 7f58497e90..b400470ea8 100644 --- a/gtsam/geometry/Point3.h +++ b/gtsam/geometry/Point3.h @@ -62,6 +62,7 @@ GTSAM_EXPORT double dot(const Point3& p, const Point3& q, /// mean template GTSAM_EXPORT Point3 mean(const CONTAINER& points) { + if (points.size() == 0) throw std::invalid_argument("input should have at least 1 point"); Point3 sum(0, 0, 0); sum = std::accumulate(points.begin(), points.end(), sum); return sum / points.size(); From 31ad107053b148bec48b931b08afb1e16df273c2 Mon Sep 17 00:00:00 2001 From: alexma3312 Date: Tue, 29 Sep 2020 12:04:42 -0400 Subject: [PATCH 2/2] Modify error message to be more descriptive. --- gtsam/geometry/Point3.cpp | 2 +- gtsam/geometry/Point3.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gtsam/geometry/Point3.cpp b/gtsam/geometry/Point3.cpp index 7837412620..9ff220e63b 100644 --- a/gtsam/geometry/Point3.cpp +++ b/gtsam/geometry/Point3.cpp @@ -77,7 +77,7 @@ double dot(const Point3 &p, const Point3 &q, OptionalJacobian<1, 3> H1, Point3Pair mean(const std::vector &abPointPairs) { const size_t n = abPointPairs.size(); - if (n == 0) throw std::invalid_argument("input should have at least 1 pair of points"); + if (n == 0) throw std::invalid_argument("Point3::mean input Point3Pair vector is empty"); Point3 aCentroid(0, 0, 0), bCentroid(0, 0, 0); for (const Point3Pair &abPair : abPointPairs) { aCentroid += abPair.first; diff --git a/gtsam/geometry/Point3.h b/gtsam/geometry/Point3.h index b400470ea8..510a5fa803 100644 --- a/gtsam/geometry/Point3.h +++ b/gtsam/geometry/Point3.h @@ -62,7 +62,7 @@ GTSAM_EXPORT double dot(const Point3& p, const Point3& q, /// mean template GTSAM_EXPORT Point3 mean(const CONTAINER& points) { - if (points.size() == 0) throw std::invalid_argument("input should have at least 1 point"); + if (points.size() == 0) throw std::invalid_argument("Point3::mean input container is empty"); Point3 sum(0, 0, 0); sum = std::accumulate(points.begin(), points.end(), sum); return sum / points.size();