vnl : Numerics Library

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