summaryrefslogtreecommitdiffstats
path: root/apps/plugins/pdbox
diff options
context:
space:
mode:
authorWincent Balin <wincent@rockbox.org>2010-06-03 22:03:37 +0000
committerWincent Balin <wincent@rockbox.org>2010-06-03 22:03:37 +0000
commit2e5b1b1a9cab0ff19170815fda13f40268126027 (patch)
treef5bdfad43f09a329c7b07d15b0d5f44505ce7ecd /apps/plugins/pdbox
parent2438d8b58467d9498ab2009636d3df50447390bc (diff)
downloadrockbox-2e5b1b1a9cab0ff19170815fda13f40268126027.tar.gz
rockbox-2e5b1b1a9cab0ff19170815fda13f40268126027.zip
pdbox: Applied several changes by Buschel. Reintroduced compilation for iPods.
Changes by Buschel: * Reduced footprint by making cosine table of size 1^13 instead of 1^15 * Corrected interpolation in the cos~ object * Optimized multiplication on ARM platforms git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26534 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/pdbox')
-rw-r--r--apps/plugins/pdbox/PDa/intern/cos_table.c1037
-rw-r--r--apps/plugins/pdbox/PDa/intern/cos_table.h4
-rw-r--r--apps/plugins/pdbox/PDa/intern/cos~.c12
-rw-r--r--apps/plugins/pdbox/PDa/src/m_fixed.h16
4 files changed, 1067 insertions, 2 deletions
diff --git a/apps/plugins/pdbox/PDa/intern/cos_table.c b/apps/plugins/pdbox/PDa/intern/cos_table.c
index df2dc61c40..cd014cb084 100644
--- a/apps/plugins/pdbox/PDa/intern/cos_table.c
+++ b/apps/plugins/pdbox/PDa/intern/cos_table.c
@@ -1,4 +1,1037 @@
#include "../src/m_pd.h"
+
+#ifdef ROCKBOX
+#include "plugin.h"
+
+t_sample cos_table[] ICONST_ATTR =
+{
+ 262144, 262144, 262144, 262143, 262143, 262142, 262141, 262140,
+ 262139, 262138, 262136, 262135, 262133, 262131, 262129, 262127,
+ 262124, 262122, 262119, 262116, 262113, 262110, 262107, 262103,
+ 262100, 262096, 262092, 262088, 262084, 262079, 262075, 262070,
+ 262065, 262060, 262055, 262050, 262044, 262038, 262033, 262027,
+ 262021, 262014, 262008, 262001, 261995, 261988, 261981, 261974,
+ 261966, 261959, 261951, 261943, 261936, 261927, 261919, 261911,
+ 261902, 261894, 261885, 261876, 261866, 261857, 261848, 261838,
+ 261828, 261818, 261808, 261798, 261788, 261777, 261766, 261755,
+ 261744, 261733, 261722, 261710, 261699, 261687, 261675, 261663,
+ 261651, 261638, 261626, 261613, 261600, 261587, 261574, 261561,
+ 261547, 261533, 261520, 261506, 261492, 261477, 261463, 261448,
+ 261434, 261419, 261404, 261389, 261373, 261358, 261342, 261326,
+ 261310, 261294, 261278, 261262, 261245, 261228, 261212, 261195,
+ 261177, 261160, 261143, 261125, 261107, 261089, 261071, 261053,
+ 261034, 261016, 260997, 260978, 260959, 260940, 260921, 260901,
+ 260882, 260862, 260842, 260822, 260802, 260781, 260761, 260740,
+ 260719, 260698, 260677, 260656, 260634, 260613, 260591, 260569,
+ 260547, 260525, 260502, 260480, 260457, 260434, 260411, 260388,
+ 260365, 260341, 260317, 260294, 260270, 260246, 260221, 260197,
+ 260173, 260148, 260123, 260098, 260073, 260048, 260022, 259997,
+ 259971, 259945, 259919, 259893, 259866, 259840, 259813, 259786,
+ 259759, 259732, 259705, 259677, 259650, 259622, 259594, 259566,
+ 259538, 259509, 259481, 259452, 259423, 259395, 259365, 259336,
+ 259307, 259277, 259247, 259217, 259187, 259157, 259127, 259096,
+ 259066, 259035, 259004, 258973, 258942, 258910, 258879, 258847,
+ 258815, 258783, 258751, 258719, 258686, 258654, 258621, 258588,
+ 258555, 258522, 258488, 258455, 258421, 258387, 258353, 258319,
+ 258285, 258250, 258216, 258181, 258146, 258111, 258076, 258040,
+ 258005, 257969, 257933, 257897, 257861, 257825, 257789, 257752,
+ 257715, 257678, 257641, 257604, 257567, 257529, 257492, 257454,
+ 257416, 257378, 257340, 257301, 257263, 257224, 257185, 257146,
+ 257107, 257068, 257028, 256989, 256949, 256909, 256869, 256829,
+ 256788, 256748, 256707, 256666, 256625, 256584, 256543, 256502,
+ 256460, 256418, 256376, 256334, 256292, 256250, 256207, 256165,
+ 256122, 256079, 256036, 255993, 255949, 255906, 255862, 255818,
+ 255774, 255730, 255686, 255642, 255597, 255552, 255507, 255462,
+ 255417, 255372, 255326, 255281, 255235, 255189, 255143, 255097,
+ 255050, 255004, 254957, 254910, 254863, 254816, 254769, 254721,
+ 254674, 254626, 254578, 254530, 254482, 254434, 254385, 254337,
+ 254288, 254239, 254190, 254141, 254091, 254042, 253992, 253942,
+ 253892, 253842, 253792, 253741, 253691, 253640, 253589, 253538,
+ 253487, 253436, 253384, 253333, 253281, 253229, 253177, 253125,
+ 253072, 253020, 252967, 252914, 252861, 252808, 252755, 252702,
+ 252648, 252594, 252541, 252487, 252432, 252378, 252324, 252269,
+ 252214, 252159, 252104, 252049, 251994, 251938, 251883, 251827,
+ 251771, 251715, 251659, 251602, 251546, 251489, 251432, 251375,
+ 251318, 251261, 251204, 251146, 251088, 251031, 250973, 250914,
+ 250856, 250798, 250739, 250680, 250622, 250562, 250503, 250444,
+ 250385, 250325, 250265, 250205, 250145, 250085, 250025, 249964,
+ 249903, 249843, 249782, 249721, 249659, 249598, 249536, 249475,
+ 249413, 249351, 249289, 249227, 249164, 249102, 249039, 248976,
+ 248913, 248850, 248787, 248723, 248660, 248596, 248532, 248468,
+ 248404, 248340, 248275, 248211, 248146, 248081, 248016, 247951,
+ 247885, 247820, 247754, 247688, 247622, 247556, 247490, 247424,
+ 247357, 247291, 247224, 247157, 247090, 247023, 246955, 246888,
+ 246820, 246752, 246684, 246616, 246548, 246480, 246411, 246342,
+ 246274, 246205, 246136, 246066, 245997, 245927, 245858, 245788,
+ 245718, 245648, 245577, 245507, 245436, 245366, 245295, 245224,
+ 245153, 245081, 245010, 244938, 244867, 244795, 244723, 244651,
+ 244578, 244506, 244433, 244361, 244288, 244215, 244142, 244068,
+ 243995, 243921, 243848, 243774, 243700, 243626, 243551, 243477,
+ 243402, 243328, 243253, 243178, 243103, 243027, 242952, 242876,
+ 242800, 242725, 242649, 242572, 242496, 242420, 242343, 242266,
+ 242189, 242112, 242035, 241958, 241881, 241803, 241725, 241647,
+ 241569, 241491, 241413, 241334, 241256, 241177, 241098, 241019,
+ 240940, 240861, 240781, 240702, 240622, 240542, 240462, 240382,
+ 240302, 240221, 240141, 240060, 239979, 239898, 239817, 239736,
+ 239655, 239573, 239491, 239410, 239328, 239245, 239163, 239081,
+ 238998, 238916, 238833, 238750, 238667, 238583, 238500, 238417,
+ 238333, 238249, 238165, 238081, 237997, 237913, 237828, 237743,
+ 237659, 237574, 237489, 237403, 237318, 237233, 237147, 237061,
+ 236975, 236889, 236803, 236717, 236630, 236544, 236457, 236370,
+ 236283, 236196, 236109, 236021, 235934, 235846, 235758, 235670,
+ 235582, 235494, 235405, 235317, 235228, 235139, 235050, 234961,
+ 234872, 234783, 234693, 234604, 234514, 234424, 234334, 234244,
+ 234153, 234063, 233972, 233882, 233791, 233700, 233609, 233517,
+ 233426, 233334, 233243, 233151, 233059, 232967, 232874, 232782,
+ 232689, 232597, 232504, 232411, 232318, 232225, 232131, 232038,
+ 231944, 231850, 231757, 231663, 231568, 231474, 231380, 231285,
+ 231190, 231096, 231001, 230905, 230810, 230715, 230619, 230524,
+ 230428, 230332, 230236, 230140, 230043, 229947, 229850, 229753,
+ 229657, 229560, 229462, 229365, 229268, 229170, 229072, 228975,
+ 228877, 228779, 228680, 228582, 228483, 228385, 228286, 228187,
+ 228088, 227989, 227890, 227790, 227691, 227591, 227491, 227391,
+ 227291, 227191, 227090, 226990, 226889, 226788, 226688, 226586,
+ 226485, 226384, 226283, 226181, 226079, 225977, 225875, 225773,
+ 225671, 225569, 225466, 225364, 225261, 225158, 225055, 224952,
+ 224848, 224745, 224641, 224538, 224434, 224330, 224226, 224122,
+ 224017, 223913, 223808, 223703, 223599, 223493, 223388, 223283,
+ 223178, 223072, 222966, 222861, 222755, 222649, 222542, 222436,
+ 222330, 222223, 222116, 222010, 221903, 221795, 221688, 221581,
+ 221473, 221366, 221258, 221150, 221042, 220934, 220826, 220717,
+ 220609, 220500, 220391, 220282, 220173, 220064, 219955, 219845,
+ 219736, 219626, 219516, 219406, 219296, 219186, 219075, 218965,
+ 218854, 218744, 218633, 218522, 218411, 218299, 218188, 218076,
+ 217965, 217853, 217741, 217629, 217517, 217405, 217292, 217180,
+ 217067, 216954, 216841, 216728, 216615, 216502, 216388, 216275,
+ 216161, 216047, 215933, 215819, 215705, 215591, 215476, 215362,
+ 215247, 215132, 215017, 214902, 214787, 214672, 214556, 214441,
+ 214325, 214209, 214093, 213977, 213861, 213745, 213628, 213511,
+ 213395, 213278, 213161, 213044, 212927, 212809, 212692, 212574,
+ 212456, 212339, 212221, 212103, 211984, 211866, 211748, 211629,
+ 211510, 211391, 211272, 211153, 211034, 210915, 210795, 210676,
+ 210556, 210436, 210316, 210196, 210076, 209956, 209835, 209715,
+ 209594, 209473, 209352, 209231, 209110, 208989, 208867, 208746,
+ 208624, 208502, 208380, 208258, 208136, 208014, 207891, 207769,
+ 207646, 207523, 207400, 207277, 207154, 207031, 206907, 206784,
+ 206660, 206537, 206413, 206289, 206165, 206040, 205916, 205791,
+ 205667, 205542, 205417, 205292, 205167, 205042, 204917, 204791,
+ 204666, 204540, 204414, 204288, 204162, 204036, 203910, 203783,
+ 203657, 203530, 203403, 203276, 203149, 203022, 202895, 202768,
+ 202640, 202512, 202385, 202257, 202129, 202001, 201873, 201744,
+ 201616, 201487, 201359, 201230, 201101, 200972, 200843, 200713,
+ 200584, 200454, 200325, 200195, 200065, 199935, 199805, 199675,
+ 199545, 199414, 199284, 199153, 199022, 198891, 198760, 198629,
+ 198498, 198366, 198235, 198103, 197972, 197840, 197708, 197576,
+ 197443, 197311, 197179, 197046, 196913, 196781, 196648, 196515,
+ 196382, 196248, 196115, 195982, 195848, 195714, 195580, 195446,
+ 195312, 195178, 195044, 194910, 194775, 194640, 194506, 194371,
+ 194236, 194101, 193966, 193830, 193695, 193559, 193424, 193288,
+ 193152, 193016, 192880, 192744, 192607, 192471, 192334, 192198,
+ 192061, 191924, 191787, 191650, 191513, 191375, 191238, 191100,
+ 190963, 190825, 190687, 190549, 190411, 190272, 190134, 189996,
+ 189857, 189718, 189580, 189441, 189302, 189162, 189023, 188884,
+ 188744, 188605, 188465, 188325, 188185, 188045, 187905, 187765,
+ 187625, 187484, 187343, 187203, 187062, 186921, 186780, 186639,
+ 186498, 186356, 186215, 186073, 185932, 185790, 185648, 185506,
+ 185364, 185222, 185079, 184937, 184794, 184652, 184509, 184366,
+ 184223, 184080, 183937, 183793, 183650, 183506, 183363, 183219,
+ 183075, 182931, 182787, 182643, 182499, 182354, 182210, 182065,
+ 181920, 181776, 181631, 181486, 181341, 181195, 181050, 180904,
+ 180759, 180613, 180467, 180322, 180176, 180029, 179883, 179737,
+ 179591, 179444, 179297, 179151, 179004, 178857, 178710, 178563,
+ 178415, 178268, 178121, 177973, 177825, 177678, 177530, 177382,
+ 177234, 177085, 176937, 176789, 176640, 176492, 176343, 176194,
+ 176045, 175896, 175747, 175598, 175448, 175299, 175149, 175000,
+ 174850, 174700, 174550, 174400, 174250, 174100, 173949, 173799,
+ 173648, 173498, 173347, 173196, 173045, 172894, 172743, 172591,
+ 172440, 172289, 172137, 171985, 171834, 171682, 171530, 171378,
+ 171225, 171073, 170921, 170768, 170616, 170463, 170310, 170157,
+ 170004, 169851, 169698, 169545, 169391, 169238, 169084, 168930,
+ 168777, 168623, 168469, 168315, 168160, 168006, 167852, 167697,
+ 167543, 167388, 167233, 167078, 166923, 166768, 166613, 166458,
+ 166302, 166147, 165991, 165836, 165680, 165524, 165368, 165212,
+ 165056, 164900, 164743, 164587, 164430, 164274, 164117, 163960,
+ 163803, 163646, 163489, 163332, 163174, 163017, 162860, 162702,
+ 162544, 162386, 162229, 162071, 161913, 161754, 161596, 161438,
+ 161279, 161121, 160962, 160803, 160644, 160486, 160327, 160167,
+ 160008, 159849, 159689, 159530, 159370, 159211, 159051, 158891,
+ 158731, 158571, 158411, 158251, 158090, 157930, 157769, 157609,
+ 157448, 157287, 157126, 156965, 156804, 156643, 156482, 156320,
+ 156159, 155997, 155836, 155674, 155512, 155350, 155188, 155026,
+ 154864, 154702, 154539, 154377, 154214, 154052, 153889, 153726,
+ 153563, 153400, 153237, 153074, 152911, 152748, 152584, 152421,
+ 152257, 152093, 151929, 151765, 151601, 151437, 151273, 151109,
+ 150945, 150780, 150616, 150451, 150286, 150122, 149957, 149792,
+ 149627, 149462, 149296, 149131, 148966, 148800, 148635, 148469,
+ 148303, 148137, 147971, 147805, 147639, 147473, 147307, 147141,
+ 146974, 146808, 146641, 146474, 146307, 146141, 145974, 145807,
+ 145639, 145472, 145305, 145137, 144970, 144802, 144635, 144467,
+ 144299, 144131, 143963, 143795, 143627, 143459, 143291, 143122,
+ 142954, 142785, 142616, 142448, 142279, 142110, 141941, 141772,
+ 141603, 141433, 141264, 141095, 140925, 140756, 140586, 140416,
+ 140246, 140077, 139907, 139736, 139566, 139396, 139226, 139055,
+ 138885, 138714, 138544, 138373, 138202, 138031, 137860, 137689,
+ 137518, 137347, 137176, 137004, 136833, 136661, 136490, 136318,
+ 136146, 135974, 135802, 135630, 135458, 135286, 135114, 134941,
+ 134769, 134596, 134424, 134251, 134078, 133906, 133733, 133560,
+ 133387, 133214, 133040, 132867, 132694, 132520, 132347, 132173,
+ 132000, 131826, 131652, 131478, 131304, 131130, 130956, 130782,
+ 130607, 130433, 130259, 130084, 129909, 129735, 129560, 129385,
+ 129210, 129035, 128860, 128685, 128510, 128335, 128159, 127984,
+ 127808, 127633, 127457, 127281, 127106, 126930, 126754, 126578,
+ 126402, 126225, 126049, 125873, 125696, 125520, 125343, 125167,
+ 124990, 124813, 124636, 124460, 124283, 124105, 123928, 123751,
+ 123574, 123396, 123219, 123042, 122864, 122686, 122509, 122331,
+ 122153, 121975, 121797, 121619, 121441, 121263, 121084, 120906,
+ 120727, 120549, 120370, 120192, 120013, 119834, 119655, 119476,
+ 119297, 119118, 118939, 118760, 118581, 118401, 118222, 118042,
+ 117863, 117683, 117504, 117324, 117144, 116964, 116784, 116604,
+ 116424, 116244, 116064, 115883, 115703, 115522, 115342, 115161,
+ 114981, 114800, 114619, 114438, 114257, 114076, 113895, 113714,
+ 113533, 113352, 113170, 112989, 112808, 112626, 112444, 112263,
+ 112081, 111899, 111717, 111535, 111353, 111171, 110989, 110807,
+ 110625, 110443, 110260, 110078, 109895, 109713, 109530, 109347,
+ 109165, 108982, 108799, 108616, 108433, 108250, 108067, 107883,
+ 107700, 107517, 107333, 107150, 106966, 106783, 106599, 106415,
+ 106232, 106048, 105864, 105680, 105496, 105312, 105128, 104943,
+ 104759, 104575, 104390, 104206, 104021, 103837, 103652, 103467,
+ 103283, 103098, 102913, 102728, 102543, 102358, 102173, 101988,
+ 101802, 101617, 101432, 101246, 101061, 100875, 100690, 100504,
+ 100318, 100132, 99947, 99761, 99575, 99389, 99203, 99016,
+ 98830, 98644, 98458, 98271, 98085, 97898, 97712, 97525,
+ 97339, 97152, 96965, 96778, 96591, 96404, 96217, 96030,
+ 95843, 95656, 95469, 95282, 95094, 94907, 94719, 94532,
+ 94344, 94157, 93969, 93781, 93594, 93406, 93218, 93030,
+ 92842, 92654, 92466, 92278, 92089, 91901, 91713, 91524,
+ 91336, 91147, 90959, 90770, 90582, 90393, 90204, 90015,
+ 89826, 89638, 89449, 89260, 89070, 88881, 88692, 88503,
+ 88314, 88124, 87935, 87745, 87556, 87366, 87177, 86987,
+ 86798, 86608, 86418, 86228, 86038, 85848, 85658, 85468,
+ 85278, 85088, 84898, 84708, 84517, 84327, 84136, 83946,
+ 83756, 83565, 83374, 83184, 82993, 82802, 82612, 82421,
+ 82230, 82039, 81848, 81657, 81466, 81275, 81083, 80892,
+ 80701, 80510, 80318, 80127, 79935, 79744, 79552, 79361,
+ 79169, 78977, 78786, 78594, 78402, 78210, 78018, 77826,
+ 77634, 77442, 77250, 77058, 76866, 76673, 76481, 76289,
+ 76096, 75904, 75711, 75519, 75326, 75134, 74941, 74748,
+ 74556, 74363, 74170, 73977, 73784, 73591, 73398, 73205,
+ 73012, 72819, 72626, 72433, 72239, 72046, 71853, 71659,
+ 71466, 71273, 71079, 70886, 70692, 70498, 70305, 70111,
+ 69917, 69723, 69530, 69336, 69142, 68948, 68754, 68560,
+ 68366, 68171, 67977, 67783, 67589, 67395, 67200, 67006,
+ 66812, 66617, 66423, 66228, 66034, 65839, 65644, 65450,
+ 65255, 65060, 64865, 64671, 64476, 64281, 64086, 63891,
+ 63696, 63501, 63306, 63111, 62915, 62720, 62525, 62330,
+ 62134, 61939, 61744, 61548, 61353, 61157, 60962, 60766,
+ 60570, 60375, 60179, 59983, 59788, 59592, 59396, 59200,
+ 59004, 58808, 58613, 58417, 58221, 58024, 57828, 57632,
+ 57436, 57240, 57044, 56847, 56651, 56455, 56258, 56062,
+ 55866, 55669, 55473, 55276, 55080, 54883, 54686, 54490,
+ 54293, 54096, 53900, 53703, 53506, 53309, 53112, 52915,
+ 52718, 52521, 52324, 52127, 51930, 51733, 51536, 51339,
+ 51142, 50945, 50747, 50550, 50353, 50155, 49958, 49761,
+ 49563, 49366, 49168, 48971, 48773, 48576, 48378, 48180,
+ 47983, 47785, 47587, 47390, 47192, 46994, 46796, 46598,
+ 46401, 46203, 46005, 45807, 45609, 45411, 45213, 45015,
+ 44817, 44619, 44420, 44222, 44024, 43826, 43628, 43429,
+ 43231, 43033, 42834, 42636, 42438, 42239, 42041, 41842,
+ 41644, 41445, 41247, 41048, 40849, 40651, 40452, 40254,
+ 40055, 39856, 39657, 39459, 39260, 39061, 38862, 38663,
+ 38465, 38266, 38067, 37868, 37669, 37470, 37271, 37072,
+ 36873, 36674, 36475, 36275, 36076, 35877, 35678, 35479,
+ 35280, 35080, 34881, 34682, 34482, 34283, 34084, 33884,
+ 33685, 33486, 33286, 33087, 32887, 32688, 32488, 32289,
+ 32089, 31890, 31690, 31490, 31291, 31091, 30892, 30692,
+ 30492, 30293, 30093, 29893, 29693, 29494, 29294, 29094,
+ 28894, 28694, 28494, 28295, 28095, 27895, 27695, 27495,
+ 27295, 27095, 26895, 26695, 26495, 26295, 26095, 25895,
+ 25695, 25495, 25294, 25094, 24894, 24694, 24494, 24294,
+ 24093, 23893, 23693, 23493, 23292, 23092, 22892, 22692,
+ 22491, 22291, 22091, 21890, 21690, 21489, 21289, 21089,
+ 20888, 20688, 20487, 20287, 20086, 19886, 19686, 19485,
+ 19285, 19084, 18883, 18683, 18482, 18282, 18081, 17881,
+ 17680, 17479, 17279, 17078, 16878, 16677, 16476, 16276,
+ 16075, 15874, 15673, 15473, 15272, 15071, 14871, 14670,
+ 14469, 14268, 14068, 13867, 13666, 13465, 13264, 13064,
+ 12863, 12662, 12461, 12260, 12059, 11859, 11658, 11457,
+ 11256, 11055, 10854, 10653, 10452, 10252, 10051, 9850,
+ 9649, 9448, 9247, 9046, 8845, 8644, 8443, 8242,
+ 8041, 7840, 7639, 7438, 7237, 7036, 6835, 6634,
+ 6433, 6232, 6031, 5830, 5629, 5428, 5227, 5026,
+ 4825, 4624, 4423, 4222, 4021, 3820, 3619, 3418,
+ 3217, 3016, 2815, 2614, 2413, 2212, 2011, 1810,
+ 1608, 1407, 1206, 1005, 804, 603, 402, 201,
+ 0, -200, -401, -602, -803, -1004, -1205, -1406,
+ -1607, -1809, -2010, -2211, -2412, -2613, -2814, -3015,
+ -3216, -3417, -3618, -3819, -4020, -4221, -4422, -4623,
+ -4824, -5025, -5226, -5427, -5628, -5829, -6030, -6231,
+ -6432, -6633, -6834, -7035, -7236, -7437, -7638, -7839,
+ -8040, -8241, -8442, -8643, -8844, -9045, -9246, -9447,
+ -9648, -9849, -10050, -10251, -10451, -10652, -10853, -11054,
+ -11255, -11456, -11657, -11858, -12058, -12259, -12460, -12661,
+ -12862, -13063, -13263, -13464, -13665, -13866, -14067, -14267,
+ -14468, -14669, -14870, -15070, -15271, -15472, -15672, -15873,
+ -16074, -16275, -16475, -16676, -16877, -17077, -17278, -17478,
+ -17679, -17880, -18080, -18281, -18481, -18682, -18882, -19083,
+ -19284, -19484, -19685, -19885, -20085, -20286, -20486, -20687,
+ -20887, -21088, -21288, -21488, -21689, -21889, -22090, -22290,
+ -22490, -22691, -22891, -23091, -23291, -23492, -23692, -23892,
+ -24092, -24293, -24493, -24693, -24893, -25093, -25293, -25494,
+ -25694, -25894, -26094, -26294, -26494, -26694, -26894, -27094,
+ -27294, -27494, -27694, -27894, -28094, -28294, -28493, -28693,
+ -28893, -29093, -29293, -29493, -29692, -29892, -30092, -30292,
+ -30491, -30691, -30891, -31090, -31290, -31489, -31689, -31889,
+ -32088, -32288, -32487, -32687, -32886, -33086, -33285, -33485,
+ -33684, -33883, -34083, -34282, -34481, -34681, -34880, -35079,
+ -35279, -35478, -35677, -35876, -36075, -36274, -36474, -36673,
+ -36872, -37071, -37270, -37469, -37668, -37867, -38066, -38265,
+ -38464, -38662, -38861, -39060, -39259, -39458, -39656, -39855,
+ -40054, -40253, -40451, -40650, -40848, -41047, -41246, -41444,
+ -41643, -41841, -42040, -42238, -42437, -42635, -42833, -43032,
+ -43230, -43428, -43627, -43825, -44023, -44221, -44419, -44618,
+ -44816, -45014, -45212, -45410, -45608, -45806, -46004, -46202,
+ -46400, -46597, -46795, -46993, -47191, -47389, -47586, -47784,
+ -47982, -48179, -48377, -48575, -48772, -48970, -49167, -49365,
+ -49562, -49760, -49957, -50154, -50352, -50549, -50746, -50944,
+ -51141, -51338, -51535, -51732, -51929, -52126, -52323, -52520,
+ -52717, -52914, -53111, -53308, -53505, -53702, -53899, -54095,
+ -54292, -54489, -54685, -54882, -55079, -55275, -55472, -55668,
+ -55865, -56061, -56257, -56454, -56650, -56846, -57043, -57239,
+ -57435, -57631, -57827, -58023, -58220, -58416, -58612, -58807,
+ -59003, -59199, -59395, -59591, -59787, -59982, -60178, -60374,
+ -60569, -60765, -60961, -61156, -61352, -61547, -61743, -61938,
+ -62133, -62329, -62524, -62719, -62914, -63110, -63305, -63500,
+ -63695, -63890, -64085, -64280, -64475, -64670, -64864, -65059,
+ -65254, -65449, -65643, -65838, -66033, -66227, -66422, -66616,
+ -66811, -67005, -67199, -67394, -67588, -67782, -67976, -68170,
+ -68365, -68559, -68753, -68947, -69141, -69335, -69529, -69722,
+ -69916, -70110, -70304, -70497, -70691, -70885, -71078, -71272,
+ -71465, -71658, -71852, -72045, -72238, -72432, -72625, -72818,
+ -73011, -73204, -73397, -73590, -73783, -73976, -74169, -74362,
+ -74555, -74747, -74940, -75133, -75325, -75518, -75710, -75903,
+ -76095, -76288, -76480, -76672, -76865, -77057, -77249, -77441,
+ -77633, -77825, -78017, -78209, -78401, -78593, -78785, -78976,
+ -79168, -79360, -79551, -79743, -79934, -80126, -80317, -80509,
+ -80700, -80891, -81082, -81274, -81465, -81656, -81847, -82038,
+ -82229, -82420, -82611, -82801, -82992, -83183, -83373, -83564,
+ -83755, -83945, -84135, -84326, -84516, -84707, -84897, -85087,
+ -85277, -85467, -85657, -85847, -86037, -86227, -86417, -86607,
+ -86797, -86986, -87176, -87365, -87555, -87744, -87934, -88123,
+ -88313, -88502, -88691, -88880, -89069, -89259, -89448, -89637,
+ -89825, -90014, -90203, -90392, -90581, -90769, -90958, -91146,
+ -91335, -91523, -91712, -91900, -92088, -92277, -92465, -92653,
+ -92841, -93029, -93217, -93405, -93593, -93780, -93968, -94156,
+ -94343, -94531, -94718, -94906, -95093, -95281, -95468, -95655,
+ -95842, -96029, -96216, -96403, -96590, -96777, -96964, -97151,
+ -97338, -97524, -97711, -97897, -98084, -98270, -98457, -98643,
+ -98829, -99015, -99202, -99388, -99574, -99760, -99946,-100131,
+ -100317,-100503,-100689,-100874,-101060,-101245,-101431,-101616,
+ -101801,-101987,-102172,-102357,-102542,-102727,-102912,-103097,
+ -103282,-103466,-103651,-103836,-104020,-104205,-104389,-104574,
+ -104758,-104942,-105127,-105311,-105495,-105679,-105863,-106047,
+ -106231,-106414,-106598,-106782,-106965,-107149,-107332,-107516,
+ -107699,-107882,-108066,-108249,-108432,-108615,-108798,-108981,
+ -109164,-109346,-109529,-109712,-109894,-110077,-110259,-110442,
+ -110624,-110806,-110988,-111170,-111352,-111534,-111716,-111898,
+ -112080,-112262,-112443,-112625,-112807,-112988,-113169,-113351,
+ -113532,-113713,-113894,-114075,-114256,-114437,-114618,-114799,
+ -114980,-115160,-115341,-115521,-115702,-115882,-116063,-116243,
+ -116423,-116603,-116783,-116963,-117143,-117323,-117503,-117682,
+ -117862,-118041,-118221,-118400,-118580,-118759,-118938,-119117,
+ -119296,-119475,-119654,-119833,-120012,-120191,-120369,-120548,
+ -120726,-120905,-121083,-121262,-121440,-121618,-121796,-121974,
+ -122152,-122330,-122508,-122685,-122863,-123041,-123218,-123395,
+ -123573,-123750,-123927,-124104,-124282,-124459,-124635,-124812,
+ -124989,-125166,-125342,-125519,-125695,-125872,-126048,-126224,
+ -126401,-126577,-126753,-126929,-127105,-127280,-127456,-127632,
+ -127807,-127983,-128158,-128334,-128509,-128684,-128859,-129034,
+ -129209,-129384,-129559,-129734,-129908,-130083,-130258,-130432,
+ -130606,-130781,-130955,-131129,-131303,-131477,-131651,-131825,
+ -131999,-132172,-132346,-132519,-132693,-132866,-133039,-133213,
+ -133386,-133559,-133732,-133905,-134077,-134250,-134423,-134595,
+ -134768,-134940,-135113,-135285,-135457,-135629,-135801,-135973,
+ -136145,-136317,-136489,-136660,-136832,-137003,-137175,-137346,
+ -137517,-137688,-137859,-138030,-138201,-138372,-138543,-138713,
+ -138884,-139054,-139225,-139395,-139565,-139735,-139906,-140076,
+ -140245,-140415,-140585,-140755,-140924,-141094,-141263,-141432,
+ -141602,-141771,-141940,-142109,-142278,-142447,-142615,-142784,
+ -142953,-143121,-143290,-143458,-143626,-143794,-143962,-144130,
+ -144298,-144466,-144634,-144801,-144969,-145136,-145304,-145471,
+ -145638,-145806,-145973,-146140,-146306,-146473,-146640,-146807,
+ -146973,-147140,-147306,-147472,-147638,-147804,-147970,-148136,
+ -148302,-148468,-148634,-148799,-148965,-149130,-149295,-149461,
+ -149626,-149791,-149956,-150121,-150285,-150450,-150615,-150779,
+ -150944,-151108,-151272,-151436,-151600,-151764,-151928,-152092,
+ -152256,-152420,-152583,-152747,-152910,-153073,-153236,-153399,
+ -153562,-153725,-153888,-154051,-154213,-154376,-154538,-154701,
+ -154863,-155025,-155187,-155349,-155511,-155673,-155835,-155996,
+ -156158,-156319,-156481,-156642,-156803,-156964,-157125,-157286,
+ -157447,-157608,-157768,-157929,-158089,-158250,-158410,-158570,
+ -158730,-158890,-159050,-159210,-159369,-159529,-159688,-159848,
+ -160007,-160166,-160326,-160485,-160643,-160802,-160961,-161120,
+ -161278,-161437,-161595,-161753,-161912,-162070,-162228,-162385,
+ -162543,-162701,-162859,-163016,-163173,-163331,-163488,-163645,
+ -163802,-163959,-164116,-164273,-164429,-164586,-164742,-164899,
+ -165055,-165211,-165367,-165523,-165679,-165835,-165990,-166146,
+ -166301,-166457,-166612,-166767,-166922,-167077,-167232,-167387,
+ -167542,-167696,-167851,-168005,-168159,-168314,-168468,-168622,
+ -168776,-168929,-169083,-169237,-169390,-169544,-169697,-169850,
+ -170003,-170156,-170309,-170462,-170615,-170767,-170920,-171072,
+ -171224,-171377,-171529,-171681,-171833,-171984,-172136,-172288,
+ -172439,-172590,-172742,-172893,-173044,-173195,-173346,-173497,
+ -173647,-173798,-173948,-174099,-174249,-174399,-174549,-174699,
+ -174849,-174999,-175148,-175298,-175447,-175597,-175746,-175895,
+ -176044,-176193,-176342,-176491,-176639,-176788,-176936,-177084,
+ -177233,-177381,-177529,-177677,-177824,-177972,-178120,-178267,
+ -178414,-178562,-178709,-178856,-179003,-179150,-179296,-179443,
+ -179590,-179736,-179882,-180028,-180175,-180321,-180466,-180612,
+ -180758,-180903,-181049,-181194,-181340,-181485,-181630,-181775,
+ -181919,-182064,-182209,-182353,-182498,-182642,-182786,-182930,
+ -183074,-183218,-183362,-183505,-183649,-183792,-183936,-184079,
+ -184222,-184365,-184508,-184651,-184793,-184936,-185078,-185221,
+ -185363,-185505,-185647,-185789,-185931,-186072,-186214,-186355,
+ -186497,-186638,-186779,-186920,-187061,-187202,-187342,-187483,
+ -187624,-187764,-187904,-188044,-188184,-188324,-188464,-188604,
+ -188743,-188883,-189022,-189161,-189301,-189440,-189579,-189717,
+ -189856,-189995,-190133,-190271,-190410,-190548,-190686,-190824,
+ -190962,-191099,-191237,-191374,-191512,-191649,-191786,-191923,
+ -192060,-192197,-192333,-192470,-192606,-192743,-192879,-193015,
+ -193151,-193287,-193423,-193558,-193694,-193829,-193965,-194100,
+ -194235,-194370,-194505,-194639,-194774,-194909,-195043,-195177,
+ -195311,-195445,-195579,-195713,-195847,-195981,-196114,-196247,
+ -196381,-196514,-196647,-196780,-196912,-197045,-197178,-197310,
+ -197442,-197575,-197707,-197839,-197971,-198102,-198234,-198365,
+ -198497,-198628,-198759,-198890,-199021,-199152,-199283,-199413,
+ -199544,-199674,-199804,-199934,-200064,-200194,-200324,-200453,
+ -200583,-200712,-200842,-200971,-201100,-201229,-201358,-201486,
+ -201615,-201743,-201872,-202000,-202128,-202256,-202384,-202511,
+ -202639,-202767,-202894,-203021,-203148,-203275,-203402,-203529,
+ -203656,-203782,-203909,-204035,-204161,-204287,-204413,-204539,
+ -204665,-204790,-204916,-205041,-205166,-205291,-205416,-205541,
+ -205666,-205790,-205915,-206039,-206164,-206288,-206412,-206536,
+ -206659,-206783,-206906,-207030,-207153,-207276,-207399,-207522,
+ -207645,-207768,-207890,-208013,-208135,-208257,-208379,-208501,
+ -208623,-208745,-208866,-208988,-209109,-209230,-209351,-209472,
+ -209593,-209714,-209834,-209955,-210075,-210195,-210315,-210435,
+ -210555,-210675,-210794,-210914,-211033,-211152,-211271,-211390,
+ -211509,-211628,-211747,-211865,-211983,-212102,-212220,-212338,
+ -212455,-212573,-212691,-212808,-212926,-213043,-213160,-213277,
+ -213394,-213510,-213627,-213744,-213860,-213976,-214092,-214208,
+ -214324,-214440,-214555,-214671,-214786,-214901,-215016,-215131,
+ -215246,-215361,-215475,-215590,-215704,-215818,-215932,-216046,
+ -216160,-216274,-216387,-216501,-216614,-216727,-216840,-216953,
+ -217066,-217179,-217291,-217404,-217516,-217628,-217740,-217852,
+ -217964,-218075,-218187,-218298,-218410,-218521,-218632,-218743,
+ -218853,-218964,-219074,-219185,-219295,-219405,-219515,-219625,
+ -219735,-219844,-219954,-220063,-220172,-220281,-220390,-220499,
+ -220608,-220716,-220825,-220933,-221041,-221149,-221257,-221365,
+ -221472,-221580,-221687,-221794,-221902,-222009,-222115,-222222,
+ -222329,-222435,-222541,-222648,-222754,-222860,-222965,-223071,
+ -223177,-223282,-223387,-223492,-223598,-223702,-223807,-223912,
+ -224016,-224121,-224225,-224329,-224433,-224537,-224640,-224744,
+ -224847,-224951,-225054,-225157,-225260,-225363,-225465,-225568,
+ -225670,-225772,-225874,-225976,-226078,-226180,-226282,-226383,
+ -226484,-226585,-226687,-226787,-226888,-226989,-227089,-227190,
+ -227290,-227390,-227490,-227590,-227690,-227789,-227889,-227988,
+ -228087,-228186,-228285,-228384,-228482,-228581,-228679,-228778,
+ -228876,-228974,-229071,-229169,-229267,-229364,-229461,-229559,
+ -229656,-229752,-229849,-229946,-230042,-230139,-230235,-230331,
+ -230427,-230523,-230618,-230714,-230809,-230904,-231000,-231095,
+ -231189,-231284,-231379,-231473,-231567,-231662,-231756,-231849,
+ -231943,-232037,-232130,-232224,-232317,-232410,-232503,-232596,
+ -232688,-232781,-232873,-232966,-233058,-233150,-233242,-233333,
+ -233425,-233516,-233608,-233699,-233790,-233881,-233971,-234062,
+ -234152,-234243,-234333,-234423,-234513,-234603,-234692,-234782,
+ -234871,-234960,-235049,-235138,-235227,-235316,-235404,-235493,
+ -235581,-235669,-235757,-235845,-235933,-236020,-236108,-236195,
+ -236282,-236369,-236456,-236543,-236629,-236716,-236802,-236888,
+ -236974,-237060,-237146,-237232,-237317,-237402,-237488,-237573,
+ -237658,-237742,-237827,-237912,-237996,-238080,-238164,-238248,
+ -238332,-238416,-238499,-238582,-238666,-238749,-238832,-238915,
+ -238997,-239080,-239162,-239244,-239327,-239409,-239490,-239572,
+ -239654,-239735,-239816,-239897,-239978,-240059,-240140,-240220,
+ -240301,-240381,-240461,-240541,-240621,-240701,-240780,-240860,
+ -240939,-241018,-241097,-241176,-241255,-241333,-241412,-241490,
+ -241568,-241646,-241724,-241802,-241880,-241957,-242034,-242111,
+ -242188,-242265,-242342,-242419,-242495,-242571,-242648,-242724,
+ -242799,-242875,-242951,-243026,-243102,-243177,-243252,-243327,
+ -243401,-243476,-243550,-243625,-243699,-243773,-243847,-243920,
+ -243994,-244067,-244141,-244214,-244287,-244360,-244432,-244505,
+ -244577,-244650,-244722,-244794,-244866,-244937,-245009,-245080,
+ -245152,-245223,-245294,-245365,-245435,-245506,-245576,-245647,
+ -245717,-245787,-245857,-245926,-245996,-246065,-246135,-246204,
+ -246273,-246341,-246410,-246479,-246547,-246615,-246683,-246751,
+ -246819,-246887,-246954,-247022,-247089,-247156,-247223,-247290,
+ -247356,-247423,-247489,-247555,-247621,-247687,-247753,-247819,
+ -247884,-247950,-248015,-248080,-248145,-248210,-248274,-248339,
+ -248403,-248467,-248531,-248595,-248659,-248722,-248786,-248849,
+ -248912,-248975,-249038,-249101,-249163,-249226,-249288,-249350,
+ -249412,-249474,-249535,-249597,-249658,-249720,-249781,-249842,
+ -249902,-249963,-250024,-250084,-250144,-250204,-250264,-250324,
+ -250384,-250443,-250502,-250561,-250621,-250679,-250738,-250797,
+ -250855,-250913,-250972,-251030,-251087,-251145,-251203,-251260,
+ -251317,-251374,-251431,-251488,-251545,-251601,-251658,-251714,
+ -251770,-251826,-251882,-251937,-251993,-252048,-252103,-252158,
+ -252213,-252268,-252323,-252377,-252431,-252486,-252540,-252593,
+ -252647,-252701,-252754,-252807,-252860,-252913,-252966,-253019,
+ -253071,-253124,-253176,-253228,-253280,-253332,-253383,-253435,
+ -253486,-253537,-253588,-253639,-253690,-253740,-253791,-253841,
+ -253891,-253941,-253991,-254041,-254090,-254140,-254189,-254238,
+ -254287,-254336,-254384,-254433,-254481,-254529,-254577,-254625,
+ -254673,-254720,-254768,-254815,-254862,-254909,-254956,-255003,
+ -255049,-255096,-255142,-255188,-255234,-255280,-255325,-255371,
+ -255416,-255461,-255506,-255551,-255596,-255641,-255685,-255729,
+ -255773,-255817,-255861,-255905,-255948,-255992,-256035,-256078,
+ -256121,-256164,-256206,-256249,-256291,-256333,-256375,-256417,
+ -256459,-256501,-256542,-256583,-256624,-256665,-256706,-256747,
+ -256787,-256828,-256868,-256908,-256948,-256988,-257027,-257067,
+ -257106,-257145,-257184,-257223,-257262,-257300,-257339,-257377,
+ -257415,-257453,-257491,-257528,-257566,-257603,-257640,-257677,
+ -257714,-257751,-257788,-257824,-257860,-257896,-257932,-257968,
+ -258004,-258039,-258075,-258110,-258145,-258180,-258215,-258249,
+ -258284,-258318,-258352,-258386,-258420,-258454,-258487,-258521,
+ -258554,-258587,-258620,-258653,-258685,-258718,-258750,-258782,
+ -258814,-258846,-258878,-258909,-258941,-258972,-259003,-259034,
+ -259065,-259095,-259126,-259156,-259186,-259216,-259246,-259276,
+ -259306,-259335,-259364,-259394,-259422,-259451,-259480,-259508,
+ -259537,-259565,-259593,-259621,-259649,-259676,-259704,-259731,
+ -259758,-259785,-259812,-259839,-259865,-259892,-259918,-259944,
+ -259970,-259996,-260021,-260047,-260072,-260097,-260122,-260147,
+ -260172,-260196,-260220,-260245,-260269,-260293,-260316,-260340,
+ -260364,-260387,-260410,-260433,-260456,-260479,-260501,-260524,
+ -260546,-260568,-260590,-260612,-260633,-260655,-260676,-260697,
+ -260718,-260739,-260760,-260780,-260801,-260821,-260841,-260861,
+ -260881,-260900,-260920,-260939,-260958,-260977,-260996,-261015,
+ -261033,-261052,-261070,-261088,-261106,-261124,-261142,-261159,
+ -261176,-261194,-261211,-261227,-261244,-261261,-261277,-261293,
+ -261309,-261325,-261341,-261357,-261372,-261388,-261403,-261418,
+ -261433,-261447,-261462,-261476,-261491,-261505,-261519,-261532,
+ -261546,-261560,-261573,-261586,-261599,-261612,-261625,-261637,
+ -261650,-261662,-261674,-261686,-261698,-261709,-261721,-261732,
+ -261743,-261754,-261765,-261776,-261787,-261797,-261807,-261817,
+ -261827,-261837,-261847,-261856,-261865,-261875,-261884,-261893,
+ -261901,-261910,-261918,-261926,-261935,-261942,-261950,-261958,
+ -261965,-261973,-261980,-261987,-261994,-262000,-262007,-262013,
+ -262020,-262026,-262032,-262037,-262043,-262049,-262054,-262059,
+ -262064,-262069,-262074,-262078,-262083,-262087,-262091,-262095,
+ -262099,-262102,-262106,-262109,-262112,-262115,-262118,-262121,
+ -262123,-262126,-262128,-262130,-262132,-262134,-262135,-262137,
+ -262138,-262139,-262140,-262141,-262142,-262142,-262143,-262143,
+ -262143,-262143,-262143,-262142,-262142,-262141,-262140,-262139,
+ -262138,-262137,-262135,-262134,-262132,-262130,-262128,-262126,
+ -262123,-262121,-262118,-262115,-262112,-262109,-262106,-262102,
+ -262099,-262095,-262091,-262087,-262083,-262078,-262074,-262069,
+ -262064,-262059,-262054,-262049,-262043,-262037,-262032,-262026,
+ -262020,-262013,-262007,-262000,-261994,-261987,-261980,-261973,
+ -261965,-261958,-261950,-261942,-261935,-261926,-261918,-261910,
+ -261901,-261893,-261884,-261875,-261865,-261856,-261847,-261837,
+ -261827,-261817,-261807,-261797,-261787,-261776,-261765,-261754,
+ -261743,-261732,-261721,-261709,-261698,-261686,-261674,-261662,
+ -261650,-261637,-261625,-261612,-261599,-261586,-261573,-261560,
+ -261546,-261532,-261519,-261505,-261491,-261476,-261462,-261447,
+ -261433,-261418,-261403,-261388,-261372,-261357,-261341,-261325,
+ -261309,-261293,-261277,-261261,-261244,-261227,-261211,-261194,
+ -261176,-261159,-261142,-261124,-261106,-261088,-261070,-261052,
+ -261033,-261015,-260996,-260977,-260958,-260939,-260920,-260900,
+ -260881,-260861,-260841,-260821,-260801,-260780,-260760,-260739,
+ -260718,-260697,-260676,-260655,-260633,-260612,-260590,-260568,
+ -260546,-260524,-260501,-260479,-260456,-260433,-260410,-260387,
+ -260364,-260340,-260316,-260293,-260269,-260245,-260220,-260196,
+ -260172,-260147,-260122,-260097,-260072,-260047,-260021,-259996,
+ -259970,-259944,-259918,-259892,-259865,-259839,-259812,-259785,
+ -259758,-259731,-259704,-259676,-259649,-259621,-259593,-259565,
+ -259537,-259508,-259480,-259451,-259422,-259394,-259364,-259335,
+ -259306,-259276,-259246,-259216,-259186,-259156,-259126,-259095,
+ -259065,-259034,-259003,-258972,-258941,-258909,-258878,-258846,
+ -258814,-258782,-258750,-258718,-258685,-258653,-258620,-258587,
+ -258554,-258521,-258487,-258454,-258420,-258386,-258352,-258318,
+ -258284,-258249,-258215,-258180,-258145,-258110,-258075,-258039,
+ -258004,-257968,-257932,-257896,-257860,-257824,-257788,-257751,
+ -257714,-257677,-257640,-257603,-257566,-257528,-257491,-257453,
+ -257415,-257377,-257339,-257300,-257262,-257223,-257184,-257145,
+ -257106,-257067,-257027,-256988,-256948,-256908,-256868,-256828,
+ -256787,-256747,-256706,-256665,-256624,-256583,-256542,-256501,
+ -256459,-256417,-256375,-256333,-256291,-256249,-256206,-256164,
+ -256121,-256078,-256035,-255992,-255948,-255905,-255861,-255817,
+ -255773,-255729,-255685,-255641,-255596,-255551,-255506,-255461,
+ -255416,-255371,-255325,-255280,-255234,-255188,-255142,-255096,
+ -255049,-255003,-254956,-254909,-254862,-254815,-254768,-254720,
+ -254673,-254625,-254577,-254529,-254481,-254433,-254384,-254336,
+ -254287,-254238,-254189,-254140,-254090,-254041,-253991,-253941,
+ -253891,-253841,-253791,-253740,-253690,-253639,-253588,-253537,
+ -253486,-253435,-253383,-253332,-253280,-253228,-253176,-253124,
+ -253071,-253019,-252966,-252913,-252860,-252807,-252754,-252701,
+ -252647,-252593,-252540,-252486,-252431,-252377,-252323,-252268,
+ -252213,-252158,-252103,-252048,-251993,-251937,-251882,-251826,
+ -251770,-251714,-251658,-251601,-251545,-251488,-251431,-251374,
+ -251317,-251260,-251203,-251145,-251087,-251030,-250972,-250913,
+ -250855,-250797,-250738,-250679,-250621,-250561,-250502,-250443,
+ -250384,-250324,-250264,-250204,-250144,-250084,-250024,-249963,
+ -249902,-249842,-249781,-249720,-249658,-249597,-249535,-249474,
+ -249412,-249350,-249288,-249226,-249163,-249101,-249038,-248975,
+ -248912,-248849,-248786,-248722,-248659,-248595,-248531,-248467,
+ -248403,-248339,-248274,-248210,-248145,-248080,-248015,-247950,
+ -247884,-247819,-247753,-247687,-247621,-247555,-247489,-247423,
+ -247356,-247290,-247223,-247156,-247089,-247022,-246954,-246887,
+ -246819,-246751,-246683,-246615,-246547,-246479,-246410,-246341,
+ -246273,-246204,-246135,-246065,-245996,-245926,-245857,-245787,
+ -245717,-245647,-245576,-245506,-245435,-245365,-245294,-245223,
+ -245152,-245080,-245009,-244937,-244866,-244794,-244722,-244650,
+ -244577,-244505,-244432,-244360,-244287,-244214,-244141,-244067,
+ -243994,-243920,-243847,-243773,-243699,-243625,-243550,-243476,
+ -243401,-243327,-243252,-243177,-243102,-243026,-242951,-242875,
+ -242799,-242724,-242648,-242571,-242495,-242419,-242342,-242265,
+ -242188,-242111,-242034,-241957,-241880,-241802,-241724,-241646,
+ -241568,-241490,-241412,-241333,-241255,-241176,-241097,-241018,
+ -240939,-240860,-240780,-240701,-240621,-240541,-240461,-240381,
+ -240301,-240220,-240140,-240059,-239978,-239897,-239816,-239735,
+ -239654,-239572,-239490,-239409,-239327,-239244,-239162,-239080,
+ -238997,-238915,-238832,-238749,-238666,-238582,-238499,-238416,
+ -238332,-238248,-238164,-238080,-237996,-237912,-237827,-237742,
+ -237658,-237573,-237488,-237402,-237317,-237232,-237146,-237060,
+ -236974,-236888,-236802,-236716,-236629,-236543,-236456,-236369,
+ -236282,-236195,-236108,-236020,-235933,-235845,-235757,-235669,
+ -235581,-235493,-235404,-235316,-235227,-235138,-235049,-234960,
+ -234871,-234782,-234692,-234603,-234513,-234423,-234333,-234243,
+ -234152,-234062,-233971,-233881,-233790,-233699,-233608,-233516,
+ -233425,-233333,-233242,-233150,-233058,-232966,-232873,-232781,
+ -232688,-232596,-232503,-232410,-232317,-232224,-232130,-232037,
+ -231943,-231849,-231756,-231662,-231567,-231473,-231379,-231284,
+ -231189,-231095,-231000,-230904,-230809,-230714,-230618,-230523,
+ -230427,-230331,-230235,-230139,-230042,-229946,-229849,-229752,
+ -229656,-229559,-229461,-229364,-229267,-229169,-229071,-228974,
+ -228876,-228778,-228679,-228581,-228482,-228384,-228285,-228186,
+ -228087,-227988,-227889,-227789,-227690,-227590,-227490,-227390,
+ -227290,-227190,-227089,-226989,-226888,-226787,-226687,-226585,
+ -226484,-226383,-226282,-226180,-226078,-225976,-225874,-225772,
+ -225670,-225568,-225465,-225363,-225260,-225157,-225054,-224951,
+ -224847,-224744,-224640,-224537,-224433,-224329,-224225,-224121,
+ -224016,-223912,-223807,-223702,-223598,-223492,-223387,-223282,
+ -223177,-223071,-222965,-222860,-222754,-222648,-222541,-222435,
+ -222329,-222222,-222115,-222009,-221902,-221794,-221687,-221580,
+ -221472,-221365,-221257,-221149,-221041,-220933,-220825,-220716,
+ -220608,-220499,-220390,-220281,-220172,-220063,-219954,-219844,
+ -219735,-219625,-219515,-219405,-219295,-219185,-219074,-218964,
+ -218853,-218743,-218632,-218521,-218410,-218298,-218187,-218075,
+ -217964,-217852,-217740,-217628,-217516,-217404,-217291,-217179,
+ -217066,-216953,-216840,-216727,-216614,-216501,-216387,-216274,
+ -216160,-216046,-215932,-215818,-215704,-215590,-215475,-215361,
+ -215246,-215131,-215016,-214901,-214786,-214671,-214555,-214440,
+ -214324,-214208,-214092,-213976,-213860,-213744,-213627,-213510,
+ -213394,-213277,-213160,-213043,-212926,-212808,-212691,-212573,
+ -212455,-212338,-212220,-212102,-211983,-211865,-211747,-211628,
+ -211509,-211390,-211271,-211152,-211033,-210914,-210794,-210675,
+ -210555,-210435,-210315,-210195,-210075,-209955,-209834,-209714,
+ -209593,-209472,-209351,-209230,-209109,-208988,-208866,-208745,
+ -208623,-208501,-208379,-208257,-208135,-208013,-207890,-207768,
+ -207645,-207522,-207399,-207276,-207153,-207030,-206906,-206783,
+ -206659,-206536,-206412,-206288,-206164,-206039,-205915,-205790,
+ -205666,-205541,-205416,-205291,-205166,-205041,-204916,-204790,
+ -204665,-204539,-204413,-204287,-204161,-204035,-203909,-203782,
+ -203656,-203529,-203402,-203275,-203148,-203021,-202894,-202767,
+ -202639,-202511,-202384,-202256,-202128,-202000,-201872,-201743,
+ -201615,-201486,-201358,-201229,-201100,-200971,-200842,-200712,
+ -200583,-200453,-200324,-200194,-200064,-199934,-199804,-199674,
+ -199544,-199413,-199283,-199152,-199021,-198890,-198759,-198628,
+ -198497,-198365,-198234,-198102,-197971,-197839,-197707,-197575,
+ -197442,-197310,-197178,-197045,-196912,-196780,-196647,-196514,
+ -196381,-196247,-196114,-195981,-195847,-195713,-195579,-195445,
+ -195311,-195177,-195043,-194909,-194774,-194639,-194505,-194370,
+ -194235,-194100,-193965,-193829,-193694,-193558,-193423,-193287,
+ -193151,-193015,-192879,-192743,-192606,-192470,-192333,-192197,
+ -192060,-191923,-191786,-191649,-191512,-191374,-191237,-191099,
+ -190962,-190824,-190686,-190548,-190410,-190271,-190133,-189995,
+ -189856,-189717,-189579,-189440,-189301,-189161,-189022,-188883,
+ -188743,-188604,-188464,-188324,-188184,-188044,-187904,-187764,
+ -187624,-187483,-187342,-187202,-187061,-186920,-186779,-186638,
+ -186497,-186355,-186214,-186072,-185931,-185789,-185647,-185505,
+ -185363,-185221,-185078,-184936,-184793,-184651,-184508,-184365,
+ -184222,-184079,-183936,-183792,-183649,-183505,-183362,-183218,
+ -183074,-182930,-182786,-182642,-182498,-182353,-182209,-182064,
+ -181919,-181775,-181630,-181485,-181340,-181194,-181049,-180903,
+ -180758,-180612,-180466,-180321,-180175,-180028,-179882,-179736,
+ -179590,-179443,-179296,-179150,-179003,-178856,-178709,-178562,
+ -178414,-178267,-178120,-177972,-177824,-177677,-177529,-177381,
+ -177233,-177084,-176936,-176788,-176639,-176491,-176342,-176193,
+ -176044,-175895,-175746,-175597,-175447,-175298,-175148,-174999,
+ -174849,-174699,-174549,-174399,-174249,-174099,-173948,-173798,
+ -173647,-173497,-173346,-173195,-173044,-172893,-172742,-172590,
+ -172439,-172288,-172136,-171984,-171833,-171681,-171529,-171377,
+ -171224,-171072,-170920,-170767,-170615,-170462,-170309,-170156,
+ -170003,-169850,-169697,-169544,-169390,-169237,-169083,-168929,
+ -168776,-168622,-168468,-168314,-168159,-168005,-167851,-167696,
+ -167542,-167387,-167232,-167077,-166922,-166767,-166612,-166457,
+ -166301,-166146,-165990,-165835,-165679,-165523,-165367,-165211,
+ -165055,-164899,-164742,-164586,-164429,-164273,-164116,-163959,
+ -163802,-163645,-163488,-163331,-163173,-163016,-162859,-162701,
+ -162543,-162385,-162228,-162070,-161912,-161753,-161595,-161437,
+ -161278,-161120,-160961,-160802,-160643,-160485,-160326,-160166,
+ -160007,-159848,-159688,-159529,-159369,-159210,-159050,-158890,
+ -158730,-158570,-158410,-158250,-158089,-157929,-157768,-157608,
+ -157447,-157286,-157125,-156964,-156803,-156642,-156481,-156319,
+ -156158,-155996,-155835,-155673,-155511,-155349,-155187,-155025,
+ -154863,-154701,-154538,-154376,-154213,-154051,-153888,-153725,
+ -153562,-153399,-153236,-153073,-152910,-152747,-152583,-152420,
+ -152256,-152092,-151928,-151764,-151600,-151436,-151272,-151108,
+ -150944,-150779,-150615,-150450,-150285,-150121,-149956,-149791,
+ -149626,-149461,-149295,-149130,-148965,-148799,-148634,-148468,
+ -148302,-148136,-147970,-147804,-147638,-147472,-147306,-147140,
+ -146973,-146807,-146640,-146473,-146306,-146140,-145973,-145806,
+ -145638,-145471,-145304,-145136,-144969,-144801,-144634,-144466,
+ -144298,-144130,-143962,-143794,-143626,-143458,-143290,-143121,
+ -142953,-142784,-142615,-142447,-142278,-142109,-141940,-141771,
+ -141602,-141432,-141263,-141094,-140924,-140755,-140585,-140415,
+ -140245,-140076,-139906,-139735,-139565,-139395,-139225,-139054,
+ -138884,-138713,-138543,-138372,-138201,-138030,-137859,-137688,
+ -137517,-137346,-137175,-137003,-136832,-136660,-136489,-136317,
+ -136145,-135973,-135801,-135629,-135457,-135285,-135113,-134940,
+ -134768,-134595,-134423,-134250,-134077,-133905,-133732,-133559,
+ -133386,-133213,-133039,-132866,-132693,-132519,-132346,-132172,
+ -131999,-131825,-131651,-131477,-131303,-131129,-130955,-130781,
+ -130606,-130432,-130258,-130083,-129908,-129734,-129559,-129384,
+ -129209,-129034,-128859,-128684,-128509,-128334,-128158,-127983,
+ -127807,-127632,-127456,-127280,-127105,-126929,-126753,-126577,
+ -126401,-126224,-126048,-125872,-125695,-125519,-125342,-125166,
+ -124989,-124812,-124635,-124459,-124282,-124104,-123927,-123750,
+ -123573,-123395,-123218,-123041,-122863,-122685,-122508,-122330,
+ -122152,-121974,-121796,-121618,-121440,-121262,-121083,-120905,
+ -120726,-120548,-120369,-120191,-120012,-119833,-119654,-119475,
+ -119296,-119117,-118938,-118759,-118580,-118400,-118221,-118041,
+ -117862,-117682,-117503,-117323,-117143,-116963,-116783,-116603,
+ -116423,-116243,-116063,-115882,-115702,-115521,-115341,-115160,
+ -114980,-114799,-114618,-114437,-114256,-114075,-113894,-113713,
+ -113532,-113351,-113169,-112988,-112807,-112625,-112443,-112262,
+ -112080,-111898,-111716,-111534,-111352,-111170,-110988,-110806,
+ -110624,-110442,-110259,-110077,-109894,-109712,-109529,-109346,
+ -109164,-108981,-108798,-108615,-108432,-108249,-108066,-107882,
+ -107699,-107516,-107332,-107149,-106965,-106782,-106598,-106414,
+ -106231,-106047,-105863,-105679,-105495,-105311,-105127,-104942,
+ -104758,-104574,-104389,-104205,-104020,-103836,-103651,-103466,
+ -103282,-103097,-102912,-102727,-102542,-102357,-102172,-101987,
+ -101801,-101616,-101431,-101245,-101060,-100874,-100689,-100503,
+ -100317,-100131, -99946, -99760, -99574, -99388, -99202, -99015,
+ -98829, -98643, -98457, -98270, -98084, -97897, -97711, -97524,
+ -97338, -97151, -96964, -96777, -96590, -96403, -96216, -96029,
+ -95842, -95655, -95468, -95281, -95093, -94906, -94718, -94531,
+ -94343, -94156, -93968, -93780, -93593, -93405, -93217, -93029,
+ -92841, -92653, -92465, -92277, -92088, -91900, -91712, -91523,
+ -91335, -91146, -90958, -90769, -90581, -90392, -90203, -90014,
+ -89825, -89637, -89448, -89259, -89069, -88880, -88691, -88502,
+ -88313, -88123, -87934, -87744, -87555, -87365, -87176, -86986,
+ -86797, -86607, -86417, -86227, -86037, -85847, -85657, -85467,
+ -85277, -85087, -84897, -84707, -84516, -84326, -84135, -83945,
+ -83755, -83564, -83373, -83183, -82992, -82801, -82611, -82420,
+ -82229, -82038, -81847, -81656, -81465, -81274, -81082, -80891,
+ -80700, -80509, -80317, -80126, -79934, -79743, -79551, -79360,
+ -79168, -78976, -78785, -78593, -78401, -78209, -78017, -77825,
+ -77633, -77441, -77249, -77057, -76865, -76672, -76480, -76288,
+ -76095, -75903, -75710, -75518, -75325, -75133, -74940, -74747,
+ -74555, -74362, -74169, -73976, -73783, -73590, -73397, -73204,
+ -73011, -72818, -72625, -72432, -72238, -72045, -71852, -71658,
+ -71465, -71272, -71078, -70885, -70691, -70497, -70304, -70110,
+ -69916, -69722, -69529, -69335, -69141, -68947, -68753, -68559,
+ -68365, -68170, -67976, -67782, -67588, -67394, -67199, -67005,
+ -66811, -66616, -66422, -66227, -66033, -65838, -65643, -65449,
+ -65254, -65059, -64864, -64670, -64475, -64280, -64085, -63890,
+ -63695, -63500, -63305, -63110, -62914, -62719, -62524, -62329,
+ -62133, -61938, -61743, -61547, -61352, -61156, -60961, -60765,
+ -60569, -60374, -60178, -59982, -59787, -59591, -59395, -59199,
+ -59003, -58807, -58612, -58416, -58220, -58023, -57827, -57631,
+ -57435, -57239, -57043, -56846, -56650, -56454, -56257, -56061,
+ -55865, -55668, -55472, -55275, -55079, -54882, -54685, -54489,
+ -54292, -54095, -53899, -53702, -53505, -53308, -53111, -52914,
+ -52717, -52520, -52323, -52126, -51929, -51732, -51535, -51338,
+ -51141, -50944, -50746, -50549, -50352, -50154, -49957, -49760,
+ -49562, -49365, -49167, -48970, -48772, -48575, -48377, -48179,
+ -47982, -47784, -47586, -47389, -47191, -46993, -46795, -46597,
+ -46400, -46202, -46004, -45806, -45608, -45410, -45212, -45014,
+ -44816, -44618, -44419, -44221, -44023, -43825, -43627, -43428,
+ -43230, -43032, -42833, -42635, -42437, -42238, -42040, -41841,
+ -41643, -41444, -41246, -41047, -40848, -40650, -40451, -40253,
+ -40054, -39855, -39656, -39458, -39259, -39060, -38861, -38662,
+ -38464, -38265, -38066, -37867, -37668, -37469, -37270, -37071,
+ -36872, -36673, -36474, -36274, -36075, -35876, -35677, -35478,
+ -35279, -35079, -34880, -34681, -34481, -34282, -34083, -33883,
+ -33684, -33485, -33285, -33086, -32886, -32687, -32487, -32288,
+ -32088, -31889, -31689, -31489, -31290, -31090, -30891, -30691,
+ -30491, -30292, -30092, -29892, -29692, -29493, -29293, -29093,
+ -28893, -28693, -28493, -28294, -28094, -27894, -27694, -27494,
+ -27294, -27094, -26894, -26694, -26494, -26294, -26094, -25894,
+ -25694, -25494, -25293, -25093, -24893, -24693, -24493, -24293,
+ -24092, -23892, -23692, -23492, -23291, -23091, -22891, -22691,
+ -22490, -22290, -22090, -21889, -21689, -21488, -21288, -21088,
+ -20887, -20687, -20486, -20286, -20085, -19885, -19685, -19484,
+ -19284, -19083, -18882, -18682, -18481, -18281, -18080, -17880,
+ -17679, -17478, -17278, -17077, -16877, -16676, -16475, -16275,
+ -16074, -15873, -15672, -15472, -15271, -15070, -14870, -14669,
+ -14468, -14267, -14067, -13866, -13665, -13464, -13263, -13063,
+ -12862, -12661, -12460, -12259, -12058, -11858, -11657, -11456,
+ -11255, -11054, -10853, -10652, -10451, -10251, -10050, -9849,
+ -9648, -9447, -9246, -9045, -8844, -8643, -8442, -8241,
+ -8040, -7839, -7638, -7437, -7236, -7035, -6834, -6633,
+ -6432, -6231, -6030, -5829, -5628, -5427, -5226, -5025,
+ -4824, -4623, -4422, -4221, -4020, -3819, -3618, -3417,
+ -3216, -3015, -2814, -2613, -2412, -2211, -2010, -1809,
+ -1607, -1406, -1205, -1004, -803, -602, -401, -200,
+ 0, 201, 402, 603, 804, 1005, 1206, 1407,
+ 1608, 1810, 2011, 2212, 2413, 2614, 2815, 3016,
+ 3217, 3418, 3619, 3820, 4021, 4222, 4423, 4624,
+ 4825, 5026, 5227, 5428, 5629, 5830, 6031, 6232,
+ 6433, 6634, 6835, 7036, 7237, 7438, 7639, 7840,
+ 8041, 8242, 8443, 8644, 8845, 9046, 9247, 9448,
+ 9649, 9850, 10051, 10252, 10452, 10653, 10854, 11055,
+ 11256, 11457, 11658, 11859, 12059, 12260, 12461, 12662,
+ 12863, 13064, 13264, 13465, 13666, 13867, 14068, 14268,
+ 14469, 14670, 14871, 15071, 15272, 15473, 15673, 15874,
+ 16075, 16276, 16476, 16677, 16878, 17078, 17279, 17479,
+ 17680, 17881, 18081, 18282, 18482, 18683, 18883, 19084,
+ 19285, 19485, 19686, 19886, 20086, 20287, 20487, 20688,
+ 20888, 21089, 21289, 21489, 21690, 21890, 22091, 22291,
+ 22491, 22692, 22892, 23092, 23292, 23493, 23693, 23893,
+ 24093, 24294, 24494, 24694, 24894, 25094, 25294, 25495,
+ 25695, 25895, 26095, 26295, 26495, 26695, 26895, 27095,
+ 27295, 27495, 27695, 27895, 28095, 28295, 28494, 28694,
+ 28894, 29094, 29294, 29494, 29693, 29893, 30093, 30293,
+ 30492, 30692, 30892, 31091, 31291, 31490, 31690, 31890,
+ 32089, 32289, 32488, 32688, 32887, 33087, 33286, 33486,
+ 33685, 33884, 34084, 34283, 34482, 34682, 34881, 35080,
+ 35280, 35479, 35678, 35877, 36076, 36275, 36475, 36674,
+ 36873, 37072, 37271, 37470, 37669, 37868, 38067, 38266,
+ 38465, 38663, 38862, 39061, 39260, 39459, 39657, 39856,
+ 40055, 40254, 40452, 40651, 40849, 41048, 41247, 41445,
+ 41644, 41842, 42041, 42239, 42438, 42636, 42834, 43033,
+ 43231, 43429, 43628, 43826, 44024, 44222, 44420, 44619,
+ 44817, 45015, 45213, 45411, 45609, 45807, 46005, 46203,
+ 46401, 46598, 46796, 46994, 47192, 47390, 47587, 47785,
+ 47983, 48180, 48378, 48576, 48773, 48971, 49168, 49366,
+ 49563, 49761, 49958, 50155, 50353, 50550, 50747, 50945,
+ 51142, 51339, 51536, 51733, 51930, 52127, 52324, 52521,
+ 52718, 52915, 53112, 53309, 53506, 53703, 53900, 54096,
+ 54293, 54490, 54686, 54883, 55080, 55276, 55473, 55669,
+ 55866, 56062, 56258, 56455, 56651, 56847, 57044, 57240,
+ 57436, 57632, 57828, 58024, 58221, 58417, 58613, 58808,
+ 59004, 59200, 59396, 59592, 59788, 59983, 60179, 60375,
+ 60570, 60766, 60962, 61157, 61353, 61548, 61744, 61939,
+ 62134, 62330, 62525, 62720, 62915, 63111, 63306, 63501,
+ 63696, 63891, 64086, 64281, 64476, 64671, 64865, 65060,
+ 65255, 65450, 65644, 65839, 66034, 66228, 66423, 66617,
+ 66812, 67006, 67200, 67395, 67589, 67783, 67977, 68171,
+ 68366, 68560, 68754, 68948, 69142, 69336, 69530, 69723,
+ 69917, 70111, 70305, 70498, 70692, 70886, 71079, 71273,
+ 71466, 71659, 71853, 72046, 72239, 72433, 72626, 72819,
+ 73012, 73205, 73398, 73591, 73784, 73977, 74170, 74363,
+ 74556, 74748, 74941, 75134, 75326, 75519, 75711, 75904,
+ 76096, 76289, 76481, 76673, 76866, 77058, 77250, 77442,
+ 77634, 77826, 78018, 78210, 78402, 78594, 78786, 78977,
+ 79169, 79361, 79552, 79744, 79935, 80127, 80318, 80510,
+ 80701, 80892, 81083, 81275, 81466, 81657, 81848, 82039,
+ 82230, 82421, 82612, 82802, 82993, 83184, 83374, 83565,
+ 83756, 83946, 84136, 84327, 84517, 84708, 84898, 85088,
+ 85278, 85468, 85658, 85848, 86038, 86228, 86418, 86608,
+ 86798, 86987, 87177, 87366, 87556, 87745, 87935, 88124,
+ 88314, 88503, 88692, 88881, 89070, 89260, 89449, 89638,
+ 89826, 90015, 90204, 90393, 90582, 90770, 90959, 91147,
+ 91336, 91524, 91713, 91901, 92089, 92278, 92466, 92654,
+ 92842, 93030, 93218, 93406, 93594, 93781, 93969, 94157,
+ 94344, 94532, 94719, 94907, 95094, 95282, 95469, 95656,
+ 95843, 96030, 96217, 96404, 96591, 96778, 96965, 97152,
+ 97339, 97525, 97712, 97898, 98085, 98271, 98458, 98644,
+ 98830, 99016, 99203, 99389, 99575, 99761, 99947, 100132,
+ 100318, 100504, 100690, 100875, 101061, 101246, 101432, 101617,
+ 101802, 101988, 102173, 102358, 102543, 102728, 102913, 103098,
+ 103283, 103467, 103652, 103837, 104021, 104206, 104390, 104575,
+ 104759, 104943, 105128, 105312, 105496, 105680, 105864, 106048,
+ 106232, 106415, 106599, 106783, 106966, 107150, 107333, 107517,
+ 107700, 107883, 108067, 108250, 108433, 108616, 108799, 108982,
+ 109165, 109347, 109530, 109713, 109895, 110078, 110260, 110443,
+ 110625, 110807, 110989, 111171, 111353, 111535, 111717, 111899,
+ 112081, 112263, 112444, 112626, 112808, 112989, 113170, 113352,
+ 113533, 113714, 113895, 114076, 114257, 114438, 114619, 114800,
+ 114981, 115161, 115342, 115522, 115703, 115883, 116064, 116244,
+ 116424, 116604, 116784, 116964, 117144, 117324, 117504, 117683,
+ 117863, 118042, 118222, 118401, 118581, 118760, 118939, 119118,
+ 119297, 119476, 119655, 119834, 120013, 120192, 120370, 120549,
+ 120727, 120906, 121084, 121263, 121441, 121619, 121797, 121975,
+ 122153, 122331, 122509, 122686, 122864, 123042, 123219, 123396,
+ 123574, 123751, 123928, 124105, 124283, 124460, 124636, 124813,
+ 124990, 125167, 125343, 125520, 125696, 125873, 126049, 126225,
+ 126402, 126578, 126754, 126930, 127106, 127281, 127457, 127633,
+ 127808, 127984, 128159, 128335, 128510, 128685, 128860, 129035,
+ 129210, 129385, 129560, 129735, 129909, 130084, 130259, 130433,
+ 130607, 130782, 130956, 131130, 131304, 131478, 131652, 131826,
+ 132000, 132173, 132347, 132520, 132694, 132867, 133040, 133214,
+ 133387, 133560, 133733, 133906, 134078, 134251, 134424, 134596,
+ 134769, 134941, 135114, 135286, 135458, 135630, 135802, 135974,
+ 136146, 136318, 136490, 136661, 136833, 137004, 137176, 137347,
+ 137518, 137689, 137860, 138031, 138202, 138373, 138544, 138714,
+ 138885, 139055, 139226, 139396, 139566, 139736, 139907, 140077,
+ 140246, 140416, 140586, 140756, 140925, 141095, 141264, 141433,
+ 141603, 141772, 141941, 142110, 142279, 142448, 142616, 142785,
+ 142954, 143122, 143291, 143459, 143627, 143795, 143963, 144131,
+ 144299, 144467, 144635, 144802, 144970, 145137, 145305, 145472,
+ 145639, 145807, 145974, 146141, 146307, 146474, 146641, 146808,
+ 146974, 147141, 147307, 147473, 147639, 147805, 147971, 148137,
+ 148303, 148469, 148635, 148800, 148966, 149131, 149296, 149462,
+ 149627, 149792, 149957, 150122, 150286, 150451, 150616, 150780,
+ 150945, 151109, 151273, 151437, 151601, 151765, 151929, 152093,
+ 152257, 152421, 152584, 152748, 152911, 153074, 153237, 153400,
+ 153563, 153726, 153889, 154052, 154214, 154377, 154539, 154702,
+ 154864, 155026, 155188, 155350, 155512, 155674, 155836, 155997,
+ 156159, 156320, 156482, 156643, 156804, 156965, 157126, 157287,
+ 157448, 157609, 157769, 157930, 158090, 158251, 158411, 158571,
+ 158731, 158891, 159051, 159211, 159370, 159530, 159689, 159849,
+ 160008, 160167, 160327, 160486, 160644, 160803, 160962, 161121,
+ 161279, 161438, 161596, 161754, 161913, 162071, 162229, 162386,
+ 162544, 162702, 162860, 163017, 163174, 163332, 163489, 163646,
+ 163803, 163960, 164117, 164274, 164430, 164587, 164743, 164900,
+ 165056, 165212, 165368, 165524, 165680, 165836, 165991, 166147,
+ 166302, 166458, 166613, 166768, 166923, 167078, 167233, 167388,
+ 167543, 167697, 167852, 168006, 168160, 168315, 168469, 168623,
+ 168777, 168930, 169084, 169238, 169391, 169545, 169698, 169851,
+ 170004, 170157, 170310, 170463, 170616, 170768, 170921, 171073,
+ 171225, 171378, 171530, 171682, 171834, 171985, 172137, 172289,
+ 172440, 172591, 172743, 172894, 173045, 173196, 173347, 173498,
+ 173648, 173799, 173949, 174100, 174250, 174400, 174550, 174700,
+ 174850, 175000, 175149, 175299, 175448, 175598, 175747, 175896,
+ 176045, 176194, 176343, 176492, 176640, 176789, 176937, 177085,
+ 177234, 177382, 177530, 177678, 177825, 177973, 178121, 178268,
+ 178415, 178563, 178710, 178857, 179004, 179151, 179297, 179444,
+ 179591, 179737, 179883, 180029, 180176, 180322, 180467, 180613,
+ 180759, 180904, 181050, 181195, 181341, 181486, 181631, 181776,
+ 181920, 182065, 182210, 182354, 182499, 182643, 182787, 182931,
+ 183075, 183219, 183363, 183506, 183650, 183793, 183937, 184080,
+ 184223, 184366, 184509, 184652, 184794, 184937, 185079, 185222,
+ 185364, 185506, 185648, 185790, 185932, 186073, 186215, 186356,
+ 186498, 186639, 186780, 186921, 187062, 187203, 187343, 187484,
+ 187625, 187765, 187905, 188045, 188185, 188325, 188465, 188605,
+ 188744, 188884, 189023, 189162, 189302, 189441, 189580, 189718,
+ 189857, 189996, 190134, 190272, 190411, 190549, 190687, 190825,
+ 190963, 191100, 191238, 191375, 191513, 191650, 191787, 191924,
+ 192061, 192198, 192334, 192471, 192607, 192744, 192880, 193016,
+ 193152, 193288, 193424, 193559, 193695, 193830, 193966, 194101,
+ 194236, 194371, 194506, 194640, 194775, 194910, 195044, 195178,
+ 195312, 195446, 195580, 195714, 195848, 195982, 196115, 196248,
+ 196382, 196515, 196648, 196781, 196913, 197046, 197179, 197311,
+ 197443, 197576, 197708, 197840, 197972, 198103, 198235, 198366,
+ 198498, 198629, 198760, 198891, 199022, 199153, 199284, 199414,
+ 199545, 199675, 199805, 199935, 200065, 200195, 200325, 200454,
+ 200584, 200713, 200843, 200972, 201101, 201230, 201359, 201487,
+ 201616, 201744, 201873, 202001, 202129, 202257, 202385, 202512,
+ 202640, 202768, 202895, 203022, 203149, 203276, 203403, 203530,
+ 203657, 203783, 203910, 204036, 204162, 204288, 204414, 204540,
+ 204666, 204791, 204917, 205042, 205167, 205292, 205417, 205542,
+ 205667, 205791, 205916, 206040, 206165, 206289, 206413, 206537,
+ 206660, 206784, 206907, 207031, 207154, 207277, 207400, 207523,
+ 207646, 207769, 207891, 208014, 208136, 208258, 208380, 208502,
+ 208624, 208746, 208867, 208989, 209110, 209231, 209352, 209473,
+ 209594, 209715, 209835, 209956, 210076, 210196, 210316, 210436,
+ 210556, 210676, 210795, 210915, 211034, 211153, 211272, 211391,
+ 211510, 211629, 211748, 211866, 211984, 212103, 212221, 212339,
+ 212456, 212574, 212692, 212809, 212927, 213044, 213161, 213278,
+ 213395, 213511, 213628, 213745, 213861, 213977, 214093, 214209,
+ 214325, 214441, 214556, 214672, 214787, 214902, 215017, 215132,
+ 215247, 215362, 215476, 215591, 215705, 215819, 215933, 216047,
+ 216161, 216275, 216388, 216502, 216615, 216728, 216841, 216954,
+ 217067, 217180, 217292, 217405, 217517, 217629, 217741, 217853,
+ 217965, 218076, 218188, 218299, 218411, 218522, 218633, 218744,
+ 218854, 218965, 219075, 219186, 219296, 219406, 219516, 219626,
+ 219736, 219845, 219955, 220064, 220173, 220282, 220391, 220500,
+ 220609, 220717, 220826, 220934, 221042, 221150, 221258, 221366,
+ 221473, 221581, 221688, 221795, 221903, 222010, 222116, 222223,
+ 222330, 222436, 222542, 222649, 222755, 222861, 222966, 223072,
+ 223178, 223283, 223388, 223493, 223599, 223703, 223808, 223913,
+ 224017, 224122, 224226, 224330, 224434, 224538, 224641, 224745,
+ 224848, 224952, 225055, 225158, 225261, 225364, 225466, 225569,
+ 225671, 225773, 225875, 225977, 226079, 226181, 226283, 226384,
+ 226485, 226586, 226688, 226788, 226889, 226990, 227090, 227191,
+ 227291, 227391, 227491, 227591, 227691, 227790, 227890, 227989,
+ 228088, 228187, 228286, 228385, 228483, 228582, 228680, 228779,
+ 228877, 228975, 229072, 229170, 229268, 229365, 229462, 229560,
+ 229657, 229753, 229850, 229947, 230043, 230140, 230236, 230332,
+ 230428, 230524, 230619, 230715, 230810, 230905, 231001, 231096,
+ 231190, 231285, 231380, 231474, 231568, 231663, 231757, 231850,
+ 231944, 232038, 232131, 232225, 232318, 232411, 232504, 232597,
+ 232689, 232782, 232874, 232967, 233059, 233151, 233243, 233334,
+ 233426, 233517, 233609, 233700, 233791, 233882, 233972, 234063,
+ 234153, 234244, 234334, 234424, 234514, 234604, 234693, 234783,
+ 234872, 234961, 235050, 235139, 235228, 235317, 235405, 235494,
+ 235582, 235670, 235758, 235846, 235934, 236021, 236109, 236196,
+ 236283, 236370, 236457, 236544, 236630, 236717, 236803, 236889,
+ 236975, 237061, 237147, 237233, 237318, 237403, 237489, 237574,
+ 237659, 237743, 237828, 237913, 237997, 238081, 238165, 238249,
+ 238333, 238417, 238500, 238583, 238667, 238750, 238833, 238916,
+ 238998, 239081, 239163, 239245, 239328, 239410, 239491, 239573,
+ 239655, 239736, 239817, 239898, 239979, 240060, 240141, 240221,
+ 240302, 240382, 240462, 240542, 240622, 240702, 240781, 240861,
+ 240940, 241019, 241098, 241177, 241256, 241334, 241413, 241491,
+ 241569, 241647, 241725, 241803, 241881, 241958, 242035, 242112,
+ 242189, 242266, 242343, 242420, 242496, 242572, 242649, 242725,
+ 242800, 242876, 242952, 243027, 243103, 243178, 243253, 243328,
+ 243402, 243477, 243551, 243626, 243700, 243774, 243848, 243921,
+ 243995, 244068, 244142, 244215, 244288, 244361, 244433, 244506,
+ 244578, 244651, 244723, 244795, 244867, 244938, 245010, 245081,
+ 245153, 245224, 245295, 245366, 245436, 245507, 245577, 245648,
+ 245718, 245788, 245858, 245927, 245997, 246066, 246136, 246205,
+ 246274, 246342, 246411, 246480, 246548, 246616, 246684, 246752,
+ 246820, 246888, 246955, 247023, 247090, 247157, 247224, 247291,
+ 247357, 247424, 247490, 247556, 247622, 247688, 247754, 247820,
+ 247885, 247951, 248016, 248081, 248146, 248211, 248275, 248340,
+ 248404, 248468, 248532, 248596, 248660, 248723, 248787, 248850,
+ 248913, 248976, 249039, 249102, 249164, 249227, 249289, 249351,
+ 249413, 249475, 249536, 249598, 249659, 249721, 249782, 249843,
+ 249903, 249964, 250025, 250085, 250145, 250205, 250265, 250325,
+ 250385, 250444, 250503, 250562, 250622, 250680, 250739, 250798,
+ 250856, 250914, 250973, 251031, 251088, 251146, 251204, 251261,
+ 251318, 251375, 251432, 251489, 251546, 251602, 251659, 251715,
+ 251771, 251827, 251883, 251938, 251994, 252049, 252104, 252159,
+ 252214, 252269, 252324, 252378, 252432, 252487, 252541, 252594,
+ 252648, 252702, 252755, 252808, 252861, 252914, 252967, 253020,
+ 253072, 253125, 253177, 253229, 253281, 253333, 253384, 253436,
+ 253487, 253538, 253589, 253640, 253691, 253741, 253792, 253842,
+ 253892, 253942, 253992, 254042, 254091, 254141, 254190, 254239,
+ 254288, 254337, 254385, 254434, 254482, 254530, 254578, 254626,
+ 254674, 254721, 254769, 254816, 254863, 254910, 254957, 255004,
+ 255050, 255097, 255143, 255189, 255235, 255281, 255326, 255372,
+ 255417, 255462, 255507, 255552, 255597, 255642, 255686, 255730,
+ 255774, 255818, 255862, 255906, 255949, 255993, 256036, 256079,
+ 256122, 256165, 256207, 256250, 256292, 256334, 256376, 256418,
+ 256460, 256502, 256543, 256584, 256625, 256666, 256707, 256748,
+ 256788, 256829, 256869, 256909, 256949, 256989, 257028, 257068,
+ 257107, 257146, 257185, 257224, 257263, 257301, 257340, 257378,
+ 257416, 257454, 257492, 257529, 257567, 257604, 257641, 257678,
+ 257715, 257752, 257789, 257825, 257861, 257897, 257933, 257969,
+ 258005, 258040, 258076, 258111, 258146, 258181, 258216, 258250,
+ 258285, 258319, 258353, 258387, 258421, 258455, 258488, 258522,
+ 258555, 258588, 258621, 258654, 258686, 258719, 258751, 258783,
+ 258815, 258847, 258879, 258910, 258942, 258973, 259004, 259035,
+ 259066, 259096, 259127, 259157, 259187, 259217, 259247, 259277,
+ 259307, 259336, 259365, 259395, 259423, 259452, 259481, 259509,
+ 259538, 259566, 259594, 259622, 259650, 259677, 259705, 259732,
+ 259759, 259786, 259813, 259840, 259866, 259893, 259919, 259945,
+ 259971, 259997, 260022, 260048, 260073, 260098, 260123, 260148,
+ 260173, 260197, 260221, 260246, 260270, 260294, 260317, 260341,
+ 260365, 260388, 260411, 260434, 260457, 260480, 260502, 260525,
+ 260547, 260569, 260591, 260613, 260634, 260656, 260677, 260698,
+ 260719, 260740, 260761, 260781, 260802, 260822, 260842, 260862,
+ 260882, 260901, 260921, 260940, 260959, 260978, 260997, 261016,
+ 261034, 261053, 261071, 261089, 261107, 261125, 261143, 261160,
+ 261177, 261195, 261212, 261228, 261245, 261262, 261278, 261294,
+ 261310, 261326, 261342, 261358, 261373, 261389, 261404, 261419,
+ 261434, 261448, 261463, 261477, 261492, 261506, 261520, 261533,
+ 261547, 261561, 261574, 261587, 261600, 261613, 261626, 261638,
+ 261651, 261663, 261675, 261687, 261699, 261710, 261722, 261733,
+ 261744, 261755, 261766, 261777, 261788, 261798, 261808, 261818,
+ 261828, 261838, 261848, 261857, 261866, 261876, 261885, 261894,
+ 261902, 261911, 261919, 261927, 261936, 261943, 261951, 261959,
+ 261966, 261974, 261981, 261988, 261995, 262001, 262008, 262014,
+ 262021, 262027, 262033, 262038, 262044, 262050, 262055, 262060,
+ 262065, 262070, 262075, 262079, 262084, 262088, 262092, 262096,
+ 262100, 262103, 262107, 262110, 262113, 262116, 262119, 262122,
+ 262124, 262127, 262129, 262131, 262133, 262135, 262136, 262138,
+ 262139, 262140, 262141, 262142, 262143, 262143, 262144, 262144,
+ 262144, 0
+};
+#else /* ROCKBOX */
t_sample cos_table[] =
{
262144, 262144, 262144, 262144, 262144, 262144, 262144, 262144,
@@ -4097,4 +5130,6 @@ t_sample cos_table[] =
262141, 262141, 262142, 262142, 262142, 262142, 262142, 262143,
262143, 262143, 262143, 262143, 262143, 262143, 262144, 262144,
262144, 262144, 262144, 262144, 262144, 262144, 262144, 262144,
- 262144, 0};
+ 262144, 0
+};
+#endif /* ROCKBOX */
diff --git a/apps/plugins/pdbox/PDa/intern/cos_table.h b/apps/plugins/pdbox/PDa/intern/cos_table.h
index e573ea6b57..b7dfa6fe4c 100644
--- a/apps/plugins/pdbox/PDa/intern/cos_table.h
+++ b/apps/plugins/pdbox/PDa/intern/cos_table.h
@@ -1,4 +1,8 @@
/* For definition of the cos_table[] look into cos_table.c */
+#ifdef ROCKBOX
+#define ILOGCOSTABSIZE 13
+#else /* ROCKBOX */
#define ILOGCOSTABSIZE 15
+#endif /* ROCKBOX */
#define ICOSTABSIZE (1<<ILOGCOSTABSIZE)
extern t_sample cos_table[];
diff --git a/apps/plugins/pdbox/PDa/intern/cos~.c b/apps/plugins/pdbox/PDa/intern/cos~.c
index 9e2d61f848..f787496c16 100644
--- a/apps/plugins/pdbox/PDa/intern/cos~.c
+++ b/apps/plugins/pdbox/PDa/intern/cos~.c
@@ -36,10 +36,20 @@ static t_int *cos_perform(t_int *w)
phase = *in++;
phase &= ((1<<fix1)-1);
off = fixtoi((long long)phase<<ILOGCOSTABSIZE);
-
+#ifdef ROCKBOX
+#ifdef NO_INTERPOLATION
+ *out = *(tab+off);
+#else /* NO_INTERPOLATION */
+ frac = phase & ((1<<(fix1-ILOGCOSTABSIZE))-1);
+ frac <<= ILOGCOSTABSIZE;
+ *out = mult(*(tab + off ), (itofix(1) - frac)) +
+ mult(*(tab + off + 1), frac);
+#endif /* NO_INTERPOLATION */
+#else /* ROCKBOX */
frac = phase&(itofix(1)-1);
*out = mult(*(tab + off),itofix(1) - frac) +
mult(*(tab + off + 1),frac);
+#endif /* ROCKBOX */
out++;
}
return (w+4);
diff --git a/apps/plugins/pdbox/PDa/src/m_fixed.h b/apps/plugins/pdbox/PDa/src/m_fixed.h
index aa7b74b5ba..57c9296457 100644
--- a/apps/plugins/pdbox/PDa/src/m_fixed.h
+++ b/apps/plugins/pdbox/PDa/src/m_fixed.h
@@ -12,8 +12,24 @@ typedef int t_sample;
/* fixed point multiplication and division */
+#if defined(ROCKBOX) && defined(CPU_ARM)
+#define mult(A,B) \
+ ({ \
+ t_fixed lo; \
+ t_fixed hi; \
+ asm volatile ( \
+ "smull %[lo], %[hi], %[x], %[y] \n\t" /* multiply */ \
+ "mov %[lo], %[lo], lsr %[shr] \n\t" /* lo >>= fix1 */ \
+ "orr %[lo], %[lo], %[hi], lsl %[shl]" /* lo |= (hi << (32-fix1)) */ \
+ : [lo]"=&r"(lo), [hi]"=&r"(hi) \
+ : [x]"r"(A), [y]"r"(B), [shr]"r"(fix1), [shl]"r"(32-fix1)); \
+ lo; \
+ })
+#define idiv(a,b) ((((long long) (a) )<<fix1)/(long long) (b) )
+#else /* ROCKBOX && CPU_ARM */
#define mult(a,b) (long long)(((long long) (a) * (long long) (b))>>fix1)
#define idiv(a,b) ((((long long) (a) )<<fix1)/(long long) (b) )
+#endif /* ROCKBOX && CPU_ARM */
/* conversion macros */