/****************************************************************/ /* edhmbc2proc 20.02.2006 */ /****************************************************************/ #include #include #define MAXSIZE 16384 double scalee,scalef; char xwlay[PATH_MAX], portf[PATH_MAX]; char infile[PATH_MAX], outfile1[PATH_MAX], outfile2[PATH_MAX]; int row1[MAXSIZE], row2[MAXSIZE], row3[MAXSIZE], row4[MAXSIZE]; int rowA[MAXSIZE], rowB[MAXSIZE]; int td1, td2, td1s; int i, j; int nexpno, texpno, byteorder; FILE *fpin, *fpout1, *fpout2; GETCURDATA FETCHPARS("BYTORDA",&byteorder) FETCHPARS("TD",&td2) td2 = ( (td2 + 255) / 256 ) * 256; FETCHPAR1("TD",&td1) FETCHPAR1S("TD",&td1s) (void)sprintf(infile,"%s/data/%s/nmr/%s/%d/ser",disk,user,name,expno); nexpno = expno * 100; GETINT("First dataset to be stored in expno : ",nexpno); (void)sprintf(outfile1,"%s/data/%s/nmr/%s/%d/ser",disk,user,name,nexpno); (void)sprintf(outfile2,"%s/data/%s/nmr/%s/%d/ser",disk,user,name,nexpno+1); WRA(nexpno) WRA(nexpno+1) fpin=fopen(infile,"rb"); fpout1=fopen(outfile1,"wb"); fpout2=fopen(outfile2,"wb"); scalee = 1.0; GETDOUBLE("scaling factor for standard spectrum : ", scalee); scalef = 1.0; GETDOUBLE("scaling factor for updown spectrum : ", scalef); for (i=0; i < td1s/4; i++) { fread(row1,sizeof(int),td2,fpin); local_swap4(row1,sizeof(int)*td2,byteorder); fread(row2,sizeof(int),td2,fpin); local_swap4(row2,sizeof(int)*td2,byteorder); fread(row3,sizeof(int),td2,fpin); local_swap4(row3,sizeof(int)*td2,byteorder); fread(row4,sizeof(int),td2,fpin); local_swap4(row4,sizeof(int)*td2,byteorder); for (j=0; j < td2 ; j++) { rowA[j] = scalee*(row1[j] + row3[j]) + scalef*(row2[j] + row4[j]); rowB[j] = scalee*(row1[j] + row3[j]) - scalef*(row2[j] + row4[j]); } local_swap4(rowA,sizeof(int)*td2,byteorder); fwrite(rowA,sizeof(int),td2,fpout1); local_swap4(rowB,sizeof(int)*td2,byteorder); fwrite(rowB,sizeof(int),td2,fpout2); } fclose(fpin); fclose(fpout1); fclose(fpout2); td1 /= 4; td1s /= 4; DATASET (name,nexpno,procno,disk,user) STOREPAR1("TD",td1) STOREPAR1S("TD",td1s) DATASET (name,nexpno+1,procno,disk,user) STOREPAR1("TD",td1) STOREPAR1S("TD",td1s) texpno=expno; expno=nexpno; XFB XF2M expno=nexpno+1; XFB XF2M QUIT