Zalman_ 0 26 января, 2021 Опубликовано 26 января, 2021 (изменено) · Жалоба 3 часа назад, _pv сказал: не совсем верилог, но тут не принципиально, если памяти особо не жалко и не требуется очень уж большая точность, то урезать разрядность и запихать всё в таблицу вполне себе вариант: при округлении аргументов до 6 бит, ошибка по углу вроде уже лучше 8бит получается. #include <stdint.h> /* static const uint8_t atan_table[32][32] = { {0x20, 0x1f, 0x1d, 0x1c, 0x1a, 0x18, 0x16, 0x14, 0x12, 0x10, 0x0e, 0x0c, 0x09, 0x07, 0x04, 0x01, 0xff, 0xfc, 0xf9, 0xf7, 0xf4, 0xf2, 0xf0, 0xee, 0xec, 0xea, 0xe8, 0xe6, 0xe4, 0xe3, 0xe1, 0xe0}, {0x21, 0x20, 0x1f, 0x1d, 0x1b, 0x1a, 0x18, 0x16, 0x13, 0x11, 0x0f, 0x0c, 0x0a, 0x07, 0x04, 0x01, 0xff, 0xfc, 0xf9, 0xf6, 0xf4, 0xf1, 0xef, 0xed, 0xea, 0xe8, 0xe6, 0xe5, 0xe3, 0xe1, 0xe0, 0xdf}, {0x23, 0x21, 0x20, 0x1e, 0x1d, 0x1b, 0x19, 0x17, 0x15, 0x12, 0x10, 0x0d, 0x0a, 0x07, 0x05, 0x02, 0xfe, 0xfb, 0xf9, 0xf6, 0xf3, 0xf0, 0xee, 0xeb, 0xe9, 0xe7, 0xe5, 0xe3, 0xe2, 0xe0, 0xdf, 0xdd}, {0x24, 0x23, 0x22, 0x20, 0x1e, 0x1c, 0x1a, 0x18, 0x16, 0x14, 0x11, 0x0e, 0x0b, 0x08, 0x05, 0x02, 0xfe, 0xfb, 0xf8, 0xf5, 0xf2, 0xef, 0xec, 0xea, 0xe8, 0xe6, 0xe4, 0xe2, 0xe0, 0xde, 0xdd, 0xdc}, {0x26, 0x25, 0x23, 0x22, 0x20, 0x1e, 0x1c, 0x1a, 0x18, 0x15, 0x12, 0x0f, 0x0c, 0x09, 0x05, 0x02, 0xfe, 0xfb, 0xf7, 0xf4, 0xf1, 0xee, 0xeb, 0xe8, 0xe6, 0xe4, 0xe2, 0xe0, 0xde, 0xdd, 0xdb, 0xda}, {0x28, 0x26, 0x25, 0x24, 0x22, 0x20, 0x1e, 0x1c, 0x19, 0x17, 0x14, 0x10, 0x0d, 0x0a, 0x06, 0x02, 0xfe, 0xfa, 0xf6, 0xf3, 0xf0, 0xec, 0xe9, 0xe7, 0xe4, 0xe2, 0xe0, 0xde, 0xdc, 0xdb, 0xda, 0xd8}, {0x2a, 0x28, 0x27, 0x26, 0x24, 0x22, 0x20, 0x1e, 0x1b, 0x18, 0x15, 0x12, 0x0e, 0x0a, 0x06, 0x02, 0xfe, 0xfa, 0xf6, 0xf2, 0xee, 0xeb, 0xe8, 0xe5, 0xe2, 0xe0, 0xde, 0xdc, 0xda, 0xd9, 0xd8, 0xd6}, {0x2c, 0x2a, 0x29, 0x28, 0x26, 0x24, 0x22, 0x20, 0x1d, 0x1b, 0x17, 0x14, 0x10, 0x0c, 0x07, 0x02, 0xfe, 0xf9, 0xf4, 0xf0, 0xec, 0xe9, 0xe5, 0xe3, 0xe0, 0xde, 0xdc, 0xda, 0xd8, 0xd7, 0xd6, 0xd4}, {0x2e, 0x2d, 0x2b, 0x2a, 0x28, 0x27, 0x25, 0x23, 0x20, 0x1d, 0x1a, 0x16, 0x12, 0x0d, 0x08, 0x03, 0xfd, 0xf8, 0xf3, 0xee, 0xea, 0xe6, 0xe3, 0xe0, 0xdd, 0xdb, 0xd9, 0xd8, 0xd6, 0xd5, 0xd3, 0xd2}, {0x30, 0x2f, 0x2e, 0x2c, 0x2b, 0x29, 0x28, 0x25, 0x23, 0x20, 0x1d, 0x19, 0x14, 0x0f, 0x09, 0x03, 0xfd, 0xf7, 0xf1, 0xec, 0xe7, 0xe3, 0xe0, 0xdd, 0xdb, 0xd8, 0xd7, 0xd5, 0xd4, 0xd2, 0xd1, 0xd0}, {0x32, 0x31, 0x30, 0x2f, 0x2e, 0x2c, 0x2b, 0x29, 0x26, 0x23, 0x20, 0x1c, 0x17, 0x11, 0x0b, 0x04, 0xfc, 0xf5, 0xef, 0xe9, 0xe4, 0xe0, 0xdd, 0xda, 0xd7, 0xd5, 0xd4, 0xd2, 0xd1, 0xd0, 0xcf, 0xce}, {0x34, 0x34, 0x33, 0x32, 0x31, 0x30, 0x2e, 0x2c, 0x2a, 0x27, 0x24, 0x20, 0x1b, 0x15, 0x0d, 0x05, 0xfb, 0xf3, 0xeb, 0xe5, 0xe0, 0xdc, 0xd9, 0xd6, 0xd4, 0xd2, 0xd0, 0xcf, 0xce, 0xcd, 0xcc, 0xcc}, {0x37, 0x36, 0x36, 0x35, 0x34, 0x33, 0x32, 0x30, 0x2e, 0x2c, 0x29, 0x25, 0x20, 0x19, 0x10, 0x06, 0xfa, 0xf0, 0xe7, 0xe0, 0xdb, 0xd7, 0xd4, 0xd2, 0xd0, 0xce, 0xcd, 0xcc, 0xcb, 0xca, 0xca, 0xc9}, {0x39, 0x39, 0x39, 0x38, 0x37, 0x36, 0x36, 0x34, 0x33, 0x31, 0x2f, 0x2b, 0x27, 0x20, 0x16, 0x08, 0xf8, 0xea, 0xe0, 0xd9, 0xd5, 0xd1, 0xcf, 0xcd, 0xcc, 0xca, 0xca, 0xc9, 0xc8, 0xc7, 0xc7, 0xc7}, {0x3c, 0x3c, 0x3b, 0x3b, 0x3b, 0x3a, 0x3a, 0x39, 0x38, 0x37, 0x35, 0x33, 0x30, 0x2a, 0x20, 0x0d, 0xf3, 0xe0, 0xd6, 0xd0, 0xcd, 0xcb, 0xc9, 0xc8, 0xc7, 0xc6, 0xc6, 0xc5, 0xc5, 0xc5, 0xc4, 0xc4}, {0x3f, 0x3f, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3d, 0x3d, 0x3c, 0x3b, 0x3a, 0x38, 0x33, 0x20, 0xe0, 0xcd, 0xc8, 0xc6, 0xc5, 0xc4, 0xc3, 0xc3, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc1, 0xc1}, {0x41, 0x41, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x43, 0x43, 0x44, 0x45, 0x46, 0x48, 0x4d, 0x60, 0xa0, 0xb3, 0xb8, 0xba, 0xbb, 0xbc, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf}, {0x44, 0x44, 0x45, 0x45, 0x45, 0x46, 0x46, 0x47, 0x48, 0x49, 0x4b, 0x4d, 0x50, 0x56, 0x60, 0x73, 0x8d, 0xa0, 0xaa, 0xb0, 0xb3, 0xb5, 0xb7, 0xb8, 0xb9, 0xba, 0xba, 0xbb, 0xbb, 0xbb, 0xbc, 0xbc}, {0x47, 0x47, 0x47, 0x48, 0x49, 0x4a, 0x4a, 0x4c, 0x4d, 0x4f, 0x51, 0x55, 0x59, 0x60, 0x6a, 0x78, 0x88, 0x96, 0xa0, 0xa7, 0xab, 0xaf, 0xb1, 0xb3, 0xb4, 0xb6, 0xb6, 0xb7, 0xb8, 0xb9, 0xb9, 0xb9}, {0x49, 0x4a, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x50, 0x52, 0x54, 0x57, 0x5b, 0x60, 0x67, 0x70, 0x7a, 0x86, 0x90, 0x99, 0xa0, 0xa5, 0xa9, 0xac, 0xae, 0xb0, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb6, 0xb7}, {0x4c, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x52, 0x54, 0x56, 0x59, 0x5c, 0x60, 0x65, 0x6b, 0x73, 0x7b, 0x85, 0x8d, 0x95, 0x9b, 0xa0, 0xa4, 0xa7, 0xaa, 0xac, 0xae, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb4}, {0x4e, 0x4f, 0x50, 0x51, 0x52, 0x54, 0x55, 0x57, 0x5a, 0x5d, 0x60, 0x64, 0x69, 0x6f, 0x75, 0x7c, 0x84, 0x8b, 0x91, 0x97, 0x9c, 0xa0, 0xa3, 0xa6, 0xa9, 0xab, 0xac, 0xae, 0xaf, 0xb0, 0xb1, 0xb2}, {0x50, 0x51, 0x52, 0x54, 0x55, 0x57, 0x58, 0x5b, 0x5d, 0x60, 0x63, 0x67, 0x6c, 0x71, 0x77, 0x7d, 0x83, 0x89, 0x8f, 0x94, 0x99, 0x9d, 0xa0, 0xa3, 0xa5, 0xa8, 0xa9, 0xab, 0xac, 0xae, 0xaf, 0xb0}, {0x52, 0x53, 0x55, 0x56, 0x58, 0x59, 0x5b, 0x5d, 0x60, 0x63, 0x66, 0x6a, 0x6e, 0x73, 0x78, 0x7d, 0x83, 0x88, 0x8d, 0x92, 0x96, 0x9a, 0x9d, 0xa0, 0xa3, 0xa5, 0xa7, 0xa8, 0xaa, 0xab, 0xad, 0xae}, {0x54, 0x56, 0x57, 0x58, 0x5a, 0x5c, 0x5e, 0x60, 0x63, 0x65, 0x69, 0x6c, 0x70, 0x74, 0x79, 0x7e, 0x82, 0x87, 0x8c, 0x90, 0x94, 0x97, 0x9b, 0x9d, 0xa0, 0xa2, 0xa4, 0xa6, 0xa8, 0xa9, 0xaa, 0xac}, {0x56, 0x58, 0x59, 0x5a, 0x5c, 0x5e, 0x60, 0x62, 0x65, 0x68, 0x6b, 0x6e, 0x72, 0x76, 0x7a, 0x7e, 0x82, 0x86, 0x8a, 0x8e, 0x92, 0x95, 0x98, 0x9b, 0x9e, 0xa0, 0xa2, 0xa4, 0xa6, 0xa7, 0xa8, 0xaa}, {0x58, 0x5a, 0x5b, 0x5c, 0x5e, 0x60, 0x62, 0x64, 0x67, 0x69, 0x6c, 0x70, 0x73, 0x76, 0x7a, 0x7e, 0x82, 0x86, 0x8a, 0x8d, 0x90, 0x94, 0x97, 0x99, 0x9c, 0x9e, 0xa0, 0xa2, 0xa4, 0xa5, 0xa6, 0xa8}, {0x5a, 0x5b, 0x5d, 0x5e, 0x60, 0x62, 0x64, 0x66, 0x68, 0x6b, 0x6e, 0x71, 0x74, 0x77, 0x7b, 0x7e, 0x82, 0x85, 0x89, 0x8c, 0x8f, 0x92, 0x95, 0x98, 0x9a, 0x9c, 0x9e, 0xa0, 0xa2, 0xa3, 0xa5, 0xa6}, {0x5c, 0x5d, 0x5e, 0x60, 0x62, 0x64, 0x66, 0x68, 0x6a, 0x6c, 0x6f, 0x72, 0x75, 0x78, 0x7b, 0x7e, 0x82, 0x85, 0x88, 0x8b, 0x8e, 0x91, 0x94, 0x96, 0x98, 0x9a, 0x9c, 0x9e, 0xa0, 0xa2, 0xa3, 0xa4}, {0x5d, 0x5f, 0x60, 0x62, 0x63, 0x65, 0x67, 0x69, 0x6b, 0x6e, 0x70, 0x73, 0x76, 0x79, 0x7b, 0x7e, 0x82, 0x85, 0x87, 0x8a, 0x8d, 0x90, 0x92, 0x95, 0x97, 0x99, 0x9b, 0x9d, 0x9e, 0xa0, 0xa1, 0xa3}, {0x5f, 0x60, 0x61, 0x63, 0x65, 0x66, 0x68, 0x6a, 0x6d, 0x6f, 0x71, 0x74, 0x76, 0x79, 0x7c, 0x7f, 0x81, 0x84, 0x87, 0x8a, 0x8c, 0x8f, 0x91, 0x93, 0x96, 0x98, 0x9a, 0x9b, 0x9d, 0x9f, 0xa0, 0xa1}, {0x60, 0x61, 0x63, 0x64, 0x66, 0x68, 0x6a, 0x6c, 0x6e, 0x70, 0x72, 0x74, 0x77, 0x79, 0x7c, 0x7f, 0x81, 0x84, 0x87, 0x89, 0x8c, 0x8e, 0x90, 0x92, 0x94, 0x96, 0x98, 0x9a, 0x9c, 0x9d, 0x9f, 0xa0} }; */ /* static const uint16_t atan_table[64][64] = { {0x2000, 0x20ab, 0x215b, 0x2212, 0x22ce, 0x2390, 0x2459, 0x2528, 0x25fe, 0x26da, 0x27bd, 0x28a8, 0x2999, 0x2a91, 0x2b90, 0x2c96, 0x2da3, 0x2eb7, 0x2fd2, 0x30f4, 0x321b, 0x3349, 0x347d, 0x35b6, 0x36f3, 0x3836, 0x397c, 0x3ac5, 0x3c12, 0x3d60, 0x3eaf, 0x4000, 0x4150, 0x42a0, 0x43ee, 0x453a, 0x4684, 0x47ca, 0x490c, 0x4a4a, 0x4b83, 0x4cb6, 0x4de4, 0x4f0c, 0x502d, 0x5148, 0x525c, 0x5369, 0x5470, 0x556f, 0x5667, 0x5758, 0x5842, 0x5925, 0x5a02, 0x5ad7, 0x5ba6, 0x5c6f, 0x5d31, 0x5dee, 0x5ea4, 0x5f55, 0x6000, 0x60a5}, {0x1f55, 0x2000, 0x20b1, 0x2167, 0x2224, 0x22e8, 0x23b1, 0x2482, 0x255a, 0x2638, 0x271e, 0x280b, 0x28ff, 0x29fb, 0x2afe, 0x2c09, 0x2d1c, 0x2e36, 0x2f57, 0x307f, 0x31ae, 0x32e4, 0x3420, 0x3562, 0x36a9, 0x37f5, 0x3945, 0x3a99, 0x3bf0, 0x3d49, 0x3ea4, 0x4000, 0x415b, 0x42b6, 0x440f, 0x4566, 0x46ba, 0x480b, 0x4957, 0x4a9e, 0x4be0, 0x4d1c, 0x4e51, 0x4f81, 0x50a9, 0x51ca, 0x52e4, 0x53f6, 0x5501, 0x5604, 0x5700, 0x57f5, 0x58e2, 0x59c7, 0x5aa6, 0x5b7d, 0x5c4e, 0x5d18, 0x5ddb, 0x5e98, 0x5f4f, 0x6000, 0x60ab, 0x6150}, {0x1ea4, 0x1f4f, 0x2000, 0x20b7, 0x2174, 0x2238, 0x2303, 0x23d5, 0x24ae, 0x258f, 0x2677, 0x2767, 0x285e, 0x295e, 0x2a65, 0x2b75, 0x2c8d, 0x2dad, 0x2ed4, 0x3004, 0x313a, 0x3278, 0x33bd, 0x3508, 0x3659, 0x37b0, 0x390b, 0x3a6a, 0x3bcd, 0x3d32, 0x3e98, 0x4000, 0x4167, 0x42ce, 0x4433, 0x4595, 0x46f5, 0x4850, 0x49a6, 0x4af7, 0x4c42, 0x4d87, 0x4ec5, 0x4ffc, 0x512b, 0x5253, 0x5373, 0x548a, 0x559a, 0x56a2, 0x57a1, 0x5899, 0x5989, 0x5a71, 0x5b51, 0x5c2b, 0x5cfc, 0x5dc7, 0x5e8b, 0x5f49, 0x6000, 0x60b0, 0x615b, 0x6200}, {0x1dee, 0x1e98, 0x1f49, 0x2000, 0x20bd, 0x2182, 0x224e, 0x2321, 0x23fb, 0x24de, 0x25c8, 0x26ba, 0x27b5, 0x28b9, 0x29c4, 0x2ad9, 0x2bf6, 0x2d1c, 0x2e4a, 0x2f81, 0x30bf, 0x3206, 0x3354, 0x34a9, 0x3605, 0x3766, 0x38cd, 0x3a38, 0x3ba6, 0x3d18, 0x3e8b, 0x4000, 0x4174, 0x42e8, 0x4459, 0x45c8, 0x4733, 0x4899, 0x49fb, 0x4b56, 0x4cac, 0x4dfa, 0x4f40, 0x507f, 0x51b5, 0x52e4, 0x5409, 0x5527, 0x563b, 0x5747, 0x584a, 0x5945, 0x5a38, 0x5b22, 0x5c04, 0x5cdf, 0x5db2, 0x5e7d, 0x5f42, 0x6000, 0x60b7, 0x6167, 0x6212, 0x62b6}, {0x1d32, 0x1ddb, 0x1e8c, 0x1f42, 0x2000, 0x20c5, 0x2191, 0x2265, 0x2341, 0x2425, 0x2511, 0x2606, 0x2704, 0x280b, 0x291b, 0x2a34, 0x2b57, 0x2c82, 0x2db7, 0x2ef6, 0x303d, 0x318c, 0x32e4, 0x3443, 0x35aa, 0x3717, 0x388a, 0x3a02, 0x3b7e, 0x3cfd, 0x3e7e, 0x4000, 0x4182, 0x4303, 0x4482, 0x45fe, 0x4776, 0x48e9, 0x4a56, 0x4bbc, 0x4d1c, 0x4e73, 0x4fc3, 0x510a, 0x5248, 0x537d, 0x54a9, 0x55cb, 0x56e5, 0x57f5, 0x58fc, 0x59fa, 0x5aef, 0x5bdb, 0x5cbf, 0x5d9b, 0x5e6f, 0x5f3b, 0x6000, 0x60bd, 0x6174, 0x6224, 0x62ce, 0x6371}, {0x1c6f, 0x1d18, 0x1dc8, 0x1e7e, 0x1f3b, 0x2000, 0x20cc, 0x21a1, 0x227e, 0x2363, 0x2451, 0x2549, 0x2649, 0x2754, 0x2868, 0x2986, 0x2aae, 0x2be0, 0x2d1c, 0x2e62, 0x2fb1, 0x310a, 0x326c, 0x33d6, 0x3549, 0x36c2, 0x3842, 0x39c8, 0x3b52, 0x3cdf, 0x3e6f, 0x4000, 0x4191, 0x4320, 0x44ae, 0x4638, 0x47bd, 0x493d, 0x4ab7, 0x4c29, 0x4d94, 0x4ef5, 0x504e, 0x519e, 0x52e4, 0x5420, 0x5552, 0x567a, 0x5798, 0x58ac, 0x59b6, 0x5ab7, 0x5bae, 0x5c9c, 0x5d82, 0x5e5f, 0x5f33, 0x6000, 0x60c4, 0x6182, 0x6238, 0x62e7, 0x6390, 0x6433}, {0x1ba7, 0x1c4e, 0x1cfd, 0x1db2, 0x1e6f, 0x1f33, 0x2000, 0x20d5, 0x21b2, 0x2299, 0x2389, 0x2482, 0x2585, 0x2693, 0x27ab, 0x28ce, 0x29fb, 0x2b33, 0x2c76, 0x2dc4, 0x2f1c, 0x307f, 0x31ec, 0x3361, 0x34e0, 0x3667, 0x37f5, 0x3989, 0x3b22, 0x3cbf, 0x3e5f, 0x4000, 0x41a1, 0x4340, 0x44dd, 0x4677, 0x480b, 0x4999, 0x4b1f, 0x4c9e, 0x4e14, 0x4f81, 0x50e3, 0x523b, 0x5389, 0x54cc, 0x5604, 0x5732, 0x5854, 0x596c, 0x5a7a, 0x5b7d, 0x5c77, 0x5d67, 0x5e4d, 0x5f2b, 0x6000, 0x60cc, 0x6191, 0x624d, 0x6303, 0x63b1, 0x6459, 0x64fa}, {0x1ad7, 0x1b7e, 0x1c2b, 0x1cdf, 0x1d9b, 0x1e5f, 0x1f2b, 0x2000, 0x20de, 0x21c5, 0x22b6, 0x23b1, 0x24b7, 0x25c8, 0x26e4, 0x280b, 0x293d, 0x2a7c, 0x2bc6, 0x2d1c, 0x2e7d, 0x2fea, 0x3162, 0x32e4, 0x3470, 0x3605, 0x37a1, 0x3945, 0x3aef, 0x3c9d, 0x3e4d, 0x4000, 0x41b2, 0x4363, 0x4511, 0x46ba, 0x485e, 0x49fb, 0x4b90, 0x4d1c, 0x4e9e, 0x5016, 0x5182, 0x52e4, 0x543a, 0x5584, 0x56c2, 0x57f5, 0x591c, 0x5a38, 0x5b48, 0x5c4e, 0x5d49, 0x5e3a, 0x5f22, 0x6000, 0x60d4, 0x61a1, 0x6264, 0x6320, 0x63d5, 0x6482, 0x6528, 0x65c8}, {0x1a02, 0x1aa6, 0x1b52, 0x1c05, 0x1cbf, 0x1d82, 0x1e4e, 0x1f22, 0x2000, 0x20e8, 0x21da, 0x22d6, 0x23de, 0x24f2, 0x2611, 0x273c, 0x2874, 0x29b9, 0x2b0a, 0x2c68, 0x2dd3, 0x2f4a, 0x30cd, 0x325c, 0x33f6, 0x359a, 0x3747, 0x38fc, 0x3ab7, 0x3c77, 0x3e3b, 0x4000, 0x41c5, 0x4388, 0x4549, 0x4704, 0x48b8, 0x4a65, 0x4c09, 0x4da3, 0x4f32, 0x50b5, 0x522d, 0x5398, 0x54f6, 0x5647, 0x578b, 0x58c3, 0x59ef, 0x5b0e, 0x5c21, 0x5d29, 0x5e26, 0x5f18, 0x6000, 0x60de, 0x61b2, 0x627d, 0x6340, 0x63fb, 0x64ae, 0x6559, 0x65fe, 0x669b}, {0x1925, 0x19c8, 0x1a71, 0x1b22, 0x1bdb, 0x1c9d, 0x1d67, 0x1e3b, 0x1f18, 0x2000, 0x20f2, 0x21f0, 0x22fa, 0x240f, 0x2532, 0x2661, 0x279e, 0x28e9, 0x2a41, 0x2ba7, 0x2d1c, 0x2e9e, 0x302e, 0x31ca, 0x3373, 0x3527, 0x36e5, 0x38ac, 0x3a7a, 0x3c4e, 0x3e26, 0x4000, 0x41da, 0x43b1, 0x4585, 0x4754, 0x491b, 0x4ad9, 0x4c8d, 0x4e36, 0x4fd2, 0x5162, 0x52e4, 0x5458, 0x55be, 0x5717, 0x5861, 0x599e, 0x5ace, 0x5bf0, 0x5d06, 0x5e0f, 0x5f0d, 0x6000, 0x60e7, 0x61c5, 0x6298, 0x6363, 0x6424, 0x64dd, 0x658e, 0x6638, 0x66da, 0x6776}, {0x1842, 0x18e2, 0x1989, 0x1a38, 0x1aef, 0x1bae, 0x1c77, 0x1d4a, 0x1e26, 0x1f0d, 0x2000, 0x20fe, 0x2209, 0x2321, 0x2446, 0x2579, 0x26ba, 0x280b, 0x296a, 0x2ad9, 0x2c57, 0x2de4, 0x2f81, 0x312b, 0x32e4, 0x34a9, 0x367a, 0x3855, 0x3a38, 0x3c21, 0x3e0f, 0x4000, 0x41f0, 0x43de, 0x45c8, 0x47ab, 0x4986, 0x4b56, 0x4d1c, 0x4ed4, 0x507f, 0x521b, 0x53a8, 0x5527, 0x5695, 0x57f5, 0x5945, 0x5a87, 0x5bba, 0x5cdf, 0x5df7, 0x5f01, 0x6000, 0x60f2, 0x61d9, 0x62b6, 0x6388, 0x6451, 0x6511, 0x65c8, 0x6676, 0x671d, 0x67bd, 0x6856}, {0x1758, 0x17f5, 0x1899, 0x1945, 0x19fa, 0x1ab7, 0x1b7e, 0x1c4e, 0x1d29, 0x1e10, 0x1f02, 0x2000, 0x210b, 0x2224, 0x234c, 0x2482, 0x25c8, 0x271e, 0x2884, 0x29fb, 0x2b83, 0x2d1c, 0x2ec5, 0x307f, 0x3248, 0x3420, 0x3605, 0x37f5, 0x39ef, 0x3bf0, 0x3df7, 0x4000, 0x4209, 0x440f, 0x4611, 0x480b, 0x49fb, 0x4be0, 0x4db7, 0x4f81, 0x513a, 0x52e4, 0x547d, 0x5604, 0x577b, 0x58e2, 0x5a38, 0x5b7d, 0x5cb4, 0x5ddb, 0x5ef4, 0x6000, 0x60fe, 0x61f0, 0x62d6, 0x63b1, 0x6482, 0x6548, 0x6606, 0x66ba, 0x6766, 0x680b, 0x68a7, 0x693d}, {0x1667, 0x1701, 0x17a2, 0x184a, 0x18fc, 0x19b6, 0x1a7a, 0x1b48, 0x1c22, 0x1d06, 0x1df7, 0x1ef4, 0x2000, 0x211a, 0x2243, 0x237c, 0x24c5, 0x2620, 0x278d, 0x290c, 0x2a9e, 0x2c43, 0x2dfa, 0x2fc3, 0x319e, 0x3389, 0x3584, 0x378c, 0x399e, 0x3bba, 0x3ddb, 0x4000, 0x4224, 0x4446, 0x4661, 0x4874, 0x4a7c, 0x4c76, 0x4e62, 0x503c, 0x5206, 0x53bd, 0x5561, 0x56f3, 0x5872, 0x59df, 0x5b3a, 0x5c84, 0x5dbd, 0x5ee6, 0x6000, 0x610b, 0x6209, 0x62f9, 0x63de, 0x64b7, 0x6585, 0x6649, 0x6704, 0x67b5, 0x685e, 0x68ff, 0x6998, 0x6a2b}, {0x156f, 0x1605, 0x16a2, 0x1747, 0x17f5, 0x18ac, 0x196d, 0x1a38, 0x1b0e, 0x1bf0, 0x1cdf, 0x1ddb, 0x1ee6, 0x2000, 0x212a, 0x2265, 0x23b1, 0x2511, 0x2684, 0x280b, 0x29a6, 0x2b57, 0x2d1c, 0x2ef6, 0x30e3, 0x32e4, 0x34f6, 0x3717, 0x3945, 0x3b7e, 0x3dbd, 0x4000, 0x4243, 0x4482, 0x46ba, 0x48e9, 0x4b0a, 0x4d1c, 0x4f1c, 0x510a, 0x52e4, 0x54a9, 0x5659, 0x57f5, 0x597c, 0x5aef, 0x5c4e, 0x5d9b, 0x5ed6, 0x6000, 0x6119, 0x6224, 0x6320, 0x640f, 0x64f1, 0x65c8, 0x6693, 0x6754, 0x680b, 0x68b8, 0x695e, 0x69fb, 0x6a91, 0x6b1f}, {0x1470, 0x1501, 0x159a, 0x163b, 0x16e5, 0x1798, 0x1855, 0x191c, 0x19ef, 0x1ace, 0x1bba, 0x1cb4, 0x1dbd, 0x1ed6, 0x2000, 0x213c, 0x228b, 0x23ee, 0x2566, 0x26f5, 0x289a, 0x2a56, 0x2c29, 0x2e14, 0x3016, 0x322d, 0x3458, 0x3695, 0x38e2, 0x3b3a, 0x3d9b, 0x4000, 0x4265, 0x44c5, 0x471e, 0x496a, 0x4ba7, 0x4dd3, 0x4fea, 0x51eb, 0x53d6, 0x55aa, 0x5766, 0x590b, 0x5a99, 0x5c11, 0x5d75, 0x5ec4, 0x6000, 0x612a, 0x6242, 0x634b, 0x6446, 0x6532, 0x6611, 0x66e3, 0x67ab, 0x6868, 0x691b, 0x69c4, 0x6a65, 0x6afe, 0x6b90, 0x6c1a}, {0x136a, 0x13f6, 0x148b, 0x1527, 0x15cc, 0x167a, 0x1732, 0x17f5, 0x18c4, 0x199e, 0x1a87, 0x1b7e, 0x1c84, 0x1d9b, 0x1ec4, 0x2000, 0x2150, 0x22b6, 0x2433, 0x25c8, 0x2776, 0x293d, 0x2b1f, 0x2d1c, 0x2f32, 0x3162, 0x33a9, 0x3605, 0x3873, 0x3aef, 0x3d75, 0x4000, 0x428b, 0x4511, 0x478d, 0x49fb, 0x4c57, 0x4e9e, 0x50cd, 0x52e4, 0x54e0, 0x56c2, 0x588a, 0x5a38, 0x5bcc, 0x5d49, 0x5eaf, 0x6000, 0x613c, 0x6264, 0x637b, 0x6482, 0x6579, 0x6661, 0x673c, 0x680b, 0x68cd, 0x6986, 0x6a34, 0x6ad9, 0x6b75, 0x6c09, 0x6c96, 0x6d1c}, {0x125c, 0x12e4, 0x1373, 0x140a, 0x14a9, 0x1552, 0x1605, 0x16c2, 0x178c, 0x1862, 0x1945, 0x1a38, 0x1b3a, 0x1c4e, 0x1d75, 0x1eb0, 0x2000, 0x2167, 0x22e8, 0x2482, 0x2638, 0x280b, 0x29fb, 0x2c09, 0x2e36, 0x307f, 0x32e4, 0x3562, 0x37f5, 0x3a99, 0x3d49, 0x4000, 0x42b6, 0x4566, 0x480b, 0x4a9e, 0x4d1c, 0x4f81, 0x51ca, 0x53f6, 0x5604, 0x57f5, 0x59c7, 0x5b7d, 0x5d18, 0x5e98, 0x6000, 0x6150, 0x628b, 0x63b1, 0x64c5, 0x65c8, 0x66ba, 0x679e, 0x6874, 0x693d, 0x69fb, 0x6aae, 0x6b56, 0x6bf6, 0x6c8d, 0x6d1c, 0x6da3, 0x6e24}, {0x1148, 0x11ca, 0x1253, 0x12e4, 0x137d, 0x1420, 0x14cd, 0x1584, 0x1647, 0x1717, 0x17f5, 0x18e2, 0x19df, 0x1aef, 0x1c12, 0x1d4a, 0x1e98, 0x2000, 0x2182, 0x2321, 0x24de, 0x26ba, 0x28b9, 0x2ad9, 0x2d1c, 0x2f81, 0x3206, 0x34a9, 0x3766, 0x3a38, 0x3d18, 0x4000, 0x42e8, 0x45c8, 0x4899, 0x4b56, 0x4dfa, 0x507f, 0x52e4, 0x5527, 0x5747, 0x5945, 0x5b22, 0x5cdf, 0x5e7d, 0x6000, 0x6167, 0x62b6, 0x63ee, 0x6511, 0x6620, 0x671d, 0x680b, 0x68e8, 0x69b8, 0x6a7c, 0x6b33, 0x6be0, 0x6c82, 0x6d1c, 0x6dac, 0x6e35, 0x6eb7, 0x6f32}, {0x102e, 0x10a9, 0x112b, 0x11b6, 0x1248, 0x12e4, 0x1389, 0x143a, 0x14f6, 0x15bf, 0x1696, 0x177c, 0x1873, 0x197c, 0x1a99, 0x1bcd, 0x1d18, 0x1e7e, 0x2000, 0x21a1, 0x2363, 0x2549, 0x2754, 0x2986, 0x2be0, 0x2e62, 0x310a, 0x33d6, 0x36c2, 0x39c8, 0x3cdf, 0x4000, 0x4320, 0x4638, 0x493d, 0x4c29, 0x4ef5, 0x519e, 0x5420, 0x567a, 0x58ac, 0x5ab7, 0x5c9c, 0x5e5f, 0x6000, 0x6182, 0x62e7, 0x6433, 0x6566, 0x6684, 0x678d, 0x6884, 0x696a, 0x6a41, 0x6b0a, 0x6bc6, 0x6c76, 0x6d1c, 0x6db7, 0x6e4a, 0x6ed4, 0x6f57, 0x6fd2, 0x7047}, {0x0f0c, 0x0f81, 0x0ffc, 0x107f, 0x110a, 0x119e, 0x123c, 0x12e4, 0x1398, 0x1458, 0x1527, 0x1605, 0x16f4, 0x17f5, 0x190b, 0x1a38, 0x1b7e, 0x1cdf, 0x1e5f, 0x2000, 0x21c5, 0x23b1, 0x25c8, 0x280b, 0x2a7c, 0x2d1c, 0x2fea, 0x32e4, 0x3605, 0x3945, 0x3c9d, 0x4000, 0x4363, 0x46ba, 0x49fb, 0x4d1c, 0x5016, 0x52e4, 0x5584, 0x57f5, 0x5a38, 0x5c4e, 0x5e3a, 0x6000, 0x61a1, 0x6320, 0x6482, 0x65c8, 0x66f4, 0x680b, 0x690c, 0x69fb, 0x6ad9, 0x6ba7, 0x6c68, 0x6d1c, 0x6dc4, 0x6e61, 0x6ef5, 0x6f80, 0x7003, 0x707f, 0x70f3, 0x7161}, {0x0de4, 0x0e52, 0x0ec5, 0x0f40, 0x0fc3, 0x104f, 0x10e3, 0x1183, 0x122d, 0x12e4, 0x13a9, 0x147d, 0x1562, 0x1659, 0x1766, 0x188a, 0x19c8, 0x1b22, 0x1c9d, 0x1e3b, 0x2000, 0x21f0, 0x240f, 0x2661, 0x28e9, 0x2ba7, 0x2e9e, 0x31ca, 0x3527, 0x38ac, 0x3c4e, 0x4000, 0x43b1, 0x4754, 0x4ad9, 0x4e36, 0x5162, 0x5458, 0x5717, 0x599e, 0x5bf0, 0x5e0f, 0x6000, 0x61c5, 0x6363, 0x64dd, 0x6638, 0x6776, 0x6899, 0x69a6, 0x6a9e, 0x6b83, 0x6c57, 0x6d1c, 0x6dd3, 0x6e7d, 0x6f1c, 0x6fb1, 0x703c, 0x70bf, 0x713a, 0x71ae, 0x721b, 0x7282}, {0x0cb7, 0x0d1c, 0x0d87, 0x0dfa, 0x0e74, 0x0ef6, 0x0f81, 0x1016, 0x10b6, 0x1162, 0x121b, 0x12e4, 0x13bd, 0x14a9, 0x15aa, 0x16c2, 0x17f5, 0x1945, 0x1ab7, 0x1c4e, 0x1e10, 0x2000, 0x2224, 0x2482, 0x271e, 0x29fb, 0x2d1c, 0x307f, 0x3420, 0x37f5, 0x3bf0, 0x4000, 0x440f, 0x480b, 0x4be0, 0x4f81, 0x52e4, 0x5604, 0x58e2, 0x5b7d, 0x5ddb, 0x6000, 0x61f0, 0x63b1, 0x6548, 0x66ba, 0x680b, 0x693d, 0x6a56, 0x6b56, 0x6c42, 0x6d1c, 0x6de4, 0x6e9e, 0x6f4a, 0x6fea, 0x707f, 0x710a, 0x718c, 0x7206, 0x7278, 0x72e4, 0x7349, 0x73a8}, {0x0b83, 0x0be0, 0x0c43, 0x0cac, 0x0d1c, 0x0d94, 0x0e14, 0x0e9e, 0x0f32, 0x0fd2, 0x107f, 0x113a, 0x1206, 0x12e4, 0x13d6, 0x14e0, 0x1605, 0x1747, 0x18ac, 0x1a38, 0x1bf0, 0x1ddb, 0x2000, 0x2265, 0x2511, 0x280b, 0x2b57, 0x2ef6, 0x32e4, 0x3717, 0x3b7e, 0x4000, 0x4482, 0x48e9, 0x4d1c, 0x510a, 0x54a9, 0x57f5, 0x5aef, 0x5d9b, 0x6000, 0x6224, 0x640f, 0x65c8, 0x6754, 0x68b8, 0x69fb, 0x6b1f, 0x6c29, 0x6d1c, 0x6df9, 0x6ec5, 0x6f80, 0x702d, 0x70cd, 0x7161, 0x71eb, 0x726c, 0x72e4, 0x7354, 0x73bd, 0x7420, 0x747c, 0x74d4}, {0x0a4a, 0x0a9e, 0x0af7, 0x0b57, 0x0bbc, 0x0c29, 0x0c9e, 0x0d1c, 0x0da3, 0x0e36, 0x0ed4, 0x0f81, 0x103d, 0x110a, 0x11ec, 0x12e4, 0x13f6, 0x1527, 0x167a, 0x17f5, 0x199e, 0x1b7e, 0x1d9b, 0x2000, 0x22b6, 0x25c8, 0x293d, 0x2d1c, 0x3162, 0x3605, 0x3aef, 0x4000, 0x4511, 0x49fb, 0x4e9e, 0x52e4, 0x56c2, 0x5a38, 0x5d49, 0x6000, 0x6264, 0x6482, 0x6661, 0x680b, 0x6986, 0x6ad9, 0x6c09, 0x6d1c, 0x6e14, 0x6ef5, 0x6fc3, 0x707f, 0x712b, 0x71ca, 0x725c, 0x72e4, 0x7361, 0x73d6, 0x7443, 0x74a9, 0x7508, 0x7561, 0x75b5, 0x7604}, {0x090c, 0x0957, 0x09a6, 0x09fb, 0x0a56, 0x0ab7, 0x0b20, 0x0b90, 0x0c0a, 0x0c8d, 0x0d1c, 0x0db8, 0x0e62, 0x0f1c, 0x0fea, 0x10ce, 0x11ca, 0x12e4, 0x1420, 0x1584, 0x1717, 0x18e2, 0x1aef, 0x1d4a, 0x2000, 0x2321, 0x26ba, 0x2ad9, 0x2f81, 0x34a9, 0x3a38, 0x4000, 0x45c8, 0x4b56, 0x507f, 0x5527, 0x5945, 0x5cdf, 0x6000, 0x62b6, 0x6511, 0x671d, 0x68e8, 0x6a7c, 0x6be0, 0x6d1c, 0x6e35, 0x6f32, 0x7015, 0x70e3, 0x719e, 0x7248, 0x72e4, 0x7372, 0x73f6, 0x746f, 0x74e0, 0x7548, 0x75aa, 0x7604, 0x7659, 0x76a9, 0x76f3, 0x7739}, {0x07ca, 0x080b, 0x0850, 0x089a, 0x08e9, 0x093e, 0x0999, 0x09fb, 0x0a66, 0x0ad9, 0x0b57, 0x0be0, 0x0c76, 0x0d1c, 0x0dd3, 0x0e9e, 0x0f81, 0x107f, 0x119e, 0x12e4, 0x1458, 0x1605, 0x17f5, 0x1a38, 0x1cdf, 0x2000, 0x23b1, 0x280b, 0x2d1c, 0x32e4, 0x3945, 0x4000, 0x46ba, 0x4d1c, 0x52e4, 0x57f5, 0x5c4e, 0x6000, 0x6320, 0x65c8, 0x680b, 0x69fb, 0x6ba7, 0x6d1c, 0x6e61, 0x6f80, 0x707f, 0x7161, 0x722d, 0x72e4, 0x7389, 0x7420, 0x74a9, 0x7526, 0x759a, 0x7604, 0x7667, 0x76c2, 0x7717, 0x7766, 0x77b0, 0x77f5, 0x7835, 0x7872}, {0x0684, 0x06bb, 0x06f5, 0x0733, 0x0776, 0x07be, 0x080b, 0x085e, 0x08b9, 0x091b, 0x0986, 0x09fb, 0x0a7c, 0x0b0a, 0x0ba8, 0x0c57, 0x0d1c, 0x0dfa, 0x0ef6, 0x1016, 0x1162, 0x12e4, 0x14a9, 0x16c2, 0x1945, 0x1c4e, 0x2000, 0x2482, 0x29fb, 0x307f, 0x37f5, 0x4000, 0x480b, 0x4f81, 0x5604, 0x5b7d, 0x6000, 0x63b1, 0x66ba, 0x693d, 0x6b56, 0x6d1c, 0x6e9e, 0x6fea, 0x710a, 0x7206, 0x72e4, 0x73a8, 0x7458, 0x74f5, 0x7584, 0x7604, 0x767a, 0x76e5, 0x7747, 0x77a1, 0x77f5, 0x7842, 0x788a, 0x78cc, 0x790b, 0x7945, 0x797c, 0x79af}, {0x053a, 0x0567, 0x0596, 0x05c8, 0x05fe, 0x0638, 0x0677, 0x06bb, 0x0704, 0x0754, 0x07ab, 0x080b, 0x0874, 0x08e9, 0x096a, 0x09fb, 0x0a9e, 0x0b57, 0x0c29, 0x0d1c, 0x0e36, 0x0f81, 0x110a, 0x12e4, 0x1527, 0x17f5, 0x1b7e, 0x2000, 0x25c8, 0x2d1c, 0x3605, 0x4000, 0x49fb, 0x52e4, 0x5a38, 0x6000, 0x6482, 0x680b, 0x6ad9, 0x6d1c, 0x6ef5, 0x707f, 0x71ca, 0x72e4, 0x73d6, 0x74a9, 0x7561, 0x7604, 0x7695, 0x7717, 0x778b, 0x77f5, 0x7854, 0x78ac, 0x78fc, 0x7945, 0x7989, 0x79c7, 0x7a01, 0x7a37, 0x7a6a, 0x7a99, 0x7ac5, 0x7aee}, {0x03ee, 0x0410, 0x0433, 0x0459, 0x0482, 0x04ae, 0x04de, 0x0511, 0x0549, 0x0586, 0x05c8, 0x0611, 0x0661, 0x06bb, 0x071e, 0x078d, 0x080b, 0x089a, 0x093e, 0x09fb, 0x0ad9, 0x0be0, 0x0d1c, 0x0e9e, 0x107f, 0x12e4, 0x1605, 0x1a38, 0x2000, 0x280b, 0x32e4, 0x4000, 0x4d1c, 0x57f5, 0x6000, 0x65c8, 0x69fb, 0x6d1c, 0x6f80, 0x7161, 0x72e4, 0x7420, 0x7526, 0x7604, 0x76c2, 0x7766, 0x77f5, 0x7872, 0x78e2, 0x7945, 0x799e, 0x79ef, 0x7a37, 0x7a7a, 0x7ab7, 0x7aee, 0x7b22, 0x7b51, 0x7b7d, 0x7ba6, 0x7bcc, 0x7bf0, 0x7c11, 0x7c31}, {0x02a0, 0x02b6, 0x02ce, 0x02e8, 0x0303, 0x0321, 0x0341, 0x0363, 0x0389, 0x03b2, 0x03de, 0x0410, 0x0446, 0x0482, 0x04c5, 0x0511, 0x0567, 0x05c8, 0x0638, 0x06bb, 0x0754, 0x080b, 0x08e9, 0x09fb, 0x0b57, 0x0d1c, 0x0f81, 0x12e4, 0x17f5, 0x2000, 0x2d1c, 0x4000, 0x52e4, 0x6000, 0x680b, 0x6d1c, 0x707f, 0x72e4, 0x74a9, 0x7604, 0x7717, 0x77f5, 0x78ac, 0x7945, 0x79c7, 0x7a37, 0x7a99, 0x7aee, 0x7b3a, 0x7b7d, 0x7bba, 0x7bf0, 0x7c21, 0x7c4e, 0x7c77, 0x7c9c, 0x7cbf, 0x7cdf, 0x7cfc, 0x7d18, 0x7d31, 0x7d49, 0x7d60, 0x7d74}, {0x0150, 0x015c, 0x0168, 0x0174, 0x0182, 0x0191, 0x01a1, 0x01b2, 0x01c5, 0x01da, 0x01f0, 0x0209, 0x0224, 0x0243, 0x0265, 0x028b, 0x02b6, 0x02e8, 0x0321, 0x0363, 0x03b2, 0x0410, 0x0482, 0x0511, 0x05c8, 0x06bb, 0x080b, 0x09fb, 0x0d1c, 0x12e4, 0x2000, 0x4000, 0x6000, 0x6d1c, 0x72e4, 0x7604, 0x77f5, 0x7945, 0x7a37, 0x7aee, 0x7b7d, 0x7bf0, 0x7c4e, 0x7c9c, 0x7cdf, 0x7d18, 0x7d49, 0x7d74, 0x7d9b, 0x7dbd, 0x7ddb, 0x7df6, 0x7e0f, 0x7e26, 0x7e3a, 0x7e4d, 0x7e5f, 0x7e6f, 0x7e7d, 0x7e8b, 0x7e98, 0x7ea4, 0x7eaf, 0x7eba}, {0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000}, {0xfeaf, 0xfea3, 0xfe97, 0xfe8b, 0xfe7d, 0xfe6e, 0xfe5e, 0xfe4d, 0xfe3a, 0xfe25, 0xfe0f, 0xfdf6, 0xfddb, 0xfdbc, 0xfd9a, 0xfd74, 0xfd49, 0xfd17, 0xfcde, 0xfc9c, 0xfc4d, 0xfbef, 0xfb7d, 0xfaee, 0xfa37, 0xf944, 0xf7f4, 0xf604, 0xf2e3, 0xed1b, 0xdfff, 0xbfff, 0x9fff, 0x92e3, 0x8d1b, 0x89fb, 0x880a, 0x86ba, 0x85c8, 0x8511, 0x8482, 0x840f, 0x83b1, 0x8363, 0x8320, 0x82e7, 0x82b6, 0x828b, 0x8264, 0x8242, 0x8224, 0x8209, 0x81f0, 0x81d9, 0x81c5, 0x81b2, 0x81a0, 0x8190, 0x8182, 0x8174, 0x8167, 0x815b, 0x8150, 0x8145}, {0xfd5f, 0xfd49, 0xfd31, 0xfd17, 0xfcfc, 0xfcde, 0xfcbe, 0xfc9c, 0xfc76, 0xfc4d, 0xfc21, 0xfbef, 0xfbb9, 0xfb7d, 0xfb3a, 0xfaee, 0xfa98, 0xfa37, 0xf9c7, 0xf944, 0xf8ab, 0xf7f4, 0xf716, 0xf604, 0xf4a8, 0xf2e3, 0xf07e, 0xed1b, 0xe80a, 0xdfff, 0xd2e3, 0xbfff, 0xad1b, 0x9fff, 0x97f4, 0x92e3, 0x8f80, 0x8d1b, 0x8b56, 0x89fb, 0x88e8, 0x880a, 0x8753, 0x86ba, 0x8638, 0x85c8, 0x8566, 0x8511, 0x84c5, 0x8482, 0x8445, 0x840f, 0x83de, 0x83b1, 0x8388, 0x8363, 0x8340, 0x8320, 0x8303, 0x82e7, 0x82ce, 0x82b6, 0x829f, 0x828b}, {0xfc11, 0xfbef, 0xfbcc, 0xfba6, 0xfb7d, 0xfb51, 0xfb21, 0xfaee, 0xfab6, 0xfa79, 0xfa37, 0xf9ee, 0xf99e, 0xf944, 0xf8e1, 0xf872, 0xf7f4, 0xf765, 0xf6c1, 0xf604, 0xf526, 0xf41f, 0xf2e3, 0xf161, 0xef80, 0xed1b, 0xe9fa, 0xe5c7, 0xdfff, 0xd7f4, 0xcd1b, 0xbfff, 0xb2e3, 0xa80a, 0x9fff, 0x9a37, 0x9604, 0x92e3, 0x907f, 0x8e9e, 0x8d1b, 0x8bdf, 0x8ad9, 0x89fb, 0x893d, 0x8899, 0x880a, 0x878d, 0x871d, 0x86ba, 0x8661, 0x8610, 0x85c8, 0x8585, 0x8548, 0x8511, 0x84dd, 0x84ae, 0x8482, 0x8459, 0x8433, 0x840f, 0x83ee, 0x83ce}, {0xfac5, 0xfa98, 0xfa69, 0xfa37, 0xfa01, 0xf9c7, 0xf988, 0xf944, 0xf8fb, 0xf8ab, 0xf854, 0xf7f4, 0xf78b, 0xf716, 0xf695, 0xf604, 0xf561, 0xf4a8, 0xf3d6, 0xf2e3, 0xf1c9, 0xf07e, 0xeef5, 0xed1b, 0xead8, 0xe80a, 0xe481, 0xdfff, 0xda37, 0xd2e3, 0xc9fa, 0xbfff, 0xb604, 0xad1b, 0xa5c7, 0x9fff, 0x9b7d, 0x97f4, 0x9526, 0x92e3, 0x910a, 0x8f80, 0x8e35, 0x8d1b, 0x8c29, 0x8b56, 0x8a9e, 0x89fb, 0x896a, 0x88e8, 0x8874, 0x880a, 0x87ab, 0x8753, 0x8703, 0x86ba, 0x8676, 0x8638, 0x85fe, 0x85c8, 0x8595, 0x8566, 0x853a, 0x8511}, {0xf97b, 0xf944, 0xf90a, 0xf8cc, 0xf889, 0xf841, 0xf7f4, 0xf7a1, 0xf746, 0xf6e4, 0xf679, 0xf604, 0xf583, 0xf4f5, 0xf457, 0xf3a8, 0xf2e3, 0xf205, 0xf109, 0xefe9, 0xee9d, 0xed1b, 0xeb56, 0xe93d, 0xe6ba, 0xe3b1, 0xdfff, 0xdb7d, 0xd604, 0xcf80, 0xc80a, 0xbfff, 0xb7f4, 0xb07e, 0xa9fb, 0xa482, 0x9fff, 0x9c4e, 0x9945, 0x96c2, 0x94a9, 0x92e3, 0x9161, 0x9015, 0x8ef5, 0x8df9, 0x8d1b, 0x8c57, 0x8ba7, 0x8b0a, 0x8a7b, 0x89fb, 0x8985, 0x891a, 0x88b8, 0x885e, 0x880a, 0x87bd, 0x8775, 0x8733, 0x86f4, 0x86ba, 0x8683, 0x8650}, {0xf835, 0xf7f4, 0xf7af, 0xf765, 0xf716, 0xf6c1, 0xf666, 0xf604, 0xf599, 0xf526, 0xf4a8, 0xf41f, 0xf389, 0xf2e3, 0xf22c, 0xf161, 0xf07e, 0xef80, 0xee61, 0xed1b, 0xeba7, 0xe9fa, 0xe80a, 0xe5c7, 0xe320, 0xdfff, 0xdc4e, 0xd7f4, 0xd2e3, 0xcd1b, 0xc6ba, 0xbfff, 0xb945, 0xb2e3, 0xad1b, 0xa80a, 0xa3b1, 0x9fff, 0x9cdf, 0x9a37, 0x97f4, 0x9604, 0x9458, 0x92e3, 0x919e, 0x907f, 0x8f80, 0x8e9e, 0x8dd2, 0x8d1b, 0x8c76, 0x8bdf, 0x8b56, 0x8ad9, 0x8a65, 0x89fb, 0x8998, 0x893d, 0x88e8, 0x8899, 0x884f, 0x880a, 0x87ca, 0x878d}, {0xf6f3, 0xf6a8, 0xf659, 0xf604, 0xf5a9, 0xf548, 0xf4df, 0xf46f, 0xf3f5, 0xf372, 0xf2e3, 0xf247, 0xf19d, 0xf0e3, 0xf015, 0xef31, 0xee35, 0xed1b, 0xebdf, 0xea7b, 0xe8e8, 0xe71d, 0xe510, 0xe2b5, 0xdfff, 0xdcde, 0xd945, 0xd526, 0xd07e, 0xcb56, 0xc5c7, 0xbfff, 0xba37, 0xb4a9, 0xaf80, 0xaad8, 0xa6ba, 0xa320, 0x9fff, 0x9d49, 0x9aee, 0x98e2, 0x9717, 0x9583, 0x941f, 0x92e3, 0x91ca, 0x90cd, 0x8fea, 0x8f1c, 0x8e61, 0x8db7, 0x8d1b, 0x8c8d, 0x8c09, 0x8b90, 0x8b1f, 0x8ab7, 0x8a55, 0x89fb, 0x89a6, 0x8956, 0x890c, 0x88c6}, {0xf5b5, 0xf561, 0xf508, 0xf4a8, 0xf443, 0xf3d6, 0xf361, 0xf2e3, 0xf25c, 0xf1c9, 0xf12b, 0xf07e, 0xefc2, 0xeef5, 0xee13, 0xed1b, 0xec09, 0xead8, 0xe985, 0xe80a, 0xe661, 0xe481, 0xe264, 0xdfff, 0xdd49, 0xda37, 0xd6c2, 0xd2e3, 0xce9d, 0xc9fa, 0xc510, 0xbfff, 0xbaee, 0xb604, 0xb161, 0xad1b, 0xa93d, 0xa5c7, 0xa2b6, 0x9fff, 0x9d9b, 0x9b7d, 0x999e, 0x97f4, 0x9679, 0x9526, 0x93f6, 0x92e3, 0x91eb, 0x910a, 0x903c, 0x8f80, 0x8ed4, 0x8e35, 0x8da3, 0x8d1b, 0x8c9e, 0x8c29, 0x8bbc, 0x8b56, 0x8af7, 0x8a9e, 0x8a4a, 0x89fb}, {0xf47c, 0xf41f, 0xf3bc, 0xf353, 0xf2e3, 0xf26b, 0xf1eb, 0xf161, 0xf0cd, 0xf02d, 0xef80, 0xeec5, 0xedf9, 0xed1b, 0xec29, 0xeb1f, 0xe9fa, 0xe8b8, 0xe753, 0xe5c7, 0xe40f, 0xe224, 0xdfff, 0xdd9a, 0xdaee, 0xd7f4, 0xd4a8, 0xd109, 0xcd1b, 0xc8e8, 0xc481, 0xbfff, 0xbb7d, 0xb716, 0xb2e3, 0xaef5, 0xab56, 0xa80a, 0xa510, 0xa264, 0x9fff, 0x9ddb, 0x9bf0, 0x9a37, 0x98ab, 0x9747, 0x9604, 0x94e0, 0x93d6, 0x92e3, 0x9206, 0x913a, 0x907f, 0x8fd2, 0x8f32, 0x8e9e, 0x8e14, 0x8d93, 0x8d1b, 0x8cab, 0x8c42, 0x8bdf, 0x8b83, 0x8b2b}, {0xf348, 0xf2e3, 0xf278, 0xf205, 0xf18b, 0xf109, 0xf07e, 0xefe9, 0xef49, 0xee9d, 0xede4, 0xed1b, 0xec42, 0xeb56, 0xea55, 0xe93d, 0xe80a, 0xe6ba, 0xe548, 0xe3b1, 0xe1ef, 0xdfff, 0xdddb, 0xdb7d, 0xd8e1, 0xd604, 0xd2e3, 0xcf80, 0xcbdf, 0xc80a, 0xc40f, 0xbfff, 0xbbf0, 0xb7f4, 0xb41f, 0xb07e, 0xad1b, 0xa9fb, 0xa71d, 0xa482, 0xa224, 0x9fff, 0x9e0f, 0x9c4e, 0x9ab7, 0x9945, 0x97f4, 0x96c2, 0x95a9, 0x94a9, 0x93bd, 0x92e3, 0x921b, 0x9161, 0x90b5, 0x9015, 0x8f80, 0x8ef5, 0x8e73, 0x8df9, 0x8d87, 0x8d1b, 0x8cb6, 0x8c57}, {0xf21b, 0xf1ad, 0xf13a, 0xf0bf, 0xf03c, 0xefb0, 0xef1c, 0xee7c, 0xedd2, 0xed1b, 0xec56, 0xeb82, 0xea9d, 0xe9a6, 0xe899, 0xe775, 0xe637, 0xe4dd, 0xe362, 0xe1c4, 0xdfff, 0xde0f, 0xdbf0, 0xd99e, 0xd716, 0xd458, 0xd161, 0xce35, 0xcad8, 0xc753, 0xc3b1, 0xbfff, 0xbc4e, 0xb8ab, 0xb526, 0xb1c9, 0xae9d, 0xaba7, 0xa8e8, 0xa661, 0xa40f, 0xa1f0, 0x9fff, 0x9e3a, 0x9c9c, 0x9b22, 0x99c7, 0x9889, 0x9766, 0x9659, 0x9561, 0x947c, 0x93a8, 0x92e3, 0x922c, 0x9182, 0x90e3, 0x904e, 0x8fc3, 0x8f40, 0x8ec5, 0x8e51, 0x8de4, 0x8d7d}, {0xf0f3, 0xf07e, 0xf003, 0xef80, 0xeef5, 0xee61, 0xedc3, 0xed1b, 0xec67, 0xeba7, 0xead8, 0xe9fa, 0xe90b, 0xe80a, 0xe6f4, 0xe5c7, 0xe481, 0xe320, 0xe1a0, 0xdfff, 0xde3a, 0xdc4e, 0xda37, 0xd7f4, 0xd583, 0xd2e3, 0xd015, 0xcd1b, 0xc9fa, 0xc6ba, 0xc362, 0xbfff, 0xbc9c, 0xb945, 0xb604, 0xb2e3, 0xafe9, 0xad1b, 0xaa7b, 0xa80a, 0xa5c7, 0xa3b1, 0xa1c5, 0x9fff, 0x9e5e, 0x9cdf, 0x9b7d, 0x9a37, 0x990b, 0x97f4, 0x96f3, 0x9604, 0x9526, 0x9458, 0x9397, 0x92e3, 0x923b, 0x919e, 0x910a, 0x907f, 0x8ffc, 0x8f80, 0x8f0c, 0x8e9e}, {0xefd1, 0xef56, 0xeed4, 0xee49, 0xedb7, 0xed1b, 0xec76, 0xebc5, 0xeb09, 0xea40, 0xe969, 0xe883, 0xe78c, 0xe683, 0xe566, 0xe432, 0xe2e7, 0xe181, 0xdfff, 0xde5e, 0xdc9c, 0xdab6, 0xd8ab, 0xd679, 0xd41f, 0xd19d, 0xcef5, 0xcc29, 0xc93d, 0xc637, 0xc320, 0xbfff, 0xbcdf, 0xb9c7, 0xb6c2, 0xb3d6, 0xb10a, 0xae61, 0xabdf, 0xa985, 0xa753, 0xa548, 0xa363, 0xa1a0, 0x9fff, 0x9e7d, 0x9d18, 0x9bcc, 0x9a99, 0x997b, 0x9872, 0x977b, 0x9695, 0x95be, 0x94f5, 0x9439, 0x9389, 0x92e3, 0x9248, 0x91b5, 0x912b, 0x90a8, 0x902d, 0x8fb8}, {0xeeb7, 0xee35, 0xedac, 0xed1b, 0xec82, 0xebdf, 0xeb32, 0xea7b, 0xe9b8, 0xe8e8, 0xe80a, 0xe71d, 0xe620, 0xe510, 0xe3ed, 0xe2b5, 0xe167, 0xdfff, 0xde7d, 0xdcde, 0xdb21, 0xd945, 0xd746, 0xd526, 0xd2e3, 0xd07e, 0xcdf9, 0xcb56, 0xc899, 0xc5c7, 0xc2e7, 0xbfff, 0xbd17, 0xba37, 0xb766, 0xb4a9, 0xb205, 0xaf80, 0xad1b, 0xaad8, 0xa8b8, 0xa6ba, 0xa4dd, 0xa320, 0xa182, 0x9fff, 0x9e98, 0x9d49, 0x9c11, 0x9aee, 0x99df, 0x98e2, 0x97f4, 0x9717, 0x9647, 0x9583, 0x94cc, 0x941f, 0x937d, 0x92e3, 0x9253, 0x91ca, 0x9148, 0x90cd}, {0xeda3, 0xed1b, 0xec8c, 0xebf5, 0xeb56, 0xeaad, 0xe9fa, 0xe93d, 0xe873, 0xe79d, 0xe6ba, 0xe5c7, 0xe4c5, 0xe3b1, 0xe28a, 0xe14f, 0xdfff, 0xde98, 0xdd17, 0xdb7d, 0xd9c7, 0xd7f4, 0xd604, 0xd3f6, 0xd1c9, 0xcf80, 0xcd1b, 0xca9d, 0xc80a, 0xc566, 0xc2b6, 0xbfff, 0xbd49, 0xba99, 0xb7f4, 0xb561, 0xb2e3, 0xb07e, 0xae35, 0xac09, 0xa9fb, 0xa80a, 0xa638, 0xa482, 0xa2e7, 0xa167, 0x9fff, 0x9eaf, 0x9d74, 0x9c4e, 0x9b3a, 0x9a37, 0x9945, 0x9861, 0x978b, 0x96c2, 0x9604, 0x9551, 0x94a9, 0x9409, 0x9372, 0x92e3, 0x925c, 0x91db}, {0xec95, 0xec09, 0xeb74, 0xead8, 0xea33, 0xe985, 0xe8cd, 0xe80a, 0xe73b, 0xe661, 0xe578, 0xe481, 0xe37b, 0xe264, 0xe13b, 0xdfff, 0xdeaf, 0xdd49, 0xdbcc, 0xda37, 0xd889, 0xd6c2, 0xd4e0, 0xd2e3, 0xd0cd, 0xce9d, 0xcc56, 0xc9fa, 0xc78c, 0xc510, 0xc28a, 0xbfff, 0xbd74, 0xbaee, 0xb872, 0xb604, 0xb3a8, 0xb161, 0xaf32, 0xad1b, 0xab1f, 0xa93d, 0xa775, 0xa5c7, 0xa433, 0xa2b6, 0xa150, 0x9fff, 0x9ec3, 0x9d9b, 0x9c84, 0x9b7d, 0x9a86, 0x999e, 0x98c3, 0x97f4, 0x9732, 0x9679, 0x95cb, 0x9526, 0x948a, 0x93f6, 0x9369, 0x92e3}, {0xeb8f, 0xeafe, 0xea65, 0xe9c4, 0xe91a, 0xe867, 0xe7aa, 0xe6e3, 0xe610, 0xe531, 0xe445, 0xe34b, 0xe242, 0xe129, 0xdfff, 0xdec3, 0xdd74, 0xdc11, 0xda99, 0xd90a, 0xd765, 0xd5a9, 0xd3d6, 0xd1eb, 0xcfe9, 0xcdd2, 0xcba7, 0xc96a, 0xc71d, 0xc4c5, 0xc264, 0xbfff, 0xbd9a, 0xbb3a, 0xb8e1, 0xb695, 0xb458, 0xb22c, 0xb015, 0xae14, 0xac29, 0xaa55, 0xa899, 0xa6f4, 0xa566, 0xa3ee, 0xa28a, 0xa13b, 0x9fff, 0x9ed5, 0x9dbd, 0x9cb4, 0x9bb9, 0x9acd, 0x99ee, 0x991c, 0x9854, 0x9797, 0x96e4, 0x963b, 0x959a, 0x9501, 0x946f, 0x93e5}, {0xea90, 0xe9fa, 0xe95d, 0xe8b8, 0xe80a, 0xe753, 0xe692, 0xe5c7, 0xe4f1, 0xe40f, 0xe320, 0xe224, 0xe119, 0xdfff, 0xded5, 0xdd9a, 0xdc4e, 0xdaee, 0xd97b, 0xd7f4, 0xd659, 0xd4a8, 0xd2e3, 0xd109, 0xcf1c, 0xcd1b, 0xcb09, 0xc8e8, 0xc6ba, 0xc481, 0xc242, 0xbfff, 0xbdbc, 0xbb7d, 0xb945, 0xb716, 0xb4f5, 0xb2e3, 0xb0e3, 0xaef5, 0xad1b, 0xab56, 0xa9a6, 0xa80a, 0xa683, 0xa510, 0xa3b1, 0xa264, 0xa129, 0x9fff, 0x9ee6, 0x9ddb, 0x9cdf, 0x9bf0, 0x9b0e, 0x9a37, 0x996c, 0x98ab, 0x97f4, 0x9747, 0x96a1, 0x9604, 0x956e, 0x94e0}, {0xe998, 0xe8fe, 0xe85d, 0xe7b5, 0xe703, 0xe649, 0xe585, 0xe4b7, 0xe3dd, 0xe2f9, 0xe208, 0xe10b, 0xdfff, 0xdee5, 0xddbc, 0xdc83, 0xdb3a, 0xd9df, 0xd872, 0xd6f3, 0xd561, 0xd3bc, 0xd205, 0xd03c, 0xce61, 0xcc76, 0xca7b, 0xc873, 0xc661, 0xc445, 0xc224, 0xbfff, 0xbddb, 0xbbb9, 0xb99e, 0xb78b, 0xb583, 0xb389, 0xb19d, 0xafc3, 0xadf9, 0xac42, 0xaa9e, 0xa90c, 0xa78d, 0xa620, 0xa4c5, 0xa37b, 0xa242, 0xa119, 0x9fff, 0x9ef4, 0x9df6, 0x9d06, 0x9c21, 0x9b48, 0x9a7a, 0x99b6, 0x98fb, 0x984a, 0x97a1, 0x9700, 0x9667, 0x95d4}, {0xe8a7, 0xe80a, 0xe766, 0xe6ba, 0xe605, 0xe548, 0xe481, 0xe3b1, 0xe2d6, 0xe1ef, 0xe0fd, 0xdfff, 0xdef4, 0xdddb, 0xdcb3, 0xdb7d, 0xda37, 0xd8e1, 0xd77b, 0xd604, 0xd47c, 0xd2e3, 0xd13a, 0xcf80, 0xcdb7, 0xcbdf, 0xc9fa, 0xc80a, 0xc610, 0xc40f, 0xc208, 0xbfff, 0xbdf6, 0xbbf0, 0xb9ee, 0xb7f4, 0xb604, 0xb41f, 0xb248, 0xb07e, 0xaec5, 0xad1b, 0xab82, 0xa9fb, 0xa884, 0xa71d, 0xa5c7, 0xa482, 0xa34b, 0xa224, 0xa10b, 0x9fff, 0x9f01, 0x9e0f, 0x9d29, 0x9c4e, 0x9b7d, 0x9ab7, 0x99f9, 0x9945, 0x9899, 0x97f4, 0x9758, 0x96c2}, {0xe7bd, 0xe71d, 0xe676, 0xe5c7, 0xe510, 0xe451, 0xe388, 0xe2b5, 0xe1d9, 0xe0f2, 0xdfff, 0xdf01, 0xddf6, 0xdcde, 0xdbb9, 0xda86, 0xd945, 0xd7f4, 0xd695, 0xd526, 0xd3a8, 0xd21b, 0xd07e, 0xced4, 0xcd1b, 0xcb56, 0xc985, 0xc7aa, 0xc5c7, 0xc3de, 0xc1f0, 0xbfff, 0xbe0f, 0xbc21, 0xba37, 0xb854, 0xb679, 0xb4a9, 0xb2e3, 0xb12b, 0xaf80, 0xade4, 0xac57, 0xaad8, 0xa96a, 0xa80a, 0xa6ba, 0xa578, 0xa445, 0xa320, 0xa208, 0xa0fe, 0x9fff, 0x9f0d, 0x9e26, 0x9d49, 0x9c77, 0x9bae, 0x9aee, 0x9a37, 0x9989, 0x98e2, 0x9842, 0x97a9}, {0xe6da, 0xe637, 0xe58e, 0xe4dd, 0xe424, 0xe362, 0xe298, 0xe1c4, 0xe0e7, 0xdfff, 0xdf0d, 0xde0f, 0xdd05, 0xdbf0, 0xdacd, 0xd99e, 0xd861, 0xd716, 0xd5be, 0xd458, 0xd2e3, 0xd161, 0xcfd1, 0xce35, 0xcc8c, 0xcad8, 0xc91a, 0xc753, 0xc585, 0xc3b1, 0xc1d9, 0xbfff, 0xbe25, 0xbc4e, 0xba7a, 0xb8ab, 0xb6e4, 0xb526, 0xb372, 0xb1c9, 0xb02d, 0xae9d, 0xad1b, 0xaba7, 0xaa41, 0xa8e8, 0xa79e, 0xa661, 0xa531, 0xa40f, 0xa2f9, 0xa1f0, 0xa0f2, 0x9fff, 0x9f18, 0x9e3a, 0x9d67, 0x9c9c, 0x9bdb, 0x9b22, 0x9a71, 0x99c7, 0x9925, 0x9889}, {0xe5fd, 0xe559, 0xe4ad, 0xe3fa, 0xe340, 0xe27d, 0xe1b1, 0xe0dd, 0xdfff, 0xdf17, 0xde25, 0xdd29, 0xdc21, 0xdb0d, 0xd9ee, 0xd8c3, 0xd78b, 0xd646, 0xd4f5, 0xd397, 0xd22c, 0xd0b5, 0xcf32, 0xcda3, 0xcc09, 0xca65, 0xc8b8, 0xc703, 0xc548, 0xc388, 0xc1c4, 0xbfff, 0xbe3a, 0xbc77, 0xbab6, 0xb8fb, 0xb747, 0xb59a, 0xb3f6, 0xb25c, 0xb0cd, 0xaf4a, 0xadd2, 0xac67, 0xab09, 0xa9b8, 0xa874, 0xa73c, 0xa610, 0xa4f1, 0xa3de, 0xa2d6, 0xa1d9, 0xa0e7, 0x9fff, 0x9f21, 0x9e4d, 0x9d82, 0x9cbf, 0x9c04, 0x9b51, 0x9aa6, 0x9a01, 0x9964}, {0xe528, 0xe481, 0xe3d4, 0xe320, 0xe264, 0xe1a0, 0xe0d4, 0xdfff, 0xdf21, 0xde3a, 0xdd49, 0xdc4e, 0xdb48, 0xda37, 0xd91b, 0xd7f4, 0xd6c2, 0xd583, 0xd439, 0xd2e3, 0xd182, 0xd015, 0xce9d, 0xcd1b, 0xcb8f, 0xc9fa, 0xc85e, 0xc6ba, 0xc510, 0xc362, 0xc1b2, 0xbfff, 0xbe4d, 0xbc9c, 0xbaee, 0xb945, 0xb7a1, 0xb604, 0xb46f, 0xb2e3, 0xb161, 0xafe9, 0xae7d, 0xad1b, 0xabc5, 0xaa7b, 0xa93d, 0xa80a, 0xa6e3, 0xa5c7, 0xa4b7, 0xa3b1, 0xa2b6, 0xa1c5, 0xa0dd, 0x9fff, 0x9f2b, 0x9e5e, 0x9d9b, 0x9cdf, 0x9c2a, 0x9b7d, 0x9ad7, 0x9a37}, {0xe458, 0xe3b1, 0xe302, 0xe24d, 0xe190, 0xe0cc, 0xdfff, 0xdf2a, 0xde4d, 0xdd66, 0xdc76, 0xdb7d, 0xda7a, 0xd96c, 0xd854, 0xd731, 0xd604, 0xd4cc, 0xd389, 0xd23b, 0xd0e3, 0xcf80, 0xce13, 0xcc9e, 0xcb1f, 0xc998, 0xc80a, 0xc676, 0xc4dd, 0xc340, 0xc1a0, 0xbfff, 0xbe5e, 0xbcbf, 0xbb22, 0xb988, 0xb7f4, 0xb666, 0xb4e0, 0xb361, 0xb1eb, 0xb07e, 0xaf1c, 0xadc4, 0xac76, 0xab33, 0xa9fb, 0xa8cd, 0xa7ab, 0xa693, 0xa585, 0xa482, 0xa388, 0xa298, 0xa1b2, 0xa0d4, 0x9fff, 0x9f33, 0x9e6e, 0x9db2, 0x9cfc, 0x9c4e, 0x9ba6, 0x9b05}, {0xe390, 0xe2e7, 0xe237, 0xe181, 0xe0c4, 0xdfff, 0xdf33, 0xde5e, 0xdd81, 0xdc9c, 0xdbae, 0xdab6, 0xd9b6, 0xd8ab, 0xd797, 0xd679, 0xd551, 0xd41f, 0xd2e3, 0xd19d, 0xd04e, 0xcef5, 0xcd93, 0xcc29, 0xcab6, 0xc93d, 0xc7bd, 0xc637, 0xc4ad, 0xc320, 0xc190, 0xbfff, 0xbe6e, 0xbcdf, 0xbb51, 0xb9c7, 0xb842, 0xb6c2, 0xb548, 0xb3d6, 0xb26b, 0xb10a, 0xafb1, 0xae61, 0xad1b, 0xabdf, 0xaaad, 0xa985, 0xa867, 0xa753, 0xa649, 0xa548, 0xa451, 0xa363, 0xa27d, 0xa1a0, 0xa0cc, 0x9fff, 0x9f3b, 0x9e7d, 0x9dc7, 0x9d18, 0x9c6f, 0x9bcc}, {0xe2cd, 0xe224, 0xe173, 0xe0bd, 0xdfff, 0xdf3a, 0xde6e, 0xdd9a, 0xdcbe, 0xdbda, 0xdaee, 0xd9f9, 0xd8fb, 0xd7f4, 0xd6e4, 0xd5cb, 0xd4a8, 0xd37d, 0xd248, 0xd109, 0xcfc2, 0xce73, 0xcd1b, 0xcbbc, 0xca55, 0xc8e8, 0xc775, 0xc5fd, 0xc481, 0xc302, 0xc181, 0xbfff, 0xbe7d, 0xbcfc, 0xbb7d, 0xba01, 0xb889, 0xb716, 0xb5a9, 0xb443, 0xb2e3, 0xb18c, 0xb03c, 0xaef5, 0xadb7, 0xac82, 0xab56, 0xaa34, 0xa91a, 0xa80a, 0xa703, 0xa605, 0xa510, 0xa424, 0xa340, 0xa264, 0xa190, 0xa0c4, 0x9fff, 0x9f42, 0x9e8b, 0x9ddb, 0x9d31, 0x9c8e}, {0xe211, 0xe167, 0xe0b6, 0xdfff, 0xdf42, 0xde7d, 0xddb1, 0xdcde, 0xdc04, 0xdb21, 0xda37, 0xd945, 0xd84a, 0xd746, 0xd63b, 0xd526, 0xd409, 0xd2e3, 0xd1b5, 0xd07e, 0xcf40, 0xcdf9, 0xccab, 0xcb56, 0xc9fa, 0xc899, 0xc732, 0xc5c7, 0xc459, 0xc2e7, 0xc174, 0xbfff, 0xbe8b, 0xbd17, 0xbba6, 0xba37, 0xb8cc, 0xb766, 0xb604, 0xb4a9, 0xb353, 0xb205, 0xb0bf, 0xaf80, 0xae4a, 0xad1b, 0xabf6, 0xaad8, 0xa9c4, 0xa8b8, 0xa7b5, 0xa6ba, 0xa5c7, 0xa4dd, 0xa3fb, 0xa320, 0xa24d, 0xa182, 0xa0bd, 0x9fff, 0x9f48, 0x9e98, 0x9ded, 0x9d49}, {0xe15b, 0xe0b0, 0xdfff, 0xdf48, 0xde8b, 0xddc7, 0xdcfc, 0xdc2a, 0xdb51, 0xda70, 0xd988, 0xd898, 0xd7a1, 0xd6a1, 0xd59a, 0xd48a, 0xd372, 0xd252, 0xd12b, 0xcffb, 0xcec5, 0xcd87, 0xcc42, 0xcaf7, 0xc9a6, 0xc84f, 0xc6f4, 0xc595, 0xc432, 0xc2cd, 0xc167, 0xbfff, 0xbe98, 0xbd31, 0xbbcc, 0xba6a, 0xb90a, 0xb7af, 0xb659, 0xb508, 0xb3bd, 0xb278, 0xb13a, 0xb003, 0xaed4, 0xadac, 0xac8c, 0xab75, 0xaa65, 0xa95d, 0xa85e, 0xa766, 0xa676, 0xa58e, 0xa4ae, 0xa3d4, 0xa303, 0xa238, 0xa174, 0xa0b6, 0x9fff, 0x9f4f, 0x9ea4, 0x9dff}, {0xe0aa, 0xdfff, 0xdf4e, 0xde98, 0xdddb, 0xdd17, 0xdc4e, 0xdb7d, 0xdaa5, 0xd9c7, 0xd8e1, 0xd7f4, 0xd700, 0xd604, 0xd501, 0xd3f6, 0xd2e3, 0xd1c9, 0xd0a8, 0xcf80, 0xce51, 0xcd1b, 0xcbdf, 0xca9d, 0xc956, 0xc80a, 0xc6ba, 0xc566, 0xc40f, 0xc2b6, 0xc15b, 0xbfff, 0xbea4, 0xbd49, 0xbbf0, 0xba99, 0xb945, 0xb7f4, 0xb6a8, 0xb561, 0xb41f, 0xb2e3, 0xb1ae, 0xb07e, 0xaf56, 0xae35, 0xad1b, 0xac09, 0xaafe, 0xa9fb, 0xa8ff, 0xa80a, 0xa71d, 0xa638, 0xa559, 0xa482, 0xa3b1, 0xa2e7, 0xa224, 0xa167, 0xa0b0, 0x9fff, 0x9f54, 0x9eaf}, {0xdfff, 0xdf54, 0xdea4, 0xdded, 0xdd31, 0xdc6f, 0xdba6, 0xdad7, 0xda01, 0xd925, 0xd842, 0xd757, 0xd666, 0xd56e, 0xd46f, 0xd369, 0xd25c, 0xd148, 0xd02d, 0xcf0b, 0xcde4, 0xccb6, 0xcb82, 0xca49, 0xc90c, 0xc7c9, 0xc683, 0xc53a, 0xc3ed, 0xc29f, 0xc150, 0xbfff, 0xbeaf, 0xbd5f, 0xbc11, 0xbac5, 0xb97b, 0xb835, 0xb6f3, 0xb5b5, 0xb47c, 0xb349, 0xb21b, 0xb0f3, 0xafd2, 0xaeb7, 0xada3, 0xac96, 0xab8f, 0xaa90, 0xa998, 0xa8a7, 0xa7bd, 0xa6da, 0xa5fd, 0xa528, 0xa459, 0xa390, 0xa2ce, 0xa211, 0xa15b, 0xa0aa, 0x9fff, 0x9f5a}, {0xdf5a, 0xdeaf, 0xddff, 0xdd49, 0xdc8d, 0xdbcc, 0xdb05, 0xda37, 0xd963, 0xd889, 0xd7a9, 0xd6c2, 0xd5d4, 0xd4e0, 0xd3e5, 0xd2e3, 0xd1db, 0xd0cd, 0xcfb8, 0xce9d, 0xcd7d, 0xcc56, 0xcb2b, 0xc9fa, 0xc8c5, 0xc78c, 0xc650, 0xc510, 0xc3ce, 0xc28a, 0xc145, 0xbfff, 0xbeb9, 0xbd74, 0xbc30, 0xbaee, 0xb9af, 0xb872, 0xb739, 0xb604, 0xb4d4, 0xb3a8, 0xb282, 0xb161, 0xb046, 0xaf32, 0xae23, 0xad1b, 0xac1a, 0xab1f, 0xaa2b, 0xa93d, 0xa856, 0xa775, 0xa69b, 0xa5c7, 0xa4fa, 0xa433, 0xa371, 0xa2b6, 0xa200, 0xa150, 0xa0a5, 0x9fff} }; uint16_t atan2(uint8_t x, uint8_t y){ return atan_table[(x>>2) & 0x3F][(y>>2) & 0x3F]; } */ /* uint8_t atan2(uint8_t x, uint8_t y){ return atan_table[(x>>3) & 0x1F][(y>>3) & 0x1F]; } */ Спасибо, буду иметь ввиду Изменено 26 января, 2021 пользователем Zalman_ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zalman_ 0 26 января, 2021 Опубликовано 26 января, 2021 · Жалоба 2 часа назад, Мур сказал: Посмотрели? Что не понравилось?... Пока что просто глазом пробежался Даже не запускал В ближайшее время отпишусь, как запущу Спасибо за помощь и предоставленные исходники кода и модели Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zalman_ 0 28 января, 2021 Опубликовано 28 января, 2021 · Жалоба 26.01.2021 в 13:02, Мур сказал: Даю с бенчем... Критикуйте!!! Вроде шустренко.... Извините, тут в VHDL ((( ATAN2.ZIP 17 kB · 7 скачиваний Доброго времени суток Добрался до того, что вы скинули В архиве два файла atan2.vhd Trigonometric_Function1.vhd 1) Открыв оба файла в описании atan2.vhd написано, что "atan2 не корректен по предварительной подготовке входных данных" и лучше брать Trigonometric_Function1.vhd. Немного поковырявшись понял, что видимо генерируемый код из Simulink в файле atan2.vhd криво данные подтягивает, поэтому Вы делали свои файлы с входными данным *.dat и писали тестбенч, который все это оптимально загружает. Верна ли моя догадка? P.S. В самом низу писал про enport. Связано ли "atan2 не корректен по предварительной подготовке входных данных" с портом enport? Исходя из этого и просмотра кода, файл atan2.vhd является посредником перед основным модулем Trigonometric_Function1.vhd, который просто подготавливает данные для отправки в Trigonometric_Function1.vhd. Правильно ли я понимаю, что atan2.vhd не является необходимым и им можно пренебречь, тем самым использовать в качестве основного ядра atan2 файл Trigonometric_Function1.vhd ? 2) Запустил параллельно модель и решил посмотреть, что сделает Simulink в плане генерации кода Он сгенерил такие же два файла, то есть понял откуда ноги растут Попытался смоделировать Ваш код ModelSim сначала ругался, однако, для корректной компиляции нужно было скомпилировать два файла тестбенча, а файлы atan2.vhd и Trigonometric_Function1.vhd поместить в папку, которую создает ModelSim, то есть work. Поместил, компиляция прошла успешно, однако, при попытке симуляции вылезла ошибка следующего вида "Error: (vsim-3173) Entity '*ATAN2/work.atan2' has no architecture." Как ее можно исправить? В VHDL не силен, лишь могу прочитать и то довольно примерно. Почему не смоделировать код на Verilog и пользоваться? - Потому что как понял, в Вашем коде задержка составляет 3 такта, вместо 14 тактов, которые есть в коде, который создает Simulink. 3) И есть немного вопросов по модели и коду одновременно. Порт enport. Какую функцию он выполняет? В модели он выполняет функцию тактирующего сигнала для задержек, а вот что делает в коде? Исходя из кода он является разрешающим и судя по коду на порт clk и enport должен приходить один и тот же тактовый сигнал, так как если enport будет тактироваться иначе, то передача данных в Trigonometric_Function1.vhd будет некорректной Правильно ли понимаю данный момент? Заранее спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 29 января, 2021 Опубликовано 29 января, 2021 · Жалоба 11 hours ago, Zalman_ said: Доброго времени суток Заранее спасибо! 1. Все из Матлаба. Я только косил избыточность.. Воевал с МоделСим, у которого свои понятия о приемлемости... atan2.vhd не является необходимым и им можно пренебречь!!! Верно! 2. Для разгона дизайна внесено дополнительно 11 регистров, чтобы поднять тактовую частоту.(В вашем Verilog исходнике следует сделать аналогично). У меня этот набор с бенчем должен симулироваться без проблем. 3. enport нужен был для обозначения момента пуска данных на вход. Тут смело можно брать как хочется! Этот набор исходников интересен для просмотра результатов симуляции. Не более того! Можно видеть соответствие симуляции в Simulik и в ModelSim во всем диапазоне данных. 4. Посмотрите в RTL вьювере где стоят регистры и сделайте аналогично в версии Verilog.(Подсказка) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zalman_ 0 29 января, 2021 Опубликовано 29 января, 2021 · Жалоба 1 час назад, Мур сказал: 1. Все из Матлаба. Я только косил избыточность.. Воевал с МоделСим, у которого свои понятия о приемлемости... atan2.vhd не является необходимым и им можно пренебречь!!! Верно! 2. Для разгона дизайна внесено дополнительно 11 регистров, чтобы поднять тактовую частоту.(В вашем Verilog исходнике следует сделать аналогично). У меня этот набор с бенчем должен симулироваться без проблем. 3. enport нужен был для обозначения момента пуска данных на вход. Тут смело можно брать как хочется! Этот набор исходников интересен для просмотра результатов симуляции. Не более того! Можно видеть соответствие симуляции в Simulik и в ModelSim во всем диапазоне данных. 4. Посмотрите в RTL вьювере где стоят регистры и сделайте аналогично в версии Verilog.(Подсказка) Спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
krux 8 23 февраля, 2021 Опубликовано 23 февраля, 2021 · Жалоба реализация будет зависеть от задачи. скорость, латентность, необходимость поточной непрерывной обработки и т.д. а так из самых производительных на данный момент - тригонометрия реализуется либо на (если нужна универсальность) CORDIC, либо на многочленах Чебышева. главное знать какую точность необходимо обеспечивать на выходе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zalman_ 0 11 марта, 2021 Опубликовано 11 марта, 2021 (изменено) · Жалоба 29.01.2021 в 08:53, Мур сказал: 1. Все из Матлаба. Я только косил избыточность.. Воевал с МоделСим, у которого свои понятия о приемлемости... atan2.vhd не является необходимым и им можно пренебречь!!! Верно! 2. Для разгона дизайна внесено дополнительно 11 регистров, чтобы поднять тактовую частоту.(В вашем Verilog исходнике следует сделать аналогично). У меня этот набор с бенчем должен симулироваться без проблем. 3. enport нужен был для обозначения момента пуска данных на вход. Тут смело можно брать как хочется! Этот набор исходников интересен для просмотра результатов симуляции. Не более того! Можно видеть соответствие симуляции в Simulik и в ModelSim во всем диапазоне данных. 4. Посмотрите в RTL вьювере где стоят регистры и сделайте аналогично в версии Verilog.(Подсказка) Добрый день! Добрался до atan2 Возник вопрос В модели, которую Вы кидали ранее, тип данных на входе atan2 - int16. С ним все работает прекрасно При попытке поменять его на int32, int64, fixdt выдает следующую ошибку "Data type mismatch. 'Input Port 1' of 'untitled/atan2' expects a signal of data type 'int16'. However, it is driven by a signal of data type 'int32'." Как я понял atan2 ждет данные в формате int16 и больше никакой тип данных не принимает. Это странно, так как блок Trigonometric Function принимает формат данных выше int16, что сказано в документации. Встречались ли вы с данной ошибкой? Если да, то как удалось ее решить? UPD: Решение На будущее Есть блоки Data Type Conversion, в них обычно задается тот тип данных, который нужен на их выходе и обычно все работает и заканчивается на них, но в этой модели есть фокус Фокус заключается в входах и выходах подсистемы atan2, то есть если обычно (все время до этого на моей практике) входы и выходы подсистемы автоматически принимали тип данных от предыдущих блоков, то здесь тип данных на входах и выходах был четко задан, поэтому и вылезала такая ошибка. Следовательно, решения два: 1) либо поставить на входах и выходах в Signal Attributes -> Data Type -> "Inherit: Auto"; - на мой взгляд самый универсальный и оптимальный вариант 2) либо в случае жесткой необходимости "прописывать" тип данных как в Data Type Conversion, так и в входах и выходах подсистемы Atan2 Изменено 11 марта, 2021 пользователем Zalman_ Нашел решение Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 11 марта, 2021 Опубликовано 11 марта, 2021 · Жалоба 6 hours ago, Zalman_ said: Добрый день! Добрался до atan2 Конечно встречался!.. И тут надо много потеть, пока станет понятно как корректно менять разрядность произвольным образом. Я дрессировал наших специально обученных математиков и теперь пол года как тема ушла в историю. Максимум 32 разряда у них. Сунуться к ним сейчас не могу в связи с сильной занятостью... Уж извините! Да и рутина текущая форсировать узкие места после MatLab требует внимания... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
petrov 6 11 марта, 2021 Опубликовано 11 марта, 2021 · Жалоба Есть же CORDIC в симулинке. https://www.mathworks.com/help/dsp/ref/complextomagnitudeanglehdloptimized.html Вычисляет от любой входной разрядности типа fixdt(). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zalman_ 0 20 марта, 2021 Опубликовано 20 марта, 2021 · Жалоба 11.03.2021 в 19:31, petrov сказал: Есть же CORDIC в симулинке. https://www.mathworks.com/help/dsp/ref/complextomagnitudeanglehdloptimized.html Вычисляет от любой входной разрядности типа fixdt(). Да, спасибо, я его уже чуть позже нашел Тоже хороший вариант) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться