comparison paper/quicksort_for_ppc/quicksort_test.cbc @ 10:3d9addf62d0b

organized repository.
author kent <kent@cr.ie.u-ryukyu.ac.jp>
date Tue, 16 Feb 2010 14:35:36 +0900
parents
children
comparison
equal deleted inserted replaced
9:ae0a3666f7f9 10:3d9addf62d0b
1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<assert.h>
4 #include<unistd.h>
5
6 #include"quicksort_test.h"
7
8 #define STACK_SIZE 10240
9
10 extern void quicksort_IF();
11
12
13 void
14 random_initialize(int *v, int size, int min, int max)
15 {
16 int i;
17 int diff = max-min+1;
18
19 for (i=0; i<size; i++) {
20 v[i] = min+random()%diff;
21 }
22 return;
23 }
24
25 static void
26 print_array(int *v, int size)
27 {
28 int i;
29 printf("[");
30 for (i=0; i<size; i++) {
31 printf("%s%4d", (i%10==0)? "\n ":" ", v[i]);
32 }
33 printf(" ]\n");
34 }
35
36 int *IFv;
37 int IFs;
38 int IFe;
39 void* IFret;
40 void *IFarg;
41 void* IFsp;
42 int IFsize;
43
44 void
45 starter(int size)
46 {
47 int *target;
48 void *sp;
49
50 target = (int*)malloc(sizeof(int)*size);
51 if (!target) {
52 perror("malloc");
53 exit(1);
54 }
55
56 random_initialize(target, size, 0, 90);
57
58 sp = malloc(STACK_SIZE);
59 if (!sp) {
60 perror("malloc");
61 exit(1);
62 }
63 //print_array(target, size);
64 //goto quicksort(target, 0, size-1, exit0, (void*)target);
65 IFv= target;
66 IFs= 0;
67 IFe= size-1;
68 IFret= exit0;
69 IFarg=(void*)target;
70 IFsp= sp;
71 IFsize= STACK_SIZE;
72 quicksort_IF();
73
74 printf("bad region\n");
75 }
76
77 static int size=100;
78
79 int
80 main(int argc, char **argv)
81 {
82 unsigned int seed=0;
83 int opt;
84
85 while ((opt = getopt(argc, argv, "s:n:")) != -1) {
86 switch (opt) {
87 case 's':
88 seed = atoi(optarg);
89 break;
90 case 'n':
91 size = atoi(optarg);
92 break;
93 default:
94 fprintf(stderr, "Usage: %s [-t times] [-n sizeofarray] [-s seed]\n", argv[0]);
95 exit(1);
96 }
97 }
98
99 srandom(seed);
100 starter(size);
101 return 0;
102 }
103
104 static int
105 check_sort(int *v, int size)
106 {
107 int i;
108 for (i=0; i<size-1; i++) {
109 if (v[i] > v[i+1])
110 return 0;
111 }
112 return 1;
113 }
114
115 void
116 exit0(void *arg)
117 {
118 int b;
119 //print_array(arg, size);
120 b = check_sort(arg, size);
121 if (b) {
122 printf("sorting successful!\n");
123 exit(EXIT_SUCCESS);
124 } else {
125 printf("sorting failure! \n");
126 exit(EXIT_FAILURE);
127 }
128 }
129