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