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

Product: the product of independent densities, each on its own block of a space, built with on<Path>() or onEach<Path>() or from Factors (decisions.md [product-factors]), with marginals and conditionals that work factor by factor, and its draws; EachRepetition; the HasLogDensity and ProductFactor concepts. More...

#include <algorithm>
#include <array>
#include <concepts>
#include <cstddef>
#include <expected>
#include <optional>
#include <random>
#include <tuple>
#include <type_traits>
#include <utility>
#include <EmrysFilter/Core/Macros.h>
#include <EmrysFilter/Core/Math.h>
#include <EmrysFilter/Core/NumericError.h>
#include <EmrysFilter/Distributions/Moments.h>
#include <EmrysFilter/Distributions/SampleSet.h>
#include <EmrysFilter/Distributions/Sampling.h>
#include <EmrysFilter/Spaces/Indexing.h>
#include <EmrysFilter/Spaces/Space.h>
#include <EmrysFilter/Spaces/Subspace.h>
#include <EmrysFilter/Spaces/TagPath.h>

Go to the source code of this file.

Classes

class  Emrys::EachRepetition< F, BlockSpace >
 One factor on every repetition of a repeated block: the product of independent copies of a density, one per repetition, as a density over the whole block (decisions.md [product-factors]). More...
class  Emrys::Factors< Placed >
 The factors of a product, each placed by tag path with on() or onEach(), in no space yet: a Product once placed in one (decisions.md [product-factors]). More...
class  Emrys::Product< Space_, Scalar_, Factors_ >
 The product of independent densities, each on its own coordinates of a space. More...

Concepts

concept  Emrys::HasLogDensity
 A density: a type that evaluates its log-density at a value in its space, such as a Gaussian, a KernelDensity, or a Uniform.
concept  Emrys::ProductFactor
 What a Product takes as a factor: a density (HasLogDensity), or parameters that toDensity() checks, such as a GaussianParams, which the product holds and checks itself.

Functions

template<typename F, typename BlockSpace, std::uniform_random_bit_generator G>
SampleSet< BlockSpace, typename F::Scalar > Emrys::drawSamples (EachRepetition< F, BlockSpace > const &each, Eigen::Index n, G &rng)
template<typename F, typename BlockSpace, std::uniform_random_bit_generator G>
Moments< BlockSpace, typenameF::Scalar >::VectorType Emrys::drawSample (EachRepetition< F, BlockSpace > const &each, G &rng)
template<typename F, typename BlockSpace, std::uniform_random_bit_generator G>
SamplesWithLogDensity< BlockSpace, typename F::Scalar > Emrys::drawSamplesWithLogDensity (EachRepetition< F, BlockSpace > const &each, Eigen::Index n, G &rng)
template<typename F, typename BlockSpace, std::uniform_random_bit_generator G>
SampleWithLogDensity< BlockSpace, typename F::Scalar > Emrys::drawSampleWithLogDensity (EachRepetition< F, BlockSpace > const &each, G &rng)
template<typename Scalar, typename Space, typename... Factors_, std::uniform_random_bit_generator G>
SampleSet< Space, Scalar > Emrys::drawSamples (Product< Space, Scalar, Factors_... > const &product, Eigen::Index n, G &rng)
template<typename Scalar, typename Space, typename... Factors_, std::uniform_random_bit_generator G>
Moments< Space, Scalar >::VectorType Emrys::drawSample (Product< Space, Scalar, Factors_... > const &product, G &rng)
template<typename Scalar, typename Space, typename... Factors_, std::uniform_random_bit_generator G>
SamplesWithLogDensity< Space, Scalar > Emrys::drawSamplesWithLogDensity (Product< Space, Scalar, Factors_... > const &product, Eigen::Index n, G &rng)
template<typename Scalar, typename Space, typename... Factors_, std::uniform_random_bit_generator G>
SampleWithLogDensity< Space, Scalar > Emrys::drawSampleWithLogDensity (Product< Space, Scalar, Factors_... > const &product, G &rng)

Detailed Description

Product: the product of independent densities, each on its own block of a space, built with on<Path>() or onEach<Path>() or from Factors (decisions.md [product-factors]), with marginals and conditionals that work factor by factor, and its draws; EachRepetition; the HasLogDensity and ProductFactor concepts.

Read Categorical.h next.