#include #include /* local quick sort algorithm */ static void quicksort( double *x, int i1, int i2 ) { int i, j; double xm, tmp; i = i1; j = i2; xm = x[(i1+i2)/2]; do { while (x[i] < xm) i++; while (x[j] > xm) j--; if (i <= j) { tmp = x[i]; x[i] = x[j]; x[j] = tmp; i++; j--; } } while (i <= j); if (i1 < j) quicksort(x, i1, j); if (i < i2) quicksort(x, i, i2); } /* sorting routine for an array of doubles */ void pasort( int n, double *x ) { quicksort(x, 0, n-1); } /* read a binary data file of a specific format into an array. */ double* readbinfile( const char *s, double *y1, double *y2, int *m, int*n) { FILE *f; double *buf, dummy; size_t d; f = fopen(s,"r"); fseek(f, 0, SEEK_END); *n = ftell(f)/sizeof(double)-3; buf = (double*)malloc(*n*sizeof(double)); fseek(f, 0, SEEK_SET); d = fread(y1, sizeof(double), 1, f); d = fread(y2, sizeof(double), 1, f); d = fread(&dummy, sizeof(double), 1, f); d = fread(buf, sizeof(double), *n, f); fclose(f); *m = dummy; return buf; }