www.pudn.com > av3dec_20050318.zip > intMDCT.h


/* 
*********************************************************************** 
* COPYRIGHT AND WARRANTY INFORMATION 
* 
* Copyright 2004,  Audio Video Coding Standard, Part III 
* 
* This software module was originally developed by 
* edited by 
* 
* DISCLAIMER OF WARRANTY 
* 
* These software programs are available to the users without any 
* license fee or royalty on an "as is" basis. The AVS disclaims 
* any and all warranties, whether express, implied, or statutory, 
* including any implied warranties of merchantability or of fitness 
* for a particular purpose. In no event shall the contributors or  
* the AVS be liable for any incidental, punitive, or consequential 
* damages of any kind whatsoever arising from the use of this program. 
* 
* This disclaimer of warranty extends to the user of this program 
* and user's customers, employees, agents, transferees, successors, 
* and assigns. 
* 
* The AVS does not represent or warrant that the program furnished 
* hereunder are free of infringement of any third-party patents. 
* Commercial implementations of AVS, including shareware, may be 
* subject to royalty fees to patent holders. Information regarding 
* the AVS patent policy is available from the AVS Web site at 
* http://www.avs.org.cn 
* 
* THIS IS NOT A GRANT OF PATENT RIGHTS - SEE THE AVS PATENT POLICY. 
************************************************************************ 
*/ 
 
#ifndef _INT_MDCT 
 
#define _INT_MDCT 
 
#include "common.h" 
 
void intMDCT(real_t *p_in, real_t *p_overlap, real_t *p_out, int blockType); 
void intIMDCT(real_t *p_in, real_t *p_overlap, real_t *p_out, int blockType); 
 
 
#define N_MDCT 1024 
#define N_MDCT_2 512 
#define N_MDCT_4 256 
#define LOG2_N_MDCT 10 
 
#define N_MDCT_SHORT 128 
#define N_MDCT_SHORT_2 64 
 
#define SHIFT 30 
 
#define SIN_PI_4 759250125 
#define SIN_PI_8 410903207 
#define SIN_PI_16 209476638 
#define SIN_3PI_16 596538995 
#define TAN_PI_16 213580528 
#define TAN_PI_32 105754339 
#define TAN_3PI_32 325716021 
#define SQRT2 1518500250 
 
#define ABS(X) ((X) < 0 ? (-X) : (X)) 
 
