vSMC  v3.0.0
Scalable Monte Carlo
Classes | Typedefs

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...
 

Detailed Description

Random number generating using AES-NI.

Typedef Documentation

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.

template<typename ResultType , std::size_t Rounds = 10, std::size_t Blocks = 8>
using vsmc::AES128Engine = typedef AESNIEngine<ResultType, AES128KeySeq<Rounds>, Rounds, Blocks>

AES-128 RNG engine.

Definition at line 1027 of file aes_ni.hpp.

template<std::size_t Rounds>
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.

template<typename ResultType , std::size_t Rounds = 12, std::size_t Blocks = 8>
using vsmc::AES192Engine = typedef AESNIEngine<ResultType, AES192KeySeq<Rounds>, Rounds, Blocks>

AES-192 RNG engine.

Definition at line 1034 of file aes_ni.hpp.

template<std::size_t Rounds>
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.

template<typename ResultType , std::size_t Rounds = 14, std::size_t Blocks = 8>
using vsmc::AES256Engine = typedef AESNIEngine<ResultType, AES256KeySeq<Rounds>, Rounds, Blocks>

AES-256 RNG engine.

Definition at line 1041 of file aes_ni.hpp.

template<std::size_t Rounds>
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.

template<typename ResultType , typename KeySeqType , std::size_t Rounds, std::size_t Blocks>
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.

template<typename ResultType , std::size_t Rounds = 5, std::size_t Blocks = 8, typename Constants = ARSConstants>
using vsmc::ARSEngine = typedef AESNIEngine<ResultType, ARSKeySeq<Constants>, Rounds, Blocks>

ARS RNG engine.

Definition at line 1049 of file aes_ni.hpp.

template<typename Constants = ARSConstants>
using vsmc::ARSKeySeq = typedef internal::ARSKeySeqImpl<Constants>

Default ARSEngine key sequence generator.

Template Parameters
ConstantsA 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.