#include <stdio.h>
#define n1 4096
#define n2 4032
#define n3 n1/4
#define n4 n2/4
FILE *fp;
char head[72][80];
float a[4][n1],b[n4]
main(int ac, char **av)
{
  int i,i1,i3,j,j1,j3,k;
  float x;
  double z;
  char d[20];
  if(ac<4){ 
    printf("\n\t ******* shrink4 4k_ccd,to 1k_ccd ******\n");
    printf("\n\tUsage: shrink4 p*.fit\n\n");
    exit(0);
  }
  fp=fopen(av[1],"rb"); 
  if(fp==0){ printf("%s not found!\n",av[1]); exit(0); }
  fread(head,72,80,fp); printf("wait ... "); fflush(stdout);
  fread(a,n3*n3,4,fp); swap4(a,n3*n3*4);
  fclose(fp);
  for(i=0;i<n;i++)for(j=0;j<n;j++){
    i3=i*3; j3=j*3; x=0;
    for(i1=0;i1<3;i1++)for(j1=0;j1<3;j1++)x+=a[i3+i1][j3+j1];
    b[i][j]=x/9.;
  }
  sprintf(&head[3][0], "NAXIS1  =                %5d ",n3);
  sprintf(&head[4][0], "NAXIS2  =                %5d ",n4);
  k=strlen(av[3]); for(i=0;i<k;i++)head[10][30-k+i]=av[3][i];
  sscanf(&head[16][20],"%f",&x); sprintf(&head[16][18],"%12.4f ",x*3); 
  sprintf(&head[17][0],"OBJECT  =  ");
  k=strlen(av[4]); for(i=0;i<k;i++)head[17][10+i]=av[4][i];
  head[18][12]='6';
  sscanf(&head[34][10],"%le",&z); sprintf(&head[34][10],"%20.12le ",z*3);
                                  sprintf(&head[37][10],"%20.12le ",-z*3);
  sscanf(&head[53][10],"%le",&z); sprintf(&head[53][10],"%20.12le ",z*3);
                                  sprintf(&head[54][10],"%20.12le ",-z*3);
                                  sprintf(&head[55][10],"%20.12le ",n/2.+.5);
                                  sprintf(&head[56][10],"%20.12le ",n/2.+.5);

  for(i=0;i<70;i++)if(head[i][0]!=32)head[i][31]='/';

  fp=fopen(av[2],"wb"); fwrite(head,72,80,fp);
  swap4(b,n*n*4); fwrite(b,n*n,4,fp); 
  fclose(fp);
// markfile
  sprintf(d,"m_%s",av[1]);
  fp=fopen(d,"rb"); 
  if(fp==0){ printf("markfile: %s not found!\n",d); exit(0); }
  fseek(fp,72*80,0); fread(a,n3*n3,4,fp); fclose(fp);
  for(i=0;i<n;i++)for(j=0;j<n;j++)b[i][j]=a[i*3+1][j*3+1]; 
  sprintf(d,"m_%s",av[2]);
  printf("also produced markfile: %s\n",d);
  fp=fopen(d,"wb");  head[1][27]=32;
  fwrite(head,72,80,fp); fwrite(b,n*n,4,fp); fclose(fp);
}
