1 /* 2 ** Fortran to C index translation macros for Mark Govett's ctof for 3 ** GPU kernels. 4 ** 5 ** Tom Henderson 6 ** 9/25/08 7 ** 8 */ 9 10 #ifndef _FTOC_MACROS_ 11 #define _FTOC_MACROS_ 12 13 #define FTNREF1D(i_index,i_lb) ((i_index)-(i_lb)) 14 #define FTNREF2D(i_index,j_index,i_size,i_lb,j_lb) ((i_size)*(j_index-(j_lb))+(i_index)-(i_lb)) 15 #define FTNREF3D(i_index,j_index,k_index,i_size,j_size,i_lb,j_lb,k_lb) (i_size)*(j_size)*(k_index-k_lb)+(i_size)*(j_index-j_lb)+i_index-i_lb 16 #define FTNREF4D(i_index,j_index,k_index,l_index,i_size,j_size,k_size,i_lb,j_lb,k_lb,l_lb) (i_size)*(j_size)*(k_size)*(l_index-l_lb)+(i_size)*(j_size)*(k_index-k_lb)+(i_size)*(j_index-j_lb)+i_index-i_lb 17 #define FTNREF5D(i_index,j_index,k_index,l_index,m_index,i_size,j_size,k_size,l_size,i_lb,j_lb,k_lb,l_lb,m_lb) (i_size)*(j_size)*(k_size)*(l_size)*(m_index-m_lb)+(i_size)*(j_size)*(k_size)*(l_index-l_lb)+(i_size)*(j_size)*(k_index-k_lb)+(i_size)*(j_index-j_lb)+i_index-i_lb 18 19 #define FTNSIZE1D(i_lb,i_ub) (i_ub-i_lb+1) 20 #define FTNSIZE2D(i_lb,i_ub,j_lb,j_ub) (i_ub-i_lb+1)*(j_ub-j_lb+1) 21 #define FTNSIZE3D(i_lb,i_ub,j_lb,j_ub,k_lb,k_ub) (i_ub-i_lb+1)*(j_ub-j_lb+1)*(k_ub-k_lb+1) 22 #ifndef MAX 23 #define MAX(a, b) ((a) >= (b) ? (a) : (b)) 24 #endif 25 #ifndef MIN 26 #define MIN(a, b) ((a) >= (b) ? (b) : (a)) 27 #endif 28 #define SIGN(a,b) (((b) < (0) && (a > (0))||((b) > (0) && ((a)<(0)))) ? (-a) : (a)) 29 #define SQR(a) ((a)*(a)) 30 #endif /* _FTOC_MACROS_ */ 31 32