idamnjanovic@60: /************************************************************************** idamnjanovic@60: * idamnjanovic@60: * File name: omputils.c idamnjanovic@60: * idamnjanovic@60: * Ron Rubinstein idamnjanovic@60: * Computer Science Department idamnjanovic@60: * Technion, Haifa 32000 Israel idamnjanovic@60: * ronrubin@cs idamnjanovic@60: * idamnjanovic@60: * Last Updated: 18.8.2009 idamnjanovic@60: * idamnjanovic@60: *************************************************************************/ idamnjanovic@60: idamnjanovic@60: #include "omputils.h" idamnjanovic@60: #include idamnjanovic@60: idamnjanovic@60: idamnjanovic@60: const char FULL_GAMMA_STR[] = "full"; idamnjanovic@60: const char SPARSE_GAMMA_STR[] = "sparse"; idamnjanovic@60: idamnjanovic@60: idamnjanovic@60: /* convert seconds to hours, minutes and seconds */ idamnjanovic@60: idamnjanovic@60: void secs2hms(double sectot, int *hrs, int *mins, double *secs) idamnjanovic@60: { idamnjanovic@60: *hrs = (int)(floor(sectot/3600)+1e-2); idamnjanovic@60: sectot = sectot - 3600*(*hrs); idamnjanovic@60: *mins = (int)(floor(sectot/60)+1e-2); idamnjanovic@60: *secs = sectot - 60*(*mins); idamnjanovic@60: } idamnjanovic@60: idamnjanovic@60: idamnjanovic@60: /* quicksort, public-domain C implementation by Darel Rex Finley. */ idamnjanovic@60: /* modification: sorts the array data[] as well, according to the values in the array vals[] */ idamnjanovic@60: idamnjanovic@60: #define MAX_LEVELS 300 idamnjanovic@60: idamnjanovic@60: void quicksort(mwIndex vals[], double data[], mwIndex n) { idamnjanovic@60: idamnjanovic@60: long piv, beg[MAX_LEVELS], end[MAX_LEVELS], i=0, L, R, swap ; idamnjanovic@60: double datapiv; idamnjanovic@60: idamnjanovic@60: beg[0]=0; idamnjanovic@60: end[0]=n; idamnjanovic@60: idamnjanovic@60: while (i>=0) { idamnjanovic@60: idamnjanovic@60: L=beg[i]; idamnjanovic@60: R=end[i]-1; idamnjanovic@60: idamnjanovic@60: if (L=piv && L end[i-1]-beg[i-1]) { idamnjanovic@60: swap=beg[i]; beg[i]=beg[i-1]; beg[i-1]=swap; idamnjanovic@60: swap=end[i]; end[i]=end[i-1]; end[i-1]=swap; idamnjanovic@60: } idamnjanovic@60: } idamnjanovic@60: else { idamnjanovic@60: i--; idamnjanovic@60: } idamnjanovic@60: } idamnjanovic@60: }