diff --git a/axl_cos_table.inc b/axl_cos_table.inc new file mode 100644 index 0000000..d387c84 --- /dev/null +++ b/axl_cos_table.inc @@ -0,0 +1,4102 @@ +//cos[4096] - fixed point 16.16 +//Generated by gen_math_tables.py + +static inline f16_16 axl_cos_table[4096] = +{ + 65536, + 65536, + 65536, + 65535, + 65535, + 65534, + 65533, + 65532, + 65531, + 65530, + 65528, + 65527, + 65525, + 65523, + 65521, + 65519, + 65516, + 65514, + 65511, + 65508, + 65505, + 65502, + 65499, + 65495, + 65492, + 65488, + 65484, + 65480, + 65476, + 65471, + 65467, + 65462, + 65457, + 65452, + 65447, + 65442, + 65436, + 65430, + 65425, + 65419, + 65413, + 65406, + 65400, + 65393, + 65387, + 65380, + 65373, + 65366, + 65358, + 65351, + 65343, + 65335, + 65328, + 65319, + 65311, + 65303, + 65294, + 65286, + 65277, + 65268, + 65258, + 65249, + 65240, + 65230, + 65220, + 65210, + 65200, + 65190, + 65180, + 65169, + 65158, + 65148, + 65136, + 65125, + 65114, + 65103, + 65091, + 65079, + 65067, + 65055, + 65043, + 65031, + 65018, + 65005, + 64992, + 64979, + 64966, + 64953, + 64940, + 64926, + 64912, + 64898, + 64884, + 64870, + 64856, + 64841, + 64826, + 64811, + 64797, + 64781, + 64766, + 64751, + 64735, + 64719, + 64703, + 64687, + 64671, + 64655, + 64638, + 64622, + 64605, + 64588, + 64571, + 64553, + 64536, + 64518, + 64501, + 64483, + 64465, + 64447, + 64428, + 64410, + 64391, + 64372, + 64353, + 64334, + 64315, + 64296, + 64276, + 64256, + 64237, + 64217, + 64196, + 64176, + 64156, + 64135, + 64114, + 64093, + 64072, + 64051, + 64030, + 64008, + 63987, + 63965, + 63943, + 63921, + 63898, + 63876, + 63853, + 63831, + 63808, + 63785, + 63762, + 63738, + 63715, + 63691, + 63668, + 63644, + 63620, + 63595, + 63571, + 63547, + 63522, + 63497, + 63472, + 63447, + 63422, + 63396, + 63371, + 63345, + 63319, + 63293, + 63267, + 63241, + 63214, + 63188, + 63161, + 63134, + 63107, + 63080, + 63052, + 63025, + 62997, + 62969, + 62942, + 62913, + 62885, + 62857, + 62828, + 62800, + 62771, + 62742, + 62713, + 62683, + 62654, + 62624, + 62595, + 62565, + 62535, + 62505, + 62474, + 62444, + 62413, + 62383, + 62352, + 62321, + 62289, + 62258, + 62227, + 62195, + 62163, + 62131, + 62099, + 62067, + 62035, + 62002, + 61970, + 61937, + 61904, + 61871, + 61838, + 61804, + 61771, + 61737, + 61703, + 61669, + 61635, + 61601, + 61566, + 61532, + 61497, + 61462, + 61427, + 61392, + 61357, + 61322, + 61286, + 61250, + 61215, + 61179, + 61142, + 61106, + 61070, + 61033, + 60997, + 60960, + 60923, + 60886, + 60848, + 60811, + 60773, + 60736, + 60698, + 60660, + 60622, + 60583, + 60545, + 60506, + 60468, + 60429, + 60390, + 60351, + 60311, + 60272, + 60232, + 60193, + 60153, + 60113, + 60073, + 60033, + 59992, + 59952, + 59911, + 59870, + 59829, + 59788, + 59747, + 59705, + 59664, + 59622, + 59580, + 59538, + 59496, + 59454, + 59412, + 59369, + 59327, + 59284, + 59241, + 59198, + 59155, + 59111, + 59068, + 59024, + 58980, + 58936, + 58892, + 58848, + 58804, + 58759, + 58715, + 58670, + 58625, + 58580, + 58535, + 58490, + 58444, + 58399, + 58353, + 58307, + 58261, + 58215, + 58169, + 58122, + 58076, + 58029, + 57982, + 57936, + 57888, + 57841, + 57794, + 57746, + 57699, + 57651, + 57603, + 57555, + 57507, + 57459, + 57410, + 57362, + 57313, + 57264, + 57215, + 57166, + 57117, + 57067, + 57018, + 56968, + 56919, + 56869, + 56819, + 56768, + 56718, + 56668, + 56617, + 56566, + 56516, + 56465, + 56413, + 56362, + 56311, + 56259, + 56208, + 56156, + 56104, + 56052, + 56000, + 55947, + 55895, + 55842, + 55790, + 55737, + 55684, + 55631, + 55578, + 55524, + 55471, + 55417, + 55363, + 55310, + 55256, + 55201, + 55147, + 55093, + 55038, + 54984, + 54929, + 54874, + 54819, + 54764, + 54708, + 54653, + 54597, + 54542, + 54486, + 54430, + 54374, + 54318, + 54261, + 54205, + 54148, + 54092, + 54035, + 53978, + 53921, + 53864, + 53806, + 53749, + 53691, + 53633, + 53576, + 53518, + 53460, + 53401, + 53343, + 53284, + 53226, + 53167, + 53108, + 53049, + 52990, + 52931, + 52872, + 52812, + 52753, + 52693, + 52633, + 52573, + 52513, + 52453, + 52392, + 52332, + 52271, + 52211, + 52150, + 52089, + 52028, + 51966, + 51905, + 51844, + 51782, + 51720, + 51659, + 51597, + 51535, + 51472, + 51410, + 51348, + 51285, + 51222, + 51160, + 51097, + 51034, + 50971, + 50907, + 50844, + 50780, + 50717, + 50653, + 50589, + 50525, + 50461, + 50397, + 50333, + 50268, + 50203, + 50139, + 50074, + 50009, + 49944, + 49879, + 49814, + 49748, + 49683, + 49617, + 49551, + 49485, + 49419, + 49353, + 49287, + 49221, + 49154, + 49088, + 49021, + 48954, + 48887, + 48820, + 48753, + 48686, + 48619, + 48551, + 48483, + 48416, + 48348, + 48280, + 48212, + 48144, + 48075, + 48007, + 47939, + 47870, + 47801, + 47732, + 47663, + 47594, + 47525, + 47456, + 47386, + 47317, + 47247, + 47178, + 47108, + 47038, + 46968, + 46897, + 46827, + 46757, + 46686, + 46616, + 46545, + 46474, + 46403, + 46332, + 46261, + 46190, + 46118, + 46047, + 45975, + 45903, + 45832, + 45760, + 45688, + 45615, + 45543, + 45471, + 45398, + 45326, + 45253, + 45180, + 45107, + 45034, + 44961, + 44888, + 44815, + 44741, + 44668, + 44594, + 44520, + 44447, + 44373, + 44299, + 44224, + 44150, + 44076, + 44001, + 43927, + 43852, + 43777, + 43702, + 43627, + 43552, + 43477, + 43402, + 43327, + 43251, + 43175, + 43100, + 43024, + 42948, + 42872, + 42796, + 42720, + 42643, + 42567, + 42490, + 42414, + 42337, + 42260, + 42183, + 42106, + 42029, + 41952, + 41875, + 41797, + 41720, + 41642, + 41565, + 41487, + 41409, + 41331, + 41253, + 41175, + 41096, + 41018, + 40940, + 40861, + 40782, + 40704, + 40625, + 40546, + 40467, + 40388, + 40308, + 40229, + 40150, + 40070, + 39990, + 39911, + 39831, + 39751, + 39671, + 39591, + 39511, + 39431, + 39350, + 39270, + 39189, + 39108, + 39028, + 38947, + 38866, + 38785, + 38704, + 38623, + 38541, + 38460, + 38379, + 38297, + 38215, + 38134, + 38052, + 37970, + 37888, + 37806, + 37724, + 37641, + 37559, + 37477, + 37394, + 37311, + 37229, + 37146, + 37063, + 36980, + 36897, + 36814, + 36731, + 36647, + 36564, + 36480, + 36397, + 36313, + 36229, + 36146, + 36062, + 35978, + 35894, + 35809, + 35725, + 35641, + 35556, + 35472, + 35387, + 35303, + 35218, + 35133, + 35048, + 34963, + 34878, + 34793, + 34707, + 34622, + 34537, + 34451, + 34366, + 34280, + 34194, + 34108, + 34022, + 33937, + 33850, + 33764, + 33678, + 33592, + 33505, + 33419, + 33332, + 33246, + 33159, + 33072, + 32985, + 32899, + 32812, + 32724, + 32637, + 32550, + 32463, + 32375, + 32288, + 32200, + 32113, + 32025, + 31937, + 31849, + 31761, + 31673, + 31585, + 31497, + 31409, + 31321, + 31232, + 31144, + 31055, + 30967, + 30878, + 30789, + 30701, + 30612, + 30523, + 30434, + 30345, + 30256, + 30166, + 30077, + 29988, + 29898, + 29809, + 29719, + 29629, + 29540, + 29450, + 29360, + 29270, + 29180, + 29090, + 29000, + 28910, + 28819, + 28729, + 28639, + 28548, + 28458, + 28367, + 28276, + 28186, + 28095, + 28004, + 27913, + 27822, + 27731, + 27640, + 27549, + 27457, + 27366, + 27275, + 27183, + 27092, + 27000, + 26908, + 26817, + 26725, + 26633, + 26541, + 26449, + 26357, + 26265, + 26173, + 26081, + 25988, + 25896, + 25804, + 25711, + 25619, + 25526, + 25433, + 25341, + 25248, + 25155, + 25062, + 24969, + 24876, + 24783, + 24690, + 24597, + 24504, + 24410, + 24317, + 24224, + 24130, + 24037, + 23943, + 23849, + 23756, + 23662, + 23568, + 23474, + 23380, + 23286, + 23192, + 23098, + 23004, + 22910, + 22816, + 22721, + 22627, + 22533, + 22438, + 22344, + 22249, + 22155, + 22060, + 21965, + 21870, + 21776, + 21681, + 21586, + 21491, + 21396, + 21301, + 21206, + 21110, + 21015, + 20920, + 20825, + 20729, + 20634, + 20538, + 20443, + 20347, + 20252, + 20156, + 20060, + 19965, + 19869, + 19773, + 19677, + 19581, + 19485, + 19389, + 19293, + 19197, + 19101, + 19005, + 18908, + 18812, + 18716, + 18619, + 18523, + 18426, + 18330, + 18233, + 18137, + 18040, + 17943, + 17847, + 17750, + 17653, + 17556, + 17459, + 17362, + 17265, + 17168, + 17071, + 16974, + 16877, + 16780, + 16683, + 16585, + 16488, + 16391, + 16293, + 16196, + 16098, + 16001, + 15903, + 15806, + 15708, + 15611, + 15513, + 15415, + 15317, + 15220, + 15122, + 15024, + 14926, + 14828, + 14730, + 14632, + 14534, + 14436, + 14338, + 14240, + 14142, + 14043, + 13945, + 13847, + 13749, + 13650, + 13552, + 13454, + 13355, + 13257, + 13158, + 13060, + 12961, + 12862, + 12764, + 12665, + 12567, + 12468, + 12369, + 12270, + 12172, + 12073, + 11974, + 11875, + 11776, + 11677, + 11578, + 11479, + 11380, + 11281, + 11182, + 11083, + 10984, + 10885, + 10786, + 10686, + 10587, + 10488, + 10389, + 10289, + 10190, + 10091, + 9991, + 9892, + 9792, + 9693, + 9594, + 9494, + 9395, + 9295, + 9196, + 9096, + 8996, + 8897, + 8797, + 8697, + 8598, + 8498, + 8398, + 8299, + 8199, + 8099, + 7999, + 7899, + 7800, + 7700, + 7600, + 7500, + 7400, + 7300, + 7200, + 7100, + 7000, + 6900, + 6800, + 6700, + 6600, + 6500, + 6400, + 6300, + 6200, + 6100, + 6000, + 5900, + 5799, + 5699, + 5599, + 5499, + 5399, + 5299, + 5198, + 5098, + 4998, + 4898, + 4797, + 4697, + 4597, + 4496, + 4396, + 4296, + 4195, + 4095, + 3995, + 3894, + 3794, + 3693, + 3593, + 3493, + 3392, + 3292, + 3191, + 3091, + 2990, + 2890, + 2790, + 2689, + 2589, + 2488, + 2388, + 2287, + 2187, + 2086, + 1986, + 1885, + 1785, + 1684, + 1584, + 1483, + 1383, + 1282, + 1181, + 1081, + 980, + 880, + 779, + 679, + 578, + 478, + 377, + 277, + 176, + 75, + -25, + -126, + -226, + -327, + -427, + -528, + -628, + -729, + -830, + -930, + -1031, + -1131, + -1232, + -1332, + -1433, + -1533, + -1634, + -1734, + -1835, + -1935, + -2036, + -2136, + -2237, + -2337, + -2438, + -2538, + -2639, + -2739, + -2840, + -2940, + -3041, + -3141, + -3242, + -3342, + -3442, + -3543, + -3643, + -3744, + -3844, + -3944, + -4045, + -4145, + -4245, + -4346, + -4446, + -4546, + -4647, + -4747, + -4847, + -4948, + -5048, + -5148, + -5248, + -5349, + -5449, + -5549, + -5649, + -5749, + -5850, + -5950, + -6050, + -6150, + -6250, + -6350, + -6450, + -6550, + -6650, + -6750, + -6850, + -6950, + -7050, + -7150, + -7250, + -7350, + -7450, + -7550, + -7650, + -7750, + -7850, + -7949, + -8049, + -8149, + -8249, + -8349, + -8448, + -8548, + -8648, + -8747, + -8847, + -8947, + -9046, + -9146, + -9245, + -9345, + -9444, + -9544, + -9643, + -9743, + -9842, + -9942, + -10041, + -10140, + -10240, + -10339, + -10438, + -10538, + -10637, + -10736, + -10835, + -10934, + -11033, + -11133, + -11232, + -11331, + -11430, + -11529, + -11628, + -11727, + -11826, + -11924, + -12023, + -12122, + -12221, + -12320, + -12418, + -12517, + -12616, + -12715, + -12813, + -12912, + -13010, + -13109, + -13207, + -13306, + -13404, + -13503, + -13601, + -13699, + -13798, + -13896, + -13994, + -14093, + -14191, + -14289, + -14387, + -14485, + -14583, + -14681, + -14779, + -14877, + -14975, + -15073, + -15171, + -15269, + -15366, + -15464, + -15562, + -15659, + -15757, + -15855, + -15952, + -16050, + -16147, + -16245, + -16342, + -16439, + -16537, + -16634, + -16731, + -16828, + -16926, + -17023, + -17120, + -17217, + -17314, + -17411, + -17508, + -17605, + -17701, + -17798, + -17895, + -17992, + -18088, + -18185, + -18282, + -18378, + -18475, + -18571, + -18667, + -18764, + -18860, + -18956, + -19053, + -19149, + -19245, + -19341, + -19437, + -19533, + -19629, + -19725, + -19821, + -19917, + -20013, + -20108, + -20204, + -20300, + -20395, + -20491, + -20586, + -20682, + -20777, + -20872, + -20968, + -21063, + -21158, + -21253, + -21348, + -21443, + -21538, + -21633, + -21728, + -21823, + -21918, + -22013, + -22107, + -22202, + -22296, + -22391, + -22485, + -22580, + -22674, + -22769, + -22863, + -22957, + -23051, + -23145, + -23239, + -23333, + -23427, + -23521, + -23615, + -23709, + -23803, + -23896, + -23990, + -24083, + -24177, + -24270, + -24364, + -24457, + -24550, + -24643, + -24737, + -24830, + -24923, + -25016, + -25109, + -25201, + -25294, + -25387, + -25480, + -25572, + -25665, + -25757, + -25850, + -25942, + -26034, + -26127, + -26219, + -26311, + -26403, + -26495, + -26587, + -26679, + -26771, + -26862, + -26954, + -27046, + -27137, + -27229, + -27320, + -27412, + -27503, + -27594, + -27685, + -27776, + -27867, + -27958, + -28049, + -28140, + -28231, + -28322, + -28412, + -28503, + -28593, + -28684, + -28774, + -28865, + -28955, + -29045, + -29135, + -29225, + -29315, + -29405, + -29495, + -29585, + -29674, + -29764, + -29853, + -29943, + -30032, + -30122, + -30211, + -30300, + -30389, + -30478, + -30567, + -30656, + -30745, + -30834, + -30923, + -31011, + -31100, + -31188, + -31277, + -31365, + -31453, + -31541, + -31629, + -31718, + -31805, + -31893, + -31981, + -32069, + -32157, + -32244, + -32332, + -32419, + -32506, + -32594, + -32681, + -32768, + -32855, + -32942, + -33029, + -33116, + -33202, + -33289, + -33376, + -33462, + -33549, + -33635, + -33721, + -33807, + -33893, + -33980, + -34065, + -34151, + -34237, + -34323, + -34408, + -34494, + -34579, + -34665, + -34750, + -34835, + -34920, + -35006, + -35090, + -35175, + -35260, + -35345, + -35430, + -35514, + -35599, + -35683, + -35767, + -35851, + -35936, + -36020, + -36104, + -36187, + -36271, + -36355, + -36439, + -36522, + -36606, + -36689, + -36772, + -36855, + -36939, + -37022, + -37104, + -37187, + -37270, + -37353, + -37435, + -37518, + -37600, + -37683, + -37765, + -37847, + -37929, + -38011, + -38093, + -38175, + -38256, + -38338, + -38419, + -38501, + -38582, + -38663, + -38744, + -38826, + -38906, + -38987, + -39068, + -39149, + -39229, + -39310, + -39390, + -39471, + -39551, + -39631, + -39711, + -39791, + -39871, + -39951, + -40030, + -40110, + -40189, + -40269, + -40348, + -40427, + -40506, + -40585, + -40664, + -40743, + -40822, + -40900, + -40979, + -41057, + -41136, + -41214, + -41292, + -41370, + -41448, + -41526, + -41604, + -41681, + -41759, + -41836, + -41914, + -41991, + -42068, + -42145, + -42222, + -42299, + -42376, + -42452, + -42529, + -42605, + -42682, + -42758, + -42834, + -42910, + -42986, + -43062, + -43138, + -43213, + -43289, + -43364, + -43440, + -43515, + -43590, + -43665, + -43740, + -43815, + -43889, + -43964, + -44039, + -44113, + -44187, + -44262, + -44336, + -44410, + -44484, + -44557, + -44631, + -44705, + -44778, + -44851, + -44925, + -44998, + -45071, + -45144, + -45217, + -45289, + -45362, + -45435, + -45507, + -45579, + -45652, + -45724, + -45796, + -45868, + -45939, + -46011, + -46082, + -46154, + -46225, + -46296, + -46368, + -46439, + -46510, + -46580, + -46651, + -46722, + -46792, + -46862, + -46933, + -47003, + -47073, + -47143, + -47212, + -47282, + -47352, + -47421, + -47491, + -47560, + -47629, + -47698, + -47767, + -47836, + -47904, + -47973, + -48041, + -48110, + -48178, + -48246, + -48314, + -48382, + -48450, + -48517, + -48585, + -48652, + -48720, + -48787, + -48854, + -48921, + -48988, + -49054, + -49121, + -49188, + -49254, + -49320, + -49386, + -49452, + -49518, + -49584, + -49650, + -49715, + -49781, + -49846, + -49911, + -49977, + -50042, + -50106, + -50171, + -50236, + -50300, + -50365, + -50429, + -50493, + -50557, + -50621, + -50685, + -50749, + -50812, + -50876, + -50939, + -51002, + -51065, + -51128, + -51191, + -51254, + -51316, + -51379, + -51441, + -51503, + -51566, + -51628, + -51689, + -51751, + -51813, + -51874, + -51936, + -51997, + -52058, + -52119, + -52180, + -52241, + -52302, + -52362, + -52422, + -52483, + -52543, + -52603, + -52663, + -52723, + -52782, + -52842, + -52901, + -52961, + -53020, + -53079, + -53138, + -53196, + -53255, + -53314, + -53372, + -53430, + -53489, + -53547, + -53605, + -53662, + -53720, + -53778, + -53835, + -53892, + -53949, + -54006, + -54063, + -54120, + -54177, + -54233, + -54290, + -54346, + -54402, + -54458, + -54514, + -54570, + -54625, + -54681, + -54736, + -54791, + -54846, + -54901, + -54956, + -55011, + -55066, + -55120, + -55174, + -55229, + -55283, + -55337, + -55390, + -55444, + -55498, + -55551, + -55604, + -55657, + -55710, + -55763, + -55816, + -55869, + -55921, + -55974, + -56026, + -56078, + -56130, + -56182, + -56233, + -56285, + -56337, + -56388, + -56439, + -56490, + -56541, + -56592, + -56642, + -56693, + -56743, + -56794, + -56844, + -56894, + -56943, + -56993, + -57043, + -57092, + -57141, + -57191, + -57240, + -57289, + -57337, + -57386, + -57434, + -57483, + -57531, + -57579, + -57627, + -57675, + -57723, + -57770, + -57818, + -57865, + -57912, + -57959, + -58006, + -58053, + -58099, + -58146, + -58192, + -58238, + -58284, + -58330, + -58376, + -58422, + -58467, + -58512, + -58558, + -58603, + -58648, + -58692, + -58737, + -58782, + -58826, + -58870, + -58914, + -58958, + -59002, + -59046, + -59089, + -59133, + -59176, + -59219, + -59262, + -59305, + -59348, + -59390, + -59433, + -59475, + -59517, + -59559, + -59601, + -59643, + -59685, + -59726, + -59767, + -59809, + -59850, + -59891, + -59931, + -59972, + -60012, + -60053, + -60093, + -60133, + -60173, + -60213, + -60252, + -60292, + -60331, + -60370, + -60409, + -60448, + -60487, + -60526, + -60564, + -60603, + -60641, + -60679, + -60717, + -60754, + -60792, + -60830, + -60867, + -60904, + -60941, + -60978, + -61015, + -61052, + -61088, + -61124, + -61161, + -61197, + -61233, + -61268, + -61304, + -61339, + -61375, + -61410, + -61445, + -61480, + -61515, + -61549, + -61584, + -61618, + -61652, + -61686, + -61720, + -61754, + -61787, + -61821, + -61854, + -61887, + -61920, + -61953, + -61986, + -62019, + -62051, + -62083, + -62115, + -62147, + -62179, + -62211, + -62242, + -62274, + -62305, + -62336, + -62367, + -62398, + -62429, + -62459, + -62490, + -62520, + -62550, + -62580, + -62610, + -62639, + -62669, + -62698, + -62727, + -62756, + -62785, + -62814, + -62843, + -62871, + -62899, + -62927, + -62956, + -62983, + -63011, + -63039, + -63066, + -63093, + -63120, + -63147, + -63174, + -63201, + -63227, + -63254, + -63280, + -63306, + -63332, + -63358, + -63384, + -63409, + -63434, + -63460, + -63485, + -63509, + -63534, + -63559, + -63583, + -63608, + -63632, + -63656, + -63679, + -63703, + -63727, + -63750, + -63773, + -63796, + -63819, + -63842, + -63865, + -63887, + -63910, + -63932, + -63954, + -63976, + -63997, + -64019, + -64040, + -64062, + -64083, + -64104, + -64125, + -64145, + -64166, + -64186, + -64207, + -64227, + -64247, + -64266, + -64286, + -64305, + -64325, + -64344, + -64363, + -64382, + -64400, + -64419, + -64437, + -64456, + -64474, + -64492, + -64510, + -64527, + -64545, + -64562, + -64579, + -64596, + -64613, + -64630, + -64647, + -64663, + -64679, + -64695, + -64711, + -64727, + -64743, + -64758, + -64774, + -64789, + -64804, + -64819, + -64834, + -64848, + -64863, + -64877, + -64891, + -64905, + -64919, + -64933, + -64946, + -64960, + -64973, + -64986, + -64999, + -65012, + -65024, + -65037, + -65049, + -65061, + -65073, + -65085, + -65097, + -65108, + -65120, + -65131, + -65142, + -65153, + -65164, + -65174, + -65185, + -65195, + -65205, + -65215, + -65225, + -65235, + -65244, + -65254, + -65263, + -65272, + -65281, + -65290, + -65299, + -65307, + -65315, + -65323, + -65332, + -65339, + -65347, + -65355, + -65362, + -65369, + -65376, + -65383, + -65390, + -65397, + -65403, + -65410, + -65416, + -65422, + -65428, + -65433, + -65439, + -65444, + -65449, + -65455, + -65459, + -65464, + -65469, + -65473, + -65478, + -65482, + -65486, + -65490, + -65493, + -65497, + -65500, + -65504, + -65507, + -65510, + -65512, + -65515, + -65517, + -65520, + -65522, + -65524, + -65526, + -65527, + -65529, + -65530, + -65532, + -65533, + -65534, + -65534, + -65535, + -65536, + -65536, + -65536, + -65536, + -65536, + -65536, + -65535, + -65534, + -65534, + -65533, + -65532, + -65530, + -65529, + -65527, + -65526, + -65524, + -65522, + -65520, + -65517, + -65515, + -65512, + -65510, + -65507, + -65504, + -65500, + -65497, + -65493, + -65490, + -65486, + -65482, + -65478, + -65473, + -65469, + -65464, + -65459, + -65455, + -65449, + -65444, + -65439, + -65433, + -65428, + -65422, + -65416, + -65410, + -65403, + -65397, + -65390, + -65383, + -65376, + -65369, + -65362, + -65355, + -65347, + -65339, + -65332, + -65323, + -65315, + -65307, + -65299, + -65290, + -65281, + -65272, + -65263, + -65254, + -65244, + -65235, + -65225, + -65215, + -65205, + -65195, + -65185, + -65174, + -65164, + -65153, + -65142, + -65131, + -65120, + -65108, + -65097, + -65085, + -65073, + -65061, + -65049, + -65037, + -65024, + -65012, + -64999, + -64986, + -64973, + -64960, + -64946, + -64933, + -64919, + -64905, + -64891, + -64877, + -64863, + -64848, + -64834, + -64819, + -64804, + -64789, + -64774, + -64758, + -64743, + -64727, + -64711, + -64695, + -64679, + -64663, + -64647, + -64630, + -64613, + -64596, + -64579, + -64562, + -64545, + -64527, + -64510, + -64492, + -64474, + -64456, + -64437, + -64419, + -64400, + -64382, + -64363, + -64344, + -64325, + -64305, + -64286, + -64266, + -64247, + -64227, + -64207, + -64186, + -64166, + -64145, + -64125, + -64104, + -64083, + -64062, + -64040, + -64019, + -63997, + -63976, + -63954, + -63932, + -63910, + -63887, + -63865, + -63842, + -63819, + -63796, + -63773, + -63750, + -63727, + -63703, + -63679, + -63656, + -63632, + -63608, + -63583, + -63559, + -63534, + -63509, + -63485, + -63460, + -63434, + -63409, + -63384, + -63358, + -63332, + -63306, + -63280, + -63254, + -63227, + -63201, + -63174, + -63147, + -63120, + -63093, + -63066, + -63039, + -63011, + -62983, + -62956, + -62927, + -62899, + -62871, + -62843, + -62814, + -62785, + -62756, + -62727, + -62698, + -62669, + -62639, + -62610, + -62580, + -62550, + -62520, + -62490, + -62459, + -62429, + -62398, + -62367, + -62336, + -62305, + -62274, + -62242, + -62211, + -62179, + -62147, + -62115, + -62083, + -62051, + -62019, + -61986, + -61953, + -61920, + -61887, + -61854, + -61821, + -61787, + -61754, + -61720, + -61686, + -61652, + -61618, + -61584, + -61549, + -61515, + -61480, + -61445, + -61410, + -61375, + -61339, + -61304, + -61268, + -61233, + -61197, + -61161, + -61124, + -61088, + -61052, + -61015, + -60978, + -60941, + -60904, + -60867, + -60830, + -60792, + -60754, + -60717, + -60679, + -60641, + -60603, + -60564, + -60526, + -60487, + -60448, + -60409, + -60370, + -60331, + -60292, + -60252, + -60213, + -60173, + -60133, + -60093, + -60053, + -60012, + -59972, + -59931, + -59891, + -59850, + -59809, + -59767, + -59726, + -59685, + -59643, + -59601, + -59559, + -59517, + -59475, + -59433, + -59390, + -59348, + -59305, + -59262, + -59219, + -59176, + -59133, + -59089, + -59046, + -59002, + -58958, + -58914, + -58870, + -58826, + -58782, + -58737, + -58692, + -58648, + -58603, + -58558, + -58512, + -58467, + -58422, + -58376, + -58330, + -58284, + -58238, + -58192, + -58146, + -58099, + -58053, + -58006, + -57959, + -57912, + -57865, + -57818, + -57770, + -57723, + -57675, + -57627, + -57579, + -57531, + -57483, + -57434, + -57386, + -57337, + -57289, + -57240, + -57191, + -57141, + -57092, + -57043, + -56993, + -56943, + -56894, + -56844, + -56794, + -56743, + -56693, + -56642, + -56592, + -56541, + -56490, + -56439, + -56388, + -56337, + -56285, + -56233, + -56182, + -56130, + -56078, + -56026, + -55974, + -55921, + -55869, + -55816, + -55763, + -55710, + -55657, + -55604, + -55551, + -55498, + -55444, + -55390, + -55337, + -55283, + -55229, + -55174, + -55120, + -55066, + -55011, + -54956, + -54901, + -54846, + -54791, + -54736, + -54681, + -54625, + -54570, + -54514, + -54458, + -54402, + -54346, + -54290, + -54233, + -54177, + -54120, + -54063, + -54006, + -53949, + -53892, + -53835, + -53778, + -53720, + -53662, + -53605, + -53547, + -53489, + -53430, + -53372, + -53314, + -53255, + -53196, + -53138, + -53079, + -53020, + -52961, + -52901, + -52842, + -52782, + -52723, + -52663, + -52603, + -52543, + -52483, + -52422, + -52362, + -52302, + -52241, + -52180, + -52119, + -52058, + -51997, + -51936, + -51874, + -51813, + -51751, + -51689, + -51628, + -51566, + -51503, + -51441, + -51379, + -51316, + -51254, + -51191, + -51128, + -51065, + -51002, + -50939, + -50876, + -50812, + -50749, + -50685, + -50621, + -50557, + -50493, + -50429, + -50365, + -50300, + -50236, + -50171, + -50106, + -50042, + -49977, + -49911, + -49846, + -49781, + -49715, + -49650, + -49584, + -49518, + -49452, + -49386, + -49320, + -49254, + -49188, + -49121, + -49054, + -48988, + -48921, + -48854, + -48787, + -48720, + -48652, + -48585, + -48517, + -48450, + -48382, + -48314, + -48246, + -48178, + -48110, + -48041, + -47973, + -47904, + -47836, + -47767, + -47698, + -47629, + -47560, + -47491, + -47421, + -47352, + -47282, + -47212, + -47143, + -47073, + -47003, + -46933, + -46862, + -46792, + -46722, + -46651, + -46580, + -46510, + -46439, + -46368, + -46296, + -46225, + -46154, + -46082, + -46011, + -45939, + -45868, + -45796, + -45724, + -45652, + -45579, + -45507, + -45435, + -45362, + -45289, + -45217, + -45144, + -45071, + -44998, + -44925, + -44851, + -44778, + -44705, + -44631, + -44557, + -44484, + -44410, + -44336, + -44262, + -44187, + -44113, + -44039, + -43964, + -43889, + -43815, + -43740, + -43665, + -43590, + -43515, + -43440, + -43364, + -43289, + -43213, + -43138, + -43062, + -42986, + -42910, + -42834, + -42758, + -42682, + -42605, + -42529, + -42452, + -42376, + -42299, + -42222, + -42145, + -42068, + -41991, + -41914, + -41836, + -41759, + -41681, + -41604, + -41526, + -41448, + -41370, + -41292, + -41214, + -41136, + -41057, + -40979, + -40900, + -40822, + -40743, + -40664, + -40585, + -40506, + -40427, + -40348, + -40269, + -40189, + -40110, + -40030, + -39951, + -39871, + -39791, + -39711, + -39631, + -39551, + -39471, + -39390, + -39310, + -39229, + -39149, + -39068, + -38987, + -38906, + -38826, + -38744, + -38663, + -38582, + -38501, + -38419, + -38338, + -38256, + -38175, + -38093, + -38011, + -37929, + -37847, + -37765, + -37683, + -37600, + -37518, + -37435, + -37353, + -37270, + -37187, + -37104, + -37022, + -36939, + -36855, + -36772, + -36689, + -36606, + -36522, + -36439, + -36355, + -36271, + -36187, + -36104, + -36020, + -35936, + -35851, + -35767, + -35683, + -35599, + -35514, + -35430, + -35345, + -35260, + -35175, + -35090, + -35006, + -34920, + -34835, + -34750, + -34665, + -34579, + -34494, + -34408, + -34323, + -34237, + -34151, + -34065, + -33980, + -33893, + -33807, + -33721, + -33635, + -33549, + -33462, + -33376, + -33289, + -33202, + -33116, + -33029, + -32942, + -32855, + -32768, + -32681, + -32594, + -32506, + -32419, + -32332, + -32244, + -32157, + -32069, + -31981, + -31893, + -31805, + -31718, + -31629, + -31541, + -31453, + -31365, + -31277, + -31188, + -31100, + -31011, + -30923, + -30834, + -30745, + -30656, + -30567, + -30478, + -30389, + -30300, + -30211, + -30122, + -30032, + -29943, + -29853, + -29764, + -29674, + -29585, + -29495, + -29405, + -29315, + -29225, + -29135, + -29045, + -28955, + -28865, + -28774, + -28684, + -28593, + -28503, + -28412, + -28322, + -28231, + -28140, + -28049, + -27958, + -27867, + -27776, + -27685, + -27594, + -27503, + -27412, + -27320, + -27229, + -27137, + -27046, + -26954, + -26862, + -26771, + -26679, + -26587, + -26495, + -26403, + -26311, + -26219, + -26127, + -26034, + -25942, + -25850, + -25757, + -25665, + -25572, + -25480, + -25387, + -25294, + -25201, + -25109, + -25016, + -24923, + -24830, + -24737, + -24643, + -24550, + -24457, + -24364, + -24270, + -24177, + -24083, + -23990, + -23896, + -23803, + -23709, + -23615, + -23521, + -23427, + -23333, + -23239, + -23145, + -23051, + -22957, + -22863, + -22769, + -22674, + -22580, + -22485, + -22391, + -22296, + -22202, + -22107, + -22013, + -21918, + -21823, + -21728, + -21633, + -21538, + -21443, + -21348, + -21253, + -21158, + -21063, + -20968, + -20872, + -20777, + -20682, + -20586, + -20491, + -20395, + -20300, + -20204, + -20108, + -20013, + -19917, + -19821, + -19725, + -19629, + -19533, + -19437, + -19341, + -19245, + -19149, + -19053, + -18956, + -18860, + -18764, + -18667, + -18571, + -18475, + -18378, + -18282, + -18185, + -18088, + -17992, + -17895, + -17798, + -17701, + -17605, + -17508, + -17411, + -17314, + -17217, + -17120, + -17023, + -16926, + -16828, + -16731, + -16634, + -16537, + -16439, + -16342, + -16245, + -16147, + -16050, + -15952, + -15855, + -15757, + -15659, + -15562, + -15464, + -15366, + -15269, + -15171, + -15073, + -14975, + -14877, + -14779, + -14681, + -14583, + -14485, + -14387, + -14289, + -14191, + -14093, + -13994, + -13896, + -13798, + -13699, + -13601, + -13503, + -13404, + -13306, + -13207, + -13109, + -13010, + -12912, + -12813, + -12715, + -12616, + -12517, + -12418, + -12320, + -12221, + -12122, + -12023, + -11924, + -11826, + -11727, + -11628, + -11529, + -11430, + -11331, + -11232, + -11133, + -11033, + -10934, + -10835, + -10736, + -10637, + -10538, + -10438, + -10339, + -10240, + -10140, + -10041, + -9942, + -9842, + -9743, + -9643, + -9544, + -9444, + -9345, + -9245, + -9146, + -9046, + -8947, + -8847, + -8747, + -8648, + -8548, + -8448, + -8349, + -8249, + -8149, + -8049, + -7949, + -7850, + -7750, + -7650, + -7550, + -7450, + -7350, + -7250, + -7150, + -7050, + -6950, + -6850, + -6750, + -6650, + -6550, + -6450, + -6350, + -6250, + -6150, + -6050, + -5950, + -5850, + -5749, + -5649, + -5549, + -5449, + -5349, + -5248, + -5148, + -5048, + -4948, + -4847, + -4747, + -4647, + -4546, + -4446, + -4346, + -4245, + -4145, + -4045, + -3944, + -3844, + -3744, + -3643, + -3543, + -3442, + -3342, + -3242, + -3141, + -3041, + -2940, + -2840, + -2739, + -2639, + -2538, + -2438, + -2337, + -2237, + -2136, + -2036, + -1935, + -1835, + -1734, + -1634, + -1533, + -1433, + -1332, + -1232, + -1131, + -1031, + -930, + -830, + -729, + -628, + -528, + -427, + -327, + -226, + -126, + -25, + 75, + 176, + 277, + 377, + 478, + 578, + 679, + 779, + 880, + 980, + 1081, + 1181, + 1282, + 1383, + 1483, + 1584, + 1684, + 1785, + 1885, + 1986, + 2086, + 2187, + 2287, + 2388, + 2488, + 2589, + 2689, + 2790, + 2890, + 2990, + 3091, + 3191, + 3292, + 3392, + 3493, + 3593, + 3693, + 3794, + 3894, + 3995, + 4095, + 4195, + 4296, + 4396, + 4496, + 4597, + 4697, + 4797, + 4898, + 4998, + 5098, + 5198, + 5299, + 5399, + 5499, + 5599, + 5699, + 5799, + 5900, + 6000, + 6100, + 6200, + 6300, + 6400, + 6500, + 6600, + 6700, + 6800, + 6900, + 7000, + 7100, + 7200, + 7300, + 7400, + 7500, + 7600, + 7700, + 7800, + 7899, + 7999, + 8099, + 8199, + 8299, + 8398, + 8498, + 8598, + 8697, + 8797, + 8897, + 8996, + 9096, + 9196, + 9295, + 9395, + 9494, + 9594, + 9693, + 9792, + 9892, + 9991, + 10091, + 10190, + 10289, + 10389, + 10488, + 10587, + 10686, + 10786, + 10885, + 10984, + 11083, + 11182, + 11281, + 11380, + 11479, + 11578, + 11677, + 11776, + 11875, + 11974, + 12073, + 12172, + 12270, + 12369, + 12468, + 12567, + 12665, + 12764, + 12862, + 12961, + 13060, + 13158, + 13257, + 13355, + 13454, + 13552, + 13650, + 13749, + 13847, + 13945, + 14043, + 14142, + 14240, + 14338, + 14436, + 14534, + 14632, + 14730, + 14828, + 14926, + 15024, + 15122, + 15220, + 15317, + 15415, + 15513, + 15611, + 15708, + 15806, + 15903, + 16001, + 16098, + 16196, + 16293, + 16391, + 16488, + 16585, + 16683, + 16780, + 16877, + 16974, + 17071, + 17168, + 17265, + 17362, + 17459, + 17556, + 17653, + 17750, + 17847, + 17943, + 18040, + 18137, + 18233, + 18330, + 18426, + 18523, + 18619, + 18716, + 18812, + 18908, + 19005, + 19101, + 19197, + 19293, + 19389, + 19485, + 19581, + 19677, + 19773, + 19869, + 19965, + 20060, + 20156, + 20252, + 20347, + 20443, + 20538, + 20634, + 20729, + 20825, + 20920, + 21015, + 21110, + 21206, + 21301, + 21396, + 21491, + 21586, + 21681, + 21776, + 21870, + 21965, + 22060, + 22155, + 22249, + 22344, + 22438, + 22533, + 22627, + 22721, + 22816, + 22910, + 23004, + 23098, + 23192, + 23286, + 23380, + 23474, + 23568, + 23662, + 23756, + 23849, + 23943, + 24037, + 24130, + 24224, + 24317, + 24410, + 24504, + 24597, + 24690, + 24783, + 24876, + 24969, + 25062, + 25155, + 25248, + 25341, + 25433, + 25526, + 25619, + 25711, + 25804, + 25896, + 25988, + 26081, + 26173, + 26265, + 26357, + 26449, + 26541, + 26633, + 26725, + 26817, + 26908, + 27000, + 27092, + 27183, + 27275, + 27366, + 27457, + 27549, + 27640, + 27731, + 27822, + 27913, + 28004, + 28095, + 28186, + 28276, + 28367, + 28458, + 28548, + 28639, + 28729, + 28819, + 28910, + 29000, + 29090, + 29180, + 29270, + 29360, + 29450, + 29540, + 29629, + 29719, + 29809, + 29898, + 29988, + 30077, + 30166, + 30256, + 30345, + 30434, + 30523, + 30612, + 30701, + 30789, + 30878, + 30967, + 31055, + 31144, + 31232, + 31321, + 31409, + 31497, + 31585, + 31673, + 31761, + 31849, + 31937, + 32025, + 32113, + 32200, + 32288, + 32375, + 32463, + 32550, + 32637, + 32724, + 32812, + 32899, + 32985, + 33072, + 33159, + 33246, + 33332, + 33419, + 33505, + 33592, + 33678, + 33764, + 33850, + 33937, + 34022, + 34108, + 34194, + 34280, + 34366, + 34451, + 34537, + 34622, + 34707, + 34793, + 34878, + 34963, + 35048, + 35133, + 35218, + 35303, + 35387, + 35472, + 35556, + 35641, + 35725, + 35809, + 35894, + 35978, + 36062, + 36146, + 36229, + 36313, + 36397, + 36480, + 36564, + 36647, + 36731, + 36814, + 36897, + 36980, + 37063, + 37146, + 37229, + 37311, + 37394, + 37477, + 37559, + 37641, + 37724, + 37806, + 37888, + 37970, + 38052, + 38134, + 38215, + 38297, + 38379, + 38460, + 38541, + 38623, + 38704, + 38785, + 38866, + 38947, + 39028, + 39108, + 39189, + 39270, + 39350, + 39431, + 39511, + 39591, + 39671, + 39751, + 39831, + 39911, + 39990, + 40070, + 40150, + 40229, + 40308, + 40388, + 40467, + 40546, + 40625, + 40704, + 40782, + 40861, + 40940, + 41018, + 41096, + 41175, + 41253, + 41331, + 41409, + 41487, + 41565, + 41642, + 41720, + 41797, + 41875, + 41952, + 42029, + 42106, + 42183, + 42260, + 42337, + 42414, + 42490, + 42567, + 42643, + 42720, + 42796, + 42872, + 42948, + 43024, + 43100, + 43175, + 43251, + 43327, + 43402, + 43477, + 43552, + 43627, + 43702, + 43777, + 43852, + 43927, + 44001, + 44076, + 44150, + 44224, + 44299, + 44373, + 44447, + 44520, + 44594, + 44668, + 44741, + 44815, + 44888, + 44961, + 45034, + 45107, + 45180, + 45253, + 45326, + 45398, + 45471, + 45543, + 45615, + 45688, + 45760, + 45832, + 45903, + 45975, + 46047, + 46118, + 46190, + 46261, + 46332, + 46403, + 46474, + 46545, + 46616, + 46686, + 46757, + 46827, + 46897, + 46968, + 47038, + 47108, + 47178, + 47247, + 47317, + 47386, + 47456, + 47525, + 47594, + 47663, + 47732, + 47801, + 47870, + 47939, + 48007, + 48075, + 48144, + 48212, + 48280, + 48348, + 48416, + 48483, + 48551, + 48619, + 48686, + 48753, + 48820, + 48887, + 48954, + 49021, + 49088, + 49154, + 49221, + 49287, + 49353, + 49419, + 49485, + 49551, + 49617, + 49683, + 49748, + 49814, + 49879, + 49944, + 50009, + 50074, + 50139, + 50203, + 50268, + 50333, + 50397, + 50461, + 50525, + 50589, + 50653, + 50717, + 50780, + 50844, + 50907, + 50971, + 51034, + 51097, + 51160, + 51222, + 51285, + 51348, + 51410, + 51472, + 51535, + 51597, + 51659, + 51720, + 51782, + 51844, + 51905, + 51966, + 52028, + 52089, + 52150, + 52211, + 52271, + 52332, + 52392, + 52453, + 52513, + 52573, + 52633, + 52693, + 52753, + 52812, + 52872, + 52931, + 52990, + 53049, + 53108, + 53167, + 53226, + 53284, + 53343, + 53401, + 53460, + 53518, + 53576, + 53633, + 53691, + 53749, + 53806, + 53864, + 53921, + 53978, + 54035, + 54092, + 54148, + 54205, + 54261, + 54318, + 54374, + 54430, + 54486, + 54542, + 54597, + 54653, + 54708, + 54764, + 54819, + 54874, + 54929, + 54984, + 55038, + 55093, + 55147, + 55201, + 55256, + 55310, + 55363, + 55417, + 55471, + 55524, + 55578, + 55631, + 55684, + 55737, + 55790, + 55842, + 55895, + 55947, + 56000, + 56052, + 56104, + 56156, + 56208, + 56259, + 56311, + 56362, + 56413, + 56465, + 56516, + 56566, + 56617, + 56668, + 56718, + 56768, + 56819, + 56869, + 56919, + 56968, + 57018, + 57067, + 57117, + 57166, + 57215, + 57264, + 57313, + 57362, + 57410, + 57459, + 57507, + 57555, + 57603, + 57651, + 57699, + 57746, + 57794, + 57841, + 57888, + 57936, + 57982, + 58029, + 58076, + 58122, + 58169, + 58215, + 58261, + 58307, + 58353, + 58399, + 58444, + 58490, + 58535, + 58580, + 58625, + 58670, + 58715, + 58759, + 58804, + 58848, + 58892, + 58936, + 58980, + 59024, + 59068, + 59111, + 59155, + 59198, + 59241, + 59284, + 59327, + 59369, + 59412, + 59454, + 59496, + 59538, + 59580, + 59622, + 59664, + 59705, + 59747, + 59788, + 59829, + 59870, + 59911, + 59952, + 59992, + 60033, + 60073, + 60113, + 60153, + 60193, + 60232, + 60272, + 60311, + 60351, + 60390, + 60429, + 60468, + 60506, + 60545, + 60583, + 60622, + 60660, + 60698, + 60736, + 60773, + 60811, + 60848, + 60886, + 60923, + 60960, + 60997, + 61033, + 61070, + 61106, + 61142, + 61179, + 61215, + 61250, + 61286, + 61322, + 61357, + 61392, + 61427, + 61462, + 61497, + 61532, + 61566, + 61601, + 61635, + 61669, + 61703, + 61737, + 61771, + 61804, + 61838, + 61871, + 61904, + 61937, + 61970, + 62002, + 62035, + 62067, + 62099, + 62131, + 62163, + 62195, + 62227, + 62258, + 62289, + 62321, + 62352, + 62383, + 62413, + 62444, + 62474, + 62505, + 62535, + 62565, + 62595, + 62624, + 62654, + 62683, + 62713, + 62742, + 62771, + 62800, + 62828, + 62857, + 62885, + 62913, + 62942, + 62969, + 62997, + 63025, + 63052, + 63080, + 63107, + 63134, + 63161, + 63188, + 63214, + 63241, + 63267, + 63293, + 63319, + 63345, + 63371, + 63396, + 63422, + 63447, + 63472, + 63497, + 63522, + 63547, + 63571, + 63595, + 63620, + 63644, + 63668, + 63691, + 63715, + 63738, + 63762, + 63785, + 63808, + 63831, + 63853, + 63876, + 63898, + 63921, + 63943, + 63965, + 63987, + 64008, + 64030, + 64051, + 64072, + 64093, + 64114, + 64135, + 64156, + 64176, + 64196, + 64217, + 64237, + 64256, + 64276, + 64296, + 64315, + 64334, + 64353, + 64372, + 64391, + 64410, + 64428, + 64447, + 64465, + 64483, + 64501, + 64518, + 64536, + 64553, + 64571, + 64588, + 64605, + 64622, + 64638, + 64655, + 64671, + 64687, + 64703, + 64719, + 64735, + 64751, + 64766, + 64781, + 64797, + 64811, + 64826, + 64841, + 64856, + 64870, + 64884, + 64898, + 64912, + 64926, + 64940, + 64953, + 64966, + 64979, + 64992, + 65005, + 65018, + 65031, + 65043, + 65055, + 65067, + 65079, + 65091, + 65103, + 65114, + 65125, + 65136, + 65148, + 65158, + 65169, + 65180, + 65190, + 65200, + 65210, + 65220, + 65230, + 65240, + 65249, + 65258, + 65268, + 65277, + 65286, + 65294, + 65303, + 65311, + 65319, + 65328, + 65335, + 65343, + 65351, + 65358, + 65366, + 65373, + 65380, + 65387, + 65393, + 65400, + 65406, + 65413, + 65419, + 65425, + 65430, + 65436, + 65442, + 65447, + 65452, + 65457, + 65462, + 65467, + 65471, + 65476, + 65480, + 65484, + 65488, + 65492, + 65495, + 65499, + 65502, + 65505, + 65508, + 65511, + 65514, + 65516, + 65519, + 65521, + 65523, + 65525, + 65527, + 65528, + 65530, + 65531, + 65532, + 65533, + 65534, + 65535, + 65535, + 65536, + 65536, + 65536 +}; \ No newline at end of file diff --git a/axl_sin_table.inc b/axl_sin_table.inc new file mode 100644 index 0000000..8aebad8 --- /dev/null +++ b/axl_sin_table.inc @@ -0,0 +1,4102 @@ +//sin[4096] - fixed point 16.16 +//Generated by gen_math_tables.py + +static inline f16_16 axl_sin_table[4096] = +{ + 0, + 101, + 201, + 302, + 402, + 503, + 603, + 704, + 804, + 905, + 1006, + 1106, + 1207, + 1307, + 1408, + 1508, + 1609, + 1709, + 1810, + 1910, + 2011, + 2111, + 2212, + 2312, + 2413, + 2513, + 2614, + 2714, + 2815, + 2915, + 3016, + 3116, + 3216, + 3317, + 3417, + 3518, + 3618, + 3719, + 3819, + 3919, + 4020, + 4120, + 4220, + 4321, + 4421, + 4521, + 4622, + 4722, + 4822, + 4923, + 5023, + 5123, + 5223, + 5324, + 5424, + 5524, + 5624, + 5724, + 5825, + 5925, + 6025, + 6125, + 6225, + 6325, + 6425, + 6525, + 6625, + 6725, + 6825, + 6925, + 7025, + 7125, + 7225, + 7325, + 7425, + 7525, + 7625, + 7725, + 7825, + 7924, + 8024, + 8124, + 8224, + 8324, + 8423, + 8523, + 8623, + 8722, + 8822, + 8922, + 9021, + 9121, + 9220, + 9320, + 9419, + 9519, + 9618, + 9718, + 9817, + 9917, + 10016, + 10116, + 10215, + 10314, + 10413, + 10513, + 10612, + 10711, + 10810, + 10910, + 11009, + 11108, + 11207, + 11306, + 11405, + 11504, + 11603, + 11702, + 11801, + 11900, + 11999, + 12097, + 12196, + 12295, + 12394, + 12493, + 12591, + 12690, + 12789, + 12887, + 12986, + 13084, + 13183, + 13281, + 13380, + 13478, + 13577, + 13675, + 13773, + 13871, + 13970, + 14068, + 14166, + 14264, + 14362, + 14461, + 14559, + 14657, + 14755, + 14853, + 14951, + 15048, + 15146, + 15244, + 15342, + 15440, + 15537, + 15635, + 15733, + 15830, + 15928, + 16025, + 16123, + 16220, + 16318, + 16415, + 16512, + 16610, + 16707, + 16804, + 16901, + 16998, + 17095, + 17193, + 17290, + 17387, + 17483, + 17580, + 17677, + 17774, + 17871, + 17967, + 18064, + 18161, + 18257, + 18354, + 18450, + 18547, + 18643, + 18740, + 18836, + 18932, + 19029, + 19125, + 19221, + 19317, + 19413, + 19509, + 19605, + 19701, + 19797, + 19893, + 19989, + 20084, + 20180, + 20276, + 20371, + 20467, + 20562, + 20658, + 20753, + 20849, + 20944, + 21039, + 21134, + 21229, + 21325, + 21420, + 21515, + 21610, + 21704, + 21799, + 21894, + 21989, + 22084, + 22178, + 22273, + 22367, + 22462, + 22556, + 22651, + 22745, + 22839, + 22934, + 23028, + 23122, + 23216, + 23310, + 23404, + 23498, + 23592, + 23685, + 23779, + 23873, + 23966, + 24060, + 24153, + 24247, + 24340, + 24434, + 24527, + 24620, + 24713, + 24806, + 24899, + 24992, + 25085, + 25178, + 25271, + 25364, + 25456, + 25549, + 25642, + 25734, + 25827, + 25919, + 26011, + 26104, + 26196, + 26288, + 26380, + 26472, + 26564, + 26656, + 26748, + 26839, + 26931, + 27023, + 27114, + 27206, + 27297, + 27389, + 27480, + 27571, + 27663, + 27754, + 27845, + 27936, + 28027, + 28118, + 28208, + 28299, + 28390, + 28480, + 28571, + 28661, + 28752, + 28842, + 28932, + 29022, + 29113, + 29203, + 29293, + 29383, + 29472, + 29562, + 29652, + 29742, + 29831, + 29921, + 30010, + 30099, + 30189, + 30278, + 30367, + 30456, + 30545, + 30634, + 30723, + 30812, + 30900, + 30989, + 31078, + 31166, + 31255, + 31343, + 31431, + 31519, + 31607, + 31696, + 31783, + 31871, + 31959, + 32047, + 32135, + 32222, + 32310, + 32397, + 32485, + 32572, + 32659, + 32746, + 32833, + 32920, + 33007, + 33094, + 33181, + 33267, + 33354, + 33441, + 33527, + 33613, + 33700, + 33786, + 33872, + 33958, + 34044, + 34130, + 34216, + 34301, + 34387, + 34473, + 34558, + 34643, + 34729, + 34814, + 34899, + 34984, + 35069, + 35154, + 35239, + 35324, + 35408, + 35493, + 35577, + 35662, + 35746, + 35830, + 35915, + 35999, + 36083, + 36167, + 36250, + 36334, + 36418, + 36501, + 36585, + 36668, + 36751, + 36835, + 36918, + 37001, + 37084, + 37167, + 37249, + 37332, + 37415, + 37497, + 37580, + 37662, + 37744, + 37826, + 37908, + 37990, + 38072, + 38154, + 38236, + 38317, + 38399, + 38480, + 38562, + 38643, + 38724, + 38805, + 38886, + 38967, + 39048, + 39129, + 39209, + 39290, + 39370, + 39451, + 39531, + 39611, + 39691, + 39771, + 39851, + 39931, + 40010, + 40090, + 40169, + 40249, + 40328, + 40407, + 40487, + 40566, + 40644, + 40723, + 40802, + 40881, + 40959, + 41038, + 41116, + 41194, + 41272, + 41351, + 41428, + 41506, + 41584, + 41662, + 41739, + 41817, + 41894, + 41971, + 42049, + 42126, + 42203, + 42280, + 42356, + 42433, + 42510, + 42586, + 42662, + 42739, + 42815, + 42891, + 42967, + 43043, + 43119, + 43194, + 43270, + 43345, + 43421, + 43496, + 43571, + 43646, + 43721, + 43796, + 43871, + 43945, + 44020, + 44094, + 44169, + 44243, + 44317, + 44391, + 44465, + 44539, + 44613, + 44686, + 44760, + 44833, + 44906, + 44980, + 45053, + 45126, + 45199, + 45271, + 45344, + 45417, + 45489, + 45561, + 45634, + 45706, + 45778, + 45850, + 45921, + 45993, + 46065, + 46136, + 46207, + 46279, + 46350, + 46421, + 46492, + 46563, + 46633, + 46704, + 46774, + 46845, + 46915, + 46985, + 47055, + 47125, + 47195, + 47265, + 47334, + 47404, + 47473, + 47542, + 47612, + 47681, + 47750, + 47818, + 47887, + 47956, + 48024, + 48093, + 48161, + 48229, + 48297, + 48365, + 48433, + 48500, + 48568, + 48635, + 48703, + 48770, + 48837, + 48904, + 48971, + 49038, + 49104, + 49171, + 49237, + 49304, + 49370, + 49436, + 49502, + 49568, + 49633, + 49699, + 49765, + 49830, + 49895, + 49960, + 50025, + 50090, + 50155, + 50220, + 50284, + 50349, + 50413, + 50477, + 50541, + 50605, + 50669, + 50733, + 50796, + 50860, + 50923, + 50986, + 51049, + 51112, + 51175, + 51238, + 51301, + 51363, + 51426, + 51488, + 51550, + 51612, + 51674, + 51736, + 51797, + 51859, + 51920, + 51982, + 52043, + 52104, + 52165, + 52226, + 52286, + 52347, + 52407, + 52468, + 52528, + 52588, + 52648, + 52708, + 52767, + 52827, + 52886, + 52946, + 53005, + 53064, + 53123, + 53182, + 53241, + 53299, + 53358, + 53416, + 53474, + 53532, + 53590, + 53648, + 53706, + 53763, + 53821, + 53878, + 53935, + 53992, + 54049, + 54106, + 54163, + 54219, + 54276, + 54332, + 54388, + 54444, + 54500, + 54556, + 54611, + 54667, + 54722, + 54778, + 54833, + 54888, + 54943, + 54997, + 55052, + 55106, + 55161, + 55215, + 55269, + 55323, + 55377, + 55431, + 55484, + 55538, + 55591, + 55644, + 55697, + 55750, + 55803, + 55856, + 55908, + 55961, + 56013, + 56065, + 56117, + 56169, + 56221, + 56272, + 56324, + 56375, + 56426, + 56477, + 56528, + 56579, + 56630, + 56680, + 56731, + 56781, + 56831, + 56881, + 56931, + 56981, + 57030, + 57080, + 57129, + 57178, + 57227, + 57276, + 57325, + 57374, + 57422, + 57471, + 57519, + 57567, + 57615, + 57663, + 57711, + 57758, + 57806, + 57853, + 57900, + 57947, + 57994, + 58041, + 58088, + 58134, + 58180, + 58227, + 58273, + 58319, + 58364, + 58410, + 58456, + 58501, + 58546, + 58591, + 58636, + 58681, + 58726, + 58771, + 58815, + 58859, + 58903, + 58947, + 58991, + 59035, + 59079, + 59122, + 59165, + 59209, + 59252, + 59294, + 59337, + 59380, + 59422, + 59465, + 59507, + 59549, + 59591, + 59633, + 59674, + 59716, + 59757, + 59798, + 59839, + 59880, + 59921, + 59962, + 60002, + 60043, + 60083, + 60123, + 60163, + 60203, + 60242, + 60282, + 60321, + 60361, + 60400, + 60439, + 60477, + 60516, + 60555, + 60593, + 60631, + 60669, + 60707, + 60745, + 60783, + 60820, + 60858, + 60895, + 60932, + 60969, + 61006, + 61042, + 61079, + 61115, + 61152, + 61188, + 61224, + 61259, + 61295, + 61331, + 61366, + 61401, + 61436, + 61471, + 61506, + 61541, + 61575, + 61609, + 61644, + 61678, + 61712, + 61745, + 61779, + 61813, + 61846, + 61879, + 61912, + 61945, + 61978, + 62010, + 62043, + 62075, + 62107, + 62139, + 62171, + 62203, + 62235, + 62266, + 62297, + 62328, + 62359, + 62390, + 62421, + 62452, + 62482, + 62512, + 62542, + 62572, + 62602, + 62632, + 62661, + 62691, + 62720, + 62749, + 62778, + 62807, + 62835, + 62864, + 62892, + 62920, + 62949, + 62976, + 63004, + 63032, + 63059, + 63087, + 63114, + 63141, + 63168, + 63194, + 63221, + 63247, + 63274, + 63300, + 63326, + 63351, + 63377, + 63403, + 63428, + 63453, + 63478, + 63503, + 63528, + 63553, + 63577, + 63601, + 63626, + 63650, + 63674, + 63697, + 63721, + 63744, + 63768, + 63791, + 63814, + 63836, + 63859, + 63882, + 63904, + 63926, + 63948, + 63970, + 63992, + 64014, + 64035, + 64056, + 64078, + 64099, + 64120, + 64140, + 64161, + 64181, + 64201, + 64222, + 64242, + 64261, + 64281, + 64301, + 64320, + 64339, + 64358, + 64377, + 64396, + 64414, + 64433, + 64451, + 64469, + 64487, + 64505, + 64523, + 64540, + 64558, + 64575, + 64592, + 64609, + 64626, + 64642, + 64659, + 64675, + 64691, + 64707, + 64723, + 64739, + 64755, + 64770, + 64785, + 64800, + 64815, + 64830, + 64845, + 64859, + 64873, + 64888, + 64902, + 64916, + 64929, + 64943, + 64956, + 64970, + 64983, + 64996, + 65008, + 65021, + 65034, + 65046, + 65058, + 65070, + 65082, + 65094, + 65105, + 65117, + 65128, + 65139, + 65150, + 65161, + 65172, + 65182, + 65193, + 65203, + 65213, + 65223, + 65232, + 65242, + 65252, + 65261, + 65270, + 65279, + 65288, + 65296, + 65305, + 65313, + 65321, + 65330, + 65337, + 65345, + 65353, + 65360, + 65367, + 65375, + 65382, + 65388, + 65395, + 65402, + 65408, + 65414, + 65420, + 65426, + 65432, + 65437, + 65443, + 65448, + 65453, + 65458, + 65463, + 65468, + 65472, + 65477, + 65481, + 65485, + 65489, + 65492, + 65496, + 65500, + 65503, + 65506, + 65509, + 65512, + 65514, + 65517, + 65519, + 65521, + 65523, + 65525, + 65527, + 65529, + 65530, + 65531, + 65532, + 65533, + 65534, + 65535, + 65535, + 65536, + 65536, + 65536, + 65536, + 65536, + 65535, + 65535, + 65534, + 65533, + 65532, + 65531, + 65529, + 65528, + 65526, + 65524, + 65522, + 65520, + 65518, + 65516, + 65513, + 65510, + 65507, + 65504, + 65501, + 65498, + 65494, + 65491, + 65487, + 65483, + 65479, + 65474, + 65470, + 65465, + 65461, + 65456, + 65451, + 65446, + 65440, + 65435, + 65429, + 65423, + 65417, + 65411, + 65405, + 65398, + 65392, + 65385, + 65378, + 65371, + 65364, + 65356, + 65349, + 65341, + 65333, + 65326, + 65317, + 65309, + 65301, + 65292, + 65283, + 65274, + 65265, + 65256, + 65247, + 65237, + 65228, + 65218, + 65208, + 65198, + 65187, + 65177, + 65166, + 65156, + 65145, + 65134, + 65123, + 65111, + 65100, + 65088, + 65076, + 65064, + 65052, + 65040, + 65027, + 65015, + 65002, + 64989, + 64976, + 64963, + 64950, + 64936, + 64922, + 64909, + 64895, + 64881, + 64866, + 64852, + 64837, + 64823, + 64808, + 64793, + 64778, + 64762, + 64747, + 64731, + 64715, + 64699, + 64683, + 64667, + 64651, + 64634, + 64617, + 64601, + 64584, + 64566, + 64549, + 64532, + 64514, + 64496, + 64478, + 64460, + 64442, + 64424, + 64405, + 64386, + 64368, + 64349, + 64330, + 64310, + 64291, + 64271, + 64251, + 64232, + 64212, + 64191, + 64171, + 64151, + 64130, + 64109, + 64088, + 64067, + 64046, + 64024, + 64003, + 63981, + 63959, + 63937, + 63915, + 63893, + 63870, + 63848, + 63825, + 63802, + 63779, + 63756, + 63733, + 63709, + 63685, + 63662, + 63638, + 63614, + 63589, + 63565, + 63540, + 63516, + 63491, + 63466, + 63441, + 63415, + 63390, + 63364, + 63339, + 63313, + 63287, + 63260, + 63234, + 63208, + 63181, + 63154, + 63127, + 63100, + 63073, + 63046, + 63018, + 62990, + 62962, + 62935, + 62906, + 62878, + 62850, + 62821, + 62792, + 62764, + 62735, + 62705, + 62676, + 62647, + 62617, + 62587, + 62557, + 62527, + 62497, + 62467, + 62436, + 62406, + 62375, + 62344, + 62313, + 62282, + 62250, + 62219, + 62187, + 62155, + 62123, + 62091, + 62059, + 62027, + 61994, + 61961, + 61929, + 61896, + 61862, + 61829, + 61796, + 61762, + 61729, + 61695, + 61661, + 61627, + 61592, + 61558, + 61523, + 61489, + 61454, + 61419, + 61384, + 61348, + 61313, + 61277, + 61241, + 61206, + 61170, + 61133, + 61097, + 61061, + 61024, + 60987, + 60950, + 60913, + 60876, + 60839, + 60802, + 60764, + 60726, + 60688, + 60650, + 60612, + 60574, + 60535, + 60497, + 60458, + 60419, + 60380, + 60341, + 60302, + 60262, + 60223, + 60183, + 60143, + 60103, + 60063, + 60022, + 59982, + 59941, + 59901, + 59860, + 59819, + 59778, + 59736, + 59695, + 59653, + 59612, + 59570, + 59528, + 59486, + 59444, + 59401, + 59359, + 59316, + 59273, + 59230, + 59187, + 59144, + 59100, + 59057, + 59013, + 58969, + 58925, + 58881, + 58837, + 58793, + 58748, + 58704, + 58659, + 58614, + 58569, + 58524, + 58478, + 58433, + 58387, + 58342, + 58296, + 58250, + 58204, + 58157, + 58111, + 58064, + 58018, + 57971, + 57924, + 57877, + 57829, + 57782, + 57735, + 57687, + 57639, + 57591, + 57543, + 57495, + 57447, + 57398, + 57350, + 57301, + 57252, + 57203, + 57154, + 57105, + 57055, + 57006, + 56956, + 56906, + 56856, + 56806, + 56756, + 56705, + 56655, + 56604, + 56554, + 56503, + 56452, + 56401, + 56349, + 56298, + 56246, + 56195, + 56143, + 56091, + 56039, + 55987, + 55934, + 55882, + 55829, + 55777, + 55724, + 55671, + 55618, + 55564, + 55511, + 55457, + 55404, + 55350, + 55296, + 55242, + 55188, + 55134, + 55079, + 55025, + 54970, + 54915, + 54860, + 54805, + 54750, + 54695, + 54639, + 54584, + 54528, + 54472, + 54416, + 54360, + 54304, + 54247, + 54191, + 54134, + 54077, + 54021, + 53964, + 53906, + 53849, + 53792, + 53734, + 53677, + 53619, + 53561, + 53503, + 53445, + 53387, + 53328, + 53270, + 53211, + 53152, + 53094, + 53035, + 52975, + 52916, + 52857, + 52797, + 52738, + 52678, + 52618, + 52558, + 52498, + 52438, + 52377, + 52317, + 52256, + 52195, + 52134, + 52073, + 52012, + 51951, + 51890, + 51828, + 51767, + 51705, + 51643, + 51581, + 51519, + 51457, + 51394, + 51332, + 51269, + 51207, + 51144, + 51081, + 51018, + 50955, + 50891, + 50828, + 50765, + 50701, + 50637, + 50573, + 50509, + 50445, + 50381, + 50316, + 50252, + 50187, + 50123, + 50058, + 49993, + 49928, + 49863, + 49797, + 49732, + 49666, + 49601, + 49535, + 49469, + 49403, + 49337, + 49271, + 49204, + 49138, + 49071, + 49004, + 48938, + 48871, + 48804, + 48736, + 48669, + 48602, + 48534, + 48467, + 48399, + 48331, + 48263, + 48195, + 48127, + 48058, + 47990, + 47921, + 47853, + 47784, + 47715, + 47646, + 47577, + 47508, + 47439, + 47369, + 47300, + 47230, + 47160, + 47090, + 47020, + 46950, + 46880, + 46810, + 46739, + 46669, + 46598, + 46527, + 46456, + 46385, + 46314, + 46243, + 46172, + 46100, + 46029, + 45957, + 45885, + 45814, + 45742, + 45670, + 45597, + 45525, + 45453, + 45380, + 45308, + 45235, + 45162, + 45089, + 45016, + 44943, + 44870, + 44796, + 44723, + 44649, + 44576, + 44502, + 44428, + 44354, + 44280, + 44206, + 44132, + 44057, + 43983, + 43908, + 43833, + 43759, + 43684, + 43609, + 43534, + 43458, + 43383, + 43308, + 43232, + 43157, + 43081, + 43005, + 42929, + 42853, + 42777, + 42701, + 42624, + 42548, + 42471, + 42395, + 42318, + 42241, + 42164, + 42087, + 42010, + 41933, + 41856, + 41778, + 41701, + 41623, + 41545, + 41467, + 41389, + 41311, + 41233, + 41155, + 41077, + 40998, + 40920, + 40841, + 40763, + 40684, + 40605, + 40526, + 40447, + 40368, + 40289, + 40209, + 40130, + 40050, + 39971, + 39891, + 39811, + 39731, + 39651, + 39571, + 39491, + 39410, + 39330, + 39250, + 39169, + 39088, + 39008, + 38927, + 38846, + 38765, + 38684, + 38602, + 38521, + 38440, + 38358, + 38277, + 38195, + 38113, + 38031, + 37949, + 37867, + 37785, + 37703, + 37621, + 37538, + 37456, + 37373, + 37291, + 37208, + 37125, + 37042, + 36959, + 36876, + 36793, + 36710, + 36626, + 36543, + 36459, + 36376, + 36292, + 36208, + 36125, + 36041, + 35957, + 35872, + 35788, + 35704, + 35620, + 35535, + 35451, + 35366, + 35281, + 35197, + 35112, + 35027, + 34942, + 34857, + 34771, + 34686, + 34601, + 34515, + 34430, + 34344, + 34259, + 34173, + 34087, + 34001, + 33915, + 33829, + 33743, + 33657, + 33570, + 33484, + 33397, + 33311, + 33224, + 33137, + 33051, + 32964, + 32877, + 32790, + 32703, + 32615, + 32528, + 32441, + 32353, + 32266, + 32178, + 32091, + 32003, + 31915, + 31827, + 31739, + 31651, + 31563, + 31475, + 31387, + 31299, + 31210, + 31122, + 31033, + 30945, + 30856, + 30767, + 30678, + 30590, + 30501, + 30412, + 30322, + 30233, + 30144, + 30055, + 29965, + 29876, + 29786, + 29697, + 29607, + 29517, + 29427, + 29338, + 29248, + 29158, + 29068, + 28977, + 28887, + 28797, + 28706, + 28616, + 28526, + 28435, + 28344, + 28254, + 28163, + 28072, + 27981, + 27890, + 27799, + 27708, + 27617, + 27526, + 27434, + 27343, + 27252, + 27160, + 27069, + 26977, + 26885, + 26794, + 26702, + 26610, + 26518, + 26426, + 26334, + 26242, + 26150, + 26057, + 25965, + 25873, + 25780, + 25688, + 25595, + 25503, + 25410, + 25317, + 25225, + 25132, + 25039, + 24946, + 24853, + 24760, + 24667, + 24574, + 24480, + 24387, + 24294, + 24200, + 24107, + 24013, + 23920, + 23826, + 23732, + 23638, + 23545, + 23451, + 23357, + 23263, + 23169, + 23075, + 22981, + 22886, + 22792, + 22698, + 22604, + 22509, + 22415, + 22320, + 22226, + 22131, + 22036, + 21942, + 21847, + 21752, + 21657, + 21562, + 21467, + 21372, + 21277, + 21182, + 21087, + 20991, + 20896, + 20801, + 20705, + 20610, + 20515, + 20419, + 20323, + 20228, + 20132, + 20036, + 19941, + 19845, + 19749, + 19653, + 19557, + 19461, + 19365, + 19269, + 19173, + 19077, + 18980, + 18884, + 18788, + 18692, + 18595, + 18499, + 18402, + 18306, + 18209, + 18112, + 18016, + 17919, + 17822, + 17726, + 17629, + 17532, + 17435, + 17338, + 17241, + 17144, + 17047, + 16950, + 16853, + 16755, + 16658, + 16561, + 16464, + 16366, + 16269, + 16171, + 16074, + 15977, + 15879, + 15781, + 15684, + 15586, + 15488, + 15391, + 15293, + 15195, + 15097, + 14999, + 14902, + 14804, + 14706, + 14608, + 14510, + 14412, + 14313, + 14215, + 14117, + 14019, + 13921, + 13822, + 13724, + 13626, + 13527, + 13429, + 13330, + 13232, + 13134, + 13035, + 12936, + 12838, + 12739, + 12641, + 12542, + 12443, + 12344, + 12246, + 12147, + 12048, + 11949, + 11850, + 11751, + 11652, + 11553, + 11454, + 11355, + 11256, + 11157, + 11058, + 10959, + 10860, + 10761, + 10662, + 10562, + 10463, + 10364, + 10265, + 10165, + 10066, + 9966, + 9867, + 9768, + 9668, + 9569, + 9469, + 9370, + 9270, + 9171, + 9071, + 8971, + 8872, + 8772, + 8673, + 8573, + 8473, + 8373, + 8274, + 8174, + 8074, + 7974, + 7875, + 7775, + 7675, + 7575, + 7475, + 7375, + 7275, + 7175, + 7075, + 6975, + 6875, + 6775, + 6675, + 6575, + 6475, + 6375, + 6275, + 6175, + 6075, + 5975, + 5875, + 5774, + 5674, + 5574, + 5474, + 5374, + 5273, + 5173, + 5073, + 4973, + 4872, + 4772, + 4672, + 4572, + 4471, + 4371, + 4271, + 4170, + 4070, + 3970, + 3869, + 3769, + 3668, + 3568, + 3468, + 3367, + 3267, + 3166, + 3066, + 2965, + 2865, + 2764, + 2664, + 2564, + 2463, + 2363, + 2262, + 2162, + 2061, + 1961, + 1860, + 1760, + 1659, + 1558, + 1458, + 1357, + 1257, + 1156, + 1056, + 955, + 855, + 754, + 654, + 553, + 452, + 352, + 251, + 151, + 50, + -50, + -151, + -251, + -352, + -452, + -553, + -654, + -754, + -855, + -955, + -1056, + -1156, + -1257, + -1357, + -1458, + -1558, + -1659, + -1760, + -1860, + -1961, + -2061, + -2162, + -2262, + -2363, + -2463, + -2564, + -2664, + -2764, + -2865, + -2965, + -3066, + -3166, + -3267, + -3367, + -3468, + -3568, + -3668, + -3769, + -3869, + -3970, + -4070, + -4170, + -4271, + -4371, + -4471, + -4572, + -4672, + -4772, + -4872, + -4973, + -5073, + -5173, + -5273, + -5374, + -5474, + -5574, + -5674, + -5774, + -5875, + -5975, + -6075, + -6175, + -6275, + -6375, + -6475, + -6575, + -6675, + -6775, + -6875, + -6975, + -7075, + -7175, + -7275, + -7375, + -7475, + -7575, + -7675, + -7775, + -7875, + -7974, + -8074, + -8174, + -8274, + -8373, + -8473, + -8573, + -8673, + -8772, + -8872, + -8971, + -9071, + -9171, + -9270, + -9370, + -9469, + -9569, + -9668, + -9768, + -9867, + -9966, + -10066, + -10165, + -10265, + -10364, + -10463, + -10562, + -10662, + -10761, + -10860, + -10959, + -11058, + -11157, + -11256, + -11355, + -11454, + -11553, + -11652, + -11751, + -11850, + -11949, + -12048, + -12147, + -12246, + -12344, + -12443, + -12542, + -12641, + -12739, + -12838, + -12936, + -13035, + -13134, + -13232, + -13330, + -13429, + -13527, + -13626, + -13724, + -13822, + -13921, + -14019, + -14117, + -14215, + -14313, + -14412, + -14510, + -14608, + -14706, + -14804, + -14902, + -14999, + -15097, + -15195, + -15293, + -15391, + -15488, + -15586, + -15684, + -15781, + -15879, + -15977, + -16074, + -16171, + -16269, + -16366, + -16464, + -16561, + -16658, + -16755, + -16853, + -16950, + -17047, + -17144, + -17241, + -17338, + -17435, + -17532, + -17629, + -17726, + -17822, + -17919, + -18016, + -18112, + -18209, + -18306, + -18402, + -18499, + -18595, + -18692, + -18788, + -18884, + -18980, + -19077, + -19173, + -19269, + -19365, + -19461, + -19557, + -19653, + -19749, + -19845, + -19941, + -20036, + -20132, + -20228, + -20323, + -20419, + -20515, + -20610, + -20705, + -20801, + -20896, + -20991, + -21087, + -21182, + -21277, + -21372, + -21467, + -21562, + -21657, + -21752, + -21847, + -21942, + -22036, + -22131, + -22226, + -22320, + -22415, + -22509, + -22604, + -22698, + -22792, + -22886, + -22981, + -23075, + -23169, + -23263, + -23357, + -23451, + -23545, + -23638, + -23732, + -23826, + -23920, + -24013, + -24107, + -24200, + -24294, + -24387, + -24480, + -24574, + -24667, + -24760, + -24853, + -24946, + -25039, + -25132, + -25225, + -25317, + -25410, + -25503, + -25595, + -25688, + -25780, + -25873, + -25965, + -26057, + -26150, + -26242, + -26334, + -26426, + -26518, + -26610, + -26702, + -26794, + -26885, + -26977, + -27069, + -27160, + -27252, + -27343, + -27434, + -27526, + -27617, + -27708, + -27799, + -27890, + -27981, + -28072, + -28163, + -28254, + -28344, + -28435, + -28526, + -28616, + -28706, + -28797, + -28887, + -28977, + -29068, + -29158, + -29248, + -29338, + -29427, + -29517, + -29607, + -29697, + -29786, + -29876, + -29965, + -30055, + -30144, + -30233, + -30322, + -30412, + -30501, + -30590, + -30678, + -30767, + -30856, + -30945, + -31033, + -31122, + -31210, + -31299, + -31387, + -31475, + -31563, + -31651, + -31739, + -31827, + -31915, + -32003, + -32091, + -32178, + -32266, + -32353, + -32441, + -32528, + -32615, + -32703, + -32790, + -32877, + -32964, + -33051, + -33137, + -33224, + -33311, + -33397, + -33484, + -33570, + -33657, + -33743, + -33829, + -33915, + -34001, + -34087, + -34173, + -34259, + -34344, + -34430, + -34515, + -34601, + -34686, + -34771, + -34857, + -34942, + -35027, + -35112, + -35197, + -35281, + -35366, + -35451, + -35535, + -35620, + -35704, + -35788, + -35872, + -35957, + -36041, + -36125, + -36208, + -36292, + -36376, + -36459, + -36543, + -36626, + -36710, + -36793, + -36876, + -36959, + -37042, + -37125, + -37208, + -37291, + -37373, + -37456, + -37538, + -37621, + -37703, + -37785, + -37867, + -37949, + -38031, + -38113, + -38195, + -38277, + -38358, + -38440, + -38521, + -38602, + -38684, + -38765, + -38846, + -38927, + -39008, + -39088, + -39169, + -39250, + -39330, + -39410, + -39491, + -39571, + -39651, + -39731, + -39811, + -39891, + -39971, + -40050, + -40130, + -40209, + -40289, + -40368, + -40447, + -40526, + -40605, + -40684, + -40763, + -40841, + -40920, + -40998, + -41077, + -41155, + -41233, + -41311, + -41389, + -41467, + -41545, + -41623, + -41701, + -41778, + -41856, + -41933, + -42010, + -42087, + -42164, + -42241, + -42318, + -42395, + -42471, + -42548, + -42624, + -42701, + -42777, + -42853, + -42929, + -43005, + -43081, + -43157, + -43232, + -43308, + -43383, + -43458, + -43534, + -43609, + -43684, + -43759, + -43833, + -43908, + -43983, + -44057, + -44132, + -44206, + -44280, + -44354, + -44428, + -44502, + -44576, + -44649, + -44723, + -44796, + -44870, + -44943, + -45016, + -45089, + -45162, + -45235, + -45308, + -45380, + -45453, + -45525, + -45597, + -45670, + -45742, + -45814, + -45885, + -45957, + -46029, + -46100, + -46172, + -46243, + -46314, + -46385, + -46456, + -46527, + -46598, + -46669, + -46739, + -46810, + -46880, + -46950, + -47020, + -47090, + -47160, + -47230, + -47300, + -47369, + -47439, + -47508, + -47577, + -47646, + -47715, + -47784, + -47853, + -47921, + -47990, + -48058, + -48127, + -48195, + -48263, + -48331, + -48399, + -48467, + -48534, + -48602, + -48669, + -48736, + -48804, + -48871, + -48938, + -49004, + -49071, + -49138, + -49204, + -49271, + -49337, + -49403, + -49469, + -49535, + -49601, + -49666, + -49732, + -49797, + -49863, + -49928, + -49993, + -50058, + -50123, + -50187, + -50252, + -50316, + -50381, + -50445, + -50509, + -50573, + -50637, + -50701, + -50765, + -50828, + -50891, + -50955, + -51018, + -51081, + -51144, + -51207, + -51269, + -51332, + -51394, + -51457, + -51519, + -51581, + -51643, + -51705, + -51767, + -51828, + -51890, + -51951, + -52012, + -52073, + -52134, + -52195, + -52256, + -52317, + -52377, + -52438, + -52498, + -52558, + -52618, + -52678, + -52738, + -52797, + -52857, + -52916, + -52975, + -53035, + -53094, + -53152, + -53211, + -53270, + -53328, + -53387, + -53445, + -53503, + -53561, + -53619, + -53677, + -53734, + -53792, + -53849, + -53906, + -53964, + -54021, + -54077, + -54134, + -54191, + -54247, + -54304, + -54360, + -54416, + -54472, + -54528, + -54584, + -54639, + -54695, + -54750, + -54805, + -54860, + -54915, + -54970, + -55025, + -55079, + -55134, + -55188, + -55242, + -55296, + -55350, + -55404, + -55457, + -55511, + -55564, + -55618, + -55671, + -55724, + -55777, + -55829, + -55882, + -55934, + -55987, + -56039, + -56091, + -56143, + -56195, + -56246, + -56298, + -56349, + -56401, + -56452, + -56503, + -56554, + -56604, + -56655, + -56705, + -56756, + -56806, + -56856, + -56906, + -56956, + -57006, + -57055, + -57105, + -57154, + -57203, + -57252, + -57301, + -57350, + -57398, + -57447, + -57495, + -57543, + -57591, + -57639, + -57687, + -57735, + -57782, + -57829, + -57877, + -57924, + -57971, + -58018, + -58064, + -58111, + -58157, + -58204, + -58250, + -58296, + -58342, + -58387, + -58433, + -58478, + -58524, + -58569, + -58614, + -58659, + -58704, + -58748, + -58793, + -58837, + -58881, + -58925, + -58969, + -59013, + -59057, + -59100, + -59144, + -59187, + -59230, + -59273, + -59316, + -59359, + -59401, + -59444, + -59486, + -59528, + -59570, + -59612, + -59653, + -59695, + -59736, + -59778, + -59819, + -59860, + -59901, + -59941, + -59982, + -60022, + -60063, + -60103, + -60143, + -60183, + -60223, + -60262, + -60302, + -60341, + -60380, + -60419, + -60458, + -60497, + -60535, + -60574, + -60612, + -60650, + -60688, + -60726, + -60764, + -60802, + -60839, + -60876, + -60913, + -60950, + -60987, + -61024, + -61061, + -61097, + -61133, + -61170, + -61206, + -61241, + -61277, + -61313, + -61348, + -61384, + -61419, + -61454, + -61489, + -61523, + -61558, + -61592, + -61627, + -61661, + -61695, + -61729, + -61762, + -61796, + -61829, + -61862, + -61896, + -61929, + -61961, + -61994, + -62027, + -62059, + -62091, + -62123, + -62155, + -62187, + -62219, + -62250, + -62282, + -62313, + -62344, + -62375, + -62406, + -62436, + -62467, + -62497, + -62527, + -62557, + -62587, + -62617, + -62647, + -62676, + -62705, + -62735, + -62764, + -62792, + -62821, + -62850, + -62878, + -62906, + -62935, + -62962, + -62990, + -63018, + -63046, + -63073, + -63100, + -63127, + -63154, + -63181, + -63208, + -63234, + -63260, + -63287, + -63313, + -63339, + -63364, + -63390, + -63415, + -63441, + -63466, + -63491, + -63516, + -63540, + -63565, + -63589, + -63614, + -63638, + -63662, + -63685, + -63709, + -63733, + -63756, + -63779, + -63802, + -63825, + -63848, + -63870, + -63893, + -63915, + -63937, + -63959, + -63981, + -64003, + -64024, + -64046, + -64067, + -64088, + -64109, + -64130, + -64151, + -64171, + -64191, + -64212, + -64232, + -64251, + -64271, + -64291, + -64310, + -64330, + -64349, + -64368, + -64386, + -64405, + -64424, + -64442, + -64460, + -64478, + -64496, + -64514, + -64532, + -64549, + -64566, + -64584, + -64601, + -64617, + -64634, + -64651, + -64667, + -64683, + -64699, + -64715, + -64731, + -64747, + -64762, + -64778, + -64793, + -64808, + -64823, + -64837, + -64852, + -64866, + -64881, + -64895, + -64909, + -64922, + -64936, + -64950, + -64963, + -64976, + -64989, + -65002, + -65015, + -65027, + -65040, + -65052, + -65064, + -65076, + -65088, + -65100, + -65111, + -65123, + -65134, + -65145, + -65156, + -65166, + -65177, + -65187, + -65198, + -65208, + -65218, + -65228, + -65237, + -65247, + -65256, + -65265, + -65274, + -65283, + -65292, + -65301, + -65309, + -65317, + -65326, + -65333, + -65341, + -65349, + -65356, + -65364, + -65371, + -65378, + -65385, + -65392, + -65398, + -65405, + -65411, + -65417, + -65423, + -65429, + -65435, + -65440, + -65446, + -65451, + -65456, + -65461, + -65465, + -65470, + -65474, + -65479, + -65483, + -65487, + -65491, + -65494, + -65498, + -65501, + -65504, + -65507, + -65510, + -65513, + -65516, + -65518, + -65520, + -65522, + -65524, + -65526, + -65528, + -65529, + -65531, + -65532, + -65533, + -65534, + -65535, + -65535, + -65536, + -65536, + -65536, + -65536, + -65536, + -65535, + -65535, + -65534, + -65533, + -65532, + -65531, + -65530, + -65529, + -65527, + -65525, + -65523, + -65521, + -65519, + -65517, + -65514, + -65512, + -65509, + -65506, + -65503, + -65500, + -65496, + -65492, + -65489, + -65485, + -65481, + -65477, + -65472, + -65468, + -65463, + -65458, + -65453, + -65448, + -65443, + -65437, + -65432, + -65426, + -65420, + -65414, + -65408, + -65402, + -65395, + -65388, + -65382, + -65375, + -65367, + -65360, + -65353, + -65345, + -65337, + -65330, + -65321, + -65313, + -65305, + -65296, + -65288, + -65279, + -65270, + -65261, + -65252, + -65242, + -65232, + -65223, + -65213, + -65203, + -65193, + -65182, + -65172, + -65161, + -65150, + -65139, + -65128, + -65117, + -65105, + -65094, + -65082, + -65070, + -65058, + -65046, + -65034, + -65021, + -65008, + -64996, + -64983, + -64970, + -64956, + -64943, + -64929, + -64916, + -64902, + -64888, + -64873, + -64859, + -64845, + -64830, + -64815, + -64800, + -64785, + -64770, + -64755, + -64739, + -64723, + -64707, + -64691, + -64675, + -64659, + -64642, + -64626, + -64609, + -64592, + -64575, + -64558, + -64540, + -64523, + -64505, + -64487, + -64469, + -64451, + -64433, + -64414, + -64396, + -64377, + -64358, + -64339, + -64320, + -64301, + -64281, + -64261, + -64242, + -64222, + -64201, + -64181, + -64161, + -64140, + -64120, + -64099, + -64078, + -64056, + -64035, + -64014, + -63992, + -63970, + -63948, + -63926, + -63904, + -63882, + -63859, + -63836, + -63814, + -63791, + -63768, + -63744, + -63721, + -63697, + -63674, + -63650, + -63626, + -63601, + -63577, + -63553, + -63528, + -63503, + -63478, + -63453, + -63428, + -63403, + -63377, + -63351, + -63326, + -63300, + -63274, + -63247, + -63221, + -63194, + -63168, + -63141, + -63114, + -63087, + -63059, + -63032, + -63004, + -62976, + -62949, + -62920, + -62892, + -62864, + -62835, + -62807, + -62778, + -62749, + -62720, + -62691, + -62661, + -62632, + -62602, + -62572, + -62542, + -62512, + -62482, + -62452, + -62421, + -62390, + -62359, + -62328, + -62297, + -62266, + -62235, + -62203, + -62171, + -62139, + -62107, + -62075, + -62043, + -62010, + -61978, + -61945, + -61912, + -61879, + -61846, + -61813, + -61779, + -61745, + -61712, + -61678, + -61644, + -61609, + -61575, + -61541, + -61506, + -61471, + -61436, + -61401, + -61366, + -61331, + -61295, + -61259, + -61224, + -61188, + -61152, + -61115, + -61079, + -61042, + -61006, + -60969, + -60932, + -60895, + -60858, + -60820, + -60783, + -60745, + -60707, + -60669, + -60631, + -60593, + -60555, + -60516, + -60477, + -60439, + -60400, + -60361, + -60321, + -60282, + -60242, + -60203, + -60163, + -60123, + -60083, + -60043, + -60002, + -59962, + -59921, + -59880, + -59839, + -59798, + -59757, + -59716, + -59674, + -59633, + -59591, + -59549, + -59507, + -59465, + -59422, + -59380, + -59337, + -59294, + -59252, + -59209, + -59165, + -59122, + -59079, + -59035, + -58991, + -58947, + -58903, + -58859, + -58815, + -58771, + -58726, + -58681, + -58636, + -58591, + -58546, + -58501, + -58456, + -58410, + -58364, + -58319, + -58273, + -58227, + -58180, + -58134, + -58088, + -58041, + -57994, + -57947, + -57900, + -57853, + -57806, + -57758, + -57711, + -57663, + -57615, + -57567, + -57519, + -57471, + -57422, + -57374, + -57325, + -57276, + -57227, + -57178, + -57129, + -57080, + -57030, + -56981, + -56931, + -56881, + -56831, + -56781, + -56731, + -56680, + -56630, + -56579, + -56528, + -56477, + -56426, + -56375, + -56324, + -56272, + -56221, + -56169, + -56117, + -56065, + -56013, + -55961, + -55908, + -55856, + -55803, + -55750, + -55697, + -55644, + -55591, + -55538, + -55484, + -55431, + -55377, + -55323, + -55269, + -55215, + -55161, + -55106, + -55052, + -54997, + -54943, + -54888, + -54833, + -54778, + -54722, + -54667, + -54611, + -54556, + -54500, + -54444, + -54388, + -54332, + -54276, + -54219, + -54163, + -54106, + -54049, + -53992, + -53935, + -53878, + -53821, + -53763, + -53706, + -53648, + -53590, + -53532, + -53474, + -53416, + -53358, + -53299, + -53241, + -53182, + -53123, + -53064, + -53005, + -52946, + -52886, + -52827, + -52767, + -52708, + -52648, + -52588, + -52528, + -52468, + -52407, + -52347, + -52286, + -52226, + -52165, + -52104, + -52043, + -51982, + -51920, + -51859, + -51797, + -51736, + -51674, + -51612, + -51550, + -51488, + -51426, + -51363, + -51301, + -51238, + -51175, + -51112, + -51049, + -50986, + -50923, + -50860, + -50796, + -50733, + -50669, + -50605, + -50541, + -50477, + -50413, + -50349, + -50284, + -50220, + -50155, + -50090, + -50025, + -49960, + -49895, + -49830, + -49765, + -49699, + -49633, + -49568, + -49502, + -49436, + -49370, + -49304, + -49237, + -49171, + -49104, + -49038, + -48971, + -48904, + -48837, + -48770, + -48703, + -48635, + -48568, + -48500, + -48433, + -48365, + -48297, + -48229, + -48161, + -48093, + -48024, + -47956, + -47887, + -47818, + -47750, + -47681, + -47612, + -47542, + -47473, + -47404, + -47334, + -47265, + -47195, + -47125, + -47055, + -46985, + -46915, + -46845, + -46774, + -46704, + -46633, + -46563, + -46492, + -46421, + -46350, + -46279, + -46207, + -46136, + -46065, + -45993, + -45921, + -45850, + -45778, + -45706, + -45634, + -45561, + -45489, + -45417, + -45344, + -45271, + -45199, + -45126, + -45053, + -44980, + -44906, + -44833, + -44760, + -44686, + -44613, + -44539, + -44465, + -44391, + -44317, + -44243, + -44169, + -44094, + -44020, + -43945, + -43871, + -43796, + -43721, + -43646, + -43571, + -43496, + -43421, + -43345, + -43270, + -43194, + -43119, + -43043, + -42967, + -42891, + -42815, + -42739, + -42662, + -42586, + -42510, + -42433, + -42356, + -42280, + -42203, + -42126, + -42049, + -41971, + -41894, + -41817, + -41739, + -41662, + -41584, + -41506, + -41428, + -41351, + -41272, + -41194, + -41116, + -41038, + -40959, + -40881, + -40802, + -40723, + -40644, + -40566, + -40487, + -40407, + -40328, + -40249, + -40169, + -40090, + -40010, + -39931, + -39851, + -39771, + -39691, + -39611, + -39531, + -39451, + -39370, + -39290, + -39209, + -39129, + -39048, + -38967, + -38886, + -38805, + -38724, + -38643, + -38562, + -38480, + -38399, + -38317, + -38236, + -38154, + -38072, + -37990, + -37908, + -37826, + -37744, + -37662, + -37580, + -37497, + -37415, + -37332, + -37249, + -37167, + -37084, + -37001, + -36918, + -36835, + -36751, + -36668, + -36585, + -36501, + -36418, + -36334, + -36250, + -36167, + -36083, + -35999, + -35915, + -35830, + -35746, + -35662, + -35577, + -35493, + -35408, + -35324, + -35239, + -35154, + -35069, + -34984, + -34899, + -34814, + -34729, + -34643, + -34558, + -34473, + -34387, + -34301, + -34216, + -34130, + -34044, + -33958, + -33872, + -33786, + -33700, + -33613, + -33527, + -33441, + -33354, + -33267, + -33181, + -33094, + -33007, + -32920, + -32833, + -32746, + -32659, + -32572, + -32485, + -32397, + -32310, + -32222, + -32135, + -32047, + -31959, + -31871, + -31783, + -31696, + -31607, + -31519, + -31431, + -31343, + -31255, + -31166, + -31078, + -30989, + -30900, + -30812, + -30723, + -30634, + -30545, + -30456, + -30367, + -30278, + -30189, + -30099, + -30010, + -29921, + -29831, + -29742, + -29652, + -29562, + -29472, + -29383, + -29293, + -29203, + -29113, + -29022, + -28932, + -28842, + -28752, + -28661, + -28571, + -28480, + -28390, + -28299, + -28208, + -28118, + -28027, + -27936, + -27845, + -27754, + -27663, + -27571, + -27480, + -27389, + -27297, + -27206, + -27114, + -27023, + -26931, + -26839, + -26748, + -26656, + -26564, + -26472, + -26380, + -26288, + -26196, + -26104, + -26011, + -25919, + -25827, + -25734, + -25642, + -25549, + -25456, + -25364, + -25271, + -25178, + -25085, + -24992, + -24899, + -24806, + -24713, + -24620, + -24527, + -24434, + -24340, + -24247, + -24153, + -24060, + -23966, + -23873, + -23779, + -23685, + -23592, + -23498, + -23404, + -23310, + -23216, + -23122, + -23028, + -22934, + -22839, + -22745, + -22651, + -22556, + -22462, + -22367, + -22273, + -22178, + -22084, + -21989, + -21894, + -21799, + -21704, + -21610, + -21515, + -21420, + -21325, + -21229, + -21134, + -21039, + -20944, + -20849, + -20753, + -20658, + -20562, + -20467, + -20371, + -20276, + -20180, + -20084, + -19989, + -19893, + -19797, + -19701, + -19605, + -19509, + -19413, + -19317, + -19221, + -19125, + -19029, + -18932, + -18836, + -18740, + -18643, + -18547, + -18450, + -18354, + -18257, + -18161, + -18064, + -17967, + -17871, + -17774, + -17677, + -17580, + -17483, + -17387, + -17290, + -17193, + -17095, + -16998, + -16901, + -16804, + -16707, + -16610, + -16512, + -16415, + -16318, + -16220, + -16123, + -16025, + -15928, + -15830, + -15733, + -15635, + -15537, + -15440, + -15342, + -15244, + -15146, + -15048, + -14951, + -14853, + -14755, + -14657, + -14559, + -14461, + -14362, + -14264, + -14166, + -14068, + -13970, + -13871, + -13773, + -13675, + -13577, + -13478, + -13380, + -13281, + -13183, + -13084, + -12986, + -12887, + -12789, + -12690, + -12591, + -12493, + -12394, + -12295, + -12196, + -12097, + -11999, + -11900, + -11801, + -11702, + -11603, + -11504, + -11405, + -11306, + -11207, + -11108, + -11009, + -10910, + -10810, + -10711, + -10612, + -10513, + -10413, + -10314, + -10215, + -10116, + -10016, + -9917, + -9817, + -9718, + -9618, + -9519, + -9419, + -9320, + -9220, + -9121, + -9021, + -8922, + -8822, + -8722, + -8623, + -8523, + -8423, + -8324, + -8224, + -8124, + -8024, + -7924, + -7825, + -7725, + -7625, + -7525, + -7425, + -7325, + -7225, + -7125, + -7025, + -6925, + -6825, + -6725, + -6625, + -6525, + -6425, + -6325, + -6225, + -6125, + -6025, + -5925, + -5825, + -5724, + -5624, + -5524, + -5424, + -5324, + -5223, + -5123, + -5023, + -4923, + -4822, + -4722, + -4622, + -4521, + -4421, + -4321, + -4220, + -4120, + -4020, + -3919, + -3819, + -3719, + -3618, + -3518, + -3417, + -3317, + -3216, + -3116, + -3016, + -2915, + -2815, + -2714, + -2614, + -2513, + -2413, + -2312, + -2212, + -2111, + -2011, + -1910, + -1810, + -1709, + -1609, + -1508, + -1408, + -1307, + -1207, + -1106, + -1006, + -905, + -804, + -704, + -603, + -503, + -402, + -302, + -201, + -101, + 0 +}; \ No newline at end of file diff --git a/gen_math_tables.py b/gen_math_tables.py new file mode 100644 index 0000000..7e0280a --- /dev/null +++ b/gen_math_tables.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python3 +import math + +N = 4096 +FIXED_ONE = 65536 + +def generate_table(func_name, math_func): + """Generate a table for the given math function""" + with open(f"axl_{func_name}_table.inc", "w") as file: + file.write(f"//{func_name}[{N}] - fixed point 16.16\n") + file.write("//Generated by gen_math_tables.py\n\n") + file.write(f"static inline f16_16 axl_{func_name}_table[{N}] = \n{{\n") + for i in range(N): + angle = i * 2.0 * math.pi / (N - 1) + value = math_func(angle) + fixed_value = round(value * FIXED_ONE) + file.write(f"\t{fixed_value}{',' if i < N - 1 else ''}\n") + file.write("};") + +def main(): + generate_table("sin", math.sin) + generate_table("cos", math.cos) + print("Generated sin and cos tables") + +if __name__ == "__main__": + main()