private void applyTilePredictor(final int nRowsInBlock, final int nColsInBlock, final byte[] bytes) {
        // The floating-point horizonal predictor breaks the samples into
        // separate sets of bytes. The first set contains the high-order bytes.
        // The second the second-highest order bytes, etc. Once the bytes are
        // separated, differencing is applied. This treatment improves the
        // statistical predictability of the data. By doing so, it improves
        // its compressibility.
        // More extensive discussions of this technique are given in the
        // Javadoc for the TIFF-specific ImageDataReader class.
        final byte[] b = new byte[bytes.length];
        final int bytesInRow = nColsInBlock * 4;
        for (int iPlane = 0; iPlane < samplesPerPixel; iPlane++) {
            // separate out the groups of bytes
            final int planarByteOffset = iPlane * nRowsInBlock * nColsInBlock * 4;
            for (int i = 0; i < nRowsInBlock; i++) {
                final int aOffset = planarByteOffset + i * bytesInRow;
                final int bOffset = aOffset + nColsInBlock;
                final int cOffset = bOffset + nColsInBlock;
                final int dOffset = cOffset + nColsInBlock;
                for (int j = 0; j < nColsInBlock; j++) {
                    b[aOffset + j] = bytes[aOffset + j * 4];
                    b[bOffset + j] = bytes[aOffset + j * 4 + 1];
                    b[cOffset + j] = bytes[aOffset + j * 4 + 2];
                    b[dOffset + j] = bytes[aOffset + j * 4 + 3];
                }
                // apply differencing
                for (int j = bytesInRow - 1; j > 0; j--) {
                    b[aOffset + j] -= b[aOffset + j - 1];
                }
            }
        }
        // copy the results back over the input byte array
        System.arraycopy(b, 0, bytes, 0, bytes.length);
    }
Performs a test in which a TIFF file with the special-purpose floating-point sample type is used to store data to a file. The file is then read to see if it
matches the original values.
<p>
At this time, Commons Imaging does not fully implement the floating-point specification. Currently, this class only tests the use of uncompressed floating
point values in the Strips format. The Tiles format is not exercised.
src/test/java/org/apache/commons/imaging/formats/tiff/TiffFloatingPointMultivariableTest.java