aic: Fix slice size computation for widths multiples of 32 macroblocks
[ffmpeg.git] / libavcodec / aactab.c
1 /*
2  * AAC data
3  * Copyright (c) 2005-2006 Oded Shimon ( ods15 ods15 dyndns org )
4  * Copyright (c) 2006-2007 Maxim Gavrilov ( maxim.gavrilov gmail com )
5  *
6  * This file is part of Libav.
7  *
8  * Libav is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * Libav is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with Libav; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21  */
22
23 /**
24  * @file
25  * AAC data
26  * @author Oded Shimon  ( ods15 ods15 dyndns org )
27  * @author Maxim Gavrilov ( maxim.gavrilov gmail com )
28  */
29
30 #include "libavutil/mem.h"
31 #include "aac.h"
32 #include "aac_tablegen.h"
33
34 #include <stdint.h>
35
36 DECLARE_ALIGNED(32, float,  ff_aac_kbd_long_1024)[1024];
37 DECLARE_ALIGNED(32, float,  ff_aac_kbd_short_128)[128];
38
39 const uint8_t ff_aac_num_swb_1024[] = {
40     41, 41, 47, 49, 49, 51, 47, 47, 43, 43, 43, 40, 40
41 };
42
43 const uint8_t ff_aac_num_swb_512[] = {
44      0,  0,  0, 36, 36, 37, 31, 31,  0,  0,  0,  0,  0
45 };
46
47 const uint8_t ff_aac_num_swb_480[] = {
48      0,  0,  0, 35, 35, 37, 30, 30,  0,  0,  0,  0,  0
49 };
50
51 const uint8_t ff_aac_num_swb_128[] = {
52     12, 12, 12, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15
53 };
54
55 const uint8_t ff_aac_pred_sfb_max[] = {
56     33, 33, 38, 40, 40, 40, 41, 41, 37, 37, 37, 34, 34
57 };
58
59 const uint32_t ff_aac_scalefactor_code[121] = {
60     0x3ffe8, 0x3ffe6, 0x3ffe7, 0x3ffe5, 0x7fff5, 0x7fff1, 0x7ffed, 0x7fff6,
61     0x7ffee, 0x7ffef, 0x7fff0, 0x7fffc, 0x7fffd, 0x7ffff, 0x7fffe, 0x7fff7,
62     0x7fff8, 0x7fffb, 0x7fff9, 0x3ffe4, 0x7fffa, 0x3ffe3, 0x1ffef, 0x1fff0,
63     0x0fff5, 0x1ffee, 0x0fff2, 0x0fff3, 0x0fff4, 0x0fff1, 0x07ff6, 0x07ff7,
64     0x03ff9, 0x03ff5, 0x03ff7, 0x03ff3, 0x03ff6, 0x03ff2, 0x01ff7, 0x01ff5,
65     0x00ff9, 0x00ff7, 0x00ff6, 0x007f9, 0x00ff4, 0x007f8, 0x003f9, 0x003f7,
66     0x003f5, 0x001f8, 0x001f7, 0x000fa, 0x000f8, 0x000f6, 0x00079, 0x0003a,
67     0x00038, 0x0001a, 0x0000b, 0x00004, 0x00000, 0x0000a, 0x0000c, 0x0001b,
68     0x00039, 0x0003b, 0x00078, 0x0007a, 0x000f7, 0x000f9, 0x001f6, 0x001f9,
69     0x003f4, 0x003f6, 0x003f8, 0x007f5, 0x007f4, 0x007f6, 0x007f7, 0x00ff5,
70     0x00ff8, 0x01ff4, 0x01ff6, 0x01ff8, 0x03ff8, 0x03ff4, 0x0fff0, 0x07ff4,
71     0x0fff6, 0x07ff5, 0x3ffe2, 0x7ffd9, 0x7ffda, 0x7ffdb, 0x7ffdc, 0x7ffdd,
72     0x7ffde, 0x7ffd8, 0x7ffd2, 0x7ffd3, 0x7ffd4, 0x7ffd5, 0x7ffd6, 0x7fff2,
73     0x7ffdf, 0x7ffe7, 0x7ffe8, 0x7ffe9, 0x7ffea, 0x7ffeb, 0x7ffe6, 0x7ffe0,
74     0x7ffe1, 0x7ffe2, 0x7ffe3, 0x7ffe4, 0x7ffe5, 0x7ffd7, 0x7ffec, 0x7fff4,
75     0x7fff3,
76 };
77
78 const uint8_t ff_aac_scalefactor_bits[121] = {
79     18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
80     19, 19, 19, 18, 19, 18, 17, 17, 16, 17, 16, 16, 16, 16, 15, 15,
81     14, 14, 14, 14, 14, 14, 13, 13, 12, 12, 12, 11, 12, 11, 10, 10,
82     10,  9,  9,  8,  8,  8,  7,  6,  6,  5,  4,  3,  1,  4,  4,  5,
83      6,  6,  7,  7,  8,  8,  9,  9, 10, 10, 10, 11, 11, 11, 11, 12,
84     12, 13, 13, 13, 14, 14, 16, 15, 16, 15, 18, 19, 19, 19, 19, 19,
85     19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
86     19, 19, 19, 19, 19, 19, 19, 19, 19,
87 };
88
89 static const uint16_t codes1[81] = {
90     0x7f8, 0x1f1, 0x7fd, 0x3f5, 0x068, 0x3f0, 0x7f7, 0x1ec,
91     0x7f5, 0x3f1, 0x072, 0x3f4, 0x074, 0x011, 0x076, 0x1eb,
92     0x06c, 0x3f6, 0x7fc, 0x1e1, 0x7f1, 0x1f0, 0x061, 0x1f6,
93     0x7f2, 0x1ea, 0x7fb, 0x1f2, 0x069, 0x1ed, 0x077, 0x017,
94     0x06f, 0x1e6, 0x064, 0x1e5, 0x067, 0x015, 0x062, 0x012,
95     0x000, 0x014, 0x065, 0x016, 0x06d, 0x1e9, 0x063, 0x1e4,
96     0x06b, 0x013, 0x071, 0x1e3, 0x070, 0x1f3, 0x7fe, 0x1e7,
97     0x7f3, 0x1ef, 0x060, 0x1ee, 0x7f0, 0x1e2, 0x7fa, 0x3f3,
98     0x06a, 0x1e8, 0x075, 0x010, 0x073, 0x1f4, 0x06e, 0x3f7,
99     0x7f6, 0x1e0, 0x7f9, 0x3f2, 0x066, 0x1f5, 0x7ff, 0x1f7,
100     0x7f4,
101 };
102
103 static const uint8_t bits1[81] = {
104     11,  9, 11, 10,  7, 10, 11,  9, 11, 10,  7, 10,  7,  5,  7,  9,
105      7, 10, 11,  9, 11,  9,  7,  9, 11,  9, 11,  9,  7,  9,  7,  5,
106      7,  9,  7,  9,  7,  5,  7,  5,  1,  5,  7,  5,  7,  9,  7,  9,
107      7,  5,  7,  9,  7,  9, 11,  9, 11,  9,  7,  9, 11,  9, 11, 10,
108      7,  9,  7,  5,  7,  9,  7, 10, 11,  9, 11, 10,  7,  9, 11,  9,
109     11,
110 };
111
112 static const uint16_t codes2[81] = {
113     0x1f3, 0x06f, 0x1fd, 0x0eb, 0x023, 0x0ea, 0x1f7, 0x0e8,
114     0x1fa, 0x0f2, 0x02d, 0x070, 0x020, 0x006, 0x02b, 0x06e,
115     0x028, 0x0e9, 0x1f9, 0x066, 0x0f8, 0x0e7, 0x01b, 0x0f1,
116     0x1f4, 0x06b, 0x1f5, 0x0ec, 0x02a, 0x06c, 0x02c, 0x00a,
117     0x027, 0x067, 0x01a, 0x0f5, 0x024, 0x008, 0x01f, 0x009,
118     0x000, 0x007, 0x01d, 0x00b, 0x030, 0x0ef, 0x01c, 0x064,
119     0x01e, 0x00c, 0x029, 0x0f3, 0x02f, 0x0f0, 0x1fc, 0x071,
120     0x1f2, 0x0f4, 0x021, 0x0e6, 0x0f7, 0x068, 0x1f8, 0x0ee,
121     0x022, 0x065, 0x031, 0x002, 0x026, 0x0ed, 0x025, 0x06a,
122     0x1fb, 0x072, 0x1fe, 0x069, 0x02e, 0x0f6, 0x1ff, 0x06d,
123     0x1f6,
124 };
125
126 static const uint8_t bits2[81] = {
127     9, 7, 9, 8, 6, 8, 9, 8, 9, 8, 6, 7, 6, 5, 6, 7,
128     6, 8, 9, 7, 8, 8, 6, 8, 9, 7, 9, 8, 6, 7, 6, 5,
129     6, 7, 6, 8, 6, 5, 6, 5, 3, 5, 6, 5, 6, 8, 6, 7,
130     6, 5, 6, 8, 6, 8, 9, 7, 9, 8, 6, 8, 8, 7, 9, 8,
131     6, 7, 6, 4, 6, 8, 6, 7, 9, 7, 9, 7, 6, 8, 9, 7,
132     9,
133 };
134
135 static const uint16_t codes3[81] = {
136     0x0000, 0x0009, 0x00ef, 0x000b, 0x0019, 0x00f0, 0x01eb, 0x01e6,
137     0x03f2, 0x000a, 0x0035, 0x01ef, 0x0034, 0x0037, 0x01e9, 0x01ed,
138     0x01e7, 0x03f3, 0x01ee, 0x03ed, 0x1ffa, 0x01ec, 0x01f2, 0x07f9,
139     0x07f8, 0x03f8, 0x0ff8, 0x0008, 0x0038, 0x03f6, 0x0036, 0x0075,
140     0x03f1, 0x03eb, 0x03ec, 0x0ff4, 0x0018, 0x0076, 0x07f4, 0x0039,
141     0x0074, 0x03ef, 0x01f3, 0x01f4, 0x07f6, 0x01e8, 0x03ea, 0x1ffc,
142     0x00f2, 0x01f1, 0x0ffb, 0x03f5, 0x07f3, 0x0ffc, 0x00ee, 0x03f7,
143     0x7ffe, 0x01f0, 0x07f5, 0x7ffd, 0x1ffb, 0x3ffa, 0xffff, 0x00f1,
144     0x03f0, 0x3ffc, 0x01ea, 0x03ee, 0x3ffb, 0x0ff6, 0x0ffa, 0x7ffc,
145     0x07f2, 0x0ff5, 0xfffe, 0x03f4, 0x07f7, 0x7ffb, 0x0ff7, 0x0ff9,
146     0x7ffa,
147 };
148
149 static const uint8_t bits3[81] = {
150      1,  4,  8,  4,  5,  8,  9,  9, 10,  4,  6,  9,  6,  6,  9,  9,
151      9, 10,  9, 10, 13,  9,  9, 11, 11, 10, 12,  4,  6, 10,  6,  7,
152     10, 10, 10, 12,  5,  7, 11,  6,  7, 10,  9,  9, 11,  9, 10, 13,
153      8,  9, 12, 10, 11, 12,  8, 10, 15,  9, 11, 15, 13, 14, 16,  8,
154     10, 14,  9, 10, 14, 12, 12, 15, 11, 12, 16, 10, 11, 15, 12, 12,
155     15,
156 };
157
158 static const uint16_t codes4[81] = {
159     0x007, 0x016, 0x0f6, 0x018, 0x008, 0x0ef, 0x1ef, 0x0f3,
160     0x7f8, 0x019, 0x017, 0x0ed, 0x015, 0x001, 0x0e2, 0x0f0,
161     0x070, 0x3f0, 0x1ee, 0x0f1, 0x7fa, 0x0ee, 0x0e4, 0x3f2,
162     0x7f6, 0x3ef, 0x7fd, 0x005, 0x014, 0x0f2, 0x009, 0x004,
163     0x0e5, 0x0f4, 0x0e8, 0x3f4, 0x006, 0x002, 0x0e7, 0x003,
164     0x000, 0x06b, 0x0e3, 0x069, 0x1f3, 0x0eb, 0x0e6, 0x3f6,
165     0x06e, 0x06a, 0x1f4, 0x3ec, 0x1f0, 0x3f9, 0x0f5, 0x0ec,
166     0x7fb, 0x0ea, 0x06f, 0x3f7, 0x7f9, 0x3f3, 0xfff, 0x0e9,
167     0x06d, 0x3f8, 0x06c, 0x068, 0x1f5, 0x3ee, 0x1f2, 0x7f4,
168     0x7f7, 0x3f1, 0xffe, 0x3ed, 0x1f1, 0x7f5, 0x7fe, 0x3f5,
169     0x7fc,
170 };
171
172 static const uint8_t bits4[81] = {
173      4,  5,  8,  5,  4,  8,  9,  8, 11,  5,  5,  8,  5,  4,  8,  8,
174      7, 10,  9,  8, 11,  8,  8, 10, 11, 10, 11,  4,  5,  8,  4,  4,
175      8,  8,  8, 10,  4,  4,  8,  4,  4,  7,  8,  7,  9,  8,  8, 10,
176      7,  7,  9, 10,  9, 10,  8,  8, 11,  8,  7, 10, 11, 10, 12,  8,
177      7, 10,  7,  7,  9, 10,  9, 11, 11, 10, 12, 10,  9, 11, 11, 10,
178     11,
179 };
180
181 static const uint16_t codes5[81] = {
182     0x1fff, 0x0ff7, 0x07f4, 0x07e8, 0x03f1, 0x07ee, 0x07f9, 0x0ff8,
183     0x1ffd, 0x0ffd, 0x07f1, 0x03e8, 0x01e8, 0x00f0, 0x01ec, 0x03ee,
184     0x07f2, 0x0ffa, 0x0ff4, 0x03ef, 0x01f2, 0x00e8, 0x0070, 0x00ec,
185     0x01f0, 0x03ea, 0x07f3, 0x07eb, 0x01eb, 0x00ea, 0x001a, 0x0008,
186     0x0019, 0x00ee, 0x01ef, 0x07ed, 0x03f0, 0x00f2, 0x0073, 0x000b,
187     0x0000, 0x000a, 0x0071, 0x00f3, 0x07e9, 0x07ef, 0x01ee, 0x00ef,
188     0x0018, 0x0009, 0x001b, 0x00eb, 0x01e9, 0x07ec, 0x07f6, 0x03eb,
189     0x01f3, 0x00ed, 0x0072, 0x00e9, 0x01f1, 0x03ed, 0x07f7, 0x0ff6,
190     0x07f0, 0x03e9, 0x01ed, 0x00f1, 0x01ea, 0x03ec, 0x07f8, 0x0ff9,
191     0x1ffc, 0x0ffc, 0x0ff5, 0x07ea, 0x03f3, 0x03f2, 0x07f5, 0x0ffb,
192     0x1ffe,
193 };
194
195 static const uint8_t bits5[81] = {
196     13, 12, 11, 11, 10, 11, 11, 12, 13, 12, 11, 10,  9,  8,  9, 10,
197     11, 12, 12, 10,  9,  8,  7,  8,  9, 10, 11, 11,  9,  8,  5,  4,
198      5,  8,  9, 11, 10,  8,  7,  4,  1,  4,  7,  8, 11, 11,  9,  8,
199      5,  4,  5,  8,  9, 11, 11, 10,  9,  8,  7,  8,  9, 10, 11, 12,
200     11, 10,  9,  8,  9, 10, 11, 12, 13, 12, 12, 11, 10, 10, 11, 12,
201     13,
202 };
203
204 static const uint16_t codes6[81] = {
205     0x7fe, 0x3fd, 0x1f1, 0x1eb, 0x1f4, 0x1ea, 0x1f0, 0x3fc,
206     0x7fd, 0x3f6, 0x1e5, 0x0ea, 0x06c, 0x071, 0x068, 0x0f0,
207     0x1e6, 0x3f7, 0x1f3, 0x0ef, 0x032, 0x027, 0x028, 0x026,
208     0x031, 0x0eb, 0x1f7, 0x1e8, 0x06f, 0x02e, 0x008, 0x004,
209     0x006, 0x029, 0x06b, 0x1ee, 0x1ef, 0x072, 0x02d, 0x002,
210     0x000, 0x003, 0x02f, 0x073, 0x1fa, 0x1e7, 0x06e, 0x02b,
211     0x007, 0x001, 0x005, 0x02c, 0x06d, 0x1ec, 0x1f9, 0x0ee,
212     0x030, 0x024, 0x02a, 0x025, 0x033, 0x0ec, 0x1f2, 0x3f8,
213     0x1e4, 0x0ed, 0x06a, 0x070, 0x069, 0x074, 0x0f1, 0x3fa,
214     0x7ff, 0x3f9, 0x1f6, 0x1ed, 0x1f8, 0x1e9, 0x1f5, 0x3fb,
215     0x7fc,
216 };
217
218 static const uint8_t bits6[81] = {
219     11, 10,  9,  9,  9,  9,  9, 10, 11, 10,  9,  8,  7,  7,  7,  8,
220      9, 10,  9,  8,  6,  6,  6,  6,  6,  8,  9,  9,  7,  6,  4,  4,
221      4,  6,  7,  9,  9,  7,  6,  4,  4,  4,  6,  7,  9,  9,  7,  6,
222      4,  4,  4,  6,  7,  9,  9,  8,  6,  6,  6,  6,  6,  8,  9, 10,
223      9,  8,  7,  7,  7,  7,  8, 10, 11, 10,  9,  9,  9,  9,  9, 10,
224     11,
225 };
226
227 static const uint16_t codes7[64] = {
228     0x000, 0x005, 0x037, 0x074, 0x0f2, 0x1eb, 0x3ed, 0x7f7,
229     0x004, 0x00c, 0x035, 0x071, 0x0ec, 0x0ee, 0x1ee, 0x1f5,
230     0x036, 0x034, 0x072, 0x0ea, 0x0f1, 0x1e9, 0x1f3, 0x3f5,
231     0x073, 0x070, 0x0eb, 0x0f0, 0x1f1, 0x1f0, 0x3ec, 0x3fa,
232     0x0f3, 0x0ed, 0x1e8, 0x1ef, 0x3ef, 0x3f1, 0x3f9, 0x7fb,
233     0x1ed, 0x0ef, 0x1ea, 0x1f2, 0x3f3, 0x3f8, 0x7f9, 0x7fc,
234     0x3ee, 0x1ec, 0x1f4, 0x3f4, 0x3f7, 0x7f8, 0xffd, 0xffe,
235     0x7f6, 0x3f0, 0x3f2, 0x3f6, 0x7fa, 0x7fd, 0xffc, 0xfff,
236 };
237
238 static const uint8_t bits7[64] = {
239      1,  3,  6,  7,  8,  9, 10, 11,  3,  4,  6,  7,  8,  8,  9,  9,
240      6,  6,  7,  8,  8,  9,  9, 10,  7,  7,  8,  8,  9,  9, 10, 10,
241      8,  8,  9,  9, 10, 10, 10, 11,  9,  8,  9,  9, 10, 10, 11, 11,
242     10,  9,  9, 10, 10, 11, 12, 12, 11, 10, 10, 10, 11, 11, 12, 12,
243 };
244
245 static const uint16_t codes8[64] = {
246     0x00e, 0x005, 0x010, 0x030, 0x06f, 0x0f1, 0x1fa, 0x3fe,
247     0x003, 0x000, 0x004, 0x012, 0x02c, 0x06a, 0x075, 0x0f8,
248     0x00f, 0x002, 0x006, 0x014, 0x02e, 0x069, 0x072, 0x0f5,
249     0x02f, 0x011, 0x013, 0x02a, 0x032, 0x06c, 0x0ec, 0x0fa,
250     0x071, 0x02b, 0x02d, 0x031, 0x06d, 0x070, 0x0f2, 0x1f9,
251     0x0ef, 0x068, 0x033, 0x06b, 0x06e, 0x0ee, 0x0f9, 0x3fc,
252     0x1f8, 0x074, 0x073, 0x0ed, 0x0f0, 0x0f6, 0x1f6, 0x1fd,
253     0x3fd, 0x0f3, 0x0f4, 0x0f7, 0x1f7, 0x1fb, 0x1fc, 0x3ff,
254 };
255
256 static const uint8_t bits8[64] = {
257      5,  4,  5,  6,  7,  8,  9, 10,  4,  3,  4,  5,  6,  7,  7,  8,
258      5,  4,  4,  5,  6,  7,  7,  8,  6,  5,  5,  6,  6,  7,  8,  8,
259      7,  6,  6,  6,  7,  7,  8,  9,  8,  7,  6,  7,  7,  8,  8, 10,
260      9,  7,  7,  8,  8,  8,  9,  9, 10,  8,  8,  8,  9,  9,  9, 10,
261 };
262
263 static const uint16_t codes9[169] = {
264     0x0000, 0x0005, 0x0037, 0x00e7, 0x01de, 0x03ce, 0x03d9, 0x07c8,
265     0x07cd, 0x0fc8, 0x0fdd, 0x1fe4, 0x1fec, 0x0004, 0x000c, 0x0035,
266     0x0072, 0x00ea, 0x00ed, 0x01e2, 0x03d1, 0x03d3, 0x03e0, 0x07d8,
267     0x0fcf, 0x0fd5, 0x0036, 0x0034, 0x0071, 0x00e8, 0x00ec, 0x01e1,
268     0x03cf, 0x03dd, 0x03db, 0x07d0, 0x0fc7, 0x0fd4, 0x0fe4, 0x00e6,
269     0x0070, 0x00e9, 0x01dd, 0x01e3, 0x03d2, 0x03dc, 0x07cc, 0x07ca,
270     0x07de, 0x0fd8, 0x0fea, 0x1fdb, 0x01df, 0x00eb, 0x01dc, 0x01e6,
271     0x03d5, 0x03de, 0x07cb, 0x07dd, 0x07dc, 0x0fcd, 0x0fe2, 0x0fe7,
272     0x1fe1, 0x03d0, 0x01e0, 0x01e4, 0x03d6, 0x07c5, 0x07d1, 0x07db,
273     0x0fd2, 0x07e0, 0x0fd9, 0x0feb, 0x1fe3, 0x1fe9, 0x07c4, 0x01e5,
274     0x03d7, 0x07c6, 0x07cf, 0x07da, 0x0fcb, 0x0fda, 0x0fe3, 0x0fe9,
275     0x1fe6, 0x1ff3, 0x1ff7, 0x07d3, 0x03d8, 0x03e1, 0x07d4, 0x07d9,
276     0x0fd3, 0x0fde, 0x1fdd, 0x1fd9, 0x1fe2, 0x1fea, 0x1ff1, 0x1ff6,
277     0x07d2, 0x03d4, 0x03da, 0x07c7, 0x07d7, 0x07e2, 0x0fce, 0x0fdb,
278     0x1fd8, 0x1fee, 0x3ff0, 0x1ff4, 0x3ff2, 0x07e1, 0x03df, 0x07c9,
279     0x07d6, 0x0fca, 0x0fd0, 0x0fe5, 0x0fe6, 0x1feb, 0x1fef, 0x3ff3,
280     0x3ff4, 0x3ff5, 0x0fe0, 0x07ce, 0x07d5, 0x0fc6, 0x0fd1, 0x0fe1,
281     0x1fe0, 0x1fe8, 0x1ff0, 0x3ff1, 0x3ff8, 0x3ff6, 0x7ffc, 0x0fe8,
282     0x07df, 0x0fc9, 0x0fd7, 0x0fdc, 0x1fdc, 0x1fdf, 0x1fed, 0x1ff5,
283     0x3ff9, 0x3ffb, 0x7ffd, 0x7ffe, 0x1fe7, 0x0fcc, 0x0fd6, 0x0fdf,
284     0x1fde, 0x1fda, 0x1fe5, 0x1ff2, 0x3ffa, 0x3ff7, 0x3ffc, 0x3ffd,
285     0x7fff,
286 };
287
288 static const uint8_t bits9[169] = {
289      1,  3,  6,  8,  9, 10, 10, 11, 11, 12, 12, 13, 13,  3,  4,  6,
290      7,  8,  8,  9, 10, 10, 10, 11, 12, 12,  6,  6,  7,  8,  8,  9,
291     10, 10, 10, 11, 12, 12, 12,  8,  7,  8,  9,  9, 10, 10, 11, 11,
292     11, 12, 12, 13,  9,  8,  9,  9, 10, 10, 11, 11, 11, 12, 12, 12,
293     13, 10,  9,  9, 10, 11, 11, 11, 12, 11, 12, 12, 13, 13, 11,  9,
294     10, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 11, 10, 10, 11, 11,
295     12, 12, 13, 13, 13, 13, 13, 13, 11, 10, 10, 11, 11, 11, 12, 12,
296     13, 13, 14, 13, 14, 11, 10, 11, 11, 12, 12, 12, 12, 13, 13, 14,
297     14, 14, 12, 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 14, 15, 12,
298     11, 12, 12, 12, 13, 13, 13, 13, 14, 14, 15, 15, 13, 12, 12, 12,
299     13, 13, 13, 13, 14, 14, 14, 14, 15,
300 };
301
302 static const uint16_t codes10[169] = {
303     0x022, 0x008, 0x01d, 0x026, 0x05f, 0x0d3, 0x1cf, 0x3d0,
304     0x3d7, 0x3ed, 0x7f0, 0x7f6, 0xffd, 0x007, 0x000, 0x001,
305     0x009, 0x020, 0x054, 0x060, 0x0d5, 0x0dc, 0x1d4, 0x3cd,
306     0x3de, 0x7e7, 0x01c, 0x002, 0x006, 0x00c, 0x01e, 0x028,
307     0x05b, 0x0cd, 0x0d9, 0x1ce, 0x1dc, 0x3d9, 0x3f1, 0x025,
308     0x00b, 0x00a, 0x00d, 0x024, 0x057, 0x061, 0x0cc, 0x0dd,
309     0x1cc, 0x1de, 0x3d3, 0x3e7, 0x05d, 0x021, 0x01f, 0x023,
310     0x027, 0x059, 0x064, 0x0d8, 0x0df, 0x1d2, 0x1e2, 0x3dd,
311     0x3ee, 0x0d1, 0x055, 0x029, 0x056, 0x058, 0x062, 0x0ce,
312     0x0e0, 0x0e2, 0x1da, 0x3d4, 0x3e3, 0x7eb, 0x1c9, 0x05e,
313     0x05a, 0x05c, 0x063, 0x0ca, 0x0da, 0x1c7, 0x1ca, 0x1e0,
314     0x3db, 0x3e8, 0x7ec, 0x1e3, 0x0d2, 0x0cb, 0x0d0, 0x0d7,
315     0x0db, 0x1c6, 0x1d5, 0x1d8, 0x3ca, 0x3da, 0x7ea, 0x7f1,
316     0x1e1, 0x0d4, 0x0cf, 0x0d6, 0x0de, 0x0e1, 0x1d0, 0x1d6,
317     0x3d1, 0x3d5, 0x3f2, 0x7ee, 0x7fb, 0x3e9, 0x1cd, 0x1c8,
318     0x1cb, 0x1d1, 0x1d7, 0x1df, 0x3cf, 0x3e0, 0x3ef, 0x7e6,
319     0x7f8, 0xffa, 0x3eb, 0x1dd, 0x1d3, 0x1d9, 0x1db, 0x3d2,
320     0x3cc, 0x3dc, 0x3ea, 0x7ed, 0x7f3, 0x7f9, 0xff9, 0x7f2,
321     0x3ce, 0x1e4, 0x3cb, 0x3d8, 0x3d6, 0x3e2, 0x3e5, 0x7e8,
322     0x7f4, 0x7f5, 0x7f7, 0xffb, 0x7fa, 0x3ec, 0x3df, 0x3e1,
323     0x3e4, 0x3e6, 0x3f0, 0x7e9, 0x7ef, 0xff8, 0xffe, 0xffc,
324     0xfff,
325 };
326
327 static const uint8_t bits10[169] = {
328      6,  5,  6,  6,  7,  8,  9, 10, 10, 10, 11, 11, 12,  5,  4,  4,
329      5,  6,  7,  7,  8,  8,  9, 10, 10, 11,  6,  4,  5,  5,  6,  6,
330      7,  8,  8,  9,  9, 10, 10,  6,  5,  5,  5,  6,  7,  7,  8,  8,
331      9,  9, 10, 10,  7,  6,  6,  6,  6,  7,  7,  8,  8,  9,  9, 10,
332     10,  8,  7,  6,  7,  7,  7,  8,  8,  8,  9, 10, 10, 11,  9,  7,
333      7,  7,  7,  8,  8,  9,  9,  9, 10, 10, 11,  9,  8,  8,  8,  8,
334      8,  9,  9,  9, 10, 10, 11, 11,  9,  8,  8,  8,  8,  8,  9,  9,
335     10, 10, 10, 11, 11, 10,  9,  9,  9,  9,  9,  9, 10, 10, 10, 11,
336     11, 12, 10,  9,  9,  9,  9, 10, 10, 10, 10, 11, 11, 11, 12, 11,
337     10,  9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 12, 11, 10, 10, 10,
338     10, 10, 10, 11, 11, 12, 12, 12, 12,
339 };
340
341 static const uint16_t codes11[289] = {
342     0x000, 0x006, 0x019, 0x03d, 0x09c, 0x0c6, 0x1a7, 0x390,
343     0x3c2, 0x3df, 0x7e6, 0x7f3, 0xffb, 0x7ec, 0xffa, 0xffe,
344     0x38e, 0x005, 0x001, 0x008, 0x014, 0x037, 0x042, 0x092,
345     0x0af, 0x191, 0x1a5, 0x1b5, 0x39e, 0x3c0, 0x3a2, 0x3cd,
346     0x7d6, 0x0ae, 0x017, 0x007, 0x009, 0x018, 0x039, 0x040,
347     0x08e, 0x0a3, 0x0b8, 0x199, 0x1ac, 0x1c1, 0x3b1, 0x396,
348     0x3be, 0x3ca, 0x09d, 0x03c, 0x015, 0x016, 0x01a, 0x03b,
349     0x044, 0x091, 0x0a5, 0x0be, 0x196, 0x1ae, 0x1b9, 0x3a1,
350     0x391, 0x3a5, 0x3d5, 0x094, 0x09a, 0x036, 0x038, 0x03a,
351     0x041, 0x08c, 0x09b, 0x0b0, 0x0c3, 0x19e, 0x1ab, 0x1bc,
352     0x39f, 0x38f, 0x3a9, 0x3cf, 0x093, 0x0bf, 0x03e, 0x03f,
353     0x043, 0x045, 0x09e, 0x0a7, 0x0b9, 0x194, 0x1a2, 0x1ba,
354     0x1c3, 0x3a6, 0x3a7, 0x3bb, 0x3d4, 0x09f, 0x1a0, 0x08f,
355     0x08d, 0x090, 0x098, 0x0a6, 0x0b6, 0x0c4, 0x19f, 0x1af,
356     0x1bf, 0x399, 0x3bf, 0x3b4, 0x3c9, 0x3e7, 0x0a8, 0x1b6,
357     0x0ab, 0x0a4, 0x0aa, 0x0b2, 0x0c2, 0x0c5, 0x198, 0x1a4,
358     0x1b8, 0x38c, 0x3a4, 0x3c4, 0x3c6, 0x3dd, 0x3e8, 0x0ad,
359     0x3af, 0x192, 0x0bd, 0x0bc, 0x18e, 0x197, 0x19a, 0x1a3,
360     0x1b1, 0x38d, 0x398, 0x3b7, 0x3d3, 0x3d1, 0x3db, 0x7dd,
361     0x0b4, 0x3de, 0x1a9, 0x19b, 0x19c, 0x1a1, 0x1aa, 0x1ad,
362     0x1b3, 0x38b, 0x3b2, 0x3b8, 0x3ce, 0x3e1, 0x3e0, 0x7d2,
363     0x7e5, 0x0b7, 0x7e3, 0x1bb, 0x1a8, 0x1a6, 0x1b0, 0x1b2,
364     0x1b7, 0x39b, 0x39a, 0x3ba, 0x3b5, 0x3d6, 0x7d7, 0x3e4,
365     0x7d8, 0x7ea, 0x0ba, 0x7e8, 0x3a0, 0x1bd, 0x1b4, 0x38a,
366     0x1c4, 0x392, 0x3aa, 0x3b0, 0x3bc, 0x3d7, 0x7d4, 0x7dc,
367     0x7db, 0x7d5, 0x7f0, 0x0c1, 0x7fb, 0x3c8, 0x3a3, 0x395,
368     0x39d, 0x3ac, 0x3ae, 0x3c5, 0x3d8, 0x3e2, 0x3e6, 0x7e4,
369     0x7e7, 0x7e0, 0x7e9, 0x7f7, 0x190, 0x7f2, 0x393, 0x1be,
370     0x1c0, 0x394, 0x397, 0x3ad, 0x3c3, 0x3c1, 0x3d2, 0x7da,
371     0x7d9, 0x7df, 0x7eb, 0x7f4, 0x7fa, 0x195, 0x7f8, 0x3bd,
372     0x39c, 0x3ab, 0x3a8, 0x3b3, 0x3b9, 0x3d0, 0x3e3, 0x3e5,
373     0x7e2, 0x7de, 0x7ed, 0x7f1, 0x7f9, 0x7fc, 0x193, 0xffd,
374     0x3dc, 0x3b6, 0x3c7, 0x3cc, 0x3cb, 0x3d9, 0x3da, 0x7d3,
375     0x7e1, 0x7ee, 0x7ef, 0x7f5, 0x7f6, 0xffc, 0xfff, 0x19d,
376     0x1c2, 0x0b5, 0x0a1, 0x096, 0x097, 0x095, 0x099, 0x0a0,
377     0x0a2, 0x0ac, 0x0a9, 0x0b1, 0x0b3, 0x0bb, 0x0c0, 0x18f,
378     0x004,
379 };
380
381 static const uint8_t bits11[289] = {
382      4,  5,  6,  7,  8,  8,  9, 10, 10, 10, 11, 11, 12, 11, 12, 12,
383     10,  5,  4,  5,  6,  7,  7,  8,  8,  9,  9,  9, 10, 10, 10, 10,
384     11,  8,  6,  5,  5,  6,  7,  7,  8,  8,  8,  9,  9,  9, 10, 10,
385     10, 10,  8,  7,  6,  6,  6,  7,  7,  8,  8,  8,  9,  9,  9, 10,
386     10, 10, 10,  8,  8,  7,  7,  7,  7,  8,  8,  8,  8,  9,  9,  9,
387     10, 10, 10, 10,  8,  8,  7,  7,  7,  7,  8,  8,  8,  9,  9,  9,
388      9, 10, 10, 10, 10,  8,  9,  8,  8,  8,  8,  8,  8,  8,  9,  9,
389      9, 10, 10, 10, 10, 10,  8,  9,  8,  8,  8,  8,  8,  8,  9,  9,
390      9, 10, 10, 10, 10, 10, 10,  8, 10,  9,  8,  8,  9,  9,  9,  9,
391      9, 10, 10, 10, 10, 10, 10, 11,  8, 10,  9,  9,  9,  9,  9,  9,
392      9, 10, 10, 10, 10, 10, 10, 11, 11,  8, 11,  9,  9,  9,  9,  9,
393      9, 10, 10, 10, 10, 10, 11, 10, 11, 11,  8, 11, 10,  9,  9, 10,
394      9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11,  8, 11, 10, 10, 10,
395     10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11,  9, 11, 10,  9,
396      9, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11,  9, 11, 10,
397     10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11,  9, 12,
398     10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 12, 12,  9,
399      9,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  9,
400      5,
401 };
402
403 const uint16_t * const ff_aac_spectral_codes[11] = {
404     codes1,  codes2,  codes3, codes4, codes5, codes6, codes7, codes8,
405     codes9, codes10, codes11,
406 };
407
408 const uint8_t * const ff_aac_spectral_bits[11] = {
409     bits1,  bits2,  bits3, bits4, bits5, bits6, bits7, bits8,
410     bits9, bits10, bits11,
411 };
412
413 const uint16_t ff_aac_spectral_sizes[11] = {
414     81, 81, 81, 81, 81, 81, 64, 64, 169, 169, 289,
415 };
416
417 /* NOTE:
418  * 64.0f is a special value indicating the existence of an escape code in the
419  * bitstream.
420  */
421 static const DECLARE_ALIGNED(16, float, codebook_vector0)[324] = {
422  -1.0000000, -1.0000000, -1.0000000, -1.0000000,
423  -1.0000000, -1.0000000, -1.0000000,  0.0000000,
424  -1.0000000, -1.0000000, -1.0000000,  1.0000000,
425  -1.0000000, -1.0000000,  0.0000000, -1.0000000,
426  -1.0000000, -1.0000000,  0.0000000,  0.0000000,
427  -1.0000000, -1.0000000,  0.0000000,  1.0000000,
428  -1.0000000, -1.0000000,  1.0000000, -1.0000000,
429  -1.0000000, -1.0000000,  1.0000000,  0.0000000,
430  -1.0000000, -1.0000000,  1.0000000,  1.0000000,
431  -1.0000000,  0.0000000, -1.0000000, -1.0000000,
432  -1.0000000,  0.0000000, -1.0000000,  0.0000000,
433  -1.0000000,  0.0000000, -1.0000000,  1.0000000,
434  -1.0000000,  0.0000000,  0.0000000, -1.0000000,
435  -1.0000000,  0.0000000,  0.0000000,  0.0000000,
436  -1.0000000,  0.0000000,  0.0000000,  1.0000000,
437  -1.0000000,  0.0000000,  1.0000000, -1.0000000,
438  -1.0000000,  0.0000000,  1.0000000,  0.0000000,
439  -1.0000000,  0.0000000,  1.0000000,  1.0000000,
440  -1.0000000,  1.0000000, -1.0000000, -1.0000000,
441  -1.0000000,  1.0000000, -1.0000000,  0.0000000,
442  -1.0000000,  1.0000000, -1.0000000,  1.0000000,
443  -1.0000000,  1.0000000,  0.0000000, -1.0000000,
444  -1.0000000,  1.0000000,  0.0000000,  0.0000000,
445  -1.0000000,  1.0000000,  0.0000000,  1.0000000,
446  -1.0000000,  1.0000000,  1.0000000, -1.0000000,
447  -1.0000000,  1.0000000,  1.0000000,  0.0000000,
448  -1.0000000,  1.0000000,  1.0000000,  1.0000000,
449   0.0000000, -1.0000000, -1.0000000, -1.0000000,
450   0.0000000, -1.0000000, -1.0000000,  0.0000000,
451   0.0000000, -1.0000000, -1.0000000,  1.0000000,
452   0.0000000, -1.0000000,  0.0000000, -1.0000000,
453   0.0000000, -1.0000000,  0.0000000,  0.0000000,
454   0.0000000, -1.0000000,  0.0000000,  1.0000000,
455   0.0000000, -1.0000000,  1.0000000, -1.0000000,
456   0.0000000, -1.0000000,  1.0000000,  0.0000000,
457   0.0000000, -1.0000000,  1.0000000,  1.0000000,
458   0.0000000,  0.0000000, -1.0000000, -1.0000000,
459   0.0000000,  0.0000000, -1.0000000,  0.0000000,
460   0.0000000,  0.0000000, -1.0000000,  1.0000000,
461   0.0000000,  0.0000000,  0.0000000, -1.0000000,
462   0.0000000,  0.0000000,  0.0000000,  0.0000000,
463   0.0000000,  0.0000000,  0.0000000,  1.0000000,
464   0.0000000,  0.0000000,  1.0000000, -1.0000000,
465   0.0000000,  0.0000000,  1.0000000,  0.0000000,
466   0.0000000,  0.0000000,  1.0000000,  1.0000000,
467   0.0000000,  1.0000000, -1.0000000, -1.0000000,
468   0.0000000,  1.0000000, -1.0000000,  0.0000000,
469   0.0000000,  1.0000000, -1.0000000,  1.0000000,
470   0.0000000,  1.0000000,  0.0000000, -1.0000000,
471   0.0000000,  1.0000000,  0.0000000,  0.0000000,
472   0.0000000,  1.0000000,  0.0000000,  1.0000000,
473   0.0000000,  1.0000000,  1.0000000, -1.0000000,
474   0.0000000,  1.0000000,  1.0000000,  0.0000000,
475   0.0000000,  1.0000000,  1.0000000,  1.0000000,
476   1.0000000, -1.0000000, -1.0000000, -1.0000000,
477   1.0000000, -1.0000000, -1.0000000,  0.0000000,
478   1.0000000, -1.0000000, -1.0000000,  1.0000000,
479   1.0000000, -1.0000000,  0.0000000, -1.0000000,
480   1.0000000, -1.0000000,  0.0000000,  0.0000000,
481   1.0000000, -1.0000000,  0.0000000,  1.0000000,
482   1.0000000, -1.0000000,  1.0000000, -1.0000000,
483   1.0000000, -1.0000000,  1.0000000,  0.0000000,
484   1.0000000, -1.0000000,  1.0000000,  1.0000000,
485   1.0000000,  0.0000000, -1.0000000, -1.0000000,
486   1.0000000,  0.0000000, -1.0000000,  0.0000000,
487   1.0000000,  0.0000000, -1.0000000,  1.0000000,
488   1.0000000,  0.0000000,  0.0000000, -1.0000000,
489   1.0000000,  0.0000000,  0.0000000,  0.0000000,
490   1.0000000,  0.0000000,  0.0000000,  1.0000000,
491   1.0000000,  0.0000000,  1.0000000, -1.0000000,
492   1.0000000,  0.0000000,  1.0000000,  0.0000000,
493   1.0000000,  0.0000000,  1.0000000,  1.0000000,
494   1.0000000,  1.0000000, -1.0000000, -1.0000000,
495   1.0000000,  1.0000000, -1.0000000,  0.0000000,
496   1.0000000,  1.0000000, -1.0000000,  1.0000000,
497   1.0000000,  1.0000000,  0.0000000, -1.0000000,
498   1.0000000,  1.0000000,  0.0000000,  0.0000000,
499   1.0000000,  1.0000000,  0.0000000,  1.0000000,
500   1.0000000,  1.0000000,  1.0000000, -1.0000000,
501   1.0000000,  1.0000000,  1.0000000,  0.0000000,
502   1.0000000,  1.0000000,  1.0000000,  1.0000000,
503 };
504
505 static const DECLARE_ALIGNED(16, float, codebook_vector2)[324] = {
506   0.0000000,  0.0000000,  0.0000000,  0.0000000,
507   0.0000000,  0.0000000,  0.0000000,  1.0000000,
508   0.0000000,  0.0000000,  0.0000000,  2.5198421,
509   0.0000000,  0.0000000,  1.0000000,  0.0000000,
510   0.0000000,  0.0000000,  1.0000000,  1.0000000,
511   0.0000000,  0.0000000,  1.0000000,  2.5198421,
512   0.0000000,  0.0000000,  2.5198421,  0.0000000,
513   0.0000000,  0.0000000,  2.5198421,  1.0000000,
514   0.0000000,  0.0000000,  2.5198421,  2.5198421,
515   0.0000000,  1.0000000,  0.0000000,  0.0000000,
516   0.0000000,  1.0000000,  0.0000000,  1.0000000,
517   0.0000000,  1.0000000,  0.0000000,  2.5198421,
518   0.0000000,  1.0000000,  1.0000000,  0.0000000,
519   0.0000000,  1.0000000,  1.0000000,  1.0000000,
520   0.0000000,  1.0000000,  1.0000000,  2.5198421,
521   0.0000000,  1.0000000,  2.5198421,  0.0000000,
522   0.0000000,  1.0000000,  2.5198421,  1.0000000,
523   0.0000000,  1.0000000,  2.5198421,  2.5198421,
524   0.0000000,  2.5198421,  0.0000000,  0.0000000,
525   0.0000000,  2.5198421,  0.0000000,  1.0000000,
526   0.0000000,  2.5198421,  0.0000000,  2.5198421,
527   0.0000000,  2.5198421,  1.0000000,  0.0000000,
528   0.0000000,  2.5198421,  1.0000000,  1.0000000,
529   0.0000000,  2.5198421,  1.0000000,  2.5198421,
530   0.0000000,  2.5198421,  2.5198421,  0.0000000,
531   0.0000000,  2.5198421,  2.5198421,  1.0000000,
532   0.0000000,  2.5198421,  2.5198421,  2.5198421,
533   1.0000000,  0.0000000,  0.0000000,  0.0000000,
534   1.0000000,  0.0000000,  0.0000000,  1.0000000,
535   1.0000000,  0.0000000,  0.0000000,  2.5198421,
536   1.0000000,  0.0000000,  1.0000000,  0.0000000,
537   1.0000000,  0.0000000,  1.0000000,  1.0000000,
538   1.0000000,  0.0000000,  1.0000000,  2.5198421,
539   1.0000000,  0.0000000,  2.5198421,  0.0000000,
540   1.0000000,  0.0000000,  2.5198421,  1.0000000,
541   1.0000000,  0.0000000,  2.5198421,  2.5198421,
542   1.0000000,  1.0000000,  0.0000000,  0.0000000,
543   1.0000000,  1.0000000,  0.0000000,  1.0000000,
544   1.0000000,  1.0000000,  0.0000000,  2.5198421,
545   1.0000000,  1.0000000,  1.0000000,  0.0000000,
546   1.0000000,  1.0000000,  1.0000000,  1.0000000,
547   1.0000000,  1.0000000,  1.0000000,  2.5198421,
548   1.0000000,  1.0000000,  2.5198421,  0.0000000,
549   1.0000000,  1.0000000,  2.5198421,  1.0000000,
550   1.0000000,  1.0000000,  2.5198421,  2.5198421,
551   1.0000000,  2.5198421,  0.0000000,  0.0000000,
552   1.0000000,  2.5198421,  0.0000000,  1.0000000,
553   1.0000000,  2.5198421,  0.0000000,  2.5198421,
554   1.0000000,  2.5198421,  1.0000000,  0.0000000,
555   1.0000000,  2.5198421,  1.0000000,  1.0000000,
556   1.0000000,  2.5198421,  1.0000000,  2.5198421,
557   1.0000000,  2.5198421,  2.5198421,  0.0000000,
558   1.0000000,  2.5198421,  2.5198421,  1.0000000,
559   1.0000000,  2.5198421,  2.5198421,  2.5198421,
560   2.5198421,  0.0000000,  0.0000000,  0.0000000,
561   2.5198421,  0.0000000,  0.0000000,  1.0000000,
562   2.5198421,  0.0000000,  0.0000000,  2.5198421,
563   2.5198421,  0.0000000,  1.0000000,  0.0000000,
564   2.5198421,  0.0000000,  1.0000000,  1.0000000,
565   2.5198421,  0.0000000,  1.0000000,  2.5198421,
566   2.5198421,  0.0000000,  2.5198421,  0.0000000,
567   2.5198421,  0.0000000,  2.5198421,  1.0000000,
568   2.5198421,  0.0000000,  2.5198421,  2.5198421,
569   2.5198421,  1.0000000,  0.0000000,  0.0000000,
570   2.5198421,  1.0000000,  0.0000000,  1.0000000,
571   2.5198421,  1.0000000,  0.0000000,  2.5198421,
572   2.5198421,  1.0000000,  1.0000000,  0.0000000,
573   2.5198421,  1.0000000,  1.0000000,  1.0000000,
574   2.5198421,  1.0000000,  1.0000000,  2.5198421,
575   2.5198421,  1.0000000,  2.5198421,  0.0000000,
576   2.5198421,  1.0000000,  2.5198421,  1.0000000,
577   2.5198421,  1.0000000,  2.5198421,  2.5198421,
578   2.5198421,  2.5198421,  0.0000000,  0.0000000,
579   2.5198421,  2.5198421,  0.0000000,  1.0000000,
580   2.5198421,  2.5198421,  0.0000000,  2.5198421,
581   2.5198421,  2.5198421,  1.0000000,  0.0000000,
582   2.5198421,  2.5198421,  1.0000000,  1.0000000,
583   2.5198421,  2.5198421,  1.0000000,  2.5198421,
584   2.5198421,  2.5198421,  2.5198421,  0.0000000,
585   2.5198421,  2.5198421,  2.5198421,  1.0000000,
586   2.5198421,  2.5198421,  2.5198421,  2.5198421,
587 };
588
589 static const DECLARE_ALIGNED(16, float, codebook_vector4)[162] = {
590  -6.3496042, -6.3496042, -6.3496042, -4.3267487,
591  -6.3496042, -2.5198421, -6.3496042, -1.0000000,
592  -6.3496042,  0.0000000, -6.3496042,  1.0000000,
593  -6.3496042,  2.5198421, -6.3496042,  4.3267487,
594  -6.3496042,  6.3496042, -4.3267487, -6.3496042,
595  -4.3267487, -4.3267487, -4.3267487, -2.5198421,
596  -4.3267487, -1.0000000, -4.3267487,  0.0000000,
597  -4.3267487,  1.0000000, -4.3267487,  2.5198421,
598  -4.3267487,  4.3267487, -4.3267487,  6.3496042,
599  -2.5198421, -6.3496042, -2.5198421, -4.3267487,
600  -2.5198421, -2.5198421, -2.5198421, -1.0000000,
601  -2.5198421,  0.0000000, -2.5198421,  1.0000000,
602  -2.5198421,  2.5198421, -2.5198421,  4.3267487,
603  -2.5198421,  6.3496042, -1.0000000, -6.3496042,
604  -1.0000000, -4.3267487, -1.0000000, -2.5198421,
605  -1.0000000, -1.0000000, -1.0000000,  0.0000000,
606  -1.0000000,  1.0000000, -1.0000000,  2.5198421,
607  -1.0000000,  4.3267487, -1.0000000,  6.3496042,
608   0.0000000, -6.3496042,  0.0000000, -4.3267487,
609   0.0000000, -2.5198421,  0.0000000, -1.0000000,
610   0.0000000,  0.0000000,  0.0000000,  1.0000000,
611   0.0000000,  2.5198421,  0.0000000,  4.3267487,
612   0.0000000,  6.3496042,  1.0000000, -6.3496042,
613   1.0000000, -4.3267487,  1.0000000, -2.5198421,
614   1.0000000, -1.0000000,  1.0000000,  0.0000000,
615   1.0000000,  1.0000000,  1.0000000,  2.5198421,
616   1.0000000,  4.3267487,  1.0000000,  6.3496042,
617   2.5198421, -6.3496042,  2.5198421, -4.3267487,
618   2.5198421, -2.5198421,  2.5198421, -1.0000000,
619   2.5198421,  0.0000000,  2.5198421,  1.0000000,
620   2.5198421,  2.5198421,  2.5198421,  4.3267487,
621   2.5198421,  6.3496042,  4.3267487, -6.3496042,
622   4.3267487, -4.3267487,  4.3267487, -2.5198421,
623   4.3267487, -1.0000000,  4.3267487,  0.0000000,
624   4.3267487,  1.0000000,  4.3267487,  2.5198421,
625   4.3267487,  4.3267487,  4.3267487,  6.3496042,
626   6.3496042, -6.3496042,  6.3496042, -4.3267487,
627   6.3496042, -2.5198421,  6.3496042, -1.0000000,
628   6.3496042,  0.0000000,  6.3496042,  1.0000000,
629   6.3496042,  2.5198421,  6.3496042,  4.3267487,
630   6.3496042,  6.3496042,
631 };
632
633 static const DECLARE_ALIGNED(16, float, codebook_vector6)[128] = {
634   0.0000000,  0.0000000,  0.0000000,  1.0000000,
635   0.0000000,  2.5198421,  0.0000000,  4.3267487,
636   0.0000000,  6.3496042,  0.0000000,  8.5498797,
637   0.0000000, 10.9027236,  0.0000000, 13.3905183,
638   1.0000000,  0.0000000,  1.0000000,  1.0000000,
639   1.0000000,  2.5198421,  1.0000000,  4.3267487,
640   1.0000000,  6.3496042,  1.0000000,  8.5498797,
641   1.0000000, 10.9027236,  1.0000000, 13.3905183,
642   2.5198421,  0.0000000,  2.5198421,  1.0000000,
643   2.5198421,  2.5198421,  2.5198421,  4.3267487,
644   2.5198421,  6.3496042,  2.5198421,  8.5498797,
645   2.5198421, 10.9027236,  2.5198421, 13.3905183,
646   4.3267487,  0.0000000,  4.3267487,  1.0000000,
647   4.3267487,  2.5198421,  4.3267487,  4.3267487,
648   4.3267487,  6.3496042,  4.3267487,  8.5498797,
649   4.3267487, 10.9027236,  4.3267487, 13.3905183,
650   6.3496042,  0.0000000,  6.3496042,  1.0000000,
651   6.3496042,  2.5198421,  6.3496042,  4.3267487,
652   6.3496042,  6.3496042,  6.3496042,  8.5498797,
653   6.3496042, 10.9027236,  6.3496042, 13.3905183,
654   8.5498797,  0.0000000,  8.5498797,  1.0000000,
655   8.5498797,  2.5198421,  8.5498797,  4.3267487,
656   8.5498797,  6.3496042,  8.5498797,  8.5498797,
657   8.5498797, 10.9027236,  8.5498797, 13.3905183,
658  10.9027236,  0.0000000, 10.9027236,  1.0000000,
659  10.9027236,  2.5198421, 10.9027236,  4.3267487,
660  10.9027236,  6.3496042, 10.9027236,  8.5498797,
661  10.9027236, 10.9027236, 10.9027236, 13.3905183,
662  13.3905183,  0.0000000, 13.3905183,  1.0000000,
663  13.3905183,  2.5198421, 13.3905183,  4.3267487,
664  13.3905183,  6.3496042, 13.3905183,  8.5498797,
665  13.3905183, 10.9027236, 13.3905183, 13.3905183,
666 };
667
668 static const DECLARE_ALIGNED(16, float, codebook_vector8)[338] = {
669   0.0000000,  0.0000000,  0.0000000,  1.0000000,
670   0.0000000,  2.5198421,  0.0000000,  4.3267487,
671   0.0000000,  6.3496042,  0.0000000,  8.5498797,
672   0.0000000, 10.9027236,  0.0000000, 13.3905183,
673   0.0000000, 16.0000000,  0.0000000, 18.7207544,
674   0.0000000, 21.5443469,  0.0000000, 24.4637810,
675   0.0000000, 27.4731418,  1.0000000,  0.0000000,
676   1.0000000,  1.0000000,  1.0000000,  2.5198421,
677   1.0000000,  4.3267487,  1.0000000,  6.3496042,
678   1.0000000,  8.5498797,  1.0000000, 10.9027236,
679   1.0000000, 13.3905183,  1.0000000, 16.0000000,
680   1.0000000, 18.7207544,  1.0000000, 21.5443469,
681   1.0000000, 24.4637810,  1.0000000, 27.4731418,
682   2.5198421,  0.0000000,  2.5198421,  1.0000000,
683   2.5198421,  2.5198421,  2.5198421,  4.3267487,
684   2.5198421,  6.3496042,  2.5198421,  8.5498797,
685   2.5198421, 10.9027236,  2.5198421, 13.3905183,
686   2.5198421, 16.0000000,  2.5198421, 18.7207544,
687   2.5198421, 21.5443469,  2.5198421, 24.4637810,
688   2.5198421, 27.4731418,  4.3267487,  0.0000000,
689   4.3267487,  1.0000000,  4.3267487,  2.5198421,
690   4.3267487,  4.3267487,  4.3267487,  6.3496042,
691   4.3267487,  8.5498797,  4.3267487, 10.9027236,
692   4.3267487, 13.3905183,  4.3267487, 16.0000000,
693   4.3267487, 18.7207544,  4.3267487, 21.5443469,
694   4.3267487, 24.4637810,  4.3267487, 27.4731418,
695   6.3496042,  0.0000000,  6.3496042,  1.0000000,
696   6.3496042,  2.5198421,  6.3496042,  4.3267487,
697   6.3496042,  6.3496042,  6.3496042,  8.5498797,
698   6.3496042, 10.9027236,  6.3496042, 13.3905183,
699   6.3496042, 16.0000000,  6.3496042, 18.7207544,
700   6.3496042, 21.5443469,  6.3496042, 24.4637810,
701   6.3496042, 27.4731418,  8.5498797,  0.0000000,
702   8.5498797,  1.0000000,  8.5498797,  2.5198421,
703   8.5498797,  4.3267487,  8.5498797,  6.3496042,
704   8.5498797,  8.5498797,  8.5498797, 10.9027236,
705   8.5498797, 13.3905183,  8.5498797, 16.0000000,
706   8.5498797, 18.7207544,  8.5498797, 21.5443469,
707   8.5498797, 24.4637810,  8.5498797, 27.4731418,
708  10.9027236,  0.0000000, 10.9027236,  1.0000000,
709  10.9027236,  2.5198421, 10.9027236,  4.3267487,
710  10.9027236,  6.3496042, 10.9027236,  8.5498797,
711  10.9027236, 10.9027236, 10.9027236, 13.3905183,
712  10.9027236, 16.0000000, 10.9027236, 18.7207544,
713  10.9027236, 21.5443469, 10.9027236, 24.4637810,
714  10.9027236, 27.4731418, 13.3905183,  0.0000000,
715  13.3905183,  1.0000000, 13.3905183,  2.5198421,
716  13.3905183,  4.3267487, 13.3905183,  6.3496042,
717  13.3905183,  8.5498797, 13.3905183, 10.9027236,
718  13.3905183, 13.3905183, 13.3905183, 16.0000000,
719  13.3905183, 18.7207544, 13.3905183, 21.5443469,
720  13.3905183, 24.4637810, 13.3905183, 27.4731418,
721  16.0000000,  0.0000000, 16.0000000,  1.0000000,
722  16.0000000,  2.5198421, 16.0000000,  4.3267487,
723  16.0000000,  6.3496042, 16.0000000,  8.5498797,
724  16.0000000, 10.9027236, 16.0000000, 13.3905183,
725  16.0000000, 16.0000000, 16.0000000, 18.7207544,
726  16.0000000, 21.5443469, 16.0000000, 24.4637810,
727  16.0000000, 27.4731418, 18.7207544,  0.0000000,
728  18.7207544,  1.0000000, 18.7207544,  2.5198421,
729  18.7207544,  4.3267487, 18.7207544,  6.3496042,
730  18.7207544,  8.5498797, 18.7207544, 10.9027236,
731  18.7207544, 13.3905183, 18.7207544, 16.0000000,
732  18.7207544, 18.7207544, 18.7207544, 21.5443469,
733  18.7207544, 24.4637810, 18.7207544, 27.4731418,
734  21.5443469,  0.0000000, 21.5443469,  1.0000000,
735  21.5443469,  2.5198421, 21.5443469,  4.3267487,
736  21.5443469,  6.3496042, 21.5443469,  8.5498797,
737  21.5443469, 10.9027236, 21.5443469, 13.3905183,
738  21.5443469, 16.0000000, 21.5443469, 18.7207544,
739  21.5443469, 21.5443469, 21.5443469, 24.4637810,
740  21.5443469, 27.4731418, 24.4637810,  0.0000000,
741  24.4637810,  1.0000000, 24.4637810,  2.5198421,
742  24.4637810,  4.3267487, 24.4637810,  6.3496042,
743  24.4637810,  8.5498797, 24.4637810, 10.9027236,
744  24.4637810, 13.3905183, 24.4637810, 16.0000000,
745  24.4637810, 18.7207544, 24.4637810, 21.5443469,
746  24.4637810, 24.4637810, 24.4637810, 27.4731418,
747  27.4731418,  0.0000000, 27.4731418,  1.0000000,
748  27.4731418,  2.5198421, 27.4731418,  4.3267487,
749  27.4731418,  6.3496042, 27.4731418,  8.5498797,
750  27.4731418, 10.9027236, 27.4731418, 13.3905183,
751  27.4731418, 16.0000000, 27.4731418, 18.7207544,
752  27.4731418, 21.5443469, 27.4731418, 24.4637810,
753  27.4731418, 27.4731418,
754 };
755
756 static const DECLARE_ALIGNED(16, float, codebook_vector10)[578] = {
757   0.0000000,  0.0000000,  0.0000000,  1.0000000,
758   0.0000000,  2.5198421,  0.0000000,  4.3267487,
759   0.0000000,  6.3496042,  0.0000000,  8.5498797,
760   0.0000000, 10.9027236,  0.0000000, 13.3905183,
761   0.0000000, 16.0000000,  0.0000000, 18.7207544,
762   0.0000000, 21.5443469,  0.0000000, 24.4637810,
763   0.0000000, 27.4731418,  0.0000000, 30.5673509,
764   0.0000000, 33.7419917,  0.0000000, 36.9931811,
765   0.0000000,      64.0f,  1.0000000,  0.0000000,
766   1.0000000,  1.0000000,  1.0000000,  2.5198421,
767   1.0000000,  4.3267487,  1.0000000,  6.3496042,
768   1.0000000,  8.5498797,  1.0000000, 10.9027236,
769   1.0000000, 13.3905183,  1.0000000, 16.0000000,
770   1.0000000, 18.7207544,  1.0000000, 21.5443469,
771   1.0000000, 24.4637810,  1.0000000, 27.4731418,
772   1.0000000, 30.5673509,  1.0000000, 33.7419917,
773   1.0000000, 36.9931811,  1.0000000,      64.0f,
774   2.5198421,  0.0000000,  2.5198421,  1.0000000,
775   2.5198421,  2.5198421,  2.5198421,  4.3267487,
776   2.5198421,  6.3496042,  2.5198421,  8.5498797,
777   2.5198421, 10.9027236,  2.5198421, 13.3905183,
778   2.5198421, 16.0000000,  2.5198421, 18.7207544,
779   2.5198421, 21.5443469,  2.5198421, 24.4637810,
780   2.5198421, 27.4731418,  2.5198421, 30.5673509,
781   2.5198421, 33.7419917,  2.5198421, 36.9931811,
782   2.5198421,      64.0f,  4.3267487,  0.0000000,
783   4.3267487,  1.0000000,  4.3267487,  2.5198421,
784   4.3267487,  4.3267487,  4.3267487,  6.3496042,
785   4.3267487,  8.5498797,  4.3267487, 10.9027236,
786   4.3267487, 13.3905183,  4.3267487, 16.0000000,
787   4.3267487, 18.7207544,  4.3267487, 21.5443469,
788   4.3267487, 24.4637810,  4.3267487, 27.4731418,
789   4.3267487, 30.5673509,  4.3267487, 33.7419917,
790   4.3267487, 36.9931811,  4.3267487,      64.0f,
791   6.3496042,  0.0000000,  6.3496042,  1.0000000,
792   6.3496042,  2.5198421,  6.3496042,  4.3267487,
793   6.3496042,  6.3496042,  6.3496042,  8.5498797,
794   6.3496042, 10.9027236,  6.3496042, 13.3905183,
795   6.3496042, 16.0000000,  6.3496042, 18.7207544,
796   6.3496042, 21.5443469,  6.3496042, 24.4637810,
797   6.3496042, 27.4731418,  6.3496042, 30.5673509,
798   6.3496042, 33.7419917,  6.3496042, 36.9931811,
799   6.3496042,      64.0f,  8.5498797,  0.0000000,
800   8.5498797,  1.0000000,  8.5498797,  2.5198421,
801   8.5498797,  4.3267487,  8.5498797,  6.3496042,
802   8.5498797,  8.5498797,  8.5498797, 10.9027236,
803   8.5498797, 13.3905183,  8.5498797, 16.0000000,
804   8.5498797, 18.7207544,  8.5498797, 21.5443469,
805   8.5498797, 24.4637810,  8.5498797, 27.4731418,
806   8.5498797, 30.5673509,  8.5498797, 33.7419917,
807   8.5498797, 36.9931811,  8.5498797,      64.0f,
808  10.9027236,  0.0000000, 10.9027236,  1.0000000,
809  10.9027236,  2.5198421, 10.9027236,  4.3267487,
810  10.9027236,  6.3496042, 10.9027236,  8.5498797,
811  10.9027236, 10.9027236, 10.9027236, 13.3905183,
812  10.9027236, 16.0000000, 10.9027236, 18.7207544,
813  10.9027236, 21.5443469, 10.9027236, 24.4637810,
814  10.9027236, 27.4731418, 10.9027236, 30.5673509,
815  10.9027236, 33.7419917, 10.9027236, 36.9931811,
816  10.9027236,      64.0f, 13.3905183,  0.0000000,
817  13.3905183,  1.0000000, 13.3905183,  2.5198421,
818  13.3905183,  4.3267487, 13.3905183,  6.3496042,
819  13.3905183,  8.5498797, 13.3905183, 10.9027236,
820  13.3905183, 13.3905183, 13.3905183, 16.0000000,
821  13.3905183, 18.7207544, 13.3905183, 21.5443469,
822  13.3905183, 24.4637810, 13.3905183, 27.4731418,
823  13.3905183, 30.5673509, 13.3905183, 33.7419917,
824  13.3905183, 36.9931811, 13.3905183,      64.0f,
825  16.0000000,  0.0000000, 16.0000000,  1.0000000,
826  16.0000000,  2.5198421, 16.0000000,  4.3267487,
827  16.0000000,  6.3496042, 16.0000000,  8.5498797,
828  16.0000000, 10.9027236, 16.0000000, 13.3905183,
829  16.0000000, 16.0000000, 16.0000000, 18.7207544,
830  16.0000000, 21.5443469, 16.0000000, 24.4637810,
831  16.0000000, 27.4731418, 16.0000000, 30.5673509,
832  16.0000000, 33.7419917, 16.0000000, 36.9931811,
833  16.0000000,      64.0f, 18.7207544,  0.0000000,
834  18.7207544,  1.0000000, 18.7207544,  2.5198421,
835  18.7207544,  4.3267487, 18.7207544,  6.3496042,
836  18.7207544,  8.5498797, 18.7207544, 10.9027236,
837  18.7207544, 13.3905183, 18.7207544, 16.0000000,
838  18.7207544, 18.7207544, 18.7207544, 21.5443469,
839  18.7207544, 24.4637810, 18.7207544, 27.4731418,
840  18.7207544, 30.5673509, 18.7207544, 33.7419917,
841  18.7207544, 36.9931811, 18.7207544,      64.0f,
842  21.5443469,  0.0000000, 21.5443469,  1.0000000,
843  21.5443469,  2.5198421, 21.5443469,  4.3267487,
844  21.5443469,  6.3496042, 21.5443469,  8.5498797,
845  21.5443469, 10.9027236, 21.5443469, 13.3905183,
846  21.5443469, 16.0000000, 21.5443469, 18.7207544,
847  21.5443469, 21.5443469, 21.5443469, 24.4637810,
848  21.5443469, 27.4731418, 21.5443469, 30.5673509,
849  21.5443469, 33.7419917, 21.5443469, 36.9931811,
850  21.5443469,      64.0f, 24.4637810,  0.0000000,
851  24.4637810,  1.0000000, 24.4637810,  2.5198421,
852  24.4637810,  4.3267487, 24.4637810,  6.3496042,
853  24.4637810,  8.5498797, 24.4637810, 10.9027236,
854  24.4637810, 13.3905183, 24.4637810, 16.0000000,
855  24.4637810, 18.7207544, 24.4637810, 21.5443469,
856  24.4637810, 24.4637810, 24.4637810, 27.4731418,
857  24.4637810, 30.5673509, 24.4637810, 33.7419917,
858  24.4637810, 36.9931811, 24.4637810,      64.0f,
859  27.4731418,  0.0000000, 27.4731418,  1.0000000,
860  27.4731418,  2.5198421, 27.4731418,  4.3267487,
861  27.4731418,  6.3496042, 27.4731418,  8.5498797,
862  27.4731418, 10.9027236, 27.4731418, 13.3905183,
863  27.4731418, 16.0000000, 27.4731418, 18.7207544,
864  27.4731418, 21.5443469, 27.4731418, 24.4637810,
865  27.4731418, 27.4731418, 27.4731418, 30.5673509,
866  27.4731418, 33.7419917, 27.4731418, 36.9931811,
867  27.4731418,      64.0f, 30.5673509,  0.0000000,
868  30.5673509,  1.0000000, 30.5673509,  2.5198421,
869  30.5673509,  4.3267487, 30.5673509,  6.3496042,
870  30.5673509,  8.5498797, 30.5673509, 10.9027236,
871  30.5673509, 13.3905183, 30.5673509, 16.0000000,
872  30.5673509, 18.7207544, 30.5673509, 21.5443469,
873  30.5673509, 24.4637810, 30.5673509, 27.4731418,
874  30.5673509, 30.5673509, 30.5673509, 33.7419917,
875  30.5673509, 36.9931811, 30.5673509,      64.0f,
876  33.7419917,  0.0000000, 33.7419917,  1.0000000,
877  33.7419917,  2.5198421, 33.7419917,  4.3267487,
878  33.7419917,  6.3496042, 33.7419917,  8.5498797,
879  33.7419917, 10.9027236, 33.7419917, 13.3905183,
880  33.7419917, 16.0000000, 33.7419917, 18.7207544,
881  33.7419917, 21.5443469, 33.7419917, 24.4637810,
882  33.7419917, 27.4731418, 33.7419917, 30.5673509,
883  33.7419917, 33.7419917, 33.7419917, 36.9931811,
884  33.7419917,      64.0f, 36.9931811,  0.0000000,
885  36.9931811,  1.0000000, 36.9931811,  2.5198421,
886  36.9931811,  4.3267487, 36.9931811,  6.3496042,
887  36.9931811,  8.5498797, 36.9931811, 10.9027236,
888  36.9931811, 13.3905183, 36.9931811, 16.0000000,
889  36.9931811, 18.7207544, 36.9931811, 21.5443469,
890  36.9931811, 24.4637810, 36.9931811, 27.4731418,
891  36.9931811, 30.5673509, 36.9931811, 33.7419917,
892  36.9931811, 36.9931811, 36.9931811,      64.0f,
893       64.0f,  0.0000000,      64.0f,  1.0000000,
894       64.0f,  2.5198421,      64.0f,  4.3267487,
895       64.0f,  6.3496042,      64.0f,  8.5498797,
896       64.0f, 10.9027236,      64.0f, 13.3905183,
897       64.0f, 16.0000000,      64.0f, 18.7207544,
898       64.0f, 21.5443469,      64.0f, 24.4637810,
899       64.0f, 27.4731418,      64.0f, 30.5673509,
900       64.0f, 33.7419917,      64.0f, 36.9931811,
901       64.0f,      64.0f,
902 };
903
904 const float * const ff_aac_codebook_vectors[] = {
905     codebook_vector0, codebook_vector0, codebook_vector2,
906     codebook_vector2, codebook_vector4, codebook_vector4,
907     codebook_vector6, codebook_vector6, codebook_vector8,
908     codebook_vector8, codebook_vector10,
909 };
910
911 static const float codebook_vector0_vals[] = {
912    -1.0000000,  0.0000000,  1.0000000
913 };
914
915 /*
916  * bits  0:1, 2:3, 4:5, 6:7  index into _vals array
917  *       8:11                number of non-zero values
918  *      12:15                bit mask of non-zero values
919  */
920 static const uint16_t codebook_vector02_idx[] = {
921     0x0000, 0x8140, 0x8180, 0x4110, 0xc250, 0xc290, 0x4120, 0xc260, 0xc2a0,
922     0x2104, 0xa244, 0xa284, 0x6214, 0xe354, 0xe394, 0x6224, 0xe364, 0xe3a4,
923     0x2108, 0xa248, 0xa288, 0x6218, 0xe358, 0xe398, 0x6228, 0xe368, 0xe3a8,
924     0x1101, 0x9241, 0x9281, 0x5211, 0xd351, 0xd391, 0x5221, 0xd361, 0xd3a1,
925     0x3205, 0xb345, 0xb385, 0x7315, 0xf455, 0xf495, 0x7325, 0xf465, 0xf4a5,
926     0x3209, 0xb349, 0xb389, 0x7319, 0xf459, 0xf499, 0x7329, 0xf469, 0xf4a9,
927     0x1102, 0x9242, 0x9282, 0x5212, 0xd352, 0xd392, 0x5222, 0xd362, 0xd3a2,
928     0x3206, 0xb346, 0xb386, 0x7316, 0xf456, 0xf496, 0x7326, 0xf466, 0xf4a6,
929     0x320a, 0xb34a, 0xb38a, 0x731a, 0xf45a, 0xf49a, 0x732a, 0xf46a, 0xf4aa,
930 };
931
932 static const float codebook_vector4_vals[] = {
933    -6.3496042, -4.3267487,
934    -2.5198421, -1.0000000,
935     0.0000000,  1.0000000,
936     2.5198421,  4.3267487,
937     6.3496042,
938 };
939
940 /*
941  * bits  0:3, 4:7  index into _vals array
942  */
943 static const uint16_t codebook_vector4_idx[] = {
944     0x0000, 0x0010, 0x0020, 0x0030, 0x0040, 0x0050, 0x0060, 0x0070, 0x0080,
945     0x0001, 0x0011, 0x0021, 0x0031, 0x0041, 0x0051, 0x0061, 0x0071, 0x0081,
946     0x0002, 0x0012, 0x0022, 0x0032, 0x0042, 0x0052, 0x0062, 0x0072, 0x0082,
947     0x0003, 0x0013, 0x0023, 0x0033, 0x0043, 0x0053, 0x0063, 0x0073, 0x0083,
948     0x0004, 0x0014, 0x0024, 0x0034, 0x0044, 0x0054, 0x0064, 0x0074, 0x0084,
949     0x0005, 0x0015, 0x0025, 0x0035, 0x0045, 0x0055, 0x0065, 0x0075, 0x0085,
950     0x0006, 0x0016, 0x0026, 0x0036, 0x0046, 0x0056, 0x0066, 0x0076, 0x0086,
951     0x0007, 0x0017, 0x0027, 0x0037, 0x0047, 0x0057, 0x0067, 0x0077, 0x0087,
952     0x0008, 0x0018, 0x0028, 0x0038, 0x0048, 0x0058, 0x0068, 0x0078, 0x0088,
953 };
954
955 /*
956  * bits  0:3, 4:7  index into _vals array
957  *       8:11      number of non-zero values
958  *      12:15      1: only second value non-zero
959  *                 0: other cases
960  */
961 static const uint16_t codebook_vector6_idx[] = {
962     0x0000, 0x0110, 0x0120, 0x0130, 0x0140, 0x0150, 0x0160, 0x0170,
963     0x1101, 0x0211, 0x0221, 0x0231, 0x0241, 0x0251, 0x0261, 0x0271,
964     0x1102, 0x0212, 0x0222, 0x0232, 0x0242, 0x0252, 0x0262, 0x0272,
965     0x1103, 0x0213, 0x0223, 0x0233, 0x0243, 0x0253, 0x0263, 0x0273,
966     0x1104, 0x0214, 0x0224, 0x0234, 0x0244, 0x0254, 0x0264, 0x0274,
967     0x1105, 0x0215, 0x0225, 0x0235, 0x0245, 0x0255, 0x0265, 0x0275,
968     0x1106, 0x0216, 0x0226, 0x0236, 0x0246, 0x0256, 0x0266, 0x0276,
969     0x1107, 0x0217, 0x0227, 0x0237, 0x0247, 0x0257, 0x0267, 0x0277,
970 };
971
972 /*
973  * bits  0:3, 4:7  index into _vals array
974  *       8:11      number of non-zero values
975  *      12:15      1: only second value non-zero
976  *                 0: other cases
977  */
978 static const uint16_t codebook_vector8_idx[] = {
979   0x0000, 0x0110, 0x0120, 0x0130, 0x0140, 0x0150, 0x0160,
980   0x0170, 0x0180, 0x0190, 0x01a0, 0x01b0, 0x01c0,
981   0x1101, 0x0211, 0x0221, 0x0231, 0x0241, 0x0251, 0x0261,
982   0x0271, 0x0281, 0x0291, 0x02a1, 0x02b1, 0x02c1,
983   0x1102, 0x0212, 0x0222, 0x0232, 0x0242, 0x0252, 0x0262,
984   0x0272, 0x0282, 0x0292, 0x02a2, 0x02b2, 0x02c2,
985   0x1103, 0x0213, 0x0223, 0x0233, 0x0243, 0x0253, 0x0263,
986   0x0273, 0x0283, 0x0293, 0x02a3, 0x02b3, 0x02c3,
987   0x1104, 0x0214, 0x0224, 0x0234, 0x0244, 0x0254, 0x0264,
988   0x0274, 0x0284, 0x0294, 0x02a4, 0x02b4, 0x02c4,
989   0x1105, 0x0215, 0x0225, 0x0235, 0x0245, 0x0255, 0x0265,
990   0x0275, 0x0285, 0x0295, 0x02a5, 0x02b5, 0x02c5,
991   0x1106, 0x0216, 0x0226, 0x0236, 0x0246, 0x0256, 0x0266,
992   0x0276, 0x0286, 0x0296, 0x02a6, 0x02b6, 0x02c6,
993   0x1107, 0x0217, 0x0227, 0x0237, 0x0247, 0x0257, 0x0267,
994   0x0277, 0x0287, 0x0297, 0x02a7, 0x02b7, 0x02c7,
995   0x1108, 0x0218, 0x0228, 0x0238, 0x0248, 0x0258, 0x0268,
996   0x0278, 0x0288, 0x0298, 0x02a8, 0x02b8, 0x02c8,
997   0x1109, 0x0219, 0x0229, 0x0239, 0x0249, 0x0259, 0x0269,
998   0x0279, 0x0289, 0x0299, 0x02a9, 0x02b9, 0x02c9,
999   0x110a, 0x021a, 0x022a, 0x023a, 0x024a, 0x025a, 0x026a,
1000   0x027a, 0x028a, 0x029a, 0x02aa, 0x02ba, 0x02ca,
1001   0x110b, 0x021b, 0x022b, 0x023b, 0x024b, 0x025b, 0x026b,
1002   0x027b, 0x028b, 0x029b, 0x02ab, 0x02bb, 0x02cb,
1003   0x110c, 0x021c, 0x022c, 0x023c, 0x024c, 0x025c, 0x026c,
1004   0x027c, 0x028c, 0x029c, 0x02ac, 0x02bc, 0x02cc,
1005 };
1006
1007 static const float codebook_vector10_vals[] = {
1008      0.0000000,  1.0000000,
1009      2.5198421,  4.3267487,
1010      6.3496042,  8.5498797,
1011     10.9027236, 13.3905183,
1012     16.0000000, 18.7207544,
1013     21.5443469, 24.4637810,
1014     27.4731418, 30.5673509,
1015     33.7419917, 36.9931811,
1016 };
1017
1018 /*
1019  * bits  0:3, 4:7  index into _vals array
1020  *       8:9       bit mask of escape-coded entries
1021  *      12:15      number of non-zero values
1022  */
1023 static const uint16_t codebook_vector10_idx[] = {
1024     0x0000, 0x1010, 0x1020, 0x1030, 0x1040, 0x1050, 0x1060, 0x1070,
1025     0x1080, 0x1090, 0x10a0, 0x10b0, 0x10c0, 0x10d0, 0x10e0, 0x10f0, 0x1200,
1026     0x1001, 0x2011, 0x2021, 0x2031, 0x2041, 0x2051, 0x2061, 0x2071,
1027     0x2081, 0x2091, 0x20a1, 0x20b1, 0x20c1, 0x20d1, 0x20e1, 0x20f1, 0x2201,
1028     0x1002, 0x2012, 0x2022, 0x2032, 0x2042, 0x2052, 0x2062, 0x2072,
1029     0x2082, 0x2092, 0x20a2, 0x20b2, 0x20c2, 0x20d2, 0x20e2, 0x20f2, 0x2202,
1030     0x1003, 0x2013, 0x2023, 0x2033, 0x2043, 0x2053, 0x2063, 0x2073,
1031     0x2083, 0x2093, 0x20a3, 0x20b3, 0x20c3, 0x20d3, 0x20e3, 0x20f3, 0x2203,
1032     0x1004, 0x2014, 0x2024, 0x2034, 0x2044, 0x2054, 0x2064, 0x2074,
1033     0x2084, 0x2094, 0x20a4, 0x20b4, 0x20c4, 0x20d4, 0x20e4, 0x20f4, 0x2204,
1034     0x1005, 0x2015, 0x2025, 0x2035, 0x2045, 0x2055, 0x2065, 0x2075,
1035     0x2085, 0x2095, 0x20a5, 0x20b5, 0x20c5, 0x20d5, 0x20e5, 0x20f5, 0x2205,
1036     0x1006, 0x2016, 0x2026, 0x2036, 0x2046, 0x2056, 0x2066, 0x2076,
1037     0x2086, 0x2096, 0x20a6, 0x20b6, 0x20c6, 0x20d6, 0x20e6, 0x20f6, 0x2206,
1038     0x1007, 0x2017, 0x2027, 0x2037, 0x2047, 0x2057, 0x2067, 0x2077,
1039     0x2087, 0x2097, 0x20a7, 0x20b7, 0x20c7, 0x20d7, 0x20e7, 0x20f7, 0x2207,
1040     0x1008, 0x2018, 0x2028, 0x2038, 0x2048, 0x2058, 0x2068, 0x2078,
1041     0x2088, 0x2098, 0x20a8, 0x20b8, 0x20c8, 0x20d8, 0x20e8, 0x20f8, 0x2208,
1042     0x1009, 0x2019, 0x2029, 0x2039, 0x2049, 0x2059, 0x2069, 0x2079,
1043     0x2089, 0x2099, 0x20a9, 0x20b9, 0x20c9, 0x20d9, 0x20e9, 0x20f9, 0x2209,
1044     0x100a, 0x201a, 0x202a, 0x203a, 0x204a, 0x205a, 0x206a, 0x207a,
1045     0x208a, 0x209a, 0x20aa, 0x20ba, 0x20ca, 0x20da, 0x20ea, 0x20fa, 0x220a,
1046     0x100b, 0x201b, 0x202b, 0x203b, 0x204b, 0x205b, 0x206b, 0x207b,
1047     0x208b, 0x209b, 0x20ab, 0x20bb, 0x20cb, 0x20db, 0x20eb, 0x20fb, 0x220b,
1048     0x100c, 0x201c, 0x202c, 0x203c, 0x204c, 0x205c, 0x206c, 0x207c,
1049     0x208c, 0x209c, 0x20ac, 0x20bc, 0x20cc, 0x20dc, 0x20ec, 0x20fc, 0x220c,
1050     0x100d, 0x201d, 0x202d, 0x203d, 0x204d, 0x205d, 0x206d, 0x207d,
1051     0x208d, 0x209d, 0x20ad, 0x20bd, 0x20cd, 0x20dd, 0x20ed, 0x20fd, 0x220d,
1052     0x100e, 0x201e, 0x202e, 0x203e, 0x204e, 0x205e, 0x206e, 0x207e,
1053     0x208e, 0x209e, 0x20ae, 0x20be, 0x20ce, 0x20de, 0x20ee, 0x20fe, 0x220e,
1054     0x100f, 0x201f, 0x202f, 0x203f, 0x204f, 0x205f, 0x206f, 0x207f,
1055     0x208f, 0x209f, 0x20af, 0x20bf, 0x20cf, 0x20df, 0x20ef, 0x20ff, 0x220f,
1056     0x1100, 0x2110, 0x2120, 0x2130, 0x2140, 0x2150, 0x2160, 0x2170,
1057     0x2180, 0x2190, 0x21a0, 0x21b0, 0x21c0, 0x21d0, 0x21e0, 0x21f0, 0x2300,
1058 };
1059
1060 const float *const ff_aac_codebook_vector_vals[] = {
1061     codebook_vector0_vals,  codebook_vector0_vals,
1062     codebook_vector10_vals, codebook_vector10_vals,
1063     codebook_vector4_vals,  codebook_vector4_vals,
1064     codebook_vector10_vals, codebook_vector10_vals,
1065     codebook_vector10_vals, codebook_vector10_vals,
1066     codebook_vector10_vals,
1067 };
1068
1069 const uint16_t *const ff_aac_codebook_vector_idx[] = {
1070     codebook_vector02_idx, codebook_vector02_idx,
1071     codebook_vector02_idx, codebook_vector02_idx,
1072     codebook_vector4_idx,  codebook_vector4_idx,
1073     codebook_vector6_idx,  codebook_vector6_idx,
1074     codebook_vector8_idx,  codebook_vector8_idx,
1075     codebook_vector10_idx,
1076 };
1077
1078 /* @name swb_offsets
1079  * Sample offset into the window indicating the beginning of a scalefactor
1080  * window band
1081  *
1082  * scalefactor window band - term for scalefactor bands within a window,
1083  * given in Table 4.110 to Table 4.128.
1084  *
1085  * scalefactor band - a set of spectral coefficients which are scaled by one
1086  * scalefactor. In case of EIGHT_SHORT_SEQUENCE and grouping a scalefactor band
1087  * may contain several scalefactor window bands of corresponding frequency. For
1088  * all other window_sequences scalefactor bands and scalefactor window bands are
1089  * identical.
1090  * @{
1091  */
1092
1093 static const uint16_t swb_offset_1024_96[] = {
1094       0,   4,   8,  12,  16,  20,  24,  28,
1095      32,  36,  40,  44,  48,  52,  56,  64,
1096      72,  80,  88,  96, 108, 120, 132, 144,
1097     156, 172, 188, 212, 240, 276, 320, 384,
1098     448, 512, 576, 640, 704, 768, 832, 896,
1099     960, 1024
1100 };
1101
1102 static const uint16_t swb_offset_128_96[] = {
1103     0, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 92, 128
1104 };
1105
1106 static const uint16_t swb_offset_1024_64[] = {
1107       0,   4,   8,  12,  16,  20,  24,  28,
1108      32,  36,  40,  44,  48,  52,  56,  64,
1109      72,  80,  88, 100, 112, 124, 140, 156,
1110     172, 192, 216, 240, 268, 304, 344, 384,
1111     424, 464, 504, 544, 584, 624, 664, 704,
1112     744, 784, 824, 864, 904, 944, 984, 1024
1113 };
1114
1115 static const uint16_t swb_offset_1024_48[] = {
1116       0,   4,   8,  12,  16,  20,  24,  28,
1117      32,  36,  40,  48,  56,  64,  72,  80,
1118      88,  96, 108, 120, 132, 144, 160, 176,
1119     196, 216, 240, 264, 292, 320, 352, 384,
1120     416, 448, 480, 512, 544, 576, 608, 640,
1121     672, 704, 736, 768, 800, 832, 864, 896,
1122     928, 1024
1123 };
1124
1125 static const uint16_t swb_offset_512_48[] = {
1126       0,   4,   8,  12,  16,  20,  24,  28,
1127      32,  36,  40,  44,  48,  52,  56,  60,
1128      68,  76,  84,  92, 100, 112, 124, 136,
1129     148, 164, 184, 208, 236, 268, 300, 332,
1130     364, 396, 428, 460, 512
1131 };
1132
1133 static const uint16_t swb_offset_480_48[] = {
1134       0,   4,   8,  12,  16,  20,  24,  28,
1135      32,  36,  40,  44,  48,  52,  56,  64,
1136      72,  80,  88,  96, 108, 120, 132, 144,
1137     156, 172, 188, 212, 240, 272, 304, 336,
1138     368, 400, 432, 480
1139 };
1140
1141 static const uint16_t swb_offset_128_48[] = {
1142      0,   4,   8,  12,  16,  20,  28,  36,
1143     44,  56,  68,  80,  96, 112, 128
1144 };
1145
1146 static const uint16_t swb_offset_1024_32[] = {
1147       0,   4,   8,  12,  16,  20,  24,  28,
1148      32,  36,  40,  48,  56,  64,  72,  80,
1149      88,  96, 108, 120, 132, 144, 160, 176,
1150     196, 216, 240, 264, 292, 320, 352, 384,
1151     416, 448, 480, 512, 544, 576, 608, 640,
1152     672, 704, 736, 768, 800, 832, 864, 896,
1153     928, 960, 992, 1024
1154 };
1155
1156 static const uint16_t swb_offset_512_32[] = {
1157       0,   4,   8,  12,  16,  20,  24,  28,
1158      32,  36,  40,  44,  48,  52,  56,  64,
1159      72,  80,  88,  96, 108, 120, 132, 144,
1160     160, 176, 192, 212, 236, 260, 288, 320,
1161     352, 384, 416, 448, 480, 512
1162 };
1163
1164 static const uint16_t swb_offset_480_32[] = {
1165       0,   4,   8,  12,  16,  20,  24,  28,
1166      32,  36,  40,  44,  48,  52,  56,  60,
1167      64,  72,  80,  88,  96, 104, 112, 124,
1168     136, 148, 164, 180, 200, 224, 256, 288,
1169     320, 352, 384, 416, 448, 480
1170  };
1171
1172 static const uint16_t swb_offset_1024_24[] = {
1173       0,   4,   8,  12,  16,  20,  24,  28,
1174      32,  36,  40,  44,  52,  60,  68,  76,
1175      84,  92, 100, 108, 116, 124, 136, 148,
1176     160, 172, 188, 204, 220, 240, 260, 284,
1177     308, 336, 364, 396, 432, 468, 508, 552,
1178     600, 652, 704, 768, 832, 896, 960, 1024
1179 };
1180
1181 static const uint16_t swb_offset_512_24[] = {
1182       0,   4,   8,  12,  16,  20,  24,  28,
1183      32,  36,  40,  44,  52,  60,  68,  80,
1184      92, 104, 120, 140, 164, 192, 224, 256,
1185     288, 320, 352, 384, 416, 448, 480, 512,
1186 };
1187
1188 static const uint16_t swb_offset_480_24[] = {
1189       0,   4,   8,  12,  16,  20,  24,  28,
1190      32,  36,  40,  44,  52,  60,  68,  80,
1191      92, 104, 120, 140, 164, 192, 224, 256,
1192     288, 320, 352, 384, 416, 448, 480
1193 };
1194
1195 static const uint16_t swb_offset_128_24[] = {
1196      0,   4,   8,  12,  16,  20,  24,  28,
1197     36,  44,  52,  64,  76,  92, 108, 128
1198 };
1199
1200 static const uint16_t swb_offset_1024_16[] = {
1201       0,   8,  16,  24,  32,  40,  48,  56,
1202      64,  72,  80,  88, 100, 112, 124, 136,
1203     148, 160, 172, 184, 196, 212, 228, 244,
1204     260, 280, 300, 320, 344, 368, 396, 424,
1205     456, 492, 532, 572, 616, 664, 716, 772,
1206     832, 896, 960, 1024
1207 };
1208
1209 static const uint16_t swb_offset_128_16[] = {
1210      0,   4,   8,  12,  16,  20,  24,  28,
1211     32,  40,  48,  60,  72,  88, 108, 128
1212 };
1213
1214 static const uint16_t swb_offset_1024_8[] = {
1215       0,  12,  24,  36,  48,  60,  72,  84,
1216      96, 108, 120, 132, 144, 156, 172, 188,
1217     204, 220, 236, 252, 268, 288, 308, 328,
1218     348, 372, 396, 420, 448, 476, 508, 544,
1219     580, 620, 664, 712, 764, 820, 880, 944,
1220     1024
1221 };
1222
1223 static const uint16_t swb_offset_128_8[] = {
1224      0,   4,   8,  12,  16,  20,  24,  28,
1225     36,  44,  52,  60,  72,  88, 108, 128
1226 };
1227
1228 const uint16_t * const ff_swb_offset_1024[] = {
1229     swb_offset_1024_96, swb_offset_1024_96, swb_offset_1024_64,
1230     swb_offset_1024_48, swb_offset_1024_48, swb_offset_1024_32,
1231     swb_offset_1024_24, swb_offset_1024_24, swb_offset_1024_16,
1232     swb_offset_1024_16, swb_offset_1024_16, swb_offset_1024_8,
1233     swb_offset_1024_8
1234 };
1235
1236 const uint16_t * const ff_swb_offset_512[] = {
1237     NULL,               NULL,               NULL,
1238     swb_offset_512_48,  swb_offset_512_48,  swb_offset_512_32,
1239     swb_offset_512_24,  swb_offset_512_24,  NULL,
1240     NULL,               NULL,               NULL,
1241     NULL
1242 };
1243
1244 const uint16_t * const ff_swb_offset_480[] = {
1245     NULL,               NULL,               NULL,
1246     swb_offset_480_48,  swb_offset_480_48,  swb_offset_480_32,
1247     swb_offset_480_24,  swb_offset_480_24,  NULL,
1248     NULL,               NULL,               NULL,
1249     NULL
1250 };
1251
1252 const uint16_t * const ff_swb_offset_128[] = {
1253     /* The last entry on the following row is swb_offset_128_64 but is a
1254        duplicate of swb_offset_128_96. */
1255     swb_offset_128_96, swb_offset_128_96, swb_offset_128_96,
1256     swb_offset_128_48, swb_offset_128_48, swb_offset_128_48,
1257     swb_offset_128_24, swb_offset_128_24, swb_offset_128_16,
1258     swb_offset_128_16, swb_offset_128_16, swb_offset_128_8,
1259     swb_offset_128_8
1260 };
1261
1262 // @}
1263
1264 /* @name ff_tns_max_bands
1265  * The maximum number of scalefactor bands on which TNS can operate for the long
1266  * and short transforms respectively. The index to these tables is related to
1267  * the sample rate of the audio.
1268  * @{
1269  */
1270 const uint8_t ff_tns_max_bands_1024[] = {
1271     31, 31, 34, 40, 42, 51, 46, 46, 42, 42, 42, 39, 39
1272 };
1273
1274 const uint8_t ff_tns_max_bands_512[] = {
1275     0, 0, 0, 31, 32, 37, 31, 31, 0, 0, 0, 0, 0
1276 };
1277
1278 const uint8_t ff_tns_max_bands_480[] = {
1279     0, 0, 0, 31, 32, 37, 30, 30, 0, 0, 0, 0, 0
1280 };
1281
1282 const uint8_t ff_tns_max_bands_128[] = {
1283     9, 9, 10, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14
1284 };
1285 // @}
1286
1287 const DECLARE_ALIGNED(32, float, ff_aac_eld_window_512)[1920] = {
1288      0.00338834,  0.00567745,  0.00847677,  0.01172641,
1289      0.01532555,  0.01917664,  0.02318809,  0.02729259,
1290      0.03144503,  0.03560261,  0.03972499,  0.04379783,
1291      0.04783094,  0.05183357,  0.05581342,  0.05977723,
1292      0.06373173,  0.06768364,  0.07163937,  0.07559976,
1293      0.07956096,  0.08352024,  0.08747623,  0.09143035,
1294      0.09538618,  0.09934771,  0.10331917,  0.10730456,
1295      0.11130697,  0.11532867,  0.11937133,  0.12343922,
1296      0.12753911,  0.13167705,  0.13585812,  0.14008529,
1297      0.14435986,  0.14868291,  0.15305531,  0.15747594,
1298      0.16194193,  0.16645070,  0.17099991,  0.17558633,
1299      0.18020600,  0.18485548,  0.18953191,  0.19423322,
1300      0.19895800,  0.20370512,  0.20847374,  0.21326312,
1301      0.21807244,  0.22290083,  0.22774742,  0.23261210,
1302      0.23749542,  0.24239767,  0.24731889,  0.25225887,
1303      0.25721719,  0.26219330,  0.26718648,  0.27219630,
1304      0.27722262,  0.28226514,  0.28732336,  0.29239628,
1305      0.29748247,  0.30258055,  0.30768914,  0.31280508,
1306      0.31792385,  0.32304172,  0.32815579,  0.33326397,
1307      0.33836470,  0.34345661,  0.34853868,  0.35361188,
1308      0.35867865,  0.36374072,  0.36879900,  0.37385347,
1309      0.37890349,  0.38394836,  0.38898730,  0.39401912,
1310      0.39904236,  0.40405575,  0.40905820,  0.41404819,
1311      0.41902398,  0.42398423,  0.42892805,  0.43385441,
1312      0.43876210,  0.44365014,  0.44851786,  0.45336632,
1313      0.45819759,  0.46301302,  0.46781309,  0.47259722,
1314      0.47736435,  0.48211365,  0.48684450,  0.49155594,
1315      0.49624679,  0.50091636,  0.50556440,  0.51019132,
1316      0.51479771,  0.51938391,  0.52394998,  0.52849587,
1317      0.53302151,  0.53752680,  0.54201160,  0.54647575,
1318      0.55091916,  0.55534181,  0.55974376,  0.56412513,
1319      0.56848615,  0.57282710,  0.57714834,  0.58145030,
1320      0.58492489,  0.58918511,  0.59342326,  0.59763936,
1321      0.60183347,  0.60600561,  0.61015581,  0.61428412,
1322      0.61839056,  0.62247517,  0.62653799,  0.63057912,
1323      0.63459872,  0.63859697,  0.64257403,  0.64653001,
1324      0.65046495,  0.65437887,  0.65827181,  0.66214383,
1325      0.66599499,  0.66982535,  0.67363499,  0.67742394,
1326      0.68119219,  0.68493972,  0.68866653,  0.69237258,
1327      0.69605778,  0.69972207,  0.70336537,  0.70698758,
1328      0.71058862,  0.71416837,  0.71772674,  0.72126361,
1329      0.72477889,  0.72827246,  0.73174419,  0.73519392,
1330      0.73862141,  0.74202643,  0.74540874,  0.74876817,
1331      0.75210458,  0.75541785,  0.75870785,  0.76197437,
1332      0.76521709,  0.76843570,  0.77162988,  0.77479939,
1333      0.77794403,  0.78106359,  0.78415789,  0.78722670,
1334      0.79026979,  0.79328694,  0.79627791,  0.79924244,
1335      0.80218027,  0.80509112,  0.80797472,  0.81083081,
1336      0.81365915,  0.81645949,  0.81923160,  0.82197528,
1337      0.82469037,  0.82737673,  0.83003419,  0.83266262,
1338      0.83526186,  0.83783176,  0.84037217,  0.84288297,
1339      0.84536401,  0.84781517,  0.85023632,  0.85262739,
1340      0.85498836,  0.85731921,  0.85961993,  0.86189052,
1341      0.86413101,  0.86634140,  0.86852173,  0.87067211,
1342      0.87279275,  0.87488384,  0.87694559,  0.87897824,
1343      0.88098206,  0.88295729,  0.88490423,  0.88682332,
1344      0.88871519,  0.89058048,  0.89241983,  0.89423391,
1345      0.89602338,  0.89778893,  0.89953126,  0.90125142,
1346      0.90295086,  0.90463104,  0.90629341,  0.90793946,
1347      0.90957067,  0.91118856,  0.91279464,  0.91439073,
1348      0.91597898,  0.91756153,  0.91914049,  0.92071690,
1349      0.92229070,  0.92386182,  0.92542993,  0.92698946,
1350      0.92852960,  0.93003929,  0.93150727,  0.93291739,
1351      0.93424863,  0.93547974,  0.93658982,  0.93756587,
1352      0.93894072,  0.93922780,  0.93955477,  0.93991290,
1353      0.94029104,  0.94067794,  0.94106258,  0.94144084,
1354      0.94181549,  0.94218963,  0.94256628,  0.94294662,
1355      0.94332998,  0.94371562,  0.94410280,  0.94449122,
1356      0.94488106,  0.94527249,  0.94566568,  0.94606074,
1357      0.94645772,  0.94685665,  0.94725759,  0.94766054,
1358      0.94806547,  0.94847234,  0.94888115,  0.94929190,
1359      0.94970469,  0.95011960,  0.95053672,  0.95095604,
1360      0.95137751,  0.95180105,  0.95222658,  0.95265413,
1361      0.95308380,  0.95351571,  0.95394994,  0.95438653,
1362      0.95482538,  0.95526643,  0.95570958,  0.95615486,
1363      0.95660234,  0.95705214,  0.95750433,  0.95795892,
1364      0.95841582,  0.95887493,  0.95933616,  0.95979949,
1365      0.96026500,  0.96073277,  0.96120286,  0.96167526,
1366      0.96214986,  0.96262655,  0.96310522,  0.96358586,
1367      0.96406853,  0.96455330,  0.96504026,  0.96552936,
1368      0.96602051,  0.96651360,  0.96700850,  0.96750520,
1369      0.96800376,  0.96850424,  0.96900670,  0.96951112,
1370      0.97001738,  0.97052533,  0.97103488,  0.97154597,
1371      0.97205867,  0.97257304,  0.97308915,  0.97360694,
1372      0.97412631,  0.97464711,  0.97516923,  0.97569262,
1373      0.97621735,  0.97674350,  0.97727111,  0.97780016,
1374      0.97833051,  0.97886205,  0.97939463,  0.97992823,
1375      0.98046291,  0.98099875,  0.98153580,  0.98207405,
1376      0.98261337,  0.98315364,  0.98369474,  0.98423664,
1377      0.98477941,  0.98532311,  0.98586780,  0.98641348,
1378      0.98696003,  0.98750734,  0.98805530,  0.98860389,
1379      0.98915320,  0.98970328,  0.99025423,  0.99080602,
1380      0.99135855,  0.99191171,  0.99246541,  0.99301962,
1381      0.99357443,  0.99412992,  0.99468617,  0.99524320,
1382      0.99580092,  0.99635926,  0.99691814,  0.99747748,
1383      0.99803721,  0.99859725,  0.99915752,  0.99971793,
1384      1.00028215,  1.00084319,  1.00140472,  1.00196665,
1385      1.00252889,  1.00309139,  1.00365404,  1.00421679,
1386      1.00477954,  1.00534221,  1.00590474,  1.00646713,
1387      1.00702945,  1.00759179,  1.00815424,  1.00871678,
1388      1.00927930,  1.00984169,  1.01040384,  1.01096575,
1389      1.01152747,  1.01208910,  1.01265070,  1.01321226,
1390      1.01377365,  1.01433478,  1.01489551,  1.01545584,
1391      1.01601582,  1.01657553,  1.01713502,  1.01769427,
1392      1.01825316,  1.01881154,  1.01936929,  1.01992639,
1393      1.02048289,  1.02103888,  1.02159441,  1.02214945,
1394      1.02270387,  1.02325751,  1.02381025,  1.02436204,
1395      1.02491295,  1.02546304,  1.02601238,  1.02656092,
1396      1.02710853,  1.02765508,  1.02820041,  1.02874449,
1397      1.02928737,  1.02982913,  1.03036981,  1.03090937,
1398      1.03144768,  1.03198460,  1.03252000,  1.03305384,
1399      1.03358617,  1.03411707,  1.03464659,  1.03517470,
1400      1.03570128,  1.03622620,  1.03674934,  1.03727066,
1401      1.03779024,  1.03830815,  1.03882446,  1.03933914,
1402      1.03985206,  1.04036312,  1.04087217,  1.04137920,
1403      1.04188428,  1.04238748,  1.04288888,  1.04338845,
1404      1.04388610,  1.04438170,  1.04487515,  1.04536645,
1405      1.04585569,  1.04634297,  1.04682838,  1.04731192,
1406      1.04779350,  1.04827303,  1.04875042,  1.04922568,
1407      1.04969891,  1.05017022,  1.05063974,  1.05110746,
1408      1.05157332,  1.05203721,  1.05249907,  1.05295889,
1409      1.05341676,  1.05387277,  1.05432700,  1.05477948,
1410      1.05523018,  1.05567906,  1.05612608,  1.05657124,
1411      1.05701459,  1.05745616,  1.05789601,  1.05833426,
1412      1.05877109,  1.05920669,  1.05964125,  1.06007444,
1413      1.06050542,  1.06093335,  1.06135746,  1.06177909,
1414      1.06220164,  1.06262858,  1.06306309,  1.06350050,
1415      1.06392837,  1.06433391,  1.06470443,  1.06502996,
1416      1.06481076,  1.06469765,  1.06445004,  1.06408002,
1417      1.06361382,  1.06307719,  1.06249453,  1.06188365,
1418      1.06125612,  1.06062291,  1.05999418,  1.05937132,
1419      1.05874726,  1.05811486,  1.05746728,  1.05680000,
1420      1.05611070,  1.05539715,  1.05465735,  1.05389329,
1421      1.05311083,  1.05231578,  1.05151372,  1.05070811,
1422      1.04990044,  1.04909210,  1.04828434,  1.04747647,
1423      1.04666590,  1.04585003,  1.04502628,  1.04419009,
1424      1.04333499,  1.04245452,  1.04154244,  1.04059452,
1425      1.03960846,  1.03858207,  1.03751326,  1.03640189,
1426      1.03524976,  1.03405868,  1.03283047,  1.03156812,
1427      1.03027574,  1.02895743,  1.02761717,  1.02625804,
1428      1.02488222,  1.02349184,  1.02208892,  1.02067450,
1429      1.01924861,  1.01781123,  1.01636229,  1.01490045,
1430      1.01342315,  1.01192778,  1.01041175,  1.00887284,
1431      1.00730915,  1.00571882,  1.00409996,  1.00245032,
1432      1.00076734,  0.99904842,  0.99729101,  0.99549380,
1433      0.99365664,  0.99177946,  0.98986234,  0.98791024,
1434      0.98593294,  0.98394037,  0.98194226,  0.97994532,
1435      0.97795324,  0.97596955,  0.97399748,  0.97203326,
1436      0.97006624,  0.96808546,  0.96608018,  0.96404416,
1437      0.96197556,  0.95987276,  0.95773420,  0.95556018,
1438      0.95335291,  0.95111462,  0.94884764,  0.94655663,
1439      0.94424858,  0.94193055,  0.93960953,  0.93729154,
1440      0.93498157,  0.93268456,  0.93040503,  0.92813771,
1441      0.92586755,  0.92357910,  0.92125731,  0.91889642,
1442      0.91649998,  0.91407191,  0.91161623,  0.90913975,
1443      0.90665202,  0.90416271,  0.90168115,  0.89920934,
1444      0.89674189,  0.89427312,  0.89179743,  0.88931147,
1445      0.88681415,  0.88430445,  0.88178141,  0.87924528,
1446      0.87669753,  0.87413966,  0.87157318,  0.86899958,
1447      0.86642037,  0.86383703,  0.86125106,  0.85866393,
1448      0.85604236,  0.85344385,  0.85083093,  0.84820550,
1449      0.84556943,  0.84292458,  0.84027278,  0.83761586,
1450      0.83495565,  0.83229393,  0.82963243,  0.82697135,
1451      0.82430933,  0.82164496,  0.81897669,  0.81630017,
1452      0.81360822,  0.81089355,  0.80814924,  0.80537741,
1453      0.80258920,  0.79979611,  0.79700954,  0.79423813,
1454      0.79148780,  0.78876432,  0.78607290,  0.78340590,
1455      0.78074288,  0.77806279,  0.77534514,  0.77258187,
1456      0.76977737,  0.76693654,  0.76406441,  0.76116851,
1457      0.75825892,  0.75534582,  0.75243924,  0.74954634,
1458      0.74667135,  0.74381840,  0.74099145,  0.73819147,
1459      0.73541641,  0.73266408,  0.72993193,  0.72720913,
1460      0.72447661,  0.72171494,  0.71890515,  0.71603932,
1461      0.71312056,  0.71015250,  0.70713900,  0.70409084,
1462      0.70102565,  0.69796137,  0.69491556,  0.69189772,
1463      0.68890931,  0.68595141,  0.68302498,  0.68012852,
1464      0.67725801,  0.67440936,  0.67157841,  0.66876081,
1465      0.66595195,  0.66314722,  0.66034194,  0.65753027,
1466      0.65470525,  0.65185984,  0.64898709,  0.64608214,
1467      0.64314221,  0.64016460,  0.63714680,  0.63409034,
1468      0.63100082,  0.62788400,  0.62474577,  0.62159473,
1469      0.61844225,  0.61529977,  0.61217866,  0.60908811,
1470      0.60603510,  0.60302654,  0.60006916,  0.59716588,
1471      0.59431580,  0.59151787,  0.58877068,  0.58606495,
1472      0.58338353,  0.58070891,  0.57802356,  0.57530864,
1473      0.57254404,  0.56970958,  0.56678577,  0.56376860,
1474      0.56066951,  0.55750064,  0.55427451,  0.55101301,
1475      0.54774732,  0.54450907,  0.54132936,  0.53822744,
1476      0.53521072,  0.53228613,  0.52945979,  0.52671997,
1477      0.52403708,  0.52138072,  0.51872085,  0.51603570,
1478      0.51331170,  0.51053560,  0.50769466,  0.50478931,
1479      0.50183308,  0.49884001,  0.49582406,  0.49279905,
1480      0.48985748,  0.48679641,  0.48379429,  0.48085363,
1481      0.47796576,  0.47512151,  0.47231151,  0.46952402,
1482      0.46674486,  0.46395978,  0.46115496,  0.45832607,
1483      0.45547830,  0.45261727,  0.44974866,  0.44688011,
1484      0.44402125,  0.44118178,  0.43837094,  0.43558772,
1485      0.43282082,  0.43005847,  0.42728913,  0.42450572,
1486      0.42170567,  0.41888658,  0.41604633,  0.41318897,
1487      0.41032472,  0.40746405,  0.40461724,  0.40178943,
1488      0.39898066,  0.39619073,  0.39341940,  0.39066519,
1489      0.38792536,  0.38519713,  0.38247773,  0.37976476,
1490      0.37705620,  0.37435006,  0.37164438,  0.36893869,
1491      0.36623396,  0.36353124,  0.36083153,  0.35813533,
1492      0.35544262,  0.35275338,  0.35006755,  0.34738530,
1493      0.34470699,  0.34203296,  0.33936359,  0.33669922,
1494      0.33404027,  0.33138711,  0.32874013,  0.32609944,
1495      0.32346493,  0.32083645,  0.31821388,  0.31559703,
1496      0.31298573,  0.31037987,  0.30777941,  0.30518446,
1497      0.30259525,  0.30001202,  0.29743499,  0.29486428,
1498      0.29229989,  0.28974179,  0.28718997,  0.28464452,
1499      0.28210562,  0.27957346,  0.27704820,  0.27452992,
1500      0.27201854,  0.26951399,  0.26701622,  0.26452533,
1501      0.26204158,  0.25956526,  0.25709662,  0.25463583,
1502      0.25218294,  0.24973798,  0.24730100,  0.24487207,
1503      0.24245133,  0.24003893,  0.23763500,  0.23523959,
1504      0.23285262,  0.23047401,  0.22810369,  0.22574170,
1505      0.22338818,  0.22104329,  0.21870719,  0.21637986,
1506      0.21406117,  0.21175095,  0.20944904,  0.20715535,
1507      0.20486987,  0.20259261,  0.20032356,  0.19806259,
1508      0.19580944,  0.19356385,  0.19132556,  0.18909442,
1509      0.18687040,  0.18465350,  0.18244372,  0.18024164,
1510      0.17804841,  0.17586521,  0.17369322,  0.17153360,
1511      0.16938755,  0.16725622,  0.16514081,  0.16304247,
1512      0.16098974,  0.15896561,  0.15696026,  0.15497259,
1513      0.15300151,  0.15104590,  0.14910466,  0.14717666,
1514      0.14526081,  0.14335599,  0.14146111,  0.13957570,
1515      0.13769993,  0.13583399,  0.13397806,  0.13213229,
1516      0.13029682,  0.12847178,  0.12665729,  0.12485353,
1517      0.12306074,  0.12127916,  0.11950900,  0.11775043,
1518      0.11600347,  0.11426820,  0.11254464,  0.11083292,
1519      0.10913318,  0.10744559,  0.10577028,  0.10410733,
1520      0.10245672,  0.10081842,  0.09919240,  0.09757872,
1521      0.09597750,  0.09438884,  0.09281288,  0.09124964,
1522      0.08969907,  0.08816111,  0.08663570,  0.08512288,
1523      0.08362274,  0.08213540,  0.08066096,  0.07919944,
1524      0.07775076,  0.07631484,  0.07489161,  0.07348108,
1525      0.07208335,  0.07069851,  0.06932666,  0.06796781,
1526      0.06662187,  0.06528874,  0.06396833,  0.06266065,
1527      0.06136578,  0.06008380,  0.05881480,  0.05755876,
1528      0.05631557,  0.05508511,  0.05386728,  0.05266206,
1529      0.05146951,  0.05028971,  0.04912272,  0.04796855,
1530      0.04682709,  0.04569825,  0.04458194,  0.04347817,
1531      0.04238704,  0.04130868,  0.04024318,  0.03919056,
1532      0.03815071,  0.03712352,  0.03610890,  0.03510679,
1533      0.03411720,  0.03314013,  0.03217560,  0.03122343,
1534      0.03028332,  0.02935494,  0.02843799,  0.02753230,
1535      0.02663788,  0.02575472,  0.02488283,  0.02402232,
1536      0.02317341,  0.02233631,  0.02151124,  0.02069866,
1537      0.01989922,  0.01911359,  0.01834241,  0.01758563,
1538      0.01684248,  0.01611219,  0.01539397,  0.01468726,
1539      0.01399167,  0.01330687,  0.01263250,  0.01196871,
1540      0.01131609,  0.01067527,  0.01004684,  0.00943077,
1541      0.00882641,  0.00823307,  0.00765011,  0.00707735,
1542      0.00651513,  0.00596377,  0.00542364,  0.00489514,
1543      0.00437884,  0.00387530,  0.00338509,  0.00290795,
1544      0.00244282,  0.00198860,  0.00154417,  0.00110825,
1545      0.00067934,  0.00025589, -0.00016357, -0.00057897,
1546     -0.00098865, -0.00139089, -0.00178397, -0.00216547,
1547     -0.00253230, -0.00288133, -0.00320955, -0.00351626,
1548     -0.00380315, -0.00407198, -0.00432457, -0.00456373,
1549     -0.00479326, -0.00501699, -0.00523871, -0.00546066,
1550     -0.00568360, -0.00590821, -0.00613508, -0.00636311,
1551     -0.00658944, -0.00681117, -0.00702540, -0.00722982,
1552     -0.00742268, -0.00760226, -0.00776687, -0.00791580,
1553     -0.00804933, -0.00816774, -0.00827139, -0.00836122,
1554     -0.00843882, -0.00850583, -0.00856383, -0.00861430,
1555     -0.00865853, -0.00869781, -0.00873344, -0.00876633,
1556     -0.00879707, -0.00882622, -0.00885433, -0.00888132,
1557     -0.00890652, -0.00892925, -0.00894881, -0.00896446,
1558     -0.00897541, -0.00898088, -0.00898010, -0.00897234,
1559     -0.00895696, -0.00893330, -0.00890076, -0.00885914,
1560     -0.00880875, -0.00874987, -0.00868282, -0.00860825,
1561     -0.00852716, -0.00844055, -0.00834941, -0.00825485,
1562     -0.00815807, -0.00806025, -0.00796253, -0.00786519,
1563     -0.00776767, -0.00766937, -0.00756971, -0.00746790,
1564     -0.00736305, -0.00725422, -0.00714055, -0.00702161,
1565     -0.00689746, -0.00676816, -0.00663381, -0.00649489,
1566     -0.00635230, -0.00620694, -0.00605969, -0.00591116,
1567     -0.00576167, -0.00561155, -0.00546110, -0.00531037,
1568     -0.00515917, -0.00500732, -0.00485462, -0.00470075,
1569     -0.00454530, -0.00438786, -0.00422805, -0.00406594,
1570     -0.00390204, -0.00373686, -0.00357091, -0.00340448,
1571     -0.00323770, -0.00307066, -0.00290344, -0.00273610,
1572     -0.00256867, -0.00240117, -0.00223365, -0.00206614,
1573     -0.00189866, -0.00173123, -0.00156390, -0.00139674,
1574     -0.00122989, -0.00106351, -0.00089772, -0.00073267,
1575     -0.00056849, -0.00040530, -0.00024324, -0.00008241,
1576      0.00008214,  0.00024102,  0.00039922,  0.00055660,
1577      0.00071299,  0.00086826,  0.00102224,  0.00117480,
1578      0.00132579,  0.00147507,  0.00162252,  0.00176804,
1579      0.00191161,  0.00205319,  0.00219277,  0.00233029,
1580      0.00246567,  0.00259886,  0.00272975,  0.00285832,
1581      0.00298453,  0.00310839,  0.00322990,  0.00334886,
1582      0.00346494,  0.00357778,  0.00368706,  0.00379273,
1583      0.00389501,  0.00399411,  0.00409020,  0.00418350,
1584      0.00427419,  0.00436249,  0.00444858,  0.00453250,
1585      0.00461411,  0.00469328,  0.00476988,  0.00484356,
1586      0.00491375,  0.00497987,  0.00504139,  0.00509806,
1587      0.00514990,  0.00519693,  0.00523920,  0.00527700,
1588      0.00531083,  0.00534122,  0.00536864,  0.00539357,
1589      0.00541649,  0.00543785,  0.00545809,  0.00547713,
1590      0.00549441,  0.00550936,  0.00552146,  0.00553017,
1591      0.00553494,  0.00553524,  0.00553058,  0.00552065,
1592      0.00550536,  0.00548459,  0.00545828,  0.00542662,
1593      0.00539007,  0.00534910,  0.00530415,  0.00525568,
1594      0.00520417,  0.00515009,  0.00509387,  0.00503595,
1595      0.00497674,  0.00491665,  0.00485605,  0.00479503,
1596      0.00473336,  0.00467082,  0.00460721,  0.00454216,
1597      0.00447517,  0.00440575,  0.00433344,  0.00425768,
1598      0.00417786,  0.00409336,  0.00400363,  0.00390837,
1599      0.00380759,  0.00370130,  0.00358952,  0.00347268,
1600      0.00335157,  0.00322699,  0.00309975,  0.00297088,
1601      0.00284164,  0.00271328,  0.00258700,  0.00246328,
1602      0.00234195,  0.00222281,  0.00210562,  0.00198958,
1603      0.00187331,  0.00175546,  0.00163474,  0.00151020,
1604      0.00138130,  0.00124750,  0.00110831,  0.00096411,
1605      0.00081611,  0.00066554,  0.00051363,  0.00036134,
1606      0.00020940,  0.00005853, -0.00009058, -0.00023783,
1607     -0.00038368, -0.00052861, -0.00067310, -0.00081757,
1608     -0.00096237, -0.00110786, -0.00125442, -0.00140210,
1609     -0.00155065, -0.00169984, -0.00184940, -0.00199910,
1610     -0.00214872, -0.00229798, -0.00244664, -0.00259462,
1611     -0.00274205, -0.00288912, -0.00303596, -0.00318259,
1612     -0.00332890, -0.00347480, -0.00362024, -0.00376519,
1613     -0.00390962, -0.00405345, -0.00419658, -0.00433902,
1614     -0.00448085, -0.00462219, -0.00476309, -0.00490357,
1615     -0.00504361, -0.00518321, -0.00532243, -0.00546132,
1616     -0.00559988, -0.00573811, -0.00587602, -0.00601363,
1617     -0.00615094, -0.00628795, -0.00642466, -0.00656111,
1618     -0.00669737, -0.00683352, -0.00696963, -0.00710578,
1619     -0.00724208, -0.00737862, -0.00751554, -0.00765295,
1620     -0.00779098, -0.00792976, -0.00806941, -0.00821006,
1621     -0.00835183, -0.00849485, -0.00863926, -0.00878522,
1622     -0.00893293, -0.00908260, -0.00923444, -0.00938864,
1623     -0.00954537, -0.00970482, -0.00986715, -0.01003173,
1624     -0.01019711, -0.01036164, -0.01052357, -0.01068184,
1625     -0.01083622, -0.01098652, -0.01113252, -0.01127409,
1626     -0.01141114, -0.01154358, -0.01167135, -0.01179439,
1627     -0.01191268, -0.01202619, -0.01213493, -0.01223891,
1628     -0.01233817, -0.01243275, -0.01252272, -0.01260815,
1629     -0.01268915, -0.01276583, -0.01283832, -0.01290685,
1630     -0.01297171, -0.01303320, -0.01309168, -0.01314722,
1631     -0.01319969, -0.01324889, -0.01329466, -0.01333693,
1632     -0.01337577, -0.01341125, -0.01344345, -0.01347243,
1633     -0.01349823, -0.01352089, -0.01354045, -0.01355700,
1634     -0.01357068, -0.01358164, -0.01359003, -0.01359587,
1635     -0.01359901, -0.01359931, -0.01359661, -0.01359087,
1636     -0.01358219, -0.01357065, -0.01355637, -0.01353935,
1637     -0.01351949, -0.01349670, -0.01347088, -0.01344214,
1638     -0.01341078, -0.01337715, -0.01334158, -0.01330442,
1639     -0.01326601, -0.01322671, -0.01318689, -0.01314692,
1640     -0.01310123, -0.01306470, -0.01302556, -0.01298381,
1641     -0.01293948, -0.01289255, -0.01284305, -0.01279095,
1642     -0.01273625, -0.01267893, -0.01261897, -0.01255632,
1643     -0.01249096, -0.01242283, -0.01235190, -0.01227827,
1644     -0.01220213, -0.01212366, -0.01204304, -0.01196032,
1645     -0.01187543, -0.01178829, -0.01169884, -0.01160718,
1646     -0.01151352, -0.01141809, -0.01132111, -0.01122272,
1647     -0.01112304, -0.01102217, -0.01092022, -0.01081730,
1648     -0.01071355, -0.01060912, -0.01050411, -0.01039854,
1649     -0.01029227, -0.01018521, -0.01007727, -0.00996859,
1650     -0.00985959, -0.00975063, -0.00964208, -0.00953420,
1651     -0.00942723, -0.00932135, -0.00921677, -0.00911364,
1652     -0.00901208, -0.00891220, -0.00881412, -0.00871792,
1653     -0.00862369, -0.00853153, -0.00844149, -0.00835360,
1654     -0.00826785, -0.00818422, -0.00810267, -0.00802312,
1655     -0.00794547, -0.00786959, -0.00779533, -0.00772165,
1656     -0.00764673, -0.00756886, -0.00748649, -0.00739905,
1657     -0.00730681, -0.00721006, -0.00710910, -0.00700419,
1658     -0.00689559, -0.00678354, -0.00666829, -0.00655007,
1659     -0.00642916, -0.00630579, -0.00618022, -0.00605267,
1660     -0.00592333, -0.00579240, -0.00566006, -0.00552651,
1661     -0.00539194, -0.00525653, -0.00512047, -0.00498390,
1662     -0.00484693, -0.00470969, -0.00457228, -0.00443482,
1663     -0.00429746, -0.00416034, -0.00402359, -0.00388738,
1664     -0.00375185, -0.00361718, -0.00348350, -0.00335100,
1665     -0.00321991, -0.00309043, -0.00296276, -0.00283698,
1666     -0.00271307, -0.00259098, -0.00247066, -0.00235210,
1667     -0.00223531, -0.00212030, -0.00200709, -0.00189576,
1668     -0.00178647, -0.00167936, -0.00157457, -0.00147216,
1669     -0.00137205, -0.00127418, -0.00117849, -0.00108498,
1670     -0.00099375, -0.00090486, -0.00081840, -0.00073444,
1671     -0.00065309, -0.00057445, -0.00049860, -0.00042551,
1672     -0.00035503, -0.00028700, -0.00022125, -0.00015761,
1673     -0.00009588, -0.00003583,  0.00002272,  0.00007975,
1674      0.00013501,  0.00018828,  0.00023933,  0.00028784,
1675      0.00033342,  0.00037572,  0.00041438,  0.00044939,
1676      0.00048103,  0.00050958,  0.00053533,  0.00055869,
1677      0.00058015,  0.00060022,  0.00061935,  0.00063781,
1678      0.00065568,  0.00067303,  0.00068991,  0.00070619,
1679      0.00072155,  0.00073567,  0.00074826,  0.00075912,
1680      0.00076811,  0.00077509,  0.00077997,  0.00078275,
1681      0.00078351,  0.00078237,  0.00077943,  0.00077484,
1682      0.00076884,  0.00076160,  0.00075335,  0.00074423,
1683      0.00073442,  0.00072404,  0.00071323,  0.00070209,
1684      0.00069068,  0.00067906,  0.00066728,  0.00065534,
1685      0.00064321,  0.00063086,  0.00061824,  0.00060534,
1686      0.00059211,  0.00057855,  0.00056462,  0.00055033,
1687      0.00053566,  0.00052063,  0.00050522,  0.00048949,
1688      0.00047349,  0.00045728,  0.00044092,  0.00042447,
1689      0.00040803,  0.00039166,  0.00037544,  0.00035943,
1690      0.00034371,  0.00032833,  0.00031333,  0.00029874,
1691      0.00028452,  0.00027067,  0.00025715,  0.00024395,
1692      0.00023104,  0.00021842,  0.00020606,  0.00019398,
1693      0.00018218,  0.00017069,  0.00015953,  0.00014871,
1694      0.00013827,  0.00012823,  0.00011861,  0.00010942,
1695      0.00010067,  0.00009236,  0.00008448,  0.00007703,
1696      0.00006999,  0.00006337,  0.00005714,  0.00005129,
1697      0.00004583,  0.00004072,  0.00003597,  0.00003157,
1698      0.00002752,  0.00002380,  0.00002042,  0.00001736,
1699      0.00001461,  0.00001215,  0.00000998,  0.00000807,
1700      0.00000641,  0.00000499,  0.00000378,  0.00000278,
1701      0.00000196,  0.00000132,  0.00000082,  0.00000046,
1702      0.00000020,  0.00000005, -0.00000003, -0.00000006,
1703     -0.00000004, -0.00000001,  0.00000001,  0.00000001,
1704      0.00000001,  0.00000001, -0.00000001, -0.00000004,
1705     -0.00000005, -0.00000003,  0.00000005,  0.00000020,
1706      0.00000043,  0.00000077,  0.00000123,  0.00000183,
1707      0.00000257,  0.00000348,  0.00000455,  0.00000581,
1708      0.00000727,  0.00000893,  0.00001080,  0.00001290,
1709      0.00001522,  0.00001778,  0.00002057,  0.00002362,
1710      0.00002691,  0.00003044,  0.00003422,  0.00003824,
1711      0.00004250,  0.00004701,  0.00005176,  0.00005676,
1712      0.00006200,  0.00006749,  0.00007322,  0.00007920,
1713      0.00008541,  0.00009186,  0.00009854,  0.00010543,
1714      0.00011251,  0.00011975,  0.00012714,  0.00013465,
1715      0.00014227,  0.00014997,  0.00015775,  0.00016558,
1716      0.00017348,  0.00018144,  0.00018947,  0.00019756,
1717      0.00020573,  0.00021399,  0.00022233,  0.00023076,
1718      0.00023924,  0.00024773,  0.00025621,  0.00026462,
1719      0.00027293,  0.00028108,  0.00028904,  0.00029675,
1720      0.00030419,  0.00031132,  0.00031810,  0.00032453,
1721      0.00033061,  0.00033632,  0.00034169,  0.00034672,
1722      0.00035142,  0.00035580,  0.00035988,  0.00036369,
1723      0.00036723,  0.00037053,  0.00037361,  0.00037647,
1724      0.00037909,  0.00038145,  0.00038352,  0.00038527,
1725      0.00038663,  0.00038757,  0.00038801,  0.00038790,
1726      0.00038717,  0.00038572,  0.00038350,  0.00038044,
1727      0.00037651,  0.00037170,  0.00036597,  0.00035936,
1728      0.00035191,  0.00034370,  0.00033480,  0.00032531,
1729      0.00031537,  0.00030512,  0.00029470,  0.00028417,
1730      0.00027354,  0.00026279,  0.00025191,  0.00024081,
1731      0.00022933,  0.00021731,  0.00020458,  0.00019101,
1732      0.00017654,  0.00016106,  0.00014452,  0.00012694,
1733      0.00010848,  0.00008929,  0.00006953,  0.00004935,
1734      0.00002884,  0.00000813, -0.00001268, -0.00003357,
1735     -0.00005457, -0.00007574, -0.00009714, -0.00011882,
1736     -0.00014082, -0.00016318, -0.00018595, -0.00020912,
1737     -0.00023265, -0.00025650, -0.00028060, -0.00030492,
1738     -0.00032941, -0.00035400, -0.00037865, -0.00040333,
1739     -0.00042804, -0.00045279, -0.00047759, -0.00050243,
1740     -0.00052728, -0.00055209, -0.00057685, -0.00060153,
1741     -0.00062611, -0.00065056, -0.00067485, -0.00069895,
1742     -0.00072287, -0.00074660, -0.00077013, -0.00079345,
1743     -0.00081653, -0.00083936, -0.00086192, -0.00088421,
1744     -0.00090619, -0.00092786, -0.00094919, -0.00097017,
1745     -0.00099077, -0.00101098, -0.00103077, -0.00105012,
1746     -0.00106904, -0.00108750, -0.00110549, -0.00112301,
1747     -0.00114005, -0.00115660, -0.00117265, -0.00118821,
1748     -0.00120325, -0.00121779, -0.00123180, -0.00124528,
1749     -0.00125822, -0.00127061, -0.00128243, -0.00129368,
1750     -0.00130435, -0.00131445, -0.00132395, -0.00133285,
1751     -0.00134113, -0.00134878, -0.00135577, -0.00136215,
1752     -0.00136797, -0.00137333, -0.00137834, -0.00138305,
1753     -0.00138748, -0.00139163, -0.00139551, -0.00139913,
1754     -0.00140249, -0.00140559, -0.00140844, -0.00141102,
1755     -0.00141334, -0.00141538, -0.00141714, -0.00141861,
1756     -0.00141978, -0.00142064, -0.00142117, -0.00142138,
1757     -0.00142125, -0.00142077, -0.00141992, -0.00141870,
1758     -0.00141710, -0.00141510, -0.00141268, -0.00140986,
1759     -0.00140663, -0.00140301, -0.00139900, -0.00139460,
1760     -0.00138981, -0.00138464, -0.00137908, -0.00137313,
1761     -0.00136680, -0.00136010, -0.00135301, -0.00134555,
1762     -0.00133772, -0.00132952, -0.00132095, -0.00131201,
1763     -0.00130272, -0.00129307, -0.00128309, -0.00127277,
1764     -0.00126211, -0.00125113, -0.00123981, -0.00122817,
1765     -0.00121622, -0.00120397, -0.00119141, -0.00117859,
1766     -0.00116552, -0.00115223, -0.00113877, -0.00112517,
1767     -0.00111144, -0.00109764, -0.00108377, -0.00106989,
1768 };
1769
1770 const DECLARE_ALIGNED(32, float, ff_aac_eld_window_480)[1800] = {
1771      0.00101191,  0.00440397,  0.00718669,  0.01072130,
1772      0.01459757,  0.01875954,  0.02308987,  0.02751541,
1773      0.03198130,  0.03643738,  0.04085290,  0.04522835,
1774      0.04957620,  0.05390454,  0.05821503,  0.06251214,
1775      0.06680463,  0.07109582,  0.07538014,  0.07965207,
1776      0.08390857,  0.08815177,  0.09238785,  0.09662163,
1777      0.10085860,  0.10510892,  0.10938110,  0.11367819,
1778      0.11800355,  0.12236410,  0.12676834,  0.13122384,
1779      0.13573476,  0.14030106,  0.14492340,  0.14960315,
1780      0.15433828,  0.15912396,  0.16395663,  0.16883310,
1781      0.17374837,  0.17869679,  0.18367394,  0.18867661,
1782      0.19370368,  0.19875413,  0.20382641,  0.20892055,
1783      0.21403775,  0.21917761,  0.22433899,  0.22952250,
1784      0.23472991,  0.23996189,  0.24521859,  0.25049930,
1785      0.25580312,  0.26112942,  0.26647748,  0.27184703,
1786      0.27723785,  0.28264967,  0.28808086,  0.29352832,
1787      0.29898979,  0.30446379,  0.30994292,  0.31541664,
1788      0.32087942,  0.32632772,  0.33176291,  0.33718641,
1789      0.34259612,  0.34799346,  0.35338857,  0.35878843,
1790      0.36419504,  0.36960630,  0.37501567,  0.38042067,
1791      0.38582069,  0.39121276,  0.39659312,  0.40195993,
1792      0.40731155,  0.41264382,  0.41795277,  0.42323670,
1793      0.42849480,  0.43372753,  0.43893452,  0.44411398,
1794      0.44927117,  0.45441882,  0.45956191,  0.46470167,
1795      0.46983016,  0.47493636,  0.48001827,  0.48507480,
1796      0.49010240,  0.49509781,  0.50005986,  0.50499037,
1797      0.50989790,  0.51478708,  0.51965805,  0.52450975,
1798      0.52933955,  0.53414668,  0.53893113,  0.54369178,
1799      0.54842731,  0.55313757,  0.55782259,  0.56248253,
1800      0.56711762,  0.57172819,  0.57631468,  0.58087761,
1801      0.58719976,  0.59173064,  0.59623644,  0.60071719,
1802      0.60517294,  0.60960372,  0.61400958,  0.61839056,
1803      0.62274670,  0.62707805,  0.63138475,  0.63566700,
1804      0.63992500,  0.64415895,  0.64836893,  0.65255499,
1805      0.65671715,  0.66085548,  0.66497005,  0.66906094,
1806      0.67312824,  0.67717199,  0.68119219,  0.68518882,
1807      0.68916187,  0.69311129,  0.69703698,  0.70093884,
1808      0.70481679,  0.70867071,  0.71250047,  0.71630596,
1809      0.72008705,  0.72384360,  0.72757549,  0.73128256,
1810      0.73496463,  0.73862141,  0.74225263,  0.74585799,
1811      0.74943730,  0.75299039,  0.75651711,  0.76001729,
1812      0.76349062,  0.76693670,  0.77035516,  0.77374564,
1813      0.77710790,  0.78044169,  0.78374678,  0.78702291,
1814      0.79026979,  0.79348715,  0.79667471,  0.79983215,
1815      0.80295914,  0.80605536,  0.80912047,  0.81215417,
1816      0.81515616,  0.81812616,  0.82106389,  0.82396915,
1817      0.82684176,  0.82968154,  0.83248830,  0.83526186,
1818      0.83800204,  0.84070866,  0.84338156,  0.84602058,
1819      0.84862556,  0.85119636,  0.85373292,  0.85623523,
1820      0.85870326,  0.86113701,  0.86353649,  0.86590173,
1821      0.86823275,  0.87052968,  0.87279275,  0.87502220,
1822      0.87721829,  0.87938130,  0.88151157,  0.88360940,
1823      0.88567517,  0.88770954,  0.88971328,  0.89168716,
1824      0.89363199,  0.89554856,  0.89743771,  0.89930025,
1825      0.90113740,  0.90295086,  0.90474240,  0.90651380,
1826      0.90826684,  0.91000335,  0.91172515,  0.91343416,
1827      0.91513276,  0.91682357,  0.91850924,  0.92019170,
1828      0.92187129,  0.92354778,  0.92522116,  0.92688597,
1829      0.92852960,  0.93013861,  0.93169897,  0.93319114,
1830      0.93458502,  0.93587626,  0.93694276,  0.93825562,
1831      0.93882222,  0.93910780,  0.93944183,  0.93981497,
1832      0.94021434,  0.94062629,  0.94103714,  0.94144084,
1833      0.94184042,  0.94223966,  0.94264206,  0.94304859,
1834      0.94345831,  0.94387033,  0.94428390,  0.94469895,
1835      0.94511572,  0.94553441,  0.94595520,  0.94637816,
1836      0.94680335,  0.94723080,  0.94766054,  0.94809253,
1837      0.94852674,  0.94896314,  0.94940178,  0.94984276,
1838      0.95028618,  0.95073213,  0.95118056,  0.95163139,
1839      0.95208451,  0.95253992,  0.95299770,  0.95345799,
1840      0.95392092,  0.95438653,  0.95485472,  0.95532539,
1841      0.95579847,  0.95627397,  0.95675201,  0.95723273,
1842      0.95771618,  0.95820232,  0.95869103,  0.95918218,
1843      0.95967573,  0.96017172,  0.96067026,  0.96117144,
1844      0.96167526,  0.96218157,  0.96269026,  0.96320119,
1845      0.96371437,  0.96422988,  0.96474782,  0.96526824,
1846      0.96579106,  0.96631614,  0.96684334,  0.96737257,
1847      0.96790390,  0.96843740,  0.96897315,  0.96951112,
1848      0.97005119,  0.97059318,  0.97113697,  0.97168253,
1849      0.97222994,  0.97277928,  0.97333058,  0.97388375,
1850      0.97443863,  0.97499505,  0.97555292,  0.97611230,
1851      0.97667326,  0.97723589,  0.97780016,  0.97836591,
1852      0.97893300,  0.97950127,  0.98007071,  0.98064139,
1853      0.98121342,  0.98178684,  0.98236156,  0.98293743,
1854      0.98351428,  0.98409205,  0.98467078,  0.98525056,
1855      0.98583146,  0.98641348,  0.98699650,  0.98758037,
1856      0.98816497,  0.98875030,  0.98933647,  0.98992356,
1857      0.99051163,  0.99110062,  0.99169038,  0.99228079,
1858      0.99287177,  0.99346341,  0.99405581,  0.99464907,
1859      0.99524320,  0.99583812,  0.99643375,  0.99702997,
1860      0.99762671,  0.99822386,  0.99882134,  0.99941903,
1861      1.00058131,  1.00118006,  1.00177930,  1.00237893,
1862      1.00297887,  1.00357902,  1.00417927,  1.00477954,
1863      1.00537972,  1.00597973,  1.00657959,  1.00717940,
1864      1.00777926,  1.00837925,  1.00897929,  1.00957926,
1865      1.01017901,  1.01077847,  1.01137769,  1.01197678,
1866      1.01257582,  1.01317482,  1.01377365,  1.01437217,
1867      1.01497025,  1.01556786,  1.01616510,  1.01676205,
1868      1.01735876,  1.01795514,  1.01855103,  1.01914627,
1869      1.01974076,  1.02033455,  1.02092772,  1.02152037,
1870      1.02211247,  1.02270387,  1.02329439,  1.02388387,
1871      1.02447229,  1.02505972,  1.02564624,  1.02623190,
1872      1.02681660,  1.02740017,  1.02798242,  1.02856326,
1873      1.02914272,  1.02972087,  1.03029778,  1.03087344,
1874      1.03144768,  1.03202035,  1.03259127,  1.03316042,
1875      1.03372788,  1.03429373,  1.03485801,  1.03542064,
1876      1.03598146,  1.03654030,  1.03709708,  1.03765185,
1877      1.03820470,  1.03875571,  1.03930488,  1.03985206,
1878      1.04039712,  1.04093989,  1.04148037,  1.04201865,
1879      1.04255481,  1.04308893,  1.04362093,  1.04415068,
1880      1.04467803,  1.04520292,  1.04572542,  1.04624566,
1881      1.04676376,  1.04727974,  1.04779350,  1.04830493,
1882      1.04881391,  1.04932048,  1.04982477,  1.05032693,
1883      1.05082705,  1.05132510,  1.05182098,  1.05231457,
1884      1.05280584,  1.05329485,  1.05378171,  1.05426654,
1885      1.05474937,  1.05523018,  1.05570892,  1.05618554,
1886      1.05666005,  1.05713251,  1.05760297,  1.05807149,
1887      1.05853828,  1.05900355,  1.05946756,  1.05993024,
1888      1.06039075,  1.06084806,  1.06130111,  1.06175099,
1889      1.06220164,  1.06265732,  1.06312146,  1.06358726,
1890      1.06403924,  1.06446186,  1.06484048,  1.06516440,
1891      1.06527864,  1.06498077,  1.06470196,  1.06425743,
1892      1.06372091,  1.06311464,  1.06246622,  1.06179277,
1893      1.06110808,  1.06042455,  1.05974495,  1.05906206,
1894      1.05836706,  1.05765243,  1.05691470,  1.05615178,
1895      1.05536069,  1.05454152,  1.05370030,  1.05284445,
1896      1.05198094,  1.05111433,  1.05024634,  1.04937859,
1897      1.04851245,  1.04764614,  1.04677586,  1.04589855,
1898      1.04501046,  1.04410500,  1.04317417,  1.04221010,
1899      1.04120649,  1.04016012,  1.03906851,  1.03792894,
1900      1.03674090,  1.03550649,  1.03422800,  1.03290769,
1901      1.03154944,  1.03015834,  1.02873938,  1.02729712,
1902      1.02583470,  1.02435463,  1.02285952,  1.02135114,
1903      1.01982974,  1.01829520,  1.01674752,  1.01518534,
1904      1.01360559,  1.01200510,  1.01038076,  1.00872996,
1905      1.00705045,  1.00533999,  1.00359618,  1.00181613,
1906      0.99999673,  0.99813477,  0.99622793,  0.99427571,
1907      0.99227814,  0.99023501,  0.98815128,  0.98603857,
1908      0.98390898,  0.98177413,  0.97964151,  0.97751528,
1909      0.97539999,  0.97329751,  0.97119933,  0.96909179,
1910      0.96696152,  0.96479824,  0.96259840,  0.96036028,
1911      0.95808180,  0.95576295,  0.95340622,  0.95101436,
1912      0.94859030,  0.94614009,  0.94367232,  0.94119555,
1913      0.93871796,  0.93624630,  0.93378636,  0.93134465,
1914      0.92892076,  0.92649974,  0.92406255,  0.92159041,
1915      0.91907411,  0.91651711,  0.91392425,  0.91130056,
1916      0.90865471,  0.90599838,  0.90334350,  0.90069934,
1917      0.89806435,  0.89543132,  0.89279335,  0.89014496,
1918      0.88748403,  0.88480945,  0.88211997,  0.87941558,
1919      0.87669794,  0.87396891,  0.87123030,  0.86848394,
1920      0.86573164,  0.86297523,  0.86021649,  0.85745725,
1921      0.85474342,  0.85193656,  0.84911455,  0.84627969,
1922      0.84343424,  0.84058046,  0.83772057,  0.83485680,
1923      0.83199134,  0.82912621,  0.82626143,  0.82339529,
1924      0.82052619,  0.81765147,  0.81476433,  0.81185593,
1925      0.80891701,  0.80594452,  0.80294885,  0.79994431,
1926      0.79694485,  0.79396166,  0.79100220,  0.78807349,
1927      0.78518123,  0.78231422,  0.77944709,  0.77655407,
1928      0.77361369,  0.77062281,  0.76758806,  0.76451506,
1929      0.76141145,  0.75828860,  0.75515892,  0.75203479,
1930      0.74892561,  0.74583682,  0.74277342,  0.73974008,
1931      0.73673754,  0.73376310,  0.73081444,  0.72788616,
1932      0.72496070,  0.72201426,  0.71902283,  0.71596990,
1933      0.71285541,  0.70968427,  0.70646064,  0.70319589,
1934      0.69991077,  0.69662714,  0.69336592,  0.69013742,
1935      0.68694302,  0.68378420,  0.68066143,  0.67757157,
1936      0.67450951,  0.67147030,  0.66844879,  0.66543949,
1937      0.66243677,  0.65943505,  0.65642754,  0.65340591,
1938      0.65036160,  0.64728630,  0.64417440,  0.64102268,
1939      0.63782771,  0.63458757,  0.63130628,  0.62799109,
1940      0.62464879,  0.62128816,  0.61792203,  0.61456438,
1941      0.61122915,  0.60792802,  0.60466971,  0.60146257,
1942      0.59831460,  0.59522876,  0.59220375,  0.58923859,
1943      0.58632936,  0.58346064,  0.58061078,  0.57775874,
1944      0.57488246,  0.57195790,  0.56896078,  0.56586637,
1945      0.56266594,  0.55937186,  0.55599898,  0.55256299,
1946      0.54909184,  0.54562376,  0.54219742,  0.53884728,
1947      0.53559047,  0.53243453,  0.52938894,  0.52645052,
1948      0.52358958,  0.52076862,  0.51795080,  0.51510761,
1949      0.51222179,  0.50927733,  0.50625944,  0.50317073,
1950      0.50002767,  0.49685021,  0.49364116,  0.49048690,
1951      0.48726128,  0.48404889,  0.48090875,  0.47783482,
1952      0.47481564,  0.47184024,  0.46889391,  0.46595836,
1953      0.46301611,  0.46005089,  0.45705924,  0.45404822,
1954      0.45102447,  0.44799543,  0.44497138,  0.44196397,
1955      0.43898547,  0.43604105,  0.43312057,  0.43020942,
1956      0.42729337,  0.42436272,  0.42141388,  0.41844400,
1957      0.41545081,  0.41244014,  0.40942464,  0.40641716,
1958      0.40342874,  0.40046292,  0.39751923,  0.39459758,
1959      0.39169692,  0.38881435,  0.38594643,  0.38308980,
1960      0.38024146,  0.37739896,  0.37455986,  0.37172187,
1961      0.36888463,  0.36604937,  0.36321735,  0.36038967,
1962      0.35756668,  0.35474832,  0.35193455,  0.34912542,
1963      0.34632129,  0.34352258,  0.34072974,  0.33794323,
1964      0.33516354,  0.33239114,  0.32962648,  0.32686967,
1965      0.32412042,  0.32137919,  0.31864044,  0.31588373,
1966      0.31309909,  0.31028631,  0.30745528,  0.30462678,
1967      0.30180656,  0.29899424,  0.29619082,  0.29339717,
1968      0.29061333,  0.28783935,  0.28507563,  0.28232266,
1969      0.27958067,  0.27684984,  0.27413017,  0.27142157,
1970      0.26872396,  0.26603737,  0.26336211,  0.26069855,
1971      0.25804700,  0.25540830,  0.25278329,  0.25017211,
1972      0.24757451,  0.24498713,  0.24240740,  0.23983550,
1973      0.23727200,  0.23471866,  0.23217624,  0.22964458,
1974      0.22712346,  0.22461258,  0.22211202,  0.21962197,
1975      0.21714290,  0.21467522,  0.21221877,  0.20977323,
1976      0.20733693,  0.20490860,  0.20248823,  0.20007615,
1977      0.19767358,  0.19528091,  0.19289781,  0.19052347,
1978      0.18815661,  0.18579693,  0.18344441,  0.18110010,
1979      0.17876595,  0.17644344,  0.17413400,  0.17183905,
1980      0.16956003,  0.16729836,  0.16505547,  0.16283278,
1981      0.15990780,  0.15776021,  0.15563325,  0.15352557,
1982      0.15143584,  0.14936270,  0.14730481,  0.14526081,
1983      0.14322937,  0.14120918,  0.13919977,  0.13720138,
1984      0.13521422,  0.13323852,  0.13127445,  0.12932216,
1985      0.12738181,  0.12545358,  0.12353773,  0.12163457,
1986      0.11974436,  0.11786730,  0.11600347,  0.11415293,
1987      0.11231573,  0.11049201,  0.10868196,  0.10688578,
1988      0.10510362,  0.10333551,  0.10158143,  0.09984133,
1989      0.09811524,  0.09640327,  0.09470556,  0.09302228,
1990      0.09135347,  0.08969907,  0.08805903,  0.08643326,
1991      0.08482183,  0.08322486,  0.08164249,  0.08007481,
1992      0.07852179,  0.07698335,  0.07545938,  0.07394984,
1993      0.07245482,  0.07097444,  0.06950883,  0.06805800,
1994      0.06662187,  0.06520031,  0.06379324,  0.06240065,
1995      0.06102266,  0.05965936,  0.05831084,  0.05697701,
1996      0.05565775,  0.05435290,  0.05306239,  0.05178628,
1997      0.05052464,  0.04927758,  0.04804510,  0.04682709,
1998      0.04562344,  0.04443405,  0.04325893,  0.04209822,
1999      0.04095208,  0.03982059,  0.03870371,  0.03760131,
2000      0.03651325,  0.03543944,  0.03437987,  0.03333454,
2001      0.03230348,  0.03128653,  0.03028332,  0.02929346,
2002      0.02831658,  0.02735252,  0.02640127,  0.02546283,
2003      0.02453725,  0.02362471,  0.02272547,  0.02183980,
2004      0.02096810,  0.02011108,  0.01926957,  0.01844439,
2005      0.01763565,  0.01684248,  0.01606394,  0.01529909,
2006      0.01454726,  0.01380802,  0.01308092,  0.01236569,
2007      0.01166273,  0.01097281,  0.01029671,  0.00963479,
2008      0.00898646,  0.00835089,  0.00772725,  0.00711521,
2009      0.00651513,  0.00592741,  0.00535249,  0.00479089,
2010      0.00424328,  0.00371041,  0.00319271,  0.00268947,
2011      0.00219928,  0.00172084,  0.00125271,  0.00079311,
2012      0.00034023, -0.00010786, -0.00055144, -0.00098865,
2013     -0.00141741, -0.00183557, -0.00224010, -0.00262725,
2014     -0.00299314, -0.00333475, -0.00365250, -0.00394867,
2015     -0.00422533, -0.00448528, -0.00473278, -0.00497252,
2016     -0.00520916, -0.00544584, -0.00568360, -0.00592326,
2017     -0.00616547, -0.00640861, -0.00664914, -0.00688354,
2018     -0.00710845, -0.00732136, -0.00752022, -0.00770289,
2019     -0.00786789, -0.00801521, -0.00814526, -0.00825839,
2020     -0.00835563, -0.00843882, -0.00850996, -0.00857097,
2021     -0.00862360, -0.00866943, -0.00871004, -0.00874688,
2022     -0.00878091, -0.00881277, -0.00884320, -0.00887248,
2023     -0.00890002, -0.00892494, -0.00894641, -0.00896355,
2024     -0.00897541, -0.00898104, -0.00897948, -0.00896990,
2025     -0.00895149, -0.00892346, -0.00888519, -0.00883670,
2026     -0.00877839, -0.00871058, -0.00863388, -0.00854936,
2027     -0.00845826, -0.00836179, -0.00826124, -0.00815807,
2028     -0.00805372, -0.00794953, -0.00784572, -0.00774156,
2029     -0.00763634, -0.00752929, -0.00741941, -0.00730556,
2030     -0.00718664, -0.00706184, -0.00693107, -0.00679443,
2031     -0.00665200, -0.00650428, -0.00635230, -0.00619718,
2032     -0.00603995, -0.00588133, -0.00572169, -0.00556143,
2033     -0.00540085, -0.00523988, -0.00507828, -0.00491582,
2034     -0.00475220, -0.00458693, -0.00441953, -0.00424950,
2035     -0.00407681, -0.00390204, -0.00372581, -0.00354874,
2036     -0.00337115, -0.00319318, -0.00301494, -0.00283652,
2037     -0.00265797, -0.00247934, -0.00230066, -0.00212197,
2038     -0.00194331, -0.00176471, -0.00158620, -0.00140787,
2039     -0.00122989, -0.00105244, -0.00087567, -0.00069976,
2040     -0.00052487, -0.00035115, -0.00017875, -0.00000782,
2041      0.00000779,  0.00017701,  0.00034552,  0.00051313,
2042      0.00067966,  0.00084492,  0.00100873,  0.00117093,
2043      0.00133133,  0.00148978,  0.00164611,  0.00180023,
2044      0.00195211,  0.00210172,  0.00224898,  0.00239383,
2045      0.00253618,  0.00267593,  0.00281306,  0.00294756,
2046      0.00307942,  0.00320864,  0.00333502,  0.00345816,
2047      0.00357762,  0.00369297,  0.00380414,  0.00391140,
2048      0.00401499,  0.00411524,  0.00421242,  0.00430678,
2049      0.00439859,  0.00448799,  0.00457487,  0.00465908,
2050      0.00474045,  0.00481857,  0.00489277,  0.00496235,
2051      0.00502666,  0.00508546,  0.00513877,  0.00518662,
2052      0.00522904,  0.00526648,  0.00529956,  0.00532895,
2053      0.00535532,  0.00537929,  0.00540141,  0.00542228,
2054      0.00544196,  0.00545981,  0.00547515,  0.00548726,
2055      0.00549542,  0.00549899,  0.00549732,  0.00548986,
2056      0.00547633,  0.00545664,  0.00543067,  0.00539849,
2057      0.00536061,  0.00531757,  0.00526993,  0.00521822,
2058      0.00516300,  0.00510485,  0.00504432,  0.00498194,
2059      0.00491822,  0.00485364,  0.00478862,  0.00472309,
2060      0.00465675,  0.00458939,  0.00452067,  0.00445003,
2061      0.00437688,  0.00430063,  0.00422062,  0.00413609,
2062      0.00404632,  0.00395060,  0.00384863,  0.00374044,
2063      0.00362600,  0.00350540,  0.00337934,  0.00324885,
2064      0.00311486,  0.00297849,  0.00284122,  0.00270458,
2065      0.00257013,  0.00243867,  0.00231005,  0.00218399,
2066      0.00206023,  0.00193766,  0.00181460,  0.00168938,
2067      0.00156050,  0.00142701,  0.00128830,  0.00114365,
2068      0.00099297,  0.00083752,  0.00067884,  0.00051845,
2069      0.00035760,  0.00019720,  0.00003813, -0.00011885,
2070     -0.00027375, -0.00042718, -0.00057975, -0.00073204,
2071     -0.00088453, -0.00103767, -0.00119192, -0.00134747,
2072     -0.00150411, -0.00166151, -0.00181932, -0.00197723,
2073     -0.00213493, -0.00229210, -0.00244849, -0.00260415,
2074     -0.00275928, -0.00291410, -0.00306879, -0.00322332,
2075     -0.00337759, -0.00353145, -0.00368470, -0.00383722,
2076     -0.00398892, -0.00413972, -0.00428967, -0.00443889,
2077     -0.00458749, -0.00473571, -0.00488366, -0.00503137,
2078     -0.00517887, -0.00532610, -0.00547302, -0.00561965,
2079     -0.00576598, -0.00591199, -0.00605766, -0.00620300,
2080     -0.00634801, -0.00649273, -0.00663727, -0.00678170,
2081     -0.00692617, -0.00707084, -0.00721583, -0.00736129,
2082     -0.00750735, -0.00765415, -0.00780184, -0.00795059,
2083     -0.00810058, -0.00825195, -0.00840487, -0.00855950,
2084     -0.00871607, -0.00887480, -0.00903596, -0.00919978,
2085     -0.00936650, -0.00953635, -0.00970931, -0.00988421,
2086     -0.01005916, -0.01023208, -0.01040130, -0.01056627,
2087     -0.01072678, -0.01088259, -0.01103348, -0.01117933,
2088     -0.01132004, -0.01145552, -0.01158573, -0.01171065,
2089     -0.01183025, -0.01194454, -0.01205352, -0.01215722,
2090     -0.01225572, -0.01234911, -0.01243749, -0.01252102,
2091     -0.01259985, -0.01267419, -0.01274437, -0.01281078,
2092     -0.01287379, -0.01293350, -0.01298972, -0.01304224,
2093     -0.01309086, -0.01313556, -0.01317644, -0.01321357,
2094     -0.01324707, -0.01327697, -0.01330334, -0.01332622,
2095     -0.01334570, -0.01336194, -0.01337510, -0.01338538,
2096     -0.01339276, -0.01339708, -0.01339816, -0.01339584,
2097     -0.01339014, -0.01338116, -0.01336903, -0.01335382,
2098     -0.01333545, -0.01331381, -0.01328876, -0.01326033,
2099     -0.01322880, -0.01319457, -0.01315806, -0.01311968,
2100     -0.01307987, -0.01303906, -0.01299769, -0.01295623,
2101     -0.01308207, -0.01304153, -0.01299802, -0.01295155,
2102     -0.01290215, -0.01284980, -0.01279450, -0.01273625,
2103     -0.01267501, -0.01261077, -0.01254347, -0.01247306,
2104     -0.01239950, -0.01232277, -0.01224304, -0.01216055,
2105     -0.01207554, -0.01198813, -0.01189829, -0.01180590,
2106     -0.01171090, -0.01161335, -0.01151352, -0.01141167,
2107     -0.01130807, -0.01120289, -0.01109626, -0.01098830,
2108     -0.01087916, -0.01076898, -0.01065793, -0.01054618,
2109     -0.01043380, -0.01032068, -0.01020670, -0.01009171,
2110     -0.00997585, -0.00985959, -0.00974338, -0.00962765,
2111     -0.00951273, -0.00939888, -0.00928634, -0.00917534,
2112     -0.00906604, -0.00895860, -0.00885313, -0.00874977,
2113     -0.00864862, -0.00854979, -0.00845337, -0.00835939,
2114     -0.00826785, -0.00817872, -0.00809195, -0.00800745,
2115     -0.00792506, -0.00784469, -0.00776588, -0.00768695,
2116     -0.00760568, -0.00752004, -0.00742875, -0.00733186,
2117     -0.00722976, -0.00712279, -0.00701130, -0.00689559,
2118     -0.00677595, -0.00665269, -0.00652610, -0.00639649,
2119     -0.00626417, -0.00612943, -0.00599252, -0.00585368,
2120     -0.00571315, -0.00557115, -0.00542792, -0.00528367,
2121     -0.00513864, -0.00499301, -0.00484693, -0.00470054,
2122     -0.00455395, -0.00440733, -0.00426086, -0.00411471,
2123     -0.00396904, -0.00382404, -0.00367991, -0.00353684,
2124     -0.00339502, -0.00325472, -0.00311618, -0.00297967,
2125     -0.00284531, -0.00271307, -0.00258290, -0.00245475,
2126     -0.00232860, -0.00220447, -0.00208236, -0.00196233,
2127     -0.00184450, -0.00172906, -0.00161620, -0.00150603,
2128     -0.00139852, -0.00129358, -0.00119112, -0.00109115,
2129     -0.00099375, -0.00089902, -0.00080705, -0.00071796,
2130     -0.00063185, -0.00054886, -0.00046904, -0.00039231,
2131     -0.00031845, -0.00024728, -0.00017860, -0.00011216,
2132     -0.00004771,  0.00001500,  0.00007600,  0.00013501,
2133      0.00019176,  0.00024595,  0.00029720,  0.00034504,
2134      0.00038902,  0.00042881,  0.00046456,  0.00049662,
2135      0.00052534,  0.00055114,  0.00057459,  0.00059629,
2136      0.00061684,  0.00063660,  0.00065568,  0.00067417,
2137      0.00069213,  0.00070935,  0.00072545,  0.00074005,
2138      0.00075283,  0.00076356,  0.00077209,  0.00077828,
2139      0.00078205,  0.00078350,  0.00078275,  0.00077992,
2140      0.00077520,  0.00076884,  0.00076108,  0.00075218,
2141      0.00074232,  0.00073170,  0.00072048,  0.00070881,
2142      0.00069680,  0.00068450,  0.00067201,  0.00065934,
2143      0.00064647,  0.00063335,  0.00061994,  0.00060621,
2144      0.00059211,  0.00057763,  0.00056274,  0.00054743,
2145      0.00053169,  0.00051553,  0.00049897,  0.00048206,
2146      0.00046487,  0.00044748,  0.00042996,  0.00041241,
2147      0.00039492,  0.00037759,  0.00036049,  0.00034371,
2148      0.00032732,  0.00031137,  0.00029587,  0.00028079,
2149      0.00026612,  0.00025183,  0.00023789,  0.00022428,
2150      0.00021097,  0.00019797,  0.00018530,  0.00017297,
2151      0.00016100,  0.00014942,  0.00013827,  0.00012757,
2152      0.00011736,  0.00010764,  0.00009841,  0.00008969,
2153      0.00008145,  0.00007369,  0.00006641,  0.00005958,
2154      0.00005320,  0.00004725,  0.00004171,  0.00003659,
2155      0.00003186,  0.00002752,  0.00002357,  0.00001999,
2156      0.00001679,  0.00001392,  0.00001140,  0.00000918,
2157      0.00000726,  0.00000562,  0.00000424,  0.00000309,
2158      0.00000217,  0.00000143,  0.00000088,  0.00000048,
2159      0.00000020,  0.00000004, -0.00000004, -0.00000006,
2160     -0.00000004, -0.00000000,  0.00000002,  0.00000000,
2161      0.00000000,  0.00000002, -0.00000000, -0.00000004,
2162     -0.00000005, -0.00000004,  0.00000004,  0.00000019,
2163      0.00000045,  0.00000083,  0.00000134,  0.00000201,
2164      0.00000285,  0.00000387,  0.00000510,  0.00000654,
2165      0.00000821,  0.00001011,  0.00001227,  0.00001468,
2166      0.00001735,  0.00002030,  0.00002352,  0.00002702,
2167      0.00003080,  0.00003486,  0.00003918,  0.00004379,
2168      0.00004866,  0.00005382,  0.00005924,  0.00006495,
2169      0.00007093,  0.00007719,  0.00008373,  0.00009053,
2170      0.00009758,  0.00010488,  0.00011240,  0.00012010,
2171      0.00012796,  0.00013596,  0.00014406,  0.00015226,
2172      0.00016053,  0.00016886,  0.00017725,  0.00018571,
2173      0.00019424,  0.00020286,  0.00021156,  0.00022037,
2174      0.00022928,  0.00023825,  0.00024724,  0.00025621,
2175      0.00026509,  0.00027385,  0.00028241,  0.00029072,
2176      0.00029874,  0.00030643,  0.00031374,  0.00032065,
2177      0.00032715,  0.00033325,  0.00033895,  0.00034425,
2178      0.00034917,  0.00035374,  0.00035796,  0.00036187,
2179      0.00036549,  0.00036883,  0.00037194,  0.00037479,
2180      0.00037736,  0.00037963,  0.00038154,  0.00038306,
2181      0.00038411,  0.00038462,  0.00038453,  0.00038373,
2182      0.00038213,  0.00037965,  0.00037621,  0.00037179,
2183      0.00036636,  0.00035989,  0.00035244,  0.00034407,
2184      0.00033488,  0.00032497,  0.00031449,  0.00030361,
2185      0.00029252,  0.00028133,  0.00027003,  0.00025862,
2186      0.00024706,  0.00023524,  0.00022297,  0.00021004,
2187      0.00019626,  0.00018150,  0.00016566,  0.00014864,
2188      0.00013041,  0.00011112,  0.00009096,  0.00007014,
2189      0.00004884,  0.00002718,  0.00000530, -0.00001667,
2190     -0.00003871, -0.00006090, -0.00008331, -0.00010600,
2191     -0.00012902, -0.00015244, -0.00017631, -0.00020065,
2192     -0.00022541, -0.00025052, -0.00027594, -0.00030159,
2193     -0.00032740, -0.00035332, -0.00037928, -0.00040527,
2194     -0.00043131, -0.00045741, -0.00048357, -0.00050978,
2195     -0.00053599, -0.00056217, -0.00058827, -0.00061423,
2196     -0.00064002, -0.00066562, -0.00069100, -0.00071616,
2197     -0.00074110, -0.00076584, -0.00079036, -0.00081465,
2198     -0.00083869, -0.00086245, -0.00088590, -0.00090901,
2199     -0.00093176, -0.00095413, -0.00097608, -0.00099758,
2200     -0.00101862, -0.00103918, -0.00105924, -0.00107879,
2201     -0.00109783, -0.00111635, -0.00113434, -0.00115181,
2202     -0.00116873, -0.00118510, -0.00120091, -0.00121615,
2203     -0.00123082, -0.00124490, -0.00125838, -0.00127125,
2204     -0.00128350, -0.00129511, -0.00130610, -0.00131643,
2205     -0.00132610, -0.00133509, -0.00134334, -0.00135069,
2206     -0.00135711, -0.00136272, -0.00136768, -0.00137225,
2207     -0.00137649, -0.00138042, -0.00138404, -0.00138737,
2208     -0.00139041, -0.00139317, -0.00139565, -0.00139785,
2209     -0.00139976, -0.00140137, -0.00140267, -0.00140366,
2210     -0.00140432, -0.00140464, -0.00140461, -0.00140423,
2211     -0.00140347, -0.00140235, -0.00140084, -0.00139894,
2212     -0.00139664, -0.00139388, -0.00139065, -0.00138694,
2213     -0.00138278, -0.00137818, -0.00137317, -0.00136772,
2214     -0.00136185, -0.00135556, -0.00134884, -0.00134170,
2215     -0.00133415, -0.00132619, -0.00131784, -0.00130908,
2216     -0.00129991, -0.00129031, -0.00128031, -0.00126990,
2217     -0.00125912, -0.00124797, -0.00123645, -0.00122458,
2218     -0.00121233, -0.00119972, -0.00118676, -0.00117347,
2219     -0.00115988, -0.00114605, -0.00113200, -0.00111778,
2220     -0.00110343, -0.00108898, -0.00107448, -0.00105995,
2221 };