#include #include int main(int argc, char **argv); int main(int argc, char **argv) { /* This is a test program illustrating how one can make an allocatable 4D 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; char temp[300]; float pi=3.141592653; i4 szflt; data_id *id, *idcp, *id_in; float ****outdata; float ****indata; float *data; pos n1,n2,n3,n4; pos dims[20]; i4 indorder[20]; i4 reverse[20]; char *outfile = "testout4d.sdf"; szflt=sizeof(float); if(sizeof(pos) != 8) { printf("test_sdf_4d: sizeof(pos) = %d != 8, returning\n" ,(int)sizeof(pos)); fflush(stdout); return 1; } sdf_rm(outfile); n1=(pos)63; n2=(pos)64; n3=(pos)65; n4=(pos)66; dims[0]=n1; dims[1]=n2; dims[2]=n3; dims[3]=n4; id=sdf_create_id(0,"sinxyzt",'f',szflt,4,dims); /* make copy of id structure; will be necessary for freeing 4d 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_4d(id); for (i=0;idims[0]; n2=id_in->dims[1]; n3=id_in->dims[2]; n4=id_in->dims[3]; printf("test_sdf_4d: gonna print out one column of 4d array:\n\n"); for (j=0;j