Skip to content

tim-janik/scl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

63c33fc · Dec 24, 2023

History

72 Commits
Dec 3, 2023
Dec 13, 2023
Dec 13, 2023
Dec 13, 2023
Dec 13, 2023
Dec 14, 2023
Oct 24, 2023
Dec 14, 2023
Dec 24, 2023

Repository files navigation

SCL

The Small/simple C/C++ Library (SCL) provides various algorithms in a portable way, with little to no external dependencies. The library is written in C++17 and uses the MPL-2.0 License or Public Domain dedications.

The subdirectories are structured as follows:

  • mwc256/ contains a Public Domain 256 bit Multiply-With-Carry PRNG implementation for generic CPUs (ALU). With just a multiplication and add per round, this PRNG is as simple as it can get. On 64 bit machines it is probably the fastest single-data PRNG implementation, it passes PractRand at 32TB.
  • shishua/ contains a Public Domain Shishua PRNG implementation for generic CPUs (ALU), the SSE2/3 and AVX2 instruction set variants. This is currently the fastest known PRNG implementation, it passes PractRand at 32TB.
  • chacha/ contains a Public Domain ChaCha block cipher implementation for generic CPUs (ALU), the SSE2/3 and AVX2 instruction set variants. This is probably the fastest CSPRNG implementation, it passes PractRand at 32TB.
  • keccak/ contains a Public Domain Keccak PRNG implementation for generic CPUs (ALU) and system entropy gathering code according to the "Welcome to the Entropics: Boot-Time Entropy in Embedded Devices" paper. Using Keccak allows for a 1600 bit CSPRNG entropy pool, it passes PractRand at 32TB.
  • spline/ contains a Public Domain cubic spline interpolation implementation, which can be used to create an approximation of a function given a number of knots (control points) with third-order polynomial segments connecting each pair of data points.