| 1 | /* NAS Parallel Benchmarks 2.3 UPC Version */ | 
|---|
| 2 |  | 
|---|
| 3 | #include <stdio.h> | 
|---|
| 4 | #include <stdlib.h> | 
|---|
| 5 | #include <math.h> | 
|---|
| 6 |  | 
|---|
| 7 | #if defined(__CYGWIN__) && defined(__RPCNDR_H__) | 
|---|
| 8 | /* bug 2419 : workaround a typedef of bool in the cygwin headers */ | 
|---|
| 9 | #define boolean int | 
|---|
| 10 | #else | 
|---|
| 11 | typedef int boolean; | 
|---|
| 12 | #endif | 
|---|
| 13 |  | 
|---|
| 14 | typedef struct { | 
|---|
| 15 |     double real; | 
|---|
| 16 |     double imag; | 
|---|
| 17 | } dcomplex; | 
|---|
| 18 |  | 
|---|
| 19 | #ifndef TRUE | 
|---|
| 20 | #define TRUE    1 | 
|---|
| 21 | #endif | 
|---|
| 22 | #ifndef FALSE | 
|---|
| 23 | #define FALSE   0 | 
|---|
| 24 | #endif | 
|---|
| 25 |  | 
|---|
| 26 | #define MEM_OK(var) {                                         \ | 
|---|
| 27 |     if( var == NULL )                                           \ | 
|---|
| 28 |     {                                                         \ | 
|---|
| 29 |         printf("TH%02d: ERROR: %s == NULL\n", MYTHREAD, #var ); \ | 
|---|
| 30 |         upc_global_exit(1);                                     \ | 
|---|
| 31 |     } } | 
|---|
| 32 |  | 
|---|
| 33 | #ifndef max | 
|---|
| 34 | #define max(a,b) (((a) > (b)) ? (a) : (b)) | 
|---|
| 35 | #endif | 
|---|
| 36 | #ifndef min | 
|---|
| 37 | #define min(a,b) (((a) < (b)) ? (a) : (b)) | 
|---|
| 38 | #endif | 
|---|
| 39 | #define pow2(a) ((a)*(a)) | 
|---|
| 40 |  | 
|---|
| 41 | #define get_real(c) c.real | 
|---|
| 42 | #define get_imag(c) c.imag | 
|---|
| 43 | #define cadd(c,a,b) (c.real = a.real + b.real, c.imag = a.imag + b.imag) | 
|---|
| 44 | #define csub(c,a,b) (c.real = a.real - b.real, c.imag = a.imag - b.imag) | 
|---|
| 45 | #define cmul(c,a,b) (c.real = a.real * b.real - a.imag * b.imag, \ | 
|---|
| 46 |         c.imag = a.real * b.imag + a.imag * b.real) | 
|---|
| 47 | #define crmul(c,a,b) (c.real = a.real * b, c.imag = a.imag * b) | 
|---|
| 48 |  | 
|---|
| 49 | extern double randlc(double *, double); | 
|---|
| 50 | extern void vranlc(int, double *, double, double *); | 
|---|
| 51 |  | 
|---|
| 52 | extern void c_print_results(const char *name, char class, int n1, int n2, | 
|---|
| 53 |         int n3, int niter, int nthreads, double t, | 
|---|
| 54 |         double mops, const char *optype, int passed_verification, | 
|---|
| 55 |         const char *npbversion, const char *compiletime, const char *cc, | 
|---|
| 56 |         const char *clink, const char *c_lib, const char *c_inc, | 
|---|
| 57 |         const char *cflags, const char *clinkflags, const char *rand); | 
|---|