コード例 #1
0
ファイル: well_rng.c プロジェクト: plempert/prnglib
double rngWELLRNG1024a (well *state){
    state->z0    = VRm1;
    state->z1    = Identity(V0)       ^ MAT0POS (8, VM1);
    state->z2    = MAT0NEG (-19, VM2) ^ MAT0NEG(-14,VM3);
    newV1 = state->z1                 ^ state->z2;
    newV0 = MAT0NEG (-11,state->z0)   ^ MAT0NEG(-7,state->z1)    ^ MAT0NEG(-13,state->z2) ;
    state->state_i = (state->state_i + 31) & 0x0000001fU;
    return ((double) state->STATE[state->state_i]  * FACT);
}
コード例 #2
0
ファイル: well1024a-ez.c プロジェクト: jj1bdx/xorshiftplus
static unsigned long int next() {
  z0    = VRm1;
  z1    = Identity(V0)       ^ MAT0POS (8, VM1);
  z2    = MAT0NEG (-19, VM2) ^ MAT0NEG(-14,VM3);
  newV1 = z1                 ^ z2; 
  newV0 = MAT0NEG (-11,z0)   ^ MAT0NEG(-7,z1)    ^ MAT0NEG(-13,z2) ;
  state_i = (state_i + 31) & 0x0000001fU;
  return STATE[state_i];
}
コード例 #3
0
ファイル: new_well.c プロジェクト: plempert/prnglib
double WELL::WELLRNG1024a (void){
    z0    = VRm1;
    z1    = Identity(V0)       ^ MAT0POS (8, VM1);
    z2    = MAT0NEG (-19, VM2) ^ MAT0NEG(-14,VM3);
    newV1 = z1                 ^ z2; 
    newV0 = MAT0NEG (-11,z0)   ^ MAT0NEG(-7,z1)    ^ MAT0NEG(-13,z2) ;
    state_i = (state_i + 31) & 0x0000001fU;
    return ((double) STATE[state_i]  * FACT);
}
コード例 #4
0
ファイル: WELL44497a.c プロジェクト: cran/rngWELL
// state_i == 1
static double case_2(void){
  z0    = (Vrm1 & MASKL) | (Vrm2Under & MASKU);
  z1    = MAT0NEG(-24,V0) ^ MAT0POS(30,VM1);
  z2    = MAT0NEG(-10,VM2) ^ MAT3NEG(-26,VM3);
  newV1 = z1 ^ z2;
  newV0 = MAT1(z0) ^ MAT0POS(20,z1) ^ MAT5(9,0xb729fcecU,0xfbffffffU,0x00020000U,z2) ^ MAT1(newV1);
  state_i=0;
  WELLRNG44497a = case_1;

  return ((double) STATE[state_i] * FACT);
}
コード例 #5
0
ファイル: WELL44497a.c プロジェクト: cran/rngWELL
// R-M1-1 >= state_i >= R-M3
static double case_4(void){
  z0    = (Vrm1 & MASKL) | (Vrm2 & MASKU);
  z1    = MAT0NEG(-24,V0) ^ MAT0POS(30,VM1);
  z2    = MAT0NEG(-10,VM2Over) ^ MAT3NEG(-26,VM3Over);
  newV1 = z1 ^ z2;
  newV0 = MAT1(z0) ^ MAT0POS(20,z1) ^ MAT5(9,0xb729fcecU,0xfbffffffU,0x00020000U,z2) ^ MAT1(newV1);
  state_i--;
  if (state_i+M3 < R)
    WELLRNG44497a = case_5;

  return ((double) STATE[state_i] * FACT);
}
コード例 #6
0
ファイル: WELL23209a.c プロジェクト: cran/rngWELL
// state_i == 1
static double case_2(void)
{
  z0    = (Vrm1 & MASKL) | (Vrm2Under & MASKU);
  z1    = MAT0POS(28,V0) ^ MAT1(VM1);
  z2    = MAT0POS(18,VM2) ^ MAT0POS(3,VM3);
  newV1 = z1 ^ z2;
  newV0 = MAT0POS(21,z0) ^ MAT0NEG(-17,z1) ^ MAT0NEG(-28,z2) ^ MAT0NEG(-1,newV1);
  state_i=0;
  WELLRNG23209a = case_1;

  return ((double) STATE[state_i] * FACT);
}
コード例 #7
0
ファイル: well1024.c プロジェクト: Fahdben/imscript
double well1024 (void)
{
	well1024_z0 = VRm1;
	well1024_z1 = Identity(V0)      ^ MAT0POS(8, VM1);
	well1024_z2 = MAT0NEG(-19, VM2) ^ MAT0NEG(-14,VM3);
	newV1       = well1024_z1       ^ well1024_z2;
	newV0       = MAT0NEG(-11,well1024_z0)
	            ^ MAT0NEG(-7, well1024_z1)
	            ^ MAT0NEG(-13,well1024_z2);
	well1024_state_i = (well1024_state_i + 31) & 0x0000001fU;
	return 2.32830643653869628906e-10 * well1024_STATE[well1024_state_i];
}
コード例 #8
0
ファイル: WELL23209a.c プロジェクト: cran/rngWELL
// R-M3-1 >= state_i >= R-M1
static double case_5(void)
{
  z0    = (Vrm1 & MASKL) | (Vrm2 & MASKU);
  z1    = MAT0POS(28,V0) ^ MAT1(VM1Over);
  z2    = MAT0POS(18,VM2) ^ MAT0POS(3,VM3);
  newV1 = z1 ^ z2;
  newV0 = MAT0POS(21,z0) ^ MAT0NEG(-17,z1) ^ MAT0NEG(-28,z2) ^ MAT0NEG(-1,newV1);
  state_i--;
  if(state_i+M1 < R)
    WELLRNG23209a = case_6;

  return ((double) STATE[state_i] * FACT);
}
コード例 #9
0
ファイル: WELL44497a.c プロジェクト: RafiKueng/glass
static double case_2(void){
  // state_i == 1
  z0 = (Vrm1 & MASKL) | (Vrm2Under & MASKU);
  z1 = MAT0NEG(-24,V0) ^ MAT0POS(30,VM1);
  z2 = MAT0NEG(-10,VM2) ^ MAT3NEG(-26,VM3);
  newV1 = z1 ^ z2;
  newV0 =  MAT1(z0) ^ MAT0POS(20,z1) ^ MAT5(9,0xb729fcecU,0xfbffffffU,0x00020000U,z2) ^ MAT1(newV1);
  state_i=0;
  WELLRNG44497a = case_1;
#ifdef TEMPERING
   y = STATE[state_i] ^ ((STATE[state_i] << 7) & TEMPERB);
   y =              y ^ ((             y << 15) & TEMPERC);
   return ((double) y * FACT);
#else
   return ((double) STATE[state_i] * FACT);
#endif
}
コード例 #10
0
ファイル: WELL19937a.c プロジェクト: cran/rngwell19937
static unsigned int case_2 (void){
   // state_i == 1
   z0 = (VRm1 & MASKL) | (VRm2Under & MASKU);
   z1 = MAT0NEG (-25, V0) ^ MAT0POS (27, VM1);
   z2 = MAT3POS (9, VM2) ^ MAT0POS (1, VM3);
   newV1 = z1 ^ z2;
   newV0 = MAT1 (z0) ^ MAT0NEG (-9, z1) ^ MAT0NEG (-21, z2) ^ MAT0POS (21, newV1);
   state_i = 0;
   WELLRNG19937a = case_1;
#ifdef TEMPERING
   y = STATE[state_i] ^ ((STATE[state_i] << 7) & TEMPERB);
   y =              y ^ ((             y << 15) & TEMPERC);
   return (y);
#else
   return (STATE[state_i]);
#endif
}
コード例 #11
0
ファイル: WELL19937a.c プロジェクト: cran/rngwell19937
static unsigned int case_5 (void){
   // state_i+M2 >= R
   z0 = (VRm1 & MASKL) | (VRm2 & MASKU);
   z1 = MAT0NEG (-25, V0) ^ MAT0POS (27, VM1);
   z2 = MAT3POS (9, VM2Over) ^ MAT0POS (1, VM3Over);
   newV1 = z1 ^ z2;
   newV0 = MAT1 (z0) ^ MAT0NEG (-9, z1) ^ MAT0NEG (-21, z2) ^ MAT0POS (21, newV1);
   state_i -= 1;
   if (state_i + M2 < R)
      WELLRNG19937a = case_4;
#ifdef TEMPERING
   y = STATE[state_i] ^ ((STATE[state_i] << 7) & TEMPERB);
   y =              y ^ ((             y << 15) & TEMPERC);
   return (y);
#else
   return (STATE[state_i]);
#endif
}
コード例 #12
0
ファイル: WELL44497b.c プロジェクト: mp3201/rmetrics
static double case_4(void){
  // state_i+M3 >= R
  z0 = (Vrm1 & MASKL) | (Vrm2 & MASKU);
  z1 = MAT0NEG(-24,V0) ^ MAT0POS(30,VM1);
  z2 = MAT0NEG(-10,VM2Over) ^ MAT3NEG(-26,VM3Over);
  newV1 = z1 ^ z2;
  newV0 = MAT1(z0) ^ MAT0POS(20,z1) ^ MAT5(9,0xb729fcecU,0xfbffffffU,0x00020000U,z2) ^ MAT1(newV1);
  state_i--;
  if (state_i+M3 < R)
    WELLRNG44497b = case_5;
#ifdef TEMPERING
   y = STATE[state_i] ^ ((STATE[state_i] << 7) & TEMPERB);
   y =              y ^ ((             y << 15) & TEMPERC);
   return ((double) y * FACT);
#else
   return ((double) STATE[state_i] * FACT);
#endif
}