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
36DECLARE_ALIGNED(32, float,  ff_aac_kbd_long_1024)[1024];
37DECLARE_ALIGNED(32, float,  ff_aac_kbd_short_128)[128];
38
39const uint8_t ff_aac_num_swb_1024[] = {
40    41, 41, 47, 49, 49, 51, 47, 47, 43, 43, 43, 40, 40
41};
42
43const uint8_t ff_aac_num_swb_512[] = {
44     0,  0,  0, 36, 36, 37, 31, 31,  0,  0,  0,  0,  0
45};
46
47const uint8_t ff_aac_num_swb_128[] = {
48    12, 12, 12, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15
49};
50
51const uint8_t ff_aac_pred_sfb_max[] = {
52    33, 33, 38, 40, 40, 40, 41, 41, 37, 37, 37, 34, 34
53};
54
55const 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
74const 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
85static 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
99static 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
108static 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
122static 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
131static 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
145static 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
154static 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
168static 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
177static 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
191static 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
200static 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
214static 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
223static 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
234static 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
241static 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
252static 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
259static 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
284static 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
298static 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
323static 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
337static 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
377static 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
399const uint16_t * const ff_aac_spectral_codes[11] = {
400    codes1,  codes2,  codes3, codes4, codes5, codes6, codes7, codes8,
401    codes9, codes10, codes11,
402};
403
404const uint8_t * const ff_aac_spectral_bits[11] = {
405    bits1,  bits2,  bits3, bits4, bits5, bits6, bits7, bits8,
406    bits9, bits10, bits11,
407};
408
409const 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 */
417static 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
501static 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
585static 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
629static 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
664static 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
752static 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
900const 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
907static 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 */
916static 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
928static 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 */
939static 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 */
957static 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 */
974static 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
1003static 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 */
1019static 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
1056const 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
1065const 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
1089static 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
1098static const uint16_t swb_offset_128_96[] = {
1099    0, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 92, 128
1100};
1101
1102static 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
1111static 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
1121static 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
1129static 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
1134static 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
1144static 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
1152static 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
1161static 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
1168static 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
1173static 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
1182static 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
1187static 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
1196static 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
1201const 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
1209const 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
1217const 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 */
1235const uint8_t ff_tns_max_bands_1024[] = {
1236    31, 31, 34, 40, 42, 51, 46, 46, 42, 42, 42, 39, 39
1237};
1238
1239const uint8_t ff_tns_max_bands_512[] = {
1240    0, 0, 0, 31, 32, 37, 31, 31, 0, 0, 0, 0, 0
1241};
1242
1243const uint8_t ff_tns_max_bands_128[] = {
1244    9, 9, 10, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14
1245};
1246// @}
1247
1248const 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