vSMC  v3.0.0
Scalable Monte Carlo
rng_define_macro_alias.hpp
Go to the documentation of this file.
1 //============================================================================
2 // vSMC/include/rng/internal/rng_define_macro_alias.hpp
3 //----------------------------------------------------------------------------
4 // vSMC: Scalable Monte Carlo
5 //----------------------------------------------------------------------------
6 // Copyright (c) 2013-2016, 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 VSMC_RNG_DEFINE_MACRO_NA
33 #define VSMC_RNG_DEFINE_MACRO_NA(RNGType, Name, name)
34 #endif
35 
36 VSMC_RNG_DEFINE_MACRO(::vsmc::RNG, RNG, rng)
37 VSMC_RNG_DEFINE_MACRO(::vsmc::RNG_64, RNG_64, rng_64)
38 
39 VSMC_RNG_DEFINE_MACRO(::vsmc::RNGMini, RNGMini, rngmini)
40 VSMC_RNG_DEFINE_MACRO(::vsmc::RNGMini_64, RNGMini_64, rngmini_64)
41 
42 VSMC_RNG_DEFINE_MACRO(::vsmc::Philox, Philox, philox)
43 VSMC_RNG_DEFINE_MACRO(::vsmc::Philox_64, Philox_64, philox_64)
44 
45 VSMC_RNG_DEFINE_MACRO(::vsmc::Threefry, Threefry, threefry)
46 VSMC_RNG_DEFINE_MACRO(::vsmc::Threefry_64, Threefry_64, threefry_64)
47 
48 #if VSMC_HAS_AES_NI
49 #define VSMC_RNG_DEFINE_MACRO_AES_NI VSMC_RNG_DEFINE_MACRO
50 #else
51 #define VSMC_RNG_DEFINE_MACRO_AES_NI VSMC_RNG_DEFINE_MACRO_NA
52 #endif
53 
55 VSMC_RNG_DEFINE_MACRO_AES_NI(::vsmc::AES128_64, AES128_64, aes128_64)
56 
57 VSMC_RNG_DEFINE_MACRO_AES_NI(::vsmc::AES192, AES192, aes192)
58 VSMC_RNG_DEFINE_MACRO_AES_NI(::vsmc::AES192_64, AES192_64, aes192_64)
59 
60 VSMC_RNG_DEFINE_MACRO_AES_NI(::vsmc::AES256, AES256, aes256)
61 VSMC_RNG_DEFINE_MACRO_AES_NI(::vsmc::AES256_64, AES256_64, aes256_64)
62 
64 VSMC_RNG_DEFINE_MACRO_AES_NI(::vsmc::ARS_64, ARS_64, ars_64)
65 
66 #undef VSMC_RNG_DEFINE_MACRO_AES_NI
Definition: monitor.hpp:48
::vsmc::Philox2x32 RNGMini
The 32-bits RNG with smallest state.
Definition: engine.hpp:95
::vsmc::ARS RNG
The default 32-bits RNG.
Definition: engine.hpp:87
Counter based RNG engine.
Definition: counter.hpp:187
AES256Engine< std::uint64_t > AES256_64
AES-256 RNG engine with 64-bit integers output.
Definition: aes_ni.hpp:1168
::vsmc::Philox2x32_64 RNGMini_64
The 64-bits RNG with smallest state.
Definition: engine.hpp:99
#define VSMC_RNG_DEFINE_MACRO_AES_NI
ARSEngine< std::uint64_t > ARS_64
ARS RNG engine with 64-bit integers output, default blocks and default rounds.
Definition: aes_ni.hpp:1218
ARSEngine< std::uint32_t > ARS
ARS RNG engine with 32-bit integers output, default blocks and default rounds.
Definition: aes_ni.hpp:1213
Philox4x64Engine< std::uint32_t > Philox
The default 32-bit Philox engine.
Definition: philox.hpp:586
Threefry4x64Engine< std::uint32_t > Threefry
The default 32-bit Threefry engine.
Definition: threefry.hpp:666
AES128Engine< std::uint32_t > AES128
AES-128 RNG engine with 32-bit integers output.
Definition: aes_ni.hpp:1084
Threefry4x64Engine< std::uint64_t > Threefry_64
The default 64-bit Threefry engine.
Definition: threefry.hpp:670
AES128Engine< std::uint64_t > AES128_64
AES-128 RNG engine with 64-bit integers output.
Definition: aes_ni.hpp:1088
AES192Engine< std::uint64_t > AES192_64
AES-192 RNG engine with 64-bit integers output.
Definition: aes_ni.hpp:1128
AES192Engine< std::uint32_t > AES192
AES-192 RNG engine with 32-bit integers output.
Definition: aes_ni.hpp:1124
Philox4x64Engine< std::uint64_t > Philox_64
The default 64-bit Philox engine.
Definition: philox.hpp:590
ARS_64 RNG_64
The default 64-bits RNG.
Definition: engine.hpp:91
AES256Engine< std::uint32_t > AES256
AES-256 RNG engine with 32-bit integers output.
Definition: aes_ni.hpp:1164