SimGrid  3.13
Versatile Simulation of Distributed Systems
RngStream.c File Reference
#include "xbt/RngStream.h"
#include "xbt/sysdep.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

Macros

#define norm   2.328306549295727688e-10
 
#define m1   4294967087.0
 
#define m2   4294944443.0
 
#define a12   1403580.0
 
#define a13n   810728.0
 
#define a21   527612.0
 
#define a23n   1370589.0
 
#define two17   131072.0
 
#define two53   9007199254740992.0
 
#define fact   5.9604644775390625e-8 /* 1 / 2^24 */
 

Functions

static double MultModM (double a, double s, double c, double m)
 
static void MatVecModM (double A[3][3], double s[3], double v[3], double m)
 
static void MatMatModM (double A[3][3], double B[3][3], double C[3][3], double m)
 
static void MatTwoPowModM (double A[3][3], double B[3][3], double m, long e)
 
static void MatPowModM (double A[3][3], double B[3][3], double m, long n)
 
static double U01 (RngStream g)
 
static double U01d (RngStream g)
 
static int CheckSeed (unsigned long seed[6])
 
RngStream RngStream_CreateStream (const char name[])
 
void RngStream_DeleteStream (RngStream *p)
 
RngStream RngStream_CopyStream (const RngStream src)
 
void RngStream_ResetStartStream (RngStream g)
 
void RngStream_ResetNextSubstream (RngStream g)
 
void RngStream_ResetStartSubstream (RngStream g)
 
int RngStream_SetPackageSeed (unsigned long seed[6])
 
int RngStream_SetSeed (RngStream g, unsigned long seed[6])
 
void RngStream_AdvanceState (RngStream g, long e, long c)
 
void RngStream_GetState (RngStream g, unsigned long seed[6])
 
void RngStream_WriteState (RngStream g)
 
void RngStream_WriteStateFull (RngStream g)
 
void RngStream_IncreasedPrecis (RngStream g, int incp)
 
void RngStream_SetAntithetic (RngStream g, int a)
 
double RngStream_RandU01 (RngStream g)
 
int RngStream_RandInt (RngStream g, int i, int j)
 

Variables

static double nextSeed [6] = { 12345, 12345, 12345, 12345, 12345, 12345 }
 
static double InvA1 [3][3]
 
static double InvA2 [3][3]
 
static double A1p0 [3][3]
 
static double A2p0 [3][3]
 
static double A1p76 [3][3]
 
static double A2p76 [3][3]
 
static double A1p127 [3][3]
 
static double A2p127 [3][3]
 

Macro Definition Documentation

#define norm   2.328306549295727688e-10
#define m1   4294967087.0
#define m2   4294944443.0
#define a12   1403580.0
#define a13n   810728.0
#define a21   527612.0
#define a23n   1370589.0
#define two17   131072.0
#define two53   9007199254740992.0
#define fact   5.9604644775390625e-8 /* 1 / 2^24 */

Function Documentation

static double MultModM ( double  a,
double  s,
double  c,
double  m 
)
static
static void MatVecModM ( double  A[3][3],
double  s[3],
double  v[3],
double  m 
)
static
static void MatMatModM ( double  A[3][3],
double  B[3][3],
double  C[3][3],
double  m 
)
static
static void MatTwoPowModM ( double  A[3][3],
double  B[3][3],
double  m,
long  e 
)
static
static void MatPowModM ( double  A[3][3],
double  B[3][3],
double  m,
long  n 
)
static
static double U01 ( RngStream  g)
static
static double U01d ( RngStream  g)
static
static int CheckSeed ( unsigned long  seed[6])
static
RngStream RngStream_CreateStream ( const char  name[])
void RngStream_DeleteStream ( RngStream p)
RngStream RngStream_CopyStream ( const RngStream  src)
void RngStream_ResetStartStream ( RngStream  g)
void RngStream_ResetNextSubstream ( RngStream  g)
void RngStream_ResetStartSubstream ( RngStream  g)
int RngStream_SetPackageSeed ( unsigned long  seed[6])
int RngStream_SetSeed ( RngStream  g,
unsigned long  seed[6] 
)
void RngStream_AdvanceState ( RngStream  g,
long  e,
long  c 
)
void RngStream_GetState ( RngStream  g,
unsigned long  seed[6] 
)
void RngStream_WriteState ( RngStream  g)
void RngStream_WriteStateFull ( RngStream  g)
void RngStream_IncreasedPrecis ( RngStream  g,
int  incp 
)
void RngStream_SetAntithetic ( RngStream  g,
int  a 
)
double RngStream_RandU01 ( RngStream  g)
int RngStream_RandInt ( RngStream  g,
int  i,
int  j 
)

Variable Documentation

double nextSeed[6] = { 12345, 12345, 12345, 12345, 12345, 12345 }
static
double InvA1[3][3]
static
Initial value:
= {
{ 184888585.0, 0.0, 1945170933.0 },
{ 1.0, 0.0, 0.0 },
{ 0.0, 1.0, 0.0 }
}
double InvA2[3][3]
static
Initial value:
= {
{ 0.0, 360363334.0, 4225571728.0 },
{ 1.0, 0.0, 0.0 },
{ 0.0, 1.0, 0.0 }
}
double A1p0[3][3]
static
Initial value:
= {
{ 0.0, 1.0, 0.0 },
{ 0.0, 0.0, 1.0 },
{ -810728.0, 1403580.0, 0.0 }
}
double A2p0[3][3]
static
Initial value:
= {
{ 0.0, 1.0, 0.0 },
{ 0.0, 0.0, 1.0 },
{ -1370589.0, 0.0, 527612.0 }
}
double A1p76[3][3]
static
Initial value:
= {
{ 82758667.0, 1871391091.0, 4127413238.0 },
{ 3672831523.0, 69195019.0, 1871391091.0 },
{ 3672091415.0, 3528743235.0, 69195019.0 }
}
double A2p76[3][3]
static
Initial value:
= {
{ 1511326704.0, 3759209742.0, 1610795712.0 },
{ 4292754251.0, 1511326704.0, 3889917532.0 },
{ 3859662829.0, 4292754251.0, 3708466080.0 }
}
double A1p127[3][3]
static
Initial value:
= {
{ 2427906178.0, 3580155704.0, 949770784.0 },
{ 226153695.0, 1230515664.0, 3580155704.0 },
{ 1988835001.0, 986791581.0, 1230515664.0 }
}
double A2p127[3][3]
static
Initial value:
= {
{ 1464411153.0, 277697599.0, 1610723613.0 },
{ 32183930.0, 1464411153.0, 1022607788.0 },
{ 2824425944.0, 32183930.0, 2093834863.0 }
}