2: #ifndef PETSCRANDOMIMPL_H
3: #define PETSCRANDOMIMPL_H
5: #include <petsc/private/petscimpl.h>
7: PETSC_EXTERN PetscBool PetscRandomRegisterAllCalled;
8: PETSC_EXTERN PetscErrorCode PetscRandomRegisterAll(void);
10: typedef struct _PetscRandomOps *PetscRandomOps;
11: struct _PetscRandomOps {
12: /* 0 */
13: PetscErrorCode (*seed)(PetscRandom);
14: PetscErrorCode (*getvalue)(PetscRandom, PetscScalar *);
15: PetscErrorCode (*getvaluereal)(PetscRandom, PetscReal *);
16: PetscErrorCode (*getvalues)(PetscRandom, PetscInt, PetscScalar *);
17: PetscErrorCode (*getvaluesreal)(PetscRandom, PetscInt, PetscReal *);
18: PetscErrorCode (*destroy)(PetscRandom);
19: PetscErrorCode (*setfromoptions)(PetscRandom, PetscOptionItems *);
20: };
22: struct _p_PetscRandom {
23: PETSCHEADER(struct _PetscRandomOps);
24: void *data; /* implementation-specific data */
25: unsigned long seed;
26: PetscScalar low, width; /* lower bound and width of the interval over
27: which the random numbers are distributed */
28: PetscBool iset; /* if true, indicates that the user has set the interval */
29: /* array for shuffling ??? */
30: };
32: #endif