Go to the documentation of this file.
29 template <
class FACTOR,
class DERIVEDCONDITIONAL>
32 std::cout <<
s <<
" P(";
34 if (nrParents() > 0) std::cout <<
" |";
35 for (
Key parent : parents()) std::cout <<
" " <<
formatter(parent);
36 std::cout <<
")" << std::endl;
40 template <
class FACTOR,
class DERIVEDCONDITIONAL>
43 return nrFrontals_ ==
c.nrFrontals_;
47 template <
class FACTOR,
class DERIVEDCONDITIONAL>
50 throw std::runtime_error(
"Conditional::logProbability is not implemented");
54 template <
class FACTOR,
class DERIVEDCONDITIONAL>
57 throw std::runtime_error(
"Conditional::evaluate is not implemented");
61 template <
class FACTOR,
class DERIVEDCONDITIONAL>
64 throw std::runtime_error(
65 "Conditional::logNormalizationConstant is not implemented");
69 template <
class FACTOR,
class DERIVEDCONDITIONAL>
71 return std::exp(logNormalizationConstant());
75 template <
class FACTOR,
class DERIVEDCONDITIONAL>
76 template <
class VALUES>
78 const DERIVEDCONDITIONAL& conditional,
const VALUES&
values) {
79 const double prob_or_density = conditional.evaluate(
values);
80 if (prob_or_density < 0.0)
return false;
83 const double logProb = conditional.logProbability(
values);
86 if (
std::abs(conditional.logNormalizationConstant() -
87 std::log(conditional.normalizationConstant())) > 1
e-9)
91 if (
error < 0.0)
return false;
92 const double expected = conditional.logNormalizationConstant() -
error;
void print(const std::string &s="Conditional", const KeyFormatter &formatter=DefaultKeyFormatter) const
Array< double, 1, 3 > e(1./3., 0.5, 2.)
bool equals(const This &c, double tol=1e-9) const
double normalizationConstant() const
const KeyFormatter & formatter
const EIGEN_DEVICE_FUNC LogReturnType log() const
virtual double evaluate(const HybridValues &c) const
const EIGEN_DEVICE_FUNC ExpReturnType exp() const
virtual double logProbability(const HybridValues &c) const
std::function< std::string(Key)> KeyFormatter
Typedef for a function to format a key, i.e. to convert it to a string.
static bool CheckInvariants(const DERIVEDCONDITIONAL &conditional, const VALUES &x)
virtual double logNormalizationConstant() const
const gtsam::Symbol key('X', 0)
Base class for conditional densities.
std::uint64_t Key
Integer nonlinear key type.
gtsam
Author(s):
autogenerated on Tue Jun 25 2024 03:00:37