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