Differences between adjacent data values are stored, rather than
the full data values themselves. For many forms of astronomical data, the
differences between adjacent data values have a much smaller range than
the data values themselves. This means that they can be represented in
fewer bits. For instance, if the data values are _INTEGER, then the
differences between adjacent values may fit into the range of a _WORD
(-32767 to +32767) or even a _BYTE (-127 to +127). This use of a shorter
data type usually provides the majority of the compression. However, it is not
necessary for all differences to be small - if the difference between two
adjacent data values is too large for the compressed data type, the
second of the two data values will be stored explicitly using the full data
type of the original uncompressed data. Obviously, the more values that
need to be stored in full in this way, the lower will be the compression.
In the above description, the term ``adjacent'' means ``adjacent along a
specified pixel axis''. The pixel axis along which differences are taken
is referred to as the ``compression axis''. It may be specified
explicitly by the calling application when ARY_DELTA is called, or it
may be left unspecified in which case ARY_DELTA will choose the axis that
gives the best compression.