FinMath numerical library provides object-oriented components for mathematical, scientific, and financial applications on the .NET platform. For most computations, FinMath uses the Intel® Math Kernel Library (MKL) and Intel® Integrated Performance Primitives (IPP). These libraries contain highly-optimized, extensively-threaded math routines that provide extraordinary performance:

  • BLAS (Basic Linear Algebra Subroutines)
  • LAPACK (Linear Algebra PACKage)
  • Fast Fourier Transform
  • Vector Math Library
  • Vector Random Number Generators
  • Summary Statistics Library

This results in outstanding performance of FinMath classes and methods while providing a modern, easy to use, object-oriented interface.


FinMath contains:

  • Full-featured vector and matrix classes for double-precision floating point numbers.
  • Classes for factoring matrices, including LU, Cholesky, QR, LQ and SVD.
  • Classes for solving least squares problems, including Ordinary LS, Weighted LS, General LS, Feasible LS and Stepwise LS.
  • Classes for performing Fast Fourier Transforms in real and complex domains.
  • Random number generation from various probability distributions and their characteristics (like moments, PDF, CDF etc.).
  • Extension methods that allow computing various descriptive statistics for different data sources.
  • Various implementations of option valuation algorithms, including Monte-Carlo, Black-Scholes and Binomial.
  • Factor analysis algorithms, including PCA and LSMI.
  • Classes for minimizing multivariate functions using quasi-Newton method.
  • Classes for linear programming (LP) and quadratic programming (QP).
  • Derivative-free optimization (including Genetic algorithm, Evolution strategies, Cross-entropy method, Nelder-Mead method).
  • Support-vector machine models for multi-class classification, regression and provability density estimation.
  • Decision tree algorithm based on Classification and Regression Tree.
  • Neural Networks including Multilayer Perceptron, Autoencoder and Deep Neural Network topologies.


  1. Easy installation and usage scheme. FinMath consists of just one file that is the same for 32-bit and 64-bit environment. All you need to do is to add reference to this file (FinMath.dll) in your project.
  2. Outstanding efficiency. Most computations are implemented using Intel® MKL and Intel® IPP.
  3. Extensive vector and matrix classes' API. Vector and matrix classes (and some others) contain overloaded operators and plenty of methods for performing required operation in-place or out-of-place. Thus on design phase you can use simplest approach, but there is a lot of possibilities for optimizing your code (both execution time and memory usage).
  4. Easy to use descriptive statistics API. Methods of descriptive statistics are implemented as extensions methods thus allowing you to use them with any underlying container (like array, list, vector, matrix, etc.).