]> git.nihav.org Git - nihav.git/blob - nihav-mpeg/src/codecs/aac/tables.rs
add MPEG-4 ASP decoder
[nihav.git] / nihav-mpeg / src / codecs / aac / tables.rs
1 const SWB_OFFSET_48K_LONG: [usize; 49+1] = [
2 0, 4, 8, 12, 16, 20, 24, 28,
3 32, 36, 40, 48, 56, 64, 72, 80,
4 88, 96, 108, 120, 132, 144, 160, 176,
5 196, 216, 240, 264, 292, 320, 352, 384,
6 416, 448, 480, 512, 544, 576, 608, 640,
7 672, 704, 736, 768, 800, 832, 864, 896,
8 928, 1024
9 ];
10 const SWB_OFFSET_48K_SHORT: [usize; 14+1] = [
11 0, 4, 8, 12, 16, 20, 28, 36, 44, 56, 68, 80, 96, 112, 128
12 ];
13 const SWB_OFFSET_32K_LONG: [usize; 51+1] = [
14 0, 4, 8, 12, 16, 20, 24, 28,
15 32, 36, 40, 48, 56, 64, 72, 80,
16 88, 96, 108, 120, 132, 144, 160, 176,
17 196, 216, 240, 264, 292, 320, 352, 384,
18 416, 448, 480, 512, 544, 576, 608, 640,
19 672, 704, 736, 768, 800, 832, 864, 896,
20 928, 960, 992, 1024
21 ];
22 const SWB_OFFSET_8K_LONG: [usize; 40+1] = [
23 0, 12, 24, 36, 48, 60, 72, 84,
24 96, 108, 120, 132, 144, 156, 172, 188,
25 204, 220, 236, 252, 268, 288, 308, 328,
26 348, 372, 396, 420, 448, 476, 508, 544,
27 580, 620, 664, 712, 764, 820, 880, 944,
28 1024
29 ];
30 const SWB_OFFSET_8K_SHORT: [usize; 15+1] = [
31 0, 4, 8, 12, 16, 20, 24, 28, 36, 44, 52, 60, 72, 88, 108, 128
32 ];
33 const SWB_OFFSET_16K_LONG: [usize; 43+1] = [
34 0, 8, 16, 24, 32, 40, 48, 56,
35 64, 72, 80, 88, 100, 112, 124, 136,
36 148, 160, 172, 184, 196, 212, 228, 244,
37 260, 280, 300, 320, 344, 368, 396, 424,
38 456, 492, 532, 572, 616, 664, 716, 772,
39 832, 896, 960, 1024
40 ];
41 const SWB_OFFSET_16K_SHORT: [usize; 15+1] = [
42 0, 4, 8, 12, 16, 20, 24, 28, 32, 40, 48, 60, 72, 88, 108, 128
43 ];
44 const SWB_OFFSET_24K_LONG: [usize; 47+1] = [
45 0, 4, 8, 12, 16, 20, 24, 28,
46 32, 36, 40, 44, 52, 60, 68, 76,
47 84, 92, 100, 108, 116, 124, 136, 148,
48 160, 172, 188, 204, 220, 240, 260, 284,
49 308, 336, 364, 396, 432, 468, 508, 552,
50 600, 652, 704, 768, 832, 896, 960, 1024
51 ];
52 const SWB_OFFSET_24K_SHORT: [usize; 15+1] = [
53 0, 4, 8, 12, 16, 20, 24, 28, 36, 44, 52, 64, 76, 92, 108, 128
54 ];
55 const SWB_OFFSET_64K_LONG: [usize; 47+1] = [
56 0, 4, 8, 12, 16, 20, 24, 28,
57 32, 36, 40, 44, 48, 52, 56, 64,
58 72, 80, 88, 100, 112, 124, 140, 156,
59 172, 192, 216, 240, 268, 304, 344, 384,
60 424, 464, 504, 544, 584, 624, 664, 704,
61 744, 784, 824, 864, 904, 944, 984, 1024
62 ];
63 const SWB_OFFSET_64K_SHORT: [usize; 12+1] = [
64 0, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 92, 128
65 ];
66 const SWB_OFFSET_96K_LONG: [usize; 41+1] = [
67 0, 4, 8, 12, 16, 20, 24, 28,
68 32, 36, 40, 44, 48, 52, 56, 64,
69 72, 80, 88, 96, 108, 120, 132, 144,
70 156, 172, 188, 212, 240, 276, 320, 384,
71 448, 512, 576, 640, 704, 768, 832, 896,
72 960, 1024
73 ];
74
75 #[derive(Clone,Copy)]
76 pub struct GASubbandInfo {
77 pub min_srate: u32,
78 pub long_bands: &'static [usize],
79 pub short_bands: &'static [usize],
80 }
81
82 impl GASubbandInfo {
83 pub fn find(srate: u32) -> GASubbandInfo {
84 for sbi in AAC_SUBBAND_INFO.iter() {
85 if srate >= sbi.min_srate {
86 return *sbi;
87 }
88 }
89 unreachable!("")
90 }
91 pub fn find_idx(srate: u32) -> usize {
92 for (i, sbi) in AAC_SUBBAND_INFO.iter().enumerate() {
93 if srate >= sbi.min_srate {
94 return i;
95 }
96 }
97 unreachable!("")
98 }
99 }
100
101 pub const AAC_SUBBAND_INFO: [GASubbandInfo; 12] = [
102 GASubbandInfo { min_srate: 92017, long_bands: &SWB_OFFSET_96K_LONG, short_bands: &SWB_OFFSET_64K_SHORT }, //96K
103 GASubbandInfo { min_srate: 75132, long_bands: &SWB_OFFSET_96K_LONG, short_bands: &SWB_OFFSET_64K_SHORT }, //88.2K
104 GASubbandInfo { min_srate: 55426, long_bands: &SWB_OFFSET_64K_LONG, short_bands: &SWB_OFFSET_64K_SHORT }, //64K
105 GASubbandInfo { min_srate: 46009, long_bands: &SWB_OFFSET_48K_LONG, short_bands: &SWB_OFFSET_48K_SHORT }, //48K
106 GASubbandInfo { min_srate: 37566, long_bands: &SWB_OFFSET_48K_LONG, short_bands: &SWB_OFFSET_48K_SHORT }, //44.1K
107 GASubbandInfo { min_srate: 27713, long_bands: &SWB_OFFSET_32K_LONG, short_bands: &SWB_OFFSET_48K_SHORT }, //32K
108 GASubbandInfo { min_srate: 23004, long_bands: &SWB_OFFSET_24K_LONG, short_bands: &SWB_OFFSET_24K_SHORT }, //24K
109 GASubbandInfo { min_srate: 18783, long_bands: &SWB_OFFSET_24K_LONG, short_bands: &SWB_OFFSET_24K_SHORT }, //22.05K
110 GASubbandInfo { min_srate: 13856, long_bands: &SWB_OFFSET_16K_LONG, short_bands: &SWB_OFFSET_16K_SHORT }, //16K
111 GASubbandInfo { min_srate: 11502, long_bands: &SWB_OFFSET_16K_LONG, short_bands: &SWB_OFFSET_16K_SHORT }, //12K
112 GASubbandInfo { min_srate: 9391, long_bands: &SWB_OFFSET_16K_LONG, short_bands: &SWB_OFFSET_16K_SHORT }, //11.025K
113 GASubbandInfo { min_srate: 0, long_bands: &SWB_OFFSET_8K_LONG, short_bands: &SWB_OFFSET_8K_SHORT }, //8K
114 ];
115
116 pub const CBRT_TAB: [f32; 1024] = [
117 0.00000000000000000000, 1.00000000000000000000,
118 2.51984209978974632951, 4.32674871092222514692,
119 6.34960420787279789894, 8.54987973338348494669,
120 10.90272355699283795323, 13.39051827940672370829,
121 16.00000000000000000000, 18.72075440746713703075,
122 21.54434690031883721721, 24.46378099626247073259,
123 27.47314182127996482685, 30.56735094036984736325,
124 33.74199169845321980556, 36.99318111495705152207,
125 40.31747359663594127180, 43.71178704119000104200,
126 47.17334509576013892806, 50.69963132571695247884,
127 54.28835233189813142998, 57.93740770400353405834,
128 61.64486527441851665347, 65.40894053658600598618,
129 69.22797937475560235079, 73.10044345532165163727,
130 77.02489777859163322491, 81.00000000000000000000,
131 85.02449121251855054238, 89.09718794488957150508,
132 93.21697517861576600561, 97.38280022413318313809,
133 101.59366732596476638327, 105.84863288986227408821,
134 110.14680124343443505670, 114.48732085660064048617,
135 118.86938096020656061830, 123.29220851090027062178,
136 127.75506545836060596244, 132.25724627755250371381,
137 136.79807573413575914734, 141.37690685569194574577,
138 145.99311908523089104057, 150.64611659662913933484,
139 155.33532675434677209529, 160.06019870205282626894,
140 164.82020206673353832582, 169.61482576651865039408,
141 174.44357691188540725200, 179.30597979112560434389,
142 184.20157493201933028622, 189.12991823257566310337,
143 194.09058015449690863083, 199.08314497371681634792,
144 204.10721008296945269011, 209.16238534187653901861,
145 214.24829247050757933085, 219.36456448277788891331,
146 224.51084515641221133822, 229.68678853652237223860,
147 234.89205847013181572378, 240.12632816923256494511,
148 245.38927980018513969113, 250.68060409747268715691,
149 256.00000000000000000000, 261.34717430828876844414,
150 266.72184136106455787047, 272.12372272986054586756,
151 277.55254693037966879699, 283.00804914946197900670,
152 288.48997098659897735513, 293.99806020902258074661,
153 299.53207051947419248945, 305.09176133582992811722,
154 310.67689758182217143506, 316.28724948815596606218,
155 321.92259240337188045261, 327.58270661385544475227,
156 333.26737717243751234639, 338.97639373507036181617,
157 344.70955040510139547588, 350.46664558470023690369,
158 356.24748183302617593933, 362.05186573075151786620,
159 367.87960775058269831798, 373.73052213344523844239,
160 379.60442677002092443080, 385.50114308734617184858,
161 391.42049594019953172189, 397.36231350702384937148,
162 403.32642719014482378002, 409.31267152006274646544,
163 415.32088406360812690827, 421.35090533576482825936,
164 427.40257871497632601129, 433.47575036176183911002,
165 439.57026914047943723453, 445.68598654408286118715,
166 451.82275662172776382183, 457.98043590909143751160,
167 464.15888336127788923421, 470.35796028818739866912,
168 476.57753029223648782021, 482.81745920832057938659,
169 489.07761504591755781262, 495.35786793323600251610,
170 501.65809006331706535811, 507.97815564200383854506,
171 514.31794083769662981941, 520.67732373281684917378,
172 527.05618427690623677486, 533.45440424129194197023,
173 539.87186717525151688967, 546.30845836361522948115,
174 552.76406478574624458604, 559.23857507584218167368,
175 565.73187948450434582522, 572.24386984152355579202,
176 578.77443951983397081167, 585.32348340058865499255,
177 591.89089783931282434796, 598.47658063309280506205,
178 605.08043098876069996084, 611.70234949203662112128,
179 618.34223807759210601741, 625.00000000000000000000,
180 631.67553980553766357232, 638.36876330481185599386,
181 645.07957754617506035597, 651.80789078990435598324,
182 658.55361248311521501881, 665.31665323538380544696,
183 672.09692479505252760063, 678.89434002619459701705,
184 685.70881288621451907474, 692.54025840406228068201,
185 699.38859265904001667978, 706.25373276018079478853,
186 713.13559682618000593854, 720.03410396586064910582,
187 726.94917425915456366424, 733.88072873858238939593,
188 740.82868937121572754752, 747.79297904110563613885,
189 754.77352153216222284228, 761.77024151147069871214,
190 768.78306451302982865267, 775.81191692189926159948,
191 782.85672595874274425816, 789.91741966475472119892,
192 796.99392688695829953156, 804.08617726386301105625,
193 811.19410121147123967046, 818.31762990962259694715,
194 825.45669528866592656295, 832.61123001644899795861,
195 839.78116748561631393306, 846.96644180120580445741,
196 854.16698776853551318295, 861.38274088137170167004,
197 868.61363731037010287198, 875.85961389178234827331,
198 883.12060811641987421145, 890.39655811886788240221,
199 897.68740266694218788475, 904.99308115138203573017,
200 912.31353357577220569881, 919.64870054668795194525,
201 926.99852326405654493458, 934.36294351172939189390,
202 941.74190364825891581901, 949.13534659787456579093,
203 956.54321584165251919905, 963.96545540887381510030,
204 971.40200986856583079545, 978.85282432122217951383,
205 986.31784439069626646659, 993.79701621626389429314,
206 1001.29028644485045643113, 1008.79760222341839923538,
207 1016.31891119151077035601, 1023.85416147394680285920,
208 1031.40330167366561163045, 1038.96628086471420034155,
209 1046.54304858537609578013, 1054.13355483143703939331,
210 1061.73775004958427555737, 1069.35558513093608150558,
211 1076.98701140469828584568, 1084.63198063194462037109,
212 1092.29044499951784480280, 1099.96235711404867558273,
213 1107.64766999608963760287, 1115.34633707436104324401,
214 1123.05831218010638496227, 1130.78354954155450739684,
215 1138.52200377848600103792, 1146.27362989690133392041,
216 1154.03838328378830932881, 1161.81621970198650622225,
217 1169.60709528514642619770, 1177.41096653278113548740,
218 1185.22779030540825227308, 1193.05752381978019055519,
219 1200.90012464420063014857, 1208.75555069392523822539,
220 1216.62376022664472328393, 1224.50471183804835456776,
221 1232.39836445746613159991, 1240.30467734358783752798,
222 1248.22361008025725843679, 1256.15512257233989682593,
223 1264.09917504166255217108, 1272.05572802302318588953,
224 1280.02474236026952900065, 1288.00617920244493252267,
225 1296.00000000000000000000, 1304.00616650106857938578,
226 1312.02464074780672969490, 1320.05538507279331269587,
227 1328.09836209549089589253, 1336.15353471876568627698,
228 1344.22086612546524725007, 1352.30031977505278348508,
229 1360.39185940029680869324, 1368.49544900401504159392,
230 1376.61105285587140485715, 1384.73863548922502932755,
231 1392.87816169803019348869, 1401.02959653378615546822,
232 1409.19290530253585926207, 1417.36805356191252347223,
233 1425.55500711823314408286, 1433.75373202363796717790,
234 1441.96419457327500999135, 1450.18636130252873140401,
235 1458.42019898429197439581, 1466.66567462628032426218,
236 1474.92275546838804685322, 1483.19140898008479051460,
237 1491.47160285785225609146, 1499.76330502266005625343,
238 1508.06648361748000563721, 1516.38110700483809947476,
239 1524.70714376440345704507, 1533.04456269061352195578,
240 1541.39333279033482841517, 1549.75342328055865850746,
241 1558.12480358613093022677, 1566.50744333751567235576,
242 1574.90131236859145593904, 1583.30638071448016673656,
243 1591.72261860940751701829, 1600.14999648459470852119,
244 1608.58848496618067173372, 1617.03805487317431896934,
245 1625.49867721543626211788, 1633.97032319168945711235,
246 1642.45296418755824970353, 1650.94657177363530877346,
247 1659.45111770357594371603, 1667.96657391221931470762,
248 1676.49291251373605427623, 1685.03010579980182968210,
249 1693.57812623779638539637, 1702.13694646902761503054,
250 1710.70653930698022150790, 1719.28687773558853417906,
251 1727.87793490753306001649, 1736.47968414256035553342,
252 1745.09209892582581461053, 1753.71515290625897572481,
253 1762.34881989495096090911, 1770.99307386356366605273,
254 1779.64788894276033072739, 1788.31323942065712335581,
255 1796.98909974129538437048, 1805.67544450313417848685,
256 1814.37224845756281313162, 1823.07948650743298813106,
257 1831.79713370561024778071, 1840.52516525354441361073,
258 1849.26355649985868223639, 1858.01228293895707941129,
259 1866.77132020964996733055, 1875.54064409379730829778,
260 1884.32023051496939389886, 1893.11005553712475456384,
261 1901.91009536330496989490, 1910.72032633434610589043,
262 1919.54072492760651020272, 1928.37126775571070221481,
263 1937.21193156530909970921, 1946.06269323585332867860,
264 1954.92352977838686823377, 1963.79441833435078658320,
265 1972.67533617440432995075, 1981.56626069726012933804,
266 1990.46716942853379578240, 1999.37804001960767870357,
267 2008.29885024650856563799, 2017.22957800879910723013,
268 2026.17020132848275375266, 2035.12069834892199446178,
269 2044.08104733376969540137, 2053.05122666591333334706,
270 2062.03121484643192958368, 2071.02099049356548902559,
271 2080.02053234169675459475, 2089.02981924034509042325,
272 2098.04883015317231039884, 2107.07754415700027205791,
273 2116.11594044084005944439, 2125.16399830493258112277,
274 2134.22169715980041368706, 2143.28901652531072254494,
275 2152.36593602974909707389, 2161.45243540890413759114,
276 2170.54849450516263667159, 2179.65409326661519891827,
277 2188.76921174617214635986, 2197.89383010068955948111,
278 2207.02792859010530656136, 2216.17148757658491620189,
279 2225.32448752367715099525, 2234.48690899547914244191,
280 2243.65873265581094990134, 2252.83993926739940822900,
281 2262.03050969107113193485, 2271.23042488495454521456,
282 2280.43966590369080978218, 2289.65821389765352475883,
283 2298.88605011217707485783, 2308.12315588679350497977,
284 2317.36951265447780206959, 2326.62510194090146635951,
285 2335.88990536369425665173, 2345.16390463171399625936,
286 2354.44708154432432710568, 2363.73941799068030339571,
287 2373.04089594902171590868, 2382.35149748597404119111,
288 2391.67120475585691100925, 2401.00000000000000000000,
289 2410.33786554606622936004, 2419.68478380738218880719,
290 2429.04073728227567767649, 2438.40570855342027001293,
291 2447.77968028718680898823, 2457.16263523300173722970,
292 2466.55455622271217223446, 2475.95542616995763639656,
293 2485.36522806954835350253, 2494.78394499685002421155,
294 2504.21156010717499516846, 2513.64805663517973736423,
295 2523.09341789426855039372, 2532.54762727600341175530,
296 2542.01066824951988970990, 2551.48252436094904179178,
297 2560.96317923284522030583, 2570.45261656361970836095,
298 2579.95082012698011153459, 2589.45777377137543011521,
299 2598.97346141944673962837, 2608.49786706748340700482,
300 2618.03097478488477244764, 2627.57276871362722634970,
301 2637.12323306773661321603, 2646.68235213276589484101,
302 2656.25011026527800629933, 2665.82649189233383886000,
303 2675.41148151098528600189, 2685.00506368777328803208,
304 2694.60722305823081375417, 2704.21794432639071681693,
305 2713.83721226429840630831, 2723.46501171152927180431,
306 2733.10132757471080422102, 2742.74614482704935401302,
307 2752.39944850786146976073, 2762.06122372210976129745,
308 2771.73145563994323122640, 2781.41012949624202083838,
309 2791.09723059016651603505, 2800.79274428471076089283,
310 2810.49665600626012615697, 2820.20895124415318114955,
311 2829.92961555024771902502, 2839.65863453849088445739,
312 2849.39599388449335539114, 2859.14167932510752976443,
313 2868.89567665800966950546, 2878.65797174128595490861,
314 2888.42855049302240274501, 2898.20739889089860213409,
315 2907.99450297178522342112, 2917.78984883134525549784,
316 2927.59342262363892738373, 2937.40521056073227132648,
317 2947.22519891230928461227, 2957.05337400528764764422,
318 2966.88972222343795795776, 2976.73423000700643820062,
319 2986.58688385234107848682, 2996.44767031152117328537,
320 3006.31657599199021347845, 3016.19358755619209563972,
321 3026.07869172121060962696, 3035.97187525841216786546,
322 3045.87312499309173830491, 3055.78242780412194573689,
323 3065.69977062360530431151, 3075.62514043652954696498,
324 3085.55852428042601551033, 3095.49990924503107792656,
325 3105.44928247195053809670, 3115.40663115432700493820,
326 3125.37194253651018711372, 3135.34520391373008166446,
327 3145.32640263177302305956, 3155.31552608666056211642,
328 3165.31256172433114230614, 3175.31749704032454349396,
329 3185.33031957946906157026, 3195.35101693557139501636,
330 3205.37957675110920726017, 3215.41598671692633695265,
331 3225.46023457193062612391, 3235.51230810279433813198,
332 3245.57219514365713714379, 3255.63988357583160145749,
333 3265.71536132751124304541, 3275.79861637348100614534,
334 3285.88963673483021850807, 3295.98841047866796875294,
335 3306.09492571784088369122, 3316.20917061065327974332,
336 3326.33113336058966400132, 3336.46080221603955851080,
337 3346.59816547002462430149, 3356.74321145992806000841,
338 3366.89592856722625133717, 3377.05630521722264744393,
339 3387.22432987878384105568, 3397.39999106407782850466,
340 3407.58327732831442777872, 3417.77417726948783081903,
341 3427.97267952812126929741, 3438.17877278701376998757,
342 3448.39244577098897963983, 3458.61368724664603711446,
343 3468.84248602211247151468, 3479.07883094679910570283,
344 3489.32271091115694452744, 3499.57411484643602694966,
345 3509.83303172444622261685, 3520.09945055731995207868,
346 3530.37336039727681180980, 3540.65475033639008443415,
347 3550.94360950635511419560, 3561.23992707825953026111,
348 3571.54369226235529746609, 3581.85489430783257756550,
349 3592.17352250259538137946, 3602.49956617303899469964,
350 3612.83301468382916011676, 3623.17385743768299671973,
351 3633.52208387515164043012, 3643.87768347440458818515,
352 3654.24064575101572849320, 3664.61096025775104210727,
353 3674.98861658435795582168, 3685.37360435735633314170,
354 3695.76591323983108607973, 3706.16553293122639147692,
355 3716.57245316714149657125, 3726.98666371912809803252,
356 3737.40815439448927900602, 3747.83691503607998890009,
357 3758.27293552210905158456, 3768.71620576594268574038,
358 3779.16671571590952406431, 3789.62445535510711613307,
359 3800.08941470120990058954, 3810.56158380627863273143,
360 3821.04095275657125316944, 3831.52751167235518402572,
361 3842.02125070772103908753, 3852.52216005039773354970,
362 3863.03022992156898112320, 3873.54545057569116485685,
363 3884.06781230031256788788, 3894.59730541589395251890,
364 3905.13392027563047362763, 3915.67764726527491511764,
365 3926.22847680296223506229, 3936.78639933903540953137,
366 3947.35140535587256080042, 3957.92348536771535935521,
367 3968.50262992049868683036, 3979.08882959168154890793,
368 3989.68207499007922574244, 4000.28235675569664914646,
369 4010.88966555956299447478, 4021.50399210356747655837,
370 4032.12532712029633791399, 4042.75366137287101918383,
371 4053.38898565478749960955, 4064.03129078975679807556,
372 4074.68056763154662330038, 4085.33680706382416263069,
373 4096.00000000000000000000, 4106.67013738307315078222,
374 4117.34721018547720623528, 4128.03120940892757431586,
375 4138.72212608426980951926, 4149.41995127132902020943,
376 4160.12467605876034467899, 4170.83629156390048577850,
377 4181.55478893262029506899, 4192.28015933917839616801,
378 4203.01239398607583929801, 4213.75148410391177646350,
379 4224.49742095124014948910, 4235.25019581442738064250,
380 4246.00980000751105750209, 4256.77622487205960371218,
381 4267.54946177703292593209, 4278.32950211864402879055,
382 4289.11633732022158978791, 4299.90995883207348494138,
383 4310.71035813135125700262, 4321.51752672191551845492,
384 4332.33145613420228011936, 4343.15213792509019866919,
385 4353.97956367776873388570, 4364.81372500160720769251,
386 4375.65461353202475838577, 4386.50222093036118091515,
387 4397.35653888374864582436, 4408.21755910498429043578,
388 4419.08527333240367268619, 4429.95967332975508245848,
389 4440.84075088607470071224, 4451.72849781556260149140,
390 4462.62290595745958760268, 4473.52396717592485378736,
391 4484.43167335991447074703, 4495.34601642306068195203,
392 4506.26698830355200656809, 4517.19458096401414299031,
393 4528.12878639139166406679, 4539.06959659683049913613,
394 4550.01700361556119502535, 4560.97099950678295016481,
395 4571.93157635354841514175, 4582.89872626264925288657,
396 4593.87244136450245283440, 4604.85271381303739213234,
397 4615.83953578558363764099, 4626.83289948275948335408,
398 4637.83279712836121605897, 4648.83922096925310379868,
399 4659.85216327525810113911, 4670.87161633904926523501,
400 4681.89757247604187653725, 4692.93002402428625872167,
401 4703.96896334436129199791, 4715.01438281926861376317,
402 4726.06627485432750178902, 4737.12463187707043306490,
403 4748.18944633713931411373, 4759.26071070618237639862,
404 4770.33841747775173168417, 4781.42255916720158215385,
405 4792.51312831158707983646, 4803.61011746956382960024,
406 4814.71351922128803175051, 4825.82332616831725755390,
407 4836.93953093351185357207, 4848.06212616093696991768,
408 4859.19110451576520574858, 4870.32645868417987021484,
409 4881.46818137327884988080, 4892.61626531097908148277,
410 4903.77070324592162282226, 4914.93148794737731830133,
411 4926.09861220515305304894, 4937.27206882949859286685,
412 4948.45185065101400370761, 4959.63795052055764637908,
413 4970.83036130915474296638, 4982.02907590790650920278,
414 4993.23408722789984897689, 5004.44538820011760647470,
415 5015.66297177534937157352, 5026.88683092410283414352,
416 5038.11695863651568266957, 5049.35334792226804374128,
417 5060.59599181049545700030, 5071.84488334970238307574,
418 5083.10001560767623794548, 5094.36138167140195238055,
419 5105.62897464697705021443, 5116.90278765952724278460,
420 5128.18281385312253464555, 5139.46904639069383739266,
421 5150.76147845395008724735, 5162.06010324329586226046,
422 5173.36491397774949620901, 5184.67590389486168473015,
423 5195.99306625063457946696, 5207.31639431944136777275,
424 5218.64588139394633349310, 5229.98152078502539476210,
425 5241.32330582168711604207, 5252.67122985099419082825,
426 5264.02528623798539017136, 5275.38546836559797512686,
427 5286.75176963459056894345, 5298.12418346346648492902,
428 5309.50270328839750768337, 5320.88732256314812363853,
429 5332.27803475900019749466, 5343.67483336467809167120,
430 5355.07771188627422464538, 5366.48666384717506608493,
431 5377.90168278798756453909, 5389.32276226646600480462,
432 5400.74989585743929171310, 5412.18307715273865739103,
433 5423.62229976112578906462, 5435.06755730822137274201,
434 5446.51884343643405268681, 5457.97615180488980016543,
435 5469.43947608936169134078, 5480.90880998220008944137,
436 5492.38414719226322928148, 5503.86548144484820056943,
437 5515.35280648162232767522, 5526.84611606055494206099,
438 5538.34540395584954594062, 5549.85066395787636263065,
439 5561.36188987310527215822, 5572.87907552403912848766,
440 5584.40221474914745648420, 5595.93130140280052425440,
441 5607.46632935520379040912, 5619.00729249233272160991,
442 5630.55418471586797863175, 5642.10699994313096796533,
443 5653.66573210701975733484, 5665.23037515594535039405,
444 5676.80092305376832011338, 5688.37736977973579808574,
445 5699.95970932841881497846, 5711.54793570964999330223,
446 5723.14204294846158631490, 5734.74202508502386342409,
447 5746.34787617458383784274, 5757.95959028740433508500,
448 5769.57716150870339937682, 5781.20058393859403575522,
449 5792.82985169202428586548, 5804.46495889871763400807,
450 5816.10589970311374244488, 5827.75266826430951326733,
451 5839.40525875600047331188, 5851.06366536642248232785,
452 5862.72788229829375934747, 5874.39790376875722747797,
453 5886.07372400932317303513, 5897.75533726581221821409,
454 5909.44273779829860414349, 5921.13591988105378255449,
455 5932.83487780249031468554, 5944.53960586510607315938,
456 5956.25009838542874748271, 5967.96634969396064926063,
457 5979.68835413512381508465, 5991.41610606720540610287,
458 6003.14959986230340175701, 6014.88882990627258469111,
459 6026.63379059867081659247, 6038.38447635270560190282,
460 6050.14088159518093714526, 6061.90300076644444515159,
461 6073.67082832033479083862, 6085.44435872412937778478,
462 6097.22358645849232292250, 6109.00850601742270810388,
463 6120.79911190820310563222, 6132.59539865134837750251,
464 6144.39736078055474512803, 6156.20499284264912773514,
465 6168.01828939753874964564, 6179.83724501816101087963,
466 6191.66185429043362385814, 6203.49211181320501021897,
467 6215.32801219820495899381, 6227.16955006999554278829,
468 6239.01672006592229121176, 6250.86951683606561894385,
469 6262.72793504319250755710, 6274.59196936270843845418,
470 6286.46161448260957694235, 6298.33686510343520349244,
471 6310.21771593822039276018, 6322.10416171244893688591,
472 6333.99619716400651305005, 6345.89381704313409249180,
473 6357.79701611238158988695, 6369.70578914656175197088,
474 6381.62013093270428235943, 6393.54003627001020304581,
475 6405.46549996980644951853, 6417.39651685550069817135,
476 6429.33308176253642558822, 6441.27518953834819653438,
477 6453.22283504231718055181, 6465.17601314572689473778,
478 6477.13471873171917212961, 6489.09894669525035361295,
479 6501.06869194304770142251, 6513.04394939356603447102,
480 6525.02471397694458232645, 6537.01098063496405738785,
481 6549.00274432100394351959, 6561.00000000000000000000,
482 6573.00274264840197907197, 6585.01096725413155631842,
483 6597.02466881654047148971, 6609.04384234636887939973,
484 6621.06848286570390962714, 6633.09858540793843229335,
485 6645.13414501773003047301, 6657.17515675096017665240,
486 6669.22161567469361224125, 6681.27351686713792941814,
487 6693.33085541760335312165, 6705.39362642646272231859,
488 6717.46182500511166973889, 6729.53544627592899810861,
489 6741.61448537223725215708, 6753.69893743826348483974,
490 6765.78879762910021658207, 6777.88406111066658705365,
491 6789.98472305966969690639, 6802.09077866356613942311,
492 6814.20222312052372075341, 6826.31905163938336666512,
493 6838.44125943962121618801, 6850.56884175131089945917,
494 6862.70179381508599938037, 6874.84011088210269634835,
495 6886.98378821400259399540, 6899.13282108287572501106,
496 6911.28720477122373691708, 6923.44693457192325563853,
497 6935.61200578818942583722, 6947.78241373353962741599,
498 6959.95815373175736693294, 6972.13922111685634302592,
499 6984.32561123304468356362, 6996.51731943468935607670,
500 7008.71434108628074710341, 7020.91667156239741249389,
501 7033.12430624767099576007, 7045.33724053675131321109,
502 7057.55546983427160692410, 7069.77898955481396265025,
503 7082.00779512287489161680, 7094.24188197283107686025,
504 7106.48124554890528130421, 7118.72588130513241758149,
505 7130.97578470532577893077, 7143.23095122304342902888,
506 7155.49137634155475034353, 7167.75705555380715104744,
507 7180.02798436239292783509, 7192.30415827951628499159,
508 7204.58557282696050807078, 7216.87222353605529190470,
509 7229.16410594764422115706, 7241.46121561205240328318,
510 7253.76354808905425274642, 7266.07109894784142525374,
511 7278.38386376699090206390, 7290.70183813443322186472,
512 7303.02501764742086110393, 7315.35339791249676095048,
513 7327.68697454546300019352, 7340.02574317134961247545,
514 7352.36969942438354907735, 7364.71883894795778397085,
515 7377.07315739460056168550, 7389.43265042594478740465,
516 7401.79731371269755702865, 7414.16714293460982776414,
517 7426.54213378044622775532, 7438.92228194795500484219,
518 7451.30758314383811142479, 7463.69803308372142754257,
519 7476.09362749212511916383, 7488.49436210243413217391,
520 7500.90023265686882001713, 7513.31123490645570638402,
521 7525.72736461099837871413, 7538.14861753904851599415,
522 7550.57498946787704637205, 7563.00647618344543624577,
523 7575.44307348037710802987, 7587.88477716192898884021,
524 7600.33158303996318558849, 7612.78348693491878936343,
525 7625.24048467578380513161, 7637.70257210006720890322,
526 7650.16974505377112961555, 7662.64199939136315583508,
527 7675.11933097574876712015, 7687.60173567824388692928,
528 7700.08920937854756073745, 7712.58174796471475346778,
529 7725.07934733312927027112, 7737.58200338847679579618,
530 7750.08971204371805550856, 7762.60246922006209438555,
531 7775.12027084693967473241, 7787.64311286197679203067,
532 7800.17099121096830812588, 7812.70390184785169990017,
533 7825.24184073468092493210, 7837.78480384160040191734,
534 7850.33278714681910501999, 7862.88578663658477368105,
535 7875.44379830515823408240, 7888.00681815478783417799,
536 7900.57484219568399051786, 7913.14786644599384617545,
537 7925.72588693177604026621, 7938.30889968697558637233,
538 7950.89690075339886199671, 7963.48988618068870553391,
539 7976.08785202629962245361, 7988.69079435547309920497,
540 8001.29870924121302363592, 8013.91159276426121269163,
541 8026.52944101307304565823, 8039.15225008379320278156,
542 8051.78001608023150890370, 8064.41273511383888132599,
543 8077.05040330368338082659, 8089.69301677642636665882,
544 8102.34057166629875317403, 8114.99306411507736889548,
545 8127.65049027206141672979, 8140.31284629404903582077,
546 8152.98012834531396217282, 8165.65233259758229072790,
547 8178.32945523000933527156, 8191.01149242915658802209,
548 8203.69844038896877663000, 8216.39029531075101944113,
549 8229.08705340314607703717, 8241.78871088211170136849,
550 8254.49526397089807995722, 8267.20670890002537611481,
551 8279.92304190726136400070, 8292.64425923759915859953,
552 8305.37035714323503855602, 8318.10133188354636412492,
553 8330.83717972506958670621, 8343.57789694147835174732,
554 8356.32347981356169273434, 8369.07392462920231766098,
555 8381.82922768335498620538, 8394.58938527802497683936,
556 8407.35439372224664477349, 8420.12424933206206896317,
557 8432.89894843049978849116, 8445.67848734755362729685,
558 8458.46286242016160747911, 8471.25206999218494970727,
559 8484.04610641438716120590, 8496.84496804441321059084,
560 8509.64865124676878864997, 8522.45715239279965516631,
561 8535.27046786067107144753, 8548.08859403534731718578,
562 8560.91152730857129187036, 8573.73926407884420113728,
563 8586.57180075140532568189, 8599.40913373821187349859,
564 8612.25125945791891603130, 8625.09817433585940440776,
565 8637.94987480402427015764, 8650.80635730104260524297,
566 8663.66761827216192428881, 8676.53365416922850688004,
567 8689.40446145066782060646, 8702.28003658146502360539,
568 8715.16037603314554565620, 8728.04547628375574998272,
569 8740.93533381784367170779, 8753.82994512643983591489,
570 8766.72930670703815266216, 8779.63341506357688956440,
571 8792.54226670641972103486, 8805.45585815233685463950,
572 8818.37418592448623295485, 8831.29724655239481182245,
573 8844.22503657193991329768, 8857.15755252533065409682,
574 8870.09479096108944853748, 8883.03674843403358526677,
575 8895.98342150525687870682, 8908.93480674211139299288,
576 8921.89090071818923967331, 8934.85170001330444790407,
577 8947.81720121347490669911, 8960.78740091090438026442,
578 8973.76229570396459291488, 8986.74188219717738752686,
579 8999.72615700119695318995, 9012.71511673279212446349,
580 9025.70875801482875019123, 9038.70707747625213191330,
581 9051.71007175206953312281, 9064.71773748333275594355,
582 9077.73007131712078715054, 9090.74706990652251368607,
583 9103.76872991061950484766, 9116.79504799446886251108,
584 9129.82602082908613942191, 9142.86164509142832424162,
585 9155.90191746437689268222, 9168.94683463672092627827,
586 9181.99639330314029606730, 9195.05059016418891276019,
587 9208.10942192627804188897, 9221.17288530165968454069,
588 9234.24097700841002200150, 9247.31369377041292633080,
589 9260.39103231734353299664, 9273.47298938465187946356,
590 9286.55956171354660560232, 9299.65074605097871845192,
591 9312.74653914962541915552, 9325.84693776787399248864,
592 9338.95193866980575913278, 9352.06153862518008973572,
593 9365.17573440941847989094, 9378.29452280358868760422,
594 9391.41790059438893098935, 9404.54586457413214701816,
595 9417.67841154073031065777, 9430.81553829767881457275,
596 9443.95724165404090730863, 9457.10351842443219324286,
597 9470.25436542900518957756, 9483.40977949343394413155,
598 9496.56975744889871041871, 9509.73429613207068207016,
599 9522.90339238509678525100, 9536.07704305558452818162,
600 9549.25524499658690982059, 9562.43799506658738376092,
601 9575.62529012948488100320, 9588.81712705457888830451,
602 9602.01350271655458365615, 9615.21441399546802737649,
603 9628.41985777673141016949, 9641.62983095109835478100,
604 9654.84433041464927614229, 9668.06335306877679352549,
605 9681.28689582017119948074, 9694.51495558080598280444,
606 9707.74752926792340594895, 9720.98461380402013630368,
607 9734.22620611683293173133, 9747.47230313932437868574,
608 9760.72290180966868520666, 9773.97799907123752523169,
609 9787.23759187258593795101, 9800.50167716743827644733,
610 9813.77025191467421224699, 9827.04331307831478939152,
611 9840.32085762750853119418, 9853.60288253651759901763,
612 9866.88938478470400149335, 9880.18036135651585503519,
613 9893.47580924147369628929, 9906.77572543415684308519,
614 9920.08010693418980803143, 9933.38895074622876047662,
615 9946.70225387994803934974, 9960.02001335002671561073,
616 9973.34222617613520310298, 9986.66888938292192045504,
617 10000.00000000000000000000, 10013.33555506193404666240,
618 10026.67555160822694520477, 10040.01998668330671538322,
619 10053.36885733651341520795, 10066.72216062208609227387,
620 10080.07989359914978294520, 10093.44205333170255827926,
621 10106.80863688860261716795, 10120.17964134355542735065,
622 10133.55506377510091249443, 10146.93490126660068500663,
623 10160.31915090622532695087, 10173.70780978694171573050,
624 10187.10087500650039581928, 10200.49834366742299677666,
625 10213.90021287698969591272, 10227.30647974722672687969,
626 10240.71714139489393278014, 10254.13219494147236458541,
627 10267.55163751315192418952, 10280.97546624081905065854,
628 10294.40367826004445332739, 10307.83627071107088560176
629 ];