All files main.js

100% Statements 68/68
100% Branches 1/1
100% Functions 0/0
100% Lines 68/68

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 691x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x  
/**
* @license Apache-2.0
*
* Copyright (c) 2026 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*    http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
 
'use strict';
 
// MODULES //
 
var factory = require( './factory.js' );
var randint32 = require( './rand_int32.js' );
 
 
// MAIN //
 
/**
* Generates a pseudorandom unsigned 32-bit integer.
*
* ## Method
*
* The recurrence relation is defined using bitwise operations of the form.
*
* ```tex
* x \leftarrow x \oplus (x \ll a) \\
* x \leftarrow x \oplus (x \gg b) \\
* x \leftarrow x \oplus (x \ll c)
* ```
*
* where \\( a \\), \\( b \\), and \\( c \\) are integer shift constants and \\( \oplus \\) denotes the bitwise XOR operations.
*
* ## Notes
*
* -   The generator maintains a single 32-bit internal state.
* -   The state must never be zero, as a zero state is absorbing state which causes the generator to output zeros indefinitely.
*
* ## References
*
* -   Marsaglia, George. 2003. "Xorshift RNGs."_Journal of Statistical Software_ 8(14): 1-6.
*
* @function xorshift32
* @type {PRNG}
* @returns {uinteger32} pseudorandom integer
*
* @example
* var v = xorshift32();
* // returns <number>
*/
var xorshift32 = factory({
	'seed': randint32()
});
 
 
// EXPORTS //
 
module.exports = xorshift32;