From 5aaccd0ba0e759008a8c008f5f67953a2589900e Mon Sep 17 00:00:00 2001 From: David Kaufmann Date: Thu, 24 Nov 2011 00:54:22 +0100 Subject: [PATCH] cleanup --- openmp/merge/sort.c | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/openmp/merge/sort.c b/openmp/merge/sort.c index 5d7cb99..e18d1c8 100644 --- a/openmp/merge/sort.c +++ b/openmp/merge/sort.c @@ -5,17 +5,19 @@ #include #include "numlist.h" +#define ATYPE int + void printlist(char * message, int * ptr); int rank(int elem, int * list); /* merge(a,n,b,m,c): merges a of size n and b of size m into c */ -void merge(int ti, int * a, int n, int * b, int m, int * c); +void merge(int ti, ATYPE * a, int n, ATYPE * b, int m, ATYPE * c); int main ( int argc, char ** argv) { int n = LISTSIZE; int p = 1; int opt, i; int a_len, b_len, b_len_end, b_len_begin; - int * c; + ATYPE * c; double startTime, endTime; while ((opt = getopt(argc, argv, "t:")) != -1) { @@ -32,7 +34,7 @@ int main ( int argc, char ** argv) { //printf ("Maximal number of threads: %i\n", omp_get_max_threads()); //printf ("----------------------------------\n"); - c = (int *) malloc((LISTSIZE * 2 + 1) * (sizeof (int))); + c = (ATYPE *) malloc((LISTSIZE * 2 + 1) * (sizeof (ATYPE))); c[LISTSIZE*2] = -1; //printlist("0 Sorted List A:", a); @@ -71,7 +73,7 @@ int main ( int argc, char ** argv) { return 0; } -void printlist(char * message, int * ptr) { +void printlist(char * message, ATYPE * ptr) { printf (message); while (*ptr != -1) { printf (" %i", *ptr); @@ -80,7 +82,7 @@ void printlist(char * message, int * ptr) { printf ("\n"); } -int rank(int elem, int * list) { +int rank(int elem, ATYPE * list) { int pos; pos = 0; @@ -96,7 +98,7 @@ int rank(int elem, int * list) { return -1; } -void merge(int ti, int * a, int n, int * b, int m, int * c) { +void merge(int ti, ATYPE * a, int n, ATYPE * b, int m, int * c) { int sum; int i; /*printf ("sorting a:%i (%i) and b:%i (%i)\n", *a, n, *b, m);*/ @@ -106,27 +108,24 @@ void merge(int ti, int * a, int n, int * b, int m, int * c) { //printf ("%i modifying %i (%i+%i) (c[%i]/0x%08x -> c[%i]/0x%08x)\n", ti, sum, n, m, 0, (unsigned int) &c, sum-1, ((unsigned int) &c)+sum); for (i = 0; i < sum; i++) { // n+m == 0 - if (*a < 0 && *b < 0) { + if (n <= 0 && m <= 0) { printf ("%i Calculation failed somehow...\n", ti); return; } - if (*a < 0) { - c[i] = *b; m--; - b++; + if (n <= 0) { + c[i] = *b++; m--; } else { - if (*b < 0) { - c[i] = *a; n--; - a++; + if (m <= 0) { + c[i] = *a++; n--; } else { if (*a < *b) { - c[i] = *a; n--; - a++; + c[i] = *a++; n--; } else { - c[i] = *b; m--; - b++; + c[i] = *b++; m--; } } } } + printf ("merge done, n=%d, m=%d\n", n, m); return; } -- 2.43.0