EigenRand
0.5.0
|
EigenRand is a header-only library for Eigen, providing vectorized random number engines and vectorized random distribution generators. Since the classic Random functions of Eigen relies on an old C function rand()
, there is no way to control random numbers and no guarantee for quality of generated numbers. In addition, Eigen's Random is slow because rand() is hard to vectorize.
EigenRand provides a variety of random distribution functions similar to C++11 standard's random functions, which can be vectorized and easily integrated into Eigen's expressions of Matrix and Array.
You can get 5~10 times speed by just replacing old Eigen's Random or unvectorizable c++11 random number generators with EigenRand.
EigenRand currently supports only x86-64 architecture (SSE, AVX, AVX2) and ARM64 NEON.
EigenRand is distributed under the MIT License.
If you want to contribute or report bugs, please visit Github repository https://github.com/bab2min/EigenRand.