#include <stdio.h>
#include <fcntl.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>

main (int argc, char *argv[])

{ union swapspace
    { float r4;
      char  b1[4];
    };

  union assignspace
    { float r4;
      unsigned char b1[4];
    } val;

  union     swapspace pixel;
  char      hold;
  long int  total_bytes;
  long int  i;

  float     max,min;
  long int  blank, good, miss;

  good  = 0;
  blank = 0;
  miss  = 0;
  max   = 0.0;
  min   = 1000.0;
  total_bytes = 1022 * 1024;

  val.b1[0] = 0xFB;
  val.b1[1] = 0xFF;
  val.b1[2] = 0x7F;
  val.b1[3] = 0xFF;

  for (i=0; i<total_bytes; i++)
    { fread((void *)&(pixel.r4),4,1,stdin);
      hold = pixel.b1[0];
      pixel.b1[0] = pixel.b1[3];
      pixel.b1[3] = hold;
      hold = pixel.b1[1];
      pixel.b1[1] = pixel.b1[2];
      pixel.b1[2] = hold;

      if (pixel.r4 == val.r4)
        { miss++; }
      else if (pixel.r4 < 1.0e-06)
        { blank++; }
      else 
        { good++;
          max = (pixel.r4 > max)? pixel.r4 : max;
          min = (pixel.r4 < min)? pixel.r4 : min;
        }
    }

  fprintf (stdout,"%10d bad pixels\n",blank);
  fprintf (stdout,"%10d good pixels\n",good);
  fprintf (stdout,"%10d missing pixels\n",miss);
  fprintf (stdout,"Max = %8.5e    Min = %8.5e\n",max,min);

  exit(0);
}