External libraries

Libraries used in project

1. Boost

boost_logo.png

Homepage: Boost Libraries

Licence: Boost software license

Boost is a set of libraries for the C++ programming language that provide support for tasks and structures such as linear algebra, pseudo-random number generation, multi-threading, image processing, regular expressions, and unit testing.

Installation:
Download package boost Libs category.
or
Install manually:

  1. Download the latest boost release http://www.boost.org/users/download/ .
  2. Type ./bootstrap.sh –prefix=boost/ then ./bjam and then ./bjam install. The compilation may take some time (or even more).

Copyright notice

Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following:

The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

2. GNU Scientific Library

gnu_logo.jpg

Homepage: GNU Scientific Library

Licence: GNU General Public License

The GNU Scientific Library (GSL) is a collection of routines for numerical computing. The library provides a wide range of mathematical routines such as random number generators, special functions and least-squares fitting.

Installation:
Download package: libgsl0 and libgsldevel from Libs category.
or
Install manually:

  1. Download latest release of GSL (link).
  2. Type ./configure && make && make install

3. Object-Oriented Quadratic Programming

ooqp_logo.gif

Homepage: Object-Oriented Quadratic Programming

Licence: OOQP is copyrighted to the University of Chicago.Read more here.

OOQP is an object-oriented C++ package, based on a primal-dual interior-point method, for solving convex quadratic programming problems (QPs). It contains code that can be used "out of the box" to solve a variety of structured QPs, including general sparse QPs, QPs arising from support vector machines, Huber regression problems, and QPs with bound constraints. OOQP uses fortran library ma27 which is a part of Harwell Subroutine Library archive. HSL is a collection of Fortran codes for large scale scientific computation. HSL archive is avaible at no cost for commercial use , but software may not be redistributed.

Installation:

  1. Install ma27 library by typing: ./configure && make
  2. Copy libma27.a from src directory to /OOQP/extras/MA27.
  3. Usually config.guess in OOQP config directory is outdated. Replace it with latest config.guess (ftp://ftp.gnu.org/pub/gnu/config/).
  4. Type ./configure.
  5. Change compiler to g++ in GNUMakefile.
  6. Type make install

Copyright notice

COPYRIGHT 2001 UNIVERSITY OF CHICAGO

The copyright holder hereby grants you royalty-free rights to use, reproduce, prepare derivative works, and to redistribute this software to others, provided that any changes are clearly documented. This software was authored by:

E. MICHAEL GERTZ gertz.nosp@m.@mcs.nosp@m..anl..nosp@m.gov Mathematics and Computer Science Division Argonne National Laboratory 9700 S. Cass Avenue Argonne, IL 60439-4844

STEPHEN J. WRIGHT swrig.nosp@m.ht@c.nosp@m.s.wis.nosp@m.c.ed.nosp@m.u Department of Computer Sciences University of Wisconsin 1210 West Dayton Street Madison, WI 53706 FAX: (608)262-9777

Any questions or comments may be directed to one of the authors.

ARGONNE NATIONAL LABORATORY (ANL), WITH FACILITIES IN THE STATES OF ILLINOIS AND IDAHO, IS OWNED BY THE UNITED STATES GOVERNMENT, AND OPERATED BY THE UNIVERSITY OF CHICAGO UNDER PROVISION OF A CONTRACT WITH THE DEPARTMENT OF ENERGY.

4. Armadillo

armadillo_logo.jpg

Homepage: Armadillo

License: Mozilla Public License

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.

Installation:

  1. Download latest release of Armadillo (link).
  2. Type cmake . && make install

5. LAPACK

lapack_logo.jpg

Homepage: Linear Algebra PACKage

License: BSD License

LAPACK (Linear Algebra Package) is a standard software library for numerical linear algebra. It provides routines for solving systems of linear equations and linear least squares, eigenvalue problems, and singular value decomposition. It also includes routines to implement the associated matrix factorizations such as LU, QR, Cholesky and Schur decomposition.

6. BLAS

Homepage: Basic Linear Algebra Subprograms

License: The reference BLAS is a freely-available software package. Read more.

The BLAS (Basic Linear Algebra Subprograms) are routines that provide standard building blocks for performing basic vector and matrix operations. The Level 1 BLAS perform scalar, vector and vector-vector operations, the Level 2 BLAS perform matrix-vector operations, and the Level 3 BLAS perform matrix-matrix operations. Because the BLAS are efficient, portable, and widely available, they are commonly used in the development of high quality linear algebra software, like Armadillo, LAPACK, GNU Octave, Mathematica, MATLAB, NumPy and R.

Other Libraries

Optimization

NLopt is a free/open-source library for non-linear optimization, providing a common interface for a number of different free optimization routines available on-line as well as original implementations of various other algorithms.

GNU Linear Programming Kit is intended for solving large-scale linear programming (LP), mixed integer programming (MIP), and other related problems.

mantella An efficiency-focused, modern C++ library for analysing and solving optimisation problems.

QuadProg++ is a C++ library for Quadratic Programming which implements the Goldfarb-Idnani active-set dual method.

Professor M.J.D. Powel source codes (COBYLA, BOBYQA, TOLMIN etc.)

Algebra

Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.

ARPACK is a collection of Fortran77 subroutines designed to solve large scale eigenvalue problems.

SymbolicC++ is a general purpose computer algebra system.

Machine Learning

mlpack is a scalable machine learning library, written in C++, that aims to provide fast, extensible implementations of cutting-edge machine learning algorithms.

Dlib is a modern C++ tool kit containing machine learning algorithms and tools for creating complex software in C++ to solve real world problems. It is used in both industry and academia in a wide range of domains including robotics, embedded devices, mobile phones, and large high performance computing environments.

Other

QuantLib is a C++ library for financial quantitative analysts and developers. The software provides various facilities for computing values of financial instruments and related calculations.

FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) in one or more dimensions, of arbitrary input size, and of both real and complex data.

ROOT is a modular scientific software framework. It provides all the functionalities needed to deal with big data processing, statistical analysis, visualisation and storage.

KFilter is a variable dimension Extended Kalman Filter library.

Rcpp package provides R functions as well as C++ classes which offer a seamless integration of R and C++.

SigPack SigPack is a C++ signal processing library using the Armadillo library as a base.