• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* -----------------------------------------------------------------------------
2 Software License for The Fraunhofer FDK AAC Codec Library for Android
3 
4 © Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten
5 Forschung e.V. All rights reserved.
6 
7  1.    INTRODUCTION
8 The Fraunhofer FDK AAC Codec Library for Android ("FDK AAC Codec") is software
9 that implements the MPEG Advanced Audio Coding ("AAC") encoding and decoding
10 scheme for digital audio. This FDK AAC Codec software is intended to be used on
11 a wide variety of Android devices.
12 
13 AAC's HE-AAC and HE-AAC v2 versions are regarded as today's most efficient
14 general perceptual audio codecs. AAC-ELD is considered the best-performing
15 full-bandwidth communications codec by independent studies and is widely
16 deployed. AAC has been standardized by ISO and IEC as part of the MPEG
17 specifications.
18 
19 Patent licenses for necessary patent claims for the FDK AAC Codec (including
20 those of Fraunhofer) may be obtained through Via Licensing
21 (www.vialicensing.com) or through the respective patent owners individually for
22 the purpose of encoding or decoding bit streams in products that are compliant
23 with the ISO/IEC MPEG audio standards. Please note that most manufacturers of
24 Android devices already license these patent claims through Via Licensing or
25 directly from the patent owners, and therefore FDK AAC Codec software may
26 already be covered under those patent licenses when it is used for those
27 licensed purposes only.
28 
29 Commercially-licensed AAC software libraries, including floating-point versions
30 with enhanced sound quality, are also available from Fraunhofer. Users are
31 encouraged to check the Fraunhofer website for additional applications
32 information and documentation.
33 
34 2.    COPYRIGHT LICENSE
35 
36 Redistribution and use in source and binary forms, with or without modification,
37 are permitted without payment of copyright license fees provided that you
38 satisfy the following conditions:
39 
40 You must retain the complete text of this software license in redistributions of
41 the FDK AAC Codec or your modifications thereto in source code form.
42 
43 You must retain the complete text of this software license in the documentation
44 and/or other materials provided with redistributions of the FDK AAC Codec or
45 your modifications thereto in binary form. You must make available free of
46 charge copies of the complete source code of the FDK AAC Codec and your
47 modifications thereto to recipients of copies in binary form.
48 
49 The name of Fraunhofer may not be used to endorse or promote products derived
50 from this library without prior written permission.
51 
52 You may not charge copyright license fees for anyone to use, copy or distribute
53 the FDK AAC Codec software or your modifications thereto.
54 
55 Your modified versions of the FDK AAC Codec must carry prominent notices stating
56 that you changed the software and the date of any change. For modified versions
57 of the FDK AAC Codec, the term "Fraunhofer FDK AAC Codec Library for Android"
58 must be replaced by the term "Third-Party Modified Version of the Fraunhofer FDK
59 AAC Codec Library for Android."
60 
61 3.    NO PATENT LICENSE
62 
63 NO EXPRESS OR IMPLIED LICENSES TO ANY PATENT CLAIMS, including without
64 limitation the patents of Fraunhofer, ARE GRANTED BY THIS SOFTWARE LICENSE.
65 Fraunhofer provides no warranty of patent non-infringement with respect to this
66 software.
67 
68 You may use this FDK AAC Codec software or modifications thereto only for
69 purposes that are authorized by appropriate patent licenses.
70 
71 4.    DISCLAIMER
72 
73 This FDK AAC Codec software is provided by Fraunhofer on behalf of the copyright
74 holders and contributors "AS IS" and WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES,
75 including but not limited to the implied warranties of merchantability and
76 fitness for a particular purpose. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
77 CONTRIBUTORS BE LIABLE for any direct, indirect, incidental, special, exemplary,
78 or consequential damages, including but not limited to procurement of substitute
79 goods or services; loss of use, data, or profits, or business interruption,
80 however caused and on any theory of liability, whether in contract, strict
81 liability, or tort (including negligence), arising in any way out of the use of
82 this software, even if advised of the possibility of such damage.
83 
84 5.    CONTACT INFORMATION
85 
86 Fraunhofer Institute for Integrated Circuits IIS
87 Attention: Audio and Multimedia Departments - FDK AAC LL
88 Am Wolfsmantel 33
89 91058 Erlangen, Germany
90 
91 www.iis.fraunhofer.de/amm
92 amm-info@iis.fraunhofer.de
93 ----------------------------------------------------------------------------- */
94 
95 /**************************** SBR decoder library ******************************
96 
97    Author(s):
98 
99    Description:
100 
101 *******************************************************************************/
102 
103 /*!
104   \file
105   \brief  Definition of constant tables
106 
107   This module contains most of the constant data that can be stored in ROM.
108 */
109 
110 #include "sbr_rom.h"
111 
112 /*!
113   \name   StartStopBands
114   \brief  Start and stop subbands of the highband.
115 
116   k_o = startMin + offset[bs_start_freq];
117   startMin = {3000,4000,5000} * (128/FS_sbr) / FS_sbr < 32Khz, 32Khz <= FS_sbr <
118   64KHz, 64KHz <= FS_sbr The stop subband can also be calculated to save memory
119   by defining #CALC_STOP_BAND.
120 */
121 //@{
122 /* tables were created with ../addon/octave/sbr_start_freq_table.m */
123 const UCHAR FDK_sbrDecoder_sbr_start_freq_16[][16] = {
124     {16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31},
125     {4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19}};
126 const UCHAR FDK_sbrDecoder_sbr_start_freq_22[][16] = {
127     {12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 28, 30},
128     {4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 22}};
129 const UCHAR FDK_sbrDecoder_sbr_start_freq_24[][16] = {
130     {11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 27, 29, 32},
131     {3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 19, 21, 24}};
132 const UCHAR FDK_sbrDecoder_sbr_start_freq_32[][16] = {
133     {10, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 27, 29, 32},
134     {2, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 19, 21, 24}};
135 const UCHAR FDK_sbrDecoder_sbr_start_freq_40[][16] = {
136     {12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 26, 28, 30, 32},
137     {5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 19, 21, 23, 25}};
138 const UCHAR FDK_sbrDecoder_sbr_start_freq_44[][16] = {
139     {8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 23, 25, 28, 32},
140     {2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 17, 19, 22, 26}};
141 const UCHAR FDK_sbrDecoder_sbr_start_freq_48[][16] = {
142     {7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 24, 27, 31},
143     {1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 21, 25}};
144 const UCHAR FDK_sbrDecoder_sbr_start_freq_64[][16] = {
145     {6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 21, 23, 26, 30},
146     {1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 21, 25}};
147 const UCHAR FDK_sbrDecoder_sbr_start_freq_88[][16] = {
148     {5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 18, 20, 23, 27, 31},
149     {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 20, 24, 28}};
150 const UCHAR FDK_sbrDecoder_sbr_start_freq_192[16] = {
151     1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 16, 19, 23, 27};
152 const UCHAR FDK_sbrDecoder_sbr_start_freq_176[16] = {
153     2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 20, 24, 28};
154 const UCHAR FDK_sbrDecoder_sbr_start_freq_128[16] = {
155     1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 21, 25};
156 
157 //@}
158 
159 /*!
160   \name   Whitening
161   \brief  Coefficients for spectral whitening in the transposer
162 */
163 //@{
164 /*! Assignment of whitening tuning depending on the crossover frequency */
165 const USHORT FDK_sbrDecoder_sbr_whFactorsIndex[NUM_WHFACTOR_TABLE_ENTRIES] = {
166     0, 5000, 6000, 6500, 7000, 7500, 8000, 9000, 10000};
167 
168 /*!
169   \brief Whithening levels tuning table
170 
171   With the current tuning, there are some redundant entries:
172 
173   \li  NUM_WHFACTOR_TABLE_ENTRIES can be reduced by 3,
174   \li  the first coloumn can be eliminated.
175 
176 */
177 const FIXP_DBL
178     FDK_sbrDecoder_sbr_whFactorsTable[NUM_WHFACTOR_TABLE_ENTRIES][6] = {
179         /* OFF_LEVEL, TRANSITION_LEVEL, LOW_LEVEL, MID_LEVEL, HIGH_LEVEL */
180         {FL2FXCONST_DBL(0.00f), FL2FXCONST_DBL(0.6f), FL2FXCONST_DBL(0.75f),
181          FL2FXCONST_DBL(0.90f), FL2FXCONST_DBL(0.98f)}, /* < 5000 */
182         {FL2FXCONST_DBL(0.00f), FL2FXCONST_DBL(0.6f), FL2FXCONST_DBL(0.75f),
183          FL2FXCONST_DBL(0.90f), FL2FXCONST_DBL(0.98f)}, /* 5000 < 6000 */
184         {FL2FXCONST_DBL(0.00f), FL2FXCONST_DBL(0.6f), FL2FXCONST_DBL(0.75f),
185          FL2FXCONST_DBL(0.90f), FL2FXCONST_DBL(0.98f)}, /* 6000 < 6500 */
186         {FL2FXCONST_DBL(0.00f), FL2FXCONST_DBL(0.6f), FL2FXCONST_DBL(0.75f),
187          FL2FXCONST_DBL(0.90f), FL2FXCONST_DBL(0.98f)}, /* 6500 < 7000 */
188         {FL2FXCONST_DBL(0.00f), FL2FXCONST_DBL(0.6f), FL2FXCONST_DBL(0.75f),
189          FL2FXCONST_DBL(0.90f), FL2FXCONST_DBL(0.98f)}, /* 7000 < 7500 */
190         {FL2FXCONST_DBL(0.00f), FL2FXCONST_DBL(0.6f), FL2FXCONST_DBL(0.75f),
191          FL2FXCONST_DBL(0.90f), FL2FXCONST_DBL(0.98f)}, /* 7500 < 8000 */
192         {FL2FXCONST_DBL(0.00f), FL2FXCONST_DBL(0.6f), FL2FXCONST_DBL(0.75f),
193          FL2FXCONST_DBL(0.90f), FL2FXCONST_DBL(0.98f)}, /* 8000 < 9000 */
194         {FL2FXCONST_DBL(0.00f), FL2FXCONST_DBL(0.6f), FL2FXCONST_DBL(0.75f),
195          FL2FXCONST_DBL(0.90f), FL2FXCONST_DBL(0.98f)}, /* 9000 < 10000 */
196         {FL2FXCONST_DBL(0.00f), FL2FXCONST_DBL(0.6f), FL2FXCONST_DBL(0.75f),
197          FL2FXCONST_DBL(0.90f), FL2FXCONST_DBL(0.98f)}, /* > 10000 */
198 };
199 
200 //@}
201 
202 /*!
203   \name   EnvAdj
204   \brief  Constants and tables used for envelope adjustment
205 */
206 //@{
207 
208 /*! Mantissas of gain limits */
209 const FIXP_SGL FDK_sbrDecoder_sbr_limGains_m[4] = {
210     FL2FXCONST_SGL(0.5011932025f), /*!< -3 dB. Gain limit when limiterGains in
211                                       frameData is 0 */
212     FL2FXCONST_SGL(
213         0.5f), /*!< 0 dB.  Gain limit when limiterGains in frameData is 1 */
214     FL2FXCONST_SGL(0.9976346258f), /*!< +3 dB. Gain limit when limiterGains in
215                                       frameData is 2 */
216     FL2FXCONST_SGL(0.6776263578f)  /*!< Inf.   Gain limit when limiterGains in
217                                       frameData is 3 */
218 };
219 
220 /*! Exponents of gain limits */
221 const UCHAR FDK_sbrDecoder_sbr_limGains_e[4] = {0, 1, 1, 67};
222 
223 /*! Constants for calculating the number of limiter bands */
224 const FIXP_SGL FDK_sbrDecoder_sbr_limiterBandsPerOctaveDiv4[4] = {
225     FL2FXCONST_SGL(1.0f / 4.0f), FL2FXCONST_SGL(1.2f / 4.0f),
226     FL2FXCONST_SGL(2.0f / 4.0f), FL2FXCONST_SGL(3.0f / 4.0f)};
227 
228 /*! Constants for calculating the number of limiter bands */
229 const FIXP_DBL FDK_sbrDecoder_sbr_limiterBandsPerOctaveDiv4_DBL[4] = {
230     FL2FXCONST_DBL(1.0f / 4.0f), FL2FXCONST_DBL(1.2f / 4.0f),
231     FL2FXCONST_DBL(2.0f / 4.0f), FL2FXCONST_DBL(3.0f / 4.0f)};
232 
233 /*! Ratio of old gains and noise levels for the first 4 timeslots of an envelope
234  */
235 const FIXP_SGL FDK_sbrDecoder_sbr_smoothFilter[4] = {
236     FL2FXCONST_SGL(0.66666666666666f), FL2FXCONST_SGL(0.36516383427084f),
237     FL2FXCONST_SGL(0.14699433520835f), FL2FXCONST_SGL(0.03183050093751f)};
238 
239 /*! Real and imaginary part of random noise which will be modulated
240   to the desired level. An accuracy of 13 bits is sufficient for these
241   random numbers.
242 */
243 const FIXP_SGL FDK_sbrDecoder_sbr_randomPhase[SBR_NF_NO_RANDOM_VAL][2] = {
244     {FL2FXCONST_SGL(-0.99948153278296f / 8.0),
245      FL2FXCONST_SGL(-0.59483417516607f / 8.0)},
246     {FL2FXCONST_SGL(0.97113454393991f / 8.0),
247      FL2FXCONST_SGL(-0.67528515225647f / 8.0)},
248     {FL2FXCONST_SGL(0.14130051758487f / 8.0),
249      FL2FXCONST_SGL(-0.95090983575689f / 8.0)},
250     {FL2FXCONST_SGL(-0.47005496701697f / 8.0),
251      FL2FXCONST_SGL(-0.37340549728647f / 8.0)},
252     {FL2FXCONST_SGL(0.80705063769351f / 8.0),
253      FL2FXCONST_SGL(0.29653668284408f / 8.0)},
254     {FL2FXCONST_SGL(-0.38981478896926f / 8.0),
255      FL2FXCONST_SGL(0.89572605717087f / 8.0)},
256     {FL2FXCONST_SGL(-0.01053049862020f / 8.0),
257      FL2FXCONST_SGL(-0.66959058036166f / 8.0)},
258     {FL2FXCONST_SGL(-0.91266367957293f / 8.0),
259      FL2FXCONST_SGL(-0.11522938140034f / 8.0)},
260     {FL2FXCONST_SGL(0.54840422910309f / 8.0),
261      FL2FXCONST_SGL(0.75221367176302f / 8.0)},
262     {FL2FXCONST_SGL(0.40009252867955f / 8.0),
263      FL2FXCONST_SGL(-0.98929400334421f / 8.0)},
264     {FL2FXCONST_SGL(-0.99867974711855f / 8.0),
265      FL2FXCONST_SGL(-0.88147068645358f / 8.0)},
266     {FL2FXCONST_SGL(-0.95531076805040f / 8.0),
267      FL2FXCONST_SGL(0.90908757154593f / 8.0)},
268     {FL2FXCONST_SGL(-0.45725933317144f / 8.0),
269      FL2FXCONST_SGL(-0.56716323646760f / 8.0)},
270     {FL2FXCONST_SGL(-0.72929675029275f / 8.0),
271      FL2FXCONST_SGL(-0.98008272727324f / 8.0)},
272     {FL2FXCONST_SGL(0.75622801399036f / 8.0),
273      FL2FXCONST_SGL(0.20950329995549f / 8.0)},
274     {FL2FXCONST_SGL(0.07069442601050f / 8.0),
275      FL2FXCONST_SGL(-0.78247898470706f / 8.0)},
276     {FL2FXCONST_SGL(0.74496252926055f / 8.0),
277      FL2FXCONST_SGL(-0.91169004445807f / 8.0)},
278     {FL2FXCONST_SGL(-0.96440182703856f / 8.0),
279      FL2FXCONST_SGL(-0.94739918296622f / 8.0)},
280     {FL2FXCONST_SGL(0.30424629369539f / 8.0),
281      FL2FXCONST_SGL(-0.49438267012479f / 8.0)},
282     {FL2FXCONST_SGL(0.66565033746925f / 8.0),
283      FL2FXCONST_SGL(0.64652935542491f / 8.0)},
284     {FL2FXCONST_SGL(0.91697008020594f / 8.0),
285      FL2FXCONST_SGL(0.17514097332009f / 8.0)},
286     {FL2FXCONST_SGL(-0.70774918760427f / 8.0),
287      FL2FXCONST_SGL(0.52548653416543f / 8.0)},
288     {FL2FXCONST_SGL(-0.70051415345560f / 8.0),
289      FL2FXCONST_SGL(-0.45340028808763f / 8.0)},
290     {FL2FXCONST_SGL(-0.99496513054797f / 8.0),
291      FL2FXCONST_SGL(-0.90071908066973f / 8.0)},
292     {FL2FXCONST_SGL(0.98164490790123f / 8.0),
293      FL2FXCONST_SGL(-0.77463155528697f / 8.0)},
294     {FL2FXCONST_SGL(-0.54671580548181f / 8.0),
295      FL2FXCONST_SGL(-0.02570928536004f / 8.0)},
296     {FL2FXCONST_SGL(-0.01689629065389f / 8.0),
297      FL2FXCONST_SGL(0.00287506445732f / 8.0)},
298     {FL2FXCONST_SGL(-0.86110349531986f / 8.0),
299      FL2FXCONST_SGL(0.42548583726477f / 8.0)},
300     {FL2FXCONST_SGL(-0.98892980586032f / 8.0),
301      FL2FXCONST_SGL(-0.87881132267556f / 8.0)},
302     {FL2FXCONST_SGL(0.51756627678691f / 8.0),
303      FL2FXCONST_SGL(0.66926784710139f / 8.0)},
304     {FL2FXCONST_SGL(-0.99635026409640f / 8.0),
305      FL2FXCONST_SGL(-0.58107730574765f / 8.0)},
306     {FL2FXCONST_SGL(-0.99969370862163f / 8.0),
307      FL2FXCONST_SGL(0.98369989360250f / 8.0)},
308     {FL2FXCONST_SGL(0.55266258627194f / 8.0),
309      FL2FXCONST_SGL(0.59449057465591f / 8.0)},
310     {FL2FXCONST_SGL(0.34581177741673f / 8.0),
311      FL2FXCONST_SGL(0.94879421061866f / 8.0)},
312     {FL2FXCONST_SGL(0.62664209577999f / 8.0),
313      FL2FXCONST_SGL(-0.74402970906471f / 8.0)},
314     {FL2FXCONST_SGL(-0.77149701404973f / 8.0),
315      FL2FXCONST_SGL(-0.33883658042801f / 8.0)},
316     {FL2FXCONST_SGL(-0.91592244254432f / 8.0),
317      FL2FXCONST_SGL(0.03687901376713f / 8.0)},
318     {FL2FXCONST_SGL(-0.76285492357887f / 8.0),
319      FL2FXCONST_SGL(-0.91371867919124f / 8.0)},
320     {FL2FXCONST_SGL(0.79788337195331f / 8.0),
321      FL2FXCONST_SGL(-0.93180971199849f / 8.0)},
322     {FL2FXCONST_SGL(0.54473080610200f / 8.0),
323      FL2FXCONST_SGL(-0.11919206037186f / 8.0)},
324     {FL2FXCONST_SGL(-0.85639281671058f / 8.0),
325      FL2FXCONST_SGL(0.42429854760451f / 8.0)},
326     {FL2FXCONST_SGL(-0.92882402971423f / 8.0),
327      FL2FXCONST_SGL(0.27871809078609f / 8.0)},
328     {FL2FXCONST_SGL(-0.11708371046774f / 8.0),
329      FL2FXCONST_SGL(-0.99800843444966f / 8.0)},
330     {FL2FXCONST_SGL(0.21356749817493f / 8.0),
331      FL2FXCONST_SGL(-0.90716295627033f / 8.0)},
332     {FL2FXCONST_SGL(-0.76191692573909f / 8.0),
333      FL2FXCONST_SGL(0.99768118356265f / 8.0)},
334     {FL2FXCONST_SGL(0.98111043100884f / 8.0),
335      FL2FXCONST_SGL(-0.95854459734407f / 8.0)},
336     {FL2FXCONST_SGL(-0.85913269895572f / 8.0),
337      FL2FXCONST_SGL(0.95766566168880f / 8.0)},
338     {FL2FXCONST_SGL(-0.93307242253692f / 8.0),
339      FL2FXCONST_SGL(0.49431757696466f / 8.0)},
340     {FL2FXCONST_SGL(0.30485754879632f / 8.0),
341      FL2FXCONST_SGL(-0.70540034357529f / 8.0)},
342     {FL2FXCONST_SGL(0.85289650925190f / 8.0),
343      FL2FXCONST_SGL(0.46766131791044f / 8.0)},
344     {FL2FXCONST_SGL(0.91328082618125f / 8.0),
345      FL2FXCONST_SGL(-0.99839597361769f / 8.0)},
346     {FL2FXCONST_SGL(-0.05890199924154f / 8.0),
347      FL2FXCONST_SGL(0.70741827819497f / 8.0)},
348     {FL2FXCONST_SGL(0.28398686150148f / 8.0),
349      FL2FXCONST_SGL(0.34633555702188f / 8.0)},
350     {FL2FXCONST_SGL(0.95258164539612f / 8.0),
351      FL2FXCONST_SGL(-0.54893416026939f / 8.0)},
352     {FL2FXCONST_SGL(-0.78566324168507f / 8.0),
353      FL2FXCONST_SGL(-0.75568541079691f / 8.0)},
354     {FL2FXCONST_SGL(-0.95789495447877f / 8.0),
355      FL2FXCONST_SGL(-0.20423194696966f / 8.0)},
356     {FL2FXCONST_SGL(0.82411158711197f / 8.0),
357      FL2FXCONST_SGL(0.96654618432562f / 8.0)},
358     {FL2FXCONST_SGL(-0.65185446735885f / 8.0),
359      FL2FXCONST_SGL(-0.88734990773289f / 8.0)},
360     {FL2FXCONST_SGL(-0.93643603134666f / 8.0),
361      FL2FXCONST_SGL(0.99870790442385f / 8.0)},
362     {FL2FXCONST_SGL(0.91427159529618f / 8.0),
363      FL2FXCONST_SGL(-0.98290505544444f / 8.0)},
364     {FL2FXCONST_SGL(-0.70395684036886f / 8.0),
365      FL2FXCONST_SGL(0.58796798221039f / 8.0)},
366     {FL2FXCONST_SGL(0.00563771969365f / 8.0),
367      FL2FXCONST_SGL(0.61768196727244f / 8.0)},
368     {FL2FXCONST_SGL(0.89065051931895f / 8.0),
369      FL2FXCONST_SGL(0.52783352697585f / 8.0)},
370     {FL2FXCONST_SGL(-0.68683707712762f / 8.0),
371      FL2FXCONST_SGL(0.80806944710339f / 8.0)},
372     {FL2FXCONST_SGL(0.72165342518718f / 8.0),
373      FL2FXCONST_SGL(-0.69259857349564f / 8.0)},
374     {FL2FXCONST_SGL(-0.62928247730667f / 8.0),
375      FL2FXCONST_SGL(0.13627037407335f / 8.0)},
376     {FL2FXCONST_SGL(0.29938434065514f / 8.0),
377      FL2FXCONST_SGL(-0.46051329682246f / 8.0)},
378     {FL2FXCONST_SGL(-0.91781958879280f / 8.0),
379      FL2FXCONST_SGL(-0.74012716684186f / 8.0)},
380     {FL2FXCONST_SGL(0.99298717043688f / 8.0),
381      FL2FXCONST_SGL(0.40816610075661f / 8.0)},
382     {FL2FXCONST_SGL(0.82368298622748f / 8.0),
383      FL2FXCONST_SGL(-0.74036047190173f / 8.0)},
384     {FL2FXCONST_SGL(-0.98512833386833f / 8.0),
385      FL2FXCONST_SGL(-0.99972330709594f / 8.0)},
386     {FL2FXCONST_SGL(-0.95915368242257f / 8.0),
387      FL2FXCONST_SGL(-0.99237800466040f / 8.0)},
388     {FL2FXCONST_SGL(-0.21411126572790f / 8.0),
389      FL2FXCONST_SGL(-0.93424819052545f / 8.0)},
390     {FL2FXCONST_SGL(-0.68821476106884f / 8.0),
391      FL2FXCONST_SGL(-0.26892306315457f / 8.0)},
392     {FL2FXCONST_SGL(0.91851997982317f / 8.0),
393      FL2FXCONST_SGL(0.09358228901785f / 8.0)},
394     {FL2FXCONST_SGL(-0.96062769559127f / 8.0),
395      FL2FXCONST_SGL(0.36099095133739f / 8.0)},
396     {FL2FXCONST_SGL(0.51646184922287f / 8.0),
397      FL2FXCONST_SGL(-0.71373332873917f / 8.0)},
398     {FL2FXCONST_SGL(0.61130721139669f / 8.0),
399      FL2FXCONST_SGL(0.46950141175917f / 8.0)},
400     {FL2FXCONST_SGL(0.47336129371299f / 8.0),
401      FL2FXCONST_SGL(-0.27333178296162f / 8.0)},
402     {FL2FXCONST_SGL(0.90998308703519f / 8.0),
403      FL2FXCONST_SGL(0.96715662938132f / 8.0)},
404     {FL2FXCONST_SGL(0.44844799194357f / 8.0),
405      FL2FXCONST_SGL(0.99211574628306f / 8.0)},
406     {FL2FXCONST_SGL(0.66614891079092f / 8.0),
407      FL2FXCONST_SGL(0.96590176169121f / 8.0)},
408     {FL2FXCONST_SGL(0.74922239129237f / 8.0),
409      FL2FXCONST_SGL(-0.89879858826087f / 8.0)},
410     {FL2FXCONST_SGL(-0.99571588506485f / 8.0),
411      FL2FXCONST_SGL(0.52785521494349f / 8.0)},
412     {FL2FXCONST_SGL(0.97401082477563f / 8.0),
413      FL2FXCONST_SGL(-0.16855870075190f / 8.0)},
414     {FL2FXCONST_SGL(0.72683747733879f / 8.0),
415      FL2FXCONST_SGL(-0.48060774432251f / 8.0)},
416     {FL2FXCONST_SGL(0.95432193457128f / 8.0),
417      FL2FXCONST_SGL(0.68849603408441f / 8.0)},
418     {FL2FXCONST_SGL(-0.72962208425191f / 8.0),
419      FL2FXCONST_SGL(-0.76608443420917f / 8.0)},
420     {FL2FXCONST_SGL(-0.85359479233537f / 8.0),
421      FL2FXCONST_SGL(0.88738125901579f / 8.0)},
422     {FL2FXCONST_SGL(-0.81412430338535f / 8.0),
423      FL2FXCONST_SGL(-0.97480768049637f / 8.0)},
424     {FL2FXCONST_SGL(-0.87930772356786f / 8.0),
425      FL2FXCONST_SGL(0.74748307690436f / 8.0)},
426     {FL2FXCONST_SGL(-0.71573331064977f / 8.0),
427      FL2FXCONST_SGL(-0.98570608178923f / 8.0)},
428     {FL2FXCONST_SGL(0.83524300028228f / 8.0),
429      FL2FXCONST_SGL(0.83702537075163f / 8.0)},
430     {FL2FXCONST_SGL(-0.48086065601423f / 8.0),
431      FL2FXCONST_SGL(-0.98848504923531f / 8.0)},
432     {FL2FXCONST_SGL(0.97139128574778f / 8.0),
433      FL2FXCONST_SGL(0.80093621198236f / 8.0)},
434     {FL2FXCONST_SGL(0.51992825347895f / 8.0),
435      FL2FXCONST_SGL(0.80247631400510f / 8.0)},
436     {FL2FXCONST_SGL(-0.00848591195325f / 8.0),
437      FL2FXCONST_SGL(-0.76670128000486f / 8.0)},
438     {FL2FXCONST_SGL(-0.70294374303036f / 8.0),
439      FL2FXCONST_SGL(0.55359910445577f / 8.0)},
440     {FL2FXCONST_SGL(-0.95894428168140f / 8.0),
441      FL2FXCONST_SGL(-0.43265504344783f / 8.0)},
442     {FL2FXCONST_SGL(0.97079252950321f / 8.0),
443      FL2FXCONST_SGL(0.09325857238682f / 8.0)},
444     {FL2FXCONST_SGL(-0.92404293670797f / 8.0),
445      FL2FXCONST_SGL(0.85507704027855f / 8.0)},
446     {FL2FXCONST_SGL(-0.69506469500450f / 8.0),
447      FL2FXCONST_SGL(0.98633412625459f / 8.0)},
448     {FL2FXCONST_SGL(0.26559203620024f / 8.0),
449      FL2FXCONST_SGL(0.73314307966524f / 8.0)},
450     {FL2FXCONST_SGL(0.28038443336943f / 8.0),
451      FL2FXCONST_SGL(0.14537913654427f / 8.0)},
452     {FL2FXCONST_SGL(-0.74138124825523f / 8.0),
453      FL2FXCONST_SGL(0.99310339807762f / 8.0)},
454     {FL2FXCONST_SGL(-0.01752795995444f / 8.0),
455      FL2FXCONST_SGL(-0.82616635284178f / 8.0)},
456     {FL2FXCONST_SGL(-0.55126773094930f / 8.0),
457      FL2FXCONST_SGL(-0.98898543862153f / 8.0)},
458     {FL2FXCONST_SGL(0.97960898850996f / 8.0),
459      FL2FXCONST_SGL(-0.94021446752851f / 8.0)},
460     {FL2FXCONST_SGL(-0.99196309146936f / 8.0),
461      FL2FXCONST_SGL(0.67019017358456f / 8.0)},
462     {FL2FXCONST_SGL(-0.67684928085260f / 8.0),
463      FL2FXCONST_SGL(0.12631491649378f / 8.0)},
464     {FL2FXCONST_SGL(0.09140039465500f / 8.0),
465      FL2FXCONST_SGL(-0.20537731453108f / 8.0)},
466     {FL2FXCONST_SGL(-0.71658965751996f / 8.0),
467      FL2FXCONST_SGL(-0.97788200391224f / 8.0)},
468     {FL2FXCONST_SGL(0.81014640078925f / 8.0),
469      FL2FXCONST_SGL(0.53722648362443f / 8.0)},
470     {FL2FXCONST_SGL(0.40616991671205f / 8.0),
471      FL2FXCONST_SGL(-0.26469008598449f / 8.0)},
472     {FL2FXCONST_SGL(-0.67680188682972f / 8.0),
473      FL2FXCONST_SGL(0.94502052337695f / 8.0)},
474     {FL2FXCONST_SGL(0.86849774348749f / 8.0),
475      FL2FXCONST_SGL(-0.18333598647899f / 8.0)},
476     {FL2FXCONST_SGL(-0.99500381284851f / 8.0),
477      FL2FXCONST_SGL(-0.02634122068550f / 8.0)},
478     {FL2FXCONST_SGL(0.84329189340667f / 8.0),
479      FL2FXCONST_SGL(0.10406957462213f / 8.0)},
480     {FL2FXCONST_SGL(-0.09215968531446f / 8.0),
481      FL2FXCONST_SGL(0.69540012101253f / 8.0)},
482     {FL2FXCONST_SGL(0.99956173327206f / 8.0),
483      FL2FXCONST_SGL(-0.12358542001404f / 8.0)},
484     {FL2FXCONST_SGL(-0.79732779473535f / 8.0),
485      FL2FXCONST_SGL(-0.91582524736159f / 8.0)},
486     {FL2FXCONST_SGL(0.96349973642406f / 8.0),
487      FL2FXCONST_SGL(0.96640458041000f / 8.0)},
488     {FL2FXCONST_SGL(-0.79942778496547f / 8.0),
489      FL2FXCONST_SGL(0.64323902822857f / 8.0)},
490     {FL2FXCONST_SGL(-0.11566039853896f / 8.0),
491      FL2FXCONST_SGL(0.28587846253726f / 8.0)},
492     {FL2FXCONST_SGL(-0.39922954514662f / 8.0),
493      FL2FXCONST_SGL(0.94129601616966f / 8.0)},
494     {FL2FXCONST_SGL(0.99089197565987f / 8.0),
495      FL2FXCONST_SGL(-0.92062625581587f / 8.0)},
496     {FL2FXCONST_SGL(0.28631285179909f / 8.0),
497      FL2FXCONST_SGL(-0.91035047143603f / 8.0)},
498     {FL2FXCONST_SGL(-0.83302725605608f / 8.0),
499      FL2FXCONST_SGL(-0.67330410892084f / 8.0)},
500     {FL2FXCONST_SGL(0.95404443402072f / 8.0),
501      FL2FXCONST_SGL(0.49162765398743f / 8.0)},
502     {FL2FXCONST_SGL(-0.06449863579434f / 8.0),
503      FL2FXCONST_SGL(0.03250560813135f / 8.0)},
504     {FL2FXCONST_SGL(-0.99575054486311f / 8.0),
505      FL2FXCONST_SGL(0.42389784469507f / 8.0)},
506     {FL2FXCONST_SGL(-0.65501142790847f / 8.0),
507      FL2FXCONST_SGL(0.82546114655624f / 8.0)},
508     {FL2FXCONST_SGL(-0.81254441908887f / 8.0),
509      FL2FXCONST_SGL(-0.51627234660629f / 8.0)},
510     {FL2FXCONST_SGL(-0.99646369485481f / 8.0),
511      FL2FXCONST_SGL(0.84490533520752f / 8.0)},
512     {FL2FXCONST_SGL(0.00287840603348f / 8.0),
513      FL2FXCONST_SGL(0.64768261158166f / 8.0)},
514     {FL2FXCONST_SGL(0.70176989408455f / 8.0),
515      FL2FXCONST_SGL(-0.20453028573322f / 8.0)},
516     {FL2FXCONST_SGL(0.96361882270190f / 8.0),
517      FL2FXCONST_SGL(0.40706967140989f / 8.0)},
518     {FL2FXCONST_SGL(-0.68883758192426f / 8.0),
519      FL2FXCONST_SGL(0.91338958840772f / 8.0)},
520     {FL2FXCONST_SGL(-0.34875585502238f / 8.0),
521      FL2FXCONST_SGL(0.71472290693300f / 8.0)},
522     {FL2FXCONST_SGL(0.91980081243087f / 8.0),
523      FL2FXCONST_SGL(0.66507455644919f / 8.0)},
524     {FL2FXCONST_SGL(-0.99009048343881f / 8.0),
525      FL2FXCONST_SGL(0.85868021604848f / 8.0)},
526     {FL2FXCONST_SGL(0.68865791458395f / 8.0),
527      FL2FXCONST_SGL(0.55660316809678f / 8.0)},
528     {FL2FXCONST_SGL(-0.99484402129368f / 8.0),
529      FL2FXCONST_SGL(-0.20052559254934f / 8.0)},
530     {FL2FXCONST_SGL(0.94214511408023f / 8.0),
531      FL2FXCONST_SGL(-0.99696425367461f / 8.0)},
532     {FL2FXCONST_SGL(-0.67414626793544f / 8.0),
533      FL2FXCONST_SGL(0.49548221180078f / 8.0)},
534     {FL2FXCONST_SGL(-0.47339353684664f / 8.0),
535      FL2FXCONST_SGL(-0.85904328834047f / 8.0)},
536     {FL2FXCONST_SGL(0.14323651387360f / 8.0),
537      FL2FXCONST_SGL(-0.94145598222488f / 8.0)},
538     {FL2FXCONST_SGL(-0.29268293575672f / 8.0),
539      FL2FXCONST_SGL(0.05759224927952f / 8.0)},
540     {FL2FXCONST_SGL(0.43793861458754f / 8.0),
541      FL2FXCONST_SGL(-0.78904969892724f / 8.0)},
542     {FL2FXCONST_SGL(-0.36345126374441f / 8.0),
543      FL2FXCONST_SGL(0.64874435357162f / 8.0)},
544     {FL2FXCONST_SGL(-0.08750604656825f / 8.0),
545      FL2FXCONST_SGL(0.97686944362527f / 8.0)},
546     {FL2FXCONST_SGL(-0.96495267812511f / 8.0),
547      FL2FXCONST_SGL(-0.53960305946511f / 8.0)},
548     {FL2FXCONST_SGL(0.55526940659947f / 8.0),
549      FL2FXCONST_SGL(0.78891523734774f / 8.0)},
550     {FL2FXCONST_SGL(0.73538215752630f / 8.0),
551      FL2FXCONST_SGL(0.96452072373404f / 8.0)},
552     {FL2FXCONST_SGL(-0.30889773919437f / 8.0),
553      FL2FXCONST_SGL(-0.80664389776860f / 8.0)},
554     {FL2FXCONST_SGL(0.03574995626194f / 8.0),
555      FL2FXCONST_SGL(-0.97325616900959f / 8.0)},
556     {FL2FXCONST_SGL(0.98720684660488f / 8.0),
557      FL2FXCONST_SGL(0.48409133691962f / 8.0)},
558     {FL2FXCONST_SGL(-0.81689296271203f / 8.0),
559      FL2FXCONST_SGL(-0.90827703628298f / 8.0)},
560     {FL2FXCONST_SGL(0.67866860118215f / 8.0),
561      FL2FXCONST_SGL(0.81284503870856f / 8.0)},
562     {FL2FXCONST_SGL(-0.15808569732583f / 8.0),
563      FL2FXCONST_SGL(0.85279555024382f / 8.0)},
564     {FL2FXCONST_SGL(0.80723395114371f / 8.0),
565      FL2FXCONST_SGL(-0.24717418514605f / 8.0)},
566     {FL2FXCONST_SGL(0.47788757329038f / 8.0),
567      FL2FXCONST_SGL(-0.46333147839295f / 8.0)},
568     {FL2FXCONST_SGL(0.96367554763201f / 8.0),
569      FL2FXCONST_SGL(0.38486749303242f / 8.0)},
570     {FL2FXCONST_SGL(-0.99143875716818f / 8.0),
571      FL2FXCONST_SGL(-0.24945277239809f / 8.0)},
572     {FL2FXCONST_SGL(0.83081876925833f / 8.0),
573      FL2FXCONST_SGL(-0.94780851414763f / 8.0)},
574     {FL2FXCONST_SGL(-0.58753191905341f / 8.0),
575      FL2FXCONST_SGL(0.01290772389163f / 8.0)},
576     {FL2FXCONST_SGL(0.95538108220960f / 8.0),
577      FL2FXCONST_SGL(-0.85557052096538f / 8.0)},
578     {FL2FXCONST_SGL(-0.96490920476211f / 8.0),
579      FL2FXCONST_SGL(-0.64020970923102f / 8.0)},
580     {FL2FXCONST_SGL(-0.97327101028521f / 8.0),
581      FL2FXCONST_SGL(0.12378128133110f / 8.0)},
582     {FL2FXCONST_SGL(0.91400366022124f / 8.0),
583      FL2FXCONST_SGL(0.57972471346930f / 8.0)},
584     {FL2FXCONST_SGL(-0.99925837363824f / 8.0),
585      FL2FXCONST_SGL(0.71084847864067f / 8.0)},
586     {FL2FXCONST_SGL(-0.86875903507313f / 8.0),
587      FL2FXCONST_SGL(-0.20291699203564f / 8.0)},
588     {FL2FXCONST_SGL(-0.26240034795124f / 8.0),
589      FL2FXCONST_SGL(-0.68264554369108f / 8.0)},
590     {FL2FXCONST_SGL(-0.24664412953388f / 8.0),
591      FL2FXCONST_SGL(-0.87642273115183f / 8.0)},
592     {FL2FXCONST_SGL(0.02416275806869f / 8.0),
593      FL2FXCONST_SGL(0.27192914288905f / 8.0)},
594     {FL2FXCONST_SGL(0.82068619590515f / 8.0),
595      FL2FXCONST_SGL(-0.85087787994476f / 8.0)},
596     {FL2FXCONST_SGL(0.88547373760759f / 8.0),
597      FL2FXCONST_SGL(-0.89636802901469f / 8.0)},
598     {FL2FXCONST_SGL(-0.18173078152226f / 8.0),
599      FL2FXCONST_SGL(-0.26152145156800f / 8.0)},
600     {FL2FXCONST_SGL(0.09355476558534f / 8.0),
601      FL2FXCONST_SGL(0.54845123045604f / 8.0)},
602     {FL2FXCONST_SGL(-0.54668414224090f / 8.0),
603      FL2FXCONST_SGL(0.95980774020221f / 8.0)},
604     {FL2FXCONST_SGL(0.37050990604091f / 8.0),
605      FL2FXCONST_SGL(-0.59910140383171f / 8.0)},
606     {FL2FXCONST_SGL(-0.70373594262891f / 8.0),
607      FL2FXCONST_SGL(0.91227665827081f / 8.0)},
608     {FL2FXCONST_SGL(-0.34600785879594f / 8.0),
609      FL2FXCONST_SGL(-0.99441426144200f / 8.0)},
610     {FL2FXCONST_SGL(-0.68774481731008f / 8.0),
611      FL2FXCONST_SGL(-0.30238837956299f / 8.0)},
612     {FL2FXCONST_SGL(-0.26843291251234f / 8.0),
613      FL2FXCONST_SGL(0.83115668004362f / 8.0)},
614     {FL2FXCONST_SGL(0.49072334613242f / 8.0),
615      FL2FXCONST_SGL(-0.45359708737775f / 8.0)},
616     {FL2FXCONST_SGL(0.38975993093975f / 8.0),
617      FL2FXCONST_SGL(0.95515358099121f / 8.0)},
618     {FL2FXCONST_SGL(-0.97757125224150f / 8.0),
619      FL2FXCONST_SGL(0.05305894580606f / 8.0)},
620     {FL2FXCONST_SGL(-0.17325552859616f / 8.0),
621      FL2FXCONST_SGL(-0.92770672250494f / 8.0)},
622     {FL2FXCONST_SGL(0.99948035025744f / 8.0),
623      FL2FXCONST_SGL(0.58285545563426f / 8.0)},
624     {FL2FXCONST_SGL(-0.64946246527458f / 8.0),
625      FL2FXCONST_SGL(0.68645507104960f / 8.0)},
626     {FL2FXCONST_SGL(-0.12016920576437f / 8.0),
627      FL2FXCONST_SGL(-0.57147322153312f / 8.0)},
628     {FL2FXCONST_SGL(-0.58947456517751f / 8.0),
629      FL2FXCONST_SGL(-0.34847132454388f / 8.0)},
630     {FL2FXCONST_SGL(-0.41815140454465f / 8.0),
631      FL2FXCONST_SGL(0.16276422358861f / 8.0)},
632     {FL2FXCONST_SGL(0.99885650204884f / 8.0),
633      FL2FXCONST_SGL(0.11136095490444f / 8.0)},
634     {FL2FXCONST_SGL(-0.56649614128386f / 8.0),
635      FL2FXCONST_SGL(-0.90494866361587f / 8.0)},
636     {FL2FXCONST_SGL(0.94138021032330f / 8.0),
637      FL2FXCONST_SGL(0.35281916733018f / 8.0)},
638     {FL2FXCONST_SGL(-0.75725076534641f / 8.0),
639      FL2FXCONST_SGL(0.53650549640587f / 8.0)},
640     {FL2FXCONST_SGL(0.20541973692630f / 8.0),
641      FL2FXCONST_SGL(-0.94435144369918f / 8.0)},
642     {FL2FXCONST_SGL(0.99980371023351f / 8.0),
643      FL2FXCONST_SGL(0.79835913565599f / 8.0)},
644     {FL2FXCONST_SGL(0.29078277605775f / 8.0),
645      FL2FXCONST_SGL(0.35393777921520f / 8.0)},
646     {FL2FXCONST_SGL(-0.62858772103030f / 8.0),
647      FL2FXCONST_SGL(0.38765693387102f / 8.0)},
648     {FL2FXCONST_SGL(0.43440904467688f / 8.0),
649      FL2FXCONST_SGL(-0.98546330463232f / 8.0)},
650     {FL2FXCONST_SGL(-0.98298583762390f / 8.0),
651      FL2FXCONST_SGL(0.21021524625209f / 8.0)},
652     {FL2FXCONST_SGL(0.19513029146934f / 8.0),
653      FL2FXCONST_SGL(-0.94239832251867f / 8.0)},
654     {FL2FXCONST_SGL(-0.95476662400101f / 8.0),
655      FL2FXCONST_SGL(0.98364554179143f / 8.0)},
656     {FL2FXCONST_SGL(0.93379635304810f / 8.0),
657      FL2FXCONST_SGL(-0.70881994583682f / 8.0)},
658     {FL2FXCONST_SGL(-0.85235410573336f / 8.0),
659      FL2FXCONST_SGL(-0.08342347966410f / 8.0)},
660     {FL2FXCONST_SGL(-0.86425093011245f / 8.0),
661      FL2FXCONST_SGL(-0.45795025029466f / 8.0)},
662     {FL2FXCONST_SGL(0.38879779059045f / 8.0),
663      FL2FXCONST_SGL(0.97274429344593f / 8.0)},
664     {FL2FXCONST_SGL(0.92045124735495f / 8.0),
665      FL2FXCONST_SGL(-0.62433652524220f / 8.0)},
666     {FL2FXCONST_SGL(0.89162532251878f / 8.0),
667      FL2FXCONST_SGL(0.54950955570563f / 8.0)},
668     {FL2FXCONST_SGL(-0.36834336949252f / 8.0),
669      FL2FXCONST_SGL(0.96458298020975f / 8.0)},
670     {FL2FXCONST_SGL(0.93891760988045f / 8.0),
671      FL2FXCONST_SGL(-0.89968353740388f / 8.0)},
672     {FL2FXCONST_SGL(0.99267657565094f / 8.0),
673      FL2FXCONST_SGL(-0.03757034316958f / 8.0)},
674     {FL2FXCONST_SGL(-0.94063471614176f / 8.0),
675      FL2FXCONST_SGL(0.41332338538963f / 8.0)},
676     {FL2FXCONST_SGL(0.99740224117019f / 8.0),
677      FL2FXCONST_SGL(-0.16830494996370f / 8.0)},
678     {FL2FXCONST_SGL(-0.35899413170555f / 8.0),
679      FL2FXCONST_SGL(-0.46633226649613f / 8.0)},
680     {FL2FXCONST_SGL(0.05237237274947f / 8.0),
681      FL2FXCONST_SGL(-0.25640361602661f / 8.0)},
682     {FL2FXCONST_SGL(0.36703583957424f / 8.0),
683      FL2FXCONST_SGL(-0.38653265641875f / 8.0)},
684     {FL2FXCONST_SGL(0.91653180367913f / 8.0),
685      FL2FXCONST_SGL(-0.30587628726597f / 8.0)},
686     {FL2FXCONST_SGL(0.69000803499316f / 8.0),
687      FL2FXCONST_SGL(0.90952171386132f / 8.0)},
688     {FL2FXCONST_SGL(-0.38658751133527f / 8.0),
689      FL2FXCONST_SGL(0.99501571208985f / 8.0)},
690     {FL2FXCONST_SGL(-0.29250814029851f / 8.0),
691      FL2FXCONST_SGL(0.37444994344615f / 8.0)},
692     {FL2FXCONST_SGL(-0.60182204677608f / 8.0),
693      FL2FXCONST_SGL(0.86779651036123f / 8.0)},
694     {FL2FXCONST_SGL(-0.97418588163217f / 8.0),
695      FL2FXCONST_SGL(0.96468523666475f / 8.0)},
696     {FL2FXCONST_SGL(0.88461574003963f / 8.0),
697      FL2FXCONST_SGL(0.57508405276414f / 8.0)},
698     {FL2FXCONST_SGL(0.05198933055162f / 8.0),
699      FL2FXCONST_SGL(0.21269661669964f / 8.0)},
700     {FL2FXCONST_SGL(-0.53499621979720f / 8.0),
701      FL2FXCONST_SGL(0.97241553731237f / 8.0)},
702     {FL2FXCONST_SGL(-0.49429560226497f / 8.0),
703      FL2FXCONST_SGL(0.98183865291903f / 8.0)},
704     {FL2FXCONST_SGL(-0.98935142339139f / 8.0),
705      FL2FXCONST_SGL(-0.40249159006933f / 8.0)},
706     {FL2FXCONST_SGL(-0.98081380091130f / 8.0),
707      FL2FXCONST_SGL(-0.72856895534041f / 8.0)},
708     {FL2FXCONST_SGL(-0.27338148835532f / 8.0),
709      FL2FXCONST_SGL(0.99950922447209f / 8.0)},
710     {FL2FXCONST_SGL(0.06310802338302f / 8.0),
711      FL2FXCONST_SGL(-0.54539587529618f / 8.0)},
712     {FL2FXCONST_SGL(-0.20461677199539f / 8.0),
713      FL2FXCONST_SGL(-0.14209977628489f / 8.0)},
714     {FL2FXCONST_SGL(0.66223843141647f / 8.0),
715      FL2FXCONST_SGL(0.72528579940326f / 8.0)},
716     {FL2FXCONST_SGL(-0.84764345483665f / 8.0),
717      FL2FXCONST_SGL(0.02372316801261f / 8.0)},
718     {FL2FXCONST_SGL(-0.89039863483811f / 8.0),
719      FL2FXCONST_SGL(0.88866581484602f / 8.0)},
720     {FL2FXCONST_SGL(0.95903308477986f / 8.0),
721      FL2FXCONST_SGL(0.76744927173873f / 8.0)},
722     {FL2FXCONST_SGL(0.73504123909879f / 8.0),
723      FL2FXCONST_SGL(-0.03747203173192f / 8.0)},
724     {FL2FXCONST_SGL(-0.31744434966056f / 8.0),
725      FL2FXCONST_SGL(-0.36834111883652f / 8.0)},
726     {FL2FXCONST_SGL(-0.34110827591623f / 8.0),
727      FL2FXCONST_SGL(0.40211222807691f / 8.0)},
728     {FL2FXCONST_SGL(0.47803883714199f / 8.0),
729      FL2FXCONST_SGL(-0.39423219786288f / 8.0)},
730     {FL2FXCONST_SGL(0.98299195879514f / 8.0),
731      FL2FXCONST_SGL(0.01989791390047f / 8.0)},
732     {FL2FXCONST_SGL(-0.30963073129751f / 8.0),
733      FL2FXCONST_SGL(-0.18076720599336f / 8.0)},
734     {FL2FXCONST_SGL(0.99992588229018f / 8.0),
735      FL2FXCONST_SGL(-0.26281872094289f / 8.0)},
736     {FL2FXCONST_SGL(-0.93149731080767f / 8.0),
737      FL2FXCONST_SGL(-0.98313162570490f / 8.0)},
738     {FL2FXCONST_SGL(0.99923472302773f / 8.0),
739      FL2FXCONST_SGL(-0.80142993767554f / 8.0)},
740     {FL2FXCONST_SGL(-0.26024169633417f / 8.0),
741      FL2FXCONST_SGL(-0.75999759855752f / 8.0)},
742     {FL2FXCONST_SGL(-0.35712514743563f / 8.0),
743      FL2FXCONST_SGL(0.19298963768574f / 8.0)},
744     {FL2FXCONST_SGL(-0.99899084509530f / 8.0),
745      FL2FXCONST_SGL(0.74645156992493f / 8.0)},
746     {FL2FXCONST_SGL(0.86557171579452f / 8.0),
747      FL2FXCONST_SGL(0.55593866696299f / 8.0)},
748     {FL2FXCONST_SGL(0.33408042438752f / 8.0),
749      FL2FXCONST_SGL(0.86185953874709f / 8.0)},
750     {FL2FXCONST_SGL(0.99010736374716f / 8.0),
751      FL2FXCONST_SGL(0.04602397576623f / 8.0)},
752     {FL2FXCONST_SGL(-0.66694269691195f / 8.0),
753      FL2FXCONST_SGL(-0.91643611810148f / 8.0)},
754     {FL2FXCONST_SGL(0.64016792079480f / 8.0),
755      FL2FXCONST_SGL(0.15649530836856f / 8.0)},
756     {FL2FXCONST_SGL(0.99570534804836f / 8.0),
757      FL2FXCONST_SGL(0.45844586038111f / 8.0)},
758     {FL2FXCONST_SGL(-0.63431466947340f / 8.0),
759      FL2FXCONST_SGL(0.21079116459234f / 8.0)},
760     {FL2FXCONST_SGL(-0.07706847005931f / 8.0),
761      FL2FXCONST_SGL(-0.89581437101329f / 8.0)},
762     {FL2FXCONST_SGL(0.98590090577724f / 8.0),
763      FL2FXCONST_SGL(0.88241721133981f / 8.0)},
764     {FL2FXCONST_SGL(0.80099335254678f / 8.0),
765      FL2FXCONST_SGL(-0.36851896710853f / 8.0)},
766     {FL2FXCONST_SGL(0.78368131392666f / 8.0),
767      FL2FXCONST_SGL(0.45506999802597f / 8.0)},
768     {FL2FXCONST_SGL(0.08707806671691f / 8.0),
769      FL2FXCONST_SGL(0.80938994918745f / 8.0)},
770     {FL2FXCONST_SGL(-0.86811883080712f / 8.0),
771      FL2FXCONST_SGL(0.39347308654705f / 8.0)},
772     {FL2FXCONST_SGL(-0.39466529740375f / 8.0),
773      FL2FXCONST_SGL(-0.66809432114456f / 8.0)},
774     {FL2FXCONST_SGL(0.97875325649683f / 8.0),
775      FL2FXCONST_SGL(-0.72467840967746f / 8.0)},
776     {FL2FXCONST_SGL(-0.95038560288864f / 8.0),
777      FL2FXCONST_SGL(0.89563219587625f / 8.0)},
778     {FL2FXCONST_SGL(0.17005239424212f / 8.0),
779      FL2FXCONST_SGL(0.54683053962658f / 8.0)},
780     {FL2FXCONST_SGL(-0.76910792026848f / 8.0),
781      FL2FXCONST_SGL(-0.96226617549298f / 8.0)},
782     {FL2FXCONST_SGL(0.99743281016846f / 8.0),
783      FL2FXCONST_SGL(0.42697157037567f / 8.0)},
784     {FL2FXCONST_SGL(0.95437383549973f / 8.0),
785      FL2FXCONST_SGL(0.97002324109952f / 8.0)},
786     {FL2FXCONST_SGL(0.99578905365569f / 8.0),
787      FL2FXCONST_SGL(-0.54106826257356f / 8.0)},
788     {FL2FXCONST_SGL(0.28058259829990f / 8.0),
789      FL2FXCONST_SGL(-0.85361420634036f / 8.0)},
790     {FL2FXCONST_SGL(0.85256524470573f / 8.0),
791      FL2FXCONST_SGL(-0.64567607735589f / 8.0)},
792     {FL2FXCONST_SGL(-0.50608540105128f / 8.0),
793      FL2FXCONST_SGL(-0.65846015480300f / 8.0)},
794     {FL2FXCONST_SGL(-0.97210735183243f / 8.0),
795      FL2FXCONST_SGL(-0.23095213067791f / 8.0)},
796     {FL2FXCONST_SGL(0.95424048234441f / 8.0),
797      FL2FXCONST_SGL(-0.99240147091219f / 8.0)},
798     {FL2FXCONST_SGL(-0.96926570524023f / 8.0),
799      FL2FXCONST_SGL(0.73775654896574f / 8.0)},
800     {FL2FXCONST_SGL(0.30872163214726f / 8.0),
801      FL2FXCONST_SGL(0.41514960556126f / 8.0)},
802     {FL2FXCONST_SGL(-0.24523839572639f / 8.0),
803      FL2FXCONST_SGL(0.63206633394807f / 8.0)},
804     {FL2FXCONST_SGL(-0.33813265086024f / 8.0),
805      FL2FXCONST_SGL(-0.38661779441897f / 8.0)},
806     {FL2FXCONST_SGL(-0.05826828420146f / 8.0),
807      FL2FXCONST_SGL(-0.06940774188029f / 8.0)},
808     {FL2FXCONST_SGL(-0.22898461455054f / 8.0),
809      FL2FXCONST_SGL(0.97054853316316f / 8.0)},
810     {FL2FXCONST_SGL(-0.18509915019881f / 8.0),
811      FL2FXCONST_SGL(0.47565762892084f / 8.0)},
812     {FL2FXCONST_SGL(-0.10488238045009f / 8.0),
813      FL2FXCONST_SGL(-0.87769947402394f / 8.0)},
814     {FL2FXCONST_SGL(-0.71886586182037f / 8.0),
815      FL2FXCONST_SGL(0.78030982480538f / 8.0)},
816     {FL2FXCONST_SGL(0.99793873738654f / 8.0),
817      FL2FXCONST_SGL(0.90041310491497f / 8.0)},
818     {FL2FXCONST_SGL(0.57563307626120f / 8.0),
819      FL2FXCONST_SGL(-0.91034337352097f / 8.0)},
820     {FL2FXCONST_SGL(0.28909646383717f / 8.0),
821      FL2FXCONST_SGL(0.96307783970534f / 8.0)},
822     {FL2FXCONST_SGL(0.42188998312520f / 8.0),
823      FL2FXCONST_SGL(0.48148651230437f / 8.0)},
824     {FL2FXCONST_SGL(0.93335049681047f / 8.0),
825      FL2FXCONST_SGL(-0.43537023883588f / 8.0)},
826     {FL2FXCONST_SGL(-0.97087374418267f / 8.0),
827      FL2FXCONST_SGL(0.86636445711364f / 8.0)},
828     {FL2FXCONST_SGL(0.36722871286923f / 8.0),
829      FL2FXCONST_SGL(0.65291654172961f / 8.0)},
830     {FL2FXCONST_SGL(-0.81093025665696f / 8.0),
831      FL2FXCONST_SGL(0.08778370229363f / 8.0)},
832     {FL2FXCONST_SGL(-0.26240603062237f / 8.0),
833      FL2FXCONST_SGL(-0.92774095379098f / 8.0)},
834     {FL2FXCONST_SGL(0.83996497984604f / 8.0),
835      FL2FXCONST_SGL(0.55839849139647f / 8.0)},
836     {FL2FXCONST_SGL(-0.99909615720225f / 8.0),
837      FL2FXCONST_SGL(-0.96024605713970f / 8.0)},
838     {FL2FXCONST_SGL(0.74649464155061f / 8.0),
839      FL2FXCONST_SGL(0.12144893606462f / 8.0)},
840     {FL2FXCONST_SGL(-0.74774595569805f / 8.0),
841      FL2FXCONST_SGL(-0.26898062008959f / 8.0)},
842     {FL2FXCONST_SGL(0.95781667469567f / 8.0),
843      FL2FXCONST_SGL(-0.79047927052628f / 8.0)},
844     {FL2FXCONST_SGL(0.95472308713099f / 8.0),
845      FL2FXCONST_SGL(-0.08588776019550f / 8.0)},
846     {FL2FXCONST_SGL(0.48708332746299f / 8.0),
847      FL2FXCONST_SGL(0.99999041579432f / 8.0)},
848     {FL2FXCONST_SGL(0.46332038247497f / 8.0),
849      FL2FXCONST_SGL(0.10964126185063f / 8.0)},
850     {FL2FXCONST_SGL(-0.76497004940162f / 8.0),
851      FL2FXCONST_SGL(0.89210929242238f / 8.0)},
852     {FL2FXCONST_SGL(0.57397389364339f / 8.0),
853      FL2FXCONST_SGL(0.35289703373760f / 8.0)},
854     {FL2FXCONST_SGL(0.75374316974495f / 8.0),
855      FL2FXCONST_SGL(0.96705214651335f / 8.0)},
856     {FL2FXCONST_SGL(-0.59174397685714f / 8.0),
857      FL2FXCONST_SGL(-0.89405370422752f / 8.0)},
858     {FL2FXCONST_SGL(0.75087906691890f / 8.0),
859      FL2FXCONST_SGL(-0.29612672982396f / 8.0)},
860     {FL2FXCONST_SGL(-0.98607857336230f / 8.0),
861      FL2FXCONST_SGL(0.25034911730023f / 8.0)},
862     {FL2FXCONST_SGL(-0.40761056640505f / 8.0),
863      FL2FXCONST_SGL(-0.90045573444695f / 8.0)},
864     {FL2FXCONST_SGL(0.66929266740477f / 8.0),
865      FL2FXCONST_SGL(0.98629493401748f / 8.0)},
866     {FL2FXCONST_SGL(-0.97463695257310f / 8.0),
867      FL2FXCONST_SGL(-0.00190223301301f / 8.0)},
868     {FL2FXCONST_SGL(0.90145509409859f / 8.0),
869      FL2FXCONST_SGL(0.99781390365446f / 8.0)},
870     {FL2FXCONST_SGL(-0.87259289048043f / 8.0),
871      FL2FXCONST_SGL(0.99233587353666f / 8.0)},
872     {FL2FXCONST_SGL(-0.91529461447692f / 8.0),
873      FL2FXCONST_SGL(-0.15698707534206f / 8.0)},
874     {FL2FXCONST_SGL(-0.03305738840705f / 8.0),
875      FL2FXCONST_SGL(-0.37205262859764f / 8.0)},
876     {FL2FXCONST_SGL(0.07223051368337f / 8.0),
877      FL2FXCONST_SGL(-0.88805001733626f / 8.0)},
878     {FL2FXCONST_SGL(0.99498012188353f / 8.0),
879      FL2FXCONST_SGL(0.97094358113387f / 8.0)},
880     {FL2FXCONST_SGL(-0.74904939500519f / 8.0),
881      FL2FXCONST_SGL(0.99985483641521f / 8.0)},
882     {FL2FXCONST_SGL(0.04585228574211f / 8.0),
883      FL2FXCONST_SGL(0.99812337444082f / 8.0)},
884     {FL2FXCONST_SGL(-0.89054954257993f / 8.0),
885      FL2FXCONST_SGL(-0.31791913188064f / 8.0)},
886     {FL2FXCONST_SGL(-0.83782144651251f / 8.0),
887      FL2FXCONST_SGL(0.97637632547466f / 8.0)},
888     {FL2FXCONST_SGL(0.33454804933804f / 8.0),
889      FL2FXCONST_SGL(-0.86231516800408f / 8.0)},
890     {FL2FXCONST_SGL(-0.99707579362824f / 8.0),
891      FL2FXCONST_SGL(0.93237990079441f / 8.0)},
892     {FL2FXCONST_SGL(-0.22827527843994f / 8.0),
893      FL2FXCONST_SGL(0.18874759397997f / 8.0)},
894     {FL2FXCONST_SGL(0.67248046289143f / 8.0),
895      FL2FXCONST_SGL(-0.03646211390569f / 8.0)},
896     {FL2FXCONST_SGL(-0.05146538187944f / 8.0),
897      FL2FXCONST_SGL(-0.92599700120679f / 8.0)},
898     {FL2FXCONST_SGL(0.99947295749905f / 8.0),
899      FL2FXCONST_SGL(0.93625229707912f / 8.0)},
900     {FL2FXCONST_SGL(0.66951124390363f / 8.0),
901      FL2FXCONST_SGL(0.98905825623893f / 8.0)},
902     {FL2FXCONST_SGL(-0.99602956559179f / 8.0),
903      FL2FXCONST_SGL(-0.44654715757688f / 8.0)},
904     {FL2FXCONST_SGL(0.82104905483590f / 8.0),
905      FL2FXCONST_SGL(0.99540741724928f / 8.0)},
906     {FL2FXCONST_SGL(0.99186510988782f / 8.0),
907      FL2FXCONST_SGL(0.72023001312947f / 8.0)},
908     {FL2FXCONST_SGL(-0.65284592392918f / 8.0),
909      FL2FXCONST_SGL(0.52186723253637f / 8.0)},
910     {FL2FXCONST_SGL(0.93885443798188f / 8.0),
911      FL2FXCONST_SGL(-0.74895312615259f / 8.0)},
912     {FL2FXCONST_SGL(0.96735248738388f / 8.0),
913      FL2FXCONST_SGL(0.90891816978629f / 8.0)},
914     {FL2FXCONST_SGL(-0.22225968841114f / 8.0),
915      FL2FXCONST_SGL(0.57124029781228f / 8.0)},
916     {FL2FXCONST_SGL(-0.44132783753414f / 8.0),
917      FL2FXCONST_SGL(-0.92688840659280f / 8.0)},
918     {FL2FXCONST_SGL(-0.85694974219574f / 8.0),
919      FL2FXCONST_SGL(0.88844532719844f / 8.0)},
920     {FL2FXCONST_SGL(0.91783042091762f / 8.0),
921      FL2FXCONST_SGL(-0.46356892383970f / 8.0)},
922     {FL2FXCONST_SGL(0.72556974415690f / 8.0),
923      FL2FXCONST_SGL(-0.99899555770747f / 8.0)},
924     {FL2FXCONST_SGL(-0.99711581834508f / 8.0),
925      FL2FXCONST_SGL(0.58211560180426f / 8.0)},
926     {FL2FXCONST_SGL(0.77638976371966f / 8.0),
927      FL2FXCONST_SGL(0.94321834873819f / 8.0)},
928     {FL2FXCONST_SGL(0.07717324253925f / 8.0),
929      FL2FXCONST_SGL(0.58638399856595f / 8.0)},
930     {FL2FXCONST_SGL(-0.56049829194163f / 8.0),
931      FL2FXCONST_SGL(0.82522301569036f / 8.0)},
932     {FL2FXCONST_SGL(0.98398893639988f / 8.0),
933      FL2FXCONST_SGL(0.39467440420569f / 8.0)},
934     {FL2FXCONST_SGL(0.47546946844938f / 8.0),
935      FL2FXCONST_SGL(0.68613044836811f / 8.0)},
936     {FL2FXCONST_SGL(0.65675089314631f / 8.0),
937      FL2FXCONST_SGL(0.18331637134880f / 8.0)},
938     {FL2FXCONST_SGL(0.03273375457980f / 8.0),
939      FL2FXCONST_SGL(-0.74933109564108f / 8.0)},
940     {FL2FXCONST_SGL(-0.38684144784738f / 8.0),
941      FL2FXCONST_SGL(0.51337349030406f / 8.0)},
942     {FL2FXCONST_SGL(-0.97346267944545f / 8.0),
943      FL2FXCONST_SGL(-0.96549364384098f / 8.0)},
944     {FL2FXCONST_SGL(-0.53282156061942f / 8.0),
945      FL2FXCONST_SGL(-0.91423265091354f / 8.0)},
946     {FL2FXCONST_SGL(0.99817310731176f / 8.0),
947      FL2FXCONST_SGL(0.61133572482148f / 8.0)},
948     {FL2FXCONST_SGL(-0.50254500772635f / 8.0),
949      FL2FXCONST_SGL(-0.88829338134294f / 8.0)},
950     {FL2FXCONST_SGL(0.01995873238855f / 8.0),
951      FL2FXCONST_SGL(0.85223515096765f / 8.0)},
952     {FL2FXCONST_SGL(0.99930381973804f / 8.0),
953      FL2FXCONST_SGL(0.94578896296649f / 8.0)},
954     {FL2FXCONST_SGL(0.82907767600783f / 8.0),
955      FL2FXCONST_SGL(-0.06323442598128f / 8.0)},
956     {FL2FXCONST_SGL(-0.58660709669728f / 8.0),
957      FL2FXCONST_SGL(0.96840773806582f / 8.0)},
958     {FL2FXCONST_SGL(-0.17573736667267f / 8.0),
959      FL2FXCONST_SGL(-0.48166920859485f / 8.0)},
960     {FL2FXCONST_SGL(0.83434292401346f / 8.0),
961      FL2FXCONST_SGL(-0.13023450646997f / 8.0)},
962     {FL2FXCONST_SGL(0.05946491307025f / 8.0),
963      FL2FXCONST_SGL(0.20511047074866f / 8.0)},
964     {FL2FXCONST_SGL(0.81505484574602f / 8.0),
965      FL2FXCONST_SGL(-0.94685947861369f / 8.0)},
966     {FL2FXCONST_SGL(-0.44976380954860f / 8.0),
967      FL2FXCONST_SGL(0.40894572671545f / 8.0)},
968     {FL2FXCONST_SGL(-0.89746474625671f / 8.0),
969      FL2FXCONST_SGL(0.99846578838537f / 8.0)},
970     {FL2FXCONST_SGL(0.39677256130792f / 8.0),
971      FL2FXCONST_SGL(-0.74854668609359f / 8.0)},
972     {FL2FXCONST_SGL(-0.07588948563079f / 8.0),
973      FL2FXCONST_SGL(0.74096214084170f / 8.0)},
974     {FL2FXCONST_SGL(0.76343198951445f / 8.0),
975      FL2FXCONST_SGL(0.41746629422634f / 8.0)},
976     {FL2FXCONST_SGL(-0.74490104699626f / 8.0),
977      FL2FXCONST_SGL(0.94725911744610f / 8.0)},
978     {FL2FXCONST_SGL(0.64880119792759f / 8.0),
979      FL2FXCONST_SGL(0.41336660830571f / 8.0)},
980     {FL2FXCONST_SGL(0.62319537462542f / 8.0),
981      FL2FXCONST_SGL(-0.93098313552599f / 8.0)},
982     {FL2FXCONST_SGL(0.42215817594807f / 8.0),
983      FL2FXCONST_SGL(-0.07712787385208f / 8.0)},
984     {FL2FXCONST_SGL(0.02704554141885f / 8.0),
985      FL2FXCONST_SGL(-0.05417518053666f / 8.0)},
986     {FL2FXCONST_SGL(0.80001773566818f / 8.0),
987      FL2FXCONST_SGL(0.91542195141039f / 8.0)},
988     {FL2FXCONST_SGL(-0.79351832348816f / 8.0),
989      FL2FXCONST_SGL(-0.36208897989136f / 8.0)},
990     {FL2FXCONST_SGL(0.63872359151636f / 8.0),
991      FL2FXCONST_SGL(0.08128252493444f / 8.0)},
992     {FL2FXCONST_SGL(0.52890520960295f / 8.0),
993      FL2FXCONST_SGL(0.60048872455592f / 8.0)},
994     {FL2FXCONST_SGL(0.74238552914587f / 8.0),
995      FL2FXCONST_SGL(0.04491915291044f / 8.0)},
996     {FL2FXCONST_SGL(0.99096131449250f / 8.0),
997      FL2FXCONST_SGL(-0.19451182854402f / 8.0)},
998     {FL2FXCONST_SGL(-0.80412329643109f / 8.0),
999      FL2FXCONST_SGL(-0.88513818199457f / 8.0)},
1000     {FL2FXCONST_SGL(-0.64612616129736f / 8.0),
1001      FL2FXCONST_SGL(0.72198674804544f / 8.0)},
1002     {FL2FXCONST_SGL(0.11657770663191f / 8.0),
1003      FL2FXCONST_SGL(-0.83662833815041f / 8.0)},
1004     {FL2FXCONST_SGL(-0.95053182488101f / 8.0),
1005      FL2FXCONST_SGL(-0.96939905138082f / 8.0)},
1006     {FL2FXCONST_SGL(-0.62228872928622f / 8.0),
1007      FL2FXCONST_SGL(0.82767262846661f / 8.0)},
1008     {FL2FXCONST_SGL(0.03004475787316f / 8.0),
1009      FL2FXCONST_SGL(-0.99738896333384f / 8.0)},
1010     {FL2FXCONST_SGL(-0.97987214341034f / 8.0),
1011      FL2FXCONST_SGL(0.36526129686425f / 8.0)},
1012     {FL2FXCONST_SGL(-0.99986980746200f / 8.0),
1013      FL2FXCONST_SGL(-0.36021610299715f / 8.0)},
1014     {FL2FXCONST_SGL(0.89110648599879f / 8.0),
1015      FL2FXCONST_SGL(-0.97894250343044f / 8.0)},
1016     {FL2FXCONST_SGL(0.10407960510582f / 8.0),
1017      FL2FXCONST_SGL(0.77357793811619f / 8.0)},
1018     {FL2FXCONST_SGL(0.95964737821728f / 8.0),
1019      FL2FXCONST_SGL(-0.35435818285502f / 8.0)},
1020     {FL2FXCONST_SGL(0.50843233159162f / 8.0),
1021      FL2FXCONST_SGL(0.96107691266205f / 8.0)},
1022     {FL2FXCONST_SGL(0.17006334670615f / 8.0),
1023      FL2FXCONST_SGL(-0.76854025314829f / 8.0)},
1024     {FL2FXCONST_SGL(0.25872675063360f / 8.0),
1025      FL2FXCONST_SGL(0.99893303933816f / 8.0)},
1026     {FL2FXCONST_SGL(-0.01115998681937f / 8.0),
1027      FL2FXCONST_SGL(0.98496019742444f / 8.0)},
1028     {FL2FXCONST_SGL(-0.79598702973261f / 8.0),
1029      FL2FXCONST_SGL(0.97138411318894f / 8.0)},
1030     {FL2FXCONST_SGL(-0.99264708948101f / 8.0),
1031      FL2FXCONST_SGL(-0.99542822402536f / 8.0)},
1032     {FL2FXCONST_SGL(-0.99829663752818f / 8.0),
1033      FL2FXCONST_SGL(0.01877138824311f / 8.0)},
1034     {FL2FXCONST_SGL(-0.70801016548184f / 8.0),
1035      FL2FXCONST_SGL(0.33680685948117f / 8.0)},
1036     {FL2FXCONST_SGL(-0.70467057786826f / 8.0),
1037      FL2FXCONST_SGL(0.93272777501857f / 8.0)},
1038     {FL2FXCONST_SGL(0.99846021905254f / 8.0),
1039      FL2FXCONST_SGL(-0.98725746254433f / 8.0)},
1040     {FL2FXCONST_SGL(-0.63364968534650f / 8.0),
1041      FL2FXCONST_SGL(-0.16473594423746f / 8.0)},
1042     {FL2FXCONST_SGL(-0.16258217500792f / 8.0),
1043      FL2FXCONST_SGL(-0.95939125400802f / 8.0)},
1044     {FL2FXCONST_SGL(-0.43645594360633f / 8.0),
1045      FL2FXCONST_SGL(-0.94805030113284f / 8.0)},
1046     {FL2FXCONST_SGL(-0.99848471702976f / 8.0),
1047      FL2FXCONST_SGL(0.96245166923809f / 8.0)},
1048     {FL2FXCONST_SGL(-0.16796458968998f / 8.0),
1049      FL2FXCONST_SGL(-0.98987511890470f / 8.0)},
1050     {FL2FXCONST_SGL(-0.87979225745213f / 8.0),
1051      FL2FXCONST_SGL(-0.71725725041680f / 8.0)},
1052     {FL2FXCONST_SGL(0.44183099021786f / 8.0),
1053      FL2FXCONST_SGL(-0.93568974498761f / 8.0)},
1054     {FL2FXCONST_SGL(0.93310180125532f / 8.0),
1055      FL2FXCONST_SGL(-0.99913308068246f / 8.0)},
1056     {FL2FXCONST_SGL(-0.93941931782002f / 8.0),
1057      FL2FXCONST_SGL(-0.56409379640356f / 8.0)},
1058     {FL2FXCONST_SGL(-0.88590003188677f / 8.0),
1059      FL2FXCONST_SGL(0.47624600491382f / 8.0)},
1060     {FL2FXCONST_SGL(0.99971463703691f / 8.0),
1061      FL2FXCONST_SGL(-0.83889954253462f / 8.0)},
1062     {FL2FXCONST_SGL(-0.75376385639978f / 8.0),
1063      FL2FXCONST_SGL(0.00814643438625f / 8.0)},
1064     {FL2FXCONST_SGL(0.93887685615875f / 8.0),
1065      FL2FXCONST_SGL(-0.11284528204636f / 8.0)},
1066     {FL2FXCONST_SGL(0.85126435782309f / 8.0),
1067      FL2FXCONST_SGL(0.52349251543547f / 8.0)},
1068     {FL2FXCONST_SGL(0.39701421446381f / 8.0),
1069      FL2FXCONST_SGL(0.81779634174316f / 8.0)},
1070     {FL2FXCONST_SGL(-0.37024464187437f / 8.0),
1071      FL2FXCONST_SGL(-0.87071656222959f / 8.0)},
1072     {FL2FXCONST_SGL(-0.36024828242896f / 8.0),
1073      FL2FXCONST_SGL(0.34655735648287f / 8.0)},
1074     {FL2FXCONST_SGL(-0.93388812549209f / 8.0),
1075      FL2FXCONST_SGL(-0.84476541096429f / 8.0)},
1076     {FL2FXCONST_SGL(-0.65298804552119f / 8.0),
1077      FL2FXCONST_SGL(-0.18439575450921f / 8.0)},
1078     {FL2FXCONST_SGL(0.11960319006843f / 8.0),
1079      FL2FXCONST_SGL(0.99899346780168f / 8.0)},
1080     {FL2FXCONST_SGL(0.94292565553160f / 8.0),
1081      FL2FXCONST_SGL(0.83163906518293f / 8.0)},
1082     {FL2FXCONST_SGL(0.75081145286948f / 8.0),
1083      FL2FXCONST_SGL(-0.35533223142265f / 8.0)},
1084     {FL2FXCONST_SGL(0.56721979748394f / 8.0),
1085      FL2FXCONST_SGL(-0.24076836414499f / 8.0)},
1086     {FL2FXCONST_SGL(0.46857766746029f / 8.0),
1087      FL2FXCONST_SGL(-0.30140233457198f / 8.0)},
1088     {FL2FXCONST_SGL(0.97312313923635f / 8.0),
1089      FL2FXCONST_SGL(-0.99548191630031f / 8.0)},
1090     {FL2FXCONST_SGL(-0.38299976567017f / 8.0),
1091      FL2FXCONST_SGL(0.98516909715427f / 8.0)},
1092     {FL2FXCONST_SGL(0.41025800019463f / 8.0),
1093      FL2FXCONST_SGL(0.02116736935734f / 8.0)},
1094     {FL2FXCONST_SGL(0.09638062008048f / 8.0),
1095      FL2FXCONST_SGL(0.04411984381457f / 8.0)},
1096     {FL2FXCONST_SGL(-0.85283249275397f / 8.0),
1097      FL2FXCONST_SGL(0.91475563922421f / 8.0)},
1098     {FL2FXCONST_SGL(0.88866808958124f / 8.0),
1099      FL2FXCONST_SGL(-0.99735267083226f / 8.0)},
1100     {FL2FXCONST_SGL(-0.48202429536989f / 8.0),
1101      FL2FXCONST_SGL(-0.96805608884164f / 8.0)},
1102     {FL2FXCONST_SGL(0.27572582416567f / 8.0),
1103      FL2FXCONST_SGL(0.58634753335832f / 8.0)},
1104     {FL2FXCONST_SGL(-0.65889129659168f / 8.0),
1105      FL2FXCONST_SGL(0.58835634138583f / 8.0)},
1106     {FL2FXCONST_SGL(0.98838086953732f / 8.0),
1107      FL2FXCONST_SGL(0.99994349600236f / 8.0)},
1108     {FL2FXCONST_SGL(-0.20651349620689f / 8.0),
1109      FL2FXCONST_SGL(0.54593044066355f / 8.0)},
1110     {FL2FXCONST_SGL(-0.62126416356920f / 8.0),
1111      FL2FXCONST_SGL(-0.59893681700392f / 8.0)},
1112     {FL2FXCONST_SGL(0.20320105410437f / 8.0),
1113      FL2FXCONST_SGL(-0.86879180355289f / 8.0)},
1114     {FL2FXCONST_SGL(-0.97790548600584f / 8.0),
1115      FL2FXCONST_SGL(0.96290806999242f / 8.0)},
1116     {FL2FXCONST_SGL(0.11112534735126f / 8.0),
1117      FL2FXCONST_SGL(0.21484763313301f / 8.0)},
1118     {FL2FXCONST_SGL(-0.41368337314182f / 8.0),
1119      FL2FXCONST_SGL(0.28216837680365f / 8.0)},
1120     {FL2FXCONST_SGL(0.24133038992960f / 8.0),
1121      FL2FXCONST_SGL(0.51294362630238f / 8.0)},
1122     {FL2FXCONST_SGL(-0.66393410674885f / 8.0),
1123      FL2FXCONST_SGL(-0.08249679629081f / 8.0)},
1124     {FL2FXCONST_SGL(-0.53697829178752f / 8.0),
1125      FL2FXCONST_SGL(-0.97649903936228f / 8.0)},
1126     {FL2FXCONST_SGL(-0.97224737889348f / 8.0),
1127      FL2FXCONST_SGL(0.22081333579837f / 8.0)},
1128     {FL2FXCONST_SGL(0.87392477144549f / 8.0),
1129      FL2FXCONST_SGL(-0.12796173740361f / 8.0)},
1130     {FL2FXCONST_SGL(0.19050361015753f / 8.0),
1131      FL2FXCONST_SGL(0.01602615387195f / 8.0)},
1132     {FL2FXCONST_SGL(-0.46353441212724f / 8.0),
1133      FL2FXCONST_SGL(-0.95249041539006f / 8.0)},
1134     {FL2FXCONST_SGL(-0.07064096339021f / 8.0),
1135      FL2FXCONST_SGL(-0.94479803205886f / 8.0)},
1136     {FL2FXCONST_SGL(-0.92444085484466f / 8.0),
1137      FL2FXCONST_SGL(-0.10457590187436f / 8.0)},
1138     {FL2FXCONST_SGL(-0.83822593578728f / 8.0),
1139      FL2FXCONST_SGL(-0.01695043208885f / 8.0)},
1140     {FL2FXCONST_SGL(0.75214681811150f / 8.0),
1141      FL2FXCONST_SGL(-0.99955681042665f / 8.0)},
1142     {FL2FXCONST_SGL(-0.42102998829339f / 8.0),
1143      FL2FXCONST_SGL(0.99720941999394f / 8.0)},
1144     {FL2FXCONST_SGL(-0.72094786237696f / 8.0),
1145      FL2FXCONST_SGL(-0.35008961934255f / 8.0)},
1146     {FL2FXCONST_SGL(0.78843311019251f / 8.0),
1147      FL2FXCONST_SGL(0.52851398958271f / 8.0)},
1148     {FL2FXCONST_SGL(0.97394027897442f / 8.0),
1149      FL2FXCONST_SGL(-0.26695944086561f / 8.0)},
1150     {FL2FXCONST_SGL(0.99206463477946f / 8.0),
1151      FL2FXCONST_SGL(-0.57010120849429f / 8.0)},
1152     {FL2FXCONST_SGL(0.76789609461795f / 8.0),
1153      FL2FXCONST_SGL(-0.76519356730966f / 8.0)},
1154     {FL2FXCONST_SGL(-0.82002421836409f / 8.0),
1155      FL2FXCONST_SGL(-0.73530179553767f / 8.0)},
1156     {FL2FXCONST_SGL(0.81924990025724f / 8.0),
1157      FL2FXCONST_SGL(0.99698425250579f / 8.0)},
1158     {FL2FXCONST_SGL(-0.26719850873357f / 8.0),
1159      FL2FXCONST_SGL(0.68903369776193f / 8.0)},
1160     {FL2FXCONST_SGL(-0.43311260380975f / 8.0),
1161      FL2FXCONST_SGL(0.85321815947490f / 8.0)},
1162     {FL2FXCONST_SGL(0.99194979673836f / 8.0),
1163      FL2FXCONST_SGL(0.91876249766422f / 8.0)},
1164     {FL2FXCONST_SGL(-0.80692001248487f / 8.0),
1165      FL2FXCONST_SGL(-0.32627540663214f / 8.0)},
1166     {FL2FXCONST_SGL(0.43080003649976f / 8.0),
1167      FL2FXCONST_SGL(-0.21919095636638f / 8.0)},
1168     {FL2FXCONST_SGL(0.67709491937357f / 8.0),
1169      FL2FXCONST_SGL(-0.95478075822906f / 8.0)},
1170     {FL2FXCONST_SGL(0.56151770568316f / 8.0),
1171      FL2FXCONST_SGL(-0.70693811747778f / 8.0)},
1172     {FL2FXCONST_SGL(0.10831862810749f / 8.0),
1173      FL2FXCONST_SGL(-0.08628837174592f / 8.0)},
1174     {FL2FXCONST_SGL(0.91229417540436f / 8.0),
1175      FL2FXCONST_SGL(-0.65987351408410f / 8.0)},
1176     {FL2FXCONST_SGL(-0.48972893932274f / 8.0),
1177      FL2FXCONST_SGL(0.56289246362686f / 8.0)},
1178     {FL2FXCONST_SGL(-0.89033658689697f / 8.0),
1179      FL2FXCONST_SGL(-0.71656563987082f / 8.0)},
1180     {FL2FXCONST_SGL(0.65269447475094f / 8.0),
1181      FL2FXCONST_SGL(0.65916004833932f / 8.0)},
1182     {FL2FXCONST_SGL(0.67439478141121f / 8.0),
1183      FL2FXCONST_SGL(-0.81684380846796f / 8.0)},
1184     {FL2FXCONST_SGL(-0.47770832416973f / 8.0),
1185      FL2FXCONST_SGL(-0.16789556203025f / 8.0)},
1186     {FL2FXCONST_SGL(-0.99715979260878f / 8.0),
1187      FL2FXCONST_SGL(-0.93565784007648f / 8.0)},
1188     {FL2FXCONST_SGL(-0.90889593602546f / 8.0),
1189      FL2FXCONST_SGL(0.62034397054380f / 8.0)},
1190     {FL2FXCONST_SGL(-0.06618622548177f / 8.0),
1191      FL2FXCONST_SGL(-0.23812217221359f / 8.0)},
1192     {FL2FXCONST_SGL(0.99430266919728f / 8.0),
1193      FL2FXCONST_SGL(0.18812555317553f / 8.0)},
1194     {FL2FXCONST_SGL(0.97686402381843f / 8.0),
1195      FL2FXCONST_SGL(-0.28664534366620f / 8.0)},
1196     {FL2FXCONST_SGL(0.94813650221268f / 8.0),
1197      FL2FXCONST_SGL(-0.97506640027128f / 8.0)},
1198     {FL2FXCONST_SGL(-0.95434497492853f / 8.0),
1199      FL2FXCONST_SGL(-0.79607978501983f / 8.0)},
1200     {FL2FXCONST_SGL(-0.49104783137150f / 8.0),
1201      FL2FXCONST_SGL(0.32895214359663f / 8.0)},
1202     {FL2FXCONST_SGL(0.99881175120751f / 8.0),
1203      FL2FXCONST_SGL(0.88993983831354f / 8.0)},
1204     {FL2FXCONST_SGL(0.50449166760303f / 8.0),
1205      FL2FXCONST_SGL(-0.85995072408434f / 8.0)},
1206     {FL2FXCONST_SGL(0.47162891065108f / 8.0),
1207      FL2FXCONST_SGL(-0.18680204049569f / 8.0)},
1208     {FL2FXCONST_SGL(-0.62081581361840f / 8.0),
1209      FL2FXCONST_SGL(0.75000676218956f / 8.0)},
1210     {FL2FXCONST_SGL(-0.43867015250812f / 8.0),
1211      FL2FXCONST_SGL(0.99998069244322f / 8.0)},
1212     {FL2FXCONST_SGL(0.98630563232075f / 8.0),
1213      FL2FXCONST_SGL(-0.53578899600662f / 8.0)},
1214     {FL2FXCONST_SGL(-0.61510362277374f / 8.0),
1215      FL2FXCONST_SGL(-0.89515019899997f / 8.0)},
1216     {FL2FXCONST_SGL(-0.03841517601843f / 8.0),
1217      FL2FXCONST_SGL(-0.69888815681179f / 8.0)},
1218     {FL2FXCONST_SGL(-0.30102157304644f / 8.0),
1219      FL2FXCONST_SGL(-0.07667808922205f / 8.0)},
1220     {FL2FXCONST_SGL(0.41881284182683f / 8.0),
1221      FL2FXCONST_SGL(0.02188098922282f / 8.0)},
1222     {FL2FXCONST_SGL(-0.86135454941237f / 8.0),
1223      FL2FXCONST_SGL(0.98947480909359f / 8.0)},
1224     {FL2FXCONST_SGL(0.67226861393788f / 8.0),
1225      FL2FXCONST_SGL(-0.13494389011014f / 8.0)},
1226     {FL2FXCONST_SGL(-0.70737398842068f / 8.0),
1227      FL2FXCONST_SGL(-0.76547349325992f / 8.0)},
1228     {FL2FXCONST_SGL(0.94044946687963f / 8.0),
1229      FL2FXCONST_SGL(0.09026201157416f / 8.0)},
1230     {FL2FXCONST_SGL(-0.82386352534327f / 8.0),
1231      FL2FXCONST_SGL(0.08924768823676f / 8.0)},
1232     {FL2FXCONST_SGL(-0.32070666698656f / 8.0),
1233      FL2FXCONST_SGL(0.50143421908753f / 8.0)},
1234     {FL2FXCONST_SGL(0.57593163224487f / 8.0),
1235      FL2FXCONST_SGL(-0.98966422921509f / 8.0)},
1236     {FL2FXCONST_SGL(-0.36326018419965f / 8.0),
1237      FL2FXCONST_SGL(0.07440243123228f / 8.0)},
1238     {FL2FXCONST_SGL(0.99979044674350f / 8.0),
1239      FL2FXCONST_SGL(-0.14130287347405f / 8.0)},
1240     {FL2FXCONST_SGL(-0.92366023326932f / 8.0),
1241      FL2FXCONST_SGL(-0.97979298068180f / 8.0)},
1242     {FL2FXCONST_SGL(-0.44607178518598f / 8.0),
1243      FL2FXCONST_SGL(-0.54233252016394f / 8.0)},
1244     {FL2FXCONST_SGL(0.44226800932956f / 8.0),
1245      FL2FXCONST_SGL(0.71326756742752f / 8.0)},
1246     {FL2FXCONST_SGL(0.03671907158312f / 8.0),
1247      FL2FXCONST_SGL(0.63606389366675f / 8.0)},
1248     {FL2FXCONST_SGL(0.52175424682195f / 8.0),
1249      FL2FXCONST_SGL(-0.85396826735705f / 8.0)},
1250     {FL2FXCONST_SGL(-0.94701139690956f / 8.0),
1251      FL2FXCONST_SGL(-0.01826348194255f / 8.0)},
1252     {FL2FXCONST_SGL(-0.98759606946049f / 8.0),
1253      FL2FXCONST_SGL(0.82288714303073f / 8.0)},
1254     {FL2FXCONST_SGL(0.87434794743625f / 8.0),
1255      FL2FXCONST_SGL(0.89399495655433f / 8.0)},
1256     {FL2FXCONST_SGL(-0.93412041758744f / 8.0),
1257      FL2FXCONST_SGL(0.41374052024363f / 8.0)},
1258     {FL2FXCONST_SGL(0.96063943315511f / 8.0),
1259      FL2FXCONST_SGL(0.93116709541280f / 8.0)},
1260     {FL2FXCONST_SGL(0.97534253457837f / 8.0),
1261      FL2FXCONST_SGL(0.86150930812689f / 8.0)},
1262     {FL2FXCONST_SGL(0.99642466504163f / 8.0),
1263      FL2FXCONST_SGL(0.70190043427512f / 8.0)},
1264     {FL2FXCONST_SGL(-0.94705089665984f / 8.0),
1265      FL2FXCONST_SGL(-0.29580042814306f / 8.0)},
1266     {FL2FXCONST_SGL(0.91599807087376f / 8.0),
1267      FL2FXCONST_SGL(-0.98147830385781f / 8.0)}};
1268 //@}
1269 
1270 /*
1271 static const FIXP_SGL harmonicPhase [2][4] = {
1272   { 1.0, 0.0, -1.0,  0.0},
1273   { 0.0, 1.0,  0.0, -1.0}
1274 };
1275 */
1276 
1277 /* tables for SBR and AAC LD */
1278 /* table for 8 time slot index */
1279 const int FDK_sbrDecoder_envelopeTable_8[8][5] = {
1280     /* transientIndex  nEnv, tranIdx, shortEnv, border1, border2, ... */
1281     /* borders from left to right side; -1 = not in use */
1282     /*[|T-|------]*/ {2, 0, 0, 1, -1},
1283     /*[|-T-|-----]*/ {2, 0, 0, 2, -1},
1284     /*[--|T-|----]*/ {3, 1, 1, 2, 4},
1285     /*[---|T-|---]*/ {3, 1, 1, 3, 5},
1286     /*[----|T-|--]*/ {3, 1, 1, 4, 6},
1287     /*[-----|T--|]*/ {2, 1, 1, 5, -1},
1288     /*[------|T-|]*/ {2, 1, 1, 6, -1},
1289     /*[-------|T|]*/ {2, 1, 1, 7, -1},
1290 };
1291 
1292 /* table for 15 time slot index */
1293 const int FDK_sbrDecoder_envelopeTable_15[15][6] = {
1294     /* transientIndex  nEnv, tranIdx, shortEnv, border1, border2, ... */
1295     /* length from left to right side; -1 = not in use */
1296     /*[|T---|------------]*/ {2, 0, 0, 4, -1, -1},
1297     /*[|-T---|-----------]*/ {2, 0, 0, 5, -1, -1},
1298     /*[|--|T---|---------]*/ {3, 1, 1, 2, 6, -1},
1299     /*[|---|T---|--------]*/ {3, 1, 1, 3, 7, -1},
1300     /*[|----|T---|-------]*/ {3, 1, 1, 4, 8, -1},
1301     /*[|-----|T---|------]*/ {3, 1, 1, 5, 9, -1},
1302     /*[|------|T---|-----]*/ {3, 1, 1, 6, 10, -1},
1303     /*[|-------|T---|----]*/ {3, 1, 1, 7, 11, -1},
1304     /*[|--------|T---|---]*/ {3, 1, 1, 8, 12, -1},
1305     /*[|---------|T---|--]*/ {3, 1, 1, 9, 13, -1},
1306     /*[|----------|T----|]*/ {2, 1, 1, 10, -1, -1},
1307     /*[|-----------|T---|]*/ {2, 1, 1, 11, -1, -1},
1308     /*[|------------|T--|]*/ {2, 1, 1, 12, -1, -1},
1309     /*[|-------------|T-|]*/ {2, 1, 1, 13, -1, -1},
1310     /*[|--------------|T|]*/ {2, 1, 1, 14, -1, -1},
1311 };
1312 
1313 /* table for 16 time slot index */
1314 const int FDK_sbrDecoder_envelopeTable_16[16][6] = {
1315     /* transientIndex  nEnv, tranIdx, shortEnv, border1, border2, ... */
1316     /* length from left to right side; -1 = not in use */
1317     /*[|T---|------------|]*/ {2, 0, 0, 4, -1, -1},
1318     /*[|-T---|-----------|]*/ {2, 0, 0, 5, -1, -1},
1319     /*[|--|T---|----------]*/ {3, 1, 1, 2, 6, -1},
1320     /*[|---|T---|---------]*/ {3, 1, 1, 3, 7, -1},
1321     /*[|----|T---|--------]*/ {3, 1, 1, 4, 8, -1},
1322     /*[|-----|T---|-------]*/ {3, 1, 1, 5, 9, -1},
1323     /*[|------|T---|------]*/ {3, 1, 1, 6, 10, -1},
1324     /*[|-------|T---|-----]*/ {3, 1, 1, 7, 11, -1},
1325     /*[|--------|T---|----]*/ {3, 1, 1, 8, 12, -1},
1326     /*[|---------|T---|---]*/ {3, 1, 1, 9, 13, -1},
1327     /*[|----------|T---|--]*/ {3, 1, 1, 10, 14, -1},
1328     /*[|-----------|T----|]*/ {2, 1, 1, 11, -1, -1},
1329     /*[|------------|T---|]*/ {2, 1, 1, 12, -1, -1},
1330     /*[|-------------|T--|]*/ {2, 1, 1, 13, -1, -1},
1331     /*[|--------------|T-|]*/ {2, 1, 1, 14, -1, -1},
1332     /*[|---------------|T|]*/ {2, 1, 1, 15, -1, -1},
1333 };
1334 
1335 /*!
1336   \name FrameInfoDefaults
1337 
1338   Predefined envelope positions for the FIX-FIX case (static framing)
1339 */
1340 //@{
1341 const FRAME_INFO FDK_sbrDecoder_sbr_frame_info1_15 = {
1342     0, 1, {0, 15, 0, 0, 0, 0}, {1, 0, 0, 0, 0}, -1, 1, {0, 15, 0}, {0, 0, 0},
1343     0, 0};
1344 const FRAME_INFO FDK_sbrDecoder_sbr_frame_info2_15 = {
1345     0, 2, {0, 8, 15, 0, 0, 0}, {1, 1, 0, 0, 0}, -1, 2, {0, 8, 15}, {0, 0, 0},
1346     0, 0};
1347 const FRAME_INFO FDK_sbrDecoder_sbr_frame_info4_15 = {
1348     0, 4, {0, 4, 8, 12, 15, 0}, {1, 1, 1, 1, 0}, -1, 2, {0, 8, 15}, {0, 0, 0},
1349     0, 0};
1350 #if (MAX_ENVELOPES >= 8)
1351 const FRAME_INFO FDK_sbrDecoder_sbr_frame_info8_15 = {
1352     0,
1353     8,
1354     {0, 2, 4, 6, 8, 10, 12, 14, 15},
1355     {1, 1, 1, 1, 1, 1, 1, 1},
1356     -1,
1357     2,
1358     {0, 8, 15},
1359     {0, 0, 0},
1360     0,
1361     0};
1362 #endif
1363 
1364 const FRAME_INFO FDK_sbrDecoder_sbr_frame_info1_16 = {
1365     0, 1, {0, 16, 0, 0, 0, 0}, {1, 0, 0, 0, 0}, -1, 1, {0, 16, 0}, {0, 0, 0},
1366     0, 0};
1367 const FRAME_INFO FDK_sbrDecoder_sbr_frame_info2_16 = {
1368     0, 2, {0, 8, 16, 0, 0, 0}, {1, 1, 0, 0, 0}, -1, 2, {0, 8, 16}, {0, 0, 0},
1369     0, 0};
1370 const FRAME_INFO FDK_sbrDecoder_sbr_frame_info4_16 = {
1371     0, 4, {0, 4, 8, 12, 16, 0}, {1, 1, 1, 1, 0}, -1, 2, {0, 8, 16}, {0, 0, 0},
1372     0, 0};
1373 
1374 #if (MAX_ENVELOPES >= 8)
1375 const FRAME_INFO FDK_sbrDecoder_sbr_frame_info8_16 = {
1376     0,
1377     8,
1378     {0, 2, 4, 6, 8, 10, 12, 14, 16},
1379     {1, 1, 1, 1, 1, 1, 1, 1},
1380     -1,
1381     2,
1382     {0, 8, 16},
1383     {0, 0, 0},
1384     0,
1385     0};
1386 #endif
1387 
1388 //@}
1389 
1390 /*!
1391   \name SBR_HuffmanTables
1392 
1393   SBR Huffman Table Overview:        \n
1394                                      \n
1395  o envelope level,   1.5 dB:         \n
1396     1)  sbr_huffBook_EnvLevel10T[120][2]   \n
1397     2)  sbr_huffBook_EnvLevel10F[120][2]   \n
1398                                      \n
1399  o envelope balance, 1.5 dB:         \n
1400     3)  sbr_huffBook_EnvBalance10T[48][2]  \n
1401     4)  sbr_huffBook_EnvBalance10F[48][2]  \n
1402                                      \n
1403  o envelope level,   3.0 dB:         \n
1404     5)  sbr_huffBook_EnvLevel11T[62][2]    \n
1405     6)  sbr_huffBook_EnvLevel11F[62][2]    \n
1406                                      \n
1407  o envelope balance, 3.0 dB:         \n
1408     7)  sbr_huffBook_EnvBalance11T[24][2]  \n
1409     8)  sbr_huffBook_EnvBalance11F[24][2]  \n
1410                                      \n
1411  o noise level,      3.0 dB:         \n
1412     9)  sbr_huffBook_NoiseLevel11T[62][2]  \n
1413     -) (sbr_huffBook_EnvLevel11F[62][2] is used for freq dir)\n
1414                                      \n
1415  o noise balance,    3.0 dB:         \n
1416    10)  sbr_huffBook_NoiseBalance11T[24][2]\n
1417     -) (sbr_huffBook_EnvBalance11F[24][2] is used for freq dir)\n
1418                                      \n
1419   (1.5 dB is never used for noise)
1420 
1421 */
1422 //@{
1423 const SCHAR FDK_sbrDecoder_sbr_huffBook_EnvLevel10T[120][2] = {
1424     {1, 2},       {-64, -65},   {3, 4},       {-63, -66},   {5, 6},
1425     {-62, -67},   {7, 8},       {-61, -68},   {9, 10},      {-60, -69},
1426     {11, 12},     {-59, -70},   {13, 14},     {-58, -71},   {15, 16},
1427     {-57, -72},   {17, 18},     {-73, -56},   {19, 21},     {-74, 20},
1428     {-55, -75},   {22, 26},     {23, 24},     {-54, -76},   {-77, 25},
1429     {-53, -78},   {27, 34},     {28, 29},     {-52, -79},   {30, 31},
1430     {-80, -51},   {32, 33},     {-83, -82},   {-81, -50},   {35, 57},
1431     {36, 40},     {37, 38},     {-88, -84},   {-48, 39},    {-90, -85},
1432     {41, 46},     {42, 43},     {-49, -87},   {44, 45},     {-89, -86},
1433     {-124, -123}, {47, 50},     {48, 49},     {-122, -121}, {-120, -119},
1434     {51, 54},     {52, 53},     {-118, -117}, {-116, -115}, {55, 56},
1435     {-114, -113}, {-112, -111}, {58, 89},     {59, 74},     {60, 67},
1436     {61, 64},     {62, 63},     {-110, -109}, {-108, -107}, {65, 66},
1437     {-106, -105}, {-104, -103}, {68, 71},     {69, 70},     {-102, -101},
1438     {-100, -99},  {72, 73},     {-98, -97},   {-96, -95},   {75, 82},
1439     {76, 79},     {77, 78},     {-94, -93},   {-92, -91},   {80, 81},
1440     {-47, -46},   {-45, -44},   {83, 86},     {84, 85},     {-43, -42},
1441     {-41, -40},   {87, 88},     {-39, -38},   {-37, -36},   {90, 105},
1442     {91, 98},     {92, 95},     {93, 94},     {-35, -34},   {-33, -32},
1443     {96, 97},     {-31, -30},   {-29, -28},   {99, 102},    {100, 101},
1444     {-27, -26},   {-25, -24},   {103, 104},   {-23, -22},   {-21, -20},
1445     {106, 113},   {107, 110},   {108, 109},   {-19, -18},   {-17, -16},
1446     {111, 112},   {-15, -14},   {-13, -12},   {114, 117},   {115, 116},
1447     {-11, -10},   {-9, -8},     {118, 119},   {-7, -6},     {-5, -4}};
1448 
1449 const SCHAR FDK_sbrDecoder_sbr_huffBook_EnvLevel10F[120][2] = {
1450     {1, 2},       {-64, -65},   {3, 4},       {-63, -66},   {5, 6},
1451     {-67, -62},   {7, 8},       {-68, -61},   {9, 10},      {-69, -60},
1452     {11, 13},     {-70, 12},    {-59, -71},   {14, 16},     {-58, 15},
1453     {-72, -57},   {17, 19},     {-73, 18},    {-56, -74},   {20, 23},
1454     {21, 22},     {-55, -75},   {-54, -53},   {24, 27},     {25, 26},
1455     {-76, -52},   {-77, -51},   {28, 31},     {29, 30},     {-50, -78},
1456     {-79, -49},   {32, 36},     {33, 34},     {-48, -47},   {-80, 35},
1457     {-81, -82},   {37, 47},     {38, 41},     {39, 40},     {-83, -46},
1458     {-45, -84},   {42, 44},     {-85, 43},    {-44, -43},   {45, 46},
1459     {-88, -87},   {-86, -90},   {48, 66},     {49, 56},     {50, 53},
1460     {51, 52},     {-92, -42},   {-41, -39},   {54, 55},     {-105, -89},
1461     {-38, -37},   {57, 60},     {58, 59},     {-94, -91},   {-40, -36},
1462     {61, 63},     {-20, 62},    {-115, -110}, {64, 65},     {-108, -107},
1463     {-101, -97},  {67, 89},     {68, 75},     {69, 72},     {70, 71},
1464     {-95, -93},   {-34, -27},   {73, 74},     {-22, -17},   {-16, -124},
1465     {76, 82},     {77, 79},     {-123, 78},   {-122, -121}, {80, 81},
1466     {-120, -119}, {-118, -117}, {83, 86},     {84, 85},     {-116, -114},
1467     {-113, -112}, {87, 88},     {-111, -109}, {-106, -104}, {90, 105},
1468     {91, 98},     {92, 95},     {93, 94},     {-103, -102}, {-100, -99},
1469     {96, 97},     {-98, -96},   {-35, -33},   {99, 102},    {100, 101},
1470     {-32, -31},   {-30, -29},   {103, 104},   {-28, -26},   {-25, -24},
1471     {106, 113},   {107, 110},   {108, 109},   {-23, -21},   {-19, -18},
1472     {111, 112},   {-15, -14},   {-13, -12},   {114, 117},   {115, 116},
1473     {-11, -10},   {-9, -8},     {118, 119},   {-7, -6},     {-5, -4}};
1474 
1475 const SCHAR FDK_sbrDecoder_sbr_huffBook_EnvBalance10T[48][2] = {
1476     {-64, 1},   {-63, 2},   {-65, 3},   {-62, 4},   {-66, 5},   {-61, 6},
1477     {-67, 7},   {-60, 8},   {-68, 9},   {10, 11},   {-69, -59}, {12, 13},
1478     {-70, -58}, {14, 28},   {15, 21},   {16, 18},   {-57, 17},  {-71, -56},
1479     {19, 20},   {-88, -87}, {-86, -85}, {22, 25},   {23, 24},   {-84, -83},
1480     {-82, -81}, {26, 27},   {-80, -79}, {-78, -77}, {29, 36},   {30, 33},
1481     {31, 32},   {-76, -75}, {-74, -73}, {34, 35},   {-72, -55}, {-54, -53},
1482     {37, 41},   {38, 39},   {-52, -51}, {-50, 40},  {-49, -48}, {42, 45},
1483     {43, 44},   {-47, -46}, {-45, -44}, {46, 47},   {-43, -42}, {-41, -40}};
1484 
1485 const SCHAR FDK_sbrDecoder_sbr_huffBook_EnvBalance10F[48][2] = {
1486     {-64, 1},   {-65, 2},   {-63, 3},   {-66, 4},   {-62, 5},   {-61, 6},
1487     {-67, 7},   {-68, 8},   {-60, 9},   {10, 11},   {-69, -59}, {-70, 12},
1488     {-58, 13},  {14, 17},   {-71, 15},  {-57, 16},  {-56, -73}, {18, 32},
1489     {19, 25},   {20, 22},   {-72, 21},  {-88, -87}, {23, 24},   {-86, -85},
1490     {-84, -83}, {26, 29},   {27, 28},   {-82, -81}, {-80, -79}, {30, 31},
1491     {-78, -77}, {-76, -75}, {33, 40},   {34, 37},   {35, 36},   {-74, -55},
1492     {-54, -53}, {38, 39},   {-52, -51}, {-50, -49}, {41, 44},   {42, 43},
1493     {-48, -47}, {-46, -45}, {45, 46},   {-44, -43}, {-42, 47},  {-41, -40}};
1494 
1495 const SCHAR FDK_sbrDecoder_sbr_huffBook_EnvLevel11T[62][2] = {
1496     {-64, 1},   {-65, 2},   {-63, 3},   {-66, 4},   {-62, 5},   {-67, 6},
1497     {-61, 7},   {-68, 8},   {-60, 9},   {10, 11},   {-69, -59}, {12, 14},
1498     {-70, 13},  {-71, -58}, {15, 18},   {16, 17},   {-72, -57}, {-73, -74},
1499     {19, 22},   {-56, 20},  {-55, 21},  {-54, -77}, {23, 31},   {24, 25},
1500     {-75, -76}, {26, 27},   {-78, -53}, {28, 29},   {-52, -95}, {-94, 30},
1501     {-93, -92}, {32, 47},   {33, 40},   {34, 37},   {35, 36},   {-91, -90},
1502     {-89, -88}, {38, 39},   {-87, -86}, {-85, -84}, {41, 44},   {42, 43},
1503     {-83, -82}, {-81, -80}, {45, 46},   {-79, -51}, {-50, -49}, {48, 55},
1504     {49, 52},   {50, 51},   {-48, -47}, {-46, -45}, {53, 54},   {-44, -43},
1505     {-42, -41}, {56, 59},   {57, 58},   {-40, -39}, {-38, -37}, {60, 61},
1506     {-36, -35}, {-34, -33}};
1507 
1508 const SCHAR FDK_sbrDecoder_sbr_huffBook_EnvLevel11F[62][2] = {
1509     {-64, 1},   {-65, 2},   {-63, 3},   {-66, 4},   {-62, 5},   {-67, 6},
1510     {7, 8},     {-61, -68}, {9, 10},    {-60, -69}, {11, 12},   {-59, -70},
1511     {13, 14},   {-58, -71}, {15, 16},   {-57, -72}, {17, 19},   {-56, 18},
1512     {-55, -73}, {20, 24},   {21, 22},   {-74, -54}, {-53, 23},  {-75, -76},
1513     {25, 30},   {26, 27},   {-52, -51}, {28, 29},   {-77, -79}, {-50, -49},
1514     {31, 39},   {32, 35},   {33, 34},   {-78, -46}, {-82, -88}, {36, 37},
1515     {-83, -48}, {-47, 38},  {-86, -85}, {40, 47},   {41, 44},   {42, 43},
1516     {-80, -44}, {-43, -42}, {45, 46},   {-39, -87}, {-84, -40}, {48, 55},
1517     {49, 52},   {50, 51},   {-95, -94}, {-93, -92}, {53, 54},   {-91, -90},
1518     {-89, -81}, {56, 59},   {57, 58},   {-45, -41}, {-38, -37}, {60, 61},
1519     {-36, -35}, {-34, -33}};
1520 
1521 const SCHAR FDK_sbrDecoder_sbr_huffBook_EnvBalance11T[24][2] = {
1522     {-64, 1},   {-63, 2},   {-65, 3},   {-66, 4},   {-62, 5},  {-61, 6},
1523     {-67, 7},   {-68, 8},   {-60, 9},   {10, 16},   {11, 13},  {-69, 12},
1524     {-76, -75}, {14, 15},   {-74, -73}, {-72, -71}, {17, 20},  {18, 19},
1525     {-70, -59}, {-58, -57}, {21, 22},   {-56, -55}, {-54, 23}, {-53, -52}};
1526 
1527 const SCHAR FDK_sbrDecoder_sbr_huffBook_EnvBalance11F[24][2] = {
1528     {-64, 1},   {-65, 2},   {-63, 3},   {-66, 4},   {-62, 5},   {-61, 6},
1529     {-67, 7},   {-68, 8},   {-60, 9},   {10, 13},   {-69, 11},  {-59, 12},
1530     {-58, -76}, {14, 17},   {15, 16},   {-75, -74}, {-73, -72}, {18, 21},
1531     {19, 20},   {-71, -70}, {-57, -56}, {22, 23},   {-55, -54}, {-53, -52}};
1532 
1533 const SCHAR FDK_sbrDecoder_sbr_huffBook_NoiseLevel11T[62][2] = {
1534     {-64, 1},   {-63, 2},   {-65, 3},   {-66, 4},   {-62, 5},   {-67, 6},
1535     {7, 8},     {-61, -68}, {9, 30},    {10, 15},   {-60, 11},  {-69, 12},
1536     {13, 14},   {-59, -53}, {-95, -94}, {16, 23},   {17, 20},   {18, 19},
1537     {-93, -92}, {-91, -90}, {21, 22},   {-89, -88}, {-87, -86}, {24, 27},
1538     {25, 26},   {-85, -84}, {-83, -82}, {28, 29},   {-81, -80}, {-79, -78},
1539     {31, 46},   {32, 39},   {33, 36},   {34, 35},   {-77, -76}, {-75, -74},
1540     {37, 38},   {-73, -72}, {-71, -70}, {40, 43},   {41, 42},   {-58, -57},
1541     {-56, -55}, {44, 45},   {-54, -52}, {-51, -50}, {47, 54},   {48, 51},
1542     {49, 50},   {-49, -48}, {-47, -46}, {52, 53},   {-45, -44}, {-43, -42},
1543     {55, 58},   {56, 57},   {-41, -40}, {-39, -38}, {59, 60},   {-37, -36},
1544     {-35, 61},  {-34, -33}};
1545 
1546 const SCHAR FDK_sbrDecoder_sbr_huffBook_NoiseBalance11T[24][2] = {
1547     {-64, 1},   {-65, 2},   {-63, 3},   {4, 9},     {-66, 5},   {-62, 6},
1548     {7, 8},     {-76, -75}, {-74, -73}, {10, 17},   {11, 14},   {12, 13},
1549     {-72, -71}, {-70, -69}, {15, 16},   {-68, -67}, {-61, -60}, {18, 21},
1550     {19, 20},   {-59, -58}, {-57, -56}, {22, 23},   {-55, -54}, {-53, -52}};
1551 //@}
1552 
1553 /*!
1554   \name  parametric stereo
1555   \brief constants used by the parametric stereo part of the decoder
1556 
1557 */
1558 
1559 /* constants used in psbitdec.cpp */
1560 
1561 /* FIX_BORDER can have 0, 1, 2, 4 envelopes */
1562 const UCHAR FDK_sbrDecoder_aFixNoEnvDecode[4] = {0, 1, 2, 4};
1563 
1564 /* IID & ICC Huffman codebooks */
1565 const SCHAR aBookPsIidTimeDecode[28][2] = {
1566     {-64, 1},   {-65, 2},   {-63, 3},   {-66, 4},  {-62, 5},   {-67, 6},
1567     {-61, 7},   {-68, 8},   {-60, 9},   {-69, 10}, {-59, 11},  {-70, 12},
1568     {-58, 13},  {-57, 14},  {-71, 15},  {16, 17},  {-56, -72}, {18, 21},
1569     {19, 20},   {-55, -78}, {-77, -76}, {22, 25},  {23, 24},   {-75, -74},
1570     {-73, -54}, {26, 27},   {-53, -52}, {-51, -50}};
1571 
1572 const SCHAR aBookPsIidFreqDecode[28][2] = {
1573     {-64, 1},   {2, 3},     {-63, -65}, {4, 5},    {-62, -66}, {6, 7},
1574     {-61, -67}, {8, 9},     {-68, -60}, {-59, 10}, {-69, 11},  {-58, 12},
1575     {-70, 13},  {-71, 14},  {-57, 15},  {16, 17},  {-56, -72}, {18, 19},
1576     {-55, -54}, {20, 21},   {-73, -53}, {22, 24},  {-74, 23},  {-75, -78},
1577     {25, 26},   {-77, -76}, {-52, 27},  {-51, -50}};
1578 
1579 const SCHAR aBookPsIccTimeDecode[14][2] = {
1580     {-64, 1}, {-63, 2}, {-65, 3},  {-62, 4},  {-66, 5},  {-61, 6},  {-67, 7},
1581     {-60, 8}, {-68, 9}, {-59, 10}, {-69, 11}, {-58, 12}, {-70, 13}, {-71, -57}};
1582 
1583 const SCHAR aBookPsIccFreqDecode[14][2] = {
1584     {-64, 1}, {-63, 2}, {-65, 3},  {-62, 4},  {-66, 5},  {-61, 6},  {-67, 7},
1585     {-60, 8}, {-59, 9}, {-68, 10}, {-58, 11}, {-69, 12}, {-57, 13}, {-70, -71}};
1586 
1587 /* IID-fine Huffman codebooks */
1588 
1589 const SCHAR aBookPsIidFineTimeDecode[60][2] = {
1590     {1, -64},   {-63, 2},   {3, -65},   {4, 59},    {5, 7},     {6, -67},
1591     {-68, -60}, {-61, 8},   {9, 11},    {-59, 10},  {-70, -58}, {12, 41},
1592     {13, 20},   {14, -71},  {-55, 15},  {-53, 16},  {17, -77},  {18, 19},
1593     {-85, -84}, {-46, -45}, {-57, 21},  {22, 40},   {23, 29},   {-51, 24},
1594     {25, 26},   {-83, -82}, {27, 28},   {-90, -38}, {-92, -91}, {30, 37},
1595     {31, 34},   {32, 33},   {-35, -34}, {-37, -36}, {35, 36},   {-94, -93},
1596     {-89, -39}, {38, -79},  {39, -81},  {-88, -40}, {-74, -54}, {42, -69},
1597     {43, 44},   {-72, -56}, {45, 52},   {46, 50},   {47, -76},  {-49, 48},
1598     {-47, 49},  {-87, -41}, {-52, 51},  {-78, -50}, {53, -73},  {54, -75},
1599     {55, 57},   {56, -80},  {-86, -42}, {-48, 58},  {-44, -43}, {-66, -62}};
1600 
1601 const SCHAR aBookPsIidFineFreqDecode[60][2] = {
1602     {1, -64},   {2, 4},     {3, -65},   {-66, -62}, {-63, 5},   {6, 7},
1603     {-67, -61}, {8, 9},     {-68, -60}, {10, 11},   {-69, -59}, {12, 13},
1604     {-70, -58}, {14, 18},   {-57, 15},  {16, -72},  {-54, 17},  {-75, -53},
1605     {19, 37},   {-56, 20},  {21, -73},  {22, 29},   {23, -76},  {24, -78},
1606     {25, 28},   {26, 27},   {-85, -43}, {-83, -45}, {-81, -47}, {-52, 30},
1607     {-50, 31},  {32, -79},  {33, 34},   {-82, -46}, {35, 36},   {-90, -89},
1608     {-92, -91}, {38, -71},  {-55, 39},  {40, -74},  {41, 50},   {42, -77},
1609     {-49, 43},  {44, 47},   {45, 46},   {-86, -42}, {-88, -87}, {48, 49},
1610     {-39, -38}, {-41, -40}, {-51, 51},  {52, 59},   {53, 56},   {54, 55},
1611     {-35, -34}, {-37, -36}, {57, 58},   {-94, -93}, {-84, -44}, {-80, -48}};
1612 
1613 /* constants used in psdec.cpp */
1614 
1615 /* the values of the following 3 tables are shiftet right by 1 ! */
1616 const FIXP_DBL ScaleFactors[NO_IID_LEVELS] = {
1617 
1618     0x5a5ded00, 0x59cd0400, 0x58c29680, 0x564c2e80, 0x52a3d480,
1619     0x4c8be080, 0x46df3080, 0x40000000, 0x384ba5c0, 0x304c2980,
1620     0x24e9f640, 0x1b4a2940, 0x11b5c0a0, 0x0b4e2540, 0x0514ea90};
1621 
1622 const FIXP_DBL ScaleFactorsFine[NO_IID_LEVELS_FINE] = {
1623 
1624     0x5a825c00, 0x5a821c00, 0x5a815100, 0x5a7ed000, 0x5a76e600, 0x5a5ded00,
1625     0x5a39b880, 0x59f1fd00, 0x5964d680, 0x5852ca00, 0x564c2e80, 0x54174480,
1626     0x50ea7500, 0x4c8be080, 0x46df3080, 0x40000000, 0x384ba5c0, 0x304c2980,
1627     0x288dd240, 0x217a2900, 0x1b4a2940, 0x13c5ece0, 0x0e2b0090, 0x0a178ef0,
1628     0x072ab798, 0x0514ea90, 0x02dc5944, 0x019bf87c, 0x00e7b173, 0x00824b8b,
1629     0x00494568};
1630 const FIXP_DBL Alphas[NO_ICC_LEVELS] = {
1631 
1632     0x00000000, 0x0b6b5be0, 0x12485f80, 0x1da2fa40,
1633     0x2637ebc0, 0x3243f6c0, 0x466b7480, 0x6487ed80};
1634 
1635 const UCHAR bins2groupMap20[NO_IID_GROUPS] = {
1636     0, 0, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19};
1637 
1638 const UCHAR FDK_sbrDecoder_aNoIidBins[3] = {
1639     NO_LOW_RES_IID_BINS, NO_MID_RES_IID_BINS, NO_HI_RES_IID_BINS};
1640 
1641 const UCHAR FDK_sbrDecoder_aNoIccBins[3] = {
1642     NO_LOW_RES_ICC_BINS, NO_MID_RES_ICC_BINS, NO_HI_RES_ICC_BINS};
1643 
1644 /************************************************************************/
1645 /*!
1646    \brief   Create lookup tables for some arithmetic functions
1647 
1648    The tables would normally be defined as const arrays,
1649    but initialization at run time allows to specify their accuracy.
1650 */
1651 /************************************************************************/
1652 
1653 /*   1/x-table:  (example for INV_TABLE_BITS 8)
1654 
1655      The table covers an input range from 0.5 to 1.0 with a step size of 1/512,
1656      starting at 0.5 + 1/512.
1657      Each table entry corresponds to an input interval starting 1/1024 below the
1658      exact value and ending 1/1024 above it.
1659 
1660      The table is actually a 0.5/x-table, so that the output range is again
1661      0.5...1.0 and the exponent of the result must be increased by 1.
1662 
1663      Input range           Index in table      result
1664      -------------------------------------------------------------------
1665      0.500000...0.500976          -            0.5 / 0.500000 = 1.000000
1666      0.500976...0.502930          0            0.5 / 0.501953 = 0.996109
1667      0.502930...0.500488          1            0.5 / 0.503906 = 0.992248
1668              ...
1669      0.999023...1.000000         255           0.5 / 1.000000 = 0.500000
1670 
1671        for (i=0; i<INV_TABLE_SIZE; i++) {
1672          d = 0.5f / ( 0.5f+(double)(i+1)/(INV_TABLE_SIZE*2) ) ;
1673          invTable[i] = FL2FX_SGL(d);
1674        }
1675 */
1676 const FIXP_SGL FDK_sbrDecoder_invTable[INV_TABLE_SIZE] = {
1677     0x7f80, 0x7f01, 0x7e83, 0x7e07, 0x7d8b, 0x7d11, 0x7c97, 0x7c1e, 0x7ba6,
1678     0x7b2f, 0x7ab9, 0x7a44, 0x79cf, 0x795c, 0x78e9, 0x7878, 0x7807, 0x7796,
1679     0x7727, 0x76b9, 0x764b, 0x75de, 0x7572, 0x7506, 0x749c, 0x7432, 0x73c9,
1680     0x7360, 0x72f9, 0x7292, 0x722c, 0x71c6, 0x7161, 0x70fd, 0x709a, 0x7037,
1681     0x6fd5, 0x6f74, 0x6f13, 0x6eb3, 0x6e54, 0x6df5, 0x6d97, 0x6d39, 0x6cdc,
1682     0x6c80, 0x6c24, 0x6bc9, 0x6b6f, 0x6b15, 0x6abc, 0x6a63, 0x6a0b, 0x69b3,
1683     0x695c, 0x6906, 0x68b0, 0x685a, 0x6806, 0x67b1, 0x675e, 0x670a, 0x66b8,
1684     0x6666, 0x6614, 0x65c3, 0x6572, 0x6522, 0x64d2, 0x6483, 0x6434, 0x63e6,
1685     0x6399, 0x634b, 0x62fe, 0x62b2, 0x6266, 0x621b, 0x61d0, 0x6185, 0x613b,
1686     0x60f2, 0x60a8, 0x6060, 0x6017, 0x5fcf, 0x5f88, 0x5f41, 0x5efa, 0x5eb4,
1687     0x5e6e, 0x5e28, 0x5de3, 0x5d9f, 0x5d5a, 0x5d17, 0x5cd3, 0x5c90, 0x5c4d,
1688     0x5c0b, 0x5bc9, 0x5b87, 0x5b46, 0x5b05, 0x5ac4, 0x5a84, 0x5a44, 0x5a05,
1689     0x59c6, 0x5987, 0x5949, 0x590a, 0x58cd, 0x588f, 0x5852, 0x5815, 0x57d9,
1690     0x579d, 0x5761, 0x5725, 0x56ea, 0x56af, 0x5675, 0x563b, 0x5601, 0x55c7,
1691     0x558e, 0x5555, 0x551c, 0x54e3, 0x54ab, 0x5473, 0x543c, 0x5405, 0x53ce,
1692     0x5397, 0x5360, 0x532a, 0x52f4, 0x52bf, 0x5289, 0x5254, 0x521f, 0x51eb,
1693     0x51b7, 0x5183, 0x514f, 0x511b, 0x50e8, 0x50b5, 0x5082, 0x5050, 0x501d,
1694     0x4feb, 0x4fba, 0x4f88, 0x4f57, 0x4f26, 0x4ef5, 0x4ec4, 0x4e94, 0x4e64,
1695     0x4e34, 0x4e04, 0x4dd5, 0x4da6, 0x4d77, 0x4d48, 0x4d19, 0x4ceb, 0x4cbd,
1696     0x4c8f, 0x4c61, 0x4c34, 0x4c07, 0x4bd9, 0x4bad, 0x4b80, 0x4b54, 0x4b27,
1697     0x4afb, 0x4acf, 0x4aa4, 0x4a78, 0x4a4d, 0x4a22, 0x49f7, 0x49cd, 0x49a2,
1698     0x4978, 0x494e, 0x4924, 0x48fa, 0x48d1, 0x48a7, 0x487e, 0x4855, 0x482d,
1699     0x4804, 0x47dc, 0x47b3, 0x478b, 0x4763, 0x473c, 0x4714, 0x46ed, 0x46c5,
1700     0x469e, 0x4677, 0x4651, 0x462a, 0x4604, 0x45de, 0x45b8, 0x4592, 0x456c,
1701     0x4546, 0x4521, 0x44fc, 0x44d7, 0x44b2, 0x448d, 0x4468, 0x4444, 0x441f,
1702     0x43fb, 0x43d7, 0x43b3, 0x4390, 0x436c, 0x4349, 0x4325, 0x4302, 0x42df,
1703     0x42bc, 0x4299, 0x4277, 0x4254, 0x4232, 0x4210, 0x41ee, 0x41cc, 0x41aa,
1704     0x4189, 0x4167, 0x4146, 0x4125, 0x4104, 0x40e3, 0x40c2, 0x40a1, 0x4081,
1705     0x4060, 0x4040, 0x4020, 0x4000};
1706