#include #include #include #include #include int main(int argc, void **argv); int main(int argc, void **argv) { /* This is a test program illustrating how one can make an allocatable 5D floating point array in C and use sdf_write and sdf_read to write from, and read to, such arrays. Also illustrates the use of sdf_transpose to convert from row-major to column major indexing */ pos size,i,j,k,l,m; char temp[300]; float pi=3.141592653; i4 szptrf; i4 szflt; data_id *id, *idcp, *id_in; float *****outdata; float *****indata; float *data; pos n1,n2,n3,n4,n5; pos dims[20]; i4 indorder[20]; i4 reverse[20]; char *outfile = "testout5d.sdf"; szflt=sizeof(float); if(sizeof(pos) != 8) { printf("test_sdf_5d: sizeof(pos) = %d != 8, returning\n" ,sizeof(pos)); fflush(stdout); return 1; } sdf_rm(outfile); n1=(pos)10; n2=(pos)11; n3=(pos)12; n4=(pos)13; n5=(pos)14; dims[0]=n1; dims[1]=n2; dims[2]=n3; dims[3]=n4; dims[4]=n5; id=sdf_create_id(0,"sinxyzt",'f',szflt,5,dims); /* make copy of id structure; will be necessary for freeing 5d array */ idcp=sdf_cp_id(id); size=data_size(id); output_int64(temp,size); printf("size = %s\n",temp); fflush(stdout); outdata = (float *****)sdf_mk_5d(id); for (i=0;idims[0]; n2=id_in->dims[1]; n3=id_in->dims[2]; n4=id_in->dims[3]; n5=id_in->dims[4]; printf("test_sdf_5d: gonna print out one column of 5d array:\n\n"); for (j=0;j