68 #define ccrystal_free PREFIXED_NAME(crystal_free)
70 #define fcrystal_setup \
71 FORTRAN_NAME(crystal_setup ,CRYSTAL_SETUP )
72 #define fcrystal_ituple_sort \
73 FORTRAN_NAME(crystal_ituple_sort ,CRYSTAL_ITUPLE_SORT )
74 #define fcrystal_tuple_sort \
75 FORTRAN_NAME(crystal_tuple_sort ,CRYSTAL_TUPLE_SORT )
76 #define fcrystal_ituple_transfer \
77 FORTRAN_NAME(crystal_ituple_transfer,CRYSTAL_ITUPLE_TRANSFER)
78 #define fcrystal_tuple_transfer \
79 FORTRAN_NAME(crystal_tuple_transfer ,CRYSTAL_TUPLE_TRANSFER )
80 #define fcrystal_free \
81 FORTRAN_NAME(crystal_free ,CRYSTAL_FREE )
100 #define CHECK_HANDLE(func) do \
101 if(*handle<0 || *handle>=handle_n || !handle_array[*handle]) \
102 fail(1,__FILE__,__LINE__,func ": invalid handle"); \
107 const sint keys[],
const sint *nkey)
109 const size_t size = (*m)*
sizeof(
sint);
113 buf = &handle_array[*handle]->
data;
115 sortp(buf,0, (
uint*)&A[keys[nk]-1],*n,size);
117 sortp(buf,1, (
uint*)&A[keys[nk]-1],*n,size);
125 double Ad[],
const sint *
const md,
126 const sint keys[],
const sint *
const nkey)
128 const size_t size_i = (*mi)*
sizeof(
sint),
129 size_l = (*ml)*
sizeof(
slong),
130 size_d = (*md)*
sizeof(double);
135 buf = &handle_array[*handle]->
data;
139 if(k<0 || k>=*mi+*ml)
140 fail(1,__FILE__,__LINE__,
"crystal_tuple_sort: invalid key");
141 else if(k<*mi)
sortp (buf,init, (
uint *)&Ai[k], *n,size_i);
152 const sint *nmax,
const sint *proc_key)
154 struct array ar, *
const ar_ptr = &ar;
155 const unsigned size=(*m)*
sizeof(
sint);
159 (
uint*)&A[*proc_key-1],size, handle_array[*handle]);
166 double Ad[],
const sint *
const md,
167 const sint *
const proc_key)
169 struct array ar_i, ar_l, ar_d, *ar[3];
172 size[0]=*mi*
sizeof(
sint);
173 size[1]=*ml*
sizeof(
slong);
174 size[2]=*md*
sizeof(double);
175 ar[0]=&ar_i, ar[1]=&ar_l, ar[2]=&ar_d;
177 ar_i.
n=ar_l.
n=ar_d.
n = *
n;
180 (
uint*)&Ai[*proc_key-1],size[0], handle_array[*handle]);
187 free(handle_array[*handle]);
188 handle_array[*handle] = 0;
#define tmalloc(type, count)
#define fcrystal_tuple_sort
#define sarray_permute_buf_
#define fcrystal_ituple_sort
#define trealloc(type, ptr, count)
#define comm_init_check(c, ce, np)
#define fcrystal_ituple_transfer
#define sarray_transfer_many
static struct crystal ** handle_array
uint * sortp(buffer *restrict buf, int start_perm, const T *restrict A, uint n, unsigned stride)
#define fcrystal_tuple_transfer
#define buffer_init(b, max)
#define CHECK_HANDLE(func)
establishes some macros to establish naming conventions
void fail(int status, const char *file, unsigned line, const char *fmt,...)