| 1 |
#ifndef DSFMT_PARAMS_H |
| 2 |
#define DSFMT_PARAMS_H |
| 3 |
|
| 4 |
#include "dSFMT.h" |
| 5 |
|
| 6 |
/*---------------------- |
| 7 |
the parameters of DSFMT |
| 8 |
following definitions are in dSFMT-paramsXXXX.h file. |
| 9 |
----------------------*/ |
| 10 |
/** the pick up position of the array. |
| 11 |
#define DSFMT_POS1 122 |
| 12 |
*/ |
| 13 |
|
| 14 |
/** the parameter of shift left as four 32-bit registers. |
| 15 |
#define DSFMT_SL1 18 |
| 16 |
*/ |
| 17 |
|
| 18 |
/** the parameter of shift right as four 32-bit registers. |
| 19 |
#define DSFMT_SR1 12 |
| 20 |
*/ |
| 21 |
|
| 22 |
/** A bitmask, used in the recursion. These parameters are introduced |
| 23 |
* to break symmetry of SIMD. |
| 24 |
#define DSFMT_MSK1 (uint64_t)0xdfffffefULL |
| 25 |
#define DSFMT_MSK2 (uint64_t)0xddfecb7fULL |
| 26 |
*/ |
| 27 |
|
| 28 |
/** These definitions are part of a 128-bit period certification vector. |
| 29 |
#define DSFMT_PCV1 UINT64_C(0x00000001) |
| 30 |
#define DSFMT_PCV2 UINT64_C(0x00000000) |
| 31 |
*/ |
| 32 |
|
| 33 |
#define DSFMT_LOW_MASK UINT64_C(0x000FFFFFFFFFFFFF) |
| 34 |
#define DSFMT_HIGH_CONST UINT64_C(0x3FF0000000000000) |
| 35 |
#define DSFMT_SR 12 |
| 36 |
|
| 37 |
/* for sse2 */ |
| 38 |
#if defined(HAVE_SSE2) |
| 39 |
#define SSE2_SHUFF 0x1b |
| 40 |
#elif defined(HAVE_ALTIVEC) |
| 41 |
#if defined(__APPLE__) /* For OSX */ |
| 42 |
#define ALTI_SR (vector unsigned char)(4) |
| 43 |
#define ALTI_SR_PERM \ |
| 44 |
(vector unsigned char)(15,0,1,2,3,4,5,6,15,8,9,10,11,12,13,14) |
| 45 |
#define ALTI_SR_MSK \ |
| 46 |
(vector unsigned int)(0x000fffffU,0xffffffffU,0x000fffffU,0xffffffffU) |
| 47 |
#define ALTI_PERM \ |
| 48 |
(vector unsigned char)(12,13,14,15,8,9,10,11,4,5,6,7,0,1,2,3) |
| 49 |
#else |
| 50 |
#define ALTI_SR {4} |
| 51 |
#define ALTI_SR_PERM {15,0,1,2,3,4,5,6,15,8,9,10,11,12,13,14} |
| 52 |
#define ALTI_SR_MSK {0x000fffffU,0xffffffffU,0x000fffffU,0xffffffffU} |
| 53 |
#define ALTI_PERM {12,13,14,15,8,9,10,11,4,5,6,7,0,1,2,3} |
| 54 |
#endif |
| 55 |
#endif |
| 56 |
|
| 57 |
#if DSFMT_MEXP == 521 |
| 58 |
#include "dSFMT-params521.h" |
| 59 |
#elif DSFMT_MEXP == 1279 |
| 60 |
#include "dSFMT-params1279.h" |
| 61 |
#elif DSFMT_MEXP == 2203 |
| 62 |
#include "dSFMT-params2203.h" |
| 63 |
#elif DSFMT_MEXP == 4253 |
| 64 |
#include "dSFMT-params4253.h" |
| 65 |
#elif DSFMT_MEXP == 11213 |
| 66 |
#include "dSFMT-params11213.h" |
| 67 |
#elif DSFMT_MEXP == 19937 |
| 68 |
#include "dSFMT-params19937.h" |
| 69 |
#elif DSFMT_MEXP == 44497 |
| 70 |
#include "dSFMT-params44497.h" |
| 71 |
#elif DSFMT_MEXP == 86243 |
| 72 |
#include "dSFMT-params86243.h" |
| 73 |
#elif DSFMT_MEXP == 132049 |
| 74 |
#include "dSFMT-params132049.h" |
| 75 |
#elif DSFMT_MEXP == 216091 |
| 76 |
#include "dSFMT-params216091.h" |
| 77 |
#else |
| 78 |
#ifdef __GNUC__ |
| 79 |
#error "DSFMT_MEXP is not valid." |
| 80 |
#undef DSFMT_MEXP |
| 81 |
#else |
| 82 |
#undef DSFMT_MEXP |
| 83 |
#endif |
| 84 |
|
| 85 |
#endif |
| 86 |
|
| 87 |
#endif /* DSFMT_PARAMS_H */ |