Recursive indexing encoding
Recursive indexing encodes values such that the encoded values lie within the
open interval (MIN, MAX). This allows to create a more compact representation
of a 32-bit signed integer array when the majority of values in the array fit
into 16-bit (or 8-bit). To encode each value in the input array the method
stores the value itself if it lies within the open interval (MIN, MAX),
otherwise the MAX (or MIN if the number is negative) interval endpoint is stored
and subtracted from the input value. This process of storing and subtracting is
repeated recursively until the remainder lies within the interval.