IT++

From Wikipedia, the free encyclopedia

IT++ is a C++ library of classes and functions for linear algebra, numerical optimization, signal processing, communications, and statistics.[1] It is being developed by researchers in these areas and is widely used by researchers, both in the communications industry and universities.[2][3] The IT++ library originates from the former Department of Information Theory at the Chalmers University of Technology, Gothenburg, Sweden.

Stable release
4.3.1 / July 6, 2013; 12 years ago (2013-07-06)
Written inC++
Available inEnglish
Quick facts Stable release, Written in ...
IT++ C++ Library
Stable release
4.3.1 / July 6, 2013; 12 years ago (2013-07-06)
Written inC++
Operating systemCross-platform
Available inEnglish
TypeSoftware library
LicenseGPL open source
Websiteitpp.sourceforge.net
Close

The kernel of the IT++ library is templated vector and matrix classes, and a set of accompanying functions. Such a kernel makes IT++ library similar to Matlab/Octave. For increased functionality, speed and accuracy, IT++ can make extensive use of existing free and open source libraries, especially BLAS, LAPACK and FFTW libraries. Instead of BLAS and LAPACK, some optimized platform-specific libraries can be used as well, i.e.:

  • ATLAS (Automatically Tuned Linear Algebra Software) - includes optimised BLAS, CBLAS and a limited set of LAPACK routines;
  • MKL (Intel Math Kernel Library) - includes all required BLAS, CBLAS, LAPACK and FFT routines (FFTW not required);
  • ACML (AMD Core Math Library) - includes BLAS, LAPACK and FFT routines (FFTW not required).

It is possible to compile and use IT++ without any of the above-listed libraries, but the functionality will be reduced. IT++ works on Linux, Solaris, Windows (with Cygwin, MinGW/MSYS, or Microsoft Visual C++) and OS X operating systems.

Example

Here is a trivial example demonstrating the IT++ functionality similar to Matlab/Octave,

import <itpp/itbase.h>;
import std;

using itpp::Mat;
using itpp::Vec;

int main() {
    Vec<double> a = itpp::linspace(0.0, 2.0, 2);
    Vec<double> b("1.0 2.0");
    Vec<double> c = 2 * a + 3 * b;
    std::println("c = {}", c);

    Mat<double> A("1.0 2.0; 3.0 4.0");
    Mat<double> B("0.0 1.0; 1.0 0.0");
    Mat<double> C = A * B + 2 * A;
    std::println("C = {}", C);
    std::println("inverse of B = {}", itpp::inv(B));

    return 0;
}

See also

References

Related Articles

Wikiwand AI