ArDrone SDK 1.8 added
[mardrone] / mardrone / ARDrone_SDK_Version_1_8_20110726 / ARDroneLib / VLIB / P263 / p263_huffman.c
diff --git a/mardrone/ARDrone_SDK_Version_1_8_20110726/ARDroneLib/VLIB/P263/p263_huffman.c b/mardrone/ARDrone_SDK_Version_1_8_20110726/ARDroneLib/VLIB/P263/p263_huffman.c
new file mode 100644 (file)
index 0000000..f0d5926
--- /dev/null
@@ -0,0 +1,495 @@
+#include "p263_huffman.h"
+
+
+/// Macroblock type & Coded Block Pattern for Chrominance (MCBPC)
+
+huffman_code_t vlc_mcbpc_ipictures[VLC_MCBPC_IPICTURES_NUM] = {
+  { 0, {{ 1, 0x1 }} }, //           1
+  { 1, {{ 3, 0x1 }} }, //         001
+  { 2, {{ 3, 0x2 }} }, //         010
+  { 3, {{ 3, 0x3 }} }, //         011
+  { 4, {{ 4, 0x1 }} }, //        0001
+  { 5, {{ 6, 0x1 }} }, //     00 0001
+  { 6, {{ 6, 0x2 }} }, //     00 0010
+  { 7, {{ 6, 0x3 }} }, //     00 0011
+  { 8, {{ 9, 0x1 }} }, // 0 0000 0001
+};
+
+huffman_tree_t* vlc_mcbpc_ipictures_tree = NULL;
+
+p263_mcbpc_t mcbpc_ipictures[VLC_MCBPC_IPICTURES_NUM] = {
+  { 3, 0 },
+  { 3, 1 },
+  { 3, 2 },
+  { 3, 3 },
+  { 4, 0 },
+  { 4, 1 },
+  { 4, 2 },
+  { 4, 3 },
+  { 6, 0 },
+};
+
+
+/// Coded Block Pattern for luminance (CBPY)
+
+huffman_code_t   vlc_cbpy_standard[VLC_CBPY_STANDARD_NUM] = {
+  {  0, {{ 4, 0x3 }} }, //    0011
+  {  1, {{ 5, 0x5 }} }, //  0 0101
+  {  2, {{ 5, 0x4 }} }, //  0 0100
+  {  3, {{ 4, 0x9 }} }, //    1001
+  {  4, {{ 5, 0x3 }} }, //  0 0011
+  {  5, {{ 4, 0x7 }} }, //    0111
+  {  6, {{ 6, 0x2 }} }, // 00 0010
+  {  7, {{ 4, 0xB }} }, //    1011
+  {  8, {{ 5, 0x2 }} }, //  0 0010
+  {  9, {{ 6, 0x3 }} }, // 00 0011
+  { 10, {{ 4, 0x5 }} }, //    0101
+  { 11, {{ 4, 0xA }} }, //    1010
+  { 12, {{ 4, 0x4 }} }, //    0100
+  { 13, {{ 4, 0x8 }} }, //    1000
+  { 14, {{ 4, 0x6 }} }, //    0110
+  { 15, {{ 2, 0x3 }} }, //      11
+};
+
+huffman_tree_t*  vlc_cbpy_standard_tree = NULL;
+
+p263_cbpy_t cbpy_standard[VLC_CBPY_STANDARD_NUM - 1] = {
+  { CBPY_MAKE(0, 0), CBPY_MAKE( 3, 3) },
+  { CBPY_MAKE(0, 1), CBPY_MAKE( 3, 2) },
+  { CBPY_MAKE(0, 2), CBPY_MAKE( 3, 1) },
+  { CBPY_MAKE(0, 3), CBPY_MAKE( 3, 0) },
+  { CBPY_MAKE(1, 0), CBPY_MAKE( 2, 3) },
+  { CBPY_MAKE(1, 1), CBPY_MAKE( 2, 2) },
+  { CBPY_MAKE(1, 2), CBPY_MAKE( 2, 1) },
+  { CBPY_MAKE(1, 3), CBPY_MAKE( 2, 0) },
+  { CBPY_MAKE(2, 0), CBPY_MAKE( 1, 3) },
+  { CBPY_MAKE(2, 1), CBPY_MAKE( 1, 2) },
+  { CBPY_MAKE(2, 2), CBPY_MAKE( 1, 1) },
+  { CBPY_MAKE(2, 3), CBPY_MAKE( 1, 0) },
+  { CBPY_MAKE(3, 0), CBPY_MAKE( 0, 3) },
+  { CBPY_MAKE(3, 1), CBPY_MAKE( 0, 2) },
+  { CBPY_MAKE(3, 2), CBPY_MAKE( 0, 1) },
+};
+
+// Transform Coefficient (TCOEF)
+
+huffman_code_t vlc_tcoeff[VLC_TCOEFF_NUM] = {
+  {  0, {{  2, 0x02 }} }, //  3             10 s
+  {  1, {{  4, 0x0F }} }, //  5           1111 s
+  {  2, {{  6, 0x15 }} }, //  7        01 0101 s
+  {  3, {{  7, 0x17 }} }, //  8       001 0111 s
+  {  4, {{  8, 0x1F }} }, //  9      0001 1111 s
+  {  5, {{  9, 0x25 }} }, // 10    0 0010 0101 s
+  {  6, {{  9, 0x24 }} }, // 10    0 0010 0100 s
+  {  7, {{ 10, 0x21 }} }, // 11   00 0010 0001 s
+  {  8, {{ 10, 0x20 }} }, // 11   00 0010 0000 s
+  {  9, {{ 11, 0x07 }} }, // 12  000 0000 0111 s
+  { 10, {{ 11, 0x06 }} }, // 12  000 0000 0110 s
+  { 11, {{ 11, 0x20 }} }, // 12  000 0010 0000 s
+  { 12, {{  3, 0x06 }} }, //  4            110 s
+  { 13, {{  6, 0x14 }} }, //  7        01 0100 s
+  { 14, {{  8, 0x1E }} }, //  9      0001 1110 s
+  { 15, {{ 10, 0x0F }} }, // 11   00 0000 1111 s
+  { 16, {{ 11, 0x21 }} }, // 12  000 0010 0001 s
+  { 17, {{ 12, 0x50 }} }, // 13 0000 0101 0000 s
+  { 18, {{  4, 0x0E }} }, //  5           1110 s
+  { 19, {{  8, 0x1D }} }, //  9      0001 1101 s
+  { 20, {{ 10, 0x0E }} }, // 11   00 0000 1110 s
+  { 21, {{ 12, 0x51 }} }, // 13 0000 0101 0001 s
+  { 22, {{  5, 0x0D }} }, //  6         0 1101 s
+  { 23, {{  9, 0x23 }} }, // 10    0 0010 0011 s
+  { 24, {{ 10, 0x0D }} }, // 11   00 0000 1101 s
+  { 25, {{  5, 0x0C }} }, //  6         0 1100 s
+  { 26, {{  9, 0x22 }} }, // 10    0 0010 0010 s
+  { 27, {{ 12, 0x52 }} }, // 13 0000 0101 0010 s
+  { 28, {{  5, 0x0B }} }, //  6         0 1011 s
+  { 29, {{ 10, 0x0C }} }, // 11   00 0000 1100 s
+  { 30, {{ 12, 0x53 }} }, // 13 0000 0101 0011 s
+  { 31, {{  6, 0x13 }} }, //  7        01 0011 s
+  { 32, {{ 10, 0x0B }} }, // 11   00 0000 1011 s
+  { 33, {{ 12, 0x54 }} }, // 13 0000 0101 0100 s
+  { 34, {{  6, 0x12 }} }, //  7        01 0010 s
+  { 35, {{ 10, 0x0A }} }, // 11   00 0000 1010 s
+  { 36, {{  6, 0x11 }} }, //  7        01 0001 s
+  { 37, {{ 10, 0x09 }} }, // 11   00 0000 1001 s
+  { 38, {{  6, 0x10 }} }, //  7        01 0000 s
+  { 39, {{ 10, 0x08 }} }, // 11   00 0000 1000 s
+  { 40, {{  7, 0x16 }} }, //  8       001 0110 s
+  { 41, {{ 12, 0x55 }} }, // 13 0000 0101 0101 s
+  { 42, {{  7, 0x15 }} }, //  8       001 0101 s
+  { 43, {{  7, 0x14 }} }, //  8       001 0100 s
+  { 44, {{  8, 0x1C }} }, //  9      0001 1100 s
+  { 45, {{  8, 0x1B }} }, //  9      0001 1011 s
+  { 46, {{  9, 0x21 }} }, // 10    0 0010 0001 s
+  { 47, {{  9, 0x20 }} }, // 10    0 0010 0000 s
+  { 48, {{  9, 0x1F }} }, // 10    0 0001 1111 s
+  { 49, {{  9, 0x1E }} }, // 10    0 0001 1110 s
+  { 50, {{  9, 0x1D }} }, // 10    0 0001 1101 s
+  { 51, {{  9, 0x1C }} }, // 10    0 0001 1100 s
+  { 52, {{  9, 0x1B }} }, // 10    0 0001 1011 s
+  { 53, {{  9, 0x1A }} }, // 10    0 0001 1010 s
+  { 54, {{ 11, 0x22 }} }, // 12  000 0010 0010 s
+  { 55, {{ 11, 0x23 }} }, // 12  000 0010 0011 s
+  { 56, {{ 12, 0x56 }} }, // 13 0000 0101 0110 s
+  { 57, {{ 12, 0x57 }} }, // 13 0000 0101 0111 s
+  { 58, {{  4, 0x07 }} }, //  5           0111 s
+  { 59, {{  9, 0x19 }} }, // 10    0 0001 1001 s
+  { 60, {{ 11, 0x05 }} }, // 12  000 0000 0101 s
+  { 61, {{  6, 0x0F }} }, //  7        00 1111 s
+  { 62, {{ 11, 0x04 }} }, // 12  000 0000 0100 s
+  { 63, {{  6, 0x0E }} }, //  7        00 1110 s
+  { 64, {{  6, 0x0D }} }, //  7        00 1101 s
+  { 65, {{  6, 0x0C }} }, //  7        00 1100 s
+  { 66, {{  7, 0x13 }} }, //  8       001 0011 s
+  { 67, {{  7, 0x12 }} }, //  8       001 0010 s
+  { 68, {{  7, 0x11 }} }, //  8       001 0001 s
+  { 69, {{  7, 0x10 }} }, //  8       001 0000 s
+  { 70, {{  8, 0x1A }} }, //  9      0001 1010 s
+  { 71, {{  8, 0x19 }} }, //  9      0001 1001 s
+  { 72, {{  8, 0x18 }} }, //  9      0001 1000 s
+  { 73, {{  8, 0x17 }} }, //  9      0001 0111 s
+  { 74, {{  8, 0x16 }} }, //  9      0001 0110 s
+  { 75, {{  8, 0x15 }} }, //  9      0001 0101 s
+  { 76, {{  8, 0x14 }} }, //  9      0001 0100 s
+  { 77, {{  8, 0x13 }} }, //  9      0001 0011 s
+  { 78, {{  9, 0x18 }} }, // 10    0 0001 1000 s
+  { 79, {{  9, 0x17 }} }, // 10    0 0001 0111 s
+  { 80, {{  9, 0x16 }} }, // 10    0 0001 0110 s
+  { 81, {{  9, 0x15 }} }, // 10    0 0001 0101 s
+  { 82, {{  9, 0x14 }} }, // 10    0 0001 0100 s
+  { 83, {{  9, 0x13 }} }, // 10    0 0001 0011 s
+  { 84, {{  9, 0x12 }} }, // 10    0 0001 0010 s
+  { 85, {{  9, 0x11 }} }, // 10    0 0001 0001 s
+  { 86, {{ 10, 0x07 }} }, // 11   00 0000 0111 s
+  { 87, {{ 10, 0x06 }} }, // 11   00 0000 0110 s
+  { 88, {{ 10, 0x05 }} }, // 11   00 0000 0101 s
+  { 89, {{ 10, 0x04 }} }, // 11   00 0000 0100 s
+  { 90, {{ 11, 0x24 }} }, // 12  000 0010 0100 s
+  { 91, {{ 11, 0x25 }} }, // 12  000 0010 0101 s
+  { 92, {{ 11, 0x26 }} }, // 12  000 0010 0110 s
+  { 93, {{ 11, 0x27 }} }, // 12  000 0010 0111 s
+  { 94, {{ 12, 0x58 }} }, // 13 0000 0101 1000 s
+  { 95, {{ 12, 0x59 }} }, // 13 0000 0101 1001 s
+  { 96, {{ 12, 0x5A }} }, // 13 0000 0101 1010 s
+  { 97, {{ 12, 0x5B }} }, // 13 0000 0101 1011 s
+  { 98, {{ 12, 0x5C }} }, // 13 0000 0101 1100 s
+  { 99, {{ 12, 0x5D }} }, // 13 0000 0101 1101 s
+  {100, {{ 12, 0x5E }} }, // 13 0000 0101 1110 s
+  {101, {{ 12, 0x5F }} }, // 13 0000 0101 1111 s
+  {102, {{  7, 0x03 }} }, //  7       000 0011
+};
+
+huffman_tree_t* vlc_tcoeff_tree = NULL;
+
+p263_tcoeff_t tcoeff[VLC_TCOEFF_NUM] = {
+  {  0,  1,  0 },
+  {  0,  2,  0 },
+  {  0,  3,  0 },
+  {  0,  4,  0 },
+  {  0,  5,  0 },
+  {  0,  6,  0 },
+  {  0,  7,  0 },
+  {  0,  8,  0 },
+  {  0,  9,  0 },
+  {  0, 10,  0 },
+  {  0, 11,  0 },
+  {  0, 11,  0 },
+
+  {  1,  1,  0 },
+  {  1,  2,  0 },
+  {  1,  3,  0 },
+  {  1,  4,  0 },
+  {  1,  5,  0 },
+  {  1,  6,  0 },
+
+  {  2,  1,  0 },
+  {  2,  2,  0 },
+  {  2,  3,  0 },
+  {  2,  4,  0 },
+
+  {  3,  1,  0 },
+  {  3,  2,  0 },
+  {  3,  3,  0 },
+
+  {  4,  1,  0 },
+  {  4,  2,  0 },
+  {  4,  3,  0 },
+
+  {  5,  1,  0 },
+  {  5,  2,  0 },
+  {  5,  3,  0 },
+
+  {  6,  1,  0 },
+  {  6,  2,  0 },
+  {  6,  3,  0 },
+
+  {  7,  1,  0 },
+  {  7,  2,  0 },
+
+  {  8,  1,  0 },
+  {  8,  2,  0 },
+
+  {  9,  1,  0 },
+  {  9,  2,  0 },
+
+  { 10,  1,  0 },
+  { 10,  2,  0 },
+
+  { 11,  1,  0 },
+
+  { 12,  1,  0 },
+
+  { 13,  1,  0 },
+
+  { 14,  1,  0 },
+
+  { 15,  1,  0 },
+
+  { 16,  1,  0 },
+
+  { 17,  1,  0 },
+
+  { 18,  1,  0 },
+
+  { 19,  1,  0 },
+
+  { 20,  1,  0 },
+
+  { 21,  1,  0 },
+
+  { 22,  1,  0 },
+
+  { 23,  1,  0 },
+
+  { 24,  1,  0 },
+
+  { 25,  1,  0 },
+
+  { 26,  1,  0 },
+
+  {  0,  1,  1 },
+  {  0,  2,  1 },
+  {  0,  3,  1 },
+
+  {  1,  1,  1 },
+  {  1,  2,  1 },
+
+  {  2,  1,  1 },
+
+  {  3,  1,  1 },
+
+  {  4,  1,  1 },
+
+  {  5,  1,  1 },
+
+  {  6,  1,  1 },
+
+  {  7,  1,  1 },
+
+  {  8,  1,  1 },
+
+  {  9,  1,  1 },
+
+  { 10,  1,  1 },
+
+  { 11,  1,  1 },
+
+  { 12,  1,  1 },
+
+  { 13,  1,  1 },
+
+  { 14,  1,  1 },
+
+  { 15,  1,  1 },
+
+  { 16,  1,  1 },
+
+  { 17,  1,  1 },
+
+  { 18,  1,  1 },
+
+  { 19,  1,  1 },
+
+  { 20,  1,  1 },
+
+  { 21,  1,  1 },
+
+  { 22,  1,  1 },
+
+  { 23,  1,  1 },
+
+  { 24,  1,  1 },
+
+  { 25,  1,  1 },
+
+  { 26,  1,  1 },
+
+  { 27,  1,  1 },
+
+  { 28,  1,  1 },
+
+  { 29,  1,  1 },
+
+  { 30,  1,  1 },
+
+  { 31,  1,  1 },
+
+  { 32,  1,  1 },
+
+  { 33,  1,  1 },
+
+  { 34,  1,  1 },
+
+  { 35,  1,  1 },
+
+  { 36,  1,  1 },
+
+  { 37,  1,  1 },
+
+  { 38,  1,  1 },
+
+  { 39,  1,  1 },
+
+  { 40,  1,  1 },
+
+  {  0,  0,  VLC_TCOEFF_ESCAPE },
+};
+
+
+huffman_code_t mvd_vlc[MVD_VLC_NUM] = {
+  {  0,  {{ 13, 0x05 }} }, // 13 0 0000 0000 0101
+  {  1,  {{ 13, 0x07 }} }, // 13 0 0000 0000 0111
+  {  2,  {{ 12, 0x05 }} }, // 12   0000 0000 0101
+  {  3,  {{ 12, 0x07 }} }, // 12   0000 0000 0111
+  {  4,  {{ 12, 0x09 }} }, // 12   0000 0000 1001
+  {  5,  {{ 12, 0x0B }} }, // 12   0000 0000 1011
+  {  6,  {{ 12, 0x0D }} }, // 12   0000 0000 1101
+  {  7,  {{ 12, 0x0F }} }, // 12   0000 0000 1111
+  {  8,  {{ 11, 0x09 }} }, // 11    000 0000 1001
+  {  9,  {{ 11, 0x0B }} }, // 11    000 0000 1011
+  {  10, {{ 11, 0x0D }} }, // 11    000 0000 1101
+  {  11, {{ 11, 0x0F }} }, // 11    000 0000 1111
+  {  12, {{ 11, 0x11 }} }, // 11    000 0001 0001
+  {  13, {{ 11, 0x13 }} }, // 11    000 0001 0011
+  {  14, {{ 11, 0x15 }} }, // 11    000 0001 0101
+  {  15, {{ 11, 0x17 }} }, // 11    000 0001 0111
+  {  16, {{ 11, 0x19 }} }, // 11    000 0001 1001
+  {  17, {{ 11, 0x1B }} }, // 11    000 0001 1011
+  {  18, {{ 11, 0x1D }} }, // 11    000 0001 1101
+  {  19, {{ 11, 0x1F }} }, // 11    000 0001 1111
+  {  20, {{ 11, 0x21 }} }, // 11    000 0010 0001
+  {  21, {{ 11, 0x23 }} }, // 11    000 0010 0011
+  {  22, {{ 10, 0x13 }} }, // 10     00 0001 0011
+  {  23, {{ 10, 0x15 }} }, // 10     00 0001 0101
+  {  24, {{ 10, 0x17 }} }, // 10     00 0001 0111
+  {  25, {{  8, 0x07 }} }, //  8        0000 0111
+  {  26, {{  8, 0x09 }} }, //  8        0000 1001
+  {  27, {{  8, 0x0B }} }, //  8        0000 1011
+  {  28, {{  7, 0x07 }} }, //  7         000 0111
+  {  29, {{  5, 0x03 }} }, //  5           0 0011
+  {  30, {{  4, 0x03 }} }, //  4             0011
+  {  31, {{  3, 0x03 }} }, //  3              011
+  {  32, {{  1, 0x01 }} }, //  1                1
+  {  33, {{  3, 0x02 }} }, //  3              010
+  {  34, {{  4, 0x02 }} }, //  4             0010
+  {  35, {{  5, 0x02 }} }, //  5           0 0010
+  {  36, {{  7, 0x06 }} }, //  7         000 0110
+  {  37, {{  8, 0x0A }} }, //  8        0000 1010
+  {  38, {{  8, 0x08 }} }, //  8        0000 1000
+  {  39, {{  8, 0x06 }} }, //  8        0000 0110
+  {  40, {{ 10, 0x16 }} }, // 10     00 0001 0110
+  {  41, {{ 10, 0x14 }} }, // 10     00 0001 0100
+  {  42, {{ 10, 0x12 }} }, // 10     00 0001 0010
+  {  43, {{ 11, 0x22 }} }, // 11    000 0010 0010
+  {  44, {{ 11, 0x20 }} }, // 11    000 0010 0000
+  {  45, {{ 11, 0x1E }} }, // 11    000 0001 1110
+  {  46, {{ 11, 0x1C }} }, // 11    000 0001 1100
+  {  47, {{ 11, 0x1A }} }, // 11    000 0001 1010
+  {  48, {{ 11, 0x18 }} }, // 11    000 0001 1000
+  {  49, {{ 11, 0x16 }} }, // 11    000 0001 0110
+  {  50, {{ 11, 0x14 }} }, // 11    000 0001 0100
+  {  51, {{ 11, 0x12 }} }, // 11    000 0001 0010
+  {  52, {{ 11, 0x10 }} }, // 11    000 0001 0000
+  {  53, {{ 11, 0x0E }} }, // 11    000 0000 1110
+  {  54, {{ 11, 0x0C }} }, // 11    000 0000 1100
+  {  55, {{ 11, 0x0A }} }, // 11    000 0000 1010
+  {  56, {{ 11, 0x08 }} }, // 11    000 0000 1000
+  {  57, {{ 12, 0x0E }} }, // 12   0000 0000 1110
+  {  58, {{ 12, 0x0C }} }, // 12   0000 0000 1100
+  {  59, {{ 12, 0x0A }} }, // 12   0000 0000 1010
+  {  60, {{ 12, 0x08 }} }, // 12   0000 0000 1000
+  {  61, {{ 12, 0x06 }} }, // 12   0000 0000 0110
+  {  62, {{ 12, 0x04 }} }, // 12   0000 0000 0100
+  {  63, {{ 13, 0x06 }} }, // 13  00000 0000 0110
+};
+
+huffman_tree_t*  mvd_vlc_tree = NULL;
+
+#define MAKE_WORD(a) ((int)(a*65536.0f))
+
+p263_mvd_t mvd[MVD_VLC_NUM] = {
+  { MAKE_WORD(-16  ), MAKE_WORD( 16  ) },
+  { MAKE_WORD(-15.5), MAKE_WORD( 16.5) },
+  { MAKE_WORD(-15  ), MAKE_WORD( 17  ) },
+  { MAKE_WORD(-14.5), MAKE_WORD( 17.5) },
+  { MAKE_WORD(-14  ), MAKE_WORD( 18  ) },
+  { MAKE_WORD(-13.5), MAKE_WORD( 18.5) },
+  { MAKE_WORD(-13  ), MAKE_WORD( 19  ) },
+  { MAKE_WORD(-12.5), MAKE_WORD( 19.5) },
+  { MAKE_WORD(-12  ), MAKE_WORD( 20  ) },
+  { MAKE_WORD(-11.5), MAKE_WORD( 20.5) },
+  { MAKE_WORD(-11  ), MAKE_WORD( 21  ) },
+  { MAKE_WORD(-10.5), MAKE_WORD( 21.5) },
+  { MAKE_WORD(-10  ), MAKE_WORD( 22  ) },
+  { MAKE_WORD(-9.5 ), MAKE_WORD( 22.5) },
+  { MAKE_WORD(-9   ), MAKE_WORD( 23  ) },
+  { MAKE_WORD(-8.5 ), MAKE_WORD( 23.5) },
+  { MAKE_WORD(-8   ), MAKE_WORD( 24  ) },
+  { MAKE_WORD(-7.5 ), MAKE_WORD( 24.5) },
+  { MAKE_WORD(-7   ), MAKE_WORD( 25  ) },
+  { MAKE_WORD(-6.5 ), MAKE_WORD( 25.5) },
+  { MAKE_WORD(-6   ), MAKE_WORD( 26  ) },
+  { MAKE_WORD(-5.5 ), MAKE_WORD( 26.5) },
+  { MAKE_WORD(-5   ), MAKE_WORD( 27  ) },
+  { MAKE_WORD(-4.5 ), MAKE_WORD( 27.5) },
+  { MAKE_WORD(-4   ), MAKE_WORD( 28  ) },
+  { MAKE_WORD(-3.5 ), MAKE_WORD( 28.5) },
+  { MAKE_WORD(-3   ), MAKE_WORD( 29  ) },
+  { MAKE_WORD(-2.5 ), MAKE_WORD( 29.5) },
+  { MAKE_WORD(-2   ), MAKE_WORD( 30  ) },
+  { MAKE_WORD(-1.5 ), MAKE_WORD( 30.5) },
+  { MAKE_WORD(-1   ), MAKE_WORD( 31  ) },
+  { MAKE_WORD(-0.5 ), MAKE_WORD( 31.5) },
+  { MAKE_WORD( 0   ), MAKE_WORD(  0  ) },
+  { MAKE_WORD( 0.5 ), MAKE_WORD(-31.5) },
+  { MAKE_WORD( 1   ), MAKE_WORD(-31  ) },
+  { MAKE_WORD( 1.5 ), MAKE_WORD(-30.5) },
+  { MAKE_WORD( 2   ), MAKE_WORD(-30  ) },
+  { MAKE_WORD( 2.5 ), MAKE_WORD(-29.5) },
+  { MAKE_WORD( 3   ), MAKE_WORD(-29  ) },
+  { MAKE_WORD( 3.5 ), MAKE_WORD(-28.5) },
+  { MAKE_WORD( 4   ), MAKE_WORD(-28  ) },
+  { MAKE_WORD( 4.5 ), MAKE_WORD(-27.5) },
+  { MAKE_WORD( 5   ), MAKE_WORD(-27  ) },
+  { MAKE_WORD( 5.5 ), MAKE_WORD(-26.5) },
+  { MAKE_WORD( 6   ), MAKE_WORD(-26  ) },
+  { MAKE_WORD( 6.5 ), MAKE_WORD(-25.5) },
+  { MAKE_WORD( 7   ), MAKE_WORD(-25  ) },
+  { MAKE_WORD( 7.5 ), MAKE_WORD(-24.5) },
+  { MAKE_WORD( 8   ), MAKE_WORD(-24  ) },
+  { MAKE_WORD( 8.5 ), MAKE_WORD(-23.5) },
+  { MAKE_WORD( 9   ), MAKE_WORD(-23  ) },
+  { MAKE_WORD( 9.5 ), MAKE_WORD(-22.5) },
+  { MAKE_WORD( 10  ), MAKE_WORD(-22  ) },
+  { MAKE_WORD( 10.5), MAKE_WORD(-21.5) },
+  { MAKE_WORD( 11  ), MAKE_WORD(-21  ) },
+  { MAKE_WORD( 11.5), MAKE_WORD(-20.5) },
+  { MAKE_WORD( 12  ), MAKE_WORD(-20  ) },
+  { MAKE_WORD( 12.5), MAKE_WORD(-19.5) },
+  { MAKE_WORD( 13  ), MAKE_WORD(-19  ) },
+  { MAKE_WORD( 13.5), MAKE_WORD(-18.5) },
+  { MAKE_WORD( 14  ), MAKE_WORD(-18  ) },
+  { MAKE_WORD( 14.5), MAKE_WORD(-17.5) },
+  { MAKE_WORD( 15  ), MAKE_WORD(-17  ) },
+  { MAKE_WORD( 15.5), MAKE_WORD(-16.5) },
+};