Armadillo is a high quality linear algebra library (matrix maths) for the C++ language, aiming towards a good balance between speed and ease of use.
Features:
- Easy to use functions and syntax, deliberately similar to Matlab / Octave
- Useful for prototyping directly in C++
- Useful for conversion of research code into production environments
- Permissively licensed - can be used in proprietary software and products
- Used for machine learning, pattern recognition, computer vision, signal processing, bioinformatics, statistics, finance, etc
- Efficient classes for vectors, matrices, cubes (1st, 2nd, 3rd order tensors)
- Supports dense and sparse matrices
- Fast singular value decomposition (SVD), eigen decomposition, QR, LU, Cholesky, FFT
- Clustering using k-means and Gaussian Mixture Models (GMM)
- Automatic vectorisation of expressions (SIMD)
- Contiguous and non-contiguous submatrices
- Automatically combines several operations into one to increase speed and efficiency
- Read/write data in CSV files
- Automatically uses OpenMP for speedups
- Used for machine learning by MLPACK
- Used for numerical optimisation by Ensmallen