W3FI58

The W3FI58 routine converts an array of integer numbers into an array
           of positive differences (number(s) - minimum value) and
           packs the magnitude of each difference right-adjusted into
           the least number of bits that holds the largest difference.

USAGE:  CALL W3FI58(IFIELD,NPTS,NWORK,NPFLD,NBITS,LEN,KMIN)

   Input argument list:
      IFIELD - ARRAY OF INTEGER DATA FOR PROCESSING
      NPTS   - NUMBER OF DATA VALUES TO PROCESS IN IFIELD (AND NWORK)
               WHERE, NPTS > 0
 
   Output argument list:
      NWORK  - WORK ARRAY WITH INTEGER DIFFERENCE
      NPFLD  - ARRAY FOR PACKED DATA
               (USER IS RESPONSIBLE FOR AN ADEQUATE DIMENSION.)
      NBITS  - NUMBER OF BITS USED TO PACK DATA WHERE, 0 < NBITS < 32
               (THE MAXIMUM DIFFERENCE WITHOUT OVERFLOW IS 2**31 -1)
      LEN    - NUMBER OF PACKED BYTES IN NPFLD (SET TO 0 IF NO PACKING)
               WHERE, LEN = (NBITS * NPTS + 7) / 8 WITHOUT REMAINDER
      KMIN   - MINIMUM VALUE (SUBTRACTED FROM EACH DATUM). IF THIS
               PACKED DATA IS BEING USED FOR GRIB DATA, THE
               PROGRAMER WILL HAVE TO CONVERT THE KMIN VALUE TO AN
               IBM370 32 BIT FLOATING POINT NUMBER.

   NOTE:  LEN = 0, NBITS = 0, AND NO PACKING PERFORMED IF
          (1) KMAX = KMIN  (A CONSTANT FIELD)
          (2) NPTS < 1  (SEE INPUT ARGUMENT)

 
W3lib.tar Library contains Fortran 90 decoder/encoder routines for GRIB edition 1. (Fortran90)
Date posted: 2/22/2007