#ifndef NONLINEAR_LOOK_UP_TABLE_H #define NONLINEAR_LOOK_UP_TABLE_H #include "os_types.h" int8_t sigmoid_look_up[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 12, 12, 13, 14, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 26, 27, 29, 30, 31, 33, 34, 36, 38, 39, 41, 43, 45, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 83, 85, 87, 89, 90, 92, 94, 95, 97, 98, 99, 101, 102, 103, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 114, 115, 116, 116, 117, 118, 118, 119, 119, 120, 120, 121, 121, 122, 122, 122, 123, 123, 123, 124, 124, 124, 124, 124, 125, 125, 125, 125, 125, 126, 126, 126, 126, 126, 126, 126, 126, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127 }; int16_t sigmoid_look_up_16[] = { 11, 12, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 25, 26, 28, 30, 32, 34, 36, 38, 41, 43, 46, 49, 52, 56, 59, 63, 67, 72, 76, 81, 86, 92, 98, 104, 111, 118, 125, 133, 142, 151, 161, 171, 182, 194, 206, 219, 233, 248, 264, 281, 299, 318, 338, 360, 383, 407, 433, 461, 490, 521, 554, 589, 627, 666, 708, 753, 800, 851, 904, 961, 1021, 1084, 1152, 1223, 1299, 1379, 1464, 1554, 1649, 1750, 1856, 1969, 2088, 2213, 2346, 2486, 2633, 2789, 2952, 3124, 3306, 3496, 3696, 3906, 4126, 4357, 4599, 4851, 5115, 5391, 5678, 5978, 6289, 6613, 6949, 7297, 7658, 8031, 8416, 8813, 9221, 9641, 10072, 10513, 10964, 11424, 11894, 12371, 12856, 13348, 13845, 14347, 14852, 15361, 15872, 16384, 16896, 17407, 17916, 18421, 18923, 19420, 19912, 20397, 20874, 21344, 21804, 22255, 22696, 23127, 23547, 23955, 24352, 24737, 25110, 25471, 25819, 26155, 26479, 26790, 27090, 27377, 27653, 27917, 28169, 28411, 28642, 28862, 29072, 29272, 29462, 29644, 29816, 29979, 30135, 30282, 30422, 30555, 30680, 30799, 30912, 31018, 31119, 31214, 31304, 31389, 31469, 31545, 31616, 31684, 31747, 31807, 31864, 31917, 31968, 32015, 32060, 32102, 32141, 32179, 32214, 32247, 32278, 32307, 32335, 32361, 32385, 32408, 32430, 32450, 32469, 32487, 32504, 32520, 32535, 32549, 32562, 32574, 32586, 32597, 32607, 32617, 32626, 32635, 32643, 32650, 32657, 32664, 32670, 32676, 32682, 32687, 32692, 32696, 32701, 32705, 32709, 32712, 32716, 32719, 32722, 32725, 32727, 32730, 32732, 32734, 32736, 32738, 32740, 32742, 32743, 32745, 32746, 32747, 32749, 32750, 32751, 32752, 32753, 32754, 32755, 32756, 32756, 32757, 32757 }; int16_t tanh_look_up_16[] = { -32746, -32745, -32743, -32741, -32740, -32738, -32736, -32734, -32732, -32729, -32727, -32724, -32721, -32718, -32715, -32712, -32708, -32704, -32700, -32696, -32691, -32686, -32681, -32676, -32670, -32663, -32657, -32649, -32642, -32634, -32625, -32616, -32606, -32596, -32584, -32573, -32560, -32547, -32532, -32517, -32501, -32484, -32466, -32447, -32426, -32404, -32381, -32356, -32329, -32301, -32271, -32240, -32206, -32170, -32132, -32091, -32048, -32002, -31953, -31901, -31846, -31788, -31726, -31659, -31589, -31515, -31435, -31351, -31262, -31167, -31067, -30960, -30847, -30727, -30600, -30465, -30322, -30170, -30010, -29840, -29660, -29470, -29268, -29055, -28830, -28592, -28341, -28076, -27797, -27502, -27191, -26864, -26519, -26157, -25776, -25376, -24956, -24516, -24054, -23571, -23066, -22538, -21986, -21411, -20813, -20189, -19542, -18870, -18173, -17452, -16706, -15936, -15143, -14326, -13486, -12625, -11743, -10840, -9919, -8980, -8025, -7056, -6073, -5079, -4075, -3063, -2045, -1024, 0, 1024, 2045, 3063, 4075, 5079, 6073, 7056, 8025, 8980, 9919, 10840, 11743, 12625, 13486, 14326, 15143, 15936, 16706, 17452, 18173, 18870, 19542, 20189, 20813, 21411, 21986, 22538, 23066, 23571, 24054, 24516, 24956, 25376, 25776, 26157, 26519, 26864, 27191, 27502, 27797, 28076, 28341, 28592, 28830, 29055, 29268, 29470, 29660, 29840, 30010, 30170, 30322, 30465, 30600, 30727, 30847, 30960, 31067, 31167, 31262, 31351, 31435, 31515, 31589, 31659, 31726, 31788, 31846, 31901, 31953, 32002, 32048, 32091, 32132, 32170, 32206, 32240, 32271, 32301, 32329, 32356, 32381, 32404, 32426, 32447, 32466, 32484, 32501, 32517, 32532, 32547, 32560, 32573, 32584, 32596, 32606, 32616, 32625, 32634, 32642, 32649, 32657, 32663, 32670, 32676, 32681, 32686, 32691, 32696, 32700, 32704, 32708, 32712, 32715, 32718, 32721, 32724, 32727, 32729, 32732, 32734, 32736, 32738, 32740, 32741, 32743, 32745, 32746, 32746 }; int8_t tanh_look_up[] = { -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -126, -126, -126, -126, -126, -126, -126, -126, -126, -125, -125, -125, -125, -125, -124, -124, -124, -124, -123, -123, -123, -122, -122, -122, -121, -121, -120, -120, -120, -119, -118, -118, -117, -117, -116, -115, -114, -113, -113, -112, -111, -110, -109, -107, -106, -105, -104, -102, -101, -99, -97, -96, -94, -92, -90, -88, -86, -84, -81, -79, -76, -74, -71, -68, -65, -62, -59, -56, -53, -49, -46, -42, -39, -35, -31, -28, -24, -20, -16, -12, -8, -4, 0, 4, 8, 12, 16, 20, 24, 28, 31, 35, 39, 42, 46, 49, 53, 56, 59, 62, 65, 68, 71, 74, 76, 79, 81, 84, 86, 88, 90, 92, 94, 96, 97, 99, 101, 102, 104, 105, 106, 107, 109, 110, 111, 112, 113, 113, 114, 115, 116, 117, 117, 118, 118, 119, 120, 120, 120, 121, 121, 122, 122, 122, 123, 123, 123, 124, 124, 124, 124, 125, 125, 125, 125, 125, 126, 126, 126, 126, 126, 126, 126, 126, 126, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127 }; uint16_t exp_minus_x_look_up[] = { 65535, 61565, 57835, 54331, 51039, 47947, 45042, 42313, 39750, 37341, 35079, 32954, 30957, 29081, 27319, 25664, 24109, 22649, 21276, 19987, 18776, 17639, 16570, 15566, 14623, 13737, 12905, 12123, 11388, 10698, 10050, 9441, 8869, 8332, 7827, 7353, 6907, 6489, 6096, 5726, 5380, 5054, 4747, 4460, 4190, 3936, 3697, 3473, 3263, 3065, 2879, 2705, 2541, 2387, 2243, 2107, 1979, 1859, 1746, 1641, 1541, 1448, 1360, 1278, 1200, 1128, 1059, 995, 935, 878, 825, 775, 728, 684, 642, 604, 567, 533, 500, 470, 442, 415, 390, 366, 344, 323, 303, 285, 268, 252, 236, 222, 209, 196, 184, 173, 162, 153, 143, 135, 127, 119, 112, 105, 99, 93, 87, 82, 77, 72, 68, 64, 60, 56, 53, 50, 47, 44, 41, 39, 36, 34, 32, 30, 28, 27, 25, 23, 22 }; int8_t log_exp8[] = { 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 18, 17, 17, 16, 16, 16, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 11, 10, 10, 10, 9, 9, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; int16_t log_exp16[] = { 2839, 2713, 2591, 2473, 2359, 2249, 2143, 2040, 1942, 1847, 1756, 1669, 1585, 1504, 1427, 1354, 1283, 1216, 1152, 1090, 1032, 976, 923, 873, 825, 779, 736, 695, 656, 619, 584, 551, 520, 490, 462, 436, 410, 387, 364, 343, 323, 304, 286, 270, 254, 239, 225, 212, 199, 187, 176, 166, 156, 147, 138, 130, 122, 115, 108, 101, 95, 90, 84, 79, 74, 70, 66, 62, 58, 55, 51, 48, 45, 43, 40, 38, 35, 33, 31, 29, 28, 26, 24, 23, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 11, 10, 10, 9, 8, 8, 7, 7, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1 }; int32_t log_exp32[] = { 186065279, 177807722, 169812011, 162077380, 154602561, 147385792, 140424832, 133716974, 127259071, 121047555, 115078462, 109347464, 103849895, 98580782, 93534880, 88706700, 84090544, 79680539, 75470665, 71454790, 67626698, 63980117, 60508748, 57206290, 54066465, 51083037, 48249833, 45560766, 43009843, 40591187, 38299044, 36127799, 34071979, 32126265, 30285500, 28544686, 26898993, 25343763, 23874506, 22486902, 21176802, 19940225, 18773356, 17672544, 16634298, 15655285, 14732323, 13862380, 13042568, 12270138, 11542477, 10857102, 10211653, 9603893, 9031699, 8493059, 7986067, 7508918, 7059905, 6637410, 6239907, 5865950, 5514175, 5183292, 4872084, 4579403, 4304163, 4045342, 3801974, 3573150, 3358012, 3155752, 2965606, 2786859, 2618832, 2460890, 2312433, 2172895, 2041745, 1918483, 1802638, 1693765, 1591449, 1495296, 1404937, 1320025, 1240233, 1165254, 1094799, 1028595, 966388, 907936, 853014, 801410, 752923, 707366, 664562, 624345, 586559, 551058, 517703, 486365, 456923, 429261, 403273, 378857, 355919, 334368, 314122, 295101, 277231, 260442, 244670, 229852, 215932, 202854, 190568, 179026, 168183, 157996, 148426, 139436, 130990, 123056, 115602, 108599, 102021, 95841, 90035 }; #endif