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