CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!
CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!
Path: blob/master/ext/sfmt19937/SFMT-params.h
Views: 1401
#pragma once1#ifndef SFMT_PARAMS_H2#define SFMT_PARAMS_H34#if !defined(SFMT_MEXP)5#if defined(__GNUC__) && !defined(__ICC)6#warning "SFMT_MEXP is not defined. I assume MEXP is 19937."7#endif8#define SFMT_MEXP 199379#endif10/*-----------------11BASIC DEFINITIONS12-----------------*/13/** Mersenne Exponent. The period of the sequence14* is a multiple of 2^MEXP-1.15* #define SFMT_MEXP 19937 */16/** SFMT generator has an internal state array of 128-bit integers,17* and N is its size. */18#define SFMT_N (SFMT_MEXP / 128 + 1)19/** N32 is the size of internal state array when regarded as an array20* of 32-bit integers.*/21#define SFMT_N32 (SFMT_N * 4)22/** N64 is the size of internal state array when regarded as an array23* of 64-bit integers.*/24#define SFMT_N64 (SFMT_N * 2)2526/*----------------------27the parameters of SFMT28following definitions are in paramsXXXX.h file.29----------------------*/30/** the pick up position of the array.31#define SFMT_POS1 12232*/3334/** the parameter of shift left as four 32-bit registers.35#define SFMT_SL1 1836*/3738/** the parameter of shift left as one 128-bit register.39* The 128-bit integer is shifted by (SFMT_SL2 * 8) bits.40#define SFMT_SL2 141*/4243/** the parameter of shift right as four 32-bit registers.44#define SFMT_SR1 1145*/4647/** the parameter of shift right as one 128-bit register.48* The 128-bit integer is shifted by (SFMT_SL2 * 8) bits.49#define SFMT_SR21 150*/5152/** A bitmask, used in the recursion. These parameters are introduced53* to break symmetry of SIMD.54#define SFMT_MSK1 0xdfffffefU55#define SFMT_MSK2 0xddfecb7fU56#define SFMT_MSK3 0xbffaffffU57#define SFMT_MSK4 0xbffffff6U58*/5960/** These definitions are part of a 128-bit period certification vector.61#define SFMT_PARITY1 0x00000001U62#define SFMT_PARITY2 0x00000000U63#define SFMT_PARITY3 0x00000000U64#define SFMT_PARITY4 0xc98e126aU65*/6667#if SFMT_MEXP == 60768#include "SFMT-params607.h"69#elif SFMT_MEXP == 127970#include "SFMT-params1279.h"71#elif SFMT_MEXP == 228172#include "SFMT-params2281.h"73#elif SFMT_MEXP == 425374#include "SFMT-params4253.h"75#elif SFMT_MEXP == 1121376#include "SFMT-params11213.h"77#elif SFMT_MEXP == 1993778#include "SFMT-params19937.h"79#elif SFMT_MEXP == 4449780#include "SFMT-params44497.h"81#elif SFMT_MEXP == 8624382#include "SFMT-params86243.h"83#elif SFMT_MEXP == 13204984#include "SFMT-params132049.h"85#elif SFMT_MEXP == 21609186#include "SFMT-params216091.h"87#else88#if defined(__GNUC__) && !defined(__ICC)89#error "SFMT_MEXP is not valid."90#undef SFMT_MEXP91#else92#undef SFMT_MEXP93#endif9495#endif9697#endif /* SFMT_PARAMS_H */9899100