php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
engine_mt19937.c File Reference
#include "php.h"
#include "php_random.h"
#include "php_random_csprng.h"
#include "Zend/zend_exceptions.h"

Go to the source code of this file.

Macros

#define N   624 /* length of state vector */
 
#define M   (397) /* a period parameter */
 
#define hiBit(u)
 
#define loBit(u)
 
#define loBits(u)
 
#define mixBits(u, v)
 
#define twist(m, u, v)
 
#define twist_php(m, u, v)
 

Functions

 ZEND_STATIC_ASSERT (N==sizeof(((php_random_status_state_mt19937 *) 0) ->state)/sizeof(((php_random_status_state_mt19937 *) 0) ->state[0]), "Assumed length of Mt19937 state vector does not match actual size.")
 
PHPAPI void php_random_mt19937_seed32 (php_random_status_state_mt19937 *state, uint32_t seed)
 
PHPAPI void php_random_mt19937_seed_default (php_random_status_state_mt19937 *state)
 
 PHP_METHOD (Random_Engine_Mt19937, __construct)
 
 PHP_METHOD (Random_Engine_Mt19937, generate)
 
 PHP_METHOD (Random_Engine_Mt19937, __serialize)
 
 PHP_METHOD (Random_Engine_Mt19937, __unserialize)
 
 PHP_METHOD (Random_Engine_Mt19937, __debugInfo)
 

Variables

PHPAPI const php_random_algo php_random_algo_mt19937
 

Macro Definition Documentation

◆ hiBit

#define hiBit ( u)
Value:
((u) & 0x80000000U) /* mask all but highest bit of u */
uint32_t u
Definition cdf.c:78

Definition at line 95 of file engine_mt19937.c.

◆ loBit

#define loBit ( u)
Value:
((u) & 0x00000001U) /* mask all but lowest bit of u */

Definition at line 96 of file engine_mt19937.c.

◆ loBits

#define loBits ( u)
Value:
((u) & 0x7FFFFFFFU) /* mask the highest bit of u */

Definition at line 97 of file engine_mt19937.c.

◆ M

#define M   (397) /* a period parameter */

Definition at line 94 of file engine_mt19937.c.

◆ mixBits

#define mixBits ( u,
v )
Value:
(hiBit(u) | loBits(v)) /* move hi bit of u to hi bit of v */
uint32_t v
Definition cdf.c:1237
#define hiBit(u)
#define loBits(u)

Definition at line 98 of file engine_mt19937.c.

◆ N

#define N   624 /* length of state vector */

Definition at line 89 of file engine_mt19937.c.

◆ twist

#define twist ( m,
u,
v )
Value:
(m ^ (mixBits(u,v) >> 1) ^ ((uint32_t)(-(int32_t)(loBit(v))) & 0x9908b0dfU))
#define loBit(u)
#define mixBits(u, v)

Definition at line 100 of file engine_mt19937.c.

◆ twist_php

#define twist_php ( m,
u,
v )
Value:
(m ^ (mixBits(u,v) >> 1) ^ ((uint32_t)(-(int32_t)(loBit(u))) & 0x9908b0dfU))

Definition at line 101 of file engine_mt19937.c.

Function Documentation

◆ PHP_METHOD() [1/5]

PHP_METHOD ( Random_Engine_Mt19937 ,
__construct  )

Definition at line 253 of file engine_mt19937.c.

◆ PHP_METHOD() [2/5]

PHP_METHOD ( Random_Engine_Mt19937 ,
__debugInfo  )

Definition at line 384 of file engine_mt19937.c.

◆ PHP_METHOD() [3/5]

PHP_METHOD ( Random_Engine_Mt19937 ,
__serialize  )

Definition at line 317 of file engine_mt19937.c.

◆ PHP_METHOD() [4/5]

PHP_METHOD ( Random_Engine_Mt19937 ,
__unserialize  )

Definition at line 342 of file engine_mt19937.c.

◆ PHP_METHOD() [5/5]

PHP_METHOD ( Random_Engine_Mt19937 ,
generate  )

Definition at line 292 of file engine_mt19937.c.

◆ php_random_mt19937_seed32()

PHPAPI void php_random_mt19937_seed32 ( php_random_status_state_mt19937 * state,
uint32_t seed )
inline

Definition at line 128 of file engine_mt19937.c.

◆ php_random_mt19937_seed_default()

PHPAPI void php_random_mt19937_seed_default ( php_random_status_state_mt19937 * state)

Definition at line 240 of file engine_mt19937.c.

◆ ZEND_STATIC_ASSERT()

ZEND_STATIC_ASSERT ( N = =sizeof(((php_random_status_state_mt19937 *) 0) ->state)/sizeof(((php_random_status_state_mt19937 *) 0) ->state[0]),
"Assumed length of Mt19937 state vector does not match actual size."  )

Variable Documentation

◆ php_random_algo_mt19937

PHPAPI const php_random_algo php_random_algo_mt19937
Initial value:
= {
generate,
range,
serialize,
unserialize
}
struct _php_random_status_state_mt19937 php_random_status_state_mt19937

Definition at line 231 of file engine_mt19937.c.