function thm_part_decomp16, dat,nan_overflow=nan_overflow
tab16 =[ 0., 1, 2, 3, 4, 5, 6, 7, 8, 9, $
10, 11, 12, 13, 14, 15, 16, 18, 20, 22, $
24, 26, 28, 30, 32, 36, 40, 44, 48, 52, $
56, 60, 64, 68, 72, 76, 80, 84, 88, 92, $
96, 100, 104, 108, 112, 116, 120, 124, 128, 136, $
144, 152, 160, 168, 176, 184, 192, 200, 208, 216, $
224, 232, 240, 248, 256, 272, 288, 304, 320, 336, $
352, 368, 384, 400, 416, 432, 448, 464, 480, 496, $
512, 544, 576, 608, 640, 672, 704, 736, 768, 800, $
832, 864, 896, 928, 960, 992, 1024, 1088, 1152, 1216, $
1280, 1344, 1408, 1472, 1536, 1600, 1664, 1728, 1792, 1856, $
1920, 1984, 2048, 2176, 2304, 2432, 2560, 2688, 2816, 2944, $
3072, 3200, 3328, 3456, 3584, 3712, 3840, 3968, 4096, 4224, $
4352, 4480, 4608, 4736, 4864, 4992, 5120, 5248, 5376, 5504, $
5632, 5760, 5888, 6016, 6144, 6272, 6400, 6528, 6656, 6784, $
6912, 7040, 7168, 7296, 7424, 7552, 7680, 7808, 7936, 8064, $
8192, 8448, 8704, 8960, 9216, 9472, 9728, 9984, 10240, 10496, $
10752, 11008, 11264, 11520, 11776, 12032, 12288, 12544, 12800, 13056, $
13312, 13568, 13824, 14080, 14336, 14592, 14848, 15104, 15360, 15616, $
15872, 16128, 16384, 16896, 17408, 17920, 18432, 18944, 19456, 19968, $
20480, 20992, 21504, 22016, 22528, 23040, 23552, 24064, 24576, 25088, $
25600, 26112, 26624, 27136, 27648, 28160, 28672, 29184, 29696, 30208, $
30720, 31232, 31744, 32256, 32768, 33792, 34816, 35840, 36864, 37888, $
38912, 39936, 40960, 41984, 43008, 44032, 45056, 46080, 47104, 48128, $
49152, 50176, 51200, 52224, 53248, 54272, 55296, 56320, 57344, 58368, $
59392, 60416, 61440, 62464, 63488, 64512 ]
if keyword_set(nan_overflow) then tab16[255] = !values.f_nan
datuc = tab16[dat]
return, datuc
end