Adapt to continuous densities
parent
0a6334ef1f
commit
693d18233a
|
@ -68,12 +68,13 @@ template <class FACTOR, class DERIVEDCONDITIONAL>
|
||||||
template <class VALUES>
|
template <class VALUES>
|
||||||
bool Conditional<FACTOR, DERIVEDCONDITIONAL>::CheckInvariants(
|
bool Conditional<FACTOR, DERIVEDCONDITIONAL>::CheckInvariants(
|
||||||
const DERIVEDCONDITIONAL& conditional, const VALUES& values) {
|
const DERIVEDCONDITIONAL& conditional, const VALUES& values) {
|
||||||
const double probability = conditional.evaluate(values);
|
const double prob_or_density = conditional.evaluate(values);
|
||||||
if (probability < 0.0 || probability > 1.0)
|
if (prob_or_density < 0.0) return false; // prob_or_density is negative.
|
||||||
return false; // probability is not in [0,1]
|
if (std::abs(prob_or_density - conditional(values)) > 1e-9)
|
||||||
|
return false; // operator and evaluate differ
|
||||||
const double logProb = conditional.logProbability(values);
|
const double logProb = conditional.logProbability(values);
|
||||||
if (std::abs(probability - std::exp(logProb)) > 1e-9)
|
if (std::abs(prob_or_density - std::exp(logProb)) > 1e-9)
|
||||||
return false; // logProb is not consistent with probability
|
return false; // logProb is not consistent with prob_or_density
|
||||||
const double expected =
|
const double expected =
|
||||||
conditional.logNormalizationConstant() - conditional.error(values);
|
conditional.logNormalizationConstant() - conditional.error(values);
|
||||||
if (std::abs(logProb - expected) > 1e-9)
|
if (std::abs(logProb - expected) > 1e-9)
|
||||||
|
|
|
@ -34,7 +34,7 @@ namespace gtsam {
|
||||||
/**
|
/**
|
||||||
* A GaussianConditional functions as the node in a Bayes network.
|
* A GaussianConditional functions as the node in a Bayes network.
|
||||||
* It has a set of parents y,z, etc. and implements a probability density on x.
|
* It has a set of parents y,z, etc. and implements a probability density on x.
|
||||||
* The negative log-probability is given by \f$ \frac{1}{2} |Rx - (d - Sy - Tz - ...)|^2 \f$
|
* The negative log-density is given by \f$ \frac{1}{2} |Rx - (d - Sy - Tz - ...)|^2 \f$
|
||||||
* @ingroup linear
|
* @ingroup linear
|
||||||
*/
|
*/
|
||||||
class GTSAM_EXPORT GaussianConditional :
|
class GTSAM_EXPORT GaussianConditional :
|
||||||
|
|
Loading…
Reference in New Issue