idamnjanovic@60: /************************************************************************** idamnjanovic@60: * idamnjanovic@60: * File name: omputils.h 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: * Utility definitions and functions for the OMP library. idamnjanovic@60: * idamnjanovic@60: *************************************************************************/ idamnjanovic@60: idamnjanovic@60: idamnjanovic@60: #ifndef __OMP_UTILS_H__ idamnjanovic@60: #define __OMP_UTILS_H__ idamnjanovic@60: idamnjanovic@60: #include "mex.h" idamnjanovic@60: idamnjanovic@60: idamnjanovic@60: /* constants for the representation mode of gamma */ idamnjanovic@60: idamnjanovic@60: extern const char FULL_GAMMA_STR[]; /* "full" */ idamnjanovic@60: extern const char SPARSE_GAMMA_STR[]; /* "sparse" */ idamnjanovic@60: idamnjanovic@60: idamnjanovic@60: #define FULL_GAMMA 1 idamnjanovic@60: #define SPARSE_GAMMA 2 idamnjanovic@60: #define INVALID_MODE 3 idamnjanovic@60: idamnjanovic@60: idamnjanovic@60: idamnjanovic@60: /************************************************************************** idamnjanovic@60: * Memory management for OMP2. idamnjanovic@60: * idamnjanovic@60: * GAMMA_INC_FACTOR: idamnjanovic@60: * The matrix GAMMA is allocated with sqrt(n)/2 coefficients per signal, idamnjanovic@60: * for a total of nzmax = L*sqrt(n)/2 nonzeros. Whenever GAMMA needs to be idamnjanovic@60: * increased, it is increased by a factor of GAMMA_INC_FACTOR. idamnjanovic@60: * idamnjanovic@60: * MAT_INC_FACTOR: idamnjanovic@60: * The matrices Lchol, Gsub and Dsub are allocated with sqrt(n)/2 idamnjanovic@60: * columns each. If additional columns are needed, this number is idamnjanovic@60: * increased by a factor of MAT_INC_FACTOR. idamnjanovic@60: **************************************************************************/ idamnjanovic@60: idamnjanovic@60: #define GAMMA_INC_FACTOR (1.4) idamnjanovic@60: #define MAT_INC_FACTOR (1.6) idamnjanovic@60: idamnjanovic@60: idamnjanovic@60: idamnjanovic@60: /************************************************************************** idamnjanovic@60: * Convert number of seconds to hour, minute and second representation. idamnjanovic@60: * idamnjanovic@60: * Parameters: idamnjanovic@60: * sectot - total number of seconds idamnjanovic@60: * hrs, mins, secs - output hours (whole) and minutes (whole) and seconds idamnjanovic@60: * idamnjanovic@60: **************************************************************************/ idamnjanovic@60: void secs2hms(double sectot, int *hrs, int *mins, double *secs); idamnjanovic@60: idamnjanovic@60: idamnjanovic@60: idamnjanovic@60: /************************************************************************** idamnjanovic@60: * QuickSort - public-domain C implementation by Darel Rex Finley. idamnjanovic@60: * idamnjanovic@60: * Modified to sort both the array vals[] and the array data[] according idamnjanovic@60: * to the values in the array vals[]. idamnjanovic@60: * idamnjanovic@60: **************************************************************************/ idamnjanovic@60: void quicksort(mwIndex vals[], double data[], mwIndex n); idamnjanovic@60: idamnjanovic@60: idamnjanovic@60: #endif idamnjanovic@60: