MCKL
Monte Carlo Kernel Library
include
mckl
random
rng.hpp
Go to the documentation of this file.
1
//============================================================================
2
// MCKL/include/mckl/random/rng.hpp
3
//----------------------------------------------------------------------------
4
// MCKL: Monte Carlo Kernel Library
5
//----------------------------------------------------------------------------
6
// Copyright (c) 2013-2018, Yan Zhou
7
// All rights reserved.
8
//
9
// Redistribution and use in source and binary forms, with or without
10
// modification, are permitted provided that the following conditions are met:
11
//
12
// Redistributions of source code must retain the above copyright notice,
13
// this list of conditions and the following disclaimer.
14
//
15
// Redistributions in binary form must reproduce the above copyright notice,
16
// this list of conditions and the following disclaimer in the documentation
17
// and/or other materials provided with the distribution.
18
//
19
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS
20
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
23
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29
// POSSIBILITY OF SUCH DAMAGE.
30
//============================================================================
31
32
#ifndef MCKL_RANDOM_RNG_HPP
33
#define MCKL_RANDOM_RNG_HPP
34
35
#include <
mckl/internal/config.h
>
36
39
#ifndef MCKL_RNG_TYPE
40
#if MCKL_HAS_AESNI
41
#define MCKL_RNG_TYPE ::mckl::ARS
42
#else
43
#define MCKL_RNG_TYPE ::mckl::Philox4x32
44
#endif
45
#endif
46
49
#ifndef MCKL_RNG_64_TYPE
50
#if MCKL_HAS_AESNI
51
#define MCKL_RNG_64_TYPE ::mckl::ARS_64
52
#else
53
#define MCKL_RNG_64_TYPE ::mckl::Philox4x32_64
54
#endif
55
#endif
56
57
#include <
mckl/random/aes.hpp
>
58
#include <
mckl/random/philox.hpp
>
59
#include <
mckl/random/threefry.hpp
>
60
61
#if MCKL_HAS_MKL
62
#include <
mckl/random/mkl.hpp
>
63
#endif
64
65
#if MCKL_HAS_RDRAND
66
#include <
mckl/random/rdrand.hpp
>
67
#endif
68
69
namespace
mckl
{
70
73
using
RNG
=
MCKL_RNG_TYPE
;
74
77
using
RNG_64
=
MCKL_RNG_64_TYPE
;
78
79
}
// namespace mckl
80
81
#endif // MCKL_RANDOM_RNG_HPP
mckl::CounterEngine
Counter based RNG engine.
Definition:
counter.hpp:62
mkl.hpp
config.h
MCKL_RNG_TYPE
#define MCKL_RNG_TYPE
Default RNG type.
Definition:
rng.hpp:41
mckl
Definition:
mcmc.hpp:40
rdrand.hpp
MCKL_RNG_64_TYPE
#define MCKL_RNG_64_TYPE
Default RNG_64 type.
Definition:
rng.hpp:51
philox.hpp
aes.hpp
threefry.hpp
Generated by
1.8.13