W3FI59

The W3FI59 routine converts an array of single precision real numbers
           into an array of positive scaled differences
           (number(s) - minimum value), in integer format and 
           packs the argument-specified number of significant bits
           from each difference.

USAGE:    CALL W3FI59(FIELD,NPTS,NBITS,NWORK,NPFLD,ISCALE,LEN,RMIN)

   Input argument list:
      FIELD - ARRAY OF FLOATING POINT DATA FOR PROCESSING  (REAL)
      NPTS  - NUMBER OF DATA VALUES TO PROCESS IN FIELD (AND NWORK)
              WHERE, NPTS > 0
      NBITS - NUMBER OF SIGNIFICANT BITS OF PROCESSED DATA TO BE PACKED
              WHERE, 0 < NBITS < 32+1
  
   Output argument list:
      NWORK - ARRAY FOR INTEGER CONVERSION  (INTEGER)
              IF PACKING PERFORMED (SEE NOTE BELOW), THE ARRAY WILL
              CONTAIN THE PRE-PACKED, RIGHT ADJUSTED, SCALED, INTEGER
              DIFFERENCES UPON RETURN TO THE USER.
              (THE USER MAY EQUIVALENCE FIELD AND NWORK.  SAME SIZE.)
      NPFLD - ARRAY FOR PACKED DATA  (INTEGER)
              (DIMENSION MUST BE AT LEAST (NBITS * NPTS) / 64 + 1  )
      ISCALE- POWER OF 2 FOR RESTORING DATA, SUCH THAT
              DATUM = (DIFFERENCE * 2**ISCALE) + RMIN
      LEN   - NUMBER OF PACKED BYTES IN NPFLD (SET TO 0 IF NO PACKING)
              WHERE, LEN = (NBITS * NPTS + 7) / 8 WITHOUT REMAINDER
      RMIN  - MINIMUM VALUE (REFERENCE VALUE SUBTRACTED FROM INPUT DATA)
              THIS IS A CRAY FLOATING POINT NUMBER, IT WILL HAVE TO BE
              CONVERTED TO AN IBM370 32 BIT FLOATING POINT NUMBER AT
              SOME POINT IN YOUR PROGRAM IF YOU ARE PACKING GRIB DATA.

REMARKS:
        LEN = 0 AND NO PACKING PERFORMED IF
             (1) RMAX = RMIN  (A CONSTANT FIELD)
             (2) NBITS VALUE OUT OF RANGE  (SEE INPUT ARGUMENT)
             (3) NPTS VALUE LESS THAN 1  (SEE INPUT ARGUMENT)

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