EmrysFilter 0.1.0
State estimation utilities in C++23 using Eigen
Loading...
Searching...
No Matches
GaussianForm.h File Reference

What the four forms of the Gaussian share (decisions.md [gaussian-forms], [form-densities]): the GaussianForm concept and the isInfoForm<> and isSqrtForm<> traits; FormGaussian, the read-only density view that the square-root and information forms' parameters return from toDensity(), with its moments(), marginals, drawSamples(), and drawSamplesWithLogDensity(); and toGaussian(), which converts any form to the covariance form. More...

#include <concepts>
#include <expected>
#include <random>
#include <utility>
#include <EmrysFilter/Core/ChiSquared.h>
#include <EmrysFilter/Core/Macros.h>
#include <EmrysFilter/Core/Math.h>
#include <EmrysFilter/Distributions/Gaussian.h>
#include <EmrysFilter/Distributions/SampleSet.h>
#include <EmrysFilter/Distributions/Sampling.h>
#include <EmrysFilter/Core/Stamp.h>
#include <EmrysFilter/Spaces/Indexing.h>
#include <EmrysFilter/Spaces/Reset.h>
#include <EmrysFilter/Spaces/Space.h>

Go to the source code of this file.

Classes

class  Emrys::FormGaussian< Params_ >
 The density of a Gaussian in a square-root or information form: a read-only view. More...

Concepts

concept  Emrys::GaussianForm
 A Gaussian in any of its four forms (decisions.md [gaussian-forms]): GaussianParams, SqrtGaussianParams, InfoGaussianParams, or SqrtInfoGaussianParams, or a GaussianMarginal, the covariance form's marginal, so that a marginal of any form's density is a GaussianForm [form-densities].

Functions

template<GaussianForm G>
std::expected< GaussianParams< typename G::SpaceType, typename G::Scalar >, GaussianError > Emrys::toGaussian (G const &form)
template<typename Params_, std::uniform_random_bit_generator G>
SampleSet< typename Params_::SpaceType, typename Params_::Scalar > Emrys::drawSamples (FormGaussian< Params_ > const &gaussian, Eigen::Index n, G &rng)
template<typename Params_, std::uniform_random_bit_generator G>
Moments< typenameParams_::SpaceType, typenameParams_::Scalar >::VectorType Emrys::drawSample (FormGaussian< Params_ > const &gaussian, G &rng)
template<typename Params_, std::uniform_random_bit_generator G>
SamplesWithLogDensity< typename Params_::SpaceType, typename Params_::Scalar > Emrys::drawSamplesWithLogDensity (FormGaussian< Params_ > const &gaussian, Eigen::Index n, G &rng)
template<typename Params_, std::uniform_random_bit_generator G>
SampleWithLogDensity< typename Params_::SpaceType, typename Params_::Scalar > Emrys::drawSampleWithLogDensity (FormGaussian< Params_ > const &gaussian, G &rng)

Variables

template<GaussianForm G>
constexpr bool Emrys::isInfoForm = G::IsInfoForm
 Whether the GaussianForm G holds the precision, as InfoGaussianParams and SqrtInfoGaussianParams do, rather than the covariance.
template<GaussianForm G>
constexpr bool Emrys::isSqrtForm = G::IsSqrtForm
 Whether the GaussianForm G holds a triangular root, as SqrtGaussianParams and SqrtInfoGaussianParams do, rather than a whole matrix.

Detailed Description

What the four forms of the Gaussian share (decisions.md [gaussian-forms], [form-densities]): the GaussianForm concept and the isInfoForm<> and isSqrtForm<> traits; FormGaussian, the read-only density view that the square-root and information forms' parameters return from toDensity(), with its moments(), marginals, drawSamples(), and drawSamplesWithLogDensity(); and toGaussian(), which converts any form to the covariance form.

Gaussian.h holds the covariance form, and SqrtGaussian.h, InfoGaussian.h, and SqrtInfoGaussian.h the other three, each with the conversion to it. Read SqrtGaussian.h next.