#include <stdio.h>

#define m  2048*2048*4+512


char head[36][80];
char a[m],c;
FILE *fp,*fp1;

main(ac,av)
int ac; char *av[];                        
{
  int i,n,ipos;			

  if(ac<3){
    printf("\n\t*******  Delete Bad_Float_Digital\n");
    printf("\n\tUsage: dbfd infile outfile\n");
    exit(0);
  }
  fp=fopen(av[1],"rb"); 
    if(fp==0){ printf("\n file not found !\n"); exit(0); }

  fp1=fopen(av[2],"wb"); 
  for(i=0;i<4;i++){
    fread(head,80,36,fp);
    fwrite(head,80,36,fp1);
    ipos=indexpos(head,"END     ",36);
    if(ipos!=36)break;
  }
  if(i==4){ printf("\n\t not fits file!\n"); exit(0); }
  n=fread(a,1,m*4,fp);
  fclose(fp);
     printf("%d\n",n);
  for(i=0;i<n;i+=4){
    c=a[i];
    a[i]=a[i+3];
    a[i+3]=c;
    c=a[i+1];
    a[i+1]=a[i+2];
    a[i+2]=c;
  }
  check(a,n/4);
  for(i=0;i<n;i+=4){
    c=a[i];
    a[i]=a[i+3];
    a[i+3]=c;
    c=a[i+1];
    a[i+1]=a[i+2];
    a[i+2]=c;
    if((a[i]&0x7f)==127)a[i]=a[i+1]=a[i+2]=a[i+3]=0;
  }
  fwrite(a,1,n,fp1);
  fclose(fp1);
  printf("ok!\n");
  exit(0);
}

check(a,n)
int n; float a[];
{
  int i;
  for(i=0;i<n;i++){
    if(a[i]<-1e10)a[i]=-1e10;
    if(a[i]> 1e10)a[i]= 1e10;
  }
}