/* sin([0,pi/4)) */ 
static int sin_tab[N_MDCT] = { 
0, 823550, 1647099, 2470647, 3294193, 4117738, 4941281, 5764820, 
6588356, 7411888, 8235416, 9058939, 9882456, 10705968, 11529474, 12352972, 
13176464, 13999948, 14823423, 15646890, 16470347, 17293795, 18117233, 18940660, 
19764076, 20587480, 21410872, 22234252, 23057618, 23880971, 24704310, 25527634, 
26350943, 27174237, 27997515, 28820776, 29644021, 30467248, 31290457, 32113647, 
32936819, 33759971, 34583104, 35406216, 36229307, 37052377, 37875426, 38698452, 
39521455, 40344435, 41167391, 41990323, 42813230, 43636112, 44458968, 45281799, 
46104602, 46927379, 47750128, 48572848, 49395541, 50218204, 51040837, 51863441, 
52686014, 53508556, 54331067, 55153545, 55975992, 56798405, 57620785, 58443131, 
59265442, 60087719, 60909960, 61732166, 62554335, 63376468, 64198563, 65020620, 
65842639, 66664620, 67486561, 68308462, 69130324, 69952144, 70773924, 71595661, 
72417357, 73239010, 74060620, 74882187, 75703709, 76525187, 77346620, 78168007, 
78989349, 79810644, 80631892, 81453092, 82274245, 83095349, 83916404, 84737410, 
85558366, 86379272, 87200127, 88020931, 88841683, 89662382, 90483029, 91303623, 
92124163, 92944648, 93765079, 94585455, 95405776, 96226040, 97046247, 97866398, 
98686491, 99506525, 100326502, 101146419, 101966277, 102786074, 103605812, 104425488, 
105245103, 106064656, 106884147, 107703574, 108522939, 109342239, 110161476, 110980647, 
111799753, 112618793, 113437768, 114256675, 115075515, 115894288, 116712992, 117531627, 
118350194, 119168691, 119987118, 120805474, 121623759, 122441972, 123260114, 124078183, 
124896179, 125714101, 126531950, 127349724, 128167423, 128985047, 129802595, 130620067, 
131437462, 132254779, 133072019, 133889180, 134706263, 135523266, 136340190, 137157033, 
137973796, 138790477, 139607077, 140423595, 141240030, 142056382, 142872651, 143688835, 
144504935, 145320950, 146136880, 146952723, 147768480, 148584150, 149399733, 150215228, 
151030634, 151845952, 152661180, 153476319, 154291367, 155106324, 155921191, 156735965, 
157550647, 158365237, 159179733, 159994136, 160808445, 161622659, 162436778, 163250801, 
164064728, 164878559, 165692293, 166505929, 167319468, 168132908, 168946249, 169759491, 
170572633, 171385674, 172198615, 173011454, 173824192, 174636827, 175449360, 176261789, 
177074115, 177886336, 178698453, 179510465, 180322371, 181134171, 181945865, 182757451, 
183568930, 184380301, 185191564, 186002717, 186813762, 187624696, 188435520, 189246233, 
190056834, 190867324, 191677702, 192487967, 193298119, 194108156, 194918080, 195727889, 
196537583, 197347161, 198156624, 198965969, 199775198, 200584309, 201393302, 202202177, 
203010932, 203819569, 204628085, 205436481, 206244756, 207052910, 207860942, 208668851, 
209476638, 210284302, 211091842, 211899258, 212706549, 213513715, 214320755, 215127670, 
215934457, 216741118, 217547651, 218354057, 219160334, 219966481, 220772500, 221578389, 
222384147, 223189774, 223995270, 224800635, 225605867, 226410966, 227215933, 228020765, 
228825464, 229630027, 230434456, 231238749, 232042906, 232846927, 233650811, 234454557, 
235258165, 236061635, 236864966, 237668158, 238471210, 239274121, 240076892, 240879522, 
241682010, 242484355, 243286558, 244088618, 244890535, 245692307, 246493935, 247295417, 
248096755, 248897946, 249698991, 250499889, 251300640, 252101242, 252901697, 253702003, 
254502159, 255302166, 256102022, 256901728, 257701283, 258500686, 259299937, 260099036, 
260897982, 261696774, 262495412, 263293896, 264092224, 264890398, 265688415, 266486277, 
267283981, 268081529, 268878918, 269676150, 270473223, 271270136, 272066891, 272863485, 
273659918, 274456191, 275252302, 276048251, 276844038, 277639662, 278435122, 279230419, 
280025552, 280820520, 281615322, 282409959, 283204430, 283998734, 284792871, 285586841, 
286380643, 287174276, 287967740, 288761035, 289554160, 290347114, 291139898, 291932511, 
292724951, 293517220, 294309316, 295101239, 295892988, 296684563, 297475964, 298267189, 
299058239, 299849113, 300639811, 301430332, 302220676, 303010842, 303800829, 304590638, 
305380268, 306169718, 306958988, 307748077, 308536985, 309325712, 310114257, 310902619, 
311690799, 312478795, 313266607, 314054235, 314841679, 315628937, 316416009, 317202895, 
317989595, 318776108, 319562433, 320348570, 321134518, 321920278, 322705848, 323491229, 
324276419, 325061418, 325846226, 326630843, 327415267, 328199499, 328983538, 329767383, 
330551034, 331334491, 332117752, 332900819, 333683689, 334466364, 335248841, 336031121, 
336813204, 337595089, 338376774, 339158261, 339939549, 340720636, 341501523, 342282209, 
343062693, 343842976, 344623057, 345402934, 346182609, 346962080, 347741347, 348520409, 
349299266, 350077918, 350856364, 351634604, 352412636, 353190461, 353968079, 354745488, 
355522689, 356299680, 357076462, 357853034, 358629395, 359405545, 360181484, 360957211, 
361732726, 362508027, 363283116, 364057991, 364832652, 365607098, 366381329, 367155344, 
367929144, 368702727, 369476093, 370249242, 371022173, 371794885, 372567379, 373339654, 
374111709, 374883544, 375655159, 376426553, 377197725, 377968675, 378739403, 379509908, 
380280190, 381050248, 381820082, 382589691, 383359076, 384128234, 384897167, 385665873, 
386434353, 387202605, 387970630, 388738426, 389505993, 390273331, 391040440, 391807319, 
392573967, 393340384, 394106570, 394872524, 395638246, 396403735, 397168991, 397934013, 
398698801, 399463355, 400227673, 400991756, 401755603, 402519214, 403282588, 404045725, 
404808624, 405571285, 406333708, 407095891, 407857835, 408619539, 409381002, 410142225, 
410903207, 411663946, 412424444, 413184699, 413944711, 414704479, 415464004, 416223284, 
416982319, 417741109, 418499653, 419257951, 420016002, 420773806, 421531363, 422288671, 
423045732, 423802543, 424559105, 425315418, 426071480, 426827291, 427582852, 428338160, 
429093217, 429848022, 430602573, 431356872, 432110916, 432864706, 433618242, 434371523, 
435124548, 435877317, 436629829, 437382085, 438134084, 438885824, 439637307, 440388531, 
441139496, 441890201, 442640647, 443390832, 444140756, 444890419, 445639820, 446388959, 
447137835, 447886449, 448634799, 449382885, 450130706, 450878263, 451625555, 452372581, 
453119340, 453865834, 454612060, 455358019, 456103710, 456849132, 457594286, 458339171, 
459083786, 459828131, 460572205, 461316009, 462059541, 462802801, 463545789, 464288505, 
465030947, 465773116, 466515010, 467256631, 467997976, 468739046, 469479840, 470220358, 
470960600, 471700564, 472440251, 473179660, 473918791, 474657643, 475396216, 476134509, 
476872522, 477610254, 478347705, 479084875, 479821764, 480558369, 481294693, 482030733, 
482766489, 483501962, 484237150, 484972053, 485706671, 486441003, 487175049, 487908809, 
488642281, 489375466, 490108363, 490840972, 491573292, 492305322, 493037064, 493768515, 
494499676, 495230545, 495961124, 496691410, 497421405, 498151107, 498880516, 499609631, 
500338453, 501066980, 501795212, 502523149, 503250791, 503978136, 504705185, 505431937, 
506158392, 506884549, 507610408, 508335968, 509061229, 509786191, 510510853, 511235214, 
511959275, 512683035, 513406493, 514129648, 514852502, 515575053, 516297300, 517019243, 
517740883, 518462218, 519183248, 519903972, 520624391, 521344503, 522064309, 522783807, 
523502998, 524221881, 524940456, 525658722, 526376678, 527094325, 527811662, 528528689, 
529245404, 529961808, 530677900, 531393681, 532109148, 532824303, 533539144, 534253671, 
534967884, 535681782, 536395365, 537108633, 537821584, 538534220, 539246538, 539958539, 
540670223, 541381588, 542092635, 542803363, 543513772, 544223861, 544933630, 545643078, 
546352205, 547061011, 547769495, 548477657, 549185496, 549893013, 550600205, 551307074, 
552013618, 552719838, 553425732, 554131301, 554836544, 555541461, 556246051, 556950313, 
557654248, 558357855, 559061133, 559764083, 560466703, 561168994, 561870954, 562572584, 
563273883, 563974850, 564675486, 565375790, 566075761, 566775399, 567474703, 568173674, 
568872310, 569570612, 570268579, 570966210, 571663506, 572360465, 573057087, 573753372, 
574449320, 575144930, 575840202, 576535134, 577229728, 577923982, 578617896, 579311470, 
580004702, 580697594, 581390144, 582082352, 582774218, 583465740, 584156920, 584847756, 
585538248, 586228395, 586918198, 587607655, 588296766, 588985532, 589673951, 590362023, 
591049748, 591737125, 592424154, 593110835, 593797166, 594483148, 595168781, 595854063, 
596538995, 597223576, 597907806, 598591684, 599275210, 599958383, 600641203, 601323670, 
602005783, 602687543, 603368947, 604049997, 604730691, 605411029, 606091012, 606770638, 
607449906, 608128818, 608807372, 609485567, 610163404, 610840882, 611518001, 612194760, 
612871159, 613547198, 614222875, 614898191, 615573145, 616247738, 616921967, 617595834, 
618269338, 618942478, 619615253, 620287664, 620959711, 621631392, 622302707, 622973656, 
623644239, 624314455, 624984303, 625653784, 626322897, 626991641, 627660017, 628328023, 
628995660, 629662927, 630329823, 630996348, 631662503, 632328285, 632993696, 633658734, 
634323400, 634987692, 635651611, 636315156, 636978327, 637641122, 638303543, 638965588, 
639627258, 640288551, 640949467, 641610007, 642270169, 642929953, 643589359, 644248386, 
644907034, 645565303, 646223192, 646880701, 647537830, 648194577, 648850943, 649506928, 
650162530, 650817750, 651472587, 652127041, 652781111, 653434797, 654088099, 654741016, 
655393548, 656045694, 656697454, 657348828, 657999816, 658650416, 659300629, 659950454, 
660599890, 661248938, 661897597, 662545867, 663193747, 663841237, 664488336, 665135044, 
665781362, 666427287, 667072820, 667717961, 668362709, 669007064, 669651026, 670294593, 
670937767, 671580545, 672222928, 672864916, 673506508, 674147704, 674788504, 675428906, 
676068911, 676708518, 677347728, 677986538, 678624950, 679262963, 679900576, 680537789, 
681174602, 681811014, 682447025, 683082635, 683717842, 684352648, 684987051, 685621051, 
686254647, 686887840, 687520629, 688153013, 688784993, 689416567, 690047736, 690678499, 
691308855, 691938805, 692568348, 693197483, 693826211, 694454530, 695082441, 695709943, 
696337036, 696963719, 697589992, 698215855, 698841307, 699466348, 700090977, 700715194, 
701339000, 701962393, 702585372, 703207939, 703830092, 704451830, 705073155, 705694064, 
706314559, 706934638, 707554301, 708173547, 708792378, 709410791, 710028787, 710646365, 
711263525, 711880267, 712496590, 713112494, 713727978, 714343043, 714957687, 715571910, 
716185713, 716799095, 717412054, 718024592, 718636707, 719248400, 719859669, 720470515, 
721080937, 721690935, 722300508, 722909657, 723518380, 724126677, 724734549, 725341994, 
725949013, 726555604, 727161768, 727767504, 728372813, 728977692, 729582143, 730186165, 
730789757, 731392919, 731995651, 732597952, 733199822, 733801261, 734402269, 735002844, 
735602987, 736202697, 736801974, 737400818, 737999228, 738597203, 739194745, 739791851, 
740388522, 740984758, 741580558, 742175921, 742770848, 743365338, 743959390, 744553005, 
745146182, 745738921, 746331221, 746923082, 747514503, 748105485, 748696026, 749286127, 
749875788, 750465007, 751053785, 751642121, 752230015, 752817466, 753404474, 753991040, 
754577161, 755162839, 755748072, 756332861, 756917205, 757501104, 758084557, 758667564 
}; 
 
