From b2638c8698689545c0b0825a0a7fd3d1bd7fc0ba Mon Sep 17 00:00:00 2001 From: Varun Agrawal Date: Sun, 17 Dec 2023 15:14:03 -0500 Subject: [PATCH] max and min functions for AlgebraicDecisionTree --- gtsam/discrete/AlgebraicDecisionTree.h | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/gtsam/discrete/AlgebraicDecisionTree.h b/gtsam/discrete/AlgebraicDecisionTree.h index 1e5dc848b..1a6358680 100644 --- a/gtsam/discrete/AlgebraicDecisionTree.h +++ b/gtsam/discrete/AlgebraicDecisionTree.h @@ -199,7 +199,7 @@ namespace gtsam { /// Compute sum of all values double sum() const { double sum = 0; - auto visitor = [&](int y) { sum += y; }; + auto visitor = [&](double y) { sum += y; }; this->visit(visitor); return sum; } @@ -215,6 +215,22 @@ namespace gtsam { return this->apply([&sum](const double& x) { return x / sum; }); } + /// Find the minimum values amongst all leaves + double min() const { + double min = std::numeric_limits::max(); + auto visitor = [&](double x) { min = x < min ? x : min; }; + this->visit(visitor); + return min; + } + + /// Find the maximum values amongst all leaves + double max() const { + double max = std::numeric_limits::min(); + auto visitor = [&](double x) { max = x > max ? x : max; }; + this->visit(visitor); + return max; + } + /** sum out variable */ AlgebraicDecisionTree sum(const L& label, size_t cardinality) const { return this->combine(label, cardinality, &Ring::add);