Sync already committed code with that in SoC and commit more OKed hunks of code
[ffmpeg.git] / libavcodec / aactab.c
1 /*
2  * AAC data
3  * Copyright (c) 2005-2006 Oded Shimon ( ods15 ods15 dyndns org )
4  * Copyright (c) 2006-2007 Maxim Gavrilov ( maxim.gavrilov gmail com )
5  *
6  * This file is part of 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 aactab.c
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
33 #include <stdint.h>
34
35 const uint32_t ff_aac_scalefactor_code[121] = {
36     0x3ffe8, 0x3ffe6, 0x3ffe7, 0x3ffe5, 0x7fff5, 0x7fff1, 0x7ffed, 0x7fff6,
37     0x7ffee, 0x7ffef, 0x7fff0, 0x7fffc, 0x7fffd, 0x7ffff, 0x7fffe, 0x7fff7,
38     0x7fff8, 0x7fffb, 0x7fff9, 0x3ffe4, 0x7fffa, 0x3ffe3, 0x1ffef, 0x1fff0,
39     0x0fff5, 0x1ffee, 0x0fff2, 0x0fff3, 0x0fff4, 0x0fff1, 0x07ff6, 0x07ff7,
40     0x03ff9, 0x03ff5, 0x03ff7, 0x03ff3, 0x03ff6, 0x03ff2, 0x01ff7, 0x01ff5,
41     0x00ff9, 0x00ff7, 0x00ff6, 0x007f9, 0x00ff4, 0x007f8, 0x003f9, 0x003f7,
42     0x003f5, 0x001f8, 0x001f7, 0x000fa, 0x000f8, 0x000f6, 0x00079, 0x0003a,
43     0x00038, 0x0001a, 0x0000b, 0x00004, 0x00000, 0x0000a, 0x0000c, 0x0001b,
44     0x00039, 0x0003b, 0x00078, 0x0007a, 0x000f7, 0x000f9, 0x001f6, 0x001f9,
45     0x003f4, 0x003f6, 0x003f8, 0x007f5, 0x007f4, 0x007f6, 0x007f7, 0x00ff5,
46     0x00ff8, 0x01ff4, 0x01ff6, 0x01ff8, 0x03ff8, 0x03ff4, 0x0fff0, 0x07ff4,
47     0x0fff6, 0x07ff5, 0x3ffe2, 0x7ffd9, 0x7ffda, 0x7ffdb, 0x7ffdc, 0x7ffdd,
48     0x7ffde, 0x7ffd8, 0x7ffd2, 0x7ffd3, 0x7ffd4, 0x7ffd5, 0x7ffd6, 0x7fff2,
49     0x7ffdf, 0x7ffe7, 0x7ffe8, 0x7ffe9, 0x7ffea, 0x7ffeb, 0x7ffe6, 0x7ffe0,
50     0x7ffe1, 0x7ffe2, 0x7ffe3, 0x7ffe4, 0x7ffe5, 0x7ffd7, 0x7ffec, 0x7fff4,
51     0x7fff3,
52 };
53
54 const uint8_t ff_aac_scalefactor_bits[121] = {
55     18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
56     19, 19, 19, 18, 19, 18, 17, 17, 16, 17, 16, 16, 16, 16, 15, 15,
57     14, 14, 14, 14, 14, 14, 13, 13, 12, 12, 12, 11, 12, 11, 10, 10,
58     10,  9,  9,  8,  8,  8,  7,  6,  6,  5,  4,  3,  1,  4,  4,  5,
59      6,  6,  7,  7,  8,  8,  9,  9, 10, 10, 10, 11, 11, 11, 11, 12,
60     12, 13, 13, 13, 14, 14, 16, 15, 16, 15, 18, 19, 19, 19, 19, 19,
61     19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
62     19, 19, 19, 19, 19, 19, 19, 19, 19,
63 };
64
65 static const uint16_t codes1[81] = {
66     0x7f8, 0x1f1, 0x7fd, 0x3f5, 0x068, 0x3f0, 0x7f7, 0x1ec,
67     0x7f5, 0x3f1, 0x072, 0x3f4, 0x074, 0x011, 0x076, 0x1eb,
68     0x06c, 0x3f6, 0x7fc, 0x1e1, 0x7f1, 0x1f0, 0x061, 0x1f6,
69     0x7f2, 0x1ea, 0x7fb, 0x1f2, 0x069, 0x1ed, 0x077, 0x017,
70     0x06f, 0x1e6, 0x064, 0x1e5, 0x067, 0x015, 0x062, 0x012,
71     0x000, 0x014, 0x065, 0x016, 0x06d, 0x1e9, 0x063, 0x1e4,
72     0x06b, 0x013, 0x071, 0x1e3, 0x070, 0x1f3, 0x7fe, 0x1e7,
73     0x7f3, 0x1ef, 0x060, 0x1ee, 0x7f0, 0x1e2, 0x7fa, 0x3f3,
74     0x06a, 0x1e8, 0x075, 0x010, 0x073, 0x1f4, 0x06e, 0x3f7,
75     0x7f6, 0x1e0, 0x7f9, 0x3f2, 0x066, 0x1f5, 0x7ff, 0x1f7,
76     0x7f4,
77 };
78
79 static const uint8_t bits1[81] = {
80     11,  9, 11, 10,  7, 10, 11,  9, 11, 10,  7, 10,  7,  5,  7,  9,
81      7, 10, 11,  9, 11,  9,  7,  9, 11,  9, 11,  9,  7,  9,  7,  5,
82      7,  9,  7,  9,  7,  5,  7,  5,  1,  5,  7,  5,  7,  9,  7,  9,
83      7,  5,  7,  9,  7,  9, 11,  9, 11,  9,  7,  9, 11,  9, 11, 10,
84      7,  9,  7,  5,  7,  9,  7, 10, 11,  9, 11, 10,  7,  9, 11,  9,
85     11,
86 };
87
88 static const uint16_t codes2[81] = {
89     0x1f3, 0x06f, 0x1fd, 0x0eb, 0x023, 0x0ea, 0x1f7, 0x0e8,
90     0x1fa, 0x0f2, 0x02d, 0x070, 0x020, 0x006, 0x02b, 0x06e,
91     0x028, 0x0e9, 0x1f9, 0x066, 0x0f8, 0x0e7, 0x01b, 0x0f1,
92     0x1f4, 0x06b, 0x1f5, 0x0ec, 0x02a, 0x06c, 0x02c, 0x00a,
93     0x027, 0x067, 0x01a, 0x0f5, 0x024, 0x008, 0x01f, 0x009,
94     0x000, 0x007, 0x01d, 0x00b, 0x030, 0x0ef, 0x01c, 0x064,
95     0x01e, 0x00c, 0x029, 0x0f3, 0x02f, 0x0f0, 0x1fc, 0x071,
96     0x1f2, 0x0f4, 0x021, 0x0e6, 0x0f7, 0x068, 0x1f8, 0x0ee,
97     0x022, 0x065, 0x031, 0x002, 0x026, 0x0ed, 0x025, 0x06a,
98     0x1fb, 0x072, 0x1fe, 0x069, 0x02e, 0x0f6, 0x1ff, 0x06d,
99     0x1f6,
100 };
101
102 static const uint8_t bits2[81] = {
103     9, 7, 9, 8, 6, 8, 9, 8, 9, 8, 6, 7, 6, 5, 6, 7,
104     6, 8, 9, 7, 8, 8, 6, 8, 9, 7, 9, 8, 6, 7, 6, 5,
105     6, 7, 6, 8, 6, 5, 6, 5, 3, 5, 6, 5, 6, 8, 6, 7,
106     6, 5, 6, 8, 6, 8, 9, 7, 9, 8, 6, 8, 8, 7, 9, 8,
107     6, 7, 6, 4, 6, 8, 6, 7, 9, 7, 9, 7, 6, 8, 9, 7,
108     9,
109 };
110
111 static const uint16_t codes3[81] = {
112     0x0000, 0x0009, 0x00ef, 0x000b, 0x0019, 0x00f0, 0x01eb, 0x01e6,
113     0x03f2, 0x000a, 0x0035, 0x01ef, 0x0034, 0x0037, 0x01e9, 0x01ed,
114     0x01e7, 0x03f3, 0x01ee, 0x03ed, 0x1ffa, 0x01ec, 0x01f2, 0x07f9,
115     0x07f8, 0x03f8, 0x0ff8, 0x0008, 0x0038, 0x03f6, 0x0036, 0x0075,
116     0x03f1, 0x03eb, 0x03ec, 0x0ff4, 0x0018, 0x0076, 0x07f4, 0x0039,
117     0x0074, 0x03ef, 0x01f3, 0x01f4, 0x07f6, 0x01e8, 0x03ea, 0x1ffc,
118     0x00f2, 0x01f1, 0x0ffb, 0x03f5, 0x07f3, 0x0ffc, 0x00ee, 0x03f7,
119     0x7ffe, 0x01f0, 0x07f5, 0x7ffd, 0x1ffb, 0x3ffa, 0xffff, 0x00f1,
120     0x03f0, 0x3ffc, 0x01ea, 0x03ee, 0x3ffb, 0x0ff6, 0x0ffa, 0x7ffc,
121     0x07f2, 0x0ff5, 0xfffe, 0x03f4, 0x07f7, 0x7ffb, 0x0ff7, 0x0ff9,
122     0x7ffa,
123 };
124
125 static const uint8_t bits3[81] = {
126      1,  4,  8,  4,  5,  8,  9,  9, 10,  4,  6,  9,  6,  6,  9,  9,
127      9, 10,  9, 10, 13,  9,  9, 11, 11, 10, 12,  4,  6, 10,  6,  7,
128     10, 10, 10, 12,  5,  7, 11,  6,  7, 10,  9,  9, 11,  9, 10, 13,
129      8,  9, 12, 10, 11, 12,  8, 10, 15,  9, 11, 15, 13, 14, 16,  8,
130     10, 14,  9, 10, 14, 12, 12, 15, 11, 12, 16, 10, 11, 15, 12, 12,
131     15,
132 };
133
134 static const uint16_t codes4[81] = {
135     0x007, 0x016, 0x0f6, 0x018, 0x008, 0x0ef, 0x1ef, 0x0f3,
136     0x7f8, 0x019, 0x017, 0x0ed, 0x015, 0x001, 0x0e2, 0x0f0,
137     0x070, 0x3f0, 0x1ee, 0x0f1, 0x7fa, 0x0ee, 0x0e4, 0x3f2,
138     0x7f6, 0x3ef, 0x7fd, 0x005, 0x014, 0x0f2, 0x009, 0x004,
139     0x0e5, 0x0f4, 0x0e8, 0x3f4, 0x006, 0x002, 0x0e7, 0x003,
140     0x000, 0x06b, 0x0e3, 0x069, 0x1f3, 0x0eb, 0x0e6, 0x3f6,
141     0x06e, 0x06a, 0x1f4, 0x3ec, 0x1f0, 0x3f9, 0x0f5, 0x0ec,
142     0x7fb, 0x0ea, 0x06f, 0x3f7, 0x7f9, 0x3f3, 0xfff, 0x0e9,
143     0x06d, 0x3f8, 0x06c, 0x068, 0x1f5, 0x3ee, 0x1f2, 0x7f4,
144     0x7f7, 0x3f1, 0xffe, 0x3ed, 0x1f1, 0x7f5, 0x7fe, 0x3f5,
145     0x7fc,
146 };
147
148 static const uint8_t bits4[81] = {
149      4,  5,  8,  5,  4,  8,  9,  8, 11,  5,  5,  8,  5,  4,  8,  8,
150      7, 10,  9,  8, 11,  8,  8, 10, 11, 10, 11,  4,  5,  8,  4,  4,
151      8,  8,  8, 10,  4,  4,  8,  4,  4,  7,  8,  7,  9,  8,  8, 10,
152      7,  7,  9, 10,  9, 10,  8,  8, 11,  8,  7, 10, 11, 10, 12,  8,
153      7, 10,  7,  7,  9, 10,  9, 11, 11, 10, 12, 10,  9, 11, 11, 10,
154     11,
155 };
156
157 static const uint16_t codes5[81] = {
158     0x1fff, 0x0ff7, 0x07f4, 0x07e8, 0x03f1, 0x07ee, 0x07f9, 0x0ff8,
159     0x1ffd, 0x0ffd, 0x07f1, 0x03e8, 0x01e8, 0x00f0, 0x01ec, 0x03ee,
160     0x07f2, 0x0ffa, 0x0ff4, 0x03ef, 0x01f2, 0x00e8, 0x0070, 0x00ec,
161     0x01f0, 0x03ea, 0x07f3, 0x07eb, 0x01eb, 0x00ea, 0x001a, 0x0008,
162     0x0019, 0x00ee, 0x01ef, 0x07ed, 0x03f0, 0x00f2, 0x0073, 0x000b,
163     0x0000, 0x000a, 0x0071, 0x00f3, 0x07e9, 0x07ef, 0x01ee, 0x00ef,
164     0x0018, 0x0009, 0x001b, 0x00eb, 0x01e9, 0x07ec, 0x07f6, 0x03eb,
165     0x01f3, 0x00ed, 0x0072, 0x00e9, 0x01f1, 0x03ed, 0x07f7, 0x0ff6,
166     0x07f0, 0x03e9, 0x01ed, 0x00f1, 0x01ea, 0x03ec, 0x07f8, 0x0ff9,
167     0x1ffc, 0x0ffc, 0x0ff5, 0x07ea, 0x03f3, 0x03f2, 0x07f5, 0x0ffb,
168     0x1ffe,
169 };
170
171 static const uint8_t bits5[81] = {
172     13, 12, 11, 11, 10, 11, 11, 12, 13, 12, 11, 10,  9,  8,  9, 10,
173     11, 12, 12, 10,  9,  8,  7,  8,  9, 10, 11, 11,  9,  8,  5,  4,
174      5,  8,  9, 11, 10,  8,  7,  4,  1,  4,  7,  8, 11, 11,  9,  8,
175      5,  4,  5,  8,  9, 11, 11, 10,  9,  8,  7,  8,  9, 10, 11, 12,
176     11, 10,  9,  8,  9, 10, 11, 12, 13, 12, 12, 11, 10, 10, 11, 12,
177     13,
178 };
179
180 static const uint16_t codes6[81] = {
181     0x7fe, 0x3fd, 0x1f1, 0x1eb, 0x1f4, 0x1ea, 0x1f0, 0x3fc,
182     0x7fd, 0x3f6, 0x1e5, 0x0ea, 0x06c, 0x071, 0x068, 0x0f0,
183     0x1e6, 0x3f7, 0x1f3, 0x0ef, 0x032, 0x027, 0x028, 0x026,
184     0x031, 0x0eb, 0x1f7, 0x1e8, 0x06f, 0x02e, 0x008, 0x004,
185     0x006, 0x029, 0x06b, 0x1ee, 0x1ef, 0x072, 0x02d, 0x002,
186     0x000, 0x003, 0x02f, 0x073, 0x1fa, 0x1e7, 0x06e, 0x02b,
187     0x007, 0x001, 0x005, 0x02c, 0x06d, 0x1ec, 0x1f9, 0x0ee,
188     0x030, 0x024, 0x02a, 0x025, 0x033, 0x0ec, 0x1f2, 0x3f8,
189     0x1e4, 0x0ed, 0x06a, 0x070, 0x069, 0x074, 0x0f1, 0x3fa,
190     0x7ff, 0x3f9, 0x1f6, 0x1ed, 0x1f8, 0x1e9, 0x1f5, 0x3fb,
191     0x7fc,
192 };
193
194 static const uint8_t bits6[81] = {
195     11, 10,  9,  9,  9,  9,  9, 10, 11, 10,  9,  8,  7,  7,  7,  8,
196      9, 10,  9,  8,  6,  6,  6,  6,  6,  8,  9,  9,  7,  6,  4,  4,
197      4,  6,  7,  9,  9,  7,  6,  4,  4,  4,  6,  7,  9,  9,  7,  6,
198      4,  4,  4,  6,  7,  9,  9,  8,  6,  6,  6,  6,  6,  8,  9, 10,
199      9,  8,  7,  7,  7,  7,  8, 10, 11, 10,  9,  9,  9,  9,  9, 10,
200     11,
201 };
202
203 static const uint16_t codes7[64] = {
204     0x000, 0x005, 0x037, 0x074, 0x0f2, 0x1eb, 0x3ed, 0x7f7,
205     0x004, 0x00c, 0x035, 0x071, 0x0ec, 0x0ee, 0x1ee, 0x1f5,
206     0x036, 0x034, 0x072, 0x0ea, 0x0f1, 0x1e9, 0x1f3, 0x3f5,
207     0x073, 0x070, 0x0eb, 0x0f0, 0x1f1, 0x1f0, 0x3ec, 0x3fa,
208     0x0f3, 0x0ed, 0x1e8, 0x1ef, 0x3ef, 0x3f1, 0x3f9, 0x7fb,
209     0x1ed, 0x0ef, 0x1ea, 0x1f2, 0x3f3, 0x3f8, 0x7f9, 0x7fc,
210     0x3ee, 0x1ec, 0x1f4, 0x3f4, 0x3f7, 0x7f8, 0xffd, 0xffe,
211     0x7f6, 0x3f0, 0x3f2, 0x3f6, 0x7fa, 0x7fd, 0xffc, 0xfff,
212 };
213
214 static const uint8_t bits7[64] = {
215      1,  3,  6,  7,  8,  9, 10, 11,  3,  4,  6,  7,  8,  8,  9,  9,
216      6,  6,  7,  8,  8,  9,  9, 10,  7,  7,  8,  8,  9,  9, 10, 10,
217      8,  8,  9,  9, 10, 10, 10, 11,  9,  8,  9,  9, 10, 10, 11, 11,
218     10,  9,  9, 10, 10, 11, 12, 12, 11, 10, 10, 10, 11, 11, 12, 12,
219 };
220
221 static const uint16_t codes8[64] = {
222     0x00e, 0x005, 0x010, 0x030, 0x06f, 0x0f1, 0x1fa, 0x3fe,
223     0x003, 0x000, 0x004, 0x012, 0x02c, 0x06a, 0x075, 0x0f8,
224     0x00f, 0x002, 0x006, 0x014, 0x02e, 0x069, 0x072, 0x0f5,
225     0x02f, 0x011, 0x013, 0x02a, 0x032, 0x06c, 0x0ec, 0x0fa,
226     0x071, 0x02b, 0x02d, 0x031, 0x06d, 0x070, 0x0f2, 0x1f9,
227     0x0ef, 0x068, 0x033, 0x06b, 0x06e, 0x0ee, 0x0f9, 0x3fc,
228     0x1f8, 0x074, 0x073, 0x0ed, 0x0f0, 0x0f6, 0x1f6, 0x1fd,
229     0x3fd, 0x0f3, 0x0f4, 0x0f7, 0x1f7, 0x1fb, 0x1fc, 0x3ff,
230 };
231
232 static const uint8_t bits8[64] = {
233      5,  4,  5,  6,  7,  8,  9, 10,  4,  3,  4,  5,  6,  7,  7,  8,
234      5,  4,  4,  5,  6,  7,  7,  8,  6,  5,  5,  6,  6,  7,  8,  8,
235      7,  6,  6,  6,  7,  7,  8,  9,  8,  7,  6,  7,  7,  8,  8, 10,
236      9,  7,  7,  8,  8,  8,  9,  9, 10,  8,  8,  8,  9,  9,  9, 10,
237 };
238
239 static const uint16_t codes9[169] = {
240     0x0000, 0x0005, 0x0037, 0x00e7, 0x01de, 0x03ce, 0x03d9, 0x07c8,
241     0x07cd, 0x0fc8, 0x0fdd, 0x1fe4, 0x1fec, 0x0004, 0x000c, 0x0035,
242     0x0072, 0x00ea, 0x00ed, 0x01e2, 0x03d1, 0x03d3, 0x03e0, 0x07d8,
243     0x0fcf, 0x0fd5, 0x0036, 0x0034, 0x0071, 0x00e8, 0x00ec, 0x01e1,
244     0x03cf, 0x03dd, 0x03db, 0x07d0, 0x0fc7, 0x0fd4, 0x0fe4, 0x00e6,
245     0x0070, 0x00e9, 0x01dd, 0x01e3, 0x03d2, 0x03dc, 0x07cc, 0x07ca,
246     0x07de, 0x0fd8, 0x0fea, 0x1fdb, 0x01df, 0x00eb, 0x01dc, 0x01e6,
247     0x03d5, 0x03de, 0x07cb, 0x07dd, 0x07dc, 0x0fcd, 0x0fe2, 0x0fe7,
248     0x1fe1, 0x03d0, 0x01e0, 0x01e4, 0x03d6, 0x07c5, 0x07d1, 0x07db,
249     0x0fd2, 0x07e0, 0x0fd9, 0x0feb, 0x1fe3, 0x1fe9, 0x07c4, 0x01e5,
250     0x03d7, 0x07c6, 0x07cf, 0x07da, 0x0fcb, 0x0fda, 0x0fe3, 0x0fe9,
251     0x1fe6, 0x1ff3, 0x1ff7, 0x07d3, 0x03d8, 0x03e1, 0x07d4, 0x07d9,
252     0x0fd3, 0x0fde, 0x1fdd, 0x1fd9, 0x1fe2, 0x1fea, 0x1ff1, 0x1ff6,
253     0x07d2, 0x03d4, 0x03da, 0x07c7, 0x07d7, 0x07e2, 0x0fce, 0x0fdb,
254     0x1fd8, 0x1fee, 0x3ff0, 0x1ff4, 0x3ff2, 0x07e1, 0x03df, 0x07c9,
255     0x07d6, 0x0fca, 0x0fd0, 0x0fe5, 0x0fe6, 0x1feb, 0x1fef, 0x3ff3,
256     0x3ff4, 0x3ff5, 0x0fe0, 0x07ce, 0x07d5, 0x0fc6, 0x0fd1, 0x0fe1,
257     0x1fe0, 0x1fe8, 0x1ff0, 0x3ff1, 0x3ff8, 0x3ff6, 0x7ffc, 0x0fe8,
258     0x07df, 0x0fc9, 0x0fd7, 0x0fdc, 0x1fdc, 0x1fdf, 0x1fed, 0x1ff5,
259     0x3ff9, 0x3ffb, 0x7ffd, 0x7ffe, 0x1fe7, 0x0fcc, 0x0fd6, 0x0fdf,
260     0x1fde, 0x1fda, 0x1fe5, 0x1ff2, 0x3ffa, 0x3ff7, 0x3ffc, 0x3ffd,
261     0x7fff,
262 };
263
264 static const uint8_t bits9[169] = {
265      1,  3,  6,  8,  9, 10, 10, 11, 11, 12, 12, 13, 13,  3,  4,  6,
266      7,  8,  8,  9, 10, 10, 10, 11, 12, 12,  6,  6,  7,  8,  8,  9,
267     10, 10, 10, 11, 12, 12, 12,  8,  7,  8,  9,  9, 10, 10, 11, 11,
268     11, 12, 12, 13,  9,  8,  9,  9, 10, 10, 11, 11, 11, 12, 12, 12,
269     13, 10,  9,  9, 10, 11, 11, 11, 12, 11, 12, 12, 13, 13, 11,  9,
270     10, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 11, 10, 10, 11, 11,
271     12, 12, 13, 13, 13, 13, 13, 13, 11, 10, 10, 11, 11, 11, 12, 12,
272     13, 13, 14, 13, 14, 11, 10, 11, 11, 12, 12, 12, 12, 13, 13, 14,
273     14, 14, 12, 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 14, 15, 12,
274     11, 12, 12, 12, 13, 13, 13, 13, 14, 14, 15, 15, 13, 12, 12, 12,
275     13, 13, 13, 13, 14, 14, 14, 14, 15,
276 };
277
278 static const uint16_t codes10[169] = {
279     0x022, 0x008, 0x01d, 0x026, 0x05f, 0x0d3, 0x1cf, 0x3d0,
280     0x3d7, 0x3ed, 0x7f0, 0x7f6, 0xffd, 0x007, 0x000, 0x001,
281     0x009, 0x020, 0x054, 0x060, 0x0d5, 0x0dc, 0x1d4, 0x3cd,
282     0x3de, 0x7e7, 0x01c, 0x002, 0x006, 0x00c, 0x01e, 0x028,
283     0x05b, 0x0cd, 0x0d9, 0x1ce, 0x1dc, 0x3d9, 0x3f1, 0x025,
284     0x00b, 0x00a, 0x00d, 0x024, 0x057, 0x061, 0x0cc, 0x0dd,
285     0x1cc, 0x1de, 0x3d3, 0x3e7, 0x05d, 0x021, 0x01f, 0x023,
286     0x027, 0x059, 0x064, 0x0d8, 0x0df, 0x1d2, 0x1e2, 0x3dd,
287     0x3ee, 0x0d1, 0x055, 0x029, 0x056, 0x058, 0x062, 0x0ce,
288     0x0e0, 0x0e2, 0x1da, 0x3d4, 0x3e3, 0x7eb, 0x1c9, 0x05e,
289     0x05a, 0x05c, 0x063, 0x0ca, 0x0da, 0x1c7, 0x1ca, 0x1e0,
290     0x3db, 0x3e8, 0x7ec, 0x1e3, 0x0d2, 0x0cb, 0x0d0, 0x0d7,
291     0x0db, 0x1c6, 0x1d5, 0x1d8, 0x3ca, 0x3da, 0x7ea, 0x7f1,
292     0x1e1, 0x0d4, 0x0cf, 0x0d6, 0x0de, 0x0e1, 0x1d0, 0x1d6,
293     0x3d1, 0x3d5, 0x3f2, 0x7ee, 0x7fb, 0x3e9, 0x1cd, 0x1c8,
294     0x1cb, 0x1d1, 0x1d7, 0x1df, 0x3cf, 0x3e0, 0x3ef, 0x7e6,
295     0x7f8, 0xffa, 0x3eb, 0x1dd, 0x1d3, 0x1d9, 0x1db, 0x3d2,
296     0x3cc, 0x3dc, 0x3ea, 0x7ed, 0x7f3, 0x7f9, 0xff9, 0x7f2,
297     0x3ce, 0x1e4, 0x3cb, 0x3d8, 0x3d6, 0x3e2, 0x3e5, 0x7e8,
298     0x7f4, 0x7f5, 0x7f7, 0xffb, 0x7fa, 0x3ec, 0x3df, 0x3e1,
299     0x3e4, 0x3e6, 0x3f0, 0x7e9, 0x7ef, 0xff8, 0xffe, 0xffc,
300     0xfff,
301 };
302
303 static const uint8_t bits10[169] = {
304      6,  5,  6,  6,  7,  8,  9, 10, 10, 10, 11, 11, 12,  5,  4,  4,
305      5,  6,  7,  7,  8,  8,  9, 10, 10, 11,  6,  4,  5,  5,  6,  6,
306      7,  8,  8,  9,  9, 10, 10,  6,  5,  5,  5,  6,  7,  7,  8,  8,
307      9,  9, 10, 10,  7,  6,  6,  6,  6,  7,  7,  8,  8,  9,  9, 10,
308     10,  8,  7,  6,  7,  7,  7,  8,  8,  8,  9, 10, 10, 11,  9,  7,
309      7,  7,  7,  8,  8,  9,  9,  9, 10, 10, 11,  9,  8,  8,  8,  8,
310      8,  9,  9,  9, 10, 10, 11, 11,  9,  8,  8,  8,  8,  8,  9,  9,
311     10, 10, 10, 11, 11, 10,  9,  9,  9,  9,  9,  9, 10, 10, 10, 11,
312     11, 12, 10,  9,  9,  9,  9, 10, 10, 10, 10, 11, 11, 11, 12, 11,
313     10,  9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 12, 11, 10, 10, 10,
314     10, 10, 10, 11, 11, 12, 12, 12, 12,
315 };
316
317 static const uint16_t codes11[289] = {
318     0x000, 0x006, 0x019, 0x03d, 0x09c, 0x0c6, 0x1a7, 0x390,
319     0x3c2, 0x3df, 0x7e6, 0x7f3, 0xffb, 0x7ec, 0xffa, 0xffe,
320     0x38e, 0x005, 0x001, 0x008, 0x014, 0x037, 0x042, 0x092,
321     0x0af, 0x191, 0x1a5, 0x1b5, 0x39e, 0x3c0, 0x3a2, 0x3cd,
322     0x7d6, 0x0ae, 0x017, 0x007, 0x009, 0x018, 0x039, 0x040,
323     0x08e, 0x0a3, 0x0b8, 0x199, 0x1ac, 0x1c1, 0x3b1, 0x396,
324     0x3be, 0x3ca, 0x09d, 0x03c, 0x015, 0x016, 0x01a, 0x03b,
325     0x044, 0x091, 0x0a5, 0x0be, 0x196, 0x1ae, 0x1b9, 0x3a1,
326     0x391, 0x3a5, 0x3d5, 0x094, 0x09a, 0x036, 0x038, 0x03a,
327     0x041, 0x08c, 0x09b, 0x0b0, 0x0c3, 0x19e, 0x1ab, 0x1bc,
328     0x39f, 0x38f, 0x3a9, 0x3cf, 0x093, 0x0bf, 0x03e, 0x03f,
329     0x043, 0x045, 0x09e, 0x0a7, 0x0b9, 0x194, 0x1a2, 0x1ba,
330     0x1c3, 0x3a6, 0x3a7, 0x3bb, 0x3d4, 0x09f, 0x1a0, 0x08f,
331     0x08d, 0x090, 0x098, 0x0a6, 0x0b6, 0x0c4, 0x19f, 0x1af,
332     0x1bf, 0x399, 0x3bf, 0x3b4, 0x3c9, 0x3e7, 0x0a8, 0x1b6,
333     0x0ab, 0x0a4, 0x0aa, 0x0b2, 0x0c2, 0x0c5, 0x198, 0x1a4,
334     0x1b8, 0x38c, 0x3a4, 0x3c4, 0x3c6, 0x3dd, 0x3e8, 0x0ad,
335     0x3af, 0x192, 0x0bd, 0x0bc, 0x18e, 0x197, 0x19a, 0x1a3,
336     0x1b1, 0x38d, 0x398, 0x3b7, 0x3d3, 0x3d1, 0x3db, 0x7dd,
337     0x0b4, 0x3de, 0x1a9, 0x19b, 0x19c, 0x1a1, 0x1aa, 0x1ad,
338     0x1b3, 0x38b, 0x3b2, 0x3b8, 0x3ce, 0x3e1, 0x3e0, 0x7d2,
339     0x7e5, 0x0b7, 0x7e3, 0x1bb, 0x1a8, 0x1a6, 0x1b0, 0x1b2,
340     0x1b7, 0x39b, 0x39a, 0x3ba, 0x3b5, 0x3d6, 0x7d7, 0x3e4,
341     0x7d8, 0x7ea, 0x0ba, 0x7e8, 0x3a0, 0x1bd, 0x1b4, 0x38a,
342     0x1c4, 0x392, 0x3aa, 0x3b0, 0x3bc, 0x3d7, 0x7d4, 0x7dc,
343     0x7db, 0x7d5, 0x7f0, 0x0c1, 0x7fb, 0x3c8, 0x3a3, 0x395,
344     0x39d, 0x3ac, 0x3ae, 0x3c5, 0x3d8, 0x3e2, 0x3e6, 0x7e4,
345     0x7e7, 0x7e0, 0x7e9, 0x7f7, 0x190, 0x7f2, 0x393, 0x1be,
346     0x1c0, 0x394, 0x397, 0x3ad, 0x3c3, 0x3c1, 0x3d2, 0x7da,
347     0x7d9, 0x7df, 0x7eb, 0x7f4, 0x7fa, 0x195, 0x7f8, 0x3bd,
348     0x39c, 0x3ab, 0x3a8, 0x3b3, 0x3b9, 0x3d0, 0x3e3, 0x3e5,
349     0x7e2, 0x7de, 0x7ed, 0x7f1, 0x7f9, 0x7fc, 0x193, 0xffd,
350     0x3dc, 0x3b6, 0x3c7, 0x3cc, 0x3cb, 0x3d9, 0x3da, 0x7d3,
351     0x7e1, 0x7ee, 0x7ef, 0x7f5, 0x7f6, 0xffc, 0xfff, 0x19d,
352     0x1c2, 0x0b5, 0x0a1, 0x096, 0x097, 0x095, 0x099, 0x0a0,
353     0x0a2, 0x0ac, 0x0a9, 0x0b1, 0x0b3, 0x0bb, 0x0c0, 0x18f,
354     0x004,
355 };
356
357 static const uint8_t bits11[289] = {
358      4,  5,  6,  7,  8,  8,  9, 10, 10, 10, 11, 11, 12, 11, 12, 12,
359     10,  5,  4,  5,  6,  7,  7,  8,  8,  9,  9,  9, 10, 10, 10, 10,
360     11,  8,  6,  5,  5,  6,  7,  7,  8,  8,  8,  9,  9,  9, 10, 10,
361     10, 10,  8,  7,  6,  6,  6,  7,  7,  8,  8,  8,  9,  9,  9, 10,
362     10, 10, 10,  8,  8,  7,  7,  7,  7,  8,  8,  8,  8,  9,  9,  9,
363     10, 10, 10, 10,  8,  8,  7,  7,  7,  7,  8,  8,  8,  9,  9,  9,
364      9, 10, 10, 10, 10,  8,  9,  8,  8,  8,  8,  8,  8,  8,  9,  9,
365      9, 10, 10, 10, 10, 10,  8,  9,  8,  8,  8,  8,  8,  8,  9,  9,
366      9, 10, 10, 10, 10, 10, 10,  8, 10,  9,  8,  8,  9,  9,  9,  9,
367      9, 10, 10, 10, 10, 10, 10, 11,  8, 10,  9,  9,  9,  9,  9,  9,
368      9, 10, 10, 10, 10, 10, 10, 11, 11,  8, 11,  9,  9,  9,  9,  9,
369      9, 10, 10, 10, 10, 10, 11, 10, 11, 11,  8, 11, 10,  9,  9, 10,
370      9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11,  8, 11, 10, 10, 10,
371     10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11,  9, 11, 10,  9,
372      9, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11,  9, 11, 10,
373     10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11,  9, 12,
374     10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 12, 12,  9,
375      9,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  9,
376      5,
377 };
378
379 const uint16_t *ff_aac_spectral_codes[11] = {
380     codes1,  codes2,  codes3, codes4, codes5, codes6, codes7, codes8,
381     codes9, codes10, codes11,
382 };
383
384 const uint8_t *ff_aac_spectral_bits[11] = {
385     bits1,  bits2,  bits3, bits4, bits5, bits6, bits7, bits8,
386     bits9, bits10, bits11,
387 };
388
389 const uint16_t ff_aac_spectral_sizes[11] = {
390     81, 81, 81, 81, 81, 81, 64, 64, 169, 169, 289,
391 };
392
393 static const int8_t codebook_vector0[324] = {
394  -1, -1, -1, -1, -1, -1, -1,  0, -1, -1, -1,  1, -1, -1,  0, -1,
395  -1, -1,  0,  0, -1, -1,  0,  1, -1, -1,  1, -1, -1, -1,  1,  0,
396  -1, -1,  1,  1, -1,  0, -1, -1, -1,  0, -1,  0, -1,  0, -1,  1,
397  -1,  0,  0, -1, -1,  0,  0,  0, -1,  0,  0,  1, -1,  0,  1, -1,
398  -1,  0,  1,  0, -1,  0,  1,  1, -1,  1, -1, -1, -1,  1, -1,  0,
399  -1,  1, -1,  1, -1,  1,  0, -1, -1,  1,  0,  0, -1,  1,  0,  1,
400  -1,  1,  1, -1, -1,  1,  1,  0, -1,  1,  1,  1,  0, -1, -1, -1,
401   0, -1, -1,  0,  0, -1, -1,  1,  0, -1,  0, -1,  0, -1,  0,  0,
402   0, -1,  0,  1,  0, -1,  1, -1,  0, -1,  1,  0,  0, -1,  1,  1,
403   0,  0, -1, -1,  0,  0, -1,  0,  0,  0, -1,  1,  0,  0,  0, -1,
404   0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  1, -1,  0,  0,  1,  0,
405   0,  0,  1,  1,  0,  1, -1, -1,  0,  1, -1,  0,  0,  1, -1,  1,
406   0,  1,  0, -1,  0,  1,  0,  0,  0,  1,  0,  1,  0,  1,  1, -1,
407   0,  1,  1,  0,  0,  1,  1,  1,  1, -1, -1, -1,  1, -1, -1,  0,
408   1, -1, -1,  1,  1, -1,  0, -1,  1, -1,  0,  0,  1, -1,  0,  1,
409   1, -1,  1, -1,  1, -1,  1,  0,  1, -1,  1,  1,  1,  0, -1, -1,
410   1,  0, -1,  0,  1,  0, -1,  1,  1,  0,  0, -1,  1,  0,  0,  0,
411   1,  0,  0,  1,  1,  0,  1, -1,  1,  0,  1,  0,  1,  0,  1,  1,
412   1,  1, -1, -1,  1,  1, -1,  0,  1,  1, -1,  1,  1,  1,  0, -1,
413   1,  1,  0,  0,  1,  1,  0,  1,  1,  1,  1, -1,  1,  1,  1,  0,
414   1,  1,  1,  1,
415 };
416
417 static const int8_t codebook_vector2[324] = {
418   0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  2,  0,  0,  1,  0,
419   0,  0,  1,  1,  0,  0,  1,  2,  0,  0,  2,  0,  0,  0,  2,  1,
420   0,  0,  2,  2,  0,  1,  0,  0,  0,  1,  0,  1,  0,  1,  0,  2,
421   0,  1,  1,  0,  0,  1,  1,  1,  0,  1,  1,  2,  0,  1,  2,  0,
422   0,  1,  2,  1,  0,  1,  2,  2,  0,  2,  0,  0,  0,  2,  0,  1,
423   0,  2,  0,  2,  0,  2,  1,  0,  0,  2,  1,  1,  0,  2,  1,  2,
424   0,  2,  2,  0,  0,  2,  2,  1,  0,  2,  2,  2,  1,  0,  0,  0,
425   1,  0,  0,  1,  1,  0,  0,  2,  1,  0,  1,  0,  1,  0,  1,  1,
426   1,  0,  1,  2,  1,  0,  2,  0,  1,  0,  2,  1,  1,  0,  2,  2,
427   1,  1,  0,  0,  1,  1,  0,  1,  1,  1,  0,  2,  1,  1,  1,  0,
428   1,  1,  1,  1,  1,  1,  1,  2,  1,  1,  2,  0,  1,  1,  2,  1,
429   1,  1,  2,  2,  1,  2,  0,  0,  1,  2,  0,  1,  1,  2,  0,  2,
430   1,  2,  1,  0,  1,  2,  1,  1,  1,  2,  1,  2,  1,  2,  2,  0,
431   1,  2,  2,  1,  1,  2,  2,  2,  2,  0,  0,  0,  2,  0,  0,  1,
432   2,  0,  0,  2,  2,  0,  1,  0,  2,  0,  1,  1,  2,  0,  1,  2,
433   2,  0,  2,  0,  2,  0,  2,  1,  2,  0,  2,  2,  2,  1,  0,  0,
434   2,  1,  0,  1,  2,  1,  0,  2,  2,  1,  1,  0,  2,  1,  1,  1,
435   2,  1,  1,  2,  2,  1,  2,  0,  2,  1,  2,  1,  2,  1,  2,  2,
436   2,  2,  0,  0,  2,  2,  0,  1,  2,  2,  0,  2,  2,  2,  1,  0,
437   2,  2,  1,  1,  2,  2,  1,  2,  2,  2,  2,  0,  2,  2,  2,  1,
438   2,  2,  2,  2,
439 };
440
441 static const int8_t codebook_vector4[162] = {
442  -4, -4, -4, -3, -4, -2, -4, -1, -4,  0, -4,  1, -4,  2, -4,  3,
443  -4,  4, -3, -4, -3, -3, -3, -2, -3, -1, -3,  0, -3,  1, -3,  2,
444  -3,  3, -3,  4, -2, -4, -2, -3, -2, -2, -2, -1, -2,  0, -2,  1,
445  -2,  2, -2,  3, -2,  4, -1, -4, -1, -3, -1, -2, -1, -1, -1,  0,
446  -1,  1, -1,  2, -1,  3, -1,  4,  0, -4,  0, -3,  0, -2,  0, -1,
447   0,  0,  0,  1,  0,  2,  0,  3,  0,  4,  1, -4,  1, -3,  1, -2,
448   1, -1,  1,  0,  1,  1,  1,  2,  1,  3,  1,  4,  2, -4,  2, -3,
449   2, -2,  2, -1,  2,  0,  2,  1,  2,  2,  2,  3,  2,  4,  3, -4,
450   3, -3,  3, -2,  3, -1,  3,  0,  3,  1,  3,  2,  3,  3,  3,  4,
451   4, -4,  4, -3,  4, -2,  4, -1,  4,  0,  4,  1,  4,  2,  4,  3,
452   4,  4,
453 };
454
455 static const int8_t codebook_vector6[128] = {
456   0,  0,  0,  1,  0,  2,  0,  3,  0,  4,  0,  5,  0,  6,  0,  7,
457   1,  0,  1,  1,  1,  2,  1,  3,  1,  4,  1,  5,  1,  6,  1,  7,
458   2,  0,  2,  1,  2,  2,  2,  3,  2,  4,  2,  5,  2,  6,  2,  7,
459   3,  0,  3,  1,  3,  2,  3,  3,  3,  4,  3,  5,  3,  6,  3,  7,
460   4,  0,  4,  1,  4,  2,  4,  3,  4,  4,  4,  5,  4,  6,  4,  7,
461   5,  0,  5,  1,  5,  2,  5,  3,  5,  4,  5,  5,  5,  6,  5,  7,
462   6,  0,  6,  1,  6,  2,  6,  3,  6,  4,  6,  5,  6,  6,  6,  7,
463   7,  0,  7,  1,  7,  2,  7,  3,  7,  4,  7,  5,  7,  6,  7,  7,
464 };
465
466 static const int8_t codebook_vector8[338] = {
467   0,  0,  0,  1,  0,  2,  0,  3,  0,  4,  0,  5,  0,  6,  0,  7,
468   0,  8,  0,  9,  0, 10,  0, 11,  0, 12,  1,  0,  1,  1,  1,  2,
469   1,  3,  1,  4,  1,  5,  1,  6,  1,  7,  1,  8,  1,  9,  1, 10,
470   1, 11,  1, 12,  2,  0,  2,  1,  2,  2,  2,  3,  2,  4,  2,  5,
471   2,  6,  2,  7,  2,  8,  2,  9,  2, 10,  2, 11,  2, 12,  3,  0,
472   3,  1,  3,  2,  3,  3,  3,  4,  3,  5,  3,  6,  3,  7,  3,  8,
473   3,  9,  3, 10,  3, 11,  3, 12,  4,  0,  4,  1,  4,  2,  4,  3,
474   4,  4,  4,  5,  4,  6,  4,  7,  4,  8,  4,  9,  4, 10,  4, 11,
475   4, 12,  5,  0,  5,  1,  5,  2,  5,  3,  5,  4,  5,  5,  5,  6,
476   5,  7,  5,  8,  5,  9,  5, 10,  5, 11,  5, 12,  6,  0,  6,  1,
477   6,  2,  6,  3,  6,  4,  6,  5,  6,  6,  6,  7,  6,  8,  6,  9,
478   6, 10,  6, 11,  6, 12,  7,  0,  7,  1,  7,  2,  7,  3,  7,  4,
479   7,  5,  7,  6,  7,  7,  7,  8,  7,  9,  7, 10,  7, 11,  7, 12,
480   8,  0,  8,  1,  8,  2,  8,  3,  8,  4,  8,  5,  8,  6,  8,  7,
481   8,  8,  8,  9,  8, 10,  8, 11,  8, 12,  9,  0,  9,  1,  9,  2,
482   9,  3,  9,  4,  9,  5,  9,  6,  9,  7,  9,  8,  9,  9,  9, 10,
483   9, 11,  9, 12, 10,  0, 10,  1, 10,  2, 10,  3, 10,  4, 10,  5,
484  10,  6, 10,  7, 10,  8, 10,  9, 10, 10, 10, 11, 10, 12, 11,  0,
485  11,  1, 11,  2, 11,  3, 11,  4, 11,  5, 11,  6, 11,  7, 11,  8,
486  11,  9, 11, 10, 11, 11, 11, 12, 12,  0, 12,  1, 12,  2, 12,  3,
487  12,  4, 12,  5, 12,  6, 12,  7, 12,  8, 12,  9, 12, 10, 12, 11,
488  12, 12,
489 };
490
491 static const int8_t codebook_vector10[578] = {
492   0,  0,  0,  1,  0,  2,  0,  3,  0,  4,  0,  5,  0,  6,  0,  7,
493   0,  8,  0,  9,  0, 10,  0, 11,  0, 12,  0, 13,  0, 14,  0, 15,
494   0, 16,  1,  0,  1,  1,  1,  2,  1,  3,  1,  4,  1,  5,  1,  6,
495   1,  7,  1,  8,  1,  9,  1, 10,  1, 11,  1, 12,  1, 13,  1, 14,
496   1, 15,  1, 16,  2,  0,  2,  1,  2,  2,  2,  3,  2,  4,  2,  5,
497   2,  6,  2,  7,  2,  8,  2,  9,  2, 10,  2, 11,  2, 12,  2, 13,
498   2, 14,  2, 15,  2, 16,  3,  0,  3,  1,  3,  2,  3,  3,  3,  4,
499   3,  5,  3,  6,  3,  7,  3,  8,  3,  9,  3, 10,  3, 11,  3, 12,
500   3, 13,  3, 14,  3, 15,  3, 16,  4,  0,  4,  1,  4,  2,  4,  3,
501   4,  4,  4,  5,  4,  6,  4,  7,  4,  8,  4,  9,  4, 10,  4, 11,
502   4, 12,  4, 13,  4, 14,  4, 15,  4, 16,  5,  0,  5,  1,  5,  2,
503   5,  3,  5,  4,  5,  5,  5,  6,  5,  7,  5,  8,  5,  9,  5, 10,
504   5, 11,  5, 12,  5, 13,  5, 14,  5, 15,  5, 16,  6,  0,  6,  1,
505   6,  2,  6,  3,  6,  4,  6,  5,  6,  6,  6,  7,  6,  8,  6,  9,
506   6, 10,  6, 11,  6, 12,  6, 13,  6, 14,  6, 15,  6, 16,  7,  0,
507   7,  1,  7,  2,  7,  3,  7,  4,  7,  5,  7,  6,  7,  7,  7,  8,
508   7,  9,  7, 10,  7, 11,  7, 12,  7, 13,  7, 14,  7, 15,  7, 16,
509   8,  0,  8,  1,  8,  2,  8,  3,  8,  4,  8,  5,  8,  6,  8,  7,
510   8,  8,  8,  9,  8, 10,  8, 11,  8, 12,  8, 13,  8, 14,  8, 15,
511   8, 16,  9,  0,  9,  1,  9,  2,  9,  3,  9,  4,  9,  5,  9,  6,
512   9,  7,  9,  8,  9,  9,  9, 10,  9, 11,  9, 12,  9, 13,  9, 14,
513   9, 15,  9, 16, 10,  0, 10,  1, 10,  2, 10,  3, 10,  4, 10,  5,
514  10,  6, 10,  7, 10,  8, 10,  9, 10, 10, 10, 11, 10, 12, 10, 13,
515  10, 14, 10, 15, 10, 16, 11,  0, 11,  1, 11,  2, 11,  3, 11,  4,
516  11,  5, 11,  6, 11,  7, 11,  8, 11,  9, 11, 10, 11, 11, 11, 12,
517  11, 13, 11, 14, 11, 15, 11, 16, 12,  0, 12,  1, 12,  2, 12,  3,
518  12,  4, 12,  5, 12,  6, 12,  7, 12,  8, 12,  9, 12, 10, 12, 11,
519  12, 12, 12, 13, 12, 14, 12, 15, 12, 16, 13,  0, 13,  1, 13,  2,
520  13,  3, 13,  4, 13,  5, 13,  6, 13,  7, 13,  8, 13,  9, 13, 10,
521  13, 11, 13, 12, 13, 13, 13, 14, 13, 15, 13, 16, 14,  0, 14,  1,
522  14,  2, 14,  3, 14,  4, 14,  5, 14,  6, 14,  7, 14,  8, 14,  9,
523  14, 10, 14, 11, 14, 12, 14, 13, 14, 14, 14, 15, 14, 16, 15,  0,
524  15,  1, 15,  2, 15,  3, 15,  4, 15,  5, 15,  6, 15,  7, 15,  8,
525  15,  9, 15, 10, 15, 11, 15, 12, 15, 13, 15, 14, 15, 15, 15, 16,
526  16,  0, 16,  1, 16,  2, 16,  3, 16,  4, 16,  5, 16,  6, 16,  7,
527  16,  8, 16,  9, 16, 10, 16, 11, 16, 12, 16, 13, 16, 14, 16, 15,
528  16, 16,
529 };
530
531 const int8_t *ff_aac_codebook_vectors[] = {
532     codebook_vector0, codebook_vector0, codebook_vector2,
533     codebook_vector2, codebook_vector4, codebook_vector4,
534     codebook_vector6, codebook_vector6, codebook_vector8,
535     codebook_vector8, codebook_vector10,
536 };
537
538 #ifdef CONFIG_HARDCODED_TABLES
539
540 const float ff_aac_ivquant_tab[IVQUANT_SIZE] = {
541     -4085.3368071, -4074.6805676, -4064.0312908, -4053.3889857,
542     -4042.7536614, -4032.1253271, -4021.5039921, -4010.8896656,
543     -4000.2823568, -3989.6820750, -3979.0888296, -3968.5026299,
544     -3957.9234854, -3947.3514054, -3936.7863993, -3926.2284768,
545     -3915.6776473, -3905.1339203, -3894.5973054, -3884.0678123,
546     -3873.5454506, -3863.0302299, -3852.5221601, -3842.0212507,
547     -3831.5275117, -3821.0409528, -3810.5615838, -3800.0894147,
548     -3789.6244554, -3779.1667157, -3768.7162058, -3758.2729355,
549     -3747.8369150, -3737.4081544, -3726.9866637, -3716.5724532,
550     -3706.1655329, -3695.7659132, -3685.3736044, -3674.9886166,
551     -3664.6109603, -3654.2406458, -3643.8776835, -3633.5220839,
552     -3623.1738574, -3612.8330147, -3602.4995662, -3592.1735225,
553     -3581.8548943, -3571.5436923, -3561.2399271, -3550.9436095,
554     -3540.6547503, -3530.3733604, -3520.0994506, -3509.8330317,
555     -3499.5741148, -3489.3227109, -3479.0788309, -3468.8424860,
556     -3458.6136872, -3448.3924458, -3438.1787728, -3427.9726795,
557     -3417.7741773, -3407.5832773, -3397.3999911, -3387.2243299,
558     -3377.0563052, -3366.8959286, -3356.7432115, -3346.5981655,
559     -3336.4608022, -3326.3311334, -3316.2091706, -3306.0949257,
560     -3295.9884105, -3285.8896367, -3275.7986164, -3265.7153613,
561     -3255.6398836, -3245.5721951, -3235.5123081, -3225.4602346,
562     -3215.4159867, -3205.3795768, -3195.3510169, -3185.3303196,
563     -3175.3174970, -3165.3125617, -3155.3155261, -3145.3264026,
564     -3135.3452039, -3125.3719425, -3115.4066312, -3105.4492825,
565     -3095.4999092, -3085.5585243, -3075.6251404, -3065.6997706,
566     -3055.7824278, -3045.8731250, -3035.9718753, -3026.0786917,
567     -3016.1935876, -3006.3165760, -2996.4476703, -2986.5868839,
568     -2976.7342300, -2966.8897222, -2957.0533740, -2947.2251989,
569     -2937.4052106, -2927.5934226, -2917.7898488, -2907.9945030,
570     -2898.2073989, -2888.4285505, -2878.6579717, -2868.8956767,
571     -2859.1416793, -2849.3959939, -2839.6586345, -2829.9296156,
572     -2820.2089512, -2810.4966560, -2800.7927443, -2791.0972306,
573     -2781.4101295, -2771.7314556, -2762.0612237, -2752.3994485,
574     -2742.7461448, -2733.1013276, -2723.4650117, -2713.8372123,
575     -2704.2179443, -2694.6072231, -2685.0050637, -2675.4114815,
576     -2665.8264919, -2656.2501103, -2646.6823521, -2637.1232331,
577     -2627.5727687, -2618.0309748, -2608.4978671, -2598.9734614,
578     -2589.4577738, -2579.9508201, -2570.4526166, -2560.9631792,
579     -2551.4825244, -2542.0106682, -2532.5476273, -2523.0934179,
580     -2513.6480566, -2504.2115601, -2494.7839450, -2485.3652281,
581     -2475.9554262, -2466.5545562, -2457.1626352, -2447.7796803,
582     -2438.4057086, -2429.0407373, -2419.6847838, -2410.3378655,
583     -2401.0000000, -2391.6712048, -2382.3514975, -2373.0408959,
584     -2363.7394180, -2354.4470815, -2345.1639046, -2335.8899054,
585     -2326.6251019, -2317.3695127, -2308.1231559, -2298.8860501,
586     -2289.6582139, -2280.4396659, -2271.2304249, -2262.0305097,
587     -2252.8399393, -2243.6587327, -2234.4869090, -2225.3244875,
588     -2216.1714876, -2207.0279286, -2197.8938301, -2188.7692117,
589     -2179.6540933, -2170.5484945, -2161.4524354, -2152.3659360,
590     -2143.2890165, -2134.2216972, -2125.1639983, -2116.1159404,
591     -2107.0775442, -2098.0488302, -2089.0298192, -2080.0205323,
592     -2071.0209905, -2062.0312148, -2053.0512267, -2044.0810473,
593     -2035.1206983, -2026.1702013, -2017.2295780, -2008.2988502,
594     -1999.3780400, -1990.4671694, -1981.5662607, -1972.6753362,
595     -1963.7944183, -1954.9235298, -1946.0626932, -1937.2119316,
596     -1928.3712678, -1919.5407249, -1910.7203263, -1901.9100954,
597     -1893.1100555, -1884.3202305, -1875.5406441, -1866.7713202,
598     -1858.0122829, -1849.2635565, -1840.5251653, -1831.7971337,
599     -1823.0794865, -1814.3722485, -1805.6754445, -1796.9890997,
600     -1788.3132394, -1779.6478889, -1770.9930739, -1762.3488199,
601     -1753.7151529, -1745.0920989, -1736.4796841, -1727.8779349,
602     -1719.2868777, -1710.7065393, -1702.1369465, -1693.5781262,
603     -1685.0301058, -1676.4929125, -1667.9665739, -1659.4511177,
604     -1650.9465718, -1642.4529642, -1633.9703232, -1625.4986772,
605     -1617.0380549, -1608.5884850, -1600.1499965, -1591.7226186,
606     -1583.3063807, -1574.9013124, -1566.5074433, -1558.1248036,
607     -1549.7534233, -1541.3933328, -1533.0445627, -1524.7071438,
608     -1516.3811070, -1508.0664836, -1499.7633050, -1491.4716029,
609     -1483.1914090, -1474.9227555, -1466.6656746, -1458.4201990,
610     -1450.1863613, -1441.9641946, -1433.7537320, -1425.5550071,
611     -1417.3680536, -1409.1929053, -1401.0295965, -1392.8781617,
612     -1384.7386355, -1376.6110529, -1368.4954490, -1360.3918594,
613     -1352.3003198, -1344.2208661, -1336.1535347, -1328.0983621,
614     -1320.0553851, -1312.0246407, -1304.0061665, -1296.0000000,
615     -1288.0061792, -1280.0247424, -1272.0557280, -1264.0991750,
616     -1256.1551226, -1248.2236101, -1240.3046773, -1232.3983645,
617     -1224.5047118, -1216.6237602, -1208.7555507, -1200.9001246,
618     -1193.0575238, -1185.2277903, -1177.4109665, -1169.6070953,
619     -1161.8162197, -1154.0383833, -1146.2736299, -1138.5220038,
620     -1130.7835495, -1123.0583122, -1115.3463371, -1107.6476700,
621     -1099.9623571, -1092.2904450, -1084.6319806, -1076.9870114,
622     -1069.3555851, -1061.7377500, -1054.1335548, -1046.5430486,
623     -1038.9662809, -1031.4033017, -1023.8541615, -1016.3189112,
624     -1008.7976022, -1001.2902864,  -993.7970162,  -986.3178444,
625      -978.8528243,  -971.4020099,  -963.9654554,  -956.5432158,
626      -949.1353466,  -941.7419036,  -934.3629435,  -926.9985233,
627      -919.6487005,  -912.3135336,  -904.9930812,  -897.6874027,
628      -890.3965581,  -883.1206081,  -875.8596139,  -868.6136373,
629      -861.3827409,  -854.1669878,  -846.9664418,  -839.7811675,
630      -832.6112300,  -825.4566953,  -818.3176299,  -811.1941012,
631      -804.0861773,  -796.9939269,  -789.9174197,  -782.8567260,
632      -775.8119169,  -768.7830645,  -761.7702415,  -754.7735215,
633      -747.7929790,  -740.8286894,  -733.8807287,  -726.9491743,
634      -720.0341040,  -713.1355968,  -706.2537328,  -699.3885927,
635      -692.5402584,  -685.7088129,  -678.8943400,  -672.0969248,
636      -665.3166532,  -658.5536125,  -651.8078908,  -645.0795775,
637      -638.3687633,  -631.6755398,  -625.0000000,  -618.3422381,
638      -611.7023495,  -605.0804310,  -598.4765806,  -591.8908978,
639      -585.3234834,  -578.7744395,  -572.2438698,  -565.7318795,
640      -559.2385751,  -552.7640648,  -546.3084584,  -539.8718672,
641      -533.4544042,  -527.0561843,  -520.6773237,  -514.3179408,
642      -507.9781556,  -501.6580901,  -495.3578679,  -489.0776150,
643      -482.8174592,  -476.5775303,  -470.3579603,  -464.1588834,
644      -457.9804359,  -451.8227566,  -445.6859865,  -439.5702691,
645      -433.4757504,  -427.4025787,  -421.3509053,  -415.3208841,
646      -409.3126715,  -403.3264272,  -397.3623135,  -391.4204959,
647      -385.5011431,  -379.6044268,  -373.7305221,  -367.8796078,
648      -362.0518657,  -356.2474818,  -350.4666456,  -344.7095504,
649      -338.9763937,  -333.2673772,  -327.5827066,  -321.9225924,
650      -316.2872495,  -310.6768976,  -305.0917613,  -299.5320705,
651      -293.9980602,  -288.4899710,  -283.0080491,  -277.5525469,
652      -272.1237227,  -266.7218414,  -261.3471743,  -256.0000000,
653      -250.6806041,  -245.3892798,  -240.1263282,  -234.8920585,
654      -229.6867885,  -224.5108452,  -219.3645645,  -214.2482925,
655      -209.1623853,  -204.1072101,  -199.0831450,  -194.0905802,
656      -189.1299182,  -184.2015749,  -179.3059798,  -174.4435769,
657      -169.6148258,  -164.8202021,  -160.0601987,  -155.3353268,
658      -150.6461166,  -145.9931191,  -141.3769069,  -136.7980757,
659      -132.2572463,  -127.7550655,  -123.2922085,  -118.8693810,
660      -114.4873209,  -110.1468012,  -105.8486329,  -101.5936673,
661       -97.3828002,   -93.2169752,   -89.0971879,   -85.0244912,
662       -81.0000000,   -77.0248978,   -73.1004435,   -69.2279794,
663       -65.4089405,   -61.6448653,   -57.9374077,   -54.2883523,
664       -50.6996313,   -47.1733451,   -43.7117870,   -40.3174736,
665       -36.9931811,   -33.7419917,   -30.5673509,   -27.4731418,
666       -24.4637810,   -21.5443469,   -18.7207544,   -16.0000000,
667       -13.3905183,   -10.9027236,    -8.5498797,    -6.3496042,
668        -4.3267487,    -2.5198421,    -1.0000000,     0.0000000,
669         1.0000000,     2.5198421,     4.3267487,     6.3496042,
670         8.5498797,    10.9027236,    13.3905183,    16.0000000,
671        18.7207544,    21.5443469,    24.4637810,    27.4731418,
672        30.5673509,    33.7419917,    36.9931811,    40.3174736,
673        43.7117870,    47.1733451,    50.6996313,    54.2883523,
674        57.9374077,    61.6448653,    65.4089405,    69.2279794,
675        73.1004435,    77.0248978,    81.0000000,    85.0244912,
676        89.0971879,    93.2169752,    97.3828002,   101.5936673,
677       105.8486329,   110.1468012,   114.4873209,   118.8693810,
678       123.2922085,   127.7550655,   132.2572463,   136.7980757,
679       141.3769069,   145.9931191,   150.6461166,   155.3353268,
680       160.0601987,   164.8202021,   169.6148258,   174.4435769,
681       179.3059798,   184.2015749,   189.1299182,   194.0905802,
682       199.0831450,   204.1072101,   209.1623853,   214.2482925,
683       219.3645645,   224.5108452,   229.6867885,   234.8920585,
684       240.1263282,   245.3892798,   250.6806041,   256.0000000,
685       261.3471743,   266.7218414,   272.1237227,   277.5525469,
686       283.0080491,   288.4899710,   293.9980602,   299.5320705,
687       305.0917613,   310.6768976,   316.2872495,   321.9225924,
688       327.5827066,   333.2673772,   338.9763937,   344.7095504,
689       350.4666456,   356.2474818,   362.0518657,   367.8796078,
690       373.7305221,   379.6044268,   385.5011431,   391.4204959,
691       397.3623135,   403.3264272,   409.3126715,   415.3208841,
692       421.3509053,   427.4025787,   433.4757504,   439.5702691,
693       445.6859865,   451.8227566,   457.9804359,   464.1588834,
694       470.3579603,   476.5775303,   482.8174592,   489.0776150,
695       495.3578679,   501.6580901,   507.9781556,   514.3179408,
696       520.6773237,   527.0561843,   533.4544042,   539.8718672,
697       546.3084584,   552.7640648,   559.2385751,   565.7318795,
698       572.2438698,   578.7744395,   585.3234834,   591.8908978,
699       598.4765806,   605.0804310,   611.7023495,   618.3422381,
700       625.0000000,   631.6755398,   638.3687633,   645.0795775,
701       651.8078908,   658.5536125,   665.3166532,   672.0969248,
702       678.8943400,   685.7088129,   692.5402584,   699.3885927,
703       706.2537328,   713.1355968,   720.0341040,   726.9491743,
704       733.8807287,   740.8286894,   747.7929790,   754.7735215,
705       761.7702415,   768.7830645,   775.8119169,   782.8567260,
706       789.9174197,   796.9939269,   804.0861773,   811.1941012,
707       818.3176299,   825.4566953,   832.6112300,   839.7811675,
708       846.9664418,   854.1669878,   861.3827409,   868.6136373,
709       875.8596139,   883.1206081,   890.3965581,   897.6874027,
710       904.9930812,   912.3135336,   919.6487005,   926.9985233,
711       934.3629435,   941.7419036,   949.1353466,   956.5432158,
712       963.9654554,   971.4020099,   978.8528243,   986.3178444,
713       993.7970162,  1001.2902864,  1008.7976022,  1016.3189112,
714      1023.8541615,  1031.4033017,  1038.9662809,  1046.5430486,
715      1054.1335548,  1061.7377500,  1069.3555851,  1076.9870114,
716      1084.6319806,  1092.2904450,  1099.9623571,  1107.6476700,
717      1115.3463371,  1123.0583122,  1130.7835495,  1138.5220038,
718      1146.2736299,  1154.0383833,  1161.8162197,  1169.6070953,
719      1177.4109665,  1185.2277903,  1193.0575238,  1200.9001246,
720      1208.7555507,  1216.6237602,  1224.5047118,  1232.3983645,
721      1240.3046773,  1248.2236101,  1256.1551226,  1264.0991750,
722      1272.0557280,  1280.0247424,  1288.0061792,  1296.0000000,
723      1304.0061665,  1312.0246407,  1320.0553851,  1328.0983621,
724      1336.1535347,  1344.2208661,  1352.3003198,  1360.3918594,
725      1368.4954490,  1376.6110529,  1384.7386355,  1392.8781617,
726      1401.0295965,  1409.1929053,  1417.3680536,  1425.5550071,
727      1433.7537320,  1441.9641946,  1450.1863613,  1458.4201990,
728      1466.6656746,  1474.9227555,  1483.1914090,  1491.4716029,
729      1499.7633050,  1508.0664836,  1516.3811070,  1524.7071438,
730      1533.0445627,  1541.3933328,  1549.7534233,  1558.1248036,
731      1566.5074433,  1574.9013124,  1583.3063807,  1591.7226186,
732      1600.1499965,  1608.5884850,  1617.0380549,  1625.4986772,
733      1633.9703232,  1642.4529642,  1650.9465718,  1659.4511177,
734      1667.9665739,  1676.4929125,  1685.0301058,  1693.5781262,
735      1702.1369465,  1710.7065393,  1719.2868777,  1727.8779349,
736      1736.4796841,  1745.0920989,  1753.7151529,  1762.3488199,
737      1770.9930739,  1779.6478889,  1788.3132394,  1796.9890997,
738      1805.6754445,  1814.3722485,  1823.0794865,  1831.7971337,
739      1840.5251653,  1849.2635565,  1858.0122829,  1866.7713202,
740      1875.5406441,  1884.3202305,  1893.1100555,  1901.9100954,
741      1910.7203263,  1919.5407249,  1928.3712678,  1937.2119316,
742      1946.0626932,  1954.9235298,  1963.7944183,  1972.6753362,
743      1981.5662607,  1990.4671694,  1999.3780400,  2008.2988502,
744      2017.2295780,  2026.1702013,  2035.1206983,  2044.0810473,
745      2053.0512267,  2062.0312148,  2071.0209905,  2080.0205323,
746      2089.0298192,  2098.0488302,  2107.0775442,  2116.1159404,
747      2125.1639983,  2134.2216972,  2143.2890165,  2152.3659360,
748      2161.4524354,  2170.5484945,  2179.6540933,  2188.7692117,
749      2197.8938301,  2207.0279286,  2216.1714876,  2225.3244875,
750      2234.4869090,  2243.6587327,  2252.8399393,  2262.0305097,
751      2271.2304249,  2280.4396659,  2289.6582139,  2298.8860501,
752      2308.1231559,  2317.3695127,  2326.6251019,  2335.8899054,
753      2345.1639046,  2354.4470815,  2363.7394180,  2373.0408959,
754      2382.3514975,  2391.6712048,  2401.0000000,  2410.3378655,
755      2419.6847838,  2429.0407373,  2438.4057086,  2447.7796803,
756      2457.1626352,  2466.5545562,  2475.9554262,  2485.3652281,
757      2494.7839450,  2504.2115601,  2513.6480566,  2523.0934179,
758      2532.5476273,  2542.0106682,  2551.4825244,  2560.9631792,
759      2570.4526166,  2579.9508201,  2589.4577738,  2598.9734614,
760      2608.4978671,  2618.0309748,  2627.5727687,  2637.1232331,
761      2646.6823521,  2656.2501103,  2665.8264919,  2675.4114815,
762      2685.0050637,  2694.6072231,  2704.2179443,  2713.8372123,
763      2723.4650117,  2733.1013276,  2742.7461448,  2752.3994485,
764      2762.0612237,  2771.7314556,  2781.4101295,  2791.0972306,
765      2800.7927443,  2810.4966560,  2820.2089512,  2829.9296156,
766      2839.6586345,  2849.3959939,  2859.1416793,  2868.8956767,
767      2878.6579717,  2888.4285505,  2898.2073989,  2907.9945030,
768      2917.7898488,  2927.5934226,  2937.4052106,  2947.2251989,
769      2957.0533740,  2966.8897222,  2976.7342300,  2986.5868839,
770      2996.4476703,  3006.3165760,  3016.1935876,  3026.0786917,
771      3035.9718753,  3045.8731250,  3055.7824278,  3065.6997706,
772      3075.6251404,  3085.5585243,  3095.4999092,  3105.4492825,
773      3115.4066312,  3125.3719425,  3135.3452039,  3145.3264026,
774      3155.3155261,  3165.3125617,  3175.3174970,  3185.3303196,
775      3195.3510169,  3205.3795768,  3215.4159867,  3225.4602346,
776      3235.5123081,  3245.5721951,  3255.6398836,  3265.7153613,
777      3275.7986164,  3285.8896367,  3295.9884105,  3306.0949257,
778      3316.2091706,  3326.3311334,  3336.4608022,  3346.5981655,
779      3356.7432115,  3366.8959286,  3377.0563052,  3387.2243299,
780      3397.3999911,  3407.5832773,  3417.7741773,  3427.9726795,
781      3438.1787728,  3448.3924458,  3458.6136872,  3468.8424860,
782      3479.0788309,  3489.3227109,  3499.5741148,  3509.8330317,
783      3520.0994506,  3530.3733604,  3540.6547503,  3550.9436095,
784      3561.2399271,  3571.5436923,  3581.8548943,  3592.1735225,
785      3602.4995662,  3612.8330147,  3623.1738574,  3633.5220839,
786      3643.8776835,  3654.2406458,  3664.6109603,  3674.9886166,
787      3685.3736044,  3695.7659132,  3706.1655329,  3716.5724532,
788      3726.9866637,  3737.4081544,  3747.8369150,  3758.2729355,
789      3768.7162058,  3779.1667157,  3789.6244554,  3800.0894147,
790      3810.5615838,  3821.0409528,  3831.5275117,  3842.0212507,
791      3852.5221601,  3863.0302299,  3873.5454506,  3884.0678123,
792      3894.5973054,  3905.1339203,  3915.6776473,  3926.2284768,
793      3936.7863993,  3947.3514054,  3957.9234854,  3968.5026299,
794      3979.0888296,  3989.6820750,  4000.2823568,  4010.8896656,
795      4021.5039921,  4032.1253271,  4042.7536614,  4053.3889857,
796      4064.0312908,  4074.6805676,  4085.3368071,  4096.0000000,
797 };
798
799 const float ff_aac_pow2sf_tab[316] = {
800     8.88178420e-16, 1.05622810e-15, 1.25607397e-15, 1.49373210e-15,
801     1.77635684e-15, 2.11245619e-15, 2.51214793e-15, 2.98746420e-15,
802     3.55271368e-15, 4.22491238e-15, 5.02429587e-15, 5.97492839e-15,
803     7.10542736e-15, 8.44982477e-15, 1.00485917e-14, 1.19498568e-14,
804     1.42108547e-14, 1.68996495e-14, 2.00971835e-14, 2.38997136e-14,
805     2.84217094e-14, 3.37992991e-14, 4.01943669e-14, 4.77994272e-14,
806     5.68434189e-14, 6.75985982e-14, 8.03887339e-14, 9.55988543e-14,
807     1.13686838e-13, 1.35197196e-13, 1.60777468e-13, 1.91197709e-13,
808     2.27373675e-13, 2.70394393e-13, 3.21554936e-13, 3.82395417e-13,
809     4.54747351e-13, 5.40788785e-13, 6.43109871e-13, 7.64790834e-13,
810     9.09494702e-13, 1.08157757e-12, 1.28621974e-12, 1.52958167e-12,
811     1.81898940e-12, 2.16315514e-12, 2.57243948e-12, 3.05916334e-12,
812     3.63797881e-12, 4.32631028e-12, 5.14487897e-12, 6.11832668e-12,
813     7.27595761e-12, 8.65262056e-12, 1.02897579e-11, 1.22366534e-11,
814     1.45519152e-11, 1.73052411e-11, 2.05795159e-11, 2.44733067e-11,
815     2.91038305e-11, 3.46104823e-11, 4.11590317e-11, 4.89466134e-11,
816     5.82076609e-11, 6.92209645e-11, 8.23180635e-11, 9.78932268e-11,
817     1.16415322e-10, 1.38441929e-10, 1.64636127e-10, 1.95786454e-10,
818     2.32830644e-10, 2.76883858e-10, 3.29272254e-10, 3.91572907e-10,
819     4.65661287e-10, 5.53767716e-10, 6.58544508e-10, 7.83145814e-10,
820     9.31322575e-10, 1.10753543e-09, 1.31708902e-09, 1.56629163e-09,
821     1.86264515e-09, 2.21507086e-09, 2.63417803e-09, 3.13258326e-09,
822     3.72529030e-09, 4.43014173e-09, 5.26835606e-09, 6.26516652e-09,
823     7.45058060e-09, 8.86028346e-09, 1.05367121e-08, 1.25303330e-08,
824     1.49011612e-08, 1.77205669e-08, 2.10734243e-08, 2.50606661e-08,
825     2.98023224e-08, 3.54411338e-08, 4.21468485e-08, 5.01213321e-08,
826     5.96046448e-08, 7.08822677e-08, 8.42936970e-08, 1.00242664e-07,
827     1.19209290e-07, 1.41764535e-07, 1.68587394e-07, 2.00485328e-07,
828     2.38418579e-07, 2.83529071e-07, 3.37174788e-07, 4.00970657e-07,
829     4.76837158e-07, 5.67058141e-07, 6.74349576e-07, 8.01941314e-07,
830     9.53674316e-07, 1.13411628e-06, 1.34869915e-06, 1.60388263e-06,
831     1.90734863e-06, 2.26823256e-06, 2.69739830e-06, 3.20776526e-06,
832     3.81469727e-06, 4.53646513e-06, 5.39479661e-06, 6.41553051e-06,
833     7.62939453e-06, 9.07293026e-06, 1.07895932e-05, 1.28310610e-05,
834     1.52587891e-05, 1.81458605e-05, 2.15791864e-05, 2.56621220e-05,
835     3.05175781e-05, 3.62917210e-05, 4.31583729e-05, 5.13242441e-05,
836     6.10351562e-05, 7.25834421e-05, 8.63167458e-05, 1.02648488e-04,
837     1.22070312e-04, 1.45166884e-04, 1.72633492e-04, 2.05296976e-04,
838     2.44140625e-04, 2.90333768e-04, 3.45266983e-04, 4.10593953e-04,
839     4.88281250e-04, 5.80667537e-04, 6.90533966e-04, 8.21187906e-04,
840     9.76562500e-04, 1.16133507e-03, 1.38106793e-03, 1.64237581e-03,
841     1.95312500e-03, 2.32267015e-03, 2.76213586e-03, 3.28475162e-03,
842     3.90625000e-03, 4.64534029e-03, 5.52427173e-03, 6.56950324e-03,
843     7.81250000e-03, 9.29068059e-03, 1.10485435e-02, 1.31390065e-02,
844     1.56250000e-02, 1.85813612e-02, 2.20970869e-02, 2.62780130e-02,
845     3.12500000e-02, 3.71627223e-02, 4.41941738e-02, 5.25560260e-02,
846     6.25000000e-02, 7.43254447e-02, 8.83883476e-02, 1.05112052e-01,
847     1.25000000e-01, 1.48650889e-01, 1.76776695e-01, 2.10224104e-01,
848     2.50000000e-01, 2.97301779e-01, 3.53553391e-01, 4.20448208e-01,
849     5.00000000e-01, 5.94603558e-01, 7.07106781e-01, 8.40896415e-01,
850     1.00000000e+00, 1.18920712e+00, 1.41421356e+00, 1.68179283e+00,
851     2.00000000e+00, 2.37841423e+00, 2.82842712e+00, 3.36358566e+00,
852     4.00000000e+00, 4.75682846e+00, 5.65685425e+00, 6.72717132e+00,
853     8.00000000e+00, 9.51365692e+00, 1.13137085e+01, 1.34543426e+01,
854     1.60000000e+01, 1.90273138e+01, 2.26274170e+01, 2.69086853e+01,
855     3.20000000e+01, 3.80546277e+01, 4.52548340e+01, 5.38173706e+01,
856     6.40000000e+01, 7.61092554e+01, 9.05096680e+01, 1.07634741e+02,
857     1.28000000e+02, 1.52218511e+02, 1.81019336e+02, 2.15269482e+02,
858     2.56000000e+02, 3.04437021e+02, 3.62038672e+02, 4.30538965e+02,
859     5.12000000e+02, 6.08874043e+02, 7.24077344e+02, 8.61077929e+02,
860     1.02400000e+03, 1.21774809e+03, 1.44815469e+03, 1.72215586e+03,
861     2.04800000e+03, 2.43549617e+03, 2.89630938e+03, 3.44431172e+03,
862     4.09600000e+03, 4.87099234e+03, 5.79261875e+03, 6.88862343e+03,
863     8.19200000e+03, 9.74198469e+03, 1.15852375e+04, 1.37772469e+04,
864     1.63840000e+04, 1.94839694e+04, 2.31704750e+04, 2.75544937e+04,
865     3.27680000e+04, 3.89679387e+04, 4.63409500e+04, 5.51089875e+04,
866     6.55360000e+04, 7.79358775e+04, 9.26819000e+04, 1.10217975e+05,
867     1.31072000e+05, 1.55871755e+05, 1.85363800e+05, 2.20435950e+05,
868     2.62144000e+05, 3.11743510e+05, 3.70727600e+05, 4.40871900e+05,
869     5.24288000e+05, 6.23487020e+05, 7.41455200e+05, 8.81743800e+05,
870     1.04857600e+06, 1.24697404e+06, 1.48291040e+06, 1.76348760e+06,
871     2.09715200e+06, 2.49394808e+06, 2.96582080e+06, 3.52697520e+06,
872     4.19430400e+06, 4.98789616e+06, 5.93164160e+06, 7.05395040e+06,
873     8.38860800e+06, 9.97579232e+06, 1.18632832e+07, 1.41079008e+07,
874     1.67772160e+07, 1.99515846e+07, 2.37265664e+07, 2.82158016e+07,
875     3.35544320e+07, 3.99031693e+07, 4.74531328e+07, 5.64316032e+07,
876     6.71088640e+07, 7.98063385e+07, 9.49062656e+07, 1.12863206e+08,
877     1.34217728e+08, 1.59612677e+08, 1.89812531e+08, 2.25726413e+08,
878     2.68435456e+08, 3.19225354e+08, 3.79625062e+08, 4.51452825e+08,
879 };
880
881 #endif /* CONFIG_HARDCODED_TABLES */