1/*
2  NAS Parallel Benchmarks 2.3 OpenMP C Versions
3 */
4
5#include <stdio.h>
6#include <stdlib.h>
7#include <math.h>
8
9#if defined(_OPENMP)
10#include <omp.h>
11#endif /* _OPENMP */
12
13typedef int boolean;
14typedef struct { double real; double imag; } dcomplex;
15
16#define TRUE	1
17#define FALSE	0
18
19#define max(a,b) (((a) > (b)) ? (a) : (b))
20#define min(a,b) (((a) < (b)) ? (a) : (b))
21#define	pow2(a) ((a)*(a))
22
23#define get_real(c) c.real
24#define get_imag(c) c.imag
25#define cadd(c,a,b) (c.real = a.real + b.real, c.imag = a.imag + b.imag)
26#define csub(c,a,b) (c.real = a.real - b.real, c.imag = a.imag - b.imag)
27#define cmul(c,a,b) (c.real = a.real * b.real - a.imag * b.imag, \
28                     c.imag = a.real * b.imag + a.imag * b.real)
29#define crmul(c,a,b) (c.real = a.real * b, c.imag = a.imag * b)
30
31extern double randlc(double *, double);
32extern void vranlc(int, double *, double, double *);
33extern void timer_clear(int);
34extern void timer_start(int);
35extern void timer_stop(int);
36extern double timer_read(int);
37
38extern void c_print_results(char *name, char class, int n1, int n2,
39			    int n3, int niter, int nthreads, double t,
40			    double mops, char *optype, int passed_verification,
41			    char *npbversion, char *compiletime, char *cc,
42			    char *clink, char *c_lib, char *c_inc,
43			    char *cflags, char *clinkflags, char *rand);
44