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 FFmpeg.
7  *
8  * FFmpeg 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  * FFmpeg 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 FFmpeg; 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_128[] = {
48     12, 12, 12, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15
49 };
50 
51 const uint8_t ff_aac_pred_sfb_max[] = {
52     33, 33, 38, 40, 40, 40, 41, 41, 37, 37, 37, 34, 34
53 };
54 
55 const uint32_t ff_aac_scalefactor_code[121] = {
56     0x3ffe8, 0x3ffe6, 0x3ffe7, 0x3ffe5, 0x7fff5, 0x7fff1, 0x7ffed, 0x7fff6,
57     0x7ffee, 0x7ffef, 0x7fff0, 0x7fffc, 0x7fffd, 0x7ffff, 0x7fffe, 0x7fff7,
58     0x7fff8, 0x7fffb, 0x7fff9, 0x3ffe4, 0x7fffa, 0x3ffe3, 0x1ffef, 0x1fff0,
59     0x0fff5, 0x1ffee, 0x0fff2, 0x0fff3, 0x0fff4, 0x0fff1, 0x07ff6, 0x07ff7,
60     0x03ff9, 0x03ff5, 0x03ff7, 0x03ff3, 0x03ff6, 0x03ff2, 0x01ff7, 0x01ff5,
61     0x00ff9, 0x00ff7, 0x00ff6, 0x007f9, 0x00ff4, 0x007f8, 0x003f9, 0x003f7,
62     0x003f5, 0x001f8, 0x001f7, 0x000fa, 0x000f8, 0x000f6, 0x00079, 0x0003a,
63     0x00038, 0x0001a, 0x0000b, 0x00004, 0x00000, 0x0000a, 0x0000c, 0x0001b,
64     0x00039, 0x0003b, 0x00078, 0x0007a, 0x000f7, 0x000f9, 0x001f6, 0x001f9,
65     0x003f4, 0x003f6, 0x003f8, 0x007f5, 0x007f4, 0x007f6, 0x007f7, 0x00ff5,
66     0x00ff8, 0x01ff4, 0x01ff6, 0x01ff8, 0x03ff8, 0x03ff4, 0x0fff0, 0x07ff4,
67     0x0fff6, 0x07ff5, 0x3ffe2, 0x7ffd9, 0x7ffda, 0x7ffdb, 0x7ffdc, 0x7ffdd,
68     0x7ffde, 0x7ffd8, 0x7ffd2, 0x7ffd3, 0x7ffd4, 0x7ffd5, 0x7ffd6, 0x7fff2,
69     0x7ffdf, 0x7ffe7, 0x7ffe8, 0x7ffe9, 0x7ffea, 0x7ffeb, 0x7ffe6, 0x7ffe0,
70     0x7ffe1, 0x7ffe2, 0x7ffe3, 0x7ffe4, 0x7ffe5, 0x7ffd7, 0x7ffec, 0x7fff4,
71     0x7fff3,
72 };
73 
74 const uint8_t ff_aac_scalefactor_bits[121] = {
75     18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
76     19, 19, 19, 18, 19, 18, 17, 17, 16, 17, 16, 16, 16, 16, 15, 15,
77     14, 14, 14, 14, 14, 14, 13, 13, 12, 12, 12, 11, 12, 11, 10, 10,
78     10,  9,  9,  8,  8,  8,  7,  6,  6,  5,  4,  3,  1,  4,  4,  5,
79      6,  6,  7,  7,  8,  8,  9,  9, 10, 10, 10, 11, 11, 11, 11, 12,
80     12, 13, 13, 13, 14, 14, 16, 15, 16, 15, 18, 19, 19, 19, 19, 19,
81     19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
82     19, 19, 19, 19, 19, 19, 19, 19, 19,
83 };
84 
85 static const uint16_t codes1[81] = {
86     0x7f8, 0x1f1, 0x7fd, 0x3f5, 0x068, 0x3f0, 0x7f7, 0x1ec,
87     0x7f5, 0x3f1, 0x072, 0x3f4, 0x074, 0x011, 0x076, 0x1eb,
88     0x06c, 0x3f6, 0x7fc, 0x1e1, 0x7f1, 0x1f0, 0x061, 0x1f6,
89     0x7f2, 0x1ea, 0x7fb, 0x1f2, 0x069, 0x1ed, 0x077, 0x017,
90     0x06f, 0x1e6, 0x064, 0x1e5, 0x067, 0x015, 0x062, 0x012,
91     0x000, 0x014, 0x065, 0x016, 0x06d, 0x1e9, 0x063, 0x1e4,
92     0x06b, 0x013, 0x071, 0x1e3, 0x070, 0x1f3, 0x7fe, 0x1e7,
93     0x7f3, 0x1ef, 0x060, 0x1ee, 0x7f0, 0x1e2, 0x7fa, 0x3f3,
94     0x06a, 0x1e8, 0x075, 0x010, 0x073, 0x1f4, 0x06e, 0x3f7,
95     0x7f6, 0x1e0, 0x7f9, 0x3f2, 0x066, 0x1f5, 0x7ff, 0x1f7,
96     0x7f4,
97 };
98 
99 static const uint8_t bits1[81] = {
100     11,  9, 11, 10,  7, 10, 11,  9, 11, 10,  7, 10,  7,  5,  7,  9,
101      7, 10, 11,  9, 11,  9,  7,  9, 11,  9, 11,  9,  7,  9,  7,  5,
102      7,  9,  7,  9,  7,  5,  7,  5,  1,  5,  7,  5,  7,  9,  7,  9,
103      7,  5,  7,  9,  7,  9, 11,  9, 11,  9,  7,  9, 11,  9, 11, 10,
104      7,  9,  7,  5,  7,  9,  7, 10, 11,  9, 11, 10,  7,  9, 11,  9,
105     11,
106 };
107 
108 static const uint16_t codes2[81] = {
109     0x1f3, 0x06f, 0x1fd, 0x0eb, 0x023, 0x0ea, 0x1f7, 0x0e8,
110     0x1fa, 0x0f2, 0x02d, 0x070, 0x020, 0x006, 0x02b, 0x06e,
111     0x028, 0x0e9, 0x1f9, 0x066, 0x0f8, 0x0e7, 0x01b, 0x0f1,
112     0x1f4, 0x06b, 0x1f5, 0x0ec, 0x02a, 0x06c, 0x02c, 0x00a,
113     0x027, 0x067, 0x01a, 0x0f5, 0x024, 0x008, 0x01f, 0x009,
114     0x000, 0x007, 0x01d, 0x00b, 0x030, 0x0ef, 0x01c, 0x064,
115     0x01e, 0x00c, 0x029, 0x0f3, 0x02f, 0x0f0, 0x1fc, 0x071,
116     0x1f2, 0x0f4, 0x021, 0x0e6, 0x0f7, 0x068, 0x1f8, 0x0ee,
117     0x022, 0x065, 0x031, 0x002, 0x026, 0x0ed, 0x025, 0x06a,
118     0x1fb, 0x072, 0x1fe, 0x069, 0x02e, 0x0f6, 0x1ff, 0x06d,
119     0x1f6,
120 };
121 
122 static const uint8_t bits2[81] = {
123     9, 7, 9, 8, 6, 8, 9, 8, 9, 8, 6, 7, 6, 5, 6, 7,
124     6, 8, 9, 7, 8, 8, 6, 8, 9, 7, 9, 8, 6, 7, 6, 5,
125     6, 7, 6, 8, 6, 5, 6, 5, 3, 5, 6, 5, 6, 8, 6, 7,
126     6, 5, 6, 8, 6, 8, 9, 7, 9, 8, 6, 8, 8, 7, 9, 8,
127     6, 7, 6, 4, 6, 8, 6, 7, 9, 7, 9, 7, 6, 8, 9, 7,
128     9,
129 };
130 
131 static const uint16_t codes3[81] = {
132     0x0000, 0x0009, 0x00ef, 0x000b, 0x0019, 0x00f0, 0x01eb, 0x01e6,
133     0x03f2, 0x000a, 0x0035, 0x01ef, 0x0034, 0x0037, 0x01e9, 0x01ed,
134     0x01e7, 0x03f3, 0x01ee, 0x03ed, 0x1ffa, 0x01ec, 0x01f2, 0x07f9,
135     0x07f8, 0x03f8, 0x0ff8, 0x0008, 0x0038, 0x03f6, 0x0036, 0x0075,
136     0x03f1, 0x03eb, 0x03ec, 0x0ff4, 0x0018, 0x0076, 0x07f4, 0x0039,
137     0x0074, 0x03ef, 0x01f3, 0x01f4, 0x07f6, 0x01e8, 0x03ea, 0x1ffc,
138     0x00f2, 0x01f1, 0x0ffb, 0x03f5, 0x07f3, 0x0ffc, 0x00ee, 0x03f7,
139     0x7ffe, 0x01f0, 0x07f5, 0x7ffd, 0x1ffb, 0x3ffa, 0xffff, 0x00f1,
140     0x03f0, 0x3ffc, 0x01ea, 0x03ee, 0x3ffb, 0x0ff6, 0x0ffa, 0x7ffc,
141     0x07f2, 0x0ff5, 0xfffe, 0x03f4, 0x07f7, 0x7ffb, 0x0ff7, 0x0ff9,
142     0x7ffa,
143 };
144 
145 static const uint8_t bits3[81] = {
146      1,  4,  8,  4,  5,  8,  9,  9, 10,  4,  6,  9,  6,  6,  9,  9,
147      9, 10,  9, 10, 13,  9,  9, 11, 11, 10, 12,  4,  6, 10,  6,  7,
148     10, 10, 10, 12,  5,  7, 11,  6,  7, 10,  9,  9, 11,  9, 10, 13,
149      8,  9, 12, 10, 11, 12,  8, 10, 15,  9, 11, 15, 13, 14, 16,  8,
150     10, 14,  9, 10, 14, 12, 12, 15, 11, 12, 16, 10, 11, 15, 12, 12,
151     15,
152 };
153 
154 static const uint16_t codes4[81] = {
155     0x007, 0x016, 0x0f6, 0x018, 0x008, 0x0ef, 0x1ef, 0x0f3,
156     0x7f8, 0x019, 0x017, 0x0ed, 0x015, 0x001, 0x0e2, 0x0f0,
157     0x070, 0x3f0, 0x1ee, 0x0f1, 0x7fa, 0x0ee, 0x0e4, 0x3f2,
158     0x7f6, 0x3ef, 0x7fd, 0x005, 0x014, 0x0f2, 0x009, 0x004,
159     0x0e5, 0x0f4, 0x0e8, 0x3f4, 0x006, 0x002, 0x0e7, 0x003,
160     0x000, 0x06b, 0x0e3, 0x069, 0x1f3, 0x0eb, 0x0e6, 0x3f6,
161     0x06e, 0x06a, 0x1f4, 0x3ec, 0x1f0, 0x3f9, 0x0f5, 0x0ec,
162     0x7fb, 0x0ea, 0x06f, 0x3f7, 0x7f9, 0x3f3, 0xfff, 0x0e9,
163     0x06d, 0x3f8, 0x06c, 0x068, 0x1f5, 0x3ee, 0x1f2, 0x7f4,
164     0x7f7, 0x3f1, 0xffe, 0x3ed, 0x1f1, 0x7f5, 0x7fe, 0x3f5,
165     0x7fc,
166 };
167 
168 static const uint8_t bits4[81] = {
169      4,  5,  8,  5,  4,  8,  9,  8, 11,  5,  5,  8,  5,  4,  8,  8,
170      7, 10,  9,  8, 11,  8,  8, 10, 11, 10, 11,  4,  5,  8,  4,  4,
171      8,  8,  8, 10,  4,  4,  8,  4,  4,  7,  8,  7,  9,  8,  8, 10,
172      7,  7,  9, 10,  9, 10,  8,  8, 11,  8,  7, 10, 11, 10, 12,  8,
173      7, 10,  7,  7,  9, 10,  9, 11, 11, 10, 12, 10,  9, 11, 11, 10,
174     11,
175 };
176 
177 static const uint16_t codes5[81] = {
178     0x1fff, 0x0ff7, 0x07f4, 0x07e8, 0x03f1, 0x07ee, 0x07f9, 0x0ff8,
179     0x1ffd, 0x0ffd, 0x07f1, 0x03e8, 0x01e8, 0x00f0, 0x01ec, 0x03ee,
180     0x07f2, 0x0ffa, 0x0ff4, 0x03ef, 0x01f2, 0x00e8, 0x0070, 0x00ec,
181     0x01f0, 0x03ea, 0x07f3, 0x07eb, 0x01eb, 0x00ea, 0x001a, 0x0008,
182     0x0019, 0x00ee, 0x01ef, 0x07ed, 0x03f0, 0x00f2, 0x0073, 0x000b,
183     0x0000, 0x000a, 0x0071, 0x00f3, 0x07e9, 0x07ef, 0x01ee, 0x00ef,
184     0x0018, 0x0009, 0x001b, 0x00eb, 0x01e9, 0x07ec, 0x07f6, 0x03eb,
185     0x01f3, 0x00ed, 0x0072, 0x00e9, 0x01f1, 0x03ed, 0x07f7, 0x0ff6,
186     0x07f0, 0x03e9, 0x01ed, 0x00f1, 0x01ea, 0x03ec, 0x07f8, 0x0ff9,
187     0x1ffc, 0x0ffc, 0x0ff5, 0x07ea, 0x03f3, 0x03f2, 0x07f5, 0x0ffb,
188     0x1ffe,
189 };
190 
191 static const uint8_t bits5[81] = {
192     13, 12, 11, 11, 10, 11, 11, 12, 13, 12, 11, 10,  9,  8,  9, 10,
193     11, 12, 12, 10,  9,  8,  7,  8,  9, 10, 11, 11,  9,  8,  5,  4,
194      5,  8,  9, 11, 10,  8,  7,  4,  1,  4,  7,  8, 11, 11,  9,  8,
195      5,  4,  5,  8,  9, 11, 11, 10,  9,  8,  7,  8,  9, 10, 11, 12,
196     11, 10,  9,  8,  9, 10, 11, 12, 13, 12, 12, 11, 10, 10, 11, 12,
197     13,
198 };
199 
200 static const uint16_t codes6[81] = {
201     0x7fe, 0x3fd, 0x1f1, 0x1eb, 0x1f4, 0x1ea, 0x1f0, 0x3fc,
202     0x7fd, 0x3f6, 0x1e5, 0x0ea, 0x06c, 0x071, 0x068, 0x0f0,
203     0x1e6, 0x3f7, 0x1f3, 0x0ef, 0x032, 0x027, 0x028, 0x026,
204     0x031, 0x0eb, 0x1f7, 0x1e8, 0x06f, 0x02e, 0x008, 0x004,
205     0x006, 0x029, 0x06b, 0x1ee, 0x1ef, 0x072, 0x02d, 0x002,
206     0x000, 0x003, 0x02f, 0x073, 0x1fa, 0x1e7, 0x06e, 0x02b,
207     0x007, 0x001, 0x005, 0x02c, 0x06d, 0x1ec, 0x1f9, 0x0ee,
208     0x030, 0x024, 0x02a, 0x025, 0x033, 0x0ec, 0x1f2, 0x3f8,
209     0x1e4, 0x0ed, 0x06a, 0x070, 0x069, 0x074, 0x0f1, 0x3fa,
210     0x7ff, 0x3f9, 0x1f6, 0x1ed, 0x1f8, 0x1e9, 0x1f5, 0x3fb,
211     0x7fc,
212 };
213 
214 static const uint8_t bits6[81] = {
215     11, 10,  9,  9,  9,  9,  9, 10, 11, 10,  9,  8,  7,  7,  7,  8,
216      9, 10,  9,  8,  6,  6,  6,  6,  6,  8,  9,  9,  7,  6,  4,  4,
217      4,  6,  7,  9,  9,  7,  6,  4,  4,  4,  6,  7,  9,  9,  7,  6,
218      4,  4,  4,  6,  7,  9,  9,  8,  6,  6,  6,  6,  6,  8,  9, 10,
219      9,  8,  7,  7,  7,  7,  8, 10, 11, 10,  9,  9,  9,  9,  9, 10,
220     11,
221 };
222 
223 static const uint16_t codes7[64] = {
224     0x000, 0x005, 0x037, 0x074, 0x0f2, 0x1eb, 0x3ed, 0x7f7,
225     0x004, 0x00c, 0x035, 0x071, 0x0ec, 0x0ee, 0x1ee, 0x1f5,
226     0x036, 0x034, 0x072, 0x0ea, 0x0f1, 0x1e9, 0x1f3, 0x3f5,
227     0x073, 0x070, 0x0eb, 0x0f0, 0x1f1, 0x1f0, 0x3ec, 0x3fa,
228     0x0f3, 0x0ed, 0x1e8, 0x1ef, 0x3ef, 0x3f1, 0x3f9, 0x7fb,
229     0x1ed, 0x0ef, 0x1ea, 0x1f2, 0x3f3, 0x3f8, 0x7f9, 0x7fc,
230     0x3ee, 0x1ec, 0x1f4, 0x3f4, 0x3f7, 0x7f8, 0xffd, 0xffe,
231     0x7f6, 0x3f0, 0x3f2, 0x3f6, 0x7fa, 0x7fd, 0xffc, 0xfff,
232 };
233 
234 static const uint8_t bits7[64] = {
235      1,  3,  6,  7,  8,  9, 10, 11,  3,  4,  6,  7,  8,  8,  9,  9,
236      6,  6,  7,  8,  8,  9,  9, 10,  7,  7,  8,  8,  9,  9, 10, 10,
237      8,  8,  9,  9, 10, 10, 10, 11,  9,  8,  9,  9, 10, 10, 11, 11,
238     10,  9,  9, 10, 10, 11, 12, 12, 11, 10, 10, 10, 11, 11, 12, 12,
239 };
240 
241 static const uint16_t codes8[64] = {
242     0x00e, 0x005, 0x010, 0x030, 0x06f, 0x0f1, 0x1fa, 0x3fe,
243     0x003, 0x000, 0x004, 0x012, 0x02c, 0x06a, 0x075, 0x0f8,
244     0x00f, 0x002, 0x006, 0x014, 0x02e, 0x069, 0x072, 0x0f5,
245     0x02f, 0x011, 0x013, 0x02a, 0x032, 0x06c, 0x0ec, 0x0fa,
246     0x071, 0x02b, 0x02d, 0x031, 0x06d, 0x070, 0x0f2, 0x1f9,
247     0x0ef, 0x068, 0x033, 0x06b, 0x06e, 0x0ee, 0x0f9, 0x3fc,
248     0x1f8, 0x074, 0x073, 0x0ed, 0x0f0, 0x0f6, 0x1f6, 0x1fd,
249     0x3fd, 0x0f3, 0x0f4, 0x0f7, 0x1f7, 0x1fb, 0x1fc, 0x3ff,
250 };
251 
252 static const uint8_t bits8[64] = {
253      5,  4,  5,  6,  7,  8,  9, 10,  4,  3,  4,  5,  6,  7,  7,  8,
254      5,  4,  4,  5,  6,  7,  7,  8,  6,  5,  5,  6,  6,  7,  8,  8,
255      7,  6,  6,  6,  7,  7,  8,  9,  8,  7,  6,  7,  7,  8,  8, 10,
256      9,  7,  7,  8,  8,  8,  9,  9, 10,  8,  8,  8,  9,  9,  9, 10,
257 };
258 
259 static const uint16_t codes9[169] = {
260     0x0000, 0x0005, 0x0037, 0x00e7, 0x01de, 0x03ce, 0x03d9, 0x07c8,
261     0x07cd, 0x0fc8, 0x0fdd, 0x1fe4, 0x1fec, 0x0004, 0x000c, 0x0035,
262     0x0072, 0x00ea, 0x00ed, 0x01e2, 0x03d1, 0x03d3, 0x03e0, 0x07d8,
263     0x0fcf, 0x0fd5, 0x0036, 0x0034, 0x0071, 0x00e8, 0x00ec, 0x01e1,
264     0x03cf, 0x03dd, 0x03db, 0x07d0, 0x0fc7, 0x0fd4, 0x0fe4, 0x00e6,
265     0x0070, 0x00e9, 0x01dd, 0x01e3, 0x03d2, 0x03dc, 0x07cc, 0x07ca,
266     0x07de, 0x0fd8, 0x0fea, 0x1fdb, 0x01df, 0x00eb, 0x01dc, 0x01e6,
267     0x03d5, 0x03de, 0x07cb, 0x07dd, 0x07dc, 0x0fcd, 0x0fe2, 0x0fe7,
268     0x1fe1, 0x03d0, 0x01e0, 0x01e4, 0x03d6, 0x07c5, 0x07d1, 0x07db,
269     0x0fd2, 0x07e0, 0x0fd9, 0x0feb, 0x1fe3, 0x1fe9, 0x07c4, 0x01e5,
270     0x03d7, 0x07c6, 0x07cf, 0x07da, 0x0fcb, 0x0fda, 0x0fe3, 0x0fe9,
271     0x1fe6, 0x1ff3, 0x1ff7, 0x07d3, 0x03d8, 0x03e1, 0x07d4, 0x07d9,
272     0x0fd3, 0x0fde, 0x1fdd, 0x1fd9, 0x1fe2, 0x1fea, 0x1ff1, 0x1ff6,
273     0x07d2, 0x03d4, 0x03da, 0x07c7, 0x07d7, 0x07e2, 0x0fce, 0x0fdb,
274     0x1fd8, 0x1fee, 0x3ff0, 0x1ff4, 0x3ff2, 0x07e1, 0x03df, 0x07c9,
275     0x07d6, 0x0fca, 0x0fd0, 0x0fe5, 0x0fe6, 0x1feb, 0x1fef, 0x3ff3,
276     0x3ff4, 0x3ff5, 0x0fe0, 0x07ce, 0x07d5, 0x0fc6, 0x0fd1, 0x0fe1,
277     0x1fe0, 0x1fe8, 0x1ff0, 0x3ff1, 0x3ff8, 0x3ff6, 0x7ffc, 0x0fe8,
278     0x07df, 0x0fc9, 0x0fd7, 0x0fdc, 0x1fdc, 0x1fdf, 0x1fed, 0x1ff5,
279     0x3ff9, 0x3ffb, 0x7ffd, 0x7ffe, 0x1fe7, 0x0fcc, 0x0fd6, 0x0fdf,
280     0x1fde, 0x1fda, 0x1fe5, 0x1ff2, 0x3ffa, 0x3ff7, 0x3ffc, 0x3ffd,
281     0x7fff,
282 };
283 
284 static const uint8_t bits9[169] = {
285      1,  3,  6,  8,  9, 10, 10, 11, 11, 12, 12, 13, 13,  3,  4,  6,
286      7,  8,  8,  9, 10, 10, 10, 11, 12, 12,  6,  6,  7,  8,  8,  9,
287     10, 10, 10, 11, 12, 12, 12,  8,  7,  8,  9,  9, 10, 10, 11, 11,
288     11, 12, 12, 13,  9,  8,  9,  9, 10, 10, 11, 11, 11, 12, 12, 12,
289     13, 10,  9,  9, 10, 11, 11, 11, 12, 11, 12, 12, 13, 13, 11,  9,
290     10, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 11, 10, 10, 11, 11,
291     12, 12, 13, 13, 13, 13, 13, 13, 11, 10, 10, 11, 11, 11, 12, 12,
292     13, 13, 14, 13, 14, 11, 10, 11, 11, 12, 12, 12, 12, 13, 13, 14,
293     14, 14, 12, 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 14, 15, 12,
294     11, 12, 12, 12, 13, 13, 13, 13, 14, 14, 15, 15, 13, 12, 12, 12,
295     13, 13, 13, 13, 14, 14, 14, 14, 15,
296 };
297 
298 static const uint16_t codes10[169] = {
299     0x022, 0x008, 0x01d, 0x026, 0x05f, 0x0d3, 0x1cf, 0x3d0,
300     0x3d7, 0x3ed, 0x7f0, 0x7f6, 0xffd, 0x007, 0x000, 0x001,
301     0x009, 0x020, 0x054, 0x060, 0x0d5, 0x0dc, 0x1d4, 0x3cd,
302     0x3de, 0x7e7, 0x01c, 0x002, 0x006, 0x00c, 0x01e, 0x028,
303     0x05b, 0x0cd, 0x0d9, 0x1ce, 0x1dc, 0x3d9, 0x3f1, 0x025,
304     0x00b, 0x00a, 0x00d, 0x024, 0x057, 0x061, 0x0cc, 0x0dd,
305     0x1cc, 0x1de, 0x3d3, 0x3e7, 0x05d, 0x021, 0x01f, 0x023,
306     0x027, 0x059, 0x064, 0x0d8, 0x0df, 0x1d2, 0x1e2, 0x3dd,
307     0x3ee, 0x0d1, 0x055, 0x029, 0x056, 0x058, 0x062, 0x0ce,
308     0x0e0, 0x0e2, 0x1da, 0x3d4, 0x3e3, 0x7eb, 0x1c9, 0x05e,
309     0x05a, 0x05c, 0x063, 0x0ca, 0x0da, 0x1c7, 0x1ca, 0x1e0,
310     0x3db, 0x3e8, 0x7ec, 0x1e3, 0x0d2, 0x0cb, 0x0d0, 0x0d7,
311     0x0db, 0x1c6, 0x1d5, 0x1d8, 0x3ca, 0x3da, 0x7ea, 0x7f1,
312     0x1e1, 0x0d4, 0x0cf, 0x0d6, 0x0de, 0x0e1, 0x1d0, 0x1d6,
313     0x3d1, 0x3d5, 0x3f2, 0x7ee, 0x7fb, 0x3e9, 0x1cd, 0x1c8,
314     0x1cb, 0x1d1, 0x1d7, 0x1df, 0x3cf, 0x3e0, 0x3ef, 0x7e6,
315     0x7f8, 0xffa, 0x3eb, 0x1dd, 0x1d3, 0x1d9, 0x1db, 0x3d2,
316     0x3cc, 0x3dc, 0x3ea, 0x7ed, 0x7f3, 0x7f9, 0xff9, 0x7f2,
317     0x3ce, 0x1e4, 0x3cb, 0x3d8, 0x3d6, 0x3e2, 0x3e5, 0x7e8,
318     0x7f4, 0x7f5, 0x7f7, 0xffb, 0x7fa, 0x3ec, 0x3df, 0x3e1,
319     0x3e4, 0x3e6, 0x3f0, 0x7e9, 0x7ef, 0xff8, 0xffe, 0xffc,
320     0xfff,
321 };
322 
323 static const uint8_t bits10[169] = {
324      6,  5,  6,  6,  7,  8,  9, 10, 10, 10, 11, 11, 12,  5,  4,  4,
325      5,  6,  7,  7,  8,  8,  9, 10, 10, 11,  6,  4,  5,  5,  6,  6,
326      7,  8,  8,  9,  9, 10, 10,  6,  5,  5,  5,  6,  7,  7,  8,  8,
327      9,  9, 10, 10,  7,  6,  6,  6,  6,  7,  7,  8,  8,  9,  9, 10,
328     10,  8,  7,  6,  7,  7,  7,  8,  8,  8,  9, 10, 10, 11,  9,  7,
329      7,  7,  7,  8,  8,  9,  9,  9, 10, 10, 11,  9,  8,  8,  8,  8,
330      8,  9,  9,  9, 10, 10, 11, 11,  9,  8,  8,  8,  8,  8,  9,  9,
331     10, 10, 10, 11, 11, 10,  9,  9,  9,  9,  9,  9, 10, 10, 10, 11,
332     11, 12, 10,  9,  9,  9,  9, 10, 10, 10, 10, 11, 11, 11, 12, 11,
333     10,  9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 12, 11, 10, 10, 10,
334     10, 10, 10, 11, 11, 12, 12, 12, 12,
335 };
336 
337 static const uint16_t codes11[289] = {
338     0x000, 0x006, 0x019, 0x03d, 0x09c, 0x0c6, 0x1a7, 0x390,
339     0x3c2, 0x3df, 0x7e6, 0x7f3, 0xffb, 0x7ec, 0xffa, 0xffe,
340     0x38e, 0x005, 0x001, 0x008, 0x014, 0x037, 0x042, 0x092,
341     0x0af, 0x191, 0x1a5, 0x1b5, 0x39e, 0x3c0, 0x3a2, 0x3cd,
342     0x7d6, 0x0ae, 0x017, 0x007, 0x009, 0x018, 0x039, 0x040,
343     0x08e, 0x0a3, 0x0b8, 0x199, 0x1ac, 0x1c1, 0x3b1, 0x396,
344     0x3be, 0x3ca, 0x09d, 0x03c, 0x015, 0x016, 0x01a, 0x03b,
345     0x044, 0x091, 0x0a5, 0x0be, 0x196, 0x1ae, 0x1b9, 0x3a1,
346     0x391, 0x3a5, 0x3d5, 0x094, 0x09a, 0x036, 0x038, 0x03a,
347     0x041, 0x08c, 0x09b, 0x0b0, 0x0c3, 0x19e, 0x1ab, 0x1bc,
348     0x39f, 0x38f, 0x3a9, 0x3cf, 0x093, 0x0bf, 0x03e, 0x03f,
349     0x043, 0x045, 0x09e, 0x0a7, 0x0b9, 0x194, 0x1a2, 0x1ba,
350     0x1c3, 0x3a6, 0x3a7, 0x3bb, 0x3d4, 0x09f, 0x1a0, 0x08f,
351     0x08d, 0x090, 0x098, 0x0a6, 0x0b6, 0x0c4, 0x19f, 0x1af,
352     0x1bf, 0x399, 0x3bf, 0x3b4, 0x3c9, 0x3e7, 0x0a8, 0x1b6,
353     0x0ab, 0x0a4, 0x0aa, 0x0b2, 0x0c2, 0x0c5, 0x198, 0x1a4,
354     0x1b8, 0x38c, 0x3a4, 0x3c4, 0x3c6, 0x3dd, 0x3e8, 0x0ad,
355     0x3af, 0x192, 0x0bd, 0x0bc, 0x18e, 0x197, 0x19a, 0x1a3,
356     0x1b1, 0x38d, 0x398, 0x3b7, 0x3d3, 0x3d1, 0x3db, 0x7dd,
357     0x0b4, 0x3de, 0x1a9, 0x19b, 0x19c, 0x1a1, 0x1aa, 0x1ad,
358     0x1b3, 0x38b, 0x3b2, 0x3b8, 0x3ce, 0x3e1, 0x3e0, 0x7d2,
359     0x7e5, 0x0b7, 0x7e3, 0x1bb, 0x1a8, 0x1a6, 0x1b0, 0x1b2,
360     0x1b7, 0x39b, 0x39a, 0x3ba, 0x3b5, 0x3d6, 0x7d7, 0x3e4,
361     0x7d8, 0x7ea, 0x0ba, 0x7e8, 0x3a0, 0x1bd, 0x1b4, 0x38a,
362     0x1c4, 0x392, 0x3aa, 0x3b0, 0x3bc, 0x3d7, 0x7d4, 0x7dc,
363     0x7db, 0x7d5, 0x7f0, 0x0c1, 0x7fb, 0x3c8, 0x3a3, 0x395,
364     0x39d, 0x3ac, 0x3ae, 0x3c5, 0x3d8, 0x3e2, 0x3e6, 0x7e4,
365     0x7e7, 0x7e0, 0x7e9, 0x7f7, 0x190, 0x7f2, 0x393, 0x1be,
366     0x1c0, 0x394, 0x397, 0x3ad, 0x3c3, 0x3c1, 0x3d2, 0x7da,
367     0x7d9, 0x7df, 0x7eb, 0x7f4, 0x7fa, 0x195, 0x7f8, 0x3bd,
368     0x39c, 0x3ab, 0x3a8, 0x3b3, 0x3b9, 0x3d0, 0x3e3, 0x3e5,
369     0x7e2, 0x7de, 0x7ed, 0x7f1, 0x7f9, 0x7fc, 0x193, 0xffd,
370     0x3dc, 0x3b6, 0x3c7, 0x3cc, 0x3cb, 0x3d9, 0x3da, 0x7d3,
371     0x7e1, 0x7ee, 0x7ef, 0x7f5, 0x7f6, 0xffc, 0xfff, 0x19d,
372     0x1c2, 0x0b5, 0x0a1, 0x096, 0x097, 0x095, 0x099, 0x0a0,
373     0x0a2, 0x0ac, 0x0a9, 0x0b1, 0x0b3, 0x0bb, 0x0c0, 0x18f,
374     0x004,
375 };
376 
377 static const uint8_t bits11[289] = {
378      4,  5,  6,  7,  8,  8,  9, 10, 10, 10, 11, 11, 12, 11, 12, 12,
379     10,  5,  4,  5,  6,  7,  7,  8,  8,  9,  9,  9, 10, 10, 10, 10,
380     11,  8,  6,  5,  5,  6,  7,  7,  8,  8,  8,  9,  9,  9, 10, 10,
381     10, 10,  8,  7,  6,  6,  6,  7,  7,  8,  8,  8,  9,  9,  9, 10,
382     10, 10, 10,  8,  8,  7,  7,  7,  7,  8,  8,  8,  8,  9,  9,  9,
383     10, 10, 10, 10,  8,  8,  7,  7,  7,  7,  8,  8,  8,  9,  9,  9,
384      9, 10, 10, 10, 10,  8,  9,  8,  8,  8,  8,  8,  8,  8,  9,  9,
385      9, 10, 10, 10, 10, 10,  8,  9,  8,  8,  8,  8,  8,  8,  9,  9,
386      9, 10, 10, 10, 10, 10, 10,  8, 10,  9,  8,  8,  9,  9,  9,  9,
387      9, 10, 10, 10, 10, 10, 10, 11,  8, 10,  9,  9,  9,  9,  9,  9,
388      9, 10, 10, 10, 10, 10, 10, 11, 11,  8, 11,  9,  9,  9,  9,  9,
389      9, 10, 10, 10, 10, 10, 11, 10, 11, 11,  8, 11, 10,  9,  9, 10,
390      9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11,  8, 11, 10, 10, 10,
391     10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11,  9, 11, 10,  9,
392      9, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11,  9, 11, 10,
393     10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11,  9, 12,
394     10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 12, 12,  9,
395      9,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  9,
396      5,
397 };
398 
399 const uint16_t * const ff_aac_spectral_codes[11] = {
400     codes1,  codes2,  codes3, codes4, codes5, codes6, codes7, codes8,
401     codes9, codes10, codes11,
402 };
403 
404 const uint8_t * const ff_aac_spectral_bits[11] = {
405     bits1,  bits2,  bits3, bits4, bits5, bits6, bits7, bits8,
406     bits9, bits10, bits11,
407 };
408 
409 const uint16_t ff_aac_spectral_sizes[11] = {
410     81, 81, 81, 81, 81, 81, 64, 64, 169, 169, 289,
411 };
412 
413 /* NOTE:
414  * 64.0f is a special value indicating the existence of an escape code in the
415  * bitstream.
416  */
417 static const DECLARE_ALIGNED(16, float, codebook_vector0)[324] = {
418  -1.0000000, -1.0000000, -1.0000000, -1.0000000,
419  -1.0000000, -1.0000000, -1.0000000,  0.0000000,
420  -1.0000000, -1.0000000, -1.0000000,  1.0000000,
421  -1.0000000, -1.0000000,  0.0000000, -1.0000000,
422  -1.0000000, -1.0000000,  0.0000000,  0.0000000,
423  -1.0000000, -1.0000000,  0.0000000,  1.0000000,
424  -1.0000000, -1.0000000,  1.0000000, -1.0000000,
425  -1.0000000, -1.0000000,  1.0000000,  0.0000000,
426  -1.0000000, -1.0000000,  1.0000000,  1.0000000,
427  -1.0000000,  0.0000000, -1.0000000, -1.0000000,
428  -1.0000000,  0.0000000, -1.0000000,  0.0000000,
429  -1.0000000,  0.0000000, -1.0000000,  1.0000000,
430  -1.0000000,  0.0000000,  0.0000000, -1.0000000,
431  -1.0000000,  0.0000000,  0.0000000,  0.0000000,
432  -1.0000000,  0.0000000,  0.0000000,  1.0000000,
433  -1.0000000,  0.0000000,  1.0000000, -1.0000000,
434  -1.0000000,  0.0000000,  1.0000000,  0.0000000,
435  -1.0000000,  0.0000000,  1.0000000,  1.0000000,
436  -1.0000000,  1.0000000, -1.0000000, -1.0000000,
437  -1.0000000,  1.0000000, -1.0000000,  0.0000000,
438  -1.0000000,  1.0000000, -1.0000000,  1.0000000,
439  -1.0000000,  1.0000000,  0.0000000, -1.0000000,
440  -1.0000000,  1.0000000,  0.0000000,  0.0000000,
441  -1.0000000,  1.0000000,  0.0000000,  1.0000000,
442  -1.0000000,  1.0000000,  1.0000000, -1.0000000,
443  -1.0000000,  1.0000000,  1.0000000,  0.0000000,
444  -1.0000000,  1.0000000,  1.0000000,  1.0000000,
445   0.0000000, -1.0000000, -1.0000000, -1.0000000,
446   0.0000000, -1.0000000, -1.0000000,  0.0000000,
447   0.0000000, -1.0000000, -1.0000000,  1.0000000,
448   0.0000000, -1.0000000,  0.0000000, -1.0000000,
449   0.0000000, -1.0000000,  0.0000000,  0.0000000,
450   0.0000000, -1.0000000,  0.0000000,  1.0000000,
451   0.0000000, -1.0000000,  1.0000000, -1.0000000,
452   0.0000000, -1.0000000,  1.0000000,  0.0000000,
453   0.0000000, -1.0000000,  1.0000000,  1.0000000,
454   0.0000000,  0.0000000, -1.0000000, -1.0000000,
455   0.0000000,  0.0000000, -1.0000000,  0.0000000,
456   0.0000000,  0.0000000, -1.0000000,  1.0000000,
457   0.0000000,  0.0000000,  0.0000000, -1.0000000,
458   0.0000000,  0.0000000,  0.0000000,  0.0000000,
459   0.0000000,  0.0000000,  0.0000000,  1.0000000,
460   0.0000000,  0.0000000,  1.0000000, -1.0000000,
461   0.0000000,  0.0000000,  1.0000000,  0.0000000,
462   0.0000000,  0.0000000,  1.0000000,  1.0000000,
463   0.0000000,  1.0000000, -1.0000000, -1.0000000,
464   0.0000000,  1.0000000, -1.0000000,  0.0000000,
465   0.0000000,  1.0000000, -1.0000000,  1.0000000,
466   0.0000000,  1.0000000,  0.0000000, -1.0000000,
467   0.0000000,  1.0000000,  0.0000000,  0.0000000,
468   0.0000000,  1.0000000,  0.0000000,  1.0000000,
469   0.0000000,  1.0000000,  1.0000000, -1.0000000,
470   0.0000000,  1.0000000,  1.0000000,  0.0000000,
471   0.0000000,  1.0000000,  1.0000000,  1.0000000,
472   1.0000000, -1.0000000, -1.0000000, -1.0000000,
473   1.0000000, -1.0000000, -1.0000000,  0.0000000,
474   1.0000000, -1.0000000, -1.0000000,  1.0000000,
475   1.0000000, -1.0000000,  0.0000000, -1.0000000,
476   1.0000000, -1.0000000,  0.0000000,  0.0000000,
477   1.0000000, -1.0000000,  0.0000000,  1.0000000,
478   1.0000000, -1.0000000,  1.0000000, -1.0000000,
479   1.0000000, -1.0000000,  1.0000000,  0.0000000,
480   1.0000000, -1.0000000,  1.0000000,  1.0000000,
481   1.0000000,  0.0000000, -1.0000000, -1.0000000,
482   1.0000000,  0.0000000, -1.0000000,  0.0000000,
483   1.0000000,  0.0000000, -1.0000000,  1.0000000,
484   1.0000000,  0.0000000,  0.0000000, -1.0000000,
485   1.0000000,  0.0000000,  0.0000000,  0.0000000,
486   1.0000000,  0.0000000,  0.0000000,  1.0000000,
487   1.0000000,  0.0000000,  1.0000000, -1.0000000,
488   1.0000000,  0.0000000,  1.0000000,  0.0000000,
489   1.0000000,  0.0000000,  1.0000000,  1.0000000,
490   1.0000000,  1.0000000, -1.0000000, -1.0000000,
491   1.0000000,  1.0000000, -1.0000000,  0.0000000,
492   1.0000000,  1.0000000, -1.0000000,  1.0000000,
493   1.0000000,  1.0000000,  0.0000000, -1.0000000,
494   1.0000000,  1.0000000,  0.0000000,  0.0000000,
495   1.0000000,  1.0000000,  0.0000000,  1.0000000,
496   1.0000000,  1.0000000,  1.0000000, -1.0000000,
497   1.0000000,  1.0000000,  1.0000000,  0.0000000,
498   1.0000000,  1.0000000,  1.0000000,  1.0000000,
499 };
500 
501 static const DECLARE_ALIGNED(16, float, codebook_vector2)[324] = {
502   0.0000000,  0.0000000,  0.0000000,  0.0000000,
503   0.0000000,  0.0000000,  0.0000000,  1.0000000,
504   0.0000000,  0.0000000,  0.0000000,  2.5198421,
505   0.0000000,  0.0000000,  1.0000000,  0.0000000,
506   0.0000000,  0.0000000,  1.0000000,  1.0000000,
507   0.0000000,  0.0000000,  1.0000000,  2.5198421,
508   0.0000000,  0.0000000,  2.5198421,  0.0000000,
509   0.0000000,  0.0000000,  2.5198421,  1.0000000,
510   0.0000000,  0.0000000,  2.5198421,  2.5198421,
511   0.0000000,  1.0000000,  0.0000000,  0.0000000,
512   0.0000000,  1.0000000,  0.0000000,  1.0000000,
513   0.0000000,  1.0000000,  0.0000000,  2.5198421,
514   0.0000000,  1.0000000,  1.0000000,  0.0000000,
515   0.0000000,  1.0000000,  1.0000000,  1.0000000,
516   0.0000000,  1.0000000,  1.0000000,  2.5198421,
517   0.0000000,  1.0000000,  2.5198421,  0.0000000,
518   0.0000000,  1.0000000,  2.5198421,  1.0000000,
519   0.0000000,  1.0000000,  2.5198421,  2.5198421,
520   0.0000000,  2.5198421,  0.0000000,  0.0000000,
521   0.0000000,  2.5198421,  0.0000000,  1.0000000,
522   0.0000000,  2.5198421,  0.0000000,  2.5198421,
523   0.0000000,  2.5198421,  1.0000000,  0.0000000,
524   0.0000000,  2.5198421,  1.0000000,  1.0000000,
525   0.0000000,  2.5198421,  1.0000000,  2.5198421,
526   0.0000000,  2.5198421,  2.5198421,  0.0000000,
527   0.0000000,  2.5198421,  2.5198421,  1.0000000,
528   0.0000000,  2.5198421,  2.5198421,  2.5198421,
529   1.0000000,  0.0000000,  0.0000000,  0.0000000,
530   1.0000000,  0.0000000,  0.0000000,  1.0000000,
531   1.0000000,  0.0000000,  0.0000000,  2.5198421,
532   1.0000000,  0.0000000,  1.0000000,  0.0000000,
533   1.0000000,  0.0000000,  1.0000000,  1.0000000,
534   1.0000000,  0.0000000,  1.0000000,  2.5198421,
535   1.0000000,  0.0000000,  2.5198421,  0.0000000,
536   1.0000000,  0.0000000,  2.5198421,  1.0000000,
537   1.0000000,  0.0000000,  2.5198421,  2.5198421,
538   1.0000000,  1.0000000,  0.0000000,  0.0000000,
539   1.0000000,  1.0000000,  0.0000000,  1.0000000,
540   1.0000000,  1.0000000,  0.0000000,  2.5198421,
541   1.0000000,  1.0000000,  1.0000000,  0.0000000,
542   1.0000000,  1.0000000,  1.0000000,  1.0000000,
543   1.0000000,  1.0000000,  1.0000000,  2.5198421,
544   1.0000000,  1.0000000,  2.5198421,  0.0000000,
545   1.0000000,  1.0000000,  2.5198421,  1.0000000,
546   1.0000000,  1.0000000,  2.5198421,  2.5198421,
547   1.0000000,  2.5198421,  0.0000000,  0.0000000,
548   1.0000000,  2.5198421,  0.0000000,  1.0000000,
549   1.0000000,  2.5198421,  0.0000000,  2.5198421,
550   1.0000000,  2.5198421,  1.0000000,  0.0000000,
551   1.0000000,  2.5198421,  1.0000000,  1.0000000,
552   1.0000000,  2.5198421,  1.0000000,  2.5198421,
553   1.0000000,  2.5198421,  2.5198421,  0.0000000,
554   1.0000000,  2.5198421,  2.5198421,  1.0000000,
555   1.0000000,  2.5198421,  2.5198421,  2.5198421,
556   2.5198421,  0.0000000,  0.0000000,  0.0000000,
557   2.5198421,  0.0000000,  0.0000000,  1.0000000,
558   2.5198421,  0.0000000,  0.0000000,  2.5198421,
559   2.5198421,  0.0000000,  1.0000000,  0.0000000,
560   2.5198421,  0.0000000,  1.0000000,  1.0000000,
561   2.5198421,  0.0000000,  1.0000000,  2.5198421,
562   2.5198421,  0.0000000,  2.5198421,  0.0000000,
563   2.5198421,  0.0000000,  2.5198421,  1.0000000,
564   2.5198421,  0.0000000,  2.5198421,  2.5198421,
565   2.5198421,  1.0000000,  0.0000000,  0.0000000,
566   2.5198421,  1.0000000,  0.0000000,  1.0000000,
567   2.5198421,  1.0000000,  0.0000000,  2.5198421,
568   2.5198421,  1.0000000,  1.0000000,  0.0000000,
569   2.5198421,  1.0000000,  1.0000000,  1.0000000,
570   2.5198421,  1.0000000,  1.0000000,  2.5198421,
571   2.5198421,  1.0000000,  2.5198421,  0.0000000,
572   2.5198421,  1.0000000,  2.5198421,  1.0000000,
573   2.5198421,  1.0000000,  2.5198421,  2.5198421,
574   2.5198421,  2.5198421,  0.0000000,  0.0000000,
575   2.5198421,  2.5198421,  0.0000000,  1.0000000,
576   2.5198421,  2.5198421,  0.0000000,  2.5198421,
577   2.5198421,  2.5198421,  1.0000000,  0.0000000,
578   2.5198421,  2.5198421,  1.0000000,  1.0000000,
579   2.5198421,  2.5198421,  1.0000000,  2.5198421,
580   2.5198421,  2.5198421,  2.5198421,  0.0000000,
581   2.5198421,  2.5198421,  2.5198421,  1.0000000,
582   2.5198421,  2.5198421,  2.5198421,  2.5198421,
583 };
584 
585 static const DECLARE_ALIGNED(16, float, codebook_vector4)[162] = {
586  -6.3496042, -6.3496042, -6.3496042, -4.3267487,
587  -6.3496042, -2.5198421, -6.3496042, -1.0000000,
588  -6.3496042,  0.0000000, -6.3496042,  1.0000000,
589  -6.3496042,  2.5198421, -6.3496042,  4.3267487,
590  -6.3496042,  6.3496042, -4.3267487, -6.3496042,
591  -4.3267487, -4.3267487, -4.3267487, -2.5198421,
592  -4.3267487, -1.0000000, -4.3267487,  0.0000000,
593  -4.3267487,  1.0000000, -4.3267487,  2.5198421,
594  -4.3267487,  4.3267487, -4.3267487,  6.3496042,
595  -2.5198421, -6.3496042, -2.5198421, -4.3267487,
596  -2.5198421, -2.5198421, -2.5198421, -1.0000000,
597  -2.5198421,  0.0000000, -2.5198421,  1.0000000,
598  -2.5198421,  2.5198421, -2.5198421,  4.3267487,
599  -2.5198421,  6.3496042, -1.0000000, -6.3496042,
600  -1.0000000, -4.3267487, -1.0000000, -2.5198421,
601  -1.0000000, -1.0000000, -1.0000000,  0.0000000,
602  -1.0000000,  1.0000000, -1.0000000,  2.5198421,
603  -1.0000000,  4.3267487, -1.0000000,  6.3496042,
604   0.0000000, -6.3496042,  0.0000000, -4.3267487,
605   0.0000000, -2.5198421,  0.0000000, -1.0000000,
606   0.0000000,  0.0000000,  0.0000000,  1.0000000,
607   0.0000000,  2.5198421,  0.0000000,  4.3267487,
608   0.0000000,  6.3496042,  1.0000000, -6.3496042,
609   1.0000000, -4.3267487,  1.0000000, -2.5198421,
610   1.0000000, -1.0000000,  1.0000000,  0.0000000,
611   1.0000000,  1.0000000,  1.0000000,  2.5198421,
612   1.0000000,  4.3267487,  1.0000000,  6.3496042,
613   2.5198421, -6.3496042,  2.5198421, -4.3267487,
614   2.5198421, -2.5198421,  2.5198421, -1.0000000,
615   2.5198421,  0.0000000,  2.5198421,  1.0000000,
616   2.5198421,  2.5198421,  2.5198421,  4.3267487,
617   2.5198421,  6.3496042,  4.3267487, -6.3496042,
618   4.3267487, -4.3267487,  4.3267487, -2.5198421,
619   4.3267487, -1.0000000,  4.3267487,  0.0000000,
620   4.3267487,  1.0000000,  4.3267487,  2.5198421,
621   4.3267487,  4.3267487,  4.3267487,  6.3496042,
622   6.3496042, -6.3496042,  6.3496042, -4.3267487,
623   6.3496042, -2.5198421,  6.3496042, -1.0000000,
624   6.3496042,  0.0000000,  6.3496042,  1.0000000,
625   6.3496042,  2.5198421,  6.3496042,  4.3267487,
626   6.3496042,  6.3496042,
627 };
628 
629 static const DECLARE_ALIGNED(16, float, codebook_vector6)[128] = {
630   0.0000000,  0.0000000,  0.0000000,  1.0000000,
631   0.0000000,  2.5198421,  0.0000000,  4.3267487,
632   0.0000000,  6.3496042,  0.0000000,  8.5498797,
633   0.0000000, 10.9027236,  0.0000000, 13.3905183,
634   1.0000000,  0.0000000,  1.0000000,  1.0000000,
635   1.0000000,  2.5198421,  1.0000000,  4.3267487,
636   1.0000000,  6.3496042,  1.0000000,  8.5498797,
637   1.0000000, 10.9027236,  1.0000000, 13.3905183,
638   2.5198421,  0.0000000,  2.5198421,  1.0000000,
639   2.5198421,  2.5198421,  2.5198421,  4.3267487,
640   2.5198421,  6.3496042,  2.5198421,  8.5498797,
641   2.5198421, 10.9027236,  2.5198421, 13.3905183,
642   4.3267487,  0.0000000,  4.3267487,  1.0000000,
643   4.3267487,  2.5198421,  4.3267487,  4.3267487,
644   4.3267487,  6.3496042,  4.3267487,  8.5498797,
645   4.3267487, 10.9027236,  4.3267487, 13.3905183,
646   6.3496042,  0.0000000,  6.3496042,  1.0000000,
647   6.3496042,  2.5198421,  6.3496042,  4.3267487,
648   6.3496042,  6.3496042,  6.3496042,  8.5498797,
649   6.3496042, 10.9027236,  6.3496042, 13.3905183,
650   8.5498797,  0.0000000,  8.5498797,  1.0000000,
651   8.5498797,  2.5198421,  8.5498797,  4.3267487,
652   8.5498797,  6.3496042,  8.5498797,  8.5498797,
653   8.5498797, 10.9027236,  8.5498797, 13.3905183,
654  10.9027236,  0.0000000, 10.9027236,  1.0000000,
655  10.9027236,  2.5198421, 10.9027236,  4.3267487,
656  10.9027236,  6.3496042, 10.9027236,  8.5498797,
657  10.9027236, 10.9027236, 10.9027236, 13.3905183,
658  13.3905183,  0.0000000, 13.3905183,  1.0000000,
659  13.3905183,  2.5198421, 13.3905183,  4.3267487,
660  13.3905183,  6.3496042, 13.3905183,  8.5498797,
661  13.3905183, 10.9027236, 13.3905183, 13.3905183,
662 };
663 
664 static const DECLARE_ALIGNED(16, float, codebook_vector8)[338] = {
665   0.0000000,  0.0000000,  0.0000000,  1.0000000,
666   0.0000000,  2.5198421,  0.0000000,  4.3267487,
667   0.0000000,  6.3496042,  0.0000000,  8.5498797,
668   0.0000000, 10.9027236,  0.0000000, 13.3905183,
669   0.0000000, 16.0000000,  0.0000000, 18.7207544,
670   0.0000000, 21.5443469,  0.0000000, 24.4637810,
671   0.0000000, 27.4731418,  1.0000000,  0.0000000,
672   1.0000000,  1.0000000,  1.0000000,  2.5198421,
673   1.0000000,  4.3267487,  1.0000000,  6.3496042,
674   1.0000000,  8.5498797,  1.0000000, 10.9027236,
675   1.0000000, 13.3905183,  1.0000000, 16.0000000,
676   1.0000000, 18.7207544,  1.0000000, 21.5443469,
677   1.0000000, 24.4637810,  1.0000000, 27.4731418,
678   2.5198421,  0.0000000,  2.5198421,  1.0000000,
679   2.5198421,  2.5198421,  2.5198421,  4.3267487,
680   2.5198421,  6.3496042,  2.5198421,  8.5498797,
681   2.5198421, 10.9027236,  2.5198421, 13.3905183,
682   2.5198421, 16.0000000,  2.5198421, 18.7207544,
683   2.5198421, 21.5443469,  2.5198421, 24.4637810,
684   2.5198421, 27.4731418,  4.3267487,  0.0000000,
685   4.3267487,  1.0000000,  4.3267487,  2.5198421,
686   4.3267487,  4.3267487,  4.3267487,  6.3496042,
687   4.3267487,  8.5498797,  4.3267487, 10.9027236,
688   4.3267487, 13.3905183,  4.3267487, 16.0000000,
689   4.3267487, 18.7207544,  4.3267487, 21.5443469,
690   4.3267487, 24.4637810,  4.3267487, 27.4731418,
691   6.3496042,  0.0000000,  6.3496042,  1.0000000,
692   6.3496042,  2.5198421,  6.3496042,  4.3267487,
693   6.3496042,  6.3496042,  6.3496042,  8.5498797,
694   6.3496042, 10.9027236,  6.3496042, 13.3905183,
695   6.3496042, 16.0000000,  6.3496042, 18.7207544,
696   6.3496042, 21.5443469,  6.3496042, 24.4637810,
697   6.3496042, 27.4731418,  8.5498797,  0.0000000,
698   8.5498797,  1.0000000,  8.5498797,  2.5198421,
699   8.5498797,  4.3267487,  8.5498797,  6.3496042,
700   8.5498797,  8.5498797,  8.5498797, 10.9027236,
701   8.5498797, 13.3905183,  8.5498797, 16.0000000,
702   8.5498797, 18.7207544,  8.5498797, 21.5443469,
703   8.5498797, 24.4637810,  8.5498797, 27.4731418,
704  10.9027236,  0.0000000, 10.9027236,  1.0000000,
705  10.9027236,  2.5198421, 10.9027236,  4.3267487,
706  10.9027236,  6.3496042, 10.9027236,  8.5498797,
707  10.9027236, 10.9027236, 10.9027236, 13.3905183,
708  10.9027236, 16.0000000, 10.9027236, 18.7207544,
709  10.9027236, 21.5443469, 10.9027236, 24.4637810,
710  10.9027236, 27.4731418, 13.3905183,  0.0000000,
711  13.3905183,  1.0000000, 13.3905183,  2.5198421,
712  13.3905183,  4.3267487, 13.3905183,  6.3496042,
713  13.3905183,  8.5498797, 13.3905183, 10.9027236,
714  13.3905183, 13.3905183, 13.3905183, 16.0000000,
715  13.3905183, 18.7207544, 13.3905183, 21.5443469,
716  13.3905183, 24.4637810, 13.3905183, 27.4731418,
717  16.0000000,  0.0000000, 16.0000000,  1.0000000,
718  16.0000000,  2.5198421, 16.0000000,  4.3267487,
719  16.0000000,  6.3496042, 16.0000000,  8.5498797,
720  16.0000000, 10.9027236, 16.0000000, 13.3905183,
721  16.0000000, 16.0000000, 16.0000000, 18.7207544,
722  16.0000000, 21.5443469, 16.0000000, 24.4637810,
723  16.0000000, 27.4731418, 18.7207544,  0.0000000,
724  18.7207544,  1.0000000, 18.7207544,  2.5198421,
725  18.7207544,  4.3267487, 18.7207544,  6.3496042,
726  18.7207544,  8.5498797, 18.7207544, 10.9027236,
727  18.7207544, 13.3905183, 18.7207544, 16.0000000,
728  18.7207544, 18.7207544, 18.7207544, 21.5443469,
729  18.7207544, 24.4637810, 18.7207544, 27.4731418,
730  21.5443469,  0.0000000, 21.5443469,  1.0000000,
731  21.5443469,  2.5198421, 21.5443469,  4.3267487,
732  21.5443469,  6.3496042, 21.5443469,  8.5498797,
733  21.5443469, 10.9027236, 21.5443469, 13.3905183,
734  21.5443469, 16.0000000, 21.5443469, 18.7207544,
735  21.5443469, 21.5443469, 21.5443469, 24.4637810,
736  21.5443469, 27.4731418, 24.4637810,  0.0000000,
737  24.4637810,  1.0000000, 24.4637810,  2.5198421,
738  24.4637810,  4.3267487, 24.4637810,  6.3496042,
739  24.4637810,  8.5498797, 24.4637810, 10.9027236,
740  24.4637810, 13.3905183, 24.4637810, 16.0000000,
741  24.4637810, 18.7207544, 24.4637810, 21.5443469,
742  24.4637810, 24.4637810, 24.4637810, 27.4731418,
743  27.4731418,  0.0000000, 27.4731418,  1.0000000,
744  27.4731418,  2.5198421, 27.4731418,  4.3267487,
745  27.4731418,  6.3496042, 27.4731418,  8.5498797,
746  27.4731418, 10.9027236, 27.4731418, 13.3905183,
747  27.4731418, 16.0000000, 27.4731418, 18.7207544,
748  27.4731418, 21.5443469, 27.4731418, 24.4637810,
749  27.4731418, 27.4731418,
750 };
751 
752 static const DECLARE_ALIGNED(16, float, codebook_vector10)[578] = {
753   0.0000000,  0.0000000,  0.0000000,  1.0000000,
754   0.0000000,  2.5198421,  0.0000000,  4.3267487,
755   0.0000000,  6.3496042,  0.0000000,  8.5498797,
756   0.0000000, 10.9027236,  0.0000000, 13.3905183,
757   0.0000000, 16.0000000,  0.0000000, 18.7207544,
758   0.0000000, 21.5443469,  0.0000000, 24.4637810,
759   0.0000000, 27.4731418,  0.0000000, 30.5673509,
760   0.0000000, 33.7419917,  0.0000000, 36.9931811,
761   0.0000000,      64.0f,  1.0000000,  0.0000000,
762   1.0000000,  1.0000000,  1.0000000,  2.5198421,
763   1.0000000,  4.3267487,  1.0000000,  6.3496042,
764   1.0000000,  8.5498797,  1.0000000, 10.9027236,
765   1.0000000, 13.3905183,  1.0000000, 16.0000000,
766   1.0000000, 18.7207544,  1.0000000, 21.5443469,
767   1.0000000, 24.4637810,  1.0000000, 27.4731418,
768   1.0000000, 30.5673509,  1.0000000, 33.7419917,
769   1.0000000, 36.9931811,  1.0000000,      64.0f,
770   2.5198421,  0.0000000,  2.5198421,  1.0000000,
771   2.5198421,  2.5198421,  2.5198421,  4.3267487,
772   2.5198421,  6.3496042,  2.5198421,  8.5498797,
773   2.5198421, 10.9027236,  2.5198421, 13.3905183,
774   2.5198421, 16.0000000,  2.5198421, 18.7207544,
775   2.5198421, 21.5443469,  2.5198421, 24.4637810,
776   2.5198421, 27.4731418,  2.5198421, 30.5673509,
777   2.5198421, 33.7419917,  2.5198421, 36.9931811,
778   2.5198421,      64.0f,  4.3267487,  0.0000000,
779   4.3267487,  1.0000000,  4.3267487,  2.5198421,
780   4.3267487,  4.3267487,  4.3267487,  6.3496042,
781   4.3267487,  8.5498797,  4.3267487, 10.9027236,
782   4.3267487, 13.3905183,  4.3267487, 16.0000000,
783   4.3267487, 18.7207544,  4.3267487, 21.5443469,
784   4.3267487, 24.4637810,  4.3267487, 27.4731418,
785   4.3267487, 30.5673509,  4.3267487, 33.7419917,
786   4.3267487, 36.9931811,  4.3267487,      64.0f,
787   6.3496042,  0.0000000,  6.3496042,  1.0000000,
788   6.3496042,  2.5198421,  6.3496042,  4.3267487,
789   6.3496042,  6.3496042,  6.3496042,  8.5498797,
790   6.3496042, 10.9027236,  6.3496042, 13.3905183,
791   6.3496042, 16.0000000,  6.3496042, 18.7207544,
792   6.3496042, 21.5443469,  6.3496042, 24.4637810,
793   6.3496042, 27.4731418,  6.3496042, 30.5673509,
794   6.3496042, 33.7419917,  6.3496042, 36.9931811,
795   6.3496042,      64.0f,  8.5498797,  0.0000000,
796   8.5498797,  1.0000000,  8.5498797,  2.5198421,
797   8.5498797,  4.3267487,  8.5498797,  6.3496042,
798   8.5498797,  8.5498797,  8.5498797, 10.9027236,
799   8.5498797, 13.3905183,  8.5498797, 16.0000000,
800   8.5498797, 18.7207544,  8.5498797, 21.5443469,
801   8.5498797, 24.4637810,  8.5498797, 27.4731418,
802   8.5498797, 30.5673509,  8.5498797, 33.7419917,
803   8.5498797, 36.9931811,  8.5498797,      64.0f,
804  10.9027236,  0.0000000, 10.9027236,  1.0000000,
805  10.9027236,  2.5198421, 10.9027236,  4.3267487,
806  10.9027236,  6.3496042, 10.9027236,  8.5498797,
807  10.9027236, 10.9027236, 10.9027236, 13.3905183,
808  10.9027236, 16.0000000, 10.9027236, 18.7207544,
809  10.9027236, 21.5443469, 10.9027236, 24.4637810,
810  10.9027236, 27.4731418, 10.9027236, 30.5673509,
811  10.9027236, 33.7419917, 10.9027236, 36.9931811,
812  10.9027236,      64.0f, 13.3905183,  0.0000000,
813  13.3905183,  1.0000000, 13.3905183,  2.5198421,
814  13.3905183,  4.3267487, 13.3905183,  6.3496042,
815  13.3905183,  8.5498797, 13.3905183, 10.9027236,
816  13.3905183, 13.3905183, 13.3905183, 16.0000000,
817  13.3905183, 18.7207544, 13.3905183, 21.5443469,
818  13.3905183, 24.4637810, 13.3905183, 27.4731418,
819  13.3905183, 30.5673509, 13.3905183, 33.7419917,
820  13.3905183, 36.9931811, 13.3905183,      64.0f,
821  16.0000000,  0.0000000, 16.0000000,  1.0000000,
822  16.0000000,  2.5198421, 16.0000000,  4.3267487,
823  16.0000000,  6.3496042, 16.0000000,  8.5498797,
824  16.0000000, 10.9027236, 16.0000000, 13.3905183,
825  16.0000000, 16.0000000, 16.0000000, 18.7207544,
826  16.0000000, 21.5443469, 16.0000000, 24.4637810,
827  16.0000000, 27.4731418, 16.0000000, 30.5673509,
828  16.0000000, 33.7419917, 16.0000000, 36.9931811,
829  16.0000000,      64.0f, 18.7207544,  0.0000000,
830  18.7207544,  1.0000000, 18.7207544,  2.5198421,
831  18.7207544,  4.3267487, 18.7207544,  6.3496042,
832  18.7207544,  8.5498797, 18.7207544, 10.9027236,
833  18.7207544, 13.3905183, 18.7207544, 16.0000000,
834  18.7207544, 18.7207544, 18.7207544, 21.5443469,
835  18.7207544, 24.4637810, 18.7207544, 27.4731418,
836  18.7207544, 30.5673509, 18.7207544, 33.7419917,
837  18.7207544, 36.9931811, 18.7207544,      64.0f,
838  21.5443469,  0.0000000, 21.5443469,  1.0000000,
839  21.5443469,  2.5198421, 21.5443469,  4.3267487,
840  21.5443469,  6.3496042, 21.5443469,  8.5498797,
841  21.5443469, 10.9027236, 21.5443469, 13.3905183,
842  21.5443469, 16.0000000, 21.5443469, 18.7207544,
843  21.5443469, 21.5443469, 21.5443469, 24.4637810,
844  21.5443469, 27.4731418, 21.5443469, 30.5673509,
845  21.5443469, 33.7419917, 21.5443469, 36.9931811,
846  21.5443469,      64.0f, 24.4637810,  0.0000000,
847  24.4637810,  1.0000000, 24.4637810,  2.5198421,
848  24.4637810,  4.3267487, 24.4637810,  6.3496042,
849  24.4637810,  8.5498797, 24.4637810, 10.9027236,
850  24.4637810, 13.3905183, 24.4637810, 16.0000000,
851  24.4637810, 18.7207544, 24.4637810, 21.5443469,
852  24.4637810, 24.4637810, 24.4637810, 27.4731418,
853  24.4637810, 30.5673509, 24.4637810, 33.7419917,
854  24.4637810, 36.9931811, 24.4637810,      64.0f,
855  27.4731418,  0.0000000, 27.4731418,  1.0000000,
856  27.4731418,  2.5198421, 27.4731418,  4.3267487,
857  27.4731418,  6.3496042, 27.4731418,  8.5498797,
858  27.4731418, 10.9027236, 27.4731418, 13.3905183,
859  27.4731418, 16.0000000, 27.4731418, 18.7207544,
860  27.4731418, 21.5443469, 27.4731418, 24.4637810,
861  27.4731418, 27.4731418, 27.4731418, 30.5673509,
862  27.4731418, 33.7419917, 27.4731418, 36.9931811,
863  27.4731418,      64.0f, 30.5673509,  0.0000000,
864  30.5673509,  1.0000000, 30.5673509,  2.5198421,
865  30.5673509,  4.3267487, 30.5673509,  6.3496042,
866  30.5673509,  8.5498797, 30.5673509, 10.9027236,
867  30.5673509, 13.3905183, 30.5673509, 16.0000000,
868  30.5673509, 18.7207544, 30.5673509, 21.5443469,
869  30.5673509, 24.4637810, 30.5673509, 27.4731418,
870  30.5673509, 30.5673509, 30.5673509, 33.7419917,
871  30.5673509, 36.9931811, 30.5673509,      64.0f,
872  33.7419917,  0.0000000, 33.7419917,  1.0000000,
873  33.7419917,  2.5198421, 33.7419917,  4.3267487,
874  33.7419917,  6.3496042, 33.7419917,  8.5498797,
875  33.7419917, 10.9027236, 33.7419917, 13.3905183,
876  33.7419917, 16.0000000, 33.7419917, 18.7207544,
877  33.7419917, 21.5443469, 33.7419917, 24.4637810,
878  33.7419917, 27.4731418, 33.7419917, 30.5673509,
879  33.7419917, 33.7419917, 33.7419917, 36.9931811,
880  33.7419917,      64.0f, 36.9931811,  0.0000000,
881  36.9931811,  1.0000000, 36.9931811,  2.5198421,
882  36.9931811,  4.3267487, 36.9931811,  6.3496042,
883  36.9931811,  8.5498797, 36.9931811, 10.9027236,
884  36.9931811, 13.3905183, 36.9931811, 16.0000000,
885  36.9931811, 18.7207544, 36.9931811, 21.5443469,
886  36.9931811, 24.4637810, 36.9931811, 27.4731418,
887  36.9931811, 30.5673509, 36.9931811, 33.7419917,
888  36.9931811, 36.9931811, 36.9931811,      64.0f,
889       64.0f,  0.0000000,      64.0f,  1.0000000,
890       64.0f,  2.5198421,      64.0f,  4.3267487,
891       64.0f,  6.3496042,      64.0f,  8.5498797,
892       64.0f, 10.9027236,      64.0f, 13.3905183,
893       64.0f, 16.0000000,      64.0f, 18.7207544,
894       64.0f, 21.5443469,      64.0f, 24.4637810,
895       64.0f, 27.4731418,      64.0f, 30.5673509,
896       64.0f, 33.7419917,      64.0f, 36.9931811,
897       64.0f,      64.0f,
898 };
899 
900 const float * const ff_aac_codebook_vectors[] = {
901     codebook_vector0, codebook_vector0, codebook_vector2,
902     codebook_vector2, codebook_vector4, codebook_vector4,
903     codebook_vector6, codebook_vector6, codebook_vector8,
904     codebook_vector8, codebook_vector10,
905 };
906 
907 static const float codebook_vector0_vals[] = {
908    -1.0000000,  0.0000000,  1.0000000
909 };
910 
911 /*
912  * bits  0:1, 2:3, 4:5, 6:7  index into _vals array
913  *       8:11                number of non-zero values
914  *      12:15                bit mask of non-zero values
915  */
916 static const uint16_t codebook_vector02_idx[] = {
917     0x0000, 0x8140, 0x8180, 0x4110, 0xc250, 0xc290, 0x4120, 0xc260, 0xc2a0,
918     0x2104, 0xa244, 0xa284, 0x6214, 0xe354, 0xe394, 0x6224, 0xe364, 0xe3a4,
919     0x2108, 0xa248, 0xa288, 0x6218, 0xe358, 0xe398, 0x6228, 0xe368, 0xe3a8,
920     0x1101, 0x9241, 0x9281, 0x5211, 0xd351, 0xd391, 0x5221, 0xd361, 0xd3a1,
921     0x3205, 0xb345, 0xb385, 0x7315, 0xf455, 0xf495, 0x7325, 0xf465, 0xf4a5,
922     0x3209, 0xb349, 0xb389, 0x7319, 0xf459, 0xf499, 0x7329, 0xf469, 0xf4a9,
923     0x1102, 0x9242, 0x9282, 0x5212, 0xd352, 0xd392, 0x5222, 0xd362, 0xd3a2,
924     0x3206, 0xb346, 0xb386, 0x7316, 0xf456, 0xf496, 0x7326, 0xf466, 0xf4a6,
925     0x320a, 0xb34a, 0xb38a, 0x731a, 0xf45a, 0xf49a, 0x732a, 0xf46a, 0xf4aa,
926 };
927 
928 static const float codebook_vector4_vals[] = {
929    -6.3496042, -4.3267487,
930    -2.5198421, -1.0000000,
931     0.0000000,  1.0000000,
932     2.5198421,  4.3267487,
933     6.3496042,
934 };
935 
936 /*
937  * bits  0:3, 4:7  index into _vals array
938  */
939 static const uint16_t codebook_vector4_idx[] = {
940     0x0000, 0x0010, 0x0020, 0x0030, 0x0040, 0x0050, 0x0060, 0x0070, 0x0080,
941     0x0001, 0x0011, 0x0021, 0x0031, 0x0041, 0x0051, 0x0061, 0x0071, 0x0081,
942     0x0002, 0x0012, 0x0022, 0x0032, 0x0042, 0x0052, 0x0062, 0x0072, 0x0082,
943     0x0003, 0x0013, 0x0023, 0x0033, 0x0043, 0x0053, 0x0063, 0x0073, 0x0083,
944     0x0004, 0x0014, 0x0024, 0x0034, 0x0044, 0x0054, 0x0064, 0x0074, 0x0084,
945     0x0005, 0x0015, 0x0025, 0x0035, 0x0045, 0x0055, 0x0065, 0x0075, 0x0085,
946     0x0006, 0x0016, 0x0026, 0x0036, 0x0046, 0x0056, 0x0066, 0x0076, 0x0086,
947     0x0007, 0x0017, 0x0027, 0x0037, 0x0047, 0x0057, 0x0067, 0x0077, 0x0087,
948     0x0008, 0x0018, 0x0028, 0x0038, 0x0048, 0x0058, 0x0068, 0x0078, 0x0088,
949 };
950 
951 /*
952  * bits  0:3, 4:7  index into _vals array
953  *       8:11      number of non-zero values
954  *      12:15      1: only second value non-zero
955  *                 0: other cases
956  */
957 static const uint16_t codebook_vector6_idx[] = {
958     0x0000, 0x0110, 0x0120, 0x0130, 0x0140, 0x0150, 0x0160, 0x0170,
959     0x1101, 0x0211, 0x0221, 0x0231, 0x0241, 0x0251, 0x0261, 0x0271,
960     0x1102, 0x0212, 0x0222, 0x0232, 0x0242, 0x0252, 0x0262, 0x0272,
961     0x1103, 0x0213, 0x0223, 0x0233, 0x0243, 0x0253, 0x0263, 0x0273,
962     0x1104, 0x0214, 0x0224, 0x0234, 0x0244, 0x0254, 0x0264, 0x0274,
963     0x1105, 0x0215, 0x0225, 0x0235, 0x0245, 0x0255, 0x0265, 0x0275,
964     0x1106, 0x0216, 0x0226, 0x0236, 0x0246, 0x0256, 0x0266, 0x0276,
965     0x1107, 0x0217, 0x0227, 0x0237, 0x0247, 0x0257, 0x0267, 0x0277,
966 };
967 
968 /*
969  * bits  0:3, 4:7  index into _vals array
970  *       8:11      number of non-zero values
971  *      12:15      1: only second value non-zero
972  *                 0: other cases
973  */
974 static const uint16_t codebook_vector8_idx[] = {
975   0x0000, 0x0110, 0x0120, 0x0130, 0x0140, 0x0150, 0x0160,
976   0x0170, 0x0180, 0x0190, 0x01a0, 0x01b0, 0x01c0,
977   0x1101, 0x0211, 0x0221, 0x0231, 0x0241, 0x0251, 0x0261,
978   0x0271, 0x0281, 0x0291, 0x02a1, 0x02b1, 0x02c1,
979   0x1102, 0x0212, 0x0222, 0x0232, 0x0242, 0x0252, 0x0262,
980   0x0272, 0x0282, 0x0292, 0x02a2, 0x02b2, 0x02c2,
981   0x1103, 0x0213, 0x0223, 0x0233, 0x0243, 0x0253, 0x0263,
982   0x0273, 0x0283, 0x0293, 0x02a3, 0x02b3, 0x02c3,
983   0x1104, 0x0214, 0x0224, 0x0234, 0x0244, 0x0254, 0x0264,
984   0x0274, 0x0284, 0x0294, 0x02a4, 0x02b4, 0x02c4,
985   0x1105, 0x0215, 0x0225, 0x0235, 0x0245, 0x0255, 0x0265,
986   0x0275, 0x0285, 0x0295, 0x02a5, 0x02b5, 0x02c5,
987   0x1106, 0x0216, 0x0226, 0x0236, 0x0246, 0x0256, 0x0266,
988   0x0276, 0x0286, 0x0296, 0x02a6, 0x02b6, 0x02c6,
989   0x1107, 0x0217, 0x0227, 0x0237, 0x0247, 0x0257, 0x0267,
990   0x0277, 0x0287, 0x0297, 0x02a7, 0x02b7, 0x02c7,
991   0x1108, 0x0218, 0x0228, 0x0238, 0x0248, 0x0258, 0x0268,
992   0x0278, 0x0288, 0x0298, 0x02a8, 0x02b8, 0x02c8,
993   0x1109, 0x0219, 0x0229, 0x0239, 0x0249, 0x0259, 0x0269,
994   0x0279, 0x0289, 0x0299, 0x02a9, 0x02b9, 0x02c9,
995   0x110a, 0x021a, 0x022a, 0x023a, 0x024a, 0x025a, 0x026a,
996   0x027a, 0x028a, 0x029a, 0x02aa, 0x02ba, 0x02ca,
997   0x110b, 0x021b, 0x022b, 0x023b, 0x024b, 0x025b, 0x026b,
998   0x027b, 0x028b, 0x029b, 0x02ab, 0x02bb, 0x02cb,
999   0x110c, 0x021c, 0x022c, 0x023c, 0x024c, 0x025c, 0x026c,
1000   0x027c, 0x028c, 0x029c, 0x02ac, 0x02bc, 0x02cc,
1001 };
1002 
1003 static const float codebook_vector10_vals[] = {
1004      0.0000000,  1.0000000,
1005      2.5198421,  4.3267487,
1006      6.3496042,  8.5498797,
1007     10.9027236, 13.3905183,
1008     16.0000000, 18.7207544,
1009     21.5443469, 24.4637810,
1010     27.4731418, 30.5673509,
1011     33.7419917, 36.9931811,
1012 };
1013 
1014 /*
1015  * bits  0:3, 4:7  index into _vals array
1016  *       8:9       bit mask of escape-coded entries
1017  *      12:15      number of non-zero values
1018  */
1019 static const uint16_t codebook_vector10_idx[] = {
1020     0x0000, 0x1010, 0x1020, 0x1030, 0x1040, 0x1050, 0x1060, 0x1070,
1021     0x1080, 0x1090, 0x10a0, 0x10b0, 0x10c0, 0x10d0, 0x10e0, 0x10f0, 0x1200,
1022     0x1001, 0x2011, 0x2021, 0x2031, 0x2041, 0x2051, 0x2061, 0x2071,
1023     0x2081, 0x2091, 0x20a1, 0x20b1, 0x20c1, 0x20d1, 0x20e1, 0x20f1, 0x2201,
1024     0x1002, 0x2012, 0x2022, 0x2032, 0x2042, 0x2052, 0x2062, 0x2072,
1025     0x2082, 0x2092, 0x20a2, 0x20b2, 0x20c2, 0x20d2, 0x20e2, 0x20f2, 0x2202,
1026     0x1003, 0x2013, 0x2023, 0x2033, 0x2043, 0x2053, 0x2063, 0x2073,
1027     0x2083, 0x2093, 0x20a3, 0x20b3, 0x20c3, 0x20d3, 0x20e3, 0x20f3, 0x2203,
1028     0x1004, 0x2014, 0x2024, 0x2034, 0x2044, 0x2054, 0x2064, 0x2074,
1029     0x2084, 0x2094, 0x20a4, 0x20b4, 0x20c4, 0x20d4, 0x20e4, 0x20f4, 0x2204,
1030     0x1005, 0x2015, 0x2025, 0x2035, 0x2045, 0x2055, 0x2065, 0x2075,
1031     0x2085, 0x2095, 0x20a5, 0x20b5, 0x20c5, 0x20d5, 0x20e5, 0x20f5, 0x2205,
1032     0x1006, 0x2016, 0x2026, 0x2036, 0x2046, 0x2056, 0x2066, 0x2076,
1033     0x2086, 0x2096, 0x20a6, 0x20b6, 0x20c6, 0x20d6, 0x20e6, 0x20f6, 0x2206,
1034     0x1007, 0x2017, 0x2027, 0x2037, 0x2047, 0x2057, 0x2067, 0x2077,
1035     0x2087, 0x2097, 0x20a7, 0x20b7, 0x20c7, 0x20d7, 0x20e7, 0x20f7, 0x2207,
1036     0x1008, 0x2018, 0x2028, 0x2038, 0x2048, 0x2058, 0x2068, 0x2078,
1037     0x2088, 0x2098, 0x20a8, 0x20b8, 0x20c8, 0x20d8, 0x20e8, 0x20f8, 0x2208,
1038     0x1009, 0x2019, 0x2029, 0x2039, 0x2049, 0x2059, 0x2069, 0x2079,
1039     0x2089, 0x2099, 0x20a9, 0x20b9, 0x20c9, 0x20d9, 0x20e9, 0x20f9, 0x2209,
1040     0x100a, 0x201a, 0x202a, 0x203a, 0x204a, 0x205a, 0x206a, 0x207a,
1041     0x208a, 0x209a, 0x20aa, 0x20ba, 0x20ca, 0x20da, 0x20ea, 0x20fa, 0x220a,
1042     0x100b, 0x201b, 0x202b, 0x203b, 0x204b, 0x205b, 0x206b, 0x207b,
1043     0x208b, 0x209b, 0x20ab, 0x20bb, 0x20cb, 0x20db, 0x20eb, 0x20fb, 0x220b,
1044     0x100c, 0x201c, 0x202c, 0x203c, 0x204c, 0x205c, 0x206c, 0x207c,
1045     0x208c, 0x209c, 0x20ac, 0x20bc, 0x20cc, 0x20dc, 0x20ec, 0x20fc, 0x220c,
1046     0x100d, 0x201d, 0x202d, 0x203d, 0x204d, 0x205d, 0x206d, 0x207d,
1047     0x208d, 0x209d, 0x20ad, 0x20bd, 0x20cd, 0x20dd, 0x20ed, 0x20fd, 0x220d,
1048     0x100e, 0x201e, 0x202e, 0x203e, 0x204e, 0x205e, 0x206e, 0x207e,
1049     0x208e, 0x209e, 0x20ae, 0x20be, 0x20ce, 0x20de, 0x20ee, 0x20fe, 0x220e,
1050     0x100f, 0x201f, 0x202f, 0x203f, 0x204f, 0x205f, 0x206f, 0x207f,
1051     0x208f, 0x209f, 0x20af, 0x20bf, 0x20cf, 0x20df, 0x20ef, 0x20ff, 0x220f,
1052     0x1100, 0x2110, 0x2120, 0x2130, 0x2140, 0x2150, 0x2160, 0x2170,
1053     0x2180, 0x2190, 0x21a0, 0x21b0, 0x21c0, 0x21d0, 0x21e0, 0x21f0, 0x2300,
1054 };
1055 
1056 const float *const ff_aac_codebook_vector_vals[] = {
1057     codebook_vector0_vals,  codebook_vector0_vals,
1058     codebook_vector10_vals, codebook_vector10_vals,
1059     codebook_vector4_vals,  codebook_vector4_vals,
1060     codebook_vector10_vals, codebook_vector10_vals,
1061     codebook_vector10_vals, codebook_vector10_vals,
1062     codebook_vector10_vals,
1063 };
1064 
1065 const uint16_t *const ff_aac_codebook_vector_idx[] = {
1066     codebook_vector02_idx, codebook_vector02_idx,
1067     codebook_vector02_idx, codebook_vector02_idx,
1068     codebook_vector4_idx,  codebook_vector4_idx,
1069     codebook_vector6_idx,  codebook_vector6_idx,
1070     codebook_vector8_idx,  codebook_vector8_idx,
1071     codebook_vector10_idx,
1072 };
1073 
1074 /* @name swb_offsets
1075  * Sample offset into the window indicating the beginning of a scalefactor
1076  * window band
1077  *
1078  * scalefactor window band - term for scalefactor bands within a window,
1079  * given in Table 4.110 to Table 4.128.
1080  *
1081  * scalefactor band - a set of spectral coefficients which are scaled by one
1082  * scalefactor. In case of EIGHT_SHORT_SEQUENCE and grouping a scalefactor band
1083  * may contain several scalefactor window bands of corresponding frequency. For
1084  * all other window_sequences scalefactor bands and scalefactor window bands are
1085  * identical.
1086  * @{
1087  */
1088 
1089 static const uint16_t swb_offset_1024_96[] = {
1090       0,   4,   8,  12,  16,  20,  24,  28,
1091      32,  36,  40,  44,  48,  52,  56,  64,
1092      72,  80,  88,  96, 108, 120, 132, 144,
1093     156, 172, 188, 212, 240, 276, 320, 384,
1094     448, 512, 576, 640, 704, 768, 832, 896,
1095     960, 1024
1096 };
1097 
1098 static const uint16_t swb_offset_128_96[] = {
1099     0, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 92, 128
1100 };
1101 
1102 static const uint16_t swb_offset_1024_64[] = {
1103       0,   4,   8,  12,  16,  20,  24,  28,
1104      32,  36,  40,  44,  48,  52,  56,  64,
1105      72,  80,  88, 100, 112, 124, 140, 156,
1106     172, 192, 216, 240, 268, 304, 344, 384,
1107     424, 464, 504, 544, 584, 624, 664, 704,
1108     744, 784, 824, 864, 904, 944, 984, 1024
1109 };
1110 
1111 static const uint16_t swb_offset_1024_48[] = {
1112       0,   4,   8,  12,  16,  20,  24,  28,
1113      32,  36,  40,  48,  56,  64,  72,  80,
1114      88,  96, 108, 120, 132, 144, 160, 176,
1115     196, 216, 240, 264, 292, 320, 352, 384,
1116     416, 448, 480, 512, 544, 576, 608, 640,
1117     672, 704, 736, 768, 800, 832, 864, 896,
1118     928, 1024
1119 };
1120 
1121 static const uint16_t swb_offset_512_48[] = {
1122       0,   4,   8,  12,  16,  20,  24,  28,
1123      32,  36,  40,  44,  48,  52,  56,  60,
1124      68,  76,  84,  92, 100, 112, 124, 136,
1125     148, 164, 184, 208, 236, 268, 300, 332,
1126     364, 396, 428, 460, 512
1127 };
1128 
1129 static const uint16_t swb_offset_128_48[] = {
1130      0,   4,   8,  12,  16,  20,  28,  36,
1131     44,  56,  68,  80,  96, 112, 128
1132 };
1133 
1134 static const uint16_t swb_offset_1024_32[] = {
1135       0,   4,   8,  12,  16,  20,  24,  28,
1136      32,  36,  40,  48,  56,  64,  72,  80,
1137      88,  96, 108, 120, 132, 144, 160, 176,
1138     196, 216, 240, 264, 292, 320, 352, 384,
1139     416, 448, 480, 512, 544, 576, 608, 640,
1140     672, 704, 736, 768, 800, 832, 864, 896,
1141     928, 960, 992, 1024
1142 };
1143 
1144 static const uint16_t swb_offset_512_32[] = {
1145       0,   4,   8,  12,  16,  20,  24,  28,
1146      32,  36,  40,  44,  48,  52,  56,  64,
1147      72,  80,  88,  96, 108, 120, 132, 144,
1148     160, 176, 192, 212, 236, 260, 288, 320,
1149     352, 384, 416, 448, 480, 512
1150 };
1151 
1152 static const uint16_t swb_offset_1024_24[] = {
1153       0,   4,   8,  12,  16,  20,  24,  28,
1154      32,  36,  40,  44,  52,  60,  68,  76,
1155      84,  92, 100, 108, 116, 124, 136, 148,
1156     160, 172, 188, 204, 220, 240, 260, 284,
1157     308, 336, 364, 396, 432, 468, 508, 552,
1158     600, 652, 704, 768, 832, 896, 960, 1024
1159 };
1160 
1161 static const uint16_t swb_offset_512_24[] = {
1162       0,   4,   8,  12,  16,  20,  24,  28,
1163      32,  36,  40,  44,  52,  60,  68,  80,
1164      92, 104, 120, 140, 164, 192, 224, 256,
1165     288, 320, 352, 384, 416, 448, 480, 512,
1166 };
1167 
1168 static const uint16_t swb_offset_128_24[] = {
1169      0,   4,   8,  12,  16,  20,  24,  28,
1170     36,  44,  52,  64,  76,  92, 108, 128
1171 };
1172 
1173 static const uint16_t swb_offset_1024_16[] = {
1174       0,   8,  16,  24,  32,  40,  48,  56,
1175      64,  72,  80,  88, 100, 112, 124, 136,
1176     148, 160, 172, 184, 196, 212, 228, 244,
1177     260, 280, 300, 320, 344, 368, 396, 424,
1178     456, 492, 532, 572, 616, 664, 716, 772,
1179     832, 896, 960, 1024
1180 };
1181 
1182 static const uint16_t swb_offset_128_16[] = {
1183      0,   4,   8,  12,  16,  20,  24,  28,
1184     32,  40,  48,  60,  72,  88, 108, 128
1185 };
1186 
1187 static const uint16_t swb_offset_1024_8[] = {
1188       0,  12,  24,  36,  48,  60,  72,  84,
1189      96, 108, 120, 132, 144, 156, 172, 188,
1190     204, 220, 236, 252, 268, 288, 308, 328,
1191     348, 372, 396, 420, 448, 476, 508, 544,
1192     580, 620, 664, 712, 764, 820, 880, 944,
1193     1024
1194 };
1195 
1196 static const uint16_t swb_offset_128_8[] = {
1197      0,   4,   8,  12,  16,  20,  24,  28,
1198     36,  44,  52,  60,  72,  88, 108, 128
1199 };
1200 
1201 const uint16_t * const ff_swb_offset_1024[] = {
1202     swb_offset_1024_96, swb_offset_1024_96, swb_offset_1024_64,
1203     swb_offset_1024_48, swb_offset_1024_48, swb_offset_1024_32,
1204     swb_offset_1024_24, swb_offset_1024_24, swb_offset_1024_16,
1205     swb_offset_1024_16, swb_offset_1024_16, swb_offset_1024_8,
1206     swb_offset_1024_8
1207 };
1208 
1209 const uint16_t * const ff_swb_offset_512[] = {
1210     NULL,               NULL,               NULL,
1211     swb_offset_512_48,  swb_offset_512_48,  swb_offset_512_32,
1212     swb_offset_512_24,  swb_offset_512_24,  NULL,
1213     NULL,               NULL,               NULL,
1214     NULL
1215 };
1216 
1217 const uint16_t * const ff_swb_offset_128[] = {
1218     /* The last entry on the following row is swb_offset_128_64 but is a
1219        duplicate of swb_offset_128_96. */
1220     swb_offset_128_96, swb_offset_128_96, swb_offset_128_96,
1221     swb_offset_128_48, swb_offset_128_48, swb_offset_128_48,
1222     swb_offset_128_24, swb_offset_128_24, swb_offset_128_16,
1223     swb_offset_128_16, swb_offset_128_16, swb_offset_128_8,
1224     swb_offset_128_8
1225 };
1226 
1227 // @}
1228 
1229 /* @name ff_tns_max_bands
1230  * The maximum number of scalefactor bands on which TNS can operate for the long
1231  * and short transforms respectively. The index to these tables is related to
1232  * the sample rate of the audio.
1233  * @{
1234  */
1235 const uint8_t ff_tns_max_bands_1024[] = {
1236     31, 31, 34, 40, 42, 51, 46, 46, 42, 42, 42, 39, 39
1237 };
1238 
1239 const uint8_t ff_tns_max_bands_512[] = {
1240     0, 0, 0, 31, 32, 37, 31, 31, 0, 0, 0, 0, 0
1241 };
1242 
1243 const uint8_t ff_tns_max_bands_128[] = {
1244     9, 9, 10, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14
1245 };
1246 // @}
1247 
1248 const DECLARE_ALIGNED(32, float, ff_aac_eld_window)[1920] = {
1249      0.00338834,  0.00567745,  0.00847677,  0.01172641,
1250      0.01532555,  0.01917664,  0.02318809,  0.02729259,
1251      0.03144503,  0.03560261,  0.03972499,  0.04379783,
1252      0.04783094,  0.05183357,  0.05581342,  0.05977723,
1253      0.06373173,  0.06768364,  0.07163937,  0.07559976,
1254      0.07956096,  0.08352024,  0.08747623,  0.09143035,
1255      0.09538618,  0.09934771,  0.10331917,  0.10730456,
1256      0.11130697,  0.11532867,  0.11937133,  0.12343922,
1257      0.12753911,  0.13167705,  0.13585812,  0.14008529,
1258      0.14435986,  0.14868291,  0.15305531,  0.15747594,
1259      0.16194193,  0.16645070,  0.17099991,  0.17558633,
1260      0.18020600,  0.18485548,  0.18953191,  0.19423322,
1261      0.19895800,  0.20370512,  0.20847374,  0.21326312,
1262      0.21807244,  0.22290083,  0.22774742,  0.23261210,
1263      0.23749542,  0.24239767,  0.24731889,  0.25225887,
1264      0.25721719,  0.26219330,  0.26718648,  0.27219630,
1265      0.27722262,  0.28226514,  0.28732336,  0.29239628,
1266      0.29748247,  0.30258055,  0.30768914,  0.31280508,
1267      0.31792385,  0.32304172,  0.32815579,  0.33326397,
1268      0.33836470,  0.34345661,  0.34853868,  0.35361188,
1269      0.35867865,  0.36374072,  0.36879900,  0.37385347,
1270      0.37890349,  0.38394836,  0.38898730,  0.39401912,
1271      0.39904236,  0.40405575,  0.40905820,  0.41404819,
1272      0.41902398,  0.42398423,  0.42892805,  0.43385441,
1273      0.43876210,  0.44365014,  0.44851786,  0.45336632,
1274      0.45819759,  0.46301302,  0.46781309,  0.47259722,
1275      0.47736435,  0.48211365,  0.48684450,  0.49155594,
1276      0.49624679,  0.50091636,  0.50556440,  0.51019132,
1277      0.51479771,  0.51938391,  0.52394998,  0.52849587,
1278      0.53302151,  0.53752680,  0.54201160,  0.54647575,
1279      0.55091916,  0.55534181,  0.55974376,  0.56412513,
1280      0.56848615,  0.57282710,  0.57714834,  0.58145030,
1281      0.58492489,  0.58918511,  0.59342326,  0.59763936,
1282      0.60183347,  0.60600561,  0.61015581,  0.61428412,
1283      0.61839056,  0.62247517,  0.62653799,  0.63057912,
1284      0.63459872,  0.63859697,  0.64257403,  0.64653001,
1285      0.65046495,  0.65437887,  0.65827181,  0.66214383,
1286      0.66599499,  0.66982535,  0.67363499,  0.67742394,
1287      0.68119219,  0.68493972,  0.68866653,  0.69237258,
1288      0.69605778,  0.69972207,  0.70336537,  0.70698758,
1289      0.71058862,  0.71416837,  0.71772674,  0.72126361,
1290      0.72477889,  0.72827246,  0.73174419,  0.73519392,
1291      0.73862141,  0.74202643,  0.74540874,  0.74876817,
1292      0.75210458,  0.75541785,  0.75870785,  0.76197437,
1293      0.76521709,  0.76843570,  0.77162988,  0.77479939,
1294      0.77794403,  0.78106359,  0.78415789,  0.78722670,
1295      0.79026979,  0.79328694,  0.79627791,  0.79924244,
1296      0.80218027,  0.80509112,  0.80797472,  0.81083081,
1297      0.81365915,  0.81645949,  0.81923160,  0.82197528,
1298      0.82469037,  0.82737673,  0.83003419,  0.83266262,
1299      0.83526186,  0.83783176,  0.84037217,  0.84288297,
1300      0.84536401,  0.84781517,  0.85023632,  0.85262739,
1301      0.85498836,  0.85731921,  0.85961993,  0.86189052,
1302      0.86413101,  0.86634140,  0.86852173,  0.87067211,
1303      0.87279275,  0.87488384,  0.87694559,  0.87897824,
1304      0.88098206,  0.88295729,  0.88490423,  0.88682332,
1305      0.88871519,  0.89058048,  0.89241983,  0.89423391,
1306      0.89602338,  0.89778893,  0.89953126,  0.90125142,
1307      0.90295086,  0.90463104,  0.90629341,  0.90793946,
1308      0.90957067,  0.91118856,  0.91279464,  0.91439073,
1309      0.91597898,  0.91756153,  0.91914049,  0.92071690,
1310      0.92229070,  0.92386182,  0.92542993,  0.92698946,
1311      0.92852960,  0.93003929,  0.93150727,  0.93291739,
1312      0.93424863,  0.93547974,  0.93658982,  0.93756587,
1313      0.93894072,  0.93922780,  0.93955477,  0.93991290,
1314      0.94029104,  0.94067794,  0.94106258,  0.94144084,
1315      0.94181549,  0.94218963,  0.94256628,  0.94294662,
1316      0.94332998,  0.94371562,  0.94410280,  0.94449122,
1317      0.94488106,  0.94527249,  0.94566568,  0.94606074,
1318      0.94645772,  0.94685665,  0.94725759,  0.94766054,
1319      0.94806547,  0.94847234,  0.94888115,  0.94929190,
1320      0.94970469,  0.95011960,  0.95053672,  0.95095604,
1321      0.95137751,  0.95180105,  0.95222658,  0.95265413,
1322      0.95308380,  0.95351571,  0.95394994,  0.95438653,
1323      0.95482538,  0.95526643,  0.95570958,  0.95615486,
1324      0.95660234,  0.95705214,  0.95750433,  0.95795892,
1325      0.95841582,  0.95887493,  0.95933616,  0.95979949,
1326      0.96026500,  0.96073277,  0.96120286,  0.96167526,
1327      0.96214986,  0.96262655,  0.96310522,  0.96358586,
1328      0.96406853,  0.96455330,  0.96504026,  0.96552936,
1329      0.96602051,  0.96651360,  0.96700850,  0.96750520,
1330      0.96800376,  0.96850424,  0.96900670,  0.96951112,
1331      0.97001738,  0.97052533,  0.97103488,  0.97154597,
1332      0.97205867,  0.97257304,  0.97308915,  0.97360694,
1333      0.97412631,  0.97464711,  0.97516923,  0.97569262,
1334      0.97621735,  0.97674350,  0.97727111,  0.97780016,
1335      0.97833051,  0.97886205,  0.97939463,  0.97992823,
1336      0.98046291,  0.98099875,  0.98153580,  0.98207405,
1337      0.98261337,  0.98315364,  0.98369474,  0.98423664,
1338      0.98477941,  0.98532311,  0.98586780,  0.98641348,
1339      0.98696003,  0.98750734,  0.98805530,  0.98860389,
1340      0.98915320,  0.98970328,  0.99025423,  0.99080602,
1341      0.99135855,  0.99191171,  0.99246541,  0.99301962,
1342      0.99357443,  0.99412992,  0.99468617,  0.99524320,
1343      0.99580092,  0.99635926,  0.99691814,  0.99747748,
1344      0.99803721,  0.99859725,  0.99915752,  0.99971793,
1345      1.00028215,  1.00084319,  1.00140472,  1.00196665,
1346      1.00252889,  1.00309139,  1.00365404,  1.00421679,
1347      1.00477954,  1.00534221,  1.00590474,  1.00646713,
1348      1.00702945,  1.00759179,  1.00815424,  1.00871678,
1349      1.00927930,  1.00984169,  1.01040384,  1.01096575,
1350      1.01152747,  1.01208910,  1.01265070,  1.01321226,
1351      1.01377365,  1.01433478,  1.01489551,  1.01545584,
1352      1.01601582,  1.01657553,  1.01713502,  1.01769427,
1353      1.01825316,  1.01881154,  1.01936929,  1.01992639,
1354      1.02048289,  1.02103888,  1.02159441,  1.02214945,
1355      1.02270387,  1.02325751,  1.02381025,  1.02436204,
1356      1.02491295,  1.02546304,  1.02601238,  1.02656092,
1357      1.02710853,  1.02765508,  1.02820041,  1.02874449,
1358      1.02928737,  1.02982913,  1.03036981,  1.03090937,
1359      1.03144768,  1.03198460,  1.03252000,  1.03305384,
1360      1.03358617,  1.03411707,  1.03464659,  1.03517470,
1361      1.03570128,  1.03622620,  1.03674934,  1.03727066,
1362      1.03779024,  1.03830815,  1.03882446,  1.03933914,
1363      1.03985206,  1.04036312,  1.04087217,  1.04137920,
1364      1.04188428,  1.04238748,  1.04288888,  1.04338845,
1365      1.04388610,  1.04438170,  1.04487515,  1.04536645,
1366      1.04585569,  1.04634297,  1.04682838,  1.04731192,
1367      1.04779350,  1.04827303,  1.04875042,  1.04922568,
1368      1.04969891,  1.05017022,  1.05063974,  1.05110746,
1369      1.05157332,  1.05203721,  1.05249907,  1.05295889,
1370      1.05341676,  1.05387277,  1.05432700,  1.05477948,
1371      1.05523018,  1.05567906,  1.05612608,  1.05657124,
1372      1.05701459,  1.05745616,  1.05789601,  1.05833426,
1373      1.05877109,  1.05920669,  1.05964125,  1.06007444,
1374      1.06050542,  1.06093335,  1.06135746,  1.06177909,
1375      1.06220164,  1.06262858,  1.06306309,  1.06350050,
1376      1.06392837,  1.06433391,  1.06470443,  1.06502996,
1377      1.06481076,  1.06469765,  1.06445004,  1.06408002,
1378      1.06361382,  1.06307719,  1.06249453,  1.06188365,
1379      1.06125612,  1.06062291,  1.05999418,  1.05937132,
1380      1.05874726,  1.05811486,  1.05746728,  1.05680000,
1381      1.05611070,  1.05539715,  1.05465735,  1.05389329,
1382      1.05311083,  1.05231578,  1.05151372,  1.05070811,
1383      1.04990044,  1.04909210,  1.04828434,  1.04747647,
1384      1.04666590,  1.04585003,  1.04502628,  1.04419009,
1385      1.04333499,  1.04245452,  1.04154244,  1.04059452,
1386      1.03960846,  1.03858207,  1.03751326,  1.03640189,
1387      1.03524976,  1.03405868,  1.03283047,  1.03156812,
1388      1.03027574,  1.02895743,  1.02761717,  1.02625804,
1389      1.02488222,  1.02349184,  1.02208892,  1.02067450,
1390      1.01924861,  1.01781123,  1.01636229,  1.01490045,
1391      1.01342315,  1.01192778,  1.01041175,  1.00887284,
1392      1.00730915,  1.00571882,  1.00409996,  1.00245032,
1393      1.00076734,  0.99904842,  0.99729101,  0.99549380,
1394      0.99365664,  0.99177946,  0.98986234,  0.98791024,
1395      0.98593294,  0.98394037,  0.98194226,  0.97994532,
1396      0.97795324,  0.97596955,  0.97399748,  0.97203326,
1397      0.97006624,  0.96808546,  0.96608018,  0.96404416,
1398      0.96197556,  0.95987276,  0.95773420,  0.95556018,
1399      0.95335291,  0.95111462,  0.94884764,  0.94655663,
1400      0.94424858,  0.94193055,  0.93960953,  0.93729154,
1401      0.93498157,  0.93268456,  0.93040503,  0.92813771,
1402      0.92586755,  0.92357910,  0.92125731,  0.91889642,
1403      0.91649998,  0.91407191,  0.91161623,  0.90913975,
1404      0.90665202,  0.90416271,  0.90168115,  0.89920934,
1405      0.89674189,  0.89427312,  0.89179743,  0.88931147,
1406      0.88681415,  0.88430445,  0.88178141,  0.87924528,
1407      0.87669753,  0.87413966,  0.87157318,  0.86899958,
1408      0.86642037,  0.86383703,  0.86125106,  0.85866393,
1409      0.85604236,  0.85344385,  0.85083093,  0.84820550,
1410      0.84556943,  0.84292458,  0.84027278,  0.83761586,
1411      0.83495565,  0.83229393,  0.82963243,  0.82697135,
1412      0.82430933,  0.82164496,  0.81897669,  0.81630017,
1413      0.81360822,  0.81089355,  0.80814924,  0.80537741,
1414      0.80258920,  0.79979611,  0.79700954,  0.79423813,
1415      0.79148780,  0.78876432,  0.78607290,  0.78340590,
1416      0.78074288,  0.77806279,  0.77534514,  0.77258187,
1417      0.76977737,  0.76693654,  0.76406441,  0.76116851,
1418      0.75825892,  0.75534582,  0.75243924,  0.74954634,
1419      0.74667135,  0.74381840,  0.74099145,  0.73819147,
1420      0.73541641,  0.73266408,  0.72993193,  0.72720913,
1421      0.72447661,  0.72171494,  0.71890515,  0.71603932,
1422      0.71312056,  0.71015250,  0.70713900,  0.70409084,
1423      0.70102565,  0.69796137,  0.69491556,  0.69189772,
1424      0.68890931,  0.68595141,  0.68302498,  0.68012852,
1425      0.67725801,  0.67440936,  0.67157841,  0.66876081,
1426      0.66595195,  0.66314722,  0.66034194,  0.65753027,
1427      0.65470525,  0.65185984,  0.64898709,  0.64608214,
1428      0.64314221,  0.64016460,  0.63714680,  0.63409034,
1429      0.63100082,  0.62788400,  0.62474577,  0.62159473,
1430      0.61844225,  0.61529977,  0.61217866,  0.60908811,
1431      0.60603510,  0.60302654,  0.60006916,  0.59716588,
1432      0.59431580,  0.59151787,  0.58877068,  0.58606495,
1433      0.58338353,  0.58070891,  0.57802356,  0.57530864,
1434      0.57254404,  0.56970958,  0.56678577,  0.56376860,
1435      0.56066951,  0.55750064,  0.55427451,  0.55101301,
1436      0.54774732,  0.54450907,  0.54132936,  0.53822744,
1437      0.53521072,  0.53228613,  0.52945979,  0.52671997,
1438      0.52403708,  0.52138072,  0.51872085,  0.51603570,
1439      0.51331170,  0.51053560,  0.50769466,  0.50478931,
1440      0.50183308,  0.49884001,  0.49582406,  0.49279905,
1441      0.48985748,  0.48679641,  0.48379429,  0.48085363,
1442      0.47796576,  0.47512151,  0.47231151,  0.46952402,
1443      0.46674486,  0.46395978,  0.46115496,  0.45832607,
1444      0.45547830,  0.45261727,  0.44974866,  0.44688011,
1445      0.44402125,  0.44118178,  0.43837094,  0.43558772,
1446      0.43282082,  0.43005847,  0.42728913,  0.42450572,
1447      0.42170567,  0.41888658,  0.41604633,  0.41318897,
1448      0.41032472,  0.40746405,  0.40461724,  0.40178943,
1449      0.39898066,  0.39619073,  0.39341940,  0.39066519,
1450      0.38792536,  0.38519713,  0.38247773,  0.37976476,
1451      0.37705620,  0.37435006,  0.37164438,  0.36893869,
1452      0.36623396,  0.36353124,  0.36083153,  0.35813533,
1453      0.35544262,  0.35275338,  0.35006755,  0.34738530,
1454      0.34470699,  0.34203296,  0.33936359,  0.33669922,
1455      0.33404027,  0.33138711,  0.32874013,  0.32609944,
1456      0.32346493,  0.32083645,  0.31821388,  0.31559703,
1457      0.31298573,  0.31037987,  0.30777941,  0.30518446,
1458      0.30259525,  0.30001202,  0.29743499,  0.29486428,
1459      0.29229989,  0.28974179,  0.28718997,  0.28464452,
1460      0.28210562,  0.27957346,  0.27704820,  0.27452992,
1461      0.27201854,  0.26951399,  0.26701622,  0.26452533,
1462      0.26204158,  0.25956526,  0.25709662,  0.25463583,
1463      0.25218294,  0.24973798,  0.24730100,  0.24487207,
1464      0.24245133,  0.24003893,  0.23763500,  0.23523959,
1465      0.23285262,  0.23047401,  0.22810369,  0.22574170,
1466      0.22338818,  0.22104329,  0.21870719,  0.21637986,
1467      0.21406117,  0.21175095,  0.20944904,  0.20715535,
1468      0.20486987,  0.20259261,  0.20032356,  0.19806259,
1469      0.19580944,  0.19356385,  0.19132556,  0.18909442,
1470      0.18687040,  0.18465350,  0.18244372,  0.18024164,
1471      0.17804841,  0.17586521,  0.17369322,  0.17153360,
1472      0.16938755,  0.16725622,  0.16514081,  0.16304247,
1473      0.16098974,  0.15896561,  0.15696026,  0.15497259,
1474      0.15300151,  0.15104590,  0.14910466,  0.14717666,
1475      0.14526081,  0.14335599,  0.14146111,  0.13957570,
1476      0.13769993,  0.13583399,  0.13397806,  0.13213229,
1477      0.13029682,  0.12847178,  0.12665729,  0.12485353,
1478      0.12306074,  0.12127916,  0.11950900,  0.11775043,
1479      0.11600347,  0.11426820,  0.11254464,  0.11083292,
1480      0.10913318,  0.10744559,  0.10577028,  0.10410733,
1481      0.10245672,  0.10081842,  0.09919240,  0.09757872,
1482      0.09597750,  0.09438884,  0.09281288,  0.09124964,
1483      0.08969907,  0.08816111,  0.08663570,  0.08512288,
1484      0.08362274,  0.08213540,  0.08066096,  0.07919944,
1485      0.07775076,  0.07631484,  0.07489161,  0.07348108,
1486      0.07208335,  0.07069851,  0.06932666,  0.06796781,
1487      0.06662187,  0.06528874,  0.06396833,  0.06266065,
1488      0.06136578,  0.06008380,  0.05881480,  0.05755876,
1489      0.05631557,  0.05508511,  0.05386728,  0.05266206,
1490      0.05146951,  0.05028971,  0.04912272,  0.04796855,
1491      0.04682709,  0.04569825,  0.04458194,  0.04347817,
1492      0.04238704,  0.04130868,  0.04024318,  0.03919056,
1493      0.03815071,  0.03712352,  0.03610890,  0.03510679,
1494      0.03411720,  0.03314013,  0.03217560,  0.03122343,
1495      0.03028332,  0.02935494,  0.02843799,  0.02753230,
1496      0.02663788,  0.02575472,  0.02488283,  0.02402232,
1497      0.02317341,  0.02233631,  0.02151124,  0.02069866,
1498      0.01989922,  0.01911359,  0.01834241,  0.01758563,
1499      0.01684248,  0.01611219,  0.01539397,  0.01468726,
1500      0.01399167,  0.01330687,  0.01263250,  0.01196871,
1501      0.01131609,  0.01067527,  0.01004684,  0.00943077,
1502      0.00882641,  0.00823307,  0.00765011,  0.00707735,
1503      0.00651513,  0.00596377,  0.00542364,  0.00489514,
1504      0.00437884,  0.00387530,  0.00338509,  0.00290795,
1505      0.00244282,  0.00198860,  0.00154417,  0.00110825,
1506      0.00067934,  0.00025589, -0.00016357, -0.00057897,
1507     -0.00098865, -0.00139089, -0.00178397, -0.00216547,
1508     -0.00253230, -0.00288133, -0.00320955, -0.00351626,
1509     -0.00380315, -0.00407198, -0.00432457, -0.00456373,
1510     -0.00479326, -0.00501699, -0.00523871, -0.00546066,
1511     -0.00568360, -0.00590821, -0.00613508, -0.00636311,
1512     -0.00658944, -0.00681117, -0.00702540, -0.00722982,
1513     -0.00742268, -0.00760226, -0.00776687, -0.00791580,
1514     -0.00804933, -0.00816774, -0.00827139, -0.00836122,
1515     -0.00843882, -0.00850583, -0.00856383, -0.00861430,
1516     -0.00865853, -0.00869781, -0.00873344, -0.00876633,
1517     -0.00879707, -0.00882622, -0.00885433, -0.00888132,
1518     -0.00890652, -0.00892925, -0.00894881, -0.00896446,
1519     -0.00897541, -0.00898088, -0.00898010, -0.00897234,
1520     -0.00895696, -0.00893330, -0.00890076, -0.00885914,
1521     -0.00880875, -0.00874987, -0.00868282, -0.00860825,
1522     -0.00852716, -0.00844055, -0.00834941, -0.00825485,
1523     -0.00815807, -0.00806025, -0.00796253, -0.00786519,
1524     -0.00776767, -0.00766937, -0.00756971, -0.00746790,
1525     -0.00736305, -0.00725422, -0.00714055, -0.00702161,
1526     -0.00689746, -0.00676816, -0.00663381, -0.00649489,
1527     -0.00635230, -0.00620694, -0.00605969, -0.00591116,
1528     -0.00576167, -0.00561155, -0.00546110, -0.00531037,
1529     -0.00515917, -0.00500732, -0.00485462, -0.00470075,
1530     -0.00454530, -0.00438786, -0.00422805, -0.00406594,
1531     -0.00390204, -0.00373686, -0.00357091, -0.00340448,
1532     -0.00323770, -0.00307066, -0.00290344, -0.00273610,
1533     -0.00256867, -0.00240117, -0.00223365, -0.00206614,
1534     -0.00189866, -0.00173123, -0.00156390, -0.00139674,
1535     -0.00122989, -0.00106351, -0.00089772, -0.00073267,
1536     -0.00056849, -0.00040530, -0.00024324, -0.00008241,
1537      0.00008214,  0.00024102,  0.00039922,  0.00055660,
1538      0.00071299,  0.00086826,  0.00102224,  0.00117480,
1539      0.00132579,  0.00147507,  0.00162252,  0.00176804,
1540      0.00191161,  0.00205319,  0.00219277,  0.00233029,
1541      0.00246567,  0.00259886,  0.00272975,  0.00285832,
1542      0.00298453,  0.00310839,  0.00322990,  0.00334886,
1543      0.00346494,  0.00357778,  0.00368706,  0.00379273,
1544      0.00389501,  0.00399411,  0.00409020,  0.00418350,
1545      0.00427419,  0.00436249,  0.00444858,  0.00453250,
1546      0.00461411,  0.00469328,  0.00476988,  0.00484356,
1547      0.00491375,  0.00497987,  0.00504139,  0.00509806,
1548      0.00514990,  0.00519693,  0.00523920,  0.00527700,
1549      0.00531083,  0.00534122,  0.00536864,  0.00539357,
1550      0.00541649,  0.00543785,  0.00545809,  0.00547713,
1551      0.00549441,  0.00550936,  0.00552146,  0.00553017,
1552      0.00553494,  0.00553524,  0.00553058,  0.00552065,
1553      0.00550536,  0.00548459,  0.00545828,  0.00542662,
1554      0.00539007,  0.00534910,  0.00530415,  0.00525568,
1555      0.00520417,  0.00515009,  0.00509387,  0.00503595,
1556      0.00497674,  0.00491665,  0.00485605,  0.00479503,
1557      0.00473336,  0.00467082,  0.00460721,  0.00454216,
1558      0.00447517,  0.00440575,  0.00433344,  0.00425768,
1559      0.00417786,  0.00409336,  0.00400363,  0.00390837,
1560      0.00380759,  0.00370130,  0.00358952,  0.00347268,
1561      0.00335157,  0.00322699,  0.00309975,  0.00297088,
1562      0.00284164,  0.00271328,  0.00258700,  0.00246328,
1563      0.00234195,  0.00222281,  0.00210562,  0.00198958,
1564      0.00187331,  0.00175546,  0.00163474,  0.00151020,
1565      0.00138130,  0.00124750,  0.00110831,  0.00096411,
1566      0.00081611,  0.00066554,  0.00051363,  0.00036134,
1567      0.00020940,  0.00005853, -0.00009058, -0.00023783,
1568     -0.00038368, -0.00052861, -0.00067310, -0.00081757,
1569     -0.00096237, -0.00110786, -0.00125442, -0.00140210,
1570     -0.00155065, -0.00169984, -0.00184940, -0.00199910,
1571     -0.00214872, -0.00229798, -0.00244664, -0.00259462,
1572     -0.00274205, -0.00288912, -0.00303596, -0.00318259,
1573     -0.00332890, -0.00347480, -0.00362024, -0.00376519,
1574     -0.00390962, -0.00405345, -0.00419658, -0.00433902,
1575     -0.00448085, -0.00462219, -0.00476309, -0.00490357,
1576     -0.00504361, -0.00518321, -0.00532243, -0.00546132,
1577     -0.00559988, -0.00573811, -0.00587602, -0.00601363,
1578     -0.00615094, -0.00628795, -0.00642466, -0.00656111,
1579     -0.00669737, -0.00683352, -0.00696963, -0.00710578,
1580     -0.00724208, -0.00737862, -0.00751554, -0.00765295,
1581     -0.00779098, -0.00792976, -0.00806941, -0.00821006,
1582     -0.00835183, -0.00849485, -0.00863926, -0.00878522,
1583     -0.00893293, -0.00908260, -0.00923444, -0.00938864,
1584     -0.00954537, -0.00970482, -0.00986715, -0.01003173,
1585     -0.01019711, -0.01036164, -0.01052357, -0.01068184,
1586     -0.01083622, -0.01098652, -0.01113252, -0.01127409,
1587     -0.01141114, -0.01154358, -0.01167135, -0.01179439,
1588     -0.01191268, -0.01202619, -0.01213493, -0.01223891,
1589     -0.01233817, -0.01243275, -0.01252272, -0.01260815,
1590     -0.01268915, -0.01276583, -0.01283832, -0.01290685,
1591     -0.01297171, -0.01303320, -0.01309168, -0.01314722,
1592     -0.01319969, -0.01324889, -0.01329466, -0.01333693,
1593     -0.01337577, -0.01341125, -0.01344345, -0.01347243,
1594     -0.01349823, -0.01352089, -0.01354045, -0.01355700,
1595     -0.01357068, -0.01358164, -0.01359003, -0.01359587,
1596     -0.01359901, -0.01359931, -0.01359661, -0.01359087,
1597     -0.01358219, -0.01357065, -0.01355637, -0.01353935,
1598     -0.01351949, -0.01349670, -0.01347088, -0.01344214,
1599     -0.01341078, -0.01337715, -0.01334158, -0.01330442,
1600     -0.01326601, -0.01322671, -0.01318689, -0.01314692,
1601     -0.01310123, -0.01306470, -0.01302556, -0.01298381,
1602     -0.01293948, -0.01289255, -0.01284305, -0.01279095,
1603     -0.01273625, -0.01267893, -0.01261897, -0.01255632,
1604     -0.01249096, -0.01242283, -0.01235190, -0.01227827,
1605     -0.01220213, -0.01212366, -0.01204304, -0.01196032,
1606     -0.01187543, -0.01178829, -0.01169884, -0.01160718,
1607     -0.01151352, -0.01141809, -0.01132111, -0.01122272,
1608     -0.01112304, -0.01102217, -0.01092022, -0.01081730,
1609     -0.01071355, -0.01060912, -0.01050411, -0.01039854,
1610     -0.01029227, -0.01018521, -0.01007727, -0.00996859,
1611     -0.00985959, -0.00975063, -0.00964208, -0.00953420,
1612     -0.00942723, -0.00932135, -0.00921677, -0.00911364,
1613     -0.00901208, -0.00891220, -0.00881412, -0.00871792,
1614     -0.00862369, -0.00853153, -0.00844149, -0.00835360,
1615     -0.00826785, -0.00818422, -0.00810267, -0.00802312,
1616     -0.00794547, -0.00786959, -0.00779533, -0.00772165,
1617     -0.00764673, -0.00756886, -0.00748649, -0.00739905,
1618     -0.00730681, -0.00721006, -0.00710910, -0.00700419,
1619     -0.00689559, -0.00678354, -0.00666829, -0.00655007,
1620     -0.00642916, -0.00630579, -0.00618022, -0.00605267,
1621     -0.00592333, -0.00579240, -0.00566006, -0.00552651,
1622     -0.00539194, -0.00525653, -0.00512047, -0.00498390,
1623     -0.00484693, -0.00470969, -0.00457228, -0.00443482,
1624     -0.00429746, -0.00416034, -0.00402359, -0.00388738,
1625     -0.00375185, -0.00361718, -0.00348350, -0.00335100,
1626     -0.00321991, -0.00309043, -0.00296276, -0.00283698,
1627     -0.00271307, -0.00259098, -0.00247066, -0.00235210,
1628     -0.00223531, -0.00212030, -0.00200709, -0.00189576,
1629     -0.00178647, -0.00167936, -0.00157457, -0.00147216,
1630     -0.00137205, -0.00127418, -0.00117849, -0.00108498,
1631     -0.00099375, -0.00090486, -0.00081840, -0.00073444,
1632     -0.00065309, -0.00057445, -0.00049860, -0.00042551,
1633     -0.00035503, -0.00028700, -0.00022125, -0.00015761,
1634     -0.00009588, -0.00003583,  0.00002272,  0.00007975,
1635      0.00013501,  0.00018828,  0.00023933,  0.00028784,
1636      0.00033342,  0.00037572,  0.00041438,  0.00044939,
1637      0.00048103,  0.00050958,  0.00053533,  0.00055869,
1638      0.00058015,  0.00060022,  0.00061935,  0.00063781,
1639      0.00065568,  0.00067303,  0.00068991,  0.00070619,
1640      0.00072155,  0.00073567,  0.00074826,  0.00075912,
1641      0.00076811,  0.00077509,  0.00077997,  0.00078275,
1642      0.00078351,  0.00078237,  0.00077943,  0.00077484,
1643      0.00076884,  0.00076160,  0.00075335,  0.00074423,
1644      0.00073442,  0.00072404,  0.00071323,  0.00070209,
1645      0.00069068,  0.00067906,  0.00066728,  0.00065534,
1646      0.00064321,  0.00063086,  0.00061824,  0.00060534,
1647      0.00059211,  0.00057855,  0.00056462,  0.00055033,
1648      0.00053566,  0.00052063,  0.00050522,  0.00048949,
1649      0.00047349,  0.00045728,  0.00044092,  0.00042447,
1650      0.00040803,  0.00039166,  0.00037544,  0.00035943,
1651      0.00034371,  0.00032833,  0.00031333,  0.00029874,
1652      0.00028452,  0.00027067,  0.00025715,  0.00024395,
1653      0.00023104,  0.00021842,  0.00020606,  0.00019398,
1654      0.00018218,  0.00017069,  0.00015953,  0.00014871,
1655      0.00013827,  0.00012823,  0.00011861,  0.00010942,
1656      0.00010067,  0.00009236,  0.00008448,  0.00007703,
1657      0.00006999,  0.00006337,  0.00005714,  0.00005129,
1658      0.00004583,  0.00004072,  0.00003597,  0.00003157,
1659      0.00002752,  0.00002380,  0.00002042,  0.00001736,
1660      0.00001461,  0.00001215,  0.00000998,  0.00000807,
1661      0.00000641,  0.00000499,  0.00000378,  0.00000278,
1662      0.00000196,  0.00000132,  0.00000082,  0.00000046,
1663      0.00000020,  0.00000005, -0.00000003, -0.00000006,
1664     -0.00000004, -0.00000001,  0.00000001,  0.00000001,
1665      0.00000001,  0.00000001, -0.00000001, -0.00000004,
1666     -0.00000005, -0.00000003,  0.00000005,  0.00000020,
1667      0.00000043,  0.00000077,  0.00000123,  0.00000183,
1668      0.00000257,  0.00000348,  0.00000455,  0.00000581,
1669      0.00000727,  0.00000893,  0.00001080,  0.00001290,
1670      0.00001522,  0.00001778,  0.00002057,  0.00002362,
1671      0.00002691,  0.00003044,  0.00003422,  0.00003824,
1672      0.00004250,  0.00004701,  0.00005176,  0.00005676,
1673      0.00006200,  0.00006749,  0.00007322,  0.00007920,
1674      0.00008541,  0.00009186,  0.00009854,  0.00010543,
1675      0.00011251,  0.00011975,  0.00012714,  0.00013465,
1676      0.00014227,  0.00014997,  0.00015775,  0.00016558,
1677      0.00017348,  0.00018144,  0.00018947,  0.00019756,
1678      0.00020573,  0.00021399,  0.00022233,  0.00023076,
1679      0.00023924,  0.00024773,  0.00025621,  0.00026462,
1680      0.00027293,  0.00028108,  0.00028904,  0.00029675,
1681      0.00030419,  0.00031132,  0.00031810,  0.00032453,
1682      0.00033061,  0.00033632,  0.00034169,  0.00034672,
1683      0.00035142,  0.00035580,  0.00035988,  0.00036369,
1684      0.00036723,  0.00037053,  0.00037361,  0.00037647,
1685      0.00037909,  0.00038145,  0.00038352,  0.00038527,
1686      0.00038663,  0.00038757,  0.00038801,  0.00038790,
1687      0.00038717,  0.00038572,  0.00038350,  0.00038044,
1688      0.00037651,  0.00037170,  0.00036597,  0.00035936,
1689      0.00035191,  0.00034370,  0.00033480,  0.00032531,
1690      0.00031537,  0.00030512,  0.00029470,  0.00028417,
1691      0.00027354,  0.00026279,  0.00025191,  0.00024081,
1692      0.00022933,  0.00021731,  0.00020458,  0.00019101,
1693      0.00017654,  0.00016106,  0.00014452,  0.00012694,
1694      0.00010848,  0.00008929,  0.00006953,  0.00004935,
1695      0.00002884,  0.00000813, -0.00001268, -0.00003357,
1696     -0.00005457, -0.00007574, -0.00009714, -0.00011882,
1697     -0.00014082, -0.00016318, -0.00018595, -0.00020912,
1698     -0.00023265, -0.00025650, -0.00028060, -0.00030492,
1699     -0.00032941, -0.00035400, -0.00037865, -0.00040333,
1700     -0.00042804, -0.00045279, -0.00047759, -0.00050243,
1701     -0.00052728, -0.00055209, -0.00057685, -0.00060153,
1702     -0.00062611, -0.00065056, -0.00067485, -0.00069895,
1703     -0.00072287, -0.00074660, -0.00077013, -0.00079345,
1704     -0.00081653, -0.00083936, -0.00086192, -0.00088421,
1705     -0.00090619, -0.00092786, -0.00094919, -0.00097017,
1706     -0.00099077, -0.00101098, -0.00103077, -0.00105012,
1707     -0.00106904, -0.00108750, -0.00110549, -0.00112301,
1708     -0.00114005, -0.00115660, -0.00117265, -0.00118821,
1709     -0.00120325, -0.00121779, -0.00123180, -0.00124528,
1710     -0.00125822, -0.00127061, -0.00128243, -0.00129368,
1711     -0.00130435, -0.00131445, -0.00132395, -0.00133285,
1712     -0.00134113, -0.00134878, -0.00135577, -0.00136215,
1713     -0.00136797, -0.00137333, -0.00137834, -0.00138305,
1714     -0.00138748, -0.00139163, -0.00139551, -0.00139913,
1715     -0.00140249, -0.00140559, -0.00140844, -0.00141102,
1716     -0.00141334, -0.00141538, -0.00141714, -0.00141861,
1717     -0.00141978, -0.00142064, -0.00142117, -0.00142138,
1718     -0.00142125, -0.00142077, -0.00141992, -0.00141870,
1719     -0.00141710, -0.00141510, -0.00141268, -0.00140986,
1720     -0.00140663, -0.00140301, -0.00139900, -0.00139460,
1721     -0.00138981, -0.00138464, -0.00137908, -0.00137313,
1722     -0.00136680, -0.00136010, -0.00135301, -0.00134555,
1723     -0.00133772, -0.00132952, -0.00132095, -0.00131201,
1724     -0.00130272, -0.00129307, -0.00128309, -0.00127277,
1725     -0.00126211, -0.00125113, -0.00123981, -0.00122817,
1726     -0.00121622, -0.00120397, -0.00119141, -0.00117859,
1727     -0.00116552, -0.00115223, -0.00113877, -0.00112517,
1728     -0.00111144, -0.00109764, -0.00108377, -0.00106989,
1729 };
1730