#ifndef __COMMON_H__ #define __COMMON_H__ #include #include #define eps 2.2204460492503131e-16 #define doublemax 1e50 #define INF 2e50 #define listINF 2.345e50 #ifndef min #define min(a,b) ((a) < (b) ? (a): (b)) #endif #ifndef max #define max(a,b) ((a) > (b) ? (a): (b)) #endif /* Find minimum value of an array and return its index */ inline int minarray(double *A, int l) { int i; int minind=0; for (i=0; ieps; } void roots(double* Coeff, double* ans); inline int maxarray(double *A, int l) { int i; int maxind=0; for (i=0; iA[maxind]){ maxind=i; } } return maxind; } inline int mindex3(int x, int y, int z, int sizx, int sizy) { return x+y*sizx+z*sizx*sizy; } inline bool IsFinite(double x) { return (x <= doublemax && x >= -doublemax ); } inline bool IsInf(double x) { return (x >= doublemax ); } inline bool IsListInf(double x){ return (x == listINF ); } inline bool isntfrozen3d(int i, int j, int k, int *dims, bool *Frozen) { return (i>=0)&&(j>=0)&&(k>=0)&&(i=0)&&(j>=0)&&(k>=0)&&(i15) { x=x-15; y=y*32768; } return y*p2x[x]; } inline void show_list(double **listval, int *listprop) { int z, k; for(z=0;z0)&&(listval[z-1][(int)floor(k/2)]>listval[z][k])) { printf("*%15.5f", listval[z][k]); } else { printf(" %15.5f", listval[z][k]); } } printf("\n"); } } inline void initialize_list(double ** listval, int *listprop) { /* Loop variables */ int i; /* Current Length, Orde and Current Max Length */ listprop[0]=0; listprop[1]=1; listprop[2]=2; /* Make first orde storage of 2 values */ listval[0]=(double*)malloc(2 * sizeof(double)); /* Initialize on infinite */ for(i=0;i<2;i++) { listval[0][i]=listINF; } } inline void destroy_list(double ** listval, int *listprop) { /* Loop variables */ int i, list_orde; /* Get list orde */ list_orde=listprop[1]; /* Free memory */ for(i=0;i=0)&&(j>=0)&&(i=0)&&(j>=0)&&(i