vSMC
v3.0.0
Scalable Monte Carlo
|
Random number generating using AES-NI. More...
Classes | |
class | vsmc::AESNIGenerator< KeySeqType, Rounds, Blocks > |
RNG generator using AES-NI instructions. More... | |
class | vsmc::ARSConstants |
Default ARS constants. More... | |
Typedefs | |
using | vsmc::AES128_64 = AES128Engine< std::uint64_t > |
AES-128 RNG engine with 64-bit integers output. More... | |
template<typename ResultType , std::size_t Rounds = 10, std::size_t Blocks = 8> | |
using | vsmc::AES128Engine = AESNIEngine< ResultType, AES128KeySeq< Rounds >, Rounds, Blocks > |
AES-128 RNG engine. More... | |
template<std::size_t Rounds> | |
using | vsmc::AES128KeySeq = internal::AESKeySeq< Rounds, internal::AES128KeySeqGenerator > |
AES128Engine key sequence generator. More... | |
using | vsmc::AES128x1 = AES128Engine< std::uint32_t, 10, 1 > |
AES-128 RNG engine with 32-bit integers output, 1 block. More... | |
using | vsmc::AES128x1_64 = AES128Engine< std::uint64_t, 10, 1 > |
AES-128 RNG engine with 64-bit integers output, 1 block. More... | |
using | vsmc::AES128x2 = AES128Engine< std::uint32_t, 10, 2 > |
AES-128 RNG engine with 32-bit integers output, 2 blocks. More... | |
using | vsmc::AES128x2_64 = AES128Engine< std::uint64_t, 10, 2 > |
AES-128 RNG engine with 64-bit integers output, 2 blocks. More... | |
using | vsmc::AES128x4 = AES128Engine< std::uint32_t, 10, 4 > |
AES-128 RNG engine with 32-bit integers output, 4 blocks. More... | |
using | vsmc::AES128x4_64 = AES128Engine< std::uint64_t, 10, 4 > |
AES-128 RNG engine with 64-bit integers output, 4 blocks. More... | |
using | vsmc::AES128x8 = AES128Engine< std::uint32_t, 10, 8 > |
AES-128 RNG engine with 32-bit integers output, 8 blocks. More... | |
using | vsmc::AES128x8_64 = AES128Engine< std::uint64_t, 10, 8 > |
AES-128 RNG engine with 64-bit integers output, 8 blocks. More... | |
using | vsmc::AES192 = AES192Engine< std::uint32_t > |
AES-192 RNG engine with 32-bit integers output. More... | |
using | vsmc::AES192_64 = AES192Engine< std::uint64_t > |
AES-192 RNG engine with 64-bit integers output. More... | |
template<typename ResultType , std::size_t Rounds = 12, std::size_t Blocks = 8> | |
using | vsmc::AES192Engine = AESNIEngine< ResultType, AES192KeySeq< Rounds >, Rounds, Blocks > |
AES-192 RNG engine. More... | |
template<std::size_t Rounds> | |
using | vsmc::AES192KeySeq = internal::AESKeySeq< Rounds, internal::AES192KeySeqGenerator > |
AES192Engine key sequence generator. More... | |
using | vsmc::AES192x1 = AES192Engine< std::uint32_t, 12, 1 > |
AES-192 RNG engine with 32-bit integers output, 1 block. More... | |
using | vsmc::AES192x1_64 = AES192Engine< std::uint64_t, 12, 1 > |
AES-192 RNG engine with 64-bit integers output, 1 block. More... | |
using | vsmc::AES192x2 = AES192Engine< std::uint32_t, 12, 2 > |
AES-192 RNG engine with 32-bit integers output, 2 blocks. More... | |
using | vsmc::AES192x2_64 = AES192Engine< std::uint64_t, 12, 2 > |
AES-192 RNG engine with 64-bit integers output, 2 blocks. More... | |
using | vsmc::AES192x4 = AES192Engine< std::uint32_t, 12, 4 > |
AES-192 RNG engine with 32-bit integers output, 4 blocks. More... | |
using | vsmc::AES192x4_64 = AES192Engine< std::uint64_t, 12, 4 > |
AES-192 RNG engine with 64-bit integers output, 4 blocks. More... | |
using | vsmc::AES192x8 = AES192Engine< std::uint32_t, 12, 8 > |
AES-192 RNG engine with 32-bit integers output, 8 blocks. More... | |
using | vsmc::AES192x8_64 = AES192Engine< std::uint64_t, 12, 8 > |
AES-192 RNG engine with 64-bit integers output, 8 blocks. More... | |
using | vsmc::AES256 = AES256Engine< std::uint32_t > |
AES-256 RNG engine with 32-bit integers output. More... | |
using | vsmc::AES256_64 = AES256Engine< std::uint64_t > |
AES-256 RNG engine with 64-bit integers output. More... | |
template<typename ResultType , std::size_t Rounds = 14, std::size_t Blocks = 8> | |
using | vsmc::AES256Engine = AESNIEngine< ResultType, AES256KeySeq< Rounds >, Rounds, Blocks > |
AES-256 RNG engine. More... | |
template<std::size_t Rounds> | |
using | vsmc::AES256KeySeq = internal::AESKeySeq< Rounds, internal::AES256KeySeqGenerator > |
AES256Engine key sequence generator. More... | |
using | vsmc::AES256x1 = AES256Engine< std::uint32_t, 14, 1 > |
AES-256 RNG engine with 32-bit integers output, 1 block. More... | |
using | vsmc::AES256x1_64 = AES256Engine< std::uint64_t, 14, 1 > |
AES-256 RNG engine with 64-bit integers output, 1 block. More... | |
using | vsmc::AES256x2 = AES256Engine< std::uint32_t, 14, 2 > |
AES-256 RNG engine with 32-bit integers output, 2 blocks. More... | |
using | vsmc::AES256x2_64 = AES256Engine< std::uint64_t, 14, 2 > |
AES-256 RNG engine with 64-bit integers output, 2 blocks. More... | |
using | vsmc::AES256x4 = AES256Engine< std::uint32_t, 14, 4 > |
AES-256 RNG engine with 32-bit integers output, 4 blocks. More... | |
using | vsmc::AES256x4_64 = AES256Engine< std::uint64_t, 14, 4 > |
AES-256 RNG engine with 64-bit integers output, 4 blocks. More... | |
using | vsmc::AES256x8 = AES256Engine< std::uint32_t, 14, 8 > |
AES-256 RNG engine with 32-bit integers output, 8 blocks. More... | |
using | vsmc::AES256x8_64 = AES256Engine< std::uint64_t, 14, 8 > |
AES-256 RNG engine with 64-bit integers output, 8 blocks. More... | |
template<typename ResultType , typename KeySeqType , std::size_t Rounds, std::size_t Blocks> | |
using | vsmc::AESNIEngine = CounterEngine< ResultType, AESNIGenerator< KeySeqType, Rounds, Blocks >> |
RNG engine using AES-NI instructions. More... | |
using | vsmc::ARS = ARSEngine< std::uint32_t > |
ARS RNG engine with 32-bit integers output, default blocks and default rounds. More... | |
using | vsmc::ARS_64 = ARSEngine< std::uint64_t > |
ARS RNG engine with 64-bit integers output, default blocks and default rounds. More... | |
template<typename ResultType , std::size_t Rounds = 5, std::size_t Blocks = 8, typename Constants = ARSConstants> | |
using | vsmc::ARSEngine = AESNIEngine< ResultType, ARSKeySeq< Constants >, Rounds, Blocks > |
ARS RNG engine. More... | |
template<typename Constants = ARSConstants> | |
using | vsmc::ARSKeySeq = internal::ARSKeySeqImpl< Constants > |
Default ARSEngine key sequence generator. More... | |
using | vsmc::ARSx1 = ARSEngine< std::uint32_t, 5, 1 > |
ARS RNG engine with 32-bit integers output, 1 block and default rounds. More... | |
using | vsmc::ARSx1_64 = ARSEngine< std::uint64_t, 5, 1 > |
ARS RNG engine with 64-bit integers output, 1 block and default rounds. More... | |
using | vsmc::ARSx2 = ARSEngine< std::uint32_t, 5, 2 > |
ARS RNG engine with 32-bit integers output, 2 blocks and default rounds. More... | |
using | vsmc::ARSx2_64 = ARSEngine< std::uint64_t, 5, 2 > |
ARS RNG engine with 64-bit integers output, 2 blocks and default rounds. More... | |
using | vsmc::ARSx4 = ARSEngine< std::uint32_t, 5, 4 > |
ARS RNG engine with 32-bit integers output, 4 blocks and default rounds. More... | |
using | vsmc::ARSx4_64 = ARSEngine< std::uint64_t, 5, 4 > |
ARS RNG engine with 64-bit integers output, 4 blocks and default rounds. More... | |
using | vsmc::ARSx8 = ARSEngine< std::uint32_t, 5, 8 > |
ARS RNG engine with 32-bit integers output, 8 blocks and default rounds. More... | |
using | vsmc::ARSx8_64 = ARSEngine< std::uint64_t, 5, 8 > |
ARS RNG engine with 64-bit integers output, 8 blocks and default rounds. More... | |
Random number generating using AES-NI.
using vsmc::AES128_64 = typedef AES128Engine<std::uint64_t> |
AES-128 RNG engine with 64-bit integers output.
Definition at line 1088 of file aes_ni.hpp.
using vsmc::AES128Engine = typedef AESNIEngine<ResultType, AES128KeySeq<Rounds>, Rounds, Blocks> |
AES-128 RNG engine.
Definition at line 1027 of file aes_ni.hpp.
using vsmc::AES128KeySeq = typedef internal::AESKeySeq<Rounds, internal::AES128KeySeqGenerator> |
AES128Engine key sequence generator.
Definition at line 995 of file aes_ni.hpp.
using vsmc::AES128x1 = typedef AES128Engine<std::uint32_t, 10 , 1> |
AES-128 RNG engine with 32-bit integers output, 1 block.
Definition at line 1053 of file aes_ni.hpp.
using vsmc::AES128x1_64 = typedef AES128Engine<std::uint64_t, 10 , 1> |
AES-128 RNG engine with 64-bit integers output, 1 block.
Definition at line 1069 of file aes_ni.hpp.
using vsmc::AES128x2 = typedef AES128Engine<std::uint32_t, 10 , 2> |
AES-128 RNG engine with 32-bit integers output, 2 blocks.
Definition at line 1057 of file aes_ni.hpp.
using vsmc::AES128x2_64 = typedef AES128Engine<std::uint64_t, 10 , 2> |
AES-128 RNG engine with 64-bit integers output, 2 blocks.
Definition at line 1073 of file aes_ni.hpp.
using vsmc::AES128x4 = typedef AES128Engine<std::uint32_t, 10 , 4> |
AES-128 RNG engine with 32-bit integers output, 4 blocks.
Definition at line 1061 of file aes_ni.hpp.
using vsmc::AES128x4_64 = typedef AES128Engine<std::uint64_t, 10 , 4> |
AES-128 RNG engine with 64-bit integers output, 4 blocks.
Definition at line 1077 of file aes_ni.hpp.
using vsmc::AES128x8 = typedef AES128Engine<std::uint32_t, 10 , 8> |
AES-128 RNG engine with 32-bit integers output, 8 blocks.
Definition at line 1065 of file aes_ni.hpp.
using vsmc::AES128x8_64 = typedef AES128Engine<std::uint64_t, 10 , 8> |
AES-128 RNG engine with 64-bit integers output, 8 blocks.
Definition at line 1081 of file aes_ni.hpp.
using vsmc::AES192 = typedef AES192Engine<std::uint32_t> |
AES-192 RNG engine with 32-bit integers output.
Definition at line 1124 of file aes_ni.hpp.
using vsmc::AES192_64 = typedef AES192Engine<std::uint64_t> |
AES-192 RNG engine with 64-bit integers output.
Definition at line 1128 of file aes_ni.hpp.
using vsmc::AES192Engine = typedef AESNIEngine<ResultType, AES192KeySeq<Rounds>, Rounds, Blocks> |
AES-192 RNG engine.
Definition at line 1034 of file aes_ni.hpp.
using vsmc::AES192KeySeq = typedef internal::AESKeySeq<Rounds, internal::AES192KeySeqGenerator> |
AES192Engine key sequence generator.
Definition at line 1001 of file aes_ni.hpp.
using vsmc::AES192x1 = typedef AES192Engine<std::uint32_t, 12 , 1> |
AES-192 RNG engine with 32-bit integers output, 1 block.
Definition at line 1092 of file aes_ni.hpp.
using vsmc::AES192x1_64 = typedef AES192Engine<std::uint64_t, 12 , 1> |
AES-192 RNG engine with 64-bit integers output, 1 block.
Definition at line 1108 of file aes_ni.hpp.
using vsmc::AES192x2 = typedef AES192Engine<std::uint32_t, 12 , 2> |
AES-192 RNG engine with 32-bit integers output, 2 blocks.
Definition at line 1096 of file aes_ni.hpp.
using vsmc::AES192x2_64 = typedef AES192Engine<std::uint64_t, 12 , 2> |
AES-192 RNG engine with 64-bit integers output, 2 blocks.
Definition at line 1112 of file aes_ni.hpp.
using vsmc::AES192x4 = typedef AES192Engine<std::uint32_t, 12 , 4> |
AES-192 RNG engine with 32-bit integers output, 4 blocks.
Definition at line 1100 of file aes_ni.hpp.
using vsmc::AES192x4_64 = typedef AES192Engine<std::uint64_t, 12 , 4> |
AES-192 RNG engine with 64-bit integers output, 4 blocks.
Definition at line 1116 of file aes_ni.hpp.
using vsmc::AES192x8 = typedef AES192Engine<std::uint32_t, 12 , 8> |
AES-192 RNG engine with 32-bit integers output, 8 blocks.
Definition at line 1104 of file aes_ni.hpp.
using vsmc::AES192x8_64 = typedef AES192Engine<std::uint64_t, 12 , 8> |
AES-192 RNG engine with 64-bit integers output, 8 blocks.
Definition at line 1120 of file aes_ni.hpp.
using vsmc::AES256 = typedef AES256Engine<std::uint32_t> |
AES-256 RNG engine with 32-bit integers output.
Definition at line 1164 of file aes_ni.hpp.
using vsmc::AES256_64 = typedef AES256Engine<std::uint64_t> |
AES-256 RNG engine with 64-bit integers output.
Definition at line 1168 of file aes_ni.hpp.
using vsmc::AES256Engine = typedef AESNIEngine<ResultType, AES256KeySeq<Rounds>, Rounds, Blocks> |
AES-256 RNG engine.
Definition at line 1041 of file aes_ni.hpp.
using vsmc::AES256KeySeq = typedef internal::AESKeySeq<Rounds, internal::AES256KeySeqGenerator> |
AES256Engine key sequence generator.
Definition at line 1007 of file aes_ni.hpp.
using vsmc::AES256x1 = typedef AES256Engine<std::uint32_t, 14 , 1> |
AES-256 RNG engine with 32-bit integers output, 1 block.
Definition at line 1132 of file aes_ni.hpp.
using vsmc::AES256x1_64 = typedef AES256Engine<std::uint64_t, 14 , 1> |
AES-256 RNG engine with 64-bit integers output, 1 block.
Definition at line 1148 of file aes_ni.hpp.
using vsmc::AES256x2 = typedef AES256Engine<std::uint32_t, 14 , 2> |
AES-256 RNG engine with 32-bit integers output, 2 blocks.
Definition at line 1136 of file aes_ni.hpp.
using vsmc::AES256x2_64 = typedef AES256Engine<std::uint64_t, 14 , 2> |
AES-256 RNG engine with 64-bit integers output, 2 blocks.
Definition at line 1152 of file aes_ni.hpp.
using vsmc::AES256x4 = typedef AES256Engine<std::uint32_t, 14 , 4> |
AES-256 RNG engine with 32-bit integers output, 4 blocks.
Definition at line 1140 of file aes_ni.hpp.
using vsmc::AES256x4_64 = typedef AES256Engine<std::uint64_t, 14 , 4> |
AES-256 RNG engine with 64-bit integers output, 4 blocks.
Definition at line 1156 of file aes_ni.hpp.
using vsmc::AES256x8 = typedef AES256Engine<std::uint32_t, 14 , 8> |
AES-256 RNG engine with 32-bit integers output, 8 blocks.
Definition at line 1144 of file aes_ni.hpp.
using vsmc::AES256x8_64 = typedef AES256Engine<std::uint64_t, 14 , 8> |
AES-256 RNG engine with 64-bit integers output, 8 blocks.
Definition at line 1160 of file aes_ni.hpp.
using vsmc::AESNIEngine = typedef CounterEngine<ResultType, AESNIGenerator<KeySeqType, Rounds, Blocks>> |
RNG engine using AES-NI instructions.
Definition at line 293 of file aes_ni.hpp.
using vsmc::ARS = typedef ARSEngine<std::uint32_t> |
ARS RNG engine with 32-bit integers output, default blocks and default rounds.
Definition at line 1213 of file aes_ni.hpp.
using vsmc::ARS_64 = typedef ARSEngine<std::uint64_t> |
ARS RNG engine with 64-bit integers output, default blocks and default rounds.
Definition at line 1218 of file aes_ni.hpp.
using vsmc::ARSEngine = typedef AESNIEngine<ResultType, ARSKeySeq<Constants>, Rounds, Blocks> |
ARS RNG engine.
Definition at line 1049 of file aes_ni.hpp.
using vsmc::ARSKeySeq = typedef internal::ARSKeySeqImpl<Constants> |
Default ARSEngine key sequence generator.
Constants | A trait class that defines algorithm constants, see ARSConstants |
This generator implement the ARS algorithm in Random123, developed John K. Salmon, Mark A. Moraes, Ron O. Dror, and David E. Shaw.
Definition at line 1020 of file aes_ni.hpp.
using vsmc::ARSx1 = typedef ARSEngine<std::uint32_t, 5 , 1> |
ARS RNG engine with 32-bit integers output, 1 block and default rounds.
Definition at line 1173 of file aes_ni.hpp.
using vsmc::ARSx1_64 = typedef ARSEngine<std::uint64_t, 5 , 1> |
ARS RNG engine with 64-bit integers output, 1 block and default rounds.
Definition at line 1193 of file aes_ni.hpp.
using vsmc::ARSx2 = typedef ARSEngine<std::uint32_t, 5 , 2> |
ARS RNG engine with 32-bit integers output, 2 blocks and default rounds.
Definition at line 1178 of file aes_ni.hpp.
using vsmc::ARSx2_64 = typedef ARSEngine<std::uint64_t, 5 , 2> |
ARS RNG engine with 64-bit integers output, 2 blocks and default rounds.
Definition at line 1198 of file aes_ni.hpp.
using vsmc::ARSx4 = typedef ARSEngine<std::uint32_t, 5 , 4> |
ARS RNG engine with 32-bit integers output, 4 blocks and default rounds.
Definition at line 1183 of file aes_ni.hpp.
using vsmc::ARSx4_64 = typedef ARSEngine<std::uint64_t, 5 , 4> |
ARS RNG engine with 64-bit integers output, 4 blocks and default rounds.
Definition at line 1203 of file aes_ni.hpp.
using vsmc::ARSx8 = typedef ARSEngine<std::uint32_t, 5 , 8> |
ARS RNG engine with 32-bit integers output, 8 blocks and default rounds.
Definition at line 1188 of file aes_ni.hpp.
using vsmc::ARSx8_64 = typedef ARSEngine<std::uint64_t, 5 , 8> |
ARS RNG engine with 64-bit integers output, 8 blocks and default rounds.
Definition at line 1208 of file aes_ni.hpp.