From 5913fd120d7b493ea02cc0563caf974d451c4c65 Mon Sep 17 00:00:00 2001 From: Varun Agrawal Date: Mon, 6 Jan 2025 21:06:22 -0500 Subject: [PATCH] updates to get things working --- gtsam/discrete/DiscreteConditional.h | 2 +- gtsam/discrete/TableDistribution.cpp | 3 ++- gtsam/discrete/TableDistribution.h | 2 +- gtsam/hybrid/HybridGaussianFactorGraph.cpp | 4 ++-- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/gtsam/discrete/DiscreteConditional.h b/gtsam/discrete/DiscreteConditional.h index 5a26c45e0..19cc3a798 100644 --- a/gtsam/discrete/DiscreteConditional.h +++ b/gtsam/discrete/DiscreteConditional.h @@ -221,7 +221,7 @@ class GTSAM_EXPORT DiscreteConditional * @param keys The keys to sum over. * @return DiscreteFactor::shared_ptr */ - virtual DiscreteFactor::shared_ptr max(const Ordering& keys) const; + virtual DiscreteFactor::shared_ptr max(const Ordering& keys) const override; /// @} /// @name Advanced Interface diff --git a/gtsam/discrete/TableDistribution.cpp b/gtsam/discrete/TableDistribution.cpp index a7883571a..2a9c63d51 100644 --- a/gtsam/discrete/TableDistribution.cpp +++ b/gtsam/discrete/TableDistribution.cpp @@ -47,7 +47,8 @@ static Eigen::SparseVector normalizeSparseTable( TableDistribution::TableDistribution(const TableFactor& f) : BaseConditional(f.keys().size(), DecisionTreeFactor(f.discreteKeys(), ADT())), - table_(f / (*f.sum(f.keys().size()))) {} + table_(f / (*std::dynamic_pointer_cast( + f.sum(f.keys().size())))) {} /* ************************************************************************** */ TableDistribution::TableDistribution(const DiscreteKeys& keys, diff --git a/gtsam/discrete/TableDistribution.h b/gtsam/discrete/TableDistribution.h index 39a1c481f..3aafdfda7 100644 --- a/gtsam/discrete/TableDistribution.h +++ b/gtsam/discrete/TableDistribution.h @@ -140,7 +140,7 @@ class GTSAM_EXPORT TableDistribution : public DiscreteConditional { } /// Get the number of non-zero values. - size_t nrValues() const { return table_.sparseTable().nonZeros(); } + uint64_t nrValues() const override { return table_.sparseTable().nonZeros(); } /// @} diff --git a/gtsam/hybrid/HybridGaussianFactorGraph.cpp b/gtsam/hybrid/HybridGaussianFactorGraph.cpp index 594aa5c40..d7813f1e5 100644 --- a/gtsam/hybrid/HybridGaussianFactorGraph.cpp +++ b/gtsam/hybrid/HybridGaussianFactorGraph.cpp @@ -284,7 +284,7 @@ TableFactor TableProduct(const DiscreteFactorGraph &factors) { // Max over all the potentials by pretending all keys are frontal: auto denominator = product.max(product.size()); // Normalize the product factor to prevent underflow. - product = product / (*denominator); + product = product / *std::dynamic_pointer_cast(denominator); #if GTSAM_HYBRID_TIMING gttoc_(DiscreteNormalize); #endif @@ -367,7 +367,7 @@ discreteElimination(const HybridGaussianFactorGraph &factors, gttoc_(EliminateDiscreteFormDiscreteConditional); #endif - TableFactor::shared_ptr sum = product.sum(frontalKeys); + DiscreteFactor::shared_ptr sum = product.sum(frontalKeys); return {std::make_shared(conditional), sum};