OpenKalman
|
The root namespace for OpenKalman. More...
Namespaces | |
collections | |
Namespace for collections. | |
detail | |
T is an acceptable noise perturbation input to a tests. | |
values | |
Definition for values::abs. | |
Classes | |
struct | common_reference |
struct | common_reference< T > |
struct | common_reference< T1, T2, Ts... > |
struct | common_reference<> |
struct | compare_three_way |
struct | ConstantAdapter |
A tensor or other matrix in which all elements are a constant scalar value. More... | |
struct | ContinuousPropertyParticleDistribution |
struct | Covariance |
A self-adjoint Covariance matrix. More... | |
struct | CubaturePoints |
Implementation of a cubature points transform. More... | |
struct | DiagonalAdapter |
An adapter for creating a diagonal matrix or tensor. More... | |
struct | DistributionTraits< GaussianDistribution< Coeffs, NestedMean, NestedCovariance, re > > |
struct | dynamic_index_count |
Counts the number of indices of T in which the dimensions are dynamic. More... | |
struct | dynamic_index_count< T, std::enable_if_t<(index_count< T >::value !=dynamic_size)> > |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
struct | equal_to |
A generalization of std::equal_to in which the arguments may be of different types. More... | |
struct | equal_to< void > |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
struct | EuclideanMean |
Similar to a Mean, but the coefficients are transformed into Euclidean space, based on their type. More... | |
struct | FiniteDifferenceLinearization |
A tests which calculates the first and second Taylor derivatives using finite differences. More... | |
struct | FromEuclideanExpr |
An expression that transforms angular or other modular vector space descriptors back from Euclidean space. More... | |
struct | GaussianDistribution |
A Gaussian distribution, defined in terms of a Mean and a Covariance. More... | |
struct | greater |
A generalization of std::greater in which the arguments may be of different types. More... | |
struct | greater< void > |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
struct | greater_equal |
A generalization of std::less_equal in which the arguments may be of different types. More... | |
struct | greater_equal< void > |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
struct | hermitian_adapter_type_of |
The TriangleType associated with the storage triangle of one or more matrices. More... | |
struct | HermitianAdapter |
A hermitian matrix wrapper. More... | |
struct | identity |
struct | IdentityTransform |
An identity transform from one statistical distribution to another. More... | |
struct | IdentityTransformation |
struct | incrementable_traits |
struct | incrementable_traits< const T > |
struct | incrementable_traits< T *, std::enable_if_t< std::is_object_v< T > > > |
struct | incrementable_traits< T, std::enable_if_t< detail::has_member_difference_type< T >::value > > |
struct | incrementable_traits< T, std::enable_if_t< not detail::has_member_difference_type< T >::value and std::is_integral_v< decltype(std::declval< const T & >() - std::declval< const T & >())> > > |
struct | index_count |
The minimum number of indices need to access all the components of an object. More... | |
struct | index_count< T, std::enable_if_t< detail::dynamic_count_indices_defined< T >::value > > |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
struct | index_count< T, std::enable_if_t< detail::static_count_indices_defined< T >::value > > |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
struct | index_dimension_of |
The dimension of an index for a matrix, expression, or array. More... | |
struct | index_dimension_of< T, N, std::void_t< typename vector_space_descriptor_of< T, N >::type > > |
struct | indirectly_readable_traits |
struct | indirectly_readable_traits< const T > |
struct | indirectly_readable_traits< I, std::enable_if_t< std::is_array_v< I > > > |
struct | indirectly_readable_traits< T * > |
struct | indirectly_readable_traits< T, std::enable_if_t< detail_indirectly_readable::has_member_value_type< T > and detail_indirectly_readable::has_member_element_type< T > > > |
struct | indirectly_readable_traits< T, std::enable_if_t< detail_indirectly_readable::has_member_value_type< T > and not detail_indirectly_readable::has_member_element_type< T > > > |
struct | indirectly_readable_traits< T, std::enable_if_t< not detail_indirectly_readable::has_member_value_type< T > and detail_indirectly_readable::has_member_element_type< T > > > |
struct | is_bounded_array |
struct | is_bounded_array< T[N]> |
struct | KalmanFilter |
A Kalman filter, using one or more statistical transforms. More... | |
struct | KalmanFilter< ProcessTransform, MeasurementTransform > |
A Kalman filter, using a different statistical transform for the process and the measurement. More... | |
struct | KalmanFilter< Transform > |
A Kalman filter, using the same transform for the process and the measurement. More... | |
struct | layout_of |
The row dimension of a matrix, expression, or array. More... | |
struct | layout_of< T, std::enable_if_t< detail::has_layout< std::decay_t< T > >::value > > |
struct | less |
A generalization of std::less in which the arguments may be of different types. More... | |
struct | less< void > |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
struct | less_equal |
A generalization of std::less_equal in which the arguments may be of different types. More... | |
struct | less_equal< void > |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
class | LinearizedTransform |
A linearized transform, using a 1st or 2nd order Taylor approximation of a linear tests. More... | |
class | LinearTransform |
A linear tests from one statistical distribution to another. More... | |
struct | LinearTransformation |
A linear tests from one single-column vector to another. More... | |
struct | Matrix |
A matrix with typed rows and columns. More... | |
struct | max_tensor_order |
The maximum number of indices of structure T of size other than 1 (including any dynamic indices). More... | |
struct | max_tensor_order< T, std::enable_if_t< index_count< T >::value !=dynamic_size > > |
struct | Mean |
A set of one or more column vectors, each representing a statistical mean. More... | |
struct | MixtureOfContinuousDistributions |
Weighted mixture of continuous (e.g., Gaussian) distributions. More... | |
struct | MonteCarloTransform |
A Monte Carlo transform from one Gaussian distribution to another. More... | |
struct | nested_object_of |
A wrapper type's nested object type, if it exists. More... | |
struct | nested_object_of< T, std::enable_if_t< has_nested_object< T > > > |
struct | not_equal_to |
A generalization of std::not_equal_to in which the arguments may be of different types. More... | |
struct | not_equal_to< void > |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
class | partial_ordering |
struct | ParticleDistribution |
Distribution of particles. More... | |
struct | ParticleFilter |
struct | pattern_matrix_of |
The native matrix on which an OpenKalman matrix adapter is patterned. More... | |
struct | pattern_matrix_of< ConstantAdapter< PatternMatrix, Scalar, constant... > > |
struct | pattern_matrix_of< T, std::enable_if_t< has_nested_object< T > > > |
struct | RecursiveLeastSquaresTransform |
Propagates a recursive least squares error distribution of parameters, with a forgetting factor λ. More... | |
class | reference_wrapper |
struct | SamplePointsTransform |
Scaled points transform. More... | |
struct | scalar_type_of |
Type scalar type (e.g., std::float, std::double, std::complex<double>) of a tensor. More... | |
struct | scalar_type_of< T, std::enable_if_t< interface::scalar_type_defined_for< T > > > |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
struct | SphericalSimplex |
Spherical simplex sigma points, as implemented in, e.g., Simon J. More... | |
struct | SphericalSimplexParameters |
struct | SquareRootCovariance |
The upper or lower triangle Cholesky factor (square root) of a covariance matrix. More... | |
struct | ToEuclideanExpr |
An expression that transforms vector space descriptors into Euclidean space for application of directional statistics. More... | |
struct | Transformation |
A tests from one single-column vector to another. More... | |
struct | Transformation< Function > |
struct | Transformation< Function, JacobianFunction > |
struct | Transformation< Function, JacobianFunction, HessianFunction > |
struct | triangle_type_of |
The common TriangleType associated with a set of triangular matrices. More... | |
struct | TriangularAdapter |
A triangular_adapter, where components above or below the diagonal (or both) are zero. More... | |
struct | type_identity |
struct | unreachable_sentinel_t |
struct | Unscented |
Scaled symmetric sigma points. More... | |
struct | UnscentedParametersParameterEstimation |
Unscented parameters for use in parameter estimation. More... | |
struct | UnscentedParametersStateEstimation |
Unscented parameters for use in state estimation (the default). More... | |
struct | vector_space_descriptor_of |
The coordinates::pattern for index N of object T. More... | |
struct | vector_space_descriptor_of< T, N, std::enable_if_t< coordinates::pattern< decltype(get_vector_space_descriptor< N >(std::declval< T >()))> > > |
struct | VectorSpaceAdapter |
An adapter that adds vector space descriptors for each index. More... | |
struct | WeightedParticleDistribution |
Typedefs | |
template<typename... T> | |
using | common_reference_t = typename common_reference< T... >::type |
template<typename I > | |
using | iter_value_t = typename detail::iter_value_impl< remove_cvref_t< I > >::value_type |
template<typename I > | |
using | iter_reference_t = decltype(*std::declval< I & >()) |
template<typename I > | |
using | iter_difference_t = typename detail::iter_difference_impl< remove_cvref_t< I > >::difference_type |
template<typename I > | |
using | iter_rvalue_reference_t = decltype(std::move(*std::declval< I & >())) |
template<typename T , std::enable_if_t< indirectly_readable< T >, int > = 0> | |
using | iter_const_reference_t = common_reference_t< const iter_value_t< T > &&, iter_reference_t< T > > |
template<typename T , std::enable_if_t< indirectly_readable< T >, int > = 0> | |
using | iter_common_reference_t = common_reference_t< iter_reference_t< T >, iter_value_t< T > & > |
template<typename T > | |
using | type_identity_t = typename type_identity< T >::type |
template<typename PatternObject , typename Scalar = scalar_type_of_t<PatternObject>> | |
using | ZeroAdapter = ConstantAdapter< PatternObject, Scalar, 0 > |
A ConstantAdapter in which all elements are 0. More... | |
template<typename T > | |
using | pattern_matrix_of_t = typename pattern_matrix_of< std::decay_t< T > >::type |
Helper template for pattern_matrix_of. | |
template<typename T , Layout layout = Layout::none, typename S = scalar_type_of_t<T>, typename D = decltype(all_vector_space_descriptors(std::declval<T>())), std::enable_if_t< indexible< T > and values::number< S > and pattern_collection< D >, int > = 0> | |
using | dense_writable_matrix_t = std::decay_t< decltype(make_dense_object< T, layout, S >(std::declval< D >()))> |
An alias for a dense, writable matrix, patterned on parameter T. More... | |
template<typename T > | |
using | nested_object_of_t = typename nested_object_of< T >::type |
Helper type for nested_object_of. More... | |
template<typename T > | |
using | scalar_type_of_t = typename scalar_type_of< T >::type |
helper template for scalar_type_of. | |
template<typename T , std::size_t N> | |
using | vector_space_descriptor_of_t = typename vector_space_descriptor_of< T, N >::type |
helper template for vector_space_descriptor_of. | |
using | SphericalSimplexSigmaPoints = SphericalSimplex< SphericalSimplexParameters > |
using | UnscentedSigmaPointsStateEstimation = Unscented< UnscentedParametersStateEstimation > |
using | UnscentedSigmaPointsParameterEstimation = Unscented< UnscentedParametersParameterEstimation > |
using | UnscentedSigmaPoints = Unscented< UnscentedParametersStateEstimation > |
Same as UnscentedSigmaPointsStateEstimation. | |
using | CubatureTransform = SamplePointsTransform< CubaturePoints > |
using | UnscentedTransform = SamplePointsTransform< UnscentedSigmaPoints > |
using | UnscentedTransformParameterEstimation = SamplePointsTransform< UnscentedSigmaPointsParameterEstimation > |
Enumerations | |
enum | Layout : int { Layout::none, Layout::right, Layout::left, Layout::stride } |
The layout format of a multidimensional array. More... | |
enum | TriangleType : int { TriangleType::diagonal, TriangleType::lower, TriangleType::upper, TriangleType::any } |
The type of a triangular matrix. More... | |
enum | HermitianAdapterType : int { HermitianAdapterType::any = static_cast<int>(TriangleType::diagonal), HermitianAdapterType::lower = static_cast<int>(TriangleType::lower), HermitianAdapterType::upper = static_cast<int>(TriangleType::upper) } |
The type of a hermitian adapter, indicating which triangle of the nested matrix is used. More... | |
enum | Applicability : int { Applicability::guaranteed, Applicability::permitted } |
The applicability of a concept, trait, or restraint. More... | |
Functions | |
template<typename T , typename U > | |
constexpr bool | cmp_equal (T t, U u) noexcept |
template<typename T , typename U > | |
constexpr bool | cmp_not_equal (T t, U u) noexcept |
template<typename T , typename U > | |
constexpr bool | cmp_less (T t, U u) noexcept |
template<typename T , typename U > | |
constexpr bool | cmp_greater (T t, U u) noexcept |
template<typename T , typename U > | |
constexpr bool | cmp_less_equal (T t, U u) noexcept |
template<typename T , typename U > | |
constexpr bool | cmp_greater_equal (T t, U u) noexcept |
template<typename T > | |
reference_wrapper (T &) -> reference_wrapper< T > | |
template<typename T > | |
constexpr std::reference_wrapper< T > | ref (T &t) noexcept |
template<typename T > | |
constexpr std::reference_wrapper< T > | ref (std::reference_wrapper< T > t) noexcept |
template<typename T > | |
void | ref (const T &&)=delete |
template<typename T > | |
constexpr std::reference_wrapper< const T > | cref (const T &t) noexcept |
template<typename T > | |
constexpr std::reference_wrapper< const T > | cref (std::reference_wrapper< T > t) noexcept |
template<typename T > | |
void | cref (const T &&)=delete |
template<typename R , typename F , typename... Args, std::enable_if_t< std::is_invocable_r_v< R, F, Args... >, int > = 0> | |
constexpr R | invoke_r (F &&f, Args &&... args) noexcept(std::is_nothrow_invocable_r_v< R, F, Args... >) |
constexpr Applicability | operator not (Applicability x) |
constexpr Applicability | operator and (Applicability x, Applicability y) |
constexpr Applicability | operator or (Applicability x, Applicability y) |
template<typename M , typename C , std::enable_if_t< typed_matrix< M > and self_adjoint_covariance< C >, int > = 0> | |
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 | make_GaussianDistribution (D &&dist) |
Make a Gaussian distribution. More... | |
template<typename re = std::mt19937, typename M , typename Cov > | |
auto | 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 | 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 | 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 | 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 | make_GaussianDistribution () |
Make a default Gaussian distribution. More... | |
template<typename Arg , std::enable_if_t< gaussian_distribution< Arg >, int > = 0> | |
decltype(auto) constexpr | mean_of (Arg &&arg) |
template<typename Arg , std::enable_if_t< gaussian_distribution< Arg >, int > = 0> | |
decltype(auto) constexpr | 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 | 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 | 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 | concatenate (D &&d, Ds &&... ds) |
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 | split (D &&d) |
Split distribution. | |
template<typename Dist , std::enable_if_t< gaussian_distribution< Dist >, int > = 0> | |
std::ostream & | 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 | 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 | 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 | 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 | 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 | 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 | operator/ (Dist &&d, S s) |
template<typename P > | |
KalmanFilter (P &&) -> KalmanFilter< P > | |
template<typename P , typename M > | |
KalmanFilter (P &&, M &&) -> KalmanFilter< P, M > | |
template<typename C , typename Arg , std::enable_if_t< values::scalar< C > and indexible< Arg >, int > = 0> | |
ConstantAdapter (const C &, const Arg &) -> ConstantAdapter< Arg, C > | |
template<typename Arg , std::enable_if_t< constant_matrix< Arg > and(not constant_adapter< Arg >), int > = 0> | |
ConstantAdapter (const Arg &) -> ConstantAdapter< Arg, constant_coefficient< Arg >> | |
template<typename M , std::enable_if_t< covariance_nestable< M >, int > = 0> | |
Covariance (M &&) -> Covariance< Dimensions< index_dimension_of_v< M, 0 >>, passable_t< M >> | |
Deduce Covariance type from a covariance_nestable. More... | |
template<typename StaticDescriptor , typename Arg , std::enable_if_t< fixed_pattern< StaticDescriptor > and covariance_nestable< Arg > and(coordinates::dimension_of_v< StaticDescriptor >==index_dimension_of< Arg, 0 >::value), int > = 0> | |
auto | make_covariance (Arg &&arg) |
Make a Covariance from a covariance_nestable, specifying the fixed_pattern. More... | |
template<typename StaticDescriptor , TriangleType triangle_type, typename Arg , std::enable_if_t< fixed_pattern< StaticDescriptor > and covariance_nestable< Arg > and(coordinates::dimension_of_v< StaticDescriptor >==index_dimension_of< Arg, 0 >::value) and(triangle_type !=TriangleType::lower or triangular_matrix< Arg, TriangleType::lower >) and(triangle_type !=TriangleType::upper or triangular_matrix< Arg, TriangleType::upper >) and(triangle_type !=TriangleType::diagonal or diagonal_matrix< Arg >), int > = 0> | |
auto | make_covariance (Arg &&arg) |
Make a Covariance from a covariance_nestable, specifying the fixed_pattern. More... | |
template<typename Arg , std::enable_if_t< covariance_nestable< Arg >, int > = 0> | |
auto | make_covariance (Arg &&arg) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename StaticDescriptor , typename Arg , std::enable_if_t<(covariance_nestable< Arg > or typed_matrix_nestable< Arg >) and square_shaped< Arg >, int > = 0> | |
auto | make_covariance () |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename StaticDescriptor , TriangleType triangle_type, typename Arg , std::enable_if_t< fixed_pattern< StaticDescriptor > and typed_matrix_nestable< Arg > and square_shaped< Arg >, int > = 0> | |
auto | make_covariance () |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename Arg , std::enable_if_t<(covariance_nestable< Arg > or typed_matrix_nestable< Arg >) and square_shaped< Arg >, int > = 0> | |
auto | make_covariance () |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename Arg1 , typename Arg2 , std::enable_if_t<((covariance< Arg1 > and(covariance< Arg2 > or(typed_matrix< Arg2 > and square_shaped< Arg2 >))) or((typed_matrix< Arg1 > and square_shaped< Arg1 >) and covariance< Arg2 >)) and compares_with< vector_space_descriptor_of_t< Arg1, 0 >, vector_space_descriptor_of_t< Arg2, 0 >>, int > = 0> | |
decltype(auto) constexpr | operator+ (Arg1 &&arg1, Arg2 &&arg2) |
template<typename Arg1 , typename Arg2 , std::enable_if_t<((covariance< Arg1 > and(covariance< Arg2 > or(typed_matrix< Arg2 > and square_shaped< Arg2 >))) or((typed_matrix< Arg1 > and square_shaped< Arg1 >) and covariance< Arg2 >)) and compares_with< vector_space_descriptor_of_t< Arg1, 0 >, vector_space_descriptor_of_t< Arg2, 0 >>, int > = 0> | |
decltype(auto) constexpr | operator- (Arg1 &&arg1, Arg2 &&arg2) |
template<typename Arg1 , typename Arg2 , std::enable_if_t< covariance< Arg1 > and covariance< Arg2 > and compares_with< vector_space_descriptor_of_t< Arg1, 0 >, vector_space_descriptor_of_t< Arg2, 0 >>, int > = 0> | |
decltype(auto) constexpr | operator* (Arg1 &&arg1, Arg2 &&arg2) |
template<typename M , typename Cov , std::enable_if_t< typed_matrix< M > and covariance< Cov > and compares_with< vector_space_descriptor_of_t< M, 0 >::ColumnCoefficients, typename MatrixTraits< std::decay_t< Cov >>>, int > = 0> | |
decltype(auto) constexpr | operator* (M &&m, Cov &&cov) |
template<typename Cov , typename M , std::enable_if_t< covariance< Cov > and typed_matrix< M > and compares_with< vector_space_descriptor_of_t< Cov, 0 >, vector_space_descriptor_of_t< M, 0 >>, int > = 0> | |
decltype(auto) constexpr | operator* (Cov &&cov, M &&m) |
template<typename M , typename S , std::enable_if_t< covariance< M > and std::is_convertible_v< S, typename scalar_type_of< M >::type >, int > = 0> | |
auto | operator* (M &&m, const S s) |
template<typename S , typename M , std::enable_if_t< std::is_convertible_v< S, typename scalar_type_of< M >::type > and covariance< M >, int > = 0> | |
auto | operator* (const S s, M &&m) |
template<typename M , typename S , std::enable_if_t< covariance< M > and std::is_convertible_v< S, typename scalar_type_of< M >::type >, int > = 0> | |
constexpr auto | operator/ (M &&m, const S s) |
template<typename M , std::enable_if_t< covariance< M >, int > = 0> | |
constexpr auto | operator- (M &&m) |
template<typename Arg1 , typename Arg2 , std::enable_if_t< covariance< Arg1 > and covariance< Arg2 >, int > = 0> | |
constexpr bool | operator== (Arg1 &&arg1, Arg2 &&arg2) |
template<typename Arg1 , typename Arg2 , std::enable_if_t< covariance< Arg1 > and covariance< Arg2 >, int > = 0> | |
constexpr bool | operator!= (Arg1 &&arg1, Arg2 &&arg2) |
template<typename M , typename S , std::enable_if_t< covariance< M > and std::is_convertible_v< S, typename scalar_type_of< M >::type >, int > = 0> | |
auto | scale (M &&m, const S s) |
Scale a covariance by a factor. More... | |
template<typename M , typename S , std::enable_if_t< covariance< M > and std::is_convertible_v< S, typename scalar_type_of< M >::type >, int > = 0> | |
auto | inverse_scale (M &&m, const S s) |
Scale a covariance by the inverse of a scalar factor. More... | |
template<typename M , typename A , std::enable_if_t< covariance< M > and typed_matrix< A > and compares_with< vector_space_descriptor_of_t< A, 0 >::ColumnCoefficients, typename MatrixTraits< std::decay_t< M >>>and(not euclidean_transformed< A >), int > = 0> | |
auto | scale (M &&m, A &&a) |
Scale a covariance by a matrix. More... | |
template<typename Arg , std::enable_if_t< self_adjoint_covariance< Arg >, int > = 0> | |
auto | square_root (Arg &&arg) |
template<typename Arg , std::enable_if_t< triangular_covariance< Arg >, int > = 0> | |
auto | square (Arg &&arg) |
template<typename M , typename ... Ms, std::enable_if_t<(covariance< M > and ... and covariance< Ms >), int > = 0> | |
decltype(auto) constexpr | concatenate (M &&m, Ms &&... mN) |
Concatenate one or more Covariance or SquareRootCovariance objects diagonally. | |
template<typename ... Cs, typename M , std::enable_if_t< covariance< M >, int > = 0> | |
auto | split_diagonal (M &&m) |
Split Covariance or SquareRootCovariance diagonally. More... | |
template<typename ... Cs, typename M , std::enable_if_t< covariance< M >, int > = 0> | |
auto | split_vertical (M &&m) |
Split Covariance or SquareRootCovariance vertically. Result is a tuple of typed matrices. More... | |
template<typename ... Cs, typename M , std::enable_if_t< covariance< M >, int > = 0> | |
auto | split_horizontal (M &&m) |
Split Covariance or SquareRootCovariance vertically. Result is a tuple of typed matrices. More... | |
template<typename Function , typename Arg , std::enable_if_t< covariance< Arg > and typed_matrix< std::invoke_result_t< Function, std::decay_t< decltype(column< 0 >(std::declval< Arg >()))>>>, int > = 0> | |
auto | apply_columnwise (const Function &f, Arg &&arg) |
template<typename Function , typename Arg , std::enable_if_t< covariance< Arg > and std::is_convertible_v< std::invoke_result_t< Function, typename scalar_type_of< Arg >::type >, const typename scalar_type_of< Arg >::type >, int > = 0> | |
auto | apply_coefficientwise (const Function &f, Arg &&arg) |
template<typename Cov , std::enable_if_t< covariance< Cov >, int > = 0> | |
std::ostream & | operator<< (std::ostream &os, const Cov &c) |
template<typename V1 , typename V2 , std::enable_if_t< typed_matrix< V1 > and typed_matrix< V2 >, int > = 0> | |
auto | operator+ (V1 &&v1, V2 &&v2) |
Add two typed matrices. If the operands are of different types, the result will be a regular typed matrix. | |
template<typename V1 , typename V2 , std::enable_if_t< typed_matrix< V1 > and typed_matrix< V2 >, int > = 0> | |
auto | operator- (V1 &&v1, V2 &&v2) |
Subtract two typed matrices. The result is a regular typed matrix unless both operands are EuclideanMean. | |
template<typename V , typename S , std::enable_if_t< typed_matrix< V > and std::is_convertible_v< S, const typename scalar_type_of< V >::type >, int > = 0> | |
auto | operator* (V &&v, S scale) |
Multiply a typed matrix by a scalar. The result type is the same as the operand type, so angles in the result may be wrapped. | |
template<typename V , typename S , std::enable_if_t< typed_matrix< V > and std::is_convertible_v< S, const typename scalar_type_of< V >::type >, int > = 0> | |
auto | operator* (S scale, V &&v) |
Multiply a scalar by a typed matrix. The result type is the same as the operand type, so angles in the result may be wrapped. | |
template<typename V , typename S , std::enable_if_t< typed_matrix< V > and std::is_convertible_v< S, const typename scalar_type_of< V >::type >, int > = 0> | |
auto | operator/ (V &&v, S scale) |
Divide a typed matrix by a scalar. The result type is the same as the operand type, so angles in the result may be wrapped. | |
template<typename V1 , typename V2 , std::enable_if_t< typed_matrix< V1 > and typed_matrix< V2 >, int > = 0> | |
auto | operator* (V1 &&v1, V2 &&v2) |
Multiply a typed matrix by another typed matrix. The result is a regular typed matrix unless the first operand is EuclideanMean. | |
template<typename V , std::enable_if_t< typed_matrix< V >, int > = 0> | |
auto | operator- (V &&v) |
Negate a vector object. The result is a regular typed matrix unless the operand is EuclideanMean. | |
template<typename V1 , typename V2 , std::enable_if_t< typed_matrix< V1 > and typed_matrix< V2 >, int > = 0> | |
constexpr bool | operator== (V1 &&v1, V2 &&v2) |
typed_matrix == typed_matrix. | |
template<typename V1 , typename V2 , std::enable_if_t< typed_matrix< V1 > and typed_matrix< V2 >, int > = 0> | |
constexpr bool | operator!= (V1 &&v1, V2 &&v2) |
typed_matrix != typed_matrix. | |
template<typename V , typename ... Vs> | |
decltype(auto) constexpr | concatenate_vertical (V &&v, Vs &&... vs) |
Concatenate one or more typed matrices objects vertically. | |
template<typename ... Vs, std::enable_if_t<(typed_matrix< Vs > and ...), int > = 0> | |
decltype(auto) constexpr | concatenate (Vs &&... vs) |
Concatenate one or more typed matrices vertically. (Synonym for concatenate_vertical.) | |
template<typename V , typename ... Vs> | |
decltype(auto) constexpr | concatenate_horizontal (V &&v, Vs &&... vs) |
Concatenate one or more matrix objects vertically. | |
template<typename V , typename ... Vs, std::enable_if_t<(typed_matrix< V > and ... and typed_matrix< Vs >), int > = 0> | |
decltype(auto) constexpr | concatenate_diagonal (V &&v, Vs &&... vs) |
Concatenate one or more typed matrices diagonally. | |
template<typename Function , typename Arg > | |
Arg & | apply_columnwise (const Function &f, Arg &arg) |
template<typename Function , typename Arg , std::enable_if_t< typed_matrix< Arg > and has_untyped_index< Arg, 1 > and typed_matrix< std::invoke_result_t< const Function &, std::decay_t< decltype(column(std::declval< const Arg &>(), 0))> && >>, int > = 0> | |
auto | apply_columnwise (const Function &f, const Arg &arg) |
template<std::size_t count, typename Function , std::enable_if_t< typed_matrix< std::invoke_result_t< const Function &>>, int > = 0> | |
auto | apply_columnwise (const Function &f) |
template<typename Function , typename Arg , std::enable_if_t< typed_matrix< Arg > and std::is_void_v< std::invoke_result_t< const Function &, std::decay_t< scalar_type_of_t< Arg >> &>>, int > = 0> | |
Arg & | apply_coefficientwise (const Function &f, Arg &arg) |
template<typename Function , typename Arg , std::enable_if_t< typed_matrix< Arg > and std::is_convertible_v< std::invoke_result_t< const Function &, std::decay_t< typename scalar_type_of< Arg >::type >>, typename scalar_type_of< Arg >::type >, int > = 0> | |
auto | apply_coefficientwise (const Function &f, const Arg &arg) |
template<typename V , typename Function , std::enable_if_t< typed_matrix< V > and std::is_convertible_v< std::invoke_result_t< const Function &>, typename scalar_type_of< V >::type >, int > = 0> | |
auto | apply_coefficientwise (const Function &f) |
template<typename V , typename Function , std::enable_if_t< typed_matrix< V > and std::is_convertible_v< std::invoke_result_t< const Function &, std::size_t, std::size_t >, typename scalar_type_of< V >::type >, int > = 0> | |
auto | apply_coefficientwise (Function &&f) |
template<typename ReturnType , typename random_number_engine = std::mt19937, typename... Dists, std::enable_if_t< typed_matrix< ReturnType > and(not has_dynamic_dimensions< ReturnType >) and(sizeof...(Dists) > 0> | |
auto | randomize (Dists &&... dists) |
Fill a fixed-shape typed matrix with random values selected from a random distribution. More... | |
template<typename ReturnType , typename random_number_engine = std::mt19937, typename Dist > | |
auto | randomize (const std::size_t rows, const std::size_t columns, Dist &&dist) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename V , std::enable_if_t< typed_matrix< V >, int > = 0> | |
std::ostream & | operator<< (std::ostream &os, const V &v) |
Output the vector to a stream. | |
template<typename Arg , std::enable_if_t< indexible< Arg >, int > = 0> | |
DiagonalAdapter (Arg &&) -> DiagonalAdapter< Arg > | |
Deduce DiagonalAdapter NestedObject from its constructor argument. | |
template<typename V , std::enable_if_t< typed_matrix< V > and not euclidean_transformed< V > and has_untyped_index< V, 1 > andcoordinates::stat_dimension_of_v< vector_space_descriptor_of_t< V, 0 >>==index_dimension_of_v< V, 0 >, int > = 0> | |
EuclideanMean (V &&) -> EuclideanMean< vector_space_descriptor_of_t< V, 0 >, std::remove_reference_t< decltype(to_euclidean< vector_space_descriptor_of_t< V, 0 >>(nested_object(std::declval< V &&>())))>> | |
Deduce template parameters from a non-Euclidean-transformed typed matrix. More... | |
template<typename StaticDescriptor , typename M , std::enable_if_t< fixed_pattern< StaticDescriptor > and typed_matrix_nestable< M > and(coordinates::stat_dimension_of_v< StaticDescriptor >==index_dimension_of< M, 0 >::value), int > = 0> | |
auto | make_euclidean_mean (M &&arg) |
Make a EuclideanMean from a typed_matrix_nestable, specifying the row coefficients. More... | |
template<typename M , std::enable_if_t< typed_matrix_nestable< M >, int > = 0> | |
auto | make_euclidean_mean (M &&m) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename Arg , std::enable_if_t< typed_matrix< Arg > and has_untyped_index< Arg, 1 >, int > = 0> | |
auto | make_euclidean_mean (Arg &&arg) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename StaticDescriptor , typename M , std::enable_if_t< fixed_pattern< StaticDescriptor > and typed_matrix_nestable< M > and(coordinates::stat_dimension_of_v< StaticDescriptor >==index_dimension_of< M, 0 >::value), int > = 0> | |
auto | make_euclidean_mean () |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename M , std::enable_if_t< typed_matrix_nestable< M >, int > = 0> | |
auto | make_euclidean_mean () |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename Arg , typename V , std::enable_if_t< indexible< Arg > and coordinates::pattern< V >, int > = 0> | |
FromEuclideanExpr (Arg &&, const V &) -> FromEuclideanExpr< Arg, V > | |
template<typename M , std::enable_if_t< hermitian_matrix< M, Applicability::permitted >, int > = 0> | |
HermitianAdapter (M &&) -> HermitianAdapter< nested_object_of_t< M >, hermitian_adapter_type_of_v< M >> | |
Deduction guide for converting Eigen::SelfAdjointView to HermitianAdapter. | |
template<typename M , std::enable_if_t< typed_matrix_nestable< M >, int > = 0> | |
Matrix (M &&) -> Matrix< Dimensions< index_dimension_of_v< M, 0 >>, Dimensions< index_dimension_of_v< M, 1 >>, passable_t< M >> | |
Deduce parameter types from a typed_matrix_nestable. | |
template<typename M , std::enable_if_t< typed_matrix_nestable< M >, int > = 0> | |
Matrix (M &&, const Cs &...) -> Matrix< Cs..., passable_t< M >> | |
template<typename V , std::enable_if_t< typed_matrix< V > and not euclidean_transformed< V >, int > = 0> | |
Matrix (V &&) -> Matrix< vector_space_descriptor_of_t< V, 0 >, vector_space_descriptor_of_t< V, 1 >, passable_t< nested_object_of_t< V >>> | |
Deduce template parameters from a non-Euclidean-transformed typed matrix. More... | |
template<typename V , std::enable_if_t< typed_matrix_nestable< V >, int > = 0> | |
Mean (V &&) -> Mean< Dimensions< index_dimension_of_v< V, 0 >>, passable_t< V >> | |
Deduce template parameters from a typed_matrix_nestable, assuming untyped coordinates::pattern. More... | |
template<typename StaticDescriptor , typename M , std::enable_if_t< fixed_pattern< StaticDescriptor > and typed_matrix_nestable< M > and(coordinates::dimension_of_v< StaticDescriptor >==index_dimension_of< M, 0 >::value), int > = 0> | |
auto | make_mean (M &&m) |
Make a Mean from a typed_matrix_nestable, specifying the row fixed_pattern. More... | |
template<typename M , std::enable_if_t< typed_matrix_nestable< M >, int > = 0> | |
auto | make_mean (M &&m) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename Arg , std::enable_if_t< typed_matrix< Arg > and has_untyped_index< Arg, 1 >, int > = 0> | |
auto | make_mean (Arg &&arg) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename StaticDescriptor , typename M , std::enable_if_t< fixed_pattern< StaticDescriptor > and typed_matrix_nestable< M > and(index_dimension_of< M, 0 >::value==coordinates::dimension_of_v< StaticDescriptor >), int > = 0> | |
auto | make_mean () |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename M , std::enable_if_t< typed_matrix_nestable< M >, int > = 0> | |
auto | make_mean () |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename M , std::enable_if_t< covariance_nestable< M >, int > = 0> | |
SquareRootCovariance (M &&) -> SquareRootCovariance< Dimensions< index_dimension_of_v< M, 0 >>, passable_t< M >> | |
Deduce SquareRootCovariance type from a covariance_nestable. More... | |
template<typename StaticDescriptor , typename Arg , std::enable_if_t< fixed_pattern< StaticDescriptor > and covariance_nestable< Arg > and(coordinates::dimension_of_v< StaticDescriptor >==index_dimension_of< Arg, 0 >::value), int > = 0> | |
auto | make_square_root_covariance (Arg &&arg) |
Make a SquareRootCovariance from a covariance_nestable, specifying the coefficients. More... | |
template<typename Arg , std::enable_if_t< covariance_nestable< Arg >, int > = 0> | |
auto | make_square_root_covariance (Arg &&arg) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename StaticDescriptor , TriangleType triangle_type = TriangleType::lower, typename Arg , std::enable_if_t< fixed_pattern< StaticDescriptor > and typed_matrix_nestable< Arg > and(not covariance_nestable< Arg >) and(triangle_type==TriangleType::lower or triangle_type==TriangleType::upper) and(coordinates::dimension_of_v< StaticDescriptor >==index_dimension_of< Arg, 0 >::value) and(coordinates::dimension_of_v< StaticDescriptor >==index_dimension_of< Arg, 1 >::value), int > = 0> | |
auto | make_square_root_covariance (Arg &&arg) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename StaticDescriptor , TriangleType triangle_type, typename Arg , std::enable_if_t< fixed_pattern< StaticDescriptor > and typed_matrix_nestable< Arg > and square_shaped< Arg >, int > = 0> | |
auto | make_square_root_covariance () |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename StaticDescriptor , typename Arg , std::enable_if_t<(covariance_nestable< Arg > or typed_matrix_nestable< Arg >) and square_shaped< Arg >, int > = 0> | |
auto | make_square_root_covariance () |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename Arg , std::enable_if_t<(covariance_nestable< Arg > or typed_matrix_nestable< Arg >) and square_shaped< Arg >, int > = 0> | |
auto | make_square_root_covariance () |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename Arg , std::enable_if_t< indexible< Arg >, int > = 0> | |
ToEuclideanExpr (Arg &&) -> ToEuclideanExpr< Arg > | |
Deduction guide. | |
template<typename M , std::enable_if_t< triangular_matrix< M >, int > = 0> | |
TriangularAdapter (M &&) -> TriangularAdapter< std::conditional_t< triangular_adapter< M >, nested_object_of_t< M >, M >, triangle_type_of_v< M >> | |
template<typename Arg , typename... Vs, std::enable_if_t< indexible< Arg > and pattern_collection< Descriptors > and(not internal::vector_space_adapter< Arg >), int > = 0> | |
VectorSpaceAdapter (Arg &&, Descriptors &&) -> VectorSpaceAdapter< Arg, std::decay_t< Descriptors >> | |
template<typename Arg > | |
decltype(auto) constexpr | adjoint (Arg &&arg) |
Take the adjoint of a matrix. More... | |
template<typename To , typename From , std::enable_if_t< indexible< To > and vector_space_descriptors_may_match_with< From, To >, int > = 0> | |
constexpr To && | assign (To &&a, From &&b) |
Assign a writable object from an indexible object. More... | |
template<std::size_t index, std::size_t... indices, typename Arg , std::enable_if_t< internal::has_uniform_static_vector_space_descriptors< Arg, index, indices... > and(not empty_object< Arg >), int > = 0> | |
decltype(auto) constexpr | average_reduce (Arg &&arg) |
Perform a partial reduction by taking the average along one or more indices. More... | |
template<typename Arg , std::enable_if_t< internal::has_uniform_static_vector_space_descriptors< Arg >, int > = 0> | |
constexpr scalar_type_of_t< Arg > | average_reduce (Arg &&arg) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename Arg , typename... Factors, std::enable_if_t< indexible< Arg > and(... and values::index< Factors >), int > = 0> | |
decltype(auto) constexpr | broadcast (Arg &&arg, const Factors &...factors) |
Broadcast an object by replicating it by factors specified for each index. More... | |
template<std::size_t... indices, typename Operation , typename... Args, std::enable_if_t<(indexible< Args > and ...) and(sizeof...(Args) > 0> | |
constexpr auto | chipwise_operation (const Operation &operation, Args &&...args) |
Perform a chipwise n-ary operation (n>0) on one or more indexible objects. More... | |
template<std::size_t... indices, typename Operation , typename... Is, std::enable_if_t<(values::index< Is > and ...) and(sizeof...(Is)==sizeof...(indices)), int > = 0> | |
constexpr auto | chipwise_operation (const Operation &operation, Is...is) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<TriangleType triangle_type, typename A , std::enable_if_t< hermitian_matrix< A, Applicability::permitted > and(triangle_type !=TriangleType::diagonal or diagonal_matrix< A >), int > = 0> | |
decltype(auto) constexpr | cholesky_factor (A &&a) |
Take the Cholesky factor of a matrix. More... | |
template<typename A , std::enable_if_t< hermitian_matrix< A, Applicability::permitted >, int > = 0> | |
decltype(auto) constexpr | cholesky_factor (A &&a) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename A , std::enable_if_t< triangular_matrix< A > and square_shaped< A, Applicability::permitted >, int > = 0> | |
decltype(auto) constexpr | cholesky_square (A &&a) |
Take the Cholesky square of a triangular_matrix. More... | |
template<std::size_t... indices, typename Arg , typename... Args, std::enable_if_t<(sizeof...(indices) > 0> | |
decltype(auto) constexpr | concatenate (Arg &&arg, Args &&...args) |
Concatenate some number of objects along one or more indices. More... | |
template<typename Arg , std::enable_if_t< indexible< Arg >, int > = 0> | |
decltype(auto) constexpr | conjugate (Arg &&arg) |
Take the conjugate of a matrix. More... | |
template<typename A , typename B > | |
decltype(auto) constexpr | contract (A &&a, B &&b) |
Matrix multiplication of A * B. | |
template<bool on_the_right = true, typename A , typename B > | |
constexpr A && | contract_in_place (A &&a, B &&b) |
In-place matrix multiplication of A * B, storing the result in A. More... | |
template<typename Arg > | |
constexpr auto | determinant (Arg &&arg) |
Take the determinant of a matrix. More... | |
template<typename Arg > | |
decltype(auto) constexpr | diagonal_of (Arg &&arg) |
Extract a column vector (or column slice for rank>2 tensors) comprising the diagonal elements. More... | |
template<Layout layout = Layout::right, typename Arg , typename... S, std::enable_if_t< indexible< Arg > and(values::number< S > and ...) and(layout==Layout::right or layout==Layout::left) and internal::may_hold_components< Arg, S... > and(sizeof...(S)==0 or interface::fill_components_defined_for< Arg, layout, std::add_lvalue_reference_t< Arg >, S... >), int > = 0> | |
Arg && | fill_components (Arg &&arg, S...s) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename Arg , typename V , std::enable_if_t< coordinates::euclidean_pattern< vector_space_descriptor_of_t< Arg, 0 >> and coordinates::pattern< V >, int > = 0> | |
decltype(auto) constexpr | from_euclidean (Arg &&arg, const V &v) |
Project the Euclidean vector space associated with index 0 to coordinates::pattern v after applying directional statistics. More... | |
template<std::size_t... indices, typename Arg , typename... Ixs, std::enable_if_t< indexible< Arg > and(values::index< Ixs > and ...) and(sizeof...(indices)==sizeof...(Ixs)), int > = 0> | |
decltype(auto) constexpr | get_chip (Arg &&arg, Ixs...ixs) |
Extract a sub-array having rank less than the rank of the input object. More... | |
template<typename Arg , typename Indices , std::enable_if_t< index_range_for< Indices, Arg > and(not empty_object< Arg >), int > = 0> | |
decltype(auto) constexpr | get_component (Arg &&arg, const Indices &indices) |
Get a component of an object at a particular set of indices. More... | |
template<typename Arg , typename Ix , std::enable_if_t< values::index< Ix > and(not empty_object< Arg >), int > = 0> | |
decltype(auto) constexpr | get_component (Arg &&arg, const std::initializer_list< Ix > &indices) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename Arg , typename... I, std::enable_if_t< indexible< Arg > and(... and values::index< I >) and(index_count< Arg >::value==dynamic_size or sizeof...(I) > = index_count<Arg>::value> | |
decltype(auto) constexpr | get_component (Arg &&arg, I &&...i) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<std::size_t... indices, typename Arg , typename... Offset, typename... Extent, std::enable_if_t< indexible< Arg > and(values::index< Offset > and ...) and(values::index< Extent > and ...) and(sizeof...(Offset)==sizeof...(Extent)) and internal::has_uniform_static_vector_space_descriptors< Arg, indices... > and(sizeof...(indices)==0 or sizeof...(indices)==sizeof...(Offset)), int > = 0> | |
decltype(auto) constexpr | get_slice (Arg &&arg, const std::tuple< Offset... > &offsets, const std::tuple< Extent... > &extents) |
Extract a slice from a matrix or tensor. More... | |
template<typename A , std::enable_if_t< indexible< A > and(not euclidean_transformed< A >), int > = 0> | |
decltype(auto) constexpr | LQ_decomposition (A &&a) |
Perform an LQ decomposition of matrix A=[L,0]Q, L is a lower-triangular matrix, and Q is orthogonal. More... | |
template<typename T , typename C , typename Ds , std::enable_if_t< indexible< T > and values::scalar< C > and pattern_collection< Ds >, int > = 0> | |
constexpr auto | make_constant (C &&c, Descriptors &&descriptors) |
Make a constant object based on a particular library object. More... | |
template<typename T , typename C , typename... Ds, std::enable_if_t< indexible< T > and values::scalar< C > and(coordinates::pattern< Ds > and ...), int > = 0> | |
constexpr auto | make_constant (C &&c, Ds &&...ds) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename T , typename C , std::enable_if_t< indexible< T > and values::scalar< C >, int > = 0> | |
constexpr auto | make_constant (const T &t, C &&c) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename T , typename C , auto... constant, typename Ds , std::enable_if_t< indexible< T > and values::scalar< C > and pattern_collection< Ds > and((values::fixed< C > and sizeof...(constant)==0) or std::is_constructible< C, decltype(constant)... >::value), int > = 0> | |
constexpr auto | make_constant (Ds &&ds) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename T , auto constant, typename Ds , std::enable_if_t< indexible< T > and values::number< decltype(constant)> and pattern_collection< Ds >, int > = 0> | |
constexpr auto | make_constant (Ds &&ds) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename T , typename C , auto... constant, typename... Ds, std::enable_if_t< indexible< T > and values::scalar< C > and(coordinates::pattern< Ds > and ...) and((values::fixed< C > and sizeof...(constant)==0) or std::is_constructible< C, decltype(constant)... >::value), int > = 0> | |
constexpr auto | make_constant (Ds &&...ds) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename T , auto constant, typename... Ds, std::enable_if_t< indexible< T > and values::number< decltype(constant)> and(coordinates::pattern< Ds > and ...), int > = 0> | |
constexpr auto | make_constant (Ds &&...ds) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename C , auto... constant, typename T , std::enable_if_t< values::scalar< C > and indexible< T > and((values::fixed< C > and sizeof...(constant)==0) or std::is_constructible< C, decltype(constant)... >::value), int > = 0> | |
constexpr auto | make_constant (const T &t) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<auto constant, typename T , std::enable_if_t< values::number< decltype(constant)> and indexible< T >, int > = 0> | |
constexpr auto | make_constant (const T &t) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename T , Layout layout = Layout::none, typename Scalar = scalar_type_of_t<T>, typename Descriptors , std::enable_if_t< indexible< T > and values::number< Scalar > and pattern_collection< D > and(layout !=Layout::stride) and interface::make_default_defined_for< T, layout, Scalar, decltype(internal::to_euclidean_vector_space_descriptor_collection(std::declval< Descriptors &&>()))>, int > = 0> | |
constexpr auto | make_dense_object (Descriptors &&descriptors) |
Make a default, dense, writable matrix with a set of coordinates::pattern objects defining the dimensions. More... | |
template<typename T , Layout layout = Layout::none, typename Scalar = scalar_type_of_t<T>, typename... Ds, std::enable_if_t< indexible< T > and values::number< Scalar > and(... and coordinates::pattern< Ds >) and(layout !=Layout::stride) and interface::make_default_defined_for< T, layout, Scalar, std::tuple< Ds &&... >>, int > = 0> | |
constexpr auto | make_dense_object (Ds &&...ds) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename T , Layout layout = Layout::none, typename Scalar = scalar_type_of_t<T>, typename... Ds, typename... Args, std::enable_if_t< indexible< T > and values::number< Scalar > and(coordinates::pattern< Ds > and ...) and(std::is_convertible_v< Args, const Scalar > and ...) and(layout !=Layout::stride) and(((coordinates::dimension_of< Ds >::value==0) or ...) ? sizeof...(Args)==0 :(sizeof...(Args) %((dynamic_pattern< Ds > ? 1 :coordinates::dimension_of< Ds >::value) *... *1)==0)), int > = 0> | |
auto | make_dense_object_from (const std::tuple< Ds... > &d_tup, Args...args) |
Create a dense, writable matrix from the library of which dummy type T is a member, filled with a set of scalar components. More... | |
template<typename T , Layout layout = Layout::none, typename Scalar = scalar_type_of_t<T>, typename ... Args> | |
auto | make_dense_object_from (Args...args) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename Arg , typename D0 , typename D1 > | |
constexpr auto | make_diagonal_adapter (Arg &&arg, D0 &&d0, D1 &&d1) |
Make a diagonal_matrix, specifying the first two dimensions, which may not necessarily be the same. More... | |
template<typename Arg , std::enable_if_t< indexible< Arg >, int > = 0> | |
constexpr auto | make_diagonal_adapter (Arg &&arg) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<HermitianAdapterType adapter_type = HermitianAdapterType::lower, typename Arg , std::enable_if_t< square_shaped< Arg, Applicability::permitted > and(adapter_type==HermitianAdapterType::lower or adapter_type==HermitianAdapterType::upper), int > = 0> | |
decltype(auto) constexpr | make_hermitian_matrix (Arg &&arg) |
Creates a hermitian_matrix by, if necessary, wrapping the argument in a hermitian_adapter. More... | |
template<typename T , typename Scalar = typename scalar_type_of<T>::type, typename Descriptors , std::enable_if_t< indexible< T > and values::number< Scalar > and pattern_collection< Descriptors >, int > = 0> | |
constexpr auto | make_identity_matrix_like (Descriptors &&descriptors) |
Make an identity_matrix with a particular set of coordinates::pattern objects. More... | |
template<typename T , typename Scalar = typename scalar_type_of<T>::type, typename... Ds, std::enable_if_t< indexible< T > and values::number< Scalar > and(... and coordinates::pattern< Ds >), int > = 0> | |
constexpr auto | make_identity_matrix_like (Ds &&...ds) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename Scalar , typename Arg , std::enable_if_t< values::number< Scalar > and indexible< Arg >, int > = 0> | |
constexpr auto | make_identity_matrix_like (Arg &&arg) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename Arg , std::enable_if_t< indexible< Arg >, int > = 0> | |
constexpr auto | make_identity_matrix_like (Arg &&arg) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<TriangleType t = TriangleType::lower, typename Arg , std::enable_if_t< indexible< Arg > and(t==TriangleType::lower or t==TriangleType::upper or t==TriangleType::diagonal), int > = 0> | |
decltype(auto) constexpr | make_triangular_matrix (Arg &&arg) |
Create a triangular_matrix from a general matrix. More... | |
template<typename Arg , typename Descriptors , std::enable_if_t< indexible< Arg > and pattern_collection< Descriptors > and internal::not_more_fixed_than< Arg, Descriptors > and(not internal::less_fixed_than< Arg, Descriptors >) and internal::maybe_same_shape_as_vector_space_descriptors< Arg, Descriptors >, int > = 0> | |
auto | make_vector_space_adapter (Arg &&arg, Descriptors &&descriptors) |
If necessary, wrap an object in a wrapper that adds vector space descriptors for each index. More... | |
template<typename Arg , typename... Ds> | |
auto | make_vector_space_adapter (Arg &&arg, Ds &&...ds) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename... Ds, typename Arg , std::enable_if_t< indexible< Arg > and(... and fixed_pattern< Ds >) and(not has_dynamic_dimensions< Arg >) and(sizeof...(Ds) > 0> | |
auto | make_vector_space_adapter (Arg &&arg) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename T , typename Scalar = scalar_type_of_t<T>, typename... Ds, std::enable_if_t< indexible< T > and values::number< Scalar > and pattern_collection< Descriptors >, int > = 0> | |
constexpr auto | make_zero (Descriptors &&descriptors) |
Make a zero associated with a particular library. More... | |
template<typename T , typename Scalar = scalar_type_of_t<T>, typename... Ds, std::enable_if_t< indexible< T > and values::number< Scalar > and(... and coordinates::pattern< Ds >), int > = 0> | |
constexpr auto | make_zero (Ds &&...ds) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename Scalar , typename T , std::enable_if_t< values::number< Scalar > and indexible< T >, int > = 0> | |
constexpr auto | make_zero (const T &t) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename T , std::enable_if_t< indexible< T >, int > = 0> | |
constexpr auto | make_zero (const T &t) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename... Ds, typename Operation , typename... Args, std::enable_if_t<(coordinates::pattern< Ds > and ...) and(indexible< Args > and ...) and(sizeof...(Args) > 0> | |
constexpr auto | n_ary_operation (const std::tuple< Ds... > &d_tup, Operation &&operation, Args &&...args) |
Perform a component-wise n-ary operation, using broadcasting to match the size of a pattern matrix. More... | |
template<typename Operation , typename... Args, std::enable_if_t<(indexible< Args > and ...) and(sizeof...(Args) > 0> | |
constexpr auto | n_ary_operation (Operation &&operation, Args &&...args) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename PatternMatrix , std::size_t... indices, typename... Ds, typename... Operations> | |
constexpr auto | n_ary_operation (const std::tuple< Ds... > &d_tup, const Operations &...operations) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename PatternMatrix , std::size_t... indices, typename... Ds, typename... Operations, std::enable_if_t< indexible< PatternMatrix > and(coordinates::pattern< Ds > and ...) and((fixed_pattern< typename vector_space_descriptor_of< PatternMatrix, indices >::type >) and ...) and(sizeof...(Operations)==(1 *... *index_dimension_of< PatternMatrix, indices >::value)), int > = 0> | |
constexpr auto | n_ary_operation (const Operations &...operations) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename Operation , typename Arg , std::enable_if_t< writable< Arg > and detail::n_ary_operator< Operation, index_count_v< Arg >, Arg >, int > = 0> | |
decltype(auto) constexpr | unary_operation_in_place (const Operation &operation, Arg &&arg) |
Perform a component-wise, in-place unary operation. More... | |
template<typename Arg , std::enable_if_t< has_nested_object< Arg >, int > = 0> | |
decltype(auto) constexpr | nested_object (Arg &&arg) |
Retrieve a nested object of Arg, if it exists. More... | |
template<typename A , std::enable_if_t< indexible< A >, int > = 0> | |
decltype(auto) constexpr | QR_decomposition (A &&a) |
Perform a QR decomposition of matrix A=Q[U,0], U is a upper-triangular matrix, and Q is orthogonal. More... | |
template<typename PatternMatrix , std::size_t... indices, typename random_number_generator , typename... Ds, typename... Dists> | |
constexpr auto | randomize (random_number_generator &gen, const std::tuple< Ds... > &ds_tuple, Dists &&...dists) |
Create an indexible object with random values selected from one or more random distributions. More... | |
template<typename PatternMatrix , std::size_t... indices, typename... Ds, typename... Dists> | |
constexpr auto | randomize (const std::tuple< Ds... > &d_tuple, Dists &&...dists) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename PatternMatrix , std::size_t... indices, typename random_number_generator , typename... Dists, std::enable_if_t< indexible< PatternMatrix > and(not has_dynamic_dimensions< PatternMatrix >) and(sizeof...(Dists)==(1 *... *index_dimension_of< PatternMatrix, indices >::value)) and((std::is_arithmetic_v< Dists > or detail::is_std_dist< Dists >::value) and ...), int > = 0> | |
constexpr auto | randomize (random_number_generator &gen, Dists &&...dists) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename PatternMatrix , std::size_t... indices, typename... Dists, std::enable_if_t< indexible< PatternMatrix > and(not has_dynamic_dimensions< PatternMatrix >) and(sizeof...(Dists)==(1 *... *index_dimension_of< PatternMatrix, indices >::value)) and((std::is_arithmetic_v< Dists > or detail::is_std_dist< Dists >::value) and ...), int > = 0> | |
constexpr auto | randomize (Dists &&...dists) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename A , typename U , std::enable_if_t< indexible< U > and hermitian_matrix< A, Applicability::permitted > and dimension_size_of_index_is< U, 0, index_dimension_of< A, 0 >::value, Applicability::permitted > and dimension_size_of_index_is< U, 0, index_dimension_of< A, 1 >::value, Applicability::permitted > and std::is_convertible_v< typename scalar_type_of< U >::type, const typename scalar_type_of< A >::type >, int > = 0> | |
decltype(auto) | rank_update_hermitian (A &&a, U &&u, scalar_type_of_t< A > alpha=1) |
Do a rank update on a hermitian matrix. More... | |
template<typename A , typename U , std::enable_if_t< triangular_matrix< A, TriangleType::any > and indexible< U > and dimension_size_of_index_is< U, 0, index_dimension_of< A, 0 >::value, Applicability::permitted > and dimension_size_of_index_is< U, 0, index_dimension_of< A, 1 >::value, Applicability::permitted > and std::is_convertible_v< scalar_type_of_t< U >, const scalar_type_of_t< A >>, int > = 0> | |
decltype(auto) | rank_update_triangular (A &&a, U &&u, scalar_type_of_t< A > alpha=1) |
Do a rank update on triangular matrix. More... | |
template<std::size_t index, std::size_t... indices, typename BinaryFunction , typename Arg , std::enable_if_t< internal::has_uniform_static_vector_space_descriptors< Arg, index, indices... > and std::is_invocable_r< typename scalar_type_of< Arg >::type, BinaryFunction &&, typename scalar_type_of< Arg >::type, typename scalar_type_of< Arg >::type >::value, int > = 0> | |
decltype(auto) constexpr | reduce (BinaryFunction &&b, Arg &&arg) |
Perform a partial reduction based on an associative binary function, across one or more indices. More... | |
template<typename BinaryFunction , typename Arg , std::enable_if_t< internal::has_uniform_static_vector_space_descriptors< Arg > and std::is_invocable_r< typename scalar_type_of< Arg >::type, BinaryFunction &&, typename scalar_type_of< Arg >::type, typename scalar_type_of< Arg >::type >::value, int > = 0> | |
constexpr scalar_type_of_t< Arg > | reduce (const BinaryFunction &b, const Arg &arg) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<std::size_t... indices, typename Arg , typename Chip , typename... Ixs, std::enable_if_t< writable< Arg > and indexible< Chip > and(values::index< Ixs > and ...) and(sizeof...(indices)==sizeof...(Ixs)), int > = 0> | |
constexpr Arg && | set_chip (Arg &&arg, Chip &&chip, Ixs...ixs) |
Set a sub-array having rank less than the rank of the input object. More... | |
template<typename Arg , typename Indices , std::enable_if_t< indexible< Arg > and index_range_for< Indices, Arg > and writable_by_component< Arg, Indices >, int > = 0> | |
Arg && | set_component (Arg &&arg, const scalar_type_of_t< Arg > &s, const Indices &indices) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename Arg , typename Ix , std::enable_if_t< indexible< Arg > and values::index< Ix > and writable_by_component< Arg, const std::initializer_list< Ix > &>, int > = 0> | |
Arg && | set_component (Arg &&arg, const scalar_type_of_t< Arg > &s, const std::initializer_list< Ix > &indices) |
Set a component of an object at an initializer list of indices. | |
template<typename Arg , typename... I, std::enable_if_t<(values::index< I > and ...) and writable_by_component< Arg, std::array< std::size_t, sizeof...(I)>> and(index_count< Arg >::value==dynamic_size or sizeof...(I) > = index_count<Arg>::value> | |
Arg && | set_component (Arg &&arg, const scalar_type_of_t< Arg > &s, I &&...i) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename Arg , typename Block , typename... Begin, std::enable_if_t< writable< Arg > and indexible< Block > and(values::index< Begin > and ...) and(sizeof...(Begin) > = index_count<Arg>::value> | |
constexpr Arg && | set_slice (Arg &&arg, Block &&block, const Begin &...begin) |
Assign an object to a particular slice of a matrix or tensor. More... | |
template<bool must_be_unique = false, bool must_be_exact = false, typename A , typename B > | |
constexpr auto | solve (A &&a, B &&b) |
Solve the equation AX = B for X, which may or may not be a unique solution. More... | |
template<std::size_t... indices, typename Arg , typename... Ds, std::enable_if_t< indexible< Arg > and(coordinates::pattern< Ds > and ...) and(sizeof...(indices) > 0> | |
auto | split (Arg &&arg, Ds &&...ds) |
Split a matrix or tensor into sub-parts, where the split is the same for every index. More... | |
template<std::size_t... indices, typename Arg , typename... Ds_tups, std::enable_if_t< indexible< Arg > and(sizeof...(indices) > 0> | |
auto | split (Arg &&arg, const Ds_tups &...ds_tups) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename... Ts, std::enable_if_t<(indexible< Ts > and ...) and(sizeof...(Ts) > 0> | |
decltype(auto) constexpr | sum (Ts &&...ts) |
Element-by-element sum of one or more objects. | |
template<typename... Ds, typename Block , typename... Blocks, std::enable_if_t<(coordinates::pattern< Ds > and ...) and(indexible< Block > and ... and indexible< Blocks >) and(sizeof...(Ds) > = std::max({index_count<Block>::value, index_count<Blocks>::value...})> | |
decltype(auto) constexpr | tile (const std::tuple< Ds... > &ds_tuple, Block &&block, Blocks &&...blocks) |
Create a matrix or tensor by tiling individual blocks. More... | |
template<typename T , Layout layout = Layout::none, typename Scalar = scalar_type_of_t<T>, typename Arg , std::enable_if_t< indexible< T > and(layout !=Layout::stride) and values::number< Scalar > and indexible< Arg >, int > = 0> | |
decltype(auto) constexpr | to_dense_object (Arg &&arg) |
Convert the argument to a dense, writable matrix of a particular scalar type. More... | |
template<Layout layout, typename Scalar , typename Arg , std::enable_if_t< values::number< Scalar > and indexible< Arg > and(layout !=Layout::stride), int > = 0> | |
decltype(auto) constexpr | to_dense_object (Arg &&arg) |
Convert the argument to a dense, writable matrix of a particular scalar type. More... | |
template<Layout layout = Layout::none, typename Arg , std::enable_if_t< indexible< Arg > and(layout !=Layout::stride), int > = 0> | |
decltype(auto) constexpr | to_dense_object (Arg &&arg) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename Arg , std::enable_if_t< indexible< Arg >, int > = 0> | |
decltype(auto) constexpr | to_diagonal (Arg &&arg) |
Convert an indexible object into a diagonal matrix. More... | |
template<typename Arg , std::enable_if_t< indexible< Arg >, int > = 0> | |
decltype(auto) constexpr | to_euclidean (Arg &&arg) |
Project the vector space associated with index 0 to a Euclidean space for applying directional statistics. More... | |
template<typename LibraryObject , typename Arg , std::enable_if_t< indexible< LibraryObject > and indexible< Arg >, int > = 0> | |
decltype(auto) | to_native_matrix (Arg &&arg) |
If it isn't already, convert Arg to a native object in the library associated with LibraryObject. More... | |
template<typename Arg > | |
decltype(auto) constexpr | trace (Arg &&arg) |
Take the trace of a matrix. More... | |
template<typename Arg > | |
decltype(auto) constexpr | transpose (Arg &&arg) |
Take the transpose of a matrix. More... | |
template<typename Arg , std::enable_if_t< indexible< Arg >, int > = 0> | |
decltype(auto) constexpr | wrap_angles (Arg &&arg) |
template<typename RowCoefficients , typename ColumnCoefficients = RowCoefficients, typename ... Args, std::enable_if_t<(sizeof...(Args) > 0> | |
auto | make_matrix (const Args...args) |
template<typename ... Args, std::enable_if_t<(sizeof...(Args) > 0> | |
auto | make_matrix (const Args ... args) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename Scalar , typename RowCoefficients , typename ColumnCoefficients = RowCoefficients, std::enable_if_t< values::number< Scalar > and fixed_pattern< RowCoefficients > and fixed_pattern< ColumnCoefficients >, int > = 0> | |
auto | make_matrix () |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename StaticDescriptor , typename ... Args, std::enable_if_t< fixed_pattern< StaticDescriptor > and(sizeof...(Args) > 0> | |
auto | make_mean (const Args ... args) |
template<typename ... Args, std::enable_if_t<(sizeof...(Args) > 0> | |
auto | make_mean (const Args ... args) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename Scalar , typename StaticDescriptor , std::size_t cols = 1, std::enable_if_t< values::number< Scalar > and fixed_pattern< StaticDescriptor >, int > = 0> | |
auto | make_mean () |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename StaticDescriptor , typename ... Args, std::enable_if_t<(sizeof...(Args) > 0> | |
auto | make_euclidean_mean (const Args ... args) |
template<typename ... Args, std::enable_if_t<(sizeof...(Args) > 0> | |
auto | make_euclidean_mean (const Args ... args) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename Scalar , typename StaticDescriptor , std::size_t cols = 1, std::enable_if_t< values::number< Scalar > and fixed_pattern< StaticDescriptor >, int > = 0> | |
auto | make_euclidean_mean () |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename StaticDescriptor , TriangleType triangle_type, typename ... Args, std::enable_if_t< fixed_pattern< StaticDescriptor > and(values::number< Args > and ...) and(triangle_type==TriangleType::lower or triangle_type==TriangleType::upper) and(sizeof...(Args) > 0> | |
auto | make_covariance (const Args ... args) |
template<typename StaticDescriptor , typename ... Args, std::enable_if_t< fixed_pattern< StaticDescriptor > and(values::number< Args > and ...) and(sizeof...(Args) > 0> | |
auto | make_covariance (const Args ... args) |
template<typename ... Args, std::enable_if_t<(sizeof...(Args) > 0> | |
auto | make_covariance (const Args ... args) |
template<typename StaticDescriptor , TriangleType triangle_type = TriangleType::lower, typename ... Args, std::enable_if_t< fixed_pattern< StaticDescriptor > and(values::number< Args > and ...) and(triangle_type==TriangleType::lower or triangle_type==TriangleType::upper) and(sizeof...(Args) > 0> | |
auto | make_square_root_covariance (const Args ... args) |
template<TriangleType triangle_type = TriangleType::lower, typename ... Args, std::enable_if_t<(sizeof...(Args) > 0> | |
auto | make_square_root_covariance (const Args ... args) |
template<typename ... Args, std::enable_if_t<(sizeof...(Args) > 0> | |
Matrix (const Args ...) -> Matrix< Dimensions< sizeof...(Args)>, Axis, Eigen3::eigen_matrix_t< std::common_type_t< Args... >, sizeof...(Args), 1 >> | |
template<typename ... Args, std::enable_if_t<(sizeof...(Args) > 0> | |
Mean (const Args ...) -> Mean< Dimensions< sizeof...(Args)>, Eigen3::eigen_matrix_t< std::common_type_t< Args... >, sizeof...(Args), 1 >> | |
If the arguments are a sequence of scalars, deduce a single-column mean with all Axis coefficients. | |
template<typename ... Args, std::enable_if_t<(sizeof...(Args) > 0> | |
EuclideanMean (const Args ...) -> EuclideanMean< OpenKalman::Dimensions< sizeof...(Args)>, Eigen3::eigen_matrix_t< std::common_type_t< Args... >, sizeof...(Args), 1 >> | |
If the arguments are a sequence of scalars, construct a single-column Euclidean mean. | |
template<typename ... Args, std::enable_if_t<(values::number< Args > and ...) and(sizeof...(Args) > 0> | |
Covariance (const Args &...) -> Covariance< Dimensions< static_cast< std::size_t >(values::sqrt(sizeof...(Args)))>, HermitianAdapter< Eigen3::eigen_matrix_t< std::common_type_t< Args... >, static_cast< std::size_t >(values::sqrt(sizeof...(Args))), static_cast< std::size_t >(values::sqrt(sizeof...(Args)))>>> | |
If the arguments are a sequence of scalars, derive a square, self-adjoint matrix. | |
template<typename ... Args, std::enable_if_t<(values::number< Args > and ...) and(sizeof...(Args) > 0> | |
SquareRootCovariance (const Args &...) -> SquareRootCovariance< Dimensions< static_cast< std::size_t >(values::sqrt(sizeof...(Args)))>, TriangularAdapter< Eigen3::eigen_matrix_t< std::common_type_t< Args... >, static_cast< std::size_t >(values::sqrt(sizeof...(Args))), static_cast< std::size_t >(values::sqrt(sizeof...(Args)))>>> | |
If the arguments are a sequence of scalars, derive a square, lower triangular matrix. | |
template<typename T , std::enable_if_t< indexible< T > and interface::get_vector_space_descriptor_defined_for< T >, int > = 0> | |
decltype(auto) constexpr | all_vector_space_descriptors (const T &t) |
Return a collection of coordinates::pattern objects associated with T. More... | |
template<typename T , std::enable_if_t< indexible< T > and(index_count< T >::value !=dynamic_size) and(not has_dynamic_dimensions< T >), int > = 0> | |
constexpr auto | all_vector_space_descriptors () |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename T , std::enable_if_t< interface::count_indices_defined_for< T >, int > = 0> | |
constexpr auto | count_indices (const T &t) |
Get the number of indices available to address the components of an indexible object. More... | |
template<typename T , typename N = std::integral_constant<std::size_t, 0>, std::enable_if_t< coordinates::pattern< decltype(get_vector_space_descriptor(std::declval< T >(), std::declval< N >()))>, int > = 0> | |
constexpr auto | get_index_dimension_of (const T &t, N n=N{}) |
Get the runtime dimensions of index N of indexible T. | |
template<std::size_t N, typename T , std::enable_if_t< coordinates::pattern< decltype(get_vector_space_descriptor< N >(std::declval< T >()))>, int > = 0> | |
constexpr auto | get_index_dimension_of (const T &t) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
template<typename T , typename N , std::enable_if_t< values::index< N > and(interface::get_vector_space_descriptor_defined_for< T > or detail::count_is_zero< T >::value), int > = 0> | |
constexpr auto | get_vector_space_descriptor (const T &t, const N &n) |
Get the coordinates::pattern object for index N of indexible object T. | |
template<std::size_t N = 0, typename T , std::enable_if_t<(interface::get_vector_space_descriptor_defined_for< T > or detail::count_is_zero< T >::value), int > = 0> | |
constexpr auto | get_vector_space_descriptor (const T &t) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename T , std::enable_if_t< interface::count_indices_defined_for< T >, int > = 0> | |
constexpr bool | get_wrappable (const T &t) |
Determine whether T is wrappable (i.e., all its dimensions other than potentially 0 are euclidean). More... | |
template<typename T , std::enable_if_t< interface::count_indices_defined_for< T >, int > = 0> | |
constexpr bool | is_one_dimensional (const T &t) |
Return true if T is a one_dimensional at runtime. More... | |
template<typename T , std::enable_if_t< interface::count_indices_defined_for< T >, int > = 0> | |
constexpr auto | is_square_shaped (const T &t) |
Determine whether an object is square_shaped at runtime. More... | |
template<std::size_t N = 0, typename T , std::enable_if_t< interface::count_indices_defined_for< T >, int > = 0> | |
constexpr bool | is_vector (const T &t) |
Return true if T is a vector at runtime. More... | |
template<typename T , std::enable_if_t< interface::count_indices_defined_for< T > and interface::get_vector_space_descriptor_defined_for< T >, int > = 0> | |
constexpr auto | tensor_order (const T &t) |
Return the tensor order of T (i.e., the number of indices of dimension greater than 1). More... | |
template<typename... Ts, std::enable_if_t<(interface::count_indices_defined_for< Ts > and ...), int > = 0> | |
constexpr bool | vector_space_descriptors_match (const Ts &...ts) |
Return true if every set of coordinates::pattern of a set of objects match. More... | |
template<typename OutputCoefficients , typename In , typename ... Perturbations> | |
auto | zero_hessian () |
A tuple of zero-filled arrays of Hessian matrices, based on the input and each perturbation term. | |
template<typename OutputCoefficients , typename In , typename ... Perturbations> | |
auto | zero_hessian (In &&, Perturbations &&...) |
A tuple of zero-filled arrays of Hessian matrices, based on the input and each perturbation term. | |
template<typename Function , typename InDelta , typename ... PsDelta> | |
FiniteDifferenceLinearization (Function &&, InDelta &&, PsDelta &&...) -> FiniteDifferenceLinearization< std::decay_t< Function >, std::decay_t< InDelta >, std::decay_t< PsDelta >... > | |
template<typename T , typename ... Ps> | |
LinearTransformation (T &&, Ps &&...) -> LinearTransformation< vector_space_descriptor_of_t< T, 1 >, vector_space_descriptor_of_t< T, 0 >, equivalent_self_contained_t< nested_object_of_t< T >>, equivalent_self_contained_t< std::conditional_t< typed_matrix< Ps >, nested_object_of_t< Ps >, Ps >>... > | |
template<typename Function , typename ... TaylorDerivatives> | |
Transformation (Function &&, TaylorDerivatives &&...) -> Transformation< std::decay_t< Function >, std::decay_t< TaylorDerivatives > ... > | |
template<typename Function , std::enable_if_t< linearized_function< Function, 0 > and(not linearized_function< Function, 1 >), int > = 0> | |
Transformation (Function &&) -> Transformation< std::decay_t< Function >> | |
Variables | |
template<typename I > | |
constexpr bool | indirectly_readable = detail::is_indirectly_readable<remove_cvref_t<I>>::value |
template<typename Out , typename T > | |
constexpr bool | indirectly_writable = detail::is_indirectly_readable<Out, T>::value |
template<typename I > | |
constexpr bool | weakly_incrementable = detail::is_weakly_incrementable<I>::value |
template<typename I > | |
constexpr bool | input_or_output_iterator = detail::is_input_or_output_iterator<I>::value and weakly_incrementable<I> |
template<typename I > | |
constexpr bool | input_iterator |
template<typename I , typename T > | |
constexpr bool | output_iterator |
template<typename I > | |
constexpr bool | incrementable |
template<typename I > | |
constexpr bool | forward_iterator |
template<typename I > | |
constexpr bool | bidirectional_iterator |
template<typename I > | |
constexpr bool | random_access_iterator |
template<typename S , typename I > | |
constexpr bool | sentinel_for |
template<typename S , typename I > | |
constexpr bool | sized_sentinel_for |
constexpr unreachable_sentinel_t | unreachable_sentinel {} |
template<typename T > | |
constexpr bool | is_bounded_array_v = is_bounded_array<T>::value |
template<typename T , typename... Args> | |
constexpr bool | destructible = std::is_nothrow_destructible_v<T> |
template<typename T , typename... Args> | |
constexpr bool | constructible_from = destructible<T> and std::is_constructible_v<T, Args...> |
template<typename From , typename To > | |
constexpr bool | convertible_to = std::is_convertible_v<From, To> and detail::convertible_to_impl<From, To>::value |
template<typename T > | |
constexpr bool | move_constructible = constructible_from<T, T> and convertible_to<T, T> |
template<typename T > | |
constexpr bool | copy_constructible |
template<typename T > | |
constexpr bool | movable |
template<typename T > | |
constexpr bool | copyable |
template<typename T > | |
constexpr bool | semiregular = copyable<T> and std::is_default_constructible_v<T> |
constexpr std::size_t | dynamic_size = std::numeric_limits<std::size_t>::max() |
A constant indicating that a size or index is dynamic. More... | |
constexpr std::ptrdiff_t | dynamic_difference = std::numeric_limits<std::ptrdiff_t>::max() |
A constant indicating that a difference in sizes or indices is dynamic. More... | |
template<typename T > | |
constexpr bool | constant_adapter = detail::is_constant_adapter<std::decay_t<T>>::value |
Specifies that T is a ConstantAdapter. | |
template<typename T > | |
constexpr bool | from_euclidean_expr = detail::is_from_euclidean_expr<std::decay_t<T>>::value |
Specifies that T is an expression converting coefficients from Euclidean space (i.e., FromEuclideanExpr). | |
template<typename T > | |
constexpr bool | to_euclidean_expr = detail::is_to_euclidean_expr<std::decay_t<T>>::value |
Specifies that T is an expression converting coefficients to Euclidean space (i.e., ToEuclideanExpr). | |
template<typename T > | |
constexpr bool | euclidean_expr = from_euclidean_expr<T> or to_euclidean_expr<T> |
Specifies that T is either to_euclidean_expr or from_euclidean_expr. | |
template<typename T > | |
constexpr bool | all_fixed_indices_are_euclidean |
Specifies that every fixed-size index of T is euclidean. More... | |
template<typename T , typename D > | |
constexpr bool | compatible_with_vector_space_descriptor_collection |
indexible T is compatible with pattern_collection D. More... | |
template<typename T > | |
constexpr bool | constant_diagonal_matrix |
Specifies that all diagonal elements of a diagonal object are the same constant value. More... | |
template<typename T > | |
constexpr bool | constant_matrix |
Specifies that all components of an object are the same constant value. More... | |
template<typename T , std::size_t N = 0> | |
constexpr bool | diagonal_adapter = internal::is_explicitly_triangular<T, TriangleType::diagonal>::value and detail::nested_is_vector<T, N>::value |
Specifies that a type is a diagonal matrix adapter. More... | |
template<typename T > | |
constexpr bool | diagonal_matrix |
Specifies that a type is a diagonal matrix or tensor. More... | |
template<typename T , std::size_t index, std::size_t value, Applicability b = Applicability::guaranteed> | |
constexpr bool | dimension_size_of_index_is |
Specifies that a given index of T has a specified size. More... | |
template<typename T > | |
constexpr bool | directly_accessible |
The underlying raw data for T is directly accessible. More... | |
template<typename T , std::size_t N> | |
constexpr bool | dynamic_dimension = detail::is_dynamic_dimension<T, N>::value |
Specifies that T's index N has a dimension defined at run time. More... | |
template<typename T , std::size_t N> | |
constexpr bool | element_gettable |
Specifies that a type has components addressable by N indices. More... | |
template<typename T , Applicability b = Applicability::guaranteed> | |
constexpr bool | empty_object |
Specifies that an object is empty (i.e., at least one index is zero-dimensional). More... | |
template<typename T > | |
constexpr bool | has_dynamic_dimensions |
Specifies that T has at least one index with dynamic dimensions. More... | |
template<typename T > | |
constexpr bool | has_nested_object |
A matrix that has a nested matrix, if it is a wrapper type. More... | |
template<typename T , std::size_t N> | |
constexpr bool | has_untyped_index |
Specifies that T has an untyped index N. More... | |
template<typename T , HermitianAdapterType t = HermitianAdapterType::any> | |
constexpr bool | hermitian_adapter |
Specifies that a type is a hermitian matrix adapter of a particular type. More... | |
template<typename T , Applicability b = Applicability::guaranteed> | |
constexpr bool | hermitian_matrix |
Specifies that a type is a hermitian matrix (assuming it is square_shaped). More... | |
template<typename T > | |
constexpr bool | identity_matrix |
Specifies that a type is an identity matrix. More... | |
template<typename Indices , typename T > | |
constexpr bool | index_range_for |
Indices is a std::ranges::sized_range of indices that are compatible with indexible object T. More... | |
template<typename T > | |
constexpr bool | indexible |
T is a generalized tensor type. More... | |
template<typename T > | |
constexpr bool | mean = internal::is_mean<std::decay_t<T>>::value |
Specifies that T is a mean (i.e., is a specialization of the class Mean). | |
template<typename T > | |
constexpr bool | wrapped_mean |
Specifies that T is a wrapped mean (i.e., its row fixed_pattern have at least one type that requires wrapping). More... | |
template<typename T > | |
constexpr bool | euclidean_mean = internal::is_euclidean_mean<std::decay_t<T>>::value |
Specifies that T is a Euclidean mean (i.e., is a specialization of the class EuclideanMean). | |
template<typename T > | |
constexpr bool | euclidean_transformed |
Specifies that T is a Euclidean mean that actually has coefficients that are transformed to Euclidean space. More... | |
template<typename T > | |
constexpr bool | typed_matrix = mean<T> or euclidean_mean<T> or internal::is_matrix<std::decay_t<T>>::value |
Specifies that T is a typed matrix (i.e., is a specialization of Matrix, Mean, or EuclideanMean). | |
template<typename T > | |
constexpr bool | self_adjoint_covariance = internal::is_self_adjoint_covariance<std::decay_t<T>>::value |
T is a self-adjoint covariance matrix (i.e., a specialization of Covariance). | |
template<typename T > | |
constexpr bool | triangular_covariance = internal::is_triangular_covariance<std::decay_t<T>>::value |
T is a square root (Cholesky) covariance matrix (i.e., a specialization of SquareRootCovariance). | |
template<typename T > | |
constexpr bool | covariance = self_adjoint_covariance<T> or triangular_covariance<T> |
T is a specialization of either Covariance or SquareRootCovariance. | |
template<typename T > | |
constexpr bool | gaussian_distribution = internal::is_gaussian_distribution<std::decay_t<T>>::value |
T is a Gaussian distribution. | |
template<typename T > | |
constexpr bool | distribution = gaussian_distribution<T> |
T is a statistical distribution of any kind that is defined in OpenKalman. | |
template<typename T > | |
constexpr bool | cholesky_form = detail::is_cholesky_form<std::decay_t<T>>::value |
Specifies that a type has a nested native matrix that is a Cholesky square root. More... | |
template<typename T > | |
constexpr bool | covariance_nestable |
T is an acceptable nested matrix for a covariance (including triangular_covariance). More... | |
template<typename T > | |
constexpr bool | typed_matrix_nestable |
Specifies a type that is nestable in a general typed matrix (e.g., matrix, mean, or euclidean_mean) More... | |
template<typename T , Applicability b = Applicability::guaranteed> | |
constexpr bool | one_dimensional |
Specifies that a type is one-dimensional in every index. More... | |
template<typename T , Applicability b = Applicability::guaranteed> | |
constexpr bool | square_shaped |
Specifies that an object is square (i.e., has equivalent coordinates::pattern along each dimension). More... | |
template<typename T > | |
constexpr bool | triangular_adapter |
Specifies that a type is a triangular adapter of triangle type triangle_type. More... | |
template<typename T , TriangleType t = TriangleType::any> | |
constexpr bool | triangular_matrix = internal::is_explicitly_triangular<T, t>::value or constant_diagonal_matrix<T> |
Specifies that a type is a triangular matrix (upper, lower, or diagonal). More... | |
template<typename T > | |
constexpr bool | typed_adapter |
Specifies that T is a typed adapter expression. More... | |
template<typename T > | |
constexpr bool | untyped_adapter |
Specifies that T is an untyped adapter expression. More... | |
template<typename T , std::size_t N = 0, Applicability b = Applicability::guaranteed> | |
constexpr bool | vector |
T is a vector (e.g., column or row vector). More... | |
template<typename... Ts> | |
constexpr bool | vector_space_descriptors_match_with |
Specifies that a set of indexible objects have equivalent vector space descriptors for each index. More... | |
template<typename... Ts> | |
constexpr bool | vector_space_descriptors_may_match_with |
Specifies that indexible objects Ts may have equivalent dimensions and vector-space types. More... | |
template<typename T > | |
constexpr bool | wrappable = detail::is_wrappable<T>::value |
Specifies that every fixed-size index of T (other than potentially index 0) is euclidean. More... | |
template<typename T > | |
constexpr bool | writable |
template<typename T , typename Indices = std::conditional_t<index_count_v<T> == dynamic_size, std::vector<std::size_t>, std::array<std::size_t, index_count_v<T>>>> | |
constexpr bool | writable_by_component |
Specifies that a type has components that can be set with Indices (an std::ranges::input_range) of type std::size_t. More... | |
template<typename T > | |
constexpr bool | zero = detail::is_zero<T>::value |
Specifies that a type is known at compile time to be a constant matrix of value zero. | |
template<typename T , typename C > | |
constexpr bool | equivalent_to_uniform_static_vector_space_descriptor_component_of = detail::equivalent_to_uniform_static_vector_space_descriptor_component_of_impl<T, C>::value |
T is equivalent to the uniform dimension type of C. More... | |
template<typename T , typename... Ts> | |
constexpr auto | hermitian_adapter_type_of_v = hermitian_adapter_type_of<T, Ts...>::value |
The TriangleType associated with the storage triangle of a hermitian_matrix. More... | |
template<typename T , typename... Ts> | |
constexpr auto | triangle_type_of_v = triangle_type_of<T, Ts...>::value |
The TriangleType associated with a triangular_matrix. | |
template<typename T , std::size_t order = 1> | |
constexpr bool | linearized_function |
A linearized function (with defined Jacobian and optionally Hessian functions). More... | |
template<typename T , typename Coeffs = typename oin::PerturbationTraits<T>::RowCoefficients> | |
constexpr bool | transformation_input |
T is an acceptable input to a tests. More... | |
template<typename T , typename Coeffs = typename oin::PerturbationTraits<T>::RowCoefficients> | |
constexpr bool | perturbation = OpenKalman::detail::is_perturbation<T, Coeffs>::value |
The root namespace for OpenKalman.
The namespace for all OpenKalman-specific classes and methods.
using OpenKalman::dense_writable_matrix_t = typedef std::decay_t<decltype(make_dense_object<T, layout, S>(std::declval<D>()))> |
An alias for a dense, writable matrix, patterned on parameter T.
T | A matrix or array from the relevant matrix library. |
S | A scalar type (may or may not be scalar_type_of_t<T>. |
layout | The /ref Layout of the result. |
D | A pattern_collection defining the new object. This will be derived from T if omitted. |
using OpenKalman::nested_object_of_t = typedef typename nested_object_of<T>::type |
Helper type for nested_object_of.
T | A wrapper type that has a nested matrix. |
i | Index of the dependency (0 by default) |
using OpenKalman::ZeroAdapter = typedef ConstantAdapter<PatternObject, Scalar, 0> |
A ConstantAdapter in which all elements are 0.
PatternObject | An indexible object, in some library, defining the shape of the resulting zero object |
|
strong |
The applicability of a concept, trait, or restraint.
Determines whether something is necessarily applicable, or alternatively just permissible, at compile time. Examples:
square_shaped<T, Applicability::guaranteed>
means that T is known at compile time to be square shaped.square_shaped<T, Applicability::permitted>
means that T could be square shaped, but whether it actually is cannot be determined at compile time.
|
strong |
The type of a hermitian adapter, indicating which triangle of the nested matrix is used.
This type can be statically cast from TriangleType so that lower
, upper
, and any
correspond to each other. The value none
corresponds to TriangleType::diagonal.
Enumerator | |
---|---|
any | Either lower or upper hermitian adapter. |
lower | A lower-left hermitian adapter. |
upper | An upper-right hermitian adapter. |
|
strong |
The layout format of a multidimensional array.
|
strong |
The type of a triangular matrix.
This is generally applicable to a rank-2 tensor (e.g., a matrix). It also applies to tensors of rank > 2, in which case every rank-2 slice over dimensions 0 and 1 must be a triangle of this type.
decltype(auto) constexpr OpenKalman::adjoint | ( | Arg && | arg | ) |
Take the adjoint of a matrix.
Arg | The matrix |
decltype(auto) constexpr OpenKalman::all_vector_space_descriptors | ( | const T & | t | ) |
Return a collection of coordinates::pattern objects associated with T.
This will be a pattern_collection in the form of a std::tuple or a std::vector.
constexpr auto OpenKalman::all_vector_space_descriptors | ( | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Return a collection of fixed_pattern objects associated with T.
This overload is only enabled if all vector space descriptors are static.
constexpr To&& OpenKalman::assign | ( | To && | a, |
From && | b | ||
) |
Assign a writable object from an indexible object.
To | The writable object to be assigned. |
From | The indexible object from which to assign. |
decltype(auto) constexpr OpenKalman::average_reduce | ( | Arg && | arg | ) |
Perform a partial reduction by taking the average along one or more indices.
index | an index to be reduced. For example, if the index is 0, the result will have only one row. If the index is 1, the result will have only one column. |
indices | Other indices to be reduced. Because the binary function is associative, the order of the indices does not matter. |
constexpr scalar_type_of_t<Arg> OpenKalman::average_reduce | ( | Arg && | arg | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Perform a complete reduction by taking the average along all indices and returning a scalar value.
decltype(auto) constexpr OpenKalman::broadcast | ( | Arg && | arg, |
const Factors &... | factors | ||
) |
Broadcast an object by replicating it by factors specified for each index.
The operation may increase the order of the object by specifying factors greater than 1 for higher indices. Any such higher indices will have a coordinates::pattern of Dimensions<n>
where
n
is the factor.
Arg | The object. |
Factors | A set of factors, each an values::index, indicating the increase in size of each index. Any omitted trailing factors are treated as factor 1 (no broadcasting along that index). |
constexpr auto OpenKalman::chipwise_operation | ( | const Operation & | operation, |
Args &&... | args | ||
) |
Perform a chipwise n-ary operation (n>0) on one or more indexible objects.
Given an indexible object of order k, a "chip" is a subset of that object, having order in the range (0, k]. This function takes same-size chips from each of the arguments and performs an operation returning a chip (of the same size), for every possible chip within the result.
indices | The one-dimensional indices of the chip (optionally excluding any trailing 1D indices). If omitted, the order of the chip is the same as that of the highest-order indexible argument. Note: the list of indices must be non-repeating, or a compile-time assertion will fail. |
Operation | An n-ary operation (unary, binary, etc.) on n chips of the same size. In addition to taking one or more chips as arguments, the operation may optionally take sizeof...(indices) indices (in the same order as indices ). |
Args | The arguments, which must be the same size. |
constexpr auto OpenKalman::chipwise_operation | ( | const Operation & | operation, |
Is... | is | ||
) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Perform a chipwise nullary operation.
The nullary operation returns a chip, and that chip is replicated along the specified indices
a number of times indicated by Is
.
Operation | A nullary operation. The operation may optionally take, as arguments, sizeof...(indices) indices (in the same order as indices ). |
Is | Number of dimensions corresponding to each of indices... . |
decltype(auto) constexpr OpenKalman::cholesky_factor | ( | A && | a | ) |
Take the Cholesky factor of a matrix.
A | A hermitian matrix. |
triangle_type | Either TriangleType::upper, TriangleType::lower, or TriangleType::diagonal (only if A is a diagonal_matrix). |
decltype(auto) constexpr OpenKalman::cholesky_factor | ( | A && | a | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
This overload does not require specifying the TriangleType, which is either
decltype(auto) constexpr OpenKalman::cholesky_square | ( | A && | a | ) |
Take the Cholesky square of a triangular_matrix.
A | A square matrix. |
decltype(auto) constexpr OpenKalman::concatenate | ( | Arg && | arg, |
Args &&... | args | ||
) |
Concatenate some number of objects along one or more indices.
indices | The indices along which the concatenation occurs. For example,
|
Arg | First object to be concatenated |
Args | Other objects to be concatenated |
decltype(auto) constexpr OpenKalman::conjugate | ( | Arg && | arg | ) |
Take the conjugate of a matrix.
Arg | The matrix |
constexpr A&& OpenKalman::contract_in_place | ( | A && | a, |
B && | b | ||
) |
In-place matrix multiplication of A * B, storing the result in A.
on_the_right | Whether the application is on the right (true) or on the left (false) |
constexpr auto OpenKalman::count_indices | ( | const T & | t | ) |
Get the number of indices available to address the components of an indexible object.
|
explicit |
Deduce Covariance type from a covariance_nestable.
Deduce Covariance type from a square typed_matrix_nestable.
Deduce Covariance type from a square typed_matrix.
constexpr auto OpenKalman::determinant | ( | Arg && | arg | ) |
Take the determinant of a matrix.
Arg | A square matrix |
decltype(auto) constexpr OpenKalman::diagonal_of | ( | Arg && | arg | ) |
Extract a column vector (or column slice for rank>2 tensors) comprising the diagonal elements.
Arg | An indexible object, which can have any rank and may or may not be square |
|
explicit |
Deduce template parameters from a non-Euclidean-transformed typed matrix.
Deduce template parameters from a typed_matrix_nestable, assuming axis-only coefficients.
Deduce template parameters from a Euclidean-transformed typed matrix.
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Fill the components of an object from a list of scalar values.
The scalar components are listed in the specified layout order, as follows:
layout | The Layout of Args and the resulting object (Layout::right if unspecified). |
arg | The object to be modified. |
s | Scalar values to fill the new matrix. |
decltype(auto) constexpr OpenKalman::from_euclidean | ( | Arg && | arg, |
const V & | v | ||
) |
Project the Euclidean vector space associated with index 0 to coordinates::pattern v after applying directional statistics.
Arg | A matrix or tensor. |
V | The new coordinate_list of index 0. |
decltype(auto) constexpr OpenKalman::get_chip | ( | Arg && | arg, |
Ixs... | ixs | ||
) |
Extract a sub-array having rank less than the rank of the input object.
A chip is a special type of "thin" slice of width 1 in one or more dimensions, and otherwise no reduction in extents. For example, the result could be a row vector, a column vector, a matrix (e.g., if the input object is a rank-3 or higher tensor), etc.
indices | The index or indices of the dimension(s) to be collapsed to a single dimension. For example, if the input object is a matrix, a value of {0} will result in a row vector, a value of {1} will result in a column vector, and a value of {0, 1} will result in a one-dimensional vector. If the input object is a rank-3 tensor, a value of {1, 2} will result in a row vector. If no indices are listed, the argument will be returned unchanged. |
ixs | The index value corresponding to each of the indices , in the same order. The values may be positive std::integral types or a positive std::integral_constant. |
decltype(auto) constexpr OpenKalman::get_component | ( | Arg && | arg, |
const Indices & | indices | ||
) |
Get a component of an object at a particular set of indices.
Arg | The object to be accessed. |
Indices | A sized input range containing the indices. |
decltype(auto) constexpr OpenKalman::get_component | ( | Arg && | arg, |
const std::initializer_list< Ix > & | indices | ||
) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Get a component of an object at an initializer list of indices.
decltype(auto) constexpr OpenKalman::get_component | ( | Arg && | arg, |
I &&... | i | ||
) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Get a component of an object using a fixed number of indices.
The number of indices must be at least index_count_v<Arg>
. If the indices are integral constants, the function performs compile-time bounds checking to the extent possible.
decltype(auto) constexpr OpenKalman::get_slice | ( | Arg && | arg, |
const std::tuple< Offset... > & | offsets, | ||
const std::tuple< Extent... > & | extents | ||
) |
Extract a slice from a matrix or tensor.
If indices are specified, only those indices will be subsetted. Otherwise, the Offset and Extent parameters are taken in index order. Any omitting trailing indices (for which there are no Offset or Extent parameters) are included whole.
indices | The index or indices of the particular dimensions to be specified, in any order (optional). If this is omitted, the Offset and Extent parameters proceed in index order. |
arg | The indexible object from which a slice is to be taken. |
offsets | A tuple corresponding to each of indices, each element specifying the offsetning values::index. If indices are not specified, the tuple proceeds in normal index order. |
extents | A tuple corresponding to each of indices, each element specifying the dimensions of the extracted block. If indices are not specified, the tuple proceeds in normal index order. |
constexpr auto OpenKalman::get_vector_space_descriptor | ( | const T & | t | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
N | An index value known at compile time. |
constexpr bool OpenKalman::get_wrappable | ( | const T & | t | ) |
|
inline |
Scale a covariance by the inverse of a scalar factor.
Equivalent by division by the square of a scalar. For a square root covariance, this is equivalent to division by the scalar.
constexpr bool OpenKalman::is_one_dimensional | ( | const T & | t | ) |
Return true if T is a one_dimensional at runtime.
Each index also must have an equivalent coordinates::pattern object.
T | A tensor or matrix |
constexpr auto OpenKalman::is_square_shaped | ( | const T & | t | ) |
Determine whether an object is square_shaped at runtime.
An object is square-shaped if it has the same size and coordinates::pattern type along every index (excluding trailing 1D indices).
T | A tensor or matrix |
bool
: if true, then T is square. constexpr bool OpenKalman::is_vector | ( | const T & | t | ) |
decltype(auto) constexpr OpenKalman::LQ_decomposition | ( | A && | a | ) |
Perform an LQ decomposition of matrix A=[L,0]Q, L is a lower-triangular matrix, and Q is orthogonal.
A | The matrix to be decomposed satisfying triangular_matrix<A, TriangleType::lower> |
constexpr auto OpenKalman::make_constant | ( | C && | c, |
Descriptors && | descriptors | ||
) |
Make a constant object based on a particular library object.
A constant object is a matrix or tensor in which every component is the same scalar value.
T | An object (matrix or tensor) from a particular library. Its shape and contents are irrelevant. |
C | A values::scalar |
Descriptors | A pattern_collection defining the dimensions of each index. |
constexpr auto OpenKalman::make_constant | ( | C && | c, |
Ds &&... | ds | ||
) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
vector_space_descriptors are specified as arguments.
constexpr auto OpenKalman::make_constant | ( | const T & | t, |
C && | c | ||
) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Make a new constant object based on a library object.
T | The object on which the new matrix is patterned. This need not itself be constant, as only its dimensions are used. |
C | A values::scalar. |
constexpr auto OpenKalman::make_constant | ( | Ds && | ds | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Make a compile-time constant based on a particular library object and a scalar constant value known at compile time
T | A matrix or tensor from a particular library. |
C | A values::scalar for the new zero matrix. Must be constructible from {constant...} |
constant | A constant or set of coefficients in a vector space defining a constant (e.g., real and imaginary parts of a complex number). |
Ds | A pattern_collection defining the dimensions of each index. |
constexpr auto OpenKalman::make_constant | ( | Ds && | ds | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Same as above, except that the scalar type is derived from the constant template parameter
constant | The constant |
constexpr auto OpenKalman::make_constant | ( | Ds &&... | ds | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Make a compile-time constant based on a particular library object and a scalar constant value known at compile time
T | A matrix or tensor from a particular library. |
C | A values::scalar for the new zero matrix. Must be constructible from {constant...} |
constant | A constant or set of coefficients in a vector space defining a constant (e.g., real and imaginary parts of a complex number). |
Ds | A set of coordinates::pattern defining the dimensions of each index. |
constexpr auto OpenKalman::make_constant | ( | Ds &&... | ds | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Same as above, except that the scalar type is derived from the constant template parameter
constant | The constant |
constexpr auto OpenKalman::make_constant | ( | const T & | t | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Construct a constant object, where the shape of the new object is derived from t.
constexpr auto OpenKalman::make_constant | ( | const T & | t | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Same as above, except that the scalar type is derived from the constant template parameter
|
inline |
Make a Covariance from a covariance_nestable, specifying the fixed_pattern.
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
StaticDescriptor | The coefficient types corresponding to the rows and columns. |
Arg | A covariance_nestable with size matching StaticDescriptor. |
Make a Covariance from a self-adjoint typed_matrix_nestable, specifying the coefficients.
StaticDescriptor | The coefficient types corresponding to the rows and columns. |
Arg | A square typed_matrix_nestable with size matching StaticDescriptor. |
Make a default Axis Covariance (with nested triangular matrix) from a self-adjoint typed_matrix_nestable.
TriangleType | The type of the nested triangular matrix (upper, lower). |
Arg | A square, self-adjoint typed_matrix_nestable. |
Make a Covariance, with a nested triangular matrix, from a typed_matrix.
|
inline |
Make a Covariance from a covariance_nestable, specifying the fixed_pattern.
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
StaticDescriptor | The coefficient types corresponding to the rows and columns. |
TriangleType | The type of the nested triangular matrix (upper, lower, diagonal). |
Arg | A covariance_nestable with size matching StaticDescriptor. |
Make a Covariance (with nested triangular matrix) from a self-adjoint typed_matrix_nestable.
StaticDescriptor | The coefficient types corresponding to the rows and columns. |
TriangleType | The type of the nested triangular matrix (upper, lower). |
Arg | A square, self-adjoint typed_matrix_nestable with size matching StaticDescriptor. |
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Make a Covariance from a covariance_nestable, with default Axis coefficients.
StaticDescriptor | The coefficient types corresponding to the rows and columns. |
Arg | A covariance_nestable. |
Make a Covariance from a self-adjoint typed_matrix_nestable, using default Axis coefficients.
Arg | A square typed_matrix_nestable. |
Make a Covariance based on another non-square-root covariance.
Make a Covariance from a typed_matrix.
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
For Eigen3: Make a writable, uninitialized Covariance, specifying the fixed_pattern.
For Eigen3: Make a writable, uninitialized Covariance with nested triangular matrix.
For Eigen3: Make a Covariance from a list of coefficients, with default Axis coefficients.
For Eigen3: Make a default Axis Covariance, with nested triangular type, from a list of coefficients.
For Eigen3: Make a Covariance from a list of coefficients, specifying the coefficients.
For Eigen3: Make a Covariance, with nested triangular type, from a list of coefficients.
Make a writable, uninitialized Covariance from a covariance_nestable or typed_matrix_nestable.
Make a writable, uninitialized Covariance based on a nested triangle, with default Axis coefficients.
Make a writable, uninitialized Covariance, with nested triangular type based on a typed_matrix.
StaticDescriptor | The coefficient types corresponding to the rows and columns. |
TriangleType | The type of the nested triangular matrix (upper, lower). |
Args | A list of numerical coefficients (either integral or floating-point). The number of coefficients must equal coordinates::dimension_of_v<StaticDescriptor> * coordinates::dimension_of_v<StaticDescriptor>. |
StaticDescriptor | The coefficient types corresponding to the rows and columns. |
Args | A list of numerical coefficients (either integral or floating-point). The number of coefficients must equal coordinates::dimension_of_v<StaticDescriptor> * coordinates::dimension_of_v<StaticDescriptor>. |
TriangleType | The type of the nested triangular matrix (upper, lower). |
Args | A list of numerical coefficients (either integral or floating-point). The number of coefficients must be the square of an integer. |
Args | A list of numerical coefficients (either integral or floating-point). The number of coefficients must be the square of an integer. |
StaticDescriptor | The coefficient types corresponding to the rows and columns. |
TriangleType | The type of the nested triangular matrix (upper, lower). |
Scalar | The scalar type (integral or floating-point). |
StaticDescriptor | The coefficient types corresponding to the rows and columns. |
Scalar | The scalar type (integral or floating-point). |
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Make a writable, uninitialized Covariance with a nested triangular matrix, from a typed_matrix_nestable.
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Make a writable, uninitialized Covariance from a typed_matrix_nestable or covariance_nestable.
The coefficients will be Axis.
Make a writable, uninitialized Covariance from a non-square-root covariance.
Make a writable, uninitialized Covariance, based on a typed_matrix.
constexpr auto OpenKalman::make_dense_object | ( | Descriptors && | descriptors | ) |
Make a default, dense, writable matrix with a set of coordinates::pattern objects defining the dimensions.
The result will be uninitialized.
T | A dummy matrix or array from the relevant library (size, shape, and layout are ignored) |
layout | The Layout of the resulting object. If this is Layout::none, it will be the default layout for the library of T. |
Scalar | The scalar type of the resulting object (by default, it is the same scalar type as T). |
d | a tuple of coordinates::pattern describing dimensions of each index. Trailing 1D indices my be omitted. |
constexpr auto OpenKalman::make_dense_object | ( | Ds &&... | ds | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
coordinates::pattern object are specified as parameters.
|
inline |
Create a dense, writable matrix from the library of which dummy type T is a member, filled with a set of scalar components.
The scalar components are listed in the specified layout order, as follows:
T | Any dummy type from the relevant library. Its characteristics are ignored. |
layout | The Layout of Args and the resulting object (Layout::none if unspecified). |
Scalar | An scalar type for the new matrix. By default, it is the same as T. |
Ds | coordinates::pattern objects describing the size of the resulting object. |
d_tup | A tuple of coordinates::pattern Ds |
args | Scalar values to fill the new matrix. |
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Create a dense, writable matrix from a set of components, with size and shape inferred from dummy type T.
The coordinates::pattern of the result must be unambiguously inferrable from T and the number of indices.
T | The matrix or array on which the new matrix is patterned. |
layout | The Layout of Args and the resulting object (Layout::none if unspecified, which means that the values are in Layout::right order but layout of the resulting object is unspecified). |
Scalar | An scalar type for the new matrix. By default, it is the same as T. |
args | Scalar values to fill the new matrix. |
constexpr auto OpenKalman::make_diagonal_adapter | ( | Arg && | arg, |
D0 && | d0, | ||
D1 && | d1 | ||
) |
Make a diagonal_matrix, specifying the first two dimensions, which may not necessarily be the same.
Arg | A vector or higher-order tensor reflecting the diagonal(s). |
D0 | The coordinates::pattern for the rows. |
D1 | The coordinates::pattern for the columns. |
constexpr auto OpenKalman::make_diagonal_adapter | ( | Arg && | arg | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Make an square diagonal_matrix that is square with respect to dimensions 0 and 1.
Arg | A vector or higher-order tensor reflecting the diagonal(s). |
auto OpenKalman::make_euclidean_mean | ( | const Args ... | args | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
For Eigen3: Make a one-column EuclideanMean from a list of coefficients, with default Axis coefficients.
Args | A list of numerical coefficients (either integral or floating-point). |
auto OpenKalman::make_euclidean_mean | ( | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
For Eigen3: Make a EuclideanMean based on a scalar type, row coefficients, and a number of columns.
Scalar | A scalar type (integral or floating-point). |
StaticDescriptor | The coefficient types corresponding to the rows. |
cols | The number of columns. |
auto OpenKalman::make_euclidean_mean | ( | M && | arg | ) |
Make a EuclideanMean from a typed_matrix_nestable, specifying the row coefficients.
StaticDescriptor | The coefficient types corresponding to the rows. |
M | A typed_matrix_nestable with size matching ColumnCoefficients. |
auto OpenKalman::make_euclidean_mean | ( | M && | m | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Make a EuclideanMean from a typed_matrix_nestable object, with default Axis coefficients.
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Make a EuclideanMean from another typed_matrix.
Arg | A typed_matrix (i.e., Matrix, Mean, or EuclideanMean). |
OpenKalman::make_euclidean_mean | ( | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
For Eigen3: Make a EuclideanMean from a list of coefficients, specifying the row coefficients.
Make a default, self-contained EuclideanMean.
StaticDescriptor | The coefficient types corresponding to the rows. |
M | a typed_matrix_nestable on which the new matrix is based. It will be converted to a self_contained type if it is not already self-contained. |
StaticDescriptor | The coefficient types corresponding to the rows. |
Args | A list of numerical coefficients (either integral or floating-point). The number of coefficients must be divisible by coordinates::stat_dimension_of_v<StaticDescriptor>. |
auto OpenKalman::make_euclidean_mean | ( | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Make a self-contained EuclideanMean with default Axis coefficients.
M | a typed_matrix_nestable on which the new Euclidean mean is based. It will be converted to a self_contained type if it is not already self-contained. |
|
inline |
Make a Gaussian distribution.
D | Another gaussian_distribution. |
|
inline |
Make a Gaussian distribution.
re | A random number engine. |
M | A typed_matrix. |
Cov | A covariance or typed_matrix. |
|
inline |
Make a Gaussian distribution.
re | A random number engine. |
M | A typed_matrix. |
Cov | A covariance_nestable or typed_matrix_nestable. |
re | A random number engine. |
M | A typed_matrix_nestable. |
Cov | A covariance, typed_matrix, covariance_nestable, or typed_matrix_nestable. |
|
inline |
Make a Gaussian distribution.
StaticDescriptor | The types of the fixed_pattern for the distribution. |
re | A random number engine. |
M | A typed_matrix_nestable. |
Cov | A covariance_nestable or typed_matrix_nestable. |
|
inline |
Make a default Gaussian distribution.
M | A typed_matrix. |
Cov | A covariance. |
re | A random number engine. |
M | A typed_matrix or typed_matrix_nestable. |
Cov | A covariance or covariance_nestable. |
re | A random number engine. |
|
inline |
Make a default Gaussian distribution.
StaticDescriptor | The types of the fixed_pattern for the distribution. |
M | A typed_matrix_nestable |
Cov | A covariance_nestable. |
re | A random number engine |
decltype(auto) constexpr OpenKalman::make_hermitian_matrix | ( | Arg && | arg | ) |
Creates a hermitian_matrix by, if necessary, wrapping the argument in a hermitian_adapter.
adapter_type | The intended HermitianAdapterType of the result (lower op upper). |
Arg | A square matrix. |
constexpr auto OpenKalman::make_identity_matrix_like | ( | Descriptors && | descriptors | ) |
Make an identity_matrix with a particular set of coordinates::pattern objects.
T | Any matrix or tensor within the relevant library. |
Scalar | An optional scalar type for the new zero matrix. By default, T's scalar type is used. |
Ds | A set of coordinates::pattern items defining the dimensions of each index. |
constexpr auto OpenKalman::make_identity_matrix_like | ( | Ds &&... | ds | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
coordinates::pattern objects are passed as arguments.
constexpr auto OpenKalman::make_identity_matrix_like | ( | Arg && | arg | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Make an identity matrix with the same size and shape as an argument, specifying a new scalar type.
Arg | The matrix or array on which the new identity matrix is patterned. It need not be square. |
Scalar | A scalar type for the new matrix. |
constexpr auto OpenKalman::make_identity_matrix_like | ( | Arg && | arg | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Make an identity matrix with the same size and shape as an argument.
Arg | The matrix or array on which the new zero matrix is patterned. |
auto OpenKalman::make_matrix | ( | const Args ... | args | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
For Eigen3: Make a one-column Matrix from a list of coefficients, with default Axis coefficients.
Args | A list of numerical coefficients (either integral or floating-point). |
OpenKalman::make_matrix | ( | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
For Eigen3: Make a Matrix from a list of coefficients, specifying the row and column coefficients.
For Eigen3: Make a Matrix based on a scalar type and row and column coefficients.
Scalar | A scalar type (integral or floating-point). |
RowCoefficients | The coefficient types corresponding to the rows. |
ColumnCoefficients | The coefficient types corresponding to the columns. |
RowCoefficients | The coefficient types corresponding to the rows. |
ColumnCoefficients | The coefficient types corresponding to the columns. |
Args | A list of numerical coefficients (either integral or floating-point). The number of coefficients must equal coordinates::dimension_of_v<RowCoefficients> * coordinates::dimension_of_v<ColumnCoefficients>. |
auto OpenKalman::make_mean | ( | const Args ... | args | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
For Eigen3: Make a one-column Mean from a list of coefficients, with default Axis coefficients.
Args | A list of numerical coefficients (either integral or floating-point). |
auto OpenKalman::make_mean | ( | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
For Eigen3: Make a Mean based on a scalar type, a set of row coefficients, and a number of columns.
Scalar | A scalar type (integral or floating-point). |
StaticDescriptor | The coefficient types corresponding to the rows. |
cols | The number of columns. |
|
inline |
Make a Mean from a typed_matrix_nestable, specifying the row fixed_pattern.
StaticDescriptor | The coefficient types corresponding to the rows. |
M | A typed_matrix_nestable with size matching ColumnCoefficients. |
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Make a Mean from a typed_matrix_nestable object, with default Axis fixed_pattern.
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Make a Mean from another typed_matrix.
Arg | A typed_matrix (i.e., Matrix, Mean, or EuclideanMean). |
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
For Eigen3: Make a Mean from a list of coefficients, specifying the row coefficients.
Make a default, self-contained Mean.
StaticDescriptor | The coefficient types corresponding to the rows. |
M | a typed_matrix_nestable on which the new matrix is based. It will be converted to a self_contained type if it is not already self-contained. |
StaticDescriptor | The coefficient types corresponding to the rows. |
Args | A list of numerical coefficients (either integral or floating-point). The number of coefficients must be divisible by coordinates::dimension_of_v<StaticDescriptor>. |
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Make a self-contained Mean with default Axis fixed_pattern.
M | a typed_matrix_nestable on which the new mean is based. It will be converted to a self_contained type if it is not already self-contained. |
|
inline |
Make a SquareRootCovariance from a covariance_nestable, specifying the coefficients.
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
StaticDescriptor | The coefficient types corresponding to the rows and columns. |
Arg | A covariance_nestable with size matching StaticDescriptor. |
Make a default Axis SquareRootCovariance from a self-adjoint typed_matrix_nestable.
TriangleType | The type of the nested triangular matrix (upper, lower). |
Arg | A square, self-adjoint typed_matrix_nestable. |
Make a SquareRootCovariance from a typed_matrix.
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Make a SquareRootCovariance from a covariance_nestable, with default Axis coefficients.
StaticDescriptor | The coefficient types corresponding to the rows and columns. |
Arg | A covariance_nestable. |
Make a SquareRootCovariance based on another triangular_covariance.
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Make a SquareRootCovariance (with nested triangular matrix) from a self-adjoint typed_matrix_nestable.
StaticDescriptor | The coefficient types corresponding to the rows and columns. |
TriangleType | The type of the nested triangular matrix (upper, lower). |
Arg | A square, self-adjoint typed_matrix_nestable with size matching StaticDescriptor. |
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
For Eigen3: Make a writable, uninitialized SquareRootCovariance.
For Eigen3: Make a default Axis SquareRootCovariance from a list of coefficients.
For Eigen3: Make a SquareRootCovariance from a list of coefficients.
Make a writable, uninitialized SquareRootCovariance from a typed_matrix_nestable.
Only the coefficients in the associated upper or lower triangle are significant.
StaticDescriptor | The coefficient types corresponding to the rows and columns. |
TriangleType | The type of the nested triangular matrix (upper, lower). |
Args | A list of numerical coefficients (either integral or floating-point). The number of coefficients must equal coordinates::dimension_of_v<StaticDescriptor> * coordinates::dimension_of_v<StaticDescriptor>. |
TriangleType | The type of the nested triangular matrix (upper, lower). |
Args | A list of numerical coefficients (either integral or floating-point). The number of coefficients must be the square of an integer. |
StaticDescriptor | The coefficient types corresponding to the rows and columns. |
TriangleType | The type of the nested triangular matrix (upper, lower). |
Scalar | The scalar type (integral or floating-point). |
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Make a writable, uninitialized SquareRootCovariance from a covariance_nestable or typed_matrix_nestable.
Make a writable, uninitialized SquareRootCovariance, with default Axis coefficients.
Make a writable, uninitialized SquareRootCovariance based on a typed_matrix.
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Make a writable, uninitialized SquareRootCovariance from a typed_matrix_nestable or covariance_nestable.
The coefficients will be Axis.
Make a writable, uninitialized SquareRootCovariance from a triangular_covariance.
Make a writable, uninitialized SquareRootCovariance based on a typed_matrix.
decltype(auto) constexpr OpenKalman::make_triangular_matrix | ( | Arg && | arg | ) |
Create a triangular_matrix from a general matrix.
t | The intended TriangleType of the result. |
Arg | A general matrix to be made triangular. |
|
inline |
If necessary, wrap an object in a wrapper that adds vector space descriptors for each index.
Any vector space descriptors in the argument are overwritten.
Arg | An indexible object. Ds A set of coordinates::pattern objects |
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
coordinates::pattern objects are passed as arguments.
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Create an adapter in which all vector space descriptors are static.
constexpr auto OpenKalman::make_zero | ( | Descriptors && | descriptors | ) |
Make a zero associated with a particular library.
T | An object (matrix or tensor) from a particular library. Its shape and contents are irrelevant. |
Scalar | An optional scalar type for the new zero matrix. By default, T's scalar type is used. |
Descriptors | A pattern_collection defining the dimensions of each index. If none are provided and T has no dynamic dimensions, the function takes coordinates::pattern from T. |
constexpr auto OpenKalman::make_zero | ( | Ds &&... | ds | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Specify coordinates::pattern objects as arguments.
constexpr auto OpenKalman::make_zero | ( | const T & | t | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Make a zero based on an argument.
T | The matrix or array on which the new zero matrix is patterned. |
Scalar | A scalar type for the new matrix. |
constexpr auto OpenKalman::make_zero | ( | const T & | t | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Make a zero matrix based on T.
The new scalar type is also derived from T.
OpenKalman::Matrix | ( | V && | ) | -> Matrix< vector_space_descriptor_of_t< V, 0 >, vector_space_descriptor_of_t< V, 1 >, passable_t< nested_object_of_t< V >>> |
Deduce template parameters from a non-Euclidean-transformed typed matrix.
Deduce parameter types from a Covariance.
Deduce template parameters from a Euclidean-transformed typed matrix.
|
explicit |
Deduce template parameters from a typed_matrix_nestable, assuming untyped coordinates::pattern.
Deduce template parameters from a Euclidean-transformed typed matrix.
Deduce template parameters from a non-Euclidean-transformed typed matrix.
constexpr auto OpenKalman::n_ary_operation | ( | const std::tuple< Ds... > & | d_tup, |
Operation && | operation, | ||
Args &&... | args | ||
) |
Perform a component-wise n-ary operation, using broadcasting to match the size of a pattern matrix.
This overload is for unary, binary, and higher n-ary operations. Examples:
Ds | coordinates::pattern objects defining the size of the result. |
Operation | The n-ary operation taking n arguments and, optionally, a set of indices indicating the location within the result. The operation must return a scalar value. |
Args | The arguments |
constexpr auto OpenKalman::n_ary_operation | ( | Operation && | operation, |
Args &&... | args | ||
) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Perform a component-wise n-ary operation, using broadcasting if necessary to make the arguments the same size.
Each of the arguments may be expanded by broadcasting. The result will derive each dimension from the largest corresponding dimension among the arguments. Examples:
Operation | The n-ary operation taking n arguments and, optionally, a set of indices. The operation must return a scalar value. |
Args | The arguments |
constexpr auto OpenKalman::n_ary_operation | ( | const std::tuple< Ds... > & | d_tup, |
const Operations &... | operations | ||
) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Perform a component-wise nullary operation with potentially multiple operations for different blocks.
Examples:
PatternMatrix | A matrix or array corresponding to the result type. Its purpose is to indicate the library from which to create a resulting matrix, and its dimensions need not match the specified dimensions Ds |
indices | The indices, if any, along which there will be a different operator for each element along that index. |
Ds | coordinates::pattern objects for each index of the result. coordinates::pattern objects corresponding to indices must be of a fixed_pattern type. |
Operations | The nullary operations. The number of operations must equal the product of each dimension Ds corresponding to indices. The order of the operations depends on the order of indices, with the left-most index being the most major, and the right-most index being the most minor. For example, if indices are {0, 1} for a matrix result, the operations must be in row-major order. If the indices are {1, 0}, the operations must be in column-major order. Each operation may be invocable with no arguments or invocable with as many indices as there are coordinates::pattern Ds. (If the index corresponds to one of designaged indices , then the operation will be called with std::integral_constant<std::size_t, index>{} for that index, instead of std::size_t .)) |
constexpr auto OpenKalman::n_ary_operation | ( | const Operations &... | operations | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Perform a component-wise nullary operation, deriving the resulting size from a pattern matrix.
PatternMatrix | A matrix or array corresponding to the result type. Its purpose is to indicate the library from which to create a resulting matrix, and its dimensions need not match the specified dimensions Ds. Dimensions of PatternMatrix corresponding to indices must be of a fixed_pattern type. |
indices | The indices, if any, along which there will be a different operator for each element along that index. |
Operations | The nullary operations. The number of operations must equal the product of each dimension Ds corresponding to indices. |
decltype(auto) constexpr OpenKalman::nested_object | ( | Arg && | arg | ) |
Retrieve a nested object of Arg, if it exists.
i | Index of the nested matrix (0 for the 1st, 1 for the 2nd, etc.). |
Arg | A wrapper that has at least one nested object. |
decltype(auto) constexpr OpenKalman::QR_decomposition | ( | A && | a | ) |
Perform a QR decomposition of matrix A=Q[U,0], U is a upper-triangular matrix, and Q is orthogonal.
A | The matrix to be decomposed |
constexpr auto OpenKalman::randomize | ( | random_number_generator & | gen, |
const std::tuple< Ds... > & | ds_tuple, | ||
Dists &&... | dists | ||
) |
Create an indexible object with random values selected from one or more random distributions.
This is essentially a specialized version of n_ary_operation with the nullary operator being a randomization function. The distributions are allocated to each element of the object, according to one of the following options:
PatternMatrix | An indexible object corresponding to the result type. Its dimensions need not match the specified dimensions Ds |
indices | The indices, if any, for which there is a distinct distribution. If not provided, this can in some cases be inferred from the number of Dists provided. |
random_number_generator | The random number generator (e.g., std::mt19937). |
Ds | coordinates::pattern objects for each index the result. They need not correspond to the dimensions of PatternMatrix. |
Dists | One or more distributions (e.g., std::normal_distribution<double>) |
constexpr auto OpenKalman::randomize | ( | const std::tuple< Ds... > & | d_tuple, |
Dists &&... | dists | ||
) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Create an indexible object with random values, using std::mt19937 as the random number engine.
constexpr auto OpenKalman::randomize | ( | random_number_generator & | gen, |
Dists &&... | dists | ||
) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Fill a fixed-sized indexible object with random values selected from one or more random distributions.
The distributions are allocated to each element of the matrix, according to one of the following options:
PatternMatrix | A fixed-size matrix |
random_number_generator | The random number generator (e.g., std::mt19937). |
constexpr auto OpenKalman::randomize | ( | Dists &&... | dists | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Fill a fixed-sized indexible object with random values using std::mt19937 as the random number generator.
|
inline |
Fill a fixed-shape typed matrix with random values selected from a random distribution.
The distributions are allocated to each element of the matrix, according to one of the following options:
ReturnType | The return type reflecting the size of the matrix to be filled. The actual result will be a fixed typed matrix. |
random_number_engine | The random number engine. |
Dists | A set of distributions (e.g., std::normal_distribution<double>) or, alternatively, means (a definite, non-stochastic value). |
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Fill a dynamic-shape typed_matrix with random values selected from a single random distribution.
The following example constructs two 2-by-2 matrices (m, n, and p) in which each element is a random value selected based on a distribution with mean 1.0 and standard deviation 0.3:
ReturnType | The type of the matrix to be filled. |
random_number_engine | The random number engine (e.g., std::mt19937). |
rows | Number of rows, decided at runtime. Must match rows of ReturnType if they are fixed. |
columns | Number of columns, decided at runtime. Must match columns of ReturnType if they are fixed. |
Dist | A distribution (type distribution_type). |
|
inline |
Do a rank update on a hermitian matrix.
The update is A += αUU*, returning the updated hermitian A. If A is an lvalue reference, hermitian, and writable, it will be updated in place and the return value will be an lvalue reference to the same, updated A. Otherwise, the function returns a new matrix.
A | The hermitian matrix to be rank updated. |
U | The update vector or matrix. |
|
inline |
Do a rank update on triangular matrix.
A | The matrix to be rank updated. |
U | The update vector or matrix. |
decltype(auto) constexpr OpenKalman::reduce | ( | BinaryFunction && | b, |
Arg && | arg | ||
) |
Perform a partial reduction based on an associative binary function, across one or more indices.
The binary function must be associative. (This is not enforced, but the order of operation is undefined.)
index | an index to be reduced. For example, if the index is 0, the result will have only one row. If the index is 1, the result will have only one column. |
indices | Other indices to be reduced. Because the binary function is associative, the order of the indices does not matter. |
BinaryFunction | A binary function invocable with two values of type scalar_type_of_t<Arg> . It must be an associative function. Preferably, it should be a constexpr function, and even more preferably, it should be a standard c++ function such as std::plus or std::multiplies. |
Arg | The tensor |
constexpr scalar_type_of_t<Arg> OpenKalman::reduce | ( | const BinaryFunction & | b, |
const Arg & | arg | ||
) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Perform a complete reduction based on an associative binary function, and return a scalar.
The binary function must be associative. (This is not enforced, but the order of operation is undefined.)
BinaryFunction | A binary function invocable with two values of type scalar_type_of_t<Arg> . It must be an associative function. Preferably, it should be a constexpr function, and even more preferably, it should be a standard c++ function such as std::plus or std::multiplies. |
Arg | The tensor |
|
inline |
Scale a covariance by a factor.
Equivalent to multiplication by the square of a scalar. For a square root covariance, this is equivalent to multiplication by the scalar.
|
inline |
Scale a covariance by a matrix.
M | A covariance. |
A | A typed_matrix. |
A scaled covariance Arg is A * Arg * adjoint(A). A scaled square root covariance L or U is also scaled accordingly, so that scale(L * adjoint(L)) = A * L * adjoint(L) * adjoint(A) or scale(adjoint(U) * U) = A * adjoint(U) * U * adjoint(A).
constexpr Arg&& OpenKalman::set_chip | ( | Arg && | arg, |
Chip && | chip, | ||
Ixs... | ixs | ||
) |
Set a sub-array having rank less than the rank of the input object.
A chip is a special type of "thin" slice of width 1 in one or more dimensions, and otherwise no reduction in extents. For example, the result could be a row vector, a column vector, a matrix (e.g., if the input object is a rank-3 or higher tensor), etc.
indices | The index or indices of the dimension(s) that have been collapsed to a single dimension. For example, if the input object is a matrix, a value of {0} will result in a row vector and a value of {1} will result in a column vector. If the input object is a rank-3 tensor, a value of {0, 1} will result in a matrix. |
arg | The indexible object in which the chip is to be set. |
chip | The chip to be set. It must be a chip, meaning that the dimension is 1 for each of indices . |
is | The index value(s) corresponding to indices , in the same order. The values may be positive std::integral types or a positive std::integral_constant. |
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Set a component of an object at a particular set of indices.
Arg | The object to be accessed. |
Indices | An input range object containing the indices. |
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Set a component of an object using a fixed number of indices.
The number of indices must be at least index_count_v<Arg>
. If the indices are integral constants, the function performs compile-time bounds checking to the extent possible.
constexpr Arg&& OpenKalman::set_slice | ( | Arg && | arg, |
Block && | block, | ||
const Begin &... | begin | ||
) |
Assign an object to a particular slice of a matrix or tensor.
arg | The writable object in which the slice is to be assigned. |
block | The block to be set. |
begin | A tuple specifying, for each index of Arg in order, the beginning values::index. |
size | A tuple specifying, for each index of Arg in order, the dimensions of the extracted block. |
constexpr auto OpenKalman::solve | ( | A && | a, |
B && | b | ||
) |
Solve the equation AX = B for X, which may or may not be a unique solution.
The interface to the relevant linear algebra library determines what happens if A is not invertible.
must_be_unique | Determines whether the function throws an exception if the solution X is non-unique (e.g., if the equation is under-determined) |
must_be_exact | Determines whether the function throws an exception if it cannot return an exact solution, such as if the equation is over-determined. If false |
A |
|
B |
|
|
inline |
Split a matrix or tensor into sub-parts, where the split is the same for every index.
This is an inverse of the concatenate operation. In other words, for all std::size_t i..., j...
and indexible a...
, and given the function template<std::size_t...i> auto f(auto a) { return get_vector_space_descriptor<i>(a)...}; }
((split<i...>(concatenate<i...>(a...), get_vector_space_descriptor<j>(a)...) == std::tuple{a...}) and ...)
.
indices | The indices along which to make the split. E.g., 0 means to split along rows, 1 means to split along columns, {0, 1} means to split diagonally. |
Arg | The matrix or tensor to be split. |
Ds | A set of coordinates::pattern (the same for for each of indices) |
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Split a matrix or tensor into sub-parts of a size defined independently for each index.
This is an inverse of the concatenate operation. In other words, for all std::size_t i...
and indexible a...
, and given the function template<std::size_t...i> auto f(auto a) { return std::tuple{get_vector_space_descriptor<i>(a)...}; }
split<i...>(concatenate<i...>(a...), f<i...>(a)...) == std::tuple{a...}
.
indices | The indices along which to make the split. E.g., 0 means to split along rows, 1 means to split along columns, {0, 1} means to split diagonally. |
Arg | The matrix or tensor to be split. |
Ds_tups | A set of tuples of coordinates::pattern objects, each tuple having sizeof...(indices) elements |
|
inline |
Split Covariance or SquareRootCovariance diagonally.
Split typed matrix into one or more typed matrices diagonally.
|
inline |
Split Covariance or SquareRootCovariance vertically. Result is a tuple of typed matrices.
Split typed matrix into one or more typed matrices horizontally. Column coefficients must all be Axis.
Split typed matrix into one or more typed matrices horizontally.
|
inline |
Split Covariance or SquareRootCovariance vertically. Result is a tuple of typed matrices.
Split typed matrix into one or more typed matrices vertically.
|
explicit |
Deduce SquareRootCovariance type from a covariance_nestable.
Deduce SquareRootCovariance type from a square typed_matrix_nestable.
Deduce SquareRootCovariance type from a square typed_matrix.
constexpr auto OpenKalman::tensor_order | ( | const T & | t | ) |
Return the tensor order of T (i.e., the number of indices of dimension greater than 1).
If T has any zero-dimensional indices, the tensor order is considered to be 0, based on the theory that a zero-dimensional vector space has 0 as its only element, and 0 is a scalar value. This may be subject to change.
T | A matrix or array |
decltype(auto) constexpr OpenKalman::tile | ( | const std::tuple< Ds... > & | ds_tuple, |
Block && | block, | ||
Blocks &&... | blocks | ||
) |
Create a matrix or tensor by tiling individual blocks.
Ds | A set of coordinates::pattern for the resulting matrix or tensor. |
Block | The first block |
Blocks | Subsequent blocks |
decltype(auto) constexpr OpenKalman::to_dense_object | ( | Arg && | arg | ) |
Convert the argument to a dense, writable matrix of a particular scalar type.
T | A dummy matrix or array from the relevant library (size, shape, and layout are ignored) |
layout | The Layout of the resulting object. If this is Layout::none, the interface will decide the layout. |
Scalar | The Scalar type of the new matrix, if different than that of Arg |
arg | The object from which the new matrix is based |
decltype(auto) constexpr OpenKalman::to_dense_object | ( | Arg && | arg | ) |
Convert the argument to a dense, writable matrix of a particular scalar type.
layout | The Layout of the resulting object. If this is Layout::none, the interface will decide the layout. |
Scalar | The Scalar type of the new matrix, if different than that of Arg |
arg | The object from which the new matrix is based |
decltype(auto) constexpr OpenKalman::to_dense_object | ( | Arg && | arg | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Convert the argument to a dense, writable matrix with the same scalar type as the argument.
layout | The Layout of the resulting object (optional). If this is omitted or Layout::none, the interface will decide the layout. |
arg | The object from which the new matrix is based |
decltype(auto) constexpr OpenKalman::to_diagonal | ( | Arg && | arg | ) |
Convert an indexible object into a diagonal matrix.
decltype(auto) constexpr OpenKalman::to_euclidean | ( | Arg && | arg | ) |
Project the vector space associated with index 0 to a Euclidean space for applying directional statistics.
Arg | A matrix or tensor. |
|
inline |
If it isn't already, convert Arg to a native object in the library associated with LibraryObject.
The new object will be one that is fully treated as native by the library associated with LibraryObject and that can be an input in any OpenKalman function associated with library LibraryObject.
LibraryObject | Any indexible object from the library to which Arg is to be converted. It's shape or scalar type are irrelevant. |
Arg | The argument |
decltype(auto) constexpr OpenKalman::trace | ( | Arg && | arg | ) |
Take the trace of a matrix.
This is a generalized trace that applies to rectangular matrices. If the argument is rectangular, this function returns the trace of the square sub-matrix.
Arg | The matrix |
decltype(auto) constexpr OpenKalman::transpose | ( | Arg && | arg | ) |
Take the transpose of a matrix.
Arg | The matrix |
decltype(auto) constexpr OpenKalman::unary_operation_in_place | ( | const Operation & | operation, |
Arg && | arg | ||
) |
Perform a component-wise, in-place unary operation.
Examples:
Operation | The n-ary operation taking an argument and, optionally, a set of indices. The argument to the operation is a component of Arg and will be assignable as a non-const lvalue reference. The operation may either return the result (as a value or reference) or return void (in which case any changes to the component argument will be treated as an in-place modification). |
Arg | The argument, which must be non-const and writable. |
constexpr bool OpenKalman::vector_space_descriptors_match | ( | const Ts &... | ts | ) |
Return true if every set of coordinates::pattern of a set of objects match.
Ts | A set of tensors or matrices |
constexpr bool OpenKalman::all_fixed_indices_are_euclidean |
Specifies that every fixed-size index of T is euclidean.
No fixed_size index of T is, e.g., Angle, Polar, Spherical, etc.
|
inline |
constexpr bool OpenKalman::cholesky_form = detail::is_cholesky_form<std::decay_t<T>>::value |
Specifies that a type has a nested native matrix that is a Cholesky square root.
If this is true, then nested_object_of_t<T> is true.
constexpr bool OpenKalman::compatible_with_vector_space_descriptor_collection |
constexpr bool OpenKalman::constant_diagonal_matrix |
Specifies that all diagonal elements of a diagonal object are the same constant value.
A constant diagonal matrix is also a diagonal_matrix. It is not necessarily square. If T is a rank >2 tensor, every rank-2 slice comprising dimensions 0 and 1 must be constant diagonal matrix.
constexpr bool OpenKalman::constant_matrix |
Specifies that all components of an object are the same constant value.
|
inline |
|
inline |
constexpr bool OpenKalman::covariance_nestable |
T is an acceptable nested matrix for a covariance (including triangular_covariance).
constexpr bool OpenKalman::diagonal_adapter = internal::is_explicitly_triangular<T, TriangleType::diagonal>::value and detail::nested_is_vector<T, N>::value |
Specifies that a type is a diagonal matrix adapter.
This is an adapter that takes a vector and produces a diagonal_matrix. Components outside the diagonal are zero.
T | A matrix or tensor. |
N | An index designating the "large" index of the vector (0 for a column vector, 1 for a row vector) |
constexpr bool OpenKalman::diagonal_matrix |
Specifies that a type is a diagonal matrix or tensor.
A diagonal matrix has zero components everywhere except the main diagonal. It is not necessarily square. For rank >2 tensors, every rank-2 slice comprising dimensions 0 and 1 must be diagonal.
constexpr bool OpenKalman::dimension_size_of_index_is |
Specifies that a given index of T has a specified size.
If b == Applicability::permitted
, then the concept will apply if there is a possibility that the specified index of T
is value
.
constexpr bool OpenKalman::directly_accessible |
The underlying raw data for T is directly accessible.
|
inline |
A constant indicating that a difference in sizes or indices is dynamic.
A dynamic difference can be set, or change, during runtime and is not known at compile time.
constexpr bool OpenKalman::dynamic_dimension = detail::is_dynamic_dimension<T, N>::value |
Specifies that T's index N has a dimension defined at run time.
The matrix library interface will specify this for native matrices and expressions.
|
inline |
A constant indicating that a size or index is dynamic.
A dynamic size or index can be set, or change, during runtime and is not known at compile time.
constexpr bool OpenKalman::element_gettable |
Specifies that a type has components addressable by N indices.
This concept should include anything for which get_component(...) is properly defined with N std::size_t arguments.
constexpr bool OpenKalman::empty_object |
Specifies that an object is empty (i.e., at least one index is zero-dimensional).
constexpr bool OpenKalman::equivalent_to_uniform_static_vector_space_descriptor_component_of = detail::equivalent_to_uniform_static_vector_space_descriptor_component_of_impl<T, C>::value |
T is equivalent to the uniform dimension type of C.
T | A 1D coordinates::descriptor |
C | a uniform_static_vector_space_descriptor |
constexpr bool OpenKalman::euclidean_transformed |
Specifies that T is a Euclidean mean that actually has coefficients that are transformed to Euclidean space.
|
inline |
constexpr bool OpenKalman::has_dynamic_dimensions |
Specifies that T has at least one index with dynamic dimensions.
constexpr bool OpenKalman::has_nested_object |
A matrix that has a nested matrix, if it is a wrapper type.
constexpr bool OpenKalman::has_untyped_index |
Specifies that T has an untyped index N.
Index N of T is Euclidean and non-modular (e.g., Axis, Dimensions<2>, etc.).
constexpr bool OpenKalman::hermitian_adapter |
Specifies that a type is a hermitian matrix adapter of a particular type.
A hermitian adapter may or may not actually be a hermitian_matrix, depending on whether it is a square_shaped. If it is not a square matrix, it can still be a hermitian adapter, but only the truncated square portion of the matrix would be hermitian.
T | A matrix or tensor. |
t | The HermitianAdapterType of T. |
constexpr auto OpenKalman::hermitian_adapter_type_of_v = hermitian_adapter_type_of<T, Ts...>::value |
The TriangleType associated with the storage triangle of a hermitian_matrix.
constexpr bool OpenKalman::hermitian_matrix |
Specifies that a type is a hermitian matrix (assuming it is square_shaped).
For rank >2 tensors, this must be applicable on every rank-2 slice comprising dimensions 0 and 1.
T | A matrix or tensor. |
b | Whether T must be known to be a square matrix at compile time. |
constexpr bool OpenKalman::identity_matrix |
Specifies that a type is an identity matrix.
This is a generalized identity matrix which may be rectangular (with zeros in all non-diagonal components. For rank >2 tensors, every rank-2 slice comprising dimensions 0 and 1 must be an identity matrix as defined here. Every empty_object is also an identity matrix.
|
inline |
constexpr bool OpenKalman::index_range_for |
Indices is a std::ranges::sized_range of indices that are compatible with indexible object T.
constexpr bool OpenKalman::indexible |
T is a generalized tensor type.
T can be a tensor over a vector space, but can also be an analogous algebraic structure over a tensor product of modules over division rings (e.g., an vector-like structure that contains angles).
|
inline |
constexpr bool OpenKalman::linearized_function |
A linearized function (with defined Jacobian and optionally Hessian functions).
If order == 1, then the Jacobian is defined. If order == 2, then the Hessian is defined.
T | The function. |
order | The maximum order in which T's Taylor series is defined. |
|
inline |
constexpr bool OpenKalman::one_dimensional |
Specifies that a type is one-dimensional in every index.
Each index also must have an equivalent coordinates::pattern object.
|
inline |
|
inline |
|
inline |
|
inline |
constexpr bool OpenKalman::square_shaped |
Specifies that an object is square (i.e., has equivalent coordinates::pattern along each dimension).
Any trailing 1D Euclidean descriptors are disregarded. A vector must be one-dimensional. An empty (0-by-0) matrix or tensor is considered to be square.
b | Defines what happens when one or more of the indices has dynamic dimension:
|
constexpr bool OpenKalman::transformation_input |
T is an acceptable input to a tests.
Coeffs | The expected coefficients of the tests input. |
constexpr bool OpenKalman::triangular_adapter |
Specifies that a type is a triangular adapter of triangle type triangle_type.
A triangular adapter takes a matrix and presents a view in which, in one or both triangular (or trapezoidal) sides on either side of the diagonal are zero. The matrix need not be square.
T | A matrix or tensor. |
constexpr bool OpenKalman::triangular_matrix = internal::is_explicitly_triangular<T, t>::value or constant_diagonal_matrix<T> |
Specifies that a type is a triangular matrix (upper, lower, or diagonal).
A triangular matrix need not be square_shaped, but it must be zero either above or below the diagonal (or both). For rank >2 tensors, this must be applicable on every rank-2 slice comprising dimensions 0 and 1.
T | A matrix or tensor. |
t | The TriangleType triangular if it is one-dimensional, and that is not necessarily known at compile time. |
constexpr bool OpenKalman::typed_adapter |
Specifies that T is a typed adapter expression.
constexpr bool OpenKalman::typed_matrix_nestable |
Specifies a type that is nestable in a general typed matrix (e.g., matrix, mean, or euclidean_mean)
constexpr bool OpenKalman::untyped_adapter |
Specifies that T is an untyped adapter expression.
Untyped adapter expressions are generally used whenever the native matrix library does not have an important built-in matrix type, such as a diagonal matrix, a triangular matrix, or a hermitian matrix.
constexpr bool OpenKalman::vector |
T is a vector (e.g., column or row vector).
In this context, a vector is an object in which every index but one is 1D.
T | An indexible object |
N | An index designating the "large" index (0 for a column vector, 1 for a row vector) |
b | Whether the vector status is guaranteed known at compile time (Applicability::guaranteed), or only known at runtime (Applicability::permitted) |
constexpr bool OpenKalman::vector_space_descriptors_match_with |
Specifies that a set of indexible objects have equivalent vector space descriptors for each index.
Ts | A set of indexible objects |
constexpr bool OpenKalman::vector_space_descriptors_may_match_with |
Specifies that indexible objects Ts may have equivalent dimensions and vector-space types.
Two dimensions are considered the same if their coordinates::pattern are equivalent.
constexpr bool OpenKalman::wrappable = detail::is_wrappable<T>::value |
Specifies that every fixed-size index of T (other than potentially index 0) is euclidean.
This indicates that T is suitable for wrapping along index 0.
constexpr bool OpenKalman::wrapped_mean |
Specifies that T is a wrapped mean (i.e., its row fixed_pattern have at least one type that requires wrapping).
constexpr bool OpenKalman::writable |
constexpr bool OpenKalman::writable_by_component |
Specifies that a type has components that can be set with Indices (an std::ranges::input_range) of type std::size_t.
If T satisfies this concept, then set_component(...) is available with Indices.