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