A SIMD optimized version of the WELL512a random algorithm.
Go to file
Peter Pettersson df14bb6ae5 Minor cleanup. 2013-04-22 22:14:28 +02:00
VS2012 Inline the classes. 2013-04-22 21:43:30 +02:00
gcc Minor cleanup. 2013-04-22 22:14:28 +02:00
RandomWELL512a.h Minor cleanup. 2013-04-22 22:14:28 +02:00
RandomWELL512a_SSE2.h Minor cleanup. 2013-04-22 22:14:28 +02:00
Timer.h Convert from tabs to spaces. 2013-04-22 21:43:31 +02:00
WELL512a.cpp Initial version. 2013-04-20 19:56:34 +02:00
WELL512a.h Initial version. 2013-04-20 19:56:34 +02:00
license.txt Initial version. 2013-04-20 19:56:34 +02:00
main.cpp Minor code standard cleanup. 2013-04-22 21:43:31 +02:00
readme.txt Minor cleanup. 2013-04-22 22:14:28 +02:00

readme.txt

A SIMD optimized version of the WELL512a random algorithm.


=== OVERVIEW ===
WELL512a is a pseudorandom number generator algorithm developed by
F. Panneton, P. L'Ecuyer and M. Matsumoto.

This is a fast implementation of that algorithm in C++ using SSE2 intrinsics
for the x86 / x64 platform.

For a detailed description of how the algorithm works, please see the
following pages:
1) http://en.wikipedia.org/wiki/Well_equidistributed_long-period_linear
2) http://www.iro.umontreal.ca/~panneton/WELLRNG.html


=== PERFORMANCE ===
This implementation is generally about 2-3 times faster than the C
implementation by the original authors.

Some example numbers from the included test program run on an Intel Core
i7-3770K 3.5GHz:

                VS2012     gcc 4.6.3
C++ SSE2        0.078      0.07
Original C      0.223      0.19
-------------------------------------
                x2.86      x2.71


=== REQUIREMENTS ===
An SSE2 capable CPU (i.e. AMD Athlon 64, Intel Pentium 4 or newer).

It's been tested with Visual Studio 2012 and gcc 4.6.3 but should compile
and run on other compilers as well.


=== LICENSE ===
All the source code, except WELL512a.cpp|h that contains the original
implementation, are released under the Simplified BSD license which allows
you to use this code in any open or closed source project.


=== ACKNOWLEDGEMENTS ===
Thanks to Marcus Geelnard for code review and many suggestions for
improvements.