/* tan([0,pi/8)) */ 
static int tan_tab[N_MDCT] = { 
0, 411775, 823550, 1235325, 1647101, 2058877, 2470653, 2882431, 
3294209, 3705988, 4117769, 4529550, 4941333, 5353117, 5764903, 6176691, 
6588480, 7000271, 7412065, 7823860, 8235658, 8647458, 9059261, 9471067, 
9882875, 10294686, 10706500, 11118318, 11530138, 11941962, 12353790, 12765621, 
13177456, 13589295, 14001138, 14412985, 14824836, 15236691, 15648551, 16060416, 
16472285, 16884160, 17296039, 17707923, 18119812, 18531707, 18943607, 19355513, 
19767425, 20179342, 20591265, 21003195, 21415130, 21827072, 22239020, 22650975, 
23062936, 23474905, 23886880, 24298862, 24710851, 25122848, 25534852, 25946863, 
26358882, 26770909, 27182944, 27594987, 28007038, 28419097, 28831164, 29243240, 
29655325, 30067418, 30479520, 30891631, 31303752, 31715881, 32128020, 32540168, 
32952326, 33364493, 33776671, 34188858, 34601055, 35013263, 35425481, 35837709, 
36249948, 36662197, 37074458, 37486729, 37899011, 38311305, 38723609, 39135926, 
39548253, 39960592, 40372944, 40785307, 41197681, 41610069, 42022468, 42434880, 
42847304, 43259741, 43672190, 44084653, 44497128, 44909617, 45322119, 45734634, 
46147163, 46559705, 46972261, 47384831, 47797414, 48210012, 48622624, 49035251, 
49447892, 49860547, 50273217, 50685902, 51098602, 51511317, 51924047, 52336792, 
52749553, 53162330, 53575122, 53987930, 54400754, 54813593, 55226449, 55639322, 
56052210, 56465116, 56878038, 57290976, 57703932, 58116904, 58529894, 58942901, 
59355926, 59768968, 60182027, 60595104, 61008200, 61421313, 61834444, 62247594, 
62660762, 63073948, 63487153, 63900377, 64313620, 64726881, 65140162, 65553462, 
65966781, 66380120, 66793478, 67206857, 67620255, 68033673, 68447111, 68860569, 
69274047, 69687546, 70101066, 70514606, 70928168, 71341750, 71755353, 72168977, 
72582623, 72996290, 73409979, 73823689, 74237422, 74651176, 75064952, 75478750, 
75892571, 76306414, 76720280, 77134169, 77548080, 77962014, 78375971, 78789952, 
79203955, 79617982, 80032033, 80446107, 80860205, 81274328, 81688474, 82102644, 
82516838, 82931057, 83345301, 83759569, 84173862, 84588180, 85002523, 85416891, 
85831284, 86245703, 86660147, 87074617, 87489113, 87903634, 88318182, 88732756, 
89147356, 89561982, 89976635, 90391315, 90806021, 91220755, 91635515, 92050303, 
92465117, 92879960, 93294829, 93709727, 94124652, 94539605, 94954586, 95369595, 
95784632, 96199698, 96614793, 97029916, 97445068, 97860248, 98275458, 98690697, 
99105965, 99521263, 99936590, 100351946, 100767333, 101182749, 101598196, 102013672, 
102429179, 102844716, 103260284, 103675883, 104091512, 104507172, 104922863, 105338585, 
105754339, 106170124, 106585941, 107001789, 107417669, 107833581, 108249525, 108665501, 
109081509, 109497550, 109913623, 110329729, 110745868, 111162040, 111578245, 111994483, 
112410754, 112827058, 113243397, 113659769, 114076174, 114492614, 114909088, 115325596, 
115742138, 116158714, 116575326, 116991972, 117408652, 117825368, 118242119, 118658905, 
119075726, 119492583, 119909475, 120326403, 120743367, 121160367, 121577403, 121994475, 
122411583, 122828728, 123245910, 123663128, 124080383, 124497675, 124915004, 125332371, 
125749775, 126167216, 126584695, 127002212, 127419766, 127837359, 128254990, 128672659, 
129090366, 129508112, 129925897, 130343720, 130761582, 131179483, 131597424, 132015404, 
132433423, 132851481, 133269580, 133687718, 134105896, 134524114, 134942372, 135360671, 
135779010, 136197390, 136615810, 137034271, 137452774, 137871317, 138289901, 138708527, 
139127195, 139545904, 139964654, 140383447, 140802281, 141221158, 141640077, 142059038, 
142478042, 142897089, 143316178, 143735310, 144154485, 144573703, 144992965, 145412270, 
145831619, 146251011, 146670447, 147089927, 147509452, 147929020, 148348633, 148768290, 
149187992, 149607738, 150027529, 150447366, 150867247, 151287174, 151707146, 152127164, 
152547227, 152967336, 153387491, 153807692, 154227939, 154648232, 155068572, 155488959, 
155909392, 156329872, 156750399, 157170973, 157591594, 158012263, 158432979, 158853742, 
159274554, 159695413, 160116320, 160537276, 160958280, 161379332, 161800432, 162221582, 
162642780, 163064027, 163485323, 163906669, 164328063, 164749508, 165171001, 165592545, 
166014138, 166435782, 166857475, 167279219, 167701013, 168122858, 168544753, 168966699, 
169388696, 169810744, 170232844, 170654994, 171077197, 171499450, 171921756, 172344113, 
172766522, 173188984, 173611498, 174034064, 174456682, 174879354, 175302078, 175724855, 
176147685, 176570568, 176993505, 177416495, 177839539, 178262637, 178685788, 179108993, 
179532253, 179955567, 180378935, 180802358, 181225835, 181649368, 182072955, 182496597, 
182920295, 183344048, 183767856, 184191721, 184615640, 185039616, 185463648, 185887736, 
186311880, 186736081, 187160339, 187584653, 188009024, 188433452, 188857937, 189282479, 
189707079, 190131736, 190556451, 190981224, 191406055, 191830943, 192255890, 192680896, 
193105960, 193531082, 193956264, 194381504, 194806803, 195232162, 195657579, 196083057, 
196508594, 196934190, 197359847, 197785563, 198211340, 198637177, 199063074, 199489032, 
199915050, 200341130, 200767270, 201193472, 201619735, 202046059, 202472445, 202898892, 
203325401, 203751972, 204178606, 204605301, 205032059, 205458879, 205885762, 206312708, 
206739717, 207166789, 207593924, 208021122, 208448384, 208875709, 209303098, 209730552, 
210158069, 210585650, 211013296, 211441006, 211868780, 212296620, 212724524, 213152494, 
213580528, 214008628, 214436793, 214865024, 215293321, 215721683, 216150112, 216578606, 
217007167, 217435795, 217864489, 218293249, 218722077, 219150972, 219579933, 220008962, 
220438059, 220867223, 221296454, 221725754, 222155121, 222584557, 223014061, 223443633, 
223873274, 224302984, 224732763, 225162610, 225592527, 226022513, 226452568, 226882693, 
227312888, 227743152, 228173487, 228603892, 229034367, 229464912, 229895528, 230326215, 
230756972, 231187801, 231618701, 232049672, 232480714, 232911828, 233343014, 233774272, 
234205601, 234637003, 235068477, 235500024, 235931643, 236363335, 236795100, 237226938, 
237658849, 238090833, 238522891, 238955023, 239387228, 239819507, 240251860, 240684288, 
241116790, 241549366, 241982017, 242414743, 242847543, 243280419, 243713370, 244146396, 
244579498, 245012676, 245445929, 245879259, 246312664, 246746146, 247179704, 247613339, 
248047050, 248480838, 248914703, 249348646, 249782666, 250216763, 250650937, 251085190, 
251519520, 251953929, 252388415, 252822980, 253257624, 253692346, 254127147, 254562026, 
254996985, 255432023, 255867141, 256302338, 256737615, 257172971, 257608408, 258043924, 
258479521, 258915199, 259350957, 259786795, 260222715, 260658715, 261094797, 261530960, 
261967205, 262403531, 262839939, 263276429, 263713002, 264149656, 264586393, 265023212, 
265460114, 265897099, 266334167, 266771318, 267208552, 267645870, 268083271, 268520756, 
268958326, 269395979, 269833716, 270271538, 270709444, 271147435, 271585511, 272023672, 
272461918, 272900249, 273338666, 273777168, 274215756, 274654430, 275093191, 275532037, 
275970970, 276409989, 276849095, 277288288, 277727567, 278166934, 278606389, 279045930, 
279485560, 279925277, 280365082, 280804975, 281244956, 281685026, 282125184, 282565431, 
283005767, 283446192, 283886706, 284327310, 284768003, 285208785, 285649658, 286090620, 
286531673, 286972816, 287414049, 287855373, 288296787, 288738293, 289179889, 289621577, 
290063356, 290505227, 290947189, 291389244, 291831390, 292273628, 292715959, 293158383, 
293600899, 294043507, 294486209, 294929004, 295371892, 295814874, 296257949, 296701118, 
297144381, 297587738, 298031190, 298474735, 298918376, 299362111, 299805941, 300249866, 
300693886, 301138002, 301582213, 302026520, 302470922, 302915421, 303360016, 303804707, 
304249495, 304694380, 305139361, 305584439, 306029615, 306474888, 306920258, 307365726, 
307811292, 308256955, 308702717, 309148577, 309594536, 310040593, 310486750, 310933005, 
311379359, 311825812, 312272365, 312719018, 313165770, 313612622, 314059575, 314506628, 
314953781, 315401034, 315848389, 316295844, 316743401, 317191059, 317638818, 318086679, 
318534642, 318982706, 319430873, 319879142, 320327513, 320775987, 321224564, 321673244, 
322122027, 322570913, 323019902, 323468995, 323918192, 324367493, 324816898, 325266408, 
325716021, 326165740, 326615563, 327065491, 327515524, 327965663, 328415907, 328866256, 
329316712, 329767273, 330217941, 330668715, 331119595, 331570582, 332021676, 332472877, 
332924185, 333375600, 333827123, 334278754, 334730492, 335182339, 335634293, 336086356, 
336538528, 336990808, 337443197, 337895695, 338348303, 338801020, 339253846, 339706782, 
340159828, 340612984, 341066251, 341519628, 341973115, 342426713, 342880423, 343334243, 
343788175, 344242218, 344696373, 345150640, 345605018, 346059509, 346514112, 346968828, 
347423657, 347878598, 348333652, 348788820, 349244101, 349699496, 350155004, 350610627, 
351066363, 351522214, 351978180, 352434260, 352890454, 353346764, 353803189, 354259730, 
354716385, 355173157, 355630045, 356087048, 356544168, 357001404, 357458757, 357916227, 
358373814, 358831518, 359289339, 359747277, 360205334, 360663508, 361121800, 361580211, 
362038740, 362497387, 362956154, 363415039, 363874044, 364333167, 364792411, 365251773, 
365711256, 366170859, 366630582, 367090426, 367550390, 368010475, 368470680, 368931007, 
369391456, 369852026, 370312717, 370773530, 371234466, 371695524, 372156704, 372618006, 
373079432, 373540980, 374002652, 374464447, 374926366, 375388408, 375850574, 376312865, 
376775279, 377237818, 377700482, 378163271, 378626184, 379089223, 379552387, 380015677, 
380479093, 380942634, 381406302, 381870096, 382334016, 382798064, 383262238, 383726539, 
384190968, 384655524, 385120208, 385585019, 386049959, 386515027, 386980223, 387445548, 
387911001, 388376584, 388842296, 389308137, 389774108, 390240208, 390706439, 391172799, 
391639290, 392105912, 392572664, 393039547, 393506561, 393973707, 394440984, 394908392, 
395375933, 395843605, 396311410, 396779347, 397247417, 397715620, 398183956, 398652425, 
399121027, 399589763, 400058633, 400527637, 400996775, 401466047, 401935455, 402404996, 
402874673, 403344485, 403814433, 404284516, 404754734, 405225089, 405695580, 406166207, 
406636971, 407107872, 407578909, 408050084, 408521396, 408992845, 409464433, 409936158, 
410408022, 410880023, 411352164, 411824443, 412296861, 412769418, 413242115, 413714951, 
414187927, 414661043, 415134299, 415607695, 416081232, 416554909, 417028728, 417502688, 
417976789, 418451032, 418925416, 419399943, 419874612, 420349423, 420824376, 421299473, 
421774712, 422250095, 422725621, 423201291, 423677104, 424153062, 424629163, 425105409, 
425581800, 426058336, 426535017, 427011843, 427488814, 427965931, 428443194, 428920603, 
429398159, 429875860, 430353709, 430831704, 431309847, 431788137, 432266574, 432745160, 
433223893, 433702774, 434181804, 434660982, 435140309, 435619786, 436099411, 436579186, 
437059110, 437539185, 438019409, 438499784, 438980309, 439460985, 439941811, 440422789, 
440903918, 441385199, 441866632, 442348216, 442829953, 443311842, 443793884, 444276078 
}; 
 
#endif