Zig 0.17.0-dev (Split by item)

Shortcut keys
?
Show these tips
S
Focus search field
Esc
Clear focus & close tips
U
Jump to source code
↑
Move up in search results
↓
Move down in search results
↵
Go to active search result
This is an example of documentation generated by ZigDoc, an alternative to Zig's built-in Auto Doc feature. See also examples in other modes/formats. The project being documented here (as the example) is the Zig standard library. Public Struct

SplitMix64

Public Struct

Generator to extend 64-bit seed values into longer sequences.

The number of cycles is thus limited to 64-bits regardless of the engine, but this is still plenty for practical purposes.

Fields

s: u64

Namespaces

Functions

pub fn init(seed: u64) SplitMix64
pub fn next(self: *SplitMix64) u64

File

Random/SplitMix64.zig
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//! Generator to extend 64-bit seed values into longer sequences.
//!
//! The number of cycles is thus limited to 64-bits regardless of the engine, but this
//! is still plenty for practical purposes.

const SplitMix64 = @This();

s: u64,

pub fn init(seed: u64) SplitMix64 {
    return SplitMix64{ .s = seed };
}

pub fn next(self: *SplitMix64) u64 {
    self.s +%= 0x9e3779b97f4a7c15;

    var z = self.s;
    z = (z ^ (z >> 30)) *% 0xbf58476d1ce4e5b9;
    z = (z ^ (z >> 27)) *% 0x94d049bb133111eb;
    return z ^ (z >> 31);
}