# Distributions

The following functions and types provide support for manifold-valued and tangent space-valued distributions:

`Manifolds.FVectorDistribution`

— Type`FVectorDistribution{TSpace<:VectorBundleFibers, T}`

An abstract distribution for vector bundle fiber-valued distributions (values from a fiber of a vector bundle at point `x`

from the given manifold). For example used for tangent vector-valued distributions.

`Manifolds.FVectorSupport`

— Type`FVectorSupport(space::Manifold, VectorBundleFibers)`

Value support for vector bundle fiber-valued distributions (values from a fiber of a vector bundle at a `point`

from the given manifold). For example used for tangent vector-valued distributions.

`Manifolds.FVectorvariate`

— Type`FVectorvariate`

Structure that subtypes `VariateForm`

, indicating that a single sample is a vector from a fiber of a vector bundle.

`Manifolds.MPointDistribution`

— Type`MPointDistribution{TM<:Manifold}`

An abstract distribution for points on manifold of type `TM`

.

`Manifolds.MPointSupport`

— Type`MPointSupport(M::Manifold)`

Value support for manifold-valued distributions (values from given `Manifold`

`M`

).

`Manifolds.MPointvariate`

— Type`MPointvariate`

Structure that subtypes `VariateForm`

, indicating that a single sample is a point on a manifold.

`Distributions.support`

— Method`support(d::FVectorDistribution)`

Get the object of type `FVectorSupport`

for the distribution `d`

.

`Manifolds.ProjectedFVectorDistribution`

— Type`ProjectedFVectorDistribution(type::VectorBundleFibers, p, d, project!)`

Generates a random vector from ambient space of manifold `type.manifold`

at point `p`

and projects it to vector space of type `type`

using function `project!`

, see `project`

for documentation. Generated arrays are of type `TResult`

.

`Manifolds.ProjectedPointDistribution`

— Type`ProjectedPointDistribution(M::Manifold, d, proj!, p)`

Generates a random point in ambient space of `M`

and projects it to `M`

using function `proj!`

. Generated arrays are of type `TResult`

, which can be specified by providing the `p`

argument.

`Manifolds.normal_tvector_distribution`

— Method`normal_tvector_distribution(M::Euclidean, p, σ)`

Normal distribution in ambient space with standard deviation `σ`

projected to tangent space at `p`

.

`Manifolds.projected_distribution`

— Function`projected_distribution(M::Manifold, d, [p=rand(d)])`

Wrap the standard distribution `d`

into a manifold-valued distribution. Generated points will be of similar type to `p`

. By default, the type is not changed.