MLPACK is a scalable machine learning library, written in C++, that aims to provide fast, extensible implementations of cuttingedge machine learning algorithms.
Algorithms are provided as simple commandline programs and C++ classes which can then be integrated into largerscale machine learning solutions.


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.
It provides highlevel syntax deliberately similar to Matlab,
making it useful for algorithm development directly in C++, or quick conversion of research code into production environments.


Bandicoot is a C++ linear algebra library exploiting GPU based processing.
It has two use cases:
(1) addon accelerator for the Armadillo library, offloading intensive computations to the GPU when possible,
and (2) as a dedicated library for GPU matrix programming with a subset of Armadillolike functions.


ensmallen is flexible C++ library for efficient mathematical optimization.
It provides a simple set of abstractions for writing an objective function to optimize.
It also provides a large set of standard and cuttingedge optimizers that can be used for virtually any mathematical optimization task.
These include fullbatch gradient descent techniques, smallbatch techniques, gradientfree optimizers, and constrained optimization.
