view 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
line wrap: on
line source

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<unistd.h>

#include"quicksort_test.h"

#define STACK_SIZE 10240

extern void quicksort_IF();


void
random_initialize(int *v, int size, int min, int max)
{
	int i;
	int diff = max-min+1;

	for (i=0; i<size; i++) {
		v[i] = min+random()%diff;
	}
	return;
}

static void
print_array(int *v, int size)
{
	int i;
	printf("[");
	for (i=0; i<size; i++) {
		printf("%s%4d", (i%10==0)? "\n  ":" ", v[i]);
	}
	printf(" ]\n");
}

int *IFv;
int IFs;
int IFe;
void* IFret;
void *IFarg;
void* IFsp;
int IFsize;

void
starter(int size)
{
	int *target;
	void *sp;

	target = (int*)malloc(sizeof(int)*size);
	if (!target) {
		perror("malloc");
		exit(1);
	}

	random_initialize(target, size, 0, 90);

	sp = malloc(STACK_SIZE);
	if (!sp) {
		perror("malloc");
		exit(1);
	}
	//print_array(target, size);
	//goto quicksort(target, 0, size-1, exit0, (void*)target);
	IFv=   target;
	IFs=    0;
	IFe=    size-1;
	IFret=  exit0;
	IFarg=(void*)target;
	IFsp= sp;
	IFsize= STACK_SIZE;
	quicksort_IF();

	printf("bad region\n");
}

static int size=100;

int
main(int argc, char **argv)
{
	unsigned int seed=0;
	int opt;

	while ((opt = getopt(argc, argv, "s:n:")) != -1) {
		switch (opt) {
			case 's':
				seed = atoi(optarg);
				break;
			case 'n':
				size = atoi(optarg);
				break;
			default:
				fprintf(stderr, "Usage: %s [-t times] [-n sizeofarray] [-s seed]\n", argv[0]);
				exit(1);
		}
	}

	srandom(seed);
	starter(size);
	return 0;
}

static int
check_sort(int *v, int size)
{
	int i;
	for (i=0; i<size-1; i++) {
		if (v[i] > v[i+1])
			return 0;
	}
	return 1;
}

void
exit0(void *arg)
{
	int b;
	//print_array(arg, size);
	b = check_sort(arg, size);
	if (b) {
		printf("sorting successful!\n");
		exit(EXIT_SUCCESS);
	} else {
		printf("sorting failure! \n");
		exit(EXIT_FAILURE);
	}
}