Mercurial > vba-clojure
view src/SFMT/SFMT-params.h @ 135:eb6ba88088d3
Wrote a more efficient input-number-assembly program; 91 oc -> 60 oc.
author | Dylan Holmes <ocsenave@gmail.com> |
---|---|
date | Sun, 18 Mar 2012 05:13:19 -0500 |
parents | f9f4f1b99eed |
children |
line wrap: on
line source
1 #ifndef SFMT_PARAMS_H2 #define SFMT_PARAMS_H4 #if !defined(MEXP)5 #ifdef __GNUC__6 #warning "MEXP is not defined. I assume MEXP is 19937."7 #endif8 #define MEXP 199379 #endif10 /*-----------------11 BASIC DEFINITIONS12 -----------------*/13 /** Mersenne Exponent. The period of the sequence14 * 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 array20 * of 32-bit integers.*/21 #define N32 (N * 4)22 /** N64 is the size of internal state array when regarded as an array23 * of 64-bit integers.*/24 #define N64 (N * 2)26 /*----------------------27 the parameters of SFMT28 following definitions are in paramsXXXX.h file.29 ----------------------*/30 /** the pick up position of the array.31 #define POS1 12232 */34 /** the parameter of shift left as four 32-bit registers.35 #define SL1 1836 */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 141 */43 /** the parameter of shift right as four 32-bit registers.44 #define SR1 1145 */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 150 */52 /** A bitmask, used in the recursion. These parameters are introduced53 * to break symmetry of SIMD.54 #define MSK1 0xdfffffefU55 #define MSK2 0xddfecb7fU56 #define MSK3 0xbffaffffU57 #define MSK4 0xbffffff6U58 */60 /** These definitions are part of a 128-bit period certification vector.61 #define PARITY1 0x00000001U62 #define PARITY2 0x00000000U63 #define PARITY3 0x00000000U64 #define PARITY4 0xc98e126aU65 */67 #if MEXP == 60768 #include "SFMT-params607.h"69 #elif MEXP == 127970 #include "SFMT-params1279.h"71 #elif MEXP == 228172 #include "SFMT-params2281.h"73 #elif MEXP == 425374 #include "SFMT-params4253.h"75 #elif MEXP == 1121376 #include "SFMT-params11213.h"77 #elif MEXP == 1993778 #include "SFMT-params19937.h"79 #elif MEXP == 4449780 #include "SFMT-params44497.h"81 #elif MEXP == 8624382 #include "SFMT-params86243.h"83 #elif MEXP == 13204984 #include "SFMT-params132049.h"85 #elif MEXP == 21609186 #include "SFMT-params216091.h"87 #else88 #ifdef __GNUC__89 #error "MEXP is not valid."90 #undef MEXP91 #else92 #undef MEXP93 #endif95 #endif97 #endif /* SFMT_PARAMS_H */