31 #define fgs_setup FORTRAN_NAME(gs_setup ,GS_SETUP )
32 #define fgs_op FORTRAN_NAME(gs_op ,GS_OP )
33 #define fgs_op_vec FORTRAN_NAME(gs_op_vec ,GS_OP_VEC )
34 #define fgs_op_many FORTRAN_NAME(gs_op_many ,GS_OP_MANY )
35 #define fgs_op_fields FORTRAN_NAME(gs_op_fields,GS_OP_FIELDS)
36 #define fgs_free FORTRAN_NAME(gs_free ,GS_FREE )
45 void *u4,
void *u5,
void *u6,
const sint *
n,
51 if(fabs(v) < 1e-20)
return;
52 printf(
"test failed\n");
56 int main(
int narg,
char* arg[])
68 MPI_Comm_dup(MPI_COMM_WORLD,&comm);
70 MPI_Comm_rank(comm,&i);
id=
i;
71 MPI_Comm_size(comm,&i);
np=
i;
75 glindex = malloc(
np*2*
sizeof(
slong));
76 for(i=0;i<
np;++
i) glindex[2*i+1] = glindex[2*i] = i+1;
81 u = malloc(np*2*
sizeof(
real));
82 for(i=0;i<
np;++
i) u[2*i ] = (
real)( 2*np*
id + 2*
i ),
83 u[2*i+1] = (
real)( 2*np*
id + 2*i+1 );
91 u = malloc(np*2*3*
sizeof(
real));
93 u[3*(2*i )+0] = (
real)( 3*(2*np*
id + 2*i ) + 0 ),
94 u[3*(2*i )+1] = (
real)( 3*(2*np*
id + 2*i ) + 1 ),
95 u[3*(2*i )+2] = (
real)( 3*(2*np*
id + 2*i ) + 2 ),
96 u[3*(2*i+1)+0] = (
real)( 3*(2*np*
id + 2*i+1) + 0 ),
97 u[3*(2*i+1)+1] = (
real)( 3*(2*np*
id + 2*i+1) + 1 ),
98 u[3*(2*i+1)+2] = (
real)( 3*(2*np*
id + 2*i+1) + 2 );
121 u = malloc(np*2*3*
sizeof(
real));
123 u[2*np*0+(2*i )] = (
real)( 3*(2*np*
id + 2*i ) + 0 ),
124 u[2*np*1+(2*i )] = (
real)( 3*(2*np*
id + 2*i ) + 1 ),
125 u[2*np*2+(2*i )] = (
real)( 3*(2*np*
id + 2*i ) + 2 ),
126 u[2*np*0+(2*i+1)] = (
real)( 3*(2*np*
id + 2*i+1) + 0 ),
127 u[2*np*1+(2*i+1)] = (
real)( 3*(2*np*
id + 2*i+1) + 1 ),
128 u[2*np*2+(2*i+1)] = (
real)( 3*(2*np*
id + 2*i+1) + 2 );
129 i=1, maxv=3,
fgs_op_many(&handle,u,u+2*np,u+4*np,0,0,0,&maxv,
135 assert_is_zero( np*(6*np*(np-1)+12*i+3+2*0) - u[2*np*0+(2*i+1)] ),
136 assert_is_zero( np*(6*np*(np-1)+12*i+3+2*1) - u[2*np*1+(2*i+1)] ),
137 assert_is_zero( np*(6*np*(np-1)+12*i+3+2*2) - u[2*np*2+(2*i+1)] );
141 printf(
"test on node %d/%d succeeded\n", (
int)
id+1, (
int)np);
143 MPI_Comm_free(&comm);
subroutine transpose(a, lda, b, ldb)
void assert_is_zero(real v)
int main(int narg, char *arg[])
establishes some macros to establish naming conventions