Mercurial > hg > plcrp
annotate RngStream.h @ 3:974d7be8eec4 tip
Update to pack-based dcg utilities
author | samer |
---|---|
date | Tue, 03 Oct 2017 11:52:23 +0100 |
parents | b31415b4a196 |
children |
rev | line source |
---|---|
samer@0 | 1 /* RngStream.h for ANSI C */ |
samer@0 | 2 #ifndef RNGSTREAM_H |
samer@0 | 3 #define RNGSTREAM_H |
samer@0 | 4 |
samer@0 | 5 struct rng_state { |
samer@0 | 6 double Cg[6]; // state of generator |
samer@0 | 7 }; |
samer@0 | 8 |
samer@0 | 9 struct rng_jump { |
samer@0 | 10 double T1[3][3]; // transition matrix for a jump in first generator |
samer@0 | 11 double T2[3][3]; // ditto for second |
samer@0 | 12 }; |
samer@0 | 13 |
samer@0 | 14 |
samer@0 | 15 void RngStream_InitState(struct rng_state *g); |
samer@0 | 16 void RngStream_InitJump(struct rng_jump *j,int e); |
samer@0 | 17 void RngStream_DoubleJump(struct rng_jump *j, struct rng_jump *j2); |
samer@0 | 18 int RngStream_SetState(struct rng_state *g, unsigned seed[6]); |
samer@0 | 19 void RngStream_GetState(struct rng_state *g, unsigned seed[6]); |
samer@0 | 20 void RngStream_Advance(struct rng_jump *j, struct rng_state *g1, struct rng_state *g2); |
samer@0 | 21 double RngStream_Float(struct rng_state *g1, struct rng_state *g2); |
samer@0 | 22 double RngStream_Double(struct rng_state *g1, struct rng_state *g2); |
samer@0 | 23 double RngStream_Raw(struct rng_state *g1, struct rng_state *g2); |
samer@0 | 24 |
samer@0 | 25 #endif |
samer@0 | 26 |
samer@0 | 27 |