The numerics library, vnl is intended to provide an environment for numerical programming which combines the ease of use of packages like Mathematica and Matlab with the speed of C and the elegance of C++. Its dependent, vnl_algo, provides a C++ interface to the high-quality Fortran routines made available in the public domain by numerical analysis researchers.
Matrix and vector classes include
- vnl_vector<T> : Standard vector class
- vnl_matrix<T> : Standard matrix class
- vnl_vector_fixed<T,N> : Fixed size vector class (of length N)
- vnl_matrix_fixed<T,N,M> : Fixed size NxM matrix class
- vnl_vector_ref<T> : Wrap user-supplied memory chunk as a vector
- vnl_matrix_ref<T> : Wrap user-supplied memory chunk as a matrix
- vnl_c_vector<T> : underlying implementor class: math on blocks of memory
- vnl_diag_matrix<T> : Diagonal matrix class
- vnl_diag_matrix_fixed<T,N> : Fixed size NxN diagonal matrix class
- vnl_sym_matrix<T> : Symmetric matrix class
- vnl_sparse_matrix<T> : Efficient storage for matrices with many zeroes
- vnl_crs_index : like vnl_sparse_matrix<T>, but without the data
- vnl_linear_system : interface for large, sparse systems of linear equations
Functions to generate special matrixes or vectors:
Polynomial representations:
Useful utility functions and constants
- Common functions and constants (in vnl_math), like pi, sqrt2, ln10, euler, ...
- vnl_random : random number generation, with normal and box distributions.
- vnl_gamma, vnl_gamma_p, vnl_gamma_q, vnl_beta : gamma and beta functions
- vnl_erf
- vnl_bessel
- vnl_matrix_exp : compute the exponential of a square matrix
- vnl_power : compute the nth power of a small vnl_matrix_fixed
- vnl_operators.h contains vector and matrix comparison functions
- vnl_copy : easy conversion between vectors/matrices with different datatypes
Computational functionality:
Simple matrix operations
Alternative number representations
- vnl_complex, vnl_complexify, vnl_real, vnl_imag : represent and manipulate complex numbers
- vnl_quaternion<T>
- vnl_rational : numbers represented as the quotient of two integers
- vnl_bignum : arbitrary size integers, binary representation
- vnl_decnum : arbitrary size integers, decimal representation and arithmetic
- vnl_finite<N> : modulo-N arithmetic, e.g. for finite fields
Mapping functionality
Miscellaneous
- vnl_sample : sampling from uniform, binomial and normal distributions
- vnl_matlab_print : pretty-print matrices and vectors in matlab-style format
- vnl_matlab_read : import data from files in the .mat format of Matlab
- vnl_matlab_write, vnl_matlab_filewrite : export data in the .mat format of Matlab
vnl_algo : Computational Numerics Library
Matrix decompositions include:
Optimisation routines include:
Support for manipulating polynomials:
Useful utility functions:
- vnl_fft_1d : 1D Fast Fourier Transform
- vnl_fft_2d : 2D Fast Fourier Transform
- vnl_determinant (but see also vnl_determinant in library vnl)
- vnl_matrix_inverse (but see also vnl_matrix_inverse in library vnl)
- vnl_adjugate : return the adjugate (or adjoint, or cofactors) matrix
- vnl_convolve
- vnl_chi_squared : CDF of chi-squared distribution
- vnl_fit_parabola : given three points, return 2nd degree fitting polynomial
Developers
Gehua Yang and Peter Vanroose are responsible for co-ordinating significant changes to vnl. http://sourceforge.net/sendmessage.php?touser=717688 http://sourceforge.net/sendmessage.php?touser=290414