GithubHelp home page GithubHelp logo

onox / xoshiro Goto Github PK

View Code? Open in Web Editor NEW
7.0 1.0 0.0 34 KB

Ada/SPARK port of the xoshiro128++ and xoshiro256++ pseudo-random number generators

License: Apache License 2.0

Ada 100.00%
ada spark prng random xoshiro

xoshiro's Introduction

Build status Alire License GitHub release IRC Gitter chat

Xoshiro random number generators

An Ada/SPARK port of the xoshiro128++ and xoshiro256++ pseudo-random number generators.

For a SIMD implementation using SSE2 or AVX2 intrinsics, see the orka_simd crate. It is used to create tensors with some statistical distribution.

Usage

declare
    use Xoshiro256;

    RNG   : Generator;
    Value : Unsigned_64;
begin
    Reset (RNG, Seed => 1);

    Next (RNG, Value);

    Ada.Text_IO.Put_Line (To_Float (Value)'Image);
end;

Dependencies

In order to build the library, you need to have:

  • An Ada 2012 compiler

  • Alire package manager

License

The Ada code is licensed under the Apache License 2.0. The first line of each Ada file should contain an SPDX license identifier tag that refers to this license:

SPDX-License-Identifier: Apache-2.0

xoshiro's People

Contributors

fabien-chouteau avatar onox avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

xoshiro's Issues

Ideas to try a generic version

Following our discussion on the alire-index repo I think it's worth trying to make the 128 and 256 accept any mod type that fits the requirements, e.i. 32 or 64 bits respectively.

For instance:

generic
   type Unsigned_32 is mod <>;
package Xoshiro128 with SPARK_Mode => On is
   pragma Pure;

   pragma Compile_Time_Error (Unsigned_Int'Size /= 32,
                              "Invalid mod type for Xoshiro128");

   pragma Compile_Time_Error (Unsigned_Int'Modulus /= 2**32,
                              "Invalid mod type for Xoshiro128");

This way users can instantiate the package for the type they use. Most commons will be Interfaces.Unsigned_32 or HAL.UInt32 I guess.
Same thing for Xoshiro256.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.