CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
hrydgard

CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!

GitHub Repository: hrydgard/ppsspp
Path: blob/master/ext/sfmt19937/SFMT-params.h
Views: 1401
1
#pragma once
2
#ifndef SFMT_PARAMS_H
3
#define SFMT_PARAMS_H
4
5
#if !defined(SFMT_MEXP)
6
#if defined(__GNUC__) && !defined(__ICC)
7
#warning "SFMT_MEXP is not defined. I assume MEXP is 19937."
8
#endif
9
#define SFMT_MEXP 19937
10
#endif
11
/*-----------------
12
BASIC DEFINITIONS
13
-----------------*/
14
/** Mersenne Exponent. The period of the sequence
15
* is a multiple of 2^MEXP-1.
16
* #define SFMT_MEXP 19937 */
17
/** SFMT generator has an internal state array of 128-bit integers,
18
* and N is its size. */
19
#define SFMT_N (SFMT_MEXP / 128 + 1)
20
/** N32 is the size of internal state array when regarded as an array
21
* of 32-bit integers.*/
22
#define SFMT_N32 (SFMT_N * 4)
23
/** N64 is the size of internal state array when regarded as an array
24
* of 64-bit integers.*/
25
#define SFMT_N64 (SFMT_N * 2)
26
27
/*----------------------
28
the parameters of SFMT
29
following definitions are in paramsXXXX.h file.
30
----------------------*/
31
/** the pick up position of the array.
32
#define SFMT_POS1 122
33
*/
34
35
/** the parameter of shift left as four 32-bit registers.
36
#define SFMT_SL1 18
37
*/
38
39
/** the parameter of shift left as one 128-bit register.
40
* The 128-bit integer is shifted by (SFMT_SL2 * 8) bits.
41
#define SFMT_SL2 1
42
*/
43
44
/** the parameter of shift right as four 32-bit registers.
45
#define SFMT_SR1 11
46
*/
47
48
/** the parameter of shift right as one 128-bit register.
49
* The 128-bit integer is shifted by (SFMT_SL2 * 8) bits.
50
#define SFMT_SR21 1
51
*/
52
53
/** A bitmask, used in the recursion. These parameters are introduced
54
* to break symmetry of SIMD.
55
#define SFMT_MSK1 0xdfffffefU
56
#define SFMT_MSK2 0xddfecb7fU
57
#define SFMT_MSK3 0xbffaffffU
58
#define SFMT_MSK4 0xbffffff6U
59
*/
60
61
/** These definitions are part of a 128-bit period certification vector.
62
#define SFMT_PARITY1 0x00000001U
63
#define SFMT_PARITY2 0x00000000U
64
#define SFMT_PARITY3 0x00000000U
65
#define SFMT_PARITY4 0xc98e126aU
66
*/
67
68
#if SFMT_MEXP == 607
69
#include "SFMT-params607.h"
70
#elif SFMT_MEXP == 1279
71
#include "SFMT-params1279.h"
72
#elif SFMT_MEXP == 2281
73
#include "SFMT-params2281.h"
74
#elif SFMT_MEXP == 4253
75
#include "SFMT-params4253.h"
76
#elif SFMT_MEXP == 11213
77
#include "SFMT-params11213.h"
78
#elif SFMT_MEXP == 19937
79
#include "SFMT-params19937.h"
80
#elif SFMT_MEXP == 44497
81
#include "SFMT-params44497.h"
82
#elif SFMT_MEXP == 86243
83
#include "SFMT-params86243.h"
84
#elif SFMT_MEXP == 132049
85
#include "SFMT-params132049.h"
86
#elif SFMT_MEXP == 216091
87
#include "SFMT-params216091.h"
88
#else
89
#if defined(__GNUC__) && !defined(__ICC)
90
#error "SFMT_MEXP is not valid."
91
#undef SFMT_MEXP
92
#else
93
#undef SFMT_MEXP
94
#endif
95
96
#endif
97
98
#endif /* SFMT_PARAMS_H */
99
100