RedCrow9564 / Random_SVD-CPP

A C++ implementation of a randomized algorithm for SVD decomposition.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Random SVD - C++

MIT LicenseGitHub last commit

A C++ implementation of a randomized algorithm for SVD decomposition (published in [1]). This is the same algorithm implemented here (in Python).

Getting Started

The code uses the blaze package for numerical computations in C++. This package is linked to LAPACK and OpenMP, which can be fetched from the Numpy Python package (LAPACK may be replaced with any equivalent implementations, such as MKL, ATLAS etc.). Blaze itself can be fetched using the conan package manager via:

conan install ..

This command installs all packages enlisted in conanfile.txt (which is only blaze, in this case). To compile this code for Windows, using the CMake system and the MSVC (Visual C++) compiler:

cmake .. -G "Visual Studio 16"
cmake --build . --config Release

These commands compile the code, according to the instructions in CMakeLists.txt. Then a folder named 'bin' is created, and it contains the compiled program 'main.exe'. Executing this file presents a demonstration of this randomized algorithm on some inputs.

License

This project is licensed under the MIT License - see the LICENSE file for details

References

[1] P.-G. Martinsson, V. Rokhlin, and M. Tygert. A randomized al- gorithm for the decomposition of matrices. Applied and Computa- tional Harmonic Analysis, 30(1):47—68, 2011.

About

A C++ implementation of a randomized algorithm for SVD decomposition.

License:MIT License


Languages

Language:C++ 94.2%Language:CMake 5.8%