1#ifndef GRID_LEXICOGRAPHIC_H
2#define GRID_LEXICOGRAPHIC_H
10 template<
class coor_t>
14 for(
int d=0;d<nd;d++){
15 coor[d] = index % dims[d];
16 index = index / dims[d];
20 template<
class coor_t>
25 for(
int d=0;d<nd;d++){
26 index = index+(int64_t)stride*coor[d];
27 stride=stride*dims[d];
30 template<
class coor_t>
34 assert(index64<2*1024*1024*1024LL);
35 index = (int) index64;
38 template<
class coor_t>
43 for(
int d=nd-1;d>=0;d--){
44 index = index+(int64_t)stride*coor[d];
45 stride=stride*dims[d];
48 template<
class coor_t>
52 if ( index64>=2*1024*1024*1024LL ){
55 assert(index64<2*1024*1024*1024LL);
56 index = (int) index64;
58 template<
class coor_t>
62 for(
int d=nd-1;d>=0;d--){
63 coor[d] = index % dims[d];
64 index = index / dims[d];
#define accelerator_inline
static void IndexFromCoorReversed(const coor_t &coor, int64_t &index, const coor_t &dims)
static void CoorFromIndexReversed(coor_t &coor, int64_t index, const coor_t &dims)
static accelerator_inline void IndexFromCoor(const coor_t &coor, int64_t &index, const coor_t &dims)
static accelerator_inline void CoorFromIndex(coor_t &coor, int64_t index, const coor_t &dims)
static void IndexFromCoorReversed(const coor_t &coor, int &index, const coor_t &dims)
static accelerator_inline void IndexFromCoor(const coor_t &coor, int &index, const coor_t &dims)