OpenKalman
Classes | Namespaces | Functions
GaussianDistribution.hpp File Reference

A header file for the class GaussianDistribution and its traits. More...

#include <iostream>
#include <adapters/details/adapters-interface.hpp>
Include dependency graph for GaussianDistribution.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  OpenKalman::GaussianDistribution< StaticDescriptor, MeanNestedMatrix, CovarianceNestedMatrix, random_number_engine >
 A Gaussian distribution, defined in terms of a Mean and a Covariance. More...
 
struct  OpenKalman::interface::indexible_object_traits< GaussianDistribution< Coeffs, NestedMean, NestedCovariance, re > >
 
struct  OpenKalman::DistributionTraits< GaussianDistribution< Coeffs, NestedMean, NestedCovariance, re > >
 

Namespaces

 OpenKalman
 The root namespace for OpenKalman.
 
 OpenKalman::detail
 T is an acceptable noise perturbation input to a tests.
 

Functions

template<typename M , typename C , std::enable_if_t< typed_matrix< M > and self_adjoint_covariance< C >, int > = 0>
 OpenKalman::GaussianDistribution (M &&, C &&) -> GaussianDistribution< vector_space_descriptor_of_t< M, 0 >, nested_object_of_t< passable_t< M >>, nested_object_of_t< passable_t< C >>>
 
template<typename D , std::enable_if_t< gaussian_distribution< D >, int > = 0>
auto OpenKalman::make_GaussianDistribution (D &&dist)
 Make a Gaussian distribution. More...
 
template<typename re = std::mt19937, typename M , typename Cov >
auto OpenKalman::make_GaussianDistribution (M &&mean, Cov &&cov)
 Make a Gaussian distribution. More...
 
template<typename re = std::mt19937, typename M , typename Cov , std::enable_if_t<(not fixed_pattern< re >) and typed_matrix< M > and vector< M > and has_untyped_index< M, 1 > and square_shaped< Cov > and(covariance_nestable< Cov > or typed_matrix_nestable< Cov >) and(index_dimension_of< M, 0 >::value==index_dimension_of< Cov, 0 >::value), int > = 0>
auto OpenKalman::make_GaussianDistribution (M &&mean, Cov &&cov)
 Make a Gaussian distribution. More...
 
template<typename StaticDescriptor , typename re = std::mt19937, typename M , typename Cov , std::enable_if_t< fixed_pattern< StaticDescriptor > and typed_matrix_nestable< M > and vector< M > and(covariance_nestable< Cov > or typed_matrix_nestable< Cov >), int > = 0>
auto OpenKalman::make_GaussianDistribution (M &&mean, Cov &&cov)
 Make a Gaussian distribution. More...
 
template<typename M , typename Cov , typename re = std::mt19937, std::enable_if_t< typed_matrix< M > and vector< M > and has_untyped_index< M, 1 > and covariance< Cov > and compares_with< vector_space_descriptor_of_t< M, 0 >, vector_space_descriptor_of_t< Cov, 0 >>, int > = 0>
auto OpenKalman::make_GaussianDistribution ()
 Make a default Gaussian distribution. More...
 
template<typename StaticDescriptor , typename M , typename Cov , typename re = std::mt19937, std::enable_if_t< typed_matrix_nestable< M > and vector< M > and covariance_nestable< Cov > and(index_dimension_of< M, 0 >::value==index_dimension_of< Cov, 0 >::value), int > = 0>
auto OpenKalman::make_GaussianDistribution ()
 Make a default Gaussian distribution. More...
 
template<typename Arg , std::enable_if_t< gaussian_distribution< Arg >, int > = 0>
decltype(auto) constexpr OpenKalman::mean_of (Arg &&arg)
 
template<typename Arg , std::enable_if_t< gaussian_distribution< Arg >, int > = 0>
decltype(auto) constexpr OpenKalman::covariance_of (Arg &&arg)
 
