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 |