|
- // Copyright 2014 Olivier Gillet.
- //
- // Author: Olivier Gillet (ol.gillet@gmail.com)
- //
- // Permission is hereby granted, free of charge, to any person obtaining a copy
- // of this software and associated documentation files (the "Software"), to deal
- // in the Software without restriction, including without limitation the rights
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- // copies of the Software, and to permit persons to whom the Software is
- // furnished to do so, subject to the following conditions:
- //
- // The above copyright notice and this permission notice shall be included in
- // all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- // THE SOFTWARE.
- //
- // See http://creativecommons.org/licenses/MIT/ for more information.
- //
- // -----------------------------------------------------------------------------
- //
- // Fast arc-tangent routines.
-
- #include "stmlib/dsp/atan.h"
-
- namespace stmlib {
-
- /* extern */
- const uint16_t atan_lut[513] = {
- 0, 20, 40, 61, 81, 101, 122, 142,
- 162, 183, 203, 224, 244, 264, 285, 305,
- 326, 346, 366, 387, 407, 427, 448, 468,
- 489, 509, 529, 550, 570, 591, 611, 631,
- 652, 672, 693, 713, 733, 754, 774, 795,
- 815, 836, 856, 877, 897, 917, 938, 958,
- 979, 999, 1020, 1040, 1061, 1081, 1102, 1122,
- 1143, 1163, 1184, 1204, 1225, 1245, 1266, 1286,
- 1307, 1327, 1348, 1368, 1389, 1409, 1430, 1451,
- 1471, 1492, 1512, 1533, 1554, 1574, 1595, 1615,
- 1636, 1657, 1677, 1698, 1719, 1739, 1760, 1780,
- 1801, 1822, 1843, 1863, 1884, 1905, 1925, 1946,
- 1967, 1988, 2008, 2029, 2050, 2071, 2091, 2112,
- 2133, 2154, 2175, 2195, 2216, 2237, 2258, 2279,
- 2300, 2321, 2342, 2362, 2383, 2404, 2425, 2446,
- 2467, 2488, 2509, 2530, 2551, 2572, 2593, 2614,
- 2635, 2656, 2677, 2698, 2719, 2740, 2761, 2783,
- 2804, 2825, 2846, 2867, 2888, 2910, 2931, 2952,
- 2973, 2994, 3016, 3037, 3058, 3079, 3101, 3122,
- 3143, 3165, 3186, 3207, 3229, 3250, 3272, 3293,
- 3315, 3336, 3357, 3379, 3400, 3422, 3443, 3465,
- 3487, 3508, 3530, 3551, 3573, 3595, 3616, 3638,
- 3660, 3681, 3703, 3725, 3747, 3768, 3790, 3812,
- 3834, 3856, 3877, 3899, 3921, 3943, 3965, 3987,
- 4009, 4031, 4053, 4075, 4097, 4119, 4141, 4163,
- 4185, 4207, 4230, 4252, 4274, 4296, 4318, 4341,
- 4363, 4385, 4408, 4430, 4452, 4475, 4497, 4520,
- 4542, 4565, 4587, 4610, 4632, 4655, 4677, 4700,
- 4723, 4745, 4768, 4791, 4813, 4836, 4859, 4882,
- 4905, 4927, 4950, 4973, 4996, 5019, 5042, 5065,
- 5088, 5111, 5134, 5158, 5181, 5204, 5227, 5250,
- 5274, 5297, 5320, 5344, 5367, 5390, 5414, 5437,
- 5461, 5484, 5508, 5532, 5555, 5579, 5603, 5626,
- 5650, 5674, 5698, 5721, 5745, 5769, 5793, 5817,
- 5841, 5865, 5889, 5914, 5938, 5962, 5986, 6010,
- 6035, 6059, 6084, 6108, 6132, 6157, 6181, 6206,
- 6231, 6255, 6280, 6305, 6330, 6354, 6379, 6404,
- 6429, 6454, 6479, 6504, 6529, 6554, 6580, 6605,
- 6630, 6656, 6681, 6706, 6732, 6757, 6783, 6809,
- 6834, 6860, 6886, 6912, 6937, 6963, 6989, 7015,
- 7041, 7068, 7094, 7120, 7146, 7173, 7199, 7225,
- 7252, 7278, 7305, 7332, 7358, 7385, 7412, 7439,
- 7466, 7493, 7520, 7547, 7574, 7602, 7629, 7656,
- 7684, 7711, 7739, 7767, 7795, 7822, 7850, 7878,
- 7906, 7934, 7962, 7991, 8019, 8047, 8076, 8104,
- 8133, 8162, 8190, 8219, 8248, 8277, 8306, 8335,
- 8365, 8394, 8423, 8453, 8483, 8512, 8542, 8572,
- 8602, 8632, 8662, 8692, 8723, 8753, 8784, 8814,
- 8845, 8876, 8907, 8938, 8969, 9000, 9032, 9063,
- 9095, 9127, 9158, 9190, 9223, 9255, 9287, 9319,
- 9352, 9385, 9418, 9451, 9484, 9517, 9550, 9584,
- 9617, 9651, 9685, 9719, 9753, 9788, 9822, 9857,
- 9892, 9927, 9962, 9998, 10033, 10069, 10105, 10141,
- 10177, 10213, 10250, 10287, 10324, 10361, 10399, 10436,
- 10474, 10512, 10550, 10589, 10628, 10667, 10706, 10745,
- 10785, 10825, 10865, 10906, 10946, 10988, 11029, 11070,
- 11112, 11155, 11197, 11240, 11283, 11327, 11371, 11415,
- 11460, 11505, 11550, 11596, 11642, 11688, 11736, 11783,
- 11831, 11879, 11928, 11978, 12028, 12078, 12129, 12181,
- 12233, 12286, 12340, 12394, 12449, 12505, 12561, 12618,
- 12676, 12735, 12795, 12856, 12918, 12981, 13045, 13111,
- 13177, 13245, 13315, 13386, 13459, 13533, 13610, 13688,
- 13769, 13853, 13939, 14028, 14121, 14218, 14319, 14425,
- 14537, 14657, 14785, 14925, 15079, 15254, 15461, 15731,
- 16383,
- };
-
- // Generated with:
- // static void init_atan_lut() {
- // for (size_t i = 0; i < 513; ++i) {
- // atan_lut[i] = 65536.0 / (2 * M_PI) * asinf(i / 512.0f);
- // printf("%5d, ", atan_lut[i]);
- // if (i % 8 == 7) {
- // printf("\n");
- // }
- // }
- // printf("\n");
- // }
-
- } // namespace stmlib
|