template<typename T , std::size_t dimension = index_dimension_of<T, 0>::value, typename Scalar = typename scalar_type_of<T>::type, typename... runtime_dimensions, std::enable_if_t< gaussian_distribution< T > and(sizeof...(runtime_dimensions)==(dimension==dynamic_size ? 1 :0)) and(std::is_convertible_v< runtime_dimensions, std::size_t > and ...), int > = 0>
constexpr auto OpenKalman::make_zero_distribution_like (runtime_dimensions...e)
 
template<typename T , std::size_t dimension = index_dimension_of<T, 0>::value, typename Scalar = typename scalar_type_of<T>::type, typename... runtime_dimensions, std::enable_if_t< gaussian_distribution< T > and(sizeof...(runtime_dimensions)==(dimension==dynamic_size ? 1 :0)) and(std::is_convertible_v< runtime_dimensions, std::size_t > and ...), int > = 0>
constexpr auto OpenKalman::make_normal_distribution_like (runtime_dimensions...e)
 
template<typename D , typename ... Ds, std::enable_if_t<(gaussian_distribution< D > and ... and gaussian_distribution< Ds >), int > = 0>
auto OpenKalman::concatenate (D &&d, Ds &&... ds)
 
template<typename Dist , typename Means , typename Covariances , std::size_t ... ints>
auto OpenKalman::detail::zip_dist (Means &&ms, Covariances &&cs, std::index_sequence< ints... >)
 
template<typename ... Cs, typename D , std::enable_if_t<(fixed_pattern< Cs > and ...) and gaussian_distribution< D > and coordinates::compares_with< static_concatenate_t< Cs... >, typename DistributionTraits< D >::StaticDescriptor, less_equal<>>, int > = 0>
auto OpenKalman::split (D &&d)
 Split distribution.
 
template<typename Dist , std::enable_if_t< gaussian_distribution< Dist >, int > = 0>
std::ostream & OpenKalman::operator<< (std::ostream &os, const Dist &d)
 
template<typename Dist1 , typename Dist2 , std::enable_if_t< gaussian_distribution< Dist1 > and gaussian_distribution< Dist2 > and coordinates::compares_with< typename DistributionTraits< Dist1 >::StaticDescriptor, typename DistributionTraits< Dist2 >::StaticDescriptor >, int > = 0>
auto OpenKalman::operator+ (Dist1 &&d1, Dist2 &&d2)
 
template<typename Dist1 , typename Dist2 , std::enable_if_t< gaussian_distribution< Dist1 > and gaussian_distribution< Dist2 > and coordinates::compares_with< typename DistributionTraits< Dist1 >::StaticDescriptor, typename DistributionTraits< Dist2 >::StaticDescriptor >, int > = 0>
auto OpenKalman::operator- (Dist1 &&d1, Dist2 &&d2)
 
template<typename A , typename D , std::enable_if_t< typed_matrix< A > and gaussian_distribution< D > and(not euclidean_transformed< A >) and(compares_with< vector_space_descriptor_of_t< A, 1 >, typename DistributionTraits< D >::StaticDescriptor >), int > = 0>
auto OpenKalman::operator* (A &&a, D &&d)
 
template<typename Dist , typename S , std::enable_if_t< gaussian_distribution< Dist > and std::is_convertible_v< S, const typename DistributionTraits< Dist >::Scalar >, int > = 0>
auto OpenKalman::operator* (Dist &&d, S s)
 
template<typename Dist , typename S , std::enable_if_t< gaussian_distribution< Dist > and std::is_convertible_v< S, const typename DistributionTraits< Dist >::Scalar >, int > = 0>
auto OpenKalman::operator* (S s, Dist &&d)
 
template<typename Dist , typename S , std::enable_if_t< gaussian_distribution< Dist > and std::is_convertible_v< S, const typename DistributionTraits< Dist >::Scalar >, int > = 0>
auto OpenKalman::operator/ (Dist &&d, S s)
 

Detailed Description

A header file for the class GaussianDistribution and its traits.