diff options
Diffstat (limited to 'test/ccured_olden/em3d')
-rw-r--r-- | test/ccured_olden/em3d/.cvsignore | 29 | ||||
-rw-r--r-- | test/ccured_olden/em3d/CVS/Entries | 17 | ||||
-rw-r--r-- | test/ccured_olden/em3d/CVS/Repository | 1 | ||||
-rw-r--r-- | test/ccured_olden/em3d/CVS/Root | 1 | ||||
-rw-r--r-- | test/ccured_olden/em3d/HOWTO | 1 | ||||
-rw-r--r-- | test/ccured_olden/em3d/MY_HOWTO | 2 | ||||
-rw-r--r-- | test/ccured_olden/em3d/Makefile | 64 | ||||
-rw-r--r-- | test/ccured_olden/em3d/Makefile.plain | 7 | ||||
-rw-r--r-- | test/ccured_olden/em3d/Makefile.ss | 8 | ||||
-rw-r--r-- | test/ccured_olden/em3d/args.c | 21 | ||||
-rw-r--r-- | test/ccured_olden/em3d/em3d.c | 16 | ||||
-rw-r--r-- | test/ccured_olden/em3d/em3d.h | 38 | ||||
-rw-r--r-- | test/ccured_olden/em3d/main.c | 45 | ||||
-rw-r--r-- | test/ccured_olden/em3d/make_graph.c | 173 | ||||
-rw-r--r-- | test/ccured_olden/em3d/make_graph.h | 13 | ||||
-rw-r--r-- | test/ccured_olden/em3d/ssplain.c | 70 | ||||
-rw-r--r-- | test/ccured_olden/em3d/ssplain.h | 128 | ||||
-rw-r--r-- | test/ccured_olden/em3d/util.c | 34 | ||||
-rw-r--r-- | test/ccured_olden/em3d/util.h | 23 |
19 files changed, 691 insertions, 0 deletions
diff --git a/test/ccured_olden/em3d/.cvsignore b/test/ccured_olden/em3d/.cvsignore new file mode 100644 index 00000000..7601f0ad --- /dev/null +++ b/test/ccured_olden/em3d/.cvsignore @@ -0,0 +1,29 @@ +*.o +*.obj +*.exe +*.pdb +*.ilk +*.cpp +*.i +*.s +*.asm +*cil.c +*.rtl +*box.c +*infer.c +*_ppp.c +*.origi +*.stackdump +*_all.c +em3d +em3d.*box + +allcfiles +ope.m +*cured.c +*optimcured* +*_comb.c +changes +*.browser +*optimcured* +*.out diff --git a/test/ccured_olden/em3d/CVS/Entries b/test/ccured_olden/em3d/CVS/Entries new file mode 100644 index 00000000..32532e6f --- /dev/null +++ b/test/ccured_olden/em3d/CVS/Entries @@ -0,0 +1,17 @@ +/HOWTO/1.1/Fri Jun 29 11:36:12 2001// +/MY_HOWTO/1.1/Fri Jun 29 11:36:12 2001// +/Makefile.plain/1.1/Fri Jun 29 11:36:12 2001// +/Makefile.ss/1.1/Fri Jun 29 11:36:12 2001// +/em3d.c/1.1/Fri Jun 29 11:36:12 2001// +/main.c/1.2/Mon Jul 9 19:38:57 2001// +/make_graph.h/1.1/Fri Jun 29 11:36:12 2001// +/util.c/1.1/Fri Jun 29 11:36:12 2001// +/util.h/1.1/Fri Jun 29 11:36:12 2001// +/ssplain.c/1.5/Sat Nov 3 05:27:15 2001// +/Makefile/1.7/Fri Nov 9 01:27:01 2001// +/args.c/1.2/Mon Mar 18 00:14:04 2002// +/make_graph.c/1.2/Wed May 29 03:29:06 2002// +/.cvsignore/1.9/Sat Aug 10 01:19:31 2002// +/em3d.h/1.2/Sat Aug 10 01:19:31 2002// +/ssplain.h/1.6/Mon Jan 6 23:28:11 2003// +D diff --git a/test/ccured_olden/em3d/CVS/Repository b/test/ccured_olden/em3d/CVS/Repository new file mode 100644 index 00000000..cb6d74d1 --- /dev/null +++ b/test/ccured_olden/em3d/CVS/Repository @@ -0,0 +1 @@ +cil/test/olden/em3d diff --git a/test/ccured_olden/em3d/CVS/Root b/test/ccured_olden/em3d/CVS/Root new file mode 100644 index 00000000..35f411e9 --- /dev/null +++ b/test/ccured_olden/em3d/CVS/Root @@ -0,0 +1 @@ +/home/cvs-repository diff --git a/test/ccured_olden/em3d/HOWTO b/test/ccured_olden/em3d/HOWTO new file mode 100644 index 00000000..061698dd --- /dev/null +++ b/test/ccured_olden/em3d/HOWTO @@ -0,0 +1 @@ +2000 100 1 diff --git a/test/ccured_olden/em3d/MY_HOWTO b/test/ccured_olden/em3d/MY_HOWTO new file mode 100644 index 00000000..fe67f7a8 --- /dev/null +++ b/test/ccured_olden/em3d/MY_HOWTO @@ -0,0 +1,2 @@ +2000 100 1? +(These should be Mowry's arguments.) diff --git a/test/ccured_olden/em3d/Makefile b/test/ccured_olden/em3d/Makefile new file mode 100644 index 00000000..b7e1d60c --- /dev/null +++ b/test/ccured_olden/em3d/Makefile @@ -0,0 +1,64 @@ +# /* For copyright information, see olden_v1.0/COPYRIGHT */ + +BINARY = em3d.exe +BINARYCCOMP = em3d.exe.compcert +PROGS = main em3d make_graph util args ssplain + + +OLDENHOME = /tmp/olden + +CC = gcc -arch ppc +CCOMP = ../../../../ccomp +CCOMPFLAGS=-dump-c + +SRC = .c +OBJ = .o +ASM = .s +SRCS = $(addsuffix $(SRC),$(PROGS)) +OBJS = $(addsuffix $(OBJ),$(PROGS)) +ASMS = $(addsuffix $(ASM),$(PROGS)) +INCDIRS = /usr/include + +EXTRA_CDEFS = -DI_TIME -DI_SYS_TIME -DULTRIX +CDEFS = -DPLAIN -DSS_PLAIN -DSS_RAND #-I$(OLDENHOME)/common +OPTFLAGS = -g -Wall -O3 + +LIBS = +LIBPATH = + +#$(BINARY): $(OBJS) +# $(CC) $(LDFALGS) $(OPTFLAGS) -o $@ $(OBJS) $(LIBPATH) $(LIBS) + +all_s: $(PROGS:%=%.s) + +all: $(PROGS:%=%.compcert) + +all_gcc: $(PROGS:%=%.gcc) + +%.compcert: %.s + $(CC) $(CFLAGS) $(LDFALGS) $(OPTFLAGS) -o $*.compcert $*.s $(LIBS) + +%.s: %.c ../../../../ccomp + $(CCOMP) $(CCOMPFLAGS) $*.c + +%.gcc: %.c + $(CC) $(CFLAGS) $(LDFALGS) $(OPTFLAGS) -o $*.gcc $*.c $(LIBS) + + + +#$(BINARYCCOMP): $(OBJSCCOMP) +# $(CC) $(LDFALGS) $(OPTFLAGS) -o $@ $(OBJSCCOMP) $(LIBPATH) $(LIBS) + +#$(OBJCCOMP): +# $(CCOMP) $(CDEFS) $(EXTRA_CDEFS) $(MY_CDEFS) $(OPTFLAGS) -c $< + +$(SRC)$(OBJ): + $(CC) $(CDEFS) $(EXTRA_CDEFS) $(MY_CDEFS) $(OPTFLAGS) -c $< + +clean: + rm -f $(BINARY) $(BINARYCCOMP) $(OBJS) $(ASMS) *~ *.light.c *.cil.* + +links: + /bin/rm -f ssplain.[hc] + ln -s $(OLDENHOME)/common/ssplain.h + ln -s $(OLDENHOME)/common/ssplain.c diff --git a/test/ccured_olden/em3d/Makefile.plain b/test/ccured_olden/em3d/Makefile.plain new file mode 100644 index 00000000..b87f77b1 --- /dev/null +++ b/test/ccured_olden/em3d/Makefile.plain @@ -0,0 +1,7 @@ +# /* For copyright information, see olden_v1.0/COPYRIGHT */ + +BINARY = em3d +FILES = main em3d make_graph util args ssplain + +include ../Makefile.plain + diff --git a/test/ccured_olden/em3d/Makefile.ss b/test/ccured_olden/em3d/Makefile.ss new file mode 100644 index 00000000..f07d9395 --- /dev/null +++ b/test/ccured_olden/em3d/Makefile.ss @@ -0,0 +1,8 @@ +# /* For copyright information, see olden_v1.0/COPYRIGHT */ + +BINARY = em3d +FILES = main em3d make_graph util args ssplain + +MY_CDEFS = -DAMIR +include ../Makefile.ss + diff --git a/test/ccured_olden/em3d/args.c b/test/ccured_olden/em3d/args.c new file mode 100644 index 00000000..f48638e6 --- /dev/null +++ b/test/ccured_olden/em3d/args.c @@ -0,0 +1,21 @@ +#include <stdio.h> +#include <stdlib.h> +#include "em3d.h" + +void dealwithargs(int argc, char *argv[]) +{ + if (argc > 1) + n_nodes = atoi(argv[1]); + else + n_nodes = 10; + + if (argc > 2) + d_nodes = atoi(argv[2]); + else + d_nodes = 3; + + if (argc > 3) + iters = atoi(argv[3]); + else + iters = 100; +} diff --git a/test/ccured_olden/em3d/em3d.c b/test/ccured_olden/em3d/em3d.c new file mode 100644 index 00000000..760dd1a0 --- /dev/null +++ b/test/ccured_olden/em3d/em3d.c @@ -0,0 +1,16 @@ +#include "em3d.h" + +void compute_nodes(node_t *nodelist) +{ + int i; + + for (; nodelist; nodelist = nodelist->next) + for (i=0; i < nodelist->from_count; i++) /* bad load */ + { + node_t *other_node = nodelist->from_nodes[i]; /* bad load */ + double coeff = nodelist->coeffs[i]; /* bad load */ + double value = other_node->value; /* bad load: 50% */ + + nodelist->value -= coeff * value; + } +} diff --git a/test/ccured_olden/em3d/em3d.h b/test/ccured_olden/em3d/em3d.h new file mode 100644 index 00000000..ba1eac22 --- /dev/null +++ b/test/ccured_olden/em3d/em3d.h @@ -0,0 +1,38 @@ +/* em3d.h - Header file for the electromagnetic problem in 3 dimensions + * + * By: Martin C. Carlisle + * Date: Feb. 23, 1994 + * + */ + +#ifndef EM3D +#define EM3D + +extern int n_nodes; /* number of nodes (E and H) */ +extern int d_nodes; /* degree of nodes */ +extern int iters; /* number of iterations */ + +#define ALLOC malloc +#define DIST_SPAN 6 + +#define assert(a) if (!a) {printf("Assertion failure\n"); exit(-1);} + + +typedef struct node_t { + double value; + struct node_t *next; + struct node_t ** to_nodes; /* array of nodes pointed to */ + struct node_t ** from_nodes; /* array of nodes data comes from */ + double * coeffs; /* array of coeffs on edges */ + int from_count; +} node_t; + +typedef struct graph_t { + node_t *e_nodes; + node_t *h_nodes; +} graph_t; + +/* Perform 1 step for a nodelist */ +void compute_nodes(node_t *nodelist); +#endif + diff --git a/test/ccured_olden/em3d/main.c b/test/ccured_olden/em3d/main.c new file mode 100644 index 00000000..61a3af4f --- /dev/null +++ b/test/ccured_olden/em3d/main.c @@ -0,0 +1,45 @@ +#include <stdio.h> + +#include "em3d.h" +#include "make_graph.h" + +#define chatting(A) + +void print_graph(graph_t graph) +{ +#ifdef GET_OUT + node_t *cur_node; + + for(cur_node=graph.e_nodes; cur_node; cur_node=cur_node->next) + { + chatting(("E: value %f, from_count %d\n",cur_node->value, + cur_node->from_count)); + } + for(cur_node=graph.h_nodes; cur_node; cur_node=cur_node->next) + { + chatting(("H: value %f, from_count %d\n",cur_node->value, + cur_node->from_count)); + } +#endif GET_OUT +} + +int iters; + +int main(int argc, char *argv[]) +{ + int i; + graph_t graph; + + dealwithargs(argc,argv); + graph=initialize_graph(); + print_graph(graph); + + for (i = 0; i < iters; i++) + { + compute_nodes(graph.e_nodes); + compute_nodes(graph.h_nodes); + fprintf(stderr, "Completed a computation phase: %d\n", i); + print_graph(graph); + } + return 0; +} diff --git a/test/ccured_olden/em3d/make_graph.c b/test/ccured_olden/em3d/make_graph.c new file mode 100644 index 00000000..6bec340d --- /dev/null +++ b/test/ccured_olden/em3d/make_graph.c @@ -0,0 +1,173 @@ +/* make_graph.c - Create a graph to be solved for the electromagnetic + * problem in 3 dimensions. + * + * By: Martin C. Carlisle + * Date: Feb 23, 1994 + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include "em3d.h" +#include "util.h" + +#define NUM_H_NODES n_nodes +#define H_NODE_DEGREE d_nodes + +#define NUM_E_NODES n_nodes +#define E_NODE_DEGREE d_nodes + +int n_nodes; +int d_nodes; + +node_t **make_table(int size) +{ + node_t **retval; + + retval = (node_t **) ALLOC(size*sizeof(node_t *)); + assert(retval); + return retval; +} + +// post: +// all 'next' fields valid or null +// to_nodes, from_nodes, coefs are dead +void fill_table(node_t **table, int size) +{ + int i; + + /* Now we fill the table with allocated nodes */ + for (i=0; i<size; i++) + { + table[i] = (node_t *) ALLOC(sizeof(node_t)); + table[i]->value = gen_uniform_double(); + table[i]->from_count = 0; + + if (i > 0) + table[i-1]->next = table[i]; + } + table[size-1]->next = NULL; +} + +// post: +// nodes in 'nodelist' have their 'to_nodes' array created, of +// size 'degree'; then this array is filled with pointers to +// randomly-chosen nodes (no duplicates); 'from_count' in the +// pointed-to node keeps track of its in-degree +void make_neighbors(node_t *nodelist, node_t **table, int tablesz, + int degree) +{ + node_t *cur_node; + + for(cur_node = nodelist; cur_node; cur_node=cur_node->next) + { + node_t *other_node; + int j,k; + + cur_node->to_nodes = (node_t **) ALLOC(degree*(sizeof(node_t *))); + for (j=0; j<degree; j++) + { + /* Make sure no duplicates are generated */ + do + { + other_node = table[gen_number(tablesz)]; + for (k=0; k<j; k++) + if (other_node == cur_node->to_nodes[k]) break; + } + while (k<j); + cur_node->to_nodes[j]=other_node; + other_node->from_count++; /* bad load: 50% */ + } + } +} + +// post: +// from_nodes and coeffs get allocated, size specified by 'from_count', +// which is the 'degree' from above; coeff's entries are set randomly, +// from_nodes' entries left dead; from_count then set to 0 +void update_from_coeffs(node_t *nodelist) +{ + node_t *cur_node; + + /* Setup coefficient and from_nodes vectors for h nodes */ + for (cur_node = nodelist; cur_node; cur_node=cur_node->next) + { + int from_count = cur_node->from_count; + int k; + + cur_node->from_nodes = (node_t **) ALLOC(from_count * sizeof(node_t *)); + cur_node->coeffs = (double *) ALLOC(from_count * sizeof(double)); + for (k=0; k<from_count; k++) + cur_node->coeffs[k] = gen_uniform_double(); + + cur_node->from_count = 0; + } +} + +// post: +// nodes pointed-to by those on 'nodelist' have their from_nodes' +// entries filled with back-edges; from_count is used to add +// information contiguously; global algorithm structure keeps the +// array access in bounds (we counted in-degree before, and that +// count was used to allocate, and now we one again enumerate the +// pointers to a node); perhaps a runtime check is in order here +void fill_from_fields(node_t *nodelist, int degree) +{ + node_t *cur_node; + for(cur_node = nodelist; cur_node; cur_node = cur_node->next) + { + int j; + + for (j=0; j<degree; j++) + { + node_t *other_node = cur_node->to_nodes[j]; + other_node->from_nodes[other_node->from_count] = cur_node; + other_node->from_count++; + } + } +} + +// post: +// two arrays of nodes are created; all 'h' nodes are then pointed to +// H_NODE_DEGREE 'e' nodes, and vice-versa for 'e' nodes; backedge +// information is also computed; pointers to the first nodes of each +// set are stashed in a graph_t and returned (sets are linked together +// as a linked list) +graph_t initialize_graph() +{ + node_t **h_table; + node_t **e_table; + graph_t retval; + + /* We start by creating a table of pointers to the h nodes */ + h_table = make_table(NUM_H_NODES); + fill_table(h_table,NUM_H_NODES); + + /* We repeat the same for the e nodes */ + e_table = make_table(NUM_E_NODES); + fill_table(e_table,NUM_E_NODES); + + /* At this point, for each h node, we give it the appropriate number + of neighbors as defined by the degree */ + make_neighbors(h_table[0],e_table,NUM_E_NODES,H_NODE_DEGREE); + make_neighbors(e_table[0],h_table,NUM_H_NODES,E_NODE_DEGREE); + + /* We now create from count and initialize coefficients */ + update_from_coeffs(h_table[0]); + update_from_coeffs(e_table[0]); + + /* Fill the from fields in the nodes */ + fill_from_fields(h_table[0],H_NODE_DEGREE); + fill_from_fields(e_table[0],E_NODE_DEGREE); + + retval.e_nodes=e_table[0]; + retval.h_nodes=h_table[0]; + + free(h_table); + free(e_table); + + return retval; +} + + + diff --git a/test/ccured_olden/em3d/make_graph.h b/test/ccured_olden/em3d/make_graph.h new file mode 100644 index 00000000..2433c018 --- /dev/null +++ b/test/ccured_olden/em3d/make_graph.h @@ -0,0 +1,13 @@ +/* make_graph.h + * + * By: Martin C. Carlisle + * Date: Feb 23, 1994 + * + */ + +#include "em3d.h" + +/* initialize graph returns a structure with pointers to lists of e and h + * nodes. + */ +graph_t initialize_graph(); diff --git a/test/ccured_olden/em3d/ssplain.c b/test/ccured_olden/em3d/ssplain.c new file mode 100644 index 00000000..346c5ed2 --- /dev/null +++ b/test/ccured_olden/em3d/ssplain.c @@ -0,0 +1,70 @@ +#include <assert.h> +#include <stdio.h> +#include <stdlib.h> +#include <stdarg.h> +#include <limits.h> +#include <stddef.h> +#include "ssplain.h" + + +void chatting(char *s, ...) +{ + va_list ap; + va_start(ap,s); + vfprintf(stderr, s, ap); + va_end(ap); +} + + +#ifdef SS_RAND +double drand48() +{ + double d; + d = (double) random() / LONG_MAX; + return d; +} + + +long lrand48() +{ + long l = random(); + return l; +} + +void srand48(long seed) +{ + srand(seed); +} +#endif SS_RAND + + +#ifndef BEFOREBOX +static unsigned long bytes_allocated = 0; +static unsigned long allocations = 0; + +void* +ssplain_malloc(int size) +{ + allocations++; + bytes_allocated+=size; + return malloc(size); +} + +void* +ssplain_calloc(int nelems, int size) +{ + void *p; + allocations++; + bytes_allocated+= nelems * size; + p = calloc(nelems, size); + if(!p) { printf("Cannot allocate\n"); exit(3); } + return p; +} + +void +ssplain_alloc_stats() +{ + chatting("Allocation stats: %d bytes allocated in %d allocations\n", + bytes_allocated, allocations); +} +#endif diff --git a/test/ccured_olden/em3d/ssplain.h b/test/ccured_olden/em3d/ssplain.h new file mode 100644 index 00000000..54f3a3ed --- /dev/null +++ b/test/ccured_olden/em3d/ssplain.h @@ -0,0 +1,128 @@ +#ifndef SS_PLAIN_H +#define SS_PLAIN_H + +void * ssplain_malloc(int size); +void * ssplain_calloc(int nelems, int size); +void ssplain_alloc_stats(); + +/* Convert MP shutdown to exit */ +#define __ShutDown(ID) { ssplain_alloc_stats(); exit(ID); } + +/* All these CM-5 things are nops */ +#define CMMD_node_timer_clear(ID) +#define CMMD_node_timer_start(ID) +#define CMMD_node_timer_stop(ID) +#define CMMD_node_timer_elapsed(ID) ((double)0) + +#define CMMD_self_address() 0 + +#define ClearAllStats() + +/* define away the CM-5 allocator */ +#include <stdlib.h> + +#ifndef ALLOC +#define ALLOC(NUM,ESIZE) ssplain_calloc (NUM+1,ESIZE) +#endif ALLOC + +#ifndef mymalloc +#define mymalloc malloc +#endif mymalloc + +/* Get all of these multiprocessing things out of here. */ +/* My id will stay that way */ +#define IDMASK 0xffffffff + +/* Nothing is getting tested */ +#ifndef RETEST +#define RETEST() +#endif RETEST + +#ifndef NOTEST +#define NOTEST() +#endif NOTEST + +/* Everything is local */ +#ifndef local +#define local +#endif local + +#ifndef LOCAL +#define LOCAL(VAL) (VAL) +#endif LOCAL + +#ifndef ISLOCPTR +#define ISLOCPTR(VAL) (1) +#endif ISLOCPTR + +#ifndef MLOCAL +#define MLOCAL(VAL) +#endif MLOCAL + +/* An atomic increment is a normal increment */ +#ifndef ATOMICINC +#define ATOMICINC(PVAL) (*(PVAL) = *(PVAL) + 1) +#endif ATOMICINC + +/* Nothing is migrating anywhere */ +#ifndef MIGRATE +#define MIGRATE(ID) +#endif MIGRATE + +#ifndef MIGRPH +#define MIGRPH() +#endif MIGRPH + +#ifndef UNPHASE +#define UNPHASE() +#endif UNPHASE + +#ifndef PID +#define PID(VAL) (0) +#endif PID + +/* All these functions */ +#pragma ccuredvararg("chatting", printf(1)); +void chatting(char *s, ...); + +/* just define these guys, they are not going to change */ +#define __NumNodes 1 +#define __MyNodeId 0 +#define __NDim 0 + +typedef struct ss_future_cell_int { + int value; +} future_cell_int; + +/* Where are these things for real? */ +#ifdef SS_RAND +long lrand48(); +double drand48(); +void srand48(long seed); +#endif SS_RAND + +#define MOD(V,M) ((V) & ((M) - 1)) +#define INC_MOD(V,M) (V) = MOD((V) + 1, (M)) + +/* Prefetch instructions */ + +/* Use these for 1 lookahead prefetching */ + +#ifdef OVERHEAD_ONLY +#define ASSEMBLE_PREFETCH(ARG) +#define ASSEMBLE_PREFETCH_HEAD(ARG) +#else !OVERHEAD_ONLY + +#define ASSEMBLE_PREFETCH(ARG) \ + asm ("lw $0, %0" : /* no outputs */ : "g" (ARG)) + +/* Use these for infinite lookahead prefetching */ +#define ASSEMBLE_PREFETCH_HEAD(ARG) \ + asm ("lh $0, %0" : /* no outputs */ : "g" (ARG)) + +#endif OVERHEAD_ONLY + +#endif SS_PLAIN_H + + + diff --git a/test/ccured_olden/em3d/util.c b/test/ccured_olden/em3d/util.c new file mode 100644 index 00000000..3dc5592d --- /dev/null +++ b/test/ccured_olden/em3d/util.c @@ -0,0 +1,34 @@ +#define CONST_seed 45 +#include <stdlib.h> + +/* initialize the random number generator for a particular processor */ +void init_random(int myid) +{ + srand48(myid*CONST_seed); +} + +/* return a random number from 0 to range-1 */ +int gen_number(int range) +{ + return lrand48() % range; +} + +/* return a random number in [-range+1,range-1] */ +int gen_signed_number(int range) +{ + int temp; + + temp = lrand48() % (2*range-1); /* 0..2*range-2 */ + return temp-(range-1); +} + +/* Generate a double from 0.0 to 1.0 */ +double gen_uniform_double() +{ + return drand48(); +} + +int check_percent(int percent) +{ + return (drand48() < (double) (percent/100.0)); +} diff --git a/test/ccured_olden/em3d/util.h b/test/ccured_olden/em3d/util.h new file mode 100644 index 00000000..a6b09f28 --- /dev/null +++ b/test/ccured_olden/em3d/util.h @@ -0,0 +1,23 @@ +/* util.h + * + * headers for randomizing utilities + * + * By: Martin C. Carlisle + * Date: Feb 23, 1994 + * + */ + +/* initialize the random number generator for a particular processor */ +void init_random(int myid); + +/* return a random number from 0 to range-1 */ +int gen_number(int range); + +/* return a random number in [-range+1,range-1] */ +int gen_signed_number(int range); + +/* Generate a double from 0.0 to 1.0 */ +double gen_uniform_double(); + +/* Return 1, percent percent of the time and 0 otherwise */ +int check_percent(int percent); |