diff --git a/gtsam/discrete/DiscreteConditional.cpp b/gtsam/discrete/DiscreteConditional.cpp index 0d6c5e976..214bc64da 100644 --- a/gtsam/discrete/DiscreteConditional.cpp +++ b/gtsam/discrete/DiscreteConditional.cpp @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include #include @@ -510,6 +510,10 @@ string DiscreteConditional::html(const KeyFormatter& keyFormatter, return ss.str(); } +/* ************************************************************************* */ +double DiscreteConditional::evaluate(const HybridValues& x) const{ + return this->evaluate(x.discrete()); +} /* ************************************************************************* */ } // namespace gtsam diff --git a/gtsam/discrete/DiscreteConditional.h b/gtsam/discrete/DiscreteConditional.h index 2760ea538..f073c2d76 100644 --- a/gtsam/discrete/DiscreteConditional.h +++ b/gtsam/discrete/DiscreteConditional.h @@ -160,10 +160,13 @@ class GTSAM_EXPORT DiscreteConditional } /// Evaluate, just look up in AlgebraicDecisonTree - double operator()(const DiscreteValues& values) const override { + double evaluate(const DiscreteValues& values) const { return ADT::operator()(values); } + using DecisionTreeFactor::error; ///< DiscreteValues version + using DecisionTreeFactor::operator(); ///< DiscreteValues version + /** * @brief restrict to given *parent* values. * @@ -235,6 +238,14 @@ class GTSAM_EXPORT DiscreteConditional /// @name HybridValues methods. /// @{ + /** + * Calculate probability for HybridValues `x`. + * Dispatches to DiscreteValues version. + */ + double evaluate(const HybridValues& x) const override; + + using BaseConditional::operator(); ///< HybridValues version + /** * Calculate log-probability log(evaluate(x)) for HybridValues `x`. * This is actually just -error(x). @@ -243,9 +254,6 @@ class GTSAM_EXPORT DiscreteConditional return -error(x); } - using DecisionTreeFactor::error; ///< HybridValues version - using DecisionTreeFactor::evaluate; ///< HybridValues version - /// @} #ifdef GTSAM_ALLOW_DEPRECATED_SINCE_V42