This library is primarily template library for probability distributions. Some older statistical code also exists here which does not fit into the framework of this library. Expect this older code to be deprecated soon.
This library uses the generic programming paradigm for statistical distributions. The class hierarchy is for code reuse and type definitions as opposed to polymorphism. The base class for distributions, bsta_distribution, contains no functions or member variables. Each distribution has template parameters for the scalar type (typically float or double) and dimension.
The bsta_distribution defines the following typedefs
dimension (integer with enum hack) the dimensionality of the spacemath_type the type used in mathmatical operations (expects double or float)vector_type the type used to represent a vector math_type of size dimension The vector_type is defined as vnl_vector_fixed<math_type,dimension> by default. Using template partial specialization, vector_type is redefined to be the same as math_type when equals 1. Using the vector_type typedef allow much of the same code to be used both univariate and multivariate distributions without the overhead of of a 1 dimensional vector or other wrapper classes.
The Gaussian (aka Normal) distribution is provided with several variants. Each variant has a different restriction on the parameters. These Gaussians share a base class named bsta_gaussian which adds member variable for the mean (stored as a vector_type) and functions to access it. Each variant of the Gaussian also defines the typedef covar_type to specifiy the data type used to represent covariance.
covar_type is math_type )covar_type is vector_type )covar_type is vnl_matrix_fixed<math_type,dimension,dimension> )
1.7.5.1