rename from exponentiateLogProbabilities to probabilitiesFromLogValues

release/4.3a0
Varun Agrawal 2024-08-28 12:47:24 -04:00
parent e81272b078
commit 3dab868ef0
1 changed files with 9 additions and 10 deletions

View File

@ -235,19 +235,18 @@ continuousElimination(const HybridGaussianFactorGraph &factors,
/* ************************************************************************ */ /* ************************************************************************ */
/** /**
* @brief Exponential log-probabilities after performing * @brief Exponentiate log-values, not necessarily normalized, normalize, and
* the necessary normalizations. * return as AlgebraicDecisionTree<Key>.
* *
* @param logProbabilities DecisionTree of log-probabilities. * @param logValues DecisionTree of (unnormalized) log values.
* @return AlgebraicDecisionTree<Key> * @return AlgebraicDecisionTree<Key>
*/ */
static AlgebraicDecisionTree<Key> exponentiateLogProbabilities( static AlgebraicDecisionTree<Key> probabilitiesFromLogValues(
const AlgebraicDecisionTree<Key> &logProbabilities) { const AlgebraicDecisionTree<Key> &logValues) {
// Perform normalization // Perform normalization
double max_log = logProbabilities.max(); double max_log = logValues.max();
AlgebraicDecisionTree<Key> probabilities = DecisionTree<Key, double>( AlgebraicDecisionTree<Key> probabilities = DecisionTree<Key, double>(
logProbabilities, logValues, [&max_log](const double x) { return exp(x - max_log); });
[&max_log](const double x) { return exp(x - max_log); });
probabilities = probabilities.normalize(probabilities.sum()); probabilities = probabilities.normalize(probabilities.sum());
return probabilities; return probabilities;
@ -274,7 +273,7 @@ discreteElimination(const HybridGaussianFactorGraph &factors,
DecisionTree<Key, double>(gmf->factors(), logProbability); DecisionTree<Key, double>(gmf->factors(), logProbability);
AlgebraicDecisionTree<Key> probabilities = AlgebraicDecisionTree<Key> probabilities =
exponentiateLogProbabilities(logProbabilities); probabilitiesFromLogValues(logProbabilities);
dfg.emplace_shared<DecisionTreeFactor>(gmf->discreteKeys(), dfg.emplace_shared<DecisionTreeFactor>(gmf->discreteKeys(),
probabilities); probabilities);
@ -340,7 +339,7 @@ static std::shared_ptr<Factor> createDiscreteFactor(
AlgebraicDecisionTree<Key> logProbabilities( AlgebraicDecisionTree<Key> logProbabilities(
DecisionTree<Key, double>(eliminationResults, logProbability)); DecisionTree<Key, double>(eliminationResults, logProbability));
AlgebraicDecisionTree<Key> probabilities = AlgebraicDecisionTree<Key> probabilities =
exponentiateLogProbabilities(logProbabilities); probabilitiesFromLogValues(logProbabilities);
return std::make_shared<DecisionTreeFactor>(discreteSeparator, probabilities); return std::make_shared<DecisionTreeFactor>(discreteSeparator, probabilities);
} }