NEURON
nrnisaac.cpp
Go to the documentation of this file.
1 #include <../../nrnconf.h>
2 #include <stdlib.h>
3 #if HAVE_SYS_TYPES_H
4 #include <sys/types.h>
5 #endif
6 #include <nrnisaac.h>
7 #include <isaac64.h>
8 #include "hocdec.h"
9 
10 typedef struct isaac64_state Rng;
11 
12 void* nrnisaac_new(void) {
13  Rng* rng;
14  rng = (Rng*) hoc_Emalloc(sizeof(Rng));
15  hoc_malchk();
16  return (void*) rng;
17 }
18 
19 void nrnisaac_delete(void* v) {
20  free(v);
21 }
22 
23 void nrnisaac_init(void* v, unsigned long int seed) {
24  isaac64_init((Rng*) v, seed);
25 }
26 
27 double nrnisaac_dbl_pick(void* v) {
28  Rng* rng = (Rng*) v;
29  double x = isaac64_dbl32(rng);
30  /*printf("dbl %d %d %d %d %g\n", sizeof(ub8), sizeof(ub4), sizeof(ub2), sizeof(ub1), x);*/
31  return x;
32 }
33 
34 uint32_t nrnisaac_uint32_pick(void* v) {
35  Rng* rng = (Rng*) v;
36  double x = isaac64_uint32(rng);
37  /*printf("uint32 %g\n", x);*/
38  return x;
39 }
void isaac64_init(struct isaac64_state *rng, ub4 seed)
Definition: isaac64.cpp:81
#define isaac64_dbl32(rng)
Definition: isaac64.h:73
#define isaac64_uint32(rng)
Definition: isaac64.h:61
#define v
Definition: md1redef.h:4
void nrnisaac_delete(void *v)
Definition: nrnisaac.cpp:19
double nrnisaac_dbl_pick(void *v)
Definition: nrnisaac.cpp:27
uint32_t nrnisaac_uint32_pick(void *v)
Definition: nrnisaac.cpp:34
void * nrnisaac_new(void)
Definition: nrnisaac.cpp:12
void nrnisaac_init(void *v, unsigned long int seed)
Definition: nrnisaac.cpp:23
void * hoc_Emalloc(size_t size)
Definition: symbol.cpp:190
void hoc_malchk()
Definition: symbol.cpp:183