Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
a9a675dee707414828ce3d5f053795d0aa0d9629
[simgrid.git] / include / xbt / RngStream.h
1 /* Copyright (c) 2012-2019. The SimGrid Team. All rights reserved.          */
2
3 /* This program is free software; you can redistribute it and/or modify it
4  * under the terms of the license (GNU LGPL) which comes with this package. */
5
6 /* RngStream.h for ANSI C */
7 #ifndef RNGSTREAM_H
8 #define RNGSTREAM_H
9
10 #include <xbt/misc.h>
11
12 typedef struct RngStream_InfoState * RngStream;
13
14 struct RngStream_InfoState {
15    double Cg[6];
16    double Bg[6];
17    double Ig[6];
18    int Anti;
19    int IncPrec;
20    char *name;
21 };
22
23 SG_BEGIN_DECL();
24
25 XBT_PUBLIC int RngStream_SetPackageSeed(unsigned long seed[6]);
26 XBT_PUBLIC RngStream RngStream_CreateStream(const char name[]);
27 XBT_PUBLIC void RngStream_DeleteStream(RngStream* pg);
28 XBT_PUBLIC RngStream RngStream_CopyStream(const RngStream src);
29 XBT_PUBLIC void RngStream_ResetStartStream(RngStream g);
30 XBT_PUBLIC void RngStream_ResetStartSubstream(RngStream g);
31 XBT_PUBLIC void RngStream_ResetNextSubstream(RngStream g);
32 XBT_PUBLIC void RngStream_SetAntithetic(RngStream g, int a);
33 XBT_PUBLIC void RngStream_IncreasedPrecis(RngStream g, int incp);
34 XBT_PUBLIC int RngStream_SetSeed(RngStream g, unsigned long seed[6]);
35 XBT_PUBLIC void RngStream_AdvanceState(RngStream g, long e, long c);
36 XBT_PUBLIC void RngStream_GetState(RngStream g, unsigned long seed[6]);
37 XBT_PUBLIC void RngStream_WriteState(RngStream g);
38 XBT_PUBLIC void RngStream_WriteStateFull(RngStream g);
39 XBT_PUBLIC double RngStream_RandU01(RngStream g);
40 XBT_PUBLIC int RngStream_RandInt(RngStream g, int i, int j);
41
42 SG_END_DECL();
43
44 #endif
45
46