예제 #1
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);
}
예제 #2
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);
}
예제 #3
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);
}
예제 #4
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);
}
예제 #5
0
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
}
예제 #6
0
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
}
예제 #7
0
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
}
예제 #8
0
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
}