diff options
author | Sean Bartell <wingedtachikoma@gmail.com> | 2011-06-25 21:32:25 -0400 |
---|---|---|
committer | Nils Wallménius <nils@rockbox.org> | 2012-04-25 22:13:20 +0200 |
commit | f40bfc9267b13b54e6379dfe7539447662879d24 (patch) | |
tree | 9b20069d5e62809ff434061ad730096836f916f2 /lib/rbcodec/codecs/libfaad | |
parent | a0009907de7a0107d49040d8a180f140e2eff299 (diff) | |
download | rockbox-f40bfc9267b13b54e6379dfe7539447662879d24.tar.gz rockbox-f40bfc9267b13b54e6379dfe7539447662879d24.zip |
Add codecs to librbcodec.
Change-Id: Id7f4717d51ed02d67cb9f9cb3c0ada4a81843f97
Reviewed-on: http://gerrit.rockbox.org/137
Reviewed-by: Nils Wallménius <nils@rockbox.org>
Tested-by: Nils Wallménius <nils@rockbox.org>
Diffstat (limited to 'lib/rbcodec/codecs/libfaad')
92 files changed, 52726 insertions, 0 deletions
diff --git a/lib/rbcodec/codecs/libfaad/COPYING b/lib/rbcodec/codecs/libfaad/COPYING new file mode 100644 index 0000000000..920c4e6744 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/COPYING | |||
@@ -0,0 +1,350 @@ | |||
1 | |||
2 | Any non-GPL usage of this software or parts of this software is strictly | ||
3 | forbidden. | ||
4 | |||
5 | Commercial non-GPL licensing of this software is possible. | ||
6 | For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
7 | |||
8 | |||
9 | |||
10 | |||
11 | GNU GENERAL PUBLIC LICENSE | ||
12 | Version 2, June 1991 | ||
13 | |||
14 | Copyright (C) 1989, 1991 Free Software Foundation, Inc. | ||
15 | 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
16 | Everyone is permitted to copy and distribute verbatim copies | ||
17 | of this license document, but changing it is not allowed. | ||
18 | |||
19 | Preamble | ||
20 | |||
21 | The licenses for most software are designed to take away your | ||
22 | freedom to share and change it. By contrast, the GNU General Public | ||
23 | License is intended to guarantee your freedom to share and change free | ||
24 | software--to make sure the software is free for all its users. This | ||
25 | General Public License applies to most of the Free Software | ||
26 | Foundation's software and to any other program whose authors commit to | ||
27 | using it. (Some other Free Software Foundation software is covered by | ||
28 | the GNU Library General Public License instead.) You can apply it to | ||
29 | your programs, too. | ||
30 | |||
31 | When we speak of free software, we are referring to freedom, not | ||
32 | price. Our General Public Licenses are designed to make sure that you | ||
33 | have the freedom to distribute copies of free software (and charge for | ||
34 | this service if you wish), that you receive source code or can get it | ||
35 | if you want it, that you can change the software or use pieces of it | ||
36 | in new free programs; and that you know you can do these things. | ||
37 | |||
38 | To protect your rights, we need to make restrictions that forbid | ||
39 | anyone to deny you these rights or to ask you to surrender the rights. | ||
40 | These restrictions translate to certain responsibilities for you if you | ||
41 | distribute copies of the software, or if you modify it. | ||
42 | |||
43 | For example, if you distribute copies of such a program, whether | ||
44 | gratis or for a fee, you must give the recipients all the rights that | ||
45 | you have. You must make sure that they, too, receive or can get the | ||
46 | source code. And you must show them these terms so they know their | ||
47 | rights. | ||
48 | |||
49 | We protect your rights with two steps: (1) copyright the software, and | ||
50 | (2) offer you this license which gives you legal permission to copy, | ||
51 | distribute and/or modify the software. | ||
52 | |||
53 | Also, for each author's protection and ours, we want to make certain | ||
54 | that everyone understands that there is no warranty for this free | ||
55 | software. If the software is modified by someone else and passed on, we | ||
56 | want its recipients to know that what they have is not the original, so | ||
57 | that any problems introduced by others will not reflect on the original | ||
58 | authors' reputations. | ||
59 | |||
60 | Finally, any free program is threatened constantly by software | ||
61 | patents. We wish to avoid the danger that redistributors of a free | ||
62 | program will individually obtain patent licenses, in effect making the | ||
63 | program proprietary. To prevent this, we have made it clear that any | ||
64 | patent must be licensed for everyone's free use or not licensed at all. | ||
65 | |||
66 | The precise terms and conditions for copying, distribution and | ||
67 | modification follow. | ||
68 | |||
69 | GNU GENERAL PUBLIC LICENSE | ||
70 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION | ||
71 | |||
72 | 0. This License applies to any program or other work which contains | ||
73 | a notice placed by the copyright holder saying it may be distributed | ||
74 | under the terms of this General Public License. The "Program", below, | ||
75 | refers to any such program or work, and a "work based on the Program" | ||
76 | means either the Program or any derivative work under copyright law: | ||
77 | that is to say, a work containing the Program or a portion of it, | ||
78 | either verbatim or with modifications and/or translated into another | ||
79 | language. (Hereinafter, translation is included without limitation in | ||
80 | the term "modification".) Each licensee is addressed as "you". | ||
81 | |||
82 | Activities other than copying, distribution and modification are not | ||
83 | covered by this License; they are outside its scope. The act of | ||
84 | running the Program is not restricted, and the output from the Program | ||
85 | is covered only if its contents constitute a work based on the | ||
86 | Program (independent of having been made by running the Program). | ||
87 | Whether that is true depends on what the Program does. | ||
88 | |||
89 | 1. You may copy and distribute verbatim copies of the Program's | ||
90 | source code as you receive it, in any medium, provided that you | ||
91 | conspicuously and appropriately publish on each copy an appropriate | ||
92 | copyright notice and disclaimer of warranty; keep intact all the | ||
93 | notices that refer to this License and to the absence of any warranty; | ||
94 | and give any other recipients of the Program a copy of this License | ||
95 | along with the Program. | ||
96 | |||
97 | You may charge a fee for the physical act of transferring a copy, and | ||
98 | you may at your option offer warranty protection in exchange for a fee. | ||
99 | |||
100 | 2. You may modify your copy or copies of the Program or any portion | ||
101 | of it, thus forming a work based on the Program, and copy and | ||
102 | distribute such modifications or work under the terms of Section 1 | ||
103 | above, provided that you also meet all of these conditions: | ||
104 | |||
105 | a) You must cause the modified files to carry prominent notices | ||
106 | stating that you changed the files and the date of any change. | ||
107 | |||
108 | b) You must cause any work that you distribute or publish, that in | ||
109 | whole or in part contains or is derived from the Program or any | ||
110 | part thereof, to be licensed as a whole at no charge to all third | ||
111 | parties under the terms of this License. | ||
112 | |||
113 | c) If the modified program normally reads commands interactively | ||
114 | when run, you must cause it, when started running for such | ||
115 | interactive use in the most ordinary way, to print or display an | ||
116 | announcement including an appropriate copyright notice and a | ||
117 | notice that there is no warranty (or else, saying that you provide | ||
118 | a warranty) and that users may redistribute the program under | ||
119 | these conditions, and telling the user how to view a copy of this | ||
120 | License. (Exception: if the Program itself is interactive but | ||
121 | does not normally print such an announcement, your work based on | ||
122 | the Program is not required to print an announcement.) | ||
123 | |||
124 | These requirements apply to the modified work as a whole. If | ||
125 | identifiable sections of that work are not derived from the Program, | ||
126 | and can be reasonably considered independent and separate works in | ||
127 | themselves, then this License, and its terms, do not apply to those | ||
128 | sections when you distribute them as separate works. But when you | ||
129 | distribute the same sections as part of a whole which is a work based | ||
130 | on the Program, the distribution of the whole must be on the terms of | ||
131 | this License, whose permissions for other licensees extend to the | ||
132 | entire whole, and thus to each and every part regardless of who wrote it. | ||
133 | |||
134 | Thus, it is not the intent of this section to claim rights or contest | ||
135 | your rights to work written entirely by you; rather, the intent is to | ||
136 | exercise the right to control the distribution of derivative or | ||
137 | collective works based on the Program. | ||
138 | |||
139 | In addition, mere aggregation of another work not based on the Program | ||
140 | with the Program (or with a work based on the Program) on a volume of | ||
141 | a storage or distribution medium does not bring the other work under | ||
142 | the scope of this License. | ||
143 | |||
144 | 3. You may copy and distribute the Program (or a work based on it, | ||
145 | under Section 2) in object code or executable form under the terms of | ||
146 | Sections 1 and 2 above provided that you also do one of the following: | ||
147 | |||
148 | a) Accompany it with the complete corresponding machine-readable | ||
149 | source code, which must be distributed under the terms of Sections | ||
150 | 1 and 2 above on a medium customarily used for software interchange; or, | ||
151 | |||
152 | b) Accompany it with a written offer, valid for at least three | ||
153 | years, to give any third party, for a charge no more than your | ||
154 | cost of physically performing source distribution, a complete | ||
155 | machine-readable copy of the corresponding source code, to be | ||
156 | distributed under the terms of Sections 1 and 2 above on a medium | ||
157 | customarily used for software interchange; or, | ||
158 | |||
159 | c) Accompany it with the information you received as to the offer | ||
160 | to distribute corresponding source code. (This alternative is | ||
161 | allowed only for noncommercial distribution and only if you | ||
162 | received the program in object code or executable form with such | ||
163 | an offer, in accord with Subsection b above.) | ||
164 | |||
165 | The source code for a work means the preferred form of the work for | ||
166 | making modifications to it. For an executable work, complete source | ||
167 | code means all the source code for all modules it contains, plus any | ||
168 | associated interface definition files, plus the scripts used to | ||
169 | control compilation and installation of the executable. However, as a | ||
170 | special exception, the source code distributed need not include | ||
171 | anything that is normally distributed (in either source or binary | ||
172 | form) with the major components (compiler, kernel, and so on) of the | ||
173 | operating system on which the executable runs, unless that component | ||
174 | itself accompanies the executable. | ||
175 | |||
176 | If distribution of executable or object code is made by offering | ||
177 | access to copy from a designated place, then offering equivalent | ||
178 | access to copy the source code from the same place counts as | ||
179 | distribution of the source code, even though third parties are not | ||
180 | compelled to copy the source along with the object code. | ||
181 | |||
182 | 4. You may not copy, modify, sublicense, or distribute the Program | ||
183 | except as expressly provided under this License. Any attempt | ||
184 | otherwise to copy, modify, sublicense or distribute the Program is | ||
185 | void, and will automatically terminate your rights under this License. | ||
186 | However, parties who have received copies, or rights, from you under | ||
187 | this License will not have their licenses terminated so long as such | ||
188 | parties remain in full compliance. | ||
189 | |||
190 | 5. You are not required to accept this License, since you have not | ||
191 | signed it. However, nothing else grants you permission to modify or | ||
192 | distribute the Program or its derivative works. These actions are | ||
193 | prohibited by law if you do not accept this License. Therefore, by | ||
194 | modifying or distributing the Program (or any work based on the | ||
195 | Program), you indicate your acceptance of this License to do so, and | ||
196 | all its terms and conditions for copying, distributing or modifying | ||
197 | the Program or works based on it. | ||
198 | |||
199 | 6. Each time you redistribute the Program (or any work based on the | ||
200 | Program), the recipient automatically receives a license from the | ||
201 | original licensor to copy, distribute or modify the Program subject to | ||
202 | these terms and conditions. You may not impose any further | ||
203 | restrictions on the recipients' exercise of the rights granted herein. | ||
204 | You are not responsible for enforcing compliance by third parties to | ||
205 | this License. | ||
206 | |||
207 | 7. If, as a consequence of a court judgment or allegation of patent | ||
208 | infringement or for any other reason (not limited to patent issues), | ||
209 | conditions are imposed on you (whether by court order, agreement or | ||
210 | otherwise) that contradict the conditions of this License, they do not | ||
211 | excuse you from the conditions of this License. If you cannot | ||
212 | distribute so as to satisfy simultaneously your obligations under this | ||
213 | License and any other pertinent obligations, then as a consequence you | ||
214 | may not distribute the Program at all. For example, if a patent | ||
215 | license would not permit royalty-free redistribution of the Program by | ||
216 | all those who receive copies directly or indirectly through you, then | ||
217 | the only way you could satisfy both it and this License would be to | ||
218 | refrain entirely from distribution of the Program. | ||
219 | |||
220 | If any portion of this section is held invalid or unenforceable under | ||
221 | any particular circumstance, the balance of the section is intended to | ||
222 | apply and the section as a whole is intended to apply in other | ||
223 | circumstances. | ||
224 | |||
225 | It is not the purpose of this section to induce you to infringe any | ||
226 | patents or other property right claims or to contest validity of any | ||
227 | such claims; this section has the sole purpose of protecting the | ||
228 | integrity of the free software distribution system, which is | ||
229 | implemented by public license practices. Many people have made | ||
230 | generous contributions to the wide range of software distributed | ||
231 | through that system in reliance on consistent application of that | ||
232 | system; it is up to the author/donor to decide if he or she is willing | ||
233 | to distribute software through any other system and a licensee cannot | ||
234 | impose that choice. | ||
235 | |||
236 | This section is intended to make thoroughly clear what is believed to | ||
237 | be a consequence of the rest of this License. | ||
238 | |||
239 | 8. If the distribution and/or use of the Program is restricted in | ||
240 | certain countries either by patents or by copyrighted interfaces, the | ||
241 | original copyright holder who places the Program under this License | ||
242 | may add an explicit geographical distribution limitation excluding | ||
243 | those countries, so that distribution is permitted only in or among | ||
244 | countries not thus excluded. In such case, this License incorporates | ||
245 | the limitation as if written in the body of this License. | ||
246 | |||
247 | 9. The Free Software Foundation may publish revised and/or new versions | ||
248 | of the General Public License from time to time. Such new versions will | ||
249 | be similar in spirit to the present version, but may differ in detail to | ||
250 | address new problems or concerns. | ||
251 | |||
252 | Each version is given a distinguishing version number. If the Program | ||
253 | specifies a version number of this License which applies to it and "any | ||
254 | later version", you have the option of following the terms and conditions | ||
255 | either of that version or of any later version published by the Free | ||
256 | Software Foundation. If the Program does not specify a version number of | ||
257 | this License, you may choose any version ever published by the Free Software | ||
258 | Foundation. | ||
259 | |||
260 | 10. If you wish to incorporate parts of the Program into other free | ||
261 | programs whose distribution conditions are different, write to the author | ||
262 | to ask for permission. For software which is copyrighted by the Free | ||
263 | Software Foundation, write to the Free Software Foundation; we sometimes | ||
264 | make exceptions for this. Our decision will be guided by the two goals | ||
265 | of preserving the free status of all derivatives of our free software and | ||
266 | of promoting the sharing and reuse of software generally. | ||
267 | |||
268 | NO WARRANTY | ||
269 | |||
270 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY | ||
271 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN | ||
272 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES | ||
273 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED | ||
274 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | ||
275 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS | ||
276 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE | ||
277 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, | ||
278 | REPAIR OR CORRECTION. | ||
279 | |||
280 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING | ||
281 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR | ||
282 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, | ||
283 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING | ||
284 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED | ||
285 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY | ||
286 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER | ||
287 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE | ||
288 | POSSIBILITY OF SUCH DAMAGES. | ||
289 | |||
290 | END OF TERMS AND CONDITIONS | ||
291 | |||
292 | How to Apply These Terms to Your New Programs | ||
293 | |||
294 | If you develop a new program, and you want it to be of the greatest | ||
295 | possible use to the public, the best way to achieve this is to make it | ||
296 | free software which everyone can redistribute and change under these terms. | ||
297 | |||
298 | To do so, attach the following notices to the program. It is safest | ||
299 | to attach them to the start of each source file to most effectively | ||
300 | convey the exclusion of warranty; and each file should have at least | ||
301 | the "copyright" line and a pointer to where the full notice is found. | ||
302 | |||
303 | <one line to give the program's name and a brief idea of what it does.> | ||
304 | Copyright (C) 19yy <name of author> | ||
305 | |||
306 | This program is free software; you can redistribute it and/or modify | ||
307 | it under the terms of the GNU General Public License as published by | ||
308 | the Free Software Foundation; either version 2 of the License, or | ||
309 | (at your option) any later version. | ||
310 | |||
311 | This program is distributed in the hope that it will be useful, | ||
312 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
313 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
314 | GNU General Public License for more details. | ||
315 | |||
316 | You should have received a copy of the GNU General Public License | ||
317 | along with this program; if not, write to the Free Software | ||
318 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
319 | |||
320 | |||
321 | Also add information on how to contact you by electronic and paper mail. | ||
322 | |||
323 | If the program is interactive, make it output a short notice like this | ||
324 | when it starts in an interactive mode: | ||
325 | |||
326 | Gnomovision version 69, Copyright (C) 19yy name of author | ||
327 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. | ||
328 | This is free software, and you are welcome to redistribute it | ||
329 | under certain conditions; type `show c' for details. | ||
330 | |||
331 | The hypothetical commands `show w' and `show c' should show the appropriate | ||
332 | parts of the General Public License. Of course, the commands you use may | ||
333 | be called something other than `show w' and `show c'; they could even be | ||
334 | mouse-clicks or menu items--whatever suits your program. | ||
335 | |||
336 | You should also get your employer (if you work as a programmer) or your | ||
337 | school, if any, to sign a "copyright disclaimer" for the program, if | ||
338 | necessary. Here is a sample; alter the names: | ||
339 | |||
340 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program | ||
341 | `Gnomovision' (which makes passes at compilers) written by James Hacker. | ||
342 | |||
343 | <signature of Ty Coon>, 1 April 1989 | ||
344 | Ty Coon, President of Vice | ||
345 | |||
346 | This General Public License does not permit incorporating your program into | ||
347 | proprietary programs. If your program is a subroutine library, you may | ||
348 | consider it more useful to permit linking proprietary applications with the | ||
349 | library. If this is what you want to do, use the GNU Library General | ||
350 | Public License instead of this License. | ||
diff --git a/lib/rbcodec/codecs/libfaad/README b/lib/rbcodec/codecs/libfaad/README new file mode 100644 index 0000000000..a3a3d5a833 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/README | |||
@@ -0,0 +1,122 @@ | |||
1 | |||
2 | Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | http://www.audiocoding.com/ | ||
4 | |||
5 | FAAD2 is a HE, LC, MAIN and LTP profile, MPEG2 and MPEG-4 AAC decoder. | ||
6 | FAAD2 includes code for SBR (HE AAC) decoding. | ||
7 | FAAD2 is licensed under the GPL. | ||
8 | |||
9 | |||
10 | __________ | ||
11 | COPYRIGHTS | ||
12 | |||
13 | For FAAD2 the following license applies: | ||
14 | |||
15 | ****************************************************************************** | ||
16 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
17 | ** Copyright (C) 2003 M. Bakker (mbakker(at)nero.com), Ahead Software AG | ||
18 | ** | ||
19 | ** This program is free software; you can redistribute it and/or modify | ||
20 | ** it under the terms of the GNU General Public License as published by | ||
21 | ** the Free Software Foundation; either version 2 of the License, or | ||
22 | ** (at your option) any later version. | ||
23 | ** | ||
24 | ** This program is distributed in the hope that it will be useful, | ||
25 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
26 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
27 | ** GNU General Public License for more details. | ||
28 | ** | ||
29 | ** You should have received a copy of the GNU General Public License | ||
30 | ** along with this program; if not, write to the Free Software | ||
31 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
32 | ** | ||
33 | ** Commercial non-GPL licensing of this software is also possible. | ||
34 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
35 | ****************************************************************************** | ||
36 | |||
37 | |||
38 | Please note that the use of this software may require the payment of | ||
39 | patent royalties. You need to consider this issue before you start | ||
40 | building derivative works. We are not warranting or indemnifying you in | ||
41 | any way for patent royalities! YOU ARE SOLELY RESPONSIBLE FOR YOUR OWN | ||
42 | ACTIONS! | ||
43 | |||
44 | |||
45 | ______ | ||
46 | PEOPLE | ||
47 | |||
48 | FAAD2 is written by: | ||
49 | - M. Bakker (mbakker(at)nero.com). | ||
50 | |||
51 | |||
52 | _______________ | ||
53 | VERSION HISTORY | ||
54 | |||
55 | Sorry, try building a ChangeLog from CVS. | ||
56 | |||
57 | __________________________________ | ||
58 | REDISTRIBUTED OPEN SOURCE PACKAGES | ||
59 | |||
60 | This is the list of redistributed open source packages that are included | ||
61 | in FAAD2: | ||
62 | |||
63 | Name: mp4v2 | ||
64 | Version: 0.9.8.6 | ||
65 | Origin: http://www.mpeg4ip.net | ||
66 | Author: David Mackie | ||
67 | Directory: common/mp4v2 | ||
68 | License: MPL, Mozilla Public License, version 1.1 | ||
69 | |||
70 | Name: mp4av | ||
71 | Version: 0.9.8.6 | ||
72 | Origin: http://www.mpeg4ip.net | ||
73 | Author: David Mackie | ||
74 | Directory: common/mp4av | ||
75 | License: MPL, Mozilla Public License, version 1.1 | ||
76 | |||
77 | |||
78 | ___________________ | ||
79 | DIRECTORY STRUCTURE | ||
80 | |||
81 | faad2 - top level directory. | ||
82 | |||
83 | aacDECdrop - windows decoder/player with drag'n'drop functionality | ||
84 | |||
85 | common - generally used libraries and code. | ||
86 | |||
87 | faad - general common functions like filereading and streaming | ||
88 | as well as getting info from aac files. | ||
89 | |||
90 | mp4v2 - MPEG-4 file reading library. | ||
91 | |||
92 | mp4av - MPEG-4 file general function library. | ||
93 | |||
94 | mp4ff - Small MP4 file format library (includes tagging abilities). | ||
95 | |||
96 | CoreAAC - AAC DirectShow filter. | ||
97 | |||
98 | frontend - command line frontend to the FAAD2 library, also supports | ||
99 | MPEG-4 file decoding. | ||
100 | |||
101 | include - inlude file for the FAAD2 library. | ||
102 | |||
103 | libfaad - the FAAD2 AAC decoder library including SBR. | ||
104 | |||
105 | codebook - Huffman codebooks | ||
106 | |||
107 | plugins - plugins for all kinds of pograms. | ||
108 | |||
109 | in_mp4 - winamp MPEG-4 AAC file input plugin. | ||
110 | |||
111 | QCD - Quintessential player AAC plugin. | ||
112 | |||
113 | QCDMp4 - Quintessential player MP4 plugin. | ||
114 | |||
115 | winamp - winamp2 AAC input plugin. | ||
116 | |||
117 | winamp3 - winamp3 AAC input plugin. | ||
118 | |||
119 | xmms - xmms AAC plugin | ||
120 | |||
121 | mpeg4ip - plugin for the mpeg4ip player | ||
122 | |||
diff --git a/lib/rbcodec/codecs/libfaad/README.rockbox b/lib/rbcodec/codecs/libfaad/README.rockbox new file mode 100644 index 0000000000..5b70f231ba --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/README.rockbox | |||
@@ -0,0 +1,19 @@ | |||
1 | Library: libfaad (FAAD2) | ||
2 | Imported: 2005-10-31 by Dave Chapman | ||
3 | |||
4 | This directory contains the libfaad library from the FAAD2 project. | ||
5 | |||
6 | LICENSING INFORMATION | ||
7 | |||
8 | FAAD2 is licensed under the GNU General Public License and is | ||
9 | Copyright (C) 2003 M. Bakker (mbakker(at)nero.com), Ahead Software AG | ||
10 | |||
11 | IMPORT DETAILS | ||
12 | |||
13 | The decoder is based on the CVS version of libfaad from 2 February 2005. | ||
14 | |||
15 | A non GPL compatible clause was added to the license as part of the | ||
16 | CVS commit on 2 February 2005 - so we are not able to use later | ||
17 | versions of that project in Rockbox. | ||
18 | |||
19 | |||
diff --git a/lib/rbcodec/codecs/libfaad/SOURCES b/lib/rbcodec/codecs/libfaad/SOURCES new file mode 100644 index 0000000000..8447354fd3 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/SOURCES | |||
@@ -0,0 +1,27 @@ | |||
1 | bits.c | ||
2 | common.c | ||
3 | decoder.c | ||
4 | drc.c | ||
5 | error.c | ||
6 | filtbank.c | ||
7 | huffman.c | ||
8 | is.c | ||
9 | mp4.c | ||
10 | ms.c | ||
11 | pns.c | ||
12 | ps_dec.c | ||
13 | ps_syntax.c | ||
14 | pulse.c | ||
15 | sbr_dct.c | ||
16 | sbr_dec.c | ||
17 | sbr_e_nf.c | ||
18 | sbr_fbt.c | ||
19 | sbr_hfadj.c | ||
20 | sbr_hfgen.c | ||
21 | sbr_huff.c | ||
22 | sbr_qmf.c | ||
23 | sbr_syntax.c | ||
24 | sbr_tf_grid.c | ||
25 | specrec.c | ||
26 | syntax.c | ||
27 | tns.c | ||
diff --git a/lib/rbcodec/codecs/libfaad/analysis.h b/lib/rbcodec/codecs/libfaad/analysis.h new file mode 100644 index 0000000000..f1c3da7a8f --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/analysis.h | |||
@@ -0,0 +1,49 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __ANALYSIS_H__ | ||
29 | #define __ANALYSIS_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | |||
36 | #ifdef ANALYSIS | ||
37 | #define DEBUGDEC ,uint8_t print,uint16_t var,uint8_t *dbg | ||
38 | #define DEBUGVAR(A,B,C) ,A,B,C | ||
39 | extern uint16_t dbg_count; | ||
40 | #else | ||
41 | #define DEBUGDEC | ||
42 | #define DEBUGVAR(A,B,C) | ||
43 | #endif | ||
44 | |||
45 | |||
46 | #ifdef __cplusplus | ||
47 | } | ||
48 | #endif | ||
49 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/bits.c b/lib/rbcodec/codecs/libfaad/bits.c new file mode 100644 index 0000000000..a3640077d8 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/bits.c | |||
@@ -0,0 +1,208 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #include "common.h" | ||
29 | #include "structs.h" | ||
30 | |||
31 | #include <stdlib.h> | ||
32 | #include <string.h> | ||
33 | #include "bits.h" | ||
34 | |||
35 | /* Need to be large enough to fit the largest compressed sample in a file. | ||
36 | * Samples were observed to need up to 1500 bytes (400 kbps nero aac). | ||
37 | */ | ||
38 | #define BUFFER_SIZE 2048 | ||
39 | static uint8_t static_buffer[BUFFER_SIZE] IBSS_ATTR; | ||
40 | |||
41 | /* initialize buffer, call once before first getbits or showbits */ | ||
42 | void faad_initbits(bitfile *ld, const void *_buffer, const uint32_t buffer_size) | ||
43 | { | ||
44 | uint32_t tmp; | ||
45 | |||
46 | if (ld == NULL) | ||
47 | return; | ||
48 | |||
49 | memset(ld, 0, sizeof(bitfile)); | ||
50 | |||
51 | if (buffer_size == 0 || _buffer == NULL || (buffer_size+12)>BUFFER_SIZE) | ||
52 | { | ||
53 | ld->error = 1; | ||
54 | ld->no_more_reading = 1; | ||
55 | return; | ||
56 | } | ||
57 | |||
58 | ld->buffer = &static_buffer; | ||
59 | memset(ld->buffer, 0, (buffer_size+12)*sizeof(uint8_t)); | ||
60 | memcpy(ld->buffer, _buffer, buffer_size*sizeof(uint8_t)); | ||
61 | |||
62 | ld->buffer_size = buffer_size; | ||
63 | |||
64 | tmp = getdword((uint32_t*)ld->buffer); | ||
65 | ld->bufa = tmp; | ||
66 | |||
67 | tmp = getdword((uint32_t*)ld->buffer + 1); | ||
68 | ld->bufb = tmp; | ||
69 | |||
70 | ld->start = (uint32_t*)ld->buffer; | ||
71 | ld->tail = ((uint32_t*)ld->buffer + 2); | ||
72 | |||
73 | ld->bits_left = 32; | ||
74 | |||
75 | ld->bytes_used = 0; | ||
76 | ld->no_more_reading = 0; | ||
77 | ld->error = 0; | ||
78 | } | ||
79 | |||
80 | void faad_endbits(bitfile *ld) | ||
81 | { | ||
82 | #if 0 | ||
83 | if (ld) | ||
84 | { | ||
85 | if (ld->buffer) | ||
86 | { | ||
87 | faad_free(ld->buffer); | ||
88 | ld->buffer = NULL; | ||
89 | } | ||
90 | } | ||
91 | #else | ||
92 | (void) ld; | ||
93 | #endif | ||
94 | } | ||
95 | |||
96 | uint32_t faad_get_processed_bits(bitfile *ld) | ||
97 | { | ||
98 | return (uint32_t)(8 * (4*(ld->tail - ld->start) - 4) - (ld->bits_left)); | ||
99 | } | ||
100 | |||
101 | uint8_t faad_byte_align(bitfile *ld) | ||
102 | { | ||
103 | uint8_t remainder = (uint8_t)((32 - ld->bits_left) % 8); | ||
104 | |||
105 | if (remainder) | ||
106 | { | ||
107 | faad_flushbits(ld, 8 - remainder); | ||
108 | return (8 - remainder); | ||
109 | } | ||
110 | return 0; | ||
111 | } | ||
112 | |||
113 | /* rewind to beginning */ | ||
114 | /* not used | ||
115 | void faad_rewindbits(bitfile *ld) | ||
116 | { | ||
117 | uint32_t tmp; | ||
118 | |||
119 | tmp = ld->start[0]; | ||
120 | #ifndef ARCH_IS_BIG_ENDIAN | ||
121 | tmp = BSWAP(tmp); | ||
122 | #endif | ||
123 | ld->bufa = tmp; | ||
124 | |||
125 | tmp = ld->start[1]; | ||
126 | #ifndef ARCH_IS_BIG_ENDIAN | ||
127 | tmp = BSWAP(tmp); | ||
128 | #endif | ||
129 | ld->bufb = tmp; | ||
130 | ld->bits_left = 32; | ||
131 | ld->tail = &ld->start[2]; | ||
132 | ld->bytes_used = 0; | ||
133 | ld->no_more_reading = 0; | ||
134 | } | ||
135 | */ | ||
136 | |||
137 | #ifdef ERROR_RESILIENCE | ||
138 | uint8_t *faad_getbitbuffer(bitfile *ld, uint32_t bits | ||
139 | DEBUGDEC) | ||
140 | { | ||
141 | uint16_t i; | ||
142 | uint8_t temp; | ||
143 | uint16_t bytes = (uint16_t)bits / 8; | ||
144 | uint8_t remainder = (uint8_t)bits % 8; | ||
145 | |||
146 | uint8_t *buffer = (uint8_t*)faad_malloc((bytes+1)*sizeof(uint8_t)); | ||
147 | |||
148 | for (i = 0; i < bytes; i++) | ||
149 | { | ||
150 | buffer[i] = (uint8_t)faad_getbits(ld, 8 DEBUGVAR(print,var,dbg)); | ||
151 | } | ||
152 | |||
153 | if (remainder) | ||
154 | { | ||
155 | temp = (uint8_t)faad_getbits(ld, remainder DEBUGVAR(print,var,dbg)) << (8-remainder); | ||
156 | |||
157 | buffer[bytes] = temp; | ||
158 | } | ||
159 | |||
160 | return buffer; | ||
161 | } | ||
162 | #endif | ||
163 | |||
164 | #ifdef DRM | ||
165 | /* return the original data buffer */ | ||
166 | void *faad_origbitbuffer(bitfile *ld) | ||
167 | { | ||
168 | return (void*)ld->start; | ||
169 | } | ||
170 | |||
171 | /* return the original data buffer size */ | ||
172 | uint32_t faad_origbitbuffer_size(bitfile *ld) | ||
173 | { | ||
174 | return ld->buffer_size; | ||
175 | } | ||
176 | #endif | ||
177 | |||
178 | /* reversed bit reading routines, used for RVLC and HCR */ | ||
179 | /* not used | ||
180 | void faad_initbits_rev(bitfile *ld, void *buffer, | ||
181 | uint32_t bits_in_buffer) | ||
182 | { | ||
183 | uint32_t tmp; | ||
184 | int32_t index; | ||
185 | |||
186 | ld->buffer_size = bit2byte(bits_in_buffer); | ||
187 | |||
188 | index = (bits_in_buffer+31)/32 - 1; | ||
189 | |||
190 | ld->start = (uint32_t*)buffer + index - 2; | ||
191 | |||
192 | tmp = getdword((uint32_t*)buffer + index); | ||
193 | ld->bufa = tmp; | ||
194 | |||
195 | tmp = getdword((uint32_t*)buffer + index - 1); | ||
196 | ld->bufb = tmp; | ||
197 | |||
198 | ld->tail = (uint32_t*)buffer + index; | ||
199 | |||
200 | ld->bits_left = bits_in_buffer % 32; | ||
201 | if (ld->bits_left == 0) | ||
202 | ld->bits_left = 32; | ||
203 | |||
204 | ld->bytes_used = 0; | ||
205 | ld->no_more_reading = 0; | ||
206 | ld->error = 0; | ||
207 | } | ||
208 | */ | ||
diff --git a/lib/rbcodec/codecs/libfaad/bits.h b/lib/rbcodec/codecs/libfaad/bits.h new file mode 100644 index 0000000000..f9417b8670 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/bits.h | |||
@@ -0,0 +1,381 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __BITS_H__ | ||
29 | #define __BITS_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | #include "analysis.h" | ||
36 | #ifdef ANALYSIS | ||
37 | #include <stdio.h> | ||
38 | #endif | ||
39 | |||
40 | #define BYTE_NUMBIT 8 | ||
41 | #define bit2byte(a) ((a+7)/BYTE_NUMBIT) | ||
42 | |||
43 | typedef struct _bitfile | ||
44 | { | ||
45 | /* bit input */ | ||
46 | uint32_t bufa; | ||
47 | uint32_t bufb; | ||
48 | uint32_t bits_left; | ||
49 | uint32_t buffer_size; /* size of the buffer in bytes */ | ||
50 | uint32_t bytes_used; | ||
51 | uint8_t no_more_reading; | ||
52 | uint8_t error; | ||
53 | uint32_t *tail; | ||
54 | uint32_t *start; | ||
55 | void *buffer; | ||
56 | } bitfile; | ||
57 | |||
58 | /* rockbox: use asm optimized swap32() | ||
59 | #define BSWAP(a) \ | ||
60 | ((a) = ( ((a)&0xff)<<24) | (((a)&0xff00)<<8) | (((a)>>8)&0xff00) | (((a)>>24)&0xff)) | ||
61 | */ | ||
62 | #define BSWAP(a) swap32(a) | ||
63 | |||
64 | static uint32_t bitmask[] = { | ||
65 | 0x0, 0x1, 0x3, 0x7, 0xF, 0x1F, 0x3F, 0x7F, 0xFF, 0x1FF, | ||
66 | 0x3FF, 0x7FF, 0xFFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF, | ||
67 | 0x1FFFF, 0x3FFFF, 0x7FFFF, 0xFFFFF, 0x1FFFFF, 0x3FFFFF, | ||
68 | 0x7FFFFF, 0xFFFFFF, 0x1FFFFFF, 0x3FFFFFF, 0x7FFFFFF, | ||
69 | 0xFFFFFFF, 0x1FFFFFFF, 0x3FFFFFFF, 0x7FFFFFFF | ||
70 | /* added bitmask 32, correct?!?!?! */ | ||
71 | , 0xFFFFFFFF | ||
72 | }; | ||
73 | |||
74 | void faad_initbits(bitfile *ld, const void *buffer, const uint32_t buffer_size); | ||
75 | void faad_endbits(bitfile *ld); | ||
76 | /* not used | ||
77 | void faad_initbits_rev(bitfile *ld, void *buffer, | ||
78 | uint32_t bits_in_buffer); | ||
79 | */ | ||
80 | uint8_t faad_byte_align(bitfile *ld); | ||
81 | uint32_t faad_get_processed_bits(bitfile *ld); | ||
82 | void faad_rewindbits(bitfile *ld); | ||
83 | uint8_t *faad_getbitbuffer(bitfile *ld, uint32_t bits | ||
84 | DEBUGDEC); | ||
85 | #ifdef DRM | ||
86 | void *faad_origbitbuffer(bitfile *ld); | ||
87 | uint32_t faad_origbitbuffer_size(bitfile *ld); | ||
88 | #endif | ||
89 | |||
90 | static INLINE uint32_t getdword(void *mem) | ||
91 | { | ||
92 | #ifndef ARCH_IS_BIG_ENDIAN | ||
93 | return BSWAP(*(uint32_t*)mem); | ||
94 | #else | ||
95 | return *(uint32_t*)mem; | ||
96 | #endif | ||
97 | } | ||
98 | |||
99 | static INLINE void faad_flushbits_ex(bitfile *ld, uint32_t bits) | ||
100 | { | ||
101 | uint32_t tmp; | ||
102 | |||
103 | ld->bufa = ld->bufb; | ||
104 | if (ld->no_more_reading == 0) | ||
105 | { | ||
106 | tmp = getdword(ld->tail); | ||
107 | ld->tail++; | ||
108 | } else { | ||
109 | tmp = 0; | ||
110 | } | ||
111 | ld->bufb = tmp; | ||
112 | ld->bits_left += (32 - bits); | ||
113 | ld->bytes_used += 4; | ||
114 | if (ld->bytes_used == ld->buffer_size) | ||
115 | ld->no_more_reading = 1; | ||
116 | if (ld->bytes_used > ld->buffer_size) | ||
117 | ld->error = 1; | ||
118 | } | ||
119 | |||
120 | static INLINE uint32_t faad_showbits(bitfile *ld, uint32_t bits) | ||
121 | { | ||
122 | if (bits <= ld->bits_left) | ||
123 | { | ||
124 | return (ld->bufa >> (ld->bits_left - bits)) & bitmask[bits]; | ||
125 | } | ||
126 | |||
127 | bits -= ld->bits_left; | ||
128 | return ((ld->bufa & bitmask[ld->bits_left]) << bits) | (ld->bufb >> (32 - bits)); | ||
129 | } | ||
130 | |||
131 | static INLINE void faad_flushbits(bitfile *ld, uint32_t bits) | ||
132 | { | ||
133 | /* do nothing if error */ | ||
134 | if (ld->error != 0) | ||
135 | return; | ||
136 | |||
137 | if (bits < ld->bits_left) | ||
138 | { | ||
139 | ld->bits_left -= bits; | ||
140 | } else { | ||
141 | faad_flushbits_ex(ld, bits); | ||
142 | } | ||
143 | } | ||
144 | |||
145 | /* return next n bits (right adjusted) */ | ||
146 | static uint32_t faad_getbits(bitfile *ld, uint32_t n DEBUGDEC) | ||
147 | { | ||
148 | uint32_t ret; | ||
149 | |||
150 | if (ld->no_more_reading || n == 0) | ||
151 | return 0; | ||
152 | |||
153 | ret = faad_showbits(ld, n); | ||
154 | faad_flushbits(ld, n); | ||
155 | |||
156 | #ifdef ANALYSIS | ||
157 | if (print) | ||
158 | fprintf(stdout, "%4d %2d bits, val: %4d, variable: %d %s\n", dbg_count++, n, ret, var, dbg); | ||
159 | #endif | ||
160 | |||
161 | return ret; | ||
162 | } | ||
163 | |||
164 | static INLINE uint8_t faad_get1bit(bitfile *ld DEBUGDEC) | ||
165 | { | ||
166 | uint8_t r; | ||
167 | |||
168 | if (ld->bits_left > 0) | ||
169 | { | ||
170 | ld->bits_left--; | ||
171 | r = (uint8_t)((ld->bufa >> ld->bits_left) & 1); | ||
172 | return r; | ||
173 | } | ||
174 | |||
175 | /* bits_left == 0 */ | ||
176 | #if 0 | ||
177 | r = (uint8_t)(ld->bufb >> 31); | ||
178 | faad_flushbits_ex(ld, 1); | ||
179 | #else | ||
180 | r = (uint8_t)faad_getbits(ld, 1); | ||
181 | #endif | ||
182 | return r; | ||
183 | } | ||
184 | |||
185 | /* reversed bitreading routines */ | ||
186 | static INLINE uint32_t faad_showbits_rev(bitfile *ld, uint32_t bits) | ||
187 | { | ||
188 | uint8_t i; | ||
189 | uint32_t B = 0; | ||
190 | |||
191 | if (bits <= ld->bits_left) | ||
192 | { | ||
193 | for (i = 0; i < bits; i++) | ||
194 | { | ||
195 | if (ld->bufa & (1 << (i + (32 - ld->bits_left)))) | ||
196 | B |= (1 << (bits - i - 1)); | ||
197 | } | ||
198 | return B; | ||
199 | } else { | ||
200 | for (i = 0; i < ld->bits_left; i++) | ||
201 | { | ||
202 | if (ld->bufa & (1 << (i + (32 - ld->bits_left)))) | ||
203 | B |= (1 << (bits - i - 1)); | ||
204 | } | ||
205 | for (i = 0; i < bits - ld->bits_left; i++) | ||
206 | { | ||
207 | if (ld->bufb & (1 << (i + (32-ld->bits_left)))) | ||
208 | B |= (1 << (bits - ld->bits_left - i - 1)); | ||
209 | } | ||
210 | return B; | ||
211 | } | ||
212 | } | ||
213 | |||
214 | static INLINE void faad_flushbits_rev(bitfile *ld, uint32_t bits) | ||
215 | { | ||
216 | /* do nothing if error */ | ||
217 | if (ld->error != 0) | ||
218 | return; | ||
219 | |||
220 | if (bits < ld->bits_left) | ||
221 | { | ||
222 | ld->bits_left -= bits; | ||
223 | } else { | ||
224 | uint32_t tmp; | ||
225 | |||
226 | ld->bufa = ld->bufb; | ||
227 | tmp = getdword(ld->start); | ||
228 | ld->bufb = tmp; | ||
229 | ld->start--; | ||
230 | ld->bits_left += (32 - bits); | ||
231 | |||
232 | ld->bytes_used += 4; | ||
233 | if (ld->bytes_used == ld->buffer_size) | ||
234 | ld->no_more_reading = 1; | ||
235 | if (ld->bytes_used > ld->buffer_size) | ||
236 | ld->error = 1; | ||
237 | } | ||
238 | } | ||
239 | |||
240 | static INLINE uint32_t faad_getbits_rev(bitfile *ld, uint32_t n | ||
241 | DEBUGDEC) | ||
242 | { | ||
243 | uint32_t ret; | ||
244 | |||
245 | if (ld->no_more_reading) | ||
246 | return 0; | ||
247 | |||
248 | if (n == 0) | ||
249 | return 0; | ||
250 | |||
251 | ret = faad_showbits_rev(ld, n); | ||
252 | faad_flushbits_rev(ld, n); | ||
253 | |||
254 | #ifdef ANALYSIS | ||
255 | if (print) | ||
256 | fprintf(stdout, "%4d %2d bits, val: %4d, variable: %d %s\n", dbg_count++, n, ret, var, dbg); | ||
257 | #endif | ||
258 | |||
259 | return ret; | ||
260 | } | ||
261 | |||
262 | #ifdef DRM | ||
263 | static uint8_t faad_check_CRC(bitfile *ld, uint16_t len) | ||
264 | { | ||
265 | uint8_t CRC; | ||
266 | uint16_t r=255; /* Initialize to all ones */ | ||
267 | |||
268 | /* CRC polynome used x^8 + x^4 + x^3 + x^2 +1 */ | ||
269 | #define GPOLY 0435 | ||
270 | |||
271 | faad_rewindbits(ld); | ||
272 | |||
273 | CRC = (uint8_t) ~faad_getbits(ld, 8 | ||
274 | DEBUGVAR(1,999,"faad_check_CRC(): CRC")); /* CRC is stored inverted */ | ||
275 | |||
276 | for (; len>0; len--) | ||
277 | { | ||
278 | r = ( (r << 1) ^ (( ( faad_get1bit(ld | ||
279 | DEBUGVAR(1,998,"")) & 1) ^ ((r >> 7) & 1)) * GPOLY )) & 0xFF; | ||
280 | } | ||
281 | |||
282 | if (r != CRC) | ||
283 | { | ||
284 | return 8; | ||
285 | } else { | ||
286 | return 0; | ||
287 | } | ||
288 | } | ||
289 | |||
290 | static uint8_t tabFlipbits[256] = { | ||
291 | 0,128,64,192,32,160,96,224,16,144,80,208,48,176,112,240, | ||
292 | 8,136,72,200,40,168,104,232,24,152,88,216,56,184,120,248, | ||
293 | 4,132,68,196,36,164,100,228,20,148,84,212,52,180,116,244, | ||
294 | 12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252, | ||
295 | 2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242, | ||
296 | 10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250, | ||
297 | 6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246, | ||
298 | 14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254, | ||
299 | 1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241, | ||
300 | 9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249, | ||
301 | 5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245, | ||
302 | 13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253, | ||
303 | 3,131,67,195,35,163,99,227,19,147,83,211,51,179,115,243, | ||
304 | 11,139,75,203,43,171,107,235,27,155,91,219,59,187,123,251, | ||
305 | 7,135,71,199,39,167,103,231,23,151,87,215,55,183,119,247, | ||
306 | 15,143,79,207,47,175,111,239,31,159,95,223,63,191,127,255 | ||
307 | }; | ||
308 | #endif | ||
309 | |||
310 | #ifdef ERROR_RESILIENCE | ||
311 | |||
312 | /* Modified bit reading functions for HCR */ | ||
313 | |||
314 | typedef struct | ||
315 | { | ||
316 | /* bit input */ | ||
317 | uint32_t bufa; | ||
318 | uint32_t bufb; | ||
319 | int8_t len; | ||
320 | } bits_t; | ||
321 | |||
322 | |||
323 | static INLINE uint32_t showbits_hcr(bits_t *ld, uint8_t bits) | ||
324 | { | ||
325 | if (bits == 0) return 0; | ||
326 | if (ld->len <= 32) | ||
327 | { | ||
328 | /* huffman_spectral_data_2 needs to read more than may be available, bits maybe | ||
329 | > ld->len, deliver 0 than */ | ||
330 | if (ld->len >= bits) | ||
331 | return ((ld->bufa >> (ld->len - bits)) & (0xFFFFFFFF >> (32 - bits))); | ||
332 | else | ||
333 | return ((ld->bufa << (bits - ld->len)) & (0xFFFFFFFF >> (32 - bits))); | ||
334 | } else { | ||
335 | if ((ld->len - bits) < 32) | ||
336 | { | ||
337 | return ( (ld->bufb & (0xFFFFFFFF >> (64 - ld->len))) << (bits - ld->len + 32)) | | ||
338 | (ld->bufa >> (ld->len - bits)); | ||
339 | } else { | ||
340 | return ((ld->bufb >> (ld->len - bits - 32)) & (0xFFFFFFFF >> (32 - bits))); | ||
341 | } | ||
342 | } | ||
343 | } | ||
344 | |||
345 | /* return 1 if position is outside of buffer, 0 otherwise */ | ||
346 | static INLINE int8_t flushbits_hcr( bits_t *ld, uint8_t bits) | ||
347 | { | ||
348 | ld->len -= bits; | ||
349 | |||
350 | if (ld->len <0) | ||
351 | { | ||
352 | ld->len = 0; | ||
353 | return 1; | ||
354 | } else { | ||
355 | return 0; | ||
356 | } | ||
357 | } | ||
358 | |||
359 | static INLINE int8_t getbits_hcr(bits_t *ld, uint8_t n, uint32_t *result) | ||
360 | { | ||
361 | *result = showbits_hcr(ld, n); | ||
362 | return flushbits_hcr(ld, n); | ||
363 | } | ||
364 | |||
365 | static INLINE int8_t get1bit_hcr(bits_t *ld, uint8_t *result) | ||
366 | { | ||
367 | uint32_t res; | ||
368 | int8_t ret; | ||
369 | |||
370 | ret = getbits_hcr(ld, 1, &res); | ||
371 | *result = (int8_t)(res & 1); | ||
372 | return ret; | ||
373 | } | ||
374 | |||
375 | #endif | ||
376 | |||
377 | |||
378 | #ifdef __cplusplus | ||
379 | } | ||
380 | #endif | ||
381 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/codebook/hcb.h b/lib/rbcodec/codecs/libfaad/codebook/hcb.h new file mode 100644 index 0000000000..eaefdbf437 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/codebook/hcb.h | |||
@@ -0,0 +1,142 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __HCB_H__ | ||
29 | #define __HCB_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | /* | ||
36 | * Optimal huffman decoding for AAC taken from: | ||
37 | * "SELECTING AN OPTIMAL HUFFMAN DECODER FOR AAC" by | ||
38 | * VLADIMIR Z. MESAROVIC , RAGHUNATH RAO, MIROSLAV V. DOKIC, and SACHIN DEO | ||
39 | * AES paper 5436 | ||
40 | * | ||
41 | * 2 methods are used for huffman decoding: | ||
42 | * - binary search | ||
43 | * - 2-step table lookup | ||
44 | * | ||
45 | * The choice of the "optimal" method is based on the fact that if the | ||
46 | * memory size for the Two-step is exorbitantly high then the decision | ||
47 | * is Binary search for that codebook. However, for marginally more memory | ||
48 | * size, if Twostep outperforms even the best case of Binary then the | ||
49 | * decision is Two-step for that codebook. | ||
50 | * | ||
51 | * The following methods are used for the different tables. | ||
52 | * codebook "optimal" method | ||
53 | * HCB_1 2-Step | ||
54 | * HCB_2 2-Step | ||
55 | * HCB_3 Binary | ||
56 | * HCB_4 2-Step | ||
57 | * HCB_5 Binary | ||
58 | * HCB_6 2-Step | ||
59 | * HCB_7 Binary | ||
60 | * HCB_8 2-Step | ||
61 | * HCB_9 Binary | ||
62 | * HCB_10 2-Step | ||
63 | * HCB_11 2-Step | ||
64 | * HCB_SF Binary | ||
65 | * | ||
66 | */ | ||
67 | |||
68 | |||
69 | #define ZERO_HCB 0 | ||
70 | #define FIRST_PAIR_HCB 5 | ||
71 | #define ESC_HCB 11 | ||
72 | #define QUAD_LEN 4 | ||
73 | #define PAIR_LEN 2 | ||
74 | #define NOISE_HCB 13 | ||
75 | #define INTENSITY_HCB2 14 | ||
76 | #define INTENSITY_HCB 15 | ||
77 | |||
78 | /* 1st step table */ | ||
79 | typedef struct | ||
80 | { | ||
81 | uint8_t offset; | ||
82 | uint8_t extra_bits; | ||
83 | } hcb; | ||
84 | |||
85 | /* 2nd step table with quadruple data */ | ||
86 | typedef struct | ||
87 | { | ||
88 | uint8_t bits; | ||
89 | int8_t x; | ||
90 | int8_t y; | ||
91 | } hcb_2_pair; | ||
92 | |||
93 | typedef struct | ||
94 | { | ||
95 | uint8_t bits; | ||
96 | int8_t x; | ||
97 | int8_t y; | ||
98 | int8_t v; | ||
99 | int8_t w; | ||
100 | } hcb_2_quad; | ||
101 | |||
102 | /* binary search table */ | ||
103 | typedef struct | ||
104 | { | ||
105 | uint8_t is_leaf; | ||
106 | int8_t data[4]; | ||
107 | } hcb_bin_quad; | ||
108 | |||
109 | typedef struct | ||
110 | { | ||
111 | uint8_t is_leaf; | ||
112 | int8_t data[2]; | ||
113 | } hcb_bin_pair; | ||
114 | |||
115 | hcb *hcb_table[]; | ||
116 | hcb_2_quad *hcb_2_quad_table[]; | ||
117 | hcb_2_pair *hcb_2_pair_table[]; | ||
118 | hcb_bin_pair *hcb_bin_table[]; | ||
119 | uint8_t hcbN[]; | ||
120 | uint8_t unsigned_cb[]; | ||
121 | int hcb_2_quad_table_size[]; | ||
122 | int hcb_2_pair_table_size[]; | ||
123 | int hcb_bin_table_size[]; | ||
124 | |||
125 | #include "codebook/hcb_1.h" | ||
126 | #include "codebook/hcb_2.h" | ||
127 | #include "codebook/hcb_3.h" | ||
128 | #include "codebook/hcb_4.h" | ||
129 | #include "codebook/hcb_5.h" | ||
130 | #include "codebook/hcb_6.h" | ||
131 | #include "codebook/hcb_7.h" | ||
132 | #include "codebook/hcb_8.h" | ||
133 | #include "codebook/hcb_9.h" | ||
134 | #include "codebook/hcb_10.h" | ||
135 | #include "codebook/hcb_11.h" | ||
136 | #include "codebook/hcb_sf.h" | ||
137 | |||
138 | |||
139 | #ifdef __cplusplus | ||
140 | } | ||
141 | #endif | ||
142 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/codebook/hcb_1.h b/lib/rbcodec/codecs/libfaad/codebook/hcb_1.h new file mode 100644 index 0000000000..88c04b6012 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/codebook/hcb_1.h | |||
@@ -0,0 +1,183 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | /* 2-step huffman table HCB_1 */ | ||
29 | |||
30 | |||
31 | /* 1st step: 5 bits | ||
32 | * 2^5 = 32 entries | ||
33 | * | ||
34 | * Used to find offset into 2nd step table and number of extra bits to get | ||
35 | */ | ||
36 | static hcb hcb1_1[] ICONST_ATTR_FAAD_LARGE_IRAM = { | ||
37 | { /* 00000 */ 0, 0 }, | ||
38 | { /* */ 0, 0 }, | ||
39 | { /* */ 0, 0 }, | ||
40 | { /* */ 0, 0 }, | ||
41 | { /* */ 0, 0 }, | ||
42 | { /* */ 0, 0 }, | ||
43 | { /* */ 0, 0 }, | ||
44 | { /* */ 0, 0 }, | ||
45 | { /* */ 0, 0 }, | ||
46 | { /* */ 0, 0 }, | ||
47 | { /* */ 0, 0 }, | ||
48 | { /* */ 0, 0 }, | ||
49 | { /* */ 0, 0 }, | ||
50 | { /* */ 0, 0 }, | ||
51 | { /* */ 0, 0 }, | ||
52 | { /* */ 0, 0 }, | ||
53 | { /* 10000 */ 1, 0 }, | ||
54 | { /* 10001 */ 2, 0 }, | ||
55 | { /* 10010 */ 3, 0 }, | ||
56 | { /* 10011 */ 4, 0 }, | ||
57 | { /* 10100 */ 5, 0 }, | ||
58 | { /* 10101 */ 6, 0 }, | ||
59 | { /* 10110 */ 7, 0 }, | ||
60 | { /* 10111 */ 8, 0 }, | ||
61 | |||
62 | /* 7 bit codewords */ | ||
63 | { /* 11000 */ 9, 2 }, | ||
64 | { /* 11001 */ 13, 2 }, | ||
65 | { /* 11010 */ 17, 2 }, | ||
66 | { /* 11011 */ 21, 2 }, | ||
67 | { /* 11100 */ 25, 2 }, | ||
68 | { /* 11101 */ 29, 2 }, | ||
69 | |||
70 | /* 9 bit codewords */ | ||
71 | { /* 11110 */ 33, 4 }, | ||
72 | |||
73 | /* 9/10/11 bit codewords */ | ||
74 | { /* 11111 */ 49, 6 } | ||
75 | }; | ||
76 | |||
77 | /* 2nd step table | ||
78 | * | ||
79 | * Gives size of codeword and actual data (x,y,v,w) | ||
80 | */ | ||
81 | static hcb_2_quad hcb1_2[] ICONST_ATTR_FAAD_LARGE_IRAM = { | ||
82 | /* 1 bit codeword */ | ||
83 | { 1, 0, 0, 0, 0 }, | ||
84 | |||
85 | /* 5 bit codewords */ | ||
86 | { 5, 1, 0, 0, 0 }, | ||
87 | { 5, -1, 0, 0, 0 }, | ||
88 | { 5, 0, 0, 0, -1 }, | ||
89 | { 5, 0, 1, 0, 0 }, | ||
90 | { 5, 0, 0, 0, 1 }, | ||
91 | { 5, 0, 0, -1, 0 }, | ||
92 | { 5, 0, 0, 1, 0 }, | ||
93 | { 5, 0, -1, 0, 0 }, | ||
94 | |||
95 | /* 7 bit codewords */ | ||
96 | /* first 5 bits: 11000 */ | ||
97 | { 7, 1, -1, 0, 0 }, | ||
98 | { 7, -1, 1, 0, 0 }, | ||
99 | { 7, 0, 0, -1, 1 }, | ||
100 | { 7, 0, 1, -1, 0 }, | ||
101 | /* first 5 bits: 11001 */ | ||
102 | { 7, 0, -1, 1, 0 }, | ||
103 | { 7, 0, 0, 1, -1 }, | ||
104 | { 7, 1, 1, 0, 0 }, | ||
105 | { 7, 0, 0, -1, -1 }, | ||
106 | /* first 5 bits: 11010 */ | ||
107 | { 7, -1, -1, 0, 0 }, | ||
108 | { 7, 0, -1, -1, 0 }, | ||
109 | { 7, 1, 0, -1, 0 }, | ||
110 | { 7, 0, 1, 0, -1 }, | ||
111 | /* first 5 bits: 11011 */ | ||
112 | { 7, -1, 0, 1, 0 }, | ||
113 | { 7, 0, 0, 1, 1 }, | ||
114 | { 7, 1, 0, 1, 0 }, | ||
115 | { 7, 0, -1, 0, 1 }, | ||
116 | /* first 5 bits: 11100 */ | ||
117 | { 7, 0, 1, 1, 0 }, | ||
118 | { 7, 0, 1, 0, 1 }, | ||
119 | { 7, -1, 0, -1, 0 }, | ||
120 | { 7, 1, 0, 0, 1 }, | ||
121 | /* first 5 bits: 11101 */ | ||
122 | { 7, -1, 0, 0, -1 }, | ||
123 | { 7, 1, 0, 0, -1 }, | ||
124 | { 7, -1, 0, 0, 1 }, | ||
125 | { 7, 0, -1, 0, -1 }, | ||
126 | |||
127 | /* 9 bit codeword */ | ||
128 | /* first 5 bits: 11110 */ | ||
129 | { 9, 1, 1, -1, 0 }, | ||
130 | { 9, -1, 1, -1, 0 }, | ||
131 | { 9, 1, -1, 1, 0 }, | ||
132 | { 9, 0, 1, 1, -1 }, | ||
133 | { 9, 0, 1, -1, 1 }, | ||
134 | { 9, 0, -1, 1, 1 }, | ||
135 | { 9, 0, -1, 1, -1 }, | ||
136 | { 9, 1, -1, -1, 0 }, | ||
137 | { 9, 1, 0, -1, 1 }, | ||
138 | { 9, 0, 1, -1, -1 }, | ||
139 | { 9, -1, 1, 1, 0 }, | ||
140 | { 9, -1, 0, 1, -1 }, | ||
141 | { 9, -1, -1, 1, 0 }, | ||
142 | { 9, 0, -1, -1, 1 }, | ||
143 | { 9, 1, -1, 0, 1 }, | ||
144 | { 9, 1, -1, 0, -1 }, | ||
145 | |||
146 | /* 9/10/11 bit codewords */ | ||
147 | /* first 5 bits: 11111 */ | ||
148 | /* 9 bit: reading 11 bits -> 2 too much so 4 entries for each codeword */ | ||
149 | { 9, -1, 1, 0, -1 }, { 9, -1, 1, 0, -1 }, { 9, -1, 1, 0, -1 }, { 9, -1, 1, 0, -1 }, | ||
150 | { 9, -1, -1, -1, 0 }, { 9, -1, -1, -1, 0 }, { 9, -1, -1, -1, 0 }, { 9, -1, -1, -1, 0 }, | ||
151 | { 9, 0, -1, -1, -1 }, { 9, 0, -1, -1, -1 }, { 9, 0, -1, -1, -1 }, { 9, 0, -1, -1, -1 }, | ||
152 | { 9, 0, 1, 1, 1 }, { 9, 0, 1, 1, 1 }, { 9, 0, 1, 1, 1 }, { 9, 0, 1, 1, 1 }, | ||
153 | { 9, 1, 0, 1, -1 }, { 9, 1, 0, 1, -1 }, { 9, 1, 0, 1, -1 }, { 9, 1, 0, 1, -1 }, | ||
154 | { 9, 1, 1, 0, 1 }, { 9, 1, 1, 0, 1 }, { 9, 1, 1, 0, 1 }, { 9, 1, 1, 0, 1 }, | ||
155 | { 9, -1, 1, 0, 1 }, { 9, -1, 1, 0, 1 }, { 9, -1, 1, 0, 1 }, { 9, -1, 1, 0, 1 }, | ||
156 | { 9, 1, 1, 1, 0 }, { 9, 1, 1, 1, 0 }, { 9, 1, 1, 1, 0 }, { 9, 1, 1, 1, 0 }, | ||
157 | /* 10 bit: reading 11 bits -> 1 too much so 2 entries for each codeword */ | ||
158 | { 10, -1, -1, 0, 1 }, { 10, -1, -1, 0, 1 }, | ||
159 | { 10, -1, 0, -1, -1 }, { 10, -1, 0, -1, -1 }, | ||
160 | { 10, 1, 1, 0, -1 }, { 10, 1, 1, 0, -1 }, | ||
161 | { 10, 1, 0, -1, -1 }, { 10, 1, 0, -1, -1 }, | ||
162 | { 10, -1, 0, -1, 1 }, { 10, -1, 0, -1, 1 }, | ||
163 | { 10, -1, -1, 0, -1 }, { 10, -1, -1, 0, -1 }, | ||
164 | { 10, -1, 0, 1, 1 }, { 10, -1, 0, 1, 1 }, | ||
165 | { 10, 1, 0, 1, 1 }, { 10, 1, 0, 1, 1 }, | ||
166 | /* 11 bit */ | ||
167 | { 11, 1, -1, 1, -1 }, | ||
168 | { 11, -1, 1, -1, 1 }, | ||
169 | { 11, -1, 1, 1, -1 }, | ||
170 | { 11, 1, -1, -1, 1 }, | ||
171 | { 11, 1, 1, 1, 1 }, | ||
172 | { 11, -1, -1, 1, 1 }, | ||
173 | { 11, 1, 1, -1, -1 }, | ||
174 | { 11, -1, -1, 1, -1 }, | ||
175 | { 11, -1, -1, -1, -1 }, | ||
176 | { 11, 1, 1, -1, 1 }, | ||
177 | { 11, 1, -1, 1, 1 }, | ||
178 | { 11, -1, 1, 1, 1 }, | ||
179 | { 11, -1, 1, -1, -1 }, | ||
180 | { 11, -1, -1, -1, 1 }, | ||
181 | { 11, 1, -1, -1, -1 }, | ||
182 | { 11, 1, 1, 1, -1 } | ||
183 | }; | ||
diff --git a/lib/rbcodec/codecs/libfaad/codebook/hcb_10.h b/lib/rbcodec/codecs/libfaad/codebook/hcb_10.h new file mode 100644 index 0000000000..af48711460 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/codebook/hcb_10.h | |||
@@ -0,0 +1,309 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | /* 2-step huffman table HCB_10 */ | ||
29 | |||
30 | |||
31 | /* 1st step: 6 bits | ||
32 | * 2^6 = 64 entries | ||
33 | * | ||
34 | * Used to find offset into 2nd step table and number of extra bits to get | ||
35 | */ | ||
36 | static hcb hcb10_1[] ICONST_ATTR_FAAD_LARGE_IRAM = { | ||
37 | /* 4 bit codewords */ | ||
38 | { /* 000000 */ 0, 0 }, | ||
39 | { /* */ 0, 0 }, | ||
40 | { /* */ 0, 0 }, | ||
41 | { /* */ 0, 0 }, | ||
42 | { /* 000100 */ 1, 0 }, | ||
43 | { /* */ 1, 0 }, | ||
44 | { /* */ 1, 0 }, | ||
45 | { /* */ 1, 0 }, | ||
46 | { /* 001000 */ 2, 0 }, | ||
47 | { /* */ 2, 0 }, | ||
48 | { /* */ 2, 0 }, | ||
49 | { /* */ 2, 0 }, | ||
50 | /* 5 bit codewords */ | ||
51 | { /* 001100 */ 3, 0 }, | ||
52 | { /* */ 3, 0 }, | ||
53 | { /* 001110 */ 4, 0 }, | ||
54 | { /* */ 4, 0 }, | ||
55 | { /* 010000 */ 5, 0 }, | ||
56 | { /* */ 5, 0 }, | ||
57 | { /* 010010 */ 6, 0 }, | ||
58 | { /* */ 6, 0 }, | ||
59 | { /* 010100 */ 7, 0 }, | ||
60 | { /* */ 7, 0 }, | ||
61 | { /* 010110 */ 8, 0 }, | ||
62 | { /* */ 8, 0 }, | ||
63 | { /* 011000 */ 9, 0 }, | ||
64 | { /* */ 9, 0 }, | ||
65 | { /* 011010 */ 10, 0 }, | ||
66 | { /* */ 10, 0 }, | ||
67 | /* 6 bit codewords */ | ||
68 | { /* 011100 */ 11, 0 }, | ||
69 | { /* 011101 */ 12, 0 }, | ||
70 | { /* 011110 */ 13, 0 }, | ||
71 | { /* 011111 */ 14, 0 }, | ||
72 | { /* 100000 */ 15, 0 }, | ||
73 | { /* 100001 */ 16, 0 }, | ||
74 | { /* 100010 */ 17, 0 }, | ||
75 | { /* 100011 */ 18, 0 }, | ||
76 | { /* 100100 */ 19, 0 }, | ||
77 | { /* 100101 */ 20, 0 }, | ||
78 | { /* 100110 */ 21, 0 }, | ||
79 | { /* 100111 */ 22, 0 }, | ||
80 | { /* 101000 */ 23, 0 }, | ||
81 | { /* 101001 */ 24, 0 }, | ||
82 | /* 7 bit codewords */ | ||
83 | { /* 101010 */ 25, 1 }, | ||
84 | { /* 101011 */ 27, 1 }, | ||
85 | { /* 101100 */ 29, 1 }, | ||
86 | { /* 101101 */ 31, 1 }, | ||
87 | { /* 101110 */ 33, 1 }, | ||
88 | { /* 101111 */ 35, 1 }, | ||
89 | { /* 110000 */ 37, 1 }, | ||
90 | { /* 110001 */ 39, 1 }, | ||
91 | /* 7/8 bit codewords */ | ||
92 | { /* 110010 */ 41, 2 }, | ||
93 | /* 8 bit codewords */ | ||
94 | { /* 110011 */ 45, 2 }, | ||
95 | { /* 110100 */ 49, 2 }, | ||
96 | { /* 110101 */ 53, 2 }, | ||
97 | { /* 110110 */ 57, 2 }, | ||
98 | { /* 110111 */ 61, 2 }, | ||
99 | /* 8/9 bit codewords */ | ||
100 | { /* 111000 */ 65, 3 }, | ||
101 | /* 9 bit codewords */ | ||
102 | { /* 111001 */ 73, 3 }, | ||
103 | { /* 111010 */ 81, 3 }, | ||
104 | { /* 111011 */ 89, 3 }, | ||
105 | /* 9/10 bit codewords */ | ||
106 | { /* 111100 */ 97, 4 }, | ||
107 | /* 10 bit codewords */ | ||
108 | { /* 111101 */ 113, 4 }, | ||
109 | { /* 111110 */ 129, 4 }, | ||
110 | /* 10/11/12 bit codewords */ | ||
111 | { /* 111111 */ 145, 6 } | ||
112 | }; | ||
113 | |||
114 | /* 2nd step table | ||
115 | * | ||
116 | * Gives size of codeword and actual data (x,y,v,w) | ||
117 | */ | ||
118 | static hcb_2_pair hcb10_2[] ICONST_ATTR_FAAD_LARGE_IRAM = { | ||
119 | /* 4 bit codewords */ | ||
120 | { 4, 1, 1 }, | ||
121 | { 4, 1, 2 }, | ||
122 | { 4, 2, 1 }, | ||
123 | |||
124 | /* 5 bit codewords */ | ||
125 | { 5, 2, 2 }, | ||
126 | { 5, 1, 0 }, | ||
127 | { 5, 0, 1 }, | ||
128 | { 5, 1, 3 }, | ||
129 | { 5, 3, 2 }, | ||
130 | { 5, 3, 1 }, | ||
131 | { 5, 2, 3 }, | ||
132 | { 5, 3, 3 }, | ||
133 | |||
134 | /* 6 bit codewords */ | ||
135 | { 6, 2, 0 }, | ||
136 | { 6, 0, 2 }, | ||
137 | { 6, 2, 4 }, | ||
138 | { 6, 4, 2 }, | ||
139 | { 6, 1, 4 }, | ||
140 | { 6, 4, 1 }, | ||
141 | { 6, 0, 0 }, | ||
142 | { 6, 4, 3 }, | ||
143 | { 6, 3, 4 }, | ||
144 | { 6, 3, 0 }, | ||
145 | { 6, 0, 3 }, | ||
146 | { 6, 4, 4 }, | ||
147 | { 6, 2, 5 }, | ||
148 | { 6, 5, 2 }, | ||
149 | |||
150 | /* 7 bit codewords */ | ||
151 | { 7, 1, 5 }, | ||
152 | { 7, 5, 1 }, | ||
153 | { 7, 5, 3 }, | ||
154 | { 7, 3, 5 }, | ||
155 | { 7, 5, 4 }, | ||
156 | { 7, 4, 5 }, | ||
157 | { 7, 6, 2 }, | ||
158 | { 7, 2, 6 }, | ||
159 | { 7, 6, 3 }, | ||
160 | { 7, 4, 0 }, | ||
161 | { 7, 6, 1 }, | ||
162 | { 7, 0, 4 }, | ||
163 | { 7, 1, 6 }, | ||
164 | { 7, 3, 6 }, | ||
165 | { 7, 5, 5 }, | ||
166 | { 7, 6, 4 }, | ||
167 | |||
168 | /* 7/8 bit codewords */ | ||
169 | { 7, 4, 6 }, { 7, 4, 6 }, | ||
170 | { 8, 6, 5 }, | ||
171 | { 8, 7, 2 }, | ||
172 | |||
173 | /* 8 bit codewords */ | ||
174 | { 8, 3, 7 }, | ||
175 | { 8, 2, 7 }, | ||
176 | { 8, 5, 6 }, | ||
177 | { 8, 8, 2 }, | ||
178 | { 8, 7, 3 }, | ||
179 | { 8, 5, 0 }, | ||
180 | { 8, 7, 1 }, | ||
181 | { 8, 0, 5 }, | ||
182 | { 8, 8, 1 }, | ||
183 | { 8, 1, 7 }, | ||
184 | { 8, 8, 3 }, | ||
185 | { 8, 7, 4 }, | ||
186 | { 8, 4, 7 }, | ||
187 | { 8, 2, 8 }, | ||
188 | { 8, 6, 6 }, | ||
189 | { 8, 7, 5 }, | ||
190 | { 8, 1, 8 }, | ||
191 | { 8, 3, 8 }, | ||
192 | { 8, 8, 4 }, | ||
193 | { 8, 4, 8 }, | ||
194 | |||
195 | /* 8/9 bit codewords */ | ||
196 | { 8, 5, 7 }, { 8, 5, 7 }, | ||
197 | { 8, 8, 5 }, { 8, 8, 5 }, | ||
198 | { 8, 5, 8 }, { 8, 5, 8 }, | ||
199 | { 9, 7, 6 }, | ||
200 | { 9, 6, 7 }, | ||
201 | |||
202 | /* 9 bit codewords */ | ||
203 | { 9, 9, 2 }, | ||
204 | { 9, 6, 0 }, | ||
205 | { 9, 6, 8 }, | ||
206 | { 9, 9, 3 }, | ||
207 | { 9, 3, 9 }, | ||
208 | { 9, 9, 1 }, | ||
209 | { 9, 2, 9 }, | ||
210 | { 9, 0, 6 }, | ||
211 | { 9, 8, 6 }, | ||
212 | { 9, 9, 4 }, | ||
213 | { 9, 4, 9 }, | ||
214 | { 9, 10, 2 }, | ||
215 | { 9, 1, 9 }, | ||
216 | { 9, 7, 7 }, | ||
217 | { 9, 8, 7 }, | ||
218 | { 9, 9, 5 }, | ||
219 | { 9, 7, 8 }, | ||
220 | { 9, 10, 3 }, | ||
221 | { 9, 5, 9 }, | ||
222 | { 9, 10, 4 }, | ||
223 | { 9, 2, 10 }, | ||
224 | { 9, 10, 1 }, | ||
225 | { 9, 3, 10 }, | ||
226 | { 9, 9, 6 }, | ||
227 | |||
228 | /* 9/10 bit codewords */ | ||
229 | { 9, 6, 9 }, { 9, 6, 9 }, | ||
230 | { 9, 8, 0 }, { 9, 8, 0 }, | ||
231 | { 9, 4, 10 }, { 9, 4, 10 }, | ||
232 | { 9, 7, 0 }, { 9, 7, 0 }, | ||
233 | { 9, 11, 2 }, { 9, 11, 2 }, | ||
234 | { 10, 7, 9 }, | ||
235 | { 10, 11, 3 }, | ||
236 | { 10, 10, 6 }, | ||
237 | { 10, 1, 10 }, | ||
238 | { 10, 11, 1 }, | ||
239 | { 10, 9, 7 }, | ||
240 | |||
241 | /* 10 bit codewords */ | ||
242 | { 10, 0, 7 }, | ||
243 | { 10, 8, 8 }, | ||
244 | { 10, 10, 5 }, | ||
245 | { 10, 3, 11 }, | ||
246 | { 10, 5, 10 }, | ||
247 | { 10, 8, 9 }, | ||
248 | { 10, 11, 5 }, | ||
249 | { 10, 0, 8 }, | ||
250 | { 10, 11, 4 }, | ||
251 | { 10, 2, 11 }, | ||
252 | { 10, 7, 10 }, | ||
253 | { 10, 6, 10 }, | ||
254 | { 10, 10, 7 }, | ||
255 | { 10, 4, 11 }, | ||
256 | { 10, 1, 11 }, | ||
257 | { 10, 12, 2 }, | ||
258 | { 10, 9, 8 }, | ||
259 | { 10, 12, 3 }, | ||
260 | { 10, 11, 6 }, | ||
261 | { 10, 5, 11 }, | ||
262 | { 10, 12, 4 }, | ||
263 | { 10, 11, 7 }, | ||
264 | { 10, 12, 5 }, | ||
265 | { 10, 3, 12 }, | ||
266 | { 10, 6, 11 }, | ||
267 | { 10, 9, 0 }, | ||
268 | { 10, 10, 8 }, | ||
269 | { 10, 10, 0 }, | ||
270 | { 10, 12, 1 }, | ||
271 | { 10, 0, 9 }, | ||
272 | { 10, 4, 12 }, | ||
273 | { 10, 9, 9 }, | ||
274 | |||
275 | /* 10/11/12 bit codewords */ | ||
276 | { 10, 12, 6 }, { 10, 12, 6 }, { 10, 12, 6 }, { 10, 12, 6 }, | ||
277 | { 10, 2, 12 }, { 10, 2, 12 }, { 10, 2, 12 }, { 10, 2, 12 }, | ||
278 | { 10, 8, 10 }, { 10, 8, 10 }, { 10, 8, 10 }, { 10, 8, 10 }, | ||
279 | { 11, 9, 10 }, { 11, 9, 10 }, | ||
280 | { 11, 1, 12 }, { 11, 1, 12 }, | ||
281 | { 11, 11, 8 }, { 11, 11, 8 }, | ||
282 | { 11, 12, 7 }, { 11, 12, 7 }, | ||
283 | { 11, 7, 11 }, { 11, 7, 11 }, | ||
284 | { 11, 5, 12 }, { 11, 5, 12 }, | ||
285 | { 11, 6, 12 }, { 11, 6, 12 }, | ||
286 | { 11, 10, 9 }, { 11, 10, 9 }, | ||
287 | { 11, 8, 11 }, { 11, 8, 11 }, | ||
288 | { 11, 12, 8 }, { 11, 12, 8 }, | ||
289 | { 11, 0, 10 }, { 11, 0, 10 }, | ||
290 | { 11, 7, 12 }, { 11, 7, 12 }, | ||
291 | { 11, 11, 0 }, { 11, 11, 0 }, | ||
292 | { 11, 10, 10 }, { 11, 10, 10 }, | ||
293 | { 11, 11, 9 }, { 11, 11, 9 }, | ||
294 | { 11, 11, 10 }, { 11, 11, 10 }, | ||
295 | { 11, 0, 11 }, { 11, 0, 11 }, | ||
296 | { 11, 11, 11 }, { 11, 11, 11 }, | ||
297 | { 11, 9, 11 }, { 11, 9, 11 }, | ||
298 | { 11, 10, 11 }, { 11, 10, 11 }, | ||
299 | { 11, 12, 0 }, { 11, 12, 0 }, | ||
300 | { 11, 8, 12 }, { 11, 8, 12 }, | ||
301 | { 12, 12, 9 }, | ||
302 | { 12, 10, 12 }, | ||
303 | { 12, 9, 12 }, | ||
304 | { 12, 11, 12 }, | ||
305 | { 12, 12, 11 }, | ||
306 | { 12, 0, 12 }, | ||
307 | { 12, 12, 10 }, | ||
308 | { 12, 12, 12 } | ||
309 | }; | ||
diff --git a/lib/rbcodec/codecs/libfaad/codebook/hcb_11.h b/lib/rbcodec/codecs/libfaad/codebook/hcb_11.h new file mode 100644 index 0000000000..49e97af23f --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/codebook/hcb_11.h | |||
@@ -0,0 +1,412 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | /* 2-step huffman table HCB_11 */ | ||
29 | |||
30 | |||
31 | /* 1st step: 5 bits | ||
32 | * 2^5 = 32 entries | ||
33 | * | ||
34 | * Used to find offset into 2nd step table and number of extra bits to get | ||
35 | */ | ||
36 | static hcb hcb11_1[] ICONST_ATTR_FAAD_LARGE_IRAM = { | ||
37 | /* 4 bits */ | ||
38 | { /* 00000 */ 0, 0 }, | ||
39 | { /* */ 0, 0 }, | ||
40 | { /* 00010 */ 1, 0 }, | ||
41 | { /* */ 1, 0 }, | ||
42 | |||
43 | /* 5 bits */ | ||
44 | { /* 00100 */ 2, 0 }, | ||
45 | { /* 00101 */ 3, 0 }, | ||
46 | { /* 00110 */ 4, 0 }, | ||
47 | { /* 00111 */ 5, 0 }, | ||
48 | { /* 01000 */ 6, 0 }, | ||
49 | { /* 01001 */ 7, 0 }, | ||
50 | |||
51 | /* 6 bits */ | ||
52 | { /* 01010 */ 8, 1 }, | ||
53 | { /* 01011 */ 10, 1 }, | ||
54 | { /* 01100 */ 12, 1 }, | ||
55 | |||
56 | /* 6/7 bits */ | ||
57 | { /* 01101 */ 14, 2 }, | ||
58 | |||
59 | /* 7 bits */ | ||
60 | { /* 01110 */ 18, 2 }, | ||
61 | { /* 01111 */ 22, 2 }, | ||
62 | { /* 10000 */ 26, 2 }, | ||
63 | |||
64 | /* 7/8 bits */ | ||
65 | { /* 10001 */ 30, 3 }, | ||
66 | |||
67 | /* 8 bits */ | ||
68 | { /* 10010 */ 38, 3 }, | ||
69 | { /* 10011 */ 46, 3 }, | ||
70 | { /* 10100 */ 54, 3 }, | ||
71 | { /* 10101 */ 62, 3 }, | ||
72 | { /* 10110 */ 70, 3 }, | ||
73 | { /* 10111 */ 78, 3 }, | ||
74 | |||
75 | /* 8/9 bits */ | ||
76 | { /* 11000 */ 86, 4 }, | ||
77 | |||
78 | /* 9 bits */ | ||
79 | { /* 11001 */ 102, 4 }, | ||
80 | { /* 11010 */ 118, 4 }, | ||
81 | { /* 11011 */ 134, 4 }, | ||
82 | |||
83 | /* 9/10 bits */ | ||
84 | { /* 11100 */ 150, 5 }, | ||
85 | |||
86 | /* 10 bits */ | ||
87 | { /* 11101 */ 182, 5 }, | ||
88 | { /* 11110 */ 214, 5 }, | ||
89 | |||
90 | /* 10/11/12 bits */ | ||
91 | { /* 11111 */ 246, 7 } | ||
92 | }; | ||
93 | |||
94 | /* 2nd step table | ||
95 | * | ||
96 | * Gives size of codeword and actual data (x,y,v,w) | ||
97 | */ | ||
98 | static hcb_2_pair hcb11_2[] ICONST_ATTR_FAAD_LARGE_IRAM = { | ||
99 | /* 4 */ | ||
100 | { 4, 0, 0 }, | ||
101 | { 4, 1, 1 }, | ||
102 | |||
103 | /* 5 */ | ||
104 | { 5, 16, 16 }, | ||
105 | { 5, 1, 0 }, | ||
106 | { 5, 0, 1 }, | ||
107 | { 5, 2, 1 }, | ||
108 | { 5, 1, 2 }, | ||
109 | { 5, 2, 2 }, | ||
110 | |||
111 | /* 6 */ | ||
112 | { 6, 1, 3 }, | ||
113 | { 6, 3, 1 }, | ||
114 | { 6, 3, 2 }, | ||
115 | { 6, 2, 0 }, | ||
116 | { 6, 2, 3 }, | ||
117 | { 6, 0, 2 }, | ||
118 | |||
119 | /* 6/7 */ | ||
120 | { 6, 3, 3 }, { 6, 3, 3 }, | ||
121 | { 7, 4, 1 }, | ||
122 | { 7, 1, 4 }, | ||
123 | |||
124 | /* 7 */ | ||
125 | { 7, 4, 2 }, | ||
126 | { 7, 2, 4 }, | ||
127 | { 7, 4, 3 }, | ||
128 | { 7, 3, 4 }, | ||
129 | { 7, 3, 0 }, | ||
130 | { 7, 0, 3 }, | ||
131 | { 7, 5, 1 }, | ||
132 | { 7, 5, 2 }, | ||
133 | { 7, 2, 5 }, | ||
134 | { 7, 4, 4 }, | ||
135 | { 7, 1, 5 }, | ||
136 | { 7, 5, 3 }, | ||
137 | |||
138 | /* 7/8 */ | ||
139 | { 7, 3, 5 }, { 7, 3, 5 }, | ||
140 | { 7, 5, 4 }, { 7, 5, 4 }, | ||
141 | { 8, 4, 5 }, | ||
142 | { 8, 6, 2 }, | ||
143 | { 8, 2, 6 }, | ||
144 | { 8, 6, 1 }, | ||
145 | |||
146 | /* 8 */ | ||
147 | { 8, 6, 3 }, | ||
148 | { 8, 3, 6 }, | ||
149 | { 8, 1, 6 }, | ||
150 | { 8, 4, 16 }, | ||
151 | { 8, 3, 16 }, | ||
152 | { 8, 16, 5 }, | ||
153 | { 8, 16, 3 }, | ||
154 | { 8, 16, 4 }, | ||
155 | { 8, 6, 4 }, | ||
156 | { 8, 16, 6 }, | ||
157 | { 8, 4, 0 }, | ||
158 | { 8, 4, 6 }, | ||
159 | { 8, 0, 4 }, | ||
160 | { 8, 2, 16 }, | ||
161 | { 8, 5, 5 }, | ||
162 | { 8, 5, 16 }, | ||
163 | { 8, 16, 7 }, | ||
164 | { 8, 16, 2 }, | ||
165 | { 8, 16, 8 }, | ||
166 | { 8, 2, 7 }, | ||
167 | { 8, 7, 2 }, | ||
168 | { 8, 3, 7 }, | ||
169 | { 8, 6, 5 }, | ||
170 | { 8, 5, 6 }, | ||
171 | { 8, 6, 16 }, | ||
172 | { 8, 16, 10 }, | ||
173 | { 8, 7, 3 }, | ||
174 | { 8, 7, 1 }, | ||
175 | { 8, 16, 9 }, | ||
176 | { 8, 7, 16 }, | ||
177 | { 8, 1, 16 }, | ||
178 | { 8, 1, 7 }, | ||
179 | { 8, 4, 7 }, | ||
180 | { 8, 16, 11 }, | ||
181 | { 8, 7, 4 }, | ||
182 | { 8, 16, 12 }, | ||
183 | { 8, 8, 16 }, | ||
184 | { 8, 16, 1 }, | ||
185 | { 8, 6, 6 }, | ||
186 | { 8, 9, 16 }, | ||
187 | { 8, 2, 8 }, | ||
188 | { 8, 5, 7 }, | ||
189 | { 8, 10, 16 }, | ||
190 | { 8, 16, 13 }, | ||
191 | { 8, 8, 3 }, | ||
192 | { 8, 8, 2 }, | ||
193 | { 8, 3, 8 }, | ||
194 | { 8, 5, 0 }, | ||
195 | |||
196 | /* 8/9 */ | ||
197 | { 8, 16, 14 }, { 8, 16, 14 }, | ||
198 | { 8, 11, 16 }, { 8, 11, 16 }, | ||
199 | { 8, 7, 5 }, { 8, 7, 5 }, | ||
200 | { 8, 4, 8 }, { 8, 4, 8 }, | ||
201 | { 8, 6, 7 }, { 8, 6, 7 }, | ||
202 | { 8, 7, 6 }, { 8, 7, 6 }, | ||
203 | { 8, 0, 5 }, { 8, 0, 5 }, | ||
204 | { 9, 8, 4 }, | ||
205 | { 9, 16, 15 }, | ||
206 | |||
207 | /* 9 */ | ||
208 | { 9, 12, 16 }, | ||
209 | { 9, 1, 8 }, | ||
210 | { 9, 8, 1 }, | ||
211 | { 9, 14, 16 }, | ||
212 | { 9, 5, 8 }, | ||
213 | { 9, 13, 16 }, | ||
214 | { 9, 3, 9 }, | ||
215 | { 9, 8, 5 }, | ||
216 | { 9, 7, 7 }, | ||
217 | { 9, 2, 9 }, | ||
218 | { 9, 8, 6 }, | ||
219 | { 9, 9, 2 }, | ||
220 | { 9, 9, 3 }, | ||
221 | { 9, 15, 16 }, | ||
222 | { 9, 4, 9 }, | ||
223 | { 9, 6, 8 }, | ||
224 | { 9, 6, 0 }, | ||
225 | { 9, 9, 4 }, | ||
226 | { 9, 5, 9 }, | ||
227 | { 9, 8, 7 }, | ||
228 | { 9, 7, 8 }, | ||
229 | { 9, 1, 9 }, | ||
230 | { 9, 10, 3 }, | ||
231 | { 9, 0, 6 }, | ||
232 | { 9, 10, 2 }, | ||
233 | { 9, 9, 1 }, | ||
234 | { 9, 9, 5 }, | ||
235 | { 9, 4, 10 }, | ||
236 | { 9, 2, 10 }, | ||
237 | { 9, 9, 6 }, | ||
238 | { 9, 3, 10 }, | ||
239 | { 9, 6, 9 }, | ||
240 | { 9, 10, 4 }, | ||
241 | { 9, 8, 8 }, | ||
242 | { 9, 10, 5 }, | ||
243 | { 9, 9, 7 }, | ||
244 | { 9, 11, 3 }, | ||
245 | { 9, 1, 10 }, | ||
246 | { 9, 7, 0 }, | ||
247 | { 9, 10, 6 }, | ||
248 | { 9, 7, 9 }, | ||
249 | { 9, 3, 11 }, | ||
250 | { 9, 5, 10 }, | ||
251 | { 9, 10, 1 }, | ||
252 | { 9, 4, 11 }, | ||
253 | { 9, 11, 2 }, | ||
254 | { 9, 13, 2 }, | ||
255 | { 9, 6, 10 }, | ||
256 | |||
257 | /* 9/10 */ | ||
258 | { 9, 13, 3 }, { 9, 13, 3 }, | ||
259 | { 9, 2, 11 }, { 9, 2, 11 }, | ||
260 | { 9, 16, 0 }, { 9, 16, 0 }, | ||
261 | { 9, 5, 11 }, { 9, 5, 11 }, | ||
262 | { 9, 11, 5 }, { 9, 11, 5 }, | ||
263 | { 10, 11, 4 }, | ||
264 | { 10, 9, 8 }, | ||
265 | { 10, 7, 10 }, | ||
266 | { 10, 8, 9 }, | ||
267 | { 10, 0, 16 }, | ||
268 | { 10, 4, 13 }, | ||
269 | { 10, 0, 7 }, | ||
270 | { 10, 3, 13 }, | ||
271 | { 10, 11, 6 }, | ||
272 | { 10, 13, 1 }, | ||
273 | { 10, 13, 4 }, | ||
274 | { 10, 12, 3 }, | ||
275 | { 10, 2, 13 }, | ||
276 | { 10, 13, 5 }, | ||
277 | { 10, 8, 10 }, | ||
278 | { 10, 6, 11 }, | ||
279 | { 10, 10, 8 }, | ||
280 | { 10, 10, 7 }, | ||
281 | { 10, 14, 2 }, | ||
282 | { 10, 12, 4 }, | ||
283 | { 10, 1, 11 }, | ||
284 | { 10, 4, 12 }, | ||
285 | |||
286 | /* 10 */ | ||
287 | { 10, 11, 1 }, | ||
288 | { 10, 3, 12 }, | ||
289 | { 10, 1, 13 }, | ||
290 | { 10, 12, 2 }, | ||
291 | { 10, 7, 11 }, | ||
292 | { 10, 3, 14 }, | ||
293 | { 10, 5, 12 }, | ||
294 | { 10, 5, 13 }, | ||
295 | { 10, 14, 4 }, | ||
296 | { 10, 4, 14 }, | ||
297 | { 10, 11, 7 }, | ||
298 | { 10, 14, 3 }, | ||
299 | { 10, 12, 5 }, | ||
300 | { 10, 13, 6 }, | ||
301 | { 10, 12, 6 }, | ||
302 | { 10, 8, 0 }, | ||
303 | { 10, 11, 8 }, | ||
304 | { 10, 2, 12 }, | ||
305 | { 10, 9, 9 }, | ||
306 | { 10, 14, 5 }, | ||
307 | { 10, 6, 13 }, | ||
308 | { 10, 10, 10 }, | ||
309 | { 10, 15, 2 }, | ||
310 | { 10, 8, 11 }, | ||
311 | { 10, 9, 10 }, | ||
312 | { 10, 14, 6 }, | ||
313 | { 10, 10, 9 }, | ||
314 | { 10, 5, 14 }, | ||
315 | { 10, 11, 9 }, | ||
316 | { 10, 14, 1 }, | ||
317 | { 10, 2, 14 }, | ||
318 | { 10, 6, 12 }, | ||
319 | { 10, 1, 12 }, | ||
320 | { 10, 13, 8 }, | ||
321 | { 10, 0, 8 }, | ||
322 | { 10, 13, 7 }, | ||
323 | { 10, 7, 12 }, | ||
324 | { 10, 12, 7 }, | ||
325 | { 10, 7, 13 }, | ||
326 | { 10, 15, 3 }, | ||
327 | { 10, 12, 1 }, | ||
328 | { 10, 6, 14 }, | ||
329 | { 10, 2, 15 }, | ||
330 | { 10, 15, 5 }, | ||
331 | { 10, 15, 4 }, | ||
332 | { 10, 1, 14 }, | ||
333 | { 10, 9, 11 }, | ||
334 | { 10, 4, 15 }, | ||
335 | { 10, 14, 7 }, | ||
336 | { 10, 8, 13 }, | ||
337 | { 10, 13, 9 }, | ||
338 | { 10, 8, 12 }, | ||
339 | { 10, 5, 15 }, | ||
340 | { 10, 3, 15 }, | ||
341 | { 10, 10, 11 }, | ||
342 | { 10, 11, 10 }, | ||
343 | { 10, 12, 8 }, | ||
344 | { 10, 15, 6 }, | ||
345 | { 10, 15, 7 }, | ||
346 | { 10, 8, 14 }, | ||
347 | { 10, 15, 1 }, | ||
348 | { 10, 7, 14 }, | ||
349 | { 10, 9, 0 }, | ||
350 | { 10, 0, 9 }, | ||
351 | |||
352 | /* 10/11/12 */ | ||
353 | { 10, 9, 13 }, { 10, 9, 13 }, { 10, 9, 13 }, { 10, 9, 13 }, | ||
354 | { 10, 9, 12 }, { 10, 9, 12 }, { 10, 9, 12 }, { 10, 9, 12 }, | ||
355 | { 10, 12, 9 }, { 10, 12, 9 }, { 10, 12, 9 }, { 10, 12, 9 }, | ||
356 | { 10, 14, 8 }, { 10, 14, 8 }, { 10, 14, 8 }, { 10, 14, 8 }, | ||
357 | { 10, 10, 13 }, { 10, 10, 13 }, { 10, 10, 13 }, { 10, 10, 13 }, | ||
358 | { 10, 14, 9 }, { 10, 14, 9 }, { 10, 14, 9 }, { 10, 14, 9 }, | ||
359 | { 10, 12, 10 }, { 10, 12, 10 }, { 10, 12, 10 }, { 10, 12, 10 }, | ||
360 | { 10, 6, 15 }, { 10, 6, 15 }, { 10, 6, 15 }, { 10, 6, 15 }, | ||
361 | { 10, 7, 15 }, { 10, 7, 15 }, { 10, 7, 15 }, { 10, 7, 15 }, | ||
362 | |||
363 | { 11, 9, 14 }, { 11, 9, 14 }, | ||
364 | { 11, 15, 8 }, { 11, 15, 8 }, | ||
365 | { 11, 11, 11 }, { 11, 11, 11 }, | ||
366 | { 11, 11, 14 }, { 11, 11, 14 }, | ||
367 | { 11, 1, 15 }, { 11, 1, 15 }, | ||
368 | { 11, 10, 12 }, { 11, 10, 12 }, | ||
369 | { 11, 10, 14 }, { 11, 10, 14 }, | ||
370 | { 11, 13, 11 }, { 11, 13, 11 }, | ||
371 | { 11, 13, 10 }, { 11, 13, 10 }, | ||
372 | { 11, 11, 13 }, { 11, 11, 13 }, | ||
373 | { 11, 11, 12 }, { 11, 11, 12 }, | ||
374 | { 11, 8, 15 }, { 11, 8, 15 }, | ||
375 | { 11, 14, 11 }, { 11, 14, 11 }, | ||
376 | { 11, 13, 12 }, { 11, 13, 12 }, | ||
377 | { 11, 12, 13 }, { 11, 12, 13 }, | ||
378 | { 11, 15, 9 }, { 11, 15, 9 }, | ||
379 | { 11, 14, 10 }, { 11, 14, 10 }, | ||
380 | { 11, 10, 0 }, { 11, 10, 0 }, | ||
381 | { 11, 12, 11 }, { 11, 12, 11 }, | ||
382 | { 11, 9, 15 }, { 11, 9, 15 }, | ||
383 | { 11, 0, 10 }, { 11, 0, 10 }, | ||
384 | { 11, 12, 12 }, { 11, 12, 12 }, | ||
385 | { 11, 11, 0 }, { 11, 11, 0 }, | ||
386 | { 11, 12, 14 }, { 11, 12, 14 }, | ||
387 | { 11, 10, 15 }, { 11, 10, 15 }, | ||
388 | { 11, 13, 13 }, { 11, 13, 13 }, | ||
389 | { 11, 0, 13 }, { 11, 0, 13 }, | ||
390 | { 11, 14, 12 }, { 11, 14, 12 }, | ||
391 | { 11, 15, 10 }, { 11, 15, 10 }, | ||
392 | { 11, 15, 11 }, { 11, 15, 11 }, | ||
393 | { 11, 11, 15 }, { 11, 11, 15 }, | ||
394 | { 11, 14, 13 }, { 11, 14, 13 }, | ||
395 | { 11, 13, 0 }, { 11, 13, 0 }, | ||
396 | { 11, 0, 11 }, { 11, 0, 11 }, | ||
397 | { 11, 13, 14 }, { 11, 13, 14 }, | ||
398 | { 11, 15, 12 }, { 11, 15, 12 }, | ||
399 | { 11, 15, 13 }, { 11, 15, 13 }, | ||
400 | { 11, 12, 15 }, { 11, 12, 15 }, | ||
401 | { 11, 14, 0 }, { 11, 14, 0 }, | ||
402 | { 11, 14, 14 }, { 11, 14, 14 }, | ||
403 | { 11, 13, 15 }, { 11, 13, 15 }, | ||
404 | { 11, 12, 0 }, { 11, 12, 0 }, | ||
405 | { 11, 14, 15 }, { 11, 14, 15 }, | ||
406 | { 12, 0, 14 }, | ||
407 | { 12, 0, 12 }, | ||
408 | { 12, 15, 14 }, | ||
409 | { 12, 15, 0 }, | ||
410 | { 12, 0, 15 }, | ||
411 | { 12, 15, 15 } | ||
412 | }; | ||
diff --git a/lib/rbcodec/codecs/libfaad/codebook/hcb_2.h b/lib/rbcodec/codecs/libfaad/codebook/hcb_2.h new file mode 100644 index 0000000000..15e7d57084 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/codebook/hcb_2.h | |||
@@ -0,0 +1,182 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | /* 2-step huffman table HCB_2 */ | ||
29 | |||
30 | |||
31 | /* 1st step: 5 bits | ||
32 | * 2^5 = 32 entries | ||
33 | * | ||
34 | * Used to find offset into 2nd step table and number of extra bits to get | ||
35 | */ | ||
36 | static hcb hcb2_1[] ICONST_ATTR_FAAD_LARGE_IRAM = { | ||
37 | { /* 00000 */ 0, 0 }, | ||
38 | { /* */ 0, 0 }, | ||
39 | { /* */ 0, 0 }, | ||
40 | { /* */ 0, 0 }, | ||
41 | { /* 00100 */ 1, 0 }, | ||
42 | { /* */ 1, 0 }, | ||
43 | { /* 00110 */ 2, 0 }, | ||
44 | { /* 00111 */ 3, 0 }, | ||
45 | { /* 01000 */ 4, 0 }, | ||
46 | { /* 01001 */ 5, 0 }, | ||
47 | { /* 01010 */ 6, 0 }, | ||
48 | { /* 01011 */ 7, 0 }, | ||
49 | { /* 01100 */ 8, 0 }, | ||
50 | |||
51 | /* 6 bit codewords */ | ||
52 | { /* 01101 */ 9, 1 }, | ||
53 | { /* 01110 */ 11, 1 }, | ||
54 | { /* 01111 */ 13, 1 }, | ||
55 | { /* 10000 */ 15, 1 }, | ||
56 | { /* 10001 */ 17, 1 }, | ||
57 | { /* 10010 */ 19, 1 }, | ||
58 | { /* 10011 */ 21, 1 }, | ||
59 | { /* 10100 */ 23, 1 }, | ||
60 | { /* 10101 */ 25, 1 }, | ||
61 | { /* 10110 */ 27, 1 }, | ||
62 | { /* 10111 */ 29, 1 }, | ||
63 | { /* 11000 */ 31, 1 }, | ||
64 | |||
65 | /* 7 bit codewords */ | ||
66 | { /* 11001 */ 33, 2 }, | ||
67 | { /* 11010 */ 37, 2 }, | ||
68 | { /* 11011 */ 41, 2 }, | ||
69 | |||
70 | /* 7/8 bit codewords */ | ||
71 | { /* 11100 */ 45, 3 }, | ||
72 | |||
73 | /* 8 bit codewords */ | ||
74 | { /* 11101 */ 53, 3 }, | ||
75 | { /* 11110 */ 61, 3 }, | ||
76 | |||
77 | /* 8/9 bit codewords */ | ||
78 | { /* 11111 */ 69, 4 } | ||
79 | }; | ||
80 | |||
81 | /* 2nd step table | ||
82 | * | ||
83 | * Gives size of codeword and actual data (x,y,v,w) | ||
84 | */ | ||
85 | static hcb_2_quad hcb2_2[] ICONST_ATTR_FAAD_LARGE_IRAM = { | ||
86 | /* 3 bit codeword */ | ||
87 | { 3, 0, 0, 0, 0 }, | ||
88 | |||
89 | /* 4 bit codeword */ | ||
90 | { 4, 1, 0, 0, 0 }, | ||
91 | |||
92 | /* 5 bit codewords */ | ||
93 | { 5, -1, 0, 0, 0 }, | ||
94 | { 5, 0, 0, 0, 1 }, | ||
95 | { 5, 0, 0, -1, 0 }, | ||
96 | { 5, 0, 0, 0, -1 }, | ||
97 | { 5, 0, -1, 0, 0 }, | ||
98 | { 5, 0, 0, 1, 0 }, | ||
99 | { 5, 0, 1, 0, 0 }, | ||
100 | |||
101 | /* 6 bit codewords */ | ||
102 | { 6, 0, -1, 1, 0 }, | ||
103 | { 6, -1, 1, 0, 0 }, | ||
104 | { 6, 0, 1, -1, 0 }, | ||
105 | { 6, 0, 0, 1, -1 }, | ||
106 | { 6, 0, 1, 0, -1 }, | ||
107 | { 6, 0, 0, -1, 1 }, | ||
108 | { 6, -1, 0, 0, -1 }, | ||
109 | { 6, 1, -1, 0, 0 }, | ||
110 | { 6, 1, 0, -1, 0 }, | ||
111 | { 6, -1, -1, 0, 0 }, | ||
112 | { 6, 0, 0, -1, -1 }, | ||
113 | { 6, 1, 0, 1, 0 }, | ||
114 | { 6, 1, 0, 0, 1 }, | ||
115 | { 6, 0, -1, 0, 1 }, | ||
116 | { 6, -1, 0, 1, 0 }, | ||
117 | { 6, 0, 1, 0, 1 }, | ||
118 | { 6, 0, -1, -1, 0 }, | ||
119 | { 6, -1, 0, 0, 1 }, | ||
120 | { 6, 0, -1, 0, -1 }, | ||
121 | { 6, -1, 0, -1, 0 }, | ||
122 | { 6, 1, 1, 0, 0 }, | ||
123 | { 6, 0, 1, 1, 0 }, | ||
124 | { 6, 0, 0, 1, 1 }, | ||
125 | { 6, 1, 0, 0, -1 }, | ||
126 | |||
127 | /* 7 bit codewords */ | ||
128 | { 7, 0, 1, -1, 1 }, | ||
129 | { 7, 1, 0, -1, 1 }, | ||
130 | { 7, -1, 1, -1, 0 }, | ||
131 | { 7, 0, -1, 1, -1 }, | ||
132 | { 7, 1, -1, 1, 0 }, | ||
133 | { 7, 1, 1, 0, -1 }, | ||
134 | { 7, 1, 0, 1, 1 }, | ||
135 | { 7, -1, 1, 1, 0 }, | ||
136 | { 7, 0, -1, -1, 1 }, | ||
137 | { 7, 1, 1, 1, 0 }, | ||
138 | { 7, -1, 0, 1, -1 }, | ||
139 | { 7, -1, -1, -1, 0 }, | ||
140 | |||
141 | /* 7/8 bit codewords */ | ||
142 | { 7, -1, 0, -1, 1 }, { 7, -1, 0, -1, 1 }, | ||
143 | { 7, 1, -1, -1, 0 }, { 7, 1, -1, -1, 0 }, | ||
144 | { 7, 1, 1, -1, 0 }, { 7, 1, 1, -1, 0 }, | ||
145 | { 8, 1, -1, 0, 1 }, | ||
146 | { 8, -1, 1, 0, -1 }, | ||
147 | |||
148 | /* 8 bit codewords */ | ||
149 | { 8, -1, -1, 1, 0 }, | ||
150 | { 8, -1, 0, 1, 1 }, | ||
151 | { 8, -1, -1, 0, 1 }, | ||
152 | { 8, -1, -1, 0, -1 }, | ||
153 | { 8, 0, -1, -1, -1 }, | ||
154 | { 8, 1, 0, 1, -1 }, | ||
155 | { 8, 1, 0, -1, -1 }, | ||
156 | { 8, 0, 1, -1, -1 }, | ||
157 | { 8, 0, 1, 1, 1 }, | ||
158 | { 8, -1, 1, 0, 1 }, | ||
159 | { 8, -1, 0, -1, -1 }, | ||
160 | { 8, 0, 1, 1, -1 }, | ||
161 | { 8, 1, -1, 0, -1 }, | ||
162 | { 8, 0, -1, 1, 1 }, | ||
163 | { 8, 1, 1, 0, 1 }, | ||
164 | { 8, 1, -1, 1, -1 }, | ||
165 | |||
166 | /* 8/9 bit codewords */ | ||
167 | { 8, -1, 1, -1, 1 }, { 8, -1, 1, -1, 1 }, | ||
168 | { 9, 1, -1, -1, 1 }, | ||
169 | { 9, -1, -1, -1, -1 }, | ||
170 | { 9, -1, 1, 1, -1 }, | ||
171 | { 9, -1, 1, 1, 1 }, | ||
172 | { 9, 1, 1, 1, 1 }, | ||
173 | { 9, -1, -1, 1, -1 }, | ||
174 | { 9, 1, -1, 1, 1 }, | ||
175 | { 9, -1, 1, -1, -1 }, | ||
176 | { 9, -1, -1, 1, 1 }, | ||
177 | { 9, 1, 1, -1, -1 }, | ||
178 | { 9, 1, -1, -1, -1 }, | ||
179 | { 9, -1, -1, -1, 1 }, | ||
180 | { 9, 1, 1, -1, 1 }, | ||
181 | { 9, 1, 1, 1, -1 } | ||
182 | }; | ||
diff --git a/lib/rbcodec/codecs/libfaad/codebook/hcb_3.h b/lib/rbcodec/codecs/libfaad/codebook/hcb_3.h new file mode 100644 index 0000000000..3b12fdff60 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/codebook/hcb_3.h | |||
@@ -0,0 +1,193 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | /* Binary search huffman table HCB_3 */ | ||
29 | |||
30 | |||
31 | static hcb_bin_quad hcb3[] ICONST_ATTR_FAAD_LARGE_IRAM = { | ||
32 | { /* 0 */ 0, { 1, 2, 0, 0 } }, | ||
33 | { /* 1 */ 1, { 0, 0, 0, 0 } }, /* 0 */ | ||
34 | { /* 2 */ 0, { 1, 2, 0, 0 } }, | ||
35 | { /* 3 */ 0, { 2, 3, 0, 0 } }, | ||
36 | { /* 4 */ 0, { 3, 4, 0, 0 } }, | ||
37 | { /* 5 */ 0, { 4, 5, 0, 0 } }, | ||
38 | { /* 6 */ 0, { 5, 6, 0, 0 } }, | ||
39 | { /* 7 */ 0, { 6, 7, 0, 0 } }, | ||
40 | { /* 8 */ 0, { 7, 8, 0, 0 } }, | ||
41 | { /* 9 */ 1, { 1, 0, 0, 0 } }, /* 1000 */ | ||
42 | { /* 10 */ 1, { 0, 0, 0, 1 } }, /* 1001 */ | ||
43 | { /* 11 */ 1, { 0, 1, 0, 0 } }, /* 1010 */ | ||
44 | { /* 12 */ 1, { 0, 0, 1, 0 } }, /* 1011 */ | ||
45 | { /* 13 */ 0, { 4, 5, 0, 0 } }, | ||
46 | { /* 14 */ 0, { 5, 6, 0, 0 } }, | ||
47 | { /* 15 */ 0, { 6, 7, 0, 0 } }, | ||
48 | { /* 16 */ 0, { 7, 8, 0, 0 } }, | ||
49 | { /* 17 */ 1, { 1, 1, 0, 0 } }, | ||
50 | { /* 18 */ 1, { 0, 0, 1, 1 } }, | ||
51 | { /* 19 */ 0, { 6, 7, 0, 0 } }, | ||
52 | { /* 20 */ 0, { 7, 8, 0, 0 } }, | ||
53 | { /* 21 */ 0, { 8, 9, 0, 0 } }, | ||
54 | { /* 22 */ 0, { 9, 10, 0, 0 } }, | ||
55 | { /* 23 */ 0, { 10, 11, 0, 0 } }, | ||
56 | { /* 24 */ 0, { 11, 12, 0, 0 } }, | ||
57 | { /* 25 */ 1, { 0, 1, 1, 0 } }, /* 110100 */ | ||
58 | { /* 26 */ 1, { 0, 1, 0, 1 } }, /* 110101 */ | ||
59 | { /* 27 */ 1, { 1, 0, 1, 0 } }, /* 110110 */ | ||
60 | { /* 28 */ 1, { 0, 1, 1, 1 } }, /* 110111 */ | ||
61 | { /* 29 */ 1, { 1, 0, 0, 1 } }, /* 111000 */ | ||
62 | { /* 30 */ 1, { 1, 1, 1, 0 } }, /* 111001 */ | ||
63 | { /* 31 */ 0, { 6, 7, 0, 0 } }, | ||
64 | { /* 32 */ 0, { 7, 8, 0, 0 } }, | ||
65 | { /* 33 */ 0, { 8, 9, 0, 0 } }, | ||
66 | { /* 34 */ 0, { 9, 10, 0, 0 } }, | ||
67 | { /* 35 */ 0, { 10, 11, 0, 0 } }, | ||
68 | { /* 36 */ 0, { 11, 12, 0, 0 } }, | ||
69 | { /* 37 */ 1, { 1, 1, 1, 1 } }, /* 1110100 */ | ||
70 | { /* 38 */ 1, { 1, 0, 1, 1 } }, /* 1110101 */ | ||
71 | { /* 39 */ 1, { 1, 1, 0, 1 } }, /* 1110110 */ | ||
72 | { /* 40 */ 0, { 9, 10, 0, 0 } }, | ||
73 | { /* 41 */ 0, { 10, 11, 0, 0 } }, | ||
74 | { /* 42 */ 0, { 11, 12, 0, 0 } }, | ||
75 | { /* 43 */ 0, { 12, 13, 0, 0 } }, | ||
76 | { /* 44 */ 0, { 13, 14, 0, 0 } }, | ||
77 | { /* 45 */ 0, { 14, 15, 0, 0 } }, | ||
78 | { /* 46 */ 0, { 15, 16, 0, 0 } }, | ||
79 | { /* 47 */ 0, { 16, 17, 0, 0 } }, | ||
80 | { /* 48 */ 0, { 17, 18, 0, 0 } }, | ||
81 | { /* 49 */ 1, { 2, 0, 0, 0 } }, /* 11101110 */ | ||
82 | { /* 50 */ 1, { 0, 0, 0, 2 } }, /* 11101111 */ | ||
83 | { /* 51 */ 1, { 0, 0, 1, 2 } }, /* 11110000 */ | ||
84 | { /* 52 */ 1, { 2, 1, 0, 0 } }, /* 11110001 */ | ||
85 | { /* 53 */ 1, { 1, 2, 1, 0 } }, /* 11110010 */ | ||
86 | { /* 54 */ 0, { 13, 14, 0, 0 } }, | ||
87 | { /* 55 */ 0, { 14, 15, 0, 0 } }, | ||
88 | { /* 56 */ 0, { 15, 16, 0, 0 } }, | ||
89 | { /* 57 */ 0, { 16, 17, 0, 0 } }, | ||
90 | { /* 58 */ 0, { 17, 18, 0, 0 } }, | ||
91 | { /* 59 */ 0, { 18, 19, 0, 0 } }, | ||
92 | { /* 60 */ 0, { 19, 20, 0, 0 } }, | ||
93 | { /* 61 */ 0, { 20, 21, 0, 0 } }, | ||
94 | { /* 62 */ 0, { 21, 22, 0, 0 } }, | ||
95 | { /* 63 */ 0, { 22, 23, 0, 0 } }, | ||
96 | { /* 64 */ 0, { 23, 24, 0, 0 } }, | ||
97 | { /* 65 */ 0, { 24, 25, 0, 0 } }, | ||
98 | { /* 66 */ 0, { 25, 26, 0, 0 } }, | ||
99 | { /* 67 */ 1, { 0, 0, 2, 1 } }, | ||
100 | { /* 68 */ 1, { 0, 1, 2, 1 } }, | ||
101 | { /* 69 */ 1, { 1, 2, 0, 0 } }, | ||
102 | { /* 70 */ 1, { 0, 1, 1, 2 } }, | ||
103 | { /* 71 */ 1, { 2, 1, 1, 0 } }, | ||
104 | { /* 72 */ 1, { 0, 0, 2, 0 } }, | ||
105 | { /* 73 */ 1, { 0, 2, 1, 0 } }, | ||
106 | { /* 74 */ 1, { 0, 1, 2, 0 } }, | ||
107 | { /* 75 */ 1, { 0, 2, 0, 0 } }, | ||
108 | { /* 76 */ 1, { 0, 1, 0, 2 } }, | ||
109 | { /* 77 */ 1, { 2, 0, 1, 0 } }, | ||
110 | { /* 78 */ 1, { 1, 2, 1, 1 } }, | ||
111 | { /* 79 */ 1, { 0, 2, 1, 1 } }, | ||
112 | { /* 80 */ 1, { 1, 1, 2, 0 } }, | ||
113 | { /* 81 */ 1, { 1, 1, 2, 1 } }, | ||
114 | { /* 82 */ 0, { 11, 12, 0, 0 } }, | ||
115 | { /* 83 */ 0, { 12, 13, 0, 0 } }, | ||
116 | { /* 84 */ 0, { 13, 14, 0, 0 } }, | ||
117 | { /* 85 */ 0, { 14, 15, 0, 0 } }, | ||
118 | { /* 86 */ 0, { 15, 16, 0, 0 } }, | ||
119 | { /* 87 */ 0, { 16, 17, 0, 0 } }, | ||
120 | { /* 88 */ 0, { 17, 18, 0, 0 } }, | ||
121 | { /* 89 */ 0, { 18, 19, 0, 0 } }, | ||
122 | { /* 90 */ 0, { 19, 20, 0, 0 } }, | ||
123 | { /* 91 */ 0, { 20, 21, 0, 0 } }, | ||
124 | { /* 92 */ 0, { 21, 22, 0, 0 } }, | ||
125 | { /* 93 */ 1, { 1, 2, 0, 1 } }, /* 1111101010 */ | ||
126 | { /* 94 */ 1, { 1, 0, 2, 0 } }, /* 1111101011 */ | ||
127 | { /* 95 */ 1, { 1, 0, 2, 1 } }, /* 1111101100 */ | ||
128 | { /* 96 */ 1, { 0, 2, 0, 1 } }, /* 1111101101 */ | ||
129 | { /* 97 */ 1, { 2, 1, 1, 1 } }, /* 1111101110 */ | ||
130 | { /* 98 */ 1, { 1, 1, 1, 2 } }, /* 1111101111 */ | ||
131 | { /* 99 */ 1, { 2, 1, 0, 1 } }, /* 1111110000 */ | ||
132 | { /* 00 */ 1, { 1, 0, 1, 2 } }, /* 1111110001 */ | ||
133 | { /* 01 */ 1, { 0, 0, 2, 2 } }, /* 1111110010 */ | ||
134 | { /* 02 */ 1, { 0, 1, 2, 2 } }, /* 1111110011 */ | ||
135 | { /* 03 */ 1, { 2, 2, 1, 0 } }, /* 1111110100 */ | ||
136 | { /* 04 */ 1, { 1, 2, 2, 0 } }, /* 1111110101 */ | ||
137 | { /* 05 */ 1, { 1, 0, 0, 2 } }, /* 1111110110 */ | ||
138 | { /* 06 */ 1, { 2, 0, 0, 1 } }, /* 1111110111 */ | ||
139 | { /* 07 */ 1, { 0, 2, 2, 1 } }, /* 1111111000 */ | ||
140 | { /* 08 */ 0, { 7, 8, 0, 0 } }, | ||
141 | { /* 09 */ 0, { 8, 9, 0, 0 } }, | ||
142 | { /* 10 */ 0, { 9, 10, 0, 0 } }, | ||
143 | { /* 11 */ 0, { 10, 11, 0, 0 } }, | ||
144 | { /* 12 */ 0, { 11, 12, 0, 0 } }, | ||
145 | { /* 13 */ 0, { 12, 13, 0, 0 } }, | ||
146 | { /* 14 */ 0, { 13, 14, 0, 0 } }, | ||
147 | { /* 15 */ 1, { 2, 2, 0, 0 } }, /* 11111110010 */ | ||
148 | { /* 16 */ 1, { 1, 2, 2, 1 } }, /* 11111110011 */ | ||
149 | { /* 17 */ 1, { 1, 1, 0, 2 } }, /* 11111110100 */ | ||
150 | { /* 18 */ 1, { 2, 0, 1, 1 } }, /* 11111110101 */ | ||
151 | { /* 19 */ 1, { 1, 1, 2, 2 } }, /* 11111110110 */ | ||
152 | { /* 20 */ 1, { 2, 2, 1, 1 } }, /* 11111110111 */ | ||
153 | { /* 21 */ 1, { 0, 2, 2, 0 } }, /* 11111111000 */ | ||
154 | { /* 22 */ 1, { 0, 2, 1, 2 } }, /* 11111111001 */ | ||
155 | { /* 23 */ 0, { 6, 7, 0, 0 } }, | ||
156 | { /* 24 */ 0, { 7, 8, 0, 0 } }, | ||
157 | { /* 25 */ 0, { 8, 9, 0, 0 } }, | ||
158 | { /* 26 */ 0, { 9, 10, 0, 0 } }, | ||
159 | { /* 27 */ 0, { 10, 11, 0, 0 } }, | ||
160 | { /* 28 */ 0, { 11, 12, 0, 0 } }, | ||
161 | { /* 29 */ 1, { 1, 0, 2, 2 } }, /* 111111110100 */ | ||
162 | { /* 30 */ 1, { 2, 2, 0, 1 } }, /* 111111110101 */ | ||
163 | { /* 31 */ 1, { 2, 1, 2, 0 } }, /* 111111110110 */ | ||
164 | { /* 32 */ 1, { 2, 2, 2, 0 } }, /* 111111110111 */ | ||
165 | { /* 33 */ 1, { 0, 2, 2, 2 } }, /* 111111111000 */ | ||
166 | { /* 34 */ 1, { 2, 2, 2, 1 } }, /* 111111111001 */ | ||
167 | { /* 35 */ 1, { 2, 1, 2, 1 } }, /* 111111111010 */ | ||
168 | { /* 36 */ 1, { 1, 2, 1, 2 } }, /* 111111111011 */ | ||
169 | { /* 37 */ 1, { 1, 2, 2, 2 } }, /* 111111111100 */ | ||
170 | { /* 38 */ 0, { 3, 4, 0, 0 } }, | ||
171 | { /* 39 */ 0, { 4, 5, 0, 0 } }, | ||
172 | { /* 40 */ 0, { 5, 6, 0, 0 } }, | ||
173 | { /* 41 */ 1, { 0, 2, 0, 2 } }, /* 1111111111010 */ | ||
174 | { /* 42 */ 1, { 2, 0, 2, 0 } }, /* 1111111111011 */ | ||
175 | { /* 43 */ 1, { 1, 2, 0, 2 } }, /* 1111111111100 */ | ||
176 | { /* 44 */ 0, { 3, 4, 0, 0 } }, | ||
177 | { /* 45 */ 0, { 4, 5, 0, 0 } }, | ||
178 | { /* 46 */ 0, { 5, 6, 0, 0 } }, | ||
179 | { /* 47 */ 1, { 2, 0, 2, 1 } }, /* 11111111111010 */ | ||
180 | { /* 48 */ 1, { 2, 1, 1, 2 } }, /* 11111111111011 */ | ||
181 | { /* 49 */ 1, { 2, 1, 0, 2 } }, /* 11111111111100 */ | ||
182 | { /* 50 */ 0, { 3, 4, 0, 0 } }, | ||
183 | { /* 51 */ 0, { 4, 5, 0, 0 } }, | ||
184 | { /* 52 */ 0, { 5, 6, 0, 0 } }, | ||
185 | { /* 53 */ 1, { 2, 2, 2, 2 } }, /* 111111111111010 */ | ||
186 | { /* 54 */ 1, { 2, 2, 1, 2 } }, /* 111111111111011 */ | ||
187 | { /* 55 */ 1, { 2, 1, 2, 2 } }, /* 111111111111100 */ | ||
188 | { /* 56 */ 1, { 2, 0, 1, 2 } }, /* 111111111111101 */ | ||
189 | { /* 57 */ 1, { 2, 0, 0, 2 } }, /* 111111111111110 */ | ||
190 | { /* 58 */ 0, { 1, 2, 0, 0 } }, | ||
191 | { /* 59 */ 1, { 2, 2, 0, 2 } }, /* 1111111111111110 */ | ||
192 | { /* 60 */ 1, { 2, 0, 2, 2 } } /* 1111111111111111 */ | ||
193 | }; | ||
diff --git a/lib/rbcodec/codecs/libfaad/codebook/hcb_4.h b/lib/rbcodec/codecs/libfaad/codebook/hcb_4.h new file mode 100644 index 0000000000..67397e1fb0 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/codebook/hcb_4.h | |||
@@ -0,0 +1,196 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | /* 2-step huffman table HCB_4 */ | ||
29 | |||
30 | |||
31 | /* 1st step: 5 bits | ||
32 | * 2^5 = 32 entries | ||
33 | * | ||
34 | * Used to find offset into 2nd step table and number of extra bits to get | ||
35 | */ | ||
36 | static hcb hcb4_1[] ICONST_ATTR_FAAD_LARGE_IRAM = { | ||
37 | /* 4 bit codewords */ | ||
38 | { /* 00000 */ 0, 0 }, | ||
39 | { /* */ 0, 0 }, | ||
40 | { /* 00010 */ 1, 0 }, | ||
41 | { /* */ 1, 0 }, | ||
42 | { /* 00100 */ 2, 0 }, | ||
43 | { /* */ 2, 0 }, | ||
44 | { /* 00110 */ 3, 0 }, | ||
45 | { /* */ 3, 0 }, | ||
46 | { /* 01000 */ 4, 0 }, | ||
47 | { /* */ 4, 0 }, | ||
48 | { /* 01010 */ 5, 0 }, | ||
49 | { /* */ 5, 0 }, | ||
50 | { /* 01100 */ 6, 0 }, | ||
51 | { /* */ 6, 0 }, | ||
52 | { /* 01110 */ 7, 0 }, | ||
53 | { /* */ 7, 0 }, | ||
54 | { /* 10000 */ 8, 0 }, | ||
55 | { /* */ 8, 0 }, | ||
56 | { /* 10010 */ 9, 0 }, | ||
57 | { /* */ 9, 0 }, | ||
58 | |||
59 | /* 5 bit codewords */ | ||
60 | { /* 10100 */ 10, 0 }, | ||
61 | { /* 10101 */ 11, 0 }, | ||
62 | { /* 10110 */ 12, 0 }, | ||
63 | { /* 10111 */ 13, 0 }, | ||
64 | { /* 11000 */ 14, 0 }, | ||
65 | { /* 11001 */ 15, 0 }, | ||
66 | |||
67 | /* 7 bit codewords */ | ||
68 | { /* 11010 */ 16, 2 }, | ||
69 | { /* 11011 */ 20, 2 }, | ||
70 | |||
71 | /* 7/8 bit codewords */ | ||
72 | { /* 11100 */ 24, 3 }, | ||
73 | |||
74 | /* 8 bit codewords */ | ||
75 | { /* 11101 */ 32, 3 }, | ||
76 | |||
77 | /* 8/9 bit codewords */ | ||
78 | { /* 11110 */ 40, 4 }, | ||
79 | |||
80 | /* 9/10/11/12 bit codewords */ | ||
81 | { /* 11111 */ 56, 7 } | ||
82 | }; | ||
83 | |||
84 | /* 2nd step table | ||
85 | * | ||
86 | * Gives size of codeword and actual data (x,y,v,w) | ||
87 | */ | ||
88 | static hcb_2_quad hcb4_2[] ICONST_ATTR_FAAD_LARGE_IRAM = { | ||
89 | /* 4 bit codewords */ | ||
90 | { 4, 1, 1, 1, 1 }, | ||
91 | { 4, 0, 1, 1, 1 }, | ||
92 | { 4, 1, 1, 0, 1 }, | ||
93 | { 4, 1, 1, 1, 0 }, | ||
94 | { 4, 1, 0, 1, 1 }, | ||
95 | { 4, 1, 0, 0, 0 }, | ||
96 | { 4, 1, 1, 0, 0 }, | ||
97 | { 4, 0, 0, 0, 0 }, | ||
98 | { 4, 0, 0, 1, 1 }, | ||
99 | { 4, 1, 0, 1, 0 }, | ||
100 | |||
101 | /* 5 bit codewords */ | ||
102 | { 5, 1, 0, 0, 1 }, | ||
103 | { 5, 0, 1, 1, 0 }, | ||
104 | { 5, 0, 0, 0, 1 }, | ||
105 | { 5, 0, 1, 0, 1 }, | ||
106 | { 5, 0, 0, 1, 0 }, | ||
107 | { 5, 0, 1, 0, 0 }, | ||
108 | |||
109 | /* 7 bit codewords */ | ||
110 | /* first 5 bits: 11010 */ | ||
111 | { 7, 2, 1, 1, 1 }, | ||
112 | { 7, 1, 1, 2, 1 }, | ||
113 | { 7, 1, 2, 1, 1 }, | ||
114 | { 7, 1, 1, 1, 2 }, | ||
115 | /* first 5 bits: 11011 */ | ||
116 | { 7, 2, 1, 1, 0 }, | ||
117 | { 7, 2, 1, 0, 1 }, | ||
118 | { 7, 1, 2, 1, 0 }, | ||
119 | { 7, 2, 0, 1, 1 }, | ||
120 | |||
121 | /* 7/8 bit codewords */ | ||
122 | /* first 5 bits: 11100 */ | ||
123 | { 7, 0, 1, 2, 1 }, { 7, 0, 1, 2, 1 }, | ||
124 | { 8, 0, 1, 1, 2 }, | ||
125 | { 8, 1, 1, 2, 0 }, | ||
126 | { 8, 0, 2, 1, 1 }, | ||
127 | { 8, 1, 0, 1, 2 }, | ||
128 | { 8, 1, 2, 0, 1 }, | ||
129 | { 8, 1, 1, 0, 2 }, | ||
130 | |||
131 | /* 8 bit codewords */ | ||
132 | { 8, 1, 0, 2, 1 }, | ||
133 | { 8, 2, 1, 0, 0 }, | ||
134 | { 8, 2, 0, 1, 0 }, | ||
135 | { 8, 1, 2, 0, 0 }, | ||
136 | { 8, 2, 0, 0, 1 }, | ||
137 | { 8, 0, 1, 0, 2 }, | ||
138 | { 8, 0, 2, 1, 0 }, | ||
139 | { 8, 0, 0, 1, 2 }, | ||
140 | |||
141 | /* 8/9 bit codewords */ | ||
142 | { 8, 0, 1, 2, 0 }, { 8, 0, 1, 2, 0 }, | ||
143 | { 8, 0, 2, 0, 1 }, { 8, 0, 2, 0, 1 }, | ||
144 | { 8, 1, 0, 0, 2 }, { 8, 1, 0, 0, 2 }, | ||
145 | { 8, 0, 0, 2, 1 }, { 8, 0, 0, 2, 1 }, | ||
146 | { 8, 1, 0, 2, 0 }, { 8, 1, 0, 2, 0 }, | ||
147 | { 8, 2, 0, 0, 0 }, { 8, 2, 0, 0, 0 }, | ||
148 | { 8, 0, 0, 0, 2 }, { 8, 0, 0, 0, 2 }, | ||
149 | { 9, 0, 2, 0, 0 }, | ||
150 | { 9, 0, 0, 2, 0 }, | ||
151 | |||
152 | /* 9/10/11 bit codewords */ | ||
153 | /* 9 bit codewords repeated 2^3 = 8 times */ | ||
154 | { 9, 1, 2, 2, 1 }, { 9, 1, 2, 2, 1 }, { 9, 1, 2, 2, 1 }, { 9, 1, 2, 2, 1 }, | ||
155 | { 9, 1, 2, 2, 1 }, { 9, 1, 2, 2, 1 }, { 9, 1, 2, 2, 1 }, { 9, 1, 2, 2, 1 }, | ||
156 | { 9, 2, 2, 1, 1 }, { 9, 2, 2, 1, 1 }, { 9, 2, 2, 1, 1 }, { 9, 2, 2, 1, 1 }, | ||
157 | { 9, 2, 2, 1, 1 }, { 9, 2, 2, 1, 1 }, { 9, 2, 2, 1, 1 }, { 9, 2, 2, 1, 1 }, | ||
158 | { 9, 2, 1, 2, 1 }, { 9, 2, 1, 2, 1 }, { 9, 2, 1, 2, 1 }, { 9, 2, 1, 2, 1 }, | ||
159 | { 9, 2, 1, 2, 1 }, { 9, 2, 1, 2, 1 }, { 9, 2, 1, 2, 1 }, { 9, 2, 1, 2, 1 }, | ||
160 | { 9, 1, 1, 2, 2 }, { 9, 1, 1, 2, 2 }, { 9, 1, 1, 2, 2 }, { 9, 1, 1, 2, 2 }, | ||
161 | { 9, 1, 1, 2, 2 }, { 9, 1, 1, 2, 2 }, { 9, 1, 1, 2, 2 }, { 9, 1, 1, 2, 2 }, | ||
162 | { 9, 1, 2, 1, 2 }, { 9, 1, 2, 1, 2 }, { 9, 1, 2, 1, 2 }, { 9, 1, 2, 1, 2 }, | ||
163 | { 9, 1, 2, 1, 2 }, { 9, 1, 2, 1, 2 }, { 9, 1, 2, 1, 2 }, { 9, 1, 2, 1, 2 }, | ||
164 | { 9, 2, 1, 1, 2 }, { 9, 2, 1, 1, 2 }, { 9, 2, 1, 1, 2 }, { 9, 2, 1, 1, 2 }, | ||
165 | { 9, 2, 1, 1, 2 }, { 9, 2, 1, 1, 2 }, { 9, 2, 1, 1, 2 }, { 9, 2, 1, 1, 2 }, | ||
166 | /* 10 bit codewords repeated 2^2 = 4 times */ | ||
167 | { 10, 1, 2, 2, 0 }, { 10, 1, 2, 2, 0 }, { 10, 1, 2, 2, 0 }, { 10, 1, 2, 2, 0 }, | ||
168 | { 10, 2, 2, 1, 0 }, { 10, 2, 2, 1, 0 }, { 10, 2, 2, 1, 0 }, { 10, 2, 2, 1, 0 }, | ||
169 | { 10, 2, 1, 2, 0 }, { 10, 2, 1, 2, 0 }, { 10, 2, 1, 2, 0 }, { 10, 2, 1, 2, 0 }, | ||
170 | { 10, 0, 2, 2, 1 }, { 10, 0, 2, 2, 1 }, { 10, 0, 2, 2, 1 }, { 10, 0, 2, 2, 1 }, | ||
171 | { 10, 0, 1, 2, 2 }, { 10, 0, 1, 2, 2 }, { 10, 0, 1, 2, 2 }, { 10, 0, 1, 2, 2 }, | ||
172 | { 10, 2, 2, 0, 1 }, { 10, 2, 2, 0, 1 }, { 10, 2, 2, 0, 1 }, { 10, 2, 2, 0, 1 }, | ||
173 | { 10, 0, 2, 1, 2 }, { 10, 0, 2, 1, 2 }, { 10, 0, 2, 1, 2 }, { 10, 0, 2, 1, 2 }, | ||
174 | { 10, 2, 0, 2, 1 }, { 10, 2, 0, 2, 1 }, { 10, 2, 0, 2, 1 }, { 10, 2, 0, 2, 1 }, | ||
175 | { 10, 1, 0, 2, 2 }, { 10, 1, 0, 2, 2 }, { 10, 1, 0, 2, 2 }, { 10, 1, 0, 2, 2 }, | ||
176 | { 10, 2, 2, 2, 1 }, { 10, 2, 2, 2, 1 }, { 10, 2, 2, 2, 1 }, { 10, 2, 2, 2, 1 }, | ||
177 | { 10, 1, 2, 0, 2 }, { 10, 1, 2, 0, 2 }, { 10, 1, 2, 0, 2 }, { 10, 1, 2, 0, 2 }, | ||
178 | { 10, 2, 0, 1, 2 }, { 10, 2, 0, 1, 2 }, { 10, 2, 0, 1, 2 }, { 10, 2, 0, 1, 2 }, | ||
179 | { 10, 2, 1, 0, 2 }, { 10, 2, 1, 0, 2 }, { 10, 2, 1, 0, 2 }, { 10, 2, 1, 0, 2 }, | ||
180 | { 10, 1, 2, 2, 2 }, { 10, 1, 2, 2, 2 }, { 10, 1, 2, 2, 2 }, { 10, 1, 2, 2, 2 }, | ||
181 | /* 11 bit codewords repeated 2^1 = 2 times */ | ||
182 | { 11, 2, 1, 2, 2 }, { 11, 2, 1, 2, 2 }, | ||
183 | { 11, 2, 2, 1, 2 }, { 11, 2, 2, 1, 2 }, | ||
184 | { 11, 0, 2, 2, 0 }, { 11, 0, 2, 2, 0 }, | ||
185 | { 11, 2, 2, 0, 0 }, { 11, 2, 2, 0, 0 }, | ||
186 | { 11, 0, 0, 2, 2 }, { 11, 0, 0, 2, 2 }, | ||
187 | { 11, 2, 0, 2, 0 }, { 11, 2, 0, 2, 0 }, | ||
188 | { 11, 0, 2, 0, 2 }, { 11, 0, 2, 0, 2 }, | ||
189 | { 11, 2, 0, 0, 2 }, { 11, 2, 0, 0, 2 }, | ||
190 | { 11, 2, 2, 2, 2 }, { 11, 2, 2, 2, 2 }, | ||
191 | { 11, 0, 2, 2, 2 }, { 11, 0, 2, 2, 2 }, | ||
192 | { 11, 2, 2, 2, 0 }, { 11, 2, 2, 2, 0 }, | ||
193 | /* 12 bit codewords */ | ||
194 | { 12, 2, 2, 0, 2 }, | ||
195 | { 12, 2, 0, 2, 2 }, | ||
196 | }; | ||
diff --git a/lib/rbcodec/codecs/libfaad/codebook/hcb_5.h b/lib/rbcodec/codecs/libfaad/codebook/hcb_5.h new file mode 100644 index 0000000000..0143482901 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/codebook/hcb_5.h | |||
@@ -0,0 +1,193 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | /* Binary search huffman table HCB_5 */ | ||
29 | |||
30 | |||
31 | static hcb_bin_pair hcb5[] ICONST_ATTR_FAAD_LARGE_IRAM = { | ||
32 | { /* 0 */ 0, { 1, 2 } }, | ||
33 | { /* 1 */ 1, { 0, 0 } }, /* 0 */ | ||
34 | { /* 2 */ 0, { 1, 2 } }, | ||
35 | { /* 3 */ 0, { 2, 3 } }, | ||
36 | { /* 4 */ 0, { 3, 4 } }, | ||
37 | { /* 5 */ 0, { 4, 5 } }, | ||
38 | { /* 6 */ 0, { 5, 6 } }, | ||
39 | { /* 7 */ 0, { 6, 7 } }, | ||
40 | { /* 8 */ 0, { 7, 8 } }, | ||
41 | { /* 9 */ 1, { -1, 0 } }, /* 1000 */ | ||
42 | { /* 10 */ 1, { 1, 0 } }, /* 1001 */ | ||
43 | { /* 11 */ 1, { 0, 1 } }, /* 1010 */ | ||
44 | { /* 12 */ 1, { 0, -1 } }, /* 1011 */ | ||
45 | { /* 13 */ 0, { 4, 5 } }, | ||
46 | { /* 14 */ 0, { 5, 6 } }, | ||
47 | { /* 15 */ 0, { 6, 7 } }, | ||
48 | { /* 16 */ 0, { 7, 8 } }, | ||
49 | { /* 17 */ 1, { 1, -1 } }, | ||
50 | { /* 18 */ 1, { -1, 1 } }, | ||
51 | { /* 19 */ 1, { -1, -1 } }, | ||
52 | { /* 20 */ 1, { 1, 1 } }, | ||
53 | { /* 21 */ 0, { 4, 5 } }, | ||
54 | { /* 22 */ 0, { 5, 6 } }, | ||
55 | { /* 23 */ 0, { 6, 7 } }, | ||
56 | { /* 24 */ 0, { 7, 8 } }, | ||
57 | { /* 25 */ 0, { 8, 9 } }, | ||
58 | { /* 26 */ 0, { 9, 10 } }, | ||
59 | { /* 27 */ 0, { 10, 11 } }, | ||
60 | { /* 28 */ 0, { 11, 12 } }, | ||
61 | { /* 29 */ 0, { 12, 13 } }, | ||
62 | { /* 30 */ 0, { 13, 14 } }, | ||
63 | { /* 31 */ 0, { 14, 15 } }, | ||
64 | { /* 32 */ 0, { 15, 16 } }, | ||
65 | { /* 33 */ 1, { -2, 0 } }, | ||
66 | { /* 34 */ 1, { 0, 2 } }, | ||
67 | { /* 35 */ 1, { 2, 0 } }, | ||
68 | { /* 36 */ 1, { 0, -2 } }, | ||
69 | { /* 37 */ 0, { 12, 13 } }, | ||
70 | { /* 38 */ 0, { 13, 14 } }, | ||
71 | { /* 39 */ 0, { 14, 15 } }, | ||
72 | { /* 40 */ 0, { 15, 16 } }, | ||
73 | { /* 41 */ 0, { 16, 17 } }, | ||
74 | { /* 42 */ 0, { 17, 18 } }, | ||
75 | { /* 43 */ 0, { 18, 19 } }, | ||
76 | { /* 44 */ 0, { 19, 20 } }, | ||
77 | { /* 45 */ 0, { 20, 21 } }, | ||
78 | { /* 46 */ 0, { 21, 22 } }, | ||
79 | { /* 47 */ 0, { 22, 23 } }, | ||
80 | { /* 48 */ 0, { 23, 24 } }, | ||
81 | { /* 49 */ 1, { -2, -1 } }, | ||
82 | { /* 50 */ 1, { 2, 1 } }, | ||
83 | { /* 51 */ 1, { -1, -2 } }, | ||
84 | { /* 52 */ 1, { 1, 2 } }, | ||
85 | { /* 53 */ 1, { -2, 1 } }, | ||
86 | { /* 54 */ 1, { 2, -1 } }, | ||
87 | { /* 55 */ 1, { -1, 2 } }, | ||
88 | { /* 56 */ 1, { 1, -2 } }, | ||
89 | { /* 57 */ 1, { -3, 0 } }, | ||
90 | { /* 58 */ 1, { 3, 0 } }, | ||
91 | { /* 59 */ 1, { 0, -3 } }, | ||
92 | { /* 60 */ 1, { 0, 3 } }, | ||
93 | { /* 61 */ 0, { 12, 13 } }, | ||
94 | { /* 62 */ 0, { 13, 14 } }, | ||
95 | { /* 63 */ 0, { 14, 15 } }, | ||
96 | { /* 64 */ 0, { 15, 16 } }, | ||
97 | { /* 65 */ 0, { 16, 17 } }, | ||
98 | { /* 66 */ 0, { 17, 18 } }, | ||
99 | { /* 67 */ 0, { 18, 19 } }, | ||
100 | { /* 68 */ 0, { 19, 20 } }, | ||
101 | { /* 69 */ 0, { 20, 21 } }, | ||
102 | { /* 70 */ 0, { 21, 22 } }, | ||
103 | { /* 71 */ 0, { 22, 23 } }, | ||
104 | { /* 72 */ 0, { 23, 24 } }, | ||
105 | { /* 73 */ 1, { -3, -1 } }, | ||
106 | { /* 74 */ 1, { 1, 3 } }, | ||
107 | { /* 75 */ 1, { 3, 1 } }, | ||
108 | { /* 76 */ 1, { -1, -3 } }, | ||
109 | { /* 77 */ 1, { -3, 1 } }, | ||
110 | { /* 78 */ 1, { 3, -1 } }, | ||
111 | { /* 79 */ 1, { 1, -3 } }, | ||
112 | { /* 80 */ 1, { -1, 3 } }, | ||
113 | { /* 81 */ 1, { -2, 2 } }, | ||
114 | { /* 82 */ 1, { 2, 2 } }, | ||
115 | { /* 83 */ 1, { -2, -2 } }, | ||
116 | { /* 84 */ 1, { 2, -2 } }, | ||
117 | { /* 85 */ 0, { 12, 13 } }, | ||
118 | { /* 86 */ 0, { 13, 14 } }, | ||
119 | { /* 87 */ 0, { 14, 15 } }, | ||
120 | { /* 88 */ 0, { 15, 16 } }, | ||
121 | { /* 89 */ 0, { 16, 17 } }, | ||
122 | { /* 90 */ 0, { 17, 18 } }, | ||
123 | { /* 91 */ 0, { 18, 19 } }, | ||
124 | { /* 92 */ 0, { 19, 20 } }, | ||
125 | { /* 93 */ 0, { 20, 21 } }, | ||
126 | { /* 94 */ 0, { 21, 22 } }, | ||
127 | { /* 95 */ 0, { 22, 23 } }, | ||
128 | { /* 96 */ 0, { 23, 24 } }, | ||
129 | { /* 97 */ 1, { -3, -2 } }, | ||
130 | { /* 98 */ 1, { 3, -2 } }, | ||
131 | { /* 99 */ 1, { -2, 3 } }, | ||
132 | { /* 00 */ 1, { 2, -3 } }, | ||
133 | { /* 01 */ 1, { 3, 2 } }, | ||
134 | { /* 02 */ 1, { 2, 3 } }, | ||
135 | { /* 03 */ 1, { -3, 2 } }, | ||
136 | { /* 04 */ 1, { -2, -3 } }, | ||
137 | { /* 05 */ 1, { 0, -4 } }, | ||
138 | { /* 06 */ 1, { -4, 0 } }, | ||
139 | { /* 07 */ 1, { 4, 1 } }, | ||
140 | { /* 08 */ 1, { 4, 0 } }, | ||
141 | { /* 09 */ 0, { 12, 13 } }, | ||
142 | { /* 10 */ 0, { 13, 14 } }, | ||
143 | { /* 11 */ 0, { 14, 15 } }, | ||
144 | { /* 12 */ 0, { 15, 16 } }, | ||
145 | { /* 13 */ 0, { 16, 17 } }, | ||
146 | { /* 14 */ 0, { 17, 18 } }, | ||
147 | { /* 15 */ 0, { 18, 19 } }, | ||
148 | { /* 16 */ 0, { 19, 20 } }, | ||
149 | { /* 17 */ 0, { 20, 21 } }, | ||
150 | { /* 18 */ 0, { 21, 22 } }, | ||
151 | { /* 19 */ 0, { 22, 23 } }, | ||
152 | { /* 20 */ 0, { 23, 24 } }, | ||
153 | { /* 21 */ 1, { -4, -1 } }, | ||
154 | { /* 22 */ 1, { 0, 4 } }, | ||
155 | { /* 23 */ 1, { 4, -1 } }, | ||
156 | { /* 24 */ 1, { -1, -4 } }, | ||
157 | { /* 25 */ 1, { 1, 4 } }, | ||
158 | { /* 26 */ 1, { -1, 4 } }, | ||
159 | { /* 27 */ 1, { -4, 1 } }, | ||
160 | { /* 28 */ 1, { 1, -4 } }, | ||
161 | { /* 29 */ 1, { 3, -3 } }, | ||
162 | { /* 30 */ 1, { -3, -3 } }, | ||
163 | { /* 31 */ 1, { -3, 3 } }, | ||
164 | { /* 32 */ 1, { -2, 4 } }, | ||
165 | { /* 33 */ 1, { -4, -2 } }, | ||
166 | { /* 34 */ 1, { 4, 2 } }, | ||
167 | { /* 35 */ 1, { 2, -4 } }, | ||
168 | { /* 36 */ 1, { 2, 4 } }, | ||
169 | { /* 37 */ 1, { 3, 3 } }, | ||
170 | { /* 38 */ 1, { -4, 2 } }, | ||
171 | { /* 39 */ 0, { 6, 7 } }, | ||
172 | { /* 40 */ 0, { 7, 8 } }, | ||
173 | { /* 41 */ 0, { 8, 9 } }, | ||
174 | { /* 42 */ 0, { 9, 10 } }, | ||
175 | { /* 43 */ 0, { 10, 11 } }, | ||
176 | { /* 44 */ 0, { 11, 12 } }, | ||
177 | { /* 45 */ 1, { -2, -4 } }, | ||
178 | { /* 46 */ 1, { 4, -2 } }, | ||
179 | { /* 47 */ 1, { 3, -4 } }, | ||
180 | { /* 48 */ 1, { -4, -3 } }, | ||
181 | { /* 49 */ 1, { -4, 3 } }, | ||
182 | { /* 50 */ 1, { 3, 4 } }, | ||
183 | { /* 51 */ 1, { -3, 4 } }, | ||
184 | { /* 52 */ 1, { 4, 3 } }, | ||
185 | { /* 53 */ 1, { 4, -3 } }, | ||
186 | { /* 54 */ 1, { -3, -4 } }, | ||
187 | { /* 55 */ 0, { 2, 3 } }, | ||
188 | { /* 56 */ 0, { 3, 4 } }, | ||
189 | { /* 57 */ 1, { 4, -4 } }, | ||
190 | { /* 58 */ 1, { -4, 4 } }, | ||
191 | { /* 59 */ 1, { 4, 4 } }, | ||
192 | { /* 60 */ 1, { -4, -4 } } | ||
193 | }; | ||
diff --git a/lib/rbcodec/codecs/libfaad/codebook/hcb_6.h b/lib/rbcodec/codecs/libfaad/codebook/hcb_6.h new file mode 100644 index 0000000000..9988133552 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/codebook/hcb_6.h | |||
@@ -0,0 +1,179 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | /* 2-step huffman table HCB_6 */ | ||
29 | |||
30 | |||
31 | /* 1st step: 5 bits | ||
32 | * 2^5 = 32 entries | ||
33 | * | ||
34 | * Used to find offset into 2nd step table and number of extra bits to get | ||
35 | */ | ||
36 | static hcb hcb6_1[] ICONST_ATTR = { | ||
37 | /* 4 bit codewords */ | ||
38 | { /* 00000 */ 0, 0 }, | ||
39 | { /* */ 0, 0 }, | ||
40 | { /* 00010 */ 1, 0 }, | ||
41 | { /* */ 1, 0 }, | ||
42 | { /* 00100 */ 2, 0 }, | ||
43 | { /* */ 2, 0 }, | ||
44 | { /* 00110 */ 3, 0 }, | ||
45 | { /* */ 3, 0 }, | ||
46 | { /* 01000 */ 4, 0 }, | ||
47 | { /* */ 4, 0 }, | ||
48 | { /* 01010 */ 5, 0 }, | ||
49 | { /* */ 5, 0 }, | ||
50 | { /* 01100 */ 6, 0 }, | ||
51 | { /* */ 6, 0 }, | ||
52 | { /* 01110 */ 7, 0 }, | ||
53 | { /* */ 7, 0 }, | ||
54 | { /* 10000 */ 8, 0 }, | ||
55 | { /* */ 8, 0 }, | ||
56 | |||
57 | /* 6 bit codewords */ | ||
58 | { /* 10010 */ 9, 1 }, | ||
59 | { /* 10011 */ 11, 1 }, | ||
60 | { /* 10100 */ 13, 1 }, | ||
61 | { /* 10101 */ 15, 1 }, | ||
62 | { /* 10110 */ 17, 1 }, | ||
63 | { /* 10111 */ 19, 1 }, | ||
64 | { /* 11000 */ 21, 1 }, | ||
65 | { /* 11001 */ 23, 1 }, | ||
66 | |||
67 | /* 7 bit codewords */ | ||
68 | { /* 11010 */ 25, 2 }, | ||
69 | { /* 11011 */ 29, 2 }, | ||
70 | { /* 11100 */ 33, 2 }, | ||
71 | |||
72 | /* 7/8 bit codewords */ | ||
73 | { /* 11101 */ 37, 3 }, | ||
74 | |||
75 | /* 8/9 bit codewords */ | ||
76 | { /* 11110 */ 45, 4 }, | ||
77 | |||
78 | /* 9/10/11 bit codewords */ | ||
79 | { /* 11111 */ 61, 6 } | ||
80 | }; | ||
81 | |||
82 | /* 2nd step table | ||
83 | * | ||
84 | * Gives size of codeword and actual data (x,y,v,w) | ||
85 | */ | ||
86 | static hcb_2_pair hcb6_2[] ICONST_ATTR = { | ||
87 | /* 4 bit codewords */ | ||
88 | { 4, 0, 0 }, | ||
89 | { 4, 1, 0 }, | ||
90 | { 4, 0, -1 }, | ||
91 | { 4, 0, 1 }, | ||
92 | { 4, -1, 0 }, | ||
93 | { 4, 1, 1 }, | ||
94 | { 4, -1, 1 }, | ||
95 | { 4, 1, -1 }, | ||
96 | { 4, -1, -1 }, | ||
97 | |||
98 | /* 6 bit codewords */ | ||
99 | { 6, 2, -1 }, | ||
100 | { 6, 2, 1 }, | ||
101 | { 6, -2, 1 }, | ||
102 | { 6, -2, -1 }, | ||
103 | { 6, -2, 0 }, | ||
104 | { 6, -1, 2 }, | ||
105 | { 6, 2, 0 }, | ||
106 | { 6, 1, -2 }, | ||
107 | { 6, 1, 2 }, | ||
108 | { 6, 0, -2 }, | ||
109 | { 6, -1, -2 }, | ||
110 | { 6, 0, 2 }, | ||
111 | { 6, 2, -2 }, | ||
112 | { 6, -2, 2 }, | ||
113 | { 6, -2, -2 }, | ||
114 | { 6, 2, 2 }, | ||
115 | |||
116 | /* 7 bit codewords */ | ||
117 | { 7, -3, 1 }, | ||
118 | { 7, 3, 1 }, | ||
119 | { 7, 3, -1 }, | ||
120 | { 7, -1, 3 }, | ||
121 | { 7, -3, -1 }, | ||
122 | { 7, 1, 3 }, | ||
123 | { 7, 1, -3 }, | ||
124 | { 7, -1, -3 }, | ||
125 | { 7, 3, 0 }, | ||
126 | { 7, -3, 0 }, | ||
127 | { 7, 0, -3 }, | ||
128 | { 7, 0, 3 }, | ||
129 | |||
130 | /* 7/8 bit codewords */ | ||
131 | { 7, 3, 2 }, { 7, 3, 2 }, | ||
132 | { 8, -3, -2 }, | ||
133 | { 8, -2, 3 }, | ||
134 | { 8, 2, 3 }, | ||
135 | { 8, 3, -2 }, | ||
136 | { 8, 2, -3 }, | ||
137 | { 8, -2, -3 }, | ||
138 | |||
139 | /* 8 bit codewords */ | ||
140 | { 8, -3, 2 }, { 8, -3, 2 }, | ||
141 | { 8, 3, 3 }, { 8, 3, 3 }, | ||
142 | { 9, 3, -3 }, | ||
143 | { 9, -3, -3 }, | ||
144 | { 9, -3, 3 }, | ||
145 | { 9, 1, -4 }, | ||
146 | { 9, -1, -4 }, | ||
147 | { 9, 4, 1 }, | ||
148 | { 9, -4, 1 }, | ||
149 | { 9, -4, -1 }, | ||
150 | { 9, 1, 4 }, | ||
151 | { 9, 4, -1 }, | ||
152 | { 9, -1, 4 }, | ||
153 | { 9, 0, -4 }, | ||
154 | |||
155 | /* 9/10/11 bit codewords */ | ||
156 | { 9, -4, 2 }, { 9, -4, 2 }, { 9, -4, 2 }, { 9, -4, 2 }, | ||
157 | { 9, -4, -2 }, { 9, -4, -2 }, { 9, -4, -2 }, { 9, -4, -2 }, | ||
158 | { 9, 2, 4 }, { 9, 2, 4 }, { 9, 2, 4 }, { 9, 2, 4 }, | ||
159 | { 9, -2, -4 }, { 9, -2, -4 }, { 9, -2, -4 }, { 9, -2, -4 }, | ||
160 | { 9, -4, 0 }, { 9, -4, 0 }, { 9, -4, 0 }, { 9, -4, 0 }, | ||
161 | { 9, 4, 2 }, { 9, 4, 2 }, { 9, 4, 2 }, { 9, 4, 2 }, | ||
162 | { 9, 4, -2 }, { 9, 4, -2 }, { 9, 4, -2 }, { 9, 4, -2 }, | ||
163 | { 9, -2, 4 }, { 9, -2, 4 }, { 9, -2, 4 }, { 9, -2, 4 }, | ||
164 | { 9, 4, 0 }, { 9, 4, 0 }, { 9, 4, 0 }, { 9, 4, 0 }, | ||
165 | { 9, 2, -4 }, { 9, 2, -4 }, { 9, 2, -4 }, { 9, 2, -4 }, | ||
166 | { 9, 0, 4 }, { 9, 0, 4 }, { 9, 0, 4 }, { 9, 0, 4 }, | ||
167 | { 10, -3, -4 }, { 10, -3, -4 }, | ||
168 | { 10, -3, 4 }, { 10, -3, 4 }, | ||
169 | { 10, 3, -4 }, { 10, 3, -4 }, | ||
170 | { 10, 4, -3 }, { 10, 4, -3 }, | ||
171 | { 10, 3, 4 }, { 10, 3, 4 }, | ||
172 | { 10, 4, 3 }, { 10, 4, 3 }, | ||
173 | { 10, -4, 3 }, { 10, -4, 3 }, | ||
174 | { 10, -4, -3 }, { 10, -4, -3 }, | ||
175 | { 11, 4, 4 }, | ||
176 | { 11, -4, 4 }, | ||
177 | { 11, -4, -4 }, | ||
178 | { 11, 4, -4 } | ||
179 | }; | ||
diff --git a/lib/rbcodec/codecs/libfaad/codebook/hcb_7.h b/lib/rbcodec/codecs/libfaad/codebook/hcb_7.h new file mode 100644 index 0000000000..3b378dc5cd --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/codebook/hcb_7.h | |||
@@ -0,0 +1,159 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | /* Binary search huffman table HCB_7 */ | ||
29 | |||
30 | |||
31 | static hcb_bin_pair hcb7[] ICONST_ATTR_FAAD_LARGE_IRAM = { | ||
32 | { /* 0 */ 0, { 1, 2 } }, | ||
33 | { /* 1 */ 1, { 0, 0 } }, | ||
34 | { /* 2 */ 0, { 1, 2 } }, | ||
35 | { /* 3 */ 0, { 2, 3 } }, | ||
36 | { /* 4 */ 0, { 3, 4 } }, | ||
37 | { /* 5 */ 1, { 1, 0 } }, | ||
38 | { /* 6 */ 1, { 0, 1 } }, | ||
39 | { /* 7 */ 0, { 2, 3 } }, | ||
40 | { /* 8 */ 0, { 3, 4 } }, | ||
41 | { /* 9 */ 1, { 1, 1 } }, | ||
42 | { /* 10 */ 0, { 3, 4 } }, | ||
43 | { /* 11 */ 0, { 4, 5 } }, | ||
44 | { /* 12 */ 0, { 5, 6 } }, | ||
45 | { /* 13 */ 0, { 6, 7 } }, | ||
46 | { /* 14 */ 0, { 7, 8 } }, | ||
47 | { /* 15 */ 0, { 8, 9 } }, | ||
48 | { /* 16 */ 0, { 9, 10 } }, | ||
49 | { /* 17 */ 0, { 10, 11 } }, | ||
50 | { /* 18 */ 0, { 11, 12 } }, | ||
51 | { /* 19 */ 1, { 2, 1 } }, | ||
52 | { /* 20 */ 1, { 1, 2 } }, | ||
53 | { /* 21 */ 1, { 2, 0 } }, | ||
54 | { /* 22 */ 1, { 0, 2 } }, | ||
55 | { /* 23 */ 0, { 8, 9 } }, | ||
56 | { /* 24 */ 0, { 9, 10 } }, | ||
57 | { /* 25 */ 0, { 10, 11 } }, | ||
58 | { /* 26 */ 0, { 11, 12 } }, | ||
59 | { /* 27 */ 0, { 12, 13 } }, | ||
60 | { /* 28 */ 0, { 13, 14 } }, | ||
61 | { /* 29 */ 0, { 14, 15 } }, | ||
62 | { /* 30 */ 0, { 15, 16 } }, | ||
63 | { /* 31 */ 1, { 3, 1 } }, | ||
64 | { /* 32 */ 1, { 1, 3 } }, | ||
65 | { /* 33 */ 1, { 2, 2 } }, | ||
66 | { /* 34 */ 1, { 3, 0 } }, | ||
67 | { /* 35 */ 1, { 0, 3 } }, | ||
68 | { /* 36 */ 0, { 11, 12 } }, | ||
69 | { /* 37 */ 0, { 12, 13 } }, | ||
70 | { /* 38 */ 0, { 13, 14 } }, | ||
71 | { /* 39 */ 0, { 14, 15 } }, | ||
72 | { /* 40 */ 0, { 15, 16 } }, | ||
73 | { /* 41 */ 0, { 16, 17 } }, | ||
74 | { /* 42 */ 0, { 17, 18 } }, | ||
75 | { /* 43 */ 0, { 18, 19 } }, | ||
76 | { /* 44 */ 0, { 19, 20 } }, | ||
77 | { /* 45 */ 0, { 20, 21 } }, | ||
78 | { /* 46 */ 0, { 21, 22 } }, | ||
79 | { /* 47 */ 1, { 2, 3 } }, | ||
80 | { /* 48 */ 1, { 3, 2 } }, | ||
81 | { /* 49 */ 1, { 1, 4 } }, | ||
82 | { /* 50 */ 1, { 4, 1 } }, | ||
83 | { /* 51 */ 1, { 1, 5 } }, | ||
84 | { /* 52 */ 1, { 5, 1 } }, | ||
85 | { /* 53 */ 1, { 3, 3 } }, | ||
86 | { /* 54 */ 1, { 2, 4 } }, | ||
87 | { /* 55 */ 1, { 0, 4 } }, | ||
88 | { /* 56 */ 1, { 4, 0 } }, | ||
89 | { /* 57 */ 0, { 12, 13 } }, | ||
90 | { /* 58 */ 0, { 13, 14 } }, | ||
91 | { /* 59 */ 0, { 14, 15 } }, | ||
92 | { /* 60 */ 0, { 15, 16 } }, | ||
93 | { /* 61 */ 0, { 16, 17 } }, | ||
94 | { /* 62 */ 0, { 17, 18 } }, | ||
95 | { /* 63 */ 0, { 18, 19 } }, | ||
96 | { /* 64 */ 0, { 19, 20 } }, | ||
97 | { /* 65 */ 0, { 20, 21 } }, | ||
98 | { /* 66 */ 0, { 21, 22 } }, | ||
99 | { /* 67 */ 0, { 22, 23 } }, | ||
100 | { /* 68 */ 0, { 23, 24 } }, | ||
101 | { /* 69 */ 1, { 4, 2 } }, | ||
102 | { /* 70 */ 1, { 2, 5 } }, | ||
103 | { /* 71 */ 1, { 5, 2 } }, | ||
104 | { /* 72 */ 1, { 0, 5 } }, | ||
105 | { /* 73 */ 1, { 6, 1 } }, | ||
106 | { /* 74 */ 1, { 5, 0 } }, | ||
107 | { /* 75 */ 1, { 1, 6 } }, | ||
108 | { /* 76 */ 1, { 4, 3 } }, | ||
109 | { /* 77 */ 1, { 3, 5 } }, | ||
110 | { /* 78 */ 1, { 3, 4 } }, | ||
111 | { /* 79 */ 1, { 5, 3 } }, | ||
112 | { /* 80 */ 1, { 2, 6 } }, | ||
113 | { /* 81 */ 1, { 6, 2 } }, | ||
114 | { /* 82 */ 1, { 1, 7 } }, | ||
115 | { /* 83 */ 0, { 10, 11 } }, | ||
116 | { /* 84 */ 0, { 11, 12 } }, | ||
117 | { /* 85 */ 0, { 12, 13 } }, | ||
118 | { /* 86 */ 0, { 13, 14 } }, | ||
119 | { /* 87 */ 0, { 14, 15 } }, | ||
120 | { /* 88 */ 0, { 15, 16 } }, | ||
121 | { /* 89 */ 0, { 16, 17 } }, | ||
122 | { /* 90 */ 0, { 17, 18 } }, | ||
123 | { /* 91 */ 0, { 18, 19 } }, | ||
124 | { /* 92 */ 0, { 19, 20 } }, | ||
125 | { /* 93 */ 1, { 3, 6 } }, | ||
126 | { /* 94 */ 1, { 0, 6 } }, | ||
127 | { /* 95 */ 1, { 6, 0 } }, | ||
128 | { /* 96 */ 1, { 4, 4 } }, | ||
129 | { /* 97 */ 1, { 7, 1 } }, | ||
130 | { /* 98 */ 1, { 4, 5 } }, | ||
131 | { /* 99 */ 1, { 7, 2 } }, | ||
132 | { /* 00 */ 1, { 5, 4 } }, | ||
133 | { /* 01 */ 1, { 6, 3 } }, | ||
134 | { /* 02 */ 1, { 2, 7 } }, | ||
135 | { /* 03 */ 1, { 7, 3 } }, | ||
136 | { /* 04 */ 1, { 6, 4 } }, | ||
137 | { /* 05 */ 1, { 5, 5 } }, | ||
138 | { /* 06 */ 1, { 4, 6 } }, | ||
139 | { /* 07 */ 1, { 3, 7 } }, | ||
140 | { /* 08 */ 0, { 5, 6 } }, | ||
141 | { /* 09 */ 0, { 6, 7 } }, | ||
142 | { /* 10 */ 0, { 7, 8 } }, | ||
143 | { /* 11 */ 0, { 8, 9 } }, | ||
144 | { /* 12 */ 0, { 9, 10 } }, | ||
145 | { /* 13 */ 1, { 7, 0 } }, | ||
146 | { /* 14 */ 1, { 0, 7 } }, | ||
147 | { /* 15 */ 1, { 6, 5 } }, | ||
148 | { /* 16 */ 1, { 5, 6 } }, | ||
149 | { /* 17 */ 1, { 7, 4 } }, | ||
150 | { /* 18 */ 1, { 4, 7 } }, | ||
151 | { /* 19 */ 1, { 5, 7 } }, | ||
152 | { /* 20 */ 1, { 7, 5 } }, | ||
153 | { /* 21 */ 0, { 2, 3 } }, | ||
154 | { /* 22 */ 0, { 3, 4 } }, | ||
155 | { /* 23 */ 1, { 7, 6 } }, | ||
156 | { /* 24 */ 1, { 6, 6 } }, | ||
157 | { /* 25 */ 1, { 6, 7 } }, | ||
158 | { /* 26 */ 1, { 7, 7 } } | ||
159 | }; | ||
diff --git a/lib/rbcodec/codecs/libfaad/codebook/hcb_8.h b/lib/rbcodec/codecs/libfaad/codebook/hcb_8.h new file mode 100644 index 0000000000..b76eb8f667 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/codebook/hcb_8.h | |||
@@ -0,0 +1,170 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | /* 2-step huffman table HCB_8 */ | ||
29 | |||
30 | |||
31 | /* 1st step: 5 bits | ||
32 | * 2^5 = 32 entries | ||
33 | * | ||
34 | * Used to find offset into 2nd step table and number of extra bits to get | ||
35 | */ | ||
36 | static hcb hcb8_1[] ICONST_ATTR = { | ||
37 | /* 3 bit codeword */ | ||
38 | { /* 00000 */ 0, 0 }, | ||
39 | { /* */ 0, 0 }, | ||
40 | { /* */ 0, 0 }, | ||
41 | { /* */ 0, 0 }, | ||
42 | |||
43 | /* 4 bit codewords */ | ||
44 | { /* 00100 */ 1, 0 }, | ||
45 | { /* */ 1, 0 }, | ||
46 | { /* 00110 */ 2, 0 }, | ||
47 | { /* */ 2, 0 }, | ||
48 | { /* 01000 */ 3, 0 }, | ||
49 | { /* */ 3, 0 }, | ||
50 | { /* 01010 */ 4, 0 }, | ||
51 | { /* */ 4, 0 }, | ||
52 | { /* 01100 */ 5, 0 }, | ||
53 | { /* */ 5, 0 }, | ||
54 | |||
55 | /* 5 bit codewords */ | ||
56 | { /* 01110 */ 6, 0 }, | ||
57 | { /* 01111 */ 7, 0 }, | ||
58 | { /* 10000 */ 8, 0 }, | ||
59 | { /* 10001 */ 9, 0 }, | ||
60 | { /* 10010 */ 10, 0 }, | ||
61 | { /* 10011 */ 11, 0 }, | ||
62 | { /* 10100 */ 12, 0 }, | ||
63 | |||
64 | /* 6 bit codewords */ | ||
65 | { /* 10101 */ 13, 1 }, | ||
66 | { /* 10110 */ 15, 1 }, | ||
67 | { /* 10111 */ 17, 1 }, | ||
68 | { /* 11000 */ 19, 1 }, | ||
69 | { /* 11001 */ 21, 1 }, | ||
70 | |||
71 | /* 7 bit codewords */ | ||
72 | { /* 11010 */ 23, 2 }, | ||
73 | { /* 11011 */ 27, 2 }, | ||
74 | { /* 11100 */ 31, 2 }, | ||
75 | |||
76 | /* 7/8 bit codewords */ | ||
77 | { /* 11101 */ 35, 3 }, | ||
78 | |||
79 | /* 8 bit codewords */ | ||
80 | { /* 11110 */ 43, 3 }, | ||
81 | |||
82 | /* 8/9/10 bit codewords */ | ||
83 | { /* 11111 */ 51, 5 } | ||
84 | }; | ||
85 | |||
86 | /* 2nd step table | ||
87 | * | ||
88 | * Gives size of codeword and actual data (x,y,v,w) | ||
89 | */ | ||
90 | static hcb_2_pair hcb8_2[] ICONST_ATTR = { | ||
91 | /* 3 bit codeword */ | ||
92 | { 3, 1, 1 }, | ||
93 | |||
94 | /* 4 bit codewords */ | ||
95 | { 4, 2, 1 }, | ||
96 | { 4, 1, 0 }, | ||
97 | { 4, 1, 2 }, | ||
98 | { 4, 0, 1 }, | ||
99 | { 4, 2, 2 }, | ||
100 | |||
101 | /* 5 bit codewords */ | ||
102 | { 5, 0, 0 }, | ||
103 | { 5, 2, 0 }, | ||
104 | { 5, 0, 2 }, | ||
105 | { 5, 3, 1 }, | ||
106 | { 5, 1, 3 }, | ||
107 | { 5, 3, 2 }, | ||
108 | { 5, 2, 3 }, | ||
109 | |||
110 | /* 6 bit codewords */ | ||
111 | { 6, 3, 3 }, | ||
112 | { 6, 4, 1 }, | ||
113 | { 6, 1, 4 }, | ||
114 | { 6, 4, 2 }, | ||
115 | { 6, 2, 4 }, | ||
116 | { 6, 3, 0 }, | ||
117 | { 6, 0, 3 }, | ||
118 | { 6, 4, 3 }, | ||
119 | { 6, 3, 4 }, | ||
120 | { 6, 5, 2 }, | ||
121 | |||
122 | /* 7 bit codewords */ | ||
123 | { 7, 5, 1 }, | ||
124 | { 7, 2, 5 }, | ||
125 | { 7, 1, 5 }, | ||
126 | { 7, 5, 3 }, | ||
127 | { 7, 3, 5 }, | ||
128 | { 7, 4, 4 }, | ||
129 | { 7, 5, 4 }, | ||
130 | { 7, 0, 4 }, | ||
131 | { 7, 4, 5 }, | ||
132 | { 7, 4, 0 }, | ||
133 | { 7, 2, 6 }, | ||
134 | { 7, 6, 2 }, | ||
135 | |||
136 | /* 7/8 bit codewords */ | ||
137 | { 7, 6, 1 }, { 7, 6, 1 }, | ||
138 | { 7, 1, 6 }, { 7, 1, 6 }, | ||
139 | { 8, 3, 6 }, | ||
140 | { 8, 6, 3 }, | ||
141 | { 8, 5, 5 }, | ||
142 | { 8, 5, 0 }, | ||
143 | |||
144 | /* 8 bit codewords */ | ||
145 | { 8, 6, 4 }, | ||
146 | { 8, 0, 5 }, | ||
147 | { 8, 4, 6 }, | ||
148 | { 8, 7, 1 }, | ||
149 | { 8, 7, 2 }, | ||
150 | { 8, 2, 7 }, | ||
151 | { 8, 6, 5 }, | ||
152 | { 8, 7, 3 }, | ||
153 | |||
154 | /* 8/9/10 bit codewords */ | ||
155 | { 8, 1, 7 }, { 8, 1, 7 }, { 8, 1, 7 }, { 8, 1, 7 }, | ||
156 | { 8, 5, 6 }, { 8, 5, 6 }, { 8, 5, 6 }, { 8, 5, 6 }, | ||
157 | { 8, 3, 7 }, { 8, 3, 7 }, { 8, 3, 7 }, { 8, 3, 7 }, | ||
158 | { 9, 6, 6 }, { 9, 6, 6 }, | ||
159 | { 9, 7, 4 }, { 9, 7, 4 }, | ||
160 | { 9, 6, 0 }, { 9, 6, 0 }, | ||
161 | { 9, 4, 7 }, { 9, 4, 7 }, | ||
162 | { 9, 0, 6 }, { 9, 0, 6 }, | ||
163 | { 9, 7, 5 }, { 9, 7, 5 }, | ||
164 | { 9, 7, 6 }, { 9, 7, 6 }, | ||
165 | { 9, 6, 7 }, { 9, 6, 7 }, | ||
166 | { 10, 5, 7 }, | ||
167 | { 10, 7, 0 }, | ||
168 | { 10, 0, 7 }, | ||
169 | { 10, 7, 7 } | ||
170 | }; | ||
diff --git a/lib/rbcodec/codecs/libfaad/codebook/hcb_9.h b/lib/rbcodec/codecs/libfaad/codebook/hcb_9.h new file mode 100644 index 0000000000..2932001294 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/codebook/hcb_9.h | |||
@@ -0,0 +1,369 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | /* Binary search huffman table HCB_9 */ | ||
29 | |||
30 | |||
31 | static hcb_bin_pair hcb9[] ICONST_ATTR_FAAD_LARGE_IRAM = { | ||
32 | { /* 0 */ 0, { 1, 2 } }, | ||
33 | { /* 1 */ 1, { 0, 0 } }, | ||
34 | { /* 2 */ 0, { 1, 2 } }, | ||
35 | { /* 3 */ 0, { 2, 3 } }, | ||
36 | { /* 4 */ 0, { 3, 4 } }, | ||
37 | { /* 5 */ 1, { 1, 0 } }, | ||
38 | { /* 6 */ 1, { 0, 1 } }, | ||
39 | { /* 7 */ 0, { 2, 3 } }, | ||
40 | { /* 8 */ 0, { 3, 4 } }, | ||
41 | { /* 9 */ 1, { 1, 1 } }, | ||
42 | { /* 10 */ 0, { 3, 4 } }, | ||
43 | { /* 11 */ 0, { 4, 5 } }, | ||
44 | { /* 12 */ 0, { 5, 6 } }, | ||
45 | { /* 13 */ 0, { 6, 7 } }, | ||
46 | { /* 14 */ 0, { 7, 8 } }, | ||
47 | { /* 15 */ 0, { 8, 9 } }, | ||
48 | { /* 16 */ 0, { 9, 10 } }, | ||
49 | { /* 17 */ 0, { 10, 11 } }, | ||
50 | { /* 18 */ 0, { 11, 12 } }, | ||
51 | { /* 19 */ 1, { 2, 1 } }, | ||
52 | { /* 20 */ 1, { 1, 2 } }, | ||
53 | { /* 21 */ 1, { 2, 0 } }, | ||
54 | { /* 22 */ 1, { 0, 2 } }, | ||
55 | { /* 23 */ 0, { 8, 9 } }, | ||
56 | { /* 24 */ 0, { 9, 10 } }, | ||
57 | { /* 25 */ 0, { 10, 11 } }, | ||
58 | { /* 26 */ 0, { 11, 12 } }, | ||
59 | { /* 27 */ 0, { 12, 13 } }, | ||
60 | { /* 28 */ 0, { 13, 14 } }, | ||
61 | { /* 29 */ 0, { 14, 15 } }, | ||
62 | { /* 30 */ 0, { 15, 16 } }, | ||
63 | { /* 31 */ 1, { 3, 1 } }, | ||
64 | { /* 32 */ 1, { 2, 2 } }, | ||
65 | { /* 33 */ 1, { 1, 3 } }, | ||
66 | { /* 34 */ 0, { 13, 14 } }, | ||
67 | { /* 35 */ 0, { 14, 15 } }, | ||
68 | { /* 36 */ 0, { 15, 16 } }, | ||
69 | { /* 37 */ 0, { 16, 17 } }, | ||
70 | { /* 38 */ 0, { 17, 18 } }, | ||
71 | { /* 39 */ 0, { 18, 19 } }, | ||
72 | { /* 40 */ 0, { 19, 20 } }, | ||
73 | { /* 41 */ 0, { 20, 21 } }, | ||
74 | { /* 42 */ 0, { 21, 22 } }, | ||
75 | { /* 43 */ 0, { 22, 23 } }, | ||
76 | { /* 44 */ 0, { 23, 24 } }, | ||
77 | { /* 45 */ 0, { 24, 25 } }, | ||
78 | { /* 46 */ 0, { 25, 26 } }, | ||
79 | { /* 47 */ 1, { 3, 0 } }, | ||
80 | { /* 48 */ 1, { 0, 3 } }, | ||
81 | { /* 49 */ 1, { 2, 3 } }, | ||
82 | { /* 50 */ 1, { 3, 2 } }, | ||
83 | { /* 51 */ 1, { 1, 4 } }, | ||
84 | { /* 52 */ 1, { 4, 1 } }, | ||
85 | { /* 53 */ 1, { 2, 4 } }, | ||
86 | { /* 54 */ 1, { 1, 5 } }, | ||
87 | { /* 55 */ 0, { 18, 19 } }, | ||
88 | { /* 56 */ 0, { 19, 20 } }, | ||
89 | { /* 57 */ 0, { 20, 21 } }, | ||
90 | { /* 58 */ 0, { 21, 22 } }, | ||
91 | { /* 59 */ 0, { 22, 23 } }, | ||
92 | { /* 60 */ 0, { 23, 24 } }, | ||
93 | { /* 61 */ 0, { 24, 25 } }, | ||
94 | { /* 62 */ 0, { 25, 26 } }, | ||
95 | { /* 63 */ 0, { 26, 27 } }, | ||
96 | { /* 64 */ 0, { 27, 28 } }, | ||
97 | { /* 65 */ 0, { 28, 29 } }, | ||
98 | { /* 66 */ 0, { 29, 30 } }, | ||
99 | { /* 67 */ 0, { 30, 31 } }, | ||
100 | { /* 68 */ 0, { 31, 32 } }, | ||
101 | { /* 69 */ 0, { 32, 33 } }, | ||
102 | { /* 70 */ 0, { 33, 34 } }, | ||
103 | { /* 71 */ 0, { 34, 35 } }, | ||
104 | { /* 72 */ 0, { 35, 36 } }, | ||
105 | { /* 73 */ 1, { 4, 2 } }, | ||
106 | { /* 74 */ 1, { 3, 3 } }, | ||
107 | { /* 75 */ 1, { 0, 4 } }, | ||
108 | { /* 76 */ 1, { 4, 0 } }, | ||
109 | { /* 77 */ 1, { 5, 1 } }, | ||
110 | { /* 78 */ 1, { 2, 5 } }, | ||
111 | { /* 79 */ 1, { 1, 6 } }, | ||
112 | { /* 80 */ 1, { 3, 4 } }, | ||
113 | { /* 81 */ 1, { 5, 2 } }, | ||
114 | { /* 82 */ 1, { 6, 1 } }, | ||
115 | { /* 83 */ 1, { 4, 3 } }, | ||
116 | { /* 84 */ 0, { 25, 26 } }, | ||
117 | { /* 85 */ 0, { 26, 27 } }, | ||
118 | { /* 86 */ 0, { 27, 28 } }, | ||
119 | { /* 87 */ 0, { 28, 29 } }, | ||
120 | { /* 88 */ 0, { 29, 30 } }, | ||
121 | { /* 89 */ 0, { 30, 31 } }, | ||
122 | { /* 90 */ 0, { 31, 32 } }, | ||
123 | { /* 91 */ 0, { 32, 33 } }, | ||
124 | { /* 92 */ 0, { 33, 34 } }, | ||
125 | { /* 93 */ 0, { 34, 35 } }, | ||
126 | { /* 94 */ 0, { 35, 36 } }, | ||
127 | { /* 95 */ 0, { 36, 37 } }, | ||
128 | { /* 96 */ 0, { 37, 38 } }, | ||
129 | { /* 97 */ 0, { 38, 39 } }, | ||
130 | { /* 98 */ 0, { 39, 40 } }, | ||
131 | { /* 99 */ 0, { 40, 41 } }, | ||
132 | { /* 00 */ 0, { 41, 42 } }, | ||
133 | { /* 01 */ 0, { 42, 43 } }, | ||
134 | { /* 02 */ 0, { 43, 44 } }, | ||
135 | { /* 03 */ 0, { 44, 45 } }, | ||
136 | { /* 04 */ 0, { 45, 46 } }, | ||
137 | { /* 05 */ 0, { 46, 47 } }, | ||
138 | { /* 06 */ 0, { 47, 48 } }, | ||
139 | { /* 07 */ 0, { 48, 49 } }, | ||
140 | { /* 08 */ 0, { 49, 50 } }, | ||
141 | { /* 09 */ 1, { 0, 5 } }, | ||
142 | { /* 10 */ 1, { 2, 6 } }, | ||
143 | { /* 11 */ 1, { 5, 0 } }, | ||
144 | { /* 12 */ 1, { 1, 7 } }, | ||
145 | { /* 13 */ 1, { 3, 5 } }, | ||
146 | { /* 14 */ 1, { 1, 8 } }, | ||
147 | { /* 15 */ 1, { 8, 1 } }, | ||
148 | { /* 16 */ 1, { 4, 4 } }, | ||
149 | { /* 17 */ 1, { 5, 3 } }, | ||
150 | { /* 18 */ 1, { 6, 2 } }, | ||
151 | { /* 19 */ 1, { 7, 1 } }, | ||
152 | { /* 20 */ 1, { 0, 6 } }, | ||
153 | { /* 21 */ 1, { 8, 2 } }, | ||
154 | { /* 22 */ 1, { 2, 8 } }, | ||
155 | { /* 23 */ 1, { 3, 6 } }, | ||
156 | { /* 24 */ 1, { 2, 7 } }, | ||
157 | { /* 25 */ 1, { 4, 5 } }, | ||
158 | { /* 26 */ 1, { 9, 1 } }, | ||
159 | { /* 27 */ 1, { 1, 9 } }, | ||
160 | { /* 28 */ 1, { 7, 2 } }, | ||
161 | { /* 29 */ 0, { 30, 31 } }, | ||
162 | { /* 30 */ 0, { 31, 32 } }, | ||
163 | { /* 31 */ 0, { 32, 33 } }, | ||
164 | { /* 32 */ 0, { 33, 34 } }, | ||
165 | { /* 33 */ 0, { 34, 35 } }, | ||
166 | { /* 34 */ 0, { 35, 36 } }, | ||
167 | { /* 35 */ 0, { 36, 37 } }, | ||
168 | { /* 36 */ 0, { 37, 38 } }, | ||
169 | { /* 37 */ 0, { 38, 39 } }, | ||
170 | { /* 38 */ 0, { 39, 40 } }, | ||
171 | { /* 39 */ 0, { 40, 41 } }, | ||
172 | { /* 40 */ 0, { 41, 42 } }, | ||
173 | { /* 41 */ 0, { 42, 43 } }, | ||
174 | { /* 42 */ 0, { 43, 44 } }, | ||
175 | { /* 43 */ 0, { 44, 45 } }, | ||
176 | { /* 44 */ 0, { 45, 46 } }, | ||
177 | { /* 45 */ 0, { 46, 47 } }, | ||
178 | { /* 46 */ 0, { 47, 48 } }, | ||
179 | { /* 47 */ 0, { 48, 49 } }, | ||
180 | { /* 48 */ 0, { 49, 50 } }, | ||
181 | { /* 49 */ 0, { 50, 51 } }, | ||
182 | { /* 50 */ 0, { 51, 52 } }, | ||
183 | { /* 51 */ 0, { 52, 53 } }, | ||
184 | { /* 52 */ 0, { 53, 54 } }, | ||
185 | { /* 53 */ 0, { 54, 55 } }, | ||
186 | { /* 54 */ 0, { 55, 56 } }, | ||
187 | { /* 55 */ 0, { 56, 57 } }, | ||
188 | { /* 56 */ 0, { 57, 58 } }, | ||
189 | { /* 57 */ 0, { 58, 59 } }, | ||
190 | { /* 58 */ 0, { 59, 60 } }, | ||
191 | { /* 59 */ 1, { 6, 0 } }, | ||
192 | { /* 60 */ 1, { 5, 4 } }, | ||
193 | { /* 61 */ 1, { 6, 3 } }, | ||
194 | { /* 62 */ 1, { 8, 3 } }, | ||
195 | { /* 63 */ 1, { 0, 7 } }, | ||
196 | { /* 64 */ 1, { 9, 2 } }, | ||
197 | { /* 65 */ 1, { 3, 8 } }, | ||
198 | { /* 66 */ 1, { 4, 6 } }, | ||
199 | { /* 67 */ 1, { 3, 7 } }, | ||
200 | { /* 68 */ 1, { 0, 8 } }, | ||
201 | { /* 69 */ 1, { 10, 1 } }, | ||
202 | { /* 70 */ 1, { 6, 4 } }, | ||
203 | { /* 71 */ 1, { 2, 9 } }, | ||
204 | { /* 72 */ 1, { 5, 5 } }, | ||
205 | { /* 73 */ 1, { 8, 0 } }, | ||
206 | { /* 74 */ 1, { 7, 0 } }, | ||
207 | { /* 75 */ 1, { 7, 3 } }, | ||
208 | { /* 76 */ 1, { 10, 2 } }, | ||
209 | { /* 77 */ 1, { 9, 3 } }, | ||
210 | { /* 78 */ 1, { 8, 4 } }, | ||
211 | { /* 79 */ 1, { 1, 10 } }, | ||
212 | { /* 80 */ 1, { 7, 4 } }, | ||
213 | { /* 81 */ 1, { 6, 5 } }, | ||
214 | { /* 82 */ 1, { 5, 6 } }, | ||
215 | { /* 83 */ 1, { 4, 8 } }, | ||
216 | { /* 84 */ 1, { 4, 7 } }, | ||
217 | { /* 85 */ 1, { 3, 9 } }, | ||
218 | { /* 86 */ 1, { 11, 1 } }, | ||
219 | { /* 87 */ 1, { 5, 8 } }, | ||
220 | { /* 88 */ 1, { 9, 0 } }, | ||
221 | { /* 89 */ 1, { 8, 5 } }, | ||
222 | { /* 90 */ 0, { 29, 30 } }, | ||
223 | { /* 91 */ 0, { 30, 31 } }, | ||
224 | { /* 92 */ 0, { 31, 32 } }, | ||
225 | { /* 93 */ 0, { 32, 33 } }, | ||
226 | { /* 94 */ 0, { 33, 34 } }, | ||
227 | { /* 95 */ 0, { 34, 35 } }, | ||
228 | { /* 96 */ 0, { 35, 36 } }, | ||
229 | { /* 97 */ 0, { 36, 37 } }, | ||
230 | { /* 98 */ 0, { 37, 38 } }, | ||
231 | { /* 99 */ 0, { 38, 39 } }, | ||
232 | { /* 00 */ 0, { 39, 40 } }, | ||
233 | { /* 01 */ 0, { 40, 41 } }, | ||
234 | { /* 02 */ 0, { 41, 42 } }, | ||
235 | { /* 03 */ 0, { 42, 43 } }, | ||
236 | { /* 04 */ 0, { 43, 44 } }, | ||
237 | { /* 05 */ 0, { 44, 45 } }, | ||
238 | { /* 06 */ 0, { 45, 46 } }, | ||
239 | { /* 07 */ 0, { 46, 47 } }, | ||
240 | { /* 08 */ 0, { 47, 48 } }, | ||
241 | { /* 09 */ 0, { 48, 49 } }, | ||
242 | { /* 10 */ 0, { 49, 50 } }, | ||
243 | { /* 11 */ 0, { 50, 51 } }, | ||
244 | { /* 12 */ 0, { 51, 52 } }, | ||
245 | { /* 13 */ 0, { 52, 53 } }, | ||
246 | { /* 14 */ 0, { 53, 54 } }, | ||
247 | { /* 15 */ 0, { 54, 55 } }, | ||
248 | { /* 16 */ 0, { 55, 56 } }, | ||
249 | { /* 17 */ 0, { 56, 57 } }, | ||
250 | { /* 18 */ 0, { 57, 58 } }, | ||
251 | { /* 19 */ 1, { 10, 3 } }, | ||
252 | { /* 20 */ 1, { 2, 10 } }, | ||
253 | { /* 21 */ 1, { 0, 9 } }, | ||
254 | { /* 22 */ 1, { 11, 2 } }, | ||
255 | { /* 23 */ 1, { 9, 4 } }, | ||
256 | { /* 24 */ 1, { 6, 6 } }, | ||
257 | { /* 25 */ 1, { 12, 1 } }, | ||
258 | { /* 26 */ 1, { 4, 9 } }, | ||
259 | { /* 27 */ 1, { 8, 6 } }, | ||
260 | { /* 28 */ 1, { 1, 11 } }, | ||
261 | { /* 29 */ 1, { 9, 5 } }, | ||
262 | { /* 30 */ 1, { 10, 4 } }, | ||
263 | { /* 31 */ 1, { 5, 7 } }, | ||
264 | { /* 32 */ 1, { 7, 5 } }, | ||
265 | { /* 33 */ 1, { 2, 11 } }, | ||
266 | { /* 34 */ 1, { 1, 12 } }, | ||
267 | { /* 35 */ 1, { 12, 2 } }, | ||
268 | { /* 36 */ 1, { 11, 3 } }, | ||
269 | { /* 37 */ 1, { 3, 10 } }, | ||
270 | { /* 38 */ 1, { 5, 9 } }, | ||
271 | { /* 39 */ 1, { 6, 7 } }, | ||
272 | { /* 40 */ 1, { 8, 7 } }, | ||
273 | { /* 41 */ 1, { 11, 4 } }, | ||
274 | { /* 42 */ 1, { 0, 10 } }, | ||
275 | { /* 43 */ 1, { 7, 6 } }, | ||
276 | { /* 44 */ 1, { 12, 3 } }, | ||
277 | { /* 45 */ 1, { 10, 0 } }, | ||
278 | { /* 46 */ 1, { 10, 5 } }, | ||
279 | { /* 47 */ 1, { 4, 10 } }, | ||
280 | { /* 48 */ 1, { 6, 8 } }, | ||
281 | { /* 49 */ 1, { 2, 12 } }, | ||
282 | { /* 50 */ 1, { 9, 6 } }, | ||
283 | { /* 51 */ 1, { 9, 7 } }, | ||
284 | { /* 52 */ 1, { 4, 11 } }, | ||
285 | { /* 53 */ 1, { 11, 0 } }, | ||
286 | { /* 54 */ 1, { 6, 9 } }, | ||
287 | { /* 55 */ 1, { 3, 11 } }, | ||
288 | { /* 56 */ 1, { 5, 10 } }, | ||
289 | { /* 57 */ 0, { 20, 21 } }, | ||
290 | { /* 58 */ 0, { 21, 22 } }, | ||
291 | { /* 59 */ 0, { 22, 23 } }, | ||
292 | { /* 60 */ 0, { 23, 24 } }, | ||
293 | { /* 61 */ 0, { 24, 25 } }, | ||
294 | { /* 62 */ 0, { 25, 26 } }, | ||
295 | { /* 63 */ 0, { 26, 27 } }, | ||
296 | { /* 64 */ 0, { 27, 28 } }, | ||
297 | { /* 65 */ 0, { 28, 29 } }, | ||
298 | { /* 66 */ 0, { 29, 30 } }, | ||
299 | { /* 67 */ 0, { 30, 31 } }, | ||
300 | { /* 68 */ 0, { 31, 32 } }, | ||
301 | { /* 69 */ 0, { 32, 33 } }, | ||
302 | { /* 70 */ 0, { 33, 34 } }, | ||
303 | { /* 71 */ 0, { 34, 35 } }, | ||
304 | { /* 72 */ 0, { 35, 36 } }, | ||
305 | { /* 73 */ 0, { 36, 37 } }, | ||
306 | { /* 74 */ 0, { 37, 38 } }, | ||
307 | { /* 75 */ 0, { 38, 39 } }, | ||
308 | { /* 76 */ 0, { 39, 40 } }, | ||
309 | { /* 77 */ 1, { 8, 8 } }, | ||
310 | { /* 78 */ 1, { 7, 8 } }, | ||
311 | { /* 79 */ 1, { 12, 5 } }, | ||
312 | { /* 80 */ 1, { 3, 12 } }, | ||
313 | { /* 81 */ 1, { 11, 5 } }, | ||
314 | { /* 82 */ 1, { 7, 7 } }, | ||
315 | { /* 83 */ 1, { 12, 4 } }, | ||
316 | { /* 84 */ 1, { 11, 6 } }, | ||
317 | { /* 85 */ 1, { 10, 6 } }, | ||
318 | { /* 86 */ 1, { 4, 12 } }, | ||
319 | { /* 87 */ 1, { 7, 9 } }, | ||
320 | { /* 88 */ 1, { 5, 11 } }, | ||
321 | { /* 89 */ 1, { 0, 11 } }, | ||
322 | { /* 90 */ 1, { 12, 6 } }, | ||
323 | { /* 91 */ 1, { 6, 10 } }, | ||
324 | { /* 92 */ 1, { 12, 0 } }, | ||
325 | { /* 93 */ 1, { 10, 7 } }, | ||
326 | { /* 94 */ 1, { 5, 12 } }, | ||
327 | { /* 95 */ 1, { 7, 10 } }, | ||
328 | { /* 96 */ 1, { 9, 8 } }, | ||
329 | { /* 97 */ 1, { 0, 12 } }, | ||
330 | { /* 98 */ 1, { 11, 7 } }, | ||
331 | { /* 99 */ 1, { 8, 9 } }, | ||
332 | { /* 00 */ 1, { 9, 9 } }, | ||
333 | { /* 01 */ 1, { 10, 8 } }, | ||
334 | { /* 02 */ 1, { 7, 11 } }, | ||
335 | { /* 03 */ 1, { 12, 7 } }, | ||
336 | { /* 04 */ 1, { 6, 11 } }, | ||
337 | { /* 05 */ 1, { 8, 11 } }, | ||
338 | { /* 06 */ 1, { 11, 8 } }, | ||
339 | { /* 07 */ 1, { 7, 12 } }, | ||
340 | { /* 08 */ 1, { 6, 12 } }, | ||
341 | { /* 09 */ 0, { 8, 9 } }, | ||
342 | { /* 10 */ 0, { 9, 10 } }, | ||
343 | { /* 11 */ 0, { 10, 11 } }, | ||
344 | { /* 12 */ 0, { 11, 12 } }, | ||
345 | { /* 13 */ 0, { 12, 13 } }, | ||
346 | { /* 14 */ 0, { 13, 14 } }, | ||
347 | { /* 15 */ 0, { 14, 15 } }, | ||
348 | { /* 16 */ 0, { 15, 16 } }, | ||
349 | { /* 17 */ 1, { 8, 10 } }, | ||
350 | { /* 18 */ 1, { 10, 9 } }, | ||
351 | { /* 19 */ 1, { 8, 12 } }, | ||
352 | { /* 20 */ 1, { 9, 10 } }, | ||
353 | { /* 21 */ 1, { 9, 11 } }, | ||
354 | { /* 22 */ 1, { 9, 12 } }, | ||
355 | { /* 23 */ 1, { 10, 11 } }, | ||
356 | { /* 24 */ 1, { 12, 9 } }, | ||
357 | { /* 25 */ 1, { 10, 10 } }, | ||
358 | { /* 26 */ 1, { 11, 9 } }, | ||
359 | { /* 27 */ 1, { 12, 8 } }, | ||
360 | { /* 28 */ 1, { 11, 10 } }, | ||
361 | { /* 29 */ 1, { 12, 10 } }, | ||
362 | { /* 30 */ 1, { 12, 11 } }, | ||
363 | { /* 31 */ 0, { 2, 3 } }, | ||
364 | { /* 32 */ 0, { 3, 4 } }, | ||
365 | { /* 33 */ 1, { 10, 12 } }, | ||
366 | { /* 34 */ 1, { 11, 11 } }, | ||
367 | { /* 35 */ 1, { 11, 12 } }, | ||
368 | { /* 36 */ 1, { 12, 12 } } | ||
369 | }; | ||
diff --git a/lib/rbcodec/codecs/libfaad/codebook/hcb_sf.h b/lib/rbcodec/codecs/libfaad/codebook/hcb_sf.h new file mode 100644 index 0000000000..66762e2fce --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/codebook/hcb_sf.h | |||
@@ -0,0 +1,273 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | /* Binary search huffman table HCB_SF */ | ||
29 | |||
30 | |||
31 | static uint8_t hcb_sf[][2] ICONST_ATTR_FAAD_LARGE_IRAM = { | ||
32 | { /* 0 */ 1, 2 }, | ||
33 | { /* 1 */ 60, 0 }, | ||
34 | { /* 2 */ 1, 2 }, | ||
35 | { /* 3 */ 2, 3 }, | ||
36 | { /* 4 */ 3, 4 }, | ||
37 | { /* 5 */ 59, 0 }, | ||
38 | { /* 6 */ 3, 4 }, | ||
39 | { /* 7 */ 4, 5 }, | ||
40 | { /* 8 */ 5, 6 }, | ||
41 | { /* 9 */ 61, 0 }, | ||
42 | { /* 10 */ 58, 0 }, | ||
43 | { /* 11 */ 62, 0 }, | ||
44 | { /* 12 */ 3, 4 }, | ||
45 | { /* 13 */ 4, 5 }, | ||
46 | { /* 14 */ 5, 6 }, | ||
47 | { /* 15 */ 57, 0 }, | ||
48 | { /* 16 */ 63, 0 }, | ||
49 | { /* 17 */ 4, 5 }, | ||
50 | { /* 18 */ 5, 6 }, | ||
51 | { /* 19 */ 6, 7 }, | ||
52 | { /* 20 */ 7, 8 }, | ||
53 | { /* 21 */ 56, 0 }, | ||
54 | { /* 22 */ 64, 0 }, | ||
55 | { /* 23 */ 55, 0 }, | ||
56 | { /* 24 */ 65, 0 }, | ||
57 | { /* 25 */ 4, 5 }, | ||
58 | { /* 26 */ 5, 6 }, | ||
59 | { /* 27 */ 6, 7 }, | ||
60 | { /* 28 */ 7, 8 }, | ||
61 | { /* 29 */ 66, 0 }, | ||
62 | { /* 30 */ 54, 0 }, | ||
63 | { /* 31 */ 67, 0 }, | ||
64 | { /* 32 */ 5, 6 }, | ||
65 | { /* 33 */ 6, 7 }, | ||
66 | { /* 34 */ 7, 8 }, | ||
67 | { /* 35 */ 8, 9 }, | ||
68 | { /* 36 */ 9, 10 }, | ||
69 | { /* 37 */ 53, 0 }, | ||
70 | { /* 38 */ 68, 0 }, | ||
71 | { /* 39 */ 52, 0 }, | ||
72 | { /* 40 */ 69, 0 }, | ||
73 | { /* 41 */ 51, 0 }, | ||
74 | { /* 42 */ 5, 6 }, | ||
75 | { /* 43 */ 6, 7 }, | ||
76 | { /* 44 */ 7, 8 }, | ||
77 | { /* 45 */ 8, 9 }, | ||
78 | { /* 46 */ 9, 10 }, | ||
79 | { /* 47 */ 70, 0 }, | ||
80 | { /* 48 */ 50, 0 }, | ||
81 | { /* 49 */ 49, 0 }, | ||
82 | { /* 50 */ 71, 0 }, | ||
83 | { /* 51 */ 6, 7 }, | ||
84 | { /* 52 */ 7, 8 }, | ||
85 | { /* 53 */ 8, 9 }, | ||
86 | { /* 54 */ 9, 10 }, | ||
87 | { /* 55 */ 10, 11 }, | ||
88 | { /* 56 */ 11, 12 }, | ||
89 | { /* 57 */ 72, 0 }, | ||
90 | { /* 58 */ 48, 0 }, | ||
91 | { /* 59 */ 73, 0 }, | ||
92 | { /* 60 */ 47, 0 }, | ||
93 | { /* 61 */ 74, 0 }, | ||
94 | { /* 62 */ 46, 0 }, | ||
95 | { /* 63 */ 6, 7 }, | ||
96 | { /* 64 */ 7, 8 }, | ||
97 | { /* 65 */ 8, 9 }, | ||
98 | { /* 66 */ 9, 10 }, | ||
99 | { /* 67 */ 10, 11 }, | ||
100 | { /* 68 */ 11, 12 }, | ||
101 | { /* 69 */ 76, 0 }, | ||
102 | { /* 70 */ 75, 0 }, | ||
103 | { /* 71 */ 77, 0 }, | ||
104 | { /* 72 */ 78, 0 }, | ||
105 | { /* 73 */ 45, 0 }, | ||
106 | { /* 74 */ 43, 0 }, | ||
107 | { /* 75 */ 6, 7 }, | ||
108 | { /* 76 */ 7, 8 }, | ||
109 | { /* 77 */ 8, 9 }, | ||
110 | { /* 78 */ 9, 10 }, | ||
111 | { /* 79 */ 10, 11 }, | ||
112 | { /* 80 */ 11, 12 }, | ||
113 | { /* 81 */ 44, 0 }, | ||
114 | { /* 82 */ 79, 0 }, | ||
115 | { /* 83 */ 42, 0 }, | ||
116 | { /* 84 */ 41, 0 }, | ||
117 | { /* 85 */ 80, 0 }, | ||
118 | { /* 86 */ 40, 0 }, | ||
119 | { /* 87 */ 6, 7 }, | ||
120 | { /* 88 */ 7, 8 }, | ||
121 | { /* 89 */ 8, 9 }, | ||
122 | { /* 90 */ 9, 10 }, | ||
123 | { /* 91 */ 10, 11 }, | ||
124 | { /* 92 */ 11, 12 }, | ||
125 | { /* 93 */ 81, 0 }, | ||
126 | { /* 94 */ 39, 0 }, | ||
127 | { /* 95 */ 82, 0 }, | ||
128 | { /* 96 */ 38, 0 }, | ||
129 | { /* 97 */ 83, 0 }, | ||
130 | { /* 98 */ 7, 8 }, | ||
131 | { /* 99 */ 8, 9 }, | ||
132 | { /* 00 */ 9, 10 }, | ||
133 | { /* 01 */ 10, 11 }, | ||
134 | { /* 02 */ 11, 12 }, | ||
135 | { /* 03 */ 12, 13 }, | ||
136 | { /* 04 */ 13, 14 }, | ||
137 | { /* 05 */ 37, 0 }, | ||
138 | { /* 06 */ 35, 0 }, | ||
139 | { /* 07 */ 85, 0 }, | ||
140 | { /* 08 */ 33, 0 }, | ||
141 | { /* 09 */ 36, 0 }, | ||
142 | { /* 10 */ 34, 0 }, | ||
143 | { /* 11 */ 84, 0 }, | ||
144 | { /* 12 */ 32, 0 }, | ||
145 | { /* 13 */ 6, 7 }, | ||
146 | { /* 14 */ 7, 8 }, | ||
147 | { /* 15 */ 8, 9 }, | ||
148 | { /* 16 */ 9, 10 }, | ||
149 | { /* 17 */ 10, 11 }, | ||
150 | { /* 18 */ 11, 12 }, | ||
151 | { /* 19 */ 87, 0 }, | ||
152 | { /* 20 */ 89, 0 }, | ||
153 | { /* 21 */ 30, 0 }, | ||
154 | { /* 22 */ 31, 0 }, | ||
155 | { /* 23 */ 8, 9 }, | ||
156 | { /* 24 */ 9, 10 }, | ||
157 | { /* 25 */ 10, 11 }, | ||
158 | { /* 26 */ 11, 12 }, | ||
159 | { /* 27 */ 12, 13 }, | ||
160 | { /* 28 */ 13, 14 }, | ||
161 | { /* 29 */ 14, 15 }, | ||
162 | { /* 30 */ 15, 16 }, | ||
163 | { /* 31 */ 86, 0 }, | ||
164 | { /* 32 */ 29, 0 }, | ||
165 | { /* 33 */ 26, 0 }, | ||
166 | { /* 34 */ 27, 0 }, | ||
167 | { /* 35 */ 28, 0 }, | ||
168 | { /* 36 */ 24, 0 }, | ||
169 | { /* 37 */ 88, 0 }, | ||
170 | { /* 38 */ 9, 10 }, | ||
171 | { /* 39 */ 10, 11 }, | ||
172 | { /* 40 */ 11, 12 }, | ||
173 | { /* 41 */ 12, 13 }, | ||
174 | { /* 42 */ 13, 14 }, | ||
175 | { /* 43 */ 14, 15 }, | ||
176 | { /* 44 */ 15, 16 }, | ||
177 | { /* 45 */ 16, 17 }, | ||
178 | { /* 46 */ 17, 18 }, | ||
179 | { /* 47 */ 25, 0 }, | ||
180 | { /* 48 */ 22, 0 }, | ||
181 | { /* 49 */ 23, 0 }, | ||
182 | { /* 50 */ 15, 16 }, | ||
183 | { /* 51 */ 16, 17 }, | ||
184 | { /* 52 */ 17, 18 }, | ||
185 | { /* 53 */ 18, 19 }, | ||
186 | { /* 54 */ 19, 20 }, | ||
187 | { /* 55 */ 20, 21 }, | ||
188 | { /* 56 */ 21, 22 }, | ||
189 | { /* 57 */ 22, 23 }, | ||
190 | { /* 58 */ 23, 24 }, | ||
191 | { /* 59 */ 24, 25 }, | ||
192 | { /* 60 */ 25, 26 }, | ||
193 | { /* 61 */ 26, 27 }, | ||
194 | { /* 62 */ 27, 28 }, | ||
195 | { /* 63 */ 28, 29 }, | ||
196 | { /* 64 */ 29, 30 }, | ||
197 | { /* 65 */ 90, 0 }, | ||
198 | { /* 66 */ 21, 0 }, | ||
199 | { /* 67 */ 19, 0 }, | ||
200 | { /* 68 */ 3, 0 }, | ||
201 | { /* 69 */ 1, 0 }, | ||
202 | { /* 70 */ 2, 0 }, | ||
203 | { /* 71 */ 0, 0 }, | ||
204 | { /* 72 */ 23, 24 }, | ||
205 | { /* 73 */ 24, 25 }, | ||
206 | { /* 74 */ 25, 26 }, | ||
207 | { /* 75 */ 26, 27 }, | ||
208 | { /* 76 */ 27, 28 }, | ||
209 | { /* 77 */ 28, 29 }, | ||
210 | { /* 78 */ 29, 30 }, | ||
211 | { /* 79 */ 30, 31 }, | ||
212 | { /* 80 */ 31, 32 }, | ||
213 | { /* 81 */ 32, 33 }, | ||
214 | { /* 82 */ 33, 34 }, | ||
215 | { /* 83 */ 34, 35 }, | ||
216 | { /* 84 */ 35, 36 }, | ||
217 | { /* 85 */ 36, 37 }, | ||
218 | { /* 86 */ 37, 38 }, | ||
219 | { /* 87 */ 38, 39 }, | ||
220 | { /* 88 */ 39, 40 }, | ||
221 | { /* 89 */ 40, 41 }, | ||
222 | { /* 90 */ 41, 42 }, | ||
223 | { /* 91 */ 42, 43 }, | ||
224 | { /* 92 */ 43, 44 }, | ||
225 | { /* 93 */ 44, 45 }, | ||
226 | { /* 94 */ 45, 46 }, | ||
227 | { /* 95 */ 98, 0 }, | ||
228 | { /* 96 */ 99, 0 }, | ||
229 | { /* 97 */ 100, 0 }, | ||
230 | { /* 98 */ 101, 0 }, | ||
231 | { /* 99 */ 102, 0 }, | ||
232 | { /* 00 */ 117, 0 }, | ||
233 | { /* 01 */ 97, 0 }, | ||
234 | { /* 02 */ 91, 0 }, | ||
235 | { /* 03 */ 92, 0 }, | ||
236 | { /* 04 */ 93, 0 }, | ||
237 | { /* 05 */ 94, 0 }, | ||
238 | { /* 06 */ 95, 0 }, | ||
239 | { /* 07 */ 96, 0 }, | ||
240 | { /* 08 */ 104, 0 }, | ||
241 | { /* 09 */ 111, 0 }, | ||
242 | { /* 10 */ 112, 0 }, | ||
243 | { /* 11 */ 113, 0 }, | ||
244 | { /* 12 */ 114, 0 }, | ||
245 | { /* 13 */ 115, 0 }, | ||
246 | { /* 14 */ 116, 0 }, | ||
247 | { /* 15 */ 110, 0 }, | ||
248 | { /* 16 */ 105, 0 }, | ||
249 | { /* 17 */ 106, 0 }, | ||
250 | { /* 18 */ 107, 0 }, | ||
251 | { /* 19 */ 108, 0 }, | ||
252 | { /* 20 */ 109, 0 }, | ||
253 | { /* 21 */ 118, 0 }, | ||
254 | { /* 22 */ 6, 0 }, | ||
255 | { /* 23 */ 8, 0 }, | ||
256 | { /* 24 */ 9, 0 }, | ||
257 | { /* 25 */ 10, 0 }, | ||
258 | { /* 26 */ 5, 0 }, | ||
259 | { /* 27 */ 103, 0 }, | ||
260 | { /* 28 */ 120, 0 }, | ||
261 | { /* 29 */ 119, 0 }, | ||
262 | { /* 30 */ 4, 0 }, | ||
263 | { /* 31 */ 7, 0 }, | ||
264 | { /* 32 */ 15, 0 }, | ||
265 | { /* 33 */ 16, 0 }, | ||
266 | { /* 34 */ 18, 0 }, | ||
267 | { /* 35 */ 20, 0 }, | ||
268 | { /* 36 */ 17, 0 }, | ||
269 | { /* 37 */ 11, 0 }, | ||
270 | { /* 38 */ 12, 0 }, | ||
271 | { /* 39 */ 14, 0 }, | ||
272 | { /* 40 */ 13, 0 } | ||
273 | }; | ||
diff --git a/lib/rbcodec/codecs/libfaad/common.c b/lib/rbcodec/codecs/libfaad/common.c new file mode 100644 index 0000000000..bedf56a212 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/common.c | |||
@@ -0,0 +1,440 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | /* just some common functions that could be used anywhere */ | ||
29 | |||
30 | #include "common.h" | ||
31 | #include "structs.h" | ||
32 | |||
33 | #include <stdlib.h> | ||
34 | #include "syntax.h" | ||
35 | |||
36 | |||
37 | /* Returns the sample rate index based on the samplerate */ | ||
38 | uint8_t get_sr_index(const uint32_t samplerate) | ||
39 | { | ||
40 | if (92017 <= samplerate) return 0; | ||
41 | if (75132 <= samplerate) return 1; | ||
42 | if (55426 <= samplerate) return 2; | ||
43 | if (46009 <= samplerate) return 3; | ||
44 | if (37566 <= samplerate) return 4; | ||
45 | if (27713 <= samplerate) return 5; | ||
46 | if (23004 <= samplerate) return 6; | ||
47 | if (18783 <= samplerate) return 7; | ||
48 | if (13856 <= samplerate) return 8; | ||
49 | if (11502 <= samplerate) return 9; | ||
50 | if (9391 <= samplerate) return 10; | ||
51 | if (16428320 <= samplerate) return 11; | ||
52 | |||
53 | return 11; | ||
54 | } | ||
55 | |||
56 | /* Returns the sample rate based on the sample rate index */ | ||
57 | uint32_t get_sample_rate(const uint8_t sr_index) | ||
58 | { | ||
59 | static const uint32_t sample_rates[] = | ||
60 | { | ||
61 | 96000, 88200, 64000, 48000, 44100, 32000, | ||
62 | 24000, 22050, 16000, 12000, 11025, 8000 | ||
63 | }; | ||
64 | |||
65 | if (sr_index < 12) | ||
66 | return sample_rates[sr_index]; | ||
67 | |||
68 | return 0; | ||
69 | } | ||
70 | |||
71 | uint8_t max_pred_sfb(const uint8_t sr_index) | ||
72 | { | ||
73 | static const uint8_t pred_sfb_max[] = | ||
74 | { | ||
75 | 33, 33, 38, 40, 40, 40, 41, 41, 37, 37, 37, 34 | ||
76 | }; | ||
77 | |||
78 | |||
79 | if (sr_index < 12) | ||
80 | return pred_sfb_max[sr_index]; | ||
81 | |||
82 | return 0; | ||
83 | } | ||
84 | |||
85 | uint8_t max_tns_sfb(const uint8_t sr_index, const uint8_t object_type, | ||
86 | const uint8_t is_short) | ||
87 | { | ||
88 | /* entry for each sampling rate | ||
89 | * 1 Main/LC long window | ||
90 | * 2 Main/LC short window | ||
91 | * 3 SSR long window | ||
92 | * 4 SSR short window | ||
93 | */ | ||
94 | static const uint8_t tns_sbf_max[][4] = | ||
95 | { | ||
96 | {31, 9, 28, 7}, /* 96000 */ | ||
97 | {31, 9, 28, 7}, /* 88200 */ | ||
98 | {34, 10, 27, 7}, /* 64000 */ | ||
99 | {40, 14, 26, 6}, /* 48000 */ | ||
100 | {42, 14, 26, 6}, /* 44100 */ | ||
101 | {51, 14, 26, 6}, /* 32000 */ | ||
102 | {46, 14, 29, 7}, /* 24000 */ | ||
103 | {46, 14, 29, 7}, /* 22050 */ | ||
104 | {42, 14, 23, 8}, /* 16000 */ | ||
105 | {42, 14, 23, 8}, /* 12000 */ | ||
106 | {42, 14, 23, 8}, /* 11025 */ | ||
107 | {39, 14, 19, 7}, /* 8000 */ | ||
108 | {39, 14, 19, 7}, /* 7350 */ | ||
109 | {0,0,0,0}, | ||
110 | {0,0,0,0}, | ||
111 | {0,0,0,0} | ||
112 | }; | ||
113 | uint8_t i = 0; | ||
114 | |||
115 | if (is_short) i++; | ||
116 | if (object_type == SSR) i += 2; | ||
117 | |||
118 | return tns_sbf_max[sr_index][i]; | ||
119 | } | ||
120 | |||
121 | /* Returns 0 if an object type is decodable, otherwise returns -1 */ | ||
122 | int8_t can_decode_ot(const uint8_t object_type) | ||
123 | { | ||
124 | switch (object_type) | ||
125 | { | ||
126 | case LC: | ||
127 | return 0; | ||
128 | case MAIN: | ||
129 | #ifdef MAIN_DEC | ||
130 | return 0; | ||
131 | #else | ||
132 | return -1; | ||
133 | #endif | ||
134 | case SSR: | ||
135 | #ifdef SSR_DEC | ||
136 | return 0; | ||
137 | #else | ||
138 | return -1; | ||
139 | #endif | ||
140 | case LTP: | ||
141 | #ifdef LTP_DEC | ||
142 | return 0; | ||
143 | #else | ||
144 | return -1; | ||
145 | #endif | ||
146 | |||
147 | /* ER object types */ | ||
148 | #ifdef ERROR_RESILIENCE | ||
149 | case ER_LC: | ||
150 | #ifdef DRM | ||
151 | case DRM_ER_LC: | ||
152 | #endif | ||
153 | return 0; | ||
154 | case ER_LTP: | ||
155 | #ifdef LTP_DEC | ||
156 | return 0; | ||
157 | #else | ||
158 | return -1; | ||
159 | #endif | ||
160 | case LD: | ||
161 | #ifdef LD_DEC | ||
162 | return 0; | ||
163 | #else | ||
164 | return -1; | ||
165 | #endif | ||
166 | #endif | ||
167 | } | ||
168 | |||
169 | return -1; | ||
170 | } | ||
171 | |||
172 | static const uint8_t Parity [256] = { // parity | ||
173 | 0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1, | ||
174 | 1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0, | ||
175 | 1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0, | ||
176 | 0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1, | ||
177 | 1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0, | ||
178 | 0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1, | ||
179 | 0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1, | ||
180 | 1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0 | ||
181 | }; | ||
182 | |||
183 | static uint32_t __r1 = 1; | ||
184 | static uint32_t __r2 = 1; | ||
185 | |||
186 | |||
187 | /* | ||
188 | * This is a simple random number generator with good quality for audio purposes. | ||
189 | * It consists of two polycounters with opposite rotation direction and different | ||
190 | * periods. The periods are coprime, so the total period is the product of both. | ||
191 | * | ||
192 | * ------------------------------------------------------------------------------------------------- | ||
193 | * +-> |31:30:29:28:27:26:25:24:23:22:21:20:19:18:17:16:15:14:13:12:11:10: 9: 8: 7: 6: 5: 4: 3: 2: 1: 0| | ||
194 | * | ------------------------------------------------------------------------------------------------- | ||
195 | * | | | | | | | | ||
196 | * | +--+--+--+-XOR-+--------+ | ||
197 | * | | | ||
198 | * +--------------------------------------------------------------------------------------+ | ||
199 | * | ||
200 | * ------------------------------------------------------------------------------------------------- | ||
201 | * |31:30:29:28:27:26:25:24:23:22:21:20:19:18:17:16:15:14:13:12:11:10: 9: 8: 7: 6: 5: 4: 3: 2: 1: 0| <-+ | ||
202 | * ------------------------------------------------------------------------------------------------- | | ||
203 | * | | | | | | ||
204 | * +--+----XOR----+--+ | | ||
205 | * | | | ||
206 | * +----------------------------------------------------------------------------------------+ | ||
207 | * | ||
208 | * | ||
209 | * The first has an period of 3*5*17*257*65537, the second of 7*47*73*178481, | ||
210 | * which gives a period of 18.410.713.077.675.721.215. The result is the | ||
211 | * XORed values of both generators. | ||
212 | */ | ||
213 | uint32_t random_int(void) | ||
214 | { | ||
215 | uint32_t t1, t2, t3, t4; | ||
216 | |||
217 | t3 = t1 = __r1; t4 = t2 = __r2; // Parity calculation is done via table lookup, this is also available | ||
218 | t1 &= 0xF5; t2 >>= 25; // on CPUs without parity, can be implemented in C and avoid unpredictable | ||
219 | t1 = Parity [t1]; t2 &= 0x63; // jumps and slow rotate through the carry flag operations. | ||
220 | t1 <<= 31; t2 = Parity [t2]; | ||
221 | |||
222 | return (__r1 = (t3 >> 1) | t1 ) ^ (__r2 = (t4 + t4) | t2 ); | ||
223 | } | ||
224 | |||
225 | #define floor_log2(x) bs_generic(x, BS_LOG2) | ||
226 | |||
227 | #ifdef FIXED_POINT | ||
228 | |||
229 | #define TABLE_BITS 6 | ||
230 | /* just take the maximum number of bits for interpolation */ | ||
231 | #define INTERP_BITS (REAL_BITS-TABLE_BITS) | ||
232 | |||
233 | static const real_t pow2_tab[] ICONST_ATTR = { | ||
234 | REAL_CONST(1.000000000000000), REAL_CONST(1.010889286051701), REAL_CONST(1.021897148654117), | ||
235 | REAL_CONST(1.033024879021228), REAL_CONST(1.044273782427414), REAL_CONST(1.055645178360557), | ||
236 | REAL_CONST(1.067140400676824), REAL_CONST(1.078760797757120), REAL_CONST(1.090507732665258), | ||
237 | REAL_CONST(1.102382583307841), REAL_CONST(1.114386742595892), REAL_CONST(1.126521618608242), | ||
238 | REAL_CONST(1.138788634756692), REAL_CONST(1.151189229952983), REAL_CONST(1.163724858777578), | ||
239 | REAL_CONST(1.176396991650281), REAL_CONST(1.189207115002721), REAL_CONST(1.202156731452703), | ||
240 | REAL_CONST(1.215247359980469), REAL_CONST(1.228480536106870), REAL_CONST(1.241857812073484), | ||
241 | REAL_CONST(1.255380757024691), REAL_CONST(1.269050957191733), REAL_CONST(1.282870016078778), | ||
242 | REAL_CONST(1.296839554651010), REAL_CONST(1.310961211524764), REAL_CONST(1.325236643159741), | ||
243 | REAL_CONST(1.339667524053303), REAL_CONST(1.354255546936893), REAL_CONST(1.369002422974591), | ||
244 | REAL_CONST(1.383909881963832), REAL_CONST(1.398979672538311), REAL_CONST(1.414213562373095), | ||
245 | REAL_CONST(1.429613338391970), REAL_CONST(1.445180806977047), REAL_CONST(1.460917794180647), | ||
246 | REAL_CONST(1.476826145939499), REAL_CONST(1.492907728291265), REAL_CONST(1.509164427593423), | ||
247 | REAL_CONST(1.525598150744538), REAL_CONST(1.542210825407941), REAL_CONST(1.559004400237837), | ||
248 | REAL_CONST(1.575980845107887), REAL_CONST(1.593142151342267), REAL_CONST(1.610490331949254), | ||
249 | REAL_CONST(1.628027421857348), REAL_CONST(1.645755478153965), REAL_CONST(1.663676580326736), | ||
250 | REAL_CONST(1.681792830507429), REAL_CONST(1.700106353718524), REAL_CONST(1.718619298122478), | ||
251 | REAL_CONST(1.737333835273706), REAL_CONST(1.756252160373300), REAL_CONST(1.775376492526521), | ||
252 | REAL_CONST(1.794709075003107), REAL_CONST(1.814252175500399), REAL_CONST(1.834008086409342), | ||
253 | REAL_CONST(1.853979125083386), REAL_CONST(1.874167634110300), REAL_CONST(1.894575981586966), | ||
254 | REAL_CONST(1.915206561397147), REAL_CONST(1.936061793492294), REAL_CONST(1.957144124175400), | ||
255 | REAL_CONST(1.978456026387951), REAL_CONST(2.000000000000000) | ||
256 | }; | ||
257 | |||
258 | static const real_t log2_tab[] ICONST_ATTR_FAAD_LARGE_IRAM = { | ||
259 | REAL_CONST(0.000000000000000), REAL_CONST(0.022367813028455), REAL_CONST(0.044394119358453), | ||
260 | REAL_CONST(0.066089190457772), REAL_CONST(0.087462841250339), REAL_CONST(0.108524456778169), | ||
261 | REAL_CONST(0.129283016944966), REAL_CONST(0.149747119504682), REAL_CONST(0.169925001442312), | ||
262 | REAL_CONST(0.189824558880017), REAL_CONST(0.209453365628950), REAL_CONST(0.228818690495881), | ||
263 | REAL_CONST(0.247927513443585), REAL_CONST(0.266786540694901), REAL_CONST(0.285402218862248), | ||
264 | REAL_CONST(0.303780748177103), REAL_CONST(0.321928094887362), REAL_CONST(0.339850002884625), | ||
265 | REAL_CONST(0.357552004618084), REAL_CONST(0.375039431346925), REAL_CONST(0.392317422778760), | ||
266 | REAL_CONST(0.409390936137702), REAL_CONST(0.426264754702098), REAL_CONST(0.442943495848728), | ||
267 | REAL_CONST(0.459431618637297), REAL_CONST(0.475733430966398), REAL_CONST(0.491853096329675), | ||
268 | REAL_CONST(0.507794640198696), REAL_CONST(0.523561956057013), REAL_CONST(0.539158811108031), | ||
269 | REAL_CONST(0.554588851677637), REAL_CONST(0.569855608330948), REAL_CONST(0.584962500721156), | ||
270 | REAL_CONST(0.599912842187128), REAL_CONST(0.614709844115208), REAL_CONST(0.629356620079610), | ||
271 | REAL_CONST(0.643856189774725), REAL_CONST(0.658211482751795), REAL_CONST(0.672425341971496), | ||
272 | REAL_CONST(0.686500527183218), REAL_CONST(0.700439718141092), REAL_CONST(0.714245517666123), | ||
273 | REAL_CONST(0.727920454563199), REAL_CONST(0.741466986401147), REAL_CONST(0.754887502163469), | ||
274 | REAL_CONST(0.768184324776926), REAL_CONST(0.781359713524660), REAL_CONST(0.794415866350106), | ||
275 | REAL_CONST(0.807354922057604), REAL_CONST(0.820178962415188), REAL_CONST(0.832890014164742), | ||
276 | REAL_CONST(0.845490050944375), REAL_CONST(0.857980995127572), REAL_CONST(0.870364719583405), | ||
277 | REAL_CONST(0.882643049361841), REAL_CONST(0.894817763307943), REAL_CONST(0.906890595608519), | ||
278 | REAL_CONST(0.918863237274595), REAL_CONST(0.930737337562886), REAL_CONST(0.942514505339240), | ||
279 | REAL_CONST(0.954196310386875), REAL_CONST(0.965784284662087), REAL_CONST(0.977279923499917), | ||
280 | REAL_CONST(0.988684686772166), REAL_CONST(1.000000000000000) | ||
281 | }; | ||
282 | |||
283 | uint32_t pow2_fix(real_t val) | ||
284 | { | ||
285 | uint32_t x1, x2; | ||
286 | uint32_t errcorr; | ||
287 | uint32_t index_frac; | ||
288 | uint32_t retval; | ||
289 | int32_t whole = (val >> REAL_BITS); | ||
290 | |||
291 | /* rest = [0..1] */ | ||
292 | int32_t rest = val - (whole << REAL_BITS); | ||
293 | |||
294 | /* index into pow2_tab */ | ||
295 | int32_t index = (rest >> (REAL_BITS-TABLE_BITS)) & ((1<<TABLE_BITS)-1); | ||
296 | |||
297 | |||
298 | if (val == 0) | ||
299 | return (1<<REAL_BITS); | ||
300 | |||
301 | /* leave INTERP_BITS bits */ | ||
302 | index_frac = rest >> (REAL_BITS-TABLE_BITS-INTERP_BITS); | ||
303 | index_frac = index_frac & ((1<<INTERP_BITS)-1); | ||
304 | |||
305 | if (whole >= 0) | ||
306 | retval = REAL_CONST(1) << whole; | ||
307 | else | ||
308 | retval = REAL_CONST(1) >> -whole; | ||
309 | |||
310 | x1 = pow2_tab[index ]; | ||
311 | x2 = pow2_tab[index + 1]; | ||
312 | errcorr = (index_frac*(x2-x1)) >> INTERP_BITS; | ||
313 | |||
314 | retval = MUL_R(retval, (errcorr + x1)); | ||
315 | |||
316 | return retval; | ||
317 | } | ||
318 | |||
319 | uint32_t pow2_int(real_t val) | ||
320 | { | ||
321 | uint32_t x1, x2; | ||
322 | uint32_t errcorr; | ||
323 | uint32_t index_frac; | ||
324 | uint32_t retval; | ||
325 | int32_t whole = (val >> REAL_BITS); | ||
326 | |||
327 | /* rest = [0..1] */ | ||
328 | int32_t rest = val - (whole << REAL_BITS); | ||
329 | |||
330 | /* index into pow2_tab */ | ||
331 | int32_t index = (rest >> (REAL_BITS-TABLE_BITS)) & ((1<<TABLE_BITS)-1); | ||
332 | |||
333 | |||
334 | if (val == 0) | ||
335 | return 1; | ||
336 | |||
337 | /* leave INTERP_BITS bits */ | ||
338 | index_frac = rest >> (REAL_BITS-TABLE_BITS-INTERP_BITS); | ||
339 | index_frac = index_frac & ((1<<INTERP_BITS)-1); | ||
340 | |||
341 | if (whole >= 0) | ||
342 | retval = 1 << whole; | ||
343 | else | ||
344 | retval = 1 >> -whole; | ||
345 | |||
346 | x1 = pow2_tab[index ]; | ||
347 | x2 = pow2_tab[index + 1]; | ||
348 | errcorr = (index_frac*(x2-x1)) >> INTERP_BITS; | ||
349 | |||
350 | retval = MUL_R(retval, (errcorr + x1)); | ||
351 | |||
352 | return retval; | ||
353 | } | ||
354 | |||
355 | /* ld(x) = ld(x*y/y) = ld(x/y) + ld(y), with y=2^N and [1 <= (x/y) < 2] */ | ||
356 | int32_t log2_int(uint32_t val) | ||
357 | { | ||
358 | uint32_t frac; | ||
359 | int32_t exp = 0; | ||
360 | uint32_t index; | ||
361 | uint32_t index_frac; | ||
362 | uint32_t x1, x2; | ||
363 | uint32_t errcorr; | ||
364 | |||
365 | /* error */ | ||
366 | if (val == 0) | ||
367 | return -10000; | ||
368 | |||
369 | exp = floor_log2(val); | ||
370 | exp -= REAL_BITS; | ||
371 | |||
372 | /* frac = [1..2] */ | ||
373 | if (exp >= 0) | ||
374 | frac = val >> exp; | ||
375 | else | ||
376 | frac = val << -exp; | ||
377 | |||
378 | /* index in the log2 table */ | ||
379 | index = frac >> (REAL_BITS-TABLE_BITS); | ||
380 | |||
381 | /* leftover part for linear interpolation */ | ||
382 | index_frac = frac & ((1<<(REAL_BITS-TABLE_BITS))-1); | ||
383 | |||
384 | /* leave INTERP_BITS bits */ | ||
385 | index_frac = index_frac >> (REAL_BITS-TABLE_BITS-INTERP_BITS); | ||
386 | |||
387 | x1 = log2_tab[index & ((1<<TABLE_BITS)-1)]; | ||
388 | x2 = log2_tab[(index & ((1<<TABLE_BITS)-1)) + 1]; | ||
389 | |||
390 | /* linear interpolation */ | ||
391 | /* retval = exp + ((index_frac)*x2 + (1-index_frac)*x1) */ | ||
392 | |||
393 | errcorr = (index_frac * (x2-x1)) >> INTERP_BITS; | ||
394 | |||
395 | return ((exp+REAL_BITS) << REAL_BITS) + errcorr + x1; | ||
396 | } | ||
397 | |||
398 | /* ld(x) = ld(x*y/y) = ld(x/y) + ld(y), with y=2^N and [1 <= (x/y) < 2] */ | ||
399 | real_t log2_fix(uint32_t val) | ||
400 | { | ||
401 | uint32_t frac; | ||
402 | int8_t exp = 0; | ||
403 | uint32_t index; | ||
404 | uint32_t index_frac; | ||
405 | uint32_t x1, x2; | ||
406 | uint32_t errcorr; | ||
407 | |||
408 | /* error */ | ||
409 | if (val == 0) | ||
410 | return -100000; | ||
411 | |||
412 | exp = floor_log2(val); | ||
413 | exp -= REAL_BITS; | ||
414 | |||
415 | /* frac = [1..2] */ | ||
416 | if (exp >= 0) | ||
417 | frac = val >> exp; | ||
418 | else | ||
419 | frac = val << -exp; | ||
420 | |||
421 | /* index in the log2 table */ | ||
422 | index = frac >> (REAL_BITS-TABLE_BITS); | ||
423 | |||
424 | /* leftover part for linear interpolation */ | ||
425 | index_frac = frac & ((1<<(REAL_BITS-TABLE_BITS))-1); | ||
426 | |||
427 | /* leave INTERP_BITS bits */ | ||
428 | index_frac = index_frac >> (REAL_BITS-TABLE_BITS-INTERP_BITS); | ||
429 | |||
430 | x1 = log2_tab[index & ((1<<TABLE_BITS)-1)]; | ||
431 | x2 = log2_tab[(index & ((1<<TABLE_BITS)-1)) + 1]; | ||
432 | |||
433 | /* linear interpolation */ | ||
434 | /* retval = exp + ((index_frac)*x2 + (1-index_frac)*x1) */ | ||
435 | |||
436 | errcorr = (index_frac * (x2-x1)) >> INTERP_BITS; | ||
437 | |||
438 | return (exp << REAL_BITS) + errcorr + x1; | ||
439 | } | ||
440 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/common.h b/lib/rbcodec/codecs/libfaad/common.h new file mode 100644 index 0000000000..720042b4aa --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/common.h | |||
@@ -0,0 +1,475 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __COMMON_H__ | ||
29 | #define __COMMON_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | #include "faad_config.h" | ||
36 | #include "codeclib.h" | ||
37 | |||
38 | extern struct codec_api* ci; | ||
39 | |||
40 | #if defined(DEBUG) || defined(SIMULATOR) | ||
41 | #undef DEBUGF | ||
42 | #define DEBUGF ci->debugf | ||
43 | #else | ||
44 | #define DEBUGF(...) | ||
45 | #endif | ||
46 | |||
47 | #ifdef ROCKBOX_HAS_LOGF | ||
48 | #undef LOGF | ||
49 | #define LOGF ci->logf | ||
50 | #else | ||
51 | #define LOGF(...) | ||
52 | #endif | ||
53 | |||
54 | #if (CONFIG_CPU == MCF5250) | ||
55 | /* Enough IRAM but performance suffers with ICODE_ATTR. */ | ||
56 | #define IBSS_ATTR_FAAD_LARGE_IRAM IBSS_ATTR | ||
57 | #define ICODE_ATTR_FAAD_LARGE_IRAM | ||
58 | #define ICONST_ATTR_FAAD_LARGE_IRAM ICONST_ATTR | ||
59 | #define IBSS_ATTR_FAAD_XLR | ||
60 | |||
61 | #elif (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024) | ||
62 | /* Enough IRAM to move additional data and code to it. */ | ||
63 | #define IBSS_ATTR_FAAD_LARGE_IRAM IBSS_ATTR | ||
64 | #define ICODE_ATTR_FAAD_LARGE_IRAM ICODE_ATTR | ||
65 | #define ICONST_ATTR_FAAD_LARGE_IRAM ICONST_ATTR | ||
66 | #define IBSS_ATTR_FAAD_XLR | ||
67 | |||
68 | #elif defined(CPU_S5L870X) | ||
69 | /* Very large IRAM. Move even more data to it. */ | ||
70 | #define IBSS_ATTR_FAAD_LARGE_IRAM IBSS_ATTR | ||
71 | #define ICODE_ATTR_FAAD_LARGE_IRAM ICODE_ATTR | ||
72 | #define ICONST_ATTR_FAAD_LARGE_IRAM ICONST_ATTR | ||
73 | #define IBSS_ATTR_FAAD_XLR IBSS_ATTR | ||
74 | #define HAVE_FAAD_XLR_IN_IRAM | ||
75 | |||
76 | #else | ||
77 | /* Not enough IRAM available. */ | ||
78 | #define IBSS_ATTR_FAAD_LARGE_IRAM | ||
79 | #define ICODE_ATTR_FAAD_LARGE_IRAM | ||
80 | #define ICONST_ATTR_FAAD_LARGE_IRAM | ||
81 | #define IBSS_ATTR_FAAD_XLR | ||
82 | #endif | ||
83 | |||
84 | /* Used to allocate several SBR + PS arrays and variables statically. */ | ||
85 | //#define FAAD_STATIC_ALLOC | ||
86 | |||
87 | #define INLINE __inline | ||
88 | #if 0 //defined(_WIN32) && !defined(_WIN32_WCE) | ||
89 | #define ALIGN __declspec(align(16)) | ||
90 | #else | ||
91 | #define ALIGN | ||
92 | #endif | ||
93 | |||
94 | #ifndef max | ||
95 | #define max(a, b) (((a) > (b)) ? (a) : (b)) | ||
96 | #endif | ||
97 | #ifndef min | ||
98 | #define min(a, b) (((a) < (b)) ? (a) : (b)) | ||
99 | #endif | ||
100 | |||
101 | /* COMPILE TIME DEFINITIONS */ | ||
102 | |||
103 | /* use double precision */ | ||
104 | /* #define USE_DOUBLE_PRECISION */ | ||
105 | /* use fixed point reals */ | ||
106 | #define FIXED_POINT | ||
107 | #define BIG_IQ_TABLE /* BIG_IQ_TABLE results in faster requantization */ | ||
108 | |||
109 | /* Use if target platform has address generators with autoincrement */ | ||
110 | //#define PREFER_POINTERS | ||
111 | |||
112 | #define ERROR_RESILIENCE | ||
113 | |||
114 | |||
115 | /* Allow decoding of MAIN profile AAC */ | ||
116 | #define MAIN_DEC | ||
117 | /* Allow decoding of SSR profile AAC */ | ||
118 | #define SSR_DEC | ||
119 | /* Allow decoding of LTP profile AAC */ | ||
120 | #define LTP_DEC | ||
121 | /* Allow decoding of LD profile AAC */ | ||
122 | #define LD_DEC | ||
123 | /* Allow decoding of scalable profiles */ | ||
124 | //#define SCALABLE_DEC | ||
125 | /* Allow decoding of Digital Radio Mondiale (DRM) */ | ||
126 | //#define DRM | ||
127 | //#define DRM_PS | ||
128 | |||
129 | /* LD can't do without LTP */ | ||
130 | #ifdef LD_DEC | ||
131 | #ifndef ERROR_RESILIENCE | ||
132 | #define ERROR_RESILIENCE | ||
133 | #endif | ||
134 | #ifndef LTP_DEC | ||
135 | #define LTP_DEC | ||
136 | #endif | ||
137 | #endif | ||
138 | |||
139 | #define ALLOW_SMALL_FRAMELENGTH | ||
140 | |||
141 | |||
142 | // Define LC_ONLY_DECODER if you want a pure AAC LC decoder (independant of SBR_DEC and PS_DEC) | ||
143 | #define LC_ONLY_DECODER | ||
144 | #ifdef LC_ONLY_DECODER | ||
145 | #undef LD_DEC | ||
146 | #undef LTP_DEC | ||
147 | #undef MAIN_DEC | ||
148 | #undef SSR_DEC | ||
149 | #undef DRM | ||
150 | #undef ALLOW_SMALL_FRAMELENGTH | ||
151 | #undef ERROR_RESILIENCE | ||
152 | #endif | ||
153 | |||
154 | #if CODEC_SIZE >= 0x80000 | ||
155 | #define SBR_DEC | ||
156 | //#define SBR_LOW_POWER /* Does not work yet in rockbox. */ | ||
157 | #define PS_DEC | ||
158 | #endif | ||
159 | |||
160 | /* FIXED POINT: No MAIN decoding */ | ||
161 | #ifdef FIXED_POINT | ||
162 | # ifdef MAIN_DEC | ||
163 | # undef MAIN_DEC | ||
164 | # endif | ||
165 | #endif // FIXED_POINT | ||
166 | |||
167 | #ifdef DRM | ||
168 | # ifndef SCALABLE_DEC | ||
169 | # define SCALABLE_DEC | ||
170 | # endif | ||
171 | #endif | ||
172 | |||
173 | |||
174 | #ifdef FIXED_POINT | ||
175 | #define DIV_R(A, B) (((int64_t)A << REAL_BITS)/B) | ||
176 | #define DIV_C(A, B) (((int64_t)A << COEF_BITS)/B) | ||
177 | #define DIV_Q(A, B) (((int64_t)A << Q2_BITS )/B) | ||
178 | #else | ||
179 | #define DIV_R(A, B) ((A)/(B)) | ||
180 | #define DIV_C(A, B) ((A)/(B)) | ||
181 | #define DIV_Q(A, B) ((A)/(B)) | ||
182 | #endif | ||
183 | |||
184 | #ifndef SBR_LOW_POWER | ||
185 | #define qmf_t complex_t | ||
186 | #define QMF_RE(A) RE(A) | ||
187 | #define QMF_IM(A) IM(A) | ||
188 | #else | ||
189 | #define qmf_t real_t | ||
190 | #define QMF_RE(A) (A) | ||
191 | #define QMF_IM(A) | ||
192 | #endif | ||
193 | |||
194 | |||
195 | /* END COMPILE TIME DEFINITIONS */ | ||
196 | |||
197 | #if defined(_WIN32) && !defined(__MINGW32__) | ||
198 | |||
199 | #include <stdlib.h> | ||
200 | |||
201 | typedef unsigned __int64 uint64_t; | ||
202 | typedef unsigned __int32 uint32_t; | ||
203 | typedef unsigned __int16 uint16_t; | ||
204 | typedef unsigned __int8 uint8_t; | ||
205 | typedef __int64 int64_t; | ||
206 | typedef __int32 int32_t; | ||
207 | typedef __int16 int16_t; | ||
208 | typedef __int8 int8_t; | ||
209 | typedef float float32_t; | ||
210 | |||
211 | |||
212 | #else | ||
213 | |||
214 | #include <stdio.h> | ||
215 | #ifdef HAVE_SYS_TYPES_H | ||
216 | # include "inttypes.h" | ||
217 | #endif | ||
218 | #ifdef HAVE_SYS_STAT_H | ||
219 | # include <sys/stat.h> | ||
220 | #endif | ||
221 | #ifdef STDC_HEADERS | ||
222 | # include <stdlib.h> | ||
223 | # include <stddef.h> | ||
224 | #else | ||
225 | # ifdef HAVE_STDLIB_H | ||
226 | # include <stdlib.h> | ||
227 | # endif | ||
228 | #endif | ||
229 | #ifdef HAVE_STRING_H | ||
230 | # if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H) | ||
231 | # include <memory.h> | ||
232 | # endif | ||
233 | //# include <string.h> | ||
234 | #endif | ||
235 | #ifdef HAVE_STRINGS_H | ||
236 | //# include <strings.h> | ||
237 | #endif | ||
238 | #ifdef HAVE_INTTYPES_H | ||
239 | # include <inttypes.h> | ||
240 | #else | ||
241 | # ifdef HAVE_STDINT_H | ||
242 | # include <stdint.h> | ||
243 | # else | ||
244 | /* we need these... */ | ||
245 | typedef unsigned long long uint64_t; | ||
246 | typedef unsigned long uint32_t; | ||
247 | typedef unsigned short uint16_t; | ||
248 | typedef unsigned char uint8_t; | ||
249 | typedef long long int64_t; | ||
250 | typedef long int32_t; | ||
251 | typedef short int16_t; | ||
252 | typedef char int8_t; | ||
253 | # endif | ||
254 | #endif | ||
255 | #ifdef HAVE_UNISTD_H | ||
256 | # include <unistd.h> | ||
257 | #endif | ||
258 | |||
259 | #ifndef HAVE_FLOAT32_T | ||
260 | typedef float float32_t; | ||
261 | #endif | ||
262 | |||
263 | #if STDC_HEADERS | ||
264 | //# include <string.h> | ||
265 | #else | ||
266 | # if !HAVE_STRCHR | ||
267 | # define strchr index | ||
268 | # define strrchr rindex | ||
269 | # endif | ||
270 | char *strchr(), *strrchr(); | ||
271 | # if !HAVE_MEMCPY | ||
272 | # define memcpy(d, s, n) bcopy((s), (d), (n)) | ||
273 | # define memmove(d, s, n) bcopy((s), (d), (n)) | ||
274 | # endif | ||
275 | #endif | ||
276 | |||
277 | #endif | ||
278 | |||
279 | #ifdef WORDS_BIGENDIAN | ||
280 | #define ARCH_IS_BIG_ENDIAN | ||
281 | #endif | ||
282 | |||
283 | /* FIXED_POINT doesn't work with MAIN and SSR yet */ | ||
284 | #ifdef FIXED_POINT | ||
285 | #undef MAIN_DEC | ||
286 | #undef SSR_DEC | ||
287 | #endif | ||
288 | |||
289 | |||
290 | #if defined(FIXED_POINT) | ||
291 | |||
292 | #include "fixed.h" | ||
293 | |||
294 | #elif defined(USE_DOUBLE_PRECISION) | ||
295 | |||
296 | typedef double real_t; | ||
297 | |||
298 | #include <math.h> | ||
299 | |||
300 | #define MUL_R(A,B) ((A)*(B)) | ||
301 | #define MUL_C(A,B) ((A)*(B)) | ||
302 | #define MUL_F(A,B) ((A)*(B)) | ||
303 | #define MUL_Q2(A,B) ((A)*(B)) | ||
304 | |||
305 | /* Complex multiplication */ | ||
306 | static INLINE void ComplexMult(real_t *y1, real_t *y2, | ||
307 | real_t x1, real_t x2, real_t c1, real_t c2) | ||
308 | { | ||
309 | *y1 = MUL_F(x1, c1) + MUL_F(x2, c2); | ||
310 | *y2 = MUL_F(x2, c1) - MUL_F(x1, c2); | ||
311 | } | ||
312 | |||
313 | #define REAL_CONST(A) ((real_t)(A)) | ||
314 | #define COEF_CONST(A) ((real_t)(A)) | ||
315 | #define Q2_CONST(A) ((real_t)(A)) | ||
316 | #define FRAC_CONST(A) ((real_t)(A)) /* pure fractional part */ | ||
317 | |||
318 | #else /* Normal floating point operation */ | ||
319 | |||
320 | typedef float real_t; | ||
321 | |||
322 | #define MUL_R(A,B) ((A)*(B)) | ||
323 | #define MUL_C(A,B) ((A)*(B)) | ||
324 | #define MUL_F(A,B) ((A)*(B)) | ||
325 | #define MUL_Q2(A,B) ((A)*(B)) | ||
326 | |||
327 | #define REAL_CONST(A) ((real_t)(A)) | ||
328 | #define COEF_CONST(A) ((real_t)(A)) | ||
329 | #define Q2_CONST(A) ((real_t)(A)) | ||
330 | #define FRAC_CONST(A) ((real_t)(A)) /* pure fractional part */ | ||
331 | |||
332 | /* Complex multiplication */ | ||
333 | static INLINE void ComplexMult(real_t *y1, real_t *y2, | ||
334 | real_t x1, real_t x2, real_t c1, real_t c2) | ||
335 | { | ||
336 | *y1 = MUL_F(x1, c1) + MUL_F(x2, c2); | ||
337 | *y2 = MUL_F(x2, c1) - MUL_F(x1, c2); | ||
338 | } | ||
339 | |||
340 | /* rockbox: must be commented to build for non-FP | ||
341 | #if defined(_WIN32) && !defined(__MINGW32__) | ||
342 | #define HAS_LRINTF | ||
343 | static INLINE int lrintf(float f) | ||
344 | { | ||
345 | int i; | ||
346 | __asm | ||
347 | { | ||
348 | fld f | ||
349 | fistp i | ||
350 | } | ||
351 | return i; | ||
352 | } | ||
353 | #elif (defined(__i386__) && defined(__GNUC__)) | ||
354 | #define HAS_LRINTF | ||
355 | // from http://www.stereopsis.com/FPU.html | ||
356 | static INLINE int lrintf(float f) | ||
357 | { | ||
358 | int i; | ||
359 | __asm__ __volatile__ ( | ||
360 | "flds %1 \n\t" | ||
361 | "fistpl %0 \n\t" | ||
362 | : "=m" (i) | ||
363 | : "m" (f)); | ||
364 | return i; | ||
365 | } | ||
366 | #endif | ||
367 | */ | ||
368 | |||
369 | #ifdef __ICL /* only Intel C compiler has fmath ??? */ | ||
370 | |||
371 | #include <mathf.h> | ||
372 | |||
373 | #define sin sinf | ||
374 | #define cos cosf | ||
375 | #define log logf | ||
376 | #define floor floorf | ||
377 | #define ceil ceilf | ||
378 | #define sqrt sqrtf | ||
379 | |||
380 | #else | ||
381 | |||
382 | #ifdef HAVE_LRINTF | ||
383 | # define HAS_LRINTF | ||
384 | # define _ISOC9X_SOURCE 1 | ||
385 | # define _ISOC99_SOURCE 1 | ||
386 | # define __USE_ISOC9X 1 | ||
387 | # define __USE_ISOC99 1 | ||
388 | #endif | ||
389 | |||
390 | #include <math.h> | ||
391 | |||
392 | #ifdef HAVE_SINF | ||
393 | # define sin sinf | ||
394 | #error | ||
395 | #endif | ||
396 | #ifdef HAVE_COSF | ||
397 | # define cos cosf | ||
398 | #endif | ||
399 | #ifdef HAVE_LOGF | ||
400 | # define log logf | ||
401 | #endif | ||
402 | #ifdef HAVE_EXPF | ||
403 | # define exp expf | ||
404 | #endif | ||
405 | #ifdef HAVE_FLOORF | ||
406 | # define floor floorf | ||
407 | #endif | ||
408 | #ifdef HAVE_CEILF | ||
409 | # define ceil ceilf | ||
410 | #endif | ||
411 | #ifdef HAVE_SQRTF | ||
412 | # define sqrt sqrtf | ||
413 | #endif | ||
414 | |||
415 | #endif | ||
416 | |||
417 | #endif | ||
418 | |||
419 | #ifndef HAS_LRINTF | ||
420 | /* standard cast */ | ||
421 | #define lrintf(f) ((int32_t)(f)) | ||
422 | #endif | ||
423 | |||
424 | typedef real_t complex_t[2]; | ||
425 | #define RE(A) A[0] | ||
426 | #define IM(A) A[1] | ||
427 | |||
428 | |||
429 | /* common functions */ | ||
430 | uint8_t cpu_has_sse(void); | ||
431 | uint32_t random_int(void); | ||
432 | #define wl_min_lzc(x) bs_generic(x, BS_LOG2|BS_0_0) | ||
433 | #ifdef FIXED_POINT | ||
434 | #define LOG2_MIN_INF REAL_CONST(-10000) | ||
435 | int32_t log2_int(uint32_t val); | ||
436 | int32_t log2_fix(uint32_t val); | ||
437 | uint32_t pow2_int(real_t val); | ||
438 | uint32_t pow2_fix(real_t val); | ||
439 | #endif | ||
440 | uint8_t get_sr_index(const uint32_t samplerate); | ||
441 | uint8_t max_pred_sfb(const uint8_t sr_index); | ||
442 | uint8_t max_tns_sfb(const uint8_t sr_index, const uint8_t object_type, | ||
443 | const uint8_t is_short); | ||
444 | uint32_t get_sample_rate(const uint8_t sr_index); | ||
445 | int8_t can_decode_ot(const uint8_t object_type); | ||
446 | |||
447 | #ifndef FAAD_STATIC_ALLOC | ||
448 | /* Those should not be defined or used anymore */ | ||
449 | #define faad_malloc(A) malloc(A) | ||
450 | #define faad_free(A) free(A) | ||
451 | #endif | ||
452 | |||
453 | //#define PROFILE | ||
454 | #ifdef PROFILE | ||
455 | static int64_t faad_get_ts() | ||
456 | { | ||
457 | __asm | ||
458 | { | ||
459 | rdtsc | ||
460 | } | ||
461 | } | ||
462 | #endif | ||
463 | |||
464 | #ifndef M_PI | ||
465 | #define M_PI 3.14159265358979323846 | ||
466 | #endif | ||
467 | #ifndef M_PI_2 /* PI/2 */ | ||
468 | #define M_PI_2 1.57079632679489661923 | ||
469 | #endif | ||
470 | |||
471 | |||
472 | #ifdef __cplusplus | ||
473 | } | ||
474 | #endif | ||
475 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/decoder.c b/lib/rbcodec/codecs/libfaad/decoder.c new file mode 100644 index 0000000000..d68d093b0b --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/decoder.c | |||
@@ -0,0 +1,1029 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #include "common.h" | ||
29 | #include "structs.h" | ||
30 | |||
31 | #include <stdlib.h> | ||
32 | #include <string.h> | ||
33 | |||
34 | #include "decoder.h" | ||
35 | #include "mp4.h" | ||
36 | #include "syntax.h" | ||
37 | #include "error.h" | ||
38 | /* rockbox: not used | ||
39 | #include "output.h" | ||
40 | */ | ||
41 | #include "filtbank.h" | ||
42 | #include "drc.h" | ||
43 | #ifdef SBR_DEC | ||
44 | #include "sbr_dec.h" | ||
45 | #include "sbr_syntax.h" | ||
46 | #endif | ||
47 | #ifdef SSR_DEC | ||
48 | #include "ssr.h" | ||
49 | #endif | ||
50 | |||
51 | /* Globals */ | ||
52 | #ifdef ANALYSIS | ||
53 | uint16_t dbg_count; | ||
54 | #endif | ||
55 | |||
56 | /* static variables */ | ||
57 | static NeAACDecStruct s_AACDec; | ||
58 | static real_t s_fb_intermed [MAX_CHANNELS][1*FRAME_LEN] IBSS_ATTR_FAAD_LARGE_IRAM MEM_ALIGN_ATTR; | ||
59 | static real_t s_time_buf_1024[MAX_CHANNELS][1*FRAME_LEN] IBSS_ATTR_FAAD_LARGE_IRAM MEM_ALIGN_ATTR; | ||
60 | #ifdef SBR_DEC | ||
61 | #ifdef FAAD_STATIC_ALLOC | ||
62 | static real_t s_time_buf_2048[MAX_CHANNELS][2*FRAME_LEN] MEM_ALIGN_ATTR; | ||
63 | #endif | ||
64 | #endif | ||
65 | #ifdef SSR_DEC | ||
66 | static real_t s_ssr_overlap [MAX_CHANNELS][2*FRAME_LEN] MEM_ALIGN_ATTR; | ||
67 | static real_t s_prev_fmd [MAX_CHANNELS][2*FRAME_LEN] MEM_ALIGN_ATTR; | ||
68 | #endif | ||
69 | #ifdef MAIN_DEC | ||
70 | static pred_state s_pred_stat[MAX_CHANNELS][1*FRAME_LEN] MEM_ALIGN_ATTR; | ||
71 | #endif | ||
72 | #ifdef LTP_DEC | ||
73 | static int16_t s_lt_pred_stat[MAX_CHANNELS][4*FRAME_LEN] MEM_ALIGN_ATTR; | ||
74 | #endif | ||
75 | |||
76 | |||
77 | /* static function declarations */ | ||
78 | static void* aac_frame_decode(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo, | ||
79 | uint8_t *buffer, uint32_t buffer_size); | ||
80 | /* not used by rockbox | ||
81 | static void create_channel_config(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo); | ||
82 | */ | ||
83 | |||
84 | char* NEAACDECAPI NeAACDecGetErrorMessage(uint8_t errcode) | ||
85 | { | ||
86 | if (errcode >= NUM_ERROR_MESSAGES) | ||
87 | return NULL; | ||
88 | return err_msg[errcode]; | ||
89 | } | ||
90 | |||
91 | /* rockbox: not used */ | ||
92 | #if 0 | ||
93 | uint32_t NEAACDECAPI NeAACDecGetCapabilities(void) | ||
94 | { | ||
95 | uint32_t cap = 0; | ||
96 | |||
97 | /* can't do without it */ | ||
98 | cap += LC_DEC_CAP; | ||
99 | |||
100 | #ifdef MAIN_DEC | ||
101 | cap += MAIN_DEC_CAP; | ||
102 | #endif | ||
103 | #ifdef LTP_DEC | ||
104 | cap += LTP_DEC_CAP; | ||
105 | #endif | ||
106 | #ifdef LD_DEC | ||
107 | cap += LD_DEC_CAP; | ||
108 | #endif | ||
109 | #ifdef ERROR_RESILIENCE | ||
110 | cap += ERROR_RESILIENCE_CAP; | ||
111 | #endif | ||
112 | #ifdef FIXED_POINT | ||
113 | cap += FIXED_POINT_CAP; | ||
114 | #endif | ||
115 | |||
116 | return cap; | ||
117 | } | ||
118 | #endif | ||
119 | |||
120 | NeAACDecHandle NEAACDECAPI NeAACDecOpen(void) | ||
121 | { | ||
122 | uint8_t i; | ||
123 | NeAACDecHandle hDecoder = NULL; | ||
124 | |||
125 | #if defined(CPU_COLDFIRE) | ||
126 | coldfire_set_macsr(EMAC_FRACTIONAL | EMAC_SATURATE); | ||
127 | #endif | ||
128 | |||
129 | hDecoder = &s_AACDec; | ||
130 | |||
131 | memset(hDecoder , 0, sizeof(NeAACDecStruct)); | ||
132 | memset(s_fb_intermed, 0, sizeof(s_fb_intermed)); | ||
133 | #ifdef SSR_DEC | ||
134 | memset(s_ssr_overlap, 0, sizeof(s_ssr_overlap)); | ||
135 | memset(s_prev_fmd , 0, sizeof(s_prev_fmd)); | ||
136 | #endif | ||
137 | #ifdef LTP_DEC | ||
138 | memset(s_lt_pred_stat, 0, sizeof(s_s_lt_pred_statpred_stat)); | ||
139 | #endif | ||
140 | |||
141 | hDecoder->config.outputFormat = FAAD_FMT_16BIT; | ||
142 | hDecoder->config.defObjectType = MAIN; | ||
143 | hDecoder->config.defSampleRate = 44100; | ||
144 | hDecoder->config.downMatrix = 0; | ||
145 | hDecoder->adts_header_present = 0; | ||
146 | hDecoder->adif_header_present = 0; | ||
147 | #ifdef ERROR_RESILIENCE | ||
148 | hDecoder->aacSectionDataResilienceFlag = 0; | ||
149 | hDecoder->aacScalefactorDataResilienceFlag = 0; | ||
150 | hDecoder->aacSpectralDataResilienceFlag = 0; | ||
151 | #endif | ||
152 | hDecoder->frameLength = FRAME_LEN; | ||
153 | |||
154 | hDecoder->frame = 0; | ||
155 | |||
156 | for (i = 0; i < MAX_CHANNELS; i++) | ||
157 | { | ||
158 | hDecoder->window_shape_prev[i] = 0; | ||
159 | hDecoder->time_out[i] = NULL; | ||
160 | hDecoder->fb_intermed[i] = s_fb_intermed[i]; | ||
161 | #ifdef SSR_DEC | ||
162 | hDecoder->ssr_overlap[i] = s_ssr_overlap[i]; | ||
163 | hDecoder->prev_fmd[i] = s_prev_fmd[i]; | ||
164 | for (int k = 0; k < 2048; k++) | ||
165 | hDecoder->prev_fmd[i][k] = REAL_CONST(-1); | ||
166 | #endif | ||
167 | #ifdef MAIN_DEC | ||
168 | hDecoder->pred_stat[i] = s_pred_stat[i]; | ||
169 | reset_all_predictors(hDecoder->pred_stat[channel], FRAME_LEN); | ||
170 | #endif | ||
171 | #ifdef LTP_DEC | ||
172 | hDecoder->ltp_lag[i] = 0; | ||
173 | hDecoder->lt_pred_stat[i] = s_lt_pred_stat[i]; | ||
174 | #endif | ||
175 | } | ||
176 | |||
177 | #ifdef SBR_DEC | ||
178 | for (i = 0; i < MAX_SYNTAX_ELEMENTS; i++) | ||
179 | { | ||
180 | hDecoder->sbr[i] = NULL; | ||
181 | } | ||
182 | #endif | ||
183 | |||
184 | hDecoder->drc = drc_init(REAL_CONST(1.0), REAL_CONST(1.0)); | ||
185 | |||
186 | return hDecoder; | ||
187 | } | ||
188 | |||
189 | NeAACDecConfigurationPtr NEAACDECAPI NeAACDecGetCurrentConfiguration(NeAACDecHandle hDecoder) | ||
190 | { | ||
191 | if (hDecoder) | ||
192 | { | ||
193 | NeAACDecConfigurationPtr config = &(hDecoder->config); | ||
194 | |||
195 | return config; | ||
196 | } | ||
197 | |||
198 | return NULL; | ||
199 | } | ||
200 | |||
201 | uint8_t NEAACDECAPI NeAACDecSetConfiguration(NeAACDecHandle hDecoder, | ||
202 | NeAACDecConfigurationPtr config) | ||
203 | { | ||
204 | if (hDecoder && config) | ||
205 | { | ||
206 | /* check if we can decode this object type */ | ||
207 | if (can_decode_ot(config->defObjectType) < 0) | ||
208 | return 0; | ||
209 | hDecoder->config.defObjectType = config->defObjectType; | ||
210 | |||
211 | /* samplerate: anything but 0 should be possible */ | ||
212 | if (config->defSampleRate == 0) | ||
213 | return 0; | ||
214 | hDecoder->config.defSampleRate = config->defSampleRate; | ||
215 | |||
216 | /* check output format */ | ||
217 | #ifdef FIXED_POINT | ||
218 | if ((config->outputFormat < 1) || (config->outputFormat > 4)) | ||
219 | return 0; | ||
220 | #else | ||
221 | if ((config->outputFormat < 1) || (config->outputFormat > 5)) | ||
222 | return 0; | ||
223 | #endif | ||
224 | hDecoder->config.outputFormat = config->outputFormat; | ||
225 | |||
226 | if (config->downMatrix > 1) | ||
227 | return 0; | ||
228 | hDecoder->config.downMatrix = config->downMatrix; | ||
229 | |||
230 | /* OK */ | ||
231 | return 1; | ||
232 | } | ||
233 | |||
234 | return 0; | ||
235 | } | ||
236 | |||
237 | int32_t NEAACDECAPI NeAACDecInit(NeAACDecHandle hDecoder, uint8_t *buffer, | ||
238 | uint32_t buffer_size, | ||
239 | uint32_t *samplerate, uint8_t *channels) | ||
240 | { | ||
241 | uint32_t i; | ||
242 | uint32_t bits = 0; | ||
243 | bitfile ld; | ||
244 | adif_header adif; | ||
245 | adts_header adts; | ||
246 | |||
247 | if ((hDecoder == NULL) || (samplerate == NULL) || (channels == NULL)) | ||
248 | return -1; | ||
249 | |||
250 | hDecoder->sf_index = get_sr_index(hDecoder->config.defSampleRate); | ||
251 | hDecoder->object_type = hDecoder->config.defObjectType; | ||
252 | *samplerate = get_sample_rate(hDecoder->sf_index); | ||
253 | *channels = 1; | ||
254 | |||
255 | if (buffer != NULL) | ||
256 | { | ||
257 | faad_initbits(&ld, buffer, buffer_size); | ||
258 | |||
259 | /* Check if an ADIF header is present */ | ||
260 | if ((buffer[0] == 'A') && (buffer[1] == 'D') && | ||
261 | (buffer[2] == 'I') && (buffer[3] == 'F')) | ||
262 | { | ||
263 | hDecoder->adif_header_present = 1; | ||
264 | |||
265 | get_adif_header(&adif, &ld); | ||
266 | faad_byte_align(&ld); | ||
267 | |||
268 | hDecoder->sf_index = adif.pce[0].sf_index; | ||
269 | hDecoder->object_type = adif.pce[0].object_type + 1; | ||
270 | |||
271 | *samplerate = get_sample_rate(hDecoder->sf_index); | ||
272 | *channels = adif.pce[0].channels; | ||
273 | |||
274 | memcpy(&(hDecoder->pce), &(adif.pce[0]), sizeof(program_config)); | ||
275 | hDecoder->pce_set = 1; | ||
276 | |||
277 | bits = bit2byte(faad_get_processed_bits(&ld)); | ||
278 | |||
279 | /* Check if an ADTS header is present */ | ||
280 | } else if (faad_showbits(&ld, 12) == 0xfff) { | ||
281 | hDecoder->adts_header_present = 1; | ||
282 | |||
283 | adts.old_format = hDecoder->config.useOldADTSFormat; | ||
284 | adts_frame(&adts, &ld); | ||
285 | |||
286 | hDecoder->sf_index = adts.sf_index; | ||
287 | hDecoder->object_type = adts.profile + 1; | ||
288 | |||
289 | *samplerate = get_sample_rate(hDecoder->sf_index); | ||
290 | *channels = (adts.channel_configuration > 6) ? | ||
291 | 2 : adts.channel_configuration; | ||
292 | } | ||
293 | |||
294 | if (ld.error) | ||
295 | { | ||
296 | faad_endbits(&ld); | ||
297 | return -1; | ||
298 | } | ||
299 | faad_endbits(&ld); | ||
300 | } | ||
301 | hDecoder->channelConfiguration = *channels; | ||
302 | |||
303 | #if (defined(PS_DEC) || defined(DRM_PS)) | ||
304 | /* check if we have a mono file */ | ||
305 | if (*channels == 1) | ||
306 | { | ||
307 | /* upMatrix to 2 channels for implicit signalling of PS */ | ||
308 | *channels = 2; | ||
309 | } | ||
310 | #endif | ||
311 | |||
312 | /* A maximum of MAX_CHANNELS channels is supported. */ | ||
313 | if (*channels > MAX_CHANNELS) | ||
314 | { | ||
315 | return -1; | ||
316 | } | ||
317 | |||
318 | #ifdef SBR_DEC | ||
319 | /* implicit signalling */ | ||
320 | if (*samplerate <= 24000 && !(hDecoder->config.dontUpSampleImplicitSBR)) | ||
321 | { | ||
322 | *samplerate *= 2; | ||
323 | hDecoder->forceUpSampling = 1; | ||
324 | } else if (*samplerate > 24000 && !(hDecoder->config.dontUpSampleImplicitSBR)) { | ||
325 | hDecoder->downSampledSBR = 1; | ||
326 | } | ||
327 | #endif | ||
328 | |||
329 | /* must be done before frameLength is divided by 2 for LD */ | ||
330 | #ifdef SSR_DEC | ||
331 | if (hDecoder->object_type == SSR) | ||
332 | hDecoder->fb = ssr_filter_bank_init(hDecoder->frameLength/SSR_BANDS); | ||
333 | else | ||
334 | #endif | ||
335 | |||
336 | |||
337 | #ifdef LD_DEC | ||
338 | if (hDecoder->object_type == LD) | ||
339 | hDecoder->frameLength >>= 1; | ||
340 | #endif | ||
341 | |||
342 | for (i=0; i<MAX_CHANNELS; ++i) | ||
343 | { | ||
344 | #ifdef SBR_DEC | ||
345 | hDecoder->sbr_alloced[hDecoder->fr_ch_ele] = 0; | ||
346 | if ((hDecoder->sbr_present_flag == 1) || (hDecoder->forceUpSampling == 1)) | ||
347 | { | ||
348 | #ifdef FAAD_STATIC_ALLOC | ||
349 | hDecoder->time_out[i] = s_time_buf_2048[i]; | ||
350 | #else | ||
351 | hDecoder->time_out[i] = (real_t*)faad_malloc(2*FRAME_LEN*sizeof(real_t)); | ||
352 | if (hDecoder->time_out[i] == NULL) | ||
353 | { | ||
354 | /* could not allocate memory */ | ||
355 | return -1; | ||
356 | } | ||
357 | #endif | ||
358 | memset(hDecoder->time_out[i], 0, 2*FRAME_LEN); | ||
359 | hDecoder->sbr_alloced[hDecoder->fr_ch_ele] = 1; | ||
360 | } | ||
361 | else | ||
362 | #endif | ||
363 | { | ||
364 | hDecoder->time_out[i] = s_time_buf_1024[i]; | ||
365 | memset(hDecoder->time_out[i], 0, 1*FRAME_LEN); | ||
366 | } | ||
367 | } | ||
368 | |||
369 | if (can_decode_ot(hDecoder->object_type) < 0) | ||
370 | return -1; | ||
371 | |||
372 | return bits; | ||
373 | } | ||
374 | |||
375 | /* Init the library using a DecoderSpecificInfo */ | ||
376 | int8_t NEAACDECAPI NeAACDecInit2(NeAACDecHandle hDecoder, uint8_t *pBuffer, | ||
377 | uint32_t SizeOfDecoderSpecificInfo, | ||
378 | uint32_t *samplerate, uint8_t *channels) | ||
379 | { | ||
380 | int8_t rc; | ||
381 | uint32_t i; | ||
382 | mp4AudioSpecificConfig mp4ASC; | ||
383 | |||
384 | if((hDecoder == NULL) | ||
385 | || (pBuffer == NULL) | ||
386 | || (SizeOfDecoderSpecificInfo < 2) | ||
387 | || (samplerate == NULL) | ||
388 | || (channels == NULL)) | ||
389 | { | ||
390 | return -1; | ||
391 | } | ||
392 | |||
393 | hDecoder->adif_header_present = 0; | ||
394 | hDecoder->adts_header_present = 0; | ||
395 | |||
396 | /* decode the audio specific config */ | ||
397 | rc = AudioSpecificConfig2(pBuffer, SizeOfDecoderSpecificInfo, &mp4ASC, | ||
398 | &(hDecoder->pce)); | ||
399 | |||
400 | /* copy the relevant info to the decoder handle */ | ||
401 | *samplerate = mp4ASC.samplingFrequency; | ||
402 | if (mp4ASC.channelsConfiguration) | ||
403 | { | ||
404 | *channels = mp4ASC.channelsConfiguration; | ||
405 | } else { | ||
406 | *channels = hDecoder->pce.channels; | ||
407 | hDecoder->pce_set = 1; | ||
408 | } | ||
409 | #if (defined(PS_DEC) || defined(DRM_PS)) | ||
410 | /* check if we have a mono file */ | ||
411 | if (*channels == 1) | ||
412 | { | ||
413 | /* upMatrix to 2 channels for implicit signalling of PS */ | ||
414 | *channels = 2; | ||
415 | } | ||
416 | #endif | ||
417 | |||
418 | /* A maximum of MAX_CHANNELS channels is supported. */ | ||
419 | if (*channels > MAX_CHANNELS) | ||
420 | { | ||
421 | return -1; | ||
422 | } | ||
423 | |||
424 | hDecoder->sf_index = mp4ASC.samplingFrequencyIndex; | ||
425 | hDecoder->object_type = mp4ASC.objectTypeIndex; | ||
426 | #ifdef ERROR_RESILIENCE | ||
427 | hDecoder->aacSectionDataResilienceFlag = mp4ASC.aacSectionDataResilienceFlag; | ||
428 | hDecoder->aacScalefactorDataResilienceFlag = mp4ASC.aacScalefactorDataResilienceFlag; | ||
429 | hDecoder->aacSpectralDataResilienceFlag = mp4ASC.aacSpectralDataResilienceFlag; | ||
430 | #endif | ||
431 | #ifdef SBR_DEC | ||
432 | hDecoder->sbr_present_flag = mp4ASC.sbr_present_flag; | ||
433 | hDecoder->downSampledSBR = mp4ASC.downSampledSBR; | ||
434 | if (hDecoder->config.dontUpSampleImplicitSBR == 0) | ||
435 | hDecoder->forceUpSampling = mp4ASC.forceUpSampling; | ||
436 | else | ||
437 | hDecoder->forceUpSampling = 0; | ||
438 | |||
439 | /* AAC core decoder samplerate is 2 times as low */ | ||
440 | if (((hDecoder->sbr_present_flag == 1)&&(!hDecoder->downSampledSBR)) || hDecoder->forceUpSampling == 1) | ||
441 | { | ||
442 | hDecoder->sf_index = get_sr_index(mp4ASC.samplingFrequency / 2); | ||
443 | } | ||
444 | #endif | ||
445 | |||
446 | if (rc != 0) | ||
447 | { | ||
448 | return rc; | ||
449 | } | ||
450 | hDecoder->channelConfiguration = mp4ASC.channelsConfiguration; | ||
451 | if (mp4ASC.frameLengthFlag) | ||
452 | #ifdef ALLOW_SMALL_FRAMELENGTH | ||
453 | hDecoder->frameLength = 960; | ||
454 | #else | ||
455 | return -1; | ||
456 | #endif | ||
457 | |||
458 | /* must be done before frameLength is divided by 2 for LD */ | ||
459 | #ifdef SSR_DEC | ||
460 | if (hDecoder->object_type == SSR) | ||
461 | hDecoder->fb = ssr_filter_bank_init(hDecoder->frameLength/SSR_BANDS); | ||
462 | else | ||
463 | #endif | ||
464 | |||
465 | #ifdef LD_DEC | ||
466 | if (hDecoder->object_type == LD) | ||
467 | hDecoder->frameLength >>= 1; | ||
468 | #endif | ||
469 | |||
470 | for (i=0; i<MAX_CHANNELS; ++i) | ||
471 | { | ||
472 | #ifdef SBR_DEC | ||
473 | hDecoder->sbr_alloced[hDecoder->fr_ch_ele] = 0; | ||
474 | if ((hDecoder->sbr_present_flag == 1) || (hDecoder->forceUpSampling == 1)) | ||
475 | { | ||
476 | #ifdef FAAD_STATIC_ALLOC | ||
477 | hDecoder->time_out[i] = s_time_buf_2048[i]; | ||
478 | #else | ||
479 | hDecoder->time_out[i] = (real_t*)faad_malloc(2*FRAME_LEN*sizeof(real_t)); | ||
480 | if (hDecoder->time_out[i] == NULL) | ||
481 | { | ||
482 | /* could not allocate memory */ | ||
483 | return -1; | ||
484 | } | ||
485 | #endif | ||
486 | memset(hDecoder->time_out[i], 0, 2*FRAME_LEN); | ||
487 | hDecoder->sbr_alloced[hDecoder->fr_ch_ele] = 1; | ||
488 | } | ||
489 | else | ||
490 | #endif | ||
491 | { | ||
492 | hDecoder->time_out[i] = s_time_buf_1024[i]; | ||
493 | memset(hDecoder->time_out[i], 0, 1*FRAME_LEN); | ||
494 | } | ||
495 | } | ||
496 | |||
497 | return 0; | ||
498 | } | ||
499 | |||
500 | #ifdef DRM | ||
501 | int8_t NEAACDECAPI NeAACDecInitDRM(NeAACDecHandle *hDecoder, uint32_t samplerate, | ||
502 | uint8_t channels) | ||
503 | { | ||
504 | if (hDecoder == NULL) | ||
505 | return 1; /* error */ | ||
506 | |||
507 | *hDecoder = NeAACDecOpen(); | ||
508 | |||
509 | /* Special object type defined for DRM */ | ||
510 | (*hDecoder)->config.defObjectType = DRM_ER_LC; | ||
511 | |||
512 | (*hDecoder)->config.defSampleRate = samplerate; | ||
513 | #ifdef ERROR_RESILIENCE // This shoudl always be defined for DRM | ||
514 | (*hDecoder)->aacSectionDataResilienceFlag = 1; /* VCB11 */ | ||
515 | (*hDecoder)->aacScalefactorDataResilienceFlag = 0; /* no RVLC */ | ||
516 | (*hDecoder)->aacSpectralDataResilienceFlag = 1; /* HCR */ | ||
517 | #endif | ||
518 | (*hDecoder)->frameLength = 960; | ||
519 | (*hDecoder)->sf_index = get_sr_index((*hDecoder)->config.defSampleRate); | ||
520 | (*hDecoder)->object_type = (*hDecoder)->config.defObjectType; | ||
521 | |||
522 | if ((channels == DRMCH_STEREO) || (channels == DRMCH_SBR_STEREO)) | ||
523 | (*hDecoder)->channelConfiguration = 2; | ||
524 | else | ||
525 | (*hDecoder)->channelConfiguration = 1; | ||
526 | |||
527 | #ifdef SBR_DEC | ||
528 | if ((channels == DRMCH_MONO) || (channels == DRMCH_STEREO)) | ||
529 | (*hDecoder)->sbr_present_flag = 0; | ||
530 | else | ||
531 | (*hDecoder)->sbr_present_flag = 1; | ||
532 | #endif | ||
533 | |||
534 | |||
535 | return 0; | ||
536 | } | ||
537 | #endif | ||
538 | |||
539 | void NEAACDECAPI NeAACDecPostSeekReset(NeAACDecHandle hDecoder, int32_t frame) | ||
540 | { | ||
541 | if (hDecoder) | ||
542 | { | ||
543 | hDecoder->postSeekResetFlag = 1; | ||
544 | |||
545 | if (frame != -1) | ||
546 | hDecoder->frame = frame; | ||
547 | } | ||
548 | } | ||
549 | |||
550 | /* not used by rockbox */ | ||
551 | #if 0 | ||
552 | static void create_channel_config(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo) | ||
553 | { | ||
554 | hInfo->num_front_channels = 0; | ||
555 | hInfo->num_side_channels = 0; | ||
556 | hInfo->num_back_channels = 0; | ||
557 | hInfo->num_lfe_channels = 0; | ||
558 | memset(hInfo->channel_position, 0, MAX_CHANNELS*sizeof(uint8_t)); | ||
559 | |||
560 | if (hDecoder->downMatrix) | ||
561 | { | ||
562 | hInfo->num_front_channels = 2; | ||
563 | hInfo->channel_position[0] = FRONT_CHANNEL_LEFT; | ||
564 | hInfo->channel_position[1] = FRONT_CHANNEL_RIGHT; | ||
565 | return; | ||
566 | } | ||
567 | |||
568 | /* check if there is a PCE */ | ||
569 | if (hDecoder->pce_set) | ||
570 | { | ||
571 | uint8_t i, chpos = 0; | ||
572 | uint8_t chdir, back_center = 0; | ||
573 | |||
574 | hInfo->num_front_channels = hDecoder->pce.num_front_channels; | ||
575 | hInfo->num_side_channels = hDecoder->pce.num_side_channels; | ||
576 | hInfo->num_back_channels = hDecoder->pce.num_back_channels; | ||
577 | hInfo->num_lfe_channels = hDecoder->pce.num_lfe_channels; | ||
578 | |||
579 | chdir = hInfo->num_front_channels; | ||
580 | if (chdir & 1) | ||
581 | { | ||
582 | hInfo->channel_position[chpos++] = FRONT_CHANNEL_CENTER; | ||
583 | chdir--; | ||
584 | } | ||
585 | for (i = 0; i < chdir; i += 2) | ||
586 | { | ||
587 | hInfo->channel_position[chpos++] = FRONT_CHANNEL_LEFT; | ||
588 | hInfo->channel_position[chpos++] = FRONT_CHANNEL_RIGHT; | ||
589 | } | ||
590 | |||
591 | for (i = 0; i < hInfo->num_side_channels; i += 2) | ||
592 | { | ||
593 | hInfo->channel_position[chpos++] = SIDE_CHANNEL_LEFT; | ||
594 | hInfo->channel_position[chpos++] = SIDE_CHANNEL_RIGHT; | ||
595 | } | ||
596 | |||
597 | chdir = hInfo->num_back_channels; | ||
598 | if (chdir & 1) | ||
599 | { | ||
600 | back_center = 1; | ||
601 | chdir--; | ||
602 | } | ||
603 | for (i = 0; i < chdir; i += 2) | ||
604 | { | ||
605 | hInfo->channel_position[chpos++] = BACK_CHANNEL_LEFT; | ||
606 | hInfo->channel_position[chpos++] = BACK_CHANNEL_RIGHT; | ||
607 | } | ||
608 | if (back_center) | ||
609 | { | ||
610 | hInfo->channel_position[chpos++] = BACK_CHANNEL_CENTER; | ||
611 | } | ||
612 | |||
613 | for (i = 0; i < hInfo->num_lfe_channels; i++) | ||
614 | { | ||
615 | hInfo->channel_position[chpos++] = LFE_CHANNEL; | ||
616 | } | ||
617 | |||
618 | } else { | ||
619 | switch (hDecoder->channelConfiguration) | ||
620 | { | ||
621 | case 1: | ||
622 | hInfo->num_front_channels = 1; | ||
623 | hInfo->channel_position[0] = FRONT_CHANNEL_CENTER; | ||
624 | break; | ||
625 | case 2: | ||
626 | hInfo->num_front_channels = 2; | ||
627 | hInfo->channel_position[0] = FRONT_CHANNEL_LEFT; | ||
628 | hInfo->channel_position[1] = FRONT_CHANNEL_RIGHT; | ||
629 | break; | ||
630 | case 3: | ||
631 | hInfo->num_front_channels = 3; | ||
632 | hInfo->channel_position[0] = FRONT_CHANNEL_CENTER; | ||
633 | hInfo->channel_position[1] = FRONT_CHANNEL_LEFT; | ||
634 | hInfo->channel_position[2] = FRONT_CHANNEL_RIGHT; | ||
635 | break; | ||
636 | case 4: | ||
637 | hInfo->num_front_channels = 3; | ||
638 | hInfo->num_back_channels = 1; | ||
639 | hInfo->channel_position[0] = FRONT_CHANNEL_CENTER; | ||
640 | hInfo->channel_position[1] = FRONT_CHANNEL_LEFT; | ||
641 | hInfo->channel_position[2] = FRONT_CHANNEL_RIGHT; | ||
642 | hInfo->channel_position[3] = BACK_CHANNEL_CENTER; | ||
643 | break; | ||
644 | case 5: | ||
645 | hInfo->num_front_channels = 3; | ||
646 | hInfo->num_back_channels = 2; | ||
647 | hInfo->channel_position[0] = FRONT_CHANNEL_CENTER; | ||
648 | hInfo->channel_position[1] = FRONT_CHANNEL_LEFT; | ||
649 | hInfo->channel_position[2] = FRONT_CHANNEL_RIGHT; | ||
650 | hInfo->channel_position[3] = BACK_CHANNEL_LEFT; | ||
651 | hInfo->channel_position[4] = BACK_CHANNEL_RIGHT; | ||
652 | break; | ||
653 | case 6: | ||
654 | hInfo->num_front_channels = 3; | ||
655 | hInfo->num_back_channels = 2; | ||
656 | hInfo->num_lfe_channels = 1; | ||
657 | hInfo->channel_position[0] = FRONT_CHANNEL_CENTER; | ||
658 | hInfo->channel_position[1] = FRONT_CHANNEL_LEFT; | ||
659 | hInfo->channel_position[2] = FRONT_CHANNEL_RIGHT; | ||
660 | hInfo->channel_position[3] = BACK_CHANNEL_LEFT; | ||
661 | hInfo->channel_position[4] = BACK_CHANNEL_RIGHT; | ||
662 | hInfo->channel_position[5] = LFE_CHANNEL; | ||
663 | break; | ||
664 | case 7: | ||
665 | hInfo->num_front_channels = 3; | ||
666 | hInfo->num_side_channels = 2; | ||
667 | hInfo->num_back_channels = 2; | ||
668 | hInfo->num_lfe_channels = 1; | ||
669 | hInfo->channel_position[0] = FRONT_CHANNEL_CENTER; | ||
670 | hInfo->channel_position[1] = FRONT_CHANNEL_LEFT; | ||
671 | hInfo->channel_position[2] = FRONT_CHANNEL_RIGHT; | ||
672 | hInfo->channel_position[3] = SIDE_CHANNEL_LEFT; | ||
673 | hInfo->channel_position[4] = SIDE_CHANNEL_RIGHT; | ||
674 | hInfo->channel_position[5] = BACK_CHANNEL_LEFT; | ||
675 | hInfo->channel_position[6] = BACK_CHANNEL_RIGHT; | ||
676 | hInfo->channel_position[7] = LFE_CHANNEL; | ||
677 | break; | ||
678 | default: /* channelConfiguration == 0 || channelConfiguration > 7 */ | ||
679 | { | ||
680 | uint8_t i; | ||
681 | uint8_t ch = hDecoder->fr_channels - hDecoder->has_lfe; | ||
682 | if (ch & 1) /* there's either a center front or a center back channel */ | ||
683 | { | ||
684 | uint8_t ch1 = (ch-1)/2; | ||
685 | if (hDecoder->first_syn_ele == ID_SCE) | ||
686 | { | ||
687 | hInfo->num_front_channels = ch1 + 1; | ||
688 | hInfo->num_back_channels = ch1; | ||
689 | hInfo->channel_position[0] = FRONT_CHANNEL_CENTER; | ||
690 | for (i = 1; i <= ch1; i+=2) | ||
691 | { | ||
692 | hInfo->channel_position[i] = FRONT_CHANNEL_LEFT; | ||
693 | hInfo->channel_position[i+1] = FRONT_CHANNEL_RIGHT; | ||
694 | } | ||
695 | for (i = ch1+1; i < ch; i+=2) | ||
696 | { | ||
697 | hInfo->channel_position[i] = BACK_CHANNEL_LEFT; | ||
698 | hInfo->channel_position[i+1] = BACK_CHANNEL_RIGHT; | ||
699 | } | ||
700 | } else { | ||
701 | hInfo->num_front_channels = ch1; | ||
702 | hInfo->num_back_channels = ch1 + 1; | ||
703 | for (i = 0; i < ch1; i+=2) | ||
704 | { | ||
705 | hInfo->channel_position[i] = FRONT_CHANNEL_LEFT; | ||
706 | hInfo->channel_position[i+1] = FRONT_CHANNEL_RIGHT; | ||
707 | } | ||
708 | for (i = ch1; i < ch-1; i+=2) | ||
709 | { | ||
710 | hInfo->channel_position[i] = BACK_CHANNEL_LEFT; | ||
711 | hInfo->channel_position[i+1] = BACK_CHANNEL_RIGHT; | ||
712 | } | ||
713 | hInfo->channel_position[ch-1] = BACK_CHANNEL_CENTER; | ||
714 | } | ||
715 | } else { | ||
716 | uint8_t ch1 = (ch)/2; | ||
717 | hInfo->num_front_channels = ch1; | ||
718 | hInfo->num_back_channels = ch1; | ||
719 | if (ch1 & 1) | ||
720 | { | ||
721 | hInfo->channel_position[0] = FRONT_CHANNEL_CENTER; | ||
722 | for (i = 1; i <= ch1; i+=2) | ||
723 | { | ||
724 | hInfo->channel_position[i] = FRONT_CHANNEL_LEFT; | ||
725 | hInfo->channel_position[i+1] = FRONT_CHANNEL_RIGHT; | ||
726 | } | ||
727 | for (i = ch1+1; i < ch-1; i+=2) | ||
728 | { | ||
729 | hInfo->channel_position[i] = BACK_CHANNEL_LEFT; | ||
730 | hInfo->channel_position[i+1] = BACK_CHANNEL_RIGHT; | ||
731 | } | ||
732 | hInfo->channel_position[ch-1] = BACK_CHANNEL_CENTER; | ||
733 | } else { | ||
734 | for (i = 0; i < ch1; i+=2) | ||
735 | { | ||
736 | hInfo->channel_position[i] = FRONT_CHANNEL_LEFT; | ||
737 | hInfo->channel_position[i+1] = FRONT_CHANNEL_RIGHT; | ||
738 | } | ||
739 | for (i = ch1; i < ch; i+=2) | ||
740 | { | ||
741 | hInfo->channel_position[i] = BACK_CHANNEL_LEFT; | ||
742 | hInfo->channel_position[i+1] = BACK_CHANNEL_RIGHT; | ||
743 | } | ||
744 | } | ||
745 | } | ||
746 | hInfo->num_lfe_channels = hDecoder->has_lfe; | ||
747 | for (i = ch; i < hDecoder->fr_channels; i++) | ||
748 | { | ||
749 | hInfo->channel_position[i] = LFE_CHANNEL; | ||
750 | } | ||
751 | } | ||
752 | break; | ||
753 | } | ||
754 | } | ||
755 | } | ||
756 | #endif | ||
757 | |||
758 | void* NEAACDECAPI NeAACDecDecode(NeAACDecHandle hDecoder, | ||
759 | NeAACDecFrameInfo *hInfo, | ||
760 | uint8_t *buffer, uint32_t buffer_size) | ||
761 | { | ||
762 | return aac_frame_decode(hDecoder, hInfo, buffer, buffer_size); | ||
763 | } | ||
764 | |||
765 | static void* aac_frame_decode(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo, | ||
766 | uint8_t *buffer, uint32_t buffer_size) | ||
767 | { | ||
768 | uint8_t channels = 0; | ||
769 | uint8_t output_channels = 0; | ||
770 | bitfile ld; | ||
771 | uint32_t bitsconsumed; | ||
772 | uint16_t frame_len; | ||
773 | |||
774 | #ifdef PROFILE | ||
775 | int64_t count = faad_get_ts(); | ||
776 | #endif | ||
777 | |||
778 | /* safety checks */ | ||
779 | if ((hDecoder == NULL) || (hInfo == NULL) || (buffer == NULL)) | ||
780 | { | ||
781 | return NULL; | ||
782 | } | ||
783 | |||
784 | #if 0 | ||
785 | printf("%d\n", buffer_size*8); | ||
786 | #endif | ||
787 | |||
788 | frame_len = hDecoder->frameLength; | ||
789 | |||
790 | |||
791 | memset(hInfo, 0, sizeof(NeAACDecFrameInfo)); | ||
792 | memset(hDecoder->internal_channel, 0, MAX_CHANNELS*sizeof(hDecoder->internal_channel[0])); | ||
793 | |||
794 | /* initialize the bitstream */ | ||
795 | faad_initbits(&ld, buffer, buffer_size); | ||
796 | |||
797 | #if 0 | ||
798 | { | ||
799 | int i; | ||
800 | for (i = 0; i < ((buffer_size+3)>>2); i++) | ||
801 | { | ||
802 | uint8_t *buf; | ||
803 | uint32_t temp = 0; | ||
804 | buf = faad_getbitbuffer(&ld, 32); | ||
805 | //temp = getdword((void*)buf); | ||
806 | temp = *((uint32_t*)buf); | ||
807 | printf("0x%.8X\n", temp); | ||
808 | free(buf); | ||
809 | } | ||
810 | faad_endbits(&ld); | ||
811 | faad_initbits(&ld, buffer, buffer_size); | ||
812 | } | ||
813 | #endif | ||
814 | |||
815 | #ifdef DRM | ||
816 | if (hDecoder->object_type == DRM_ER_LC) | ||
817 | { | ||
818 | /* We do not support stereo right now */ | ||
819 | if (0) //(hDecoder->channelConfiguration == 2) | ||
820 | { | ||
821 | hInfo->error = 8; // Throw CRC error | ||
822 | goto error; | ||
823 | } | ||
824 | |||
825 | faad_getbits(&ld, 8 | ||
826 | DEBUGVAR(1,1,"NeAACDecDecode(): skip CRC")); | ||
827 | } | ||
828 | #endif | ||
829 | |||
830 | if (hDecoder->adts_header_present) | ||
831 | { | ||
832 | adts_header adts; | ||
833 | |||
834 | adts.old_format = hDecoder->config.useOldADTSFormat; | ||
835 | if ((hInfo->error = adts_frame(&adts, &ld)) > 0) | ||
836 | goto error; | ||
837 | |||
838 | /* MPEG2 does byte_alignment() here, | ||
839 | * but ADTS header is always multiple of 8 bits in MPEG2 | ||
840 | * so not needed to actually do it. | ||
841 | */ | ||
842 | } | ||
843 | |||
844 | #ifdef ANALYSIS | ||
845 | dbg_count = 0; | ||
846 | #endif | ||
847 | |||
848 | /* decode the complete bitstream */ | ||
849 | #ifdef SCALABLE_DEC | ||
850 | if ((hDecoder->object_type == 6) || (hDecoder->object_type == DRM_ER_LC)) | ||
851 | { | ||
852 | aac_scalable_main_element(hDecoder, hInfo, &ld, &hDecoder->pce, hDecoder->drc); | ||
853 | } else { | ||
854 | #endif | ||
855 | raw_data_block(hDecoder, hInfo, &ld, &hDecoder->pce, hDecoder->drc); | ||
856 | #ifdef SCALABLE_DEC | ||
857 | } | ||
858 | #endif | ||
859 | |||
860 | channels = hDecoder->fr_channels; | ||
861 | |||
862 | if (hInfo->error > 0) | ||
863 | goto error; | ||
864 | |||
865 | /* safety check */ | ||
866 | if (channels == 0 || channels > MAX_CHANNELS) | ||
867 | { | ||
868 | /* invalid number of channels */ | ||
869 | hInfo->error = 12; | ||
870 | goto error; | ||
871 | } | ||
872 | |||
873 | /* no more bit reading after this */ | ||
874 | bitsconsumed = faad_get_processed_bits(&ld); | ||
875 | hInfo->bytesconsumed = bit2byte(bitsconsumed); | ||
876 | if (ld.error) | ||
877 | { | ||
878 | hInfo->error = 14; | ||
879 | goto error; | ||
880 | } | ||
881 | faad_endbits(&ld); | ||
882 | |||
883 | |||
884 | if (!hDecoder->adts_header_present && !hDecoder->adif_header_present) | ||
885 | { | ||
886 | if (hDecoder->channelConfiguration == 0) | ||
887 | hDecoder->channelConfiguration = channels; | ||
888 | |||
889 | if (channels == 8) /* 7.1 */ | ||
890 | hDecoder->channelConfiguration = 7; | ||
891 | if (channels == 7) /* not a standard channelConfiguration */ | ||
892 | hDecoder->channelConfiguration = 0; | ||
893 | } | ||
894 | |||
895 | if ((channels == 5 || channels == 6) && hDecoder->config.downMatrix) | ||
896 | { | ||
897 | hDecoder->downMatrix = 1; | ||
898 | output_channels = 2; | ||
899 | } else { | ||
900 | output_channels = channels; | ||
901 | } | ||
902 | |||
903 | #if (defined(PS_DEC) || defined(DRM_PS)) | ||
904 | hDecoder->upMatrix = 0; | ||
905 | /* check if we have a mono file */ | ||
906 | if (output_channels == 1) | ||
907 | { | ||
908 | /* upMatrix to 2 channels for implicit signalling of PS */ | ||
909 | hDecoder->upMatrix = 1; | ||
910 | output_channels = 2; | ||
911 | } | ||
912 | #endif | ||
913 | |||
914 | /* Make a channel configuration based on either a PCE or a channelConfiguration */ | ||
915 | /* not used by rockbox | ||
916 | create_channel_config(hDecoder, hInfo); | ||
917 | */ | ||
918 | |||
919 | /* number of samples in this frame */ | ||
920 | hInfo->samples = frame_len*output_channels; | ||
921 | /* number of channels in this frame */ | ||
922 | hInfo->channels = output_channels; | ||
923 | /* samplerate */ | ||
924 | hInfo->samplerate = get_sample_rate(hDecoder->sf_index); | ||
925 | /* object type */ | ||
926 | hInfo->object_type = hDecoder->object_type; | ||
927 | /* sbr */ | ||
928 | hInfo->sbr = NO_SBR; | ||
929 | /* header type */ | ||
930 | hInfo->header_type = RAW; | ||
931 | if (hDecoder->adif_header_present) | ||
932 | hInfo->header_type = ADIF; | ||
933 | if (hDecoder->adts_header_present) | ||
934 | hInfo->header_type = ADTS; | ||
935 | #if (defined(PS_DEC) || defined(DRM_PS)) | ||
936 | hInfo->ps = hDecoder->ps_used_global; | ||
937 | #endif | ||
938 | |||
939 | /* check if frame has channel elements */ | ||
940 | if (channels == 0) | ||
941 | { | ||
942 | hDecoder->frame++; | ||
943 | return NULL; | ||
944 | } | ||
945 | |||
946 | /* allocate the buffer for the final samples */ | ||
947 | if (hDecoder->alloced_channels != output_channels) | ||
948 | { | ||
949 | hDecoder->alloced_channels = output_channels; | ||
950 | } | ||
951 | |||
952 | #ifdef SBR_DEC | ||
953 | if ((hDecoder->sbr_present_flag == 1) || (hDecoder->forceUpSampling == 1)) | ||
954 | { | ||
955 | uint8_t ele; | ||
956 | |||
957 | /* this data is different when SBR is used or when the data is upsampled */ | ||
958 | if (!hDecoder->downSampledSBR) | ||
959 | { | ||
960 | frame_len *= 2; | ||
961 | hInfo->samples *= 2; | ||
962 | hInfo->samplerate *= 2; | ||
963 | } | ||
964 | |||
965 | /* check if every element was provided with SBR data */ | ||
966 | for (ele = 0; ele < hDecoder->fr_ch_ele; ele++) | ||
967 | { | ||
968 | if (hDecoder->sbr[ele] == NULL) | ||
969 | { | ||
970 | hInfo->error = 25; | ||
971 | goto error; | ||
972 | } | ||
973 | } | ||
974 | |||
975 | /* sbr */ | ||
976 | if (hDecoder->sbr_present_flag == 1) | ||
977 | { | ||
978 | hInfo->object_type = HE_AAC; | ||
979 | hInfo->sbr = SBR_UPSAMPLED; | ||
980 | } else { | ||
981 | hInfo->sbr = NO_SBR_UPSAMPLED; | ||
982 | } | ||
983 | if (hDecoder->downSampledSBR) | ||
984 | { | ||
985 | hInfo->sbr = SBR_DOWNSAMPLED; | ||
986 | } | ||
987 | } | ||
988 | #endif | ||
989 | |||
990 | hDecoder->postSeekResetFlag = 0; | ||
991 | |||
992 | hDecoder->frame++; | ||
993 | #ifdef LD_DEC | ||
994 | if (hDecoder->object_type != LD) | ||
995 | { | ||
996 | #endif | ||
997 | if (hDecoder->frame <= 1) | ||
998 | hInfo->samples = 0; | ||
999 | #ifdef LD_DEC | ||
1000 | } else { | ||
1001 | /* LD encoders will give lower delay */ | ||
1002 | if (hDecoder->frame <= 0) | ||
1003 | hInfo->samples = 0; | ||
1004 | } | ||
1005 | #endif | ||
1006 | |||
1007 | /* cleanup */ | ||
1008 | #ifdef ANALYSIS | ||
1009 | fflush(stdout); | ||
1010 | #endif | ||
1011 | |||
1012 | #ifdef PROFILE | ||
1013 | count = faad_get_ts() - count; | ||
1014 | hDecoder->cycles += count; | ||
1015 | #endif | ||
1016 | |||
1017 | return hDecoder; /* return void* != NULL */ | ||
1018 | |||
1019 | error: | ||
1020 | |||
1021 | faad_endbits(&ld); | ||
1022 | |||
1023 | /* cleanup */ | ||
1024 | #ifdef ANALYSIS | ||
1025 | fflush(stdout); | ||
1026 | #endif | ||
1027 | |||
1028 | return NULL; | ||
1029 | } | ||
diff --git a/lib/rbcodec/codecs/libfaad/decoder.h b/lib/rbcodec/codecs/libfaad/decoder.h new file mode 100644 index 0000000000..f5c477e186 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/decoder.h | |||
@@ -0,0 +1,112 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __DECODER_H__ | ||
29 | #define __DECODER_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | #ifdef _WIN32 | ||
36 | #pragma pack(push, 8) | ||
37 | #ifndef NEAACDECAPI | ||
38 | #define NEAACDECAPI __cdecl | ||
39 | #endif | ||
40 | #else | ||
41 | #ifndef NEAACDECAPI | ||
42 | #define NEAACDECAPI | ||
43 | #endif | ||
44 | #endif | ||
45 | |||
46 | |||
47 | /* library output formats */ | ||
48 | #define FAAD_FMT_16BIT 1 | ||
49 | #define FAAD_FMT_24BIT 2 | ||
50 | #define FAAD_FMT_32BIT 3 | ||
51 | #define FAAD_FMT_FLOAT 4 | ||
52 | #define FAAD_FMT_FIXED FAAD_FMT_FLOAT | ||
53 | #define FAAD_FMT_DOUBLE 5 | ||
54 | |||
55 | #define LC_DEC_CAP (1<<0) | ||
56 | #define MAIN_DEC_CAP (1<<1) | ||
57 | #define LTP_DEC_CAP (1<<2) | ||
58 | #define LD_DEC_CAP (1<<3) | ||
59 | #define ERROR_RESILIENCE_CAP (1<<4) | ||
60 | #define FIXED_POINT_CAP (1<<5) | ||
61 | |||
62 | #define FRONT_CHANNEL_CENTER (1) | ||
63 | #define FRONT_CHANNEL_LEFT (2) | ||
64 | #define FRONT_CHANNEL_RIGHT (3) | ||
65 | #define SIDE_CHANNEL_LEFT (4) | ||
66 | #define SIDE_CHANNEL_RIGHT (5) | ||
67 | #define BACK_CHANNEL_LEFT (6) | ||
68 | #define BACK_CHANNEL_RIGHT (7) | ||
69 | #define BACK_CHANNEL_CENTER (8) | ||
70 | #define LFE_CHANNEL (9) | ||
71 | #define UNKNOWN_CHANNEL (0) | ||
72 | |||
73 | char* NEAACDECAPI NeAACDecGetErrorMessage(uint8_t errcode); | ||
74 | |||
75 | NeAACDecHandle NEAACDECAPI NeAACDecOpen(void); | ||
76 | |||
77 | NeAACDecConfigurationPtr NEAACDECAPI NeAACDecGetCurrentConfiguration(NeAACDecHandle hDecoder); | ||
78 | |||
79 | uint8_t NEAACDECAPI NeAACDecSetConfiguration(NeAACDecHandle hDecoder, | ||
80 | NeAACDecConfigurationPtr config); | ||
81 | |||
82 | /* Init the library based on info from the AAC file (ADTS/ADIF) */ | ||
83 | int32_t NEAACDECAPI NeAACDecInit(NeAACDecHandle hDecoder, | ||
84 | uint8_t *buffer, | ||
85 | uint32_t buffer_size, | ||
86 | uint32_t *samplerate, | ||
87 | uint8_t *channels); | ||
88 | |||
89 | /* Init the library using a DecoderSpecificInfo */ | ||
90 | int8_t NEAACDECAPI NeAACDecInit2(NeAACDecHandle hDecoder, uint8_t *pBuffer, | ||
91 | uint32_t SizeOfDecoderSpecificInfo, | ||
92 | uint32_t *samplerate, uint8_t *channels); | ||
93 | |||
94 | /* Init the library for DRM */ | ||
95 | int8_t NEAACDECAPI NeAACDecInitDRM(NeAACDecHandle *hDecoder, uint32_t samplerate, | ||
96 | uint8_t channels); | ||
97 | |||
98 | void NEAACDECAPI NeAACDecPostSeekReset(NeAACDecHandle hDecoder, int32_t frame); | ||
99 | |||
100 | void* NEAACDECAPI NeAACDecDecode(NeAACDecHandle hDecoder, | ||
101 | NeAACDecFrameInfo *hInfo, | ||
102 | uint8_t *buffer, | ||
103 | uint32_t buffer_size); | ||
104 | |||
105 | #ifdef _WIN32 | ||
106 | #pragma pack(pop) | ||
107 | #endif | ||
108 | |||
109 | #ifdef __cplusplus | ||
110 | } | ||
111 | #endif | ||
112 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/drc.c b/lib/rbcodec/codecs/libfaad/drc.c new file mode 100644 index 0000000000..6e081489aa --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/drc.c | |||
@@ -0,0 +1,168 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #include "common.h" | ||
29 | #include "structs.h" | ||
30 | |||
31 | #include <stdlib.h> | ||
32 | #include <string.h> | ||
33 | #include "syntax.h" | ||
34 | #include "drc.h" | ||
35 | |||
36 | /* static variables */ | ||
37 | static drc_info s_drc_info; | ||
38 | |||
39 | drc_info *drc_init(real_t cut, real_t boost) | ||
40 | { | ||
41 | drc_info *drc = &s_drc_info; | ||
42 | memset(drc, 0, sizeof(drc_info)); | ||
43 | |||
44 | drc->ctrl1 = cut; | ||
45 | drc->ctrl2 = boost; | ||
46 | |||
47 | drc->num_bands = 1; | ||
48 | drc->band_top[0] = 1024/4 - 1; | ||
49 | drc->dyn_rng_sgn[0] = 1; | ||
50 | drc->dyn_rng_ctl[0] = 0; | ||
51 | |||
52 | return drc; | ||
53 | } | ||
54 | |||
55 | #ifdef FIXED_POINT | ||
56 | static real_t drc_pow2_table[] = | ||
57 | { | ||
58 | COEF_CONST(0.5146511183), | ||
59 | COEF_CONST(0.5297315472), | ||
60 | COEF_CONST(0.5452538663), | ||
61 | COEF_CONST(0.5612310242), | ||
62 | COEF_CONST(0.5776763484), | ||
63 | COEF_CONST(0.5946035575), | ||
64 | COEF_CONST(0.6120267717), | ||
65 | COEF_CONST(0.6299605249), | ||
66 | COEF_CONST(0.6484197773), | ||
67 | COEF_CONST(0.6674199271), | ||
68 | COEF_CONST(0.6869768237), | ||
69 | COEF_CONST(0.7071067812), | ||
70 | COEF_CONST(0.7278265914), | ||
71 | COEF_CONST(0.7491535384), | ||
72 | COEF_CONST(0.7711054127), | ||
73 | COEF_CONST(0.7937005260), | ||
74 | COEF_CONST(0.8169577266), | ||
75 | COEF_CONST(0.8408964153), | ||
76 | COEF_CONST(0.8655365610), | ||
77 | COEF_CONST(0.8908987181), | ||
78 | COEF_CONST(0.9170040432), | ||
79 | COEF_CONST(0.9438743127), | ||
80 | COEF_CONST(0.9715319412), | ||
81 | COEF_CONST(1.0000000000), | ||
82 | COEF_CONST(1.0293022366), | ||
83 | COEF_CONST(1.0594630944), | ||
84 | COEF_CONST(1.0905077327), | ||
85 | COEF_CONST(1.1224620483), | ||
86 | COEF_CONST(1.1553526969), | ||
87 | COEF_CONST(1.1892071150), | ||
88 | COEF_CONST(1.2240535433), | ||
89 | COEF_CONST(1.2599210499), | ||
90 | COEF_CONST(1.2968395547), | ||
91 | COEF_CONST(1.3348398542), | ||
92 | COEF_CONST(1.3739536475), | ||
93 | COEF_CONST(1.4142135624), | ||
94 | COEF_CONST(1.4556531828), | ||
95 | COEF_CONST(1.4983070769), | ||
96 | COEF_CONST(1.5422108254), | ||
97 | COEF_CONST(1.5874010520), | ||
98 | COEF_CONST(1.6339154532), | ||
99 | COEF_CONST(1.6817928305), | ||
100 | COEF_CONST(1.7310731220), | ||
101 | COEF_CONST(1.7817974363), | ||
102 | COEF_CONST(1.8340080864), | ||
103 | COEF_CONST(1.8877486254), | ||
104 | COEF_CONST(1.9430638823) | ||
105 | }; | ||
106 | #endif | ||
107 | |||
108 | void drc_decode(drc_info *drc, real_t *spec) | ||
109 | { | ||
110 | uint16_t i, bd, top; | ||
111 | #ifdef FIXED_POINT | ||
112 | int32_t exp, frac; | ||
113 | #else | ||
114 | real_t factor, exp; | ||
115 | #endif | ||
116 | uint16_t bottom = 0; | ||
117 | |||
118 | if (drc->num_bands == 1) | ||
119 | drc->band_top[0] = 1024/4 - 1; | ||
120 | |||
121 | for (bd = 0; bd < drc->num_bands; bd++) | ||
122 | { | ||
123 | top = 4 * (drc->band_top[bd] + 1); | ||
124 | |||
125 | #ifndef FIXED_POINT | ||
126 | /* Decode DRC gain factor */ | ||
127 | if (drc->dyn_rng_sgn[bd]) /* compress */ | ||
128 | exp = -drc->ctrl1 * (drc->dyn_rng_ctl[bd] - (DRC_REF_LEVEL - drc->prog_ref_level))/REAL_CONST(24.0); | ||
129 | else /* boost */ | ||
130 | exp = drc->ctrl2 * (drc->dyn_rng_ctl[bd] - (DRC_REF_LEVEL - drc->prog_ref_level))/REAL_CONST(24.0); | ||
131 | factor = (real_t)pow(2.0, exp); | ||
132 | |||
133 | /* Apply gain factor */ | ||
134 | for (i = bottom; i < top; i++) | ||
135 | spec[i] *= factor; | ||
136 | #else | ||
137 | /* Decode DRC gain factor */ | ||
138 | if (drc->dyn_rng_sgn[bd]) /* compress */ | ||
139 | { | ||
140 | exp = -1 * (drc->dyn_rng_ctl[bd] - (DRC_REF_LEVEL - drc->prog_ref_level))/ 24; | ||
141 | frac = -1 * (drc->dyn_rng_ctl[bd] - (DRC_REF_LEVEL - drc->prog_ref_level)) % 24; | ||
142 | } else { /* boost */ | ||
143 | exp = (drc->dyn_rng_ctl[bd] - (DRC_REF_LEVEL - drc->prog_ref_level))/ 24; | ||
144 | frac = (drc->dyn_rng_ctl[bd] - (DRC_REF_LEVEL - drc->prog_ref_level)) % 24; | ||
145 | } | ||
146 | |||
147 | /* Apply gain factor */ | ||
148 | if (exp < 0) | ||
149 | { | ||
150 | for (i = bottom; i < top; i++) | ||
151 | { | ||
152 | spec[i] >>= -exp; | ||
153 | if (frac) | ||
154 | spec[i] = MUL_R(spec[i],drc_pow2_table[frac+23]); | ||
155 | } | ||
156 | } else { | ||
157 | for (i = bottom; i < top; i++) | ||
158 | { | ||
159 | spec[i] <<= exp; | ||
160 | if (frac) | ||
161 | spec[i] = MUL_R(spec[i],drc_pow2_table[frac+23]); | ||
162 | } | ||
163 | } | ||
164 | #endif | ||
165 | |||
166 | bottom = top; | ||
167 | } | ||
168 | } | ||
diff --git a/lib/rbcodec/codecs/libfaad/drc.h b/lib/rbcodec/codecs/libfaad/drc.h new file mode 100644 index 0000000000..38037a1a12 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/drc.h | |||
@@ -0,0 +1,45 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __DRC_H__ | ||
29 | #define __DRC_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | #define DRC_REF_LEVEL 20*4 /* -20 dB */ | ||
36 | |||
37 | |||
38 | drc_info *drc_init(real_t cut, real_t boost); | ||
39 | void drc_decode(drc_info *drc, real_t *spec); | ||
40 | |||
41 | |||
42 | #ifdef __cplusplus | ||
43 | } | ||
44 | #endif | ||
45 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/drm_dec.c b/lib/rbcodec/codecs/libfaad/drm_dec.c new file mode 100644 index 0000000000..f0b0f01f2b --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/drm_dec.c | |||
@@ -0,0 +1,992 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR and PS decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #include <stdlib.h> | ||
29 | #include <stdio.h> | ||
30 | #include <string.h> | ||
31 | #include <math.h> | ||
32 | #include "common.h" | ||
33 | |||
34 | #ifdef DRM | ||
35 | |||
36 | #include "sbr_dec.h" | ||
37 | #include "drm_dec.h" | ||
38 | #include "bits.h" | ||
39 | |||
40 | /* constants */ | ||
41 | #define DECAY_CUTOFF 3 | ||
42 | #define DECAY_SLOPE 0.05f | ||
43 | |||
44 | /* type definitions */ | ||
45 | typedef const int8_t (*drm_ps_huff_tab)[2]; | ||
46 | |||
47 | |||
48 | /* binary search huffman tables */ | ||
49 | static const int8_t f_huffman_sa[][2] = | ||
50 | { | ||
51 | { /*0*/ -15, 1 }, /* index 0: 1 bits: x */ | ||
52 | { 2, 3 }, /* index 1: 2 bits: 1x */ | ||
53 | { /*7*/ -8, 4 }, /* index 2: 3 bits: 10x */ | ||
54 | { 5, 6 }, /* index 3: 3 bits: 11x */ | ||
55 | { /*1*/ -14, /*-1*/ -16 }, /* index 4: 4 bits: 101x */ | ||
56 | { /*-2*/ -17, 7 }, /* index 5: 4 bits: 110x */ | ||
57 | { 8, 9 }, /* index 6: 4 bits: 111x */ | ||
58 | { /*2*/ -13, /*-3*/ -18 }, /* index 7: 5 bits: 1101x */ | ||
59 | { /*3*/ -12, 10 }, /* index 8: 5 bits: 1110x */ | ||
60 | { 11, 12 }, /* index 9: 5 bits: 1111x */ | ||
61 | { /*4*/ -11, /*5*/ -10 }, /* index 10: 6 bits: 11101x */ | ||
62 | { /*-4*/ -19, /*-5*/ -20 }, /* index 11: 6 bits: 11110x */ | ||
63 | { /*6*/ -9, 13 }, /* index 12: 6 bits: 11111x */ | ||
64 | { /*-7*/ -22, /*-6*/ -21 } /* index 13: 7 bits: 111111x */ | ||
65 | }; | ||
66 | |||
67 | static const int8_t t_huffman_sa[][2] = | ||
68 | { | ||
69 | { /*0*/ -15, 1 }, /* index 0: 1 bits: x */ | ||
70 | { 2, 3 }, /* index 1: 2 bits: 1x */ | ||
71 | { /*-1*/ -16, /*1*/ -14 }, /* index 2: 3 bits: 10x */ | ||
72 | { 4, 5 }, /* index 3: 3 bits: 11x */ | ||
73 | { /*-2*/ -17, /*2*/ -13 }, /* index 4: 4 bits: 110x */ | ||
74 | { 6, 7 }, /* index 5: 4 bits: 111x */ | ||
75 | { /*-3*/ -18, /*3*/ -12 }, /* index 6: 5 bits: 1110x */ | ||
76 | { 8, 9 }, /* index 7: 5 bits: 1111x */ | ||
77 | { /*-4*/ -19, /*4*/ -11 }, /* index 8: 6 bits: 11110x */ | ||
78 | { 10, 11 }, /* index 9: 6 bits: 11111x */ | ||
79 | { /*-5*/ -20, /*5*/ -10 }, /* index 10: 7 bits: 111110x */ | ||
80 | { /*-6*/ -21, 12 }, /* index 11: 7 bits: 111111x */ | ||
81 | { /*-7*/ -22, 13 }, /* index 12: 8 bits: 1111111x */ | ||
82 | { /*6*/ -9, /*7*/ -8 } /* index 13: 9 bits: 11111111x */ | ||
83 | }; | ||
84 | |||
85 | static const int8_t f_huffman_pan[][2] = | ||
86 | { | ||
87 | { /*0*/ -15, 1 }, /* index 0: 1 bits: x */ | ||
88 | { /*-1*/ -16, 2 }, /* index 1: 2 bits: 1x */ | ||
89 | { /*1*/ -14, 3 }, /* index 2: 3 bits: 11x */ | ||
90 | { 4, 5 }, /* index 3: 4 bits: 111x */ | ||
91 | { /*-2*/ -17, /*2*/ -13 }, /* index 4: 5 bits: 1110x */ | ||
92 | { 6, 7 }, /* index 5: 5 bits: 1111x */ | ||
93 | { /*-3*/ -18, /*3*/ -12 }, /* index 6: 6 bits: 11110x */ | ||
94 | { 8, 9 }, /* index 7: 6 bits: 11111x */ | ||
95 | { /*-4*/ -19, /*4*/ -11 }, /* index 8: 7 bits: 111110x */ | ||
96 | { 10, 11 }, /* index 9: 7 bits: 111111x */ | ||
97 | { /*-5*/ -20, /*5*/ -10 }, /* index 10: 8 bits: 1111110x */ | ||
98 | { 12, 13 }, /* index 11: 8 bits: 1111111x */ | ||
99 | { /*-6*/ -21, /*6*/ -9 }, /* index 12: 9 bits: 11111110x */ | ||
100 | { /*-7*/ -22, 14 }, /* index 13: 9 bits: 11111111x */ | ||
101 | { /*7*/ -8, 15 }, /* index 14: 10 bits: 111111111x */ | ||
102 | { 16, 17 }, /* index 15: 11 bits: 1111111111x */ | ||
103 | { /*-8*/ -23, /*8*/ -7 }, /* index 16: 12 bits: 11111111110x */ | ||
104 | { 18, 19 }, /* index 17: 12 bits: 11111111111x */ | ||
105 | { /*-10*/ -25, 20 }, /* index 18: 13 bits: 111111111110x */ | ||
106 | { 21, 22 }, /* index 19: 13 bits: 111111111111x */ | ||
107 | { /*-9*/ -24, /*9*/ -6 }, /* index 20: 14 bits: 1111111111101x */ | ||
108 | { /*10*/ -5, 23 }, /* index 21: 14 bits: 1111111111110x */ | ||
109 | { 24, 25 }, /* index 22: 14 bits: 1111111111111x */ | ||
110 | { /*-13*/ -28, /*-11*/ -26 }, /* index 23: 15 bits: 11111111111101x */ | ||
111 | { /*11*/ -4, /*13*/ -2 }, /* index 24: 15 bits: 11111111111110x */ | ||
112 | { 26, 27 }, /* index 25: 15 bits: 11111111111111x */ | ||
113 | { /*-14*/ -29, /*-12*/ -27 }, /* index 26: 16 bits: 111111111111110x */ | ||
114 | { /*12*/ -3, /*14*/ -1 } /* index 27: 16 bits: 111111111111111x */ | ||
115 | }; | ||
116 | |||
117 | static const int8_t t_huffman_pan[][2] = | ||
118 | { | ||
119 | { /*0*/ -15, 1 }, /* index 0: 1 bits: x */ | ||
120 | { /*-1*/ -16, 2 }, /* index 1: 2 bits: 1x */ | ||
121 | { /*1*/ -14, 3 }, /* index 2: 3 bits: 11x */ | ||
122 | { /*-2*/ -17, 4 }, /* index 3: 4 bits: 111x */ | ||
123 | { /*2*/ -13, 5 }, /* index 4: 5 bits: 1111x */ | ||
124 | { /*-3*/ -18, 6 }, /* index 5: 6 bits: 11111x */ | ||
125 | { /*3*/ -12, 7 }, /* index 6: 7 bits: 111111x */ | ||
126 | { /*-4*/ -19, 8 }, /* index 7: 8 bits: 1111111x */ | ||
127 | { /*4*/ -11, 9 }, /* index 8: 9 bits: 11111111x */ | ||
128 | { 10, 11 }, /* index 9: 10 bits: 111111111x */ | ||
129 | { /*-5*/ -20, /*5*/ -10 }, /* index 10: 11 bits: 1111111110x */ | ||
130 | { 12, 13 }, /* index 11: 11 bits: 1111111111x */ | ||
131 | { /*-6*/ -21, /*6*/ -9 }, /* index 12: 12 bits: 11111111110x */ | ||
132 | { 14, 15 }, /* index 13: 12 bits: 11111111111x */ | ||
133 | { /*-7*/ -22, /*7*/ -8 }, /* index 14: 13 bits: 111111111110x */ | ||
134 | { 16, 17 }, /* index 15: 13 bits: 111111111111x */ | ||
135 | { /*-8*/ -23, /*8*/ -7 }, /* index 16: 14 bits: 1111111111110x */ | ||
136 | { 18, 19 }, /* index 17: 14 bits: 1111111111111x */ | ||
137 | { /*-10*/ -25, /*10*/ -5 }, /* index 18: 15 bits: 11111111111110x */ | ||
138 | { 20, 21 }, /* index 19: 15 bits: 11111111111111x */ | ||
139 | { /*-9*/ -24, /*9*/ -6 }, /* index 20: 16 bits: 111111111111110x */ | ||
140 | { 22, 23 }, /* index 21: 16 bits: 111111111111111x */ | ||
141 | { 24, 25 }, /* index 22: 17 bits: 1111111111111110x */ | ||
142 | { 26, 27 }, /* index 23: 17 bits: 1111111111111111x */ | ||
143 | { /*-14*/ -29, /*-13*/ -28 }, /* index 24: 18 bits: 11111111111111100x */ | ||
144 | { /*-12*/ -27, /*-11*/ -26 }, /* index 25: 18 bits: 11111111111111101x */ | ||
145 | { /*11*/ -4, /*12*/ -3 }, /* index 26: 18 bits: 11111111111111110x */ | ||
146 | { /*13*/ -2, /*14*/ -1 } /* index 27: 18 bits: 11111111111111111x */ | ||
147 | }; | ||
148 | |||
149 | /* There are 3 classes in the standard but the last 2 are identical */ | ||
150 | static const real_t sa_quant[8][2] = | ||
151 | { | ||
152 | { FRAC_CONST(0.0000), FRAC_CONST(0.0000) }, | ||
153 | { FRAC_CONST(0.0501), FRAC_CONST(0.1778) }, | ||
154 | { FRAC_CONST(0.0706), FRAC_CONST(0.2818) }, | ||
155 | { FRAC_CONST(0.0995), FRAC_CONST(0.4467) }, | ||
156 | { FRAC_CONST(0.1399), FRAC_CONST(0.5623) }, | ||
157 | { FRAC_CONST(0.1957), FRAC_CONST(0.7079) }, | ||
158 | { FRAC_CONST(0.2713), FRAC_CONST(0.8913) }, | ||
159 | { FRAC_CONST(0.3699), FRAC_CONST(1.0000) }, | ||
160 | }; | ||
161 | |||
162 | /* We don't need the actual quantizer values */ | ||
163 | #if 0 | ||
164 | static const real_t pan_quant[8][5] = | ||
165 | { | ||
166 | { COEF_CONST(0.0000), COEF_CONST(0.0000), COEF_CONST(0.0000), COEF_CONST(0.0000), COEF_CONST(0.0000) }, | ||
167 | { COEF_CONST(0.1661), COEF_CONST(0.1661), COEF_CONST(0.3322), COEF_CONST(0.3322), COEF_CONST(0.3322) }, | ||
168 | { COEF_CONST(0.3322), COEF_CONST(0.3322), COEF_CONST(0.6644), COEF_CONST(0.8305), COEF_CONST(0.8305) }, | ||
169 | { COEF_CONST(0.4983), COEF_CONST(0.6644), COEF_CONST(0.9966), COEF_CONST(1.4949), COEF_CONST(1.6610) }, | ||
170 | { COEF_CONST(0.6644), COEF_CONST(0.9966), COEF_CONST(1.4949), COEF_CONST(2.1593), COEF_CONST(2.4914) }, | ||
171 | { COEF_CONST(0.8305), COEF_CONST(1.3288), COEF_CONST(2.1593), COEF_CONST(2.9897), COEF_CONST(3.4880) }, | ||
172 | { COEF_CONST(0.9966), COEF_CONST(1.8271), COEF_CONST(2.8236), COEF_CONST(3.8202), COEF_CONST(4.6507) }, | ||
173 | { COEF_CONST(1.3288), COEF_CONST(2.3253), COEF_CONST(3.4880), COEF_CONST(4.6507), COEF_CONST(5.8134) }, | ||
174 | }; | ||
175 | #endif | ||
176 | |||
177 | /* 2^(pan_quant[x][y] */ | ||
178 | static const real_t pan_pow_2_pos[8][5] = { | ||
179 | { REAL_CONST(1.0000000), REAL_CONST(1.0000000), REAL_CONST(1.0000000), REAL_CONST(1.0000000), REAL_CONST(1.0000000) }, | ||
180 | { REAL_CONST(1.1220021), REAL_CONST(1.1220021), REAL_CONST(1.2589312), REAL_CONST(1.2589312), REAL_CONST(1.2589312) }, | ||
181 | { REAL_CONST(1.2589312), REAL_CONST(1.2589312), REAL_CONST(1.5849090), REAL_CONST(1.7783016), REAL_CONST(1.7783016) }, | ||
182 | { REAL_CONST(1.4125481), REAL_CONST(1.5849090), REAL_CONST(1.9952921), REAL_CONST(2.8184461), REAL_CONST(3.1623565) }, | ||
183 | { REAL_CONST(1.5849090), REAL_CONST(1.9952922), REAL_CONST(2.8184461), REAL_CONST(4.4669806), REAL_CONST(5.6232337) }, | ||
184 | { REAL_CONST(1.7783016), REAL_CONST(2.5119365), REAL_CONST(4.4669806), REAL_CONST(7.9430881), REAL_CONST(11.219994) }, | ||
185 | { REAL_CONST(1.9952921), REAL_CONST(3.5482312), REAL_CONST(7.0792671), REAL_CONST(14.125206), REAL_CONST(25.118876) }, | ||
186 | { REAL_CONST(2.5119365), REAL_CONST(5.0116998), REAL_CONST(11.219994), REAL_CONST(25.118876), REAL_CONST(56.235140) } | ||
187 | }; | ||
188 | |||
189 | /* 2^(-pan_quant[x][y] */ | ||
190 | static const real_t pan_pow_2_neg[8][5] = { | ||
191 | { REAL_CONST(1), REAL_CONST(1), REAL_CONST(1), REAL_CONST(1), REAL_CONST(1) }, | ||
192 | { REAL_CONST(0.8912487), REAL_CONST(0.8912487), REAL_CONST(0.7943242), REAL_CONST(0.7943242), REAL_CONST(0.7943242) }, | ||
193 | { REAL_CONST(0.7943242), REAL_CONST(0.7943242), REAL_CONST(0.6309511), REAL_CONST(0.5623344), REAL_CONST(0.5623344) }, | ||
194 | { REAL_CONST(0.7079405), REAL_CONST(0.6309511), REAL_CONST(0.5011797), REAL_CONST(0.3548054), REAL_CONST(0.3162199) }, | ||
195 | { REAL_CONST(0.6309511), REAL_CONST(0.5011797), REAL_CONST(0.3548054), REAL_CONST(0.2238649), REAL_CONST(0.1778336) }, | ||
196 | { REAL_CONST(0.5623343), REAL_CONST(0.3980992), REAL_CONST(0.2238649), REAL_CONST(0.1258956), REAL_CONST(0.0891266) }, | ||
197 | { REAL_CONST(0.5011797), REAL_CONST(0.2818306), REAL_CONST(0.1412576), REAL_CONST(0.0707954), REAL_CONST(0.0398107) }, | ||
198 | { REAL_CONST(0.3980992), REAL_CONST(0.1995331), REAL_CONST(0.0891267), REAL_CONST(0.0398107), REAL_CONST(0.0177825) } | ||
199 | }; | ||
200 | |||
201 | /* 2^(pan_quant[x][y]/30) */ | ||
202 | static const real_t pan_pow_2_30_pos[8][5] = { | ||
203 | { COEF_CONST(1), COEF_CONST(1), COEF_CONST(1), COEF_CONST(1), COEF_CONST(1) }, | ||
204 | { COEF_CONST(1.003845098), COEF_CONST(1.003845098), COEF_CONST(1.007704982), COEF_CONST(1.007704982), COEF_CONST(1.007704982) }, | ||
205 | { COEF_CONST(1.007704982), COEF_CONST(1.007704982), COEF_CONST(1.01546933), COEF_CONST(1.019373909), COEF_CONST(1.019373909) }, | ||
206 | { COEF_CONST(1.011579706), COEF_CONST(1.01546933), COEF_CONST(1.023293502), COEF_CONST(1.035142941), COEF_CONST(1.039123167) }, | ||
207 | { COEF_CONST(1.01546933), COEF_CONST(1.023293502), COEF_CONST(1.035142941), COEF_CONST(1.051155908), COEF_CONST(1.059252598) }, | ||
208 | { COEF_CONST(1.019373909), COEF_CONST(1.03117796), COEF_CONST(1.051155908), COEF_CONST(1.071518432), COEF_CONST(1.0839263) }, | ||
209 | { COEF_CONST(1.023293502), COEF_CONST(1.043118698), COEF_CONST(1.067414119), COEF_CONST(1.092277933), COEF_CONST(1.113439626) }, | ||
210 | { COEF_CONST(1.03117796), COEF_CONST(1.055195268), COEF_CONST(1.0839263), COEF_CONST(1.113439626), COEF_CONST(1.143756546) } | ||
211 | }; | ||
212 | |||
213 | /* 2^(-pan_quant[x][y]/30) */ | ||
214 | static const real_t pan_pow_2_30_neg[8][5] = { | ||
215 | { COEF_CONST(1), COEF_CONST(1), COEF_CONST(1), COEF_CONST(1), COEF_CONST(1) }, | ||
216 | { COEF_CONST(0.99616963), COEF_CONST(0.99616963), COEF_CONST(0.992353931), COEF_CONST(0.992353931), COEF_CONST(0.99235393) }, | ||
217 | { COEF_CONST(0.992353931), COEF_CONST(0.992353931), COEF_CONST(0.984766325), COEF_CONST(0.980994305), COEF_CONST(0.980994305) }, | ||
218 | { COEF_CONST(0.988552848), COEF_CONST(0.984766325), COEF_CONST(0.977236734), COEF_CONST(0.966050157), COEF_CONST(0.962349827) }, | ||
219 | { COEF_CONST(0.984766325), COEF_CONST(0.977236734), COEF_CONST(0.966050157), COEF_CONST(0.951333663), COEF_CONST(0.944061881) }, | ||
220 | { COEF_CONST(0.980994305), COEF_CONST(0.969764715), COEF_CONST(0.951333663), COEF_CONST(0.933255062), COEF_CONST(0.922571949) }, | ||
221 | { COEF_CONST(0.977236734), COEF_CONST(0.958663671), COEF_CONST(0.936843519), COEF_CONST(0.915517901), COEF_CONST(0.898117847) }, | ||
222 | { COEF_CONST(0.969764715), COEF_CONST(0.947691892), COEF_CONST(0.922571949), COEF_CONST(0.898117847), COEF_CONST(0.874311936) } | ||
223 | }; | ||
224 | |||
225 | static const real_t g_decayslope[MAX_SA_BAND] = { | ||
226 | FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(0.95),FRAC_CONST(0.9), FRAC_CONST(0.85), FRAC_CONST(0.8), | ||
227 | FRAC_CONST(0.75),FRAC_CONST(0.7), FRAC_CONST(0.65),FRAC_CONST(0.6), FRAC_CONST(0.55),FRAC_CONST(0.5), FRAC_CONST(0.45), | ||
228 | FRAC_CONST(0.4), FRAC_CONST(0.35),FRAC_CONST(0.3), FRAC_CONST(0.25),FRAC_CONST(0.2), FRAC_CONST(0.15), FRAC_CONST(0.1), | ||
229 | FRAC_CONST(0.05),FRAC_CONST(0), FRAC_CONST(0), FRAC_CONST(0), FRAC_CONST(0), FRAC_CONST(0), FRAC_CONST(0), | ||
230 | FRAC_CONST(0), FRAC_CONST(0), FRAC_CONST(0), FRAC_CONST(0), FRAC_CONST(0), FRAC_CONST(0), FRAC_CONST(0), | ||
231 | FRAC_CONST(0), FRAC_CONST(0), FRAC_CONST(0), FRAC_CONST(0), FRAC_CONST(0), FRAC_CONST(0), FRAC_CONST(0), | ||
232 | FRAC_CONST(0), FRAC_CONST(0), FRAC_CONST(0) | ||
233 | }; | ||
234 | |||
235 | static const real_t sa_sqrt_1_minus[8][2] = { | ||
236 | { FRAC_CONST(1), FRAC_CONST(1) }, | ||
237 | { FRAC_CONST(0.998744206), FRAC_CONST(0.984066644) }, | ||
238 | { FRAC_CONST(0.997504707), FRAC_CONST(0.959473168) }, | ||
239 | { FRAC_CONST(0.995037562), FRAC_CONST(0.894683804) }, | ||
240 | { FRAC_CONST(0.990165638), FRAC_CONST(0.826933317) }, | ||
241 | { FRAC_CONST(0.980663811), FRAC_CONST(0.706312672) }, | ||
242 | { FRAC_CONST(0.962494836), FRAC_CONST(0.45341406) }, | ||
243 | { FRAC_CONST(0.929071574), FRAC_CONST(0) } | ||
244 | }; | ||
245 | |||
246 | static const uint8_t sa_freq_scale[9][2] = | ||
247 | { | ||
248 | { 0, 0}, | ||
249 | { 1, 1}, | ||
250 | { 2, 2}, | ||
251 | { 3, 3}, | ||
252 | { 5, 5}, | ||
253 | { 7, 7}, | ||
254 | {10,10}, | ||
255 | {13,13}, | ||
256 | {46,23} | ||
257 | }; | ||
258 | |||
259 | static const uint8_t pan_freq_scale[21] = | ||
260 | { | ||
261 | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, | ||
262 | 11, 12, 13, 14, 15, 18, 22, 26, 32, 64 | ||
263 | }; | ||
264 | |||
265 | static const uint8_t pan_quant_class[20] = | ||
266 | { | ||
267 | 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, | ||
268 | 2, 2, 2, 2, 3, 3, 3, 4, 4, 4 | ||
269 | }; | ||
270 | |||
271 | /* Inverse mapping lookup */ | ||
272 | static const uint8_t pan_inv_freq[64] = { | ||
273 | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, | ||
274 | 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, | ||
275 | 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, | ||
276 | 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19 | ||
277 | }; | ||
278 | |||
279 | static const uint8_t sa_inv_freq[MAX_SA_BAND] = { | ||
280 | 0, 1, 2, 3, 3, 4, 4, 5, 5, 5, 6, 6, 6, | ||
281 | 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, | ||
282 | 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, | ||
283 | 7, 7, 7, 7, 7, 7, 7 | ||
284 | }; | ||
285 | |||
286 | static const real_t filter_coeff[] = | ||
287 | { | ||
288 | FRAC_CONST(0.65143905754106), | ||
289 | FRAC_CONST(0.56471812200776), | ||
290 | FRAC_CONST(0.48954165955695) | ||
291 | }; | ||
292 | |||
293 | static const uint8_t delay_length[][2] = | ||
294 | { | ||
295 | { 1, 3 }, { 2, 4 }, { 3, 5 } | ||
296 | }; | ||
297 | |||
298 | static const real_t delay_fraction[] = | ||
299 | { | ||
300 | FRAC_CONST(0.43), FRAC_CONST(0.75), FRAC_CONST(0.347) | ||
301 | }; | ||
302 | |||
303 | static const real_t peak_decay[2] = | ||
304 | { | ||
305 | FRAC_CONST(0.58664621951003), FRAC_CONST(0.76592833836465) | ||
306 | }; | ||
307 | |||
308 | static const real_t smooth_coeff[2] = | ||
309 | { | ||
310 | FRAC_CONST(0.6), FRAC_CONST(0.25) | ||
311 | }; | ||
312 | |||
313 | /* Please note that these are the same tables as in plain PS */ | ||
314 | static const complex_t Q_Fract_allpass_Qmf[][3] = { | ||
315 | { { FRAC_CONST(0.7804303765), FRAC_CONST(0.6252426505) }, { FRAC_CONST(0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(0.8550928831), FRAC_CONST(0.5184748173) } }, | ||
316 | { { FRAC_CONST(-0.4399392009), FRAC_CONST(0.8980275393) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(-0.0643581524), FRAC_CONST(0.9979268909) } }, | ||
317 | { { FRAC_CONST(-0.9723699093), FRAC_CONST(-0.2334454209) }, { FRAC_CONST(0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(-0.9146071672), FRAC_CONST(0.4043435752) } }, | ||
318 | { { FRAC_CONST(0.0157073960), FRAC_CONST(-0.9998766184) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(-0.7814115286), FRAC_CONST(-0.6240159869) } }, | ||
319 | { { FRAC_CONST(0.9792228341), FRAC_CONST(-0.2027871907) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(0.1920081824), FRAC_CONST(-0.9813933372) } }, | ||
320 | { { FRAC_CONST(0.4115142524), FRAC_CONST(0.9114032984) }, { FRAC_CONST(0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(0.9589683414), FRAC_CONST(-0.2835132182) } }, | ||
321 | { { FRAC_CONST(-0.7996847630), FRAC_CONST(0.6004201174) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(0.6947838664), FRAC_CONST(0.7192186117) } }, | ||
322 | { { FRAC_CONST(-0.7604058385), FRAC_CONST(-0.6494481564) }, { FRAC_CONST(0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(-0.3164770305), FRAC_CONST(0.9486001730) } }, | ||
323 | { { FRAC_CONST(0.4679299891), FRAC_CONST(-0.8837655187) }, { FRAC_CONST(0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(-0.9874414206), FRAC_CONST(0.1579856575) } }, | ||
324 | { { FRAC_CONST(0.9645573497), FRAC_CONST(0.2638732493) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(-0.5966450572), FRAC_CONST(-0.8025052547) } }, | ||
325 | { { FRAC_CONST(-0.0471066870), FRAC_CONST(0.9988898635) }, { FRAC_CONST(0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(0.4357025325), FRAC_CONST(-0.9000906944) } }, | ||
326 | { { FRAC_CONST(-0.9851093888), FRAC_CONST(0.1719288528) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(0.9995546937), FRAC_CONST(-0.0298405960) } }, | ||
327 | { { FRAC_CONST(-0.3826831877), FRAC_CONST(-0.9238796234) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(0.4886211455), FRAC_CONST(0.8724960685) } }, | ||
328 | { { FRAC_CONST(0.8181498647), FRAC_CONST(-0.5750049949) }, { FRAC_CONST(0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(-0.5477093458), FRAC_CONST(0.8366686702) } }, | ||
329 | { { FRAC_CONST(0.7396308780), FRAC_CONST(0.6730127335) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(-0.9951074123), FRAC_CONST(-0.0987988561) } }, | ||
330 | { { FRAC_CONST(-0.4954589605), FRAC_CONST(0.8686313629) }, { FRAC_CONST(0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(-0.3725017905), FRAC_CONST(-0.9280315042) } }, | ||
331 | { { FRAC_CONST(-0.9557929039), FRAC_CONST(-0.2940406799) }, { FRAC_CONST(0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(0.6506417990), FRAC_CONST(-0.7593847513) } }, | ||
332 | { { FRAC_CONST(0.0784594864), FRAC_CONST(-0.9969173074) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(0.9741733670), FRAC_CONST(0.2258014232) } }, | ||
333 | { { FRAC_CONST(0.9900237322), FRAC_CONST(-0.1409008205) }, { FRAC_CONST(0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(0.2502108514), FRAC_CONST(0.9681913853) } }, | ||
334 | { { FRAC_CONST(0.3534744382), FRAC_CONST(0.9354441762) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(-0.7427945137), FRAC_CONST(0.6695194840) } }, | ||
335 | { { FRAC_CONST(-0.8358076215), FRAC_CONST(0.5490224361) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(-0.9370992780), FRAC_CONST(-0.3490629196) } }, | ||
336 | { { FRAC_CONST(-0.7181259394), FRAC_CONST(-0.6959131360) }, { FRAC_CONST(0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(-0.1237744763), FRAC_CONST(-0.9923103452) } }, | ||
337 | { { FRAC_CONST(0.5224990249), FRAC_CONST(-0.8526399136) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(0.8226406574), FRAC_CONST(-0.5685616732) } }, | ||
338 | { { FRAC_CONST(0.9460852146), FRAC_CONST(0.3239179254) }, { FRAC_CONST(0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(0.8844994903), FRAC_CONST(0.4665412009) } }, | ||
339 | { { FRAC_CONST(-0.1097348556), FRAC_CONST(0.9939609170) }, { FRAC_CONST(0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(-0.0047125919), FRAC_CONST(0.9999889135) } }, | ||
340 | { { FRAC_CONST(-0.9939610362), FRAC_CONST(0.1097337380) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(-0.8888573647), FRAC_CONST(0.4581840038) } }, | ||
341 | { { FRAC_CONST(-0.3239168525), FRAC_CONST(-0.9460855722) }, { FRAC_CONST(0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(-0.8172453642), FRAC_CONST(-0.5762898922) } }, | ||
342 | { { FRAC_CONST(0.8526405096), FRAC_CONST(-0.5224980116) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(0.1331215799), FRAC_CONST(-0.9910997152) } }, | ||
343 | { { FRAC_CONST(0.6959123611), FRAC_CONST(0.7181267142) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(0.9403476119), FRAC_CONST(-0.3402152061) } }, | ||
344 | { { FRAC_CONST(-0.5490233898), FRAC_CONST(0.8358070254) }, { FRAC_CONST(0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(0.7364512086), FRAC_CONST(0.6764906645) } }, | ||
345 | { { FRAC_CONST(-0.9354437590), FRAC_CONST(-0.3534754813) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(-0.2593250275), FRAC_CONST(0.9657900929) } }, | ||
346 | { { FRAC_CONST(0.1409019381), FRAC_CONST(-0.9900235534) }, { FRAC_CONST(0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(-0.9762582779), FRAC_CONST(0.2166097313) } }, | ||
347 | { { FRAC_CONST(0.9969173670), FRAC_CONST(-0.0784583688) }, { FRAC_CONST(0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(-0.6434556246), FRAC_CONST(-0.7654833794) } }, | ||
348 | { { FRAC_CONST(0.2940396070), FRAC_CONST(0.9557932615) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(0.3812320232), FRAC_CONST(-0.9244794250) } }, | ||
349 | { { FRAC_CONST(-0.8686318994), FRAC_CONST(0.4954580069) }, { FRAC_CONST(0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(0.9959943891), FRAC_CONST(-0.0894154981) } }, | ||
350 | { { FRAC_CONST(-0.6730118990), FRAC_CONST(-0.7396316528) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(0.5397993922), FRAC_CONST(0.8417937160) } }, | ||
351 | { { FRAC_CONST(0.5750059485), FRAC_CONST(-0.8181492686) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(-0.4968227744), FRAC_CONST(0.8678520322) } }, | ||
352 | { { FRAC_CONST(0.9238792062), FRAC_CONST(0.3826842010) }, { FRAC_CONST(0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(-0.9992290139), FRAC_CONST(-0.0392601527) } }, | ||
353 | { { FRAC_CONST(-0.1719299555), FRAC_CONST(0.9851091504) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(-0.4271997511), FRAC_CONST(-0.9041572809) } }, | ||
354 | { { FRAC_CONST(-0.9988899231), FRAC_CONST(0.0471055657) }, { FRAC_CONST(0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(0.6041822433), FRAC_CONST(-0.7968461514) } }, | ||
355 | { { FRAC_CONST(-0.2638721764), FRAC_CONST(-0.9645576477) }, { FRAC_CONST(0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(0.9859085083), FRAC_CONST(0.1672853529) } }, | ||
356 | { { FRAC_CONST(0.8837660551), FRAC_CONST(-0.4679289758) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(0.3075223565), FRAC_CONST(0.9515408874) } }, | ||
357 | { { FRAC_CONST(0.6494473219), FRAC_CONST(0.7604066133) }, { FRAC_CONST(0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(-0.7015317082), FRAC_CONST(0.7126382589) } }, | ||
358 | { { FRAC_CONST(-0.6004210114), FRAC_CONST(0.7996840477) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(-0.9562535882), FRAC_CONST(-0.2925389707) } }, | ||
359 | { { FRAC_CONST(-0.9114028811), FRAC_CONST(-0.4115152657) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(-0.1827499419), FRAC_CONST(-0.9831594229) } }, | ||
360 | { { FRAC_CONST(0.2027882934), FRAC_CONST(-0.9792225957) }, { FRAC_CONST(0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(0.7872582674), FRAC_CONST(-0.6166234016) } }, | ||
361 | { { FRAC_CONST(0.9998766780), FRAC_CONST(-0.0157062728) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(0.9107555747), FRAC_CONST(0.4129458666) } }, | ||
362 | { { FRAC_CONST(0.2334443331), FRAC_CONST(0.9723701477) }, { FRAC_CONST(0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(0.0549497530), FRAC_CONST(0.9984891415) } }, | ||
363 | { { FRAC_CONST(-0.8980280757), FRAC_CONST(0.4399381876) }, { FRAC_CONST(0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(-0.8599416018), FRAC_CONST(0.5103924870) } }, | ||
364 | { { FRAC_CONST(-0.6252418160), FRAC_CONST(-0.7804310918) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(-0.8501682281), FRAC_CONST(-0.5265110731) } }, | ||
365 | { { FRAC_CONST(0.6252435446), FRAC_CONST(-0.7804297209) }, { FRAC_CONST(0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(0.0737608299), FRAC_CONST(-0.9972759485) } }, | ||
366 | { { FRAC_CONST(0.8980270624), FRAC_CONST(0.4399402142) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(0.9183775187), FRAC_CONST(-0.3957053721) } }, | ||
367 | { { FRAC_CONST(-0.2334465086), FRAC_CONST(0.9723696709) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(0.7754954696), FRAC_CONST(0.6313531399) } }, | ||
368 | { { FRAC_CONST(-0.9998766184), FRAC_CONST(-0.0157085191) }, { FRAC_CONST(0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(-0.2012493610), FRAC_CONST(0.9795400500) } }, | ||
369 | { { FRAC_CONST(-0.2027861029), FRAC_CONST(-0.9792230725) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(-0.9615978599), FRAC_CONST(0.2744622827) } }, | ||
370 | { { FRAC_CONST(0.9114037752), FRAC_CONST(-0.4115132093) }, { FRAC_CONST(0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(-0.6879743338), FRAC_CONST(-0.7257350087) } }, | ||
371 | { { FRAC_CONST(0.6004192233), FRAC_CONST(0.7996854186) }, { FRAC_CONST(0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(0.3254036009), FRAC_CONST(-0.9455752373) } }, | ||
372 | { { FRAC_CONST(-0.6494490504), FRAC_CONST(0.7604051232) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(0.9888865948), FRAC_CONST(-0.1486719251) } }, | ||
373 | { { FRAC_CONST(-0.8837650418), FRAC_CONST(-0.4679309726) }, { FRAC_CONST(0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(0.5890548825), FRAC_CONST(0.8080930114) } }, | ||
374 | { { FRAC_CONST(0.2638743520), FRAC_CONST(-0.9645570517) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(-0.4441666007), FRAC_CONST(0.8959442377) } }, | ||
375 | { { FRAC_CONST(0.9988898039), FRAC_CONST(0.0471078083) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(-0.9997915030), FRAC_CONST(0.0204183888) } }, | ||
376 | { { FRAC_CONST(0.1719277352), FRAC_CONST(0.9851095676) }, { FRAC_CONST(0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(-0.4803760946), FRAC_CONST(-0.8770626187) } }, | ||
377 | { { FRAC_CONST(-0.9238800406), FRAC_CONST(0.3826821446) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(0.5555707216), FRAC_CONST(-0.8314692974) } }, | ||
378 | { { FRAC_CONST(-0.5750041008), FRAC_CONST(-0.8181505203) }, { FRAC_CONST(0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(0.9941320419), FRAC_CONST(0.1081734300) } } | ||
379 | }; | ||
380 | |||
381 | static const complex_t Phi_Fract_Qmf[] = { | ||
382 | { FRAC_CONST(0.8181497455), FRAC_CONST(0.5750052333) }, | ||
383 | { FRAC_CONST(-0.2638730407), FRAC_CONST(0.9645574093) }, | ||
384 | { FRAC_CONST(-0.9969173074), FRAC_CONST(0.0784590989) }, | ||
385 | { FRAC_CONST(-0.4115143716), FRAC_CONST(-0.9114032984) }, | ||
386 | { FRAC_CONST(0.7181262970), FRAC_CONST(-0.6959127784) }, | ||
387 | { FRAC_CONST(0.8980275989), FRAC_CONST(0.4399391711) }, | ||
388 | { FRAC_CONST(-0.1097343117), FRAC_CONST(0.9939609766) }, | ||
389 | { FRAC_CONST(-0.9723699093), FRAC_CONST(0.2334453613) }, | ||
390 | { FRAC_CONST(-0.5490227938), FRAC_CONST(-0.8358073831) }, | ||
391 | { FRAC_CONST(0.6004202366), FRAC_CONST(-0.7996846437) }, | ||
392 | { FRAC_CONST(0.9557930231), FRAC_CONST(0.2940403223) }, | ||
393 | { FRAC_CONST(0.0471064523), FRAC_CONST(0.9988898635) }, | ||
394 | { FRAC_CONST(-0.9238795042), FRAC_CONST(0.3826834261) }, | ||
395 | { FRAC_CONST(-0.6730124950), FRAC_CONST(-0.7396311164) }, | ||
396 | { FRAC_CONST(0.4679298103), FRAC_CONST(-0.8837656379) }, | ||
397 | { FRAC_CONST(0.9900236726), FRAC_CONST(0.1409012377) }, | ||
398 | { FRAC_CONST(0.2027872950), FRAC_CONST(0.9792228341) }, | ||
399 | { FRAC_CONST(-0.8526401520), FRAC_CONST(0.5224985480) }, | ||
400 | { FRAC_CONST(-0.7804304361), FRAC_CONST(-0.6252426505) }, | ||
401 | { FRAC_CONST(0.3239174187), FRAC_CONST(-0.9460853338) }, | ||
402 | { FRAC_CONST(0.9998766184), FRAC_CONST(-0.0157073177) }, | ||
403 | { FRAC_CONST(0.3534748554), FRAC_CONST(0.9354440570) }, | ||
404 | { FRAC_CONST(-0.7604059577), FRAC_CONST(0.6494480371) }, | ||
405 | { FRAC_CONST(-0.8686315417), FRAC_CONST(-0.4954586625) }, | ||
406 | { FRAC_CONST(0.1719291061), FRAC_CONST(-0.9851093292) }, | ||
407 | { FRAC_CONST(0.9851093292), FRAC_CONST(-0.1719291061) }, | ||
408 | { FRAC_CONST(0.4954586625), FRAC_CONST(0.8686315417) }, | ||
409 | { FRAC_CONST(-0.6494480371), FRAC_CONST(0.7604059577) }, | ||
410 | { FRAC_CONST(-0.9354440570), FRAC_CONST(-0.3534748554) }, | ||
411 | { FRAC_CONST(0.0157073177), FRAC_CONST(-0.9998766184) }, | ||
412 | { FRAC_CONST(0.9460853338), FRAC_CONST(-0.3239174187) }, | ||
413 | { FRAC_CONST(0.6252426505), FRAC_CONST(0.7804304361) }, | ||
414 | { FRAC_CONST(-0.5224985480), FRAC_CONST(0.8526401520) }, | ||
415 | { FRAC_CONST(-0.9792228341), FRAC_CONST(-0.2027872950) }, | ||
416 | { FRAC_CONST(-0.1409012377), FRAC_CONST(-0.9900236726) }, | ||
417 | { FRAC_CONST(0.8837656379), FRAC_CONST(-0.4679298103) }, | ||
418 | { FRAC_CONST(0.7396311164), FRAC_CONST(0.6730124950) }, | ||
419 | { FRAC_CONST(-0.3826834261), FRAC_CONST(0.9238795042) }, | ||
420 | { FRAC_CONST(-0.9988898635), FRAC_CONST(-0.0471064523) }, | ||
421 | { FRAC_CONST(-0.2940403223), FRAC_CONST(-0.9557930231) }, | ||
422 | { FRAC_CONST(0.7996846437), FRAC_CONST(-0.6004202366) }, | ||
423 | { FRAC_CONST(0.8358073831), FRAC_CONST(0.5490227938) }, | ||
424 | { FRAC_CONST(-0.2334453613), FRAC_CONST(0.9723699093) }, | ||
425 | { FRAC_CONST(-0.9939609766), FRAC_CONST(0.1097343117) }, | ||
426 | { FRAC_CONST(-0.4399391711), FRAC_CONST(-0.8980275989) }, | ||
427 | { FRAC_CONST(0.6959127784), FRAC_CONST(-0.7181262970) }, | ||
428 | { FRAC_CONST(0.9114032984), FRAC_CONST(0.4115143716) }, | ||
429 | { FRAC_CONST(-0.0784590989), FRAC_CONST(0.9969173074) }, | ||
430 | { FRAC_CONST(-0.9645574093), FRAC_CONST(0.2638730407) }, | ||
431 | { FRAC_CONST(-0.5750052333), FRAC_CONST(-0.8181497455) }, | ||
432 | { FRAC_CONST(0.5750052333), FRAC_CONST(-0.8181497455) }, | ||
433 | { FRAC_CONST(0.9645574093), FRAC_CONST(0.2638730407) }, | ||
434 | { FRAC_CONST(0.0784590989), FRAC_CONST(0.9969173074) }, | ||
435 | { FRAC_CONST(-0.9114032984), FRAC_CONST(0.4115143716) }, | ||
436 | { FRAC_CONST(-0.6959127784), FRAC_CONST(-0.7181262970) }, | ||
437 | { FRAC_CONST(0.4399391711), FRAC_CONST(-0.8980275989) }, | ||
438 | { FRAC_CONST(0.9939609766), FRAC_CONST(0.1097343117) }, | ||
439 | { FRAC_CONST(0.2334453613), FRAC_CONST(0.9723699093) }, | ||
440 | { FRAC_CONST(-0.8358073831), FRAC_CONST(0.5490227938) }, | ||
441 | { FRAC_CONST(-0.7996846437), FRAC_CONST(-0.6004202366) }, | ||
442 | { FRAC_CONST(0.2940403223), FRAC_CONST(-0.9557930231) }, | ||
443 | { FRAC_CONST(0.9988898635), FRAC_CONST(-0.0471064523) }, | ||
444 | { FRAC_CONST(0.3826834261), FRAC_CONST(0.9238795042) }, | ||
445 | { FRAC_CONST(-0.7396311164), FRAC_CONST(0.6730124950) } | ||
446 | }; | ||
447 | |||
448 | /* static variables */ | ||
449 | static drm_ps_info s_drm_ps_info; | ||
450 | |||
451 | /* static function declarations */ | ||
452 | static void drm_ps_sa_element(drm_ps_info *ps, bitfile *ld); | ||
453 | static void drm_ps_pan_element(drm_ps_info *ps, bitfile *ld); | ||
454 | static int8_t huff_dec(bitfile *ld, drm_ps_huff_tab huff); | ||
455 | |||
456 | |||
457 | uint16_t drm_ps_data(drm_ps_info *ps, bitfile *ld) | ||
458 | { | ||
459 | uint16_t bits = (uint16_t)faad_get_processed_bits(ld); | ||
460 | |||
461 | ps->drm_ps_data_available = 1; | ||
462 | |||
463 | ps->bs_enable_sa = faad_get1bit(ld); | ||
464 | ps->bs_enable_pan = faad_get1bit(ld); | ||
465 | |||
466 | if (ps->bs_enable_sa) | ||
467 | { | ||
468 | drm_ps_sa_element(ps, ld); | ||
469 | } | ||
470 | |||
471 | if (ps->bs_enable_pan) | ||
472 | { | ||
473 | drm_ps_pan_element(ps, ld); | ||
474 | } | ||
475 | |||
476 | bits = (uint16_t)faad_get_processed_bits(ld) - bits; | ||
477 | |||
478 | return bits; | ||
479 | } | ||
480 | |||
481 | static void drm_ps_sa_element(drm_ps_info *ps, bitfile *ld) | ||
482 | { | ||
483 | drm_ps_huff_tab huff; | ||
484 | uint8_t band; | ||
485 | |||
486 | ps->bs_sa_dt_flag = faad_get1bit(ld); | ||
487 | if (ps->bs_sa_dt_flag) | ||
488 | { | ||
489 | huff = t_huffman_sa; | ||
490 | } else { | ||
491 | huff = f_huffman_sa; | ||
492 | } | ||
493 | |||
494 | for (band = 0; band < DRM_NUM_SA_BANDS; band++) | ||
495 | { | ||
496 | ps->bs_sa_data[band] = huff_dec(ld, huff); | ||
497 | } | ||
498 | } | ||
499 | |||
500 | static void drm_ps_pan_element(drm_ps_info *ps, bitfile *ld) | ||
501 | { | ||
502 | drm_ps_huff_tab huff; | ||
503 | uint8_t band; | ||
504 | |||
505 | ps->bs_pan_dt_flag = faad_get1bit(ld); | ||
506 | if (ps->bs_pan_dt_flag) | ||
507 | { | ||
508 | huff = t_huffman_pan; | ||
509 | } else { | ||
510 | huff = f_huffman_pan; | ||
511 | } | ||
512 | |||
513 | for (band = 0; band < DRM_NUM_PAN_BANDS; band++) | ||
514 | { | ||
515 | ps->bs_pan_data[band] = huff_dec(ld, huff); | ||
516 | } | ||
517 | } | ||
518 | |||
519 | /* binary search huffman decoding */ | ||
520 | static int8_t huff_dec(bitfile *ld, drm_ps_huff_tab huff) | ||
521 | { | ||
522 | uint8_t bit; | ||
523 | int16_t index = 0; | ||
524 | |||
525 | while (index >= 0) | ||
526 | { | ||
527 | bit = (uint8_t)faad_get1bit(ld); | ||
528 | index = huff[index][bit]; | ||
529 | } | ||
530 | |||
531 | return index + 15; | ||
532 | } | ||
533 | |||
534 | |||
535 | static int8_t sa_delta_clip(drm_ps_info *ps, int8_t i) | ||
536 | { | ||
537 | if (i < 0) { | ||
538 | /* printf(" SAminclip %d", i); */ | ||
539 | ps->sa_decode_error = 1; | ||
540 | return 0; | ||
541 | } else if (i > 7) { | ||
542 | /* printf(" SAmaxclip %d", i); */ | ||
543 | ps->sa_decode_error = 1; | ||
544 | return 7; | ||
545 | } else | ||
546 | return i; | ||
547 | } | ||
548 | |||
549 | static int8_t pan_delta_clip(drm_ps_info *ps, int8_t i) | ||
550 | { | ||
551 | if (i < -7) { | ||
552 | /* printf(" PANminclip %d", i); */ | ||
553 | ps->pan_decode_error = 1; | ||
554 | return -7; | ||
555 | } else if (i > 7) { | ||
556 | /* printf(" PANmaxclip %d", i); */ | ||
557 | ps->pan_decode_error = 1; | ||
558 | return 7; | ||
559 | } else | ||
560 | return i; | ||
561 | } | ||
562 | |||
563 | static void drm_ps_delta_decode(drm_ps_info *ps) | ||
564 | { | ||
565 | uint8_t band; | ||
566 | |||
567 | if (ps->bs_enable_sa) | ||
568 | { | ||
569 | if (ps->bs_sa_dt_flag && !ps->g_last_had_sa) | ||
570 | { | ||
571 | for (band = 0; band < DRM_NUM_SA_BANDS; band++) | ||
572 | { | ||
573 | ps->g_prev_sa_index[band] = 0; | ||
574 | } | ||
575 | } | ||
576 | if (ps->bs_sa_dt_flag) | ||
577 | { | ||
578 | ps->g_sa_index[0] = sa_delta_clip(ps, ps->g_prev_sa_index[0]+ps->bs_sa_data[0]); | ||
579 | |||
580 | } else { | ||
581 | ps->g_sa_index[0] = sa_delta_clip(ps,ps->bs_sa_data[0]); | ||
582 | } | ||
583 | |||
584 | for (band = 1; band < DRM_NUM_SA_BANDS; band++) | ||
585 | { | ||
586 | if (ps->bs_sa_dt_flag) | ||
587 | { | ||
588 | ps->g_sa_index[band] = sa_delta_clip(ps, ps->g_prev_sa_index[band] + ps->bs_sa_data[band]); | ||
589 | } else { | ||
590 | ps->g_sa_index[band] = sa_delta_clip(ps, ps->g_sa_index[band-1] + ps->bs_sa_data[band]); | ||
591 | } | ||
592 | } | ||
593 | } | ||
594 | |||
595 | /* An error during SA decoding implies PAN data will be undecodable, too */ | ||
596 | /* Also, we don't like on/off switching in PS, so we force to last settings */ | ||
597 | if (ps->sa_decode_error) { | ||
598 | ps->pan_decode_error = 1; | ||
599 | ps->bs_enable_pan = ps->g_last_had_pan; | ||
600 | ps->bs_enable_sa = ps->g_last_had_sa; | ||
601 | } | ||
602 | |||
603 | |||
604 | if (ps->bs_enable_sa) | ||
605 | { | ||
606 | if (ps->sa_decode_error) { | ||
607 | for (band = 0; band < DRM_NUM_SA_BANDS; band++) | ||
608 | { | ||
609 | ps->g_sa_index[band] = ps->g_last_good_sa_index[band]; | ||
610 | } | ||
611 | } else { | ||
612 | for (band = 0; band < DRM_NUM_SA_BANDS; band++) | ||
613 | { | ||
614 | ps->g_last_good_sa_index[band] = ps->g_sa_index[band]; | ||
615 | } | ||
616 | } | ||
617 | } | ||
618 | |||
619 | if (ps->bs_enable_pan) | ||
620 | { | ||
621 | if (ps->bs_pan_dt_flag && !ps->g_last_had_pan) | ||
622 | { | ||
623 | /* The DRM PS spec doesn't say anything about this case. (deltacoded in time without a previous frame) | ||
624 | AAC PS spec you must tread previous frame as 0, so that's what we try. | ||
625 | */ | ||
626 | for (band = 0; band < DRM_NUM_PAN_BANDS; band++) | ||
627 | { | ||
628 | ps->g_prev_pan_index[band] = 0; | ||
629 | } | ||
630 | } | ||
631 | |||
632 | if (ps->bs_pan_dt_flag) | ||
633 | { | ||
634 | ps->g_pan_index[0] = pan_delta_clip(ps, ps->g_prev_pan_index[0]+ps->bs_pan_data[0]); | ||
635 | } else { | ||
636 | ps->g_pan_index[0] = pan_delta_clip(ps, ps->bs_pan_data[0]); | ||
637 | } | ||
638 | |||
639 | for (band = 1; band < DRM_NUM_PAN_BANDS; band++) | ||
640 | { | ||
641 | if (ps->bs_pan_dt_flag) | ||
642 | { | ||
643 | ps->g_pan_index[band] = pan_delta_clip(ps, ps->g_prev_pan_index[band] + ps->bs_pan_data[band]); | ||
644 | } else { | ||
645 | ps->g_pan_index[band] = pan_delta_clip(ps, ps->g_pan_index[band-1] + ps->bs_pan_data[band]); | ||
646 | } | ||
647 | } | ||
648 | |||
649 | if (ps->pan_decode_error) { | ||
650 | for (band = 0; band < DRM_NUM_PAN_BANDS; band++) | ||
651 | { | ||
652 | ps->g_pan_index[band] = ps->g_last_good_pan_index[band]; | ||
653 | } | ||
654 | } else { | ||
655 | for (band = 0; band < DRM_NUM_PAN_BANDS; band++) | ||
656 | { | ||
657 | ps->g_last_good_pan_index[band] = ps->g_pan_index[band]; | ||
658 | } | ||
659 | } | ||
660 | } | ||
661 | } | ||
662 | |||
663 | static void drm_calc_sa_side_signal(drm_ps_info *ps, qmf_t X[MAX_NTSRPS][64], uint8_t rateselect) | ||
664 | { | ||
665 | uint8_t s, b, k; | ||
666 | complex_t qfrac, tmp0, tmp, in, R0; | ||
667 | real_t peakdiff; | ||
668 | real_t nrg; | ||
669 | real_t power; | ||
670 | real_t transratio; | ||
671 | real_t new_delay_slopes[NUM_OF_LINKS]; | ||
672 | uint8_t temp_delay_ser[NUM_OF_LINKS]; | ||
673 | complex_t Phi_Fract; | ||
674 | #ifdef FIXED_POINT | ||
675 | uint32_t in_re, in_im; | ||
676 | #endif | ||
677 | |||
678 | for (b = 0; b < sa_freq_scale[DRM_NUM_SA_BANDS][rateselect]; b++) | ||
679 | { | ||
680 | /* set delay indices */ | ||
681 | for (k = 0; k < NUM_OF_LINKS; k++) | ||
682 | temp_delay_ser[k] = ps->delay_buf_index_ser[k]; | ||
683 | |||
684 | RE(Phi_Fract) = RE(Phi_Fract_Qmf[b]); | ||
685 | IM(Phi_Fract) = IM(Phi_Fract_Qmf[b]); | ||
686 | |||
687 | for (s = 0; s < NUM_OF_SUBSAMPLES; s++) | ||
688 | { | ||
689 | const real_t gamma = REAL_CONST(1.5); | ||
690 | const real_t sigma = REAL_CONST(1.5625); | ||
691 | |||
692 | RE(in) = QMF_RE(X[s][b]); | ||
693 | IM(in) = QMF_IM(X[s][b]); | ||
694 | |||
695 | #ifdef FIXED_POINT | ||
696 | /* NOTE: all input is scaled by 2^(-5) because of fixed point QMF | ||
697 | * meaning that P will be scaled by 2^(-10) compared to floating point version | ||
698 | */ | ||
699 | in_re = ((abs(RE(in))+(1<<(REAL_BITS-1)))>>REAL_BITS); | ||
700 | in_im = ((abs(IM(in))+(1<<(REAL_BITS-1)))>>REAL_BITS); | ||
701 | power = in_re*in_re + in_im*in_im; | ||
702 | #else | ||
703 | power = MUL_R(RE(in),RE(in)) + MUL_R(IM(in),IM(in)); | ||
704 | #endif | ||
705 | |||
706 | ps->peakdecay_fast[b] = MUL_F(ps->peakdecay_fast[b], peak_decay[rateselect]); | ||
707 | if (ps->peakdecay_fast[b] < power) | ||
708 | ps->peakdecay_fast[b] = power; | ||
709 | |||
710 | peakdiff = ps->prev_peakdiff[b]; | ||
711 | peakdiff += MUL_F((ps->peakdecay_fast[b] - power - ps->prev_peakdiff[b]), smooth_coeff[rateselect]); | ||
712 | ps->prev_peakdiff[b] = peakdiff; | ||
713 | |||
714 | nrg = ps->prev_nrg[b]; | ||
715 | nrg += MUL_F((power - ps->prev_nrg[b]), smooth_coeff[rateselect]); | ||
716 | ps->prev_nrg[b] = nrg; | ||
717 | |||
718 | if (MUL_R(peakdiff, gamma) <= nrg) { | ||
719 | transratio = sigma; | ||
720 | } else { | ||
721 | transratio = MUL_R(DIV_R(nrg, MUL_R(peakdiff, gamma)), sigma); | ||
722 | } | ||
723 | |||
724 | for (k = 0; k < NUM_OF_LINKS; k++) | ||
725 | { | ||
726 | new_delay_slopes[k] = MUL_F(g_decayslope[b], filter_coeff[k]); | ||
727 | } | ||
728 | |||
729 | RE(tmp0) = RE(ps->d_buff[0][b]); | ||
730 | IM(tmp0) = IM(ps->d_buff[0][b]); | ||
731 | |||
732 | RE(ps->d_buff[0][b]) = RE(ps->d_buff[1][b]); | ||
733 | IM(ps->d_buff[0][b]) = IM(ps->d_buff[1][b]); | ||
734 | |||
735 | RE(ps->d_buff[1][b]) = RE(in); | ||
736 | IM(ps->d_buff[1][b]) = IM(in); | ||
737 | |||
738 | ComplexMult(&RE(tmp), &IM(tmp), RE(tmp0), IM(tmp0), RE(Phi_Fract), IM(Phi_Fract)); | ||
739 | |||
740 | RE(R0) = RE(tmp); | ||
741 | IM(R0) = IM(tmp); | ||
742 | |||
743 | for (k = 0; k < NUM_OF_LINKS; k++) | ||
744 | { | ||
745 | RE(qfrac) = RE(Q_Fract_allpass_Qmf[b][k]); | ||
746 | IM(qfrac) = IM(Q_Fract_allpass_Qmf[b][k]); | ||
747 | |||
748 | RE(tmp0) = RE(ps->d2_buff[k][temp_delay_ser[k]][b]); | ||
749 | IM(tmp0) = IM(ps->d2_buff[k][temp_delay_ser[k]][b]); | ||
750 | |||
751 | ComplexMult(&RE(tmp), &IM(tmp), RE(tmp0), IM(tmp0), RE(qfrac), IM(qfrac)); | ||
752 | |||
753 | RE(tmp) += -MUL_F(new_delay_slopes[k], RE(R0)); | ||
754 | IM(tmp) += -MUL_F(new_delay_slopes[k], IM(R0)); | ||
755 | |||
756 | RE(ps->d2_buff[k][temp_delay_ser[k]][b]) = RE(R0) + MUL_F(new_delay_slopes[k], RE(tmp)); | ||
757 | IM(ps->d2_buff[k][temp_delay_ser[k]][b]) = IM(R0) + MUL_F(new_delay_slopes[k], IM(tmp)); | ||
758 | |||
759 | RE(R0) = RE(tmp); | ||
760 | IM(R0) = IM(tmp); | ||
761 | } | ||
762 | |||
763 | QMF_RE(ps->SA[s][b]) = MUL_R(RE(R0), transratio); | ||
764 | QMF_IM(ps->SA[s][b]) = MUL_R(IM(R0), transratio); | ||
765 | |||
766 | for (k = 0; k < NUM_OF_LINKS; k++) | ||
767 | { | ||
768 | if (++temp_delay_ser[k] >= delay_length[k][rateselect]) | ||
769 | temp_delay_ser[k] = 0; | ||
770 | } | ||
771 | } | ||
772 | } | ||
773 | |||
774 | for (k = 0; k < NUM_OF_LINKS; k++) | ||
775 | ps->delay_buf_index_ser[k] = temp_delay_ser[k]; | ||
776 | } | ||
777 | |||
778 | static void drm_add_ambiance(drm_ps_info *ps, uint8_t rateselect, | ||
779 | qmf_t X_left[MAX_NTSRPS][64], | ||
780 | qmf_t X_right[MAX_NTSRPS][64]) | ||
781 | { | ||
782 | uint8_t s, b, ifreq, qclass; | ||
783 | real_t sa_map[MAX_SA_BAND], sa_dir_map[MAX_SA_BAND], k_sa_map[MAX_SA_BAND], k_sa_dir_map[MAX_SA_BAND]; | ||
784 | real_t new_dir_map, new_sa_map; | ||
785 | |||
786 | if (ps->bs_enable_sa) | ||
787 | { | ||
788 | /* Instead of dequantization and mapping, we use an inverse mapping | ||
789 | to look up all the values we need */ | ||
790 | for (b = 0; b < sa_freq_scale[DRM_NUM_SA_BANDS][rateselect]; b++) | ||
791 | { | ||
792 | const real_t inv_f_num_of_subsamples = FRAC_CONST(0.03333333333); | ||
793 | |||
794 | ifreq = sa_inv_freq[b]; | ||
795 | qclass = (b != 0); | ||
796 | |||
797 | sa_map[b] = sa_quant[ps->g_prev_sa_index[ifreq]][qclass]; | ||
798 | new_sa_map = sa_quant[ps->g_sa_index[ifreq]][qclass]; | ||
799 | |||
800 | k_sa_map[b] = MUL_F(inv_f_num_of_subsamples, (new_sa_map - sa_map[b])); | ||
801 | |||
802 | sa_dir_map[b] = sa_sqrt_1_minus[ps->g_prev_sa_index[ifreq]][qclass]; | ||
803 | new_dir_map = sa_sqrt_1_minus[ps->g_sa_index[ifreq]][qclass]; | ||
804 | |||
805 | k_sa_dir_map[b] = MUL_F(inv_f_num_of_subsamples, (new_dir_map - sa_dir_map[b])); | ||
806 | |||
807 | } | ||
808 | |||
809 | for (s = 0; s < NUM_OF_SUBSAMPLES; s++) | ||
810 | { | ||
811 | for (b = 0; b < sa_freq_scale[DRM_NUM_SA_BANDS][rateselect]; b++) | ||
812 | { | ||
813 | QMF_RE(X_right[s][b]) = MUL_F(QMF_RE(X_left[s][b]), sa_dir_map[b]) - MUL_F(QMF_RE(ps->SA[s][b]), sa_map[b]); | ||
814 | QMF_IM(X_right[s][b]) = MUL_F(QMF_IM(X_left[s][b]), sa_dir_map[b]) - MUL_F(QMF_IM(ps->SA[s][b]), sa_map[b]); | ||
815 | QMF_RE(X_left[s][b]) = MUL_F(QMF_RE(X_left[s][b]), sa_dir_map[b]) + MUL_F(QMF_RE(ps->SA[s][b]), sa_map[b]); | ||
816 | QMF_IM(X_left[s][b]) = MUL_F(QMF_IM(X_left[s][b]), sa_dir_map[b]) + MUL_F(QMF_IM(ps->SA[s][b]), sa_map[b]); | ||
817 | |||
818 | sa_map[b] += k_sa_map[b]; | ||
819 | sa_dir_map[b] += k_sa_dir_map[b]; | ||
820 | } | ||
821 | for (b = sa_freq_scale[DRM_NUM_SA_BANDS][rateselect]; b < NUM_OF_QMF_CHANNELS; b++) | ||
822 | { | ||
823 | QMF_RE(X_right[s][b]) = QMF_RE(X_left[s][b]); | ||
824 | QMF_IM(X_right[s][b]) = QMF_IM(X_left[s][b]); | ||
825 | } | ||
826 | } | ||
827 | } | ||
828 | else { | ||
829 | for (s = 0; s < NUM_OF_SUBSAMPLES; s++) | ||
830 | { | ||
831 | for (b = 0; b < NUM_OF_QMF_CHANNELS; b++) | ||
832 | { | ||
833 | QMF_RE(X_right[s][b]) = QMF_RE(X_left[s][b]); | ||
834 | QMF_IM(X_right[s][b]) = QMF_IM(X_left[s][b]); | ||
835 | } | ||
836 | } | ||
837 | } | ||
838 | } | ||
839 | |||
840 | static void drm_add_pan(drm_ps_info *ps, uint8_t rateselect, | ||
841 | qmf_t X_left[MAX_NTSRPS][64], | ||
842 | qmf_t X_right[MAX_NTSRPS][64]) | ||
843 | { | ||
844 | uint8_t s, b, qclass, ifreq; | ||
845 | real_t tmp, coeff1, coeff2; | ||
846 | real_t pan_base[MAX_PAN_BAND]; | ||
847 | real_t pan_delta[MAX_PAN_BAND]; | ||
848 | qmf_t temp_l, temp_r; | ||
849 | |||
850 | if (ps->bs_enable_pan) | ||
851 | { | ||
852 | for (b = 0; b < NUM_OF_QMF_CHANNELS; b++) | ||
853 | { | ||
854 | /* Instead of dequantization, 20->64 mapping and 2^G(x,y) we do an | ||
855 | inverse mapping 64->20 and look up the 2^G(x,y) values directly */ | ||
856 | ifreq = pan_inv_freq[b]; | ||
857 | qclass = pan_quant_class[ifreq]; | ||
858 | |||
859 | if (ps->g_prev_pan_index[ifreq] >= 0) | ||
860 | { | ||
861 | pan_base[b] = pan_pow_2_pos[ps->g_prev_pan_index[ifreq]][qclass]; | ||
862 | } else { | ||
863 | pan_base[b] = pan_pow_2_neg[-ps->g_prev_pan_index[ifreq]][qclass]; | ||
864 | } | ||
865 | |||
866 | /* 2^((a-b)/30) = 2^(a/30) * 1/(2^(b/30)) */ | ||
867 | /* a en b can be negative so we may need to inverse parts */ | ||
868 | if (ps->g_pan_index[ifreq] >= 0) | ||
869 | { | ||
870 | if (ps->g_prev_pan_index[ifreq] >= 0) | ||
871 | { | ||
872 | pan_delta[b] = MUL_C(pan_pow_2_30_pos[ps->g_pan_index[ifreq]][qclass], | ||
873 | pan_pow_2_30_neg[ps->g_prev_pan_index[ifreq]][qclass]); | ||
874 | } else { | ||
875 | pan_delta[b] = MUL_C(pan_pow_2_30_pos[ps->g_pan_index[ifreq]][qclass], | ||
876 | pan_pow_2_30_pos[-ps->g_prev_pan_index[ifreq]][qclass]); | ||
877 | } | ||
878 | } else { | ||
879 | if (ps->g_prev_pan_index[ifreq] >= 0) | ||
880 | { | ||
881 | pan_delta[b] = MUL_C(pan_pow_2_30_neg[-ps->g_pan_index[ifreq]][qclass], | ||
882 | pan_pow_2_30_neg[ps->g_prev_pan_index[ifreq]][qclass]); | ||
883 | } else { | ||
884 | pan_delta[b] = MUL_C(pan_pow_2_30_neg[-ps->g_pan_index[ifreq]][qclass], | ||
885 | pan_pow_2_30_pos[-ps->g_prev_pan_index[ifreq]][qclass]); | ||
886 | } | ||
887 | } | ||
888 | } | ||
889 | |||
890 | for (s = 0; s < NUM_OF_SUBSAMPLES; s++) | ||
891 | { | ||
892 | /* PAN always uses all 64 channels */ | ||
893 | for (b = 0; b < NUM_OF_QMF_CHANNELS; b++) | ||
894 | { | ||
895 | tmp = pan_base[b]; | ||
896 | |||
897 | coeff2 = DIV_R(REAL_CONST(2.0), (REAL_CONST(1.0) + tmp)); | ||
898 | coeff1 = MUL_R(coeff2, tmp); | ||
899 | |||
900 | QMF_RE(temp_l) = QMF_RE(X_left[s][b]); | ||
901 | QMF_IM(temp_l) = QMF_IM(X_left[s][b]); | ||
902 | QMF_RE(temp_r) = QMF_RE(X_right[s][b]); | ||
903 | QMF_IM(temp_r) = QMF_IM(X_right[s][b]); | ||
904 | |||
905 | QMF_RE(X_left[s][b]) = MUL_R(QMF_RE(temp_l), coeff1); | ||
906 | QMF_IM(X_left[s][b]) = MUL_R(QMF_IM(temp_l), coeff1); | ||
907 | QMF_RE(X_right[s][b]) = MUL_R(QMF_RE(temp_r), coeff2); | ||
908 | QMF_IM(X_right[s][b]) = MUL_R(QMF_IM(temp_r), coeff2); | ||
909 | |||
910 | /* 2^(a+k*b) = 2^a * 2^b * ... * 2^b */ | ||
911 | /* ^^^^^^^^^^^^^^^ k times */ | ||
912 | pan_base[b] = MUL_C(pan_base[b], pan_delta[b]); | ||
913 | } | ||
914 | } | ||
915 | } | ||
916 | } | ||
917 | |||
918 | drm_ps_info *drm_ps_init(void) | ||
919 | { | ||
920 | drm_ps_info *ps = &s_drm_ps_info; | ||
921 | memset(ps, 0, sizeof(drm_ps_info)); | ||
922 | |||
923 | return ps; | ||
924 | } | ||
925 | |||
926 | /* main DRM PS decoding function */ | ||
927 | uint8_t drm_ps_decode(drm_ps_info *ps, uint8_t guess, uint32_t samplerate, | ||
928 | qmf_t X_left[MAX_NTSRPS][64], | ||
929 | qmf_t X_right[MAX_NTSRPS][64]) | ||
930 | { | ||
931 | uint8_t rateselect = (samplerate >= 24000); | ||
932 | |||
933 | if (ps == NULL) | ||
934 | { | ||
935 | memcpy(X_right, X_left, sizeof(qmf_t)*30*64); | ||
936 | return 0; | ||
937 | } | ||
938 | |||
939 | if (!ps->drm_ps_data_available && !guess) | ||
940 | { | ||
941 | memcpy(X_right, X_left, sizeof(qmf_t)*30*64); | ||
942 | memset(ps->g_prev_sa_index, 0, sizeof(ps->g_prev_sa_index)); | ||
943 | memset(ps->g_prev_pan_index, 0, sizeof(ps->g_prev_pan_index)); | ||
944 | return 0; | ||
945 | } | ||
946 | |||
947 | /* if SBR CRC doesn't match out, we can assume decode errors to start with, | ||
948 | and we'll guess what the parameters should be */ | ||
949 | if (!guess) | ||
950 | { | ||
951 | ps->sa_decode_error = 0; | ||
952 | ps->pan_decode_error = 0; | ||
953 | drm_ps_delta_decode(ps); | ||
954 | } else | ||
955 | { | ||
956 | ps->sa_decode_error = 1; | ||
957 | ps->pan_decode_error = 1; | ||
958 | /* don't even bother decoding */ | ||
959 | } | ||
960 | |||
961 | ps->drm_ps_data_available = 0; | ||
962 | |||
963 | drm_calc_sa_side_signal(ps, X_left, rateselect); | ||
964 | drm_add_ambiance(ps, rateselect, X_left, X_right); | ||
965 | |||
966 | if (ps->bs_enable_sa) | ||
967 | { | ||
968 | ps->g_last_had_sa = 1; | ||
969 | |||
970 | memcpy(ps->g_prev_sa_index, ps->g_sa_index, sizeof(int8_t) * DRM_NUM_SA_BANDS); | ||
971 | |||
972 | } else { | ||
973 | ps->g_last_had_sa = 0; | ||
974 | } | ||
975 | |||
976 | if (ps->bs_enable_pan) | ||
977 | { | ||
978 | drm_add_pan(ps, rateselect, X_left, X_right); | ||
979 | |||
980 | ps->g_last_had_pan = 1; | ||
981 | |||
982 | memcpy(ps->g_prev_pan_index, ps->g_pan_index, sizeof(int8_t) * DRM_NUM_PAN_BANDS); | ||
983 | |||
984 | } else { | ||
985 | ps->g_last_had_pan = 0; | ||
986 | } | ||
987 | |||
988 | |||
989 | return 0; | ||
990 | } | ||
991 | |||
992 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/drm_dec.h b/lib/rbcodec/codecs/libfaad/drm_dec.h new file mode 100644 index 0000000000..d7ae9d0166 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/drm_dec.h | |||
@@ -0,0 +1,98 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __DRM_DEC_H__ | ||
29 | #define __DRM_DEC_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | #include "bits.h" | ||
36 | |||
37 | #define DRM_PARAMETRIC_STEREO 0 | ||
38 | #define DRM_NUM_SA_BANDS 8 | ||
39 | #define DRM_NUM_PAN_BANDS 20 | ||
40 | #define NUM_OF_LINKS 3 | ||
41 | #define NUM_OF_QMF_CHANNELS 64 | ||
42 | #define NUM_OF_SUBSAMPLES 30 | ||
43 | #define MAX_SA_BAND 46 | ||
44 | #define MAX_PAN_BAND 64 | ||
45 | #define MAX_DELAY 5 | ||
46 | |||
47 | typedef struct | ||
48 | { | ||
49 | uint8_t drm_ps_data_available; | ||
50 | uint8_t bs_enable_sa; | ||
51 | uint8_t bs_enable_pan; | ||
52 | |||
53 | uint8_t bs_sa_dt_flag; | ||
54 | uint8_t bs_pan_dt_flag; | ||
55 | |||
56 | uint8_t g_last_had_sa; | ||
57 | uint8_t g_last_had_pan; | ||
58 | |||
59 | int8_t bs_sa_data[DRM_NUM_SA_BANDS]; | ||
60 | int8_t bs_pan_data[DRM_NUM_PAN_BANDS]; | ||
61 | |||
62 | int8_t g_sa_index[DRM_NUM_SA_BANDS]; | ||
63 | int8_t g_pan_index[DRM_NUM_PAN_BANDS]; | ||
64 | int8_t g_prev_sa_index[DRM_NUM_SA_BANDS]; | ||
65 | int8_t g_prev_pan_index[DRM_NUM_PAN_BANDS]; | ||
66 | |||
67 | int8_t sa_decode_error; | ||
68 | int8_t pan_decode_error; | ||
69 | |||
70 | int8_t g_last_good_sa_index[DRM_NUM_SA_BANDS]; | ||
71 | int8_t g_last_good_pan_index[DRM_NUM_PAN_BANDS]; | ||
72 | |||
73 | qmf_t SA[NUM_OF_SUBSAMPLES][MAX_SA_BAND]; | ||
74 | |||
75 | complex_t d_buff[2][MAX_SA_BAND]; | ||
76 | complex_t d2_buff[NUM_OF_LINKS][MAX_DELAY][MAX_SA_BAND]; | ||
77 | |||
78 | uint8_t delay_buf_index_ser[NUM_OF_LINKS]; | ||
79 | |||
80 | real_t prev_nrg[MAX_SA_BAND]; | ||
81 | real_t prev_peakdiff[MAX_SA_BAND]; | ||
82 | real_t peakdecay_fast[MAX_SA_BAND]; | ||
83 | } drm_ps_info; | ||
84 | |||
85 | |||
86 | uint16_t drm_ps_data(drm_ps_info *ps, bitfile *ld); | ||
87 | |||
88 | drm_ps_info *drm_ps_init(void); | ||
89 | |||
90 | uint8_t drm_ps_decode(drm_ps_info *ps, uint8_t guess, uint32_t samplerate, | ||
91 | qmf_t X_left[MAX_NTSRPS][64], | ||
92 | qmf_t X_right[MAX_NTSRPS][64]); | ||
93 | |||
94 | #ifdef __cplusplus | ||
95 | } | ||
96 | #endif | ||
97 | #endif | ||
98 | |||
diff --git a/lib/rbcodec/codecs/libfaad/error.c b/lib/rbcodec/codecs/libfaad/error.c new file mode 100644 index 0000000000..ff2f9c3d13 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/error.c | |||
@@ -0,0 +1,62 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #include "common.h" | ||
29 | #include "error.h" | ||
30 | |||
31 | char *err_msg[] = { | ||
32 | "No error", | ||
33 | "Gain control not yet implemented", | ||
34 | "Pulse coding not allowed in short blocks", | ||
35 | "Invalid huffman codebook", | ||
36 | "Scalefactor out of range", | ||
37 | "Unable to find ADTS syncword", | ||
38 | "Channel coupling not yet implemented", | ||
39 | "Channel configuration not allowed in error resilient frame", | ||
40 | "Bit error in error resilient scalefactor decoding", | ||
41 | "Error decoding huffman scalefactor (bitstream error)", | ||
42 | "Error decoding huffman codeword (bitstream error)", | ||
43 | "Non existent huffman codebook number found", | ||
44 | "Invalid number of channels", | ||
45 | "Maximum number of bitstream elements exceeded", | ||
46 | "Input data buffer too small", | ||
47 | "Array index out of range", | ||
48 | "Maximum number of scalefactor bands exceeded", | ||
49 | "Quantised value out of range", | ||
50 | "LTP lag out of range", | ||
51 | "Invalid SBR parameter decoded", | ||
52 | "SBR called without being initialised", | ||
53 | "Unexpected channel configuration change", | ||
54 | "Error in program_config_element", | ||
55 | "First SBR frame is not the same as first AAC frame", | ||
56 | "Unexpected fill element with SBR data", | ||
57 | "Not all elements were provided with SBR data", | ||
58 | "LTP decoding not available", | ||
59 | "Output data buffer too small", | ||
60 | "Could not allocate enough memory" | ||
61 | }; | ||
62 | |||
diff --git a/lib/rbcodec/codecs/libfaad/error.h b/lib/rbcodec/codecs/libfaad/error.h new file mode 100644 index 0000000000..94ca7bba75 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/error.h | |||
@@ -0,0 +1,41 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __ERROR_H__ | ||
29 | #define __ERROR_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | #define NUM_ERROR_MESSAGES 28 | ||
36 | extern char *err_msg[]; | ||
37 | |||
38 | #ifdef __cplusplus | ||
39 | } | ||
40 | #endif | ||
41 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/faad_config.h b/lib/rbcodec/codecs/libfaad/faad_config.h new file mode 100644 index 0000000000..163b55669e --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/faad_config.h | |||
@@ -0,0 +1,120 @@ | |||
1 | /* config.h. Generated by configure. */ | ||
2 | /* config.h.in. Generated from configure.in by autoheader. */ | ||
3 | |||
4 | #include <config.h> | ||
5 | |||
6 | /* Define if you want to use libfaad together with Digital Radio Mondiale | ||
7 | (DRM) */ | ||
8 | /* #undef DRM */ | ||
9 | |||
10 | /* Define if you want support for Digital Radio Mondiale (DRM) parametric | ||
11 | stereo */ | ||
12 | /* #undef DRM_PS */ | ||
13 | |||
14 | /* Define to 1 if you have the <dlfcn.h> header file. */ | ||
15 | //#define HAVE_DLFCN_H 1 | ||
16 | |||
17 | /* Define to 1 if you have the <errno.h> header file. */ | ||
18 | //#define HAVE_ERRNO_H 1 | ||
19 | |||
20 | /* Define if needed */ | ||
21 | /* #undef HAVE_FLOAT32_T */ | ||
22 | |||
23 | /* Define to 1 if you have the <float.h> header file. */ | ||
24 | //#define HAVE_FLOAT_H 1 | ||
25 | |||
26 | /* Define to 1 if you have the `getpwuid' function. */ | ||
27 | #define HAVE_GETPWUID 1 | ||
28 | |||
29 | /* Define to 1 if you have the <inttypes.h> header file. */ | ||
30 | #define HAVE_INTTYPES_H 1 | ||
31 | |||
32 | /* Define if you have the IOKit API */ | ||
33 | /* #undef HAVE_IOKIT_IOKITLIB_H */ | ||
34 | |||
35 | /* Define to 1 if you have the <limits.h> header file. */ | ||
36 | //#define HAVE_LIMITS_H 1 | ||
37 | |||
38 | /* Define to 1 if you have the <mathf.h> header file. */ | ||
39 | /* #undef HAVE_MATHF_H */ | ||
40 | |||
41 | /* Define to 1 if you have the `memcpy' function. */ | ||
42 | #define HAVE_MEMCPY 1 | ||
43 | |||
44 | /* Define to 1 if you have the <memory.h> header file. */ | ||
45 | //#define HAVE_MEMORY_H 1 | ||
46 | |||
47 | /* Define to 1 if you have the <stdint.h> header file. */ | ||
48 | //#define HAVE_STDINT_H 1 | ||
49 | |||
50 | /* Define to 1 if you have the <stdlib.h> header file. */ | ||
51 | #define HAVE_STDLIB_H 1 | ||
52 | |||
53 | /* Define to 1 if you have the `strchr' function. */ | ||
54 | #define HAVE_STRCHR 1 | ||
55 | |||
56 | /* Define to 1 if you have the <strings.h> header file. */ | ||
57 | //#define HAVE_STRINGS_H 1 | ||
58 | |||
59 | /* Define to 1 if you have the <string.h> header file. */ | ||
60 | #define HAVE_STRING_H 1 | ||
61 | |||
62 | /* Define to 1 if you have the `strsep' function. */ | ||
63 | //#define HAVE_STRSEP 1 | ||
64 | |||
65 | /* Define to 1 if you have the <sysfs/libsysfs.h> header file. */ | ||
66 | /* #undef HAVE_SYSFS_LIBSYSFS_H */ | ||
67 | |||
68 | /* Define to 1 if you have the <sys/stat.h> header file. */ | ||
69 | //#define HAVE_SYS_STAT_H 1 | ||
70 | |||
71 | /* Define to 1 if you have the <sys/time.h> header file. */ | ||
72 | //#define HAVE_SYS_TIME_H 1 | ||
73 | |||
74 | /* Define to 1 if you have the <sys/types.h> header file. */ | ||
75 | //#define HAVE_SYS_TYPES_H 1 | ||
76 | |||
77 | /* Define to 1 if you have the <unistd.h> header file. */ | ||
78 | //#define HAVE_UNISTD_H 1 | ||
79 | |||
80 | /* Name of package */ | ||
81 | #define PACKAGE "faad2" | ||
82 | |||
83 | /* Define to the address where bug reports for this package should be sent. */ | ||
84 | #define PACKAGE_BUGREPORT "" | ||
85 | |||
86 | /* Define to the full name of this package. */ | ||
87 | #define PACKAGE_NAME "" | ||
88 | |||
89 | /* Define to the full name and version of this package. */ | ||
90 | #define PACKAGE_STRING "" | ||
91 | |||
92 | /* Define to the one symbol short name of this package. */ | ||
93 | #define PACKAGE_TARNAME "" | ||
94 | |||
95 | /* Define to the version of this package. */ | ||
96 | #define PACKAGE_VERSION "" | ||
97 | |||
98 | /* Define to 1 if you have the ANSI C header files. */ | ||
99 | #define STDC_HEADERS 1 | ||
100 | |||
101 | /* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */ | ||
102 | //#define TIME_WITH_SYS_TIME 1 | ||
103 | |||
104 | /* Version number of package */ | ||
105 | #define LIBFAAD_VERSION "2.0" | ||
106 | |||
107 | /* Define to 1 if your processor stores words with the most significant byte | ||
108 | first (like Motorola and SPARC, unlike Intel and VAX). */ | ||
109 | #ifdef ROCKBOX_BIG_ENDIAN | ||
110 | #define WORDS_BIGENDIAN 1 | ||
111 | #endif | ||
112 | |||
113 | /* Define to `__inline__' or `__inline' if that's what the C compiler | ||
114 | calls it, or to nothing if 'inline' is not supported under any name. */ | ||
115 | #ifndef __cplusplus | ||
116 | /* #undef inline */ | ||
117 | #endif | ||
118 | |||
119 | /* Define to `long' if <sys/types.h> does not define. */ | ||
120 | /* #undef off_t */ | ||
diff --git a/lib/rbcodec/codecs/libfaad/filtbank.c b/lib/rbcodec/codecs/libfaad/filtbank.c new file mode 100644 index 0000000000..fd7a4dc91f --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/filtbank.c | |||
@@ -0,0 +1,482 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #include "common.h" | ||
29 | #include "structs.h" | ||
30 | |||
31 | #include <stdlib.h> | ||
32 | #include <string.h> | ||
33 | #ifdef _WIN32_WCE | ||
34 | #define assert(x) | ||
35 | #else | ||
36 | #include <assert.h> | ||
37 | #endif | ||
38 | |||
39 | #include "filtbank.h" | ||
40 | #include "decoder.h" | ||
41 | #include "syntax.h" | ||
42 | #include "kbd_win.h" | ||
43 | #include "sine_win.h" | ||
44 | |||
45 | |||
46 | /* static variables */ | ||
47 | static real_t transf_buf[2*FRAME_LEN] IBSS_ATTR MEM_ALIGN_ATTR; | ||
48 | #ifdef LTP_DEC | ||
49 | static real_t windowed_buf[2*FRAME_LEN] MEM_ALIGN_ATTR = {0}; | ||
50 | #endif | ||
51 | |||
52 | |||
53 | /*Windowing functions borrowed from libwmai*/ | ||
54 | #ifdef CPU_ARM | ||
55 | static inline | ||
56 | void vector_fmul_add_add(real_t *dst, const real_t *src0, const real_t *src1, const real_t *src2, int len) | ||
57 | { | ||
58 | /* Block sizes are always power of two */ | ||
59 | asm volatile ( | ||
60 | "0:" | ||
61 | "ldmia %[d]!, {r0, r1};" | ||
62 | "ldmia %[w]!, {r4, r5};" | ||
63 | /* consume the first data and window value so we can use those | ||
64 | * registers again */ | ||
65 | "smull r8, r9, r0, r4;" | ||
66 | "ldmia %[src2]!, {r0, r4};" | ||
67 | "add r0, r0, r9, lsl #1;" /* *dst=*dst+(r9<<1)*/ | ||
68 | "smull r8, r9, r1, r5;" | ||
69 | "add r1, r4, r9, lsl #1;" | ||
70 | "stmia %[dst]!, {r0, r1};" | ||
71 | "subs %[n], %[n], #2;" | ||
72 | "bne 0b;" | ||
73 | : [d] "+r" (src0), [w] "+r" (src1), [src2] "+r" (src2), [dst] "+r" (dst), [n] "+r" (len) | ||
74 | : | ||
75 | : "r0", "r1", "r4", "r5", "r8", "r9", "memory", "cc"); | ||
76 | } | ||
77 | static inline | ||
78 | void vector_fmul_reverse(real_t *dst, const real_t *src0, const real_t *src1, | ||
79 | int len) | ||
80 | { | ||
81 | /* Block sizes are always power of two */ | ||
82 | asm volatile ( | ||
83 | "add %[s1], %[s1], %[n], lsl #2;" | ||
84 | "0:" | ||
85 | "ldmia %[s0]!, {r0, r1};" | ||
86 | "ldmdb %[s1]!, {r4, r5};" | ||
87 | "smull r8, r9, r0, r5;" | ||
88 | "mov r0, r9, lsl #1;" | ||
89 | "smull r8, r9, r1, r4;" | ||
90 | "mov r1, r9, lsl #1;" | ||
91 | "stmia %[dst]!, {r0, r1};" | ||
92 | "subs %[n], %[n], #2;" | ||
93 | "bne 0b;" | ||
94 | : [s0] "+r" (src0), [s1] "+r" (src1), [dst] "+r" (dst), [n] "+r" (len) | ||
95 | : | ||
96 | : "r0", "r1", "r4", "r5", "r8", "r9", "memory", "cc"); | ||
97 | } | ||
98 | |||
99 | #elif defined(CPU_COLDFIRE) | ||
100 | static inline | ||
101 | void vector_fmul_add_add(real_t *dst, const real_t *src0, const real_t *src1, const real_t *src2, int len) | ||
102 | { | ||
103 | /* Block sizes are always power of two. Smallest block is always way bigger | ||
104 | * than four too.*/ | ||
105 | asm volatile ( | ||
106 | "0:" | ||
107 | "movem.l (%[src0]), %%d0-%%d3;" | ||
108 | "movem.l (%[src1]), %%d4-%%d5/%%a0-%%a1;" | ||
109 | "mac.l %%d0, %%d4, %%acc0;" | ||
110 | "mac.l %%d1, %%d5, %%acc1;" | ||
111 | "mac.l %%d2, %%a0, %%acc2;" | ||
112 | "mac.l %%d3, %%a1, %%acc3;" | ||
113 | "lea.l (16, %[src0]), %[src0];" | ||
114 | "lea.l (16, %[src1]), %[src1];" | ||
115 | "movclr.l %%acc0, %%d0;" | ||
116 | "movclr.l %%acc1, %%d1;" | ||
117 | "movclr.l %%acc2, %%d2;" | ||
118 | "movclr.l %%acc3, %%d3;" | ||
119 | "movem.l (%[src2]), %%d4-%%d5/%%a0-%%a1;" | ||
120 | "lea.l (16, %[src2]), %[src2];" | ||
121 | "add.l %%d4, %%d0;" | ||
122 | "add.l %%d5, %%d1;" | ||
123 | "add.l %%a0, %%d2;" | ||
124 | "add.l %%a1, %%d3;" | ||
125 | "movem.l %%d0-%%d3, (%[dst]);" | ||
126 | "lea.l (16, %[dst]), %[dst];" | ||
127 | "subq.l #4, %[n];" | ||
128 | "jne 0b;" | ||
129 | : [src0] "+a" (src0), [src1] "+a" (src1), [src2] "+a" (src2), [dst] "+a" (dst), [n] "+d" (len) | ||
130 | : | ||
131 | : "d0", "d1", "d2", "d3", "d4", "d5", "a0", "a1", "memory", "cc"); | ||
132 | } | ||
133 | |||
134 | static inline | ||
135 | void vector_fmul_reverse(real_t *dst, const real_t *src0, const real_t *src1, | ||
136 | int len) | ||
137 | { | ||
138 | /* Block sizes are always power of two. Smallest block is always way bigger | ||
139 | * than four too.*/ | ||
140 | asm volatile ( | ||
141 | "lea.l (-16, %[s1], %[n]*4), %[s1];" | ||
142 | "0:" | ||
143 | "movem.l (%[s0]), %%d0-%%d3;" | ||
144 | "movem.l (%[s1]), %%d4-%%d5/%%a0-%%a1;" | ||
145 | "mac.l %%d0, %%a1, %%acc0;" | ||
146 | "mac.l %%d1, %%a0, %%acc1;" | ||
147 | "mac.l %%d2, %%d5, %%acc2;" | ||
148 | "mac.l %%d3, %%d4, %%acc3;" | ||
149 | "lea.l (16, %[s0]), %[s0];" | ||
150 | "lea.l (-16, %[s1]), %[s1];" | ||
151 | "movclr.l %%acc0, %%d0;" | ||
152 | "movclr.l %%acc1, %%d1;" | ||
153 | "movclr.l %%acc2, %%d2;" | ||
154 | "movclr.l %%acc3, %%d3;" | ||
155 | "movem.l %%d0-%%d3, (%[dst]);" | ||
156 | "lea.l (16, %[dst]), %[dst];" | ||
157 | "subq.l #4, %[n];" | ||
158 | "jne 0b;" | ||
159 | : [s0] "+a" (src0), [s1] "+a" (src1), [dst] "+a" (dst), [n] "+d" (len) | ||
160 | : : "d0", "d1", "d2", "d3", "d4", "d5", "a0", "a1", "memory", "cc"); | ||
161 | } | ||
162 | |||
163 | #else | ||
164 | static inline void vector_fmul_add_add(real_t *dst, const real_t *src0, const real_t *src1, const real_t *src2, int len){ | ||
165 | int i; | ||
166 | for(i=0; i<len; i++) | ||
167 | dst[i] = MUL_F(src0[i], src1[i]) + src2[i]; | ||
168 | } | ||
169 | |||
170 | static inline void vector_fmul_reverse(real_t *dst, const real_t *src0, const real_t *src1, int len){ | ||
171 | int i; | ||
172 | src1 += len-1; | ||
173 | for(i=0; i<len; i++) | ||
174 | dst[i] = MUL_F(src0[i], src1[-i]); | ||
175 | } | ||
176 | #endif | ||
177 | |||
178 | #ifdef LTP_DEC | ||
179 | static INLINE void mdct(fb_info *fb, real_t *in_data, real_t *out_data, uint16_t len) | ||
180 | { | ||
181 | mdct_info *mdct = NULL; | ||
182 | |||
183 | switch (len) | ||
184 | { | ||
185 | case 2048: | ||
186 | case 1920: | ||
187 | mdct = fb->mdct2048; | ||
188 | break; | ||
189 | case 256: | ||
190 | case 240: | ||
191 | mdct = fb->mdct256; | ||
192 | break; | ||
193 | #ifdef LD_DEC | ||
194 | case 1024: | ||
195 | case 960: | ||
196 | mdct = fb->mdct1024; | ||
197 | break; | ||
198 | #endif | ||
199 | } | ||
200 | |||
201 | faad_mdct(mdct, in_data, out_data); | ||
202 | } | ||
203 | #endif | ||
204 | |||
205 | void ifilter_bank(uint8_t window_sequence, uint8_t window_shape, | ||
206 | uint8_t window_shape_prev, real_t *freq_in, | ||
207 | real_t *time_out, real_t *overlap, | ||
208 | uint8_t object_type, uint16_t frame_len) | ||
209 | { | ||
210 | int32_t i, idx0, idx1; | ||
211 | real_t win0, win1, win2; | ||
212 | |||
213 | const real_t *window_long = NULL; | ||
214 | const real_t *window_long_prev = NULL; | ||
215 | const real_t *window_short = NULL; | ||
216 | const real_t *window_short_prev = NULL; | ||
217 | |||
218 | int32_t nlong = frame_len; | ||
219 | int32_t nshort = frame_len/8; | ||
220 | int32_t nflat_ls = (nlong-nshort)/2; | ||
221 | |||
222 | #ifdef PROFILE | ||
223 | int64_t count = faad_get_ts(); | ||
224 | #endif | ||
225 | |||
226 | memset(transf_buf,0,sizeof(transf_buf)); | ||
227 | /* select windows of current frame and previous frame (Sine or KBD) */ | ||
228 | #ifdef LD_DEC | ||
229 | if (object_type == LD) | ||
230 | { | ||
231 | window_long = fb->ld_window[window_shape]; | ||
232 | window_long_prev = fb->ld_window[window_shape_prev]; | ||
233 | } else { | ||
234 | #else | ||
235 | (void) object_type; | ||
236 | #endif | ||
237 | |||
238 | /* AAC uses two different window shapes depending on spectal features */ | ||
239 | if (window_shape == 0) { | ||
240 | window_long = sine_long_1024; | ||
241 | window_short = sine_short_128; | ||
242 | } else { | ||
243 | window_long = kbd_long_1024; | ||
244 | window_short = kbd_short_128; | ||
245 | } | ||
246 | |||
247 | if (window_shape_prev == 0) { | ||
248 | window_long_prev = sine_long_1024; | ||
249 | window_short_prev = sine_short_128; | ||
250 | } else { | ||
251 | window_long_prev = kbd_long_1024; | ||
252 | window_short_prev = kbd_short_128; | ||
253 | } | ||
254 | |||
255 | #ifdef LD_DEC | ||
256 | } | ||
257 | #endif | ||
258 | |||
259 | #if 0 | ||
260 | for (i = 0; i < 1024; i++) | ||
261 | { | ||
262 | printf("%d\n", freq_in[i]); | ||
263 | } | ||
264 | #endif | ||
265 | |||
266 | #if 0 | ||
267 | printf("%d %d\n", window_sequence, window_shape); | ||
268 | #endif | ||
269 | switch (window_sequence) | ||
270 | { | ||
271 | case ONLY_LONG_SEQUENCE: | ||
272 | /* perform iMDCT */ | ||
273 | ff_imdct_calc(11, transf_buf, freq_in); | ||
274 | |||
275 | /* add second half output of previous frame to windowed output of current frame */ | ||
276 | vector_fmul_add_add(time_out, transf_buf, window_long_prev, overlap, nlong); | ||
277 | |||
278 | /* window the second half and save as overlap for next frame */ | ||
279 | vector_fmul_reverse(overlap, transf_buf+nlong, window_long, nlong); | ||
280 | |||
281 | break; | ||
282 | |||
283 | case LONG_START_SEQUENCE: | ||
284 | /* perform iMDCT */ | ||
285 | ff_imdct_calc(11, transf_buf, freq_in); | ||
286 | |||
287 | /* add second half output of previous frame to windowed output of current frame */ | ||
288 | vector_fmul_add_add(time_out, transf_buf, window_long_prev, overlap, nlong); | ||
289 | |||
290 | /* window the second half and save as overlap for next frame */ | ||
291 | /* construct second half window using padding with 1's and 0's */ | ||
292 | |||
293 | memcpy(overlap, transf_buf+nlong, nflat_ls*sizeof(real_t)); | ||
294 | |||
295 | vector_fmul_reverse(overlap+nflat_ls, transf_buf+nlong+nflat_ls, window_short, nshort); | ||
296 | |||
297 | memset(overlap+nflat_ls+nshort, 0, nflat_ls*sizeof(real_t)); | ||
298 | break; | ||
299 | |||
300 | case EIGHT_SHORT_SEQUENCE: | ||
301 | /* this could be assemblerized too, but this case is extremely uncommon */ | ||
302 | |||
303 | /* perform iMDCT for each short block */ | ||
304 | idx0 = 0; ff_imdct_calc(8, transf_buf , freq_in ); | ||
305 | idx0 += nshort; ff_imdct_calc(8, transf_buf + (idx0<<1), freq_in + idx0); | ||
306 | idx0 += nshort; ff_imdct_calc(8, transf_buf + (idx0<<1), freq_in + idx0); | ||
307 | idx0 += nshort; ff_imdct_calc(8, transf_buf + (idx0<<1), freq_in + idx0); | ||
308 | idx0 += nshort; ff_imdct_calc(8, transf_buf + (idx0<<1), freq_in + idx0); | ||
309 | idx0 += nshort; ff_imdct_calc(8, transf_buf + (idx0<<1), freq_in + idx0); | ||
310 | idx0 += nshort; ff_imdct_calc(8, transf_buf + (idx0<<1), freq_in + idx0); | ||
311 | idx0 += nshort; ff_imdct_calc(8, transf_buf + (idx0<<1), freq_in + idx0); | ||
312 | |||
313 | /* Add second half output of previous frame to windowed output of current | ||
314 | * frame */ | ||
315 | /* Step 1: copy */ | ||
316 | memcpy(time_out, overlap, nflat_ls*sizeof(real_t)); | ||
317 | /* Step 2: First window half, first half of nshort */ | ||
318 | for (i = 0; i < nshort/2; i++) { | ||
319 | win0 = window_short[nshort-1-i]; | ||
320 | win1 = window_short[i]; | ||
321 | win2 = window_short_prev[i]; | ||
322 | idx0 = nflat_ls + i; | ||
323 | idx1 = i; | ||
324 | time_out[idx0] = overlap[idx0] + MUL_F(transf_buf[idx1], win2); idx0 += nshort; idx1 += (nshort<<1); | ||
325 | time_out[idx0] = overlap[idx0] + MUL_F(transf_buf[idx1-nshort], win0) + MUL_F(transf_buf[idx1], win1); idx0 += nshort; idx1 += (nshort<<1); | ||
326 | time_out[idx0] = overlap[idx0] + MUL_F(transf_buf[idx1-nshort], win0) + MUL_F(transf_buf[idx1], win1); idx0 += nshort; idx1 += (nshort<<1); | ||
327 | time_out[idx0] = overlap[idx0] + MUL_F(transf_buf[idx1-nshort], win0) + MUL_F(transf_buf[idx1], win1); idx0 += nshort; idx1 += (nshort<<1); | ||
328 | time_out[idx0] = overlap[idx0] + MUL_F(transf_buf[idx1-nshort], win0) + MUL_F(transf_buf[idx1], win1); | ||
329 | } | ||
330 | /* Step 3: First window half, second half of nshort */ | ||
331 | for (; i < nshort; i++) { | ||
332 | win0 = window_short[nshort-1-i]; | ||
333 | win1 = window_short[i]; | ||
334 | idx0 = nflat_ls + i; | ||
335 | idx1 = i; | ||
336 | time_out[idx0] = overlap[idx0] + MUL_F(transf_buf[idx1], win1); idx0 += nshort; idx1 += (nshort<<1); | ||
337 | time_out[idx0] = overlap[idx0] + MUL_F(transf_buf[idx1-nshort], win0) + MUL_F(transf_buf[idx1], win1); idx0 += nshort; idx1 += (nshort<<1); | ||
338 | time_out[idx0] = overlap[idx0] + MUL_F(transf_buf[idx1-nshort], win0) + MUL_F(transf_buf[idx1], win1); idx0 += nshort; idx1 += (nshort<<1); | ||
339 | time_out[idx0] = overlap[idx0] + MUL_F(transf_buf[idx1-nshort], win0) + MUL_F(transf_buf[idx1], win1); | ||
340 | } | ||
341 | |||
342 | /* Window the second half and save as overlap for next frame */ | ||
343 | /* Step 1: Second window half, first half of nshort */ | ||
344 | for (i = 0; i < nshort/2; i++) { | ||
345 | win0 = window_short[nshort-1-i]; | ||
346 | win1 = window_short[i]; | ||
347 | idx0 = nflat_ls + 5*nshort + i - nlong; | ||
348 | idx1 = nshort*10 + i; | ||
349 | overlap[idx0] = MUL_F(transf_buf[idx1-nshort], win0) + MUL_F(transf_buf[idx1], win1); idx0 += nshort; idx1 += (nshort<<1); | ||
350 | overlap[idx0] = MUL_F(transf_buf[idx1-nshort], win0) + MUL_F(transf_buf[idx1], win1); idx0 += nshort; idx1 += (nshort<<1); | ||
351 | overlap[idx0] = MUL_F(transf_buf[idx1-nshort], win0) + MUL_F(transf_buf[idx1], win1); idx0 += nshort; idx1 += (nshort<<1); | ||
352 | overlap[idx0] = MUL_F(transf_buf[idx1-nshort], win0); | ||
353 | } | ||
354 | /* Step 2: Second window half, second half of nshort */ | ||
355 | for (; i < nshort; i++) { | ||
356 | win0 = window_short[nshort-1-i]; | ||
357 | win1 = window_short[i]; | ||
358 | idx0 = nflat_ls + 4*nshort + i - nlong; | ||
359 | idx1 = nshort*8 + i; | ||
360 | overlap[idx0] = MUL_F(transf_buf[idx1-nshort], win0) + MUL_F(transf_buf[idx1], win1); idx0 += nshort; idx1 += (nshort<<1); | ||
361 | overlap[idx0] = MUL_F(transf_buf[idx1-nshort], win0) + MUL_F(transf_buf[idx1], win1); idx0 += nshort; idx1 += (nshort<<1); | ||
362 | overlap[idx0] = MUL_F(transf_buf[idx1-nshort], win0) + MUL_F(transf_buf[idx1], win1); idx0 += nshort; idx1 += (nshort<<1); | ||
363 | overlap[idx0] = MUL_F(transf_buf[idx1-nshort], win0) + MUL_F(transf_buf[idx1], win1); idx0 += nshort; idx1 += (nshort<<1); | ||
364 | overlap[idx0] = MUL_F(transf_buf[idx1-nshort], win0); | ||
365 | } | ||
366 | /* Step 3: Set to zero */ | ||
367 | memset(overlap+nflat_ls+nshort, 0, nflat_ls*sizeof(real_t)); | ||
368 | |||
369 | break; | ||
370 | |||
371 | case LONG_STOP_SEQUENCE: | ||
372 | /* perform iMDCT */ | ||
373 | ff_imdct_calc(11, transf_buf, freq_in); | ||
374 | |||
375 | /* add second half output of previous frame to windowed output of current frame */ | ||
376 | /* construct first half window using padding with 1's and 0's */ | ||
377 | memcpy(time_out, overlap, nflat_ls*sizeof(real_t)); | ||
378 | |||
379 | vector_fmul_add_add(time_out+nflat_ls, transf_buf+nflat_ls, window_short_prev, overlap+nflat_ls, nshort); | ||
380 | |||
381 | /* nflat_ls can be divided by 2. */ | ||
382 | idx0 = nflat_ls + nshort; | ||
383 | for (i = 0; i < nflat_ls; i+=2) { | ||
384 | time_out[idx0] = overlap[idx0] + transf_buf[idx0]; idx0++; | ||
385 | time_out[idx0] = overlap[idx0] + transf_buf[idx0]; idx0++; | ||
386 | } | ||
387 | |||
388 | /* window the second half and save as overlap for next frame */ | ||
389 | vector_fmul_reverse(overlap, transf_buf+nlong, window_long, nlong); | ||
390 | break; | ||
391 | } | ||
392 | |||
393 | #if 0 | ||
394 | for (i = 0; i < 1024; i++) | ||
395 | { | ||
396 | printf("%d\n", time_out[i]); | ||
397 | //printf("0x%.8X\n", time_out[i]); | ||
398 | } | ||
399 | #endif | ||
400 | |||
401 | |||
402 | #ifdef PROFILE | ||
403 | count = faad_get_ts() - count; | ||
404 | fb->cycles += count; | ||
405 | #endif | ||
406 | } | ||
407 | |||
408 | |||
409 | #ifdef LTP_DEC | ||
410 | /* only works for LTP -> no overlapping, no short blocks */ | ||
411 | void filter_bank_ltp(fb_info *fb, uint8_t window_sequence, uint8_t window_shape, | ||
412 | uint8_t window_shape_prev, real_t *in_data, real_t *out_mdct, | ||
413 | uint8_t object_type, uint16_t frame_len) | ||
414 | { | ||
415 | int16_t i; | ||
416 | |||
417 | const real_t *window_long = NULL; | ||
418 | const real_t *window_long_prev = NULL; | ||
419 | const real_t *window_short = NULL; | ||
420 | const real_t *window_short_prev = NULL; | ||
421 | |||
422 | uint16_t nlong = frame_len; | ||
423 | uint16_t nshort = frame_len/8; | ||
424 | uint16_t nflat_ls = (nlong-nshort)/2; | ||
425 | |||
426 | //assert(window_sequence != EIGHT_SHORT_SEQUENCE); | ||
427 | |||
428 | memset(windowed_buf,0,sizeof(windowed_buf)); | ||
429 | #ifdef LD_DEC | ||
430 | if (object_type == LD) | ||
431 | { | ||
432 | window_long = fb->ld_window[window_shape]; | ||
433 | window_long_prev = fb->ld_window[window_shape_prev]; | ||
434 | } else { | ||
435 | #else | ||
436 | (void) object_type; | ||
437 | #endif | ||
438 | window_long = fb->long_window[window_shape]; | ||
439 | window_long_prev = fb->long_window[window_shape_prev]; | ||
440 | window_short = fb->short_window[window_shape]; | ||
441 | window_short_prev = fb->short_window[window_shape_prev]; | ||
442 | #ifdef LD_DEC | ||
443 | } | ||
444 | #endif | ||
445 | |||
446 | switch(window_sequence) | ||
447 | { | ||
448 | case ONLY_LONG_SEQUENCE: | ||
449 | for (i = nlong-1; i >= 0; i--) | ||
450 | { | ||
451 | windowed_buf[i] = MUL_F(in_data[i], window_long_prev[i]); | ||
452 | windowed_buf[i+nlong] = MUL_F(in_data[i+nlong], window_long[nlong-1-i]); | ||
453 | } | ||
454 | mdct(fb, windowed_buf, out_mdct, 2*nlong); | ||
455 | break; | ||
456 | |||
457 | case LONG_START_SEQUENCE: | ||
458 | for (i = 0; i < nlong; i++) | ||
459 | windowed_buf[i] = MUL_F(in_data[i], window_long_prev[i]); | ||
460 | for (i = 0; i < nflat_ls; i++) | ||
461 | windowed_buf[i+nlong] = in_data[i+nlong]; | ||
462 | for (i = 0; i < nshort; i++) | ||
463 | windowed_buf[i+nlong+nflat_ls] = MUL_F(in_data[i+nlong+nflat_ls], window_short[nshort-1-i]); | ||
464 | for (i = 0; i < nflat_ls; i++) | ||
465 | windowed_buf[i+nlong+nflat_ls+nshort] = 0; | ||
466 | mdct(fb, windowed_buf, out_mdct, 2*nlong); | ||
467 | break; | ||
468 | |||
469 | case LONG_STOP_SEQUENCE: | ||
470 | for (i = 0; i < nflat_ls; i++) | ||
471 | windowed_buf[i] = 0; | ||
472 | for (i = 0; i < nshort; i++) | ||
473 | windowed_buf[i+nflat_ls] = MUL_F(in_data[i+nflat_ls], window_short_prev[i]); | ||
474 | for (i = 0; i < nflat_ls; i++) | ||
475 | windowed_buf[i+nflat_ls+nshort] = in_data[i+nflat_ls+nshort]; | ||
476 | for (i = 0; i < nlong; i++) | ||
477 | windowed_buf[i+nlong] = MUL_F(in_data[i+nlong], window_long[nlong-1-i]); | ||
478 | mdct(fb, windowed_buf, out_mdct, 2*nlong); | ||
479 | break; | ||
480 | } | ||
481 | } | ||
482 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/filtbank.h b/lib/rbcodec/codecs/libfaad/filtbank.h new file mode 100644 index 0000000000..8c9f1e3490 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/filtbank.h | |||
@@ -0,0 +1,54 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __FILTBANK_H__ | ||
29 | #define __FILTBANK_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | #ifdef LTP_DEC | ||
36 | void filter_bank_ltp(fb_info *fb, | ||
37 | uint8_t window_sequence, | ||
38 | uint8_t window_shape, | ||
39 | uint8_t window_shape_prev, | ||
40 | real_t *in_data, | ||
41 | real_t *out_mdct, | ||
42 | uint8_t object_type, | ||
43 | uint16_t frame_len); | ||
44 | #endif | ||
45 | |||
46 | void ifilter_bank(uint8_t window_sequence, uint8_t window_shape, | ||
47 | uint8_t window_shape_prev, real_t *freq_in, | ||
48 | real_t *time_out, real_t *overlap, | ||
49 | uint8_t object_type, uint16_t frame_len); | ||
50 | |||
51 | #ifdef __cplusplus | ||
52 | } | ||
53 | #endif | ||
54 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/fixed.h b/lib/rbcodec/codecs/libfaad/fixed.h new file mode 100644 index 0000000000..ca0402e4d3 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/fixed.h | |||
@@ -0,0 +1,230 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __FIXED_H__ | ||
29 | #define __FIXED_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | #if defined(_WIN32_WCE) && defined(_ARM_) | ||
36 | #include <cmnintrin.h> | ||
37 | #endif | ||
38 | |||
39 | #define COEF_BITS 28 | ||
40 | #define COEF_PRECISION (1 << COEF_BITS) | ||
41 | #define REAL_BITS 14 // MAXIMUM OF 14 FOR FIXED POINT SBR | ||
42 | #define REAL_PRECISION (1 << REAL_BITS) | ||
43 | |||
44 | /* FRAC is the fractional only part of the fixed point number [0.0..1.0) */ | ||
45 | #define FRAC_SIZE 32 /* frac is a 32 bit integer */ | ||
46 | #define FRAC_BITS 31 | ||
47 | #define FRAC_PRECISION ((uint32_t)(1 << FRAC_BITS)) | ||
48 | #define FRAC_MAX 0x7FFFFFFF | ||
49 | |||
50 | typedef int32_t real_t; | ||
51 | |||
52 | #define FIX_CONST(A,PRECISION) (((A) >= 0) ? ((real_t)((A)*(PRECISION)+0.5)) : ((real_t)((A)*(PRECISION)-0.5))) | ||
53 | #define REAL_CONST(A) FIX_CONST((A),(REAL_PRECISION)) | ||
54 | #define COEF_CONST(A) FIX_CONST((A),(COEF_PRECISION)) | ||
55 | #define FRAC_CONST(A) (((A) == 1.00) ? ((real_t)FRAC_MAX) : FIX_CONST((A),(FRAC_PRECISION))) | ||
56 | //#define FRAC_CONST(A) (((A) >= 0) ? ((real_t)((A)*(FRAC_PRECISION)+0.5)) : ((real_t)((A)*(FRAC_PRECISION)-0.5))) | ||
57 | |||
58 | #define Q2_BITS 22 | ||
59 | #define Q2_PRECISION (1 << Q2_BITS) | ||
60 | #define Q2_CONST(A) FIX_CONST((A),(Q2_PRECISION)) | ||
61 | |||
62 | #if defined(CPU_COLDFIRE) | ||
63 | |||
64 | static INLINE real_t MUL_F(real_t A, real_t B) | ||
65 | { | ||
66 | asm volatile ( | ||
67 | "mac.l %[A], %[B], %%acc0\n\t" | ||
68 | "movclr.l %%acc0, %[A]" | ||
69 | : [A] "+&r" (A) : [B] "r" (B) | ||
70 | ); | ||
71 | return A; | ||
72 | } | ||
73 | |||
74 | static INLINE real_t MUL_C(real_t A, real_t B) | ||
75 | { | ||
76 | asm volatile ( | ||
77 | "mac.l %[A], %[B], %%acc0\n\t" | ||
78 | "movclr.l %%acc0, %[A]\n\t" | ||
79 | : [A] "+&d" (A) : [B] "r" (B) | ||
80 | ); | ||
81 | return A << 3; | ||
82 | } | ||
83 | |||
84 | /* MUL_R needs too many shifts for us to just operate on the top 32 bits the | ||
85 | emac unit gives as usual, so we do a full 64 bit mul here. */ | ||
86 | static INLINE real_t MUL_R(real_t x, real_t y) | ||
87 | { | ||
88 | real_t t1, t2; | ||
89 | asm volatile ( | ||
90 | "mac.l %[x],%[y],%%acc0\n" /* multiply */ | ||
91 | "mulu.l %[y],%[x] \n" /* get lower half, avoid emac stall */ | ||
92 | "movclr.l %%acc0,%[t1] \n" /* get higher half */ | ||
93 | "moveq.l #17,%[t2] \n" | ||
94 | "asl.l %[t2],%[t1] \n" /* hi <<= 17, plus one free */ | ||
95 | "moveq.l #14,%[t2] \n" | ||
96 | "lsr.l %[t2],%[x] \n" /* (unsigned)lo >>= 14 */ | ||
97 | "or.l %[x],%[t1] \n" /* combine result */ | ||
98 | : /* outputs */ | ||
99 | [t1]"=&d"(t1), | ||
100 | [t2]"=&d"(t2), | ||
101 | [x] "+d" (x) | ||
102 | : /* inputs */ | ||
103 | [y] "d" (y) | ||
104 | ); | ||
105 | return t1; | ||
106 | } | ||
107 | |||
108 | static INLINE void ComplexMult(real_t *y1, real_t *y2, | ||
109 | real_t x1, real_t x2, real_t c1, real_t c2) | ||
110 | { | ||
111 | asm volatile( | ||
112 | "mac.l %[x1], %[c1], %%acc0\n\t" | ||
113 | "mac.l %[x2], %[c2], %%acc0\n\t" | ||
114 | "mac.l %[x2], %[c1], %%acc1\n\t" | ||
115 | "msac.l %[x1], %[c2], %%acc1\n\t" | ||
116 | "movclr.l %%acc0, %[x1]\n\t" | ||
117 | "move.l %[x1], (%[y1])\n\t" | ||
118 | "movclr.l %%acc1, %[x1]\n\t" | ||
119 | "move.l %[x1], (%[y2])" | ||
120 | : [x1] "+&r" (x1) | ||
121 | : [x2] "r" (x2), [y1] "a" (y1), [y2] "a" (y2), | ||
122 | [c1] "r" (c1), [c2] "r" (c2) | ||
123 | : "memory" | ||
124 | ); | ||
125 | } | ||
126 | |||
127 | /* the following see little or no use, so just ignore them for now */ | ||
128 | #define MUL_Q2(A,B) (real_t)(((int64_t)(A)*(int64_t)(B)+(1 << (Q2_BITS-1))) >> Q2_BITS) | ||
129 | |||
130 | #elif defined(__GNUC__) && defined (__arm__) | ||
131 | |||
132 | /* taken from MAD */ | ||
133 | #define arm_mul(x, y, SCALEBITS) \ | ||
134 | ({ \ | ||
135 | uint32_t __hi; \ | ||
136 | uint32_t __lo; \ | ||
137 | uint32_t __result; \ | ||
138 | asm("smull %0, %1, %3, %4\n\t" \ | ||
139 | "movs %0, %0, lsr %5\n\t" \ | ||
140 | "adc %2, %0, %1, lsl %6" \ | ||
141 | : "=&r" (__lo), "=&r" (__hi), "=r" (__result) \ | ||
142 | : "%r" (x), "r" (y), \ | ||
143 | "M" (SCALEBITS), "M" (32 - (SCALEBITS)) \ | ||
144 | : "cc"); \ | ||
145 | __result; \ | ||
146 | }) | ||
147 | |||
148 | static INLINE real_t MUL_R(real_t A, real_t B) | ||
149 | { | ||
150 | return arm_mul(A, B, REAL_BITS); | ||
151 | } | ||
152 | |||
153 | static INLINE real_t MUL_C(real_t A, real_t B) | ||
154 | { | ||
155 | return arm_mul(A, B, COEF_BITS); | ||
156 | } | ||
157 | |||
158 | static INLINE real_t MUL_Q2(real_t A, real_t B) | ||
159 | { | ||
160 | return arm_mul(A, B, Q2_BITS); | ||
161 | } | ||
162 | |||
163 | static INLINE real_t _MulHigh(real_t x, real_t y) | ||
164 | { | ||
165 | uint32_t __lo; | ||
166 | uint32_t __hi; | ||
167 | asm("smull\t%0, %1, %2, %3" | ||
168 | : "=&r"(__lo),"=&r"(__hi) | ||
169 | : "%r"(x),"r"(y) | ||
170 | : "cc"); | ||
171 | return __hi; | ||
172 | } | ||
173 | |||
174 | static INLINE real_t MUL_F(real_t A, real_t B) | ||
175 | { | ||
176 | return _MulHigh(A, B) << (FRAC_SIZE-FRAC_BITS); | ||
177 | } | ||
178 | |||
179 | /* Complex multiplication */ | ||
180 | static INLINE void ComplexMult(real_t *y1, real_t *y2, | ||
181 | real_t x1, real_t x2, real_t c1, real_t c2) | ||
182 | { | ||
183 | int32_t tmp, yt1, yt2; | ||
184 | asm("smull %0, %1, %4, %6\n\t" | ||
185 | "smlal %0, %1, %5, %7\n\t" | ||
186 | "rsb %3, %4, #0\n\t" | ||
187 | "smull %0, %2, %5, %6\n\t" | ||
188 | "smlal %0, %2, %3, %7" | ||
189 | : "=&r" (tmp), "=&r" (yt1), "=&r" (yt2), "=r" (x1) | ||
190 | : "3" (x1), "r" (x2), "r" (c1), "r" (c2) | ||
191 | : "cc" ); | ||
192 | *y1 = yt1 << (FRAC_SIZE-FRAC_BITS); | ||
193 | *y2 = yt2 << (FRAC_SIZE-FRAC_BITS); | ||
194 | } | ||
195 | |||
196 | #else | ||
197 | |||
198 | /* multiply with real shift */ | ||
199 | #define MUL_R(A,B) (real_t)(((int64_t)(A)*(int64_t)(B)+(1 << (REAL_BITS-1))) >> REAL_BITS) | ||
200 | /* multiply with coef shift */ | ||
201 | #define MUL_C(A,B) (real_t)(((int64_t)(A)*(int64_t)(B)+(1 << (COEF_BITS-1))) >> COEF_BITS) | ||
202 | /* multiply with fractional shift */ | ||
203 | #if defined(_WIN32_WCE) && defined(_ARM_) | ||
204 | /* eVC for PocketPC has an intrinsic function that returns only the high 32 bits of a 32x32 bit multiply */ | ||
205 | static INLINE real_t MUL_F(real_t A, real_t B) | ||
206 | { | ||
207 | return _MulHigh(A,B) << (32-FRAC_BITS); | ||
208 | } | ||
209 | #else | ||
210 | #define _MulHigh(A,B) (real_t)(((int64_t)(A)*(int64_t)(B)+(1 << (FRAC_SIZE-1))) >> FRAC_SIZE) | ||
211 | #define MUL_F(A,B) (real_t)(((int64_t)(A)*(int64_t)(B)+(1 << (FRAC_BITS-1))) >> FRAC_BITS) | ||
212 | #endif | ||
213 | #define MUL_Q2(A,B) (real_t)(((int64_t)(A)*(int64_t)(B)+(1 << (Q2_BITS-1))) >> Q2_BITS) | ||
214 | |||
215 | /* Complex multiplication */ | ||
216 | static INLINE void ComplexMult(real_t *y1, real_t *y2, | ||
217 | real_t x1, real_t x2, real_t c1, real_t c2) | ||
218 | { | ||
219 | *y1 = (_MulHigh(x1, c1) + _MulHigh(x2, c2))<<(FRAC_SIZE-FRAC_BITS); | ||
220 | *y2 = (_MulHigh(x2, c1) - _MulHigh(x1, c2))<<(FRAC_SIZE-FRAC_BITS); | ||
221 | } | ||
222 | |||
223 | #endif | ||
224 | |||
225 | |||
226 | |||
227 | #ifdef __cplusplus | ||
228 | } | ||
229 | #endif | ||
230 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/hcr.c b/lib/rbcodec/codecs/libfaad/hcr.c new file mode 100644 index 0000000000..f968ea7bec --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/hcr.c | |||
@@ -0,0 +1,409 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2004 G.C. Pascutto, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #include "common.h" | ||
29 | #include "structs.h" | ||
30 | |||
31 | #include <stdlib.h> | ||
32 | #include <string.h> | ||
33 | |||
34 | #include "specrec.h" | ||
35 | #include "huffman.h" | ||
36 | |||
37 | /* ISO/IEC 14496-3/Amd.1 | ||
38 | * 8.5.3.3: Huffman Codeword Reordering for AAC spectral data (HCR) | ||
39 | * | ||
40 | * HCR devides the spectral data in known fixed size segments, and | ||
41 | * sorts it by the importance of the data. The importance is firstly | ||
42 | * the (lower) position in the spectrum, and secondly the largest | ||
43 | * value in the used codebook. | ||
44 | * The most important data is written at the start of each segment | ||
45 | * (at known positions), the remaining data is interleaved inbetween, | ||
46 | * with the writing direction alternating. | ||
47 | * Data length is not increased. | ||
48 | */ | ||
49 | |||
50 | #ifdef ERROR_RESILIENCE | ||
51 | |||
52 | /* 8.5.3.3.1 Pre-sorting */ | ||
53 | |||
54 | #define NUM_CB 6 | ||
55 | #define NUM_CB_ER 22 | ||
56 | #define MAX_CB 32 | ||
57 | #define VCB11_FIRST 16 | ||
58 | #define VCB11_LAST 31 | ||
59 | |||
60 | static const uint8_t PreSortCB_STD[NUM_CB] = | ||
61 | { 11, 9, 7, 5, 3, 1}; | ||
62 | |||
63 | static const uint8_t PreSortCB_ER[NUM_CB_ER] = | ||
64 | { 11, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 9, 7, 5, 3, 1}; | ||
65 | |||
66 | /* 8.5.3.3.2 Derivation of segment width */ | ||
67 | |||
68 | static const uint8_t maxCwLen[MAX_CB] = {0, 11, 9, 20, 16, 13, 11, 14, 12, 17, 14, 49, | ||
69 | 0, 0, 0, 0, 14, 17, 21, 21, 25, 25, 29, 29, 29, 29, 33, 33, 33, 37, 37, 41}; | ||
70 | |||
71 | #define segmentWidth(cb) min(maxCwLen[cb], ics->length_of_longest_codeword) | ||
72 | |||
73 | /* bit-twiddling helpers */ | ||
74 | static const uint8_t S[] = {1, 2, 4, 8, 16}; | ||
75 | static const uint32_t B[] = {0x55555555, 0x33333333, 0x0F0F0F0F, 0x00FF00FF, 0x0000FFFF}; | ||
76 | |||
77 | typedef struct | ||
78 | { | ||
79 | uint8_t cb; | ||
80 | uint8_t decoded; | ||
81 | uint16_t sp_offset; | ||
82 | bits_t bits; | ||
83 | } codeword_t; | ||
84 | |||
85 | /* rewind and reverse */ | ||
86 | /* 32 bit version */ | ||
87 | static uint32_t rewrev_word(uint32_t v, const uint8_t len) | ||
88 | { | ||
89 | /* 32 bit reverse */ | ||
90 | v = ((v >> S[0]) & B[0]) | ((v << S[0]) & ~B[0]); | ||
91 | v = ((v >> S[1]) & B[1]) | ((v << S[1]) & ~B[1]); | ||
92 | v = ((v >> S[2]) & B[2]) | ((v << S[2]) & ~B[2]); | ||
93 | v = ((v >> S[3]) & B[3]) | ((v << S[3]) & ~B[3]); | ||
94 | v = ((v >> S[4]) & B[4]) | ((v << S[4]) & ~B[4]); | ||
95 | |||
96 | /* shift off low bits */ | ||
97 | v >>= (32 - len); | ||
98 | |||
99 | return v; | ||
100 | } | ||
101 | |||
102 | /* 64 bit version */ | ||
103 | static void rewrev_lword(uint32_t *hi, uint32_t *lo, const uint8_t len) | ||
104 | { | ||
105 | if (len <= 32) { | ||
106 | *hi = 0; | ||
107 | *lo = rewrev_word(*lo, len); | ||
108 | } else | ||
109 | { | ||
110 | uint32_t t = *hi, v = *lo; | ||
111 | |||
112 | /* double 32 bit reverse */ | ||
113 | v = ((v >> S[0]) & B[0]) | ((v << S[0]) & ~B[0]); | ||
114 | t = ((t >> S[0]) & B[0]) | ((t << S[0]) & ~B[0]); | ||
115 | v = ((v >> S[1]) & B[1]) | ((v << S[1]) & ~B[1]); | ||
116 | t = ((t >> S[1]) & B[1]) | ((t << S[1]) & ~B[1]); | ||
117 | v = ((v >> S[2]) & B[2]) | ((v << S[2]) & ~B[2]); | ||
118 | t = ((t >> S[2]) & B[2]) | ((t << S[2]) & ~B[2]); | ||
119 | v = ((v >> S[3]) & B[3]) | ((v << S[3]) & ~B[3]); | ||
120 | t = ((t >> S[3]) & B[3]) | ((t << S[3]) & ~B[3]); | ||
121 | v = ((v >> S[4]) & B[4]) | ((v << S[4]) & ~B[4]); | ||
122 | t = ((t >> S[4]) & B[4]) | ((t << S[4]) & ~B[4]); | ||
123 | |||
124 | /* last 32<>32 bit swap is implicit below */ | ||
125 | |||
126 | /* shift off low bits (this is really only one 64 bit shift) */ | ||
127 | *lo = (t >> (64 - len)) | (v << (len - 32)); | ||
128 | *hi = v >> (64 - len); | ||
129 | } | ||
130 | } | ||
131 | |||
132 | |||
133 | /* bits_t version */ | ||
134 | static void rewrev_bits(bits_t *bits) | ||
135 | { | ||
136 | if (bits->len == 0) return; | ||
137 | rewrev_lword(&bits->bufb, &bits->bufa, bits->len); | ||
138 | } | ||
139 | |||
140 | |||
141 | /* merge bits of a to b */ | ||
142 | static void concat_bits(bits_t *b, bits_t *a) | ||
143 | { | ||
144 | uint32_t bl, bh, al, ah; | ||
145 | |||
146 | if (a->len == 0) return; | ||
147 | |||
148 | al = a->bufa; | ||
149 | ah = a->bufb; | ||
150 | |||
151 | if (b->len > 32) | ||
152 | { | ||
153 | /* maskoff superfluous high b bits */ | ||
154 | bl = b->bufa; | ||
155 | bh = b->bufb & ((1 << (b->len-32)) - 1); | ||
156 | /* left shift a b->len bits */ | ||
157 | ah = al << (b->len - 32); | ||
158 | al = 0; | ||
159 | } else { | ||
160 | bl = b->bufa & ((1 << (b->len)) - 1); | ||
161 | bh = 0; | ||
162 | ah = (ah << (b->len)) | (al >> (32 - b->len)); | ||
163 | al = al << b->len; | ||
164 | } | ||
165 | |||
166 | /* merge */ | ||
167 | b->bufa = bl | al; | ||
168 | b->bufb = bh | ah; | ||
169 | |||
170 | b->len += a->len; | ||
171 | } | ||
172 | |||
173 | uint8_t is_good_cb(uint8_t this_CB, uint8_t this_sec_CB) | ||
174 | { | ||
175 | /* only want spectral data CB's */ | ||
176 | if ((this_sec_CB > ZERO_HCB && this_sec_CB <= ESC_HCB) || (this_sec_CB >= VCB11_FIRST && this_sec_CB <= VCB11_LAST)) | ||
177 | { | ||
178 | if (this_CB < ESC_HCB) | ||
179 | { | ||
180 | /* normal codebook pairs */ | ||
181 | return ((this_sec_CB == this_CB) || (this_sec_CB == this_CB + 1)); | ||
182 | } else | ||
183 | { | ||
184 | /* escape codebook */ | ||
185 | return (this_sec_CB == this_CB); | ||
186 | } | ||
187 | } | ||
188 | return 0; | ||
189 | } | ||
190 | |||
191 | void read_segment(bits_t *segment, uint8_t segwidth, bitfile *ld) | ||
192 | { | ||
193 | segment->len = segwidth; | ||
194 | |||
195 | if (segwidth > 32) | ||
196 | { | ||
197 | segment->bufb = faad_getbits(ld, segwidth - 32); | ||
198 | segment->bufa = faad_getbits(ld, 32); | ||
199 | |||
200 | } else { | ||
201 | segment->bufa = faad_getbits(ld, segwidth); | ||
202 | segment->bufb = 0; | ||
203 | } | ||
204 | } | ||
205 | |||
206 | void fill_in_codeword(codeword_t *codeword, uint16_t index, uint16_t sp, uint8_t cb) | ||
207 | { | ||
208 | codeword[index].sp_offset = sp; | ||
209 | codeword[index].cb = cb; | ||
210 | codeword[index].decoded = 0; | ||
211 | codeword[index].bits.len = 0; | ||
212 | } | ||
213 | |||
214 | uint8_t reordered_spectral_data(NeAACDecHandle hDecoder, ic_stream *ics, | ||
215 | bitfile *ld, int16_t *spectral_data) | ||
216 | { | ||
217 | uint16_t PCWs_done; | ||
218 | uint16_t numberOfSegments, numberOfSets, numberOfCodewords; | ||
219 | |||
220 | static codeword_t codeword[512]; | ||
221 | static bits_t segment[512]; | ||
222 | |||
223 | uint16_t sp_offset[8]; | ||
224 | uint16_t g, i, sortloop, set, bitsread; | ||
225 | uint8_t w_idx, sfb, this_CB, last_CB, this_sec_CB; | ||
226 | |||
227 | const uint16_t nshort = hDecoder->frameLength/8; | ||
228 | const uint16_t sp_data_len = ics->length_of_reordered_spectral_data; | ||
229 | |||
230 | const uint8_t *PreSortCb; | ||
231 | |||
232 | /* no data (e.g. silence) */ | ||
233 | if (sp_data_len == 0) | ||
234 | return 0; | ||
235 | |||
236 | /* since there is spectral data, at least one codeword has nonzero length */ | ||
237 | if (ics->length_of_longest_codeword == 0) | ||
238 | return 10; | ||
239 | |||
240 | if (sp_data_len < ics->length_of_longest_codeword) | ||
241 | return 10; | ||
242 | |||
243 | sp_offset[0] = 0; | ||
244 | for (g = 1; g < ics->num_window_groups; g++) | ||
245 | { | ||
246 | sp_offset[g] = sp_offset[g-1] + nshort*ics->window_group_length[g-1]; | ||
247 | } | ||
248 | |||
249 | PCWs_done = 0; | ||
250 | numberOfSegments = 0; | ||
251 | numberOfCodewords = 0; | ||
252 | bitsread = 0; | ||
253 | |||
254 | /* VCB11 code books in use */ | ||
255 | if (hDecoder->aacSectionDataResilienceFlag) | ||
256 | { | ||
257 | PreSortCb = PreSortCB_ER; | ||
258 | last_CB = NUM_CB_ER; | ||
259 | } else | ||
260 | { | ||
261 | PreSortCb = PreSortCB_STD; | ||
262 | last_CB = NUM_CB; | ||
263 | } | ||
264 | |||
265 | /* step 1: decode PCW's (set 0), and stuff data in easier-to-use format */ | ||
266 | for (sortloop = 0; sortloop < last_CB; sortloop++) | ||
267 | { | ||
268 | /* select codebook to process this pass */ | ||
269 | this_CB = PreSortCb[sortloop]; | ||
270 | |||
271 | /* loop over sfbs */ | ||
272 | for (sfb = 0; sfb < ics->max_sfb; sfb++) | ||
273 | { | ||
274 | /* loop over all in this sfb, 4 lines per loop */ | ||
275 | for (w_idx = 0; 4*w_idx < (ics->swb_offset[sfb+1] - ics->swb_offset[sfb]); w_idx++) | ||
276 | { | ||
277 | for(g = 0; g < ics->num_window_groups; g++) | ||
278 | { | ||
279 | for (i = 0; i < ics->num_sec[g]; i++) | ||
280 | { | ||
281 | /* check whether sfb used here is the one we want to process */ | ||
282 | if ((ics->sect_start[g][i] <= sfb) && (ics->sect_end[g][i] > sfb)) | ||
283 | { | ||
284 | /* check whether codebook used here is the one we want to process */ | ||
285 | this_sec_CB = ics->sect_cb[g][i]; | ||
286 | |||
287 | if (is_good_cb(this_CB, this_sec_CB)) | ||
288 | { | ||
289 | /* precalculate some stuff */ | ||
290 | uint16_t sect_sfb_size = ics->sect_sfb_offset[g][sfb+1] - ics->sect_sfb_offset[g][sfb]; | ||
291 | uint8_t inc = (this_sec_CB < FIRST_PAIR_HCB) ? QUAD_LEN : PAIR_LEN; | ||
292 | uint16_t group_cws_count = (4*ics->window_group_length[g])/inc; | ||
293 | uint8_t segwidth = segmentWidth(this_sec_CB); | ||
294 | uint16_t cws; | ||
295 | |||
296 | /* read codewords until end of sfb or end of window group (shouldn't only 1 trigger?) */ | ||
297 | for (cws = 0; (cws < group_cws_count) && ((cws + w_idx*group_cws_count) < sect_sfb_size); cws++) | ||
298 | { | ||
299 | uint16_t sp = sp_offset[g] + ics->sect_sfb_offset[g][sfb] + inc * (cws + w_idx*group_cws_count); | ||
300 | |||
301 | /* read and decode PCW */ | ||
302 | if (!PCWs_done) | ||
303 | { | ||
304 | /* read in normal segments */ | ||
305 | if (bitsread + segwidth <= sp_data_len) | ||
306 | { | ||
307 | read_segment(&segment[numberOfSegments], segwidth, ld); | ||
308 | bitsread += segwidth; | ||
309 | |||
310 | huffman_spectral_data_2(this_sec_CB, &segment[numberOfSegments], &spectral_data[sp]); | ||
311 | |||
312 | /* keep leftover bits */ | ||
313 | rewrev_bits(&segment[numberOfSegments]); | ||
314 | |||
315 | numberOfSegments++; | ||
316 | } else { | ||
317 | /* remaining stuff after last segment, we unfortunately couldn't read | ||
318 | this in earlier because it might not fit in 64 bits. since we already | ||
319 | decoded (and removed) the PCW it is now guaranteed to fit */ | ||
320 | if (bitsread < sp_data_len) | ||
321 | { | ||
322 | const uint8_t additional_bits = sp_data_len - bitsread; | ||
323 | |||
324 | read_segment(&segment[numberOfSegments], additional_bits, ld); | ||
325 | segment[numberOfSegments].len += segment[numberOfSegments-1].len; | ||
326 | rewrev_bits(&segment[numberOfSegments]); | ||
327 | |||
328 | if (segment[numberOfSegments-1].len > 32) | ||
329 | { | ||
330 | segment[numberOfSegments-1].bufb = segment[numberOfSegments].bufb + | ||
331 | showbits_hcr(&segment[numberOfSegments-1], segment[numberOfSegments-1].len - 32); | ||
332 | segment[numberOfSegments-1].bufa = segment[numberOfSegments].bufa + | ||
333 | showbits_hcr(&segment[numberOfSegments-1], 32); | ||
334 | } else { | ||
335 | segment[numberOfSegments-1].bufa = segment[numberOfSegments].bufa + | ||
336 | showbits_hcr(&segment[numberOfSegments-1], segment[numberOfSegments-1].len); | ||
337 | segment[numberOfSegments-1].bufb = segment[numberOfSegments].bufb; | ||
338 | } | ||
339 | segment[numberOfSegments-1].len += additional_bits; | ||
340 | } | ||
341 | bitsread = sp_data_len; | ||
342 | PCWs_done = 1; | ||
343 | |||
344 | fill_in_codeword(codeword, 0, sp, this_sec_CB); | ||
345 | } | ||
346 | } else { | ||
347 | fill_in_codeword(codeword, numberOfCodewords - numberOfSegments, sp, this_sec_CB); | ||
348 | } | ||
349 | numberOfCodewords++; | ||
350 | } | ||
351 | } | ||
352 | } | ||
353 | } | ||
354 | } | ||
355 | } | ||
356 | } | ||
357 | } | ||
358 | |||
359 | if (numberOfSegments == 0) | ||
360 | return 10; | ||
361 | |||
362 | numberOfSets = numberOfCodewords / numberOfSegments; | ||
363 | |||
364 | /* step 2: decode nonPCWs */ | ||
365 | for (set = 1; set <= numberOfSets; set++) | ||
366 | { | ||
367 | uint16_t trial; | ||
368 | |||
369 | for (trial = 0; trial < numberOfSegments; trial++) | ||
370 | { | ||
371 | uint16_t codewordBase; | ||
372 | |||
373 | for (codewordBase = 0; codewordBase < numberOfSegments; codewordBase++) | ||
374 | { | ||
375 | const uint16_t segment_idx = (trial + codewordBase) % numberOfSegments; | ||
376 | const uint16_t codeword_idx = codewordBase + set*numberOfSegments - numberOfSegments; | ||
377 | |||
378 | /* data up */ | ||
379 | if (codeword_idx >= numberOfCodewords - numberOfSegments) break; | ||
380 | |||
381 | if (!codeword[codeword_idx].decoded && segment[segment_idx].len > 0) | ||
382 | { | ||
383 | uint8_t tmplen; | ||
384 | |||
385 | if (codeword[codeword_idx].bits.len != 0) | ||
386 | concat_bits(&segment[segment_idx], &codeword[codeword_idx].bits); | ||
387 | |||
388 | tmplen = segment[segment_idx].len; | ||
389 | |||
390 | if (huffman_spectral_data_2(codeword[codeword_idx].cb, &segment[segment_idx], | ||
391 | &spectral_data[codeword[codeword_idx].sp_offset]) >= 0) | ||
392 | { | ||
393 | codeword[codeword_idx].decoded = 1; | ||
394 | } else | ||
395 | { | ||
396 | codeword[codeword_idx].bits = segment[segment_idx]; | ||
397 | codeword[codeword_idx].bits.len = tmplen; | ||
398 | } | ||
399 | |||
400 | } | ||
401 | } | ||
402 | } | ||
403 | for (i = 0; i < numberOfSegments; i++) | ||
404 | rewrev_bits(&segment[i]); | ||
405 | } | ||
406 | |||
407 | return 0; | ||
408 | } | ||
409 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/huffman.c b/lib/rbcodec/codecs/libfaad/huffman.c new file mode 100644 index 0000000000..bea0dd7bf2 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/huffman.c | |||
@@ -0,0 +1,563 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #include "common.h" | ||
29 | #include "structs.h" | ||
30 | |||
31 | #include <stdlib.h> | ||
32 | #ifdef ANALYSIS | ||
33 | #include <stdio.h> | ||
34 | #endif | ||
35 | |||
36 | #include "bits.h" | ||
37 | #include "huffman.h" | ||
38 | #include "codebook/hcb.h" | ||
39 | |||
40 | |||
41 | /* static function declarations */ | ||
42 | static INLINE void huffman_sign_bits_pair(bitfile *ld, int16_t *sp); | ||
43 | static INLINE void huffman_sign_bits_quad(bitfile *ld, int16_t *sp); | ||
44 | static INLINE int16_t huffman_getescape(bitfile *ld, int16_t sp); | ||
45 | static uint8_t huffman_2step_quad(uint8_t cb, bitfile *ld, int16_t *sp); | ||
46 | static uint8_t huffman_2step_quad_sign(uint8_t cb, bitfile *ld, int16_t *sp); | ||
47 | static INLINE uint8_t huffman_2step_pair(uint8_t cb, bitfile *ld, int16_t *sp); | ||
48 | static INLINE uint8_t huffman_2step_pair_sign(uint8_t cb, bitfile *ld, int16_t *sp); | ||
49 | static uint8_t huffman_binary_quad(uint8_t cb, bitfile *ld, int16_t *sp); | ||
50 | static uint8_t huffman_binary_quad_sign(uint8_t cb, bitfile *ld, int16_t *sp); | ||
51 | static uint8_t huffman_binary_pair(uint8_t cb, bitfile *ld, int16_t *sp); | ||
52 | static uint8_t huffman_binary_pair_sign(uint8_t cb, bitfile *ld, int16_t *sp); | ||
53 | static int16_t huffman_codebook(uint8_t i) ICODE_ATTR_FAAD_LARGE_IRAM; | ||
54 | #ifdef ERROR_RESILIENCE | ||
55 | static void vcb11_check_LAV(uint8_t cb, int16_t *sp); | ||
56 | #endif | ||
57 | |||
58 | int8_t huffman_scale_factor(bitfile *ld) | ||
59 | { | ||
60 | uint16_t offset = 0; | ||
61 | |||
62 | while (hcb_sf[offset][1]) | ||
63 | { | ||
64 | uint8_t b = faad_get1bit(ld | ||
65 | DEBUGVAR(1,255,"huffman_scale_factor()")); | ||
66 | offset += hcb_sf[offset][b]; | ||
67 | |||
68 | if (offset > 240) | ||
69 | { | ||
70 | /* printf("ERROR: offset into hcb_sf = %d >240!\n", offset); */ | ||
71 | return -1; | ||
72 | } | ||
73 | } | ||
74 | |||
75 | return hcb_sf[offset][0]; | ||
76 | } | ||
77 | |||
78 | |||
79 | hcb *hcb_table[] ICONST_ATTR = { | ||
80 | 0, hcb1_1, hcb2_1, 0, hcb4_1, 0, hcb6_1, 0, hcb8_1, 0, hcb10_1, hcb11_1 | ||
81 | }; | ||
82 | |||
83 | hcb_2_quad *hcb_2_quad_table[] ICONST_ATTR = { | ||
84 | 0, hcb1_2, hcb2_2, 0, hcb4_2, 0, 0, 0, 0, 0, 0, 0 | ||
85 | }; | ||
86 | |||
87 | hcb_2_pair *hcb_2_pair_table[] ICONST_ATTR = { | ||
88 | 0, 0, 0, 0, 0, 0, hcb6_2, 0, hcb8_2, 0, hcb10_2, hcb11_2 | ||
89 | }; | ||
90 | |||
91 | hcb_bin_pair *hcb_bin_table[] ICONST_ATTR = { | ||
92 | 0, 0, 0, 0, 0, hcb5, 0, hcb7, 0, hcb9, 0, 0 | ||
93 | }; | ||
94 | |||
95 | uint8_t hcbN[] ICONST_ATTR = { 0, 5, 5, 0, 5, 0, 5, 0, 5, 0, 6, 5 }; | ||
96 | |||
97 | /* defines whether a huffman codebook is unsigned or not */ | ||
98 | /* Table 4.6.2 */ | ||
99 | uint8_t unsigned_cb[] ICONST_ATTR = { 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, | ||
100 | /* codebook 16 to 31 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 | ||
101 | }; | ||
102 | |||
103 | int hcb_2_quad_table_size[] ICONST_ATTR = { 0, 114, 86, 0, 185, 0, 0, 0, 0, 0, 0, 0 }; | ||
104 | int hcb_2_pair_table_size[] ICONST_ATTR = { 0, 0, 0, 0, 0, 0, 126, 0, 83, 0, 210, 373 }; | ||
105 | int hcb_bin_table_size[] ICONST_ATTR = { 0, 0, 0, 161, 0, 161, 0, 127, 0, 337, 0, 0 }; | ||
106 | |||
107 | #define FAAD_GET_SIGN(idx) \ | ||
108 | if (sp[idx]) \ | ||
109 | if (faad_get1bit(ld)&1) \ | ||
110 | sp[idx] = -sp[idx]; \ | ||
111 | |||
112 | static INLINE void huffman_sign_bits_pair(bitfile *ld, int16_t *sp) | ||
113 | { | ||
114 | FAAD_GET_SIGN(0) | ||
115 | FAAD_GET_SIGN(1) | ||
116 | } | ||
117 | |||
118 | static INLINE void huffman_sign_bits_quad(bitfile *ld, int16_t *sp) | ||
119 | { | ||
120 | FAAD_GET_SIGN(0) | ||
121 | FAAD_GET_SIGN(1) | ||
122 | FAAD_GET_SIGN(2) | ||
123 | FAAD_GET_SIGN(3) | ||
124 | } | ||
125 | |||
126 | static INLINE int16_t huffman_getescape(bitfile *ld, int16_t sp) | ||
127 | { | ||
128 | uint8_t neg, i; | ||
129 | int16_t j; | ||
130 | int16_t off; | ||
131 | |||
132 | if (sp < 0) | ||
133 | { | ||
134 | if (sp != -16) | ||
135 | return sp; | ||
136 | neg = 1; | ||
137 | } else { | ||
138 | if (sp != 16) | ||
139 | return sp; | ||
140 | neg = 0; | ||
141 | } | ||
142 | |||
143 | for (i = 4; ; i++) | ||
144 | { | ||
145 | if (faad_get1bit(ld | ||
146 | DEBUGVAR(1,6,"huffman_getescape(): escape size")) == 0) | ||
147 | { | ||
148 | break; | ||
149 | } | ||
150 | } | ||
151 | |||
152 | off = (int16_t)faad_getbits(ld, i | ||
153 | DEBUGVAR(1,9,"huffman_getescape(): escape")); | ||
154 | |||
155 | j = off | (1<<i); | ||
156 | if (neg) | ||
157 | j = -j; | ||
158 | |||
159 | return j; | ||
160 | } | ||
161 | |||
162 | static uint8_t huffman_2step_quad(uint8_t cb, bitfile *ld, int16_t *sp) | ||
163 | { | ||
164 | uint32_t cw; | ||
165 | uint16_t offset = 0; | ||
166 | uint8_t extra_bits; | ||
167 | |||
168 | cw = faad_showbits(ld, hcbN[cb]); | ||
169 | offset = hcb_table[cb][cw].offset; | ||
170 | extra_bits = hcb_table[cb][cw].extra_bits; | ||
171 | |||
172 | if (extra_bits) | ||
173 | { | ||
174 | /* we know for sure it's more than hcbN[cb] bits long */ | ||
175 | faad_flushbits(ld, hcbN[cb]); | ||
176 | offset += (uint16_t)faad_showbits(ld, extra_bits); | ||
177 | faad_flushbits(ld, hcb_2_quad_table[cb][offset].bits - hcbN[cb]); | ||
178 | } else { | ||
179 | faad_flushbits(ld, hcb_2_quad_table[cb][offset].bits); | ||
180 | } | ||
181 | |||
182 | if (offset > hcb_2_quad_table_size[cb]) | ||
183 | { | ||
184 | /* printf("ERROR: offset into hcb_2_quad_table = %d >%d!\n", offset, | ||
185 | hcb_2_quad_table_size[cb]); */ | ||
186 | return 10; | ||
187 | } | ||
188 | |||
189 | sp[0] = hcb_2_quad_table[cb][offset].x; | ||
190 | sp[1] = hcb_2_quad_table[cb][offset].y; | ||
191 | sp[2] = hcb_2_quad_table[cb][offset].v; | ||
192 | sp[3] = hcb_2_quad_table[cb][offset].w; | ||
193 | |||
194 | return 0; | ||
195 | } | ||
196 | |||
197 | static uint8_t huffman_2step_quad_sign(uint8_t cb, bitfile *ld, int16_t *sp) | ||
198 | { | ||
199 | uint8_t err = huffman_2step_quad(cb, ld, sp); | ||
200 | huffman_sign_bits_quad(ld, sp); | ||
201 | |||
202 | return err; | ||
203 | } | ||
204 | |||
205 | static INLINE uint8_t huffman_2step_pair(uint8_t cb, bitfile *ld, int16_t *sp) | ||
206 | { | ||
207 | uint32_t cw; | ||
208 | uint16_t offset = 0; | ||
209 | uint8_t extra_bits; | ||
210 | |||
211 | cw = faad_showbits(ld, hcbN[cb]); | ||
212 | offset = hcb_table[cb][cw].offset; | ||
213 | extra_bits = hcb_table[cb][cw].extra_bits; | ||
214 | |||
215 | if (extra_bits) | ||
216 | { | ||
217 | /* we know for sure it's more than hcbN[cb] bits long */ | ||
218 | faad_flushbits(ld, hcbN[cb]); | ||
219 | offset += (uint16_t)faad_showbits(ld, extra_bits); | ||
220 | faad_flushbits(ld, hcb_2_pair_table[cb][offset].bits - hcbN[cb]); | ||
221 | } else { | ||
222 | faad_flushbits(ld, hcb_2_pair_table[cb][offset].bits); | ||
223 | } | ||
224 | |||
225 | if (offset > hcb_2_pair_table_size[cb]) | ||
226 | { | ||
227 | /* printf("ERROR: offset into hcb_2_pair_table = %d >%d!\n", offset, | ||
228 | hcb_2_pair_table_size[cb]); */ | ||
229 | return 10; | ||
230 | } | ||
231 | |||
232 | sp[0] = hcb_2_pair_table[cb][offset].x; | ||
233 | sp[1] = hcb_2_pair_table[cb][offset].y; | ||
234 | |||
235 | return 0; | ||
236 | } | ||
237 | |||
238 | static INLINE uint8_t huffman_2step_pair_sign(uint8_t cb, bitfile *ld, int16_t *sp) | ||
239 | { | ||
240 | uint8_t err = huffman_2step_pair(cb, ld, sp); | ||
241 | huffman_sign_bits_pair(ld, sp); | ||
242 | |||
243 | return err; | ||
244 | } | ||
245 | |||
246 | static uint8_t huffman_binary_quad(uint8_t cb, bitfile *ld, int16_t *sp) | ||
247 | { | ||
248 | uint16_t offset = 0; | ||
249 | |||
250 | while (!hcb3[offset].is_leaf) | ||
251 | { | ||
252 | uint8_t b = faad_get1bit(ld | ||
253 | DEBUGVAR(1,255,"huffman_spectral_data():3")); | ||
254 | offset += hcb3[offset].data[b]; | ||
255 | } | ||
256 | |||
257 | if (offset > hcb_bin_table_size[cb]) | ||
258 | { | ||
259 | /* printf("ERROR: offset into hcb_bin_table = %d >%d!\n", offset, | ||
260 | hcb_bin_table_size[cb]); */ | ||
261 | return 10; | ||
262 | } | ||
263 | |||
264 | sp[0] = hcb3[offset].data[0]; | ||
265 | sp[1] = hcb3[offset].data[1]; | ||
266 | sp[2] = hcb3[offset].data[2]; | ||
267 | sp[3] = hcb3[offset].data[3]; | ||
268 | |||
269 | return 0; | ||
270 | } | ||
271 | |||
272 | static uint8_t huffman_binary_quad_sign(uint8_t cb, bitfile *ld, int16_t *sp) | ||
273 | { | ||
274 | uint8_t err = huffman_binary_quad(cb, ld, sp); | ||
275 | huffman_sign_bits_quad(ld, sp); | ||
276 | |||
277 | return err; | ||
278 | } | ||
279 | |||
280 | static uint8_t huffman_binary_pair(uint8_t cb, bitfile *ld, int16_t *sp) | ||
281 | { | ||
282 | uint16_t offset = 0; | ||
283 | |||
284 | while (!hcb_bin_table[cb][offset].is_leaf) | ||
285 | { | ||
286 | uint8_t b = faad_get1bit(ld | ||
287 | DEBUGVAR(1,255,"huffman_spectral_data():9")); | ||
288 | offset += hcb_bin_table[cb][offset].data[b]; | ||
289 | } | ||
290 | |||
291 | if (offset > hcb_bin_table_size[cb]) | ||
292 | { | ||
293 | /* printf("ERROR: offset into hcb_bin_table = %d >%d!\n", offset, | ||
294 | hcb_bin_table_size[cb]); */ | ||
295 | return 10; | ||
296 | } | ||
297 | |||
298 | sp[0] = hcb_bin_table[cb][offset].data[0]; | ||
299 | sp[1] = hcb_bin_table[cb][offset].data[1]; | ||
300 | |||
301 | return 0; | ||
302 | } | ||
303 | |||
304 | static uint8_t huffman_binary_pair_sign(uint8_t cb, bitfile *ld, int16_t *sp) | ||
305 | { | ||
306 | uint8_t err = huffman_binary_pair(cb, ld, sp); | ||
307 | huffman_sign_bits_pair(ld, sp); | ||
308 | |||
309 | return err; | ||
310 | } | ||
311 | |||
312 | static int16_t huffman_codebook(uint8_t i) | ||
313 | { | ||
314 | static const uint32_t data = 16428320; | ||
315 | if (i == 0) return (int16_t)(data >> 16) & 0xFFFF; | ||
316 | else return (int16_t)data & 0xFFFF; | ||
317 | } | ||
318 | |||
319 | #ifdef ERROR_RESILIENCE | ||
320 | static void vcb11_check_LAV(uint8_t cb, int16_t *sp) | ||
321 | { | ||
322 | static const uint16_t vcb11_LAV_tab[] = { | ||
323 | 16, 31, 47, 63, 95, 127, 159, 191, 223, | ||
324 | 255, 319, 383, 511, 767, 1023, 2047 | ||
325 | }; | ||
326 | uint16_t max = 0; | ||
327 | |||
328 | if (cb < 16 || cb > 31) | ||
329 | return; | ||
330 | |||
331 | max = vcb11_LAV_tab[cb - 16]; | ||
332 | |||
333 | if ((abs(sp[0]) > max) || (abs(sp[1]) > max)) | ||
334 | { | ||
335 | sp[0] = 0; | ||
336 | sp[1] = 0; | ||
337 | } | ||
338 | } | ||
339 | #endif | ||
340 | |||
341 | uint8_t huffman_spectral_data(uint8_t cb, bitfile *ld, int16_t *sp) | ||
342 | { | ||
343 | switch (cb) | ||
344 | { | ||
345 | case 1: /* 2-step method for data quadruples */ | ||
346 | case 2: | ||
347 | return huffman_2step_quad(cb, ld, sp); | ||
348 | case 3: /* binary search for data quadruples */ | ||
349 | return huffman_binary_quad_sign(cb, ld, sp); | ||
350 | case 4: /* 2-step method for data quadruples */ | ||
351 | return huffman_2step_quad_sign(cb, ld, sp); | ||
352 | case 5: /* binary search for data pairs */ | ||
353 | return huffman_binary_pair(cb, ld, sp); | ||
354 | case 6: /* 2-step method for data pairs */ | ||
355 | return huffman_2step_pair(cb, ld, sp); | ||
356 | case 7: /* binary search for data pairs */ | ||
357 | case 9: | ||
358 | return huffman_binary_pair_sign(cb, ld, sp); | ||
359 | case 8: /* 2-step method for data pairs */ | ||
360 | case 10: | ||
361 | return huffman_2step_pair_sign(cb, ld, sp); | ||
362 | case 12: { | ||
363 | uint8_t err = huffman_2step_pair(11, ld, sp); | ||
364 | sp[0] = huffman_codebook(0); sp[1] = huffman_codebook(1); | ||
365 | return err; } | ||
366 | case 11: | ||
367 | { | ||
368 | uint8_t err = huffman_2step_pair_sign(11, ld, sp); | ||
369 | sp[0] = huffman_getescape(ld, sp[0]); | ||
370 | sp[1] = huffman_getescape(ld, sp[1]); | ||
371 | return err; | ||
372 | } | ||
373 | #ifdef ERROR_RESILIENCE | ||
374 | /* VCB11 uses codebook 11 */ | ||
375 | case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: | ||
376 | case 24: case 25: case 26: case 27: case 28: case 29: case 30: case 31: | ||
377 | { | ||
378 | uint8_t err = huffman_2step_pair_sign(11, ld, sp); | ||
379 | sp[0] = huffman_getescape(ld, sp[0]); | ||
380 | sp[1] = huffman_getescape(ld, sp[1]); | ||
381 | |||
382 | /* check LAV (Largest Absolute Value) */ | ||
383 | /* this finds errors in the ESCAPE signal */ | ||
384 | vcb11_check_LAV(cb, sp); | ||
385 | |||
386 | return err; | ||
387 | } | ||
388 | #endif | ||
389 | default: | ||
390 | /* Non existent codebook number, something went wrong */ | ||
391 | return 11; | ||
392 | } | ||
393 | |||
394 | return 0; | ||
395 | } | ||
396 | |||
397 | |||
398 | #ifdef ERROR_RESILIENCE | ||
399 | |||
400 | /* Special version of huffman_spectral_data | ||
401 | Will not read from a bitfile but a bits_t structure. | ||
402 | Will keep track of the bits decoded and return the number of bits remaining. | ||
403 | Do not read more than ld->len, return -1 if codeword would be longer */ | ||
404 | |||
405 | int8_t huffman_spectral_data_2(uint8_t cb, bits_t *ld, int16_t *sp) | ||
406 | { | ||
407 | uint32_t cw; | ||
408 | uint16_t offset = 0; | ||
409 | uint8_t extra_bits; | ||
410 | uint8_t i, vcb11 = 0; | ||
411 | |||
412 | |||
413 | switch (cb) | ||
414 | { | ||
415 | case 1: /* 2-step method for data quadruples */ | ||
416 | case 2: | ||
417 | case 4: | ||
418 | |||
419 | cw = showbits_hcr(ld, hcbN[cb]); | ||
420 | offset = hcb_table[cb][cw].offset; | ||
421 | extra_bits = hcb_table[cb][cw].extra_bits; | ||
422 | |||
423 | if (extra_bits) | ||
424 | { | ||
425 | /* we know for sure it's more than hcbN[cb] bits long */ | ||
426 | if ( flushbits_hcr(ld, hcbN[cb]) ) return -1; | ||
427 | offset += (uint16_t)showbits_hcr(ld, extra_bits); | ||
428 | if ( flushbits_hcr(ld, hcb_2_quad_table[cb][offset].bits - hcbN[cb]) ) return -1; | ||
429 | } else { | ||
430 | if ( flushbits_hcr(ld, hcb_2_quad_table[cb][offset].bits) ) return -1; | ||
431 | } | ||
432 | |||
433 | sp[0] = hcb_2_quad_table[cb][offset].x; | ||
434 | sp[1] = hcb_2_quad_table[cb][offset].y; | ||
435 | sp[2] = hcb_2_quad_table[cb][offset].v; | ||
436 | sp[3] = hcb_2_quad_table[cb][offset].w; | ||
437 | break; | ||
438 | |||
439 | case 6: /* 2-step method for data pairs */ | ||
440 | case 8: | ||
441 | case 10: | ||
442 | case 11: | ||
443 | /* VCB11 uses codebook 11 */ | ||
444 | case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: | ||
445 | case 24: case 25: case 26: case 27: case 28: case 29: case 30: case 31: | ||
446 | |||
447 | if (cb >= 16) | ||
448 | { | ||
449 | /* store the virtual codebook */ | ||
450 | vcb11 = cb; | ||
451 | cb = 11; | ||
452 | } | ||
453 | |||
454 | cw = showbits_hcr(ld, hcbN[cb]); | ||
455 | offset = hcb_table[cb][cw].offset; | ||
456 | extra_bits = hcb_table[cb][cw].extra_bits; | ||
457 | |||
458 | if (extra_bits) | ||
459 | { | ||
460 | /* we know for sure it's more than hcbN[cb] bits long */ | ||
461 | if ( flushbits_hcr(ld, hcbN[cb]) ) return -1; | ||
462 | offset += (uint16_t)showbits_hcr(ld, extra_bits); | ||
463 | if ( flushbits_hcr(ld, hcb_2_pair_table[cb][offset].bits - hcbN[cb]) ) return -1; | ||
464 | } else { | ||
465 | if ( flushbits_hcr(ld, hcb_2_pair_table[cb][offset].bits) ) return -1; | ||
466 | } | ||
467 | sp[0] = hcb_2_pair_table[cb][offset].x; | ||
468 | sp[1] = hcb_2_pair_table[cb][offset].y; | ||
469 | break; | ||
470 | |||
471 | case 3: /* binary search for data quadruples */ | ||
472 | |||
473 | while (!hcb3[offset].is_leaf) | ||
474 | { | ||
475 | uint8_t b; | ||
476 | |||
477 | if ( get1bit_hcr(ld, &b) ) return -1; | ||
478 | offset += hcb3[offset].data[b]; | ||
479 | } | ||
480 | |||
481 | sp[0] = hcb3[offset].data[0]; | ||
482 | sp[1] = hcb3[offset].data[1]; | ||
483 | sp[2] = hcb3[offset].data[2]; | ||
484 | sp[3] = hcb3[offset].data[3]; | ||
485 | |||
486 | break; | ||
487 | |||
488 | case 5: /* binary search for data pairs */ | ||
489 | case 7: | ||
490 | case 9: | ||
491 | |||
492 | while (!hcb_bin_table[cb][offset].is_leaf) | ||
493 | { | ||
494 | uint8_t b; | ||
495 | |||
496 | if (get1bit_hcr(ld, &b) ) return -1; | ||
497 | offset += hcb_bin_table[cb][offset].data[b]; | ||
498 | } | ||
499 | |||
500 | sp[0] = hcb_bin_table[cb][offset].data[0]; | ||
501 | sp[1] = hcb_bin_table[cb][offset].data[1]; | ||
502 | |||
503 | break; | ||
504 | } | ||
505 | |||
506 | /* decode sign bits */ | ||
507 | if (unsigned_cb[cb]) | ||
508 | { | ||
509 | for(i = 0; i < ((cb < FIRST_PAIR_HCB) ? QUAD_LEN : PAIR_LEN); i++) | ||
510 | { | ||
511 | if(sp[i]) | ||
512 | { | ||
513 | uint8_t b; | ||
514 | if ( get1bit_hcr(ld, &b) ) return -1; | ||
515 | if (b != 0) { | ||
516 | sp[i] = -sp[i]; | ||
517 | } | ||
518 | } | ||
519 | } | ||
520 | } | ||
521 | |||
522 | /* decode huffman escape bits */ | ||
523 | if ((cb == ESC_HCB) || (cb >= 16)) | ||
524 | { | ||
525 | uint8_t k; | ||
526 | for (k = 0; k < 2; k++) | ||
527 | { | ||
528 | if ((sp[k] == 16) || (sp[k] == -16)) | ||
529 | { | ||
530 | uint8_t neg, i; | ||
531 | int32_t j; | ||
532 | uint32_t off; | ||
533 | |||
534 | neg = (sp[k] < 0) ? 1 : 0; | ||
535 | |||
536 | for (i = 4; ; i++) | ||
537 | { | ||
538 | uint8_t b; | ||
539 | if (get1bit_hcr(ld, &b)) | ||
540 | return -1; | ||
541 | if (b == 0) | ||
542 | break; | ||
543 | } | ||
544 | |||
545 | if (getbits_hcr(ld, i, &off)) | ||
546 | return -1; | ||
547 | j = off + (1<<i); | ||
548 | sp[k] = (int16_t)((neg) ? -j : j); | ||
549 | } | ||
550 | } | ||
551 | |||
552 | if (vcb11 != 0) | ||
553 | { | ||
554 | /* check LAV (Largest Absolute Value) */ | ||
555 | /* this finds errors in the ESCAPE signal */ | ||
556 | vcb11_check_LAV(vcb11, sp); | ||
557 | } | ||
558 | } | ||
559 | return ld->len; | ||
560 | } | ||
561 | |||
562 | #endif | ||
563 | |||
diff --git a/lib/rbcodec/codecs/libfaad/huffman.h b/lib/rbcodec/codecs/libfaad/huffman.h new file mode 100644 index 0000000000..214d3a220f --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/huffman.h | |||
@@ -0,0 +1,44 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __HUFFMAN_H__ | ||
29 | #define __HUFFMAN_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | int8_t huffman_scale_factor(bitfile *ld); | ||
36 | uint8_t huffman_spectral_data(uint8_t cb, bitfile *ld, int16_t *sp) ICODE_ATTR_FAAD_LARGE_IRAM; | ||
37 | #ifdef ERROR_RESILIENCE | ||
38 | int8_t huffman_spectral_data_2(uint8_t cb, bits_t *ld, int16_t *sp); | ||
39 | #endif | ||
40 | |||
41 | #ifdef __cplusplus | ||
42 | } | ||
43 | #endif | ||
44 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/ic_predict.c b/lib/rbcodec/codecs/libfaad/ic_predict.c new file mode 100644 index 0000000000..02cadd65b1 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/ic_predict.c | |||
@@ -0,0 +1,267 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #include "common.h" | ||
29 | #include "structs.h" | ||
30 | |||
31 | #ifdef MAIN_DEC | ||
32 | |||
33 | #include "syntax.h" | ||
34 | #include "ic_predict.h" | ||
35 | #include "pns.h" | ||
36 | |||
37 | |||
38 | static void flt_round(float32_t *pf) | ||
39 | { | ||
40 | int32_t flg; | ||
41 | uint32_t tmp, tmp1, tmp2; | ||
42 | |||
43 | tmp = *(uint32_t*)pf; | ||
44 | flg = tmp & (uint32_t)0x00008000; | ||
45 | tmp &= (uint32_t)0xffff0000; | ||
46 | tmp1 = tmp; | ||
47 | /* round 1/2 lsb toward infinity */ | ||
48 | if (flg) | ||
49 | { | ||
50 | tmp &= (uint32_t)0xff800000; /* extract exponent and sign */ | ||
51 | tmp |= (uint32_t)0x00010000; /* insert 1 lsb */ | ||
52 | tmp2 = tmp; /* add 1 lsb and elided one */ | ||
53 | tmp &= (uint32_t)0xff800000; /* extract exponent and sign */ | ||
54 | |||
55 | *pf = *(float32_t*)&tmp1 + *(float32_t*)&tmp2 - *(float32_t*)&tmp; | ||
56 | } else { | ||
57 | *pf = *(float32_t*)&tmp; | ||
58 | } | ||
59 | } | ||
60 | |||
61 | static int16_t quant_pred(float32_t x) | ||
62 | { | ||
63 | int16_t q; | ||
64 | uint32_t *tmp = (uint32_t*)&x; | ||
65 | |||
66 | q = (int16_t)(*tmp>>16); | ||
67 | |||
68 | return q; | ||
69 | } | ||
70 | |||
71 | static float32_t inv_quant_pred(int16_t q) | ||
72 | { | ||
73 | float32_t x; | ||
74 | uint32_t *tmp = (uint32_t*)&x; | ||
75 | *tmp = ((uint32_t)q)<<16; | ||
76 | |||
77 | return x; | ||
78 | } | ||
79 | |||
80 | static void ic_predict(pred_state *state, real_t input, real_t *output, uint8_t pred) | ||
81 | { | ||
82 | uint16_t tmp; | ||
83 | int16_t i, j; | ||
84 | real_t dr1, predictedvalue; | ||
85 | real_t e0, e1; | ||
86 | real_t k1, k2; | ||
87 | |||
88 | real_t r[2]; | ||
89 | real_t COR[2]; | ||
90 | real_t VAR[2]; | ||
91 | |||
92 | r[0] = inv_quant_pred(state->r[0]); | ||
93 | r[1] = inv_quant_pred(state->r[1]); | ||
94 | COR[0] = inv_quant_pred(state->COR[0]); | ||
95 | COR[1] = inv_quant_pred(state->COR[1]); | ||
96 | VAR[0] = inv_quant_pred(state->VAR[0]); | ||
97 | VAR[1] = inv_quant_pred(state->VAR[1]); | ||
98 | |||
99 | |||
100 | #if 1 | ||
101 | tmp = state->VAR[0]; | ||
102 | j = (tmp >> 7); | ||
103 | i = tmp & 0x7f; | ||
104 | if (j >= 128) | ||
105 | { | ||
106 | j -= 128; | ||
107 | k1 = COR[0] * exp_table[j] * mnt_table[i]; | ||
108 | } else { | ||
109 | k1 = REAL_CONST(0); | ||
110 | } | ||
111 | #else | ||
112 | |||
113 | { | ||
114 | #define B 0.953125 | ||
115 | real_t c = COR[0]; | ||
116 | real_t v = VAR[0]; | ||
117 | real_t tmp; | ||
118 | if (c == 0 || v <= 1) | ||
119 | { | ||
120 | k1 = 0; | ||
121 | } else { | ||
122 | tmp = B / v; | ||
123 | flt_round(&tmp); | ||
124 | k1 = c * tmp; | ||
125 | } | ||
126 | } | ||
127 | #endif | ||
128 | |||
129 | if (pred) | ||
130 | { | ||
131 | #if 1 | ||
132 | tmp = state->VAR[1]; | ||
133 | j = (tmp >> 7); | ||
134 | i = tmp & 0x7f; | ||
135 | if (j >= 128) | ||
136 | { | ||
137 | j -= 128; | ||
138 | k2 = COR[1] * exp_table[j] * mnt_table[i]; | ||
139 | } else { | ||
140 | k2 = REAL_CONST(0); | ||
141 | } | ||
142 | #else | ||
143 | |||
144 | #define B 0.953125 | ||
145 | real_t c = COR[1]; | ||
146 | real_t v = VAR[1]; | ||
147 | real_t tmp; | ||
148 | if (c == 0 || v <= 1) | ||
149 | { | ||
150 | k2 = 0; | ||
151 | } else { | ||
152 | tmp = B / v; | ||
153 | flt_round(&tmp); | ||
154 | k2 = c * tmp; | ||
155 | } | ||
156 | #endif | ||
157 | |||
158 | predictedvalue = k1*r[0] + k2*r[1]; | ||
159 | flt_round(&predictedvalue); | ||
160 | *output = input + predictedvalue; | ||
161 | } | ||
162 | |||
163 | /* calculate new state data */ | ||
164 | e0 = *output; | ||
165 | e1 = e0 - k1*r[0]; | ||
166 | dr1 = k1*e0; | ||
167 | |||
168 | VAR[0] = ALPHA*VAR[0] + 0.5f * (r[0]*r[0] + e0*e0); | ||
169 | COR[0] = ALPHA*COR[0] + r[0]*e0; | ||
170 | VAR[1] = ALPHA*VAR[1] + 0.5f * (r[1]*r[1] + e1*e1); | ||
171 | COR[1] = ALPHA*COR[1] + r[1]*e1; | ||
172 | |||
173 | r[1] = A * (r[0]-dr1); | ||
174 | r[0] = A * e0; | ||
175 | |||
176 | state->r[0] = quant_pred(r[0]); | ||
177 | state->r[1] = quant_pred(r[1]); | ||
178 | state->COR[0] = quant_pred(COR[0]); | ||
179 | state->COR[1] = quant_pred(COR[1]); | ||
180 | state->VAR[0] = quant_pred(VAR[0]); | ||
181 | state->VAR[1] = quant_pred(VAR[1]); | ||
182 | } | ||
183 | |||
184 | static void reset_pred_state(pred_state *state) | ||
185 | { | ||
186 | state->r[0] = 0; | ||
187 | state->r[1] = 0; | ||
188 | state->COR[0] = 0; | ||
189 | state->COR[1] = 0; | ||
190 | state->VAR[0] = 0x3F80; | ||
191 | state->VAR[1] = 0x3F80; | ||
192 | } | ||
193 | |||
194 | void pns_reset_pred_state(ic_stream *ics, pred_state *state) | ||
195 | { | ||
196 | uint8_t sfb, g, b; | ||
197 | uint16_t i, offs, offs2; | ||
198 | |||
199 | /* prediction only for long blocks */ | ||
200 | if (ics->window_sequence == EIGHT_SHORT_SEQUENCE) | ||
201 | return; | ||
202 | |||
203 | for (g = 0; g < ics->num_window_groups; g++) | ||
204 | { | ||
205 | for (b = 0; b < ics->window_group_length[g]; b++) | ||
206 | { | ||
207 | for (sfb = 0; sfb < ics->max_sfb; sfb++) | ||
208 | { | ||
209 | if (is_noise(ics, g, sfb)) | ||
210 | { | ||
211 | offs = ics->swb_offset[sfb]; | ||
212 | offs2 = ics->swb_offset[sfb+1]; | ||
213 | |||
214 | for (i = offs; i < offs2; i++) | ||
215 | reset_pred_state(&state[i]); | ||
216 | } | ||
217 | } | ||
218 | } | ||
219 | } | ||
220 | } | ||
221 | |||
222 | void reset_all_predictors(pred_state *state, uint16_t frame_len) | ||
223 | { | ||
224 | uint16_t i; | ||
225 | |||
226 | for (i = 0; i < frame_len; i++) | ||
227 | reset_pred_state(&state[i]); | ||
228 | } | ||
229 | |||
230 | /* intra channel prediction */ | ||
231 | void ic_prediction(ic_stream *ics, real_t *spec, pred_state *state, | ||
232 | uint16_t frame_len, uint8_t sf_index) | ||
233 | { | ||
234 | uint8_t sfb; | ||
235 | uint16_t bin; | ||
236 | |||
237 | if (ics->window_sequence == EIGHT_SHORT_SEQUENCE) | ||
238 | { | ||
239 | reset_all_predictors(state, frame_len); | ||
240 | } else { | ||
241 | for (sfb = 0; sfb < max_pred_sfb(sf_index); sfb++) | ||
242 | { | ||
243 | uint16_t low = ics->swb_offset[sfb]; | ||
244 | uint16_t high = ics->swb_offset[sfb+1]; | ||
245 | |||
246 | for (bin = low; bin < high; bin++) | ||
247 | { | ||
248 | ic_predict(&state[bin], spec[bin], &spec[bin], | ||
249 | (ics->predictor_data_present && ics->pred.prediction_used[sfb])); | ||
250 | } | ||
251 | } | ||
252 | |||
253 | if (ics->predictor_data_present) | ||
254 | { | ||
255 | if (ics->pred.predictor_reset) | ||
256 | { | ||
257 | for (bin = ics->pred.predictor_reset_group_number - 1; | ||
258 | bin < frame_len; bin += 30) | ||
259 | { | ||
260 | reset_pred_state(&state[bin]); | ||
261 | } | ||
262 | } | ||
263 | } | ||
264 | } | ||
265 | } | ||
266 | |||
267 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/ic_predict.h b/lib/rbcodec/codecs/libfaad/ic_predict.h new file mode 100644 index 0000000000..1f2d2c657e --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/ic_predict.h | |||
@@ -0,0 +1,249 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifdef MAIN_DEC | ||
29 | |||
30 | #ifndef __IC_PREDICT_H__ | ||
31 | #define __IC_PREDICT_H__ | ||
32 | |||
33 | #ifdef __cplusplus | ||
34 | extern "C" { | ||
35 | #endif | ||
36 | |||
37 | #define ALPHA REAL_CONST(0.90625) | ||
38 | #define A REAL_CONST(0.953125) | ||
39 | |||
40 | |||
41 | void pns_reset_pred_state(ic_stream *ics, pred_state *state); | ||
42 | void reset_all_predictors(pred_state *state, uint16_t frame_len); | ||
43 | void ic_prediction(ic_stream *ics, real_t *spec, pred_state *state, | ||
44 | uint16_t frame_len, uint8_t sf_index); | ||
45 | #warning MEM_ALIGN_ATTR me! | ||
46 | static const real_t mnt_table[128] = { | ||
47 | COEF_CONST(0.9531250000), COEF_CONST(0.9453125000), | ||
48 | COEF_CONST(0.9375000000), COEF_CONST(0.9296875000), | ||
49 | COEF_CONST(0.9257812500), COEF_CONST(0.9179687500), | ||
50 | COEF_CONST(0.9101562500), COEF_CONST(0.9023437500), | ||
51 | COEF_CONST(0.8984375000), COEF_CONST(0.8906250000), | ||
52 | COEF_CONST(0.8828125000), COEF_CONST(0.8789062500), | ||
53 | COEF_CONST(0.8710937500), COEF_CONST(0.8671875000), | ||
54 | COEF_CONST(0.8593750000), COEF_CONST(0.8515625000), | ||
55 | COEF_CONST(0.8476562500), COEF_CONST(0.8398437500), | ||
56 | COEF_CONST(0.8359375000), COEF_CONST(0.8281250000), | ||
57 | COEF_CONST(0.8242187500), COEF_CONST(0.8203125000), | ||
58 | COEF_CONST(0.8125000000), COEF_CONST(0.8085937500), | ||
59 | COEF_CONST(0.8007812500), COEF_CONST(0.7968750000), | ||
60 | COEF_CONST(0.7929687500), COEF_CONST(0.7851562500), | ||
61 | COEF_CONST(0.7812500000), COEF_CONST(0.7773437500), | ||
62 | COEF_CONST(0.7734375000), COEF_CONST(0.7656250000), | ||
63 | COEF_CONST(0.7617187500), COEF_CONST(0.7578125000), | ||
64 | COEF_CONST(0.7539062500), COEF_CONST(0.7500000000), | ||
65 | COEF_CONST(0.7421875000), COEF_CONST(0.7382812500), | ||
66 | COEF_CONST(0.7343750000), COEF_CONST(0.7304687500), | ||
67 | COEF_CONST(0.7265625000), COEF_CONST(0.7226562500), | ||
68 | COEF_CONST(0.7187500000), COEF_CONST(0.7148437500), | ||
69 | COEF_CONST(0.7109375000), COEF_CONST(0.7070312500), | ||
70 | COEF_CONST(0.6992187500), COEF_CONST(0.6953125000), | ||
71 | COEF_CONST(0.6914062500), COEF_CONST(0.6875000000), | ||
72 | COEF_CONST(0.6835937500), COEF_CONST(0.6796875000), | ||
73 | COEF_CONST(0.6796875000), COEF_CONST(0.6757812500), | ||
74 | COEF_CONST(0.6718750000), COEF_CONST(0.6679687500), | ||
75 | COEF_CONST(0.6640625000), COEF_CONST(0.6601562500), | ||
76 | COEF_CONST(0.6562500000), COEF_CONST(0.6523437500), | ||
77 | COEF_CONST(0.6484375000), COEF_CONST(0.6445312500), | ||
78 | COEF_CONST(0.6406250000), COEF_CONST(0.6406250000), | ||
79 | COEF_CONST(0.6367187500), COEF_CONST(0.6328125000), | ||
80 | COEF_CONST(0.6289062500), COEF_CONST(0.6250000000), | ||
81 | COEF_CONST(0.6210937500), COEF_CONST(0.6210937500), | ||
82 | COEF_CONST(0.6171875000), COEF_CONST(0.6132812500), | ||
83 | COEF_CONST(0.6093750000), COEF_CONST(0.6054687500), | ||
84 | COEF_CONST(0.6054687500), COEF_CONST(0.6015625000), | ||
85 | COEF_CONST(0.5976562500), COEF_CONST(0.5937500000), | ||
86 | COEF_CONST(0.5937500000), COEF_CONST(0.5898437500), | ||
87 | COEF_CONST(0.5859375000), COEF_CONST(0.5820312500), | ||
88 | COEF_CONST(0.5820312500), COEF_CONST(0.5781250000), | ||
89 | COEF_CONST(0.5742187500), COEF_CONST(0.5742187500), | ||
90 | COEF_CONST(0.5703125000), COEF_CONST(0.5664062500), | ||
91 | COEF_CONST(0.5664062500), COEF_CONST(0.5625000000), | ||
92 | COEF_CONST(0.5585937500), COEF_CONST(0.5585937500), | ||
93 | COEF_CONST(0.5546875000), COEF_CONST(0.5507812500), | ||
94 | COEF_CONST(0.5507812500), COEF_CONST(0.5468750000), | ||
95 | COEF_CONST(0.5429687500), COEF_CONST(0.5429687500), | ||
96 | COEF_CONST(0.5390625000), COEF_CONST(0.5390625000), | ||
97 | COEF_CONST(0.5351562500), COEF_CONST(0.5312500000), | ||
98 | COEF_CONST(0.5312500000), COEF_CONST(0.5273437500), | ||
99 | COEF_CONST(0.5273437500), COEF_CONST(0.5234375000), | ||
100 | COEF_CONST(0.5195312500), COEF_CONST(0.5195312500), | ||
101 | COEF_CONST(0.5156250000), COEF_CONST(0.5156250000), | ||
102 | COEF_CONST(0.5117187500), COEF_CONST(0.5117187500), | ||
103 | COEF_CONST(0.5078125000), COEF_CONST(0.5078125000), | ||
104 | COEF_CONST(0.5039062500), COEF_CONST(0.5039062500), | ||
105 | COEF_CONST(0.5000000000), COEF_CONST(0.4980468750), | ||
106 | COEF_CONST(0.4960937500), COEF_CONST(0.4941406250), | ||
107 | COEF_CONST(0.4921875000), COEF_CONST(0.4902343750), | ||
108 | COEF_CONST(0.4882812500), COEF_CONST(0.4863281250), | ||
109 | COEF_CONST(0.4843750000), COEF_CONST(0.4824218750), | ||
110 | COEF_CONST(0.4804687500), COEF_CONST(0.4785156250) | ||
111 | }; | ||
112 | #warning MEM_ALIGN_ATTR me! | ||
113 | static const real_t exp_table[128] = { | ||
114 | COEF_CONST(0.50000000000000000000000000000000000000000000000000), | ||
115 | COEF_CONST(0.25000000000000000000000000000000000000000000000000), | ||
116 | COEF_CONST(0.12500000000000000000000000000000000000000000000000), | ||
117 | COEF_CONST(0.06250000000000000000000000000000000000000000000000), | ||
118 | COEF_CONST(0.03125000000000000000000000000000000000000000000000), | ||
119 | COEF_CONST(0.01562500000000000000000000000000000000000000000000), | ||
120 | COEF_CONST(0.00781250000000000000000000000000000000000000000000), | ||
121 | COEF_CONST(0.00390625000000000000000000000000000000000000000000), | ||
122 | COEF_CONST(0.00195312500000000000000000000000000000000000000000), | ||
123 | COEF_CONST(0.00097656250000000000000000000000000000000000000000), | ||
124 | COEF_CONST(0.00048828125000000000000000000000000000000000000000), | ||
125 | COEF_CONST(0.00024414062500000000000000000000000000000000000000), | ||
126 | COEF_CONST(0.00012207031250000000000000000000000000000000000000), | ||
127 | COEF_CONST(0.00006103515625000000000000000000000000000000000000), | ||
128 | COEF_CONST(0.00003051757812500000000000000000000000000000000000), | ||
129 | COEF_CONST(0.00001525878906250000000000000000000000000000000000), | ||
130 | COEF_CONST(0.00000762939453125000000000000000000000000000000000), | ||
131 | COEF_CONST(0.00000381469726562500000000000000000000000000000000), | ||
132 | COEF_CONST(0.00000190734863281250000000000000000000000000000000), | ||
133 | COEF_CONST(0.00000095367431640625000000000000000000000000000000), | ||
134 | COEF_CONST(0.00000047683715820312500000000000000000000000000000), | ||
135 | COEF_CONST(0.00000023841857910156250000000000000000000000000000), | ||
136 | COEF_CONST(0.00000011920928955078125000000000000000000000000000), | ||
137 | COEF_CONST(0.00000005960464477539062500000000000000000000000000), | ||
138 | COEF_CONST(0.00000002980232238769531300000000000000000000000000), | ||
139 | COEF_CONST(0.00000001490116119384765600000000000000000000000000), | ||
140 | COEF_CONST(0.00000000745058059692382810000000000000000000000000), | ||
141 | COEF_CONST(0.00000000372529029846191410000000000000000000000000), | ||
142 | COEF_CONST(0.00000000186264514923095700000000000000000000000000), | ||
143 | COEF_CONST(0.00000000093132257461547852000000000000000000000000), | ||
144 | COEF_CONST(0.00000000046566128730773926000000000000000000000000), | ||
145 | COEF_CONST(0.00000000023283064365386963000000000000000000000000), | ||
146 | COEF_CONST(0.00000000011641532182693481000000000000000000000000), | ||
147 | COEF_CONST(0.00000000005820766091346740700000000000000000000000), | ||
148 | COEF_CONST(0.00000000002910383045673370400000000000000000000000), | ||
149 | COEF_CONST(0.00000000001455191522836685200000000000000000000000), | ||
150 | COEF_CONST(0.00000000000727595761418342590000000000000000000000), | ||
151 | COEF_CONST(0.00000000000363797880709171300000000000000000000000), | ||
152 | COEF_CONST(0.00000000000181898940354585650000000000000000000000), | ||
153 | COEF_CONST(0.00000000000090949470177292824000000000000000000000), | ||
154 | COEF_CONST(0.00000000000045474735088646412000000000000000000000), | ||
155 | COEF_CONST(0.00000000000022737367544323206000000000000000000000), | ||
156 | COEF_CONST(0.00000000000011368683772161603000000000000000000000), | ||
157 | COEF_CONST(0.00000000000005684341886080801500000000000000000000), | ||
158 | COEF_CONST(0.00000000000002842170943040400700000000000000000000), | ||
159 | COEF_CONST(0.00000000000001421085471520200400000000000000000000), | ||
160 | COEF_CONST(0.00000000000000710542735760100190000000000000000000), | ||
161 | COEF_CONST(0.00000000000000355271367880050090000000000000000000), | ||
162 | COEF_CONST(0.00000000000000177635683940025050000000000000000000), | ||
163 | COEF_CONST(0.00000000000000088817841970012523000000000000000000), | ||
164 | COEF_CONST(0.00000000000000044408920985006262000000000000000000), | ||
165 | COEF_CONST(0.00000000000000022204460492503131000000000000000000), | ||
166 | COEF_CONST(0.00000000000000011102230246251565000000000000000000), | ||
167 | COEF_CONST(0.00000000000000005551115123125782700000000000000000), | ||
168 | COEF_CONST(0.00000000000000002775557561562891400000000000000000), | ||
169 | COEF_CONST(0.00000000000000001387778780781445700000000000000000), | ||
170 | COEF_CONST(0.00000000000000000693889390390722840000000000000000), | ||
171 | COEF_CONST(0.00000000000000000346944695195361420000000000000000), | ||
172 | COEF_CONST(0.00000000000000000173472347597680710000000000000000), | ||
173 | COEF_CONST(0.00000000000000000086736173798840355000000000000000), | ||
174 | COEF_CONST(0.00000000000000000043368086899420177000000000000000), | ||
175 | COEF_CONST(0.00000000000000000021684043449710089000000000000000), | ||
176 | COEF_CONST(0.00000000000000000010842021724855044000000000000000), | ||
177 | COEF_CONST(0.00000000000000000005421010862427522200000000000000), | ||
178 | COEF_CONST(0.00000000000000000002710505431213761100000000000000), | ||
179 | COEF_CONST(0.00000000000000000001355252715606880500000000000000), | ||
180 | COEF_CONST(0.00000000000000000000677626357803440270000000000000), | ||
181 | COEF_CONST(0.00000000000000000000338813178901720140000000000000), | ||
182 | COEF_CONST(0.00000000000000000000169406589450860070000000000000), | ||
183 | COEF_CONST(0.00000000000000000000084703294725430034000000000000), | ||
184 | COEF_CONST(0.00000000000000000000042351647362715017000000000000), | ||
185 | COEF_CONST(0.00000000000000000000021175823681357508000000000000), | ||
186 | COEF_CONST(0.00000000000000000000010587911840678754000000000000), | ||
187 | COEF_CONST(0.00000000000000000000005293955920339377100000000000), | ||
188 | COEF_CONST(0.00000000000000000000002646977960169688600000000000), | ||
189 | COEF_CONST(0.00000000000000000000001323488980084844300000000000), | ||
190 | COEF_CONST(0.00000000000000000000000661744490042422140000000000), | ||
191 | COEF_CONST(0.00000000000000000000000330872245021211070000000000), | ||
192 | COEF_CONST(0.00000000000000000000000165436122510605530000000000), | ||
193 | COEF_CONST(0.00000000000000000000000082718061255302767000000000), | ||
194 | COEF_CONST(0.00000000000000000000000041359030627651384000000000), | ||
195 | COEF_CONST(0.00000000000000000000000020679515313825692000000000), | ||
196 | COEF_CONST(0.00000000000000000000000010339757656912846000000000), | ||
197 | COEF_CONST(0.00000000000000000000000005169878828456423000000000), | ||
198 | COEF_CONST(0.00000000000000000000000002584939414228211500000000), | ||
199 | COEF_CONST(0.00000000000000000000000001292469707114105700000000), | ||
200 | COEF_CONST(0.00000000000000000000000000646234853557052870000000), | ||
201 | COEF_CONST(0.00000000000000000000000000323117426778526440000000), | ||
202 | COEF_CONST(0.00000000000000000000000000161558713389263220000000), | ||
203 | COEF_CONST(0.00000000000000000000000000080779356694631609000000), | ||
204 | COEF_CONST(0.00000000000000000000000000040389678347315804000000), | ||
205 | COEF_CONST(0.00000000000000000000000000020194839173657902000000), | ||
206 | COEF_CONST(0.00000000000000000000000000010097419586828951000000), | ||
207 | COEF_CONST(0.00000000000000000000000000005048709793414475600000), | ||
208 | COEF_CONST(0.00000000000000000000000000002524354896707237800000), | ||
209 | COEF_CONST(0.00000000000000000000000000001262177448353618900000), | ||
210 | COEF_CONST(0.00000000000000000000000000000631088724176809440000), | ||
211 | COEF_CONST(0.00000000000000000000000000000315544362088404720000), | ||
212 | COEF_CONST(0.00000000000000000000000000000157772181044202360000), | ||
213 | COEF_CONST(0.00000000000000000000000000000078886090522101181000), | ||
214 | COEF_CONST(0.00000000000000000000000000000039443045261050590000), | ||
215 | COEF_CONST(0.00000000000000000000000000000019721522630525295000), | ||
216 | COEF_CONST(0.00000000000000000000000000000009860761315262647600), | ||
217 | COEF_CONST(0.00000000000000000000000000000004930380657631323800), | ||
218 | COEF_CONST(0.00000000000000000000000000000002465190328815661900), | ||
219 | COEF_CONST(0.00000000000000000000000000000001232595164407830900), | ||
220 | COEF_CONST(0.00000000000000000000000000000000616297582203915470), | ||
221 | COEF_CONST(0.00000000000000000000000000000000308148791101957740), | ||
222 | COEF_CONST(0.00000000000000000000000000000000154074395550978870), | ||
223 | COEF_CONST(0.00000000000000000000000000000000077037197775489434), | ||
224 | COEF_CONST(0.00000000000000000000000000000000038518598887744717), | ||
225 | COEF_CONST(0.00000000000000000000000000000000019259299443872359), | ||
226 | COEF_CONST(0.00000000000000000000000000000000009629649721936179), | ||
227 | COEF_CONST(0.00000000000000000000000000000000004814824860968090), | ||
228 | COEF_CONST(0.00000000000000000000000000000000002407412430484045), | ||
229 | COEF_CONST(0.00000000000000000000000000000000001203706215242022), | ||
230 | COEF_CONST(0.00000000000000000000000000000000000601853107621011), | ||
231 | COEF_CONST(0.00000000000000000000000000000000000300926553810506), | ||
232 | COEF_CONST(0.00000000000000000000000000000000000150463276905253), | ||
233 | COEF_CONST(0.00000000000000000000000000000000000075231638452626), | ||
234 | COEF_CONST(0.00000000000000000000000000000000000037615819226313), | ||
235 | COEF_CONST(0.00000000000000000000000000000000000018807909613157), | ||
236 | COEF_CONST(0.00000000000000000000000000000000000009403954806578), | ||
237 | COEF_CONST(0.00000000000000000000000000000000000004701977403289), | ||
238 | COEF_CONST(0.00000000000000000000000000000000000002350988701645), | ||
239 | COEF_CONST(0.00000000000000000000000000000000000001175494350822), | ||
240 | COEF_CONST(0.0 /* 0000000000000000000000000000000000000587747175411 "floating point underflow" */), | ||
241 | COEF_CONST(0.0) | ||
242 | }; | ||
243 | |||
244 | #ifdef __cplusplus | ||
245 | } | ||
246 | #endif | ||
247 | #endif | ||
248 | |||
249 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/iq_table.h b/lib/rbcodec/codecs/libfaad/iq_table.h new file mode 100644 index 0000000000..eaf2fe4671 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/iq_table.h | |||
@@ -0,0 +1,16455 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef IQ_TABLE_H__ | ||
29 | #define IQ_TABLE_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | |||
36 | /* !!!DON'T CHANGE IQ_TABLE_SIZE!!! */ | ||
37 | |||
38 | |||
39 | #ifndef FIXED_POINT | ||
40 | |||
41 | #define IQ_TABLE_SIZE 8192 | ||
42 | |||
43 | #ifdef _MSC_VER | ||
44 | #pragma warning(disable:4305) | ||
45 | #pragma warning(disable:4244) | ||
46 | #endif | ||
47 | |||
48 | static const real_t iq_table[IQ_TABLE_SIZE] MEM_ALIGN_ATTR = | ||
49 | { | ||
50 | 0, | ||
51 | 1, | ||
52 | 2.5198420997897464, | ||
53 | 4.3267487109222245, | ||
54 | 6.3496042078727974, | ||
55 | 8.5498797333834844, | ||
56 | 10.902723556992836, | ||
57 | 13.390518279406722, | ||
58 | 15.999999999999998, | ||
59 | 18.720754407467133, | ||
60 | 21.544346900318832, | ||
61 | 24.463780996262464, | ||
62 | 27.47314182127996, | ||
63 | 30.567350940369842, | ||
64 | 33.741991698453212, | ||
65 | 36.993181114957046, | ||
66 | 40.317473596635935, | ||
67 | 43.711787041189993, | ||
68 | 47.173345095760126, | ||
69 | 50.699631325716943, | ||
70 | 54.288352331898118, | ||
71 | 57.937407704003519, | ||
72 | 61.6448652744185, | ||
73 | 65.408940536585988, | ||
74 | 69.227979374755591, | ||
75 | 73.100443455321638, | ||
76 | 77.024897778591622, | ||
77 | 80.999999999999986, | ||
78 | 85.024491212518527, | ||
79 | 89.097187944889555, | ||
80 | 93.216975178615741, | ||
81 | 97.382800224133163, | ||
82 | 101.59366732596474, | ||
83 | 105.84863288986224, | ||
84 | 110.14680124343441, | ||
85 | 114.4873208566006, | ||
86 | 118.86938096020653, | ||
87 | 123.29220851090024, | ||
88 | 127.75506545836058, | ||
89 | 132.25724627755247, | ||
90 | 136.79807573413572, | ||
91 | 141.37690685569191, | ||
92 | 145.99311908523086, | ||
93 | 150.6461165966291, | ||
94 | 155.33532675434674, | ||
95 | 160.06019870205279, | ||
96 | 164.82020206673349, | ||
97 | 169.61482576651861, | ||
98 | 174.44357691188537, | ||
99 | 179.30597979112557, | ||
100 | 184.20157493201927, | ||
101 | 189.12991823257562, | ||
102 | 194.09058015449685, | ||
103 | 199.08314497371677, | ||
104 | 204.1072100829694, | ||
105 | 209.16238534187647, | ||
106 | 214.24829247050752, | ||
107 | 219.36456448277784, | ||
108 | 224.51084515641216, | ||
109 | 229.6867885365223, | ||
110 | 234.89205847013176, | ||
111 | 240.12632816923249, | ||
112 | 245.38927980018505, | ||
113 | 250.68060409747261, | ||
114 | 255.99999999999991, | ||
115 | 261.34717430828869, | ||
116 | 266.72184136106449, | ||
117 | 272.12372272986045, | ||
118 | 277.55254693037961, | ||
119 | 283.0080491494619, | ||
120 | 288.48997098659891, | ||
121 | 293.99806020902247, | ||
122 | 299.53207051947408, | ||
123 | 305.0917613358298, | ||
124 | 310.67689758182206, | ||
125 | 316.28724948815585, | ||
126 | 321.92259240337177, | ||
127 | 327.58270661385535, | ||
128 | 333.26737717243742, | ||
129 | 338.97639373507025, | ||
130 | 344.70955040510125, | ||
131 | 350.46664558470013, | ||
132 | 356.24748183302603, | ||
133 | 362.05186573075139, | ||
134 | 367.87960775058258, | ||
135 | 373.73052213344511, | ||
136 | 379.60442677002078, | ||
137 | 385.50114308734607, | ||
138 | 391.42049594019937, | ||
139 | 397.36231350702371, | ||
140 | 403.32642719014467, | ||
141 | 409.31267152006262, | ||
142 | 415.32088406360799, | ||
143 | 421.35090533576471, | ||
144 | 427.40257871497619, | ||
145 | 433.4757503617617, | ||
146 | 439.5702691404793, | ||
147 | 445.68598654408271, | ||
148 | 451.82275662172759, | ||
149 | 457.98043590909128, | ||
150 | 464.15888336127773, | ||
151 | 470.35796028818726, | ||
152 | 476.5775302922363, | ||
153 | 482.81745920832043, | ||
154 | 489.07761504591741, | ||
155 | 495.35786793323581, | ||
156 | 501.65809006331688, | ||
157 | 507.97815564200368, | ||
158 | 514.31794083769648, | ||
159 | 520.67732373281672, | ||
160 | 527.05618427690604, | ||
161 | 533.45440424129174, | ||
162 | 539.87186717525128, | ||
163 | 546.30845836361505, | ||
164 | 552.76406478574609, | ||
165 | 559.23857507584194, | ||
166 | 565.73187948450413, | ||
167 | 572.24386984152341, | ||
168 | 578.77443951983378, | ||
169 | 585.32348340058843, | ||
170 | 591.89089783931263, | ||
171 | 598.47658063309257, | ||
172 | 605.08043098876044, | ||
173 | 611.70234949203643, | ||
174 | 618.3422380775919, | ||
175 | 624.99999999999977, | ||
176 | 631.67553980553748, | ||
177 | 638.36876330481164, | ||
178 | 645.07957754617485, | ||
179 | 651.80789078990415, | ||
180 | 658.55361248311499, | ||
181 | 665.31665323538357, | ||
182 | 672.09692479505225, | ||
183 | 678.8943400261943, | ||
184 | 685.70881288621433, | ||
185 | 692.540258404062, | ||
186 | 699.38859265903977, | ||
187 | 706.25373276018058, | ||
188 | 713.13559682617972, | ||
189 | 720.03410396586037, | ||
190 | 726.94917425915435, | ||
191 | 733.88072873858209, | ||
192 | 740.82868937121543, | ||
193 | 747.79297904110535, | ||
194 | 754.77352153216191, | ||
195 | 761.77024151147043, | ||
196 | 768.78306451302956, | ||
197 | 775.81191692189896, | ||
198 | 782.85672595874246, | ||
199 | 789.91741966475445, | ||
200 | 796.99392688695798, | ||
201 | 804.08617726386274, | ||
202 | 811.19410121147098, | ||
203 | 818.31762990962227, | ||
204 | 825.45669528866563, | ||
205 | 832.61123001644864, | ||
206 | 839.78116748561604, | ||
207 | 846.96644180120552, | ||
208 | 854.16698776853514, | ||
209 | 861.38274088137143, | ||
210 | 868.61363731036977, | ||
211 | 875.85961389178203, | ||
212 | 883.12060811641959, | ||
213 | 890.39655811886757, | ||
214 | 897.68740266694181, | ||
215 | 904.99308115138172, | ||
216 | 912.31353357577188, | ||
217 | 919.64870054668756, | ||
218 | 926.99852326405619, | ||
219 | 934.36294351172899, | ||
220 | 941.74190364825859, | ||
221 | 949.13534659787422, | ||
222 | 956.54321584165211, | ||
223 | 963.96545540887348, | ||
224 | 971.40200986856541, | ||
225 | 978.85282432122176, | ||
226 | 986.31784439069588, | ||
227 | 993.7970162162635, | ||
228 | 1001.29028644485, | ||
229 | 1008.797602223418, | ||
230 | 1016.3189111915103, | ||
231 | 1023.8541614739464, | ||
232 | 1031.4033016736653, | ||
233 | 1038.9662808647138, | ||
234 | 1046.5430485853758, | ||
235 | 1054.1335548314366, | ||
236 | 1061.7377500495838, | ||
237 | 1069.3555851309357, | ||
238 | 1076.9870114046978, | ||
239 | 1084.6319806319441, | ||
240 | 1092.2904449995174, | ||
241 | 1099.9623571140482, | ||
242 | 1107.6476699960892, | ||
243 | 1115.3463370743607, | ||
244 | 1123.058312180106, | ||
245 | 1130.7835495415541, | ||
246 | 1138.5220037784854, | ||
247 | 1146.273629896901, | ||
248 | 1154.0383832837879, | ||
249 | 1161.816219701986, | ||
250 | 1169.607095285146, | ||
251 | 1177.4109665327808, | ||
252 | 1185.2277903054078, | ||
253 | 1193.0575238197798, | ||
254 | 1200.9001246442001, | ||
255 | 1208.7555506939248, | ||
256 | 1216.6237602266442, | ||
257 | 1224.5047118380478, | ||
258 | 1232.3983644574657, | ||
259 | 1240.3046773435874, | ||
260 | 1248.2236100802568, | ||
261 | 1256.1551225723395, | ||
262 | 1264.099175041662, | ||
263 | 1272.0557280230228, | ||
264 | 1280.0247423602691, | ||
265 | 1288.0061792024444, | ||
266 | 1295.9999999999995, | ||
267 | 1304.006166501068, | ||
268 | 1312.0246407478062, | ||
269 | 1320.0553850727929, | ||
270 | 1328.0983620954903, | ||
271 | 1336.1535347187651, | ||
272 | 1344.2208661254647, | ||
273 | 1352.3003197750522, | ||
274 | 1360.3918594002962, | ||
275 | 1368.4954490040145, | ||
276 | 1376.6110528558709, | ||
277 | 1384.7386354892244, | ||
278 | 1392.8781616980295, | ||
279 | 1401.0295965337855, | ||
280 | 1409.1929053025353, | ||
281 | 1417.3680535619119, | ||
282 | 1425.5550071182327, | ||
283 | 1433.7537320236374, | ||
284 | 1441.9641945732744, | ||
285 | 1450.1863613025282, | ||
286 | 1458.4201989842913, | ||
287 | 1466.6656746262797, | ||
288 | 1474.9227554683875, | ||
289 | 1483.1914089800841, | ||
290 | 1491.4716028578516, | ||
291 | 1499.7633050226596, | ||
292 | 1508.0664836174794, | ||
293 | 1516.3811070048375, | ||
294 | 1524.7071437644029, | ||
295 | 1533.0445626906128, | ||
296 | 1541.3933327903342, | ||
297 | 1549.7534232805581, | ||
298 | 1558.1248035861302, | ||
299 | 1566.507443337515, | ||
300 | 1574.9013123685909, | ||
301 | 1583.3063807144795, | ||
302 | 1591.7226186094069, | ||
303 | 1600.1499964845941, | ||
304 | 1608.58848496618, | ||
305 | 1617.0380548731737, | ||
306 | 1625.4986772154357, | ||
307 | 1633.9703231916887, | ||
308 | 1642.4529641875577, | ||
309 | 1650.9465717736346, | ||
310 | 1659.4511177035752, | ||
311 | 1667.9665739122186, | ||
312 | 1676.4929125137353, | ||
313 | 1685.030105799801, | ||
314 | 1693.5781262377957, | ||
315 | 1702.136946469027, | ||
316 | 1710.7065393069795, | ||
317 | 1719.2868777355877, | ||
318 | 1727.8779349075323, | ||
319 | 1736.4796841425596, | ||
320 | 1745.092098925825, | ||
321 | 1753.7151529062583, | ||
322 | 1762.3488198949503, | ||
323 | 1770.9930738635628, | ||
324 | 1779.6478889427597, | ||
325 | 1788.3132394206564, | ||
326 | 1796.9890997412947, | ||
327 | 1805.6754445031333, | ||
328 | 1814.3722484575621, | ||
329 | 1823.0794865074322, | ||
330 | 1831.7971337056094, | ||
331 | 1840.5251652535437, | ||
332 | 1849.2635564998579, | ||
333 | 1858.0122829389563, | ||
334 | 1866.7713202096493, | ||
335 | 1875.5406440937966, | ||
336 | 1884.3202305149687, | ||
337 | 1893.110055537124, | ||
338 | 1901.9100953633042, | ||
339 | 1910.7203263343454, | ||
340 | 1919.5407249276057, | ||
341 | 1928.3712677557098, | ||
342 | 1937.2119315653083, | ||
343 | 1946.0626932358525, | ||
344 | 1954.923529778386, | ||
345 | 1963.79441833435, | ||
346 | 1972.6753361744036, | ||
347 | 1981.5662606972594, | ||
348 | 1990.467169428533, | ||
349 | 1999.3780400196069, | ||
350 | 2008.2988502465078, | ||
351 | 2017.2295780087982, | ||
352 | 2026.1702013284819, | ||
353 | 2035.1206983489212, | ||
354 | 2044.0810473337688, | ||
355 | 2053.0512266659125, | ||
356 | 2062.0312148464309, | ||
357 | 2071.0209904935646, | ||
358 | 2080.0205323416958, | ||
359 | 2089.0298192403443, | ||
360 | 2098.0488301531714, | ||
361 | 2107.0775441569995, | ||
362 | 2116.115940440839, | ||
363 | 2125.1639983049317, | ||
364 | 2134.2216971597995, | ||
365 | 2143.2890165253098, | ||
366 | 2152.3659360297484, | ||
367 | 2161.4524354089031, | ||
368 | 2170.5484945051617, | ||
369 | 2179.6540932666144, | ||
370 | 2188.7692117461711, | ||
371 | 2197.8938301006888, | ||
372 | 2207.0279285901042, | ||
373 | 2216.1714875765838, | ||
374 | 2225.324487523676, | ||
375 | 2234.4869089954782, | ||
376 | 2243.6587326558101, | ||
377 | 2252.8399392673982, | ||
378 | 2262.0305096910702, | ||
379 | 2271.2304248849537, | ||
380 | 2280.4396659036897, | ||
381 | 2289.6582138976523, | ||
382 | 2298.8860501121762, | ||
383 | 2308.1231558867926, | ||
384 | 2317.3695126544767, | ||
385 | 2326.6251019409005, | ||
386 | 2335.8899053636933, | ||
387 | 2345.1639046317132, | ||
388 | 2354.4470815443233, | ||
389 | 2363.7394179906792, | ||
390 | 2373.0408959490205, | ||
391 | 2382.3514974859731, | ||
392 | 2391.6712047558558, | ||
393 | 2400.9999999999991, | ||
394 | 2410.3378655460651, | ||
395 | 2419.6847838073813, | ||
396 | 2429.0407372822747, | ||
397 | 2438.4057085534191, | ||
398 | 2447.7796802871858, | ||
399 | 2457.1626352330004, | ||
400 | 2466.5545562227112, | ||
401 | 2475.9554261699564, | ||
402 | 2485.3652280695474, | ||
403 | 2494.7839449968492, | ||
404 | 2504.2115601071737, | ||
405 | 2513.6480566351788, | ||
406 | 2523.0934178942675, | ||
407 | 2532.5476272760025, | ||
408 | 2542.0106682495189, | ||
409 | 2551.482524360948, | ||
410 | 2560.9631792328441, | ||
411 | 2570.4526165636184, | ||
412 | 2579.9508201269791, | ||
413 | 2589.4577737713744, | ||
414 | 2598.9734614194458, | ||
415 | 2608.4978670674823, | ||
416 | 2618.0309747848837, | ||
417 | 2627.5727687136259, | ||
418 | 2637.1232330677353, | ||
419 | 2646.6823521327647, | ||
420 | 2656.2501102652768, | ||
421 | 2665.8264918923328, | ||
422 | 2675.4114815109842, | ||
423 | 2685.0050636877722, | ||
424 | 2694.6072230582295, | ||
425 | 2704.2179443263894, | ||
426 | 2713.8372122642972, | ||
427 | 2723.4650117115279, | ||
428 | 2733.1013275747096, | ||
429 | 2742.7461448270483, | ||
430 | 2752.3994485078601, | ||
431 | 2762.0612237221085, | ||
432 | 2771.7314556399419, | ||
433 | 2781.4101294962406, | ||
434 | 2791.0972305901655, | ||
435 | 2800.7927442847094, | ||
436 | 2810.4966560062589, | ||
437 | 2820.2089512441521, | ||
438 | 2829.9296155502466, | ||
439 | 2839.6586345384894, | ||
440 | 2849.3959938844923, | ||
441 | 2859.1416793251065, | ||
442 | 2868.8956766580086, | ||
443 | 2878.6579717412847, | ||
444 | 2888.4285504930212, | ||
445 | 2898.2073988908974, | ||
446 | 2907.9945029717837, | ||
447 | 2917.789848831344, | ||
448 | 2927.5934226236377, | ||
449 | 2937.4052105607311, | ||
450 | 2947.2251989123079, | ||
451 | 2957.0533740052865, | ||
452 | 2966.8897222234368, | ||
453 | 2976.734230007005, | ||
454 | 2986.5868838523397, | ||
455 | 2996.4476703115197, | ||
456 | 3006.3165759919889, | ||
457 | 3016.1935875561908, | ||
458 | 3026.0786917212095, | ||
459 | 3035.9718752584108, | ||
460 | 3045.8731249930906, | ||
461 | 3055.7824278041207, | ||
462 | 3065.6997706236039, | ||
463 | 3075.625140436528, | ||
464 | 3085.5585242804245, | ||
465 | 3095.4999092450298, | ||
466 | 3105.4492824719491, | ||
467 | 3115.4066311543256, | ||
468 | 3125.3719425365089, | ||
469 | 3135.3452039137287, | ||
470 | 3145.3264026317715, | ||
471 | 3155.3155260866592, | ||
472 | 3165.3125617243295, | ||
473 | 3175.3174970403229, | ||
474 | 3185.3303195794679, | ||
475 | 3195.35101693557, | ||
476 | 3205.3795767511078, | ||
477 | 3215.4159867169251, | ||
478 | 3225.460234571929, | ||
479 | 3235.5123081027928, | ||
480 | 3245.5721951436558, | ||
481 | 3255.63988357583, | ||
482 | 3265.7153613275095, | ||
483 | 3275.7986163734795, | ||
484 | 3285.8896367348289, | ||
485 | 3295.9884104786665, | ||
486 | 3306.0949257178395, | ||
487 | 3316.2091706106517, | ||
488 | 3326.331133360588, | ||
489 | 3336.4608022160378, | ||
490 | 3346.5981654700231, | ||
491 | 3356.7432114599264, | ||
492 | 3366.8959285672249, | ||
493 | 3377.0563052172211, | ||
494 | 3387.2243298787821, | ||
495 | 3397.3999910640764, | ||
496 | 3407.5832773283128, | ||
497 | 3417.7741772694862, | ||
498 | 3427.9726795281199, | ||
499 | 3438.1787727870123, | ||
500 | 3448.3924457709873, | ||
501 | 3458.6136872466445, | ||
502 | 3468.8424860221107, | ||
503 | 3479.0788309467976, | ||
504 | 3489.3227109111554, | ||
505 | 3499.5741148464344, | ||
506 | 3509.8330317244445, | ||
507 | 3520.0994505573185, | ||
508 | 3530.3733603972751, | ||
509 | 3540.6547503363886, | ||
510 | 3550.9436095063534, | ||
511 | 3561.239927078258, | ||
512 | 3571.5436922623535, | ||
513 | 3581.8548943078308, | ||
514 | 3592.1735225025936, | ||
515 | 3602.4995661730372, | ||
516 | 3612.8330146838275, | ||
517 | 3623.1738574376814, | ||
518 | 3633.5220838751502, | ||
519 | 3643.8776834744031, | ||
520 | 3654.2406457510142, | ||
521 | 3664.6109602577494, | ||
522 | 3674.9886165843564, | ||
523 | 3685.3736043573545, | ||
524 | 3695.7659132398294, | ||
525 | 3706.1655329312248, | ||
526 | 3716.5724531671399, | ||
527 | 3726.9866637191262, | ||
528 | 3737.4081543944876, | ||
529 | 3747.8369150360782, | ||
530 | 3758.2729355221072, | ||
531 | 3768.7162057659411, | ||
532 | 3779.1667157159077, | ||
533 | 3789.6244553551055, | ||
534 | 3800.0894147012082, | ||
535 | 3810.5615838062768, | ||
536 | 3821.0409527565694, | ||
537 | 3831.5275116723533, | ||
538 | 3842.0212507077194, | ||
539 | 3852.522160050396, | ||
540 | 3863.0302299215673, | ||
541 | 3873.5454505756893, | ||
542 | 3884.0678123003108, | ||
543 | 3894.5973054158922, | ||
544 | 3905.1339202756285, | ||
545 | 3915.6776472652732, | ||
546 | 3926.2284768029604, | ||
547 | 3936.7863993390338, | ||
548 | 3947.3514053558706, | ||
549 | 3957.9234853677135, | ||
550 | 3968.5026299204969, | ||
551 | 3979.0888295916798, | ||
552 | 3989.6820749900776, | ||
553 | 4000.2823567556948, | ||
554 | 4010.8896655595613, | ||
555 | 4021.5039921035655, | ||
556 | 4032.1253271202945, | ||
557 | 4042.7536613728694, | ||
558 | 4053.3889856547858, | ||
559 | 4064.0312907897551, | ||
560 | 4074.6805676315448, | ||
561 | 4085.3368070638221, | ||
562 | 4095.9999999999982, | ||
563 | 4106.6701373830711, | ||
564 | 4117.347210185475, | ||
565 | 4128.0312094089259, | ||
566 | 4138.722126084268, | ||
567 | 4149.4199512713267, | ||
568 | 4160.1246760587583, | ||
569 | 4170.8362915638982, | ||
570 | 4181.5547889326181, | ||
571 | 4192.2801593391769, | ||
572 | 4203.0123939860741, | ||
573 | 4213.7514841039101, | ||
574 | 4224.4974209512384, | ||
575 | 4235.2501958144258, | ||
576 | 4246.0098000075095, | ||
577 | 4256.7762248720574, | ||
578 | 4267.549461777031, | ||
579 | 4278.3295021186423, | ||
580 | 4289.1163373202198, | ||
581 | 4299.9099588320714, | ||
582 | 4310.7103581313495, | ||
583 | 4321.5175267219138, | ||
584 | 4332.3314561342004, | ||
585 | 4343.152137925088, | ||
586 | 4353.9795636777671, | ||
587 | 4364.8137250016052, | ||
588 | 4375.6546135320223, | ||
589 | 4386.5022209303588, | ||
590 | 4397.3565388837469, | ||
591 | 4408.2175591049827, | ||
592 | 4419.0852733324018, | ||
593 | 4429.9596733297531, | ||
594 | 4440.8407508860728, | ||
595 | 4451.7284978155603, | ||
596 | 4462.6229059574571, | ||
597 | 4473.5239671759227, | ||
598 | 4484.4316733599126, | ||
599 | 4495.3460164230582, | ||
600 | 4506.2669883035496, | ||
601 | 4517.1945809640119, | ||
602 | 4528.1287863913894, | ||
603 | 4539.069596596828, | ||
604 | 4550.0170036155587, | ||
605 | 4560.9709995067806, | ||
606 | 4571.931576353546, | ||
607 | 4582.898726262647, | ||
608 | 4593.8724413645004, | ||
609 | 4604.8527138130348, | ||
610 | 4615.8395357855816, | ||
611 | 4626.8328994827571, | ||
612 | 4637.8327971283588, | ||
613 | 4648.8392209692511, | ||
614 | 4659.8521632752563, | ||
615 | 4670.8716163390473, | ||
616 | 4681.8975724760394, | ||
617 | 4692.9300240242837, | ||
618 | 4703.9689633443595, | ||
619 | 4715.0143828192668, | ||
620 | 4726.0662748543255, | ||
621 | 4737.1246318770682, | ||
622 | 4748.1894463371373, | ||
623 | 4759.2607107061804, | ||
624 | 4770.3384174777493, | ||
625 | 4781.4225591671993, | ||
626 | 4792.5131283115852, | ||
627 | 4803.6101174695614, | ||
628 | 4814.7135192212854, | ||
629 | 4825.8233261683154, | ||
630 | 4836.9395309335096, | ||
631 | 4848.0621261609349, | ||
632 | 4859.1911045157631, | ||
633 | 4870.3264586841779, | ||
634 | 4881.4681813732768, | ||
635 | 4892.6162653109768, | ||
636 | 4903.7707032459193, | ||
637 | 4914.931487947375, | ||
638 | 4926.0986122051509, | ||
639 | 4937.2720688294967, | ||
640 | 4948.4518506510112, | ||
641 | 4959.637950520555, | ||
642 | 4970.8303613091521, | ||
643 | 4982.0290759079044, | ||
644 | 4993.2340872278974, | ||
645 | 5004.4453882001153, | ||
646 | 5015.6629717753467, | ||
647 | 5026.8868309241007, | ||
648 | 5038.1169586365131, | ||
649 | 5049.353347922266, | ||
650 | 5060.5959918104927, | ||
651 | 5071.8448833496996, | ||
652 | 5083.1000156076734, | ||
653 | 5094.3613816713996, | ||
654 | 5105.6289746469747, | ||
655 | 5116.9027876595246, | ||
656 | 5128.18281385312, | ||
657 | 5139.4690463906918, | ||
658 | 5150.7614784539473, | ||
659 | 5162.0601032432933, | ||
660 | 5173.3649139777472, | ||
661 | 5184.6759038948594, | ||
662 | 5195.9930662506322, | ||
663 | 5207.3163943194386, | ||
664 | 5218.6458813939435, | ||
665 | 5229.9815207850224, | ||
666 | 5241.3233058216847, | ||
667 | 5252.6712298509919, | ||
668 | 5264.025286237983, | ||
669 | 5275.3854683655954, | ||
670 | 5286.7517696345885, | ||
671 | 5298.1241834634639, | ||
672 | 5309.5027032883945, | ||
673 | 5320.887322563146, | ||
674 | 5332.2780347589978, | ||
675 | 5343.6748333646756, | ||
676 | 5355.0777118862716, | ||
677 | 5366.4866638471722, | ||
678 | 5377.901682787985, | ||
679 | 5389.3227622664635, | ||
680 | 5400.749895857437, | ||
681 | 5412.1830771527357, | ||
682 | 5423.622299761123, | ||
683 | 5435.067557308219, | ||
684 | 5446.5188434364318, | ||
685 | 5457.9761518048872, | ||
686 | 5469.4394760893592, | ||
687 | 5480.9088099821975, | ||
688 | 5492.3841471922606, | ||
689 | 5503.8654814448455, | ||
690 | 5515.3528064816201, | ||
691 | 5526.846116060552, | ||
692 | 5538.3454039558474, | ||
693 | 5549.8506639578736, | ||
694 | 5561.3618898731029, | ||
695 | 5572.8790755240361, | ||
696 | 5584.4022147491451, | ||
697 | 5595.9313014027975, | ||
698 | 5607.4663293552012, | ||
699 | 5619.0072924923297, | ||
700 | 5630.5541847158656, | ||
701 | 5642.1069999431284, | ||
702 | 5653.665732107017, | ||
703 | 5665.230375155943, | ||
704 | 5676.8009230537655, | ||
705 | 5688.3773697797333, | ||
706 | 5699.9597093284156, | ||
707 | 5711.5479357096474, | ||
708 | 5723.1420429484588, | ||
709 | 5734.7420250850209, | ||
710 | 5746.347876174581, | ||
711 | 5757.9595902874016, | ||
712 | 5769.5771615087006, | ||
713 | 5781.2005839385911, | ||
714 | 5792.8298516920213, | ||
715 | 5804.4649588987149, | ||
716 | 5816.1058997031105, | ||
717 | 5827.7526682643065, | ||
718 | 5839.4052587559972, | ||
719 | 5851.0636653664196, | ||
720 | 5862.7278822982908, | ||
721 | 5874.3979037687541, | ||
722 | 5886.0737240093204, | ||
723 | 5897.7553372658094, | ||
724 | 5909.4427377982956, | ||
725 | 5921.1359198810505, | ||
726 | 5932.8348778024874, | ||
727 | 5944.5396058651031, | ||
728 | 5956.2500983854261, | ||
729 | 5967.9663496939575, | ||
730 | 5979.6883541351208, | ||
731 | 5991.4161060672022, | ||
732 | 6003.1495998623004, | ||
733 | 6014.8888299062692, | ||
734 | 6026.6337905986684, | ||
735 | 6038.3844763527022, | ||
736 | 6050.1408815951781, | ||
737 | 6061.9030007664414, | ||
738 | 6073.6708283203316, | ||
739 | 6085.4443587241267, | ||
740 | 6097.2235864584891, | ||
741 | 6109.0085060174197, | ||
742 | 6120.7991119081998, | ||
743 | 6132.595398651345, | ||
744 | 6144.3973607805519, | ||
745 | 6156.2049928426459, | ||
746 | 6168.0182893975361, | ||
747 | 6179.8372450181578, | ||
748 | 6191.6618542904307, | ||
749 | 6203.4921118132024, | ||
750 | 6215.3280121982016, | ||
751 | 6227.1695500699925, | ||
752 | 6239.0167200659189, | ||
753 | 6250.8695168360628, | ||
754 | 6262.7279350431891, | ||
755 | 6274.5919693627056, | ||
756 | 6286.4616144826068, | ||
757 | 6298.3368651034316, | ||
758 | 6310.2177159382172, | ||
759 | 6322.1041617124456, | ||
760 | 6333.9961971640032, | ||
761 | 6345.8938170431311, | ||
762 | 6357.7970161123785, | ||
763 | 6369.7057891465583, | ||
764 | 6381.6201309327007, | ||
765 | 6393.5400362700075, | ||
766 | 6405.4654999698032, | ||
767 | 6417.3965168554978, | ||
768 | 6429.3330817625329, | ||
769 | 6441.2751895383453, | ||
770 | 6453.2228350423138, | ||
771 | 6465.176013145724, | ||
772 | 6477.134718731716, | ||
773 | 6489.0989466952469, | ||
774 | 6501.0686919430445, | ||
775 | 6513.0439493935628, | ||
776 | 6525.0247139769417, | ||
777 | 6537.010980634961, | ||
778 | 6549.002744321001, | ||
779 | 6560.9999999999973, | ||
780 | 6573.0027426483985, | ||
781 | 6585.0109672541284, | ||
782 | 6597.0246688165371, | ||
783 | 6609.0438423463656, | ||
784 | 6621.0684828657004, | ||
785 | 6633.0985854079354, | ||
786 | 6645.134145017727, | ||
787 | 6657.1751567509573, | ||
788 | 6669.2216156746908, | ||
789 | 6681.2735168671343, | ||
790 | 6693.3308554176001, | ||
791 | 6705.3936264264594, | ||
792 | 6717.461825005108, | ||
793 | 6729.535446275926, | ||
794 | 6741.6144853722335, | ||
795 | 6753.6989374382601, | ||
796 | 6765.7887976290967, | ||
797 | 6777.8840611106634, | ||
798 | 6789.9847230596661, | ||
799 | 6802.0907786635626, | ||
800 | 6814.2022231205201, | ||
801 | 6826.3190516393797, | ||
802 | 6838.4412594396181, | ||
803 | 6850.5688417513074, | ||
804 | 6862.701793815083, | ||
805 | 6874.840110882099, | ||
806 | 6886.9837882139991, | ||
807 | 6899.1328210828724, | ||
808 | 6911.2872047712199, | ||
809 | 6923.4469345719199, | ||
810 | 6935.6120057881863, | ||
811 | 6947.7824137335365, | ||
812 | 6959.9581537317536, | ||
813 | 6972.1392211168532, | ||
814 | 6984.3256112330409, | ||
815 | 6996.5173194346862, | ||
816 | 7008.7143410862773, | ||
817 | 7020.9166715623942, | ||
818 | 7033.1243062476678, | ||
819 | 7045.3372405367481, | ||
820 | 7057.5554698342685, | ||
821 | 7069.7789895548103, | ||
822 | 7082.0077951228714, | ||
823 | 7094.2418819728273, | ||
824 | 7106.4812455489018, | ||
825 | 7118.7258813051285, | ||
826 | 7130.9757847053224, | ||
827 | 7143.2309512230404, | ||
828 | 7155.4913763415516, | ||
829 | 7167.7570555538041, | ||
830 | 7180.0279843623894, | ||
831 | 7192.3041582795131, | ||
832 | 7204.5855728269571, | ||
833 | 7216.8722235360519, | ||
834 | 7229.1641059476406, | ||
835 | 7241.4612156120484, | ||
836 | 7253.7635480890503, | ||
837 | 7266.0710989478375, | ||
838 | 7278.3838637669869, | ||
839 | 7290.7018381344296, | ||
840 | 7303.0250176474174, | ||
841 | 7315.3533979124932, | ||
842 | 7327.6869745454596, | ||
843 | 7340.0257431713462, | ||
844 | 7352.3696994243801, | ||
845 | 7364.7188389479543, | ||
846 | 7377.0731573945968, | ||
847 | 7389.4326504259407, | ||
848 | 7401.7973137126937, | ||
849 | 7414.1671429346061, | ||
850 | 7426.5421337804428, | ||
851 | 7438.922281947951, | ||
852 | 7451.3075831438346, | ||
853 | 7463.6980330837177, | ||
854 | 7476.0936274921214, | ||
855 | 7488.4943621024304, | ||
856 | 7500.9002326568652, | ||
857 | 7513.3112349064522, | ||
858 | 7525.7273646109943, | ||
859 | 7538.1486175390446, | ||
860 | 7550.5749894678729, | ||
861 | 7563.0064761834419, | ||
862 | 7575.4430734803736, | ||
863 | 7587.8847771619248, | ||
864 | 7600.3315830399597, | ||
865 | 7612.7834869349153, | ||
866 | 7625.24048467578, | ||
867 | 7637.7025721000637, | ||
868 | 7650.1697450537677, | ||
869 | 7662.6419993913596, | ||
870 | 7675.1193309757446, | ||
871 | 7687.6017356782404, | ||
872 | 7700.0892093785433, | ||
873 | 7712.5817479647112, | ||
874 | 7725.079347333125, | ||
875 | 7737.5820033884729, | ||
876 | 7750.0897120437139, | ||
877 | 7762.6024692200581, | ||
878 | 7775.1202708469355, | ||
879 | 7787.6431128619733, | ||
880 | 7800.1709912109645, | ||
881 | 7812.7039018478481, | ||
882 | 7825.2418407346768, | ||
883 | 7837.7848038415968, | ||
884 | 7850.3327871468155, | ||
885 | 7862.8857866365806, | ||
886 | 7875.4437983051539, | ||
887 | 7888.006818154784, | ||
888 | 7900.5748421956796, | ||
889 | 7913.1478664459901, | ||
890 | 7925.725886931772, | ||
891 | 7938.3088996869719, | ||
892 | 7950.8969007533951, | ||
893 | 7963.4898861806851, | ||
894 | 7976.0878520262959, | ||
895 | 7988.6907943554688, | ||
896 | 8001.2987092412086, | ||
897 | 8013.911592764257, | ||
898 | 8026.5294410130691, | ||
899 | 8039.1522500837891, | ||
900 | 8051.7800160802271, | ||
901 | 8064.412735113835, | ||
902 | 8077.0504033036796, | ||
903 | 8089.6930167764222, | ||
904 | 8102.3405716662946, | ||
905 | 8114.9930641150731, | ||
906 | 8127.6504902720571, | ||
907 | 8140.3128462940449, | ||
908 | 8152.9801283453098, | ||
909 | 8165.6523325975786, | ||
910 | 8178.3294552300049, | ||
911 | 8191.0114924291529, | ||
912 | 8203.6984403889655, | ||
913 | 8216.3902953107463, | ||
914 | 8229.0870534031419, | ||
915 | 8241.7887108821069, | ||
916 | 8254.4952639708936, | ||
917 | 8267.2067089000211, | ||
918 | 8279.9230419072574, | ||
919 | 8292.6442592375952, | ||
920 | 8305.3703571432306, | ||
921 | 8318.101331883543, | ||
922 | 8330.8371797250657, | ||
923 | 8343.577896941475, | ||
924 | 8356.3234798135582, | ||
925 | 8369.0739246291978, | ||
926 | 8381.8292276833508, | ||
927 | 8394.5893852780209, | ||
928 | 8407.3543937222421, | ||
929 | 8420.1242493320569, | ||
930 | 8432.8989484304948, | ||
931 | 8445.6784873475499, | ||
932 | 8458.4628624201578, | ||
933 | 8471.2520699921806, | ||
934 | 8484.0461064143838, | ||
935 | 8496.8449680444082, | ||
936 | 8509.6486512467636, | ||
937 | 8522.4571523927953, | ||
938 | 8535.270467860666, | ||
939 | 8548.0885940353437, | ||
940 | 8560.9115273085663, | ||
941 | 8573.7392640788403, | ||
942 | 8586.5718007514006, | ||
943 | 8599.4091337382069, | ||
944 | 8612.2512594579148, | ||
945 | 8625.0981743358552, | ||
946 | 8637.9498748040205, | ||
947 | 8650.8063573010386, | ||
948 | 8663.6676182721567, | ||
949 | 8676.533654169225, | ||
950 | 8689.4044614506638, | ||
951 | 8702.2800365814601, | ||
952 | 8715.1603760331418, | ||
953 | 8728.0454762837508, | ||
954 | 8740.9353338178389, | ||
955 | 8753.8299451264356, | ||
956 | 8766.7293067070332, | ||
957 | 8779.6334150635721, | ||
958 | 8792.5422667064158, | ||
959 | 8805.4558581523324, | ||
960 | 8818.3741859244819, | ||
961 | 8831.2972465523908, | ||
962 | 8844.2250365719356, | ||
963 | 8857.1575525253265, | ||
964 | 8870.0947909610859, | ||
965 | 8883.0367484340295, | ||
966 | 8895.9834215052524, | ||
967 | 8908.934806742107, | ||
968 | 8921.8909007181846, | ||
969 | 8934.8517000132997, | ||
970 | 8947.817201213471, | ||
971 | 8960.7874009109, | ||
972 | 8973.7622957039603, | ||
973 | 8986.7418821971733, | ||
974 | 8999.7261570011924, | ||
975 | 9012.7151167327884, | ||
976 | 9025.7087580148236, | ||
977 | 9038.7070774762469, | ||
978 | 9051.7100717520643, | ||
979 | 9064.7177374833282, | ||
980 | 9077.7300713171153, | ||
981 | 9090.7470699065179, | ||
982 | 9103.7687299106146, | ||
983 | 9116.7950479944648, | ||
984 | 9129.8260208290812, | ||
985 | 9142.8616450914233, | ||
986 | 9155.9019174643727, | ||
987 | 9168.9468346367157, | ||
988 | 9181.9963933031358, | ||
989 | 9195.0505901641845, | ||
990 | 9208.1094219262741, | ||
991 | 9221.1728853016557, | ||
992 | 9234.240977008405, | ||
993 | 9247.3136937704076, | ||
994 | 9260.3910323173386, | ||
995 | 9273.472989384647, | ||
996 | 9286.5595617135423, | ||
997 | 9299.6507460509747, | ||
998 | 9312.7465391496207, | ||
999 | 9325.8469377678684, | ||
1000 | 9338.9519386698012, | ||
1001 | 9352.0615386251757, | ||
1002 | 9365.1757344094131, | ||
1003 | 9378.2945228035842, | ||
1004 | 9391.4179005943843, | ||
1005 | 9404.5458645741273, | ||
1006 | 9417.6784115407263, | ||
1007 | 9430.8155382976747, | ||
1008 | 9443.9572416540359, | ||
1009 | 9457.1035184244265, | ||
1010 | 9470.2543654290002, | ||
1011 | 9483.4097794934296, | ||
1012 | 9496.5697574488931, | ||
1013 | 9509.7342961320664, | ||
1014 | 9522.9033923850911, | ||
1015 | 9536.0770430555804, | ||
1016 | 9549.2552449965824, | ||
1017 | 9562.4379950665825, | ||
1018 | 9575.6252901294793, | ||
1019 | 9588.8171270545736, | ||
1020 | 9602.0135027165488, | ||
1021 | 9615.2144139954635, | ||
1022 | 9628.4198577767274, | ||
1023 | 9641.629830951093, | ||
1024 | 9654.844330414644, | ||
1025 | 9668.0633530687719, | ||
1026 | 9681.286895820167, | ||
1027 | 9694.5149555808002, | ||
1028 | 9707.7475292679192, | ||
1029 | 9720.9846138040157, | ||
1030 | 9734.2262061168276, | ||
1031 | 9747.4723031393187, | ||
1032 | 9760.7229018096641, | ||
1033 | 9773.9779990712323, | ||
1034 | 9787.2375918725811, | ||
1035 | 9800.5016771674327, | ||
1036 | 9813.7702519146696, | ||
1037 | 9827.0433130783094, | ||
1038 | 9840.3208576275028, | ||
1039 | 9853.602882536512, | ||
1040 | 9866.8893847846994, | ||
1041 | 9880.1803613565116, | ||
1042 | 9893.4758092414686, | ||
1043 | 9906.7757254341523, | ||
1044 | 9920.0801069341851, | ||
1045 | 9933.3889507462245, | ||
1046 | 9946.7022538799429, | ||
1047 | 9960.0200133500221, | ||
1048 | 9973.3422261761298, | ||
1049 | 9986.6688893829159, | ||
1050 | 9999.9999999999945, | ||
1051 | 10013.335555061929, | ||
1052 | 10026.675551608221, | ||
1053 | 10040.019986683301, | ||
1054 | 10053.368857336509, | ||
1055 | 10066.722160622081, | ||
1056 | 10080.079893599144, | ||
1057 | 10093.442053331697, | ||
1058 | 10106.808636888598, | ||
1059 | 10120.179641343551, | ||
1060 | 10133.555063775095, | ||
1061 | 10146.934901266595, | ||
1062 | 10160.31915090622, | ||
1063 | 10173.707809786936, | ||
1064 | 10187.100875006496, | ||
1065 | 10200.498343667417, | ||
1066 | 10213.900212876984, | ||
1067 | 10227.306479747222, | ||
1068 | 10240.717141394889, | ||
1069 | 10254.132194941467, | ||
1070 | 10267.551637513146, | ||
1071 | 10280.975466240814, | ||
1072 | 10294.40367826004, | ||
1073 | 10307.836270711066, | ||
1074 | 10321.273240738796, | ||
1075 | 10334.71458549278, | ||
1076 | 10348.160302127204, | ||
1077 | 10361.610387800878, | ||
1078 | 10375.064839677221, | ||
1079 | 10388.523654924258, | ||
1080 | 10401.986830714593, | ||
1081 | 10415.454364225412, | ||
1082 | 10428.926252638465, | ||
1083 | 10442.402493140049, | ||
1084 | 10455.883082921007, | ||
1085 | 10469.368019176709, | ||
1086 | 10482.85729910704, | ||
1087 | 10496.350919916393, | ||
1088 | 10509.848878813653, | ||
1089 | 10523.351173012188, | ||
1090 | 10536.857799729838, | ||
1091 | 10550.3687561889, | ||
1092 | 10563.884039616123, | ||
1093 | 10577.403647242685, | ||
1094 | 10590.927576304197, | ||
1095 | 10604.455824040679, | ||
1096 | 10617.988387696556, | ||
1097 | 10631.525264520642, | ||
1098 | 10645.066451766135, | ||
1099 | 10658.611946690598, | ||
1100 | 10672.161746555956, | ||
1101 | 10685.715848628475, | ||
1102 | 10699.274250178762, | ||
1103 | 10712.836948481747, | ||
1104 | 10726.403940816675, | ||
1105 | 10739.975224467091, | ||
1106 | 10753.550796720834, | ||
1107 | 10767.130654870027, | ||
1108 | 10780.714796211059, | ||
1109 | 10794.303218044579, | ||
1110 | 10807.895917675487, | ||
1111 | 10821.492892412922, | ||
1112 | 10835.094139570248, | ||
1113 | 10848.699656465047, | ||
1114 | 10862.309440419107, | ||
1115 | 10875.923488758415, | ||
1116 | 10889.541798813138, | ||
1117 | 10903.16436791762, | ||
1118 | 10916.791193410372, | ||
1119 | 10930.422272634056, | ||
1120 | 10944.05760293548, | ||
1121 | 10957.697181665582, | ||
1122 | 10971.341006179427, | ||
1123 | 10984.98907383619, | ||
1124 | 10998.641381999149, | ||
1125 | 11012.297928035676, | ||
1126 | 11025.958709317223, | ||
1127 | 11039.623723219316, | ||
1128 | 11053.292967121541, | ||
1129 | 11066.966438407539, | ||
1130 | 11080.64413446499, | ||
1131 | 11094.326052685608, | ||
1132 | 11108.012190465128, | ||
1133 | 11121.702545203296, | ||
1134 | 11135.397114303863, | ||
1135 | 11149.095895174571, | ||
1136 | 11162.798885227143, | ||
1137 | 11176.506081877278, | ||
1138 | 11190.217482544635, | ||
1139 | 11203.933084652828, | ||
1140 | 11217.652885629415, | ||
1141 | 11231.376882905886, | ||
1142 | 11245.105073917659, | ||
1143 | 11258.837456104062, | ||
1144 | 11272.574026908333, | ||
1145 | 11286.314783777601, | ||
1146 | 11300.059724162888, | ||
1147 | 11313.808845519083, | ||
1148 | 11327.562145304952, | ||
1149 | 11341.319620983111, | ||
1150 | 11355.081270020033, | ||
1151 | 11368.847089886023, | ||
1152 | 11382.617078055218, | ||
1153 | 11396.391232005579, | ||
1154 | 11410.169549218874, | ||
1155 | 11423.952027180676, | ||
1156 | 11437.738663380349, | ||
1157 | 11451.529455311042, | ||
1158 | 11465.324400469679, | ||
1159 | 11479.123496356951, | ||
1160 | 11492.926740477304, | ||
1161 | 11506.734130338931, | ||
1162 | 11520.545663453764, | ||
1163 | 11534.361337337466, | ||
1164 | 11548.181149509423, | ||
1165 | 11562.005097492724, | ||
1166 | 11575.83317881417, | ||
1167 | 11589.665391004253, | ||
1168 | 11603.501731597149, | ||
1169 | 11617.342198130715, | ||
1170 | 11631.186788146468, | ||
1171 | 11645.035499189589, | ||
1172 | 11658.888328808911, | ||
1173 | 11672.745274556904, | ||
1174 | 11686.606333989675, | ||
1175 | 11700.471504666955, | ||
1176 | 11714.340784152086, | ||
1177 | 11728.214170012021, | ||
1178 | 11742.091659817312, | ||
1179 | 11755.973251142101, | ||
1180 | 11769.858941564111, | ||
1181 | 11783.748728664636, | ||
1182 | 11797.642610028539, | ||
1183 | 11811.540583244237, | ||
1184 | 11825.442645903697, | ||
1185 | 11839.34879560242, | ||
1186 | 11853.259029939445, | ||
1187 | 11867.173346517333, | ||
1188 | 11881.091742942155, | ||
1189 | 11895.014216823492, | ||
1190 | 11908.940765774427, | ||
1191 | 11922.871387411526, | ||
1192 | 11936.806079354839, | ||
1193 | 11950.744839227897, | ||
1194 | 11964.687664657684, | ||
1195 | 11978.634553274653, | ||
1196 | 11992.585502712702, | ||
1197 | 12006.540510609168, | ||
1198 | 12020.499574604828, | ||
1199 | 12034.462692343877, | ||
1200 | 12048.429861473938, | ||
1201 | 12062.401079646032, | ||
1202 | 12076.376344514589, | ||
1203 | 12090.355653737433, | ||
1204 | 12104.339004975769, | ||
1205 | 12118.326395894188, | ||
1206 | 12132.317824160644, | ||
1207 | 12146.313287446457, | ||
1208 | 12160.312783426305, | ||
1209 | 12174.316309778205, | ||
1210 | 12188.323864183525, | ||
1211 | 12202.335444326955, | ||
1212 | 12216.351047896511, | ||
1213 | 12230.370672583531, | ||
1214 | 12244.394316082657, | ||
1215 | 12258.421976091831, | ||
1216 | 12272.453650312296, | ||
1217 | 12286.489336448574, | ||
1218 | 12300.529032208471, | ||
1219 | 12314.572735303058, | ||
1220 | 12328.620443446678, | ||
1221 | 12342.672154356922, | ||
1222 | 12356.727865754638, | ||
1223 | 12370.787575363909, | ||
1224 | 12384.851280912055, | ||
1225 | 12398.918980129623, | ||
1226 | 12412.990670750381, | ||
1227 | 12427.066350511306, | ||
1228 | 12441.146017152583, | ||
1229 | 12455.229668417589, | ||
1230 | 12469.317302052901, | ||
1231 | 12483.40891580827, | ||
1232 | 12497.50450743663, | ||
1233 | 12511.604074694078, | ||
1234 | 12525.707615339878, | ||
1235 | 12539.815127136444, | ||
1236 | 12553.926607849342, | ||
1237 | 12568.042055247275, | ||
1238 | 12582.161467102082, | ||
1239 | 12596.284841188726, | ||
1240 | 12610.41217528529, | ||
1241 | 12624.543467172971, | ||
1242 | 12638.678714636069, | ||
1243 | 12652.817915461985, | ||
1244 | 12666.961067441209, | ||
1245 | 12681.108168367316, | ||
1246 | 12695.259216036962, | ||
1247 | 12709.414208249869, | ||
1248 | 12723.573142808827, | ||
1249 | 12737.736017519681, | ||
1250 | 12751.902830191326, | ||
1251 | 12766.073578635704, | ||
1252 | 12780.248260667788, | ||
1253 | 12794.426874105588, | ||
1254 | 12808.609416770132, | ||
1255 | 12822.795886485468, | ||
1256 | 12836.986281078653, | ||
1257 | 12851.180598379744, | ||
1258 | 12865.378836221802, | ||
1259 | 12879.580992440871, | ||
1260 | 12893.787064875984, | ||
1261 | 12907.997051369144, | ||
1262 | 12922.210949765335, | ||
1263 | 12936.428757912496, | ||
1264 | 12950.650473661524, | ||
1265 | 12964.876094866273, | ||
1266 | 12979.105619383534, | ||
1267 | 12993.339045073039, | ||
1268 | 13007.576369797454, | ||
1269 | 13021.817591422368, | ||
1270 | 13036.062707816285, | ||
1271 | 13050.311716850629, | ||
1272 | 13064.564616399723, | ||
1273 | 13078.821404340792, | ||
1274 | 13093.082078553954, | ||
1275 | 13107.346636922217, | ||
1276 | 13121.615077331464, | ||
1277 | 13135.887397670458, | ||
1278 | 13150.163595830827, | ||
1279 | 13164.44366970706, | ||
1280 | 13178.727617196502, | ||
1281 | 13193.015436199352, | ||
1282 | 13207.307124618648, | ||
1283 | 13221.602680360265, | ||
1284 | 13235.902101332911, | ||
1285 | 13250.205385448118, | ||
1286 | 13264.512530620239, | ||
1287 | 13278.823534766434, | ||
1288 | 13293.138395806676, | ||
1289 | 13307.457111663734, | ||
1290 | 13321.779680263176, | ||
1291 | 13336.106099533356, | ||
1292 | 13350.436367405409, | ||
1293 | 13364.77048181325, | ||
1294 | 13379.108440693562, | ||
1295 | 13393.450241985796, | ||
1296 | 13407.795883632158, | ||
1297 | 13422.145363577607, | ||
1298 | 13436.498679769853, | ||
1299 | 13450.855830159346, | ||
1300 | 13465.216812699266, | ||
1301 | 13479.581625345529, | ||
1302 | 13493.950266056772, | ||
1303 | 13508.32273279435, | ||
1304 | 13522.699023522329, | ||
1305 | 13537.079136207483, | ||
1306 | 13551.463068819286, | ||
1307 | 13565.850819329906, | ||
1308 | 13580.2423857142, | ||
1309 | 13594.63776594971, | ||
1310 | 13609.036958016657, | ||
1311 | 13623.439959897927, | ||
1312 | 13637.846769579081, | ||
1313 | 13652.257385048335, | ||
1314 | 13666.67180429656, | ||
1315 | 13681.090025317284, | ||
1316 | 13695.512046106669, | ||
1317 | 13709.937864663521, | ||
1318 | 13724.367478989278, | ||
1319 | 13738.800887088004, | ||
1320 | 13753.238086966385, | ||
1321 | 13767.679076633727, | ||
1322 | 13782.123854101939, | ||
1323 | 13796.572417385545, | ||
1324 | 13811.024764501659, | ||
1325 | 13825.480893469998, | ||
1326 | 13839.94080231286, | ||
1327 | 13854.404489055134, | ||
1328 | 13868.871951724283, | ||
1329 | 13883.34318835034, | ||
1330 | 13897.818196965914, | ||
1331 | 13912.296975606168, | ||
1332 | 13926.779522308825, | ||
1333 | 13941.26583511416, | ||
1334 | 13955.755912064991, | ||
1335 | 13970.249751206682, | ||
1336 | 13984.747350587126, | ||
1337 | 13999.248708256751, | ||
1338 | 14013.753822268511, | ||
1339 | 14028.262690677873, | ||
1340 | 14042.775311542828, | ||
1341 | 14057.291682923867, | ||
1342 | 14071.811802883994, | ||
1343 | 14086.335669488704, | ||
1344 | 14100.863280805994, | ||
1345 | 14115.394634906341, | ||
1346 | 14129.92972986271, | ||
1347 | 14144.468563750548, | ||
1348 | 14159.01113464777, | ||
1349 | 14173.55744063476, | ||
1350 | 14188.107479794369, | ||
1351 | 14202.661250211901, | ||
1352 | 14217.218749975118, | ||
1353 | 14231.779977174227, | ||
1354 | 14246.344929901879, | ||
1355 | 14260.913606253163, | ||
1356 | 14275.486004325601, | ||
1357 | 14290.062122219146, | ||
1358 | 14304.641958036171, | ||
1359 | 14319.225509881464, | ||
1360 | 14333.812775862236, | ||
1361 | 14348.403754088098, | ||
1362 | 14362.998442671067, | ||
1363 | 14377.59683972556, | ||
1364 | 14392.198943368388, | ||
1365 | 14406.804751718748, | ||
1366 | 14421.414262898223, | ||
1367 | 14436.027475030774, | ||
1368 | 14450.64438624274, | ||
1369 | 14465.264994662828, | ||
1370 | 14479.889298422106, | ||
1371 | 14494.517295654005, | ||
1372 | 14509.148984494313, | ||
1373 | 14523.784363081166, | ||
1374 | 14538.423429555049, | ||
1375 | 14553.066182058781, | ||
1376 | 14567.712618737527, | ||
1377 | 14582.362737738777, | ||
1378 | 14597.016537212348, | ||
1379 | 14611.674015310382, | ||
1380 | 14626.33517018734, | ||
1381 | 14640.999999999993, | ||
1382 | 14655.668502907418, | ||
1383 | 14670.340677071003, | ||
1384 | 14685.016520654426, | ||
1385 | 14699.696031823671, | ||
1386 | 14714.379208746999, | ||
1387 | 14729.066049594967, | ||
1388 | 14743.756552540408, | ||
1389 | 14758.45071575843, | ||
1390 | 14773.148537426418, | ||
1391 | 14787.850015724018, | ||
1392 | 14802.555148833142, | ||
1393 | 14817.263934937961, | ||
1394 | 14831.976372224897, | ||
1395 | 14846.692458882624, | ||
1396 | 14861.41219310206, | ||
1397 | 14876.135573076363, | ||
1398 | 14890.862597000923, | ||
1399 | 14905.593263073371, | ||
1400 | 14920.327569493558, | ||
1401 | 14935.065514463557, | ||
1402 | 14949.807096187662, | ||
1403 | 14964.552312872382, | ||
1404 | 14979.301162726431, | ||
1405 | 14994.053643960735, | ||
1406 | 15008.809754788414, | ||
1407 | 15023.569493424788, | ||
1408 | 15038.332858087369, | ||
1409 | 15053.099846995858, | ||
1410 | 15067.870458372134, | ||
1411 | 15082.644690440264, | ||
1412 | 15097.422541426484, | ||
1413 | 15112.204009559202, | ||
1414 | 15126.989093068994, | ||
1415 | 15141.777790188597, | ||
1416 | 15156.570099152905, | ||
1417 | 15171.366018198967, | ||
1418 | 15186.165545565986, | ||
1419 | 15200.968679495301, | ||
1420 | 15215.775418230402, | ||
1421 | 15230.585760016909, | ||
1422 | 15245.399703102579, | ||
1423 | 15260.217245737298, | ||
1424 | 15275.038386173073, | ||
1425 | 15289.863122664035, | ||
1426 | 15304.691453466432, | ||
1427 | 15319.523376838621, | ||
1428 | 15334.358891041069, | ||
1429 | 15349.197994336346, | ||
1430 | 15364.040684989128, | ||
1431 | 15378.886961266177, | ||
1432 | 15393.736821436356, | ||
1433 | 15408.590263770609, | ||
1434 | 15423.447286541972, | ||
1435 | 15438.307888025554, | ||
1436 | 15453.172066498542, | ||
1437 | 15468.039820240196, | ||
1438 | 15482.91114753184, | ||
1439 | 15497.786046656869, | ||
1440 | 15512.664515900733, | ||
1441 | 15527.546553550939, | ||
1442 | 15542.432157897045, | ||
1443 | 15557.32132723066, | ||
1444 | 15572.214059845435, | ||
1445 | 15587.110354037064, | ||
1446 | 15602.010208103273, | ||
1447 | 15616.913620343823, | ||
1448 | 15631.820589060506, | ||
1449 | 15646.731112557136, | ||
1450 | 15661.645189139546, | ||
1451 | 15676.562817115593, | ||
1452 | 15691.483994795139, | ||
1453 | 15706.408720490062, | ||
1454 | 15721.336992514242, | ||
1455 | 15736.268809183561, | ||
1456 | 15751.204168815901, | ||
1457 | 15766.143069731135, | ||
1458 | 15781.085510251132, | ||
1459 | 15796.03148869974, | ||
1460 | 15810.981003402798, | ||
1461 | 15825.934052688119, | ||
1462 | 15840.890634885489, | ||
1463 | 15855.850748326673, | ||
1464 | 15870.814391345401, | ||
1465 | 15885.781562277361, | ||
1466 | 15900.752259460214, | ||
1467 | 15915.726481233565, | ||
1468 | 15930.704225938984, | ||
1469 | 15945.685491919978, | ||
1470 | 15960.670277522009, | ||
1471 | 15975.658581092481, | ||
1472 | 15990.65040098073, | ||
1473 | 16005.645735538035, | ||
1474 | 16020.644583117599, | ||
1475 | 16035.646942074556, | ||
1476 | 16050.652810765967, | ||
1477 | 16065.662187550806, | ||
1478 | 16080.675070789974, | ||
1479 | 16095.691458846273, | ||
1480 | 16110.711350084424, | ||
1481 | 16125.734742871053, | ||
1482 | 16140.761635574685, | ||
1483 | 16155.792026565747, | ||
1484 | 16170.825914216561, | ||
1485 | 16185.863296901338, | ||
1486 | 16200.904172996183, | ||
1487 | 16215.948540879079, | ||
1488 | 16230.996398929899, | ||
1489 | 16246.047745530386, | ||
1490 | 16261.102579064163, | ||
1491 | 16276.160897916721, | ||
1492 | 16291.22270047542, | ||
1493 | 16306.287985129484, | ||
1494 | 16321.356750269995, | ||
1495 | 16336.428994289896, | ||
1496 | 16351.504715583982, | ||
1497 | 16366.5839125489, | ||
1498 | 16381.666583583141, | ||
1499 | 16396.752727087041, | ||
1500 | 16411.842341462776, | ||
1501 | 16426.935425114363, | ||
1502 | 16442.031976447644, | ||
1503 | 16457.131993870298, | ||
1504 | 16472.235475791829, | ||
1505 | 16487.342420623561, | ||
1506 | 16502.452826778641, | ||
1507 | 16517.566692672033, | ||
1508 | 16532.684016720516, | ||
1509 | 16547.804797342676, | ||
1510 | 16562.929032958902, | ||
1511 | 16578.056721991394, | ||
1512 | 16593.18786286415, | ||
1513 | 16608.322454002962, | ||
1514 | 16623.460493835417, | ||
1515 | 16638.601980790896, | ||
1516 | 16653.746913300558, | ||
1517 | 16668.895289797354, | ||
1518 | 16684.047108716015, | ||
1519 | 16699.202368493046, | ||
1520 | 16714.361067566726, | ||
1521 | 16729.523204377107, | ||
1522 | 16744.688777366009, | ||
1523 | 16759.857784977012, | ||
1524 | 16775.030225655464, | ||
1525 | 16790.206097848466, | ||
1526 | 16805.385400004874, | ||
1527 | 16820.568130575302, | ||
1528 | 16835.754288012104, | ||
1529 | 16850.943870769381, | ||
1530 | 16866.136877302983, | ||
1531 | 16881.333306070494, | ||
1532 | 16896.53315553123, | ||
1533 | 16911.736424146249, | ||
1534 | 16926.943110378332, | ||
1535 | 16942.153212691992, | ||
1536 | 16957.366729553454, | ||
1537 | 16972.583659430682, | ||
1538 | 16987.804000793338, | ||
1539 | 17003.027752112816, | ||
1540 | 17018.254911862205, | ||
1541 | 17033.485478516312, | ||
1542 | 17048.719450551645, | ||
1543 | 17063.956826446421, | ||
1544 | 17079.197604680547, | ||
1545 | 17094.44178373563, | ||
1546 | 17109.689362094967, | ||
1547 | 17124.940338243552, | ||
1548 | 17140.194710668064, | ||
1549 | 17155.452477856852, | ||
1550 | 17170.713638299967, | ||
1551 | 17185.978190489128, | ||
1552 | 17201.246132917724, | ||
1553 | 17216.517464080825, | ||
1554 | 17231.792182475165, | ||
1555 | 17247.070286599141, | ||
1556 | 17262.351774952826, | ||
1557 | 17277.636646037936, | ||
1558 | 17292.924898357855, | ||
1559 | 17308.216530417623, | ||
1560 | 17323.511540723921, | ||
1561 | 17338.809927785089, | ||
1562 | 17354.111690111105, | ||
1563 | 17369.416826213594, | ||
1564 | 17384.725334605821, | ||
1565 | 17400.037213802683, | ||
1566 | 17415.352462320716, | ||
1567 | 17430.67107867809, | ||
1568 | 17445.993061394587, | ||
1569 | 17461.318408991636, | ||
1570 | 17476.647119992274, | ||
1571 | 17491.979192921168, | ||
1572 | 17507.314626304586, | ||
1573 | 17522.653418670423, | ||
1574 | 17537.995568548187, | ||
1575 | 17553.341074468986, | ||
1576 | 17568.689934965536, | ||
1577 | 17584.042148572156, | ||
1578 | 17599.397713824768, | ||
1579 | 17614.75662926089, | ||
1580 | 17630.118893419625, | ||
1581 | 17645.484504841683, | ||
1582 | 17660.853462069354, | ||
1583 | 17676.225763646511, | ||
1584 | 17691.601408118619, | ||
1585 | 17706.980394032718, | ||
1586 | 17722.362719937424, | ||
1587 | 17737.748384382936, | ||
1588 | 17753.137385921014, | ||
1589 | 17768.529723104999, | ||
1590 | 17783.92539448979, | ||
1591 | 17799.324398631856, | ||
1592 | 17814.726734089225, | ||
1593 | 17830.13239942148, | ||
1594 | 17845.541393189767, | ||
1595 | 17860.95371395678, | ||
1596 | 17876.369360286772, | ||
1597 | 17891.788330745527, | ||
1598 | 17907.210623900395, | ||
1599 | 17922.636238320254, | ||
1600 | 17938.065172575527, | ||
1601 | 17953.497425238176, | ||
1602 | 17968.932994881692, | ||
1603 | 17984.371880081104, | ||
1604 | 17999.814079412972, | ||
1605 | 18015.259591455371, | ||
1606 | 18030.708414787914, | ||
1607 | 18046.160547991731, | ||
1608 | 18061.615989649465, | ||
1609 | 18077.074738345284, | ||
1610 | 18092.536792664861, | ||
1611 | 18108.002151195393, | ||
1612 | 18123.470812525571, | ||
1613 | 18138.942775245599, | ||
1614 | 18154.418037947191, | ||
1615 | 18169.896599223546, | ||
1616 | 18185.37845766938, | ||
1617 | 18200.863611880886, | ||
1618 | 18216.352060455767, | ||
1619 | 18231.843801993204, | ||
1620 | 18247.338835093873, | ||
1621 | 18262.837158359936, | ||
1622 | 18278.338770395032, | ||
1623 | 18293.84366980429, | ||
1624 | 18309.351855194309, | ||
1625 | 18324.863325173166, | ||
1626 | 18340.378078350412, | ||
1627 | 18355.896113337069, | ||
1628 | 18371.417428745623, | ||
1629 | 18386.942023190033, | ||
1630 | 18402.469895285718, | ||
1631 | 18418.00104364955, | ||
1632 | 18433.53546689987, | ||
1633 | 18449.073163656474, | ||
1634 | 18464.614132540602, | ||
1635 | 18480.158372174956, | ||
1636 | 18495.705881183676, | ||
1637 | 18511.256658192357, | ||
1638 | 18526.810701828035, | ||
1639 | 18542.368010719183, | ||
1640 | 18557.928583495715, | ||
1641 | 18573.492418788985, | ||
1642 | 18589.059515231773, | ||
1643 | 18604.629871458303, | ||
1644 | 18620.203486104212, | ||
1645 | 18635.78035780658, | ||
1646 | 18651.360485203899, | ||
1647 | 18666.943866936086, | ||
1648 | 18682.53050164448, | ||
1649 | 18698.120387971841, | ||
1650 | 18713.713524562332, | ||
1651 | 18729.30991006154, | ||
1652 | 18744.909543116457, | ||
1653 | 18760.512422375479, | ||
1654 | 18776.118546488418, | ||
1655 | 18791.727914106479, | ||
1656 | 18807.340523882274, | ||
1657 | 18822.95637446981, | ||
1658 | 18838.575464524489, | ||
1659 | 18854.197792703111, | ||
1660 | 18869.823357663863, | ||
1661 | 18885.452158066328, | ||
1662 | 18901.08419257147, | ||
1663 | 18916.719459841639, | ||
1664 | 18932.357958540564, | ||
1665 | 18947.999687333362, | ||
1666 | 18963.644644886521, | ||
1667 | 18979.292829867907, | ||
1668 | 18994.944240946759, | ||
1669 | 19010.598876793687, | ||
1670 | 19026.256736080668, | ||
1671 | 19041.917817481048, | ||
1672 | 19057.582119669532, | ||
1673 | 19073.2496413222, | ||
1674 | 19088.920381116473, | ||
1675 | 19104.594337731145, | ||
1676 | 19120.271509846356, | ||
1677 | 19135.951896143604, | ||
1678 | 19151.635495305738, | ||
1679 | 19167.322306016948, | ||
1680 | 19183.012326962784, | ||
1681 | 19198.705556830122, | ||
1682 | 19214.401994307198, | ||
1683 | 19230.101638083579, | ||
1684 | 19245.804486850167, | ||
1685 | 19261.510539299208, | ||
1686 | 19277.219794124274, | ||
1687 | 19292.932250020265, | ||
1688 | 19308.647905683421, | ||
1689 | 19324.366759811302, | ||
1690 | 19340.088811102793, | ||
1691 | 19355.8140582581, | ||
1692 | 19371.542499978754, | ||
1693 | 19387.2741349676, | ||
1694 | 19403.008961928797, | ||
1695 | 19418.746979567823, | ||
1696 | 19434.488186591469, | ||
1697 | 19450.232581707827, | ||
1698 | 19465.980163626304, | ||
1699 | 19481.730931057613, | ||
1700 | 19497.484882713761, | ||
1701 | 19513.242017308068, | ||
1702 | 19529.002333555141, | ||
1703 | 19544.765830170898, | ||
1704 | 19560.532505872539, | ||
1705 | 19576.302359378566, | ||
1706 | 19592.075389408761, | ||
1707 | 19607.851594684209, | ||
1708 | 19623.630973927269, | ||
1709 | 19639.41352586159, | ||
1710 | 19655.199249212103, | ||
1711 | 19670.988142705017, | ||
1712 | 19686.780205067826, | ||
1713 | 19702.575435029288, | ||
1714 | 19718.373831319448, | ||
1715 | 19734.175392669615, | ||
1716 | 19749.980117812371, | ||
1717 | 19765.788005481569, | ||
1718 | 19781.599054412323, | ||
1719 | 19797.413263341008, | ||
1720 | 19813.230631005274, | ||
1721 | 19829.051156144014, | ||
1722 | 19844.874837497395, | ||
1723 | 19860.701673806827, | ||
1724 | 19876.531663814985, | ||
1725 | 19892.364806265789, | ||
1726 | 19908.201099904403, | ||
1727 | 19924.040543477258, | ||
1728 | 19939.883135732012, | ||
1729 | 19955.728875417579, | ||
1730 | 19971.577761284105, | ||
1731 | 19987.429792082985, | ||
1732 | 20003.284966566847, | ||
1733 | 20019.14328348956, | ||
1734 | 20035.004741606219, | ||
1735 | 20050.869339673161, | ||
1736 | 20066.737076447946, | ||
1737 | 20082.607950689362, | ||
1738 | 20098.481961157428, | ||
1739 | 20114.359106613385, | ||
1740 | 20130.239385819699, | ||
1741 | 20146.122797540058, | ||
1742 | 20162.009340539353, | ||
1743 | 20177.899013583716, | ||
1744 | 20193.791815440476, | ||
1745 | 20209.687744878182, | ||
1746 | 20225.586800666591, | ||
1747 | 20241.488981576669, | ||
1748 | 20257.394286380597, | ||
1749 | 20273.302713851754, | ||
1750 | 20289.214262764715, | ||
1751 | 20305.128931895277, | ||
1752 | 20321.046720020415, | ||
1753 | 20336.967625918318, | ||
1754 | 20352.891648368361, | ||
1755 | 20368.818786151114, | ||
1756 | 20384.749038048347, | ||
1757 | 20400.682402843009, | ||
1758 | 20416.618879319249, | ||
1759 | 20432.558466262391, | ||
1760 | 20448.501162458953, | ||
1761 | 20464.446966696629, | ||
1762 | 20480.395877764302, | ||
1763 | 20496.347894452025, | ||
1764 | 20512.303015551031, | ||
1765 | 20528.261239853735, | ||
1766 | 20544.22256615372, | ||
1767 | 20560.186993245738, | ||
1768 | 20576.15451992572, | ||
1769 | 20592.125144990758, | ||
1770 | 20608.098867239107, | ||
1771 | 20624.075685470198, | ||
1772 | 20640.055598484618, | ||
1773 | 20656.038605084115, | ||
1774 | 20672.024704071595, | ||
1775 | 20688.013894251126, | ||
1776 | 20704.006174427926, | ||
1777 | 20720.001543408373, | ||
1778 | 20735.999999999989, | ||
1779 | 20752.001543011454, | ||
1780 | 20768.006171252597, | ||
1781 | 20784.013883534382, | ||
1782 | 20800.024678668931, | ||
1783 | 20816.038555469506, | ||
1784 | 20832.055512750507, | ||
1785 | 20848.075549327474, | ||
1786 | 20864.098664017085, | ||
1787 | 20880.124855637161, | ||
1788 | 20896.154123006647, | ||
1789 | 20912.186464945626, | ||
1790 | 20928.221880275312, | ||
1791 | 20944.260367818049, | ||
1792 | 20960.301926397311, | ||
1793 | 20976.346554837684, | ||
1794 | 20992.394251964895, | ||
1795 | 21008.445016605787, | ||
1796 | 21024.498847588318, | ||
1797 | 21040.555743741574, | ||
1798 | 21056.615703895754, | ||
1799 | 21072.678726882168, | ||
1800 | 21088.744811533252, | ||
1801 | 21104.813956682538, | ||
1802 | 21120.886161164683, | ||
1803 | 21136.961423815443, | ||
1804 | 21153.039743471683, | ||
1805 | 21169.121118971379, | ||
1806 | 21185.205549153605, | ||
1807 | 21201.293032858535, | ||
1808 | 21217.383568927453, | ||
1809 | 21233.477156202731, | ||
1810 | 21249.573793527841, | ||
1811 | 21265.673479747358, | ||
1812 | 21281.776213706937, | ||
1813 | 21297.881994253334, | ||
1814 | 21313.990820234398, | ||
1815 | 21330.102690499054, | ||
1816 | 21346.21760389733, | ||
1817 | 21362.335559280327, | ||
1818 | 21378.456555500241, | ||
1819 | 21394.580591410333, | ||
1820 | 21410.707665864964, | ||
1821 | 21426.83777771956, | ||
1822 | 21442.970925830628, | ||
1823 | 21459.107109055756, | ||
1824 | 21475.246326253604, | ||
1825 | 21491.388576283895, | ||
1826 | 21507.533858007431, | ||
1827 | 21523.682170286087, | ||
1828 | 21539.833511982797, | ||
1829 | 21555.987881961566, | ||
1830 | 21572.145279087465, | ||
1831 | 21588.305702226615, | ||
1832 | 21604.469150246216, | ||
1833 | 21620.635622014521, | ||
1834 | 21636.805116400832, | ||
1835 | 21652.977632275521, | ||
1836 | 21669.153168510009, | ||
1837 | 21685.331723976764, | ||
1838 | 21701.513297549318, | ||
1839 | 21717.697888102244, | ||
1840 | 21733.885494511167, | ||
1841 | 21750.076115652759, | ||
1842 | 21766.269750404736, | ||
1843 | 21782.466397645861, | ||
1844 | 21798.666056255934, | ||
1845 | 21814.868725115801, | ||
1846 | 21831.074403107345, | ||
1847 | 21847.283089113484, | ||
1848 | 21863.494782018177, | ||
1849 | 21879.709480706417, | ||
1850 | 21895.927184064229, | ||
1851 | 21912.147890978667, | ||
1852 | 21928.371600337818, | ||
1853 | 21944.598311030797, | ||
1854 | 21960.828021947746, | ||
1855 | 21977.060731979829, | ||
1856 | 21993.296440019243, | ||
1857 | 22009.535144959198, | ||
1858 | 22025.77684569393, | ||
1859 | 22042.021541118691, | ||
1860 | 22058.269230129757, | ||
1861 | 22074.519911624411, | ||
1862 | 22090.773584500959, | ||
1863 | 22107.030247658717, | ||
1864 | 22123.289899998013, | ||
1865 | 22139.552540420187, | ||
1866 | 22155.818167827587, | ||
1867 | 22172.086781123569, | ||
1868 | 22188.358379212495, | ||
1869 | 22204.632960999726, | ||
1870 | 22220.910525391639, | ||
1871 | 22237.191071295601, | ||
1872 | 22253.474597619981, | ||
1873 | 22269.761103274148, | ||
1874 | 22286.050587168469, | ||
1875 | 22302.343048214312, | ||
1876 | 22318.638485324027, | ||
1877 | 22334.936897410968, | ||
1878 | 22351.23828338947, | ||
1879 | 22367.542642174871, | ||
1880 | 22383.849972683485, | ||
1881 | 22400.160273832618, | ||
1882 | 22416.473544540564, | ||
1883 | 22432.789783726603, | ||
1884 | 22449.108990310986, | ||
1885 | 22465.431163214958, | ||
1886 | 22481.75630136074, | ||
1887 | 22498.084403671528, | ||
1888 | 22514.415469071497, | ||
1889 | 22530.749496485802, | ||
1890 | 22547.086484840562, | ||
1891 | 22563.426433062879, | ||
1892 | 22579.769340080824, | ||
1893 | 22596.115204823436, | ||
1894 | 22612.464026220721, | ||
1895 | 22628.815803203655, | ||
1896 | 22645.170534704179, | ||
1897 | 22661.5282196552, | ||
1898 | 22677.888856990587, | ||
1899 | 22694.252445645168, | ||
1900 | 22710.618984554734, | ||
1901 | 22726.988472656034, | ||
1902 | 22743.360908886778, | ||
1903 | 22759.736292185622, | ||
1904 | 22776.114621492186, | ||
1905 | 22792.495895747044, | ||
1906 | 22808.880113891719, | ||
1907 | 22825.267274868678, | ||
1908 | 22841.657377621348, | ||
1909 | 22858.050421094096, | ||
1910 | 22874.446404232243, | ||
1911 | 22890.845325982053, | ||
1912 | 22907.247185290722, | ||
1913 | 22923.651981106406, | ||
1914 | 22940.059712378195, | ||
1915 | 22956.470378056114, | ||
1916 | 22972.883977091129, | ||
1917 | 22989.300508435153, | ||
1918 | 23005.719971041017, | ||
1919 | 23022.142363862498, | ||
1920 | 23038.567685854305, | ||
1921 | 23054.995935972078, | ||
1922 | 23071.427113172387, | ||
1923 | 23087.86121641273, | ||
1924 | 23104.298244651531, | ||
1925 | 23120.738196848146, | ||
1926 | 23137.181071962848, | ||
1927 | 23153.626868956846, | ||
1928 | 23170.075586792263, | ||
1929 | 23186.527224432142, | ||
1930 | 23202.981780840448, | ||
1931 | 23219.439254982066, | ||
1932 | 23235.899645822796, | ||
1933 | 23252.362952329357, | ||
1934 | 23268.829173469378, | ||
1935 | 23285.298308211408, | ||
1936 | 23301.770355524899, | ||
1937 | 23318.245314380223, | ||
1938 | 23334.723183748658, | ||
1939 | 23351.203962602387, | ||
1940 | 23367.687649914504, | ||
1941 | 23384.174244659007, | ||
1942 | 23400.663745810798, | ||
1943 | 23417.15615234568, | ||
1944 | 23433.651463240367, | ||
1945 | 23450.149677472462, | ||
1946 | 23466.650794020472, | ||
1947 | 23483.154811863806, | ||
1948 | 23499.661729982763, | ||
1949 | 23516.171547358543, | ||
1950 | 23532.684262973235, | ||
1951 | 23549.199875809823, | ||
1952 | 23565.718384852185, | ||
1953 | 23582.239789085092, | ||
1954 | 23598.764087494197, | ||
1955 | 23615.291279066041, | ||
1956 | 23631.821362788058, | ||
1957 | 23648.354337648565, | ||
1958 | 23664.890202636761, | ||
1959 | 23681.428956742733, | ||
1960 | 23697.970598957443, | ||
1961 | 23714.515128272738, | ||
1962 | 23731.062543681343, | ||
1963 | 23747.612844176863, | ||
1964 | 23764.166028753778, | ||
1965 | 23780.72209640744, | ||
1966 | 23797.281046134085, | ||
1967 | 23813.842876930816, | ||
1968 | 23830.407587795606, | ||
1969 | 23846.975177727301, | ||
1970 | 23863.545645725622, | ||
1971 | 23880.11899079115, | ||
1972 | 23896.695211925336, | ||
1973 | 23913.274308130498, | ||
1974 | 23929.856278409821, | ||
1975 | 23946.441121767348, | ||
1976 | 23963.028837207989, | ||
1977 | 23979.619423737513, | ||
1978 | 23996.212880362549, | ||
1979 | 24012.809206090584, | ||
1980 | 24029.408399929966, | ||
1981 | 24046.010460889898, | ||
1982 | 24062.615387980433, | ||
1983 | 24079.223180212492, | ||
1984 | 24095.833836597827, | ||
1985 | 24112.447356149063, | ||
1986 | 24129.063737879667, | ||
1987 | 24145.682980803951, | ||
1988 | 24162.305083937081, | ||
1989 | 24178.930046295067, | ||
1990 | 24195.557866894767, | ||
1991 | 24212.188544753884, | ||
1992 | 24228.822078890964, | ||
1993 | 24245.458468325389, | ||
1994 | 24262.097712077397, | ||
1995 | 24278.739809168052, | ||
1996 | 24295.384758619261, | ||
1997 | 24312.032559453768, | ||
1998 | 24328.683210695162, | ||
1999 | 24345.336711367858, | ||
2000 | 24361.993060497109, | ||
2001 | 24378.652257108995, | ||
2002 | 24395.314300230442, | ||
2003 | 24411.979188889192, | ||
2004 | 24428.646922113825, | ||
2005 | 24445.317498933746, | ||
2006 | 24461.990918379193, | ||
2007 | 24478.667179481225, | ||
2008 | 24495.346281271726, | ||
2009 | 24512.028222783407, | ||
2010 | 24528.713003049801, | ||
2011 | 24545.400621105266, | ||
2012 | 24562.091075984976, | ||
2013 | 24578.784366724925, | ||
2014 | 24595.480492361927, | ||
2015 | 24612.179451933614, | ||
2016 | 24628.881244478438, | ||
2017 | 24645.585869035654, | ||
2018 | 24662.293324645343, | ||
2019 | 24679.003610348394, | ||
2020 | 24695.716725186514, | ||
2021 | 24712.432668202211, | ||
2022 | 24729.151438438807, | ||
2023 | 24745.873034940436, | ||
2024 | 24762.597456752032, | ||
2025 | 24779.324702919344, | ||
2026 | 24796.054772488926, | ||
2027 | 24812.787664508123, | ||
2028 | 24829.5233780251, | ||
2029 | 24846.261912088819, | ||
2030 | 24863.003265749034, | ||
2031 | 24879.747438056307, | ||
2032 | 24896.494428062004, | ||
2033 | 24913.244234818278, | ||
2034 | 24929.996857378079, | ||
2035 | 24946.752294795166, | ||
2036 | 24963.510546124078, | ||
2037 | 24980.271610420157, | ||
2038 | 24997.035486739525, | ||
2039 | 25013.802174139113, | ||
2040 | 25030.571671676629, | ||
2041 | 25047.343978410572, | ||
2042 | 25064.119093400237, | ||
2043 | 25080.897015705697, | ||
2044 | 25097.677744387816, | ||
2045 | 25114.461278508239, | ||
2046 | 25131.2476171294, | ||
2047 | 25148.036759314517, | ||
2048 | 25164.828704127583, | ||
2049 | 25181.623450633375, | ||
2050 | 25198.42099789745, | ||
2051 | 25215.221344986145, | ||
2052 | 25232.024490966574, | ||
2053 | 25248.830434906627, | ||
2054 | 25265.639175874974, | ||
2055 | 25282.450712941049, | ||
2056 | 25299.265045175071, | ||
2057 | 25316.082171648024, | ||
2058 | 25332.902091431668, | ||
2059 | 25349.724803598532, | ||
2060 | 25366.550307221914, | ||
2061 | 25383.378601375884, | ||
2062 | 25400.209685135269, | ||
2063 | 25417.043557575678, | ||
2064 | 25433.880217773472, | ||
2065 | 25450.719664805783, | ||
2066 | 25467.561897750507, | ||
2067 | 25484.406915686297, | ||
2068 | 25501.254717692573, | ||
2069 | 25518.105302849512, | ||
2070 | 25534.958670238051, | ||
2071 | 25551.814818939893, | ||
2072 | 25568.67374803748, | ||
2073 | 25585.535456614027, | ||
2074 | 25602.399943753502, | ||
2075 | 25619.267208540619, | ||
2076 | 25636.137250060852, | ||
2077 | 25653.010067400432, | ||
2078 | 25669.885659646327, | ||
2079 | 25686.76402588627, | ||
2080 | 25703.645165208734, | ||
2081 | 25720.529076702944, | ||
2082 | 25737.415759458876, | ||
2083 | 25754.305212567244, | ||
2084 | 25771.197435119517, | ||
2085 | 25788.092426207899, | ||
2086 | 25804.990184925344, | ||
2087 | 25821.890710365547, | ||
2088 | 25838.794001622944, | ||
2089 | 25855.700057792714, | ||
2090 | 25872.608877970775, | ||
2091 | 25889.520461253778, | ||
2092 | 25906.434806739118, | ||
2093 | 25923.351913524923, | ||
2094 | 25940.271780710063, | ||
2095 | 25957.194407394138, | ||
2096 | 25974.11979267748, | ||
2097 | 25991.047935661154, | ||
2098 | 26007.978835446964, | ||
2099 | 26024.912491137442, | ||
2100 | 26041.848901835841, | ||
2101 | 26058.788066646157, | ||
2102 | 26075.729984673108, | ||
2103 | 26092.674655022136, | ||
2104 | 26109.622076799409, | ||
2105 | 26126.572249111829, | ||
2106 | 26143.525171067016, | ||
2107 | 26160.480841773315, | ||
2108 | 26177.43926033979, | ||
2109 | 26194.400425876229, | ||
2110 | 26211.364337493149, | ||
2111 | 26228.330994301767, | ||
2112 | 26245.30039541404, | ||
2113 | 26262.272539942627, | ||
2114 | 26279.247427000919, | ||
2115 | 26296.225055703002, | ||
2116 | 26313.205425163702, | ||
2117 | 26330.188534498539, | ||
2118 | 26347.174382823756, | ||
2119 | 26364.162969256304, | ||
2120 | 26381.154292913852, | ||
2121 | 26398.148352914774, | ||
2122 | 26415.145148378149, | ||
2123 | 26432.144678423778, | ||
2124 | 26449.146942172156, | ||
2125 | 26466.151938744493, | ||
2126 | 26483.159667262702, | ||
2127 | 26500.170126849403, | ||
2128 | 26517.183316627921, | ||
2129 | 26534.199235722277, | ||
2130 | 26551.217883257199, | ||
2131 | 26568.239258358124, | ||
2132 | 26585.263360151173, | ||
2133 | 26602.290187763181, | ||
2134 | 26619.319740321676, | ||
2135 | 26636.352016954883, | ||
2136 | 26653.387016791727, | ||
2137 | 26670.424738961825, | ||
2138 | 26687.465182595493, | ||
2139 | 26704.508346823739, | ||
2140 | 26721.554230778267, | ||
2141 | 26738.602833591467, | ||
2142 | 26755.65415439643, | ||
2143 | 26772.708192326929, | ||
2144 | 26789.764946517433, | ||
2145 | 26806.824416103096, | ||
2146 | 26823.886600219761, | ||
2147 | 26840.95149800396, | ||
2148 | 26858.019108592915, | ||
2149 | 26875.089431124517, | ||
2150 | 26892.162464737365, | ||
2151 | 26909.238208570721, | ||
2152 | 26926.316661764544, | ||
2153 | 26943.397823459472, | ||
2154 | 26960.481692796813, | ||
2155 | 26977.568268918571, | ||
2156 | 26994.657550967422, | ||
2157 | 27011.749538086722, | ||
2158 | 27028.844229420498, | ||
2159 | 27045.941624113464, | ||
2160 | 27063.041721311005, | ||
2161 | 27080.144520159181, | ||
2162 | 27097.250019804727, | ||
2163 | 27114.35821939505, | ||
2164 | 27131.469118078236, | ||
2165 | 27148.582715003027, | ||
2166 | 27165.699009318858, | ||
2167 | 27182.818000175819, | ||
2168 | 27199.939686724665, | ||
2169 | 27217.064068116837, | ||
2170 | 27234.191143504428, | ||
2171 | 27251.320912040203, | ||
2172 | 27268.453372877593, | ||
2173 | 27285.588525170693, | ||
2174 | 27302.726368074269, | ||
2175 | 27319.866900743735, | ||
2176 | 27337.010122335181, | ||
2177 | 27354.156032005358, | ||
2178 | 27371.304628911668, | ||
2179 | 27388.455912212183, | ||
2180 | 27405.609881065626, | ||
2181 | 27422.766534631384, | ||
2182 | 27439.925872069507, | ||
2183 | 27457.087892540683, | ||
2184 | 27474.252595206275, | ||
2185 | 27491.419979228293, | ||
2186 | 27508.5900437694, | ||
2187 | 27525.762787992917, | ||
2188 | 27542.93821106281, | ||
2189 | 27560.116312143706, | ||
2190 | 27577.297090400876, | ||
2191 | 27594.480545000242, | ||
2192 | 27611.666675108383, | ||
2193 | 27628.855479892518, | ||
2194 | 27646.046958520514, | ||
2195 | 27663.241110160889, | ||
2196 | 27680.437933982801, | ||
2197 | 27697.637429156068, | ||
2198 | 27714.839594851132, | ||
2199 | 27732.04443023909, | ||
2200 | 27749.251934491687, | ||
2201 | 27766.462106781299, | ||
2202 | 27783.674946280949, | ||
2203 | 27800.890452164302, | ||
2204 | 27818.108623605654, | ||
2205 | 27835.329459779954, | ||
2206 | 27852.55295986278, | ||
2207 | 27869.779123030345, | ||
2208 | 27887.007948459504, | ||
2209 | 27904.239435327745, | ||
2210 | 27921.473582813196, | ||
2211 | 27938.710390094613, | ||
2212 | 27955.949856351392, | ||
2213 | 27973.19198076355, | ||
2214 | 27990.436762511745, | ||
2215 | 28007.684200777272, | ||
2216 | 28024.934294742041, | ||
2217 | 28042.187043588601, | ||
2218 | 28059.442446500128, | ||
2219 | 28076.700502660427, | ||
2220 | 28093.961211253929, | ||
2221 | 28111.224571465693, | ||
2222 | 28128.490582481401, | ||
2223 | 28145.759243487362, | ||
2224 | 28163.030553670509, | ||
2225 | 28180.304512218394, | ||
2226 | 28197.581118319198, | ||
2227 | 28214.860371161725, | ||
2228 | 28232.14226993539, | ||
2229 | 28249.42681383024, | ||
2230 | 28266.71400203693, | ||
2231 | 28284.003833746745, | ||
2232 | 28301.296308151585, | ||
2233 | 28318.591424443959, | ||
2234 | 28335.889181817001, | ||
2235 | 28353.189579464462, | ||
2236 | 28370.492616580705, | ||
2237 | 28387.798292360701, | ||
2238 | 28405.106606000048, | ||
2239 | 28422.417556694945, | ||
2240 | 28439.731143642206, | ||
2241 | 28457.047366039264, | ||
2242 | 28474.366223084147, | ||
2243 | 28491.687713975512, | ||
2244 | 28509.011837912611, | ||
2245 | 28526.338594095305, | ||
2246 | 28543.667981724069, | ||
2247 | 28560.999999999982, | ||
2248 | 28578.334648124732, | ||
2249 | 28595.671925300605, | ||
2250 | 28613.011830730498, | ||
2251 | 28630.354363617909, | ||
2252 | 28647.699523166943, | ||
2253 | 28665.0473085823, | ||
2254 | 28682.397719069289, | ||
2255 | 28699.750753833818, | ||
2256 | 28717.10641208239, | ||
2257 | 28734.464693022121, | ||
2258 | 28751.825595860708, | ||
2259 | 28769.189119806462, | ||
2260 | 28786.55526406828, | ||
2261 | 28803.924027855664, | ||
2262 | 28821.295410378701, | ||
2263 | 28838.669410848088, | ||
2264 | 28856.046028475103, | ||
2265 | 28873.425262471628, | ||
2266 | 28890.80711205013, | ||
2267 | 28908.191576423673, | ||
2268 | 28925.578654805915, | ||
2269 | 28942.968346411097, | ||
2270 | 28960.360650454055, | ||
2271 | 28977.755566150216, | ||
2272 | 28995.153092715591, | ||
2273 | 29012.553229366786, | ||
2274 | 29029.955975320987, | ||
2275 | 29047.361329795975, | ||
2276 | 29064.769292010107, | ||
2277 | 29082.179861182336, | ||
2278 | 29099.593036532187, | ||
2279 | 29117.00881727978, | ||
2280 | 29134.427202645813, | ||
2281 | 29151.848191851568, | ||
2282 | 29169.271784118911, | ||
2283 | 29186.697978670283, | ||
2284 | 29204.126774728706, | ||
2285 | 29221.55817151779, | ||
2286 | 29238.992168261717, | ||
2287 | 29256.42876418525, | ||
2288 | 29273.867958513725, | ||
2289 | 29291.309750473058, | ||
2290 | 29308.754139289747, | ||
2291 | 29326.201124190855, | ||
2292 | 29343.65070440403, | ||
2293 | 29361.102879157483, | ||
2294 | 29378.557647680012, | ||
2295 | 29396.015009200975, | ||
2296 | 29413.474962950309, | ||
2297 | 29430.937508158524, | ||
2298 | 29448.402644056692, | ||
2299 | 29465.870369876469, | ||
2300 | 29483.340684850071, | ||
2301 | 29500.81358821028, | ||
2302 | 29518.289079190454, | ||
2303 | 29535.767157024511, | ||
2304 | 29553.247820946945, | ||
2305 | 29570.731070192807, | ||
2306 | 29588.216903997723, | ||
2307 | 29605.70532159787, | ||
2308 | 29623.19632223, | ||
2309 | 29640.689905131429, | ||
2310 | 29658.186069540028, | ||
2311 | 29675.684814694236, | ||
2312 | 29693.186139833047, | ||
2313 | 29710.690044196028, | ||
2314 | 29728.196527023298, | ||
2315 | 29745.705587555527, | ||
2316 | 29763.217225033964, | ||
2317 | 29780.731438700397, | ||
2318 | 29798.248227797183, | ||
2319 | 29815.76759156723, | ||
2320 | 29833.289529254005, | ||
2321 | 29850.81404010153, | ||
2322 | 29868.341123354381, | ||
2323 | 29885.870778257693, | ||
2324 | 29903.403004057145, | ||
2325 | 29920.937799998974, | ||
2326 | 29938.475165329975, | ||
2327 | 29956.015099297485, | ||
2328 | 29973.557601149394, | ||
2329 | 29991.102670134147, | ||
2330 | 30008.650305500738, | ||
2331 | 30026.200506498706, | ||
2332 | 30043.753272378144, | ||
2333 | 30061.308602389683, | ||
2334 | 30078.866495784507, | ||
2335 | 30096.426951814352, | ||
2336 | 30113.989969731494, | ||
2337 | 30131.55554878875, | ||
2338 | 30149.123688239491, | ||
2339 | 30166.694387337629, | ||
2340 | 30184.267645337608, | ||
2341 | 30201.843461494434, | ||
2342 | 30219.42183506364, | ||
2343 | 30237.002765301309, | ||
2344 | 30254.586251464058, | ||
2345 | 30272.172292809046, | ||
2346 | 30289.760888593977, | ||
2347 | 30307.35203807709, | ||
2348 | 30324.94574051716, | ||
2349 | 30342.541995173502, | ||
2350 | 30360.140801305966, | ||
2351 | 30377.742158174944, | ||
2352 | 30395.346065041358, | ||
2353 | 30412.952521166666, | ||
2354 | 30430.561525812864, | ||
2355 | 30448.173078242475, | ||
2356 | 30465.787177718561, | ||
2357 | 30483.403823504719, | ||
2358 | 30501.02301486507, | ||
2359 | 30518.644751064272, | ||
2360 | 30536.269031367516, | ||
2361 | 30553.895855040515, | ||
2362 | 30571.525221349519, | ||
2363 | 30589.157129561307, | ||
2364 | 30606.791578943175, | ||
2365 | 30624.428568762964, | ||
2366 | 30642.06809828903, | ||
2367 | 30659.710166790261, | ||
2368 | 30677.35477353607, | ||
2369 | 30695.001917796391, | ||
2370 | 30712.651598841687, | ||
2371 | 30730.303815942945, | ||
2372 | 30747.958568371676, | ||
2373 | 30765.615855399912, | ||
2374 | 30783.275676300211, | ||
2375 | 30800.938030345646, | ||
2376 | 30818.602916809814, | ||
2377 | 30836.270334966837, | ||
2378 | 30853.940284091354, | ||
2379 | 30871.612763458521, | ||
2380 | 30889.287772344011, | ||
2381 | 30906.965310024025, | ||
2382 | 30924.645375775272, | ||
2383 | 30942.327968874983, | ||
2384 | 30960.013088600903, | ||
2385 | 30977.700734231294, | ||
2386 | 30995.390905044929, | ||
2387 | 31013.083600321101, | ||
2388 | 31030.778819339619, | ||
2389 | 31048.476561380798, | ||
2390 | 31066.17682572547, | ||
2391 | 31083.879611654978, | ||
2392 | 31101.584918451179, | ||
2393 | 31119.29274539644, | ||
2394 | 31137.003091773637, | ||
2395 | 31154.715956866155, | ||
2396 | 31172.431339957893, | ||
2397 | 31190.14924033326, | ||
2398 | 31207.869657277162, | ||
2399 | 31225.592590075023, | ||
2400 | 31243.318038012771, | ||
2401 | 31261.046000376838, | ||
2402 | 31278.776476454172, | ||
2403 | 31296.50946553221, | ||
2404 | 31314.24496689891, | ||
2405 | 31331.98297984272, | ||
2406 | 31349.7235036526, | ||
2407 | 31367.466537618013, | ||
2408 | 31385.212081028923, | ||
2409 | 31402.960133175795, | ||
2410 | 31420.710693349596, | ||
2411 | 31438.463760841791, | ||
2412 | 31456.219334944351, | ||
2413 | 31473.977414949743, | ||
2414 | 31491.738000150934, | ||
2415 | 31509.501089841389, | ||
2416 | 31527.266683315069, | ||
2417 | 31545.034779866437, | ||
2418 | 31562.80537879045, | ||
2419 | 31580.578479382562, | ||
2420 | 31598.35408093872, | ||
2421 | 31616.132182755369, | ||
2422 | 31633.91278412945, | ||
2423 | 31651.695884358396, | ||
2424 | 31669.481482740131, | ||
2425 | 31687.269578573076, | ||
2426 | 31705.060171156143, | ||
2427 | 31722.853259788735, | ||
2428 | 31740.648843770748, | ||
2429 | 31758.446922402567, | ||
2430 | 31776.247494985066, | ||
2431 | 31794.050560819614, | ||
2432 | 31811.85611920806, | ||
2433 | 31829.664169452753, | ||
2434 | 31847.474710856521, | ||
2435 | 31865.287742722685, | ||
2436 | 31883.103264355046, | ||
2437 | 31900.921275057899, | ||
2438 | 31918.741774136019, | ||
2439 | 31936.564760894671, | ||
2440 | 31954.390234639599, | ||
2441 | 31972.21819467704, | ||
2442 | 31990.048640313704, | ||
2443 | 32007.881570856793, | ||
2444 | 32025.716985613984, | ||
2445 | 32043.554883893445, | ||
2446 | 32061.395265003815, | ||
2447 | 32079.238128254223, | ||
2448 | 32097.083472954269, | ||
2449 | 32114.931298414049, | ||
2450 | 32132.781603944117, | ||
2451 | 32150.634388855524, | ||
2452 | 32168.48965245979, | ||
2453 | 32186.347394068915, | ||
2454 | 32204.207612995371, | ||
2455 | 32222.07030855212, | ||
2456 | 32239.935480052583, | ||
2457 | 32257.803126810672, | ||
2458 | 32275.673248140767, | ||
2459 | 32293.545843357719, | ||
2460 | 32311.420911776862, | ||
2461 | 32329.298452713996, | ||
2462 | 32347.178465485395, | ||
2463 | 32365.060949407813, | ||
2464 | 32382.945903798463, | ||
2465 | 32400.83332797504, | ||
2466 | 32418.723221255706, | ||
2467 | 32436.615582959093, | ||
2468 | 32454.510412404306, | ||
2469 | 32472.407708910916, | ||
2470 | 32490.307471798966, | ||
2471 | 32508.209700388961, | ||
2472 | 32526.114394001877, | ||
2473 | 32544.021551959166, | ||
2474 | 32561.931173582732, | ||
2475 | 32579.843258194956, | ||
2476 | 32597.757805118679, | ||
2477 | 32615.674813677211, | ||
2478 | 32633.594283194328, | ||
2479 | 32651.516212994258, | ||
2480 | 32669.440602401712, | ||
2481 | 32687.367450741847, | ||
2482 | 32705.296757340297, | ||
2483 | 32723.228521523146, | ||
2484 | 32741.162742616943, | ||
2485 | 32759.099419948703, | ||
2486 | 32777.038552845901, | ||
2487 | 32794.980140636464, | ||
2488 | 32812.924182648792, | ||
2489 | 32830.87067821173, | ||
2490 | 32848.819626654593, | ||
2491 | 32866.77102730715, | ||
2492 | 32884.724879499619, | ||
2493 | 32902.681182562686, | ||
2494 | 32920.639935827494, | ||
2495 | 32938.601138625643, | ||
2496 | 32956.56479028918, | ||
2497 | 32974.530890150607, | ||
2498 | 32992.499437542894, | ||
2499 | 33010.470431799447, | ||
2500 | 33028.443872254145, | ||
2501 | 33046.419758241311, | ||
2502 | 33064.39808909571, | ||
2503 | 33082.378864152583, | ||
2504 | 33100.36208274759, | ||
2505 | 33118.347744216881, | ||
2506 | 33136.335847897026, | ||
2507 | 33154.326393125062, | ||
2508 | 33172.31937923847, | ||
2509 | 33190.314805575174, | ||
2510 | 33208.312671473555, | ||
2511 | 33226.312976272442, | ||
2512 | 33244.315719311111, | ||
2513 | 33262.320899929284, | ||
2514 | 33280.328517467125, | ||
2515 | 33298.33857126526, | ||
2516 | 33316.351060664747, | ||
2517 | 33334.365985007091, | ||
2518 | 33352.383343634239, | ||
2519 | 33370.403135888591, | ||
2520 | 33388.42536111299, | ||
2521 | 33406.450018650721, | ||
2522 | 33424.477107845501, | ||
2523 | 33442.506628041512, | ||
2524 | 33460.53857858335, | ||
2525 | 33478.572958816083, | ||
2526 | 33496.609768085189, | ||
2527 | 33514.649005736617, | ||
2528 | 33532.690671116739, | ||
2529 | 33550.734763572356, | ||
2530 | 33568.781282450735, | ||
2531 | 33586.830227099563, | ||
2532 | 33604.881596866973, | ||
2533 | 33622.935391101528, | ||
2534 | 33640.991609152239, | ||
2535 | 33659.050250368542, | ||
2536 | 33677.111314100322, | ||
2537 | 33695.174799697881, | ||
2538 | 33713.240706511984, | ||
2539 | 33731.309033893805, | ||
2540 | 33749.37978119497, | ||
2541 | 33767.452947767531, | ||
2542 | 33785.528532963974, | ||
2543 | 33803.606536137209, | ||
2544 | 33821.686956640602, | ||
2545 | 33839.769793827938, | ||
2546 | 33857.855047053425, | ||
2547 | 33875.942715671707, | ||
2548 | 33894.032799037872, | ||
2549 | 33912.125296507431, | ||
2550 | 33930.220207436316, | ||
2551 | 33948.317531180888, | ||
2552 | 33966.417267097961, | ||
2553 | 33984.519414544746, | ||
2554 | 34002.623972878901, | ||
2555 | 34020.730941458511, | ||
2556 | 34038.840319642077, | ||
2557 | 34056.952106788536, | ||
2558 | 34075.066302257255, | ||
2559 | 34093.182905408015, | ||
2560 | 34111.301915601027, | ||
2561 | 34129.42333219693, | ||
2562 | 34147.547154556785, | ||
2563 | 34165.673382042078, | ||
2564 | 34183.80201401472, | ||
2565 | 34201.933049837033, | ||
2566 | 34220.06648887178, | ||
2567 | 34238.202330482141, | ||
2568 | 34256.340574031703, | ||
2569 | 34274.481218884495, | ||
2570 | 34292.624264404949, | ||
2571 | 34310.769709957938, | ||
2572 | 34328.91755490873, | ||
2573 | 34347.067798623029, | ||
2574 | 34365.220440466954, | ||
2575 | 34383.375479807051, | ||
2576 | 34401.532916010263, | ||
2577 | 34419.692748443973, | ||
2578 | 34437.854976475966, | ||
2579 | 34456.01959947445, | ||
2580 | 34474.18661680806, | ||
2581 | 34492.356027845817, | ||
2582 | 34510.527831957188, | ||
2583 | 34528.702028512052, | ||
2584 | 34546.878616880676, | ||
2585 | 34565.05759643377, | ||
2586 | 34583.238966542449, | ||
2587 | 34601.422726578232, | ||
2588 | 34619.608875913065, | ||
2589 | 34637.797413919296, | ||
2590 | 34655.988339969692, | ||
2591 | 34674.181653437423, | ||
2592 | 34692.37735369608, | ||
2593 | 34710.575440119668, | ||
2594 | 34728.775912082579, | ||
2595 | 34746.978768959649, | ||
2596 | 34765.184010126082, | ||
2597 | 34783.391634957537, | ||
2598 | 34801.60164283005, | ||
2599 | 34819.814033120063, | ||
2600 | 34838.028805204456, | ||
2601 | 34856.24595846048, | ||
2602 | 34874.465492265823, | ||
2603 | 34892.687405998557, | ||
2604 | 34910.911699037177, | ||
2605 | 34929.138370760564, | ||
2606 | 34947.367420548027, | ||
2607 | 34965.598847779271, | ||
2608 | 34983.832651834389, | ||
2609 | 35002.068832093908, | ||
2610 | 35020.307387938738, | ||
2611 | 35038.548318750189, | ||
2612 | 35056.79162390998, | ||
2613 | 35075.03730280025, | ||
2614 | 35093.285354803513, | ||
2615 | 35111.535779302685, | ||
2616 | 35129.788575681116, | ||
2617 | 35148.043743322516, | ||
2618 | 35166.301281611013, | ||
2619 | 35184.561189931141, | ||
2620 | 35202.823467667826, | ||
2621 | 35221.088114206388, | ||
2622 | 35239.355128932555, | ||
2623 | 35257.624511232447, | ||
2624 | 35275.896260492584, | ||
2625 | 35294.170376099886, | ||
2626 | 35312.446857441668, | ||
2627 | 35330.725703905628, | ||
2628 | 35349.006914879887, | ||
2629 | 35367.290489752944, | ||
2630 | 35385.576427913686, | ||
2631 | 35403.864728751418, | ||
2632 | 35422.155391655811, | ||
2633 | 35440.448416016967, | ||
2634 | 35458.743801225341, | ||
2635 | 35477.041546671804, | ||
2636 | 35495.341651747622, | ||
2637 | 35513.644115844436, | ||
2638 | 35531.948938354304, | ||
2639 | 35550.256118669655, | ||
2640 | 35568.565656183309, | ||
2641 | 35586.877550288496, | ||
2642 | 35605.191800378816, | ||
2643 | 35623.508405848268, | ||
2644 | 35641.827366091238, | ||
2645 | 35660.148680502505, | ||
2646 | 35678.472348477233, | ||
2647 | 35696.798369410979, | ||
2648 | 35715.126742699678, | ||
2649 | 35733.457467739659, | ||
2650 | 35751.790543927644, | ||
2651 | 35770.125970660738, | ||
2652 | 35788.46374733642, | ||
2653 | 35806.803873352568, | ||
2654 | 35825.146348107453, | ||
2655 | 35843.49117099971, | ||
2656 | 35861.838341428367, | ||
2657 | 35880.187858792851, | ||
2658 | 35898.539722492955, | ||
2659 | 35916.893931928862, | ||
2660 | 35935.250486501129, | ||
2661 | 35953.609385610718, | ||
2662 | 35971.970628658957, | ||
2663 | 35990.334215047558, | ||
2664 | 36008.700144178612, | ||
2665 | 36027.068415454596, | ||
2666 | 36045.439028278372, | ||
2667 | 36063.811982053165, | ||
2668 | 36082.187276182609, | ||
2669 | 36100.564910070694, | ||
2670 | 36118.944883121789, | ||
2671 | 36137.327194740654, | ||
2672 | 36155.711844332429, | ||
2673 | 36174.098831302617, | ||
2674 | 36192.488155057115, | ||
2675 | 36210.87981500219, | ||
2676 | 36229.273810544473, | ||
2677 | 36247.670141091003, | ||
2678 | 36266.068806049167, | ||
2679 | 36284.469804826738, | ||
2680 | 36302.873136831862, | ||
2681 | 36321.278801473069, | ||
2682 | 36339.686798159251, | ||
2683 | 36358.097126299683, | ||
2684 | 36376.509785304013, | ||
2685 | 36394.924774582258, | ||
2686 | 36413.342093544816, | ||
2687 | 36431.761741602444, | ||
2688 | 36450.183718166292, | ||
2689 | 36468.608022647859, | ||
2690 | 36487.034654459028, | ||
2691 | 36505.463613012063, | ||
2692 | 36523.894897719583, | ||
2693 | 36542.328507994578, | ||
2694 | 36560.764443250409, | ||
2695 | 36579.202702900831, | ||
2696 | 36597.643286359926, | ||
2697 | 36616.086193042182, | ||
2698 | 36634.531422362437, | ||
2699 | 36652.978973735895, | ||
2700 | 36671.428846578143, | ||
2701 | 36689.881040305125, | ||
2702 | 36708.335554333149, | ||
2703 | 36726.792388078902, | ||
2704 | 36745.251540959427, | ||
2705 | 36763.713012392138, | ||
2706 | 36782.176801794812, | ||
2707 | 36800.642908585593, | ||
2708 | 36819.111332182983, | ||
2709 | 36837.582072005869, | ||
2710 | 36856.055127473483, | ||
2711 | 36874.530498005421, | ||
2712 | 36893.008183021651, | ||
2713 | 36911.488181942506, | ||
2714 | 36929.970494188674, | ||
2715 | 36948.455119181206, | ||
2716 | 36966.942056341519, | ||
2717 | 36985.431305091392, | ||
2718 | 37003.922864852961, | ||
2719 | 37022.416735048733, | ||
2720 | 37040.912915101559, | ||
2721 | 37059.411404434657, | ||
2722 | 37077.91220247162, | ||
2723 | 37096.415308636388, | ||
2724 | 37114.920722353243, | ||
2725 | 37133.428443046862, | ||
2726 | 37151.938470142253, | ||
2727 | 37170.450803064785, | ||
2728 | 37188.965441240209, | ||
2729 | 37207.482384094597, | ||
2730 | 37226.001631054402, | ||
2731 | 37244.523181546429, | ||
2732 | 37263.047034997842, | ||
2733 | 37281.573190836149, | ||
2734 | 37300.101648489224, | ||
2735 | 37318.632407385296, | ||
2736 | 37337.165466952945, | ||
2737 | 37355.700826621112, | ||
2738 | 37374.238485819085, | ||
2739 | 37392.778443976509, | ||
2740 | 37411.320700523385, | ||
2741 | 37429.865254890057, | ||
2742 | 37448.412106507232, | ||
2743 | 37466.961254805974, | ||
2744 | 37485.512699217681, | ||
2745 | 37504.066439174116, | ||
2746 | 37522.622474107404, | ||
2747 | 37541.180803449992, | ||
2748 | 37559.741426634704, | ||
2749 | 37578.304343094693, | ||
2750 | 37596.869552263488, | ||
2751 | 37615.43705357494, | ||
2752 | 37634.006846463279, | ||
2753 | 37652.578930363044, | ||
2754 | 37671.153304709165, | ||
2755 | 37689.729968936896, | ||
2756 | 37708.308922481847, | ||
2757 | 37726.890164779965, | ||
2758 | 37745.473695267559, | ||
2759 | 37764.059513381275, | ||
2760 | 37782.647618558112, | ||
2761 | 37801.238010235415, | ||
2762 | 37819.830687850859, | ||
2763 | 37838.425650842495, | ||
2764 | 37857.022898648691, | ||
2765 | 37875.622430708172, | ||
2766 | 37894.224246460013, | ||
2767 | 37912.828345343616, | ||
2768 | 37931.434726798747, | ||
2769 | 37950.043390265506, | ||
2770 | 37968.654335184328, | ||
2771 | 37987.267560995999, | ||
2772 | 38005.883067141665, | ||
2773 | 38024.500853062775, | ||
2774 | 38043.120918201159, | ||
2775 | 38061.743261998963, | ||
2776 | 38080.367883898682, | ||
2777 | 38098.994783343158, | ||
2778 | 38117.623959775563, | ||
2779 | 38136.255412639417, | ||
2780 | 38154.889141378575, | ||
2781 | 38173.525145437234, | ||
2782 | 38192.163424259939, | ||
2783 | 38210.803977291551, | ||
2784 | 38229.446803977284, | ||
2785 | 38248.091903762703, | ||
2786 | 38266.739276093685, | ||
2787 | 38285.388920416466, | ||
2788 | 38304.040836177606, | ||
2789 | 38322.695022824002, | ||
2790 | 38341.351479802899, | ||
2791 | 38360.010206561863, | ||
2792 | 38378.671202548816, | ||
2793 | 38397.334467211993, | ||
2794 | 38415.999999999978, | ||
2795 | 38434.667800361683, | ||
2796 | 38453.33786774637, | ||
2797 | 38472.010201603611, | ||
2798 | 38490.684801383337, | ||
2799 | 38509.361666535784, | ||
2800 | 38528.040796511552, | ||
2801 | 38546.722190761553, | ||
2802 | 38565.405848737035, | ||
2803 | 38584.091769889594, | ||
2804 | 38602.779953671132, | ||
2805 | 38621.470399533908, | ||
2806 | 38640.163106930493, | ||
2807 | 38658.858075313794, | ||
2808 | 38677.555304137059, | ||
2809 | 38696.254792853862, | ||
2810 | 38714.956540918094, | ||
2811 | 38733.660547783991, | ||
2812 | 38752.366812906112, | ||
2813 | 38771.075335739348, | ||
2814 | 38789.78611573892, | ||
2815 | 38808.499152360368, | ||
2816 | 38827.214445059573, | ||
2817 | 38845.931993292739, | ||
2818 | 38864.651796516388, | ||
2819 | 38883.373854187383, | ||
2820 | 38902.098165762916, | ||
2821 | 38920.824730700486, | ||
2822 | 38939.553548457938, | ||
2823 | 38958.284618493431, | ||
2824 | 38977.017940265461, | ||
2825 | 38995.753513232834, | ||
2826 | 39014.491336854699, | ||
2827 | 39033.231410590517, | ||
2828 | 39051.973733900079, | ||
2829 | 39070.718306243485, | ||
2830 | 39089.465127081188, | ||
2831 | 39108.214195873945, | ||
2832 | 39126.965512082832, | ||
2833 | 39145.719075169261, | ||
2834 | 39164.474884594965, | ||
2835 | 39183.232939821988, | ||
2836 | 39201.99324031271, | ||
2837 | 39220.755785529815, | ||
2838 | 39239.52057493633, | ||
2839 | 39258.287607995589, | ||
2840 | 39277.056884171245, | ||
2841 | 39295.828402927284, | ||
2842 | 39314.602163728006, | ||
2843 | 39333.378166038019, | ||
2844 | 39352.15640932227, | ||
2845 | 39370.936893046004, | ||
2846 | 39389.719616674811, | ||
2847 | 39408.504579674584, | ||
2848 | 39427.291781511522, | ||
2849 | 39446.081221652174, | ||
2850 | 39464.872899563372, | ||
2851 | 39483.666814712291, | ||
2852 | 39502.462966566411, | ||
2853 | 39521.261354593538, | ||
2854 | 39540.06197826178, | ||
2855 | 39558.864837039568, | ||
2856 | 39577.669930395656, | ||
2857 | 39596.47725779911, | ||
2858 | 39615.286818719302, | ||
2859 | 39634.098612625923, | ||
2860 | 39652.912638988993, | ||
2861 | 39671.728897278823, | ||
2862 | 39690.547386966064, | ||
2863 | 39709.368107521652, | ||
2864 | 39728.191058416858, | ||
2865 | 39747.016239123259, | ||
2866 | 39765.84364911275, | ||
2867 | 39784.673287857528, | ||
2868 | 39803.505154830105, | ||
2869 | 39822.339249503319, | ||
2870 | 39841.175571350293, | ||
2871 | 39860.014119844491, | ||
2872 | 39878.854894459677, | ||
2873 | 39897.697894669909, | ||
2874 | 39916.54311994958, | ||
2875 | 39935.390569773372, | ||
2876 | 39954.240243616303, | ||
2877 | 39973.092140953675, | ||
2878 | 39991.946261261117, | ||
2879 | 40010.802604014549, | ||
2880 | 40029.661168690225, | ||
2881 | 40048.521954764678, | ||
2882 | 40067.384961714779, | ||
2883 | 40086.250189017679, | ||
2884 | 40105.117636150855, | ||
2885 | 40123.98730259209, | ||
2886 | 40142.859187819471, | ||
2887 | 40161.733291311379, | ||
2888 | 40180.609612546526, | ||
2889 | 40199.488151003912, | ||
2890 | 40218.368906162854, | ||
2891 | 40237.25187750296, | ||
2892 | 40256.137064504153, | ||
2893 | 40275.024466646668, | ||
2894 | 40293.914083411029, | ||
2895 | 40312.805914278084, | ||
2896 | 40331.699958728961, | ||
2897 | 40350.596216245103, | ||
2898 | 40369.494686308273, | ||
2899 | 40388.39536840051, | ||
2900 | 40407.298262004173, | ||
2901 | 40426.20336660192, | ||
2902 | 40445.110681676706, | ||
2903 | 40464.020206711793, | ||
2904 | 40482.931941190756, | ||
2905 | 40501.845884597446, | ||
2906 | 40520.762036416032, | ||
2907 | 40539.680396130985, | ||
2908 | 40558.600963227072, | ||
2909 | 40577.523737189367, | ||
2910 | 40596.448717503234, | ||
2911 | 40615.375903654342, | ||
2912 | 40634.305295128659, | ||
2913 | 40653.236891412453, | ||
2914 | 40672.170691992294, | ||
2915 | 40691.106696355047, | ||
2916 | 40710.044903987873, | ||
2917 | 40728.985314378238, | ||
2918 | 40747.927927013901, | ||
2919 | 40766.872741382918, | ||
2920 | 40785.819756973651, | ||
2921 | 40804.768973274746, | ||
2922 | 40823.720389775161, | ||
2923 | 40842.674005964131, | ||
2924 | 40861.629821331211, | ||
2925 | 40880.587835366234, | ||
2926 | 40899.548047559321, | ||
2927 | 40918.510457400931, | ||
2928 | 40937.475064381761, | ||
2929 | 40956.441867992849, | ||
2930 | 40975.410867725499, | ||
2931 | 40994.382063071331, | ||
2932 | 41013.355453522236, | ||
2933 | 41032.331038570417, | ||
2934 | 41051.308817708363, | ||
2935 | 41070.288790428858, | ||
2936 | 41089.270956224987, | ||
2937 | 41108.255314590111, | ||
2938 | 41127.241865017888, | ||
2939 | 41146.23060700229, | ||
2940 | 41165.221540037543, | ||
2941 | 41184.214663618193, | ||
2942 | 41203.209977239079, | ||
2943 | 41222.207480395307, | ||
2944 | 41241.207172582297, | ||
2945 | 41260.209053295752, | ||
2946 | 41279.213122031659, | ||
2947 | 41298.219378286303, | ||
2948 | 41317.227821556255, | ||
2949 | 41336.23845133838, | ||
2950 | 41355.251267129832, | ||
2951 | 41374.266268428037, | ||
2952 | 41393.283454730743, | ||
2953 | 41412.302825535953, | ||
2954 | 41431.324380341983, | ||
2955 | 41450.348118647416, | ||
2956 | 41469.374039951144, | ||
2957 | 41488.402143752326, | ||
2958 | 41507.432429550427, | ||
2959 | 41526.464896845187, | ||
2960 | 41545.499545136627, | ||
2961 | 41564.536373925075, | ||
2962 | 41583.575382711126, | ||
2963 | 41602.616570995662, | ||
2964 | 41621.659938279874, | ||
2965 | 41640.705484065205, | ||
2966 | 41659.753207853406, | ||
2967 | 41678.803109146495, | ||
2968 | 41697.855187446803, | ||
2969 | 41716.909442256911, | ||
2970 | 41735.965873079709, | ||
2971 | 41755.02447941836, | ||
2972 | 41774.085260776315, | ||
2973 | 41793.148216657297, | ||
2974 | 41812.213346565331, | ||
2975 | 41831.280650004708, | ||
2976 | 41850.350126480014, | ||
2977 | 41869.421775496106, | ||
2978 | 41888.495596558132, | ||
2979 | 41907.571589171515, | ||
2980 | 41926.649752841957, | ||
2981 | 41945.730087075463, | ||
2982 | 41964.812591378286, | ||
2983 | 41983.897265256979, | ||
2984 | 42002.984108218378, | ||
2985 | 42022.073119769593, | ||
2986 | 42041.164299418015, | ||
2987 | 42060.257646671307, | ||
2988 | 42079.353161037419, | ||
2989 | 42098.450842024591, | ||
2990 | 42117.550689141324, | ||
2991 | 42136.652701896404, | ||
2992 | 42155.756879798893, | ||
2993 | 42174.863222358137, | ||
2994 | 42193.971729083758, | ||
2995 | 42213.082399485655, | ||
2996 | 42232.195233074002, | ||
2997 | 42251.310229359246, | ||
2998 | 42270.427387852127, | ||
2999 | 42289.546708063644, | ||
3000 | 42308.668189505079, | ||
3001 | 42327.791831687995, | ||
3002 | 42346.917634124227, | ||
3003 | 42366.045596325886, | ||
3004 | 42385.175717805352, | ||
3005 | 42404.307998075295, | ||
3006 | 42423.442436648642, | ||
3007 | 42442.579033038608, | ||
3008 | 42461.717786758672, | ||
3009 | 42480.858697322597, | ||
3010 | 42500.001764244422, | ||
3011 | 42519.146987038446, | ||
3012 | 42538.294365219248, | ||
3013 | 42557.443898301688, | ||
3014 | 42576.595585800882, | ||
3015 | 42595.749427232236, | ||
3016 | 42614.90542211142, | ||
3017 | 42634.063569954378, | ||
3018 | 42653.223870277317, | ||
3019 | 42672.386322596729, | ||
3020 | 42691.55092642938, | ||
3021 | 42710.717681292292, | ||
3022 | 42729.886586702756, | ||
3023 | 42749.057642178363, | ||
3024 | 42768.23084723694, | ||
3025 | 42787.406201396603, | ||
3026 | 42806.58370417574, | ||
3027 | 42825.76335509299, | ||
3028 | 42844.945153667286, | ||
3029 | 42864.129099417805, | ||
3030 | 42883.315191864014, | ||
3031 | 42902.503430525649, | ||
3032 | 42921.693814922692, | ||
3033 | 42940.88634457541, | ||
3034 | 42960.081019004348, | ||
3035 | 42979.277837730297, | ||
3036 | 42998.476800274322, | ||
3037 | 43017.677906157769, | ||
3038 | 43036.881154902228, | ||
3039 | 43056.086546029583, | ||
3040 | 43075.294079061961, | ||
3041 | 43094.503753521763, | ||
3042 | 43113.715568931671, | ||
3043 | 43132.929524814601, | ||
3044 | 43152.145620693766, | ||
3045 | 43171.363856092619, | ||
3046 | 43190.584230534907, | ||
3047 | 43209.806743544621, | ||
3048 | 43229.031394646016, | ||
3049 | 43248.258183363621, | ||
3050 | 43267.487109222224, | ||
3051 | 43286.718171746885, | ||
3052 | 43305.951370462906, | ||
3053 | 43325.186704895881, | ||
3054 | 43344.42417457165, | ||
3055 | 43363.663779016322, | ||
3056 | 43382.905517756262, | ||
3057 | 43402.149390318104, | ||
3058 | 43421.395396228749, | ||
3059 | 43440.643535015348, | ||
3060 | 43459.89380620532, | ||
3061 | 43479.146209326354, | ||
3062 | 43498.400743906379, | ||
3063 | 43517.657409473606, | ||
3064 | 43536.916205556496, | ||
3065 | 43556.177131683784, | ||
3066 | 43575.44018738444, | ||
3067 | 43594.705372187724, | ||
3068 | 43613.972685623135, | ||
3069 | 43633.242127220445, | ||
3070 | 43652.513696509668, | ||
3071 | 43671.787393021099, | ||
3072 | 43691.063216285271, | ||
3073 | 43710.341165833001, | ||
3074 | 43729.621241195346, | ||
3075 | 43748.903441903625, | ||
3076 | 43768.187767489413, | ||
3077 | 43787.474217484552, | ||
3078 | 43806.762791421126, | ||
3079 | 43826.053488831501, | ||
3080 | 43845.346309248278, | ||
3081 | 43864.641252204325, | ||
3082 | 43883.938317232765, | ||
3083 | 43903.237503866971, | ||
3084 | 43922.538811640596, | ||
3085 | 43941.842240087513, | ||
3086 | 43961.147788741881, | ||
3087 | 43980.455457138101, | ||
3088 | 43999.765244810835, | ||
3089 | 44019.077151295001, | ||
3090 | 44038.391176125755, | ||
3091 | 44057.70731883854, | ||
3092 | 44077.02557896902, | ||
3093 | 44096.345956053141, | ||
3094 | 44115.668449627083, | ||
3095 | 44134.993059227287, | ||
3096 | 44154.319784390456, | ||
3097 | 44173.648624653535, | ||
3098 | 44192.979579553728, | ||
3099 | 44212.312648628489, | ||
3100 | 44231.647831415532, | ||
3101 | 44250.985127452805, | ||
3102 | 44270.324536278538, | ||
3103 | 44289.666057431183, | ||
3104 | 44309.009690449464, | ||
3105 | 44328.355434872348, | ||
3106 | 44347.703290239064, | ||
3107 | 44367.053256089079, | ||
3108 | 44386.405331962109, | ||
3109 | 44405.759517398139, | ||
3110 | 44425.115811937387, | ||
3111 | 44444.474215120332, | ||
3112 | 44463.834726487694, | ||
3113 | 44483.197345580462, | ||
3114 | 44502.562071939843, | ||
3115 | 44521.928905107328, | ||
3116 | 44541.297844624634, | ||
3117 | 44560.668890033732, | ||
3118 | 44580.042040876848, | ||
3119 | 44599.417296696454, | ||
3120 | 44618.794657035272, | ||
3121 | 44638.174121436256, | ||
3122 | 44657.555689442641, | ||
3123 | 44676.939360597877, | ||
3124 | 44696.325134445673, | ||
3125 | 44715.713010530002, | ||
3126 | 44735.102988395054, | ||
3127 | 44754.495067585296, | ||
3128 | 44773.88924764542, | ||
3129 | 44793.285528120374, | ||
3130 | 44812.683908555344, | ||
3131 | 44832.084388495779, | ||
3132 | 44851.486967487363, | ||
3133 | 44870.891645076015, | ||
3134 | 44890.298420807922, | ||
3135 | 44909.707294229491, | ||
3136 | 44929.118264887409, | ||
3137 | 44948.531332328566, | ||
3138 | 44967.946496100136, | ||
3139 | 44987.363755749502, | ||
3140 | 45006.783110824319, | ||
3141 | 45026.204560872473, | ||
3142 | 45045.628105442098, | ||
3143 | 45065.053744081561, | ||
3144 | 45084.48147633949, | ||
3145 | 45103.911301764747, | ||
3146 | 45123.343219906426, | ||
3147 | 45142.777230313885, | ||
3148 | 45162.21333253671, | ||
3149 | 45181.651526124733, | ||
3150 | 45201.091810628037, | ||
3151 | 45220.534185596924, | ||
3152 | 45239.978650581965, | ||
3153 | 45259.425205133957, | ||
3154 | 45278.873848803938, | ||
3155 | 45298.324581143192, | ||
3156 | 45317.777401703235, | ||
3157 | 45337.232310035848, | ||
3158 | 45356.68930569302, | ||
3159 | 45376.148388226997, | ||
3160 | 45395.60955719027, | ||
3161 | 45415.072812135557, | ||
3162 | 45434.538152615823, | ||
3163 | 45454.005578184282, | ||
3164 | 45473.475088394356, | ||
3165 | 45492.946682799746, | ||
3166 | 45512.420360954362, | ||
3167 | 45531.896122412363, | ||
3168 | 45551.373966728155, | ||
3169 | 45570.853893456362, | ||
3170 | 45590.33590215187, | ||
3171 | 45609.819992369776, | ||
3172 | 45629.306163665438, | ||
3173 | 45648.794415594442, | ||
3174 | 45668.284747712612, | ||
3175 | 45687.777159576006, | ||
3176 | 45707.27165074092, | ||
3177 | 45726.768220763894, | ||
3178 | 45746.266869201696, | ||
3179 | 45765.767595611323, | ||
3180 | 45785.270399550034, | ||
3181 | 45804.775280575297, | ||
3182 | 45824.282238244828, | ||
3183 | 45843.79127211657, | ||
3184 | 45863.302381748719, | ||
3185 | 45882.815566699683, | ||
3186 | 45902.33082652813, | ||
3187 | 45921.848160792935, | ||
3188 | 45941.367569053225, | ||
3189 | 45960.889050868354, | ||
3190 | 45980.41260579793, | ||
3191 | 45999.938233401757, | ||
3192 | 46019.465933239902, | ||
3193 | 46038.995704872657, | ||
3194 | 46058.527547860547, | ||
3195 | 46078.06146176433, | ||
3196 | 46097.597446144995, | ||
3197 | 46117.135500563774, | ||
3198 | 46136.675624582109, | ||
3199 | 46156.217817761702, | ||
3200 | 46175.762079664462, | ||
3201 | 46195.308409852543, | ||
3202 | 46214.856807888333, | ||
3203 | 46234.407273334444, | ||
3204 | 46253.959805753715, | ||
3205 | 46273.51440470924, | ||
3206 | 46293.071069764315, | ||
3207 | 46312.629800482478, | ||
3208 | 46332.190596427499, | ||
3209 | 46351.753457163381, | ||
3210 | 46371.318382254351, | ||
3211 | 46390.885371264863, | ||
3212 | 46410.45442375962, | ||
3213 | 46430.025539303526, | ||
3214 | 46449.598717461733, | ||
3215 | 46469.17395779962, | ||
3216 | 46488.751259882782, | ||
3217 | 46508.33062327707, | ||
3218 | 46527.912047548532, | ||
3219 | 46547.495532263471, | ||
3220 | 46567.081076988397, | ||
3221 | 46586.668681290059, | ||
3222 | 46606.258344735434, | ||
3223 | 46625.850066891719, | ||
3224 | 46645.443847326351, | ||
3225 | 46665.039685606986, | ||
3226 | 46684.637581301497, | ||
3227 | 46704.237533978005, | ||
3228 | 46723.839543204842, | ||
3229 | 46743.443608550573, | ||
3230 | 46763.049729583989, | ||
3231 | 46782.657905874104, | ||
3232 | 46802.268136990162, | ||
3233 | 46821.880422501628, | ||
3234 | 46841.494761978196, | ||
3235 | 46861.111154989776, | ||
3236 | 46880.729601106526, | ||
3237 | 46900.350099898795, | ||
3238 | 46919.97265093719, | ||
3239 | 46939.597253792526, | ||
3240 | 46959.223908035841, | ||
3241 | 46978.852613238392, | ||
3242 | 46998.483368971691, | ||
3243 | 47018.11617480743, | ||
3244 | 47037.751030317551, | ||
3245 | 47057.387935074221, | ||
3246 | 47077.026888649809, | ||
3247 | 47096.66789061694, | ||
3248 | 47116.310940548428, | ||
3249 | 47135.956038017328, | ||
3250 | 47155.603182596918, | ||
3251 | 47175.252373860698, | ||
3252 | 47194.903611382375, | ||
3253 | 47214.556894735892, | ||
3254 | 47234.212223495422, | ||
3255 | 47253.869597235338, | ||
3256 | 47273.52901553025, | ||
3257 | 47293.19047795498, | ||
3258 | 47312.853984084577, | ||
3259 | 47332.519533494306, | ||
3260 | 47352.187125759658, | ||
3261 | 47371.856760456343, | ||
3262 | 47391.528437160297, | ||
3263 | 47411.202155447652, | ||
3264 | 47430.877914894787, | ||
3265 | 47450.555715078299, | ||
3266 | 47470.235555574982, | ||
3267 | 47489.917435961863, | ||
3268 | 47509.601355816201, | ||
3269 | 47529.287314715453, | ||
3270 | 47548.975312237308, | ||
3271 | 47568.665347959672, | ||
3272 | 47588.357421460656, | ||
3273 | 47608.051532318605, | ||
3274 | 47627.747680112072, | ||
3275 | 47647.445864419846, | ||
3276 | 47667.14608482091, | ||
3277 | 47686.848340894474, | ||
3278 | 47706.552632219973, | ||
3279 | 47726.258958377046, | ||
3280 | 47745.967318945557, | ||
3281 | 47765.677713505589, | ||
3282 | 47785.390141637428, | ||
3283 | 47805.104602921601, | ||
3284 | 47824.821096938824, | ||
3285 | 47844.539623270044, | ||
3286 | 47864.260181496429, | ||
3287 | 47883.982771199349, | ||
3288 | 47903.707391960394, | ||
3289 | 47923.434043361369, | ||
3290 | 47943.162724984308, | ||
3291 | 47962.893436411439, | ||
3292 | 47982.626177225218, | ||
3293 | 48002.36094700831, | ||
3294 | 48022.097745343599, | ||
3295 | 48041.836571814172, | ||
3296 | 48061.57742600335, | ||
3297 | 48081.32030749465, | ||
3298 | 48101.065215871815, | ||
3299 | 48120.81215071879, | ||
3300 | 48140.56111161974, | ||
3301 | 48160.312098159047, | ||
3302 | 48180.065109921306, | ||
3303 | 48199.820146491307, | ||
3304 | 48219.577207454073, | ||
3305 | 48239.336292394844, | ||
3306 | 48259.097400899045, | ||
3307 | 48278.860532552339, | ||
3308 | 48298.625686940592, | ||
3309 | 48318.392863649875, | ||
3310 | 48338.162062266485, | ||
3311 | 48357.933282376915, | ||
3312 | 48377.706523567889, | ||
3313 | 48397.481785426316, | ||
3314 | 48417.259067539344, | ||
3315 | 48437.038369494308, | ||
3316 | 48456.819690878765, | ||
3317 | 48476.603031280487, | ||
3318 | 48496.388390287451, | ||
3319 | 48516.175767487839, | ||
3320 | 48535.965162470042, | ||
3321 | 48555.756574822684, | ||
3322 | 48575.550004134566, | ||
3323 | 48595.345449994718, | ||
3324 | 48615.142911992378, | ||
3325 | 48634.942389716991, | ||
3326 | 48654.743882758201, | ||
3327 | 48674.547390705877, | ||
3328 | 48694.352913150084, | ||
3329 | 48714.160449681112, | ||
3330 | 48733.969999889443, | ||
3331 | 48753.781563365759, | ||
3332 | 48773.595139700978, | ||
3333 | 48793.410728486211, | ||
3334 | 48813.228329312769, | ||
3335 | 48833.047941772187, | ||
3336 | 48852.869565456189, | ||
3337 | 48872.693199956717, | ||
3338 | 48892.518844865925, | ||
3339 | 48912.346499776155, | ||
3340 | 48932.176164279976, | ||
3341 | 48952.007837970152, | ||
3342 | 48971.841520439666, | ||
3343 | 48991.677211281676, | ||
3344 | 49011.514910089587, | ||
3345 | 49031.354616456978, | ||
3346 | 49051.196329977654, | ||
3347 | 49071.04005024561, | ||
3348 | 49090.885776855059, | ||
3349 | 49110.733509400408, | ||
3350 | 49130.583247476279, | ||
3351 | 49150.434990677488, | ||
3352 | 49170.288738599062, | ||
3353 | 49190.144490836232, | ||
3354 | 49210.002246984441, | ||
3355 | 49229.86200663932, | ||
3356 | 49249.723769396718, | ||
3357 | 49269.587534852675, | ||
3358 | 49289.453302603448, | ||
3359 | 49309.32107224549, | ||
3360 | 49329.190843375451, | ||
3361 | 49349.062615590192, | ||
3362 | 49368.936388486785, | ||
3363 | 49388.812161662492, | ||
3364 | 49408.689934714785, | ||
3365 | 49428.569707241324, | ||
3366 | 49448.45147883999, | ||
3367 | 49468.335249108866, | ||
3368 | 49488.22101764621, | ||
3369 | 49508.108784050521, | ||
3370 | 49527.99854792047, | ||
3371 | 49547.890308854934, | ||
3372 | 49567.784066453009, | ||
3373 | 49587.679820313977, | ||
3374 | 49607.57757003732, | ||
3375 | 49627.477315222721, | ||
3376 | 49647.379055470075, | ||
3377 | 49667.28279037946, | ||
3378 | 49687.188519551179, | ||
3379 | 49707.096242585707, | ||
3380 | 49727.005959083741, | ||
3381 | 49746.917668646165, | ||
3382 | 49766.831370874068, | ||
3383 | 49786.747065368734, | ||
3384 | 49806.66475173166, | ||
3385 | 49826.584429564515, | ||
3386 | 49846.506098469203, | ||
3387 | 49866.429758047794, | ||
3388 | 49886.355407902578, | ||
3389 | 49906.283047636032, | ||
3390 | 49926.212676850846, | ||
3391 | 49946.144295149883, | ||
3392 | 49966.077902136225, | ||
3393 | 49986.013497413151, | ||
3394 | 50005.951080584135, | ||
3395 | 50025.890651252834, | ||
3396 | 50045.832209023123, | ||
3397 | 50065.775753499074, | ||
3398 | 50085.721284284933, | ||
3399 | 50105.668800985164, | ||
3400 | 50125.618303204428, | ||
3401 | 50145.569790547575, | ||
3402 | 50165.523262619652, | ||
3403 | 50185.478719025901, | ||
3404 | 50205.436159371769, | ||
3405 | 50225.395583262893, | ||
3406 | 50245.356990305103, | ||
3407 | 50265.320380104429, | ||
3408 | 50285.285752267104, | ||
3409 | 50305.253106399534, | ||
3410 | 50325.222442108337, | ||
3411 | 50345.193759000336, | ||
3412 | 50365.16705668252, | ||
3413 | 50385.142334762102, | ||
3414 | 50405.119592846473, | ||
3415 | 50425.098830543218, | ||
3416 | 50445.080047460127, | ||
3417 | 50465.063243205179, | ||
3418 | 50485.048417386541, | ||
3419 | 50505.035569612577, | ||
3420 | 50525.024699491856, | ||
3421 | 50545.015806633128, | ||
3422 | 50565.008890645338, | ||
3423 | 50585.003951137631, | ||
3424 | 50605.00098771933, | ||
3425 | 50624.999999999971, | ||
3426 | 50645.000987589265, | ||
3427 | 50665.003950097132, | ||
3428 | 50685.008887133677, | ||
3429 | 50705.015798309192, | ||
3430 | 50725.024683234165, | ||
3431 | 50745.035541519283, | ||
3432 | 50765.048372775411, | ||
3433 | 50785.063176613621, | ||
3434 | 50805.079952645159, | ||
3435 | 50825.098700481489, | ||
3436 | 50845.119419734241, | ||
3437 | 50865.142110015244, | ||
3438 | 50885.166770936521, | ||
3439 | 50905.193402110279, | ||
3440 | 50925.222003148934, | ||
3441 | 50945.252573665071, | ||
3442 | 50965.285113271471, | ||
3443 | 50985.319621581119, | ||
3444 | 51005.356098207172, | ||
3445 | 51025.394542762981, | ||
3446 | 51045.434954862096, | ||
3447 | 51065.477334118244, | ||
3448 | 51085.521680145357, | ||
3449 | 51105.567992557546, | ||
3450 | 51125.616270969113, | ||
3451 | 51145.66651499454, | ||
3452 | 51165.718724248516, | ||
3453 | 51185.772898345916, | ||
3454 | 51205.829036901778, | ||
3455 | 51225.887139531362, | ||
3456 | 51245.947205850105, | ||
3457 | 51266.009235473619, | ||
3458 | 51286.073228017718, | ||
3459 | 51306.139183098399, | ||
3460 | 51326.207100331856, | ||
3461 | 51346.276979334456, | ||
3462 | 51366.348819722756, | ||
3463 | 51386.42262111351, | ||
3464 | 51406.498383123653, | ||
3465 | 51426.57610537031, | ||
3466 | 51446.655787470787, | ||
3467 | 51466.737429042587, | ||
3468 | 51486.82102970338, | ||
3469 | 51506.906589071048, | ||
3470 | 51526.994106763632, | ||
3471 | 51547.083582399391, | ||
3472 | 51567.175015596738, | ||
3473 | 51587.268405974297, | ||
3474 | 51607.363753150858, | ||
3475 | 51627.461056745415, | ||
3476 | 51647.56031637713, | ||
3477 | 51667.661531665362, | ||
3478 | 51687.764702229651, | ||
3479 | 51707.869827689727, | ||
3480 | 51727.976907665499, | ||
3481 | 51748.085941777055, | ||
3482 | 51768.196929644677, | ||
3483 | 51788.309870888836, | ||
3484 | 51808.42476513017, | ||
3485 | 51828.541611989524, | ||
3486 | 51848.660411087905, | ||
3487 | 51868.781162046515, | ||
3488 | 51888.90386448674, | ||
3489 | 51909.028518030143, | ||
3490 | 51929.155122298485, | ||
3491 | 51949.283676913685, | ||
3492 | 51969.414181497872, | ||
3493 | 51989.546635673345, | ||
3494 | 52009.681039062583, | ||
3495 | 52029.817391288263, | ||
3496 | 52049.955691973213, | ||
3497 | 52070.095940740481, | ||
3498 | 52090.238137213273, | ||
3499 | 52110.382281014987, | ||
3500 | 52130.5283717692, | ||
3501 | 52150.676409099666, | ||
3502 | 52170.826392630333, | ||
3503 | 52190.97832198532, | ||
3504 | 52211.132196788931, | ||
3505 | 52231.288016665654, | ||
3506 | 52251.445781240145, | ||
3507 | 52271.60549013727, | ||
3508 | 52291.76714298204, | ||
3509 | 52311.930739399664, | ||
3510 | 52332.096279015546, | ||
3511 | 52352.263761455244, | ||
3512 | 52372.433186344519, | ||
3513 | 52392.604553309284, | ||
3514 | 52412.777861975665, | ||
3515 | 52432.953111969946, | ||
3516 | 52453.130302918595, | ||
3517 | 52473.309434448267, | ||
3518 | 52493.490506185793, | ||
3519 | 52513.67351775818, | ||
3520 | 52533.858468792605, | ||
3521 | 52554.045358916446, | ||
3522 | 52574.234187757254, | ||
3523 | 52594.42495494274, | ||
3524 | 52614.617660100812, | ||
3525 | 52634.812302859558, | ||
3526 | 52655.008882847229, | ||
3527 | 52675.20739969227, | ||
3528 | 52695.407853023295, | ||
3529 | 52715.610242469098, | ||
3530 | 52735.814567658657, | ||
3531 | 52756.02082822111, | ||
3532 | 52776.229023785803, | ||
3533 | 52796.439153982225, | ||
3534 | 52816.651218440056, | ||
3535 | 52836.865216789171, | ||
3536 | 52857.081148659599, | ||
3537 | 52877.29901368155, | ||
3538 | 52897.518811485425, | ||
3539 | 52917.740541701773, | ||
3540 | 52937.964203961354, | ||
3541 | 52958.18979789508, | ||
3542 | 52978.417323134046, | ||
3543 | 52998.646779309529, | ||
3544 | 53018.878166052978, | ||
3545 | 53039.111482996006, | ||
3546 | 53059.346729770419, | ||
3547 | 53079.583906008193, | ||
3548 | 53099.823011341483, | ||
3549 | 53120.0640454026, | ||
3550 | 53140.307007824063, | ||
3551 | 53160.551898238533, | ||
3552 | 53180.79871627887, | ||
3553 | 53201.047461578091, | ||
3554 | 53221.2981337694, | ||
3555 | 53241.550732486176, | ||
3556 | 53261.805257361964, | ||
3557 | 53282.061708030487, | ||
3558 | 53302.32008412564, | ||
3559 | 53322.580385281493, | ||
3560 | 53342.842611132299, | ||
3561 | 53363.106761312469, | ||
3562 | 53383.372835456597, | ||
3563 | 53403.640833199453, | ||
3564 | 53423.910754175973, | ||
3565 | 53444.18259802126, | ||
3566 | 53464.456364370613, | ||
3567 | 53484.732052859479, | ||
3568 | 53505.009663123499, | ||
3569 | 53525.289194798468, | ||
3570 | 53545.570647520362, | ||
3571 | 53565.854020925333, | ||
3572 | 53586.139314649699, | ||
3573 | 53606.426528329954, | ||
3574 | 53626.715661602764, | ||
3575 | 53647.006714104959, | ||
3576 | 53667.299685473547, | ||
3577 | 53687.59457534572, | ||
3578 | 53707.891383358816, | ||
3579 | 53728.190109150361, | ||
3580 | 53748.490752358055, | ||
3581 | 53768.793312619753, | ||
3582 | 53789.09778957349, | ||
3583 | 53809.404182857485, | ||
3584 | 53829.712492110106, | ||
3585 | 53850.022716969899, | ||
3586 | 53870.334857075584, | ||
3587 | 53890.648912066055, | ||
3588 | 53910.964881580367, | ||
3589 | 53931.28276525774, | ||
3590 | 53951.602562737586, | ||
3591 | 53971.924273659461, | ||
3592 | 53992.24789766311, | ||
3593 | 54012.57343438844, | ||
3594 | 54032.90088347553, | ||
3595 | 54053.23024456462, | ||
3596 | 54073.561517296133, | ||
3597 | 54093.894701310644, | ||
3598 | 54114.22979624891, | ||
3599 | 54134.566801751855, | ||
3600 | 54154.90571746057, | ||
3601 | 54175.246543016314, | ||
3602 | 54195.589278060506, | ||
3603 | 54215.933922234755, | ||
3604 | 54236.280475180814, | ||
3605 | 54256.628936540626, | ||
3606 | 54276.97930595628, | ||
3607 | 54297.331583070045, | ||
3608 | 54317.685767524359, | ||
3609 | 54338.041858961828, | ||
3610 | 54358.399857025215, | ||
3611 | 54378.759761357462, | ||
3612 | 54399.121571601667, | ||
3613 | 54419.485287401105, | ||
3614 | 54439.850908399218, | ||
3615 | 54460.218434239614, | ||
3616 | 54480.587864566056, | ||
3617 | 54500.95919902248, | ||
3618 | 54521.332437252997, | ||
3619 | 54541.707578901878, | ||
3620 | 54562.084623613555, | ||
3621 | 54582.46357103264, | ||
3622 | 54602.844420803893, | ||
3623 | 54623.227172572246, | ||
3624 | 54643.611825982807, | ||
3625 | 54663.998380680838, | ||
3626 | 54684.386836311773, | ||
3627 | 54704.777192521207, | ||
3628 | 54725.169448954897, | ||
3629 | 54745.563605258772, | ||
3630 | 54765.959661078923, | ||
3631 | 54786.357616061614, | ||
3632 | 54806.757469853255, | ||
3633 | 54827.159222100439, | ||
3634 | 54847.562872449904, | ||
3635 | 54867.968420548583, | ||
3636 | 54888.375866043534, | ||
3637 | 54908.785208582012, | ||
3638 | 54929.196447811417, | ||
3639 | 54949.609583379322, | ||
3640 | 54970.024614933463, | ||
3641 | 54990.441542121727, | ||
3642 | 55010.86036459219, | ||
3643 | 55031.28108199306, | ||
3644 | 55051.703693972733, | ||
3645 | 55072.128200179759, | ||
3646 | 55092.554600262847, | ||
3647 | 55112.982893870874, | ||
3648 | 55133.413080652877, | ||
3649 | 55153.845160258061, | ||
3650 | 55174.279132335789, | ||
3651 | 55194.714996535586, | ||
3652 | 55215.152752507143, | ||
3653 | 55235.592399900306, | ||
3654 | 55256.033938365079, | ||
3655 | 55276.477367551655, | ||
3656 | 55296.92268711036, | ||
3657 | 55317.369896691685, | ||
3658 | 55337.818995946305, | ||
3659 | 55358.269984525024, | ||
3660 | 55378.72286207883, | ||
3661 | 55399.177628258869, | ||
3662 | 55419.634282716441, | ||
3663 | 55440.092825103013, | ||
3664 | 55460.553255070205, | ||
3665 | 55481.015572269804, | ||
3666 | 55501.479776353764, | ||
3667 | 55521.945866974187, | ||
3668 | 55542.413843783339, | ||
3669 | 55562.883706433655, | ||
3670 | 55583.355454577715, | ||
3671 | 55603.82908786826, | ||
3672 | 55624.304605958219, | ||
3673 | 55644.782008500639, | ||
3674 | 55665.261295148754, | ||
3675 | 55685.742465555952, | ||
3676 | 55706.225519375774, | ||
3677 | 55726.710456261928, | ||
3678 | 55747.197275868275, | ||
3679 | 55767.685977848843, | ||
3680 | 55788.176561857814, | ||
3681 | 55808.669027549528, | ||
3682 | 55829.163374578478, | ||
3683 | 55849.659602599328, | ||
3684 | 55870.157711266889, | ||
3685 | 55890.657700236145, | ||
3686 | 55911.159569162221, | ||
3687 | 55931.663317700411, | ||
3688 | 55952.168945506164, | ||
3689 | 55972.676452235086, | ||
3690 | 55993.185837542944, | ||
3691 | 56013.697101085651, | ||
3692 | 56034.210242519301, | ||
3693 | 56054.72526150012, | ||
3694 | 56075.242157684508, | ||
3695 | 56095.760930729011, | ||
3696 | 56116.281580290342, | ||
3697 | 56136.804106025367, | ||
3698 | 56157.328507591104, | ||
3699 | 56177.85478464474, | ||
3700 | 56198.382936843598, | ||
3701 | 56218.912963845185, | ||
3702 | 56239.444865307138, | ||
3703 | 56259.978640887268, | ||
3704 | 56280.514290243525, | ||
3705 | 56301.051813034042, | ||
3706 | 56321.591208917082, | ||
3707 | 56342.13247755108, | ||
3708 | 56362.675618594607, | ||
3709 | 56383.220631706419, | ||
3710 | 56403.767516545398, | ||
3711 | 56424.316272770608, | ||
3712 | 56444.866900041241, | ||
3713 | 56465.419398016667, | ||
3714 | 56485.973766356394, | ||
3715 | 56506.530004720102, | ||
3716 | 56527.088112767611, | ||
3717 | 56547.648090158902, | ||
3718 | 56568.209936554107, | ||
3719 | 56588.773651613519, | ||
3720 | 56609.339234997584, | ||
3721 | 56629.9066863669, | ||
3722 | 56650.47600538221, | ||
3723 | 56671.04719170442, | ||
3724 | 56691.620244994599, | ||
3725 | 56712.195164913959, | ||
3726 | 56732.771951123868, | ||
3727 | 56753.350603285835, | ||
3728 | 56773.931121061541, | ||
3729 | 56794.513504112823, | ||
3730 | 56815.097752101647, | ||
3731 | 56835.683864690152, | ||
3732 | 56856.271841540627, | ||
3733 | 56876.86168231551, | ||
3734 | 56897.453386677393, | ||
3735 | 56918.046954289028, | ||
3736 | 56938.642384813298, | ||
3737 | 56959.239677913261, | ||
3738 | 56979.838833252121, | ||
3739 | 57000.439850493225, | ||
3740 | 57021.04272930009, | ||
3741 | 57041.647469336371, | ||
3742 | 57062.254070265873, | ||
3743 | 57082.862531752558, | ||
3744 | 57103.472853460553, | ||
3745 | 57124.085035054108, | ||
3746 | 57144.699076197649, | ||
3747 | 57165.314976555739, | ||
3748 | 57185.932735793103, | ||
3749 | 57206.552353574611, | ||
3750 | 57227.173829565276, | ||
3751 | 57247.797163430281, | ||
3752 | 57268.42235483494, | ||
3753 | 57289.049403444733, | ||
3754 | 57309.678308925286, | ||
3755 | 57330.30907094237, | ||
3756 | 57350.941689161911, | ||
3757 | 57371.576163249985, | ||
3758 | 57392.212492872815, | ||
3759 | 57412.850677696784, | ||
3760 | 57433.490717388406, | ||
3761 | 57454.132611614368, | ||
3762 | 57474.776360041491, | ||
3763 | 57495.421962336746, | ||
3764 | 57516.069418167266, | ||
3765 | 57536.718727200314, | ||
3766 | 57557.36988910332, | ||
3767 | 57578.022903543861, | ||
3768 | 57598.677770189643, | ||
3769 | 57619.334488708548, | ||
3770 | 57639.993058768589, | ||
3771 | 57660.653480037938, | ||
3772 | 57681.315752184906, | ||
3773 | 57701.979874877965, | ||
3774 | 57722.64584778573, | ||
3775 | 57743.31367057695, | ||
3776 | 57763.983342920546, | ||
3777 | 57784.654864485572, | ||
3778 | 57805.328234941233, | ||
3779 | 57826.003453956881, | ||
3780 | 57846.680521202026, | ||
3781 | 57867.359436346305, | ||
3782 | 57888.040199059527, | ||
3783 | 57908.722809011633, | ||
3784 | 57929.407265872709, | ||
3785 | 57950.093569313001, | ||
3786 | 57970.781719002895, | ||
3787 | 57991.471714612911, | ||
3788 | 58012.16355581375, | ||
3789 | 58032.857242276223, | ||
3790 | 58053.552773671312, | ||
3791 | 58074.25014967013, | ||
3792 | 58094.949369943948, | ||
3793 | 58115.650434164185, | ||
3794 | 58136.353342002389, | ||
3795 | 58157.058093130276, | ||
3796 | 58177.764687219693, | ||
3797 | 58198.47312394264, | ||
3798 | 58219.183402971255, | ||
3799 | 58239.895523977837, | ||
3800 | 58260.609486634821, | ||
3801 | 58281.325290614775, | ||
3802 | 58302.042935590434, | ||
3803 | 58322.762421234678, | ||
3804 | 58343.483747220511, | ||
3805 | 58364.206913221096, | ||
3806 | 58384.931918909751, | ||
3807 | 58405.658763959924, | ||
3808 | 58426.3874480452, | ||
3809 | 58447.117970839339, | ||
3810 | 58467.85033201622, | ||
3811 | 58488.584531249864, | ||
3812 | 58509.320568214462, | ||
3813 | 58530.058442584334, | ||
3814 | 58550.798154033931, | ||
3815 | 58571.539702237875, | ||
3816 | 58592.283086870906, | ||
3817 | 58613.028307607929, | ||
3818 | 58633.775364123983, | ||
3819 | 58654.52425609425, | ||
3820 | 58675.274983194053, | ||
3821 | 58696.027545098877, | ||
3822 | 58716.781941484325, | ||
3823 | 58737.538172026158, | ||
3824 | 58758.296236400274, | ||
3825 | 58779.056134282728, | ||
3826 | 58799.817865349694, | ||
3827 | 58820.581429277503, | ||
3828 | 58841.346825742643, | ||
3829 | 58862.114054421712, | ||
3830 | 58882.883114991484, | ||
3831 | 58903.654007128847, | ||
3832 | 58924.426730510851, | ||
3833 | 58945.201284814684, | ||
3834 | 58965.977669717664, | ||
3835 | 58986.755884897269, | ||
3836 | 59007.535930031117, | ||
3837 | 59028.317804796949, | ||
3838 | 59049.101508872664, | ||
3839 | 59069.887041936301, | ||
3840 | 59090.674403666046, | ||
3841 | 59111.463593740213, | ||
3842 | 59132.254611837263, | ||
3843 | 59153.047457635803, | ||
3844 | 59173.84213081457, | ||
3845 | 59194.638631052461, | ||
3846 | 59215.436958028506, | ||
3847 | 59236.237111421855, | ||
3848 | 59257.039090911829, | ||
3849 | 59277.842896177877, | ||
3850 | 59298.648526899589, | ||
3851 | 59319.455982756685, | ||
3852 | 59340.26526342905, | ||
3853 | 59361.076368596696, | ||
3854 | 59381.889297939757, | ||
3855 | 59402.704051138542, | ||
3856 | 59423.520627873484, | ||
3857 | 59444.339027825139, | ||
3858 | 59465.159250674224, | ||
3859 | 59485.9812961016, | ||
3860 | 59506.805163788253, | ||
3861 | 59527.630853415307, | ||
3862 | 59548.458364664046, | ||
3863 | 59569.287697215863, | ||
3864 | 59590.118850752311, | ||
3865 | 59610.951824955089, | ||
3866 | 59631.786619506012, | ||
3867 | 59652.623234087048, | ||
3868 | 59673.461668380311, | ||
3869 | 59694.301922068029, | ||
3870 | 59715.143994832593, | ||
3871 | 59735.987886356525, | ||
3872 | 59756.833596322482, | ||
3873 | 59777.681124413255, | ||
3874 | 59798.530470311794, | ||
3875 | 59819.381633701159, | ||
3876 | 59840.234614264569, | ||
3877 | 59861.089411685381, | ||
3878 | 59881.94602564707, | ||
3879 | 59902.804455833269, | ||
3880 | 59923.664701927737, | ||
3881 | 59944.526763614384, | ||
3882 | 59965.390640577243, | ||
3883 | 59986.256332500488, | ||
3884 | 60007.123839068438, | ||
3885 | 60027.993159965539, | ||
3886 | 60048.864294876381, | ||
3887 | 60069.737243485688, | ||
3888 | 60090.612005478324, | ||
3889 | 60111.488580539284, | ||
3890 | 60132.366968353708, | ||
3891 | 60153.247168606867, | ||
3892 | 60174.129180984164, | ||
3893 | 60195.013005171153, | ||
3894 | 60215.898640853513, | ||
3895 | 60236.786087717061, | ||
3896 | 60257.675345447751, | ||
3897 | 60278.566413731671, | ||
3898 | 60299.459292255044, | ||
3899 | 60320.353980704247, | ||
3900 | 60341.25047876576, | ||
3901 | 60362.148786126229, | ||
3902 | 60383.048902472423, | ||
3903 | 60403.950827491237, | ||
3904 | 60424.854560869717, | ||
3905 | 60445.76010229504, | ||
3906 | 60466.667451454516, | ||
3907 | 60487.57660803559, | ||
3908 | 60508.487571725847, | ||
3909 | 60529.400342212997, | ||
3910 | 60550.314919184893, | ||
3911 | 60571.231302329521, | ||
3912 | 60592.149491335003, | ||
3913 | 60613.069485889588, | ||
3914 | 60633.991285681674, | ||
3915 | 60654.914890399785, | ||
3916 | 60675.840299732568, | ||
3917 | 60696.767513368832, | ||
3918 | 60717.696530997484, | ||
3919 | 60738.627352307602, | ||
3920 | 60759.55997698837, | ||
3921 | 60780.494404729128, | ||
3922 | 60801.430635219323, | ||
3923 | 60822.368668148556, | ||
3924 | 60843.308503206565, | ||
3925 | 60864.250140083204, | ||
3926 | 60885.193578468468, | ||
3927 | 60906.138818052495, | ||
3928 | 60927.085858525541, | ||
3929 | 60948.034699578006, | ||
3930 | 60968.985340900421, | ||
3931 | 60989.937782183442, | ||
3932 | 61010.892023117864, | ||
3933 | 61031.848063394616, | ||
3934 | 61052.805902704764, | ||
3935 | 61073.765540739492, | ||
3936 | 61094.726977190134, | ||
3937 | 61115.690211748137, | ||
3938 | 61136.655244105103, | ||
3939 | 61157.622073952742, | ||
3940 | 61178.590700982917, | ||
3941 | 61199.561124887616, | ||
3942 | 61220.533345358948, | ||
3943 | 61241.507362089171, | ||
3944 | 61262.483174770663, | ||
3945 | 61283.460783095943, | ||
3946 | 61304.440186757645, | ||
3947 | 61325.421385448557, | ||
3948 | 61346.404378861582, | ||
3949 | 61367.389166689762, | ||
3950 | 61388.375748626262, | ||
3951 | 61409.364124364387, | ||
3952 | 61430.354293597571, | ||
3953 | 61451.346256019373, | ||
3954 | 61472.340011323497, | ||
3955 | 61493.335559203762, | ||
3956 | 61514.332899354122, | ||
3957 | 61535.332031468672, | ||
3958 | 61556.332955241618, | ||
3959 | 61577.335670367313, | ||
3960 | 61598.340176540238, | ||
3961 | 61619.346473454993, | ||
3962 | 61640.354560806329, | ||
3963 | 61661.3644382891, | ||
3964 | 61682.376105598312, | ||
3965 | 61703.389562429089, | ||
3966 | 61724.404808476691, | ||
3967 | 61745.42184343651, | ||
3968 | 61766.440667004063, | ||
3969 | 61787.461278874987, | ||
3970 | 61808.483678745069, | ||
3971 | 61829.507866310203, | ||
3972 | 61850.533841266435, | ||
3973 | 61871.561603309929, | ||
3974 | 61892.591152136971, | ||
3975 | 61913.622487443987, | ||
3976 | 61934.655608927525, | ||
3977 | 61955.690516284267, | ||
3978 | 61976.727209211022, | ||
3979 | 61997.765687404724, | ||
3980 | 62018.805950562448, | ||
3981 | 62039.847998381381, | ||
3982 | 62060.891830558845, | ||
3983 | 62081.93744679229, | ||
3984 | 62102.984846779298, | ||
3985 | 62124.034030217575, | ||
3986 | 62145.084996804966, | ||
3987 | 62166.137746239416, | ||
3988 | 62187.19227821903, | ||
3989 | 62208.248592442025, | ||
3990 | 62229.306688606739, | ||
3991 | 62250.366566411656, | ||
3992 | 62271.428225555377, | ||
3993 | 62292.491665736627, | ||
3994 | 62313.556886654267, | ||
3995 | 62334.623888007271, | ||
3996 | 62355.692669494762, | ||
3997 | 62376.763230815974, | ||
3998 | 62397.835571670272, | ||
3999 | 62418.909691757144, | ||
4000 | 62439.98559077621, | ||
4001 | 62461.063268427228, | ||
4002 | 62482.142724410049, | ||
4003 | 62503.223958424685, | ||
4004 | 62524.306970171267, | ||
4005 | 62545.39175935003, | ||
4006 | 62566.478325661366, | ||
4007 | 62587.566668805768, | ||
4008 | 62608.656788483881, | ||
4009 | 62629.748684396451, | ||
4010 | 62650.842356244357, | ||
4011 | 62671.937803728622, | ||
4012 | 62693.035026550366, | ||
4013 | 62714.134024410858, | ||
4014 | 62735.234797011479, | ||
4015 | 62756.337344053733, | ||
4016 | 62777.441665239276, | ||
4017 | 62798.547760269852, | ||
4018 | 62819.655628847358, | ||
4019 | 62840.765270673801, | ||
4020 | 62861.876685451323, | ||
4021 | 62882.989872882186, | ||
4022 | 62904.104832668774, | ||
4023 | 62925.221564513602, | ||
4024 | 62946.340068119309, | ||
4025 | 62967.460343188657, | ||
4026 | 62988.582389424526, | ||
4027 | 63009.70620652994, | ||
4028 | 63030.831794208025, | ||
4029 | 63051.959152162039, | ||
4030 | 63073.08828009537, | ||
4031 | 63094.219177711529, | ||
4032 | 63115.351844714154, | ||
4033 | 63136.486280806988, | ||
4034 | 63157.622485693922, | ||
4035 | 63178.760459078956, | ||
4036 | 63199.900200666219, | ||
4037 | 63221.041710159967, | ||
4038 | 63242.184987264569, | ||
4039 | 63263.330031684534, | ||
4040 | 63284.476843124474, | ||
4041 | 63305.625421289144, | ||
4042 | 63326.775765883409, | ||
4043 | 63347.927876612259, | ||
4044 | 63369.081753180813, | ||
4045 | 63390.237395294316, | ||
4046 | 63411.39480265812, | ||
4047 | 63432.553974977716, | ||
4048 | 63453.714911958712, | ||
4049 | 63474.877613306839, | ||
4050 | 63496.042078727944, | ||
4051 | 63517.208307927998, | ||
4052 | 63538.376300613119, | ||
4053 | 63559.546056489504, | ||
4054 | 63580.717575263516, | ||
4055 | 63601.890856641607, | ||
4056 | 63623.065900330374, | ||
4057 | 63644.242706036515, | ||
4058 | 63665.421273466869, | ||
4059 | 63686.601602328381, | ||
4060 | 63707.783692328136, | ||
4061 | 63728.967543173334, | ||
4062 | 63750.153154571279, | ||
4063 | 63771.340526229418, | ||
4064 | 63792.529657855317, | ||
4065 | 63813.720549156649, | ||
4066 | 63834.913199841227, | ||
4067 | 63856.107609616978, | ||
4068 | 63877.303778191941, | ||
4069 | 63898.501705274284, | ||
4070 | 63919.7013905723, | ||
4071 | 63940.902833794404, | ||
4072 | 63962.106034649114, | ||
4073 | 63983.310992845094, | ||
4074 | 64004.517708091109, | ||
4075 | 64025.726180096048, | ||
4076 | 64046.936408568938, | ||
4077 | 64068.1483932189, | ||
4078 | 64089.362133755196, | ||
4079 | 64110.577629887193, | ||
4080 | 64131.794881324393, | ||
4081 | 64153.013887776404, | ||
4082 | 64174.234648952966, | ||
4083 | 64195.457164563937, | ||
4084 | 64216.681434319289, | ||
4085 | 64237.907457929112, | ||
4086 | 64259.135235103626, | ||
4087 | 64280.36476555316, | ||
4088 | 64301.596048988169, | ||
4089 | 64322.829085119236, | ||
4090 | 64344.06387365704, | ||
4091 | 64365.300414312398, | ||
4092 | 64386.538706796251, | ||
4093 | 64407.778750819634, | ||
4094 | 64429.020546093721, | ||
4095 | 64450.26409232981, | ||
4096 | 64471.509389239291, | ||
4097 | 64492.756436533709, | ||
4098 | 64514.005233924705, | ||
4099 | 64535.255781124033, | ||
4100 | 64556.50807784358, | ||
4101 | 64577.762123795357, | ||
4102 | 64599.017918691468, | ||
4103 | 64620.275462244172, | ||
4104 | 64641.534754165805, | ||
4105 | 64662.795794168844, | ||
4106 | 64684.058581965895, | ||
4107 | 64705.323117269661, | ||
4108 | 64726.589399792974, | ||
4109 | 64747.857429248776, | ||
4110 | 64769.127205350138, | ||
4111 | 64790.398727810236, | ||
4112 | 64811.671996342375, | ||
4113 | 64832.947010659969, | ||
4114 | 64854.223770476558, | ||
4115 | 64875.502275505794, | ||
4116 | 64896.782525461451, | ||
4117 | 64918.064520057414, | ||
4118 | 64939.348259007682, | ||
4119 | 64960.633742026388, | ||
4120 | 64981.920968827762, | ||
4121 | 65003.209939126165, | ||
4122 | 65024.500652636067, | ||
4123 | 65045.793109072067, | ||
4124 | 65067.087308148861, | ||
4125 | 65088.383249581282, | ||
4126 | 65109.680933084259, | ||
4127 | 65130.980358372864, | ||
4128 | 65152.28152516226, | ||
4129 | 65173.584433167736, | ||
4130 | 65194.889082104703, | ||
4131 | 65216.195471688683, | ||
4132 | 65237.503601635319, | ||
4133 | 65258.813471660353, | ||
4134 | 65280.125081479666, | ||
4135 | 65301.438430809241, | ||
4136 | 65322.753519365178, | ||
4137 | 65344.070346863708, | ||
4138 | 65365.388913021146, | ||
4139 | 65386.709217553958, | ||
4140 | 65408.031260178701, | ||
4141 | 65429.355040612056, | ||
4142 | 65450.680558570821, | ||
4143 | 65472.00781377191, | ||
4144 | 65493.336805932355, | ||
4145 | 65514.66753476928, | ||
4146 | 65535.999999999956, | ||
4147 | 65557.334201341757, | ||
4148 | 65578.670138512171, | ||
4149 | 65600.007811228788, | ||
4150 | 65621.347219209332, | ||
4151 | 65642.688362171626, | ||
4152 | 65664.031239833639, | ||
4153 | 65685.375851913413, | ||
4154 | 65706.722198129137, | ||
4155 | 65728.070278199084, | ||
4156 | 65749.420091841661, | ||
4157 | 65770.771638775404, | ||
4158 | 65792.124918718939, | ||
4159 | 65813.479931391004, | ||
4160 | 65834.836676510458, | ||
4161 | 65856.195153796303, | ||
4162 | 65877.5553629676, | ||
4163 | 65898.917303743554, | ||
4164 | 65920.280975843489, | ||
4165 | 65941.646378986843, | ||
4166 | 65963.013512893158, | ||
4167 | 65984.382377282076, | ||
4168 | 66005.752971873386, | ||
4169 | 66027.125296386963, | ||
4170 | 66048.499350542799, | ||
4171 | 66069.875134061018, | ||
4172 | 66091.252646661844, | ||
4173 | 66112.631888065618, | ||
4174 | 66134.01285799277, | ||
4175 | 66155.395556163887, | ||
4176 | 66176.779982299631, | ||
4177 | 66198.166136120795, | ||
4178 | 66219.554017348273, | ||
4179 | 66240.943625703105, | ||
4180 | 66262.334960906388, | ||
4181 | 66283.728022679396, | ||
4182 | 66305.122810743444, | ||
4183 | 66326.519324820023, | ||
4184 | 66347.917564630698, | ||
4185 | 66369.317529897162, | ||
4186 | 66390.719220341227, | ||
4187 | 66412.122635684791, | ||
4188 | 66433.527775649884, | ||
4189 | 66454.934639958636, | ||
4190 | 66476.343228333324, | ||
4191 | 66497.753540496284, | ||
4192 | 66519.165576169995, | ||
4193 | 66540.57933507704, | ||
4194 | 66561.994816940118, | ||
4195 | 66583.412021482043, | ||
4196 | 66604.830948425733, | ||
4197 | 66626.251597494222, | ||
4198 | 66647.673968410629, | ||
4199 | 66669.098060898235, | ||
4200 | 66690.523874680381, | ||
4201 | 66711.951409480564, | ||
4202 | 66733.380665022371, | ||
4203 | 66754.811641029475, | ||
4204 | 66776.244337225711, | ||
4205 | 66797.678753334985, | ||
4206 | 66819.11488908132, | ||
4207 | 66840.552744188884, | ||
4208 | 66861.992318381905, | ||
4209 | 66883.433611384738, | ||
4210 | 66904.876622921889, | ||
4211 | 66926.321352717903, | ||
4212 | 66947.767800497502, | ||
4213 | 66969.215965985466, | ||
4214 | 66990.665848906734, | ||
4215 | 67012.117448986304, | ||
4216 | 67033.570765949335, | ||
4217 | 67055.025799521056, | ||
4218 | 67076.482549426815, | ||
4219 | 67097.941015392076, | ||
4220 | 67119.401197142433, | ||
4221 | 67140.863094403554, | ||
4222 | 67162.326706901222, | ||
4223 | 67183.792034361351, | ||
4224 | 67205.259076509959, | ||
4225 | 67226.72783307315, | ||
4226 | 67248.198303777172, | ||
4227 | 67269.670488348347, | ||
4228 | 67291.144386513144, | ||
4229 | 67312.619997998088, | ||
4230 | 67334.09732252988, | ||
4231 | 67355.576359835293, | ||
4232 | 67377.057109641188, | ||
4233 | 67398.53957167457, | ||
4234 | 67420.023745662547, | ||
4235 | 67441.50963133233, | ||
4236 | 67462.99722841123, | ||
4237 | 67484.486536626689, | ||
4238 | 67505.977555706224, | ||
4239 | 67527.470285377494, | ||
4240 | 67548.964725368263, | ||
4241 | 67570.460875406367, | ||
4242 | 67591.9587352198, | ||
4243 | 67613.458304536631, | ||
4244 | 67634.95958308503, | ||
4245 | 67656.462570593329, | ||
4246 | 67677.967266789899, | ||
4247 | 67699.473671403248, | ||
4248 | 67720.981784162024, | ||
4249 | 67742.491604794923, | ||
4250 | 67764.003133030797, | ||
4251 | 67785.516368598575, | ||
4252 | 67807.031311227314, | ||
4253 | 67828.547960646174, | ||
4254 | 67850.066316584402, | ||
4255 | 67871.58637877139, | ||
4256 | 67893.108146936589, | ||
4257 | 67914.63162080961, | ||
4258 | 67936.156800120138, | ||
4259 | 67957.683684597971, | ||
4260 | 67979.212273973011, | ||
4261 | 68000.742567975263, | ||
4262 | 68022.274566334876, | ||
4263 | 68043.808268782057, | ||
4264 | 68065.343675047145, | ||
4265 | 68086.880784860579, | ||
4266 | 68108.419597952918, | ||
4267 | 68129.960114054789, | ||
4268 | 68151.502332896969, | ||
4269 | 68173.04625421032, | ||
4270 | 68194.591877725834, | ||
4271 | 68216.139203174564, | ||
4272 | 68237.688230287706, | ||
4273 | 68259.238958796544, | ||
4274 | 68280.791388432481, | ||
4275 | 68302.345518927032, | ||
4276 | 68323.901350011787, | ||
4277 | 68345.458881418483, | ||
4278 | 68367.018112878912, | ||
4279 | 68388.579044125028, | ||
4280 | 68410.141674888844, | ||
4281 | 68431.706004902502, | ||
4282 | 68453.272033898262, | ||
4283 | 68474.839761608455, | ||
4284 | 68496.409187765545, | ||
4285 | 68517.980312102081, | ||
4286 | 68539.553134350732, | ||
4287 | 68561.127654244279, | ||
4288 | 68582.70387151558, | ||
4289 | 68604.281785897634, | ||
4290 | 68625.861397123503, | ||
4291 | 68647.44270492639, | ||
4292 | 68669.025709039604, | ||
4293 | 68690.610409196524, | ||
4294 | 68712.196805130661, | ||
4295 | 68733.784896575627, | ||
4296 | 68755.374683265123, | ||
4297 | 68776.966164932994, | ||
4298 | 68798.559341313128, | ||
4299 | 68820.154212139591, | ||
4300 | 68841.750777146473, | ||
4301 | 68863.349036068044, | ||
4302 | 68884.948988638629, | ||
4303 | 68906.550634592684, | ||
4304 | 68928.153973664739, | ||
4305 | 68949.75900558944, | ||
4306 | 68971.365730101577, | ||
4307 | 68992.974146935987, | ||
4308 | 69014.584255827634, | ||
4309 | 69036.196056511588, | ||
4310 | 69057.809548723017, | ||
4311 | 69079.424732197207, | ||
4312 | 69101.041606669532, | ||
4313 | 69122.660171875468, | ||
4314 | 69144.280427550606, | ||
4315 | 69165.902373430625, | ||
4316 | 69187.526009251334, | ||
4317 | 69209.151334748618, | ||
4318 | 69230.778349658474, | ||
4319 | 69252.40705371699, | ||
4320 | 69274.037446660412, | ||
4321 | 69295.669528225, | ||
4322 | 69317.303298147192, | ||
4323 | 69338.938756163494, | ||
4324 | 69360.575902010532, | ||
4325 | 69382.214735425005, | ||
4326 | 69403.855256143754, | ||
4327 | 69425.497463903681, | ||
4328 | 69447.141358441833, | ||
4329 | 69468.78693949533, | ||
4330 | 69490.434206801394, | ||
4331 | 69512.083160097391, | ||
4332 | 69533.733799120717, | ||
4333 | 69555.386123608929, | ||
4334 | 69577.04013329967, | ||
4335 | 69598.695827930685, | ||
4336 | 69620.353207239794, | ||
4337 | 69642.012270964973, | ||
4338 | 69663.67301884426, | ||
4339 | 69685.335450615792, | ||
4340 | 69706.999566017839, | ||
4341 | 69728.665364788743, | ||
4342 | 69750.332846666963, | ||
4343 | 69772.002011391058, | ||
4344 | 69793.672858699691, | ||
4345 | 69815.345388331611, | ||
4346 | 69837.019600025669, | ||
4347 | 69858.695493520849, | ||
4348 | 69880.373068556204, | ||
4349 | 69902.052324870907, | ||
4350 | 69923.733262204216, | ||
4351 | 69945.415880295492, | ||
4352 | 69967.100178884211, | ||
4353 | 69988.786157709939, | ||
4354 | 70010.473816512356, | ||
4355 | 70032.163155031216, | ||
4356 | 70053.854173006403, | ||
4357 | 70075.546870177874, | ||
4358 | 70097.241246285717, | ||
4359 | 70118.937301070109, | ||
4360 | 70140.635034271298, | ||
4361 | 70162.334445629691, | ||
4362 | 70184.035534885741, | ||
4363 | 70205.738301780017, | ||
4364 | 70227.442746053217, | ||
4365 | 70249.1488674461, | ||
4366 | 70270.856665699539, | ||
4367 | 70292.566140554511, | ||
4368 | 70314.277291752107, | ||
4369 | 70335.990119033493, | ||
4370 | 70357.704622139936, | ||
4371 | 70379.420800812819, | ||
4372 | 70401.138654793613, | ||
4373 | 70422.85818382389, | ||
4374 | 70444.579387645339, | ||
4375 | 70466.302265999722, | ||
4376 | 70488.026818628918, | ||
4377 | 70509.753045274876, | ||
4378 | 70531.480945679708, | ||
4379 | 70553.210519585555, | ||
4380 | 70574.941766734701, | ||
4381 | 70596.674686869505, | ||
4382 | 70618.409279732456, | ||
4383 | 70640.145545066101, | ||
4384 | 70661.883482613106, | ||
4385 | 70683.623092116264, | ||
4386 | 70705.364373318414, | ||
4387 | 70727.107325962526, | ||
4388 | 70748.851949791671, | ||
4389 | 70770.598244549008, | ||
4390 | 70792.346209977783, | ||
4391 | 70814.095845821372, | ||
4392 | 70835.847151823225, | ||
4393 | 70857.600127726895, | ||
4394 | 70879.354773276034, | ||
4395 | 70901.111088214413, | ||
4396 | 70922.869072285859, | ||
4397 | 70944.628725234332, | ||
4398 | 70966.390046803877, | ||
4399 | 70988.153036738629, | ||
4400 | 71009.917694782853, | ||
4401 | 71031.684020680885, | ||
4402 | 71053.45201417715, | ||
4403 | 71075.221675016204, | ||
4404 | 71096.993002942661, | ||
4405 | 71118.765997701266, | ||
4406 | 71140.540659036851, | ||
4407 | 71162.316986694335, | ||
4408 | 71184.09498041874, | ||
4409 | 71205.874639955218, | ||
4410 | 71227.655965048951, | ||
4411 | 71249.438955445294, | ||
4412 | 71271.223610889632, | ||
4413 | 71293.009931127483, | ||
4414 | 71314.797915904477, | ||
4415 | 71336.587564966307, | ||
4416 | 71358.378878058764, | ||
4417 | 71380.171854927772, | ||
4418 | 71401.966495319313, | ||
4419 | 71423.762798979486, | ||
4420 | 71445.560765654489, | ||
4421 | 71467.360395090596, | ||
4422 | 71489.161687034211, | ||
4423 | 71510.964641231811, | ||
4424 | 71532.769257429973, | ||
4425 | 71554.575535375348, | ||
4426 | 71576.383474814749, | ||
4427 | 71598.19307549503, | ||
4428 | 71620.004337163133, | ||
4429 | 71641.817259566145, | ||
4430 | 71663.631842451214, | ||
4431 | 71685.4480855656, | ||
4432 | 71707.26598865664, | ||
4433 | 71729.085551471784, | ||
4434 | 71750.906773758586, | ||
4435 | 71772.729655264673, | ||
4436 | 71794.554195737772, | ||
4437 | 71816.380394925713, | ||
4438 | 71838.208252576442, | ||
4439 | 71860.037768437964, | ||
4440 | 71881.868942258385, | ||
4441 | 71903.701773785942, | ||
4442 | 71925.536262768932, | ||
4443 | 71947.372408955751, | ||
4444 | 71969.210212094898, | ||
4445 | 71991.049671934976, | ||
4446 | 72012.890788224686, | ||
4447 | 72034.73356071279, | ||
4448 | 72056.577989148165, | ||
4449 | 72078.424073279821, | ||
4450 | 72100.271812856794, | ||
4451 | 72122.121207628254, | ||
4452 | 72143.97225734347, | ||
4453 | 72165.824961751801, | ||
4454 | 72187.679320602692, | ||
4455 | 72209.53533364569, | ||
4456 | 72231.393000630429, | ||
4457 | 72253.252321306645, | ||
4458 | 72275.113295424177, | ||
4459 | 72296.975922732949, | ||
4460 | 72318.840202982959, | ||
4461 | 72340.706135924338, | ||
4462 | 72362.573721307272, | ||
4463 | 72384.442958882093, | ||
4464 | 72406.313848399179, | ||
4465 | 72428.186389609036, | ||
4466 | 72450.060582262216, | ||
4467 | 72471.936426109431, | ||
4468 | 72493.813920901433, | ||
4469 | 72515.693066389096, | ||
4470 | 72537.573862323392, | ||
4471 | 72559.456308455352, | ||
4472 | 72581.340404536139, | ||
4473 | 72603.226150316987, | ||
4474 | 72625.113545549248, | ||
4475 | 72647.002589984331, | ||
4476 | 72668.893283373764, | ||
4477 | 72690.785625469172, | ||
4478 | 72712.679616022273, | ||
4479 | 72734.575254784853, | ||
4480 | 72756.472541508803, | ||
4481 | 72778.371475946144, | ||
4482 | 72800.272057848939, | ||
4483 | 72822.174286969355, | ||
4484 | 72844.07816305969, | ||
4485 | 72865.983685872285, | ||
4486 | 72887.890855159596, | ||
4487 | 72909.799670674183, | ||
4488 | 72931.710132168693, | ||
4489 | 72953.622239395845, | ||
4490 | 72975.535992108475, | ||
4491 | 72997.451390059519, | ||
4492 | 73019.368433001961, | ||
4493 | 73041.287120688925, | ||
4494 | 73063.207452873612, | ||
4495 | 73085.129429309294, | ||
4496 | 73107.053049749389, | ||
4497 | 73128.978313947344, | ||
4498 | 73150.905221656736, | ||
4499 | 73172.833772631217, | ||
4500 | 73194.763966624567, | ||
4501 | 73216.695803390612, | ||
4502 | 73238.62928268328, | ||
4503 | 73260.564404256627, | ||
4504 | 73282.501167864757, | ||
4505 | 73304.439573261901, | ||
4506 | 73326.379620202337, | ||
4507 | 73348.321308440485, | ||
4508 | 73370.264637730841, | ||
4509 | 73392.209607827957, | ||
4510 | 73414.156218486532, | ||
4511 | 73436.104469461323, | ||
4512 | 73458.054360507173, | ||
4513 | 73480.005891379056, | ||
4514 | 73501.959061831993, | ||
4515 | 73523.913871621116, | ||
4516 | 73545.870320501665, | ||
4517 | 73567.828408228932, | ||
4518 | 73589.78813455833, | ||
4519 | 73611.749499245358, | ||
4520 | 73633.712502045615, | ||
4521 | 73655.677142714747, | ||
4522 | 73677.643421008557, | ||
4523 | 73699.611336682879, | ||
4524 | 73721.580889493693, | ||
4525 | 73743.552079197019, | ||
4526 | 73765.524905548999, | ||
4527 | 73787.499368305856, | ||
4528 | 73809.475467223907, | ||
4529 | 73831.453202059551, | ||
4530 | 73853.432572569291, | ||
4531 | 73875.413578509717, | ||
4532 | 73897.396219637507, | ||
4533 | 73919.380495709411, | ||
4534 | 73941.36640648231, | ||
4535 | 73963.353951713143, | ||
4536 | 73985.343131158952, | ||
4537 | 74007.333944576865, | ||
4538 | 74029.326391724098, | ||
4539 | 74051.320472357969, | ||
4540 | 74073.316186235883, | ||
4541 | 74095.313533115303, | ||
4542 | 74117.312512753837, | ||
4543 | 74139.313124909138, | ||
4544 | 74161.315369338976, | ||
4545 | 74183.319245801191, | ||
4546 | 74205.324754053727, | ||
4547 | 74227.331893854629, | ||
4548 | 74249.340664961986, | ||
4549 | 74271.351067134034, | ||
4550 | 74293.363100129049, | ||
4551 | 74315.376763705441, | ||
4552 | 74337.392057621662, | ||
4553 | 74359.408981636298, | ||
4554 | 74381.427535508003, | ||
4555 | 74403.447718995507, | ||
4556 | 74425.469531857671, | ||
4557 | 74447.492973853383, | ||
4558 | 74469.518044741693, | ||
4559 | 74491.54474428168, | ||
4560 | 74513.573072232539, | ||
4561 | 74535.603028353551, | ||
4562 | 74557.634612404087, | ||
4563 | 74579.667824143602, | ||
4564 | 74601.702663331642, | ||
4565 | 74623.739129727837, | ||
4566 | 74645.777223091936, | ||
4567 | 74667.816943183716, | ||
4568 | 74689.858289763113, | ||
4569 | 74711.901262590094, | ||
4570 | 74733.945861424741, | ||
4571 | 74755.992086027225, | ||
4572 | 74778.039936157802, | ||
4573 | 74800.089411576817, | ||
4574 | 74822.140512044702, | ||
4575 | 74844.193237321961, | ||
4576 | 74866.24758716923, | ||
4577 | 74888.303561347187, | ||
4578 | 74910.36115961663, | ||
4579 | 74932.420381738411, | ||
4580 | 74954.481227473516, | ||
4581 | 74976.543696582972, | ||
4582 | 74998.607788827925, | ||
4583 | 75020.673503969607, | ||
4584 | 75042.740841769322, | ||
4585 | 75064.809801988464, | ||
4586 | 75086.88038438854, | ||
4587 | 75108.952588731103, | ||
4588 | 75131.026414777836, | ||
4589 | 75153.101862290467, | ||
4590 | 75175.178931030852, | ||
4591 | 75197.257620760924, | ||
4592 | 75219.33793124267, | ||
4593 | 75241.419862238225, | ||
4594 | 75263.503413509738, | ||
4595 | 75285.588584819503, | ||
4596 | 75307.675375929874, | ||
4597 | 75329.763786603318, | ||
4598 | 75351.853816602365, | ||
4599 | 75373.945465689612, | ||
4600 | 75396.038733627807, | ||
4601 | 75418.133620179724, | ||
4602 | 75440.230125108254, | ||
4603 | 75462.32824817636, | ||
4604 | 75484.427989147109, | ||
4605 | 75506.529347783653, | ||
4606 | 75528.63232384919, | ||
4607 | 75550.736917107075, | ||
4608 | 75572.843127320695, | ||
4609 | 75594.950954253538, | ||
4610 | 75617.060397669193, | ||
4611 | 75639.171457331307, | ||
4612 | 75661.284133003646, | ||
4613 | 75683.398424450032, | ||
4614 | 75705.514331434402, | ||
4615 | 75727.631853720741, | ||
4616 | 75749.750991073175, | ||
4617 | 75771.871743255862, | ||
4618 | 75793.994110033076, | ||
4619 | 75816.118091169177, | ||
4620 | 75838.243686428585, | ||
4621 | 75860.370895575848, | ||
4622 | 75882.499718375562, | ||
4623 | 75904.630154592422, | ||
4624 | 75926.762203991224, | ||
4625 | 75948.895866336825, | ||
4626 | 75971.031141394182, | ||
4627 | 75993.168028928325, | ||
4628 | 76015.306528704401, | ||
4629 | 76037.4466404876, | ||
4630 | 76059.588364043215, | ||
4631 | 76081.731699136653, | ||
4632 | 76103.876645533353, | ||
4633 | 76126.023202998884, | ||
4634 | 76148.171371298871, | ||
4635 | 76170.321150199044, | ||
4636 | 76192.472539465205, | ||
4637 | 76214.625538863256, | ||
4638 | 76236.780148159174, | ||
4639 | 76258.936367119008, | ||
4640 | 76281.094195508922, | ||
4641 | 76303.253633095141, | ||
4642 | 76325.414679643975, | ||
4643 | 76347.577334921851, | ||
4644 | 76369.741598695226, | ||
4645 | 76391.907470730686, | ||
4646 | 76414.074950794879, | ||
4647 | 76436.244038654564, | ||
4648 | 76458.414734076548, | ||
4649 | 76480.587036827754, | ||
4650 | 76502.760946675175, | ||
4651 | 76524.936463385893, | ||
4652 | 76547.11358672705, | ||
4653 | 76569.292316465915, | ||
4654 | 76591.472652369819, | ||
4655 | 76613.654594206164, | ||
4656 | 76635.838141742468, | ||
4657 | 76658.023294746308, | ||
4658 | 76680.210052985349, | ||
4659 | 76702.398416227341, | ||
4660 | 76724.588384240138, | ||
4661 | 76746.779956791637, | ||
4662 | 76768.973133649866, | ||
4663 | 76791.167914582897, | ||
4664 | 76813.364299358902, | ||
4665 | 76835.562287746157, | ||
4666 | 76857.761879512967, | ||
4667 | 76879.963074427797, | ||
4668 | 76902.165872259109, | ||
4669 | 76924.37027277553, | ||
4670 | 76946.576275745727, | ||
4671 | 76968.783880938441, | ||
4672 | 76990.993088122515, | ||
4673 | 77013.203897066895, | ||
4674 | 77035.416307540567, | ||
4675 | 77057.630319312622, | ||
4676 | 77079.845932152239, | ||
4677 | 77102.063145828695, | ||
4678 | 77124.281960111301, | ||
4679 | 77146.50237476948, | ||
4680 | 77168.724389572759, | ||
4681 | 77190.948004290723, | ||
4682 | 77213.173218693031, | ||
4683 | 77235.400032549442, | ||
4684 | 77257.628445629802, | ||
4685 | 77279.858457704031, | ||
4686 | 77302.090068542122, | ||
4687 | 77324.323277914169, | ||
4688 | 77346.558085590339, | ||
4689 | 77368.794491340886, | ||
4690 | 77391.032494936138, | ||
4691 | 77413.272096146524, | ||
4692 | 77435.51329474253, | ||
4693 | 77457.756090494731, | ||
4694 | 77480.000483173804, | ||
4695 | 77502.246472550498, | ||
4696 | 77524.494058395634, | ||
4697 | 77546.743240480107, | ||
4698 | 77568.994018574944, | ||
4699 | 77591.246392451198, | ||
4700 | 77613.500361880026, | ||
4701 | 77635.755926632657, | ||
4702 | 77658.013086480438, | ||
4703 | 77680.271841194757, | ||
4704 | 77702.532190547092, | ||
4705 | 77724.794134309021, | ||
4706 | 77747.057672252195, | ||
4707 | 77769.322804148323, | ||
4708 | 77791.589529769248, | ||
4709 | 77813.857848886837, | ||
4710 | 77836.127761273063, | ||
4711 | 77858.399266699998, | ||
4712 | 77880.67236493979, | ||
4713 | 77902.947055764627, | ||
4714 | 77925.223338946831, | ||
4715 | 77947.50121425878, | ||
4716 | 77969.780681472927, | ||
4717 | 77992.061740361838, | ||
4718 | 78014.344390698127, | ||
4719 | 78036.628632254491, | ||
4720 | 78058.914464803747, | ||
4721 | 78081.201888118725, | ||
4722 | 78103.490901972415, | ||
4723 | 78125.781506137821, | ||
4724 | 78148.073700388064, | ||
4725 | 78170.367484496339, | ||
4726 | 78192.662858235926, | ||
4727 | 78214.959821380166, | ||
4728 | 78237.258373702498, | ||
4729 | 78259.558514976452, | ||
4730 | 78281.860244975614, | ||
4731 | 78304.163563473659, | ||
4732 | 78326.468470244363, | ||
4733 | 78348.77496506153, | ||
4734 | 78371.083047699125, | ||
4735 | 78393.392717931114, | ||
4736 | 78415.703975531578, | ||
4737 | 78438.016820274701, | ||
4738 | 78460.331251934695, | ||
4739 | 78482.647270285903, | ||
4740 | 78504.964875102727, | ||
4741 | 78527.284066159627, | ||
4742 | 78549.604843231195, | ||
4743 | 78571.927206092048, | ||
4744 | 78594.251154516911, | ||
4745 | 78616.576688280606, | ||
4746 | 78638.903807157985, | ||
4747 | 78661.232510924034, | ||
4748 | 78683.562799353778, | ||
4749 | 78705.894672222363, | ||
4750 | 78728.228129304945, | ||
4751 | 78750.563170376859, | ||
4752 | 78772.899795213423, | ||
4753 | 78795.238003590101, | ||
4754 | 78817.577795282399, | ||
4755 | 78839.919170065928, | ||
4756 | 78862.262127716356, | ||
4757 | 78884.606668009452, | ||
4758 | 78906.952790721043, | ||
4759 | 78929.300495627045, | ||
4760 | 78951.64978250346, | ||
4761 | 78974.000651126378, | ||
4762 | 78996.353101271932, | ||
4763 | 79018.707132716358, | ||
4764 | 79041.062745235977, | ||
4765 | 79063.41993860717, | ||
4766 | 79085.778712606436, | ||
4767 | 79108.139067010285, | ||
4768 | 79130.501001595389, | ||
4769 | 79152.864516138419, | ||
4770 | 79175.22961041618, | ||
4771 | 79197.596284205531, | ||
4772 | 79219.96453728342, | ||
4773 | 79242.33436942687, | ||
4774 | 79264.705780412987, | ||
4775 | 79287.078770018954, | ||
4776 | 79309.453338022009, | ||
4777 | 79331.829484199508, | ||
4778 | 79354.207208328866, | ||
4779 | 79376.586510187582, | ||
4780 | 79398.967389553218, | ||
4781 | 79421.349846203433, | ||
4782 | 79443.733879915948, | ||
4783 | 79466.119490468584, | ||
4784 | 79488.50667763922, | ||
4785 | 79510.895441205823, | ||
4786 | 79533.285780946433, | ||
4787 | 79555.677696639163, | ||
4788 | 79578.071188062226, | ||
4789 | 79600.466254993895, | ||
4790 | 79622.862897212515, | ||
4791 | 79645.261114496549, | ||
4792 | 79667.660906624471, | ||
4793 | 79690.062273374875, | ||
4794 | 79712.465214526455, | ||
4795 | 79734.869729857935, | ||
4796 | 79757.275819148126, | ||
4797 | 79779.683482175955, | ||
4798 | 79802.092718720378, | ||
4799 | 79824.503528560454, | ||
4800 | 79846.915911475327, | ||
4801 | 79869.329867244203, | ||
4802 | 79891.745395646343, | ||
4803 | 79914.162496461155, | ||
4804 | 79936.581169468045, | ||
4805 | 79959.001414446553, | ||
4806 | 79981.423231176261, | ||
4807 | 80003.846619436852, | ||
4808 | 80026.271579008084, | ||
4809 | 80048.698109669771, | ||
4810 | 80071.12621120183, | ||
4811 | 80093.555883384237, | ||
4812 | 80115.987125997053, | ||
4813 | 80138.419938820414, | ||
4814 | 80160.854321634528, | ||
4815 | 80183.290274219689, | ||
4816 | 80205.727796356281, | ||
4817 | 80228.166887824715, | ||
4818 | 80250.607548405547, | ||
4819 | 80273.049777879336, | ||
4820 | 80295.493576026798, | ||
4821 | 80317.938942628651, | ||
4822 | 80340.385877465727, | ||
4823 | 80362.834380318949, | ||
4824 | 80385.28445096928, | ||
4825 | 80407.736089197788, | ||
4826 | 80430.189294785596, | ||
4827 | 80452.644067513917, | ||
4828 | 80475.100407164035, | ||
4829 | 80497.558313517322, | ||
4830 | 80520.017786355209, | ||
4831 | 80542.478825459213, | ||
4832 | 80564.941430610925, | ||
4833 | 80587.405601592007, | ||
4834 | 80609.871338184195, | ||
4835 | 80632.338640169342, | ||
4836 | 80654.8075073293, | ||
4837 | 80677.277939446067, | ||
4838 | 80699.749936301683, | ||
4839 | 80722.223497678278, | ||
4840 | 80744.698623358039, | ||
4841 | 80767.17531312324, | ||
4842 | 80789.653566756242, | ||
4843 | 80812.133384039465, | ||
4844 | 80834.614764755403, | ||
4845 | 80857.097708686648, | ||
4846 | 80879.582215615854, | ||
4847 | 80902.068285325731, | ||
4848 | 80924.555917599093, | ||
4849 | 80947.045112218824, | ||
4850 | 80969.535868967869, | ||
4851 | 80992.028187629272, | ||
4852 | 81014.522067986123, | ||
4853 | 81037.017509821613, | ||
4854 | 81059.514512919006, | ||
4855 | 81082.013077061609, | ||
4856 | 81104.513202032831, | ||
4857 | 81127.014887616184, | ||
4858 | 81149.518133595193, | ||
4859 | 81172.022939753486, | ||
4860 | 81194.529305874807, | ||
4861 | 81217.037231742899, | ||
4862 | 81239.546717141639, | ||
4863 | 81262.057761854958, | ||
4864 | 81284.570365666848, | ||
4865 | 81307.084528361403, | ||
4866 | 81329.600249722775, | ||
4867 | 81352.117529535186, | ||
4868 | 81374.636367582949, | ||
4869 | 81397.156763650448, | ||
4870 | 81419.678717522125, | ||
4871 | 81442.202228982511, | ||
4872 | 81464.727297816222, | ||
4873 | 81487.253923807933, | ||
4874 | 81509.782106742379, | ||
4875 | 81532.311846404409, | ||
4876 | 81554.843142578902, | ||
4877 | 81577.375995050839, | ||
4878 | 81599.910403605274, | ||
4879 | 81622.446368027333, | ||
4880 | 81644.983888102215, | ||
4881 | 81667.522963615178, | ||
4882 | 81690.063594351581, | ||
4883 | 81712.605780096841, | ||
4884 | 81735.149520636449, | ||
4885 | 81757.694815755967, | ||
4886 | 81780.241665241047, | ||
4887 | 81802.79006887741, | ||
4888 | 81825.340026450824, | ||
4889 | 81847.891537747171, | ||
4890 | 81870.444602552379, | ||
4891 | 81892.999220652477, | ||
4892 | 81915.555391833506, | ||
4893 | 81938.113115881672, | ||
4894 | 81960.672392583176, | ||
4895 | 81983.233221724338, | ||
4896 | 82005.795603091537, | ||
4897 | 82028.359536471224, | ||
4898 | 82050.925021649906, | ||
4899 | 82073.492058414209, | ||
4900 | 82096.060646550788, | ||
4901 | 82118.630785846399, | ||
4902 | 82141.202476087841, | ||
4903 | 82163.775717062032, | ||
4904 | 82186.35050855593, | ||
4905 | 82208.926850356569, | ||
4906 | 82231.504742251054, | ||
4907 | 82254.084184026578, | ||
4908 | 82276.665175470393, | ||
4909 | 82299.24771636985, | ||
4910 | 82321.831806512317, | ||
4911 | 82344.417445685307, | ||
4912 | 82367.004633676348, | ||
4913 | 82389.593370273054, | ||
4914 | 82412.183655263143, | ||
4915 | 82434.775488434374, | ||
4916 | 82457.368869574595, | ||
4917 | 82479.963798471697, | ||
4918 | 82502.560274913689, | ||
4919 | 82525.158298688606, | ||
4920 | 82547.757869584602, | ||
4921 | 82570.35898738986, | ||
4922 | 82592.961651892678, | ||
4923 | 82615.565862881398, | ||
4924 | 82638.171620144421, | ||
4925 | 82660.778923470265, | ||
4926 | 82683.387772647475, | ||
4927 | 82705.998167464713, | ||
4928 | 82728.610107710658, | ||
4929 | 82751.223593174116, | ||
4930 | 82773.83862364394, | ||
4931 | 82796.45519890904, | ||
4932 | 82819.073318758441, | ||
4933 | 82841.692982981185, | ||
4934 | 82864.314191366429, | ||
4935 | 82886.936943703375, | ||
4936 | 82909.561239781324, | ||
4937 | 82932.187079389638, | ||
4938 | 82954.814462317736, | ||
4939 | 82977.443388355125, | ||
4940 | 83000.073857291369, | ||
4941 | 83022.70586891612, | ||
4942 | 83045.339423019104, | ||
4943 | 83067.974519390089, | ||
4944 | 83090.611157818959, | ||
4945 | 83113.249338095629, | ||
4946 | 83135.8890600101, | ||
4947 | 83158.530323352461, | ||
4948 | 83181.173127912858, | ||
4949 | 83203.817473481497, | ||
4950 | 83226.463359848669, | ||
4951 | 83249.11078680474, | ||
4952 | 83271.759754140134, | ||
4953 | 83294.410261645375, | ||
4954 | 83317.062309111003, | ||
4955 | 83339.715896327703, | ||
4956 | 83362.371023086147, | ||
4957 | 83385.027689177165, | ||
4958 | 83407.685894391587, | ||
4959 | 83430.345638520361, | ||
4960 | 83453.006921354478, | ||
4961 | 83475.669742685001, | ||
4962 | 83498.334102303095, | ||
4963 | 83520.999999999942, | ||
4964 | 83543.667435566866, | ||
4965 | 83566.336408795192, | ||
4966 | 83589.006919476349, | ||
4967 | 83611.678967401851, | ||
4968 | 83634.352552363242, | ||
4969 | 83657.027674152167, | ||
4970 | 83679.704332560359, | ||
4971 | 83702.382527379552, | ||
4972 | 83725.062258401638, | ||
4973 | 83747.743525418511, | ||
4974 | 83770.42632822218, | ||
4975 | 83793.110666604684, | ||
4976 | 83815.796540358162, | ||
4977 | 83838.483949274829, | ||
4978 | 83861.172893146941, | ||
4979 | 83883.863371766842, | ||
4980 | 83906.555384926964, | ||
4981 | 83929.248932419752, | ||
4982 | 83951.944014037799, | ||
4983 | 83974.640629573696, | ||
4984 | 83997.338778820151, | ||
4985 | 84020.038461569929, | ||
4986 | 84042.739677615857, | ||
4987 | 84065.442426750829, | ||
4988 | 84088.146708767847, | ||
4989 | 84110.852523459922, | ||
4990 | 84133.559870620171, | ||
4991 | 84156.268750041796, | ||
4992 | 84178.979161518029, | ||
4993 | 84201.691104842204, | ||
4994 | 84224.404579807713, | ||
4995 | 84247.119586208006, | ||
4996 | 84269.83612383662, | ||
4997 | 84292.55419248715, | ||
4998 | 84315.273791953281, | ||
4999 | 84337.994922028738, | ||
5000 | 84360.717582507335, | ||
5001 | 84383.441773182945, | ||
5002 | 84406.167493849513, | ||
5003 | 84428.894744301069, | ||
5004 | 84451.623524331691, | ||
5005 | 84474.353833735542, | ||
5006 | 84497.085672306828, | ||
5007 | 84519.819039839858, | ||
5008 | 84542.553936128999, | ||
5009 | 84565.290360968676, | ||
5010 | 84588.028314153402, | ||
5011 | 84610.767795477717, | ||
5012 | 84633.508804736295, | ||
5013 | 84656.251341723822, | ||
5014 | 84678.995406235073, | ||
5015 | 84701.740998064924, | ||
5016 | 84724.488117008252, | ||
5017 | 84747.236762860062, | ||
5018 | 84769.986935415407, | ||
5019 | 84792.73863446941, | ||
5020 | 84815.491859817252, | ||
5021 | 84838.246611254188, | ||
5022 | 84861.002888575575, | ||
5023 | 84883.760691576768, | ||
5024 | 84906.520020053256, | ||
5025 | 84929.28087380057, | ||
5026 | 84952.043252614312, | ||
5027 | 84974.807156290146, | ||
5028 | 84997.572584623806, | ||
5029 | 85020.339537411113, | ||
5030 | 85043.108014447949, | ||
5031 | 85065.878015530237, | ||
5032 | 85088.649540453989, | ||
5033 | 85111.422589015303, | ||
5034 | 85134.197161010321, | ||
5035 | 85156.973256235244, | ||
5036 | 85179.750874486374, | ||
5037 | 85202.530015560071, | ||
5038 | 85225.310679252725, | ||
5039 | 85248.092865360857, | ||
5040 | 85270.876573681016, | ||
5041 | 85293.661804009811, | ||
5042 | 85316.448556143951, | ||
5043 | 85339.236829880188, | ||
5044 | 85362.026625015351, | ||
5045 | 85384.817941346351, | ||
5046 | 85407.610778670132, | ||
5047 | 85430.405136783724, | ||
5048 | 85453.201015484257, | ||
5049 | 85475.998414568865, | ||
5050 | 85498.797333834795, | ||
5051 | 85521.597773079353, | ||
5052 | 85544.399732099904, | ||
5053 | 85567.203210693886, | ||
5054 | 85590.008208658808, | ||
5055 | 85612.814725792239, | ||
5056 | 85635.62276189182, | ||
5057 | 85658.432316755265, | ||
5058 | 85681.243390180331, | ||
5059 | 85704.055981964877, | ||
5060 | 85726.870091906807, | ||
5061 | 85749.685719804082, | ||
5062 | 85772.502865454764, | ||
5063 | 85795.321528656961, | ||
5064 | 85818.141709208852, | ||
5065 | 85840.963406908675, | ||
5066 | 85863.78662155474, | ||
5067 | 85886.611352945445, | ||
5068 | 85909.437600879217, | ||
5069 | 85932.26536515457, | ||
5070 | 85955.094645570091, | ||
5071 | 85977.92544192441, | ||
5072 | 86000.757754016275, | ||
5073 | 86023.591581644432, | ||
5074 | 86046.426924607746, | ||
5075 | 86069.263782705122, | ||
5076 | 86092.102155735556, | ||
5077 | 86114.942043498071, | ||
5078 | 86137.783445791807, | ||
5079 | 86160.626362415918, | ||
5080 | 86183.470793169676, | ||
5081 | 86206.316737852379, | ||
5082 | 86229.164196263402, | ||
5083 | 86252.013168202204, | ||
5084 | 86274.863653468303, | ||
5085 | 86297.715651861261, | ||
5086 | 86320.569163180728, | ||
5087 | 86343.424187226425, | ||
5088 | 86366.280723798132, | ||
5089 | 86389.138772695675, | ||
5090 | 86411.998333718977, | ||
5091 | 86434.859406668009, | ||
5092 | 86457.721991342827, | ||
5093 | 86480.586087543532, | ||
5094 | 86503.451695070296, | ||
5095 | 86526.318813723352, | ||
5096 | 86549.187443303032, | ||
5097 | 86572.057583609683, | ||
5098 | 86594.929234443756, | ||
5099 | 86617.802395605773, | ||
5100 | 86640.677066896271, | ||
5101 | 86663.553248115903, | ||
5102 | 86686.43093906538, | ||
5103 | 86709.310139545443, | ||
5104 | 86732.190849356964, | ||
5105 | 86755.073068300815, | ||
5106 | 86777.956796177954, | ||
5107 | 86800.842032789442, | ||
5108 | 86823.728777936354, | ||
5109 | 86846.617031419853, | ||
5110 | 86869.506793041175, | ||
5111 | 86892.398062601613, | ||
5112 | 86915.290839902518, | ||
5113 | 86938.185124745316, | ||
5114 | 86961.080916931489, | ||
5115 | 86983.978216262592, | ||
5116 | 87006.87702254027, | ||
5117 | 87029.777335566177, | ||
5118 | 87052.67915514209, | ||
5119 | 87075.582481069796, | ||
5120 | 87098.487313151185, | ||
5121 | 87121.39365118822, | ||
5122 | 87144.301494982894, | ||
5123 | 87167.210844337285, | ||
5124 | 87190.121699053532, | ||
5125 | 87213.034058933845, | ||
5126 | 87235.947923780506, | ||
5127 | 87258.863293395829, | ||
5128 | 87281.780167582241, | ||
5129 | 87304.698546142172, | ||
5130 | 87327.618428878181, | ||
5131 | 87350.539815592856, | ||
5132 | 87373.462706088845, | ||
5133 | 87396.387100168897, | ||
5134 | 87419.312997635774, | ||
5135 | 87442.240398292357, | ||
5136 | 87465.16930194154, | ||
5137 | 87488.099708386319, | ||
5138 | 87511.031617429733, | ||
5139 | 87533.965028874911, | ||
5140 | 87556.899942525008, | ||
5141 | 87579.836358183282, | ||
5142 | 87602.774275653021, | ||
5143 | 87625.713694737613, | ||
5144 | 87648.654615240492, | ||
5145 | 87671.597036965148, | ||
5146 | 87694.540959715145, | ||
5147 | 87717.486383294105, | ||
5148 | 87740.433307505737, | ||
5149 | 87763.381732153779, | ||
5150 | 87786.331657042057, | ||
5151 | 87809.283081974456, | ||
5152 | 87832.236006754916, | ||
5153 | 87855.190431187453, | ||
5154 | 87878.146355076155, | ||
5155 | 87901.103778225151, | ||
5156 | 87924.062700438633, | ||
5157 | 87947.023121520891, | ||
5158 | 87969.985041276246, | ||
5159 | 87992.948459509105, | ||
5160 | 88015.913376023906, | ||
5161 | 88038.879790625171, | ||
5162 | 88061.847703117513, | ||
5163 | 88084.817113305573, | ||
5164 | 88107.788020994049, | ||
5165 | 88130.760425987726, | ||
5166 | 88153.734328091465, | ||
5167 | 88176.709727110137, | ||
5168 | 88199.686622848749, | ||
5169 | 88222.665015112303, | ||
5170 | 88245.644903705906, | ||
5171 | 88268.626288434709, | ||
5172 | 88291.609169103947, | ||
5173 | 88314.593545518903, | ||
5174 | 88337.579417484914, | ||
5175 | 88360.566784807408, | ||
5176 | 88383.555647291854, | ||
5177 | 88406.546004743795, | ||
5178 | 88429.537856968818, | ||
5179 | 88452.531203772611, | ||
5180 | 88475.52604496089, | ||
5181 | 88498.522380339447, | ||
5182 | 88521.52020971413, | ||
5183 | 88544.519532890874, | ||
5184 | 88567.520349675644, | ||
5185 | 88590.522659874507, | ||
5186 | 88613.526463293543, | ||
5187 | 88636.531759738922, | ||
5188 | 88659.538549016899, | ||
5189 | 88682.546830933745, | ||
5190 | 88705.556605295846, | ||
5191 | 88728.567871909589, | ||
5192 | 88751.580630581491, | ||
5193 | 88774.594881118086, | ||
5194 | 88797.610623325963, | ||
5195 | 88820.62785701183, | ||
5196 | 88843.646581982393, | ||
5197 | 88866.666798044462, | ||
5198 | 88889.688505004888, | ||
5199 | 88912.711702670611, | ||
5200 | 88935.7363908486, | ||
5201 | 88958.762569345898, | ||
5202 | 88981.790237969632, | ||
5203 | 89004.81939652696, | ||
5204 | 89027.850044825114, | ||
5205 | 89050.882182671412, | ||
5206 | 89073.9158098732, | ||
5207 | 89096.950926237885, | ||
5208 | 89119.987531572973, | ||
5209 | 89143.025625686001, | ||
5210 | 89166.065208384563, | ||
5211 | 89189.106279476357, | ||
5212 | 89212.148838769106, | ||
5213 | 89235.192886070581, | ||
5214 | 89258.238421188667, | ||
5215 | 89281.285443931265, | ||
5216 | 89304.333954106376, | ||
5217 | 89327.383951522017, | ||
5218 | 89350.435435986306, | ||
5219 | 89373.488407307406, | ||
5220 | 89396.542865293537, | ||
5221 | 89419.598809753006, | ||
5222 | 89442.656240494165, | ||
5223 | 89465.715157325409, | ||
5224 | 89488.775560055219, | ||
5225 | 89511.837448492137, | ||
5226 | 89534.900822444746, | ||
5227 | 89557.965681721733, | ||
5228 | 89581.032026131812, | ||
5229 | 89604.099855483742, | ||
5230 | 89627.169169586399, | ||
5231 | 89650.239968248672, | ||
5232 | 89673.312251279538, | ||
5233 | 89696.386018488018, | ||
5234 | 89719.461269683205, | ||
5235 | 89742.53800467425, | ||
5236 | 89765.616223270365, | ||
5237 | 89788.69592528083, | ||
5238 | 89811.777110514988, | ||
5239 | 89834.859778782207, | ||
5240 | 89857.943929891975, | ||
5241 | 89881.029563653807, | ||
5242 | 89904.116679877261, | ||
5243 | 89927.205278372014, | ||
5244 | 89950.29535894774, | ||
5245 | 89973.386921414218, | ||
5246 | 89996.479965581268, | ||
5247 | 90019.574491258769, | ||
5248 | 90042.670498256688, | ||
5249 | 90065.767986385021, | ||
5250 | 90088.866955453836, | ||
5251 | 90111.967405273259, | ||
5252 | 90135.069335653476, | ||
5253 | 90158.172746404758, | ||
5254 | 90181.277637337407, | ||
5255 | 90204.384008261797, | ||
5256 | 90227.49185898836, | ||
5257 | 90250.601189327586, | ||
5258 | 90273.711999090039, | ||
5259 | 90296.824288086325, | ||
5260 | 90319.938056127125, | ||
5261 | 90343.053303023189, | ||
5262 | 90366.170028585286, | ||
5263 | 90389.288232624298, | ||
5264 | 90412.407914951138, | ||
5265 | 90435.529075376777, | ||
5266 | 90458.651713712257, | ||
5267 | 90481.775829768681, | ||
5268 | 90504.901423357209, | ||
5269 | 90528.028494289058, | ||
5270 | 90551.157042375504, | ||
5271 | 90574.287067427911, | ||
5272 | 90597.418569257643, | ||
5273 | 90620.551547676194, | ||
5274 | 90643.686002495073, | ||
5275 | 90666.821933525847, | ||
5276 | 90689.959340580186, | ||
5277 | 90713.098223469773, | ||
5278 | 90736.238582006365, | ||
5279 | 90759.380416001804, | ||
5280 | 90782.523725267951, | ||
5281 | 90805.668509616764, | ||
5282 | 90828.814768860233, | ||
5283 | 90851.962502810435, | ||
5284 | 90875.11171127946, | ||
5285 | 90898.262394079517, | ||
5286 | 90921.414551022855, | ||
5287 | 90944.568181921743, | ||
5288 | 90967.72328658856, | ||
5289 | 90990.879864835719, | ||
5290 | 91014.037916475718, | ||
5291 | 91037.19744132107, | ||
5292 | 91060.358439184391, | ||
5293 | 91083.520909878338, | ||
5294 | 91106.684853215629, | ||
5295 | 91129.850269009039, | ||
5296 | 91153.017157071401, | ||
5297 | 91176.185517215621, | ||
5298 | 91199.355349254649, | ||
5299 | 91222.526653001492, | ||
5300 | 91245.699428269247, | ||
5301 | 91268.873674871036, | ||
5302 | 91292.049392620058, | ||
5303 | 91315.226581329553, | ||
5304 | 91338.405240812834, | ||
5305 | 91361.585370883287, | ||
5306 | 91384.766971354344, | ||
5307 | 91407.950042039476, | ||
5308 | 91431.134582752245, | ||
5309 | 91454.320593306256, | ||
5310 | 91477.508073515171, | ||
5311 | 91500.697023192712, | ||
5312 | 91523.887442152685, | ||
5313 | 91547.07933020893, | ||
5314 | 91570.272687175326, | ||
5315 | 91593.467512865856, | ||
5316 | 91616.663807094534, | ||
5317 | 91639.861569675442, | ||
5318 | 91663.060800422725, | ||
5319 | 91686.261499150554, | ||
5320 | 91709.463665673218, | ||
5321 | 91732.66729980502, | ||
5322 | 91755.872401360321, | ||
5323 | 91779.078970153569, | ||
5324 | 91802.287005999257, | ||
5325 | 91825.49650871192, | ||
5326 | 91848.707478106167, | ||
5327 | 91871.91991399668, | ||
5328 | 91895.133816198169, | ||
5329 | 91918.349184525418, | ||
5330 | 91941.566018793281, | ||
5331 | 91964.784318816659, | ||
5332 | 91988.004084410495, | ||
5333 | 92011.22531538982, | ||
5334 | 92034.448011569708, | ||
5335 | 92057.672172765277, | ||
5336 | 92080.897798791746, | ||
5337 | 92104.124889464365, | ||
5338 | 92127.353444598411, | ||
5339 | 92150.58346400928, | ||
5340 | 92173.814947512379, | ||
5341 | 92197.04789492322, | ||
5342 | 92220.282306057314, | ||
5343 | 92243.518180730272, | ||
5344 | 92266.755518757753, | ||
5345 | 92289.994319955469, | ||
5346 | 92313.234584139194, | ||
5347 | 92336.476311124774, | ||
5348 | 92359.719500728082, | ||
5349 | 92382.964152765067, | ||
5350 | 92406.210267051734, | ||
5351 | 92429.457843404161, | ||
5352 | 92452.706881638471, | ||
5353 | 92475.957381570814, | ||
5354 | 92499.209343017443, | ||
5355 | 92522.462765794655, | ||
5356 | 92545.717649718805, | ||
5357 | 92568.973994606305, | ||
5358 | 92592.231800273614, | ||
5359 | 92615.491066537259, | ||
5360 | 92638.751793213814, | ||
5361 | 92662.01398011994, | ||
5362 | 92685.277627072326, | ||
5363 | 92708.54273388772, | ||
5364 | 92731.809300382942, | ||
5365 | 92755.077326374871, | ||
5366 | 92778.346811680414, | ||
5367 | 92801.617756116568, | ||
5368 | 92824.890159500384, | ||
5369 | 92848.164021648947, | ||
5370 | 92871.439342379424, | ||
5371 | 92894.716121509016, | ||
5372 | 92917.994358855023, | ||
5373 | 92941.274054234746, | ||
5374 | 92964.555207465572, | ||
5375 | 92987.837818364962, | ||
5376 | 93011.121886750407, | ||
5377 | 93034.407412439468, | ||
5378 | 93057.694395249753, | ||
5379 | 93080.982834998955, | ||
5380 | 93104.272731504767, | ||
5381 | 93127.564084584999, | ||
5382 | 93150.856894057491, | ||
5383 | 93174.15115974014, | ||
5384 | 93197.446881450916, | ||
5385 | 93220.744059007804, | ||
5386 | 93244.04269222889, | ||
5387 | 93267.342780932304, | ||
5388 | 93290.644324936235, | ||
5389 | 93313.947324058914, | ||
5390 | 93337.251778118633, | ||
5391 | 93360.557686933767, | ||
5392 | 93383.865050322696, | ||
5393 | 93407.173868103928, | ||
5394 | 93430.484140095941, | ||
5395 | 93453.795866117362, | ||
5396 | 93477.109045986799, | ||
5397 | 93500.423679522952, | ||
5398 | 93523.739766544561, | ||
5399 | 93547.057306870454, | ||
5400 | 93570.376300319491, | ||
5401 | 93593.696746710571, | ||
5402 | 93617.018645862699, | ||
5403 | 93640.341997594893, | ||
5404 | 93663.666801726242, | ||
5405 | 93686.993058075881, | ||
5406 | 93710.320766463032, | ||
5407 | 93733.64992670693, | ||
5408 | 93756.980538626914, | ||
5409 | 93780.312602042337, | ||
5410 | 93803.646116772637, | ||
5411 | 93826.981082637285, | ||
5412 | 93850.317499455836, | ||
5413 | 93873.655367047861, | ||
5414 | 93896.994685233032, | ||
5415 | 93920.335453831038, | ||
5416 | 93943.677672661666, | ||
5417 | 93967.021341544707, | ||
5418 | 93990.366460300051, | ||
5419 | 94013.713028747632, | ||
5420 | 94037.061046707429, | ||
5421 | 94060.410513999494, | ||
5422 | 94083.761430443905, | ||
5423 | 94107.113795860845, | ||
5424 | 94130.467610070496, | ||
5425 | 94153.822872893157, | ||
5426 | 94177.179584149111, | ||
5427 | 94200.537743658759, | ||
5428 | 94223.897351242529, | ||
5429 | 94247.25840672091, | ||
5430 | 94270.620909914433, | ||
5431 | 94293.98486064373, | ||
5432 | 94317.350258729421, | ||
5433 | 94340.71710399224, | ||
5434 | 94364.085396252936, | ||
5435 | 94387.455135332348, | ||
5436 | 94410.82632105134, | ||
5437 | 94434.198953230851, | ||
5438 | 94457.573031691878, | ||
5439 | 94480.948556255447, | ||
5440 | 94504.325526742658, | ||
5441 | 94527.70394297468, | ||
5442 | 94551.083804772716, | ||
5443 | 94574.465111958023, | ||
5444 | 94597.847864351934, | ||
5445 | 94621.232061775823, | ||
5446 | 94644.617704051096, | ||
5447 | 94668.004790999272, | ||
5448 | 94691.393322441872, | ||
5449 | 94714.783298200506, | ||
5450 | 94738.174718096794, | ||
5451 | 94761.567581952477, | ||
5452 | 94784.961889589307, | ||
5453 | 94808.357640829097, | ||
5454 | 94831.754835493703, | ||
5455 | 94855.153473405066, | ||
5456 | 94878.553554385173, | ||
5457 | 94901.955078256055, | ||
5458 | 94925.358044839784, | ||
5459 | 94948.762453958523, | ||
5460 | 94972.168305434476, | ||
5461 | 94995.575599089891, | ||
5462 | 95018.984334747074, | ||
5463 | 95042.394512228391, | ||
5464 | 95065.806131356265, | ||
5465 | 95089.219191953176, | ||
5466 | 95112.633693841635, | ||
5467 | 95136.04963684424, | ||
5468 | 95159.467020783617, | ||
5469 | 95182.885845482466, | ||
5470 | 95206.306110763529, | ||
5471 | 95229.727816449609, | ||
5472 | 95253.150962363579, | ||
5473 | 95276.575548328314, | ||
5474 | 95300.001574166803, | ||
5475 | 95323.429039702052, | ||
5476 | 95346.857944757154, | ||
5477 | 95370.288289155214, | ||
5478 | 95393.720072719429, | ||
5479 | 95417.153295273019, | ||
5480 | 95440.587956639298, | ||
5481 | 95464.024056641589, | ||
5482 | 95487.461595103305, | ||
5483 | 95510.900571847902, | ||
5484 | 95534.340986698866, | ||
5485 | 95557.782839479783, | ||
5486 | 95581.226130014256, | ||
5487 | 95604.670858125959, | ||
5488 | 95628.117023638595, | ||
5489 | 95651.564626375985, | ||
5490 | 95675.013666161918, | ||
5491 | 95698.464142820303, | ||
5492 | 95721.916056175076, | ||
5493 | 95745.369406050231, | ||
5494 | 95768.824192269807, | ||
5495 | 95792.280414657915, | ||
5496 | 95815.738073038709, | ||
5497 | 95839.197167236387, | ||
5498 | 95862.657697075221, | ||
5499 | 95886.11966237954, | ||
5500 | 95909.583062973688, | ||
5501 | 95933.047898682111, | ||
5502 | 95956.514169329268, | ||
5503 | 95979.981874739708, | ||
5504 | 96003.451014738006, | ||
5505 | 96026.921589148798, | ||
5506 | 96050.393597796792, | ||
5507 | 96073.867040506724, | ||
5508 | 96097.341917103375, | ||
5509 | 96120.818227411626, | ||
5510 | 96144.295971256375, | ||
5511 | 96167.775148462577, | ||
5512 | 96191.255758855244, | ||
5513 | 96214.737802259449, | ||
5514 | 96238.221278500292, | ||
5515 | 96261.70618740299, | ||
5516 | 96285.192528792715, | ||
5517 | 96308.680302494788, | ||
5518 | 96332.169508334526, | ||
5519 | 96355.660146137321, | ||
5520 | 96379.152215728609, | ||
5521 | 96402.645716933868, | ||
5522 | 96426.14064957868, | ||
5523 | 96449.637013488609, | ||
5524 | 96473.134808489311, | ||
5525 | 96496.63403440651, | ||
5526 | 96520.134691065963, | ||
5527 | 96543.636778293469, | ||
5528 | 96567.140295914898, | ||
5529 | 96590.645243756153, | ||
5530 | 96614.151621643221, | ||
5531 | 96637.659429402134, | ||
5532 | 96661.168666858954, | ||
5533 | 96684.679333839798, | ||
5534 | 96708.191430170875, | ||
5535 | 96731.70495567839, | ||
5536 | 96755.219910188665, | ||
5537 | 96778.736293528011, | ||
5538 | 96802.254105522836, | ||
5539 | 96825.77334599958, | ||
5540 | 96849.29401478474, | ||
5541 | 96872.816111704873, | ||
5542 | 96896.339636586577, | ||
5543 | 96919.864589256511, | ||
5544 | 96943.390969541389, | ||
5545 | 96966.918777267958, | ||
5546 | 96990.448012263048, | ||
5547 | 97013.978674353522, | ||
5548 | 97037.510763366285, | ||
5549 | 97061.044279128328, | ||
5550 | 97084.579221466673, | ||
5551 | 97108.115590208385, | ||
5552 | 97131.653385180587, | ||
5553 | 97155.19260621049, | ||
5554 | 97178.733253125291, | ||
5555 | 97202.2753257523, | ||
5556 | 97225.81882391886, | ||
5557 | 97249.363747452342, | ||
5558 | 97272.910096180189, | ||
5559 | 97296.457869929916, | ||
5560 | 97320.007068529041, | ||
5561 | 97343.557691805196, | ||
5562 | 97367.109739586012, | ||
5563 | 97390.663211699197, | ||
5564 | 97414.218107972498, | ||
5565 | 97437.774428233737, | ||
5566 | 97461.332172310766, | ||
5567 | 97484.891340031507, | ||
5568 | 97508.451931223899, | ||
5569 | 97532.013945715982, | ||
5570 | 97555.577383335811, | ||
5571 | 97579.142243911512, | ||
5572 | 97602.708527271257, | ||
5573 | 97626.276233243261, | ||
5574 | 97649.845361655811, | ||
5575 | 97673.415912337223, | ||
5576 | 97696.987885115886, | ||
5577 | 97720.561279820206, | ||
5578 | 97744.1360962787, | ||
5579 | 97767.712334319876, | ||
5580 | 97791.289993772341, | ||
5581 | 97814.869074464703, | ||
5582 | 97838.449576225685, | ||
5583 | 97862.031498883996, | ||
5584 | 97885.614842268449, | ||
5585 | 97909.199606207883, | ||
5586 | 97932.785790531183, | ||
5587 | 97956.37339506732, | ||
5588 | 97979.962419645264, | ||
5589 | 98003.552864094076, | ||
5590 | 98027.144728242856, | ||
5591 | 98050.738011920766, | ||
5592 | 98074.332714956996, | ||
5593 | 98097.928837180807, | ||
5594 | 98121.526378421506, | ||
5595 | 98145.125338508456, | ||
5596 | 98168.725717271067, | ||
5597 | 98192.327514538789, | ||
5598 | 98215.930730141132, | ||
5599 | 98239.535363907664, | ||
5600 | 98263.141415668011, | ||
5601 | 98286.748885251814, | ||
5602 | 98310.357772488816, | ||
5603 | 98333.968077208759, | ||
5604 | 98357.579799241488, | ||
5605 | 98381.192938416847, | ||
5606 | 98404.807494564782, | ||
5607 | 98428.42346751524, | ||
5608 | 98452.040857098269, | ||
5609 | 98475.659663143917, | ||
5610 | 98499.27988548232, | ||
5611 | 98522.901523943656, | ||
5612 | 98546.524578358163, | ||
5613 | 98570.149048556093, | ||
5614 | 98593.774934367786, | ||
5615 | 98617.402235623624, | ||
5616 | 98641.030952154048, | ||
5617 | 98664.661083789513, | ||
5618 | 98688.292630360564, | ||
5619 | 98711.925591697771, | ||
5620 | 98735.559967631794, | ||
5621 | 98759.195757993293, | ||
5622 | 98782.832962613014, | ||
5623 | 98806.471581321734, | ||
5624 | 98830.111613950285, | ||
5625 | 98853.753060329575, | ||
5626 | 98877.39592029051, | ||
5627 | 98901.040193664099, | ||
5628 | 98924.68588028138, | ||
5629 | 98948.33297997342, | ||
5630 | 98971.981492571387, | ||
5631 | 98995.63141790645, | ||
5632 | 99019.282755809851, | ||
5633 | 99042.935506112874, | ||
5634 | 99066.589668646877, | ||
5635 | 99090.245243243233, | ||
5636 | 99113.902229733401, | ||
5637 | 99137.560627948857, | ||
5638 | 99161.220437721131, | ||
5639 | 99184.881658881859, | ||
5640 | 99208.544291262631, | ||
5641 | 99232.208334695169, | ||
5642 | 99255.87378901121, | ||
5643 | 99279.540654042547, | ||
5644 | 99303.208929621018, | ||
5645 | 99326.878615578535, | ||
5646 | 99350.549711746993, | ||
5647 | 99374.222217958435, | ||
5648 | 99397.896134044888, | ||
5649 | 99421.571459838422, | ||
5650 | 99445.248195171211, | ||
5651 | 99468.926339875441, | ||
5652 | 99492.605893783344, | ||
5653 | 99516.286856727209, | ||
5654 | 99539.969228539398, | ||
5655 | 99563.653009052287, | ||
5656 | 99587.338198098325, | ||
5657 | 99611.024795510006, | ||
5658 | 99634.712801119866, | ||
5659 | 99658.402214760499, | ||
5660 | 99682.093036264545, | ||
5661 | 99705.785265464699, | ||
5662 | 99729.478902193689, | ||
5663 | 99753.173946284325, | ||
5664 | 99776.870397569437, | ||
5665 | 99800.56825588191, | ||
5666 | 99824.267521054688, | ||
5667 | 99847.968192920773, | ||
5668 | 99871.670271313182, | ||
5669 | 99895.373756065004, | ||
5670 | 99919.078647009388, | ||
5671 | 99942.78494397951, | ||
5672 | 99966.492646808634, | ||
5673 | 99990.20175533001, | ||
5674 | 100013.91226937699, | ||
5675 | 100037.62418878295, | ||
5676 | 100061.33751338134, | ||
5677 | 100085.05224300563, | ||
5678 | 100108.76837748935, | ||
5679 | 100132.4859166661, | ||
5680 | 100156.2048603695, | ||
5681 | 100179.92520843323, | ||
5682 | 100203.64696069101, | ||
5683 | 100227.37011697664, | ||
5684 | 100251.09467712394, | ||
5685 | 100274.82064096678, | ||
5686 | 100298.54800833909, | ||
5687 | 100322.27677907483, | ||
5688 | 100346.00695300807, | ||
5689 | 100369.73852997283, | ||
5690 | 100393.47150980328, | ||
5691 | 100417.20589233354, | ||
5692 | 100440.94167739789, | ||
5693 | 100464.67886483055, | ||
5694 | 100488.41745446586, | ||
5695 | 100512.1574461382, | ||
5696 | 100535.89883968196, | ||
5697 | 100559.64163493161, | ||
5698 | 100583.38583172169, | ||
5699 | 100607.13142988674, | ||
5700 | 100630.87842926137, | ||
5701 | 100654.62682968024, | ||
5702 | 100678.37663097809, | ||
5703 | 100702.12783298964, | ||
5704 | 100725.88043554971, | ||
5705 | 100749.63443849317, | ||
5706 | 100773.38984165489, | ||
5707 | 100797.14664486986, | ||
5708 | 100820.90484797307, | ||
5709 | 100844.66445079957, | ||
5710 | 100868.42545318443, | ||
5711 | 100892.18785496285, | ||
5712 | 100915.95165596998, | ||
5713 | 100939.71685604109, | ||
5714 | 100963.48345501146, | ||
5715 | 100987.25145271645, | ||
5716 | 101011.02084899142, | ||
5717 | 101034.79164367182, | ||
5718 | 101058.56383659317, | ||
5719 | 101082.33742759094, | ||
5720 | 101106.11241650078, | ||
5721 | 101129.88880315828, | ||
5722 | 101153.66658739912, | ||
5723 | 101177.44576905905, | ||
5724 | 101201.22634797383, | ||
5725 | 101225.00832397929, | ||
5726 | 101248.7916969113, | ||
5727 | 101272.57646660579, | ||
5728 | 101296.36263289873, | ||
5729 | 101320.15019562612, | ||
5730 | 101343.93915462404, | ||
5731 | 101367.7295097286, | ||
5732 | 101391.52126077596, | ||
5733 | 101415.31440760233, | ||
5734 | 101439.10895004397, | ||
5735 | 101462.9048879372, | ||
5736 | 101486.70222111834, | ||
5737 | 101510.50094942382, | ||
5738 | 101534.30107269008, | ||
5739 | 101558.10259075361, | ||
5740 | 101581.90550345098, | ||
5741 | 101605.70981061876, | ||
5742 | 101629.5155120936, | ||
5743 | 101653.32260771218, | ||
5744 | 101677.13109731126, | ||
5745 | 101700.9409807276, | ||
5746 | 101724.75225779804, | ||
5747 | 101748.56492835947, | ||
5748 | 101772.37899224881, | ||
5749 | 101796.19444930303, | ||
5750 | 101820.01129935916, | ||
5751 | 101843.82954225427, | ||
5752 | 101867.64917782549, | ||
5753 | 101891.47020590997, | ||
5754 | 101915.29262634492, | ||
5755 | 101939.11643896763, | ||
5756 | 101962.94164361537, | ||
5757 | 101986.76824012553, | ||
5758 | 102010.59622833549, | ||
5759 | 102034.42560808272, | ||
5760 | 102058.25637920471, | ||
5761 | 102082.08854153901, | ||
5762 | 102105.9220949232, | ||
5763 | 102129.75703919494, | ||
5764 | 102153.59337419191, | ||
5765 | 102177.43109975185, | ||
5766 | 102201.27021571253, | ||
5767 | 102225.1107219118, | ||
5768 | 102248.95261818753, | ||
5769 | 102272.79590437764, | ||
5770 | 102296.64058032009, | ||
5771 | 102320.48664585294, | ||
5772 | 102344.33410081422, | ||
5773 | 102368.18294504205, | ||
5774 | 102392.03317837461, | ||
5775 | 102415.88480065008, | ||
5776 | 102439.73781170673, | ||
5777 | 102463.59221138287, | ||
5778 | 102487.44799951684, | ||
5779 | 102511.30517594704, | ||
5780 | 102535.1637405119, | ||
5781 | 102559.02369304992, | ||
5782 | 102582.88503339965, | ||
5783 | 102606.74776139967, | ||
5784 | 102630.61187688859, | ||
5785 | 102654.4773797051, | ||
5786 | 102678.34426968795, | ||
5787 | 102702.21254667587, | ||
5788 | 102726.08221050771, | ||
5789 | 102749.95326102231, | ||
5790 | 102773.8256980586, | ||
5791 | 102797.69952145554, | ||
5792 | 102821.57473105213, | ||
5793 | 102845.45132668741, | ||
5794 | 102869.32930820051, | ||
5795 | 102893.20867543056, | ||
5796 | 102917.08942821674, | ||
5797 | 102940.97156639832, | ||
5798 | 102964.85508981455, | ||
5799 | 102988.73999830478, | ||
5800 | 103012.6262917084, | ||
5801 | 103036.51396986481, | ||
5802 | 103060.40303261351, | ||
5803 | 103084.293479794, | ||
5804 | 103108.18531124585, | ||
5805 | 103132.07852680866, | ||
5806 | 103155.97312632212, | ||
5807 | 103179.8691096259, | ||
5808 | 103203.76647655977, | ||
5809 | 103227.66522696352, | ||
5810 | 103251.56536067701, | ||
5811 | 103275.46687754011, | ||
5812 | 103299.36977739276, | ||
5813 | 103323.27406007495, | ||
5814 | 103347.1797254267, | ||
5815 | 103371.0867732881, | ||
5816 | 103394.99520349925, | ||
5817 | 103418.90501590034, | ||
5818 | 103442.81621033157, | ||
5819 | 103466.72878663319, | ||
5820 | 103490.64274464553, | ||
5821 | 103514.55808420894, | ||
5822 | 103538.4748051638, | ||
5823 | 103562.39290735057, | ||
5824 | 103586.31239060973, | ||
5825 | 103610.23325478184, | ||
5826 | 103634.15549970744, | ||
5827 | 103658.07912522719, | ||
5828 | 103682.00413118176, | ||
5829 | 103705.93051741188, | ||
5830 | 103729.85828375829, | ||
5831 | 103753.78743006183, | ||
5832 | 103777.71795616332, | ||
5833 | 103801.64986190372, | ||
5834 | 103825.58314712394, | ||
5835 | 103849.51781166498, | ||
5836 | 103873.4538553679, | ||
5837 | 103897.39127807376, | ||
5838 | 103921.33007962372, | ||
5839 | 103945.27025985894, | ||
5840 | 103969.21181862066, | ||
5841 | 103993.15475575015, | ||
5842 | 104017.0990710887, | ||
5843 | 104041.0447644777, | ||
5844 | 104064.99183575854, | ||
5845 | 104088.94028477269, | ||
5846 | 104112.89011136163, | ||
5847 | 104136.84131536692, | ||
5848 | 104160.79389663014, | ||
5849 | 104184.74785499295, | ||
5850 | 104208.70319029699, | ||
5851 | 104232.65990238401, | ||
5852 | 104256.61799109577, | ||
5853 | 104280.57745627411, | ||
5854 | 104304.53829776087, | ||
5855 | 104328.50051539797, | ||
5856 | 104352.46410902737, | ||
5857 | 104376.42907849104, | ||
5858 | 104400.39542363105, | ||
5859 | 104424.36314428948, | ||
5860 | 104448.33224030846, | ||
5861 | 104472.3027115302, | ||
5862 | 104496.27455779689, | ||
5863 | 104520.24777895081, | ||
5864 | 104544.22237483428, | ||
5865 | 104568.19834528965, | ||
5866 | 104592.17569015936, | ||
5867 | 104616.15440928582, | ||
5868 | 104640.13450251156, | ||
5869 | 104664.1159696791, | ||
5870 | 104688.09881063103, | ||
5871 | 104712.08302520998, | ||
5872 | 104736.06861325864, | ||
5873 | 104760.05557461972, | ||
5874 | 104784.043909136, | ||
5875 | 104808.03361665027, | ||
5876 | 104832.0246970054, | ||
5877 | 104856.01715004431, | ||
5878 | 104880.01097560991, | ||
5879 | 104904.00617354522, | ||
5880 | 104928.00274369326, | ||
5881 | 104952.00068589712, | ||
5882 | 104975.99999999993, | ||
5883 | 105000.00068584486, | ||
5884 | 105024.00274327511, | ||
5885 | 105048.00617213396, | ||
5886 | 105072.0109722647, | ||
5887 | 105096.0171435107, | ||
5888 | 105120.02468571534, | ||
5889 | 105144.03359872208, | ||
5890 | 105168.04388237436, | ||
5891 | 105192.05553651576, | ||
5892 | 105216.06856098982, | ||
5893 | 105240.08295564017, | ||
5894 | 105264.09872031047, | ||
5895 | 105288.11585484444, | ||
5896 | 105312.13435908582, | ||
5897 | 105336.1542328784, | ||
5898 | 105360.17547606604, | ||
5899 | 105384.19808849262, | ||
5900 | 105408.22207000206, | ||
5901 | 105432.24742043833, | ||
5902 | 105456.27413964548, | ||
5903 | 105480.30222746753, | ||
5904 | 105504.33168374863, | ||
5905 | 105528.36250833291, | ||
5906 | 105552.39470106458, | ||
5907 | 105576.42826178786, | ||
5908 | 105600.46319034706, | ||
5909 | 105624.49948658649, | ||
5910 | 105648.53715035053, | ||
5911 | 105672.5761814836, | ||
5912 | 105696.61657983017, | ||
5913 | 105720.65834523473, | ||
5914 | 105744.70147754184, | ||
5915 | 105768.7459765961, | ||
5916 | 105792.79184224214, | ||
5917 | 105816.83907432464, | ||
5918 | 105840.88767268835, | ||
5919 | 105864.93763717801, | ||
5920 | 105888.98896763846, | ||
5921 | 105913.04166391456, | ||
5922 | 105937.09572585119, | ||
5923 | 105961.15115329332, | ||
5924 | 105985.20794608595, | ||
5925 | 106009.26610407409, | ||
5926 | 106033.32562710284, | ||
5927 | 106057.38651501729, | ||
5928 | 106081.44876766266, | ||
5929 | 106105.51238488412, | ||
5930 | 106129.57736652695, | ||
5931 | 106153.64371243643, | ||
5932 | 106177.71142245791, | ||
5933 | 106201.78049643678, | ||
5934 | 106225.85093421848, | ||
5935 | 106249.92273564848, | ||
5936 | 106273.99590057228, | ||
5937 | 106298.07042883546, | ||
5938 | 106322.14632028362, | ||
5939 | 106346.22357476239, | ||
5940 | 106370.30219211751, | ||
5941 | 106394.38217219469, | ||
5942 | 106418.46351483969, | ||
5943 | 106442.54621989837, | ||
5944 | 106466.63028721658, | ||
5945 | 106490.71571664025, | ||
5946 | 106514.80250801529, | ||
5947 | 106538.89066118775, | ||
5948 | 106562.98017600364, | ||
5949 | 106587.07105230905, | ||
5950 | 106611.16328995011, | ||
5951 | 106635.25688877302, | ||
5952 | 106659.35184862395, | ||
5953 | 106683.44816934918, | ||
5954 | 106707.54585079502, | ||
5955 | 106731.64489280782, | ||
5956 | 106755.74529523395, | ||
5957 | 106779.84705791986, | ||
5958 | 106803.95018071201, | ||
5959 | 106828.05466345693, | ||
5960 | 106852.16050600118, | ||
5961 | 106876.26770819137, | ||
5962 | 106900.37626987413, | ||
5963 | 106924.48619089619, | ||
5964 | 106948.59747110425, | ||
5965 | 106972.71011034511, | ||
5966 | 106996.82410846559, | ||
5967 | 107020.93946531253, | ||
5968 | 107045.05618073288, | ||
5969 | 107069.17425457356, | ||
5970 | 107093.29368668159, | ||
5971 | 107117.41447690397, | ||
5972 | 107141.53662508781, | ||
5973 | 107165.66013108024, | ||
5974 | 107189.7849947284, | ||
5975 | 107213.91121587952, | ||
5976 | 107238.03879438085, | ||
5977 | 107262.16773007967, | ||
5978 | 107286.29802282334, | ||
5979 | 107310.42967245923, | ||
5980 | 107334.56267883476, | ||
5981 | 107358.69704179741, | ||
5982 | 107382.83276119467, | ||
5983 | 107406.96983687414, | ||
5984 | 107431.10826868335, | ||
5985 | 107455.24805646999, | ||
5986 | 107479.38920008171, | ||
5987 | 107503.53169936626, | ||
5988 | 107527.67555417139, | ||
5989 | 107551.82076434491, | ||
5990 | 107575.96732973469, | ||
5991 | 107600.11525018861, | ||
5992 | 107624.26452555459, | ||
5993 | 107648.41515568066, | ||
5994 | 107672.56714041479, | ||
5995 | 107696.72047960508, | ||
5996 | 107720.87517309963, | ||
5997 | 107745.03122074658, | ||
5998 | 107769.18862239413, | ||
5999 | 107793.34737789053, | ||
6000 | 107817.50748708403, | ||
6001 | 107841.66894982298, | ||
6002 | 107865.83176595572, | ||
6003 | 107889.99593533068, | ||
6004 | 107914.16145779629, | ||
6005 | 107938.32833320105, | ||
6006 | 107962.49656139348, | ||
6007 | 107986.66614222217, | ||
6008 | 108010.83707553572, | ||
6009 | 108035.00936118282, | ||
6010 | 108059.18299901215, | ||
6011 | 108083.35798887245, | ||
6012 | 108107.53433061253, | ||
6013 | 108131.71202408121, | ||
6014 | 108155.89106912735, | ||
6015 | 108180.07146559987, | ||
6016 | 108204.25321334775, | ||
6017 | 108228.43631221994, | ||
6018 | 108252.62076206553, | ||
6019 | 108276.80656273357, | ||
6020 | 108300.99371407321, | ||
6021 | 108325.18221593359, | ||
6022 | 108349.37206816394, | ||
6023 | 108373.56327061349, | ||
6024 | 108397.75582313156, | ||
6025 | 108421.94972556747, | ||
6026 | 108446.1449777706, | ||
6027 | 108470.34157959036, | ||
6028 | 108494.53953087622, | ||
6029 | 108518.73883147769, | ||
6030 | 108542.93948124432, | ||
6031 | 108567.14148002568, | ||
6032 | 108591.34482767139, | ||
6033 | 108615.54952403114, | ||
6034 | 108639.75556895464, | ||
6035 | 108663.96296229165, | ||
6036 | 108688.17170389196, | ||
6037 | 108712.38179360541, | ||
6038 | 108736.59323128188, | ||
6039 | 108760.80601677128, | ||
6040 | 108785.02014992358, | ||
6041 | 108809.23563058881, | ||
6042 | 108833.45245861699, | ||
6043 | 108857.67063385822, | ||
6044 | 108881.89015616261, | ||
6045 | 108906.11102538036, | ||
6046 | 108930.33324136167, | ||
6047 | 108954.55680395682, | ||
6048 | 108978.78171301607, | ||
6049 | 109003.00796838976, | ||
6050 | 109027.23556992831, | ||
6051 | 109051.46451748211, | ||
6052 | 109075.69481090162, | ||
6053 | 109099.92645003737, | ||
6054 | 109124.15943473989, | ||
6055 | 109148.39376485976, | ||
6056 | 109172.62944024763, | ||
6057 | 109196.86646075416, | ||
6058 | 109221.10482623006, | ||
6059 | 109245.34453652608, | ||
6060 | 109269.58559149304, | ||
6061 | 109293.82799098175, | ||
6062 | 109318.07173484311, | ||
6063 | 109342.31682292801, | ||
6064 | 109366.56325508743, | ||
6065 | 109390.81103117237, | ||
6066 | 109415.06015103387, | ||
6067 | 109439.31061452301, | ||
6068 | 109463.56242149093, | ||
6069 | 109487.8155717888, | ||
6070 | 109512.07006526781, | ||
6071 | 109536.3259017792, | ||
6072 | 109560.58308117429, | ||
6073 | 109584.8416033044, | ||
6074 | 109609.1014680209, | ||
6075 | 109633.36267517522, | ||
6076 | 109657.62522461878, | ||
6077 | 109681.88911620311, | ||
6078 | 109706.15434977971, | ||
6079 | 109730.4209252002, | ||
6080 | 109754.68884231619, | ||
6081 | 109778.95810097932, | ||
6082 | 109803.22870104131, | ||
6083 | 109827.50064235389, | ||
6084 | 109851.77392476884, | ||
6085 | 109876.04854813802, | ||
6086 | 109900.32451231324, | ||
6087 | 109924.60181714644, | ||
6088 | 109948.88046248957, | ||
6089 | 109973.1604481946, | ||
6090 | 109997.44177411357, | ||
6091 | 110021.72444009855, | ||
6092 | 110046.00844600165, | ||
6093 | 110070.29379167501, | ||
6094 | 110094.58047697082, | ||
6095 | 110118.86850174134, | ||
6096 | 110143.15786583882, | ||
6097 | 110167.44856911557, | ||
6098 | 110191.74061142397, | ||
6099 | 110216.03399261639, | ||
6100 | 110240.32871254528, | ||
6101 | 110264.62477106311, | ||
6102 | 110288.9221680224, | ||
6103 | 110313.22090327571, | ||
6104 | 110337.52097667565, | ||
6105 | 110361.82238807483, | ||
6106 | 110386.12513732594, | ||
6107 | 110410.42922428172, | ||
6108 | 110434.73464879491, | ||
6109 | 110459.04141071832, | ||
6110 | 110483.34950990479, | ||
6111 | 110507.6589462072, | ||
6112 | 110531.96971947847, | ||
6113 | 110556.28182957157, | ||
6114 | 110580.5952763395, | ||
6115 | 110604.91005963532, | ||
6116 | 110629.22617931209, | ||
6117 | 110653.54363522294, | ||
6118 | 110677.86242722106, | ||
6119 | 110702.18255515963, | ||
6120 | 110726.50401889188, | ||
6121 | 110750.82681827113, | ||
6122 | 110775.1509531507, | ||
6123 | 110799.47642338395, | ||
6124 | 110823.80322882428, | ||
6125 | 110848.13136932514, | ||
6126 | 110872.46084474004, | ||
6127 | 110896.79165492248, | ||
6128 | 110921.12379972603, | ||
6129 | 110945.4572790043, | ||
6130 | 110969.79209261097, | ||
6131 | 110994.12824039967, | ||
6132 | 111018.46572222417, | ||
6133 | 111042.80453793822, | ||
6134 | 111067.14468739564, | ||
6135 | 111091.48617045028, | ||
6136 | 111115.82898695602, | ||
6137 | 111140.1731367668, | ||
6138 | 111164.51861973655, | ||
6139 | 111188.86543571933, | ||
6140 | 111213.21358456917, | ||
6141 | 111237.56306614014, | ||
6142 | 111261.91388028639, | ||
6143 | 111286.26602686207, | ||
6144 | 111310.61950572141, | ||
6145 | 111334.97431671864, | ||
6146 | 111359.33045970804, | ||
6147 | 111383.68793454397, | ||
6148 | 111408.04674108078, | ||
6149 | 111432.40687917286, | ||
6150 | 111456.76834867468, | ||
6151 | 111481.13114944073, | ||
6152 | 111505.49528132551, | ||
6153 | 111529.86074418361, | ||
6154 | 111554.22753786964, | ||
6155 | 111578.59566223821, | ||
6156 | 111602.96511714405, | ||
6157 | 111627.33590244185, | ||
6158 | 111651.7080179864, | ||
6159 | 111676.08146363248, | ||
6160 | 111700.45623923496, | ||
6161 | 111724.8323446487, | ||
6162 | 111749.20977972864, | ||
6163 | 111773.58854432974, | ||
6164 | 111797.96863830699, | ||
6165 | 111822.35006151545, | ||
6166 | 111846.73281381019, | ||
6167 | 111871.11689504632, | ||
6168 | 111895.50230507903, | ||
6169 | 111919.8890437635, | ||
6170 | 111944.27711095495, | ||
6171 | 111968.6665065087, | ||
6172 | 111993.05723028004, | ||
6173 | 112017.44928212435, | ||
6174 | 112041.842661897, | ||
6175 | 112066.23736945343, | ||
6176 | 112090.63340464912, | ||
6177 | 112115.03076733962, | ||
6178 | 112139.42945738042, | ||
6179 | 112163.82947462716, | ||
6180 | 112188.23081893545, | ||
6181 | 112212.63349016097, | ||
6182 | 112237.03748815943, | ||
6183 | 112261.44281278658, | ||
6184 | 112285.84946389822, | ||
6185 | 112310.25744135017, | ||
6186 | 112334.66674499828, | ||
6187 | 112359.07737469849, | ||
6188 | 112383.48933030672, | ||
6189 | 112407.90261167898, | ||
6190 | 112432.31721867126, | ||
6191 | 112456.73315113965, | ||
6192 | 112481.15040894024, | ||
6193 | 112505.56899192919, | ||
6194 | 112529.98889996267, | ||
6195 | 112554.41013289688, | ||
6196 | 112578.8326905881, | ||
6197 | 112603.25657289263, | ||
6198 | 112627.68177966679, | ||
6199 | 112652.10831076698, | ||
6200 | 112676.53616604958, | ||
6201 | 112700.96534537108, | ||
6202 | 112725.39584858794, | ||
6203 | 112749.82767555672, | ||
6204 | 112774.26082613398, | ||
6205 | 112798.6953001763, | ||
6206 | 112823.13109754038, | ||
6207 | 112847.56821808286, | ||
6208 | 112872.00666166049, | ||
6209 | 112896.44642813003, | ||
6210 | 112920.88751734827, | ||
6211 | 112945.32992917208, | ||
6212 | 112969.77366345831, | ||
6213 | 112994.21872006389, | ||
6214 | 113018.66509884578, | ||
6215 | 113043.11279966099, | ||
6216 | 113067.56182236652, | ||
6217 | 113092.01216681948, | ||
6218 | 113116.46383287695, | ||
6219 | 113140.9168203961, | ||
6220 | 113165.37112923413, | ||
6221 | 113189.82675924824, | ||
6222 | 113214.28371029573, | ||
6223 | 113238.74198223387, | ||
6224 | 113263.20157492002, | ||
6225 | 113287.66248821157, | ||
6226 | 113312.12472196593, | ||
6227 | 113336.58827604055, | ||
6228 | 113361.05315029295, | ||
6229 | 113385.51934458067, | ||
6230 | 113409.98685876124, | ||
6231 | 113434.45569269233, | ||
6232 | 113458.92584623155, | ||
6233 | 113483.39731923661, | ||
6234 | 113507.87011156522, | ||
6235 | 113532.34422307517, | ||
6236 | 113556.81965362425, | ||
6237 | 113581.2964030703, | ||
6238 | 113605.77447127122, | ||
6239 | 113630.25385808491, | ||
6240 | 113654.73456336933, | ||
6241 | 113679.2165869825, | ||
6242 | 113703.69992878241, | ||
6243 | 113728.18458862718, | ||
6244 | 113752.67056637487, | ||
6245 | 113777.15786188368, | ||
6246 | 113801.64647501177, | ||
6247 | 113826.13640561736, | ||
6248 | 113850.62765355874, | ||
6249 | 113875.12021869418, | ||
6250 | 113899.61410088204, | ||
6251 | 113924.1092999807, | ||
6252 | 113948.60581584855, | ||
6253 | 113973.10364834407, | ||
6254 | 113997.60279732574, | ||
6255 | 114022.1032626521, | ||
6256 | 114046.60504418171, | ||
6257 | 114071.10814177318, | ||
6258 | 114095.61255528514, | ||
6259 | 114120.11828457628, | ||
6260 | 114144.62532950533, | ||
6261 | 114169.13368993104, | ||
6262 | 114193.6433657122, | ||
6263 | 114218.15435670764, | ||
6264 | 114242.66666277625, | ||
6265 | 114267.18028377694, | ||
6266 | 114291.69521956862, | ||
6267 | 114316.21147001031, | ||
6268 | 114340.72903496103, | ||
6269 | 114365.24791427983, | ||
6270 | 114389.7681078258, | ||
6271 | 114414.2896154581, | ||
6272 | 114438.81243703589, | ||
6273 | 114463.33657241837, | ||
6274 | 114487.8620214648, | ||
6275 | 114512.38878403447, | ||
6276 | 114536.91685998671, | ||
6277 | 114561.44624918087, | ||
6278 | 114585.97695147636, | ||
6279 | 114610.5089667326, | ||
6280 | 114635.04229480909, | ||
6281 | 114659.57693556532, | ||
6282 | 114684.11288886084, | ||
6283 | 114708.65015455526, | ||
6284 | 114733.18873250818, | ||
6285 | 114757.72862257928, | ||
6286 | 114782.26982462825, | ||
6287 | 114806.81233851484, | ||
6288 | 114831.35616409882, | ||
6289 | 114855.90130123998, | ||
6290 | 114880.44774979822, | ||
6291 | 114904.99550963337, | ||
6292 | 114929.5445806054, | ||
6293 | 114954.09496257425, | ||
6294 | 114978.64665539992, | ||
6295 | 115003.19965894247, | ||
6296 | 115027.75397306195, | ||
6297 | 115052.30959761847, | ||
6298 | 115076.86653247218, | ||
6299 | 115101.42477748329, | ||
6300 | 115125.984332512, | ||
6301 | 115150.54519741859, | ||
6302 | 115175.10737206334, | ||
6303 | 115199.67085630659, | ||
6304 | 115224.23565000873, | ||
6305 | 115248.80175303014, | ||
6306 | 115273.3691652313, | ||
6307 | 115297.93788647266, | ||
6308 | 115322.50791661476, | ||
6309 | 115347.07925551817, | ||
6310 | 115371.65190304347, | ||
6311 | 115396.22585905129, | ||
6312 | 115420.80112340231, | ||
6313 | 115445.37769595724, | ||
6314 | 115469.95557657682, | ||
6315 | 115494.53476512182, | ||
6316 | 115519.11526145306, | ||
6317 | 115543.69706543141, | ||
6318 | 115568.28017691776, | ||
6319 | 115592.86459577303, | ||
6320 | 115617.4503218582, | ||
6321 | 115642.03735503425, | ||
6322 | 115666.62569516223, | ||
6323 | 115691.21534210323, | ||
6324 | 115715.80629571836, | ||
6325 | 115740.39855586876, | ||
6326 | 115764.99212241563, | ||
6327 | 115789.58699522018, | ||
6328 | 115814.18317414368, | ||
6329 | 115838.78065904744, | ||
6330 | 115863.37944979276, | ||
6331 | 115887.97954624105, | ||
6332 | 115912.5809482537, | ||
6333 | 115937.18365569216, | ||
6334 | 115961.78766841792, | ||
6335 | 115986.39298629249, | ||
6336 | 116010.99960917742, | ||
6337 | 116035.60753693432, | ||
6338 | 116060.21676942479, | ||
6339 | 116084.82730651053, | ||
6340 | 116109.43914805322, | ||
6341 | 116134.0522939146, | ||
6342 | 116158.66674395646, | ||
6343 | 116183.2824980406, | ||
6344 | 116207.89955602887, | ||
6345 | 116232.51791778316, | ||
6346 | 116257.13758316539, | ||
6347 | 116281.75855203751, | ||
6348 | 116306.38082426153, | ||
6349 | 116331.00439969949, | ||
6350 | 116355.62927821343, | ||
6351 | 116380.25545966547, | ||
6352 | 116404.88294391775, | ||
6353 | 116429.51173083246, | ||
6354 | 116454.14182027178, | ||
6355 | 116478.77321209799, | ||
6356 | 116503.40590617337, | ||
6357 | 116528.03990236025, | ||
6358 | 116552.67520052097, | ||
6359 | 116577.31180051794, | ||
6360 | 116601.94970221359, | ||
6361 | 116626.5889054704, | ||
6362 | 116651.22941015086, | ||
6363 | 116675.87121611751, | ||
6364 | 116700.51432323294, | ||
6365 | 116725.15873135976, | ||
6366 | 116749.8044403606, | ||
6367 | 116774.45145009817, | ||
6368 | 116799.0997604352, | ||
6369 | 116823.74937123443, | ||
6370 | 116848.40028235866, | ||
6371 | 116873.05249367072, | ||
6372 | 116897.70600503348, | ||
6373 | 116922.36081630984, | ||
6374 | 116947.01692736275, | ||
6375 | 116971.67433805518, | ||
6376 | 116996.33304825013, | ||
6377 | 117020.99305781067, | ||
6378 | 117045.65436659988, | ||
6379 | 117070.31697448085, | ||
6380 | 117094.98088131678, | ||
6381 | 117119.64608697082, | ||
6382 | 117144.31259130624, | ||
6383 | 117168.98039418629, | ||
6384 | 117193.64949547425, | ||
6385 | 117218.31989503348, | ||
6386 | 117242.99159272734, | ||
6387 | 117267.66458841923, | ||
6388 | 117292.33888197262, | ||
6389 | 117317.01447325097, | ||
6390 | 117341.6913621178, | ||
6391 | 117366.36954843666, | ||
6392 | 117391.04903207115, | ||
6393 | 117415.72981288488, | ||
6394 | 117440.41189074152, | ||
6395 | 117465.09526550474, | ||
6396 | 117489.77993703831, | ||
6397 | 117514.46590520597, | ||
6398 | 117539.15316987153, | ||
6399 | 117563.84173089883, | ||
6400 | 117588.53158815173, | ||
6401 | 117613.22274149416, | ||
6402 | 117637.91519079007, | ||
6403 | 117662.60893590341, | ||
6404 | 117687.30397669821, | ||
6405 | 117712.00031303853, | ||
6406 | 117736.69794478847, | ||
6407 | 117761.39687181212, | ||
6408 | 117786.09709397367, | ||
6409 | 117810.7986111373, | ||
6410 | 117835.50142316725, | ||
6411 | 117860.20552992777, | ||
6412 | 117884.91093128319, | ||
6413 | 117909.6176270978, | ||
6414 | 117934.32561723603, | ||
6415 | 117959.03490156225, | ||
6416 | 117983.74547994092, | ||
6417 | 118008.45735223651, | ||
6418 | 118033.17051831353, | ||
6419 | 118057.88497803656, | ||
6420 | 118082.60073127014, | ||
6421 | 118107.31777787894, | ||
6422 | 118132.03611772758, | ||
6423 | 118156.75575068076, | ||
6424 | 118181.47667660323, | ||
6425 | 118206.19889535972, | ||
6426 | 118230.92240681504, | ||
6427 | 118255.64721083404, | ||
6428 | 118280.37330728157, | ||
6429 | 118305.10069602253, | ||
6430 | 118329.82937692189, | ||
6431 | 118354.55934984458, | ||
6432 | 118379.29061465565, | ||
6433 | 118404.02317122012, | ||
6434 | 118428.75701940308, | ||
6435 | 118453.49215906965, | ||
6436 | 118478.22859008498, | ||
6437 | 118502.96631231424, | ||
6438 | 118527.70532562268, | ||
6439 | 118552.44562987552, | ||
6440 | 118577.18722493808, | ||
6441 | 118601.93011067568, | ||
6442 | 118626.67428695368, | ||
6443 | 118651.41975363747, | ||
6444 | 118676.16651059251, | ||
6445 | 118700.91455768423, | ||
6446 | 118725.66389477813, | ||
6447 | 118750.41452173979, | ||
6448 | 118775.16643843475, | ||
6449 | 118799.91964472862, | ||
6450 | 118824.67414048707, | ||
6451 | 118849.42992557574, | ||
6452 | 118874.18699986035, | ||
6453 | 118898.94536320666, | ||
6454 | 118923.70501548045, | ||
6455 | 118948.46595654752, | ||
6456 | 118973.22818627374, | ||
6457 | 118997.99170452499, | ||
6458 | 119022.7565111672, | ||
6459 | 119047.52260606633, | ||
6460 | 119072.28998908834, | ||
6461 | 119097.0586600993, | ||
6462 | 119121.82861896523, | ||
6463 | 119146.59986555226, | ||
6464 | 119171.3723997265, | ||
6465 | 119196.14622135412, | ||
6466 | 119220.92133030134, | ||
6467 | 119245.69772643436, | ||
6468 | 119270.47540961947, | ||
6469 | 119295.25437972297, | ||
6470 | 119320.03463661121, | ||
6471 | 119344.81618015055, | ||
6472 | 119369.5990102074, | ||
6473 | 119394.38312664822, | ||
6474 | 119419.16852933947, | ||
6475 | 119443.95521814766, | ||
6476 | 119468.74319293935, | ||
6477 | 119493.53245358112, | ||
6478 | 119518.32299993958, | ||
6479 | 119543.11483188139, | ||
6480 | 119567.90794927324, | ||
6481 | 119592.70235198183, | ||
6482 | 119617.49803987393, | ||
6483 | 119642.29501281632, | ||
6484 | 119667.09327067583, | ||
6485 | 119691.89281331931, | ||
6486 | 119716.69364061367, | ||
6487 | 119741.49575242582, | ||
6488 | 119766.29914862274, | ||
6489 | 119791.10382907141, | ||
6490 | 119815.90979363887, | ||
6491 | 119840.71704219218, | ||
6492 | 119865.52557459843, | ||
6493 | 119890.33539072477, | ||
6494 | 119915.14649043836, | ||
6495 | 119939.95887360642, | ||
6496 | 119964.77254009615, | ||
6497 | 119989.58748977486, | ||
6498 | 120014.40372250983, | ||
6499 | 120039.22123816841, | ||
6500 | 120064.04003661797, | ||
6501 | 120088.86011772591, | ||
6502 | 120113.6814813597, | ||
6503 | 120138.5041273868, | ||
6504 | 120163.3280556747, | ||
6505 | 120188.15326609099, | ||
6506 | 120212.97975850321, | ||
6507 | 120237.807532779, | ||
6508 | 120262.63658878599, | ||
6509 | 120287.46692639188, | ||
6510 | 120312.29854546436, | ||
6511 | 120337.13144587121, | ||
6512 | 120361.9656274802, | ||
6513 | 120386.80109015915, | ||
6514 | 120411.63783377589, | ||
6515 | 120436.47585819835, | ||
6516 | 120461.31516329442, | ||
6517 | 120486.15574893207, | ||
6518 | 120510.99761497928, | ||
6519 | 120535.84076130406, | ||
6520 | 120560.68518777451, | ||
6521 | 120585.53089425867, | ||
6522 | 120610.3778806247, | ||
6523 | 120635.22614674074, | ||
6524 | 120660.07569247499, | ||
6525 | 120684.92651769568, | ||
6526 | 120709.77862227106, | ||
6527 | 120734.63200606944, | ||
6528 | 120759.48666895913, | ||
6529 | 120784.3426108085, | ||
6530 | 120809.19983148595, | ||
6531 | 120834.05833085992, | ||
6532 | 120858.91810879884, | ||
6533 | 120883.77916517125, | ||
6534 | 120908.64149984565, | ||
6535 | 120933.5051126906, | ||
6536 | 120958.37000357473, | ||
6537 | 120983.23617236665, | ||
6538 | 121008.10361893504, | ||
6539 | 121032.97234314861, | ||
6540 | 121057.84234487606, | ||
6541 | 121082.71362398617, | ||
6542 | 121107.58618034775, | ||
6543 | 121132.46001382964, | ||
6544 | 121157.33512430069, | ||
6545 | 121182.21151162982, | ||
6546 | 121207.08917568595, | ||
6547 | 121231.96811633807, | ||
6548 | 121256.84833345517, | ||
6549 | 121281.72982690629, | ||
6550 | 121306.61259656049, | ||
6551 | 121331.49664228689, | ||
6552 | 121356.38196395461, | ||
6553 | 121381.26856143285, | ||
6554 | 121406.15643459078, | ||
6555 | 121431.04558329767, | ||
6556 | 121455.93600742276, | ||
6557 | 121480.82770683538, | ||
6558 | 121505.72068140487, | ||
6559 | 121530.61493100057, | ||
6560 | 121555.51045549192, | ||
6561 | 121580.40725474835, | ||
6562 | 121605.30532863933, | ||
6563 | 121630.20467703436, | ||
6564 | 121655.10529980299, | ||
6565 | 121680.00719681478, | ||
6566 | 121704.91036793934, | ||
6567 | 121729.81481304632, | ||
6568 | 121754.72053200539, | ||
6569 | 121779.62752468624, | ||
6570 | 121804.53579095862, | ||
6571 | 121829.44533069231, | ||
6572 | 121854.3561437571, | ||
6573 | 121879.26823002285, | ||
6574 | 121904.1815893594, | ||
6575 | 121929.09622163669, | ||
6576 | 121954.01212672464, | ||
6577 | 121978.92930449323, | ||
6578 | 122003.84775481246, | ||
6579 | 122028.76747755238, | ||
6580 | 122053.68847258303, | ||
6581 | 122078.61073977455, | ||
6582 | 122103.53427899707, | ||
6583 | 122128.45909012076, | ||
6584 | 122153.38517301581, | ||
6585 | 122178.31252755247, | ||
6586 | 122203.24115360099, | ||
6587 | 122228.17105103172, | ||
6588 | 122253.10221971494, | ||
6589 | 122278.03465952107, | ||
6590 | 122302.96837032049, | ||
6591 | 122327.90335198362, | ||
6592 | 122352.83960438096, | ||
6593 | 122377.777127383, | ||
6594 | 122402.71592086025, | ||
6595 | 122427.65598468333, | ||
6596 | 122452.59731872278, | ||
6597 | 122477.53992284928, | ||
6598 | 122502.48379693348, | ||
6599 | 122527.42894084606, | ||
6600 | 122552.37535445779, | ||
6601 | 122577.32303763942, | ||
6602 | 122602.27199026172, | ||
6603 | 122627.22221219557, | ||
6604 | 122652.17370331181, | ||
6605 | 122677.12646348133, | ||
6606 | 122702.08049257506, | ||
6607 | 122727.03579046397, | ||
6608 | 122751.99235701906, | ||
6609 | 122776.95019211136, | ||
6610 | 122801.9092956119, | ||
6611 | 122826.8696673918, | ||
6612 | 122851.83130732219, | ||
6613 | 122876.79421527422, | ||
6614 | 122901.75839111909, | ||
6615 | 122926.72383472799, | ||
6616 | 122951.69054597223, | ||
6617 | 122976.65852472307, | ||
6618 | 123001.62777085182, | ||
6619 | 123026.59828422987, | ||
6620 | 123051.57006472857, | ||
6621 | 123076.54311221937, | ||
6622 | 123101.5174265737, | ||
6623 | 123126.49300766307, | ||
6624 | 123151.46985535898, | ||
6625 | 123176.44796953299, | ||
6626 | 123201.42735005668, | ||
6627 | 123226.40799680166, | ||
6628 | 123251.38990963959, | ||
6629 | 123276.37308844214, | ||
6630 | 123301.35753308103, | ||
6631 | 123326.343243428, | ||
6632 | 123351.33021935483, | ||
6633 | 123376.31846073334, | ||
6634 | 123401.30796743535, | ||
6635 | 123426.29873933276, | ||
6636 | 123451.29077629748, | ||
6637 | 123476.28407820144, | ||
6638 | 123501.2786449166, | ||
6639 | 123526.27447631498, | ||
6640 | 123551.27157226863, | ||
6641 | 123576.26993264959, | ||
6642 | 123601.26955732999, | ||
6643 | 123626.27044618195, | ||
6644 | 123651.27259907764, | ||
6645 | 123676.27601588926, | ||
6646 | 123701.28069648903, | ||
6647 | 123726.28664074924, | ||
6648 | 123751.29384854218, | ||
6649 | 123776.30231974016, | ||
6650 | 123801.31205421555, | ||
6651 | 123826.32305184075, | ||
6652 | 123851.33531248817, | ||
6653 | 123876.34883603029, | ||
6654 | 123901.36362233957, | ||
6655 | 123926.37967128855, | ||
6656 | 123951.39698274979, | ||
6657 | 123976.41555659588, | ||
6658 | 124001.43539269941, | ||
6659 | 124026.45649093305, | ||
6660 | 124051.47885116948, | ||
6661 | 124076.50247328142, | ||
6662 | 124101.5273571416, | ||
6663 | 124126.55350262282, | ||
6664 | 124151.58090959788, | ||
6665 | 124176.60957793961, | ||
6666 | 124201.63950752091, | ||
6667 | 124226.67069821467, | ||
6668 | 124251.70314989384, | ||
6669 | 124276.73686243138, | ||
6670 | 124301.7718357003, | ||
6671 | 124326.80806957364, | ||
6672 | 124351.84556392446, | ||
6673 | 124376.88431862585, | ||
6674 | 124401.92433355095, | ||
6675 | 124426.96560857294, | ||
6676 | 124452.00814356498, | ||
6677 | 124477.05193840031, | ||
6678 | 124502.0969929522, | ||
6679 | 124527.14330709392, | ||
6680 | 124552.19088069882, | ||
6681 | 124577.23971364023, | ||
6682 | 124602.28980579154, | ||
6683 | 124627.34115702618, | ||
6684 | 124652.3937672176, | ||
6685 | 124677.44763623926, | ||
6686 | 124702.50276396469, | ||
6687 | 124727.55915026742, | ||
6688 | 124752.61679502104, | ||
6689 | 124777.67569809916, | ||
6690 | 124802.73585937542, | ||
6691 | 124827.79727872348, | ||
6692 | 124852.85995601704, | ||
6693 | 124877.92389112986, | ||
6694 | 124902.98908393568, | ||
6695 | 124928.05553430831, | ||
6696 | 124953.1232421216, | ||
6697 | 124978.19220724938, | ||
6698 | 125003.26242956554, | ||
6699 | 125028.33390894404, | ||
6700 | 125053.40664525882, | ||
6701 | 125078.48063838384, | ||
6702 | 125103.55588819318, | ||
6703 | 125128.63239456083, | ||
6704 | 125153.71015736091, | ||
6705 | 125178.78917646752, | ||
6706 | 125203.86945175481, | ||
6707 | 125228.95098309696, | ||
6708 | 125254.03377036817, | ||
6709 | 125279.1178134427, | ||
6710 | 125304.20311219479, | ||
6711 | 125329.28966649878, | ||
6712 | 125354.37747622898, | ||
6713 | 125379.46654125977, | ||
6714 | 125404.55686146552, | ||
6715 | 125429.6484367207, | ||
6716 | 125454.74126689974, | ||
6717 | 125479.83535187715, | ||
6718 | 125504.93069152744, | ||
6719 | 125530.02728572517, | ||
6720 | 125555.12513434493, | ||
6721 | 125580.22423726133, | ||
6722 | 125605.32459434902, | ||
6723 | 125630.4262054827, | ||
6724 | 125655.52907053704, | ||
6725 | 125680.63318938682, | ||
6726 | 125705.73856190679, | ||
6727 | 125730.84518797178, | ||
6728 | 125755.9530674566, | ||
6729 | 125781.06220023613, | ||
6730 | 125806.17258618528, | ||
6731 | 125831.28422517896, | ||
6732 | 125856.39711709213, | ||
6733 | 125881.51126179981, | ||
6734 | 125906.62665917698, | ||
6735 | 125931.74330909875, | ||
6736 | 125956.86121144016, | ||
6737 | 125981.98036607634, | ||
6738 | 126007.10077288245, | ||
6739 | 126032.22243173365, | ||
6740 | 126057.34534250517, | ||
6741 | 126082.46950507225, | ||
6742 | 126107.59491931014, | ||
6743 | 126132.72158509417, | ||
6744 | 126157.84950229966, | ||
6745 | 126182.97867080198, | ||
6746 | 126208.10909047653, | ||
6747 | 126233.24076119871, | ||
6748 | 126258.37368284403, | ||
6749 | 126283.50785528794, | ||
6750 | 126308.64327840599, | ||
6751 | 126333.77995207369, | ||
6752 | 126358.91787616667, | ||
6753 | 126384.0570505605, | ||
6754 | 126409.19747513086, | ||
6755 | 126434.3391497534, | ||
6756 | 126459.48207430386, | ||
6757 | 126484.62624865794, | ||
6758 | 126509.77167269142, | ||
6759 | 126534.9183462801, | ||
6760 | 126560.06626929982, | ||
6761 | 126585.21544162642, | ||
6762 | 126610.36586313581, | ||
6763 | 126635.51753370393, | ||
6764 | 126660.67045320668, | ||
6765 | 126685.82462152008, | ||
6766 | 126710.98003852014, | ||
6767 | 126736.13670408291, | ||
6768 | 126761.29461808444, | ||
6769 | 126786.45378040087, | ||
6770 | 126811.61419090834, | ||
6771 | 126836.77584948298, | ||
6772 | 126861.93875600102, | ||
6773 | 126887.10291033868, | ||
6774 | 126912.26831237224, | ||
6775 | 126937.43496197795, | ||
6776 | 126962.60285903217, | ||
6777 | 126987.77200341123, | ||
6778 | 127012.94239499152, | ||
6779 | 127038.11403364947, | ||
6780 | 127063.2869192615, | ||
6781 | 127088.46105170409, | ||
6782 | 127113.63643085376, | ||
6783 | 127138.81305658702, | ||
6784 | 127163.99092878048, | ||
6785 | 127189.17004731069, | ||
6786 | 127214.35041205429, | ||
6787 | 127239.53202288797, | ||
6788 | 127264.71487968838, | ||
6789 | 127289.89898233226, | ||
6790 | 127315.08433069635, | ||
6791 | 127340.27092465744, | ||
6792 | 127365.45876409234, | ||
6793 | 127390.64784887788, | ||
6794 | 127415.83817889093, | ||
6795 | 127441.02975400841, | ||
6796 | 127466.22257410725, | ||
6797 | 127491.41663906439, | ||
6798 | 127516.61194875685, | ||
6799 | 127541.80850306165, | ||
6800 | 127567.00630185583, | ||
6801 | 127592.20534501647, | ||
6802 | 127617.4056324207, | ||
6803 | 127642.60716394568, | ||
6804 | 127667.80993946856, | ||
6805 | 127693.01395886653, | ||
6806 | 127718.21922201688, | ||
6807 | 127743.42572879682, | ||
6808 | 127768.63347908368, | ||
6809 | 127793.84247275478, | ||
6810 | 127819.05270968749, | ||
6811 | 127844.26418975917, | ||
6812 | 127869.47691284724, | ||
6813 | 127894.69087882918, | ||
6814 | 127919.90608758242, | ||
6815 | 127945.12253898452, | ||
6816 | 127970.34023291297, | ||
6817 | 127995.55916924537, | ||
6818 | 128020.77934785932, | ||
6819 | 128046.00076863244, | ||
6820 | 128071.22343144237, | ||
6821 | 128096.44733616684, | ||
6822 | 128121.67248268353, | ||
6823 | 128146.89887087021, | ||
6824 | 128172.12650060465, | ||
6825 | 128197.35537176467, | ||
6826 | 128222.5854842281, | ||
6827 | 128247.81683787282, | ||
6828 | 128273.04943257671, | ||
6829 | 128298.28326821771, | ||
6830 | 128323.51834467379, | ||
6831 | 128348.75466182294, | ||
6832 | 128373.99221954317, | ||
6833 | 128399.23101771252, | ||
6834 | 128424.47105620909, | ||
6835 | 128449.71233491098, | ||
6836 | 128474.95485369631, | ||
6837 | 128500.19861244329, | ||
6838 | 128525.44361103009, | ||
6839 | 128550.68984933494, | ||
6840 | 128575.93732723613, | ||
6841 | 128601.18604461191, | ||
6842 | 128626.43600134061, | ||
6843 | 128651.68719730059, | ||
6844 | 128676.93963237021, | ||
6845 | 128702.1933064279, | ||
6846 | 128727.44821935208, | ||
6847 | 128752.70437102125, | ||
6848 | 128777.96176131385, | ||
6849 | 128803.22039010846, | ||
6850 | 128828.48025728362, | ||
6851 | 128853.74136271792, | ||
6852 | 128879.00370628996, | ||
6853 | 128904.26728787841, | ||
6854 | 128929.53210736193, | ||
6855 | 128954.79816461923, | ||
6856 | 128980.06545952905, | ||
6857 | 129005.33399197015, | ||
6858 | 129030.60376182134, | ||
6859 | 129055.87476896142, | ||
6860 | 129081.14701326926, | ||
6861 | 129106.42049462376, | ||
6862 | 129131.6952129038, | ||
6863 | 129156.97116798835, | ||
6864 | 129182.24835975636, | ||
6865 | 129207.52678808685, | ||
6866 | 129232.80645285884, | ||
6867 | 129258.08735395141, | ||
6868 | 129283.36949124365, | ||
6869 | 129308.65286461466, | ||
6870 | 129333.9374739436, | ||
6871 | 129359.22331910966, | ||
6872 | 129384.51039999202, | ||
6873 | 129409.79871646997, | ||
6874 | 129435.08826842274, | ||
6875 | 129460.37905572963, | ||
6876 | 129485.67107826998, | ||
6877 | 129510.96433592314, | ||
6878 | 129536.25882856851, | ||
6879 | 129561.55455608548, | ||
6880 | 129586.85151835352, | ||
6881 | 129612.14971525209, | ||
6882 | 129637.4491466607, | ||
6883 | 129662.74981245887, | ||
6884 | 129688.0517125262, | ||
6885 | 129713.35484674224, | ||
6886 | 129738.65921498663, | ||
6887 | 129763.96481713903, | ||
6888 | 129789.27165307909, | ||
6889 | 129814.57972268655, | ||
6890 | 129839.88902584116, | ||
6891 | 129865.19956242264, | ||
6892 | 129890.51133231082, | ||
6893 | 129915.82433538554, | ||
6894 | 129941.13857152662, | ||
6895 | 129966.45404061397, | ||
6896 | 129991.7707425275, | ||
6897 | 130017.08867714716, | ||
6898 | 130042.4078443529, | ||
6899 | 130067.72824402474, | ||
6900 | 130093.04987604271, | ||
6901 | 130118.37274028687, | ||
6902 | 130143.69683663732, | ||
6903 | 130169.02216497416, | ||
6904 | 130194.34872517755, | ||
6905 | 130219.67651712766, | ||
6906 | 130245.0055407047, | ||
6907 | 130270.33579578891, | ||
6908 | 130295.66728226055, | ||
6909 | 130320.99999999991, | ||
6910 | 130346.33394888733, | ||
6911 | 130371.66912880314, | ||
6912 | 130397.00553962773, | ||
6913 | 130422.34318124152, | ||
6914 | 130447.68205352494, | ||
6915 | 130473.02215635845, | ||
6916 | 130498.36348962256, | ||
6917 | 130523.70605319779, | ||
6918 | 130549.0498469647, | ||
6919 | 130574.39487080388, | ||
6920 | 130599.74112459592, | ||
6921 | 130625.08860822149, | ||
6922 | 130650.43732156123, | ||
6923 | 130675.78726449587, | ||
6924 | 130701.13843690613, | ||
6925 | 130726.49083867275, | ||
6926 | 130751.84446967654, | ||
6927 | 130777.19932979831, | ||
6928 | 130802.5554189189, | ||
6929 | 130827.91273691918, | ||
6930 | 130853.27128368006, | ||
6931 | 130878.63105908247, | ||
6932 | 130903.99206300738, | ||
6933 | 130929.35429533575, | ||
6934 | 130954.71775594862, | ||
6935 | 130980.08244472703, | ||
6936 | 131005.44836155206, | ||
6937 | 131030.81550630482, | ||
6938 | 131056.18387886642, | ||
6939 | 131081.55347911804, | ||
6940 | 131106.92430694087, | ||
6941 | 131132.29636221612, | ||
6942 | 131157.66964482504, | ||
6943 | 131183.0441546489, | ||
6944 | 131208.41989156904, | ||
6945 | 131233.79685546676, | ||
6946 | 131259.17504622342, | ||
6947 | 131284.55446372041, | ||
6948 | 131309.93510783918, | ||
6949 | 131335.31697846117, | ||
6950 | 131360.70007546784, | ||
6951 | 131386.0843987407, | ||
6952 | 131411.46994816128, | ||
6953 | 131436.85672361116, | ||
6954 | 131462.24472497194, | ||
6955 | 131487.63395212521, | ||
6956 | 131513.02440495262, | ||
6957 | 131538.41608333588, | ||
6958 | 131563.80898715663, | ||
6959 | 131589.2031162967, | ||
6960 | 131614.59847063778, | ||
6961 | 131639.9950500617, | ||
6962 | 131665.39285445024, | ||
6963 | 131690.79188368531, | ||
6964 | 131716.19213764873, | ||
6965 | 131741.59361622241, | ||
6966 | 131766.99631928833, | ||
6967 | 131792.40024672839, | ||
6968 | 131817.80539842462, | ||
6969 | 131843.21177425905, | ||
6970 | 131868.61937411371, | ||
6971 | 131894.02819787065, | ||
6972 | 131919.43824541202, | ||
6973 | 131944.84951661993, | ||
6974 | 131970.26201137656, | ||
6975 | 131995.67572956407, | ||
6976 | 132021.09067106468, | ||
6977 | 132046.50683576067, | ||
6978 | 132071.9242235343, | ||
6979 | 132097.34283426782, | ||
6980 | 132122.76266784366, | ||
6981 | 132148.1837241441, | ||
6982 | 132173.60600305157, | ||
6983 | 132199.02950444847, | ||
6984 | 132224.45422821722, | ||
6985 | 132249.88017424036, | ||
6986 | 132275.30734240031, | ||
6987 | 132300.73573257966, | ||
6988 | 132326.16534466096, | ||
6989 | 132351.59617852676, | ||
6990 | 132377.02823405969, | ||
6991 | 132402.46151114244, | ||
6992 | 132427.89600965759, | ||
6993 | 132453.33172948789, | ||
6994 | 132478.76867051609, | ||
6995 | 132504.20683262491, | ||
6996 | 132529.64621569714, | ||
6997 | 132555.08681961559, | ||
6998 | 132580.5286442631, | ||
6999 | 132605.97168952253, | ||
7000 | 132631.41595527678, | ||
7001 | 132656.86144140881, | ||
7002 | 132682.30814780149, | ||
7003 | 132707.75607433787, | ||
7004 | 132733.20522090094, | ||
7005 | 132758.65558737374, | ||
7006 | 132784.10717363929, | ||
7007 | 132809.55997958075, | ||
7008 | 132835.01400508118, | ||
7009 | 132860.46925002377, | ||
7010 | 132885.92571429166, | ||
7011 | 132911.38339776811, | ||
7012 | 132936.84230033628, | ||
7013 | 132962.30242187946, | ||
7014 | 132987.76376228096, | ||
7015 | 133013.22632142407, | ||
7016 | 133038.69009919214, | ||
7017 | 133064.15509546854, | ||
7018 | 133089.62131013666, | ||
7019 | 133115.08874307995, | ||
7020 | 133140.55739418184, | ||
7021 | 133166.02726332581, | ||
7022 | 133191.49835039541, | ||
7023 | 133216.97065527414, | ||
7024 | 133242.44417784561, | ||
7025 | 133267.91891799335, | ||
7026 | 133293.39487560102, | ||
7027 | 133318.87205055228, | ||
7028 | 133344.35044273079, | ||
7029 | 133369.83005202023, | ||
7030 | 133395.31087830439, | ||
7031 | 133420.79292146701, | ||
7032 | 133446.27618139185, | ||
7033 | 133471.76065796276, | ||
7034 | 133497.24635106357, | ||
7035 | 133522.73326057816, | ||
7036 | 133548.22138639039, | ||
7037 | 133573.71072838426, | ||
7038 | 133599.20128644365, | ||
7039 | 133624.69306045261, | ||
7040 | 133650.1860502951, | ||
7041 | 133675.68025585517, | ||
7042 | 133701.1756770169, | ||
7043 | 133726.67231366437, | ||
7044 | 133752.17016568172, | ||
7045 | 133777.66923295305, | ||
7046 | 133803.16951536259, | ||
7047 | 133828.67101279454, | ||
7048 | 133854.17372513309, | ||
7049 | 133879.67765226253, | ||
7050 | 133905.18279406714, | ||
7051 | 133930.68915043125, | ||
7052 | 133956.19672123916, | ||
7053 | 133981.70550637526, | ||
7054 | 134007.21550572399, | ||
7055 | 134032.7267191697, | ||
7056 | 134058.23914659687, | ||
7057 | 134083.75278789, | ||
7058 | 134109.26764293358, | ||
7059 | 134134.78371161217, | ||
7060 | 134160.30099381026, | ||
7061 | 134185.8194894125, | ||
7062 | 134211.33919830353, | ||
7063 | 134236.8601203679, | ||
7064 | 134262.38225549037, | ||
7065 | 134287.90560355558, | ||
7066 | 134313.43016444831, | ||
7067 | 134338.95593805326, | ||
7068 | 134364.48292425525, | ||
7069 | 134390.01112293909, | ||
7070 | 134415.54053398955, | ||
7071 | 134441.07115729159, | ||
7072 | 134466.60299273001, | ||
7073 | 134492.1360401898, | ||
7074 | 134517.67029955584, | ||
7075 | 134543.20577071316, | ||
7076 | 134568.74245354676, | ||
7077 | 134594.28034794159, | ||
7078 | 134619.81945378278, | ||
7079 | 134645.35977095537, | ||
7080 | 134670.90129934452, | ||
7081 | 134696.4440388353, | ||
7082 | 134721.98798931291, | ||
7083 | 134747.53315066252, | ||
7084 | 134773.07952276937, | ||
7085 | 134798.62710551871, | ||
7086 | 134824.17589879577, | ||
7087 | 134849.72590248589, | ||
7088 | 134875.27711647438, | ||
7089 | 134900.82954064661, | ||
7090 | 134926.38317488792, | ||
7091 | 134951.93801908373, | ||
7092 | 134977.49407311951, | ||
7093 | 135003.05133688069, | ||
7094 | 135028.60981025276, | ||
7095 | 135054.16949312127, | ||
7096 | 135079.73038537172, | ||
7097 | 135105.29248688967, | ||
7098 | 135130.85579756077, | ||
7099 | 135156.42031727062, | ||
7100 | 135181.98604590484, | ||
7101 | 135207.55298334916, | ||
7102 | 135233.12112948924, | ||
7103 | 135258.69048421088, | ||
7104 | 135284.26104739975, | ||
7105 | 135309.83281894168, | ||
7106 | 135335.4057987225, | ||
7107 | 135360.97998662802, | ||
7108 | 135386.55538254412, | ||
7109 | 135412.13198635669, | ||
7110 | 135437.70979795168, | ||
7111 | 135463.28881721498, | ||
7112 | 135488.86904403262, | ||
7113 | 135514.45047829056, | ||
7114 | 135540.03311987486, | ||
7115 | 135565.61696867159, | ||
7116 | 135591.20202456677, | ||
7117 | 135616.78828744654, | ||
7118 | 135642.37575719706, | ||
7119 | 135667.96443370447, | ||
7120 | 135693.55431685498, | ||
7121 | 135719.14540653475, | ||
7122 | 135744.73770263011, | ||
7123 | 135770.33120502727, | ||
7124 | 135795.92591361253, | ||
7125 | 135821.52182827223, | ||
7126 | 135847.11894889272, | ||
7127 | 135872.7172753604, | ||
7128 | 135898.31680756161, | ||
7129 | 135923.91754538284, | ||
7130 | 135949.51948871053, | ||
7131 | 135975.12263743114, | ||
7132 | 136000.72699143123, | ||
7133 | 136026.33255059729, | ||
7134 | 136051.93931481591, | ||
7135 | 136077.54728397369, | ||
7136 | 136103.15645795723, | ||
7137 | 136128.76683665317, | ||
7138 | 136154.37841994822, | ||
7139 | 136179.99120772901, | ||
7140 | 136205.60519988232, | ||
7141 | 136231.2203962949, | ||
7142 | 136256.83679685349, | ||
7143 | 136282.45440144493, | ||
7144 | 136308.07320995603, | ||
7145 | 136333.69322227367, | ||
7146 | 136359.31443828469, | ||
7147 | 136384.93685787608, | ||
7148 | 136410.56048093468, | ||
7149 | 136436.18530734754, | ||
7150 | 136461.81133700156, | ||
7151 | 136487.43856978384, | ||
7152 | 136513.06700558143, | ||
7153 | 136538.6966442813, | ||
7154 | 136564.32748577066, | ||
7155 | 136589.95952993655, | ||
7156 | 136615.59277666616, | ||
7157 | 136641.22722584667, | ||
7158 | 136666.86287736523, | ||
7159 | 136692.49973110916, | ||
7160 | 136718.13778696564, | ||
7161 | 136743.77704482197, | ||
7162 | 136769.41750456547, | ||
7163 | 136795.05916608346, | ||
7164 | 136820.70202926331, | ||
7165 | 136846.34609399244, | ||
7166 | 136871.99136015819, | ||
7167 | 136897.63782764805, | ||
7168 | 136923.28549634948, | ||
7169 | 136948.93436614997, | ||
7170 | 136974.58443693706, | ||
7171 | 137000.23570859825, | ||
7172 | 137025.88818102115, | ||
7173 | 137051.54185409332, | ||
7174 | 137077.19672770242, | ||
7175 | 137102.85280173609, | ||
7176 | 137128.51007608202, | ||
7177 | 137154.16855062786, | ||
7178 | 137179.82822526142, | ||
7179 | 137205.48909987041, | ||
7180 | 137231.15117434258, | ||
7181 | 137256.8144485658, | ||
7182 | 137282.47892242789, | ||
7183 | 137308.14459581667, | ||
7184 | 137333.81146862009, | ||
7185 | 137359.47954072602, | ||
7186 | 137385.14881202241, | ||
7187 | 137410.81928239719, | ||
7188 | 137436.49095173844, | ||
7189 | 137462.16381993407, | ||
7190 | 137487.83788687221, | ||
7191 | 137513.51315244089, | ||
7192 | 137539.18961652822, | ||
7193 | 137564.86727902229, | ||
7194 | 137590.54613981131, | ||
7195 | 137616.22619878338, | ||
7196 | 137641.90745582676, | ||
7197 | 137667.58991082967, | ||
7198 | 137693.27356368033, | ||
7199 | 137718.95841426702, | ||
7200 | 137744.64446247809, | ||
7201 | 137770.33170820182, | ||
7202 | 137796.02015132661, | ||
7203 | 137821.70979174081, | ||
7204 | 137847.40062933284, | ||
7205 | 137873.09266399115, | ||
7206 | 137898.78589560417, | ||
7207 | 137924.48032406042, | ||
7208 | 137950.17594924837, | ||
7209 | 137975.8727710566, | ||
7210 | 138001.57078937365, | ||
7211 | 138027.27000408815, | ||
7212 | 138052.97041508864, | ||
7213 | 138078.67202226384, | ||
7214 | 138104.3748255024, | ||
7215 | 138130.07882469296, | ||
7216 | 138155.78401972432, | ||
7217 | 138181.49041048516, | ||
7218 | 138207.1979968643, | ||
7219 | 138232.9067787505, | ||
7220 | 138258.61675603263, | ||
7221 | 138284.32792859949, | ||
7222 | 138310.04029633995, | ||
7223 | 138335.75385914298, | ||
7224 | 138361.46861689744, | ||
7225 | 138387.18456949232, | ||
7226 | 138412.90171681659, | ||
7227 | 138438.62005875923, | ||
7228 | 138464.33959520931, | ||
7229 | 138490.06032605586, | ||
7230 | 138515.78225118798, | ||
7231 | 138541.50537049473, | ||
7232 | 138567.2296838653, | ||
7233 | 138592.95519118884, | ||
7234 | 138618.68189235451, | ||
7235 | 138644.40978725153, | ||
7236 | 138670.13887576913, | ||
7237 | 138695.86915779658, | ||
7238 | 138721.60063322316, | ||
7239 | 138747.33330193823, | ||
7240 | 138773.06716383106, | ||
7241 | 138798.80221879104, | ||
7242 | 138824.53846670757, | ||
7243 | 138850.27590747006, | ||
7244 | 138876.01454096794, | ||
7245 | 138901.7543670907, | ||
7246 | 138927.49538572782, | ||
7247 | 138953.2375967688, | ||
7248 | 138978.9810001032, | ||
7249 | 139004.72559562061, | ||
7250 | 139030.47138321059, | ||
7251 | 139056.2183627628, | ||
7252 | 139081.96653416683, | ||
7253 | 139107.71589731239, | ||
7254 | 139133.46645208917, | ||
7255 | 139159.21819838689, | ||
7256 | 139184.97113609532, | ||
7257 | 139210.72526510421, | ||
7258 | 139236.48058530336, | ||
7259 | 139262.23709658257, | ||
7260 | 139287.99479883176, | ||
7261 | 139313.75369194071, | ||
7262 | 139339.51377579942, | ||
7263 | 139365.27505029776, | ||
7264 | 139391.03751532568, | ||
7265 | 139416.80117077316, | ||
7266 | 139442.56601653024, | ||
7267 | 139468.33205248689, | ||
7268 | 139494.09927853322, | ||
7269 | 139519.86769455927, | ||
7270 | 139545.63730045516, | ||
7271 | 139571.408096111, | ||
7272 | 139597.18008141697, | ||
7273 | 139622.95325626322, | ||
7274 | 139648.72762054001, | ||
7275 | 139674.5031741375, | ||
7276 | 139700.27991694602, | ||
7277 | 139726.05784885579, | ||
7278 | 139751.83696975713, | ||
7279 | 139777.61727954043, | ||
7280 | 139803.39877809596, | ||
7281 | 139829.18146531415, | ||
7282 | 139854.96534108539, | ||
7283 | 139880.75040530015, | ||
7284 | 139906.53665784886, | ||
7285 | 139932.32409862199, | ||
7286 | 139958.11272751007, | ||
7287 | 139983.90254440365, | ||
7288 | 140009.69354919327, | ||
7289 | 140035.48574176949, | ||
7290 | 140061.27912202294, | ||
7291 | 140087.07368984428, | ||
7292 | 140112.86944512415, | ||
7293 | 140138.66638775321, | ||
7294 | 140164.4645176222, | ||
7295 | 140190.26383462184, | ||
7296 | 140216.06433864293, | ||
7297 | 140241.86602957622, | ||
7298 | 140267.66890731253, | ||
7299 | 140293.47297174268, | ||
7300 | 140319.27822275754, | ||
7301 | 140345.08466024802, | ||
7302 | 140370.89228410498, | ||
7303 | 140396.70109421943, | ||
7304 | 140422.51109048226, | ||
7305 | 140448.32227278448, | ||
7306 | 140474.13464101712, | ||
7307 | 140499.94819507122, | ||
7308 | 140525.76293483781, | ||
7309 | 140551.57886020801, | ||
7310 | 140577.3959710729, | ||
7311 | 140603.21426732364, | ||
7312 | 140629.03374885136, | ||
7313 | 140654.85441554731, | ||
7314 | 140680.67626730262, | ||
7315 | 140706.49930400858, | ||
7316 | 140732.32352555645, | ||
7317 | 140758.1489318375, | ||
7318 | 140783.97552274304, | ||
7319 | 140809.80329816442, | ||
7320 | 140835.63225799298, | ||
7321 | 140861.46240212015, | ||
7322 | 140887.29373043729, | ||
7323 | 140913.12624283586, | ||
7324 | 140938.95993920733, | ||
7325 | 140964.79481944317, | ||
7326 | 140990.63088343487, | ||
7327 | 141016.46813107401, | ||
7328 | 141042.30656225214, | ||
7329 | 141068.14617686081, | ||
7330 | 141093.98697479168, | ||
7331 | 141119.82895593636, | ||
7332 | 141145.6721201865, | ||
7333 | 141171.51646743377, | ||
7334 | 141197.36199756994, | ||
7335 | 141223.20871048668, | ||
7336 | 141249.05660607578, | ||
7337 | 141274.90568422904, | ||
7338 | 141300.75594483822, | ||
7339 | 141326.6073877952, | ||
7340 | 141352.4600129918, | ||
7341 | 141378.31382031992, | ||
7342 | 141404.16880967148, | ||
7343 | 141430.02498093838, | ||
7344 | 141455.8823340126, | ||
7345 | 141481.74086878612, | ||
7346 | 141507.60058515094, | ||
7347 | 141533.46148299909, | ||
7348 | 141559.32356222265, | ||
7349 | 141585.18682271364, | ||
7350 | 141611.05126436421, | ||
7351 | 141636.9168870665, | ||
7352 | 141662.78369071262, | ||
7353 | 141688.65167519479, | ||
7354 | 141714.5208404052, | ||
7355 | 141740.39118623605, | ||
7356 | 141766.26271257963, | ||
7357 | 141792.1354193282, | ||
7358 | 141818.00930637406, | ||
7359 | 141843.88437360956, | ||
7360 | 141869.760620927, | ||
7361 | 141895.6380482188, | ||
7362 | 141921.51665537735, | ||
7363 | 141947.39644229505, | ||
7364 | 141973.27740886438, | ||
7365 | 141999.15955497778, | ||
7366 | 142025.04288052776, | ||
7367 | 142050.92738540689, | ||
7368 | 142076.81306950765, | ||
7369 | 142102.69993272264, | ||
7370 | 142128.58797494444, | ||
7371 | 142154.47719606571, | ||
7372 | 142180.36759597904, | ||
7373 | 142206.25917457714, | ||
7374 | 142232.15193175265, | ||
7375 | 142258.04586739838, | ||
7376 | 142283.94098140698, | ||
7377 | 142309.83727367126, | ||
7378 | 142335.73474408401, | ||
7379 | 142361.63339253806, | ||
7380 | 142387.5332189262, | ||
7381 | 142413.43422314132, | ||
7382 | 142439.33640507635, | ||
7383 | 142465.23976462413, | ||
7384 | 142491.14430167765, | ||
7385 | 142517.05001612983, | ||
7386 | 142542.95690787368, | ||
7387 | 142568.86497680223, | ||
7388 | 142594.77422280848, | ||
7389 | 142620.68464578551, | ||
7390 | 142646.5962456264, | ||
7391 | 142672.50902222423, | ||
7392 | 142698.42297547215, | ||
7393 | 142724.33810526333, | ||
7394 | 142750.25441149093, | ||
7395 | 142776.17189404817, | ||
7396 | 142802.09055282827, | ||
7397 | 142828.01038772447, | ||
7398 | 142853.93139863008, | ||
7399 | 142879.85358543837, | ||
7400 | 142905.77694804268, | ||
7401 | 142931.70148633636, | ||
7402 | 142957.62720021277, | ||
7403 | 142983.55408956532, | ||
7404 | 143009.48215428743, | ||
7405 | 143035.41139427255, | ||
7406 | 143061.34180941415, | ||
7407 | 143087.27339960571, | ||
7408 | 143113.20616474075, | ||
7409 | 143139.14010471283, | ||
7410 | 143165.07521941551, | ||
7411 | 143191.01150874238, | ||
7412 | 143216.94897258704, | ||
7413 | 143242.88761084314, | ||
7414 | 143268.82742340435, | ||
7415 | 143294.76841016437, | ||
7416 | 143320.71057101688, | ||
7417 | 143346.65390585564, | ||
7418 | 143372.59841457437, | ||
7419 | 143398.54409706692, | ||
7420 | 143424.49095322701, | ||
7421 | 143450.43898294857, | ||
7422 | 143476.38818612538, | ||
7423 | 143502.33856265133, | ||
7424 | 143528.29011242036, | ||
7425 | 143554.24283532638, | ||
7426 | 143580.19673126334, | ||
7427 | 143606.1518001252, | ||
7428 | 143632.10804180597, | ||
7429 | 143658.06545619969, | ||
7430 | 143684.02404320039, | ||
7431 | 143709.98380270213, | ||
7432 | 143735.944734599, | ||
7433 | 143761.90683878519, | ||
7434 | 143787.87011515474, | ||
7435 | 143813.83456360188, | ||
7436 | 143839.8001840208, | ||
7437 | 143865.76697630569, | ||
7438 | 143891.73494035081, | ||
7439 | 143917.7040760504, | ||
7440 | 143943.67438329876, | ||
7441 | 143969.6458619902, | ||
7442 | 143995.61851201905, | ||
7443 | 144021.59233327967, | ||
7444 | 144047.56732566646, | ||
7445 | 144073.54348907378, | ||
7446 | 144099.52082339607, | ||
7447 | 144125.49932852783, | ||
7448 | 144151.4790043635, | ||
7449 | 144177.45985079758, | ||
7450 | 144203.44186772458, | ||
7451 | 144229.42505503909, | ||
7452 | 144255.40941263564, | ||
7453 | 144281.39494040885, | ||
7454 | 144307.38163825331, | ||
7455 | 144333.36950606373, | ||
7456 | 144359.35854373468, | ||
7457 | 144385.34875116093, | ||
7458 | 144411.34012823718, | ||
7459 | 144437.33267485813, | ||
7460 | 144463.32639091855, | ||
7461 | 144489.32127631325, | ||
7462 | 144515.31733093705, | ||
7463 | 144541.31455468474, | ||
7464 | 144567.3129474512, | ||
7465 | 144593.3125091313, | ||
7466 | 144619.31323961995, | ||
7467 | 144645.31513881206, | ||
7468 | 144671.31820660262, | ||
7469 | 144697.32244288657, | ||
7470 | 144723.32784755889, | ||
7471 | 144749.33442051467, | ||
7472 | 144775.34216164888, | ||
7473 | 144801.35107085665, | ||
7474 | 144827.36114803303, | ||
7475 | 144853.37239307314, | ||
7476 | 144879.38480587213, | ||
7477 | 144905.39838632516, | ||
7478 | 144931.41313432742, | ||
7479 | 144957.4290497741, | ||
7480 | 144983.44613256046, | ||
7481 | 145009.46438258173, | ||
7482 | 145035.48379973322, | ||
7483 | 145061.50438391021, | ||
7484 | 145087.52613500805, | ||
7485 | 145113.54905292206, | ||
7486 | 145139.57313754765, | ||
7487 | 145165.59838878017, | ||
7488 | 145191.62480651509, | ||
7489 | 145217.65239064783, | ||
7490 | 145243.68114107384, | ||
7491 | 145269.71105768863, | ||
7492 | 145295.74214038774, | ||
7493 | 145321.77438906668, | ||
7494 | 145347.80780362099, | ||
7495 | 145373.84238394629, | ||
7496 | 145399.87812993818, | ||
7497 | 145425.91504149229, | ||
7498 | 145451.95311850426, | ||
7499 | 145477.9923608698, | ||
7500 | 145504.03276848458, | ||
7501 | 145530.07434124436, | ||
7502 | 145556.11707904484, | ||
7503 | 145582.16098178181, | ||
7504 | 145608.20604935108, | ||
7505 | 145634.25228164849, | ||
7506 | 145660.29967856981, | ||
7507 | 145686.34824001096, | ||
7508 | 145712.39796586783, | ||
7509 | 145738.4488560363, | ||
7510 | 145764.50091041232, | ||
7511 | 145790.55412889185, | ||
7512 | 145816.60851137087, | ||
7513 | 145842.66405774537, | ||
7514 | 145868.72076791141, | ||
7515 | 145894.77864176501, | ||
7516 | 145920.83767920226, | ||
7517 | 145946.89788011924, | ||
7518 | 145972.95924441208, | ||
7519 | 145999.02177197693, | ||
7520 | 146025.08546270995, | ||
7521 | 146051.15031650732, | ||
7522 | 146077.21633326527, | ||
7523 | 146103.28351288004, | ||
7524 | 146129.35185524789, | ||
7525 | 146155.42136026506, | ||
7526 | 146181.49202782792, | ||
7527 | 146207.56385783272, | ||
7528 | 146233.63685017588, | ||
7529 | 146259.71100475377, | ||
7530 | 146285.78632146274, | ||
7531 | 146311.86280019928, | ||
7532 | 146337.94044085976, | ||
7533 | 146364.01924334071, | ||
7534 | 146390.09920753856, | ||
7535 | 146416.18033334985, | ||
7536 | 146442.26262067116, | ||
7537 | 146468.34606939898, | ||
7538 | 146494.43067942993, | ||
7539 | 146520.51645066062, | ||
7540 | 146546.60338298764, | ||
7541 | 146572.69147630769, | ||
7542 | 146598.78073051744, | ||
7543 | 146624.87114551352, | ||
7544 | 146650.96272119274, | ||
7545 | 146677.05545745179, | ||
7546 | 146703.14935418745, | ||
7547 | 146729.2444112965, | ||
7548 | 146755.34062867577, | ||
7549 | 146781.43800622207, | ||
7550 | 146807.53654383228, | ||
7551 | 146833.63624140329, | ||
7552 | 146859.73709883197, | ||
7553 | 146885.83911601527, | ||
7554 | 146911.94229285014, | ||
7555 | 146938.04662923355, | ||
7556 | 146964.15212506248, | ||
7557 | 146990.25878023397, | ||
7558 | 147016.36659464505, | ||
7559 | 147042.47556819281, | ||
7560 | 147068.58570077427, | ||
7561 | 147094.6969922866, | ||
7562 | 147120.80944262692, | ||
7563 | 147146.92305169237, | ||
7564 | 147173.03781938017, | ||
7565 | 147199.15374558745, | ||
7566 | 147225.27083021149, | ||
7567 | 147251.38907314953, | ||
7568 | 147277.50847429881, | ||
7569 | 147303.62903355664, | ||
7570 | 147329.75075082036, | ||
7571 | 147355.87362598727, | ||
7572 | 147381.99765895473, | ||
7573 | 147408.12284962015, | ||
7574 | 147434.24919788091, | ||
7575 | 147460.37670363448, | ||
7576 | 147486.50536677826, | ||
7577 | 147512.63518720976, | ||
7578 | 147538.76616482646, | ||
7579 | 147564.89829952587, | ||
7580 | 147591.03159120557, | ||
7581 | 147617.16603976308, | ||
7582 | 147643.30164509601, | ||
7583 | 147669.43840710199, | ||
7584 | 147695.57632567859, | ||
7585 | 147721.71540072354, | ||
7586 | 147747.85563213445, | ||
7587 | 147773.99701980909, | ||
7588 | 147800.13956364512, | ||
7589 | 147826.28326354033, | ||
7590 | 147852.42811939248, | ||
7591 | 147878.57413109933, | ||
7592 | 147904.72129855872, | ||
7593 | 147930.86962166851, | ||
7594 | 147957.01910032652, | ||
7595 | 147983.16973443062, | ||
7596 | 148009.32152387875, | ||
7597 | 148035.47446856883, | ||
7598 | 148061.62856839882, | ||
7599 | 148087.78382326665, | ||
7600 | 148113.94023307035, | ||
7601 | 148140.09779770792, | ||
7602 | 148166.25651707739, | ||
7603 | 148192.41639107687, | ||
7604 | 148218.57741960438, | ||
7605 | 148244.73960255808, | ||
7606 | 148270.90293983606, | ||
7607 | 148297.0674313365, | ||
7608 | 148323.23307695755, | ||
7609 | 148349.39987659742, | ||
7610 | 148375.56783015432, | ||
7611 | 148401.73693752653, | ||
7612 | 148427.90719861226, | ||
7613 | 148454.07861330983, | ||
7614 | 148480.25118151752, | ||
7615 | 148506.42490313368, | ||
7616 | 148532.59977805667, | ||
7617 | 148558.77580618486, | ||
7618 | 148584.95298741665, | ||
7619 | 148611.13132165043, | ||
7620 | 148637.31080878471, | ||
7621 | 148663.49144871789, | ||
7622 | 148689.6732413485, | ||
7623 | 148715.85618657502, | ||
7624 | 148742.040284296, | ||
7625 | 148768.22553440998, | ||
7626 | 148794.41193681557, | ||
7627 | 148820.59949141133, | ||
7628 | 148846.78819809589, | ||
7629 | 148872.97805676793, | ||
7630 | 148899.16906732606, | ||
7631 | 148925.36122966901, | ||
7632 | 148951.55454369547, | ||
7633 | 148977.74900930419, | ||
7634 | 149003.9446263939, | ||
7635 | 149030.1413948634, | ||
7636 | 149056.33931461151, | ||
7637 | 149082.53838553699, | ||
7638 | 149108.73860753875, | ||
7639 | 149134.9399805156, | ||
7640 | 149161.14250436646, | ||
7641 | 149187.34617899026, | ||
7642 | 149213.5510042859, | ||
7643 | 149239.75698015234, | ||
7644 | 149265.96410648854, | ||
7645 | 149292.17238319354, | ||
7646 | 149318.38181016635, | ||
7647 | 149344.59238730598, | ||
7648 | 149370.80411451156, | ||
7649 | 149397.01699168212, | ||
7650 | 149423.23101871679, | ||
7651 | 149449.44619551473, | ||
7652 | 149475.66252197503, | ||
7653 | 149501.87999799693, | ||
7654 | 149528.0986234796, | ||
7655 | 149554.31839832227, | ||
7656 | 149580.53932242419, | ||
7657 | 149606.76139568459, | ||
7658 | 149632.98461800278, | ||
7659 | 149659.20898927809, | ||
7660 | 149685.43450940982, | ||
7661 | 149711.66117829733, | ||
7662 | 149737.88899584001, | ||
7663 | 149764.11796193724, | ||
7664 | 149790.34807648844, | ||
7665 | 149816.57933939309, | ||
7666 | 149842.81175055061, | ||
7667 | 149869.04530986046, | ||
7668 | 149895.28001722222, | ||
7669 | 149921.51587253538, | ||
7670 | 149947.75287569952, | ||
7671 | 149973.99102661415, | ||
7672 | 150000.23032517891, | ||
7673 | 150026.47077129342, | ||
7674 | 150052.71236485732, | ||
7675 | 150078.95510577026, | ||
7676 | 150105.1989939319, | ||
7677 | 150131.444029242, | ||
7678 | 150157.69021160025, | ||
7679 | 150183.93754090639, | ||
7680 | 150210.18601706024, | ||
7681 | 150236.43563996154, | ||
7682 | 150262.68640951012, | ||
7683 | 150288.93832560582, | ||
7684 | 150315.19138814852, | ||
7685 | 150341.44559703805, | ||
7686 | 150367.70095217437, | ||
7687 | 150393.95745345735, | ||
7688 | 150420.21510078697, | ||
7689 | 150446.47389406321, | ||
7690 | 150472.73383318601, | ||
7691 | 150498.99491805542, | ||
7692 | 150525.25714857146, | ||
7693 | 150551.52052463419, | ||
7694 | 150577.78504614369, | ||
7695 | 150604.05071300003, | ||
7696 | 150630.31752510337, | ||
7697 | 150656.58548235384, | ||
7698 | 150682.85458465159, | ||
7699 | 150709.1248318968, | ||
7700 | 150735.39622398972, | ||
7701 | 150761.66876083051, | ||
7702 | 150787.9424423195, | ||
7703 | 150814.21726835691, | ||
7704 | 150840.49323884305, | ||
7705 | 150866.77035367821, | ||
7706 | 150893.04861276277, | ||
7707 | 150919.32801599705, | ||
7708 | 150945.60856328148, | ||
7709 | 150971.89025451642, | ||
7710 | 150998.17308960229, | ||
7711 | 151024.45706843957, | ||
7712 | 151050.74219092872, | ||
7713 | 151077.02845697021, | ||
7714 | 151103.31586646455, | ||
7715 | 151129.60441931229, | ||
7716 | 151155.894115414, | ||
7717 | 151182.1849546702, | ||
7718 | 151208.47693698155, | ||
7719 | 151234.77006224863, | ||
7720 | 151261.06433037209, | ||
7721 | 151287.35974125259, | ||
7722 | 151313.65629479082, | ||
7723 | 151339.95399088747, | ||
7724 | 151366.25282944329, | ||
7725 | 151392.55281035902, | ||
7726 | 151418.85393353543, | ||
7727 | 151445.1561988733, | ||
7728 | 151471.45960627345, | ||
7729 | 151497.76415563675, | ||
7730 | 151524.06984686397, | ||
7731 | 151550.37667985607, | ||
7732 | 151576.68465451393, | ||
7733 | 151602.99377073845, | ||
7734 | 151629.30402843058, | ||
7735 | 151655.61542749128, | ||
7736 | 151681.92796782157, | ||
7737 | 151708.24164932242, | ||
7738 | 151734.55647189484, | ||
7739 | 151760.87243543993, | ||
7740 | 151787.18953985872, | ||
7741 | 151813.50778505235, | ||
7742 | 151839.82717092187, | ||
7743 | 151866.14769736846, | ||
7744 | 151892.46936429327, | ||
7745 | 151918.79217159748, | ||
7746 | 151945.11611918229, | ||
7747 | 151971.44120694889, | ||
7748 | 151997.76743479856, | ||
7749 | 152024.09480263255, | ||
7750 | 152050.42331035214, | ||
7751 | 152076.75295785864, | ||
7752 | 152103.08374505339, | ||
7753 | 152129.41567183775, | ||
7754 | 152155.74873811303, | ||
7755 | 152182.08294378067, | ||
7756 | 152208.41828874208, | ||
7757 | 152234.75477289871, | ||
7758 | 152261.09239615197, | ||
7759 | 152287.43115840337, | ||
7760 | 152313.77105955439, | ||
7761 | 152340.11209950657, | ||
7762 | 152366.45427816146, | ||
7763 | 152392.79759542056, | ||
7764 | 152419.14205118554, | ||
7765 | 152445.48764535793, | ||
7766 | 152471.8343778394, | ||
7767 | 152498.18224853161, | ||
7768 | 152524.53125733617, | ||
7769 | 152550.88140415482, | ||
7770 | 152577.23268888926, | ||
7771 | 152603.58511144121, | ||
7772 | 152629.93867171241, | ||
7773 | 152656.29336960468, | ||
7774 | 152682.64920501978, | ||
7775 | 152709.00617785956, | ||
7776 | 152735.36428802583, | ||
7777 | 152761.72353542043, | ||
7778 | 152788.08391994529, | ||
7779 | 152814.44544150229, | ||
7780 | 152840.80809999333, | ||
7781 | 152867.17189532038, | ||
7782 | 152893.53682738543, | ||
7783 | 152919.90289609041, | ||
7784 | 152946.27010133737, | ||
7785 | 152972.63844302832, | ||
7786 | 152999.00792106529, | ||
7787 | 153025.37853535041, | ||
7788 | 153051.7502857857, | ||
7789 | 153078.12317227334, | ||
7790 | 153104.4971947154, | ||
7791 | 153130.8723530141, | ||
7792 | 153157.24864707157, | ||
7793 | 153183.62607679001, | ||
7794 | 153210.00464207167, | ||
7795 | 153236.38434281875, | ||
7796 | 153262.76517893354, | ||
7797 | 153289.14715031831, | ||
7798 | 153315.53025687535, | ||
7799 | 153341.91449850702, | ||
7800 | 153368.2998751156, | ||
7801 | 153394.68638660354, | ||
7802 | 153421.07403287315, | ||
7803 | 153447.46281382689, | ||
7804 | 153473.85272936718, | ||
7805 | 153500.24377939643, | ||
7806 | 153526.63596381716, | ||
7807 | 153553.02928253182, | ||
7808 | 153579.42373544298, | ||
7809 | 153605.81932245308, | ||
7810 | 153632.21604346478, | ||
7811 | 153658.61389838057, | ||
7812 | 153685.0128871031, | ||
7813 | 153711.41300953497, | ||
7814 | 153737.81426557881, | ||
7815 | 153764.21665513728, | ||
7816 | 153790.62017811305, | ||
7817 | 153817.02483440886, | ||
7818 | 153843.43062392739, | ||
7819 | 153869.83754657139, | ||
7820 | 153896.24560224367, | ||
7821 | 153922.65479084692, | ||
7822 | 153949.06511228404, | ||
7823 | 153975.4765664578, | ||
7824 | 154001.88915327107, | ||
7825 | 154028.30287262669, | ||
7826 | 154054.71772442761, | ||
7827 | 154081.13370857667, | ||
7828 | 154107.55082497682, | ||
7829 | 154133.96907353101, | ||
7830 | 154160.38845414223, | ||
7831 | 154186.80896671346, | ||
7832 | 154213.23061114774, | ||
7833 | 154239.65338734805, | ||
7834 | 154266.07729521746, | ||
7835 | 154292.50233465908, | ||
7836 | 154318.92850557598, | ||
7837 | 154345.35580787127, | ||
7838 | 154371.7842414481, | ||
7839 | 154398.21380620965, | ||
7840 | 154424.64450205903, | ||
7841 | 154451.07632889951, | ||
7842 | 154477.50928663427, | ||
7843 | 154503.94337516659, | ||
7844 | 154530.37859439969, | ||
7845 | 154556.81494423689, | ||
7846 | 154583.25242458144, | ||
7847 | 154609.69103533673, | ||
7848 | 154636.13077640603, | ||
7849 | 154662.57164769279, | ||
7850 | 154689.01364910032, | ||
7851 | 154715.45678053208, | ||
7852 | 154741.90104189145, | ||
7853 | 154768.34643308193, | ||
7854 | 154794.79295400696, | ||
7855 | 154821.24060457002, | ||
7856 | 154847.68938467462, | ||
7857 | 154874.13929422433, | ||
7858 | 154900.59033312264, | ||
7859 | 154927.04250127316, | ||
7860 | 154953.49579857948, | ||
7861 | 154979.95022494521, | ||
7862 | 155006.40578027396, | ||
7863 | 155032.86246446942, | ||
7864 | 155059.32027743524, | ||
7865 | 155085.77921907514, | ||
7866 | 155112.2392892928, | ||
7867 | 155138.70048799197, | ||
7868 | 155165.16281507642, | ||
7869 | 155191.62627044989, | ||
7870 | 155218.09085401625, | ||
7871 | 155244.55656567923, | ||
7872 | 155271.02340534274, | ||
7873 | 155297.49137291059, | ||
7874 | 155323.96046828668, | ||
7875 | 155350.4306913749, | ||
7876 | 155376.90204207919, | ||
7877 | 155403.37452030348, | ||
7878 | 155429.84812595171, | ||
7879 | 155456.32285892789, | ||
7880 | 155482.79871913602, | ||
7881 | 155509.27570648011, | ||
7882 | 155535.75382086422, | ||
7883 | 155562.23306219239, | ||
7884 | 155588.71343036872, | ||
7885 | 155615.19492529731, | ||
7886 | 155641.67754688227, | ||
7887 | 155668.16129502779, | ||
7888 | 155694.64616963797, | ||
7889 | 155721.13217061706, | ||
7890 | 155747.61929786921, | ||
7891 | 155774.10755129869, | ||
7892 | 155800.59693080973, | ||
7893 | 155827.08743630661, | ||
7894 | 155853.57906769359, | ||
7895 | 155880.07182487496, | ||
7896 | 155906.56570775513, | ||
7897 | 155933.06071623837, | ||
7898 | 155959.55685022907, | ||
7899 | 155986.05410963166, | ||
7900 | 156012.5524943505, | ||
7901 | 156039.05200429002, | ||
7902 | 156065.55263935472, | ||
7903 | 156092.054399449, | ||
7904 | 156118.5572844774, | ||
7905 | 156145.06129434443, | ||
7906 | 156171.5664289546, | ||
7907 | 156198.07268821247, | ||
7908 | 156224.5800720226, | ||
7909 | 156251.08858028959, | ||
7910 | 156277.59821291809, | ||
7911 | 156304.10896981266, | ||
7912 | 156330.62085087801, | ||
7913 | 156357.1338560188, | ||
7914 | 156383.64798513969, | ||
7915 | 156410.16323814544, | ||
7916 | 156436.67961494075, | ||
7917 | 156463.1971154304, | ||
7918 | 156489.71573951913, | ||
7919 | 156516.23548711176, | ||
7920 | 156542.75635811311, | ||
7921 | 156569.27835242799, | ||
7922 | 156595.80146996127, | ||
7923 | 156622.32571061782, | ||
7924 | 156648.85107430254, | ||
7925 | 156675.37756092031, | ||
7926 | 156701.90517037612, | ||
7927 | 156728.43390257491, | ||
7928 | 156754.96375742162, | ||
7929 | 156781.49473482129, | ||
7930 | 156808.02683467892, | ||
7931 | 156834.5600568995, | ||
7932 | 156861.09440138817, | ||
7933 | 156887.62986804993, | ||
7934 | 156914.16645678994, | ||
7935 | 156940.70416751326, | ||
7936 | 156967.24300012505, | ||
7937 | 156993.78295453047, | ||
7938 | 157020.32403063469, | ||
7939 | 157046.8662283429, | ||
7940 | 157073.40954756032, | ||
7941 | 157099.9539881922, | ||
7942 | 157126.49955014378, | ||
7943 | 157153.04623332032, | ||
7944 | 157179.59403762716, | ||
7945 | 157206.14296296958, | ||
7946 | 157232.69300925292, | ||
7947 | 157259.24417638258, | ||
7948 | 157285.79646426387, | ||
7949 | 157312.34987280221, | ||
7950 | 157338.90440190304, | ||
7951 | 157365.46005147175, | ||
7952 | 157392.01682141385, | ||
7953 | 157418.57471163478, | ||
7954 | 157445.13372204005, | ||
7955 | 157471.69385253513, | ||
7956 | 157498.25510302564, | ||
7957 | 157524.81747341706, | ||
7958 | 157551.38096361503, | ||
7959 | 157577.9455735251, | ||
7960 | 157604.51130305286, | ||
7961 | 157631.07815210402, | ||
7962 | 157657.64612058419, | ||
7963 | 157684.21520839902, | ||
7964 | 157710.78541545427, | ||
7965 | 157737.35674165559, | ||
7966 | 157763.92918690876, | ||
7967 | 157790.50275111952, | ||
7968 | 157817.07743419363, | ||
7969 | 157843.65323603692, | ||
7970 | 157870.23015655516, | ||
7971 | 157896.80819565422, | ||
7972 | 157923.3873532399, | ||
7973 | 157949.96762921812, | ||
7974 | 157976.54902349479, | ||
7975 | 158003.13153597576, | ||
7976 | 158029.71516656701, | ||
7977 | 158056.29991517449, | ||
7978 | 158082.88578170416, | ||
7979 | 158109.47276606198, | ||
7980 | 158136.06086815402, | ||
7981 | 158162.65008788629, | ||
7982 | 158189.24042516484, | ||
7983 | 158215.83187989573, | ||
7984 | 158242.42445198505, | ||
7985 | 158269.01814133892, | ||
7986 | 158295.61294786347, | ||
7987 | 158322.20887146486, | ||
7988 | 158348.80591204923, | ||
7989 | 158375.4040695228, | ||
7990 | 158402.00334379176, | ||
7991 | 158428.60373476235, | ||
7992 | 158455.2052423408, | ||
7993 | 158481.80786643337, | ||
7994 | 158508.41160694641, | ||
7995 | 158535.01646378616, | ||
7996 | 158561.62243685898, | ||
7997 | 158588.2295260712, | ||
7998 | 158614.8377313292, | ||
7999 | 158641.44705253936, | ||
8000 | 158668.05748960807, | ||
8001 | 158694.66904244179, | ||
8002 | 158721.28171094693, | ||
8003 | 158747.89549502998, | ||
8004 | 158774.5103945974, | ||
8005 | 158801.12640955573, | ||
8006 | 158827.74353981143, | ||
8007 | 158854.36178527112, | ||
8008 | 158880.9811458413, | ||
8009 | 158907.60162142856, | ||
8010 | 158934.22321193956, | ||
8011 | 158960.84591728085, | ||
8012 | 158987.46973735912, | ||
8013 | 159014.09467208097, | ||
8014 | 159040.72072135314, | ||
8015 | 159067.3478850823, | ||
8016 | 159093.97616317519, | ||
8017 | 159120.60555553852, | ||
8018 | 159147.23606207906, | ||
8019 | 159173.8676827036, | ||
8020 | 159200.50041731889, | ||
8021 | 159227.13426583182, | ||
8022 | 159253.76922814918, | ||
8023 | 159280.40530417781, | ||
8024 | 159307.04249382461, | ||
8025 | 159333.68079699649, | ||
8026 | 159360.32021360032, | ||
8027 | 159386.96074354305, | ||
8028 | 159413.60238673165, | ||
8029 | 159440.24514307309, | ||
8030 | 159466.88901247433, | ||
8031 | 159493.53399484244, | ||
8032 | 159520.18009008438, | ||
8033 | 159546.82729810724, | ||
8034 | 159573.47561881805, | ||
8035 | 159600.12505212394, | ||
8036 | 159626.77559793202, | ||
8037 | 159653.42725614941, | ||
8038 | 159680.08002668325, | ||
8039 | 159706.73390944069, | ||
8040 | 159733.38890432892, | ||
8041 | 159760.04501125516, | ||
8042 | 159786.70223012666, | ||
8043 | 159813.36056085059, | ||
8044 | 159840.02000333427, | ||
8045 | 159866.68055748497, | ||
8046 | 159893.34222320997, | ||
8047 | 159920.00500041663, | ||
8048 | 159946.66888901225, | ||
8049 | 159973.33388890422, | ||
8050 | 159999.99999999988, | ||
8051 | 160026.66722220668, | ||
8052 | 160053.33555543202, | ||
8053 | 160080.0049995833, | ||
8054 | 160106.67555456801, | ||
8055 | 160133.3472202936, | ||
8056 | 160160.0199966676, | ||
8057 | 160186.6938835975, | ||
8058 | 160213.36888099083, | ||
8059 | 160240.04498875517, | ||
8060 | 160266.72220679806, | ||
8061 | 160293.40053502709, | ||
8062 | 160320.07997334987, | ||
8063 | 160346.76052167406, | ||
8064 | 160373.44217990729, | ||
8065 | 160400.1249479572, | ||
8066 | 160426.80882573154, | ||
8067 | 160453.49381313793, | ||
8068 | 160480.17991008417, | ||
8069 | 160506.86711647795, | ||
8070 | 160533.55543222709, | ||
8071 | 160560.24485723933, | ||
8072 | 160586.93539142248, | ||
8073 | 160613.62703468435, | ||
8074 | 160640.31978693281, | ||
8075 | 160667.01364807569, | ||
8076 | 160693.70861802087, | ||
8077 | 160720.40469667627, | ||
8078 | 160747.1018839498, | ||
8079 | 160773.80017974938, | ||
8080 | 160800.49958398298, | ||
8081 | 160827.20009655855, | ||
8082 | 160853.90171738411, | ||
8083 | 160880.60444636765, | ||
8084 | 160907.30828341722, | ||
8085 | 160934.01322844089, | ||
8086 | 160960.71928134665, | ||
8087 | 160987.42644204266, | ||
8088 | 161014.13471043704, | ||
8089 | 161040.84408643784, | ||
8090 | 161067.55456995327, | ||
8091 | 161094.26616089148, | ||
8092 | 161120.97885916062, | ||
8093 | 161147.69266466892, | ||
8094 | 161174.40757732463, | ||
8095 | 161201.12359703594, | ||
8096 | 161227.84072371112, | ||
8097 | 161254.55895725847, | ||
8098 | 161281.27829758628, | ||
8099 | 161307.99874460287, | ||
8100 | 161334.72029821656, | ||
8101 | 161361.44295833571, | ||
8102 | 161388.1667248687, | ||
8103 | 161414.89159772391, | ||
8104 | 161441.61757680977, | ||
8105 | 161468.34466203468, | ||
8106 | 161495.07285330712, | ||
8107 | 161521.80215053557, | ||
8108 | 161548.53255362847, | ||
8109 | 161575.26406249436, | ||
8110 | 161601.99667704175, | ||
8111 | 161628.7303971792, | ||
8112 | 161655.46522281526, | ||
8113 | 161682.20115385848, | ||
8114 | 161708.93819021754, | ||
8115 | 161735.67633180099, | ||
8116 | 161762.41557851751, | ||
8117 | 161789.15593027571, | ||
8118 | 161815.89738698432, | ||
8119 | 161842.63994855201, | ||
8120 | 161869.38361488748, | ||
8121 | 161896.1283858995, | ||
8122 | 161922.87426149679, | ||
8123 | 161949.62124158812, | ||
8124 | 161976.36932608229, | ||
8125 | 162003.1185148881, | ||
8126 | 162029.8688079144, | ||
8127 | 162056.62020507001, | ||
8128 | 162083.37270626382, | ||
8129 | 162110.12631140469, | ||
8130 | 162136.88102040152, | ||
8131 | 162163.63683316324, | ||
8132 | 162190.39374959879, | ||
8133 | 162217.15176961714, | ||
8134 | 162243.91089312723, | ||
8135 | 162270.67112003808, | ||
8136 | 162297.43245025873, | ||
8137 | 162324.19488369819, | ||
8138 | 162350.9584202655, | ||
8139 | 162377.72305986975, | ||
8140 | 162404.48880242003, | ||
8141 | 162431.25564782543, | ||
8142 | 162458.02359599507, | ||
8143 | 162484.79264683815, | ||
8144 | 162511.56280026378, | ||
8145 | 162538.33405618116, | ||
8146 | 162565.10641449949, | ||
8147 | 162591.87987512801, | ||
8148 | 162618.65443797593, | ||
8149 | 162645.43010295252, | ||
8150 | 162672.20686996708, | ||
8151 | 162698.98473892888, | ||
8152 | 162725.76370974723, | ||
8153 | 162752.54378233149, | ||
8154 | 162779.32495659095, | ||
8155 | 162806.10723243505, | ||
8156 | 162832.89060977317, | ||
8157 | 162859.67508851466, | ||
8158 | 162886.46066856899, | ||
8159 | 162913.24734984562, | ||
8160 | 162940.03513225398, | ||
8161 | 162966.82401570358, | ||
8162 | 162993.6140001039, | ||
8163 | 163020.40508536444, | ||
8164 | 163047.19727139481, | ||
8165 | 163073.99055810447, | ||
8166 | 163100.78494540305, | ||
8167 | 163127.58043320014, | ||
8168 | 163154.37702140535, | ||
8169 | 163181.17470992831, | ||
8170 | 163207.97349867865, | ||
8171 | 163234.77338756606, | ||
8172 | 163261.57437650024, | ||
8173 | 163288.37646539087, | ||
8174 | 163315.17965414765, | ||
8175 | 163341.98394268038, | ||
8176 | 163368.78933089875, | ||
8177 | 163395.59581871261, | ||
8178 | 163422.40340603172, | ||
8179 | 163449.2120927659, | ||
8180 | 163476.02187882498, | ||
8181 | 163502.83276411882, | ||
8182 | 163529.6447485573, | ||
8183 | 163556.45783205028, | ||
8184 | 163583.2720145077, | ||
8185 | 163610.08729583945, | ||
8186 | 163636.90367595552, | ||
8187 | 163663.72115476584, | ||
8188 | 163690.53973218042, | ||
8189 | 163717.35940810922, | ||
8190 | 163744.18018246227, | ||
8191 | 163771.00205514964, | ||
8192 | 163797.82502608138, | ||
8193 | 163824.64909516752, | ||
8194 | 163851.4742623182, | ||
8195 | 163878.3005274435, | ||
8196 | 163905.12789045356, | ||
8197 | 163931.95635125853, | ||
8198 | 163958.78590976857, | ||
8199 | 163985.61656589387, | ||
8200 | 164012.44831954464, | ||
8201 | 164039.28117063109, | ||
8202 | 164066.11511906344, | ||
8203 | 164092.95016475199, | ||
8204 | 164119.78630760699, | ||
8205 | 164146.62354753874, | ||
8206 | 164173.46188445756, | ||
8207 | 164200.30131827376, | ||
8208 | 164227.14184889771, | ||
8209 | 164253.98347623978, | ||
8210 | 164280.82620021031, | ||
8211 | 164307.67002071979, | ||
8212 | 164334.51493767856, | ||
8213 | 164361.3609509971, | ||
8214 | 164388.20806058586, | ||
8215 | 164415.05626635533, | ||
8216 | 164441.905568216, | ||
8217 | 164468.75596607837, | ||
8218 | 164495.607459853, | ||
8219 | 164522.4600494504, | ||
8220 | 164549.31373478117, | ||
8221 | 164576.16851575591, | ||
8222 | 164603.02439228518, | ||
8223 | 164629.88136427966, | ||
8224 | 164656.73943164994, | ||
8225 | 164683.59859430668, | ||
8226 | 164710.45885216061, | ||
8227 | 164737.32020512238, | ||
8228 | 164764.1826531027, | ||
8229 | 164791.04619601235, | ||
8230 | 164817.91083376206, | ||
8231 | 164844.77656626256, | ||
8232 | 164871.64339342469, | ||
8233 | 164898.51131515924, | ||
8234 | 164925.38033137703, | ||
8235 | 164952.25044198887, | ||
8236 | 164979.1216469057, | ||
8237 | 165005.9939460383, | ||
8238 | 165032.86733929763, | ||
8239 | 165059.7418265946, | ||
8240 | 165086.61740784015, | ||
8241 | 165113.4940829452 | ||
8242 | }; | ||
8243 | |||
8244 | #else | ||
8245 | |||
8246 | #ifdef BIG_IQ_TABLE | ||
8247 | #define IQ_TABLE_SIZE 8192 | ||
8248 | #else | ||
8249 | #define IQ_TABLE_SIZE 1026 | ||
8250 | #endif | ||
8251 | |||
8252 | static const real_t iq_table[IQ_TABLE_SIZE] MEM_ALIGN_ATTR = | ||
8253 | { | ||
8254 | REAL_CONST(0.0), | ||
8255 | REAL_CONST(1.0/8.0), | ||
8256 | REAL_CONST(2.5198420997897464/8.0), | ||
8257 | REAL_CONST(4.3267487109222245/8.0), | ||
8258 | REAL_CONST(6.3496042078727974/8.0), | ||
8259 | REAL_CONST(8.5498797333834844/8.0), | ||
8260 | REAL_CONST(10.902723556992836/8.0), | ||
8261 | REAL_CONST(13.390518279406722/8.0), | ||
8262 | REAL_CONST(15.999999999999998/8.0), | ||
8263 | REAL_CONST(18.720754407467133/8.0), | ||
8264 | REAL_CONST(21.544346900318832/8.0), | ||
8265 | REAL_CONST(24.463780996262464/8.0), | ||
8266 | REAL_CONST(27.47314182127996/8.0), | ||
8267 | REAL_CONST(30.567350940369842/8.0), | ||
8268 | REAL_CONST(33.741991698453212/8.0), | ||
8269 | REAL_CONST(36.993181114957046/8.0), | ||
8270 | REAL_CONST(40.317473596635935/8.0), | ||
8271 | REAL_CONST(43.711787041189993/8.0), | ||
8272 | REAL_CONST(47.173345095760126/8.0), | ||
8273 | REAL_CONST(50.699631325716943/8.0), | ||
8274 | REAL_CONST(54.288352331898118/8.0), | ||
8275 | REAL_CONST(57.937407704003519/8.0), | ||
8276 | REAL_CONST(61.6448652744185/8.0), | ||
8277 | REAL_CONST(65.408940536585988/8.0), | ||
8278 | REAL_CONST(69.227979374755591/8.0), | ||
8279 | REAL_CONST(73.100443455321638/8.0), | ||
8280 | REAL_CONST(77.024897778591622/8.0), | ||
8281 | REAL_CONST(80.999999999999986/8.0), | ||
8282 | REAL_CONST(85.024491212518527/8.0), | ||
8283 | REAL_CONST(89.097187944889555/8.0), | ||
8284 | REAL_CONST(93.216975178615741/8.0), | ||
8285 | REAL_CONST(97.382800224133163/8.0), | ||
8286 | REAL_CONST(101.59366732596474/8.0), | ||
8287 | REAL_CONST(105.84863288986224/8.0), | ||
8288 | REAL_CONST(110.14680124343441/8.0), | ||
8289 | REAL_CONST(114.4873208566006/8.0), | ||
8290 | REAL_CONST(118.86938096020653/8.0), | ||
8291 | REAL_CONST(123.29220851090024/8.0), | ||
8292 | REAL_CONST(127.75506545836058/8.0), | ||
8293 | REAL_CONST(132.25724627755247/8.0), | ||
8294 | REAL_CONST(136.79807573413572/8.0), | ||
8295 | REAL_CONST(141.37690685569191/8.0), | ||
8296 | REAL_CONST(145.99311908523086/8.0), | ||
8297 | REAL_CONST(150.6461165966291/8.0), | ||
8298 | REAL_CONST(155.33532675434674/8.0), | ||
8299 | REAL_CONST(160.06019870205279/8.0), | ||
8300 | REAL_CONST(164.82020206673349/8.0), | ||
8301 | REAL_CONST(169.61482576651861/8.0), | ||
8302 | REAL_CONST(174.44357691188537/8.0), | ||
8303 | REAL_CONST(179.30597979112557/8.0), | ||
8304 | REAL_CONST(184.20157493201927/8.0), | ||
8305 | REAL_CONST(189.12991823257562/8.0), | ||
8306 | REAL_CONST(194.09058015449685/8.0), | ||
8307 | REAL_CONST(199.08314497371677/8.0), | ||
8308 | REAL_CONST(204.1072100829694/8.0), | ||
8309 | REAL_CONST(209.16238534187647/8.0), | ||
8310 | REAL_CONST(214.24829247050752/8.0), | ||
8311 | REAL_CONST(219.36456448277784/8.0), | ||
8312 | REAL_CONST(224.51084515641216/8.0), | ||
8313 | REAL_CONST(229.6867885365223/8.0), | ||
8314 | REAL_CONST(234.89205847013176/8.0), | ||
8315 | REAL_CONST(240.12632816923249/8.0), | ||
8316 | REAL_CONST(245.38927980018505/8.0), | ||
8317 | REAL_CONST(250.68060409747261/8.0), | ||
8318 | REAL_CONST(255.99999999999991/8.0), | ||
8319 | REAL_CONST(261.34717430828869/8.0), | ||
8320 | REAL_CONST(266.72184136106449/8.0), | ||
8321 | REAL_CONST(272.12372272986045/8.0), | ||
8322 | REAL_CONST(277.55254693037961/8.0), | ||
8323 | REAL_CONST(283.0080491494619/8.0), | ||
8324 | REAL_CONST(288.48997098659891/8.0), | ||
8325 | REAL_CONST(293.99806020902247/8.0), | ||
8326 | REAL_CONST(299.53207051947408/8.0), | ||
8327 | REAL_CONST(305.0917613358298/8.0), | ||
8328 | REAL_CONST(310.67689758182206/8.0), | ||
8329 | REAL_CONST(316.28724948815585/8.0), | ||
8330 | REAL_CONST(321.92259240337177/8.0), | ||
8331 | REAL_CONST(327.58270661385535/8.0), | ||
8332 | REAL_CONST(333.26737717243742/8.0), | ||
8333 | REAL_CONST(338.97639373507025/8.0), | ||
8334 | REAL_CONST(344.70955040510125/8.0), | ||
8335 | REAL_CONST(350.46664558470013/8.0), | ||
8336 | REAL_CONST(356.24748183302603/8.0), | ||
8337 | REAL_CONST(362.05186573075139/8.0), | ||
8338 | REAL_CONST(367.87960775058258/8.0), | ||
8339 | REAL_CONST(373.73052213344511/8.0), | ||
8340 | REAL_CONST(379.60442677002078/8.0), | ||
8341 | REAL_CONST(385.50114308734607/8.0), | ||
8342 | REAL_CONST(391.42049594019937/8.0), | ||
8343 | REAL_CONST(397.36231350702371/8.0), | ||
8344 | REAL_CONST(403.32642719014467/8.0), | ||
8345 | REAL_CONST(409.31267152006262/8.0), | ||
8346 | REAL_CONST(415.32088406360799/8.0), | ||
8347 | REAL_CONST(421.35090533576471/8.0), | ||
8348 | REAL_CONST(427.40257871497619/8.0), | ||
8349 | REAL_CONST(433.4757503617617/8.0), | ||
8350 | REAL_CONST(439.5702691404793/8.0), | ||
8351 | REAL_CONST(445.68598654408271/8.0), | ||
8352 | REAL_CONST(451.82275662172759/8.0), | ||
8353 | REAL_CONST(457.98043590909128/8.0), | ||
8354 | REAL_CONST(464.15888336127773/8.0), | ||
8355 | REAL_CONST(470.35796028818726/8.0), | ||
8356 | REAL_CONST(476.5775302922363/8.0), | ||
8357 | REAL_CONST(482.81745920832043/8.0), | ||
8358 | REAL_CONST(489.07761504591741/8.0), | ||
8359 | REAL_CONST(495.35786793323581/8.0), | ||
8360 | REAL_CONST(501.65809006331688/8.0), | ||
8361 | REAL_CONST(507.97815564200368/8.0), | ||
8362 | REAL_CONST(514.31794083769648/8.0), | ||
8363 | REAL_CONST(520.67732373281672/8.0), | ||
8364 | REAL_CONST(527.05618427690604/8.0), | ||
8365 | REAL_CONST(533.45440424129174/8.0), | ||
8366 | REAL_CONST(539.87186717525128/8.0), | ||
8367 | REAL_CONST(546.30845836361505/8.0), | ||
8368 | REAL_CONST(552.76406478574609/8.0), | ||
8369 | REAL_CONST(559.23857507584194/8.0), | ||
8370 | REAL_CONST(565.73187948450413/8.0), | ||
8371 | REAL_CONST(572.24386984152341/8.0), | ||
8372 | REAL_CONST(578.77443951983378/8.0), | ||
8373 | REAL_CONST(585.32348340058843/8.0), | ||
8374 | REAL_CONST(591.89089783931263/8.0), | ||
8375 | REAL_CONST(598.47658063309257/8.0), | ||
8376 | REAL_CONST(605.08043098876044/8.0), | ||
8377 | REAL_CONST(611.70234949203643/8.0), | ||
8378 | REAL_CONST(618.3422380775919/8.0), | ||
8379 | REAL_CONST(624.99999999999977/8.0), | ||
8380 | REAL_CONST(631.67553980553748/8.0), | ||
8381 | REAL_CONST(638.36876330481164/8.0), | ||
8382 | REAL_CONST(645.07957754617485/8.0), | ||
8383 | REAL_CONST(651.80789078990415/8.0), | ||
8384 | REAL_CONST(658.55361248311499/8.0), | ||
8385 | REAL_CONST(665.31665323538357/8.0), | ||
8386 | REAL_CONST(672.09692479505225/8.0), | ||
8387 | REAL_CONST(678.8943400261943/8.0), | ||
8388 | REAL_CONST(685.70881288621433/8.0), | ||
8389 | REAL_CONST(692.540258404062/8.0), | ||
8390 | REAL_CONST(699.38859265903977/8.0), | ||
8391 | REAL_CONST(706.25373276018058/8.0), | ||
8392 | REAL_CONST(713.13559682617972/8.0), | ||
8393 | REAL_CONST(720.03410396586037/8.0), | ||
8394 | REAL_CONST(726.94917425915435/8.0), | ||
8395 | REAL_CONST(733.88072873858209/8.0), | ||
8396 | REAL_CONST(740.82868937121543/8.0), | ||
8397 | REAL_CONST(747.79297904110535/8.0), | ||
8398 | REAL_CONST(754.77352153216191/8.0), | ||
8399 | REAL_CONST(761.77024151147043/8.0), | ||
8400 | REAL_CONST(768.78306451302956/8.0), | ||
8401 | REAL_CONST(775.81191692189896/8.0), | ||
8402 | REAL_CONST(782.85672595874246/8.0), | ||
8403 | REAL_CONST(789.91741966475445/8.0), | ||
8404 | REAL_CONST(796.99392688695798/8.0), | ||
8405 | REAL_CONST(804.08617726386274/8.0), | ||
8406 | REAL_CONST(811.19410121147098/8.0), | ||
8407 | REAL_CONST(818.31762990962227/8.0), | ||
8408 | REAL_CONST(825.45669528866563/8.0), | ||
8409 | REAL_CONST(832.61123001644864/8.0), | ||
8410 | REAL_CONST(839.78116748561604/8.0), | ||
8411 | REAL_CONST(846.96644180120552/8.0), | ||
8412 | REAL_CONST(854.16698776853514/8.0), | ||
8413 | REAL_CONST(861.38274088137143/8.0), | ||
8414 | REAL_CONST(868.61363731036977/8.0), | ||
8415 | REAL_CONST(875.85961389178203/8.0), | ||
8416 | REAL_CONST(883.12060811641959/8.0), | ||
8417 | REAL_CONST(890.39655811886757/8.0), | ||
8418 | REAL_CONST(897.68740266694181/8.0), | ||
8419 | REAL_CONST(904.99308115138172/8.0), | ||
8420 | REAL_CONST(912.31353357577188/8.0), | ||
8421 | REAL_CONST(919.64870054668756/8.0), | ||
8422 | REAL_CONST(926.99852326405619/8.0), | ||
8423 | REAL_CONST(934.36294351172899/8.0), | ||
8424 | REAL_CONST(941.74190364825859/8.0), | ||
8425 | REAL_CONST(949.13534659787422/8.0), | ||
8426 | REAL_CONST(956.54321584165211/8.0), | ||
8427 | REAL_CONST(963.96545540887348/8.0), | ||
8428 | REAL_CONST(971.40200986856541/8.0), | ||
8429 | REAL_CONST(978.85282432122176/8.0), | ||
8430 | REAL_CONST(986.31784439069588/8.0), | ||
8431 | REAL_CONST(993.7970162162635/8.0), | ||
8432 | REAL_CONST(1001.29028644485/8.0), | ||
8433 | REAL_CONST(1008.797602223418/8.0), | ||
8434 | REAL_CONST(1016.3189111915103/8.0), | ||
8435 | REAL_CONST(1023.8541614739464/8.0), | ||
8436 | REAL_CONST(1031.4033016736653/8.0), | ||
8437 | REAL_CONST(1038.9662808647138/8.0), | ||
8438 | REAL_CONST(1046.5430485853758/8.0), | ||
8439 | REAL_CONST(1054.1335548314366/8.0), | ||
8440 | REAL_CONST(1061.7377500495838/8.0), | ||
8441 | REAL_CONST(1069.3555851309357/8.0), | ||
8442 | REAL_CONST(1076.9870114046978/8.0), | ||
8443 | REAL_CONST(1084.6319806319441/8.0), | ||
8444 | REAL_CONST(1092.2904449995174/8.0), | ||
8445 | REAL_CONST(1099.9623571140482/8.0), | ||
8446 | REAL_CONST(1107.6476699960892/8.0), | ||
8447 | REAL_CONST(1115.3463370743607/8.0), | ||
8448 | REAL_CONST(1123.058312180106/8.0), | ||
8449 | REAL_CONST(1130.7835495415541/8.0), | ||
8450 | REAL_CONST(1138.5220037784854/8.0), | ||
8451 | REAL_CONST(1146.273629896901/8.0), | ||
8452 | REAL_CONST(1154.0383832837879/8.0), | ||
8453 | REAL_CONST(1161.816219701986/8.0), | ||
8454 | REAL_CONST(1169.607095285146/8.0), | ||
8455 | REAL_CONST(1177.4109665327808/8.0), | ||
8456 | REAL_CONST(1185.2277903054078/8.0), | ||
8457 | REAL_CONST(1193.0575238197798/8.0), | ||
8458 | REAL_CONST(1200.9001246442001/8.0), | ||
8459 | REAL_CONST(1208.7555506939248/8.0), | ||
8460 | REAL_CONST(1216.6237602266442/8.0), | ||
8461 | REAL_CONST(1224.5047118380478/8.0), | ||
8462 | REAL_CONST(1232.3983644574657/8.0), | ||
8463 | REAL_CONST(1240.3046773435874/8.0), | ||
8464 | REAL_CONST(1248.2236100802568/8.0), | ||
8465 | REAL_CONST(1256.1551225723395/8.0), | ||
8466 | REAL_CONST(1264.099175041662/8.0), | ||
8467 | REAL_CONST(1272.0557280230228/8.0), | ||
8468 | REAL_CONST(1280.0247423602691/8.0), | ||
8469 | REAL_CONST(1288.0061792024444/8.0), | ||
8470 | REAL_CONST(1295.9999999999995/8.0), | ||
8471 | REAL_CONST(1304.006166501068/8.0), | ||
8472 | REAL_CONST(1312.0246407478062/8.0), | ||
8473 | REAL_CONST(1320.0553850727929/8.0), | ||
8474 | REAL_CONST(1328.0983620954903/8.0), | ||
8475 | REAL_CONST(1336.1535347187651/8.0), | ||
8476 | REAL_CONST(1344.2208661254647/8.0), | ||
8477 | REAL_CONST(1352.3003197750522/8.0), | ||
8478 | REAL_CONST(1360.3918594002962/8.0), | ||
8479 | REAL_CONST(1368.4954490040145/8.0), | ||
8480 | REAL_CONST(1376.6110528558709/8.0), | ||
8481 | REAL_CONST(1384.7386354892244/8.0), | ||
8482 | REAL_CONST(1392.8781616980295/8.0), | ||
8483 | REAL_CONST(1401.0295965337855/8.0), | ||
8484 | REAL_CONST(1409.1929053025353/8.0), | ||
8485 | REAL_CONST(1417.3680535619119/8.0), | ||
8486 | REAL_CONST(1425.5550071182327/8.0), | ||
8487 | REAL_CONST(1433.7537320236374/8.0), | ||
8488 | REAL_CONST(1441.9641945732744/8.0), | ||
8489 | REAL_CONST(1450.1863613025282/8.0), | ||
8490 | REAL_CONST(1458.4201989842913/8.0), | ||
8491 | REAL_CONST(1466.6656746262797/8.0), | ||
8492 | REAL_CONST(1474.9227554683875/8.0), | ||
8493 | REAL_CONST(1483.1914089800841/8.0), | ||
8494 | REAL_CONST(1491.4716028578516/8.0), | ||
8495 | REAL_CONST(1499.7633050226596/8.0), | ||
8496 | REAL_CONST(1508.0664836174794/8.0), | ||
8497 | REAL_CONST(1516.3811070048375/8.0), | ||
8498 | REAL_CONST(1524.7071437644029/8.0), | ||
8499 | REAL_CONST(1533.0445626906128/8.0), | ||
8500 | REAL_CONST(1541.3933327903342/8.0), | ||
8501 | REAL_CONST(1549.7534232805581/8.0), | ||
8502 | REAL_CONST(1558.1248035861302/8.0), | ||
8503 | REAL_CONST(1566.507443337515/8.0), | ||
8504 | REAL_CONST(1574.9013123685909/8.0), | ||
8505 | REAL_CONST(1583.3063807144795/8.0), | ||
8506 | REAL_CONST(1591.7226186094069/8.0), | ||
8507 | REAL_CONST(1600.1499964845941/8.0), | ||
8508 | REAL_CONST(1608.58848496618/8.0), | ||
8509 | REAL_CONST(1617.0380548731737/8.0), | ||
8510 | REAL_CONST(1625.4986772154357/8.0), | ||
8511 | REAL_CONST(1633.9703231916887/8.0), | ||
8512 | REAL_CONST(1642.4529641875577/8.0), | ||
8513 | REAL_CONST(1650.9465717736346/8.0), | ||
8514 | REAL_CONST(1659.4511177035752/8.0), | ||
8515 | REAL_CONST(1667.9665739122186/8.0), | ||
8516 | REAL_CONST(1676.4929125137353/8.0), | ||
8517 | REAL_CONST(1685.030105799801/8.0), | ||
8518 | REAL_CONST(1693.5781262377957/8.0), | ||
8519 | REAL_CONST(1702.136946469027/8.0), | ||
8520 | REAL_CONST(1710.7065393069795/8.0), | ||
8521 | REAL_CONST(1719.2868777355877/8.0), | ||
8522 | REAL_CONST(1727.8779349075323/8.0), | ||
8523 | REAL_CONST(1736.4796841425596/8.0), | ||
8524 | REAL_CONST(1745.092098925825/8.0), | ||
8525 | REAL_CONST(1753.7151529062583/8.0), | ||
8526 | REAL_CONST(1762.3488198949503/8.0), | ||
8527 | REAL_CONST(1770.9930738635628/8.0), | ||
8528 | REAL_CONST(1779.6478889427597/8.0), | ||
8529 | REAL_CONST(1788.3132394206564/8.0), | ||
8530 | REAL_CONST(1796.9890997412947/8.0), | ||
8531 | REAL_CONST(1805.6754445031333/8.0), | ||
8532 | REAL_CONST(1814.3722484575621/8.0), | ||
8533 | REAL_CONST(1823.0794865074322/8.0), | ||
8534 | REAL_CONST(1831.7971337056094/8.0), | ||
8535 | REAL_CONST(1840.5251652535437/8.0), | ||
8536 | REAL_CONST(1849.2635564998579/8.0), | ||
8537 | REAL_CONST(1858.0122829389563/8.0), | ||
8538 | REAL_CONST(1866.7713202096493/8.0), | ||
8539 | REAL_CONST(1875.5406440937966/8.0), | ||
8540 | REAL_CONST(1884.3202305149687/8.0), | ||
8541 | REAL_CONST(1893.110055537124/8.0), | ||
8542 | REAL_CONST(1901.9100953633042/8.0), | ||
8543 | REAL_CONST(1910.7203263343454/8.0), | ||
8544 | REAL_CONST(1919.5407249276057/8.0), | ||
8545 | REAL_CONST(1928.3712677557098/8.0), | ||
8546 | REAL_CONST(1937.2119315653083/8.0), | ||
8547 | REAL_CONST(1946.0626932358525/8.0), | ||
8548 | REAL_CONST(1954.923529778386/8.0), | ||
8549 | REAL_CONST(1963.79441833435/8.0), | ||
8550 | REAL_CONST(1972.6753361744036/8.0), | ||
8551 | REAL_CONST(1981.5662606972594/8.0), | ||
8552 | REAL_CONST(1990.467169428533/8.0), | ||
8553 | REAL_CONST(1999.3780400196069/8.0), | ||
8554 | REAL_CONST(2008.2988502465078/8.0), | ||
8555 | REAL_CONST(2017.2295780087982/8.0), | ||
8556 | REAL_CONST(2026.1702013284819/8.0), | ||
8557 | REAL_CONST(2035.1206983489212/8.0), | ||
8558 | REAL_CONST(2044.0810473337688/8.0), | ||
8559 | REAL_CONST(2053.0512266659125/8.0), | ||
8560 | REAL_CONST(2062.0312148464309/8.0), | ||
8561 | REAL_CONST(2071.0209904935646/8.0), | ||
8562 | REAL_CONST(2080.0205323416958/8.0), | ||
8563 | REAL_CONST(2089.0298192403443/8.0), | ||
8564 | REAL_CONST(2098.0488301531714/8.0), | ||
8565 | REAL_CONST(2107.0775441569995/8.0), | ||
8566 | REAL_CONST(2116.115940440839/8.0), | ||
8567 | REAL_CONST(2125.1639983049317/8.0), | ||
8568 | REAL_CONST(2134.2216971597995/8.0), | ||
8569 | REAL_CONST(2143.2890165253098/8.0), | ||
8570 | REAL_CONST(2152.3659360297484/8.0), | ||
8571 | REAL_CONST(2161.4524354089031/8.0), | ||
8572 | REAL_CONST(2170.5484945051617/8.0), | ||
8573 | REAL_CONST(2179.6540932666144/8.0), | ||
8574 | REAL_CONST(2188.7692117461711/8.0), | ||
8575 | REAL_CONST(2197.8938301006888/8.0), | ||
8576 | REAL_CONST(2207.0279285901042/8.0), | ||
8577 | REAL_CONST(2216.1714875765838/8.0), | ||
8578 | REAL_CONST(2225.324487523676/8.0), | ||
8579 | REAL_CONST(2234.4869089954782/8.0), | ||
8580 | REAL_CONST(2243.6587326558101/8.0), | ||
8581 | REAL_CONST(2252.8399392673982/8.0), | ||
8582 | REAL_CONST(2262.0305096910702/8.0), | ||
8583 | REAL_CONST(2271.2304248849537/8.0), | ||
8584 | REAL_CONST(2280.4396659036897/8.0), | ||
8585 | REAL_CONST(2289.6582138976523/8.0), | ||
8586 | REAL_CONST(2298.8860501121762/8.0), | ||
8587 | REAL_CONST(2308.1231558867926/8.0), | ||
8588 | REAL_CONST(2317.3695126544767/8.0), | ||
8589 | REAL_CONST(2326.6251019409005/8.0), | ||
8590 | REAL_CONST(2335.8899053636933/8.0), | ||
8591 | REAL_CONST(2345.1639046317132/8.0), | ||
8592 | REAL_CONST(2354.4470815443233/8.0), | ||
8593 | REAL_CONST(2363.7394179906792/8.0), | ||
8594 | REAL_CONST(2373.0408959490205/8.0), | ||
8595 | REAL_CONST(2382.3514974859731/8.0), | ||
8596 | REAL_CONST(2391.6712047558558/8.0), | ||
8597 | REAL_CONST(2400.9999999999991/8.0), | ||
8598 | REAL_CONST(2410.3378655460651/8.0), | ||
8599 | REAL_CONST(2419.6847838073813/8.0), | ||
8600 | REAL_CONST(2429.0407372822747/8.0), | ||
8601 | REAL_CONST(2438.4057085534191/8.0), | ||
8602 | REAL_CONST(2447.7796802871858/8.0), | ||
8603 | REAL_CONST(2457.1626352330004/8.0), | ||
8604 | REAL_CONST(2466.5545562227112/8.0), | ||
8605 | REAL_CONST(2475.9554261699564/8.0), | ||
8606 | REAL_CONST(2485.3652280695474/8.0), | ||
8607 | REAL_CONST(2494.7839449968492/8.0), | ||
8608 | REAL_CONST(2504.2115601071737/8.0), | ||
8609 | REAL_CONST(2513.6480566351788/8.0), | ||
8610 | REAL_CONST(2523.0934178942675/8.0), | ||
8611 | REAL_CONST(2532.5476272760025/8.0), | ||
8612 | REAL_CONST(2542.0106682495189/8.0), | ||
8613 | REAL_CONST(2551.482524360948/8.0), | ||
8614 | REAL_CONST(2560.9631792328441/8.0), | ||
8615 | REAL_CONST(2570.4526165636184/8.0), | ||
8616 | REAL_CONST(2579.9508201269791/8.0), | ||
8617 | REAL_CONST(2589.4577737713744/8.0), | ||
8618 | REAL_CONST(2598.9734614194458/8.0), | ||
8619 | REAL_CONST(2608.4978670674823/8.0), | ||
8620 | REAL_CONST(2618.0309747848837/8.0), | ||
8621 | REAL_CONST(2627.5727687136259/8.0), | ||
8622 | REAL_CONST(2637.1232330677353/8.0), | ||
8623 | REAL_CONST(2646.6823521327647/8.0), | ||
8624 | REAL_CONST(2656.2501102652768/8.0), | ||
8625 | REAL_CONST(2665.8264918923328/8.0), | ||
8626 | REAL_CONST(2675.4114815109842/8.0), | ||
8627 | REAL_CONST(2685.0050636877722/8.0), | ||
8628 | REAL_CONST(2694.6072230582295/8.0), | ||
8629 | REAL_CONST(2704.2179443263894/8.0), | ||
8630 | REAL_CONST(2713.8372122642972/8.0), | ||
8631 | REAL_CONST(2723.4650117115279/8.0), | ||
8632 | REAL_CONST(2733.1013275747096/8.0), | ||
8633 | REAL_CONST(2742.7461448270483/8.0), | ||
8634 | REAL_CONST(2752.3994485078601/8.0), | ||
8635 | REAL_CONST(2762.0612237221085/8.0), | ||
8636 | REAL_CONST(2771.7314556399419/8.0), | ||
8637 | REAL_CONST(2781.4101294962406/8.0), | ||
8638 | REAL_CONST(2791.0972305901655/8.0), | ||
8639 | REAL_CONST(2800.7927442847094/8.0), | ||
8640 | REAL_CONST(2810.4966560062589/8.0), | ||
8641 | REAL_CONST(2820.2089512441521/8.0), | ||
8642 | REAL_CONST(2829.9296155502466/8.0), | ||
8643 | REAL_CONST(2839.6586345384894/8.0), | ||
8644 | REAL_CONST(2849.3959938844923/8.0), | ||
8645 | REAL_CONST(2859.1416793251065/8.0), | ||
8646 | REAL_CONST(2868.8956766580086/8.0), | ||
8647 | REAL_CONST(2878.6579717412847/8.0), | ||
8648 | REAL_CONST(2888.4285504930212/8.0), | ||
8649 | REAL_CONST(2898.2073988908974/8.0), | ||
8650 | REAL_CONST(2907.9945029717837/8.0), | ||
8651 | REAL_CONST(2917.789848831344/8.0), | ||
8652 | REAL_CONST(2927.5934226236377/8.0), | ||
8653 | REAL_CONST(2937.4052105607311/8.0), | ||
8654 | REAL_CONST(2947.2251989123079/8.0), | ||
8655 | REAL_CONST(2957.0533740052865/8.0), | ||
8656 | REAL_CONST(2966.8897222234368/8.0), | ||
8657 | REAL_CONST(2976.734230007005/8.0), | ||
8658 | REAL_CONST(2986.5868838523397/8.0), | ||
8659 | REAL_CONST(2996.4476703115197/8.0), | ||
8660 | REAL_CONST(3006.3165759919889/8.0), | ||
8661 | REAL_CONST(3016.1935875561908/8.0), | ||
8662 | REAL_CONST(3026.0786917212095/8.0), | ||
8663 | REAL_CONST(3035.9718752584108/8.0), | ||
8664 | REAL_CONST(3045.8731249930906/8.0), | ||
8665 | REAL_CONST(3055.7824278041207/8.0), | ||
8666 | REAL_CONST(3065.6997706236039/8.0), | ||
8667 | REAL_CONST(3075.625140436528/8.0), | ||
8668 | REAL_CONST(3085.5585242804245/8.0), | ||
8669 | REAL_CONST(3095.4999092450298/8.0), | ||
8670 | REAL_CONST(3105.4492824719491/8.0), | ||
8671 | REAL_CONST(3115.4066311543256/8.0), | ||
8672 | REAL_CONST(3125.3719425365089/8.0), | ||
8673 | REAL_CONST(3135.3452039137287/8.0), | ||
8674 | REAL_CONST(3145.3264026317715/8.0), | ||
8675 | REAL_CONST(3155.3155260866592/8.0), | ||
8676 | REAL_CONST(3165.3125617243295/8.0), | ||
8677 | REAL_CONST(3175.3174970403229/8.0), | ||
8678 | REAL_CONST(3185.3303195794679/8.0), | ||
8679 | REAL_CONST(3195.35101693557/8.0), | ||
8680 | REAL_CONST(3205.3795767511078/8.0), | ||
8681 | REAL_CONST(3215.4159867169251/8.0), | ||
8682 | REAL_CONST(3225.460234571929/8.0), | ||
8683 | REAL_CONST(3235.5123081027928/8.0), | ||
8684 | REAL_CONST(3245.5721951436558/8.0), | ||
8685 | REAL_CONST(3255.63988357583/8.0), | ||
8686 | REAL_CONST(3265.7153613275095/8.0), | ||
8687 | REAL_CONST(3275.7986163734795/8.0), | ||
8688 | REAL_CONST(3285.8896367348289/8.0), | ||
8689 | REAL_CONST(3295.9884104786665/8.0), | ||
8690 | REAL_CONST(3306.0949257178395/8.0), | ||
8691 | REAL_CONST(3316.2091706106517/8.0), | ||
8692 | REAL_CONST(3326.331133360588/8.0), | ||
8693 | REAL_CONST(3336.4608022160378/8.0), | ||
8694 | REAL_CONST(3346.5981654700231/8.0), | ||
8695 | REAL_CONST(3356.7432114599264/8.0), | ||
8696 | REAL_CONST(3366.8959285672249/8.0), | ||
8697 | REAL_CONST(3377.0563052172211/8.0), | ||
8698 | REAL_CONST(3387.2243298787821/8.0), | ||
8699 | REAL_CONST(3397.3999910640764/8.0), | ||
8700 | REAL_CONST(3407.5832773283128/8.0), | ||
8701 | REAL_CONST(3417.7741772694862/8.0), | ||
8702 | REAL_CONST(3427.9726795281199/8.0), | ||
8703 | REAL_CONST(3438.1787727870123/8.0), | ||
8704 | REAL_CONST(3448.3924457709873/8.0), | ||
8705 | REAL_CONST(3458.6136872466445/8.0), | ||
8706 | REAL_CONST(3468.8424860221107/8.0), | ||
8707 | REAL_CONST(3479.0788309467976/8.0), | ||
8708 | REAL_CONST(3489.3227109111554/8.0), | ||
8709 | REAL_CONST(3499.5741148464344/8.0), | ||
8710 | REAL_CONST(3509.8330317244445/8.0), | ||
8711 | REAL_CONST(3520.0994505573185/8.0), | ||
8712 | REAL_CONST(3530.3733603972751/8.0), | ||
8713 | REAL_CONST(3540.6547503363886/8.0), | ||
8714 | REAL_CONST(3550.9436095063534/8.0), | ||
8715 | REAL_CONST(3561.239927078258/8.0), | ||
8716 | REAL_CONST(3571.5436922623535/8.0), | ||
8717 | REAL_CONST(3581.8548943078308/8.0), | ||
8718 | REAL_CONST(3592.1735225025936/8.0), | ||
8719 | REAL_CONST(3602.4995661730372/8.0), | ||
8720 | REAL_CONST(3612.8330146838275/8.0), | ||
8721 | REAL_CONST(3623.1738574376814/8.0), | ||
8722 | REAL_CONST(3633.5220838751502/8.0), | ||
8723 | REAL_CONST(3643.8776834744031/8.0), | ||
8724 | REAL_CONST(3654.2406457510142/8.0), | ||
8725 | REAL_CONST(3664.6109602577494/8.0), | ||
8726 | REAL_CONST(3674.9886165843564/8.0), | ||
8727 | REAL_CONST(3685.3736043573545/8.0), | ||
8728 | REAL_CONST(3695.7659132398294/8.0), | ||
8729 | REAL_CONST(3706.1655329312248/8.0), | ||
8730 | REAL_CONST(3716.5724531671399/8.0), | ||
8731 | REAL_CONST(3726.9866637191262/8.0), | ||
8732 | REAL_CONST(3737.4081543944876/8.0), | ||
8733 | REAL_CONST(3747.8369150360782/8.0), | ||
8734 | REAL_CONST(3758.2729355221072/8.0), | ||
8735 | REAL_CONST(3768.7162057659411/8.0), | ||
8736 | REAL_CONST(3779.1667157159077/8.0), | ||
8737 | REAL_CONST(3789.6244553551055/8.0), | ||
8738 | REAL_CONST(3800.0894147012082/8.0), | ||
8739 | REAL_CONST(3810.5615838062768/8.0), | ||
8740 | REAL_CONST(3821.0409527565694/8.0), | ||
8741 | REAL_CONST(3831.5275116723533/8.0), | ||
8742 | REAL_CONST(3842.0212507077194/8.0), | ||
8743 | REAL_CONST(3852.522160050396/8.0), | ||
8744 | REAL_CONST(3863.0302299215673/8.0), | ||
8745 | REAL_CONST(3873.5454505756893/8.0), | ||
8746 | REAL_CONST(3884.0678123003108/8.0), | ||
8747 | REAL_CONST(3894.5973054158922/8.0), | ||
8748 | REAL_CONST(3905.1339202756285/8.0), | ||
8749 | REAL_CONST(3915.6776472652732/8.0), | ||
8750 | REAL_CONST(3926.2284768029604/8.0), | ||
8751 | REAL_CONST(3936.7863993390338/8.0), | ||
8752 | REAL_CONST(3947.3514053558706/8.0), | ||
8753 | REAL_CONST(3957.9234853677135/8.0), | ||
8754 | REAL_CONST(3968.5026299204969/8.0), | ||
8755 | REAL_CONST(3979.0888295916798/8.0), | ||
8756 | REAL_CONST(3989.6820749900776/8.0), | ||
8757 | REAL_CONST(4000.2823567556948/8.0), | ||
8758 | REAL_CONST(4010.8896655595613/8.0), | ||
8759 | REAL_CONST(4021.5039921035655/8.0), | ||
8760 | REAL_CONST(4032.1253271202945/8.0), | ||
8761 | REAL_CONST(4042.7536613728694/8.0), | ||
8762 | REAL_CONST(4053.3889856547858/8.0), | ||
8763 | REAL_CONST(4064.0312907897551/8.0), | ||
8764 | REAL_CONST(4074.6805676315448/8.0), | ||
8765 | REAL_CONST(4085.3368070638221/8.0), | ||
8766 | REAL_CONST(4095.9999999999982/8.0), | ||
8767 | REAL_CONST(4106.6701373830711/8.0), | ||
8768 | REAL_CONST(4117.347210185475/8.0), | ||
8769 | REAL_CONST(4128.0312094089259/8.0), | ||
8770 | REAL_CONST(4138.722126084268/8.0), | ||
8771 | REAL_CONST(4149.4199512713267/8.0), | ||
8772 | REAL_CONST(4160.1246760587583/8.0), | ||
8773 | REAL_CONST(4170.8362915638982/8.0), | ||
8774 | REAL_CONST(4181.5547889326181/8.0), | ||
8775 | REAL_CONST(4192.2801593391769/8.0), | ||
8776 | REAL_CONST(4203.0123939860741/8.0), | ||
8777 | REAL_CONST(4213.7514841039101/8.0), | ||
8778 | REAL_CONST(4224.4974209512384/8.0), | ||
8779 | REAL_CONST(4235.2501958144258/8.0), | ||
8780 | REAL_CONST(4246.0098000075095/8.0), | ||
8781 | REAL_CONST(4256.7762248720574/8.0), | ||
8782 | REAL_CONST(4267.549461777031/8.0), | ||
8783 | REAL_CONST(4278.3295021186423/8.0), | ||
8784 | REAL_CONST(4289.1163373202198/8.0), | ||
8785 | REAL_CONST(4299.9099588320714/8.0), | ||
8786 | REAL_CONST(4310.7103581313495/8.0), | ||
8787 | REAL_CONST(4321.5175267219138/8.0), | ||
8788 | REAL_CONST(4332.3314561342004/8.0), | ||
8789 | REAL_CONST(4343.152137925088/8.0), | ||
8790 | REAL_CONST(4353.9795636777671/8.0), | ||
8791 | REAL_CONST(4364.8137250016052/8.0), | ||
8792 | REAL_CONST(4375.6546135320223/8.0), | ||
8793 | REAL_CONST(4386.5022209303588/8.0), | ||
8794 | REAL_CONST(4397.3565388837469/8.0), | ||
8795 | REAL_CONST(4408.2175591049827/8.0), | ||
8796 | REAL_CONST(4419.0852733324018/8.0), | ||
8797 | REAL_CONST(4429.9596733297531/8.0), | ||
8798 | REAL_CONST(4440.8407508860728/8.0), | ||
8799 | REAL_CONST(4451.7284978155603/8.0), | ||
8800 | REAL_CONST(4462.6229059574571/8.0), | ||
8801 | REAL_CONST(4473.5239671759227/8.0), | ||
8802 | REAL_CONST(4484.4316733599126/8.0), | ||
8803 | REAL_CONST(4495.3460164230582/8.0), | ||
8804 | REAL_CONST(4506.2669883035496/8.0), | ||
8805 | REAL_CONST(4517.1945809640119/8.0), | ||
8806 | REAL_CONST(4528.1287863913894/8.0), | ||
8807 | REAL_CONST(4539.069596596828/8.0), | ||
8808 | REAL_CONST(4550.0170036155587/8.0), | ||
8809 | REAL_CONST(4560.9709995067806/8.0), | ||
8810 | REAL_CONST(4571.931576353546/8.0), | ||
8811 | REAL_CONST(4582.898726262647/8.0), | ||
8812 | REAL_CONST(4593.8724413645004/8.0), | ||
8813 | REAL_CONST(4604.8527138130348/8.0), | ||
8814 | REAL_CONST(4615.8395357855816/8.0), | ||
8815 | REAL_CONST(4626.8328994827571/8.0), | ||
8816 | REAL_CONST(4637.8327971283588/8.0), | ||
8817 | REAL_CONST(4648.8392209692511/8.0), | ||
8818 | REAL_CONST(4659.8521632752563/8.0), | ||
8819 | REAL_CONST(4670.8716163390473/8.0), | ||
8820 | REAL_CONST(4681.8975724760394/8.0), | ||
8821 | REAL_CONST(4692.9300240242837/8.0), | ||
8822 | REAL_CONST(4703.9689633443595/8.0), | ||
8823 | REAL_CONST(4715.0143828192668/8.0), | ||
8824 | REAL_CONST(4726.0662748543255/8.0), | ||
8825 | REAL_CONST(4737.1246318770682/8.0), | ||
8826 | REAL_CONST(4748.1894463371373/8.0), | ||
8827 | REAL_CONST(4759.2607107061804/8.0), | ||
8828 | REAL_CONST(4770.3384174777493/8.0), | ||
8829 | REAL_CONST(4781.4225591671993/8.0), | ||
8830 | REAL_CONST(4792.5131283115852/8.0), | ||
8831 | REAL_CONST(4803.6101174695614/8.0), | ||
8832 | REAL_CONST(4814.7135192212854/8.0), | ||
8833 | REAL_CONST(4825.8233261683154/8.0), | ||
8834 | REAL_CONST(4836.9395309335096/8.0), | ||
8835 | REAL_CONST(4848.0621261609349/8.0), | ||
8836 | REAL_CONST(4859.1911045157631/8.0), | ||
8837 | REAL_CONST(4870.3264586841779/8.0), | ||
8838 | REAL_CONST(4881.4681813732768/8.0), | ||
8839 | REAL_CONST(4892.6162653109768/8.0), | ||
8840 | REAL_CONST(4903.7707032459193/8.0), | ||
8841 | REAL_CONST(4914.931487947375/8.0), | ||
8842 | REAL_CONST(4926.0986122051509/8.0), | ||
8843 | REAL_CONST(4937.2720688294967/8.0), | ||
8844 | REAL_CONST(4948.4518506510112/8.0), | ||
8845 | REAL_CONST(4959.637950520555/8.0), | ||
8846 | REAL_CONST(4970.8303613091521/8.0), | ||
8847 | REAL_CONST(4982.0290759079044/8.0), | ||
8848 | REAL_CONST(4993.2340872278974/8.0), | ||
8849 | REAL_CONST(5004.4453882001153/8.0), | ||
8850 | REAL_CONST(5015.6629717753467/8.0), | ||
8851 | REAL_CONST(5026.8868309241007/8.0), | ||
8852 | REAL_CONST(5038.1169586365131/8.0), | ||
8853 | REAL_CONST(5049.353347922266/8.0), | ||
8854 | REAL_CONST(5060.5959918104927/8.0), | ||
8855 | REAL_CONST(5071.8448833496996/8.0), | ||
8856 | REAL_CONST(5083.1000156076734/8.0), | ||
8857 | REAL_CONST(5094.3613816713996/8.0), | ||
8858 | REAL_CONST(5105.6289746469747/8.0), | ||
8859 | REAL_CONST(5116.9027876595246/8.0), | ||
8860 | REAL_CONST(5128.18281385312/8.0), | ||
8861 | REAL_CONST(5139.4690463906918/8.0), | ||
8862 | REAL_CONST(5150.7614784539473/8.0), | ||
8863 | REAL_CONST(5162.0601032432933/8.0), | ||
8864 | REAL_CONST(5173.3649139777472/8.0), | ||
8865 | REAL_CONST(5184.6759038948594/8.0), | ||
8866 | REAL_CONST(5195.9930662506322/8.0), | ||
8867 | REAL_CONST(5207.3163943194386/8.0), | ||
8868 | REAL_CONST(5218.6458813939435/8.0), | ||
8869 | REAL_CONST(5229.9815207850224/8.0), | ||
8870 | REAL_CONST(5241.3233058216847/8.0), | ||
8871 | REAL_CONST(5252.6712298509919/8.0), | ||
8872 | REAL_CONST(5264.025286237983/8.0), | ||
8873 | REAL_CONST(5275.3854683655954/8.0), | ||
8874 | REAL_CONST(5286.7517696345885/8.0), | ||
8875 | REAL_CONST(5298.1241834634639/8.0), | ||
8876 | REAL_CONST(5309.5027032883945/8.0), | ||
8877 | REAL_CONST(5320.887322563146/8.0), | ||
8878 | REAL_CONST(5332.2780347589978/8.0), | ||
8879 | REAL_CONST(5343.6748333646756/8.0), | ||
8880 | REAL_CONST(5355.0777118862716/8.0), | ||
8881 | REAL_CONST(5366.4866638471722/8.0), | ||
8882 | REAL_CONST(5377.901682787985/8.0), | ||
8883 | REAL_CONST(5389.3227622664635/8.0), | ||
8884 | REAL_CONST(5400.749895857437/8.0), | ||
8885 | REAL_CONST(5412.1830771527357/8.0), | ||
8886 | REAL_CONST(5423.622299761123/8.0), | ||
8887 | REAL_CONST(5435.067557308219/8.0), | ||
8888 | REAL_CONST(5446.5188434364318/8.0), | ||
8889 | REAL_CONST(5457.9761518048872/8.0), | ||
8890 | REAL_CONST(5469.4394760893592/8.0), | ||
8891 | REAL_CONST(5480.9088099821975/8.0), | ||
8892 | REAL_CONST(5492.3841471922606/8.0), | ||
8893 | REAL_CONST(5503.8654814448455/8.0), | ||
8894 | REAL_CONST(5515.3528064816201/8.0), | ||
8895 | REAL_CONST(5526.846116060552/8.0), | ||
8896 | REAL_CONST(5538.3454039558474/8.0), | ||
8897 | REAL_CONST(5549.8506639578736/8.0), | ||
8898 | REAL_CONST(5561.3618898731029/8.0), | ||
8899 | REAL_CONST(5572.8790755240361/8.0), | ||
8900 | REAL_CONST(5584.4022147491451/8.0), | ||
8901 | REAL_CONST(5595.9313014027975/8.0), | ||
8902 | REAL_CONST(5607.4663293552012/8.0), | ||
8903 | REAL_CONST(5619.0072924923297/8.0), | ||
8904 | REAL_CONST(5630.5541847158656/8.0), | ||
8905 | REAL_CONST(5642.1069999431284/8.0), | ||
8906 | REAL_CONST(5653.665732107017/8.0), | ||
8907 | REAL_CONST(5665.230375155943/8.0), | ||
8908 | REAL_CONST(5676.8009230537655/8.0), | ||
8909 | REAL_CONST(5688.3773697797333/8.0), | ||
8910 | REAL_CONST(5699.9597093284156/8.0), | ||
8911 | REAL_CONST(5711.5479357096474/8.0), | ||
8912 | REAL_CONST(5723.1420429484588/8.0), | ||
8913 | REAL_CONST(5734.7420250850209/8.0), | ||
8914 | REAL_CONST(5746.347876174581/8.0), | ||
8915 | REAL_CONST(5757.9595902874016/8.0), | ||
8916 | REAL_CONST(5769.5771615087006/8.0), | ||
8917 | REAL_CONST(5781.2005839385911/8.0), | ||
8918 | REAL_CONST(5792.8298516920213/8.0), | ||
8919 | REAL_CONST(5804.4649588987149/8.0), | ||
8920 | REAL_CONST(5816.1058997031105/8.0), | ||
8921 | REAL_CONST(5827.7526682643065/8.0), | ||
8922 | REAL_CONST(5839.4052587559972/8.0), | ||
8923 | REAL_CONST(5851.0636653664196/8.0), | ||
8924 | REAL_CONST(5862.7278822982908/8.0), | ||
8925 | REAL_CONST(5874.3979037687541/8.0), | ||
8926 | REAL_CONST(5886.0737240093204/8.0), | ||
8927 | REAL_CONST(5897.7553372658094/8.0), | ||
8928 | REAL_CONST(5909.4427377982956/8.0), | ||
8929 | REAL_CONST(5921.1359198810505/8.0), | ||
8930 | REAL_CONST(5932.8348778024874/8.0), | ||
8931 | REAL_CONST(5944.5396058651031/8.0), | ||
8932 | REAL_CONST(5956.2500983854261/8.0), | ||
8933 | REAL_CONST(5967.9663496939575/8.0), | ||
8934 | REAL_CONST(5979.6883541351208/8.0), | ||
8935 | REAL_CONST(5991.4161060672022/8.0), | ||
8936 | REAL_CONST(6003.1495998623004/8.0), | ||
8937 | REAL_CONST(6014.8888299062692/8.0), | ||
8938 | REAL_CONST(6026.6337905986684/8.0), | ||
8939 | REAL_CONST(6038.3844763527022/8.0), | ||
8940 | REAL_CONST(6050.1408815951781/8.0), | ||
8941 | REAL_CONST(6061.9030007664414/8.0), | ||
8942 | REAL_CONST(6073.6708283203316/8.0), | ||
8943 | REAL_CONST(6085.4443587241267/8.0), | ||
8944 | REAL_CONST(6097.2235864584891/8.0), | ||
8945 | REAL_CONST(6109.0085060174197/8.0), | ||
8946 | REAL_CONST(6120.7991119081998/8.0), | ||
8947 | REAL_CONST(6132.595398651345/8.0), | ||
8948 | REAL_CONST(6144.3973607805519/8.0), | ||
8949 | REAL_CONST(6156.2049928426459/8.0), | ||
8950 | REAL_CONST(6168.0182893975361/8.0), | ||
8951 | REAL_CONST(6179.8372450181578/8.0), | ||
8952 | REAL_CONST(6191.6618542904307/8.0), | ||
8953 | REAL_CONST(6203.4921118132024/8.0), | ||
8954 | REAL_CONST(6215.3280121982016/8.0), | ||
8955 | REAL_CONST(6227.1695500699925/8.0), | ||
8956 | REAL_CONST(6239.0167200659189/8.0), | ||
8957 | REAL_CONST(6250.8695168360628/8.0), | ||
8958 | REAL_CONST(6262.7279350431891/8.0), | ||
8959 | REAL_CONST(6274.5919693627056/8.0), | ||
8960 | REAL_CONST(6286.4616144826068/8.0), | ||
8961 | REAL_CONST(6298.3368651034316/8.0), | ||
8962 | REAL_CONST(6310.2177159382172/8.0), | ||
8963 | REAL_CONST(6322.1041617124456/8.0), | ||
8964 | REAL_CONST(6333.9961971640032/8.0), | ||
8965 | REAL_CONST(6345.8938170431311/8.0), | ||
8966 | REAL_CONST(6357.7970161123785/8.0), | ||
8967 | REAL_CONST(6369.7057891465583/8.0), | ||
8968 | REAL_CONST(6381.6201309327007/8.0), | ||
8969 | REAL_CONST(6393.5400362700075/8.0), | ||
8970 | REAL_CONST(6405.4654999698032/8.0), | ||
8971 | REAL_CONST(6417.3965168554978/8.0), | ||
8972 | REAL_CONST(6429.3330817625329/8.0), | ||
8973 | REAL_CONST(6441.2751895383453/8.0), | ||
8974 | REAL_CONST(6453.2228350423138/8.0), | ||
8975 | REAL_CONST(6465.176013145724/8.0), | ||
8976 | REAL_CONST(6477.134718731716/8.0), | ||
8977 | REAL_CONST(6489.0989466952469/8.0), | ||
8978 | REAL_CONST(6501.0686919430445/8.0), | ||
8979 | REAL_CONST(6513.0439493935628/8.0), | ||
8980 | REAL_CONST(6525.0247139769417/8.0), | ||
8981 | REAL_CONST(6537.010980634961/8.0), | ||
8982 | REAL_CONST(6549.002744321001/8.0), | ||
8983 | REAL_CONST(6560.9999999999973/8.0), | ||
8984 | REAL_CONST(6573.0027426483985/8.0), | ||
8985 | REAL_CONST(6585.0109672541284/8.0), | ||
8986 | REAL_CONST(6597.0246688165371/8.0), | ||
8987 | REAL_CONST(6609.0438423463656/8.0), | ||
8988 | REAL_CONST(6621.0684828657004/8.0), | ||
8989 | REAL_CONST(6633.0985854079354/8.0), | ||
8990 | REAL_CONST(6645.134145017727/8.0), | ||
8991 | REAL_CONST(6657.1751567509573/8.0), | ||
8992 | REAL_CONST(6669.2216156746908/8.0), | ||
8993 | REAL_CONST(6681.2735168671343/8.0), | ||
8994 | REAL_CONST(6693.3308554176001/8.0), | ||
8995 | REAL_CONST(6705.3936264264594/8.0), | ||
8996 | REAL_CONST(6717.461825005108/8.0), | ||
8997 | REAL_CONST(6729.535446275926/8.0), | ||
8998 | REAL_CONST(6741.6144853722335/8.0), | ||
8999 | REAL_CONST(6753.6989374382601/8.0), | ||
9000 | REAL_CONST(6765.7887976290967/8.0), | ||
9001 | REAL_CONST(6777.8840611106634/8.0), | ||
9002 | REAL_CONST(6789.9847230596661/8.0), | ||
9003 | REAL_CONST(6802.0907786635626/8.0), | ||
9004 | REAL_CONST(6814.2022231205201/8.0), | ||
9005 | REAL_CONST(6826.3190516393797/8.0), | ||
9006 | REAL_CONST(6838.4412594396181/8.0), | ||
9007 | REAL_CONST(6850.5688417513074/8.0), | ||
9008 | REAL_CONST(6862.701793815083/8.0), | ||
9009 | REAL_CONST(6874.840110882099/8.0), | ||
9010 | REAL_CONST(6886.9837882139991/8.0), | ||
9011 | REAL_CONST(6899.1328210828724/8.0), | ||
9012 | REAL_CONST(6911.2872047712199/8.0), | ||
9013 | REAL_CONST(6923.4469345719199/8.0), | ||
9014 | REAL_CONST(6935.6120057881863/8.0), | ||
9015 | REAL_CONST(6947.7824137335365/8.0), | ||
9016 | REAL_CONST(6959.9581537317536/8.0), | ||
9017 | REAL_CONST(6972.1392211168532/8.0), | ||
9018 | REAL_CONST(6984.3256112330409/8.0), | ||
9019 | REAL_CONST(6996.5173194346862/8.0), | ||
9020 | REAL_CONST(7008.7143410862773/8.0), | ||
9021 | REAL_CONST(7020.9166715623942/8.0), | ||
9022 | REAL_CONST(7033.1243062476678/8.0), | ||
9023 | REAL_CONST(7045.3372405367481/8.0), | ||
9024 | REAL_CONST(7057.5554698342685/8.0), | ||
9025 | REAL_CONST(7069.7789895548103/8.0), | ||
9026 | REAL_CONST(7082.0077951228714/8.0), | ||
9027 | REAL_CONST(7094.2418819728273/8.0), | ||
9028 | REAL_CONST(7106.4812455489018/8.0), | ||
9029 | REAL_CONST(7118.7258813051285/8.0), | ||
9030 | REAL_CONST(7130.9757847053224/8.0), | ||
9031 | REAL_CONST(7143.2309512230404/8.0), | ||
9032 | REAL_CONST(7155.4913763415516/8.0), | ||
9033 | REAL_CONST(7167.7570555538041/8.0), | ||
9034 | REAL_CONST(7180.0279843623894/8.0), | ||
9035 | REAL_CONST(7192.3041582795131/8.0), | ||
9036 | REAL_CONST(7204.5855728269571/8.0), | ||
9037 | REAL_CONST(7216.8722235360519/8.0), | ||
9038 | REAL_CONST(7229.1641059476406/8.0), | ||
9039 | REAL_CONST(7241.4612156120484/8.0), | ||
9040 | REAL_CONST(7253.7635480890503/8.0), | ||
9041 | REAL_CONST(7266.0710989478375/8.0), | ||
9042 | REAL_CONST(7278.3838637669869/8.0), | ||
9043 | REAL_CONST(7290.7018381344296/8.0), | ||
9044 | REAL_CONST(7303.0250176474174/8.0), | ||
9045 | REAL_CONST(7315.3533979124932/8.0), | ||
9046 | REAL_CONST(7327.6869745454596/8.0), | ||
9047 | REAL_CONST(7340.0257431713462/8.0), | ||
9048 | REAL_CONST(7352.3696994243801/8.0), | ||
9049 | REAL_CONST(7364.7188389479543/8.0), | ||
9050 | REAL_CONST(7377.0731573945968/8.0), | ||
9051 | REAL_CONST(7389.4326504259407/8.0), | ||
9052 | REAL_CONST(7401.7973137126937/8.0), | ||
9053 | REAL_CONST(7414.1671429346061/8.0), | ||
9054 | REAL_CONST(7426.5421337804428/8.0), | ||
9055 | REAL_CONST(7438.922281947951/8.0), | ||
9056 | REAL_CONST(7451.3075831438346/8.0), | ||
9057 | REAL_CONST(7463.6980330837177/8.0), | ||
9058 | REAL_CONST(7476.0936274921214/8.0), | ||
9059 | REAL_CONST(7488.4943621024304/8.0), | ||
9060 | REAL_CONST(7500.9002326568652/8.0), | ||
9061 | REAL_CONST(7513.3112349064522/8.0), | ||
9062 | REAL_CONST(7525.7273646109943/8.0), | ||
9063 | REAL_CONST(7538.1486175390446/8.0), | ||
9064 | REAL_CONST(7550.5749894678729/8.0), | ||
9065 | REAL_CONST(7563.0064761834419/8.0), | ||
9066 | REAL_CONST(7575.4430734803736/8.0), | ||
9067 | REAL_CONST(7587.8847771619248/8.0), | ||
9068 | REAL_CONST(7600.3315830399597/8.0), | ||
9069 | REAL_CONST(7612.7834869349153/8.0), | ||
9070 | REAL_CONST(7625.24048467578/8.0), | ||
9071 | REAL_CONST(7637.7025721000637/8.0), | ||
9072 | REAL_CONST(7650.1697450537677/8.0), | ||
9073 | REAL_CONST(7662.6419993913596/8.0), | ||
9074 | REAL_CONST(7675.1193309757446/8.0), | ||
9075 | REAL_CONST(7687.6017356782404/8.0), | ||
9076 | REAL_CONST(7700.0892093785433/8.0), | ||
9077 | REAL_CONST(7712.5817479647112/8.0), | ||
9078 | REAL_CONST(7725.079347333125/8.0), | ||
9079 | REAL_CONST(7737.5820033884729/8.0), | ||
9080 | REAL_CONST(7750.0897120437139/8.0), | ||
9081 | REAL_CONST(7762.6024692200581/8.0), | ||
9082 | REAL_CONST(7775.1202708469355/8.0), | ||
9083 | REAL_CONST(7787.6431128619733/8.0), | ||
9084 | REAL_CONST(7800.1709912109645/8.0), | ||
9085 | REAL_CONST(7812.7039018478481/8.0), | ||
9086 | REAL_CONST(7825.2418407346768/8.0), | ||
9087 | REAL_CONST(7837.7848038415968/8.0), | ||
9088 | REAL_CONST(7850.3327871468155/8.0), | ||
9089 | REAL_CONST(7862.8857866365806/8.0), | ||
9090 | REAL_CONST(7875.4437983051539/8.0), | ||
9091 | REAL_CONST(7888.006818154784/8.0), | ||
9092 | REAL_CONST(7900.5748421956796/8.0), | ||
9093 | REAL_CONST(7913.1478664459901/8.0), | ||
9094 | REAL_CONST(7925.725886931772/8.0), | ||
9095 | REAL_CONST(7938.3088996869719/8.0), | ||
9096 | REAL_CONST(7950.8969007533951/8.0), | ||
9097 | REAL_CONST(7963.4898861806851/8.0), | ||
9098 | REAL_CONST(7976.0878520262959/8.0), | ||
9099 | REAL_CONST(7988.6907943554688/8.0), | ||
9100 | REAL_CONST(8001.2987092412086/8.0), | ||
9101 | REAL_CONST(8013.911592764257/8.0), | ||
9102 | REAL_CONST(8026.5294410130691/8.0), | ||
9103 | REAL_CONST(8039.1522500837891/8.0), | ||
9104 | REAL_CONST(8051.7800160802271/8.0), | ||
9105 | REAL_CONST(8064.412735113835/8.0), | ||
9106 | REAL_CONST(8077.0504033036796/8.0), | ||
9107 | REAL_CONST(8089.6930167764222/8.0), | ||
9108 | REAL_CONST(8102.3405716662946/8.0), | ||
9109 | REAL_CONST(8114.9930641150731/8.0), | ||
9110 | REAL_CONST(8127.6504902720571/8.0), | ||
9111 | REAL_CONST(8140.3128462940449/8.0), | ||
9112 | REAL_CONST(8152.9801283453098/8.0), | ||
9113 | REAL_CONST(8165.6523325975786/8.0), | ||
9114 | REAL_CONST(8178.3294552300049/8.0), | ||
9115 | REAL_CONST(8191.0114924291529/8.0), | ||
9116 | REAL_CONST(8203.6984403889655/8.0), | ||
9117 | REAL_CONST(8216.3902953107463/8.0), | ||
9118 | REAL_CONST(8229.0870534031419/8.0), | ||
9119 | REAL_CONST(8241.7887108821069/8.0), | ||
9120 | REAL_CONST(8254.4952639708936/8.0), | ||
9121 | REAL_CONST(8267.2067089000211/8.0), | ||
9122 | REAL_CONST(8279.9230419072574/8.0), | ||
9123 | REAL_CONST(8292.6442592375952/8.0), | ||
9124 | REAL_CONST(8305.3703571432306/8.0), | ||
9125 | REAL_CONST(8318.101331883543/8.0), | ||
9126 | REAL_CONST(8330.8371797250657/8.0), | ||
9127 | REAL_CONST(8343.577896941475/8.0), | ||
9128 | REAL_CONST(8356.3234798135582/8.0), | ||
9129 | REAL_CONST(8369.0739246291978/8.0), | ||
9130 | REAL_CONST(8381.8292276833508/8.0), | ||
9131 | REAL_CONST(8394.5893852780209/8.0), | ||
9132 | REAL_CONST(8407.3543937222421/8.0), | ||
9133 | REAL_CONST(8420.1242493320569/8.0), | ||
9134 | REAL_CONST(8432.8989484304948/8.0), | ||
9135 | REAL_CONST(8445.6784873475499/8.0), | ||
9136 | REAL_CONST(8458.4628624201578/8.0), | ||
9137 | REAL_CONST(8471.2520699921806/8.0), | ||
9138 | REAL_CONST(8484.0461064143838/8.0), | ||
9139 | REAL_CONST(8496.8449680444082/8.0), | ||
9140 | REAL_CONST(8509.6486512467636/8.0), | ||
9141 | REAL_CONST(8522.4571523927953/8.0), | ||
9142 | REAL_CONST(8535.270467860666/8.0), | ||
9143 | REAL_CONST(8548.0885940353437/8.0), | ||
9144 | REAL_CONST(8560.9115273085663/8.0), | ||
9145 | REAL_CONST(8573.7392640788403/8.0), | ||
9146 | REAL_CONST(8586.5718007514006/8.0), | ||
9147 | REAL_CONST(8599.4091337382069/8.0), | ||
9148 | REAL_CONST(8612.2512594579148/8.0), | ||
9149 | REAL_CONST(8625.0981743358552/8.0), | ||
9150 | REAL_CONST(8637.9498748040205/8.0), | ||
9151 | REAL_CONST(8650.8063573010386/8.0), | ||
9152 | REAL_CONST(8663.6676182721567/8.0), | ||
9153 | REAL_CONST(8676.533654169225/8.0), | ||
9154 | REAL_CONST(8689.4044614506638/8.0), | ||
9155 | REAL_CONST(8702.2800365814601/8.0), | ||
9156 | REAL_CONST(8715.1603760331418/8.0), | ||
9157 | REAL_CONST(8728.0454762837508/8.0), | ||
9158 | REAL_CONST(8740.9353338178389/8.0), | ||
9159 | REAL_CONST(8753.8299451264356/8.0), | ||
9160 | REAL_CONST(8766.7293067070332/8.0), | ||
9161 | REAL_CONST(8779.6334150635721/8.0), | ||
9162 | REAL_CONST(8792.5422667064158/8.0), | ||
9163 | REAL_CONST(8805.4558581523324/8.0), | ||
9164 | REAL_CONST(8818.3741859244819/8.0), | ||
9165 | REAL_CONST(8831.2972465523908/8.0), | ||
9166 | REAL_CONST(8844.2250365719356/8.0), | ||
9167 | REAL_CONST(8857.1575525253265/8.0), | ||
9168 | REAL_CONST(8870.0947909610859/8.0), | ||
9169 | REAL_CONST(8883.0367484340295/8.0), | ||
9170 | REAL_CONST(8895.9834215052524/8.0), | ||
9171 | REAL_CONST(8908.934806742107/8.0), | ||
9172 | REAL_CONST(8921.8909007181846/8.0), | ||
9173 | REAL_CONST(8934.8517000132997/8.0), | ||
9174 | REAL_CONST(8947.817201213471/8.0), | ||
9175 | REAL_CONST(8960.7874009109/8.0), | ||
9176 | REAL_CONST(8973.7622957039603/8.0), | ||
9177 | REAL_CONST(8986.7418821971733/8.0), | ||
9178 | REAL_CONST(8999.7261570011924/8.0), | ||
9179 | REAL_CONST(9012.7151167327884/8.0), | ||
9180 | REAL_CONST(9025.7087580148236/8.0), | ||
9181 | REAL_CONST(9038.7070774762469/8.0), | ||
9182 | REAL_CONST(9051.7100717520643/8.0), | ||
9183 | REAL_CONST(9064.7177374833282/8.0), | ||
9184 | REAL_CONST(9077.7300713171153/8.0), | ||
9185 | REAL_CONST(9090.7470699065179/8.0), | ||
9186 | REAL_CONST(9103.7687299106146/8.0), | ||
9187 | REAL_CONST(9116.7950479944648/8.0), | ||
9188 | REAL_CONST(9129.8260208290812/8.0), | ||
9189 | REAL_CONST(9142.8616450914233/8.0), | ||
9190 | REAL_CONST(9155.9019174643727/8.0), | ||
9191 | REAL_CONST(9168.9468346367157/8.0), | ||
9192 | REAL_CONST(9181.9963933031358/8.0), | ||
9193 | REAL_CONST(9195.0505901641845/8.0), | ||
9194 | REAL_CONST(9208.1094219262741/8.0), | ||
9195 | REAL_CONST(9221.1728853016557/8.0), | ||
9196 | REAL_CONST(9234.240977008405/8.0), | ||
9197 | REAL_CONST(9247.3136937704076/8.0), | ||
9198 | REAL_CONST(9260.3910323173386/8.0), | ||
9199 | REAL_CONST(9273.472989384647/8.0), | ||
9200 | REAL_CONST(9286.5595617135423/8.0), | ||
9201 | REAL_CONST(9299.6507460509747/8.0), | ||
9202 | REAL_CONST(9312.7465391496207/8.0), | ||
9203 | REAL_CONST(9325.8469377678684/8.0), | ||
9204 | REAL_CONST(9338.9519386698012/8.0), | ||
9205 | REAL_CONST(9352.0615386251757/8.0), | ||
9206 | REAL_CONST(9365.1757344094131/8.0), | ||
9207 | REAL_CONST(9378.2945228035842/8.0), | ||
9208 | REAL_CONST(9391.4179005943843/8.0), | ||
9209 | REAL_CONST(9404.5458645741273/8.0), | ||
9210 | REAL_CONST(9417.6784115407263/8.0), | ||
9211 | REAL_CONST(9430.8155382976747/8.0), | ||
9212 | REAL_CONST(9443.9572416540359/8.0), | ||
9213 | REAL_CONST(9457.1035184244265/8.0), | ||
9214 | REAL_CONST(9470.2543654290002/8.0), | ||
9215 | REAL_CONST(9483.4097794934296/8.0), | ||
9216 | REAL_CONST(9496.5697574488931/8.0), | ||
9217 | REAL_CONST(9509.7342961320664/8.0), | ||
9218 | REAL_CONST(9522.9033923850911/8.0), | ||
9219 | REAL_CONST(9536.0770430555804/8.0), | ||
9220 | REAL_CONST(9549.2552449965824/8.0), | ||
9221 | REAL_CONST(9562.4379950665825/8.0), | ||
9222 | REAL_CONST(9575.6252901294793/8.0), | ||
9223 | REAL_CONST(9588.8171270545736/8.0), | ||
9224 | REAL_CONST(9602.0135027165488/8.0), | ||
9225 | REAL_CONST(9615.2144139954635/8.0), | ||
9226 | REAL_CONST(9628.4198577767274/8.0), | ||
9227 | REAL_CONST(9641.629830951093/8.0), | ||
9228 | REAL_CONST(9654.844330414644/8.0), | ||
9229 | REAL_CONST(9668.0633530687719/8.0), | ||
9230 | REAL_CONST(9681.286895820167/8.0), | ||
9231 | REAL_CONST(9694.5149555808002/8.0), | ||
9232 | REAL_CONST(9707.7475292679192/8.0), | ||
9233 | REAL_CONST(9720.9846138040157/8.0), | ||
9234 | REAL_CONST(9734.2262061168276/8.0), | ||
9235 | REAL_CONST(9747.4723031393187/8.0), | ||
9236 | REAL_CONST(9760.7229018096641/8.0), | ||
9237 | REAL_CONST(9773.9779990712323/8.0), | ||
9238 | REAL_CONST(9787.2375918725811/8.0), | ||
9239 | REAL_CONST(9800.5016771674327/8.0), | ||
9240 | REAL_CONST(9813.7702519146696/8.0), | ||
9241 | REAL_CONST(9827.0433130783094/8.0), | ||
9242 | REAL_CONST(9840.3208576275028/8.0), | ||
9243 | REAL_CONST(9853.602882536512/8.0), | ||
9244 | REAL_CONST(9866.8893847846994/8.0), | ||
9245 | REAL_CONST(9880.1803613565116/8.0), | ||
9246 | REAL_CONST(9893.4758092414686/8.0), | ||
9247 | REAL_CONST(9906.7757254341523/8.0), | ||
9248 | REAL_CONST(9920.0801069341851/8.0), | ||
9249 | REAL_CONST(9933.3889507462245/8.0), | ||
9250 | REAL_CONST(9946.7022538799429/8.0), | ||
9251 | REAL_CONST(9960.0200133500221/8.0), | ||
9252 | REAL_CONST(9973.3422261761298/8.0), | ||
9253 | REAL_CONST(9986.6688893829159/8.0), | ||
9254 | REAL_CONST(9999.9999999999945/8.0), | ||
9255 | REAL_CONST(10013.335555061929/8.0), | ||
9256 | REAL_CONST(10026.675551608221/8.0), | ||
9257 | REAL_CONST(10040.019986683301/8.0), | ||
9258 | REAL_CONST(10053.368857336509/8.0), | ||
9259 | REAL_CONST(10066.722160622081/8.0), | ||
9260 | REAL_CONST(10080.079893599144/8.0), | ||
9261 | REAL_CONST(10093.442053331697/8.0), | ||
9262 | REAL_CONST(10106.808636888598/8.0), | ||
9263 | REAL_CONST(10120.179641343551/8.0), | ||
9264 | REAL_CONST(10133.555063775095/8.0), | ||
9265 | REAL_CONST(10146.934901266595/8.0), | ||
9266 | REAL_CONST(10160.31915090622/8.0), | ||
9267 | REAL_CONST(10173.707809786936/8.0), | ||
9268 | REAL_CONST(10187.100875006496/8.0), | ||
9269 | REAL_CONST(10200.498343667417/8.0), | ||
9270 | REAL_CONST(10213.900212876984/8.0), | ||
9271 | REAL_CONST(10227.306479747222/8.0), | ||
9272 | REAL_CONST(10240.717141394889/8.0), | ||
9273 | REAL_CONST(10254.132194941467/8.0), | ||
9274 | REAL_CONST(10267.551637513146/8.0), | ||
9275 | REAL_CONST(10280.975466240814/8.0), | ||
9276 | REAL_CONST(10294.40367826004/8.0), | ||
9277 | REAL_CONST(10307.836270711066/8.0), | ||
9278 | REAL_CONST(10321.273240738796/8.0), | ||
9279 | REAL_CONST(10334.71458549278/8.0) | ||
9280 | #ifdef BIG_IQ_TABLE | ||
9281 | ,REAL_CONST(10348.160302127204/8.0), | ||
9282 | REAL_CONST(10361.610387800878/8.0), | ||
9283 | REAL_CONST(10375.064839677221/8.0), | ||
9284 | REAL_CONST(10388.523654924258/8.0), | ||
9285 | REAL_CONST(10401.986830714593/8.0), | ||
9286 | REAL_CONST(10415.454364225412/8.0), | ||
9287 | REAL_CONST(10428.926252638465/8.0), | ||
9288 | REAL_CONST(10442.402493140049/8.0), | ||
9289 | REAL_CONST(10455.883082921007/8.0), | ||
9290 | REAL_CONST(10469.368019176709/8.0), | ||
9291 | REAL_CONST(10482.85729910704/8.0), | ||
9292 | REAL_CONST(10496.350919916393/8.0), | ||
9293 | REAL_CONST(10509.848878813653/8.0), | ||
9294 | REAL_CONST(10523.351173012188/8.0), | ||
9295 | REAL_CONST(10536.857799729838/8.0), | ||
9296 | REAL_CONST(10550.3687561889/8.0), | ||
9297 | REAL_CONST(10563.884039616123/8.0), | ||
9298 | REAL_CONST(10577.403647242685/8.0), | ||
9299 | REAL_CONST(10590.927576304197/8.0), | ||
9300 | REAL_CONST(10604.455824040679/8.0), | ||
9301 | REAL_CONST(10617.988387696556/8.0), | ||
9302 | REAL_CONST(10631.525264520642/8.0), | ||
9303 | REAL_CONST(10645.066451766135/8.0), | ||
9304 | REAL_CONST(10658.611946690598/8.0), | ||
9305 | REAL_CONST(10672.161746555956/8.0), | ||
9306 | REAL_CONST(10685.715848628475/8.0), | ||
9307 | REAL_CONST(10699.274250178762/8.0), | ||
9308 | REAL_CONST(10712.836948481747/8.0), | ||
9309 | REAL_CONST(10726.403940816675/8.0), | ||
9310 | REAL_CONST(10739.975224467091/8.0), | ||
9311 | REAL_CONST(10753.550796720834/8.0), | ||
9312 | REAL_CONST(10767.130654870027/8.0), | ||
9313 | REAL_CONST(10780.714796211059/8.0), | ||
9314 | REAL_CONST(10794.303218044579/8.0), | ||
9315 | REAL_CONST(10807.895917675487/8.0), | ||
9316 | REAL_CONST(10821.492892412922/8.0), | ||
9317 | REAL_CONST(10835.094139570248/8.0), | ||
9318 | REAL_CONST(10848.699656465047/8.0), | ||
9319 | REAL_CONST(10862.309440419107/8.0), | ||
9320 | REAL_CONST(10875.923488758415/8.0), | ||
9321 | REAL_CONST(10889.541798813138/8.0), | ||
9322 | REAL_CONST(10903.16436791762/8.0), | ||
9323 | REAL_CONST(10916.791193410372/8.0), | ||
9324 | REAL_CONST(10930.422272634056/8.0), | ||
9325 | REAL_CONST(10944.05760293548/8.0), | ||
9326 | REAL_CONST(10957.697181665582/8.0), | ||
9327 | REAL_CONST(10971.341006179427/8.0), | ||
9328 | REAL_CONST(10984.98907383619/8.0), | ||
9329 | REAL_CONST(10998.641381999149/8.0), | ||
9330 | REAL_CONST(11012.297928035676/8.0), | ||
9331 | REAL_CONST(11025.958709317223/8.0), | ||
9332 | REAL_CONST(11039.623723219316/8.0), | ||
9333 | REAL_CONST(11053.292967121541/8.0), | ||
9334 | REAL_CONST(11066.966438407539/8.0), | ||
9335 | REAL_CONST(11080.64413446499/8.0), | ||
9336 | REAL_CONST(11094.326052685608/8.0), | ||
9337 | REAL_CONST(11108.012190465128/8.0), | ||
9338 | REAL_CONST(11121.702545203296/8.0), | ||
9339 | REAL_CONST(11135.397114303863/8.0), | ||
9340 | REAL_CONST(11149.095895174571/8.0), | ||
9341 | REAL_CONST(11162.798885227143/8.0), | ||
9342 | REAL_CONST(11176.506081877278/8.0), | ||
9343 | REAL_CONST(11190.217482544635/8.0), | ||
9344 | REAL_CONST(11203.933084652828/8.0), | ||
9345 | REAL_CONST(11217.652885629415/8.0), | ||
9346 | REAL_CONST(11231.376882905886/8.0), | ||
9347 | REAL_CONST(11245.105073917659/8.0), | ||
9348 | REAL_CONST(11258.837456104062/8.0), | ||
9349 | REAL_CONST(11272.574026908333/8.0), | ||
9350 | REAL_CONST(11286.314783777601/8.0), | ||
9351 | REAL_CONST(11300.059724162888/8.0), | ||
9352 | REAL_CONST(11313.808845519083/8.0), | ||
9353 | REAL_CONST(11327.562145304952/8.0), | ||
9354 | REAL_CONST(11341.319620983111/8.0), | ||
9355 | REAL_CONST(11355.081270020033/8.0), | ||
9356 | REAL_CONST(11368.847089886023/8.0), | ||
9357 | REAL_CONST(11382.617078055218/8.0), | ||
9358 | REAL_CONST(11396.391232005579/8.0), | ||
9359 | REAL_CONST(11410.169549218874/8.0), | ||
9360 | REAL_CONST(11423.952027180676/8.0), | ||
9361 | REAL_CONST(11437.738663380349/8.0), | ||
9362 | REAL_CONST(11451.529455311042/8.0), | ||
9363 | REAL_CONST(11465.324400469679/8.0), | ||
9364 | REAL_CONST(11479.123496356951/8.0), | ||
9365 | REAL_CONST(11492.926740477304/8.0), | ||
9366 | REAL_CONST(11506.734130338931/8.0), | ||
9367 | REAL_CONST(11520.545663453764/8.0), | ||
9368 | REAL_CONST(11534.361337337466/8.0), | ||
9369 | REAL_CONST(11548.181149509423/8.0), | ||
9370 | REAL_CONST(11562.005097492724/8.0), | ||
9371 | REAL_CONST(11575.83317881417/8.0), | ||
9372 | REAL_CONST(11589.665391004253/8.0), | ||
9373 | REAL_CONST(11603.501731597149/8.0), | ||
9374 | REAL_CONST(11617.342198130715/8.0), | ||
9375 | REAL_CONST(11631.186788146468/8.0), | ||
9376 | REAL_CONST(11645.035499189589/8.0), | ||
9377 | REAL_CONST(11658.888328808911/8.0), | ||
9378 | REAL_CONST(11672.745274556904/8.0), | ||
9379 | REAL_CONST(11686.606333989675/8.0), | ||
9380 | REAL_CONST(11700.471504666955/8.0), | ||
9381 | REAL_CONST(11714.340784152086/8.0), | ||
9382 | REAL_CONST(11728.214170012021/8.0), | ||
9383 | REAL_CONST(11742.091659817312/8.0), | ||
9384 | REAL_CONST(11755.973251142101/8.0), | ||
9385 | REAL_CONST(11769.858941564111/8.0), | ||
9386 | REAL_CONST(11783.748728664636/8.0), | ||
9387 | REAL_CONST(11797.642610028539/8.0), | ||
9388 | REAL_CONST(11811.540583244237/8.0), | ||
9389 | REAL_CONST(11825.442645903697/8.0), | ||
9390 | REAL_CONST(11839.34879560242/8.0), | ||
9391 | REAL_CONST(11853.259029939445/8.0), | ||
9392 | REAL_CONST(11867.173346517333/8.0), | ||
9393 | REAL_CONST(11881.091742942155/8.0), | ||
9394 | REAL_CONST(11895.014216823492/8.0), | ||
9395 | REAL_CONST(11908.940765774427/8.0), | ||
9396 | REAL_CONST(11922.871387411526/8.0), | ||
9397 | REAL_CONST(11936.806079354839/8.0), | ||
9398 | REAL_CONST(11950.744839227897/8.0), | ||
9399 | REAL_CONST(11964.687664657684/8.0), | ||
9400 | REAL_CONST(11978.634553274653/8.0), | ||
9401 | REAL_CONST(11992.585502712702/8.0), | ||
9402 | REAL_CONST(12006.540510609168/8.0), | ||
9403 | REAL_CONST(12020.499574604828/8.0), | ||
9404 | REAL_CONST(12034.462692343877/8.0), | ||
9405 | REAL_CONST(12048.429861473938/8.0), | ||
9406 | REAL_CONST(12062.401079646032/8.0), | ||
9407 | REAL_CONST(12076.376344514589/8.0), | ||
9408 | REAL_CONST(12090.355653737433/8.0), | ||
9409 | REAL_CONST(12104.339004975769/8.0), | ||
9410 | REAL_CONST(12118.326395894188/8.0), | ||
9411 | REAL_CONST(12132.317824160644/8.0), | ||
9412 | REAL_CONST(12146.313287446457/8.0), | ||
9413 | REAL_CONST(12160.312783426305/8.0), | ||
9414 | REAL_CONST(12174.316309778205/8.0), | ||
9415 | REAL_CONST(12188.323864183525/8.0), | ||
9416 | REAL_CONST(12202.335444326955/8.0), | ||
9417 | REAL_CONST(12216.351047896511/8.0), | ||
9418 | REAL_CONST(12230.370672583531/8.0), | ||
9419 | REAL_CONST(12244.394316082657/8.0), | ||
9420 | REAL_CONST(12258.421976091831/8.0), | ||
9421 | REAL_CONST(12272.453650312296/8.0), | ||
9422 | REAL_CONST(12286.489336448574/8.0), | ||
9423 | REAL_CONST(12300.529032208471/8.0), | ||
9424 | REAL_CONST(12314.572735303058/8.0), | ||
9425 | REAL_CONST(12328.620443446678/8.0), | ||
9426 | REAL_CONST(12342.672154356922/8.0), | ||
9427 | REAL_CONST(12356.727865754638/8.0), | ||
9428 | REAL_CONST(12370.787575363909/8.0), | ||
9429 | REAL_CONST(12384.851280912055/8.0), | ||
9430 | REAL_CONST(12398.918980129623/8.0), | ||
9431 | REAL_CONST(12412.990670750381/8.0), | ||
9432 | REAL_CONST(12427.066350511306/8.0), | ||
9433 | REAL_CONST(12441.146017152583/8.0), | ||
9434 | REAL_CONST(12455.229668417589/8.0), | ||
9435 | REAL_CONST(12469.317302052901/8.0), | ||
9436 | REAL_CONST(12483.40891580827/8.0), | ||
9437 | REAL_CONST(12497.50450743663/8.0), | ||
9438 | REAL_CONST(12511.604074694078/8.0), | ||
9439 | REAL_CONST(12525.707615339878/8.0), | ||
9440 | REAL_CONST(12539.815127136444/8.0), | ||
9441 | REAL_CONST(12553.926607849342/8.0), | ||
9442 | REAL_CONST(12568.042055247275/8.0), | ||
9443 | REAL_CONST(12582.161467102082/8.0), | ||
9444 | REAL_CONST(12596.284841188726/8.0), | ||
9445 | REAL_CONST(12610.41217528529/8.0), | ||
9446 | REAL_CONST(12624.543467172971/8.0), | ||
9447 | REAL_CONST(12638.678714636069/8.0), | ||
9448 | REAL_CONST(12652.817915461985/8.0), | ||
9449 | REAL_CONST(12666.961067441209/8.0), | ||
9450 | REAL_CONST(12681.108168367316/8.0), | ||
9451 | REAL_CONST(12695.259216036962/8.0), | ||
9452 | REAL_CONST(12709.414208249869/8.0), | ||
9453 | REAL_CONST(12723.573142808827/8.0), | ||
9454 | REAL_CONST(12737.736017519681/8.0), | ||
9455 | REAL_CONST(12751.902830191326/8.0), | ||
9456 | REAL_CONST(12766.073578635704/8.0), | ||
9457 | REAL_CONST(12780.248260667788/8.0), | ||
9458 | REAL_CONST(12794.426874105588/8.0), | ||
9459 | REAL_CONST(12808.609416770132/8.0), | ||
9460 | REAL_CONST(12822.795886485468/8.0), | ||
9461 | REAL_CONST(12836.986281078653/8.0), | ||
9462 | REAL_CONST(12851.180598379744/8.0), | ||
9463 | REAL_CONST(12865.378836221802/8.0), | ||
9464 | REAL_CONST(12879.580992440871/8.0), | ||
9465 | REAL_CONST(12893.787064875984/8.0), | ||
9466 | REAL_CONST(12907.997051369144/8.0), | ||
9467 | REAL_CONST(12922.210949765335/8.0), | ||
9468 | REAL_CONST(12936.428757912496/8.0), | ||
9469 | REAL_CONST(12950.650473661524/8.0), | ||
9470 | REAL_CONST(12964.876094866273/8.0), | ||
9471 | REAL_CONST(12979.105619383534/8.0), | ||
9472 | REAL_CONST(12993.339045073039/8.0), | ||
9473 | REAL_CONST(13007.576369797454/8.0), | ||
9474 | REAL_CONST(13021.817591422368/8.0), | ||
9475 | REAL_CONST(13036.062707816285/8.0), | ||
9476 | REAL_CONST(13050.311716850629/8.0), | ||
9477 | REAL_CONST(13064.564616399723/8.0), | ||
9478 | REAL_CONST(13078.821404340792/8.0), | ||
9479 | REAL_CONST(13093.082078553954/8.0), | ||
9480 | REAL_CONST(13107.346636922217/8.0), | ||
9481 | REAL_CONST(13121.615077331464/8.0), | ||
9482 | REAL_CONST(13135.887397670458/8.0), | ||
9483 | REAL_CONST(13150.163595830827/8.0), | ||
9484 | REAL_CONST(13164.44366970706/8.0), | ||
9485 | REAL_CONST(13178.727617196502/8.0), | ||
9486 | REAL_CONST(13193.015436199352/8.0), | ||
9487 | REAL_CONST(13207.307124618648/8.0), | ||
9488 | REAL_CONST(13221.602680360265/8.0), | ||
9489 | REAL_CONST(13235.902101332911/8.0), | ||
9490 | REAL_CONST(13250.205385448118/8.0), | ||
9491 | REAL_CONST(13264.512530620239/8.0), | ||
9492 | REAL_CONST(13278.823534766434/8.0), | ||
9493 | REAL_CONST(13293.138395806676/8.0), | ||
9494 | REAL_CONST(13307.457111663734/8.0), | ||
9495 | REAL_CONST(13321.779680263176/8.0), | ||
9496 | REAL_CONST(13336.106099533356/8.0), | ||
9497 | REAL_CONST(13350.436367405409/8.0), | ||
9498 | REAL_CONST(13364.77048181325/8.0), | ||
9499 | REAL_CONST(13379.108440693562/8.0), | ||
9500 | REAL_CONST(13393.450241985796/8.0), | ||
9501 | REAL_CONST(13407.795883632158/8.0), | ||
9502 | REAL_CONST(13422.145363577607/8.0), | ||
9503 | REAL_CONST(13436.498679769853/8.0), | ||
9504 | REAL_CONST(13450.855830159346/8.0), | ||
9505 | REAL_CONST(13465.216812699266/8.0), | ||
9506 | REAL_CONST(13479.581625345529/8.0), | ||
9507 | REAL_CONST(13493.950266056772/8.0), | ||
9508 | REAL_CONST(13508.32273279435/8.0), | ||
9509 | REAL_CONST(13522.699023522329/8.0), | ||
9510 | REAL_CONST(13537.079136207483/8.0), | ||
9511 | REAL_CONST(13551.463068819286/8.0), | ||
9512 | REAL_CONST(13565.850819329906/8.0), | ||
9513 | REAL_CONST(13580.2423857142/8.0), | ||
9514 | REAL_CONST(13594.63776594971/8.0), | ||
9515 | REAL_CONST(13609.036958016657/8.0), | ||
9516 | REAL_CONST(13623.439959897927/8.0), | ||
9517 | REAL_CONST(13637.846769579081/8.0), | ||
9518 | REAL_CONST(13652.257385048335/8.0), | ||
9519 | REAL_CONST(13666.67180429656/8.0), | ||
9520 | REAL_CONST(13681.090025317284/8.0), | ||
9521 | REAL_CONST(13695.512046106669/8.0), | ||
9522 | REAL_CONST(13709.937864663521/8.0), | ||
9523 | REAL_CONST(13724.367478989278/8.0), | ||
9524 | REAL_CONST(13738.800887088004/8.0), | ||
9525 | REAL_CONST(13753.238086966385/8.0), | ||
9526 | REAL_CONST(13767.679076633727/8.0), | ||
9527 | REAL_CONST(13782.123854101939/8.0), | ||
9528 | REAL_CONST(13796.572417385545/8.0), | ||
9529 | REAL_CONST(13811.024764501659/8.0), | ||
9530 | REAL_CONST(13825.480893469998/8.0), | ||
9531 | REAL_CONST(13839.94080231286/8.0), | ||
9532 | REAL_CONST(13854.404489055134/8.0), | ||
9533 | REAL_CONST(13868.871951724283/8.0), | ||
9534 | REAL_CONST(13883.34318835034/8.0), | ||
9535 | REAL_CONST(13897.818196965914/8.0), | ||
9536 | REAL_CONST(13912.296975606168/8.0), | ||
9537 | REAL_CONST(13926.779522308825/8.0), | ||
9538 | REAL_CONST(13941.26583511416/8.0), | ||
9539 | REAL_CONST(13955.755912064991/8.0), | ||
9540 | REAL_CONST(13970.249751206682/8.0), | ||
9541 | REAL_CONST(13984.747350587126/8.0), | ||
9542 | REAL_CONST(13999.248708256751/8.0), | ||
9543 | REAL_CONST(14013.753822268511/8.0), | ||
9544 | REAL_CONST(14028.262690677873/8.0), | ||
9545 | REAL_CONST(14042.775311542828/8.0), | ||
9546 | REAL_CONST(14057.291682923867/8.0), | ||
9547 | REAL_CONST(14071.811802883994/8.0), | ||
9548 | REAL_CONST(14086.335669488704/8.0), | ||
9549 | REAL_CONST(14100.863280805994/8.0), | ||
9550 | REAL_CONST(14115.394634906341/8.0), | ||
9551 | REAL_CONST(14129.92972986271/8.0), | ||
9552 | REAL_CONST(14144.468563750548/8.0), | ||
9553 | REAL_CONST(14159.01113464777/8.0), | ||
9554 | REAL_CONST(14173.55744063476/8.0), | ||
9555 | REAL_CONST(14188.107479794369/8.0), | ||
9556 | REAL_CONST(14202.661250211901/8.0), | ||
9557 | REAL_CONST(14217.218749975118/8.0), | ||
9558 | REAL_CONST(14231.779977174227/8.0), | ||
9559 | REAL_CONST(14246.344929901879/8.0), | ||
9560 | REAL_CONST(14260.913606253163/8.0), | ||
9561 | REAL_CONST(14275.486004325601/8.0), | ||
9562 | REAL_CONST(14290.062122219146/8.0), | ||
9563 | REAL_CONST(14304.641958036171/8.0), | ||
9564 | REAL_CONST(14319.225509881464/8.0), | ||
9565 | REAL_CONST(14333.812775862236/8.0), | ||
9566 | REAL_CONST(14348.403754088098/8.0), | ||
9567 | REAL_CONST(14362.998442671067/8.0), | ||
9568 | REAL_CONST(14377.59683972556/8.0), | ||
9569 | REAL_CONST(14392.198943368388/8.0), | ||
9570 | REAL_CONST(14406.804751718748/8.0), | ||
9571 | REAL_CONST(14421.414262898223/8.0), | ||
9572 | REAL_CONST(14436.027475030774/8.0), | ||
9573 | REAL_CONST(14450.64438624274/8.0), | ||
9574 | REAL_CONST(14465.264994662828/8.0), | ||
9575 | REAL_CONST(14479.889298422106/8.0), | ||
9576 | REAL_CONST(14494.517295654005/8.0), | ||
9577 | REAL_CONST(14509.148984494313/8.0), | ||
9578 | REAL_CONST(14523.784363081166/8.0), | ||
9579 | REAL_CONST(14538.423429555049/8.0), | ||
9580 | REAL_CONST(14553.066182058781/8.0), | ||
9581 | REAL_CONST(14567.712618737527/8.0), | ||
9582 | REAL_CONST(14582.362737738777/8.0), | ||
9583 | REAL_CONST(14597.016537212348/8.0), | ||
9584 | REAL_CONST(14611.674015310382/8.0), | ||
9585 | REAL_CONST(14626.33517018734/8.0), | ||
9586 | REAL_CONST(14640.999999999993/8.0), | ||
9587 | REAL_CONST(14655.668502907418/8.0), | ||
9588 | REAL_CONST(14670.340677071003/8.0), | ||
9589 | REAL_CONST(14685.016520654426/8.0), | ||
9590 | REAL_CONST(14699.696031823671/8.0), | ||
9591 | REAL_CONST(14714.379208746999/8.0), | ||
9592 | REAL_CONST(14729.066049594967/8.0), | ||
9593 | REAL_CONST(14743.756552540408/8.0), | ||
9594 | REAL_CONST(14758.45071575843/8.0), | ||
9595 | REAL_CONST(14773.148537426418/8.0), | ||
9596 | REAL_CONST(14787.850015724018/8.0), | ||
9597 | REAL_CONST(14802.555148833142/8.0), | ||
9598 | REAL_CONST(14817.263934937961/8.0), | ||
9599 | REAL_CONST(14831.976372224897/8.0), | ||
9600 | REAL_CONST(14846.692458882624/8.0), | ||
9601 | REAL_CONST(14861.41219310206/8.0), | ||
9602 | REAL_CONST(14876.135573076363/8.0), | ||
9603 | REAL_CONST(14890.862597000923/8.0), | ||
9604 | REAL_CONST(14905.593263073371/8.0), | ||
9605 | REAL_CONST(14920.327569493558/8.0), | ||
9606 | REAL_CONST(14935.065514463557/8.0), | ||
9607 | REAL_CONST(14949.807096187662/8.0), | ||
9608 | REAL_CONST(14964.552312872382/8.0), | ||
9609 | REAL_CONST(14979.301162726431/8.0), | ||
9610 | REAL_CONST(14994.053643960735/8.0), | ||
9611 | REAL_CONST(15008.809754788414/8.0), | ||
9612 | REAL_CONST(15023.569493424788/8.0), | ||
9613 | REAL_CONST(15038.332858087369/8.0), | ||
9614 | REAL_CONST(15053.099846995858/8.0), | ||
9615 | REAL_CONST(15067.870458372134/8.0), | ||
9616 | REAL_CONST(15082.644690440264/8.0), | ||
9617 | REAL_CONST(15097.422541426484/8.0), | ||
9618 | REAL_CONST(15112.204009559202/8.0), | ||
9619 | REAL_CONST(15126.989093068994/8.0), | ||
9620 | REAL_CONST(15141.777790188597/8.0), | ||
9621 | REAL_CONST(15156.570099152905/8.0), | ||
9622 | REAL_CONST(15171.366018198967/8.0), | ||
9623 | REAL_CONST(15186.165545565986/8.0), | ||
9624 | REAL_CONST(15200.968679495301/8.0), | ||
9625 | REAL_CONST(15215.775418230402/8.0), | ||
9626 | REAL_CONST(15230.585760016909/8.0), | ||
9627 | REAL_CONST(15245.399703102579/8.0), | ||
9628 | REAL_CONST(15260.217245737298/8.0), | ||
9629 | REAL_CONST(15275.038386173073/8.0), | ||
9630 | REAL_CONST(15289.863122664035/8.0), | ||
9631 | REAL_CONST(15304.691453466432/8.0), | ||
9632 | REAL_CONST(15319.523376838621/8.0), | ||
9633 | REAL_CONST(15334.358891041069/8.0), | ||
9634 | REAL_CONST(15349.197994336346/8.0), | ||
9635 | REAL_CONST(15364.040684989128/8.0), | ||
9636 | REAL_CONST(15378.886961266177/8.0), | ||
9637 | REAL_CONST(15393.736821436356/8.0), | ||
9638 | REAL_CONST(15408.590263770609/8.0), | ||
9639 | REAL_CONST(15423.447286541972/8.0), | ||
9640 | REAL_CONST(15438.307888025554/8.0), | ||
9641 | REAL_CONST(15453.172066498542/8.0), | ||
9642 | REAL_CONST(15468.039820240196/8.0), | ||
9643 | REAL_CONST(15482.91114753184/8.0), | ||
9644 | REAL_CONST(15497.786046656869/8.0), | ||
9645 | REAL_CONST(15512.664515900733/8.0), | ||
9646 | REAL_CONST(15527.546553550939/8.0), | ||
9647 | REAL_CONST(15542.432157897045/8.0), | ||
9648 | REAL_CONST(15557.32132723066/8.0), | ||
9649 | REAL_CONST(15572.214059845435/8.0), | ||
9650 | REAL_CONST(15587.110354037064/8.0), | ||
9651 | REAL_CONST(15602.010208103273/8.0), | ||
9652 | REAL_CONST(15616.913620343823/8.0), | ||
9653 | REAL_CONST(15631.820589060506/8.0), | ||
9654 | REAL_CONST(15646.731112557136/8.0), | ||
9655 | REAL_CONST(15661.645189139546/8.0), | ||
9656 | REAL_CONST(15676.562817115593/8.0), | ||
9657 | REAL_CONST(15691.483994795139/8.0), | ||
9658 | REAL_CONST(15706.408720490062/8.0), | ||
9659 | REAL_CONST(15721.336992514242/8.0), | ||
9660 | REAL_CONST(15736.268809183561/8.0), | ||
9661 | REAL_CONST(15751.204168815901/8.0), | ||
9662 | REAL_CONST(15766.143069731135/8.0), | ||
9663 | REAL_CONST(15781.085510251132/8.0), | ||
9664 | REAL_CONST(15796.03148869974/8.0), | ||
9665 | REAL_CONST(15810.981003402798/8.0), | ||
9666 | REAL_CONST(15825.934052688119/8.0), | ||
9667 | REAL_CONST(15840.890634885489/8.0), | ||
9668 | REAL_CONST(15855.850748326673/8.0), | ||
9669 | REAL_CONST(15870.814391345401/8.0), | ||
9670 | REAL_CONST(15885.781562277361/8.0), | ||
9671 | REAL_CONST(15900.752259460214/8.0), | ||
9672 | REAL_CONST(15915.726481233565/8.0), | ||
9673 | REAL_CONST(15930.704225938984/8.0), | ||
9674 | REAL_CONST(15945.685491919978/8.0), | ||
9675 | REAL_CONST(15960.670277522009/8.0), | ||
9676 | REAL_CONST(15975.658581092481/8.0), | ||
9677 | REAL_CONST(15990.65040098073/8.0), | ||
9678 | REAL_CONST(16005.645735538035/8.0), | ||
9679 | REAL_CONST(16020.644583117599/8.0), | ||
9680 | REAL_CONST(16035.646942074556/8.0), | ||
9681 | REAL_CONST(16050.652810765967/8.0), | ||
9682 | REAL_CONST(16065.662187550806/8.0), | ||
9683 | REAL_CONST(16080.675070789974/8.0), | ||
9684 | REAL_CONST(16095.691458846273/8.0), | ||
9685 | REAL_CONST(16110.711350084424/8.0), | ||
9686 | REAL_CONST(16125.734742871053/8.0), | ||
9687 | REAL_CONST(16140.761635574685/8.0), | ||
9688 | REAL_CONST(16155.792026565747/8.0), | ||
9689 | REAL_CONST(16170.825914216561/8.0), | ||
9690 | REAL_CONST(16185.863296901338/8.0), | ||
9691 | REAL_CONST(16200.904172996183/8.0), | ||
9692 | REAL_CONST(16215.948540879079/8.0), | ||
9693 | REAL_CONST(16230.996398929899/8.0), | ||
9694 | REAL_CONST(16246.047745530386/8.0), | ||
9695 | REAL_CONST(16261.102579064163/8.0), | ||
9696 | REAL_CONST(16276.160897916721/8.0), | ||
9697 | REAL_CONST(16291.22270047542/8.0), | ||
9698 | REAL_CONST(16306.287985129484/8.0), | ||
9699 | REAL_CONST(16321.356750269995/8.0), | ||
9700 | REAL_CONST(16336.428994289896/8.0), | ||
9701 | REAL_CONST(16351.504715583982/8.0), | ||
9702 | REAL_CONST(16366.5839125489/8.0), | ||
9703 | REAL_CONST(16381.666583583141/8.0), | ||
9704 | REAL_CONST(16396.752727087041/8.0), | ||
9705 | REAL_CONST(16411.842341462776/8.0), | ||
9706 | REAL_CONST(16426.935425114363/8.0), | ||
9707 | REAL_CONST(16442.031976447644/8.0), | ||
9708 | REAL_CONST(16457.131993870298/8.0), | ||
9709 | REAL_CONST(16472.235475791829/8.0), | ||
9710 | REAL_CONST(16487.342420623561/8.0), | ||
9711 | REAL_CONST(16502.452826778641/8.0), | ||
9712 | REAL_CONST(16517.566692672033/8.0), | ||
9713 | REAL_CONST(16532.684016720516/8.0), | ||
9714 | REAL_CONST(16547.804797342676/8.0), | ||
9715 | REAL_CONST(16562.929032958902/8.0), | ||
9716 | REAL_CONST(16578.056721991394/8.0), | ||
9717 | REAL_CONST(16593.18786286415/8.0), | ||
9718 | REAL_CONST(16608.322454002962/8.0), | ||
9719 | REAL_CONST(16623.460493835417/8.0), | ||
9720 | REAL_CONST(16638.601980790896/8.0), | ||
9721 | REAL_CONST(16653.746913300558/8.0), | ||
9722 | REAL_CONST(16668.895289797354/8.0), | ||
9723 | REAL_CONST(16684.047108716015/8.0), | ||
9724 | REAL_CONST(16699.202368493046/8.0), | ||
9725 | REAL_CONST(16714.361067566726/8.0), | ||
9726 | REAL_CONST(16729.523204377107/8.0), | ||
9727 | REAL_CONST(16744.688777366009/8.0), | ||
9728 | REAL_CONST(16759.857784977012/8.0), | ||
9729 | REAL_CONST(16775.030225655464/8.0), | ||
9730 | REAL_CONST(16790.206097848466/8.0), | ||
9731 | REAL_CONST(16805.385400004874/8.0), | ||
9732 | REAL_CONST(16820.568130575302/8.0), | ||
9733 | REAL_CONST(16835.754288012104/8.0), | ||
9734 | REAL_CONST(16850.943870769381/8.0), | ||
9735 | REAL_CONST(16866.136877302983/8.0), | ||
9736 | REAL_CONST(16881.333306070494/8.0), | ||
9737 | REAL_CONST(16896.53315553123/8.0), | ||
9738 | REAL_CONST(16911.736424146249/8.0), | ||
9739 | REAL_CONST(16926.943110378332/8.0), | ||
9740 | REAL_CONST(16942.153212691992/8.0), | ||
9741 | REAL_CONST(16957.366729553454/8.0), | ||
9742 | REAL_CONST(16972.583659430682/8.0), | ||
9743 | REAL_CONST(16987.804000793338/8.0), | ||
9744 | REAL_CONST(17003.027752112816/8.0), | ||
9745 | REAL_CONST(17018.254911862205/8.0), | ||
9746 | REAL_CONST(17033.485478516312/8.0), | ||
9747 | REAL_CONST(17048.719450551645/8.0), | ||
9748 | REAL_CONST(17063.956826446421/8.0), | ||
9749 | REAL_CONST(17079.197604680547/8.0), | ||
9750 | REAL_CONST(17094.44178373563/8.0), | ||
9751 | REAL_CONST(17109.689362094967/8.0), | ||
9752 | REAL_CONST(17124.940338243552/8.0), | ||
9753 | REAL_CONST(17140.194710668064/8.0), | ||
9754 | REAL_CONST(17155.452477856852/8.0), | ||
9755 | REAL_CONST(17170.713638299967/8.0), | ||
9756 | REAL_CONST(17185.978190489128/8.0), | ||
9757 | REAL_CONST(17201.246132917724/8.0), | ||
9758 | REAL_CONST(17216.517464080825/8.0), | ||
9759 | REAL_CONST(17231.792182475165/8.0), | ||
9760 | REAL_CONST(17247.070286599141/8.0), | ||
9761 | REAL_CONST(17262.351774952826/8.0), | ||
9762 | REAL_CONST(17277.636646037936/8.0), | ||
9763 | REAL_CONST(17292.924898357855/8.0), | ||
9764 | REAL_CONST(17308.216530417623/8.0), | ||
9765 | REAL_CONST(17323.511540723921/8.0), | ||
9766 | REAL_CONST(17338.809927785089/8.0), | ||
9767 | REAL_CONST(17354.111690111105/8.0), | ||
9768 | REAL_CONST(17369.416826213594/8.0), | ||
9769 | REAL_CONST(17384.725334605821/8.0), | ||
9770 | REAL_CONST(17400.037213802683/8.0), | ||
9771 | REAL_CONST(17415.352462320716/8.0), | ||
9772 | REAL_CONST(17430.67107867809/8.0), | ||
9773 | REAL_CONST(17445.993061394587/8.0), | ||
9774 | REAL_CONST(17461.318408991636/8.0), | ||
9775 | REAL_CONST(17476.647119992274/8.0), | ||
9776 | REAL_CONST(17491.979192921168/8.0), | ||
9777 | REAL_CONST(17507.314626304586/8.0), | ||
9778 | REAL_CONST(17522.653418670423/8.0), | ||
9779 | REAL_CONST(17537.995568548187/8.0), | ||
9780 | REAL_CONST(17553.341074468986/8.0), | ||
9781 | REAL_CONST(17568.689934965536/8.0), | ||
9782 | REAL_CONST(17584.042148572156/8.0), | ||
9783 | REAL_CONST(17599.397713824768/8.0), | ||
9784 | REAL_CONST(17614.75662926089/8.0), | ||
9785 | REAL_CONST(17630.118893419625/8.0), | ||
9786 | REAL_CONST(17645.484504841683/8.0), | ||
9787 | REAL_CONST(17660.853462069354/8.0), | ||
9788 | REAL_CONST(17676.225763646511/8.0), | ||
9789 | REAL_CONST(17691.601408118619/8.0), | ||
9790 | REAL_CONST(17706.980394032718/8.0), | ||
9791 | REAL_CONST(17722.362719937424/8.0), | ||
9792 | REAL_CONST(17737.748384382936/8.0), | ||
9793 | REAL_CONST(17753.137385921014/8.0), | ||
9794 | REAL_CONST(17768.529723104999/8.0), | ||
9795 | REAL_CONST(17783.92539448979/8.0), | ||
9796 | REAL_CONST(17799.324398631856/8.0), | ||
9797 | REAL_CONST(17814.726734089225/8.0), | ||
9798 | REAL_CONST(17830.13239942148/8.0), | ||
9799 | REAL_CONST(17845.541393189767/8.0), | ||
9800 | REAL_CONST(17860.95371395678/8.0), | ||
9801 | REAL_CONST(17876.369360286772/8.0), | ||
9802 | REAL_CONST(17891.788330745527/8.0), | ||
9803 | REAL_CONST(17907.210623900395/8.0), | ||
9804 | REAL_CONST(17922.636238320254/8.0), | ||
9805 | REAL_CONST(17938.065172575527/8.0), | ||
9806 | REAL_CONST(17953.497425238176/8.0), | ||
9807 | REAL_CONST(17968.932994881692/8.0), | ||
9808 | REAL_CONST(17984.371880081104/8.0), | ||
9809 | REAL_CONST(17999.814079412972/8.0), | ||
9810 | REAL_CONST(18015.259591455371/8.0), | ||
9811 | REAL_CONST(18030.708414787914/8.0), | ||
9812 | REAL_CONST(18046.160547991731/8.0), | ||
9813 | REAL_CONST(18061.615989649465/8.0), | ||
9814 | REAL_CONST(18077.074738345284/8.0), | ||
9815 | REAL_CONST(18092.536792664861/8.0), | ||
9816 | REAL_CONST(18108.002151195393/8.0), | ||
9817 | REAL_CONST(18123.470812525571/8.0), | ||
9818 | REAL_CONST(18138.942775245599/8.0), | ||
9819 | REAL_CONST(18154.418037947191/8.0), | ||
9820 | REAL_CONST(18169.896599223546/8.0), | ||
9821 | REAL_CONST(18185.37845766938/8.0), | ||
9822 | REAL_CONST(18200.863611880886/8.0), | ||
9823 | REAL_CONST(18216.352060455767/8.0), | ||
9824 | REAL_CONST(18231.843801993204/8.0), | ||
9825 | REAL_CONST(18247.338835093873/8.0), | ||
9826 | REAL_CONST(18262.837158359936/8.0), | ||
9827 | REAL_CONST(18278.338770395032/8.0), | ||
9828 | REAL_CONST(18293.84366980429/8.0), | ||
9829 | REAL_CONST(18309.351855194309/8.0), | ||
9830 | REAL_CONST(18324.863325173166/8.0), | ||
9831 | REAL_CONST(18340.378078350412/8.0), | ||
9832 | REAL_CONST(18355.896113337069/8.0), | ||
9833 | REAL_CONST(18371.417428745623/8.0), | ||
9834 | REAL_CONST(18386.942023190033/8.0), | ||
9835 | REAL_CONST(18402.469895285718/8.0), | ||
9836 | REAL_CONST(18418.00104364955/8.0), | ||
9837 | REAL_CONST(18433.53546689987/8.0), | ||
9838 | REAL_CONST(18449.073163656474/8.0), | ||
9839 | REAL_CONST(18464.614132540602/8.0), | ||
9840 | REAL_CONST(18480.158372174956/8.0), | ||
9841 | REAL_CONST(18495.705881183676/8.0), | ||
9842 | REAL_CONST(18511.256658192357/8.0), | ||
9843 | REAL_CONST(18526.810701828035/8.0), | ||
9844 | REAL_CONST(18542.368010719183/8.0), | ||
9845 | REAL_CONST(18557.928583495715/8.0), | ||
9846 | REAL_CONST(18573.492418788985/8.0), | ||
9847 | REAL_CONST(18589.059515231773/8.0), | ||
9848 | REAL_CONST(18604.629871458303/8.0), | ||
9849 | REAL_CONST(18620.203486104212/8.0), | ||
9850 | REAL_CONST(18635.78035780658/8.0), | ||
9851 | REAL_CONST(18651.360485203899/8.0), | ||
9852 | REAL_CONST(18666.943866936086/8.0), | ||
9853 | REAL_CONST(18682.53050164448/8.0), | ||
9854 | REAL_CONST(18698.120387971841/8.0), | ||
9855 | REAL_CONST(18713.713524562332/8.0), | ||
9856 | REAL_CONST(18729.30991006154/8.0), | ||
9857 | REAL_CONST(18744.909543116457/8.0), | ||
9858 | REAL_CONST(18760.512422375479/8.0), | ||
9859 | REAL_CONST(18776.118546488418/8.0), | ||
9860 | REAL_CONST(18791.727914106479/8.0), | ||
9861 | REAL_CONST(18807.340523882274/8.0), | ||
9862 | REAL_CONST(18822.95637446981/8.0), | ||
9863 | REAL_CONST(18838.575464524489/8.0), | ||
9864 | REAL_CONST(18854.197792703111/8.0), | ||
9865 | REAL_CONST(18869.823357663863/8.0), | ||
9866 | REAL_CONST(18885.452158066328/8.0), | ||
9867 | REAL_CONST(18901.08419257147/8.0), | ||
9868 | REAL_CONST(18916.719459841639/8.0), | ||
9869 | REAL_CONST(18932.357958540564/8.0), | ||
9870 | REAL_CONST(18947.999687333362/8.0), | ||
9871 | REAL_CONST(18963.644644886521/8.0), | ||
9872 | REAL_CONST(18979.292829867907/8.0), | ||
9873 | REAL_CONST(18994.944240946759/8.0), | ||
9874 | REAL_CONST(19010.598876793687/8.0), | ||
9875 | REAL_CONST(19026.256736080668/8.0), | ||
9876 | REAL_CONST(19041.917817481048/8.0), | ||
9877 | REAL_CONST(19057.582119669532/8.0), | ||
9878 | REAL_CONST(19073.2496413222/8.0), | ||
9879 | REAL_CONST(19088.920381116473/8.0), | ||
9880 | REAL_CONST(19104.594337731145/8.0), | ||
9881 | REAL_CONST(19120.271509846356/8.0), | ||
9882 | REAL_CONST(19135.951896143604/8.0), | ||
9883 | REAL_CONST(19151.635495305738/8.0), | ||
9884 | REAL_CONST(19167.322306016948/8.0), | ||
9885 | REAL_CONST(19183.012326962784/8.0), | ||
9886 | REAL_CONST(19198.705556830122/8.0), | ||
9887 | REAL_CONST(19214.401994307198/8.0), | ||
9888 | REAL_CONST(19230.101638083579/8.0), | ||
9889 | REAL_CONST(19245.804486850167/8.0), | ||
9890 | REAL_CONST(19261.510539299208/8.0), | ||
9891 | REAL_CONST(19277.219794124274/8.0), | ||
9892 | REAL_CONST(19292.932250020265/8.0), | ||
9893 | REAL_CONST(19308.647905683421/8.0), | ||
9894 | REAL_CONST(19324.366759811302/8.0), | ||
9895 | REAL_CONST(19340.088811102793/8.0), | ||
9896 | REAL_CONST(19355.8140582581/8.0), | ||
9897 | REAL_CONST(19371.542499978754/8.0), | ||
9898 | REAL_CONST(19387.2741349676/8.0), | ||
9899 | REAL_CONST(19403.008961928797/8.0), | ||
9900 | REAL_CONST(19418.746979567823/8.0), | ||
9901 | REAL_CONST(19434.488186591469/8.0), | ||
9902 | REAL_CONST(19450.232581707827/8.0), | ||
9903 | REAL_CONST(19465.980163626304/8.0), | ||
9904 | REAL_CONST(19481.730931057613/8.0), | ||
9905 | REAL_CONST(19497.484882713761/8.0), | ||
9906 | REAL_CONST(19513.242017308068/8.0), | ||
9907 | REAL_CONST(19529.002333555141/8.0), | ||
9908 | REAL_CONST(19544.765830170898/8.0), | ||
9909 | REAL_CONST(19560.532505872539/8.0), | ||
9910 | REAL_CONST(19576.302359378566/8.0), | ||
9911 | REAL_CONST(19592.075389408761/8.0), | ||
9912 | REAL_CONST(19607.851594684209/8.0), | ||
9913 | REAL_CONST(19623.630973927269/8.0), | ||
9914 | REAL_CONST(19639.41352586159/8.0), | ||
9915 | REAL_CONST(19655.199249212103/8.0), | ||
9916 | REAL_CONST(19670.988142705017/8.0), | ||
9917 | REAL_CONST(19686.780205067826/8.0), | ||
9918 | REAL_CONST(19702.575435029288/8.0), | ||
9919 | REAL_CONST(19718.373831319448/8.0), | ||
9920 | REAL_CONST(19734.175392669615/8.0), | ||
9921 | REAL_CONST(19749.980117812371/8.0), | ||
9922 | REAL_CONST(19765.788005481569/8.0), | ||
9923 | REAL_CONST(19781.599054412323/8.0), | ||
9924 | REAL_CONST(19797.413263341008/8.0), | ||
9925 | REAL_CONST(19813.230631005274/8.0), | ||
9926 | REAL_CONST(19829.051156144014/8.0), | ||
9927 | REAL_CONST(19844.874837497395/8.0), | ||
9928 | REAL_CONST(19860.701673806827/8.0), | ||
9929 | REAL_CONST(19876.531663814985/8.0), | ||
9930 | REAL_CONST(19892.364806265789/8.0), | ||
9931 | REAL_CONST(19908.201099904403/8.0), | ||
9932 | REAL_CONST(19924.040543477258/8.0), | ||
9933 | REAL_CONST(19939.883135732012/8.0), | ||
9934 | REAL_CONST(19955.728875417579/8.0), | ||
9935 | REAL_CONST(19971.577761284105/8.0), | ||
9936 | REAL_CONST(19987.429792082985/8.0), | ||
9937 | REAL_CONST(20003.284966566847/8.0), | ||
9938 | REAL_CONST(20019.14328348956/8.0), | ||
9939 | REAL_CONST(20035.004741606219/8.0), | ||
9940 | REAL_CONST(20050.869339673161/8.0), | ||
9941 | REAL_CONST(20066.737076447946/8.0), | ||
9942 | REAL_CONST(20082.607950689362/8.0), | ||
9943 | REAL_CONST(20098.481961157428/8.0), | ||
9944 | REAL_CONST(20114.359106613385/8.0), | ||
9945 | REAL_CONST(20130.239385819699/8.0), | ||
9946 | REAL_CONST(20146.122797540058/8.0), | ||
9947 | REAL_CONST(20162.009340539353/8.0), | ||
9948 | REAL_CONST(20177.899013583716/8.0), | ||
9949 | REAL_CONST(20193.791815440476/8.0), | ||
9950 | REAL_CONST(20209.687744878182/8.0), | ||
9951 | REAL_CONST(20225.586800666591/8.0), | ||
9952 | REAL_CONST(20241.488981576669/8.0), | ||
9953 | REAL_CONST(20257.394286380597/8.0), | ||
9954 | REAL_CONST(20273.302713851754/8.0), | ||
9955 | REAL_CONST(20289.214262764715/8.0), | ||
9956 | REAL_CONST(20305.128931895277/8.0), | ||
9957 | REAL_CONST(20321.046720020415/8.0), | ||
9958 | REAL_CONST(20336.967625918318/8.0), | ||
9959 | REAL_CONST(20352.891648368361/8.0), | ||
9960 | REAL_CONST(20368.818786151114/8.0), | ||
9961 | REAL_CONST(20384.749038048347/8.0), | ||
9962 | REAL_CONST(20400.682402843009/8.0), | ||
9963 | REAL_CONST(20416.618879319249/8.0), | ||
9964 | REAL_CONST(20432.558466262391/8.0), | ||
9965 | REAL_CONST(20448.501162458953/8.0), | ||
9966 | REAL_CONST(20464.446966696629/8.0), | ||
9967 | REAL_CONST(20480.395877764302/8.0), | ||
9968 | REAL_CONST(20496.347894452025/8.0), | ||
9969 | REAL_CONST(20512.303015551031/8.0), | ||
9970 | REAL_CONST(20528.261239853735/8.0), | ||
9971 | REAL_CONST(20544.22256615372/8.0), | ||
9972 | REAL_CONST(20560.186993245738/8.0), | ||
9973 | REAL_CONST(20576.15451992572/8.0), | ||
9974 | REAL_CONST(20592.125144990758/8.0), | ||
9975 | REAL_CONST(20608.098867239107/8.0), | ||
9976 | REAL_CONST(20624.075685470198/8.0), | ||
9977 | REAL_CONST(20640.055598484618/8.0), | ||
9978 | REAL_CONST(20656.038605084115/8.0), | ||
9979 | REAL_CONST(20672.024704071595/8.0), | ||
9980 | REAL_CONST(20688.013894251126/8.0), | ||
9981 | REAL_CONST(20704.006174427926/8.0), | ||
9982 | REAL_CONST(20720.001543408373/8.0), | ||
9983 | REAL_CONST(20735.999999999989/8.0), | ||
9984 | REAL_CONST(20752.001543011454/8.0), | ||
9985 | REAL_CONST(20768.006171252597/8.0), | ||
9986 | REAL_CONST(20784.013883534382/8.0), | ||
9987 | REAL_CONST(20800.024678668931/8.0), | ||
9988 | REAL_CONST(20816.038555469506/8.0), | ||
9989 | REAL_CONST(20832.055512750507/8.0), | ||
9990 | REAL_CONST(20848.075549327474/8.0), | ||
9991 | REAL_CONST(20864.098664017085/8.0), | ||
9992 | REAL_CONST(20880.124855637161/8.0), | ||
9993 | REAL_CONST(20896.154123006647/8.0), | ||
9994 | REAL_CONST(20912.186464945626/8.0), | ||
9995 | REAL_CONST(20928.221880275312/8.0), | ||
9996 | REAL_CONST(20944.260367818049/8.0), | ||
9997 | REAL_CONST(20960.301926397311/8.0), | ||
9998 | REAL_CONST(20976.346554837684/8.0), | ||
9999 | REAL_CONST(20992.394251964895/8.0), | ||
10000 | REAL_CONST(21008.445016605787/8.0), | ||
10001 | REAL_CONST(21024.498847588318/8.0), | ||
10002 | REAL_CONST(21040.555743741574/8.0), | ||
10003 | REAL_CONST(21056.615703895754/8.0), | ||
10004 | REAL_CONST(21072.678726882168/8.0), | ||
10005 | REAL_CONST(21088.744811533252/8.0), | ||
10006 | REAL_CONST(21104.813956682538/8.0), | ||
10007 | REAL_CONST(21120.886161164683/8.0), | ||
10008 | REAL_CONST(21136.961423815443/8.0), | ||
10009 | REAL_CONST(21153.039743471683/8.0), | ||
10010 | REAL_CONST(21169.121118971379/8.0), | ||
10011 | REAL_CONST(21185.205549153605/8.0), | ||
10012 | REAL_CONST(21201.293032858535/8.0), | ||
10013 | REAL_CONST(21217.383568927453/8.0), | ||
10014 | REAL_CONST(21233.477156202731/8.0), | ||
10015 | REAL_CONST(21249.573793527841/8.0), | ||
10016 | REAL_CONST(21265.673479747358/8.0), | ||
10017 | REAL_CONST(21281.776213706937/8.0), | ||
10018 | REAL_CONST(21297.881994253334/8.0), | ||
10019 | REAL_CONST(21313.990820234398/8.0), | ||
10020 | REAL_CONST(21330.102690499054/8.0), | ||
10021 | REAL_CONST(21346.21760389733/8.0), | ||
10022 | REAL_CONST(21362.335559280327/8.0), | ||
10023 | REAL_CONST(21378.456555500241/8.0), | ||
10024 | REAL_CONST(21394.580591410333/8.0), | ||
10025 | REAL_CONST(21410.707665864964/8.0), | ||
10026 | REAL_CONST(21426.83777771956/8.0), | ||
10027 | REAL_CONST(21442.970925830628/8.0), | ||
10028 | REAL_CONST(21459.107109055756/8.0), | ||
10029 | REAL_CONST(21475.246326253604/8.0), | ||
10030 | REAL_CONST(21491.388576283895/8.0), | ||
10031 | REAL_CONST(21507.533858007431/8.0), | ||
10032 | REAL_CONST(21523.682170286087/8.0), | ||
10033 | REAL_CONST(21539.833511982797/8.0), | ||
10034 | REAL_CONST(21555.987881961566/8.0), | ||
10035 | REAL_CONST(21572.145279087465/8.0), | ||
10036 | REAL_CONST(21588.305702226615/8.0), | ||
10037 | REAL_CONST(21604.469150246216/8.0), | ||
10038 | REAL_CONST(21620.635622014521/8.0), | ||
10039 | REAL_CONST(21636.805116400832/8.0), | ||
10040 | REAL_CONST(21652.977632275521/8.0), | ||
10041 | REAL_CONST(21669.153168510009/8.0), | ||
10042 | REAL_CONST(21685.331723976764/8.0), | ||
10043 | REAL_CONST(21701.513297549318/8.0), | ||
10044 | REAL_CONST(21717.697888102244/8.0), | ||
10045 | REAL_CONST(21733.885494511167/8.0), | ||
10046 | REAL_CONST(21750.076115652759/8.0), | ||
10047 | REAL_CONST(21766.269750404736/8.0), | ||
10048 | REAL_CONST(21782.466397645861/8.0), | ||
10049 | REAL_CONST(21798.666056255934/8.0), | ||
10050 | REAL_CONST(21814.868725115801/8.0), | ||
10051 | REAL_CONST(21831.074403107345/8.0), | ||
10052 | REAL_CONST(21847.283089113484/8.0), | ||
10053 | REAL_CONST(21863.494782018177/8.0), | ||
10054 | REAL_CONST(21879.709480706417/8.0), | ||
10055 | REAL_CONST(21895.927184064229/8.0), | ||
10056 | REAL_CONST(21912.147890978667/8.0), | ||
10057 | REAL_CONST(21928.371600337818/8.0), | ||
10058 | REAL_CONST(21944.598311030797/8.0), | ||
10059 | REAL_CONST(21960.828021947746/8.0), | ||
10060 | REAL_CONST(21977.060731979829/8.0), | ||
10061 | REAL_CONST(21993.296440019243/8.0), | ||
10062 | REAL_CONST(22009.535144959198/8.0), | ||
10063 | REAL_CONST(22025.77684569393/8.0), | ||
10064 | REAL_CONST(22042.021541118691/8.0), | ||
10065 | REAL_CONST(22058.269230129757/8.0), | ||
10066 | REAL_CONST(22074.519911624411/8.0), | ||
10067 | REAL_CONST(22090.773584500959/8.0), | ||
10068 | REAL_CONST(22107.030247658717/8.0), | ||
10069 | REAL_CONST(22123.289899998013/8.0), | ||
10070 | REAL_CONST(22139.552540420187/8.0), | ||
10071 | REAL_CONST(22155.818167827587/8.0), | ||
10072 | REAL_CONST(22172.086781123569/8.0), | ||
10073 | REAL_CONST(22188.358379212495/8.0), | ||
10074 | REAL_CONST(22204.632960999726/8.0), | ||
10075 | REAL_CONST(22220.910525391639/8.0), | ||
10076 | REAL_CONST(22237.191071295601/8.0), | ||
10077 | REAL_CONST(22253.474597619981/8.0), | ||
10078 | REAL_CONST(22269.761103274148/8.0), | ||
10079 | REAL_CONST(22286.050587168469/8.0), | ||
10080 | REAL_CONST(22302.343048214312/8.0), | ||
10081 | REAL_CONST(22318.638485324027/8.0), | ||
10082 | REAL_CONST(22334.936897410968/8.0), | ||
10083 | REAL_CONST(22351.23828338947/8.0), | ||
10084 | REAL_CONST(22367.542642174871/8.0), | ||
10085 | REAL_CONST(22383.849972683485/8.0), | ||
10086 | REAL_CONST(22400.160273832618/8.0), | ||
10087 | REAL_CONST(22416.473544540564/8.0), | ||
10088 | REAL_CONST(22432.789783726603/8.0), | ||
10089 | REAL_CONST(22449.108990310986/8.0), | ||
10090 | REAL_CONST(22465.431163214958/8.0), | ||
10091 | REAL_CONST(22481.75630136074/8.0), | ||
10092 | REAL_CONST(22498.084403671528/8.0), | ||
10093 | REAL_CONST(22514.415469071497/8.0), | ||
10094 | REAL_CONST(22530.749496485802/8.0), | ||
10095 | REAL_CONST(22547.086484840562/8.0), | ||
10096 | REAL_CONST(22563.426433062879/8.0), | ||
10097 | REAL_CONST(22579.769340080824/8.0), | ||
10098 | REAL_CONST(22596.115204823436/8.0), | ||
10099 | REAL_CONST(22612.464026220721/8.0), | ||
10100 | REAL_CONST(22628.815803203655/8.0), | ||
10101 | REAL_CONST(22645.170534704179/8.0), | ||
10102 | REAL_CONST(22661.5282196552/8.0), | ||
10103 | REAL_CONST(22677.888856990587/8.0), | ||
10104 | REAL_CONST(22694.252445645168/8.0), | ||
10105 | REAL_CONST(22710.618984554734/8.0), | ||
10106 | REAL_CONST(22726.988472656034/8.0), | ||
10107 | REAL_CONST(22743.360908886778/8.0), | ||
10108 | REAL_CONST(22759.736292185622/8.0), | ||
10109 | REAL_CONST(22776.114621492186/8.0), | ||
10110 | REAL_CONST(22792.495895747044/8.0), | ||
10111 | REAL_CONST(22808.880113891719/8.0), | ||
10112 | REAL_CONST(22825.267274868678/8.0), | ||
10113 | REAL_CONST(22841.657377621348/8.0), | ||
10114 | REAL_CONST(22858.050421094096/8.0), | ||
10115 | REAL_CONST(22874.446404232243/8.0), | ||
10116 | REAL_CONST(22890.845325982053/8.0), | ||
10117 | REAL_CONST(22907.247185290722/8.0), | ||
10118 | REAL_CONST(22923.651981106406/8.0), | ||
10119 | REAL_CONST(22940.059712378195/8.0), | ||
10120 | REAL_CONST(22956.470378056114/8.0), | ||
10121 | REAL_CONST(22972.883977091129/8.0), | ||
10122 | REAL_CONST(22989.300508435153/8.0), | ||
10123 | REAL_CONST(23005.719971041017/8.0), | ||
10124 | REAL_CONST(23022.142363862498/8.0), | ||
10125 | REAL_CONST(23038.567685854305/8.0), | ||
10126 | REAL_CONST(23054.995935972078/8.0), | ||
10127 | REAL_CONST(23071.427113172387/8.0), | ||
10128 | REAL_CONST(23087.86121641273/8.0), | ||
10129 | REAL_CONST(23104.298244651531/8.0), | ||
10130 | REAL_CONST(23120.738196848146/8.0), | ||
10131 | REAL_CONST(23137.181071962848/8.0), | ||
10132 | REAL_CONST(23153.626868956846/8.0), | ||
10133 | REAL_CONST(23170.075586792263/8.0), | ||
10134 | REAL_CONST(23186.527224432142/8.0), | ||
10135 | REAL_CONST(23202.981780840448/8.0), | ||
10136 | REAL_CONST(23219.439254982066/8.0), | ||
10137 | REAL_CONST(23235.899645822796/8.0), | ||
10138 | REAL_CONST(23252.362952329357/8.0), | ||
10139 | REAL_CONST(23268.829173469378/8.0), | ||
10140 | REAL_CONST(23285.298308211408/8.0), | ||
10141 | REAL_CONST(23301.770355524899/8.0), | ||
10142 | REAL_CONST(23318.245314380223/8.0), | ||
10143 | REAL_CONST(23334.723183748658/8.0), | ||
10144 | REAL_CONST(23351.203962602387/8.0), | ||
10145 | REAL_CONST(23367.687649914504/8.0), | ||
10146 | REAL_CONST(23384.174244659007/8.0), | ||
10147 | REAL_CONST(23400.663745810798/8.0), | ||
10148 | REAL_CONST(23417.15615234568/8.0), | ||
10149 | REAL_CONST(23433.651463240367/8.0), | ||
10150 | REAL_CONST(23450.149677472462/8.0), | ||
10151 | REAL_CONST(23466.650794020472/8.0), | ||
10152 | REAL_CONST(23483.154811863806/8.0), | ||
10153 | REAL_CONST(23499.661729982763/8.0), | ||
10154 | REAL_CONST(23516.171547358543/8.0), | ||
10155 | REAL_CONST(23532.684262973235/8.0), | ||
10156 | REAL_CONST(23549.199875809823/8.0), | ||
10157 | REAL_CONST(23565.718384852185/8.0), | ||
10158 | REAL_CONST(23582.239789085092/8.0), | ||
10159 | REAL_CONST(23598.764087494197/8.0), | ||
10160 | REAL_CONST(23615.291279066041/8.0), | ||
10161 | REAL_CONST(23631.821362788058/8.0), | ||
10162 | REAL_CONST(23648.354337648565/8.0), | ||
10163 | REAL_CONST(23664.890202636761/8.0), | ||
10164 | REAL_CONST(23681.428956742733/8.0), | ||
10165 | REAL_CONST(23697.970598957443/8.0), | ||
10166 | REAL_CONST(23714.515128272738/8.0), | ||
10167 | REAL_CONST(23731.062543681343/8.0), | ||
10168 | REAL_CONST(23747.612844176863/8.0), | ||
10169 | REAL_CONST(23764.166028753778/8.0), | ||
10170 | REAL_CONST(23780.72209640744/8.0), | ||
10171 | REAL_CONST(23797.281046134085/8.0), | ||
10172 | REAL_CONST(23813.842876930816/8.0), | ||
10173 | REAL_CONST(23830.407587795606/8.0), | ||
10174 | REAL_CONST(23846.975177727301/8.0), | ||
10175 | REAL_CONST(23863.545645725622/8.0), | ||
10176 | REAL_CONST(23880.11899079115/8.0), | ||
10177 | REAL_CONST(23896.695211925336/8.0), | ||
10178 | REAL_CONST(23913.274308130498/8.0), | ||
10179 | REAL_CONST(23929.856278409821/8.0), | ||
10180 | REAL_CONST(23946.441121767348/8.0), | ||
10181 | REAL_CONST(23963.028837207989/8.0), | ||
10182 | REAL_CONST(23979.619423737513/8.0), | ||
10183 | REAL_CONST(23996.212880362549/8.0), | ||
10184 | REAL_CONST(24012.809206090584/8.0), | ||
10185 | REAL_CONST(24029.408399929966/8.0), | ||
10186 | REAL_CONST(24046.010460889898/8.0), | ||
10187 | REAL_CONST(24062.615387980433/8.0), | ||
10188 | REAL_CONST(24079.223180212492/8.0), | ||
10189 | REAL_CONST(24095.833836597827/8.0), | ||
10190 | REAL_CONST(24112.447356149063/8.0), | ||
10191 | REAL_CONST(24129.063737879667/8.0), | ||
10192 | REAL_CONST(24145.682980803951/8.0), | ||
10193 | REAL_CONST(24162.305083937081/8.0), | ||
10194 | REAL_CONST(24178.930046295067/8.0), | ||
10195 | REAL_CONST(24195.557866894767/8.0), | ||
10196 | REAL_CONST(24212.188544753884/8.0), | ||
10197 | REAL_CONST(24228.822078890964/8.0), | ||
10198 | REAL_CONST(24245.458468325389/8.0), | ||
10199 | REAL_CONST(24262.097712077397/8.0), | ||
10200 | REAL_CONST(24278.739809168052/8.0), | ||
10201 | REAL_CONST(24295.384758619261/8.0), | ||
10202 | REAL_CONST(24312.032559453768/8.0), | ||
10203 | REAL_CONST(24328.683210695162/8.0), | ||
10204 | REAL_CONST(24345.336711367858/8.0), | ||
10205 | REAL_CONST(24361.993060497109/8.0), | ||
10206 | REAL_CONST(24378.652257108995/8.0), | ||
10207 | REAL_CONST(24395.314300230442/8.0), | ||
10208 | REAL_CONST(24411.979188889192/8.0), | ||
10209 | REAL_CONST(24428.646922113825/8.0), | ||
10210 | REAL_CONST(24445.317498933746/8.0), | ||
10211 | REAL_CONST(24461.990918379193/8.0), | ||
10212 | REAL_CONST(24478.667179481225/8.0), | ||
10213 | REAL_CONST(24495.346281271726/8.0), | ||
10214 | REAL_CONST(24512.028222783407/8.0), | ||
10215 | REAL_CONST(24528.713003049801/8.0), | ||
10216 | REAL_CONST(24545.400621105266/8.0), | ||
10217 | REAL_CONST(24562.091075984976/8.0), | ||
10218 | REAL_CONST(24578.784366724925/8.0), | ||
10219 | REAL_CONST(24595.480492361927/8.0), | ||
10220 | REAL_CONST(24612.179451933614/8.0), | ||
10221 | REAL_CONST(24628.881244478438/8.0), | ||
10222 | REAL_CONST(24645.585869035654/8.0), | ||
10223 | REAL_CONST(24662.293324645343/8.0), | ||
10224 | REAL_CONST(24679.003610348394/8.0), | ||
10225 | REAL_CONST(24695.716725186514/8.0), | ||
10226 | REAL_CONST(24712.432668202211/8.0), | ||
10227 | REAL_CONST(24729.151438438807/8.0), | ||
10228 | REAL_CONST(24745.873034940436/8.0), | ||
10229 | REAL_CONST(24762.597456752032/8.0), | ||
10230 | REAL_CONST(24779.324702919344/8.0), | ||
10231 | REAL_CONST(24796.054772488926/8.0), | ||
10232 | REAL_CONST(24812.787664508123/8.0), | ||
10233 | REAL_CONST(24829.5233780251/8.0), | ||
10234 | REAL_CONST(24846.261912088819/8.0), | ||
10235 | REAL_CONST(24863.003265749034/8.0), | ||
10236 | REAL_CONST(24879.747438056307/8.0), | ||
10237 | REAL_CONST(24896.494428062004/8.0), | ||
10238 | REAL_CONST(24913.244234818278/8.0), | ||
10239 | REAL_CONST(24929.996857378079/8.0), | ||
10240 | REAL_CONST(24946.752294795166/8.0), | ||
10241 | REAL_CONST(24963.510546124078/8.0), | ||
10242 | REAL_CONST(24980.271610420157/8.0), | ||
10243 | REAL_CONST(24997.035486739525/8.0), | ||
10244 | REAL_CONST(25013.802174139113/8.0), | ||
10245 | REAL_CONST(25030.571671676629/8.0), | ||
10246 | REAL_CONST(25047.343978410572/8.0), | ||
10247 | REAL_CONST(25064.119093400237/8.0), | ||
10248 | REAL_CONST(25080.897015705697/8.0), | ||
10249 | REAL_CONST(25097.677744387816/8.0), | ||
10250 | REAL_CONST(25114.461278508239/8.0), | ||
10251 | REAL_CONST(25131.2476171294/8.0), | ||
10252 | REAL_CONST(25148.036759314517/8.0), | ||
10253 | REAL_CONST(25164.828704127583/8.0), | ||
10254 | REAL_CONST(25181.623450633375/8.0), | ||
10255 | REAL_CONST(25198.42099789745/8.0), | ||
10256 | REAL_CONST(25215.221344986145/8.0), | ||
10257 | REAL_CONST(25232.024490966574/8.0), | ||
10258 | REAL_CONST(25248.830434906627/8.0), | ||
10259 | REAL_CONST(25265.639175874974/8.0), | ||
10260 | REAL_CONST(25282.450712941049/8.0), | ||
10261 | REAL_CONST(25299.265045175071/8.0), | ||
10262 | REAL_CONST(25316.082171648024/8.0), | ||
10263 | REAL_CONST(25332.902091431668/8.0), | ||
10264 | REAL_CONST(25349.724803598532/8.0), | ||
10265 | REAL_CONST(25366.550307221914/8.0), | ||
10266 | REAL_CONST(25383.378601375884/8.0), | ||
10267 | REAL_CONST(25400.209685135269/8.0), | ||
10268 | REAL_CONST(25417.043557575678/8.0), | ||
10269 | REAL_CONST(25433.880217773472/8.0), | ||
10270 | REAL_CONST(25450.719664805783/8.0), | ||
10271 | REAL_CONST(25467.561897750507/8.0), | ||
10272 | REAL_CONST(25484.406915686297/8.0), | ||
10273 | REAL_CONST(25501.254717692573/8.0), | ||
10274 | REAL_CONST(25518.105302849512/8.0), | ||
10275 | REAL_CONST(25534.958670238051/8.0), | ||
10276 | REAL_CONST(25551.814818939893/8.0), | ||
10277 | REAL_CONST(25568.67374803748/8.0), | ||
10278 | REAL_CONST(25585.535456614027/8.0), | ||
10279 | REAL_CONST(25602.399943753502/8.0), | ||
10280 | REAL_CONST(25619.267208540619/8.0), | ||
10281 | REAL_CONST(25636.137250060852/8.0), | ||
10282 | REAL_CONST(25653.010067400432/8.0), | ||
10283 | REAL_CONST(25669.885659646327/8.0), | ||
10284 | REAL_CONST(25686.76402588627/8.0), | ||
10285 | REAL_CONST(25703.645165208734/8.0), | ||
10286 | REAL_CONST(25720.529076702944/8.0), | ||
10287 | REAL_CONST(25737.415759458876/8.0), | ||
10288 | REAL_CONST(25754.305212567244/8.0), | ||
10289 | REAL_CONST(25771.197435119517/8.0), | ||
10290 | REAL_CONST(25788.092426207899/8.0), | ||
10291 | REAL_CONST(25804.990184925344/8.0), | ||
10292 | REAL_CONST(25821.890710365547/8.0), | ||
10293 | REAL_CONST(25838.794001622944/8.0), | ||
10294 | REAL_CONST(25855.700057792714/8.0), | ||
10295 | REAL_CONST(25872.608877970775/8.0), | ||
10296 | REAL_CONST(25889.520461253778/8.0), | ||
10297 | REAL_CONST(25906.434806739118/8.0), | ||
10298 | REAL_CONST(25923.351913524923/8.0), | ||
10299 | REAL_CONST(25940.271780710063/8.0), | ||
10300 | REAL_CONST(25957.194407394138/8.0), | ||
10301 | REAL_CONST(25974.11979267748/8.0), | ||
10302 | REAL_CONST(25991.047935661154/8.0), | ||
10303 | REAL_CONST(26007.978835446964/8.0), | ||
10304 | REAL_CONST(26024.912491137442/8.0), | ||
10305 | REAL_CONST(26041.848901835841/8.0), | ||
10306 | REAL_CONST(26058.788066646157/8.0), | ||
10307 | REAL_CONST(26075.729984673108/8.0), | ||
10308 | REAL_CONST(26092.674655022136/8.0), | ||
10309 | REAL_CONST(26109.622076799409/8.0), | ||
10310 | REAL_CONST(26126.572249111829/8.0), | ||
10311 | REAL_CONST(26143.525171067016/8.0), | ||
10312 | REAL_CONST(26160.480841773315/8.0), | ||
10313 | REAL_CONST(26177.43926033979/8.0), | ||
10314 | REAL_CONST(26194.400425876229/8.0), | ||
10315 | REAL_CONST(26211.364337493149/8.0), | ||
10316 | REAL_CONST(26228.330994301767/8.0), | ||
10317 | REAL_CONST(26245.30039541404/8.0), | ||
10318 | REAL_CONST(26262.272539942627/8.0), | ||
10319 | REAL_CONST(26279.247427000919/8.0), | ||
10320 | REAL_CONST(26296.225055703002/8.0), | ||
10321 | REAL_CONST(26313.205425163702/8.0), | ||
10322 | REAL_CONST(26330.188534498539/8.0), | ||
10323 | REAL_CONST(26347.174382823756/8.0), | ||
10324 | REAL_CONST(26364.162969256304/8.0), | ||
10325 | REAL_CONST(26381.154292913852/8.0), | ||
10326 | REAL_CONST(26398.148352914774/8.0), | ||
10327 | REAL_CONST(26415.145148378149/8.0), | ||
10328 | REAL_CONST(26432.144678423778/8.0), | ||
10329 | REAL_CONST(26449.146942172156/8.0), | ||
10330 | REAL_CONST(26466.151938744493/8.0), | ||
10331 | REAL_CONST(26483.159667262702/8.0), | ||
10332 | REAL_CONST(26500.170126849403/8.0), | ||
10333 | REAL_CONST(26517.183316627921/8.0), | ||
10334 | REAL_CONST(26534.199235722277/8.0), | ||
10335 | REAL_CONST(26551.217883257199/8.0), | ||
10336 | REAL_CONST(26568.239258358124/8.0), | ||
10337 | REAL_CONST(26585.263360151173/8.0), | ||
10338 | REAL_CONST(26602.290187763181/8.0), | ||
10339 | REAL_CONST(26619.319740321676/8.0), | ||
10340 | REAL_CONST(26636.352016954883/8.0), | ||
10341 | REAL_CONST(26653.387016791727/8.0), | ||
10342 | REAL_CONST(26670.424738961825/8.0), | ||
10343 | REAL_CONST(26687.465182595493/8.0), | ||
10344 | REAL_CONST(26704.508346823739/8.0), | ||
10345 | REAL_CONST(26721.554230778267/8.0), | ||
10346 | REAL_CONST(26738.602833591467/8.0), | ||
10347 | REAL_CONST(26755.65415439643/8.0), | ||
10348 | REAL_CONST(26772.708192326929/8.0), | ||
10349 | REAL_CONST(26789.764946517433/8.0), | ||
10350 | REAL_CONST(26806.824416103096/8.0), | ||
10351 | REAL_CONST(26823.886600219761/8.0), | ||
10352 | REAL_CONST(26840.95149800396/8.0), | ||
10353 | REAL_CONST(26858.019108592915/8.0), | ||
10354 | REAL_CONST(26875.089431124517/8.0), | ||
10355 | REAL_CONST(26892.162464737365/8.0), | ||
10356 | REAL_CONST(26909.238208570721/8.0), | ||
10357 | REAL_CONST(26926.316661764544/8.0), | ||
10358 | REAL_CONST(26943.397823459472/8.0), | ||
10359 | REAL_CONST(26960.481692796813/8.0), | ||
10360 | REAL_CONST(26977.568268918571/8.0), | ||
10361 | REAL_CONST(26994.657550967422/8.0), | ||
10362 | REAL_CONST(27011.749538086722/8.0), | ||
10363 | REAL_CONST(27028.844229420498/8.0), | ||
10364 | REAL_CONST(27045.941624113464/8.0), | ||
10365 | REAL_CONST(27063.041721311005/8.0), | ||
10366 | REAL_CONST(27080.144520159181/8.0), | ||
10367 | REAL_CONST(27097.250019804727/8.0), | ||
10368 | REAL_CONST(27114.35821939505/8.0), | ||
10369 | REAL_CONST(27131.469118078236/8.0), | ||
10370 | REAL_CONST(27148.582715003027/8.0), | ||
10371 | REAL_CONST(27165.699009318858/8.0), | ||
10372 | REAL_CONST(27182.818000175819/8.0), | ||
10373 | REAL_CONST(27199.939686724665/8.0), | ||
10374 | REAL_CONST(27217.064068116837/8.0), | ||
10375 | REAL_CONST(27234.191143504428/8.0), | ||
10376 | REAL_CONST(27251.320912040203/8.0), | ||
10377 | REAL_CONST(27268.453372877593/8.0), | ||
10378 | REAL_CONST(27285.588525170693/8.0), | ||
10379 | REAL_CONST(27302.726368074269/8.0), | ||
10380 | REAL_CONST(27319.866900743735/8.0), | ||
10381 | REAL_CONST(27337.010122335181/8.0), | ||
10382 | REAL_CONST(27354.156032005358/8.0), | ||
10383 | REAL_CONST(27371.304628911668/8.0), | ||
10384 | REAL_CONST(27388.455912212183/8.0), | ||
10385 | REAL_CONST(27405.609881065626/8.0), | ||
10386 | REAL_CONST(27422.766534631384/8.0), | ||
10387 | REAL_CONST(27439.925872069507/8.0), | ||
10388 | REAL_CONST(27457.087892540683/8.0), | ||
10389 | REAL_CONST(27474.252595206275/8.0), | ||
10390 | REAL_CONST(27491.419979228293/8.0), | ||
10391 | REAL_CONST(27508.5900437694/8.0), | ||
10392 | REAL_CONST(27525.762787992917/8.0), | ||
10393 | REAL_CONST(27542.93821106281/8.0), | ||
10394 | REAL_CONST(27560.116312143706/8.0), | ||
10395 | REAL_CONST(27577.297090400876/8.0), | ||
10396 | REAL_CONST(27594.480545000242/8.0), | ||
10397 | REAL_CONST(27611.666675108383/8.0), | ||
10398 | REAL_CONST(27628.855479892518/8.0), | ||
10399 | REAL_CONST(27646.046958520514/8.0), | ||
10400 | REAL_CONST(27663.241110160889/8.0), | ||
10401 | REAL_CONST(27680.437933982801/8.0), | ||
10402 | REAL_CONST(27697.637429156068/8.0), | ||
10403 | REAL_CONST(27714.839594851132/8.0), | ||
10404 | REAL_CONST(27732.04443023909/8.0), | ||
10405 | REAL_CONST(27749.251934491687/8.0), | ||
10406 | REAL_CONST(27766.462106781299/8.0), | ||
10407 | REAL_CONST(27783.674946280949/8.0), | ||
10408 | REAL_CONST(27800.890452164302/8.0), | ||
10409 | REAL_CONST(27818.108623605654/8.0), | ||
10410 | REAL_CONST(27835.329459779954/8.0), | ||
10411 | REAL_CONST(27852.55295986278/8.0), | ||
10412 | REAL_CONST(27869.779123030345/8.0), | ||
10413 | REAL_CONST(27887.007948459504/8.0), | ||
10414 | REAL_CONST(27904.239435327745/8.0), | ||
10415 | REAL_CONST(27921.473582813196/8.0), | ||
10416 | REAL_CONST(27938.710390094613/8.0), | ||
10417 | REAL_CONST(27955.949856351392/8.0), | ||
10418 | REAL_CONST(27973.19198076355/8.0), | ||
10419 | REAL_CONST(27990.436762511745/8.0), | ||
10420 | REAL_CONST(28007.684200777272/8.0), | ||
10421 | REAL_CONST(28024.934294742041/8.0), | ||
10422 | REAL_CONST(28042.187043588601/8.0), | ||
10423 | REAL_CONST(28059.442446500128/8.0), | ||
10424 | REAL_CONST(28076.700502660427/8.0), | ||
10425 | REAL_CONST(28093.961211253929/8.0), | ||
10426 | REAL_CONST(28111.224571465693/8.0), | ||
10427 | REAL_CONST(28128.490582481401/8.0), | ||
10428 | REAL_CONST(28145.759243487362/8.0), | ||
10429 | REAL_CONST(28163.030553670509/8.0), | ||
10430 | REAL_CONST(28180.304512218394/8.0), | ||
10431 | REAL_CONST(28197.581118319198/8.0), | ||
10432 | REAL_CONST(28214.860371161725/8.0), | ||
10433 | REAL_CONST(28232.14226993539/8.0), | ||
10434 | REAL_CONST(28249.42681383024/8.0), | ||
10435 | REAL_CONST(28266.71400203693/8.0), | ||
10436 | REAL_CONST(28284.003833746745/8.0), | ||
10437 | REAL_CONST(28301.296308151585/8.0), | ||
10438 | REAL_CONST(28318.591424443959/8.0), | ||
10439 | REAL_CONST(28335.889181817001/8.0), | ||
10440 | REAL_CONST(28353.189579464462/8.0), | ||
10441 | REAL_CONST(28370.492616580705/8.0), | ||
10442 | REAL_CONST(28387.798292360701/8.0), | ||
10443 | REAL_CONST(28405.106606000048/8.0), | ||
10444 | REAL_CONST(28422.417556694945/8.0), | ||
10445 | REAL_CONST(28439.731143642206/8.0), | ||
10446 | REAL_CONST(28457.047366039264/8.0), | ||
10447 | REAL_CONST(28474.366223084147/8.0), | ||
10448 | REAL_CONST(28491.687713975512/8.0), | ||
10449 | REAL_CONST(28509.011837912611/8.0), | ||
10450 | REAL_CONST(28526.338594095305/8.0), | ||
10451 | REAL_CONST(28543.667981724069/8.0), | ||
10452 | REAL_CONST(28560.999999999982/8.0), | ||
10453 | REAL_CONST(28578.334648124732/8.0), | ||
10454 | REAL_CONST(28595.671925300605/8.0), | ||
10455 | REAL_CONST(28613.011830730498/8.0), | ||
10456 | REAL_CONST(28630.354363617909/8.0), | ||
10457 | REAL_CONST(28647.699523166943/8.0), | ||
10458 | REAL_CONST(28665.0473085823/8.0), | ||
10459 | REAL_CONST(28682.397719069289/8.0), | ||
10460 | REAL_CONST(28699.750753833818/8.0), | ||
10461 | REAL_CONST(28717.10641208239/8.0), | ||
10462 | REAL_CONST(28734.464693022121/8.0), | ||
10463 | REAL_CONST(28751.825595860708/8.0), | ||
10464 | REAL_CONST(28769.189119806462/8.0), | ||
10465 | REAL_CONST(28786.55526406828/8.0), | ||
10466 | REAL_CONST(28803.924027855664/8.0), | ||
10467 | REAL_CONST(28821.295410378701/8.0), | ||
10468 | REAL_CONST(28838.669410848088/8.0), | ||
10469 | REAL_CONST(28856.046028475103/8.0), | ||
10470 | REAL_CONST(28873.425262471628/8.0), | ||
10471 | REAL_CONST(28890.80711205013/8.0), | ||
10472 | REAL_CONST(28908.191576423673/8.0), | ||
10473 | REAL_CONST(28925.578654805915/8.0), | ||
10474 | REAL_CONST(28942.968346411097/8.0), | ||
10475 | REAL_CONST(28960.360650454055/8.0), | ||
10476 | REAL_CONST(28977.755566150216/8.0), | ||
10477 | REAL_CONST(28995.153092715591/8.0), | ||
10478 | REAL_CONST(29012.553229366786/8.0), | ||
10479 | REAL_CONST(29029.955975320987/8.0), | ||
10480 | REAL_CONST(29047.361329795975/8.0), | ||
10481 | REAL_CONST(29064.769292010107/8.0), | ||
10482 | REAL_CONST(29082.179861182336/8.0), | ||
10483 | REAL_CONST(29099.593036532187/8.0), | ||
10484 | REAL_CONST(29117.00881727978/8.0), | ||
10485 | REAL_CONST(29134.427202645813/8.0), | ||
10486 | REAL_CONST(29151.848191851568/8.0), | ||
10487 | REAL_CONST(29169.271784118911/8.0), | ||
10488 | REAL_CONST(29186.697978670283/8.0), | ||
10489 | REAL_CONST(29204.126774728706/8.0), | ||
10490 | REAL_CONST(29221.55817151779/8.0), | ||
10491 | REAL_CONST(29238.992168261717/8.0), | ||
10492 | REAL_CONST(29256.42876418525/8.0), | ||
10493 | REAL_CONST(29273.867958513725/8.0), | ||
10494 | REAL_CONST(29291.309750473058/8.0), | ||
10495 | REAL_CONST(29308.754139289747/8.0), | ||
10496 | REAL_CONST(29326.201124190855/8.0), | ||
10497 | REAL_CONST(29343.65070440403/8.0), | ||
10498 | REAL_CONST(29361.102879157483/8.0), | ||
10499 | REAL_CONST(29378.557647680012/8.0), | ||
10500 | REAL_CONST(29396.015009200975/8.0), | ||
10501 | REAL_CONST(29413.474962950309/8.0), | ||
10502 | REAL_CONST(29430.937508158524/8.0), | ||
10503 | REAL_CONST(29448.402644056692/8.0), | ||
10504 | REAL_CONST(29465.870369876469/8.0), | ||
10505 | REAL_CONST(29483.340684850071/8.0), | ||
10506 | REAL_CONST(29500.81358821028/8.0), | ||
10507 | REAL_CONST(29518.289079190454/8.0), | ||
10508 | REAL_CONST(29535.767157024511/8.0), | ||
10509 | REAL_CONST(29553.247820946945/8.0), | ||
10510 | REAL_CONST(29570.731070192807/8.0), | ||
10511 | REAL_CONST(29588.216903997723/8.0), | ||
10512 | REAL_CONST(29605.70532159787/8.0), | ||
10513 | REAL_CONST(29623.19632223/8.0), | ||
10514 | REAL_CONST(29640.689905131429/8.0), | ||
10515 | REAL_CONST(29658.186069540028/8.0), | ||
10516 | REAL_CONST(29675.684814694236/8.0), | ||
10517 | REAL_CONST(29693.186139833047/8.0), | ||
10518 | REAL_CONST(29710.690044196028/8.0), | ||
10519 | REAL_CONST(29728.196527023298/8.0), | ||
10520 | REAL_CONST(29745.705587555527/8.0), | ||
10521 | REAL_CONST(29763.217225033964/8.0), | ||
10522 | REAL_CONST(29780.731438700397/8.0), | ||
10523 | REAL_CONST(29798.248227797183/8.0), | ||
10524 | REAL_CONST(29815.76759156723/8.0), | ||
10525 | REAL_CONST(29833.289529254005/8.0), | ||
10526 | REAL_CONST(29850.81404010153/8.0), | ||
10527 | REAL_CONST(29868.341123354381/8.0), | ||
10528 | REAL_CONST(29885.870778257693/8.0), | ||
10529 | REAL_CONST(29903.403004057145/8.0), | ||
10530 | REAL_CONST(29920.937799998974/8.0), | ||
10531 | REAL_CONST(29938.475165329975/8.0), | ||
10532 | REAL_CONST(29956.015099297485/8.0), | ||
10533 | REAL_CONST(29973.557601149394/8.0), | ||
10534 | REAL_CONST(29991.102670134147/8.0), | ||
10535 | REAL_CONST(30008.650305500738/8.0), | ||
10536 | REAL_CONST(30026.200506498706/8.0), | ||
10537 | REAL_CONST(30043.753272378144/8.0), | ||
10538 | REAL_CONST(30061.308602389683/8.0), | ||
10539 | REAL_CONST(30078.866495784507/8.0), | ||
10540 | REAL_CONST(30096.426951814352/8.0), | ||
10541 | REAL_CONST(30113.989969731494/8.0), | ||
10542 | REAL_CONST(30131.55554878875/8.0), | ||
10543 | REAL_CONST(30149.123688239491/8.0), | ||
10544 | REAL_CONST(30166.694387337629/8.0), | ||
10545 | REAL_CONST(30184.267645337608/8.0), | ||
10546 | REAL_CONST(30201.843461494434/8.0), | ||
10547 | REAL_CONST(30219.42183506364/8.0), | ||
10548 | REAL_CONST(30237.002765301309/8.0), | ||
10549 | REAL_CONST(30254.586251464058/8.0), | ||
10550 | REAL_CONST(30272.172292809046/8.0), | ||
10551 | REAL_CONST(30289.760888593977/8.0), | ||
10552 | REAL_CONST(30307.35203807709/8.0), | ||
10553 | REAL_CONST(30324.94574051716/8.0), | ||
10554 | REAL_CONST(30342.541995173502/8.0), | ||
10555 | REAL_CONST(30360.140801305966/8.0), | ||
10556 | REAL_CONST(30377.742158174944/8.0), | ||
10557 | REAL_CONST(30395.346065041358/8.0), | ||
10558 | REAL_CONST(30412.952521166666/8.0), | ||
10559 | REAL_CONST(30430.561525812864/8.0), | ||
10560 | REAL_CONST(30448.173078242475/8.0), | ||
10561 | REAL_CONST(30465.787177718561/8.0), | ||
10562 | REAL_CONST(30483.403823504719/8.0), | ||
10563 | REAL_CONST(30501.02301486507/8.0), | ||
10564 | REAL_CONST(30518.644751064272/8.0), | ||
10565 | REAL_CONST(30536.269031367516/8.0), | ||
10566 | REAL_CONST(30553.895855040515/8.0), | ||
10567 | REAL_CONST(30571.525221349519/8.0), | ||
10568 | REAL_CONST(30589.157129561307/8.0), | ||
10569 | REAL_CONST(30606.791578943175/8.0), | ||
10570 | REAL_CONST(30624.428568762964/8.0), | ||
10571 | REAL_CONST(30642.06809828903/8.0), | ||
10572 | REAL_CONST(30659.710166790261/8.0), | ||
10573 | REAL_CONST(30677.35477353607/8.0), | ||
10574 | REAL_CONST(30695.001917796391/8.0), | ||
10575 | REAL_CONST(30712.651598841687/8.0), | ||
10576 | REAL_CONST(30730.303815942945/8.0), | ||
10577 | REAL_CONST(30747.958568371676/8.0), | ||
10578 | REAL_CONST(30765.615855399912/8.0), | ||
10579 | REAL_CONST(30783.275676300211/8.0), | ||
10580 | REAL_CONST(30800.938030345646/8.0), | ||
10581 | REAL_CONST(30818.602916809814/8.0), | ||
10582 | REAL_CONST(30836.270334966837/8.0), | ||
10583 | REAL_CONST(30853.940284091354/8.0), | ||
10584 | REAL_CONST(30871.612763458521/8.0), | ||
10585 | REAL_CONST(30889.287772344011/8.0), | ||
10586 | REAL_CONST(30906.965310024025/8.0), | ||
10587 | REAL_CONST(30924.645375775272/8.0), | ||
10588 | REAL_CONST(30942.327968874983/8.0), | ||
10589 | REAL_CONST(30960.013088600903/8.0), | ||
10590 | REAL_CONST(30977.700734231294/8.0), | ||
10591 | REAL_CONST(30995.390905044929/8.0), | ||
10592 | REAL_CONST(31013.083600321101/8.0), | ||
10593 | REAL_CONST(31030.778819339619/8.0), | ||
10594 | REAL_CONST(31048.476561380798/8.0), | ||
10595 | REAL_CONST(31066.17682572547/8.0), | ||
10596 | REAL_CONST(31083.879611654978/8.0), | ||
10597 | REAL_CONST(31101.584918451179/8.0), | ||
10598 | REAL_CONST(31119.29274539644/8.0), | ||
10599 | REAL_CONST(31137.003091773637/8.0), | ||
10600 | REAL_CONST(31154.715956866155/8.0), | ||
10601 | REAL_CONST(31172.431339957893/8.0), | ||
10602 | REAL_CONST(31190.14924033326/8.0), | ||
10603 | REAL_CONST(31207.869657277162/8.0), | ||
10604 | REAL_CONST(31225.592590075023/8.0), | ||
10605 | REAL_CONST(31243.318038012771/8.0), | ||
10606 | REAL_CONST(31261.046000376838/8.0), | ||
10607 | REAL_CONST(31278.776476454172/8.0), | ||
10608 | REAL_CONST(31296.50946553221/8.0), | ||
10609 | REAL_CONST(31314.24496689891/8.0), | ||
10610 | REAL_CONST(31331.98297984272/8.0), | ||
10611 | REAL_CONST(31349.7235036526/8.0), | ||
10612 | REAL_CONST(31367.466537618013/8.0), | ||
10613 | REAL_CONST(31385.212081028923/8.0), | ||
10614 | REAL_CONST(31402.960133175795/8.0), | ||
10615 | REAL_CONST(31420.710693349596/8.0), | ||
10616 | REAL_CONST(31438.463760841791/8.0), | ||
10617 | REAL_CONST(31456.219334944351/8.0), | ||
10618 | REAL_CONST(31473.977414949743/8.0), | ||
10619 | REAL_CONST(31491.738000150934/8.0), | ||
10620 | REAL_CONST(31509.501089841389/8.0), | ||
10621 | REAL_CONST(31527.266683315069/8.0), | ||
10622 | REAL_CONST(31545.034779866437/8.0), | ||
10623 | REAL_CONST(31562.80537879045/8.0), | ||
10624 | REAL_CONST(31580.578479382562/8.0), | ||
10625 | REAL_CONST(31598.35408093872/8.0), | ||
10626 | REAL_CONST(31616.132182755369/8.0), | ||
10627 | REAL_CONST(31633.91278412945/8.0), | ||
10628 | REAL_CONST(31651.695884358396/8.0), | ||
10629 | REAL_CONST(31669.481482740131/8.0), | ||
10630 | REAL_CONST(31687.269578573076/8.0), | ||
10631 | REAL_CONST(31705.060171156143/8.0), | ||
10632 | REAL_CONST(31722.853259788735/8.0), | ||
10633 | REAL_CONST(31740.648843770748/8.0), | ||
10634 | REAL_CONST(31758.446922402567/8.0), | ||
10635 | REAL_CONST(31776.247494985066/8.0), | ||
10636 | REAL_CONST(31794.050560819614/8.0), | ||
10637 | REAL_CONST(31811.85611920806/8.0), | ||
10638 | REAL_CONST(31829.664169452753/8.0), | ||
10639 | REAL_CONST(31847.474710856521/8.0), | ||
10640 | REAL_CONST(31865.287742722685/8.0), | ||
10641 | REAL_CONST(31883.103264355046/8.0), | ||
10642 | REAL_CONST(31900.921275057899/8.0), | ||
10643 | REAL_CONST(31918.741774136019/8.0), | ||
10644 | REAL_CONST(31936.564760894671/8.0), | ||
10645 | REAL_CONST(31954.390234639599/8.0), | ||
10646 | REAL_CONST(31972.21819467704/8.0), | ||
10647 | REAL_CONST(31990.048640313704/8.0), | ||
10648 | REAL_CONST(32007.881570856793/8.0), | ||
10649 | REAL_CONST(32025.716985613984/8.0), | ||
10650 | REAL_CONST(32043.554883893445/8.0), | ||
10651 | REAL_CONST(32061.395265003815/8.0), | ||
10652 | REAL_CONST(32079.238128254223/8.0), | ||
10653 | REAL_CONST(32097.083472954269/8.0), | ||
10654 | REAL_CONST(32114.931298414049/8.0), | ||
10655 | REAL_CONST(32132.781603944117/8.0), | ||
10656 | REAL_CONST(32150.634388855524/8.0), | ||
10657 | REAL_CONST(32168.48965245979/8.0), | ||
10658 | REAL_CONST(32186.347394068915/8.0), | ||
10659 | REAL_CONST(32204.207612995371/8.0), | ||
10660 | REAL_CONST(32222.07030855212/8.0), | ||
10661 | REAL_CONST(32239.935480052583/8.0), | ||
10662 | REAL_CONST(32257.803126810672/8.0), | ||
10663 | REAL_CONST(32275.673248140767/8.0), | ||
10664 | REAL_CONST(32293.545843357719/8.0), | ||
10665 | REAL_CONST(32311.420911776862/8.0), | ||
10666 | REAL_CONST(32329.298452713996/8.0), | ||
10667 | REAL_CONST(32347.178465485395/8.0), | ||
10668 | REAL_CONST(32365.060949407813/8.0), | ||
10669 | REAL_CONST(32382.945903798463/8.0), | ||
10670 | REAL_CONST(32400.83332797504/8.0), | ||
10671 | REAL_CONST(32418.723221255706/8.0), | ||
10672 | REAL_CONST(32436.615582959093/8.0), | ||
10673 | REAL_CONST(32454.510412404306/8.0), | ||
10674 | REAL_CONST(32472.407708910916/8.0), | ||
10675 | REAL_CONST(32490.307471798966/8.0), | ||
10676 | REAL_CONST(32508.209700388961/8.0), | ||
10677 | REAL_CONST(32526.114394001877/8.0), | ||
10678 | REAL_CONST(32544.021551959166/8.0), | ||
10679 | REAL_CONST(32561.931173582732/8.0), | ||
10680 | REAL_CONST(32579.843258194956/8.0), | ||
10681 | REAL_CONST(32597.757805118679/8.0), | ||
10682 | REAL_CONST(32615.674813677211/8.0), | ||
10683 | REAL_CONST(32633.594283194328/8.0), | ||
10684 | REAL_CONST(32651.516212994258/8.0), | ||
10685 | REAL_CONST(32669.440602401712/8.0), | ||
10686 | REAL_CONST(32687.367450741847/8.0), | ||
10687 | REAL_CONST(32705.296757340297/8.0), | ||
10688 | REAL_CONST(32723.228521523146/8.0), | ||
10689 | REAL_CONST(32741.162742616943/8.0), | ||
10690 | REAL_CONST(32759.099419948703/8.0), | ||
10691 | REAL_CONST(32777.038552845901/8.0), | ||
10692 | REAL_CONST(32794.980140636464/8.0), | ||
10693 | REAL_CONST(32812.924182648792/8.0), | ||
10694 | REAL_CONST(32830.87067821173/8.0), | ||
10695 | REAL_CONST(32848.819626654593/8.0), | ||
10696 | REAL_CONST(32866.77102730715/8.0), | ||
10697 | REAL_CONST(32884.724879499619/8.0), | ||
10698 | REAL_CONST(32902.681182562686/8.0), | ||
10699 | REAL_CONST(32920.639935827494/8.0), | ||
10700 | REAL_CONST(32938.601138625643/8.0), | ||
10701 | REAL_CONST(32956.56479028918/8.0), | ||
10702 | REAL_CONST(32974.530890150607/8.0), | ||
10703 | REAL_CONST(32992.499437542894/8.0), | ||
10704 | REAL_CONST(33010.470431799447/8.0), | ||
10705 | REAL_CONST(33028.443872254145/8.0), | ||
10706 | REAL_CONST(33046.419758241311/8.0), | ||
10707 | REAL_CONST(33064.39808909571/8.0), | ||
10708 | REAL_CONST(33082.378864152583/8.0), | ||
10709 | REAL_CONST(33100.36208274759/8.0), | ||
10710 | REAL_CONST(33118.347744216881/8.0), | ||
10711 | REAL_CONST(33136.335847897026/8.0), | ||
10712 | REAL_CONST(33154.326393125062/8.0), | ||
10713 | REAL_CONST(33172.31937923847/8.0), | ||
10714 | REAL_CONST(33190.314805575174/8.0), | ||
10715 | REAL_CONST(33208.312671473555/8.0), | ||
10716 | REAL_CONST(33226.312976272442/8.0), | ||
10717 | REAL_CONST(33244.315719311111/8.0), | ||
10718 | REAL_CONST(33262.320899929284/8.0), | ||
10719 | REAL_CONST(33280.328517467125/8.0), | ||
10720 | REAL_CONST(33298.33857126526/8.0), | ||
10721 | REAL_CONST(33316.351060664747/8.0), | ||
10722 | REAL_CONST(33334.365985007091/8.0), | ||
10723 | REAL_CONST(33352.383343634239/8.0), | ||
10724 | REAL_CONST(33370.403135888591/8.0), | ||
10725 | REAL_CONST(33388.42536111299/8.0), | ||
10726 | REAL_CONST(33406.450018650721/8.0), | ||
10727 | REAL_CONST(33424.477107845501/8.0), | ||
10728 | REAL_CONST(33442.506628041512/8.0), | ||
10729 | REAL_CONST(33460.53857858335/8.0), | ||
10730 | REAL_CONST(33478.572958816083/8.0), | ||
10731 | REAL_CONST(33496.609768085189/8.0), | ||
10732 | REAL_CONST(33514.649005736617/8.0), | ||
10733 | REAL_CONST(33532.690671116739/8.0), | ||
10734 | REAL_CONST(33550.734763572356/8.0), | ||
10735 | REAL_CONST(33568.781282450735/8.0), | ||
10736 | REAL_CONST(33586.830227099563/8.0), | ||
10737 | REAL_CONST(33604.881596866973/8.0), | ||
10738 | REAL_CONST(33622.935391101528/8.0), | ||
10739 | REAL_CONST(33640.991609152239/8.0), | ||
10740 | REAL_CONST(33659.050250368542/8.0), | ||
10741 | REAL_CONST(33677.111314100322/8.0), | ||
10742 | REAL_CONST(33695.174799697881/8.0), | ||
10743 | REAL_CONST(33713.240706511984/8.0), | ||
10744 | REAL_CONST(33731.309033893805/8.0), | ||
10745 | REAL_CONST(33749.37978119497/8.0), | ||
10746 | REAL_CONST(33767.452947767531/8.0), | ||
10747 | REAL_CONST(33785.528532963974/8.0), | ||
10748 | REAL_CONST(33803.606536137209/8.0), | ||
10749 | REAL_CONST(33821.686956640602/8.0), | ||
10750 | REAL_CONST(33839.769793827938/8.0), | ||
10751 | REAL_CONST(33857.855047053425/8.0), | ||
10752 | REAL_CONST(33875.942715671707/8.0), | ||
10753 | REAL_CONST(33894.032799037872/8.0), | ||
10754 | REAL_CONST(33912.125296507431/8.0), | ||
10755 | REAL_CONST(33930.220207436316/8.0), | ||
10756 | REAL_CONST(33948.317531180888/8.0), | ||
10757 | REAL_CONST(33966.417267097961/8.0), | ||
10758 | REAL_CONST(33984.519414544746/8.0), | ||
10759 | REAL_CONST(34002.623972878901/8.0), | ||
10760 | REAL_CONST(34020.730941458511/8.0), | ||
10761 | REAL_CONST(34038.840319642077/8.0), | ||
10762 | REAL_CONST(34056.952106788536/8.0), | ||
10763 | REAL_CONST(34075.066302257255/8.0), | ||
10764 | REAL_CONST(34093.182905408015/8.0), | ||
10765 | REAL_CONST(34111.301915601027/8.0), | ||
10766 | REAL_CONST(34129.42333219693/8.0), | ||
10767 | REAL_CONST(34147.547154556785/8.0), | ||
10768 | REAL_CONST(34165.673382042078/8.0), | ||
10769 | REAL_CONST(34183.80201401472/8.0), | ||
10770 | REAL_CONST(34201.933049837033/8.0), | ||
10771 | REAL_CONST(34220.06648887178/8.0), | ||
10772 | REAL_CONST(34238.202330482141/8.0), | ||
10773 | REAL_CONST(34256.340574031703/8.0), | ||
10774 | REAL_CONST(34274.481218884495/8.0), | ||
10775 | REAL_CONST(34292.624264404949/8.0), | ||
10776 | REAL_CONST(34310.769709957938/8.0), | ||
10777 | REAL_CONST(34328.91755490873/8.0), | ||
10778 | REAL_CONST(34347.067798623029/8.0), | ||
10779 | REAL_CONST(34365.220440466954/8.0), | ||
10780 | REAL_CONST(34383.375479807051/8.0), | ||
10781 | REAL_CONST(34401.532916010263/8.0), | ||
10782 | REAL_CONST(34419.692748443973/8.0), | ||
10783 | REAL_CONST(34437.854976475966/8.0), | ||
10784 | REAL_CONST(34456.01959947445/8.0), | ||
10785 | REAL_CONST(34474.18661680806/8.0), | ||
10786 | REAL_CONST(34492.356027845817/8.0), | ||
10787 | REAL_CONST(34510.527831957188/8.0), | ||
10788 | REAL_CONST(34528.702028512052/8.0), | ||
10789 | REAL_CONST(34546.878616880676/8.0), | ||
10790 | REAL_CONST(34565.05759643377/8.0), | ||
10791 | REAL_CONST(34583.238966542449/8.0), | ||
10792 | REAL_CONST(34601.422726578232/8.0), | ||
10793 | REAL_CONST(34619.608875913065/8.0), | ||
10794 | REAL_CONST(34637.797413919296/8.0), | ||
10795 | REAL_CONST(34655.988339969692/8.0), | ||
10796 | REAL_CONST(34674.181653437423/8.0), | ||
10797 | REAL_CONST(34692.37735369608/8.0), | ||
10798 | REAL_CONST(34710.575440119668/8.0), | ||
10799 | REAL_CONST(34728.775912082579/8.0), | ||
10800 | REAL_CONST(34746.978768959649/8.0), | ||
10801 | REAL_CONST(34765.184010126082/8.0), | ||
10802 | REAL_CONST(34783.391634957537/8.0), | ||
10803 | REAL_CONST(34801.60164283005/8.0), | ||
10804 | REAL_CONST(34819.814033120063/8.0), | ||
10805 | REAL_CONST(34838.028805204456/8.0), | ||
10806 | REAL_CONST(34856.24595846048/8.0), | ||
10807 | REAL_CONST(34874.465492265823/8.0), | ||
10808 | REAL_CONST(34892.687405998557/8.0), | ||
10809 | REAL_CONST(34910.911699037177/8.0), | ||
10810 | REAL_CONST(34929.138370760564/8.0), | ||
10811 | REAL_CONST(34947.367420548027/8.0), | ||
10812 | REAL_CONST(34965.598847779271/8.0), | ||
10813 | REAL_CONST(34983.832651834389/8.0), | ||
10814 | REAL_CONST(35002.068832093908/8.0), | ||
10815 | REAL_CONST(35020.307387938738/8.0), | ||
10816 | REAL_CONST(35038.548318750189/8.0), | ||
10817 | REAL_CONST(35056.79162390998/8.0), | ||
10818 | REAL_CONST(35075.03730280025/8.0), | ||
10819 | REAL_CONST(35093.285354803513/8.0), | ||
10820 | REAL_CONST(35111.535779302685/8.0), | ||
10821 | REAL_CONST(35129.788575681116/8.0), | ||
10822 | REAL_CONST(35148.043743322516/8.0), | ||
10823 | REAL_CONST(35166.301281611013/8.0), | ||
10824 | REAL_CONST(35184.561189931141/8.0), | ||
10825 | REAL_CONST(35202.823467667826/8.0), | ||
10826 | REAL_CONST(35221.088114206388/8.0), | ||
10827 | REAL_CONST(35239.355128932555/8.0), | ||
10828 | REAL_CONST(35257.624511232447/8.0), | ||
10829 | REAL_CONST(35275.896260492584/8.0), | ||
10830 | REAL_CONST(35294.170376099886/8.0), | ||
10831 | REAL_CONST(35312.446857441668/8.0), | ||
10832 | REAL_CONST(35330.725703905628/8.0), | ||
10833 | REAL_CONST(35349.006914879887/8.0), | ||
10834 | REAL_CONST(35367.290489752944/8.0), | ||
10835 | REAL_CONST(35385.576427913686/8.0), | ||
10836 | REAL_CONST(35403.864728751418/8.0), | ||
10837 | REAL_CONST(35422.155391655811/8.0), | ||
10838 | REAL_CONST(35440.448416016967/8.0), | ||
10839 | REAL_CONST(35458.743801225341/8.0), | ||
10840 | REAL_CONST(35477.041546671804/8.0), | ||
10841 | REAL_CONST(35495.341651747622/8.0), | ||
10842 | REAL_CONST(35513.644115844436/8.0), | ||
10843 | REAL_CONST(35531.948938354304/8.0), | ||
10844 | REAL_CONST(35550.256118669655/8.0), | ||
10845 | REAL_CONST(35568.565656183309/8.0), | ||
10846 | REAL_CONST(35586.877550288496/8.0), | ||
10847 | REAL_CONST(35605.191800378816/8.0), | ||
10848 | REAL_CONST(35623.508405848268/8.0), | ||
10849 | REAL_CONST(35641.827366091238/8.0), | ||
10850 | REAL_CONST(35660.148680502505/8.0), | ||
10851 | REAL_CONST(35678.472348477233/8.0), | ||
10852 | REAL_CONST(35696.798369410979/8.0), | ||
10853 | REAL_CONST(35715.126742699678/8.0), | ||
10854 | REAL_CONST(35733.457467739659/8.0), | ||
10855 | REAL_CONST(35751.790543927644/8.0), | ||
10856 | REAL_CONST(35770.125970660738/8.0), | ||
10857 | REAL_CONST(35788.46374733642/8.0), | ||
10858 | REAL_CONST(35806.803873352568/8.0), | ||
10859 | REAL_CONST(35825.146348107453/8.0), | ||
10860 | REAL_CONST(35843.49117099971/8.0), | ||
10861 | REAL_CONST(35861.838341428367/8.0), | ||
10862 | REAL_CONST(35880.187858792851/8.0), | ||
10863 | REAL_CONST(35898.539722492955/8.0), | ||
10864 | REAL_CONST(35916.893931928862/8.0), | ||
10865 | REAL_CONST(35935.250486501129/8.0), | ||
10866 | REAL_CONST(35953.609385610718/8.0), | ||
10867 | REAL_CONST(35971.970628658957/8.0), | ||
10868 | REAL_CONST(35990.334215047558/8.0), | ||
10869 | REAL_CONST(36008.700144178612/8.0), | ||
10870 | REAL_CONST(36027.068415454596/8.0), | ||
10871 | REAL_CONST(36045.439028278372/8.0), | ||
10872 | REAL_CONST(36063.811982053165/8.0), | ||
10873 | REAL_CONST(36082.187276182609/8.0), | ||
10874 | REAL_CONST(36100.564910070694/8.0), | ||
10875 | REAL_CONST(36118.944883121789/8.0), | ||
10876 | REAL_CONST(36137.327194740654/8.0), | ||
10877 | REAL_CONST(36155.711844332429/8.0), | ||
10878 | REAL_CONST(36174.098831302617/8.0), | ||
10879 | REAL_CONST(36192.488155057115/8.0), | ||
10880 | REAL_CONST(36210.87981500219/8.0), | ||
10881 | REAL_CONST(36229.273810544473/8.0), | ||
10882 | REAL_CONST(36247.670141091003/8.0), | ||
10883 | REAL_CONST(36266.068806049167/8.0), | ||
10884 | REAL_CONST(36284.469804826738/8.0), | ||
10885 | REAL_CONST(36302.873136831862/8.0), | ||
10886 | REAL_CONST(36321.278801473069/8.0), | ||
10887 | REAL_CONST(36339.686798159251/8.0), | ||
10888 | REAL_CONST(36358.097126299683/8.0), | ||
10889 | REAL_CONST(36376.509785304013/8.0), | ||
10890 | REAL_CONST(36394.924774582258/8.0), | ||
10891 | REAL_CONST(36413.342093544816/8.0), | ||
10892 | REAL_CONST(36431.761741602444/8.0), | ||
10893 | REAL_CONST(36450.183718166292/8.0), | ||
10894 | REAL_CONST(36468.608022647859/8.0), | ||
10895 | REAL_CONST(36487.034654459028/8.0), | ||
10896 | REAL_CONST(36505.463613012063/8.0), | ||
10897 | REAL_CONST(36523.894897719583/8.0), | ||
10898 | REAL_CONST(36542.328507994578/8.0), | ||
10899 | REAL_CONST(36560.764443250409/8.0), | ||
10900 | REAL_CONST(36579.202702900831/8.0), | ||
10901 | REAL_CONST(36597.643286359926/8.0), | ||
10902 | REAL_CONST(36616.086193042182/8.0), | ||
10903 | REAL_CONST(36634.531422362437/8.0), | ||
10904 | REAL_CONST(36652.978973735895/8.0), | ||
10905 | REAL_CONST(36671.428846578143/8.0), | ||
10906 | REAL_CONST(36689.881040305125/8.0), | ||
10907 | REAL_CONST(36708.335554333149/8.0), | ||
10908 | REAL_CONST(36726.792388078902/8.0), | ||
10909 | REAL_CONST(36745.251540959427/8.0), | ||
10910 | REAL_CONST(36763.713012392138/8.0), | ||
10911 | REAL_CONST(36782.176801794812/8.0), | ||
10912 | REAL_CONST(36800.642908585593/8.0), | ||
10913 | REAL_CONST(36819.111332182983/8.0), | ||
10914 | REAL_CONST(36837.582072005869/8.0), | ||
10915 | REAL_CONST(36856.055127473483/8.0), | ||
10916 | REAL_CONST(36874.530498005421/8.0), | ||
10917 | REAL_CONST(36893.008183021651/8.0), | ||
10918 | REAL_CONST(36911.488181942506/8.0), | ||
10919 | REAL_CONST(36929.970494188674/8.0), | ||
10920 | REAL_CONST(36948.455119181206/8.0), | ||
10921 | REAL_CONST(36966.942056341519/8.0), | ||
10922 | REAL_CONST(36985.431305091392/8.0), | ||
10923 | REAL_CONST(37003.922864852961/8.0), | ||
10924 | REAL_CONST(37022.416735048733/8.0), | ||
10925 | REAL_CONST(37040.912915101559/8.0), | ||
10926 | REAL_CONST(37059.411404434657/8.0), | ||
10927 | REAL_CONST(37077.91220247162/8.0), | ||
10928 | REAL_CONST(37096.415308636388/8.0), | ||
10929 | REAL_CONST(37114.920722353243/8.0), | ||
10930 | REAL_CONST(37133.428443046862/8.0), | ||
10931 | REAL_CONST(37151.938470142253/8.0), | ||
10932 | REAL_CONST(37170.450803064785/8.0), | ||
10933 | REAL_CONST(37188.965441240209/8.0), | ||
10934 | REAL_CONST(37207.482384094597/8.0), | ||
10935 | REAL_CONST(37226.001631054402/8.0), | ||
10936 | REAL_CONST(37244.523181546429/8.0), | ||
10937 | REAL_CONST(37263.047034997842/8.0), | ||
10938 | REAL_CONST(37281.573190836149/8.0), | ||
10939 | REAL_CONST(37300.101648489224/8.0), | ||
10940 | REAL_CONST(37318.632407385296/8.0), | ||
10941 | REAL_CONST(37337.165466952945/8.0), | ||
10942 | REAL_CONST(37355.700826621112/8.0), | ||
10943 | REAL_CONST(37374.238485819085/8.0), | ||
10944 | REAL_CONST(37392.778443976509/8.0), | ||
10945 | REAL_CONST(37411.320700523385/8.0), | ||
10946 | REAL_CONST(37429.865254890057/8.0), | ||
10947 | REAL_CONST(37448.412106507232/8.0), | ||
10948 | REAL_CONST(37466.961254805974/8.0), | ||
10949 | REAL_CONST(37485.512699217681/8.0), | ||
10950 | REAL_CONST(37504.066439174116/8.0), | ||
10951 | REAL_CONST(37522.622474107404/8.0), | ||
10952 | REAL_CONST(37541.180803449992/8.0), | ||
10953 | REAL_CONST(37559.741426634704/8.0), | ||
10954 | REAL_CONST(37578.304343094693/8.0), | ||
10955 | REAL_CONST(37596.869552263488/8.0), | ||
10956 | REAL_CONST(37615.43705357494/8.0), | ||
10957 | REAL_CONST(37634.006846463279/8.0), | ||
10958 | REAL_CONST(37652.578930363044/8.0), | ||
10959 | REAL_CONST(37671.153304709165/8.0), | ||
10960 | REAL_CONST(37689.729968936896/8.0), | ||
10961 | REAL_CONST(37708.308922481847/8.0), | ||
10962 | REAL_CONST(37726.890164779965/8.0), | ||
10963 | REAL_CONST(37745.473695267559/8.0), | ||
10964 | REAL_CONST(37764.059513381275/8.0), | ||
10965 | REAL_CONST(37782.647618558112/8.0), | ||
10966 | REAL_CONST(37801.238010235415/8.0), | ||
10967 | REAL_CONST(37819.830687850859/8.0), | ||
10968 | REAL_CONST(37838.425650842495/8.0), | ||
10969 | REAL_CONST(37857.022898648691/8.0), | ||
10970 | REAL_CONST(37875.622430708172/8.0), | ||
10971 | REAL_CONST(37894.224246460013/8.0), | ||
10972 | REAL_CONST(37912.828345343616/8.0), | ||
10973 | REAL_CONST(37931.434726798747/8.0), | ||
10974 | REAL_CONST(37950.043390265506/8.0), | ||
10975 | REAL_CONST(37968.654335184328/8.0), | ||
10976 | REAL_CONST(37987.267560995999/8.0), | ||
10977 | REAL_CONST(38005.883067141665/8.0), | ||
10978 | REAL_CONST(38024.500853062775/8.0), | ||
10979 | REAL_CONST(38043.120918201159/8.0), | ||
10980 | REAL_CONST(38061.743261998963/8.0), | ||
10981 | REAL_CONST(38080.367883898682/8.0), | ||
10982 | REAL_CONST(38098.994783343158/8.0), | ||
10983 | REAL_CONST(38117.623959775563/8.0), | ||
10984 | REAL_CONST(38136.255412639417/8.0), | ||
10985 | REAL_CONST(38154.889141378575/8.0), | ||
10986 | REAL_CONST(38173.525145437234/8.0), | ||
10987 | REAL_CONST(38192.163424259939/8.0), | ||
10988 | REAL_CONST(38210.803977291551/8.0), | ||
10989 | REAL_CONST(38229.446803977284/8.0), | ||
10990 | REAL_CONST(38248.091903762703/8.0), | ||
10991 | REAL_CONST(38266.739276093685/8.0), | ||
10992 | REAL_CONST(38285.388920416466/8.0), | ||
10993 | REAL_CONST(38304.040836177606/8.0), | ||
10994 | REAL_CONST(38322.695022824002/8.0), | ||
10995 | REAL_CONST(38341.351479802899/8.0), | ||
10996 | REAL_CONST(38360.010206561863/8.0), | ||
10997 | REAL_CONST(38378.671202548816/8.0), | ||
10998 | REAL_CONST(38397.334467211993/8.0), | ||
10999 | REAL_CONST(38415.999999999978/8.0), | ||
11000 | REAL_CONST(38434.667800361683/8.0), | ||
11001 | REAL_CONST(38453.33786774637/8.0), | ||
11002 | REAL_CONST(38472.010201603611/8.0), | ||
11003 | REAL_CONST(38490.684801383337/8.0), | ||
11004 | REAL_CONST(38509.361666535784/8.0), | ||
11005 | REAL_CONST(38528.040796511552/8.0), | ||
11006 | REAL_CONST(38546.722190761553/8.0), | ||
11007 | REAL_CONST(38565.405848737035/8.0), | ||
11008 | REAL_CONST(38584.091769889594/8.0), | ||
11009 | REAL_CONST(38602.779953671132/8.0), | ||
11010 | REAL_CONST(38621.470399533908/8.0), | ||
11011 | REAL_CONST(38640.163106930493/8.0), | ||
11012 | REAL_CONST(38658.858075313794/8.0), | ||
11013 | REAL_CONST(38677.555304137059/8.0), | ||
11014 | REAL_CONST(38696.254792853862/8.0), | ||
11015 | REAL_CONST(38714.956540918094/8.0), | ||
11016 | REAL_CONST(38733.660547783991/8.0), | ||
11017 | REAL_CONST(38752.366812906112/8.0), | ||
11018 | REAL_CONST(38771.075335739348/8.0), | ||
11019 | REAL_CONST(38789.78611573892/8.0), | ||
11020 | REAL_CONST(38808.499152360368/8.0), | ||
11021 | REAL_CONST(38827.214445059573/8.0), | ||
11022 | REAL_CONST(38845.931993292739/8.0), | ||
11023 | REAL_CONST(38864.651796516388/8.0), | ||
11024 | REAL_CONST(38883.373854187383/8.0), | ||
11025 | REAL_CONST(38902.098165762916/8.0), | ||
11026 | REAL_CONST(38920.824730700486/8.0), | ||
11027 | REAL_CONST(38939.553548457938/8.0), | ||
11028 | REAL_CONST(38958.284618493431/8.0), | ||
11029 | REAL_CONST(38977.017940265461/8.0), | ||
11030 | REAL_CONST(38995.753513232834/8.0), | ||
11031 | REAL_CONST(39014.491336854699/8.0), | ||
11032 | REAL_CONST(39033.231410590517/8.0), | ||
11033 | REAL_CONST(39051.973733900079/8.0), | ||
11034 | REAL_CONST(39070.718306243485/8.0), | ||
11035 | REAL_CONST(39089.465127081188/8.0), | ||
11036 | REAL_CONST(39108.214195873945/8.0), | ||
11037 | REAL_CONST(39126.965512082832/8.0), | ||
11038 | REAL_CONST(39145.719075169261/8.0), | ||
11039 | REAL_CONST(39164.474884594965/8.0), | ||
11040 | REAL_CONST(39183.232939821988/8.0), | ||
11041 | REAL_CONST(39201.99324031271/8.0), | ||
11042 | REAL_CONST(39220.755785529815/8.0), | ||
11043 | REAL_CONST(39239.52057493633/8.0), | ||
11044 | REAL_CONST(39258.287607995589/8.0), | ||
11045 | REAL_CONST(39277.056884171245/8.0), | ||
11046 | REAL_CONST(39295.828402927284/8.0), | ||
11047 | REAL_CONST(39314.602163728006/8.0), | ||
11048 | REAL_CONST(39333.378166038019/8.0), | ||
11049 | REAL_CONST(39352.15640932227/8.0), | ||
11050 | REAL_CONST(39370.936893046004/8.0), | ||
11051 | REAL_CONST(39389.719616674811/8.0), | ||
11052 | REAL_CONST(39408.504579674584/8.0), | ||
11053 | REAL_CONST(39427.291781511522/8.0), | ||
11054 | REAL_CONST(39446.081221652174/8.0), | ||
11055 | REAL_CONST(39464.872899563372/8.0), | ||
11056 | REAL_CONST(39483.666814712291/8.0), | ||
11057 | REAL_CONST(39502.462966566411/8.0), | ||
11058 | REAL_CONST(39521.261354593538/8.0), | ||
11059 | REAL_CONST(39540.06197826178/8.0), | ||
11060 | REAL_CONST(39558.864837039568/8.0), | ||
11061 | REAL_CONST(39577.669930395656/8.0), | ||
11062 | REAL_CONST(39596.47725779911/8.0), | ||
11063 | REAL_CONST(39615.286818719302/8.0), | ||
11064 | REAL_CONST(39634.098612625923/8.0), | ||
11065 | REAL_CONST(39652.912638988993/8.0), | ||
11066 | REAL_CONST(39671.728897278823/8.0), | ||
11067 | REAL_CONST(39690.547386966064/8.0), | ||
11068 | REAL_CONST(39709.368107521652/8.0), | ||
11069 | REAL_CONST(39728.191058416858/8.0), | ||
11070 | REAL_CONST(39747.016239123259/8.0), | ||
11071 | REAL_CONST(39765.84364911275/8.0), | ||
11072 | REAL_CONST(39784.673287857528/8.0), | ||
11073 | REAL_CONST(39803.505154830105/8.0), | ||
11074 | REAL_CONST(39822.339249503319/8.0), | ||
11075 | REAL_CONST(39841.175571350293/8.0), | ||
11076 | REAL_CONST(39860.014119844491/8.0), | ||
11077 | REAL_CONST(39878.854894459677/8.0), | ||
11078 | REAL_CONST(39897.697894669909/8.0), | ||
11079 | REAL_CONST(39916.54311994958/8.0), | ||
11080 | REAL_CONST(39935.390569773372/8.0), | ||
11081 | REAL_CONST(39954.240243616303/8.0), | ||
11082 | REAL_CONST(39973.092140953675/8.0), | ||
11083 | REAL_CONST(39991.946261261117/8.0), | ||
11084 | REAL_CONST(40010.802604014549/8.0), | ||
11085 | REAL_CONST(40029.661168690225/8.0), | ||
11086 | REAL_CONST(40048.521954764678/8.0), | ||
11087 | REAL_CONST(40067.384961714779/8.0), | ||
11088 | REAL_CONST(40086.250189017679/8.0), | ||
11089 | REAL_CONST(40105.117636150855/8.0), | ||
11090 | REAL_CONST(40123.98730259209/8.0), | ||
11091 | REAL_CONST(40142.859187819471/8.0), | ||
11092 | REAL_CONST(40161.733291311379/8.0), | ||
11093 | REAL_CONST(40180.609612546526/8.0), | ||
11094 | REAL_CONST(40199.488151003912/8.0), | ||
11095 | REAL_CONST(40218.368906162854/8.0), | ||
11096 | REAL_CONST(40237.25187750296/8.0), | ||
11097 | REAL_CONST(40256.137064504153/8.0), | ||
11098 | REAL_CONST(40275.024466646668/8.0), | ||
11099 | REAL_CONST(40293.914083411029/8.0), | ||
11100 | REAL_CONST(40312.805914278084/8.0), | ||
11101 | REAL_CONST(40331.699958728961/8.0), | ||
11102 | REAL_CONST(40350.596216245103/8.0), | ||
11103 | REAL_CONST(40369.494686308273/8.0), | ||
11104 | REAL_CONST(40388.39536840051/8.0), | ||
11105 | REAL_CONST(40407.298262004173/8.0), | ||
11106 | REAL_CONST(40426.20336660192/8.0), | ||
11107 | REAL_CONST(40445.110681676706/8.0), | ||
11108 | REAL_CONST(40464.020206711793/8.0), | ||
11109 | REAL_CONST(40482.931941190756/8.0), | ||
11110 | REAL_CONST(40501.845884597446/8.0), | ||
11111 | REAL_CONST(40520.762036416032/8.0), | ||
11112 | REAL_CONST(40539.680396130985/8.0), | ||
11113 | REAL_CONST(40558.600963227072/8.0), | ||
11114 | REAL_CONST(40577.523737189367/8.0), | ||
11115 | REAL_CONST(40596.448717503234/8.0), | ||
11116 | REAL_CONST(40615.375903654342/8.0), | ||
11117 | REAL_CONST(40634.305295128659/8.0), | ||
11118 | REAL_CONST(40653.236891412453/8.0), | ||
11119 | REAL_CONST(40672.170691992294/8.0), | ||
11120 | REAL_CONST(40691.106696355047/8.0), | ||
11121 | REAL_CONST(40710.044903987873/8.0), | ||
11122 | REAL_CONST(40728.985314378238/8.0), | ||
11123 | REAL_CONST(40747.927927013901/8.0), | ||
11124 | REAL_CONST(40766.872741382918/8.0), | ||
11125 | REAL_CONST(40785.819756973651/8.0), | ||
11126 | REAL_CONST(40804.768973274746/8.0), | ||
11127 | REAL_CONST(40823.720389775161/8.0), | ||
11128 | REAL_CONST(40842.674005964131/8.0), | ||
11129 | REAL_CONST(40861.629821331211/8.0), | ||
11130 | REAL_CONST(40880.587835366234/8.0), | ||
11131 | REAL_CONST(40899.548047559321/8.0), | ||
11132 | REAL_CONST(40918.510457400931/8.0), | ||
11133 | REAL_CONST(40937.475064381761/8.0), | ||
11134 | REAL_CONST(40956.441867992849/8.0), | ||
11135 | REAL_CONST(40975.410867725499/8.0), | ||
11136 | REAL_CONST(40994.382063071331/8.0), | ||
11137 | REAL_CONST(41013.355453522236/8.0), | ||
11138 | REAL_CONST(41032.331038570417/8.0), | ||
11139 | REAL_CONST(41051.308817708363/8.0), | ||
11140 | REAL_CONST(41070.288790428858/8.0), | ||
11141 | REAL_CONST(41089.270956224987/8.0), | ||
11142 | REAL_CONST(41108.255314590111/8.0), | ||
11143 | REAL_CONST(41127.241865017888/8.0), | ||
11144 | REAL_CONST(41146.23060700229/8.0), | ||
11145 | REAL_CONST(41165.221540037543/8.0), | ||
11146 | REAL_CONST(41184.214663618193/8.0), | ||
11147 | REAL_CONST(41203.209977239079/8.0), | ||
11148 | REAL_CONST(41222.207480395307/8.0), | ||
11149 | REAL_CONST(41241.207172582297/8.0), | ||
11150 | REAL_CONST(41260.209053295752/8.0), | ||
11151 | REAL_CONST(41279.213122031659/8.0), | ||
11152 | REAL_CONST(41298.219378286303/8.0), | ||
11153 | REAL_CONST(41317.227821556255/8.0), | ||
11154 | REAL_CONST(41336.23845133838/8.0), | ||
11155 | REAL_CONST(41355.251267129832/8.0), | ||
11156 | REAL_CONST(41374.266268428037/8.0), | ||
11157 | REAL_CONST(41393.283454730743/8.0), | ||
11158 | REAL_CONST(41412.302825535953/8.0), | ||
11159 | REAL_CONST(41431.324380341983/8.0), | ||
11160 | REAL_CONST(41450.348118647416/8.0), | ||
11161 | REAL_CONST(41469.374039951144/8.0), | ||
11162 | REAL_CONST(41488.402143752326/8.0), | ||
11163 | REAL_CONST(41507.432429550427/8.0), | ||
11164 | REAL_CONST(41526.464896845187/8.0), | ||
11165 | REAL_CONST(41545.499545136627/8.0), | ||
11166 | REAL_CONST(41564.536373925075/8.0), | ||
11167 | REAL_CONST(41583.575382711126/8.0), | ||
11168 | REAL_CONST(41602.616570995662/8.0), | ||
11169 | REAL_CONST(41621.659938279874/8.0), | ||
11170 | REAL_CONST(41640.705484065205/8.0), | ||
11171 | REAL_CONST(41659.753207853406/8.0), | ||
11172 | REAL_CONST(41678.803109146495/8.0), | ||
11173 | REAL_CONST(41697.855187446803/8.0), | ||
11174 | REAL_CONST(41716.909442256911/8.0), | ||
11175 | REAL_CONST(41735.965873079709/8.0), | ||
11176 | REAL_CONST(41755.02447941836/8.0), | ||
11177 | REAL_CONST(41774.085260776315/8.0), | ||
11178 | REAL_CONST(41793.148216657297/8.0), | ||
11179 | REAL_CONST(41812.213346565331/8.0), | ||
11180 | REAL_CONST(41831.280650004708/8.0), | ||
11181 | REAL_CONST(41850.350126480014/8.0), | ||
11182 | REAL_CONST(41869.421775496106/8.0), | ||
11183 | REAL_CONST(41888.495596558132/8.0), | ||
11184 | REAL_CONST(41907.571589171515/8.0), | ||
11185 | REAL_CONST(41926.649752841957/8.0), | ||
11186 | REAL_CONST(41945.730087075463/8.0), | ||
11187 | REAL_CONST(41964.812591378286/8.0), | ||
11188 | REAL_CONST(41983.897265256979/8.0), | ||
11189 | REAL_CONST(42002.984108218378/8.0), | ||
11190 | REAL_CONST(42022.073119769593/8.0), | ||
11191 | REAL_CONST(42041.164299418015/8.0), | ||
11192 | REAL_CONST(42060.257646671307/8.0), | ||
11193 | REAL_CONST(42079.353161037419/8.0), | ||
11194 | REAL_CONST(42098.450842024591/8.0), | ||
11195 | REAL_CONST(42117.550689141324/8.0), | ||
11196 | REAL_CONST(42136.652701896404/8.0), | ||
11197 | REAL_CONST(42155.756879798893/8.0), | ||
11198 | REAL_CONST(42174.863222358137/8.0), | ||
11199 | REAL_CONST(42193.971729083758/8.0), | ||
11200 | REAL_CONST(42213.082399485655/8.0), | ||
11201 | REAL_CONST(42232.195233074002/8.0), | ||
11202 | REAL_CONST(42251.310229359246/8.0), | ||
11203 | REAL_CONST(42270.427387852127/8.0), | ||
11204 | REAL_CONST(42289.546708063644/8.0), | ||
11205 | REAL_CONST(42308.668189505079/8.0), | ||
11206 | REAL_CONST(42327.791831687995/8.0), | ||
11207 | REAL_CONST(42346.917634124227/8.0), | ||
11208 | REAL_CONST(42366.045596325886/8.0), | ||
11209 | REAL_CONST(42385.175717805352/8.0), | ||
11210 | REAL_CONST(42404.307998075295/8.0), | ||
11211 | REAL_CONST(42423.442436648642/8.0), | ||
11212 | REAL_CONST(42442.579033038608/8.0), | ||
11213 | REAL_CONST(42461.717786758672/8.0), | ||
11214 | REAL_CONST(42480.858697322597/8.0), | ||
11215 | REAL_CONST(42500.001764244422/8.0), | ||
11216 | REAL_CONST(42519.146987038446/8.0), | ||
11217 | REAL_CONST(42538.294365219248/8.0), | ||
11218 | REAL_CONST(42557.443898301688/8.0), | ||
11219 | REAL_CONST(42576.595585800882/8.0), | ||
11220 | REAL_CONST(42595.749427232236/8.0), | ||
11221 | REAL_CONST(42614.90542211142/8.0), | ||
11222 | REAL_CONST(42634.063569954378/8.0), | ||
11223 | REAL_CONST(42653.223870277317/8.0), | ||
11224 | REAL_CONST(42672.386322596729/8.0), | ||
11225 | REAL_CONST(42691.55092642938/8.0), | ||
11226 | REAL_CONST(42710.717681292292/8.0), | ||
11227 | REAL_CONST(42729.886586702756/8.0), | ||
11228 | REAL_CONST(42749.057642178363/8.0), | ||
11229 | REAL_CONST(42768.23084723694/8.0), | ||
11230 | REAL_CONST(42787.406201396603/8.0), | ||
11231 | REAL_CONST(42806.58370417574/8.0), | ||
11232 | REAL_CONST(42825.76335509299/8.0), | ||
11233 | REAL_CONST(42844.945153667286/8.0), | ||
11234 | REAL_CONST(42864.129099417805/8.0), | ||
11235 | REAL_CONST(42883.315191864014/8.0), | ||
11236 | REAL_CONST(42902.503430525649/8.0), | ||
11237 | REAL_CONST(42921.693814922692/8.0), | ||
11238 | REAL_CONST(42940.88634457541/8.0), | ||
11239 | REAL_CONST(42960.081019004348/8.0), | ||
11240 | REAL_CONST(42979.277837730297/8.0), | ||
11241 | REAL_CONST(42998.476800274322/8.0), | ||
11242 | REAL_CONST(43017.677906157769/8.0), | ||
11243 | REAL_CONST(43036.881154902228/8.0), | ||
11244 | REAL_CONST(43056.086546029583/8.0), | ||
11245 | REAL_CONST(43075.294079061961/8.0), | ||
11246 | REAL_CONST(43094.503753521763/8.0), | ||
11247 | REAL_CONST(43113.715568931671/8.0), | ||
11248 | REAL_CONST(43132.929524814601/8.0), | ||
11249 | REAL_CONST(43152.145620693766/8.0), | ||
11250 | REAL_CONST(43171.363856092619/8.0), | ||
11251 | REAL_CONST(43190.584230534907/8.0), | ||
11252 | REAL_CONST(43209.806743544621/8.0), | ||
11253 | REAL_CONST(43229.031394646016/8.0), | ||
11254 | REAL_CONST(43248.258183363621/8.0), | ||
11255 | REAL_CONST(43267.487109222224/8.0), | ||
11256 | REAL_CONST(43286.718171746885/8.0), | ||
11257 | REAL_CONST(43305.951370462906/8.0), | ||
11258 | REAL_CONST(43325.186704895881/8.0), | ||
11259 | REAL_CONST(43344.42417457165/8.0), | ||
11260 | REAL_CONST(43363.663779016322/8.0), | ||
11261 | REAL_CONST(43382.905517756262/8.0), | ||
11262 | REAL_CONST(43402.149390318104/8.0), | ||
11263 | REAL_CONST(43421.395396228749/8.0), | ||
11264 | REAL_CONST(43440.643535015348/8.0), | ||
11265 | REAL_CONST(43459.89380620532/8.0), | ||
11266 | REAL_CONST(43479.146209326354/8.0), | ||
11267 | REAL_CONST(43498.400743906379/8.0), | ||
11268 | REAL_CONST(43517.657409473606/8.0), | ||
11269 | REAL_CONST(43536.916205556496/8.0), | ||
11270 | REAL_CONST(43556.177131683784/8.0), | ||
11271 | REAL_CONST(43575.44018738444/8.0), | ||
11272 | REAL_CONST(43594.705372187724/8.0), | ||
11273 | REAL_CONST(43613.972685623135/8.0), | ||
11274 | REAL_CONST(43633.242127220445/8.0), | ||
11275 | REAL_CONST(43652.513696509668/8.0), | ||
11276 | REAL_CONST(43671.787393021099/8.0), | ||
11277 | REAL_CONST(43691.063216285271/8.0), | ||
11278 | REAL_CONST(43710.341165833001/8.0), | ||
11279 | REAL_CONST(43729.621241195346/8.0), | ||
11280 | REAL_CONST(43748.903441903625/8.0), | ||
11281 | REAL_CONST(43768.187767489413/8.0), | ||
11282 | REAL_CONST(43787.474217484552/8.0), | ||
11283 | REAL_CONST(43806.762791421126/8.0), | ||
11284 | REAL_CONST(43826.053488831501/8.0), | ||
11285 | REAL_CONST(43845.346309248278/8.0), | ||
11286 | REAL_CONST(43864.641252204325/8.0), | ||
11287 | REAL_CONST(43883.938317232765/8.0), | ||
11288 | REAL_CONST(43903.237503866971/8.0), | ||
11289 | REAL_CONST(43922.538811640596/8.0), | ||
11290 | REAL_CONST(43941.842240087513/8.0), | ||
11291 | REAL_CONST(43961.147788741881/8.0), | ||
11292 | REAL_CONST(43980.455457138101/8.0), | ||
11293 | REAL_CONST(43999.765244810835/8.0), | ||
11294 | REAL_CONST(44019.077151295001/8.0), | ||
11295 | REAL_CONST(44038.391176125755/8.0), | ||
11296 | REAL_CONST(44057.70731883854/8.0), | ||
11297 | REAL_CONST(44077.02557896902/8.0), | ||
11298 | REAL_CONST(44096.345956053141/8.0), | ||
11299 | REAL_CONST(44115.668449627083/8.0), | ||
11300 | REAL_CONST(44134.993059227287/8.0), | ||
11301 | REAL_CONST(44154.319784390456/8.0), | ||
11302 | REAL_CONST(44173.648624653535/8.0), | ||
11303 | REAL_CONST(44192.979579553728/8.0), | ||
11304 | REAL_CONST(44212.312648628489/8.0), | ||
11305 | REAL_CONST(44231.647831415532/8.0), | ||
11306 | REAL_CONST(44250.985127452805/8.0), | ||
11307 | REAL_CONST(44270.324536278538/8.0), | ||
11308 | REAL_CONST(44289.666057431183/8.0), | ||
11309 | REAL_CONST(44309.009690449464/8.0), | ||
11310 | REAL_CONST(44328.355434872348/8.0), | ||
11311 | REAL_CONST(44347.703290239064/8.0), | ||
11312 | REAL_CONST(44367.053256089079/8.0), | ||
11313 | REAL_CONST(44386.405331962109/8.0), | ||
11314 | REAL_CONST(44405.759517398139/8.0), | ||
11315 | REAL_CONST(44425.115811937387/8.0), | ||
11316 | REAL_CONST(44444.474215120332/8.0), | ||
11317 | REAL_CONST(44463.834726487694/8.0), | ||
11318 | REAL_CONST(44483.197345580462/8.0), | ||
11319 | REAL_CONST(44502.562071939843/8.0), | ||
11320 | REAL_CONST(44521.928905107328/8.0), | ||
11321 | REAL_CONST(44541.297844624634/8.0), | ||
11322 | REAL_CONST(44560.668890033732/8.0), | ||
11323 | REAL_CONST(44580.042040876848/8.0), | ||
11324 | REAL_CONST(44599.417296696454/8.0), | ||
11325 | REAL_CONST(44618.794657035272/8.0), | ||
11326 | REAL_CONST(44638.174121436256/8.0), | ||
11327 | REAL_CONST(44657.555689442641/8.0), | ||
11328 | REAL_CONST(44676.939360597877/8.0), | ||
11329 | REAL_CONST(44696.325134445673/8.0), | ||
11330 | REAL_CONST(44715.713010530002/8.0), | ||
11331 | REAL_CONST(44735.102988395054/8.0), | ||
11332 | REAL_CONST(44754.495067585296/8.0), | ||
11333 | REAL_CONST(44773.88924764542/8.0), | ||
11334 | REAL_CONST(44793.285528120374/8.0), | ||
11335 | REAL_CONST(44812.683908555344/8.0), | ||
11336 | REAL_CONST(44832.084388495779/8.0), | ||
11337 | REAL_CONST(44851.486967487363/8.0), | ||
11338 | REAL_CONST(44870.891645076015/8.0), | ||
11339 | REAL_CONST(44890.298420807922/8.0), | ||
11340 | REAL_CONST(44909.707294229491/8.0), | ||
11341 | REAL_CONST(44929.118264887409/8.0), | ||
11342 | REAL_CONST(44948.531332328566/8.0), | ||
11343 | REAL_CONST(44967.946496100136/8.0), | ||
11344 | REAL_CONST(44987.363755749502/8.0), | ||
11345 | REAL_CONST(45006.783110824319/8.0), | ||
11346 | REAL_CONST(45026.204560872473/8.0), | ||
11347 | REAL_CONST(45045.628105442098/8.0), | ||
11348 | REAL_CONST(45065.053744081561/8.0), | ||
11349 | REAL_CONST(45084.48147633949/8.0), | ||
11350 | REAL_CONST(45103.911301764747/8.0), | ||
11351 | REAL_CONST(45123.343219906426/8.0), | ||
11352 | REAL_CONST(45142.777230313885/8.0), | ||
11353 | REAL_CONST(45162.21333253671/8.0), | ||
11354 | REAL_CONST(45181.651526124733/8.0), | ||
11355 | REAL_CONST(45201.091810628037/8.0), | ||
11356 | REAL_CONST(45220.534185596924/8.0), | ||
11357 | REAL_CONST(45239.978650581965/8.0), | ||
11358 | REAL_CONST(45259.425205133957/8.0), | ||
11359 | REAL_CONST(45278.873848803938/8.0), | ||
11360 | REAL_CONST(45298.324581143192/8.0), | ||
11361 | REAL_CONST(45317.777401703235/8.0), | ||
11362 | REAL_CONST(45337.232310035848/8.0), | ||
11363 | REAL_CONST(45356.68930569302/8.0), | ||
11364 | REAL_CONST(45376.148388226997/8.0), | ||
11365 | REAL_CONST(45395.60955719027/8.0), | ||
11366 | REAL_CONST(45415.072812135557/8.0), | ||
11367 | REAL_CONST(45434.538152615823/8.0), | ||
11368 | REAL_CONST(45454.005578184282/8.0), | ||
11369 | REAL_CONST(45473.475088394356/8.0), | ||
11370 | REAL_CONST(45492.946682799746/8.0), | ||
11371 | REAL_CONST(45512.420360954362/8.0), | ||
11372 | REAL_CONST(45531.896122412363/8.0), | ||
11373 | REAL_CONST(45551.373966728155/8.0), | ||
11374 | REAL_CONST(45570.853893456362/8.0), | ||
11375 | REAL_CONST(45590.33590215187/8.0), | ||
11376 | REAL_CONST(45609.819992369776/8.0), | ||
11377 | REAL_CONST(45629.306163665438/8.0), | ||
11378 | REAL_CONST(45648.794415594442/8.0), | ||
11379 | REAL_CONST(45668.284747712612/8.0), | ||
11380 | REAL_CONST(45687.777159576006/8.0), | ||
11381 | REAL_CONST(45707.27165074092/8.0), | ||
11382 | REAL_CONST(45726.768220763894/8.0), | ||
11383 | REAL_CONST(45746.266869201696/8.0), | ||
11384 | REAL_CONST(45765.767595611323/8.0), | ||
11385 | REAL_CONST(45785.270399550034/8.0), | ||
11386 | REAL_CONST(45804.775280575297/8.0), | ||
11387 | REAL_CONST(45824.282238244828/8.0), | ||
11388 | REAL_CONST(45843.79127211657/8.0), | ||
11389 | REAL_CONST(45863.302381748719/8.0), | ||
11390 | REAL_CONST(45882.815566699683/8.0), | ||
11391 | REAL_CONST(45902.33082652813/8.0), | ||
11392 | REAL_CONST(45921.848160792935/8.0), | ||
11393 | REAL_CONST(45941.367569053225/8.0), | ||
11394 | REAL_CONST(45960.889050868354/8.0), | ||
11395 | REAL_CONST(45980.41260579793/8.0), | ||
11396 | REAL_CONST(45999.938233401757/8.0), | ||
11397 | REAL_CONST(46019.465933239902/8.0), | ||
11398 | REAL_CONST(46038.995704872657/8.0), | ||
11399 | REAL_CONST(46058.527547860547/8.0), | ||
11400 | REAL_CONST(46078.06146176433/8.0), | ||
11401 | REAL_CONST(46097.597446144995/8.0), | ||
11402 | REAL_CONST(46117.135500563774/8.0), | ||
11403 | REAL_CONST(46136.675624582109/8.0), | ||
11404 | REAL_CONST(46156.217817761702/8.0), | ||
11405 | REAL_CONST(46175.762079664462/8.0), | ||
11406 | REAL_CONST(46195.308409852543/8.0), | ||
11407 | REAL_CONST(46214.856807888333/8.0), | ||
11408 | REAL_CONST(46234.407273334444/8.0), | ||
11409 | REAL_CONST(46253.959805753715/8.0), | ||
11410 | REAL_CONST(46273.51440470924/8.0), | ||
11411 | REAL_CONST(46293.071069764315/8.0), | ||
11412 | REAL_CONST(46312.629800482478/8.0), | ||
11413 | REAL_CONST(46332.190596427499/8.0), | ||
11414 | REAL_CONST(46351.753457163381/8.0), | ||
11415 | REAL_CONST(46371.318382254351/8.0), | ||
11416 | REAL_CONST(46390.885371264863/8.0), | ||
11417 | REAL_CONST(46410.45442375962/8.0), | ||
11418 | REAL_CONST(46430.025539303526/8.0), | ||
11419 | REAL_CONST(46449.598717461733/8.0), | ||
11420 | REAL_CONST(46469.17395779962/8.0), | ||
11421 | REAL_CONST(46488.751259882782/8.0), | ||
11422 | REAL_CONST(46508.33062327707/8.0), | ||
11423 | REAL_CONST(46527.912047548532/8.0), | ||
11424 | REAL_CONST(46547.495532263471/8.0), | ||
11425 | REAL_CONST(46567.081076988397/8.0), | ||
11426 | REAL_CONST(46586.668681290059/8.0), | ||
11427 | REAL_CONST(46606.258344735434/8.0), | ||
11428 | REAL_CONST(46625.850066891719/8.0), | ||
11429 | REAL_CONST(46645.443847326351/8.0), | ||
11430 | REAL_CONST(46665.039685606986/8.0), | ||
11431 | REAL_CONST(46684.637581301497/8.0), | ||
11432 | REAL_CONST(46704.237533978005/8.0), | ||
11433 | REAL_CONST(46723.839543204842/8.0), | ||
11434 | REAL_CONST(46743.443608550573/8.0), | ||
11435 | REAL_CONST(46763.049729583989/8.0), | ||
11436 | REAL_CONST(46782.657905874104/8.0), | ||
11437 | REAL_CONST(46802.268136990162/8.0), | ||
11438 | REAL_CONST(46821.880422501628/8.0), | ||
11439 | REAL_CONST(46841.494761978196/8.0), | ||
11440 | REAL_CONST(46861.111154989776/8.0), | ||
11441 | REAL_CONST(46880.729601106526/8.0), | ||
11442 | REAL_CONST(46900.350099898795/8.0), | ||
11443 | REAL_CONST(46919.97265093719/8.0), | ||
11444 | REAL_CONST(46939.597253792526/8.0), | ||
11445 | REAL_CONST(46959.223908035841/8.0), | ||
11446 | REAL_CONST(46978.852613238392/8.0), | ||
11447 | REAL_CONST(46998.483368971691/8.0), | ||
11448 | REAL_CONST(47018.11617480743/8.0), | ||
11449 | REAL_CONST(47037.751030317551/8.0), | ||
11450 | REAL_CONST(47057.387935074221/8.0), | ||
11451 | REAL_CONST(47077.026888649809/8.0), | ||
11452 | REAL_CONST(47096.66789061694/8.0), | ||
11453 | REAL_CONST(47116.310940548428/8.0), | ||
11454 | REAL_CONST(47135.956038017328/8.0), | ||
11455 | REAL_CONST(47155.603182596918/8.0), | ||
11456 | REAL_CONST(47175.252373860698/8.0), | ||
11457 | REAL_CONST(47194.903611382375/8.0), | ||
11458 | REAL_CONST(47214.556894735892/8.0), | ||
11459 | REAL_CONST(47234.212223495422/8.0), | ||
11460 | REAL_CONST(47253.869597235338/8.0), | ||
11461 | REAL_CONST(47273.52901553025/8.0), | ||
11462 | REAL_CONST(47293.19047795498/8.0), | ||
11463 | REAL_CONST(47312.853984084577/8.0), | ||
11464 | REAL_CONST(47332.519533494306/8.0), | ||
11465 | REAL_CONST(47352.187125759658/8.0), | ||
11466 | REAL_CONST(47371.856760456343/8.0), | ||
11467 | REAL_CONST(47391.528437160297/8.0), | ||
11468 | REAL_CONST(47411.202155447652/8.0), | ||
11469 | REAL_CONST(47430.877914894787/8.0), | ||
11470 | REAL_CONST(47450.555715078299/8.0), | ||
11471 | REAL_CONST(47470.235555574982/8.0), | ||
11472 | REAL_CONST(47489.917435961863/8.0), | ||
11473 | REAL_CONST(47509.601355816201/8.0), | ||
11474 | REAL_CONST(47529.287314715453/8.0), | ||
11475 | REAL_CONST(47548.975312237308/8.0), | ||
11476 | REAL_CONST(47568.665347959672/8.0), | ||
11477 | REAL_CONST(47588.357421460656/8.0), | ||
11478 | REAL_CONST(47608.051532318605/8.0), | ||
11479 | REAL_CONST(47627.747680112072/8.0), | ||
11480 | REAL_CONST(47647.445864419846/8.0), | ||
11481 | REAL_CONST(47667.14608482091/8.0), | ||
11482 | REAL_CONST(47686.848340894474/8.0), | ||
11483 | REAL_CONST(47706.552632219973/8.0), | ||
11484 | REAL_CONST(47726.258958377046/8.0), | ||
11485 | REAL_CONST(47745.967318945557/8.0), | ||
11486 | REAL_CONST(47765.677713505589/8.0), | ||
11487 | REAL_CONST(47785.390141637428/8.0), | ||
11488 | REAL_CONST(47805.104602921601/8.0), | ||
11489 | REAL_CONST(47824.821096938824/8.0), | ||
11490 | REAL_CONST(47844.539623270044/8.0), | ||
11491 | REAL_CONST(47864.260181496429/8.0), | ||
11492 | REAL_CONST(47883.982771199349/8.0), | ||
11493 | REAL_CONST(47903.707391960394/8.0), | ||
11494 | REAL_CONST(47923.434043361369/8.0), | ||
11495 | REAL_CONST(47943.162724984308/8.0), | ||
11496 | REAL_CONST(47962.893436411439/8.0), | ||
11497 | REAL_CONST(47982.626177225218/8.0), | ||
11498 | REAL_CONST(48002.36094700831/8.0), | ||
11499 | REAL_CONST(48022.097745343599/8.0), | ||
11500 | REAL_CONST(48041.836571814172/8.0), | ||
11501 | REAL_CONST(48061.57742600335/8.0), | ||
11502 | REAL_CONST(48081.32030749465/8.0), | ||
11503 | REAL_CONST(48101.065215871815/8.0), | ||
11504 | REAL_CONST(48120.81215071879/8.0), | ||
11505 | REAL_CONST(48140.56111161974/8.0), | ||
11506 | REAL_CONST(48160.312098159047/8.0), | ||
11507 | REAL_CONST(48180.065109921306/8.0), | ||
11508 | REAL_CONST(48199.820146491307/8.0), | ||
11509 | REAL_CONST(48219.577207454073/8.0), | ||
11510 | REAL_CONST(48239.336292394844/8.0), | ||
11511 | REAL_CONST(48259.097400899045/8.0), | ||
11512 | REAL_CONST(48278.860532552339/8.0), | ||
11513 | REAL_CONST(48298.625686940592/8.0), | ||
11514 | REAL_CONST(48318.392863649875/8.0), | ||
11515 | REAL_CONST(48338.162062266485/8.0), | ||
11516 | REAL_CONST(48357.933282376915/8.0), | ||
11517 | REAL_CONST(48377.706523567889/8.0), | ||
11518 | REAL_CONST(48397.481785426316/8.0), | ||
11519 | REAL_CONST(48417.259067539344/8.0), | ||
11520 | REAL_CONST(48437.038369494308/8.0), | ||
11521 | REAL_CONST(48456.819690878765/8.0), | ||
11522 | REAL_CONST(48476.603031280487/8.0), | ||
11523 | REAL_CONST(48496.388390287451/8.0), | ||
11524 | REAL_CONST(48516.175767487839/8.0), | ||
11525 | REAL_CONST(48535.965162470042/8.0), | ||
11526 | REAL_CONST(48555.756574822684/8.0), | ||
11527 | REAL_CONST(48575.550004134566/8.0), | ||
11528 | REAL_CONST(48595.345449994718/8.0), | ||
11529 | REAL_CONST(48615.142911992378/8.0), | ||
11530 | REAL_CONST(48634.942389716991/8.0), | ||
11531 | REAL_CONST(48654.743882758201/8.0), | ||
11532 | REAL_CONST(48674.547390705877/8.0), | ||
11533 | REAL_CONST(48694.352913150084/8.0), | ||
11534 | REAL_CONST(48714.160449681112/8.0), | ||
11535 | REAL_CONST(48733.969999889443/8.0), | ||
11536 | REAL_CONST(48753.781563365759/8.0), | ||
11537 | REAL_CONST(48773.595139700978/8.0), | ||
11538 | REAL_CONST(48793.410728486211/8.0), | ||
11539 | REAL_CONST(48813.228329312769/8.0), | ||
11540 | REAL_CONST(48833.047941772187/8.0), | ||
11541 | REAL_CONST(48852.869565456189/8.0), | ||
11542 | REAL_CONST(48872.693199956717/8.0), | ||
11543 | REAL_CONST(48892.518844865925/8.0), | ||
11544 | REAL_CONST(48912.346499776155/8.0), | ||
11545 | REAL_CONST(48932.176164279976/8.0), | ||
11546 | REAL_CONST(48952.007837970152/8.0), | ||
11547 | REAL_CONST(48971.841520439666/8.0), | ||
11548 | REAL_CONST(48991.677211281676/8.0), | ||
11549 | REAL_CONST(49011.514910089587/8.0), | ||
11550 | REAL_CONST(49031.354616456978/8.0), | ||
11551 | REAL_CONST(49051.196329977654/8.0), | ||
11552 | REAL_CONST(49071.04005024561/8.0), | ||
11553 | REAL_CONST(49090.885776855059/8.0), | ||
11554 | REAL_CONST(49110.733509400408/8.0), | ||
11555 | REAL_CONST(49130.583247476279/8.0), | ||
11556 | REAL_CONST(49150.434990677488/8.0), | ||
11557 | REAL_CONST(49170.288738599062/8.0), | ||
11558 | REAL_CONST(49190.144490836232/8.0), | ||
11559 | REAL_CONST(49210.002246984441/8.0), | ||
11560 | REAL_CONST(49229.86200663932/8.0), | ||
11561 | REAL_CONST(49249.723769396718/8.0), | ||
11562 | REAL_CONST(49269.587534852675/8.0), | ||
11563 | REAL_CONST(49289.453302603448/8.0), | ||
11564 | REAL_CONST(49309.32107224549/8.0), | ||
11565 | REAL_CONST(49329.190843375451/8.0), | ||
11566 | REAL_CONST(49349.062615590192/8.0), | ||
11567 | REAL_CONST(49368.936388486785/8.0), | ||
11568 | REAL_CONST(49388.812161662492/8.0), | ||
11569 | REAL_CONST(49408.689934714785/8.0), | ||
11570 | REAL_CONST(49428.569707241324/8.0), | ||
11571 | REAL_CONST(49448.45147883999/8.0), | ||
11572 | REAL_CONST(49468.335249108866/8.0), | ||
11573 | REAL_CONST(49488.22101764621/8.0), | ||
11574 | REAL_CONST(49508.108784050521/8.0), | ||
11575 | REAL_CONST(49527.99854792047/8.0), | ||
11576 | REAL_CONST(49547.890308854934/8.0), | ||
11577 | REAL_CONST(49567.784066453009/8.0), | ||
11578 | REAL_CONST(49587.679820313977/8.0), | ||
11579 | REAL_CONST(49607.57757003732/8.0), | ||
11580 | REAL_CONST(49627.477315222721/8.0), | ||
11581 | REAL_CONST(49647.379055470075/8.0), | ||
11582 | REAL_CONST(49667.28279037946/8.0), | ||
11583 | REAL_CONST(49687.188519551179/8.0), | ||
11584 | REAL_CONST(49707.096242585707/8.0), | ||
11585 | REAL_CONST(49727.005959083741/8.0), | ||
11586 | REAL_CONST(49746.917668646165/8.0), | ||
11587 | REAL_CONST(49766.831370874068/8.0), | ||
11588 | REAL_CONST(49786.747065368734/8.0), | ||
11589 | REAL_CONST(49806.66475173166/8.0), | ||
11590 | REAL_CONST(49826.584429564515/8.0), | ||
11591 | REAL_CONST(49846.506098469203/8.0), | ||
11592 | REAL_CONST(49866.429758047794/8.0), | ||
11593 | REAL_CONST(49886.355407902578/8.0), | ||
11594 | REAL_CONST(49906.283047636032/8.0), | ||
11595 | REAL_CONST(49926.212676850846/8.0), | ||
11596 | REAL_CONST(49946.144295149883/8.0), | ||
11597 | REAL_CONST(49966.077902136225/8.0), | ||
11598 | REAL_CONST(49986.013497413151/8.0), | ||
11599 | REAL_CONST(50005.951080584135/8.0), | ||
11600 | REAL_CONST(50025.890651252834/8.0), | ||
11601 | REAL_CONST(50045.832209023123/8.0), | ||
11602 | REAL_CONST(50065.775753499074/8.0), | ||
11603 | REAL_CONST(50085.721284284933/8.0), | ||
11604 | REAL_CONST(50105.668800985164/8.0), | ||
11605 | REAL_CONST(50125.618303204428/8.0), | ||
11606 | REAL_CONST(50145.569790547575/8.0), | ||
11607 | REAL_CONST(50165.523262619652/8.0), | ||
11608 | REAL_CONST(50185.478719025901/8.0), | ||
11609 | REAL_CONST(50205.436159371769/8.0), | ||
11610 | REAL_CONST(50225.395583262893/8.0), | ||
11611 | REAL_CONST(50245.356990305103/8.0), | ||
11612 | REAL_CONST(50265.320380104429/8.0), | ||
11613 | REAL_CONST(50285.285752267104/8.0), | ||
11614 | REAL_CONST(50305.253106399534/8.0), | ||
11615 | REAL_CONST(50325.222442108337/8.0), | ||
11616 | REAL_CONST(50345.193759000336/8.0), | ||
11617 | REAL_CONST(50365.16705668252/8.0), | ||
11618 | REAL_CONST(50385.142334762102/8.0), | ||
11619 | REAL_CONST(50405.119592846473/8.0), | ||
11620 | REAL_CONST(50425.098830543218/8.0), | ||
11621 | REAL_CONST(50445.080047460127/8.0), | ||
11622 | REAL_CONST(50465.063243205179/8.0), | ||
11623 | REAL_CONST(50485.048417386541/8.0), | ||
11624 | REAL_CONST(50505.035569612577/8.0), | ||
11625 | REAL_CONST(50525.024699491856/8.0), | ||
11626 | REAL_CONST(50545.015806633128/8.0), | ||
11627 | REAL_CONST(50565.008890645338/8.0), | ||
11628 | REAL_CONST(50585.003951137631/8.0), | ||
11629 | REAL_CONST(50605.00098771933/8.0), | ||
11630 | REAL_CONST(50624.999999999971/8.0), | ||
11631 | REAL_CONST(50645.000987589265/8.0), | ||
11632 | REAL_CONST(50665.003950097132/8.0), | ||
11633 | REAL_CONST(50685.008887133677/8.0), | ||
11634 | REAL_CONST(50705.015798309192/8.0), | ||
11635 | REAL_CONST(50725.024683234165/8.0), | ||
11636 | REAL_CONST(50745.035541519283/8.0), | ||
11637 | REAL_CONST(50765.048372775411/8.0), | ||
11638 | REAL_CONST(50785.063176613621/8.0), | ||
11639 | REAL_CONST(50805.079952645159/8.0), | ||
11640 | REAL_CONST(50825.098700481489/8.0), | ||
11641 | REAL_CONST(50845.119419734241/8.0), | ||
11642 | REAL_CONST(50865.142110015244/8.0), | ||
11643 | REAL_CONST(50885.166770936521/8.0), | ||
11644 | REAL_CONST(50905.193402110279/8.0), | ||
11645 | REAL_CONST(50925.222003148934/8.0), | ||
11646 | REAL_CONST(50945.252573665071/8.0), | ||
11647 | REAL_CONST(50965.285113271471/8.0), | ||
11648 | REAL_CONST(50985.319621581119/8.0), | ||
11649 | REAL_CONST(51005.356098207172/8.0), | ||
11650 | REAL_CONST(51025.394542762981/8.0), | ||
11651 | REAL_CONST(51045.434954862096/8.0), | ||
11652 | REAL_CONST(51065.477334118244/8.0), | ||
11653 | REAL_CONST(51085.521680145357/8.0), | ||
11654 | REAL_CONST(51105.567992557546/8.0), | ||
11655 | REAL_CONST(51125.616270969113/8.0), | ||
11656 | REAL_CONST(51145.66651499454/8.0), | ||
11657 | REAL_CONST(51165.718724248516/8.0), | ||
11658 | REAL_CONST(51185.772898345916/8.0), | ||
11659 | REAL_CONST(51205.829036901778/8.0), | ||
11660 | REAL_CONST(51225.887139531362/8.0), | ||
11661 | REAL_CONST(51245.947205850105/8.0), | ||
11662 | REAL_CONST(51266.009235473619/8.0), | ||
11663 | REAL_CONST(51286.073228017718/8.0), | ||
11664 | REAL_CONST(51306.139183098399/8.0), | ||
11665 | REAL_CONST(51326.207100331856/8.0), | ||
11666 | REAL_CONST(51346.276979334456/8.0), | ||
11667 | REAL_CONST(51366.348819722756/8.0), | ||
11668 | REAL_CONST(51386.42262111351/8.0), | ||
11669 | REAL_CONST(51406.498383123653/8.0), | ||
11670 | REAL_CONST(51426.57610537031/8.0), | ||
11671 | REAL_CONST(51446.655787470787/8.0), | ||
11672 | REAL_CONST(51466.737429042587/8.0), | ||
11673 | REAL_CONST(51486.82102970338/8.0), | ||
11674 | REAL_CONST(51506.906589071048/8.0), | ||
11675 | REAL_CONST(51526.994106763632/8.0), | ||
11676 | REAL_CONST(51547.083582399391/8.0), | ||
11677 | REAL_CONST(51567.175015596738/8.0), | ||
11678 | REAL_CONST(51587.268405974297/8.0), | ||
11679 | REAL_CONST(51607.363753150858/8.0), | ||
11680 | REAL_CONST(51627.461056745415/8.0), | ||
11681 | REAL_CONST(51647.56031637713/8.0), | ||
11682 | REAL_CONST(51667.661531665362/8.0), | ||
11683 | REAL_CONST(51687.764702229651/8.0), | ||
11684 | REAL_CONST(51707.869827689727/8.0), | ||
11685 | REAL_CONST(51727.976907665499/8.0), | ||
11686 | REAL_CONST(51748.085941777055/8.0), | ||
11687 | REAL_CONST(51768.196929644677/8.0), | ||
11688 | REAL_CONST(51788.309870888836/8.0), | ||
11689 | REAL_CONST(51808.42476513017/8.0), | ||
11690 | REAL_CONST(51828.541611989524/8.0), | ||
11691 | REAL_CONST(51848.660411087905/8.0), | ||
11692 | REAL_CONST(51868.781162046515/8.0), | ||
11693 | REAL_CONST(51888.90386448674/8.0), | ||
11694 | REAL_CONST(51909.028518030143/8.0), | ||
11695 | REAL_CONST(51929.155122298485/8.0), | ||
11696 | REAL_CONST(51949.283676913685/8.0), | ||
11697 | REAL_CONST(51969.414181497872/8.0), | ||
11698 | REAL_CONST(51989.546635673345/8.0), | ||
11699 | REAL_CONST(52009.681039062583/8.0), | ||
11700 | REAL_CONST(52029.817391288263/8.0), | ||
11701 | REAL_CONST(52049.955691973213/8.0), | ||
11702 | REAL_CONST(52070.095940740481/8.0), | ||
11703 | REAL_CONST(52090.238137213273/8.0), | ||
11704 | REAL_CONST(52110.382281014987/8.0), | ||
11705 | REAL_CONST(52130.5283717692/8.0), | ||
11706 | REAL_CONST(52150.676409099666/8.0), | ||
11707 | REAL_CONST(52170.826392630333/8.0), | ||
11708 | REAL_CONST(52190.97832198532/8.0), | ||
11709 | REAL_CONST(52211.132196788931/8.0), | ||
11710 | REAL_CONST(52231.288016665654/8.0), | ||
11711 | REAL_CONST(52251.445781240145/8.0), | ||
11712 | REAL_CONST(52271.60549013727/8.0), | ||
11713 | REAL_CONST(52291.76714298204/8.0), | ||
11714 | REAL_CONST(52311.930739399664/8.0), | ||
11715 | REAL_CONST(52332.096279015546/8.0), | ||
11716 | REAL_CONST(52352.263761455244/8.0), | ||
11717 | REAL_CONST(52372.433186344519/8.0), | ||
11718 | REAL_CONST(52392.604553309284/8.0), | ||
11719 | REAL_CONST(52412.777861975665/8.0), | ||
11720 | REAL_CONST(52432.953111969946/8.0), | ||
11721 | REAL_CONST(52453.130302918595/8.0), | ||
11722 | REAL_CONST(52473.309434448267/8.0), | ||
11723 | REAL_CONST(52493.490506185793/8.0), | ||
11724 | REAL_CONST(52513.67351775818/8.0), | ||
11725 | REAL_CONST(52533.858468792605/8.0), | ||
11726 | REAL_CONST(52554.045358916446/8.0), | ||
11727 | REAL_CONST(52574.234187757254/8.0), | ||
11728 | REAL_CONST(52594.42495494274/8.0), | ||
11729 | REAL_CONST(52614.617660100812/8.0), | ||
11730 | REAL_CONST(52634.812302859558/8.0), | ||
11731 | REAL_CONST(52655.008882847229/8.0), | ||
11732 | REAL_CONST(52675.20739969227/8.0), | ||
11733 | REAL_CONST(52695.407853023295/8.0), | ||
11734 | REAL_CONST(52715.610242469098/8.0), | ||
11735 | REAL_CONST(52735.814567658657/8.0), | ||
11736 | REAL_CONST(52756.02082822111/8.0), | ||
11737 | REAL_CONST(52776.229023785803/8.0), | ||
11738 | REAL_CONST(52796.439153982225/8.0), | ||
11739 | REAL_CONST(52816.651218440056/8.0), | ||
11740 | REAL_CONST(52836.865216789171/8.0), | ||
11741 | REAL_CONST(52857.081148659599/8.0), | ||
11742 | REAL_CONST(52877.29901368155/8.0), | ||
11743 | REAL_CONST(52897.518811485425/8.0), | ||
11744 | REAL_CONST(52917.740541701773/8.0), | ||
11745 | REAL_CONST(52937.964203961354/8.0), | ||
11746 | REAL_CONST(52958.18979789508/8.0), | ||
11747 | REAL_CONST(52978.417323134046/8.0), | ||
11748 | REAL_CONST(52998.646779309529/8.0), | ||
11749 | REAL_CONST(53018.878166052978/8.0), | ||
11750 | REAL_CONST(53039.111482996006/8.0), | ||
11751 | REAL_CONST(53059.346729770419/8.0), | ||
11752 | REAL_CONST(53079.583906008193/8.0), | ||
11753 | REAL_CONST(53099.823011341483/8.0), | ||
11754 | REAL_CONST(53120.0640454026/8.0), | ||
11755 | REAL_CONST(53140.307007824063/8.0), | ||
11756 | REAL_CONST(53160.551898238533/8.0), | ||
11757 | REAL_CONST(53180.79871627887/8.0), | ||
11758 | REAL_CONST(53201.047461578091/8.0), | ||
11759 | REAL_CONST(53221.2981337694/8.0), | ||
11760 | REAL_CONST(53241.550732486176/8.0), | ||
11761 | REAL_CONST(53261.805257361964/8.0), | ||
11762 | REAL_CONST(53282.061708030487/8.0), | ||
11763 | REAL_CONST(53302.32008412564/8.0), | ||
11764 | REAL_CONST(53322.580385281493/8.0), | ||
11765 | REAL_CONST(53342.842611132299/8.0), | ||
11766 | REAL_CONST(53363.106761312469/8.0), | ||
11767 | REAL_CONST(53383.372835456597/8.0), | ||
11768 | REAL_CONST(53403.640833199453/8.0), | ||
11769 | REAL_CONST(53423.910754175973/8.0), | ||
11770 | REAL_CONST(53444.18259802126/8.0), | ||
11771 | REAL_CONST(53464.456364370613/8.0), | ||
11772 | REAL_CONST(53484.732052859479/8.0), | ||
11773 | REAL_CONST(53505.009663123499/8.0), | ||
11774 | REAL_CONST(53525.289194798468/8.0), | ||
11775 | REAL_CONST(53545.570647520362/8.0), | ||
11776 | REAL_CONST(53565.854020925333/8.0), | ||
11777 | REAL_CONST(53586.139314649699/8.0), | ||
11778 | REAL_CONST(53606.426528329954/8.0), | ||
11779 | REAL_CONST(53626.715661602764/8.0), | ||
11780 | REAL_CONST(53647.006714104959/8.0), | ||
11781 | REAL_CONST(53667.299685473547/8.0), | ||
11782 | REAL_CONST(53687.59457534572/8.0), | ||
11783 | REAL_CONST(53707.891383358816/8.0), | ||
11784 | REAL_CONST(53728.190109150361/8.0), | ||
11785 | REAL_CONST(53748.490752358055/8.0), | ||
11786 | REAL_CONST(53768.793312619753/8.0), | ||
11787 | REAL_CONST(53789.09778957349/8.0), | ||
11788 | REAL_CONST(53809.404182857485/8.0), | ||
11789 | REAL_CONST(53829.712492110106/8.0), | ||
11790 | REAL_CONST(53850.022716969899/8.0), | ||
11791 | REAL_CONST(53870.334857075584/8.0), | ||
11792 | REAL_CONST(53890.648912066055/8.0), | ||
11793 | REAL_CONST(53910.964881580367/8.0), | ||
11794 | REAL_CONST(53931.28276525774/8.0), | ||
11795 | REAL_CONST(53951.602562737586/8.0), | ||
11796 | REAL_CONST(53971.924273659461/8.0), | ||
11797 | REAL_CONST(53992.24789766311/8.0), | ||
11798 | REAL_CONST(54012.57343438844/8.0), | ||
11799 | REAL_CONST(54032.90088347553/8.0), | ||
11800 | REAL_CONST(54053.23024456462/8.0), | ||
11801 | REAL_CONST(54073.561517296133/8.0), | ||
11802 | REAL_CONST(54093.894701310644/8.0), | ||
11803 | REAL_CONST(54114.22979624891/8.0), | ||
11804 | REAL_CONST(54134.566801751855/8.0), | ||
11805 | REAL_CONST(54154.90571746057/8.0), | ||
11806 | REAL_CONST(54175.246543016314/8.0), | ||
11807 | REAL_CONST(54195.589278060506/8.0), | ||
11808 | REAL_CONST(54215.933922234755/8.0), | ||
11809 | REAL_CONST(54236.280475180814/8.0), | ||
11810 | REAL_CONST(54256.628936540626/8.0), | ||
11811 | REAL_CONST(54276.97930595628/8.0), | ||
11812 | REAL_CONST(54297.331583070045/8.0), | ||
11813 | REAL_CONST(54317.685767524359/8.0), | ||
11814 | REAL_CONST(54338.041858961828/8.0), | ||
11815 | REAL_CONST(54358.399857025215/8.0), | ||
11816 | REAL_CONST(54378.759761357462/8.0), | ||
11817 | REAL_CONST(54399.121571601667/8.0), | ||
11818 | REAL_CONST(54419.485287401105/8.0), | ||
11819 | REAL_CONST(54439.850908399218/8.0), | ||
11820 | REAL_CONST(54460.218434239614/8.0), | ||
11821 | REAL_CONST(54480.587864566056/8.0), | ||
11822 | REAL_CONST(54500.95919902248/8.0), | ||
11823 | REAL_CONST(54521.332437252997/8.0), | ||
11824 | REAL_CONST(54541.707578901878/8.0), | ||
11825 | REAL_CONST(54562.084623613555/8.0), | ||
11826 | REAL_CONST(54582.46357103264/8.0), | ||
11827 | REAL_CONST(54602.844420803893/8.0), | ||
11828 | REAL_CONST(54623.227172572246/8.0), | ||
11829 | REAL_CONST(54643.611825982807/8.0), | ||
11830 | REAL_CONST(54663.998380680838/8.0), | ||
11831 | REAL_CONST(54684.386836311773/8.0), | ||
11832 | REAL_CONST(54704.777192521207/8.0), | ||
11833 | REAL_CONST(54725.169448954897/8.0), | ||
11834 | REAL_CONST(54745.563605258772/8.0), | ||
11835 | REAL_CONST(54765.959661078923/8.0), | ||
11836 | REAL_CONST(54786.357616061614/8.0), | ||
11837 | REAL_CONST(54806.757469853255/8.0), | ||
11838 | REAL_CONST(54827.159222100439/8.0), | ||
11839 | REAL_CONST(54847.562872449904/8.0), | ||
11840 | REAL_CONST(54867.968420548583/8.0), | ||
11841 | REAL_CONST(54888.375866043534/8.0), | ||
11842 | REAL_CONST(54908.785208582012/8.0), | ||
11843 | REAL_CONST(54929.196447811417/8.0), | ||
11844 | REAL_CONST(54949.609583379322/8.0), | ||
11845 | REAL_CONST(54970.024614933463/8.0), | ||
11846 | REAL_CONST(54990.441542121727/8.0), | ||
11847 | REAL_CONST(55010.86036459219/8.0), | ||
11848 | REAL_CONST(55031.28108199306/8.0), | ||
11849 | REAL_CONST(55051.703693972733/8.0), | ||
11850 | REAL_CONST(55072.128200179759/8.0), | ||
11851 | REAL_CONST(55092.554600262847/8.0), | ||
11852 | REAL_CONST(55112.982893870874/8.0), | ||
11853 | REAL_CONST(55133.413080652877/8.0), | ||
11854 | REAL_CONST(55153.845160258061/8.0), | ||
11855 | REAL_CONST(55174.279132335789/8.0), | ||
11856 | REAL_CONST(55194.714996535586/8.0), | ||
11857 | REAL_CONST(55215.152752507143/8.0), | ||
11858 | REAL_CONST(55235.592399900306/8.0), | ||
11859 | REAL_CONST(55256.033938365079/8.0), | ||
11860 | REAL_CONST(55276.477367551655/8.0), | ||
11861 | REAL_CONST(55296.92268711036/8.0), | ||
11862 | REAL_CONST(55317.369896691685/8.0), | ||
11863 | REAL_CONST(55337.818995946305/8.0), | ||
11864 | REAL_CONST(55358.269984525024/8.0), | ||
11865 | REAL_CONST(55378.72286207883/8.0), | ||
11866 | REAL_CONST(55399.177628258869/8.0), | ||
11867 | REAL_CONST(55419.634282716441/8.0), | ||
11868 | REAL_CONST(55440.092825103013/8.0), | ||
11869 | REAL_CONST(55460.553255070205/8.0), | ||
11870 | REAL_CONST(55481.015572269804/8.0), | ||
11871 | REAL_CONST(55501.479776353764/8.0), | ||
11872 | REAL_CONST(55521.945866974187/8.0), | ||
11873 | REAL_CONST(55542.413843783339/8.0), | ||
11874 | REAL_CONST(55562.883706433655/8.0), | ||
11875 | REAL_CONST(55583.355454577715/8.0), | ||
11876 | REAL_CONST(55603.82908786826/8.0), | ||
11877 | REAL_CONST(55624.304605958219/8.0), | ||
11878 | REAL_CONST(55644.782008500639/8.0), | ||
11879 | REAL_CONST(55665.261295148754/8.0), | ||
11880 | REAL_CONST(55685.742465555952/8.0), | ||
11881 | REAL_CONST(55706.225519375774/8.0), | ||
11882 | REAL_CONST(55726.710456261928/8.0), | ||
11883 | REAL_CONST(55747.197275868275/8.0), | ||
11884 | REAL_CONST(55767.685977848843/8.0), | ||
11885 | REAL_CONST(55788.176561857814/8.0), | ||
11886 | REAL_CONST(55808.669027549528/8.0), | ||
11887 | REAL_CONST(55829.163374578478/8.0), | ||
11888 | REAL_CONST(55849.659602599328/8.0), | ||
11889 | REAL_CONST(55870.157711266889/8.0), | ||
11890 | REAL_CONST(55890.657700236145/8.0), | ||
11891 | REAL_CONST(55911.159569162221/8.0), | ||
11892 | REAL_CONST(55931.663317700411/8.0), | ||
11893 | REAL_CONST(55952.168945506164/8.0), | ||
11894 | REAL_CONST(55972.676452235086/8.0), | ||
11895 | REAL_CONST(55993.185837542944/8.0), | ||
11896 | REAL_CONST(56013.697101085651/8.0), | ||
11897 | REAL_CONST(56034.210242519301/8.0), | ||
11898 | REAL_CONST(56054.72526150012/8.0), | ||
11899 | REAL_CONST(56075.242157684508/8.0), | ||
11900 | REAL_CONST(56095.760930729011/8.0), | ||
11901 | REAL_CONST(56116.281580290342/8.0), | ||
11902 | REAL_CONST(56136.804106025367/8.0), | ||
11903 | REAL_CONST(56157.328507591104/8.0), | ||
11904 | REAL_CONST(56177.85478464474/8.0), | ||
11905 | REAL_CONST(56198.382936843598/8.0), | ||
11906 | REAL_CONST(56218.912963845185/8.0), | ||
11907 | REAL_CONST(56239.444865307138/8.0), | ||
11908 | REAL_CONST(56259.978640887268/8.0), | ||
11909 | REAL_CONST(56280.514290243525/8.0), | ||
11910 | REAL_CONST(56301.051813034042/8.0), | ||
11911 | REAL_CONST(56321.591208917082/8.0), | ||
11912 | REAL_CONST(56342.13247755108/8.0), | ||
11913 | REAL_CONST(56362.675618594607/8.0), | ||
11914 | REAL_CONST(56383.220631706419/8.0), | ||
11915 | REAL_CONST(56403.767516545398/8.0), | ||
11916 | REAL_CONST(56424.316272770608/8.0), | ||
11917 | REAL_CONST(56444.866900041241/8.0), | ||
11918 | REAL_CONST(56465.419398016667/8.0), | ||
11919 | REAL_CONST(56485.973766356394/8.0), | ||
11920 | REAL_CONST(56506.530004720102/8.0), | ||
11921 | REAL_CONST(56527.088112767611/8.0), | ||
11922 | REAL_CONST(56547.648090158902/8.0), | ||
11923 | REAL_CONST(56568.209936554107/8.0), | ||
11924 | REAL_CONST(56588.773651613519/8.0), | ||
11925 | REAL_CONST(56609.339234997584/8.0), | ||
11926 | REAL_CONST(56629.9066863669/8.0), | ||
11927 | REAL_CONST(56650.47600538221/8.0), | ||
11928 | REAL_CONST(56671.04719170442/8.0), | ||
11929 | REAL_CONST(56691.620244994599/8.0), | ||
11930 | REAL_CONST(56712.195164913959/8.0), | ||
11931 | REAL_CONST(56732.771951123868/8.0), | ||
11932 | REAL_CONST(56753.350603285835/8.0), | ||
11933 | REAL_CONST(56773.931121061541/8.0), | ||
11934 | REAL_CONST(56794.513504112823/8.0), | ||
11935 | REAL_CONST(56815.097752101647/8.0), | ||
11936 | REAL_CONST(56835.683864690152/8.0), | ||
11937 | REAL_CONST(56856.271841540627/8.0), | ||
11938 | REAL_CONST(56876.86168231551/8.0), | ||
11939 | REAL_CONST(56897.453386677393/8.0), | ||
11940 | REAL_CONST(56918.046954289028/8.0), | ||
11941 | REAL_CONST(56938.642384813298/8.0), | ||
11942 | REAL_CONST(56959.239677913261/8.0), | ||
11943 | REAL_CONST(56979.838833252121/8.0), | ||
11944 | REAL_CONST(57000.439850493225/8.0), | ||
11945 | REAL_CONST(57021.04272930009/8.0), | ||
11946 | REAL_CONST(57041.647469336371/8.0), | ||
11947 | REAL_CONST(57062.254070265873/8.0), | ||
11948 | REAL_CONST(57082.862531752558/8.0), | ||
11949 | REAL_CONST(57103.472853460553/8.0), | ||
11950 | REAL_CONST(57124.085035054108/8.0), | ||
11951 | REAL_CONST(57144.699076197649/8.0), | ||
11952 | REAL_CONST(57165.314976555739/8.0), | ||
11953 | REAL_CONST(57185.932735793103/8.0), | ||
11954 | REAL_CONST(57206.552353574611/8.0), | ||
11955 | REAL_CONST(57227.173829565276/8.0), | ||
11956 | REAL_CONST(57247.797163430281/8.0), | ||
11957 | REAL_CONST(57268.42235483494/8.0), | ||
11958 | REAL_CONST(57289.049403444733/8.0), | ||
11959 | REAL_CONST(57309.678308925286/8.0), | ||
11960 | REAL_CONST(57330.30907094237/8.0), | ||
11961 | REAL_CONST(57350.941689161911/8.0), | ||
11962 | REAL_CONST(57371.576163249985/8.0), | ||
11963 | REAL_CONST(57392.212492872815/8.0), | ||
11964 | REAL_CONST(57412.850677696784/8.0), | ||
11965 | REAL_CONST(57433.490717388406/8.0), | ||
11966 | REAL_CONST(57454.132611614368/8.0), | ||
11967 | REAL_CONST(57474.776360041491/8.0), | ||
11968 | REAL_CONST(57495.421962336746/8.0), | ||
11969 | REAL_CONST(57516.069418167266/8.0), | ||
11970 | REAL_CONST(57536.718727200314/8.0), | ||
11971 | REAL_CONST(57557.36988910332/8.0), | ||
11972 | REAL_CONST(57578.022903543861/8.0), | ||
11973 | REAL_CONST(57598.677770189643/8.0), | ||
11974 | REAL_CONST(57619.334488708548/8.0), | ||
11975 | REAL_CONST(57639.993058768589/8.0), | ||
11976 | REAL_CONST(57660.653480037938/8.0), | ||
11977 | REAL_CONST(57681.315752184906/8.0), | ||
11978 | REAL_CONST(57701.979874877965/8.0), | ||
11979 | REAL_CONST(57722.64584778573/8.0), | ||
11980 | REAL_CONST(57743.31367057695/8.0), | ||
11981 | REAL_CONST(57763.983342920546/8.0), | ||
11982 | REAL_CONST(57784.654864485572/8.0), | ||
11983 | REAL_CONST(57805.328234941233/8.0), | ||
11984 | REAL_CONST(57826.003453956881/8.0), | ||
11985 | REAL_CONST(57846.680521202026/8.0), | ||
11986 | REAL_CONST(57867.359436346305/8.0), | ||
11987 | REAL_CONST(57888.040199059527/8.0), | ||
11988 | REAL_CONST(57908.722809011633/8.0), | ||
11989 | REAL_CONST(57929.407265872709/8.0), | ||
11990 | REAL_CONST(57950.093569313001/8.0), | ||
11991 | REAL_CONST(57970.781719002895/8.0), | ||
11992 | REAL_CONST(57991.471714612911/8.0), | ||
11993 | REAL_CONST(58012.16355581375/8.0), | ||
11994 | REAL_CONST(58032.857242276223/8.0), | ||
11995 | REAL_CONST(58053.552773671312/8.0), | ||
11996 | REAL_CONST(58074.25014967013/8.0), | ||
11997 | REAL_CONST(58094.949369943948/8.0), | ||
11998 | REAL_CONST(58115.650434164185/8.0), | ||
11999 | REAL_CONST(58136.353342002389/8.0), | ||
12000 | REAL_CONST(58157.058093130276/8.0), | ||
12001 | REAL_CONST(58177.764687219693/8.0), | ||
12002 | REAL_CONST(58198.47312394264/8.0), | ||
12003 | REAL_CONST(58219.183402971255/8.0), | ||
12004 | REAL_CONST(58239.895523977837/8.0), | ||
12005 | REAL_CONST(58260.609486634821/8.0), | ||
12006 | REAL_CONST(58281.325290614775/8.0), | ||
12007 | REAL_CONST(58302.042935590434/8.0), | ||
12008 | REAL_CONST(58322.762421234678/8.0), | ||
12009 | REAL_CONST(58343.483747220511/8.0), | ||
12010 | REAL_CONST(58364.206913221096/8.0), | ||
12011 | REAL_CONST(58384.931918909751/8.0), | ||
12012 | REAL_CONST(58405.658763959924/8.0), | ||
12013 | REAL_CONST(58426.3874480452/8.0), | ||
12014 | REAL_CONST(58447.117970839339/8.0), | ||
12015 | REAL_CONST(58467.85033201622/8.0), | ||
12016 | REAL_CONST(58488.584531249864/8.0), | ||
12017 | REAL_CONST(58509.320568214462/8.0), | ||
12018 | REAL_CONST(58530.058442584334/8.0), | ||
12019 | REAL_CONST(58550.798154033931/8.0), | ||
12020 | REAL_CONST(58571.539702237875/8.0), | ||
12021 | REAL_CONST(58592.283086870906/8.0), | ||
12022 | REAL_CONST(58613.028307607929/8.0), | ||
12023 | REAL_CONST(58633.775364123983/8.0), | ||
12024 | REAL_CONST(58654.52425609425/8.0), | ||
12025 | REAL_CONST(58675.274983194053/8.0), | ||
12026 | REAL_CONST(58696.027545098877/8.0), | ||
12027 | REAL_CONST(58716.781941484325/8.0), | ||
12028 | REAL_CONST(58737.538172026158/8.0), | ||
12029 | REAL_CONST(58758.296236400274/8.0), | ||
12030 | REAL_CONST(58779.056134282728/8.0), | ||
12031 | REAL_CONST(58799.817865349694/8.0), | ||
12032 | REAL_CONST(58820.581429277503/8.0), | ||
12033 | REAL_CONST(58841.346825742643/8.0), | ||
12034 | REAL_CONST(58862.114054421712/8.0), | ||
12035 | REAL_CONST(58882.883114991484/8.0), | ||
12036 | REAL_CONST(58903.654007128847/8.0), | ||
12037 | REAL_CONST(58924.426730510851/8.0), | ||
12038 | REAL_CONST(58945.201284814684/8.0), | ||
12039 | REAL_CONST(58965.977669717664/8.0), | ||
12040 | REAL_CONST(58986.755884897269/8.0), | ||
12041 | REAL_CONST(59007.535930031117/8.0), | ||
12042 | REAL_CONST(59028.317804796949/8.0), | ||
12043 | REAL_CONST(59049.101508872664/8.0), | ||
12044 | REAL_CONST(59069.887041936301/8.0), | ||
12045 | REAL_CONST(59090.674403666046/8.0), | ||
12046 | REAL_CONST(59111.463593740213/8.0), | ||
12047 | REAL_CONST(59132.254611837263/8.0), | ||
12048 | REAL_CONST(59153.047457635803/8.0), | ||
12049 | REAL_CONST(59173.84213081457/8.0), | ||
12050 | REAL_CONST(59194.638631052461/8.0), | ||
12051 | REAL_CONST(59215.436958028506/8.0), | ||
12052 | REAL_CONST(59236.237111421855/8.0), | ||
12053 | REAL_CONST(59257.039090911829/8.0), | ||
12054 | REAL_CONST(59277.842896177877/8.0), | ||
12055 | REAL_CONST(59298.648526899589/8.0), | ||
12056 | REAL_CONST(59319.455982756685/8.0), | ||
12057 | REAL_CONST(59340.26526342905/8.0), | ||
12058 | REAL_CONST(59361.076368596696/8.0), | ||
12059 | REAL_CONST(59381.889297939757/8.0), | ||
12060 | REAL_CONST(59402.704051138542/8.0), | ||
12061 | REAL_CONST(59423.520627873484/8.0), | ||
12062 | REAL_CONST(59444.339027825139/8.0), | ||
12063 | REAL_CONST(59465.159250674224/8.0), | ||
12064 | REAL_CONST(59485.9812961016/8.0), | ||
12065 | REAL_CONST(59506.805163788253/8.0), | ||
12066 | REAL_CONST(59527.630853415307/8.0), | ||
12067 | REAL_CONST(59548.458364664046/8.0), | ||
12068 | REAL_CONST(59569.287697215863/8.0), | ||
12069 | REAL_CONST(59590.118850752311/8.0), | ||
12070 | REAL_CONST(59610.951824955089/8.0), | ||
12071 | REAL_CONST(59631.786619506012/8.0), | ||
12072 | REAL_CONST(59652.623234087048/8.0), | ||
12073 | REAL_CONST(59673.461668380311/8.0), | ||
12074 | REAL_CONST(59694.301922068029/8.0), | ||
12075 | REAL_CONST(59715.143994832593/8.0), | ||
12076 | REAL_CONST(59735.987886356525/8.0), | ||
12077 | REAL_CONST(59756.833596322482/8.0), | ||
12078 | REAL_CONST(59777.681124413255/8.0), | ||
12079 | REAL_CONST(59798.530470311794/8.0), | ||
12080 | REAL_CONST(59819.381633701159/8.0), | ||
12081 | REAL_CONST(59840.234614264569/8.0), | ||
12082 | REAL_CONST(59861.089411685381/8.0), | ||
12083 | REAL_CONST(59881.94602564707/8.0), | ||
12084 | REAL_CONST(59902.804455833269/8.0), | ||
12085 | REAL_CONST(59923.664701927737/8.0), | ||
12086 | REAL_CONST(59944.526763614384/8.0), | ||
12087 | REAL_CONST(59965.390640577243/8.0), | ||
12088 | REAL_CONST(59986.256332500488/8.0), | ||
12089 | REAL_CONST(60007.123839068438/8.0), | ||
12090 | REAL_CONST(60027.993159965539/8.0), | ||
12091 | REAL_CONST(60048.864294876381/8.0), | ||
12092 | REAL_CONST(60069.737243485688/8.0), | ||
12093 | REAL_CONST(60090.612005478324/8.0), | ||
12094 | REAL_CONST(60111.488580539284/8.0), | ||
12095 | REAL_CONST(60132.366968353708/8.0), | ||
12096 | REAL_CONST(60153.247168606867/8.0), | ||
12097 | REAL_CONST(60174.129180984164/8.0), | ||
12098 | REAL_CONST(60195.013005171153/8.0), | ||
12099 | REAL_CONST(60215.898640853513/8.0), | ||
12100 | REAL_CONST(60236.786087717061/8.0), | ||
12101 | REAL_CONST(60257.675345447751/8.0), | ||
12102 | REAL_CONST(60278.566413731671/8.0), | ||
12103 | REAL_CONST(60299.459292255044/8.0), | ||
12104 | REAL_CONST(60320.353980704247/8.0), | ||
12105 | REAL_CONST(60341.25047876576/8.0), | ||
12106 | REAL_CONST(60362.148786126229/8.0), | ||
12107 | REAL_CONST(60383.048902472423/8.0), | ||
12108 | REAL_CONST(60403.950827491237/8.0), | ||
12109 | REAL_CONST(60424.854560869717/8.0), | ||
12110 | REAL_CONST(60445.76010229504/8.0), | ||
12111 | REAL_CONST(60466.667451454516/8.0), | ||
12112 | REAL_CONST(60487.57660803559/8.0), | ||
12113 | REAL_CONST(60508.487571725847/8.0), | ||
12114 | REAL_CONST(60529.400342212997/8.0), | ||
12115 | REAL_CONST(60550.314919184893/8.0), | ||
12116 | REAL_CONST(60571.231302329521/8.0), | ||
12117 | REAL_CONST(60592.149491335003/8.0), | ||
12118 | REAL_CONST(60613.069485889588/8.0), | ||
12119 | REAL_CONST(60633.991285681674/8.0), | ||
12120 | REAL_CONST(60654.914890399785/8.0), | ||
12121 | REAL_CONST(60675.840299732568/8.0), | ||
12122 | REAL_CONST(60696.767513368832/8.0), | ||
12123 | REAL_CONST(60717.696530997484/8.0), | ||
12124 | REAL_CONST(60738.627352307602/8.0), | ||
12125 | REAL_CONST(60759.55997698837/8.0), | ||
12126 | REAL_CONST(60780.494404729128/8.0), | ||
12127 | REAL_CONST(60801.430635219323/8.0), | ||
12128 | REAL_CONST(60822.368668148556/8.0), | ||
12129 | REAL_CONST(60843.308503206565/8.0), | ||
12130 | REAL_CONST(60864.250140083204/8.0), | ||
12131 | REAL_CONST(60885.193578468468/8.0), | ||
12132 | REAL_CONST(60906.138818052495/8.0), | ||
12133 | REAL_CONST(60927.085858525541/8.0), | ||
12134 | REAL_CONST(60948.034699578006/8.0), | ||
12135 | REAL_CONST(60968.985340900421/8.0), | ||
12136 | REAL_CONST(60989.937782183442/8.0), | ||
12137 | REAL_CONST(61010.892023117864/8.0), | ||
12138 | REAL_CONST(61031.848063394616/8.0), | ||
12139 | REAL_CONST(61052.805902704764/8.0), | ||
12140 | REAL_CONST(61073.765540739492/8.0), | ||
12141 | REAL_CONST(61094.726977190134/8.0), | ||
12142 | REAL_CONST(61115.690211748137/8.0), | ||
12143 | REAL_CONST(61136.655244105103/8.0), | ||
12144 | REAL_CONST(61157.622073952742/8.0), | ||
12145 | REAL_CONST(61178.590700982917/8.0), | ||
12146 | REAL_CONST(61199.561124887616/8.0), | ||
12147 | REAL_CONST(61220.533345358948/8.0), | ||
12148 | REAL_CONST(61241.507362089171/8.0), | ||
12149 | REAL_CONST(61262.483174770663/8.0), | ||
12150 | REAL_CONST(61283.460783095943/8.0), | ||
12151 | REAL_CONST(61304.440186757645/8.0), | ||
12152 | REAL_CONST(61325.421385448557/8.0), | ||
12153 | REAL_CONST(61346.404378861582/8.0), | ||
12154 | REAL_CONST(61367.389166689762/8.0), | ||
12155 | REAL_CONST(61388.375748626262/8.0), | ||
12156 | REAL_CONST(61409.364124364387/8.0), | ||
12157 | REAL_CONST(61430.354293597571/8.0), | ||
12158 | REAL_CONST(61451.346256019373/8.0), | ||
12159 | REAL_CONST(61472.340011323497/8.0), | ||
12160 | REAL_CONST(61493.335559203762/8.0), | ||
12161 | REAL_CONST(61514.332899354122/8.0), | ||
12162 | REAL_CONST(61535.332031468672/8.0), | ||
12163 | REAL_CONST(61556.332955241618/8.0), | ||
12164 | REAL_CONST(61577.335670367313/8.0), | ||
12165 | REAL_CONST(61598.340176540238/8.0), | ||
12166 | REAL_CONST(61619.346473454993/8.0), | ||
12167 | REAL_CONST(61640.354560806329/8.0), | ||
12168 | REAL_CONST(61661.3644382891/8.0), | ||
12169 | REAL_CONST(61682.376105598312/8.0), | ||
12170 | REAL_CONST(61703.389562429089/8.0), | ||
12171 | REAL_CONST(61724.404808476691/8.0), | ||
12172 | REAL_CONST(61745.42184343651/8.0), | ||
12173 | REAL_CONST(61766.440667004063/8.0), | ||
12174 | REAL_CONST(61787.461278874987/8.0), | ||
12175 | REAL_CONST(61808.483678745069/8.0), | ||
12176 | REAL_CONST(61829.507866310203/8.0), | ||
12177 | REAL_CONST(61850.533841266435/8.0), | ||
12178 | REAL_CONST(61871.561603309929/8.0), | ||
12179 | REAL_CONST(61892.591152136971/8.0), | ||
12180 | REAL_CONST(61913.622487443987/8.0), | ||
12181 | REAL_CONST(61934.655608927525/8.0), | ||
12182 | REAL_CONST(61955.690516284267/8.0), | ||
12183 | REAL_CONST(61976.727209211022/8.0), | ||
12184 | REAL_CONST(61997.765687404724/8.0), | ||
12185 | REAL_CONST(62018.805950562448/8.0), | ||
12186 | REAL_CONST(62039.847998381381/8.0), | ||
12187 | REAL_CONST(62060.891830558845/8.0), | ||
12188 | REAL_CONST(62081.93744679229/8.0), | ||
12189 | REAL_CONST(62102.984846779298/8.0), | ||
12190 | REAL_CONST(62124.034030217575/8.0), | ||
12191 | REAL_CONST(62145.084996804966/8.0), | ||
12192 | REAL_CONST(62166.137746239416/8.0), | ||
12193 | REAL_CONST(62187.19227821903/8.0), | ||
12194 | REAL_CONST(62208.248592442025/8.0), | ||
12195 | REAL_CONST(62229.306688606739/8.0), | ||
12196 | REAL_CONST(62250.366566411656/8.0), | ||
12197 | REAL_CONST(62271.428225555377/8.0), | ||
12198 | REAL_CONST(62292.491665736627/8.0), | ||
12199 | REAL_CONST(62313.556886654267/8.0), | ||
12200 | REAL_CONST(62334.623888007271/8.0), | ||
12201 | REAL_CONST(62355.692669494762/8.0), | ||
12202 | REAL_CONST(62376.763230815974/8.0), | ||
12203 | REAL_CONST(62397.835571670272/8.0), | ||
12204 | REAL_CONST(62418.909691757144/8.0), | ||
12205 | REAL_CONST(62439.98559077621/8.0), | ||
12206 | REAL_CONST(62461.063268427228/8.0), | ||
12207 | REAL_CONST(62482.142724410049/8.0), | ||
12208 | REAL_CONST(62503.223958424685/8.0), | ||
12209 | REAL_CONST(62524.306970171267/8.0), | ||
12210 | REAL_CONST(62545.39175935003/8.0), | ||
12211 | REAL_CONST(62566.478325661366/8.0), | ||
12212 | REAL_CONST(62587.566668805768/8.0), | ||
12213 | REAL_CONST(62608.656788483881/8.0), | ||
12214 | REAL_CONST(62629.748684396451/8.0), | ||
12215 | REAL_CONST(62650.842356244357/8.0), | ||
12216 | REAL_CONST(62671.937803728622/8.0), | ||
12217 | REAL_CONST(62693.035026550366/8.0), | ||
12218 | REAL_CONST(62714.134024410858/8.0), | ||
12219 | REAL_CONST(62735.234797011479/8.0), | ||
12220 | REAL_CONST(62756.337344053733/8.0), | ||
12221 | REAL_CONST(62777.441665239276/8.0), | ||
12222 | REAL_CONST(62798.547760269852/8.0), | ||
12223 | REAL_CONST(62819.655628847358/8.0), | ||
12224 | REAL_CONST(62840.765270673801/8.0), | ||
12225 | REAL_CONST(62861.876685451323/8.0), | ||
12226 | REAL_CONST(62882.989872882186/8.0), | ||
12227 | REAL_CONST(62904.104832668774/8.0), | ||
12228 | REAL_CONST(62925.221564513602/8.0), | ||
12229 | REAL_CONST(62946.340068119309/8.0), | ||
12230 | REAL_CONST(62967.460343188657/8.0), | ||
12231 | REAL_CONST(62988.582389424526/8.0), | ||
12232 | REAL_CONST(63009.70620652994/8.0), | ||
12233 | REAL_CONST(63030.831794208025/8.0), | ||
12234 | REAL_CONST(63051.959152162039/8.0), | ||
12235 | REAL_CONST(63073.08828009537/8.0), | ||
12236 | REAL_CONST(63094.219177711529/8.0), | ||
12237 | REAL_CONST(63115.351844714154/8.0), | ||
12238 | REAL_CONST(63136.486280806988/8.0), | ||
12239 | REAL_CONST(63157.622485693922/8.0), | ||
12240 | REAL_CONST(63178.760459078956/8.0), | ||
12241 | REAL_CONST(63199.900200666219/8.0), | ||
12242 | REAL_CONST(63221.041710159967/8.0), | ||
12243 | REAL_CONST(63242.184987264569/8.0), | ||
12244 | REAL_CONST(63263.330031684534/8.0), | ||
12245 | REAL_CONST(63284.476843124474/8.0), | ||
12246 | REAL_CONST(63305.625421289144/8.0), | ||
12247 | REAL_CONST(63326.775765883409/8.0), | ||
12248 | REAL_CONST(63347.927876612259/8.0), | ||
12249 | REAL_CONST(63369.081753180813/8.0), | ||
12250 | REAL_CONST(63390.237395294316/8.0), | ||
12251 | REAL_CONST(63411.39480265812/8.0), | ||
12252 | REAL_CONST(63432.553974977716/8.0), | ||
12253 | REAL_CONST(63453.714911958712/8.0), | ||
12254 | REAL_CONST(63474.877613306839/8.0), | ||
12255 | REAL_CONST(63496.042078727944/8.0), | ||
12256 | REAL_CONST(63517.208307927998/8.0), | ||
12257 | REAL_CONST(63538.376300613119/8.0), | ||
12258 | REAL_CONST(63559.546056489504/8.0), | ||
12259 | REAL_CONST(63580.717575263516/8.0), | ||
12260 | REAL_CONST(63601.890856641607/8.0), | ||
12261 | REAL_CONST(63623.065900330374/8.0), | ||
12262 | REAL_CONST(63644.242706036515/8.0), | ||
12263 | REAL_CONST(63665.421273466869/8.0), | ||
12264 | REAL_CONST(63686.601602328381/8.0), | ||
12265 | REAL_CONST(63707.783692328136/8.0), | ||
12266 | REAL_CONST(63728.967543173334/8.0), | ||
12267 | REAL_CONST(63750.153154571279/8.0), | ||
12268 | REAL_CONST(63771.340526229418/8.0), | ||
12269 | REAL_CONST(63792.529657855317/8.0), | ||
12270 | REAL_CONST(63813.720549156649/8.0), | ||
12271 | REAL_CONST(63834.913199841227/8.0), | ||
12272 | REAL_CONST(63856.107609616978/8.0), | ||
12273 | REAL_CONST(63877.303778191941/8.0), | ||
12274 | REAL_CONST(63898.501705274284/8.0), | ||
12275 | REAL_CONST(63919.7013905723/8.0), | ||
12276 | REAL_CONST(63940.902833794404/8.0), | ||
12277 | REAL_CONST(63962.106034649114/8.0), | ||
12278 | REAL_CONST(63983.310992845094/8.0), | ||
12279 | REAL_CONST(64004.517708091109/8.0), | ||
12280 | REAL_CONST(64025.726180096048/8.0), | ||
12281 | REAL_CONST(64046.936408568938/8.0), | ||
12282 | REAL_CONST(64068.1483932189/8.0), | ||
12283 | REAL_CONST(64089.362133755196/8.0), | ||
12284 | REAL_CONST(64110.577629887193/8.0), | ||
12285 | REAL_CONST(64131.794881324393/8.0), | ||
12286 | REAL_CONST(64153.013887776404/8.0), | ||
12287 | REAL_CONST(64174.234648952966/8.0), | ||
12288 | REAL_CONST(64195.457164563937/8.0), | ||
12289 | REAL_CONST(64216.681434319289/8.0), | ||
12290 | REAL_CONST(64237.907457929112/8.0), | ||
12291 | REAL_CONST(64259.135235103626/8.0), | ||
12292 | REAL_CONST(64280.36476555316/8.0), | ||
12293 | REAL_CONST(64301.596048988169/8.0), | ||
12294 | REAL_CONST(64322.829085119236/8.0), | ||
12295 | REAL_CONST(64344.06387365704/8.0), | ||
12296 | REAL_CONST(64365.300414312398/8.0), | ||
12297 | REAL_CONST(64386.538706796251/8.0), | ||
12298 | REAL_CONST(64407.778750819634/8.0), | ||
12299 | REAL_CONST(64429.020546093721/8.0), | ||
12300 | REAL_CONST(64450.26409232981/8.0), | ||
12301 | REAL_CONST(64471.509389239291/8.0), | ||
12302 | REAL_CONST(64492.756436533709/8.0), | ||
12303 | REAL_CONST(64514.005233924705/8.0), | ||
12304 | REAL_CONST(64535.255781124033/8.0), | ||
12305 | REAL_CONST(64556.50807784358/8.0), | ||
12306 | REAL_CONST(64577.762123795357/8.0), | ||
12307 | REAL_CONST(64599.017918691468/8.0), | ||
12308 | REAL_CONST(64620.275462244172/8.0), | ||
12309 | REAL_CONST(64641.534754165805/8.0), | ||
12310 | REAL_CONST(64662.795794168844/8.0), | ||
12311 | REAL_CONST(64684.058581965895/8.0), | ||
12312 | REAL_CONST(64705.323117269661/8.0), | ||
12313 | REAL_CONST(64726.589399792974/8.0), | ||
12314 | REAL_CONST(64747.857429248776/8.0), | ||
12315 | REAL_CONST(64769.127205350138/8.0), | ||
12316 | REAL_CONST(64790.398727810236/8.0), | ||
12317 | REAL_CONST(64811.671996342375/8.0), | ||
12318 | REAL_CONST(64832.947010659969/8.0), | ||
12319 | REAL_CONST(64854.223770476558/8.0), | ||
12320 | REAL_CONST(64875.502275505794/8.0), | ||
12321 | REAL_CONST(64896.782525461451/8.0), | ||
12322 | REAL_CONST(64918.064520057414/8.0), | ||
12323 | REAL_CONST(64939.348259007682/8.0), | ||
12324 | REAL_CONST(64960.633742026388/8.0), | ||
12325 | REAL_CONST(64981.920968827762/8.0), | ||
12326 | REAL_CONST(65003.209939126165/8.0), | ||
12327 | REAL_CONST(65024.500652636067/8.0), | ||
12328 | REAL_CONST(65045.793109072067/8.0), | ||
12329 | REAL_CONST(65067.087308148861/8.0), | ||
12330 | REAL_CONST(65088.383249581282/8.0), | ||
12331 | REAL_CONST(65109.680933084259/8.0), | ||
12332 | REAL_CONST(65130.980358372864/8.0), | ||
12333 | REAL_CONST(65152.28152516226/8.0), | ||
12334 | REAL_CONST(65173.584433167736/8.0), | ||
12335 | REAL_CONST(65194.889082104703/8.0), | ||
12336 | REAL_CONST(65216.195471688683/8.0), | ||
12337 | REAL_CONST(65237.503601635319/8.0), | ||
12338 | REAL_CONST(65258.813471660353/8.0), | ||
12339 | REAL_CONST(65280.125081479666/8.0), | ||
12340 | REAL_CONST(65301.438430809241/8.0), | ||
12341 | REAL_CONST(65322.753519365178/8.0), | ||
12342 | REAL_CONST(65344.070346863708/8.0), | ||
12343 | REAL_CONST(65365.388913021146/8.0), | ||
12344 | REAL_CONST(65386.709217553958/8.0), | ||
12345 | REAL_CONST(65408.031260178701/8.0), | ||
12346 | REAL_CONST(65429.355040612056/8.0), | ||
12347 | REAL_CONST(65450.680558570821/8.0), | ||
12348 | REAL_CONST(65472.00781377191/8.0), | ||
12349 | REAL_CONST(65493.336805932355/8.0), | ||
12350 | REAL_CONST(65514.66753476928/8.0), | ||
12351 | REAL_CONST(65535.999999999956/8.0), | ||
12352 | REAL_CONST(65557.334201341757/8.0), | ||
12353 | REAL_CONST(65578.670138512171/8.0), | ||
12354 | REAL_CONST(65600.007811228788/8.0), | ||
12355 | REAL_CONST(65621.347219209332/8.0), | ||
12356 | REAL_CONST(65642.688362171626/8.0), | ||
12357 | REAL_CONST(65664.031239833639/8.0), | ||
12358 | REAL_CONST(65685.375851913413/8.0), | ||
12359 | REAL_CONST(65706.722198129137/8.0), | ||
12360 | REAL_CONST(65728.070278199084/8.0), | ||
12361 | REAL_CONST(65749.420091841661/8.0), | ||
12362 | REAL_CONST(65770.771638775404/8.0), | ||
12363 | REAL_CONST(65792.124918718939/8.0), | ||
12364 | REAL_CONST(65813.479931391004/8.0), | ||
12365 | REAL_CONST(65834.836676510458/8.0), | ||
12366 | REAL_CONST(65856.195153796303/8.0), | ||
12367 | REAL_CONST(65877.5553629676/8.0), | ||
12368 | REAL_CONST(65898.917303743554/8.0), | ||
12369 | REAL_CONST(65920.280975843489/8.0), | ||
12370 | REAL_CONST(65941.646378986843/8.0), | ||
12371 | REAL_CONST(65963.013512893158/8.0), | ||
12372 | REAL_CONST(65984.382377282076/8.0), | ||
12373 | REAL_CONST(66005.752971873386/8.0), | ||
12374 | REAL_CONST(66027.125296386963/8.0), | ||
12375 | REAL_CONST(66048.499350542799/8.0), | ||
12376 | REAL_CONST(66069.875134061018/8.0), | ||
12377 | REAL_CONST(66091.252646661844/8.0), | ||
12378 | REAL_CONST(66112.631888065618/8.0), | ||
12379 | REAL_CONST(66134.01285799277/8.0), | ||
12380 | REAL_CONST(66155.395556163887/8.0), | ||
12381 | REAL_CONST(66176.779982299631/8.0), | ||
12382 | REAL_CONST(66198.166136120795/8.0), | ||
12383 | REAL_CONST(66219.554017348273/8.0), | ||
12384 | REAL_CONST(66240.943625703105/8.0), | ||
12385 | REAL_CONST(66262.334960906388/8.0), | ||
12386 | REAL_CONST(66283.728022679396/8.0), | ||
12387 | REAL_CONST(66305.122810743444/8.0), | ||
12388 | REAL_CONST(66326.519324820023/8.0), | ||
12389 | REAL_CONST(66347.917564630698/8.0), | ||
12390 | REAL_CONST(66369.317529897162/8.0), | ||
12391 | REAL_CONST(66390.719220341227/8.0), | ||
12392 | REAL_CONST(66412.122635684791/8.0), | ||
12393 | REAL_CONST(66433.527775649884/8.0), | ||
12394 | REAL_CONST(66454.934639958636/8.0), | ||
12395 | REAL_CONST(66476.343228333324/8.0), | ||
12396 | REAL_CONST(66497.753540496284/8.0), | ||
12397 | REAL_CONST(66519.165576169995/8.0), | ||
12398 | REAL_CONST(66540.57933507704/8.0), | ||
12399 | REAL_CONST(66561.994816940118/8.0), | ||
12400 | REAL_CONST(66583.412021482043/8.0), | ||
12401 | REAL_CONST(66604.830948425733/8.0), | ||
12402 | REAL_CONST(66626.251597494222/8.0), | ||
12403 | REAL_CONST(66647.673968410629/8.0), | ||
12404 | REAL_CONST(66669.098060898235/8.0), | ||
12405 | REAL_CONST(66690.523874680381/8.0), | ||
12406 | REAL_CONST(66711.951409480564/8.0), | ||
12407 | REAL_CONST(66733.380665022371/8.0), | ||
12408 | REAL_CONST(66754.811641029475/8.0), | ||
12409 | REAL_CONST(66776.244337225711/8.0), | ||
12410 | REAL_CONST(66797.678753334985/8.0), | ||
12411 | REAL_CONST(66819.11488908132/8.0), | ||
12412 | REAL_CONST(66840.552744188884/8.0), | ||
12413 | REAL_CONST(66861.992318381905/8.0), | ||
12414 | REAL_CONST(66883.433611384738/8.0), | ||
12415 | REAL_CONST(66904.876622921889/8.0), | ||
12416 | REAL_CONST(66926.321352717903/8.0), | ||
12417 | REAL_CONST(66947.767800497502/8.0), | ||
12418 | REAL_CONST(66969.215965985466/8.0), | ||
12419 | REAL_CONST(66990.665848906734/8.0), | ||
12420 | REAL_CONST(67012.117448986304/8.0), | ||
12421 | REAL_CONST(67033.570765949335/8.0), | ||
12422 | REAL_CONST(67055.025799521056/8.0), | ||
12423 | REAL_CONST(67076.482549426815/8.0), | ||
12424 | REAL_CONST(67097.941015392076/8.0), | ||
12425 | REAL_CONST(67119.401197142433/8.0), | ||
12426 | REAL_CONST(67140.863094403554/8.0), | ||
12427 | REAL_CONST(67162.326706901222/8.0), | ||
12428 | REAL_CONST(67183.792034361351/8.0), | ||
12429 | REAL_CONST(67205.259076509959/8.0), | ||
12430 | REAL_CONST(67226.72783307315/8.0), | ||
12431 | REAL_CONST(67248.198303777172/8.0), | ||
12432 | REAL_CONST(67269.670488348347/8.0), | ||
12433 | REAL_CONST(67291.144386513144/8.0), | ||
12434 | REAL_CONST(67312.619997998088/8.0), | ||
12435 | REAL_CONST(67334.09732252988/8.0), | ||
12436 | REAL_CONST(67355.576359835293/8.0), | ||
12437 | REAL_CONST(67377.057109641188/8.0), | ||
12438 | REAL_CONST(67398.53957167457/8.0), | ||
12439 | REAL_CONST(67420.023745662547/8.0), | ||
12440 | REAL_CONST(67441.50963133233/8.0), | ||
12441 | REAL_CONST(67462.99722841123/8.0), | ||
12442 | REAL_CONST(67484.486536626689/8.0), | ||
12443 | REAL_CONST(67505.977555706224/8.0), | ||
12444 | REAL_CONST(67527.470285377494/8.0), | ||
12445 | REAL_CONST(67548.964725368263/8.0), | ||
12446 | REAL_CONST(67570.460875406367/8.0), | ||
12447 | REAL_CONST(67591.9587352198/8.0), | ||
12448 | REAL_CONST(67613.458304536631/8.0), | ||
12449 | REAL_CONST(67634.95958308503/8.0), | ||
12450 | REAL_CONST(67656.462570593329/8.0), | ||
12451 | REAL_CONST(67677.967266789899/8.0), | ||
12452 | REAL_CONST(67699.473671403248/8.0), | ||
12453 | REAL_CONST(67720.981784162024/8.0), | ||
12454 | REAL_CONST(67742.491604794923/8.0), | ||
12455 | REAL_CONST(67764.003133030797/8.0), | ||
12456 | REAL_CONST(67785.516368598575/8.0), | ||
12457 | REAL_CONST(67807.031311227314/8.0), | ||
12458 | REAL_CONST(67828.547960646174/8.0), | ||
12459 | REAL_CONST(67850.066316584402/8.0), | ||
12460 | REAL_CONST(67871.58637877139/8.0), | ||
12461 | REAL_CONST(67893.108146936589/8.0), | ||
12462 | REAL_CONST(67914.63162080961/8.0), | ||
12463 | REAL_CONST(67936.156800120138/8.0), | ||
12464 | REAL_CONST(67957.683684597971/8.0), | ||
12465 | REAL_CONST(67979.212273973011/8.0), | ||
12466 | REAL_CONST(68000.742567975263/8.0), | ||
12467 | REAL_CONST(68022.274566334876/8.0), | ||
12468 | REAL_CONST(68043.808268782057/8.0), | ||
12469 | REAL_CONST(68065.343675047145/8.0), | ||
12470 | REAL_CONST(68086.880784860579/8.0), | ||
12471 | REAL_CONST(68108.419597952918/8.0), | ||
12472 | REAL_CONST(68129.960114054789/8.0), | ||
12473 | REAL_CONST(68151.502332896969/8.0), | ||
12474 | REAL_CONST(68173.04625421032/8.0), | ||
12475 | REAL_CONST(68194.591877725834/8.0), | ||
12476 | REAL_CONST(68216.139203174564/8.0), | ||
12477 | REAL_CONST(68237.688230287706/8.0), | ||
12478 | REAL_CONST(68259.238958796544/8.0), | ||
12479 | REAL_CONST(68280.791388432481/8.0), | ||
12480 | REAL_CONST(68302.345518927032/8.0), | ||
12481 | REAL_CONST(68323.901350011787/8.0), | ||
12482 | REAL_CONST(68345.458881418483/8.0), | ||
12483 | REAL_CONST(68367.018112878912/8.0), | ||
12484 | REAL_CONST(68388.579044125028/8.0), | ||
12485 | REAL_CONST(68410.141674888844/8.0), | ||
12486 | REAL_CONST(68431.706004902502/8.0), | ||
12487 | REAL_CONST(68453.272033898262/8.0), | ||
12488 | REAL_CONST(68474.839761608455/8.0), | ||
12489 | REAL_CONST(68496.409187765545/8.0), | ||
12490 | REAL_CONST(68517.980312102081/8.0), | ||
12491 | REAL_CONST(68539.553134350732/8.0), | ||
12492 | REAL_CONST(68561.127654244279/8.0), | ||
12493 | REAL_CONST(68582.70387151558/8.0), | ||
12494 | REAL_CONST(68604.281785897634/8.0), | ||
12495 | REAL_CONST(68625.861397123503/8.0), | ||
12496 | REAL_CONST(68647.44270492639/8.0), | ||
12497 | REAL_CONST(68669.025709039604/8.0), | ||
12498 | REAL_CONST(68690.610409196524/8.0), | ||
12499 | REAL_CONST(68712.196805130661/8.0), | ||
12500 | REAL_CONST(68733.784896575627/8.0), | ||
12501 | REAL_CONST(68755.374683265123/8.0), | ||
12502 | REAL_CONST(68776.966164932994/8.0), | ||
12503 | REAL_CONST(68798.559341313128/8.0), | ||
12504 | REAL_CONST(68820.154212139591/8.0), | ||
12505 | REAL_CONST(68841.750777146473/8.0), | ||
12506 | REAL_CONST(68863.349036068044/8.0), | ||
12507 | REAL_CONST(68884.948988638629/8.0), | ||
12508 | REAL_CONST(68906.550634592684/8.0), | ||
12509 | REAL_CONST(68928.153973664739/8.0), | ||
12510 | REAL_CONST(68949.75900558944/8.0), | ||
12511 | REAL_CONST(68971.365730101577/8.0), | ||
12512 | REAL_CONST(68992.974146935987/8.0), | ||
12513 | REAL_CONST(69014.584255827634/8.0), | ||
12514 | REAL_CONST(69036.196056511588/8.0), | ||
12515 | REAL_CONST(69057.809548723017/8.0), | ||
12516 | REAL_CONST(69079.424732197207/8.0), | ||
12517 | REAL_CONST(69101.041606669532/8.0), | ||
12518 | REAL_CONST(69122.660171875468/8.0), | ||
12519 | REAL_CONST(69144.280427550606/8.0), | ||
12520 | REAL_CONST(69165.902373430625/8.0), | ||
12521 | REAL_CONST(69187.526009251334/8.0), | ||
12522 | REAL_CONST(69209.151334748618/8.0), | ||
12523 | REAL_CONST(69230.778349658474/8.0), | ||
12524 | REAL_CONST(69252.40705371699/8.0), | ||
12525 | REAL_CONST(69274.037446660412/8.0), | ||
12526 | REAL_CONST(69295.669528225/8.0), | ||
12527 | REAL_CONST(69317.303298147192/8.0), | ||
12528 | REAL_CONST(69338.938756163494/8.0), | ||
12529 | REAL_CONST(69360.575902010532/8.0), | ||
12530 | REAL_CONST(69382.214735425005/8.0), | ||
12531 | REAL_CONST(69403.855256143754/8.0), | ||
12532 | REAL_CONST(69425.497463903681/8.0), | ||
12533 | REAL_CONST(69447.141358441833/8.0), | ||
12534 | REAL_CONST(69468.78693949533/8.0), | ||
12535 | REAL_CONST(69490.434206801394/8.0), | ||
12536 | REAL_CONST(69512.083160097391/8.0), | ||
12537 | REAL_CONST(69533.733799120717/8.0), | ||
12538 | REAL_CONST(69555.386123608929/8.0), | ||
12539 | REAL_CONST(69577.04013329967/8.0), | ||
12540 | REAL_CONST(69598.695827930685/8.0), | ||
12541 | REAL_CONST(69620.353207239794/8.0), | ||
12542 | REAL_CONST(69642.012270964973/8.0), | ||
12543 | REAL_CONST(69663.67301884426/8.0), | ||
12544 | REAL_CONST(69685.335450615792/8.0), | ||
12545 | REAL_CONST(69706.999566017839/8.0), | ||
12546 | REAL_CONST(69728.665364788743/8.0), | ||
12547 | REAL_CONST(69750.332846666963/8.0), | ||
12548 | REAL_CONST(69772.002011391058/8.0), | ||
12549 | REAL_CONST(69793.672858699691/8.0), | ||
12550 | REAL_CONST(69815.345388331611/8.0), | ||
12551 | REAL_CONST(69837.019600025669/8.0), | ||
12552 | REAL_CONST(69858.695493520849/8.0), | ||
12553 | REAL_CONST(69880.373068556204/8.0), | ||
12554 | REAL_CONST(69902.052324870907/8.0), | ||
12555 | REAL_CONST(69923.733262204216/8.0), | ||
12556 | REAL_CONST(69945.415880295492/8.0), | ||
12557 | REAL_CONST(69967.100178884211/8.0), | ||
12558 | REAL_CONST(69988.786157709939/8.0), | ||
12559 | REAL_CONST(70010.473816512356/8.0), | ||
12560 | REAL_CONST(70032.163155031216/8.0), | ||
12561 | REAL_CONST(70053.854173006403/8.0), | ||
12562 | REAL_CONST(70075.546870177874/8.0), | ||
12563 | REAL_CONST(70097.241246285717/8.0), | ||
12564 | REAL_CONST(70118.937301070109/8.0), | ||
12565 | REAL_CONST(70140.635034271298/8.0), | ||
12566 | REAL_CONST(70162.334445629691/8.0), | ||
12567 | REAL_CONST(70184.035534885741/8.0), | ||
12568 | REAL_CONST(70205.738301780017/8.0), | ||
12569 | REAL_CONST(70227.442746053217/8.0), | ||
12570 | REAL_CONST(70249.1488674461/8.0), | ||
12571 | REAL_CONST(70270.856665699539/8.0), | ||
12572 | REAL_CONST(70292.566140554511/8.0), | ||
12573 | REAL_CONST(70314.277291752107/8.0), | ||
12574 | REAL_CONST(70335.990119033493/8.0), | ||
12575 | REAL_CONST(70357.704622139936/8.0), | ||
12576 | REAL_CONST(70379.420800812819/8.0), | ||
12577 | REAL_CONST(70401.138654793613/8.0), | ||
12578 | REAL_CONST(70422.85818382389/8.0), | ||
12579 | REAL_CONST(70444.579387645339/8.0), | ||
12580 | REAL_CONST(70466.302265999722/8.0), | ||
12581 | REAL_CONST(70488.026818628918/8.0), | ||
12582 | REAL_CONST(70509.753045274876/8.0), | ||
12583 | REAL_CONST(70531.480945679708/8.0), | ||
12584 | REAL_CONST(70553.210519585555/8.0), | ||
12585 | REAL_CONST(70574.941766734701/8.0), | ||
12586 | REAL_CONST(70596.674686869505/8.0), | ||
12587 | REAL_CONST(70618.409279732456/8.0), | ||
12588 | REAL_CONST(70640.145545066101/8.0), | ||
12589 | REAL_CONST(70661.883482613106/8.0), | ||
12590 | REAL_CONST(70683.623092116264/8.0), | ||
12591 | REAL_CONST(70705.364373318414/8.0), | ||
12592 | REAL_CONST(70727.107325962526/8.0), | ||
12593 | REAL_CONST(70748.851949791671/8.0), | ||
12594 | REAL_CONST(70770.598244549008/8.0), | ||
12595 | REAL_CONST(70792.346209977783/8.0), | ||
12596 | REAL_CONST(70814.095845821372/8.0), | ||
12597 | REAL_CONST(70835.847151823225/8.0), | ||
12598 | REAL_CONST(70857.600127726895/8.0), | ||
12599 | REAL_CONST(70879.354773276034/8.0), | ||
12600 | REAL_CONST(70901.111088214413/8.0), | ||
12601 | REAL_CONST(70922.869072285859/8.0), | ||
12602 | REAL_CONST(70944.628725234332/8.0), | ||
12603 | REAL_CONST(70966.390046803877/8.0), | ||
12604 | REAL_CONST(70988.153036738629/8.0), | ||
12605 | REAL_CONST(71009.917694782853/8.0), | ||
12606 | REAL_CONST(71031.684020680885/8.0), | ||
12607 | REAL_CONST(71053.45201417715/8.0), | ||
12608 | REAL_CONST(71075.221675016204/8.0), | ||
12609 | REAL_CONST(71096.993002942661/8.0), | ||
12610 | REAL_CONST(71118.765997701266/8.0), | ||
12611 | REAL_CONST(71140.540659036851/8.0), | ||
12612 | REAL_CONST(71162.316986694335/8.0), | ||
12613 | REAL_CONST(71184.09498041874/8.0), | ||
12614 | REAL_CONST(71205.874639955218/8.0), | ||
12615 | REAL_CONST(71227.655965048951/8.0), | ||
12616 | REAL_CONST(71249.438955445294/8.0), | ||
12617 | REAL_CONST(71271.223610889632/8.0), | ||
12618 | REAL_CONST(71293.009931127483/8.0), | ||
12619 | REAL_CONST(71314.797915904477/8.0), | ||
12620 | REAL_CONST(71336.587564966307/8.0), | ||
12621 | REAL_CONST(71358.378878058764/8.0), | ||
12622 | REAL_CONST(71380.171854927772/8.0), | ||
12623 | REAL_CONST(71401.966495319313/8.0), | ||
12624 | REAL_CONST(71423.762798979486/8.0), | ||
12625 | REAL_CONST(71445.560765654489/8.0), | ||
12626 | REAL_CONST(71467.360395090596/8.0), | ||
12627 | REAL_CONST(71489.161687034211/8.0), | ||
12628 | REAL_CONST(71510.964641231811/8.0), | ||
12629 | REAL_CONST(71532.769257429973/8.0), | ||
12630 | REAL_CONST(71554.575535375348/8.0), | ||
12631 | REAL_CONST(71576.383474814749/8.0), | ||
12632 | REAL_CONST(71598.19307549503/8.0), | ||
12633 | REAL_CONST(71620.004337163133/8.0), | ||
12634 | REAL_CONST(71641.817259566145/8.0), | ||
12635 | REAL_CONST(71663.631842451214/8.0), | ||
12636 | REAL_CONST(71685.4480855656/8.0), | ||
12637 | REAL_CONST(71707.26598865664/8.0), | ||
12638 | REAL_CONST(71729.085551471784/8.0), | ||
12639 | REAL_CONST(71750.906773758586/8.0), | ||
12640 | REAL_CONST(71772.729655264673/8.0), | ||
12641 | REAL_CONST(71794.554195737772/8.0), | ||
12642 | REAL_CONST(71816.380394925713/8.0), | ||
12643 | REAL_CONST(71838.208252576442/8.0), | ||
12644 | REAL_CONST(71860.037768437964/8.0), | ||
12645 | REAL_CONST(71881.868942258385/8.0), | ||
12646 | REAL_CONST(71903.701773785942/8.0), | ||
12647 | REAL_CONST(71925.536262768932/8.0), | ||
12648 | REAL_CONST(71947.372408955751/8.0), | ||
12649 | REAL_CONST(71969.210212094898/8.0), | ||
12650 | REAL_CONST(71991.049671934976/8.0), | ||
12651 | REAL_CONST(72012.890788224686/8.0), | ||
12652 | REAL_CONST(72034.73356071279/8.0), | ||
12653 | REAL_CONST(72056.577989148165/8.0), | ||
12654 | REAL_CONST(72078.424073279821/8.0), | ||
12655 | REAL_CONST(72100.271812856794/8.0), | ||
12656 | REAL_CONST(72122.121207628254/8.0), | ||
12657 | REAL_CONST(72143.97225734347/8.0), | ||
12658 | REAL_CONST(72165.824961751801/8.0), | ||
12659 | REAL_CONST(72187.679320602692/8.0), | ||
12660 | REAL_CONST(72209.53533364569/8.0), | ||
12661 | REAL_CONST(72231.393000630429/8.0), | ||
12662 | REAL_CONST(72253.252321306645/8.0), | ||
12663 | REAL_CONST(72275.113295424177/8.0), | ||
12664 | REAL_CONST(72296.975922732949/8.0), | ||
12665 | REAL_CONST(72318.840202982959/8.0), | ||
12666 | REAL_CONST(72340.706135924338/8.0), | ||
12667 | REAL_CONST(72362.573721307272/8.0), | ||
12668 | REAL_CONST(72384.442958882093/8.0), | ||
12669 | REAL_CONST(72406.313848399179/8.0), | ||
12670 | REAL_CONST(72428.186389609036/8.0), | ||
12671 | REAL_CONST(72450.060582262216/8.0), | ||
12672 | REAL_CONST(72471.936426109431/8.0), | ||
12673 | REAL_CONST(72493.813920901433/8.0), | ||
12674 | REAL_CONST(72515.693066389096/8.0), | ||
12675 | REAL_CONST(72537.573862323392/8.0), | ||
12676 | REAL_CONST(72559.456308455352/8.0), | ||
12677 | REAL_CONST(72581.340404536139/8.0), | ||
12678 | REAL_CONST(72603.226150316987/8.0), | ||
12679 | REAL_CONST(72625.113545549248/8.0), | ||
12680 | REAL_CONST(72647.002589984331/8.0), | ||
12681 | REAL_CONST(72668.893283373764/8.0), | ||
12682 | REAL_CONST(72690.785625469172/8.0), | ||
12683 | REAL_CONST(72712.679616022273/8.0), | ||
12684 | REAL_CONST(72734.575254784853/8.0), | ||
12685 | REAL_CONST(72756.472541508803/8.0), | ||
12686 | REAL_CONST(72778.371475946144/8.0), | ||
12687 | REAL_CONST(72800.272057848939/8.0), | ||
12688 | REAL_CONST(72822.174286969355/8.0), | ||
12689 | REAL_CONST(72844.07816305969/8.0), | ||
12690 | REAL_CONST(72865.983685872285/8.0), | ||
12691 | REAL_CONST(72887.890855159596/8.0), | ||
12692 | REAL_CONST(72909.799670674183/8.0), | ||
12693 | REAL_CONST(72931.710132168693/8.0), | ||
12694 | REAL_CONST(72953.622239395845/8.0), | ||
12695 | REAL_CONST(72975.535992108475/8.0), | ||
12696 | REAL_CONST(72997.451390059519/8.0), | ||
12697 | REAL_CONST(73019.368433001961/8.0), | ||
12698 | REAL_CONST(73041.287120688925/8.0), | ||
12699 | REAL_CONST(73063.207452873612/8.0), | ||
12700 | REAL_CONST(73085.129429309294/8.0), | ||
12701 | REAL_CONST(73107.053049749389/8.0), | ||
12702 | REAL_CONST(73128.978313947344/8.0), | ||
12703 | REAL_CONST(73150.905221656736/8.0), | ||
12704 | REAL_CONST(73172.833772631217/8.0), | ||
12705 | REAL_CONST(73194.763966624567/8.0), | ||
12706 | REAL_CONST(73216.695803390612/8.0), | ||
12707 | REAL_CONST(73238.62928268328/8.0), | ||
12708 | REAL_CONST(73260.564404256627/8.0), | ||
12709 | REAL_CONST(73282.501167864757/8.0), | ||
12710 | REAL_CONST(73304.439573261901/8.0), | ||
12711 | REAL_CONST(73326.379620202337/8.0), | ||
12712 | REAL_CONST(73348.321308440485/8.0), | ||
12713 | REAL_CONST(73370.264637730841/8.0), | ||
12714 | REAL_CONST(73392.209607827957/8.0), | ||
12715 | REAL_CONST(73414.156218486532/8.0), | ||
12716 | REAL_CONST(73436.104469461323/8.0), | ||
12717 | REAL_CONST(73458.054360507173/8.0), | ||
12718 | REAL_CONST(73480.005891379056/8.0), | ||
12719 | REAL_CONST(73501.959061831993/8.0), | ||
12720 | REAL_CONST(73523.913871621116/8.0), | ||
12721 | REAL_CONST(73545.870320501665/8.0), | ||
12722 | REAL_CONST(73567.828408228932/8.0), | ||
12723 | REAL_CONST(73589.78813455833/8.0), | ||
12724 | REAL_CONST(73611.749499245358/8.0), | ||
12725 | REAL_CONST(73633.712502045615/8.0), | ||
12726 | REAL_CONST(73655.677142714747/8.0), | ||
12727 | REAL_CONST(73677.643421008557/8.0), | ||
12728 | REAL_CONST(73699.611336682879/8.0), | ||
12729 | REAL_CONST(73721.580889493693/8.0), | ||
12730 | REAL_CONST(73743.552079197019/8.0), | ||
12731 | REAL_CONST(73765.524905548999/8.0), | ||
12732 | REAL_CONST(73787.499368305856/8.0), | ||
12733 | REAL_CONST(73809.475467223907/8.0), | ||
12734 | REAL_CONST(73831.453202059551/8.0), | ||
12735 | REAL_CONST(73853.432572569291/8.0), | ||
12736 | REAL_CONST(73875.413578509717/8.0), | ||
12737 | REAL_CONST(73897.396219637507/8.0), | ||
12738 | REAL_CONST(73919.380495709411/8.0), | ||
12739 | REAL_CONST(73941.36640648231/8.0), | ||
12740 | REAL_CONST(73963.353951713143/8.0), | ||
12741 | REAL_CONST(73985.343131158952/8.0), | ||
12742 | REAL_CONST(74007.333944576865/8.0), | ||
12743 | REAL_CONST(74029.326391724098/8.0), | ||
12744 | REAL_CONST(74051.320472357969/8.0), | ||
12745 | REAL_CONST(74073.316186235883/8.0), | ||
12746 | REAL_CONST(74095.313533115303/8.0), | ||
12747 | REAL_CONST(74117.312512753837/8.0), | ||
12748 | REAL_CONST(74139.313124909138/8.0), | ||
12749 | REAL_CONST(74161.315369338976/8.0), | ||
12750 | REAL_CONST(74183.319245801191/8.0), | ||
12751 | REAL_CONST(74205.324754053727/8.0), | ||
12752 | REAL_CONST(74227.331893854629/8.0), | ||
12753 | REAL_CONST(74249.340664961986/8.0), | ||
12754 | REAL_CONST(74271.351067134034/8.0), | ||
12755 | REAL_CONST(74293.363100129049/8.0), | ||
12756 | REAL_CONST(74315.376763705441/8.0), | ||
12757 | REAL_CONST(74337.392057621662/8.0), | ||
12758 | REAL_CONST(74359.408981636298/8.0), | ||
12759 | REAL_CONST(74381.427535508003/8.0), | ||
12760 | REAL_CONST(74403.447718995507/8.0), | ||
12761 | REAL_CONST(74425.469531857671/8.0), | ||
12762 | REAL_CONST(74447.492973853383/8.0), | ||
12763 | REAL_CONST(74469.518044741693/8.0), | ||
12764 | REAL_CONST(74491.54474428168/8.0), | ||
12765 | REAL_CONST(74513.573072232539/8.0), | ||
12766 | REAL_CONST(74535.603028353551/8.0), | ||
12767 | REAL_CONST(74557.634612404087/8.0), | ||
12768 | REAL_CONST(74579.667824143602/8.0), | ||
12769 | REAL_CONST(74601.702663331642/8.0), | ||
12770 | REAL_CONST(74623.739129727837/8.0), | ||
12771 | REAL_CONST(74645.777223091936/8.0), | ||
12772 | REAL_CONST(74667.816943183716/8.0), | ||
12773 | REAL_CONST(74689.858289763113/8.0), | ||
12774 | REAL_CONST(74711.901262590094/8.0), | ||
12775 | REAL_CONST(74733.945861424741/8.0), | ||
12776 | REAL_CONST(74755.992086027225/8.0), | ||
12777 | REAL_CONST(74778.039936157802/8.0), | ||
12778 | REAL_CONST(74800.089411576817/8.0), | ||
12779 | REAL_CONST(74822.140512044702/8.0), | ||
12780 | REAL_CONST(74844.193237321961/8.0), | ||
12781 | REAL_CONST(74866.24758716923/8.0), | ||
12782 | REAL_CONST(74888.303561347187/8.0), | ||
12783 | REAL_CONST(74910.36115961663/8.0), | ||
12784 | REAL_CONST(74932.420381738411/8.0), | ||
12785 | REAL_CONST(74954.481227473516/8.0), | ||
12786 | REAL_CONST(74976.543696582972/8.0), | ||
12787 | REAL_CONST(74998.607788827925/8.0), | ||
12788 | REAL_CONST(75020.673503969607/8.0), | ||
12789 | REAL_CONST(75042.740841769322/8.0), | ||
12790 | REAL_CONST(75064.809801988464/8.0), | ||
12791 | REAL_CONST(75086.88038438854/8.0), | ||
12792 | REAL_CONST(75108.952588731103/8.0), | ||
12793 | REAL_CONST(75131.026414777836/8.0), | ||
12794 | REAL_CONST(75153.101862290467/8.0), | ||
12795 | REAL_CONST(75175.178931030852/8.0), | ||
12796 | REAL_CONST(75197.257620760924/8.0), | ||
12797 | REAL_CONST(75219.33793124267/8.0), | ||
12798 | REAL_CONST(75241.419862238225/8.0), | ||
12799 | REAL_CONST(75263.503413509738/8.0), | ||
12800 | REAL_CONST(75285.588584819503/8.0), | ||
12801 | REAL_CONST(75307.675375929874/8.0), | ||
12802 | REAL_CONST(75329.763786603318/8.0), | ||
12803 | REAL_CONST(75351.853816602365/8.0), | ||
12804 | REAL_CONST(75373.945465689612/8.0), | ||
12805 | REAL_CONST(75396.038733627807/8.0), | ||
12806 | REAL_CONST(75418.133620179724/8.0), | ||
12807 | REAL_CONST(75440.230125108254/8.0), | ||
12808 | REAL_CONST(75462.32824817636/8.0), | ||
12809 | REAL_CONST(75484.427989147109/8.0), | ||
12810 | REAL_CONST(75506.529347783653/8.0), | ||
12811 | REAL_CONST(75528.63232384919/8.0), | ||
12812 | REAL_CONST(75550.736917107075/8.0), | ||
12813 | REAL_CONST(75572.843127320695/8.0), | ||
12814 | REAL_CONST(75594.950954253538/8.0), | ||
12815 | REAL_CONST(75617.060397669193/8.0), | ||
12816 | REAL_CONST(75639.171457331307/8.0), | ||
12817 | REAL_CONST(75661.284133003646/8.0), | ||
12818 | REAL_CONST(75683.398424450032/8.0), | ||
12819 | REAL_CONST(75705.514331434402/8.0), | ||
12820 | REAL_CONST(75727.631853720741/8.0), | ||
12821 | REAL_CONST(75749.750991073175/8.0), | ||
12822 | REAL_CONST(75771.871743255862/8.0), | ||
12823 | REAL_CONST(75793.994110033076/8.0), | ||
12824 | REAL_CONST(75816.118091169177/8.0), | ||
12825 | REAL_CONST(75838.243686428585/8.0), | ||
12826 | REAL_CONST(75860.370895575848/8.0), | ||
12827 | REAL_CONST(75882.499718375562/8.0), | ||
12828 | REAL_CONST(75904.630154592422/8.0), | ||
12829 | REAL_CONST(75926.762203991224/8.0), | ||
12830 | REAL_CONST(75948.895866336825/8.0), | ||
12831 | REAL_CONST(75971.031141394182/8.0), | ||
12832 | REAL_CONST(75993.168028928325/8.0), | ||
12833 | REAL_CONST(76015.306528704401/8.0), | ||
12834 | REAL_CONST(76037.4466404876/8.0), | ||
12835 | REAL_CONST(76059.588364043215/8.0), | ||
12836 | REAL_CONST(76081.731699136653/8.0), | ||
12837 | REAL_CONST(76103.876645533353/8.0), | ||
12838 | REAL_CONST(76126.023202998884/8.0), | ||
12839 | REAL_CONST(76148.171371298871/8.0), | ||
12840 | REAL_CONST(76170.321150199044/8.0), | ||
12841 | REAL_CONST(76192.472539465205/8.0), | ||
12842 | REAL_CONST(76214.625538863256/8.0), | ||
12843 | REAL_CONST(76236.780148159174/8.0), | ||
12844 | REAL_CONST(76258.936367119008/8.0), | ||
12845 | REAL_CONST(76281.094195508922/8.0), | ||
12846 | REAL_CONST(76303.253633095141/8.0), | ||
12847 | REAL_CONST(76325.414679643975/8.0), | ||
12848 | REAL_CONST(76347.577334921851/8.0), | ||
12849 | REAL_CONST(76369.741598695226/8.0), | ||
12850 | REAL_CONST(76391.907470730686/8.0), | ||
12851 | REAL_CONST(76414.074950794879/8.0), | ||
12852 | REAL_CONST(76436.244038654564/8.0), | ||
12853 | REAL_CONST(76458.414734076548/8.0), | ||
12854 | REAL_CONST(76480.587036827754/8.0), | ||
12855 | REAL_CONST(76502.760946675175/8.0), | ||
12856 | REAL_CONST(76524.936463385893/8.0), | ||
12857 | REAL_CONST(76547.11358672705/8.0), | ||
12858 | REAL_CONST(76569.292316465915/8.0), | ||
12859 | REAL_CONST(76591.472652369819/8.0), | ||
12860 | REAL_CONST(76613.654594206164/8.0), | ||
12861 | REAL_CONST(76635.838141742468/8.0), | ||
12862 | REAL_CONST(76658.023294746308/8.0), | ||
12863 | REAL_CONST(76680.210052985349/8.0), | ||
12864 | REAL_CONST(76702.398416227341/8.0), | ||
12865 | REAL_CONST(76724.588384240138/8.0), | ||
12866 | REAL_CONST(76746.779956791637/8.0), | ||
12867 | REAL_CONST(76768.973133649866/8.0), | ||
12868 | REAL_CONST(76791.167914582897/8.0), | ||
12869 | REAL_CONST(76813.364299358902/8.0), | ||
12870 | REAL_CONST(76835.562287746157/8.0), | ||
12871 | REAL_CONST(76857.761879512967/8.0), | ||
12872 | REAL_CONST(76879.963074427797/8.0), | ||
12873 | REAL_CONST(76902.165872259109/8.0), | ||
12874 | REAL_CONST(76924.37027277553/8.0), | ||
12875 | REAL_CONST(76946.576275745727/8.0), | ||
12876 | REAL_CONST(76968.783880938441/8.0), | ||
12877 | REAL_CONST(76990.993088122515/8.0), | ||
12878 | REAL_CONST(77013.203897066895/8.0), | ||
12879 | REAL_CONST(77035.416307540567/8.0), | ||
12880 | REAL_CONST(77057.630319312622/8.0), | ||
12881 | REAL_CONST(77079.845932152239/8.0), | ||
12882 | REAL_CONST(77102.063145828695/8.0), | ||
12883 | REAL_CONST(77124.281960111301/8.0), | ||
12884 | REAL_CONST(77146.50237476948/8.0), | ||
12885 | REAL_CONST(77168.724389572759/8.0), | ||
12886 | REAL_CONST(77190.948004290723/8.0), | ||
12887 | REAL_CONST(77213.173218693031/8.0), | ||
12888 | REAL_CONST(77235.400032549442/8.0), | ||
12889 | REAL_CONST(77257.628445629802/8.0), | ||
12890 | REAL_CONST(77279.858457704031/8.0), | ||
12891 | REAL_CONST(77302.090068542122/8.0), | ||
12892 | REAL_CONST(77324.323277914169/8.0), | ||
12893 | REAL_CONST(77346.558085590339/8.0), | ||
12894 | REAL_CONST(77368.794491340886/8.0), | ||
12895 | REAL_CONST(77391.032494936138/8.0), | ||
12896 | REAL_CONST(77413.272096146524/8.0), | ||
12897 | REAL_CONST(77435.51329474253/8.0), | ||
12898 | REAL_CONST(77457.756090494731/8.0), | ||
12899 | REAL_CONST(77480.000483173804/8.0), | ||
12900 | REAL_CONST(77502.246472550498/8.0), | ||
12901 | REAL_CONST(77524.494058395634/8.0), | ||
12902 | REAL_CONST(77546.743240480107/8.0), | ||
12903 | REAL_CONST(77568.994018574944/8.0), | ||
12904 | REAL_CONST(77591.246392451198/8.0), | ||
12905 | REAL_CONST(77613.500361880026/8.0), | ||
12906 | REAL_CONST(77635.755926632657/8.0), | ||
12907 | REAL_CONST(77658.013086480438/8.0), | ||
12908 | REAL_CONST(77680.271841194757/8.0), | ||
12909 | REAL_CONST(77702.532190547092/8.0), | ||
12910 | REAL_CONST(77724.794134309021/8.0), | ||
12911 | REAL_CONST(77747.057672252195/8.0), | ||
12912 | REAL_CONST(77769.322804148323/8.0), | ||
12913 | REAL_CONST(77791.589529769248/8.0), | ||
12914 | REAL_CONST(77813.857848886837/8.0), | ||
12915 | REAL_CONST(77836.127761273063/8.0), | ||
12916 | REAL_CONST(77858.399266699998/8.0), | ||
12917 | REAL_CONST(77880.67236493979/8.0), | ||
12918 | REAL_CONST(77902.947055764627/8.0), | ||
12919 | REAL_CONST(77925.223338946831/8.0), | ||
12920 | REAL_CONST(77947.50121425878/8.0), | ||
12921 | REAL_CONST(77969.780681472927/8.0), | ||
12922 | REAL_CONST(77992.061740361838/8.0), | ||
12923 | REAL_CONST(78014.344390698127/8.0), | ||
12924 | REAL_CONST(78036.628632254491/8.0), | ||
12925 | REAL_CONST(78058.914464803747/8.0), | ||
12926 | REAL_CONST(78081.201888118725/8.0), | ||
12927 | REAL_CONST(78103.490901972415/8.0), | ||
12928 | REAL_CONST(78125.781506137821/8.0), | ||
12929 | REAL_CONST(78148.073700388064/8.0), | ||
12930 | REAL_CONST(78170.367484496339/8.0), | ||
12931 | REAL_CONST(78192.662858235926/8.0), | ||
12932 | REAL_CONST(78214.959821380166/8.0), | ||
12933 | REAL_CONST(78237.258373702498/8.0), | ||
12934 | REAL_CONST(78259.558514976452/8.0), | ||
12935 | REAL_CONST(78281.860244975614/8.0), | ||
12936 | REAL_CONST(78304.163563473659/8.0), | ||
12937 | REAL_CONST(78326.468470244363/8.0), | ||
12938 | REAL_CONST(78348.77496506153/8.0), | ||
12939 | REAL_CONST(78371.083047699125/8.0), | ||
12940 | REAL_CONST(78393.392717931114/8.0), | ||
12941 | REAL_CONST(78415.703975531578/8.0), | ||
12942 | REAL_CONST(78438.016820274701/8.0), | ||
12943 | REAL_CONST(78460.331251934695/8.0), | ||
12944 | REAL_CONST(78482.647270285903/8.0), | ||
12945 | REAL_CONST(78504.964875102727/8.0), | ||
12946 | REAL_CONST(78527.284066159627/8.0), | ||
12947 | REAL_CONST(78549.604843231195/8.0), | ||
12948 | REAL_CONST(78571.927206092048/8.0), | ||
12949 | REAL_CONST(78594.251154516911/8.0), | ||
12950 | REAL_CONST(78616.576688280606/8.0), | ||
12951 | REAL_CONST(78638.903807157985/8.0), | ||
12952 | REAL_CONST(78661.232510924034/8.0), | ||
12953 | REAL_CONST(78683.562799353778/8.0), | ||
12954 | REAL_CONST(78705.894672222363/8.0), | ||
12955 | REAL_CONST(78728.228129304945/8.0), | ||
12956 | REAL_CONST(78750.563170376859/8.0), | ||
12957 | REAL_CONST(78772.899795213423/8.0), | ||
12958 | REAL_CONST(78795.238003590101/8.0), | ||
12959 | REAL_CONST(78817.577795282399/8.0), | ||
12960 | REAL_CONST(78839.919170065928/8.0), | ||
12961 | REAL_CONST(78862.262127716356/8.0), | ||
12962 | REAL_CONST(78884.606668009452/8.0), | ||
12963 | REAL_CONST(78906.952790721043/8.0), | ||
12964 | REAL_CONST(78929.300495627045/8.0), | ||
12965 | REAL_CONST(78951.64978250346/8.0), | ||
12966 | REAL_CONST(78974.000651126378/8.0), | ||
12967 | REAL_CONST(78996.353101271932/8.0), | ||
12968 | REAL_CONST(79018.707132716358/8.0), | ||
12969 | REAL_CONST(79041.062745235977/8.0), | ||
12970 | REAL_CONST(79063.41993860717/8.0), | ||
12971 | REAL_CONST(79085.778712606436/8.0), | ||
12972 | REAL_CONST(79108.139067010285/8.0), | ||
12973 | REAL_CONST(79130.501001595389/8.0), | ||
12974 | REAL_CONST(79152.864516138419/8.0), | ||
12975 | REAL_CONST(79175.22961041618/8.0), | ||
12976 | REAL_CONST(79197.596284205531/8.0), | ||
12977 | REAL_CONST(79219.96453728342/8.0), | ||
12978 | REAL_CONST(79242.33436942687/8.0), | ||
12979 | REAL_CONST(79264.705780412987/8.0), | ||
12980 | REAL_CONST(79287.078770018954/8.0), | ||
12981 | REAL_CONST(79309.453338022009/8.0), | ||
12982 | REAL_CONST(79331.829484199508/8.0), | ||
12983 | REAL_CONST(79354.207208328866/8.0), | ||
12984 | REAL_CONST(79376.586510187582/8.0), | ||
12985 | REAL_CONST(79398.967389553218/8.0), | ||
12986 | REAL_CONST(79421.349846203433/8.0), | ||
12987 | REAL_CONST(79443.733879915948/8.0), | ||
12988 | REAL_CONST(79466.119490468584/8.0), | ||
12989 | REAL_CONST(79488.50667763922/8.0), | ||
12990 | REAL_CONST(79510.895441205823/8.0), | ||
12991 | REAL_CONST(79533.285780946433/8.0), | ||
12992 | REAL_CONST(79555.677696639163/8.0), | ||
12993 | REAL_CONST(79578.071188062226/8.0), | ||
12994 | REAL_CONST(79600.466254993895/8.0), | ||
12995 | REAL_CONST(79622.862897212515/8.0), | ||
12996 | REAL_CONST(79645.261114496549/8.0), | ||
12997 | REAL_CONST(79667.660906624471/8.0), | ||
12998 | REAL_CONST(79690.062273374875/8.0), | ||
12999 | REAL_CONST(79712.465214526455/8.0), | ||
13000 | REAL_CONST(79734.869729857935/8.0), | ||
13001 | REAL_CONST(79757.275819148126/8.0), | ||
13002 | REAL_CONST(79779.683482175955/8.0), | ||
13003 | REAL_CONST(79802.092718720378/8.0), | ||
13004 | REAL_CONST(79824.503528560454/8.0), | ||
13005 | REAL_CONST(79846.915911475327/8.0), | ||
13006 | REAL_CONST(79869.329867244203/8.0), | ||
13007 | REAL_CONST(79891.745395646343/8.0), | ||
13008 | REAL_CONST(79914.162496461155/8.0), | ||
13009 | REAL_CONST(79936.581169468045/8.0), | ||
13010 | REAL_CONST(79959.001414446553/8.0), | ||
13011 | REAL_CONST(79981.423231176261/8.0), | ||
13012 | REAL_CONST(80003.846619436852/8.0), | ||
13013 | REAL_CONST(80026.271579008084/8.0), | ||
13014 | REAL_CONST(80048.698109669771/8.0), | ||
13015 | REAL_CONST(80071.12621120183/8.0), | ||
13016 | REAL_CONST(80093.555883384237/8.0), | ||
13017 | REAL_CONST(80115.987125997053/8.0), | ||
13018 | REAL_CONST(80138.419938820414/8.0), | ||
13019 | REAL_CONST(80160.854321634528/8.0), | ||
13020 | REAL_CONST(80183.290274219689/8.0), | ||
13021 | REAL_CONST(80205.727796356281/8.0), | ||
13022 | REAL_CONST(80228.166887824715/8.0), | ||
13023 | REAL_CONST(80250.607548405547/8.0), | ||
13024 | REAL_CONST(80273.049777879336/8.0), | ||
13025 | REAL_CONST(80295.493576026798/8.0), | ||
13026 | REAL_CONST(80317.938942628651/8.0), | ||
13027 | REAL_CONST(80340.385877465727/8.0), | ||
13028 | REAL_CONST(80362.834380318949/8.0), | ||
13029 | REAL_CONST(80385.28445096928/8.0), | ||
13030 | REAL_CONST(80407.736089197788/8.0), | ||
13031 | REAL_CONST(80430.189294785596/8.0), | ||
13032 | REAL_CONST(80452.644067513917/8.0), | ||
13033 | REAL_CONST(80475.100407164035/8.0), | ||
13034 | REAL_CONST(80497.558313517322/8.0), | ||
13035 | REAL_CONST(80520.017786355209/8.0), | ||
13036 | REAL_CONST(80542.478825459213/8.0), | ||
13037 | REAL_CONST(80564.941430610925/8.0), | ||
13038 | REAL_CONST(80587.405601592007/8.0), | ||
13039 | REAL_CONST(80609.871338184195/8.0), | ||
13040 | REAL_CONST(80632.338640169342/8.0), | ||
13041 | REAL_CONST(80654.8075073293/8.0), | ||
13042 | REAL_CONST(80677.277939446067/8.0), | ||
13043 | REAL_CONST(80699.749936301683/8.0), | ||
13044 | REAL_CONST(80722.223497678278/8.0), | ||
13045 | REAL_CONST(80744.698623358039/8.0), | ||
13046 | REAL_CONST(80767.17531312324/8.0), | ||
13047 | REAL_CONST(80789.653566756242/8.0), | ||
13048 | REAL_CONST(80812.133384039465/8.0), | ||
13049 | REAL_CONST(80834.614764755403/8.0), | ||
13050 | REAL_CONST(80857.097708686648/8.0), | ||
13051 | REAL_CONST(80879.582215615854/8.0), | ||
13052 | REAL_CONST(80902.068285325731/8.0), | ||
13053 | REAL_CONST(80924.555917599093/8.0), | ||
13054 | REAL_CONST(80947.045112218824/8.0), | ||
13055 | REAL_CONST(80969.535868967869/8.0), | ||
13056 | REAL_CONST(80992.028187629272/8.0), | ||
13057 | REAL_CONST(81014.522067986123/8.0), | ||
13058 | REAL_CONST(81037.017509821613/8.0), | ||
13059 | REAL_CONST(81059.514512919006/8.0), | ||
13060 | REAL_CONST(81082.013077061609/8.0), | ||
13061 | REAL_CONST(81104.513202032831/8.0), | ||
13062 | REAL_CONST(81127.014887616184/8.0), | ||
13063 | REAL_CONST(81149.518133595193/8.0), | ||
13064 | REAL_CONST(81172.022939753486/8.0), | ||
13065 | REAL_CONST(81194.529305874807/8.0), | ||
13066 | REAL_CONST(81217.037231742899/8.0), | ||
13067 | REAL_CONST(81239.546717141639/8.0), | ||
13068 | REAL_CONST(81262.057761854958/8.0), | ||
13069 | REAL_CONST(81284.570365666848/8.0), | ||
13070 | REAL_CONST(81307.084528361403/8.0), | ||
13071 | REAL_CONST(81329.600249722775/8.0), | ||
13072 | REAL_CONST(81352.117529535186/8.0), | ||
13073 | REAL_CONST(81374.636367582949/8.0), | ||
13074 | REAL_CONST(81397.156763650448/8.0), | ||
13075 | REAL_CONST(81419.678717522125/8.0), | ||
13076 | REAL_CONST(81442.202228982511/8.0), | ||
13077 | REAL_CONST(81464.727297816222/8.0), | ||
13078 | REAL_CONST(81487.253923807933/8.0), | ||
13079 | REAL_CONST(81509.782106742379/8.0), | ||
13080 | REAL_CONST(81532.311846404409/8.0), | ||
13081 | REAL_CONST(81554.843142578902/8.0), | ||
13082 | REAL_CONST(81577.375995050839/8.0), | ||
13083 | REAL_CONST(81599.910403605274/8.0), | ||
13084 | REAL_CONST(81622.446368027333/8.0), | ||
13085 | REAL_CONST(81644.983888102215/8.0), | ||
13086 | REAL_CONST(81667.522963615178/8.0), | ||
13087 | REAL_CONST(81690.063594351581/8.0), | ||
13088 | REAL_CONST(81712.605780096841/8.0), | ||
13089 | REAL_CONST(81735.149520636449/8.0), | ||
13090 | REAL_CONST(81757.694815755967/8.0), | ||
13091 | REAL_CONST(81780.241665241047/8.0), | ||
13092 | REAL_CONST(81802.79006887741/8.0), | ||
13093 | REAL_CONST(81825.340026450824/8.0), | ||
13094 | REAL_CONST(81847.891537747171/8.0), | ||
13095 | REAL_CONST(81870.444602552379/8.0), | ||
13096 | REAL_CONST(81892.999220652477/8.0), | ||
13097 | REAL_CONST(81915.555391833506/8.0), | ||
13098 | REAL_CONST(81938.113115881672/8.0), | ||
13099 | REAL_CONST(81960.672392583176/8.0), | ||
13100 | REAL_CONST(81983.233221724338/8.0), | ||
13101 | REAL_CONST(82005.795603091537/8.0), | ||
13102 | REAL_CONST(82028.359536471224/8.0), | ||
13103 | REAL_CONST(82050.925021649906/8.0), | ||
13104 | REAL_CONST(82073.492058414209/8.0), | ||
13105 | REAL_CONST(82096.060646550788/8.0), | ||
13106 | REAL_CONST(82118.630785846399/8.0), | ||
13107 | REAL_CONST(82141.202476087841/8.0), | ||
13108 | REAL_CONST(82163.775717062032/8.0), | ||
13109 | REAL_CONST(82186.35050855593/8.0), | ||
13110 | REAL_CONST(82208.926850356569/8.0), | ||
13111 | REAL_CONST(82231.504742251054/8.0), | ||
13112 | REAL_CONST(82254.084184026578/8.0), | ||
13113 | REAL_CONST(82276.665175470393/8.0), | ||
13114 | REAL_CONST(82299.24771636985/8.0), | ||
13115 | REAL_CONST(82321.831806512317/8.0), | ||
13116 | REAL_CONST(82344.417445685307/8.0), | ||
13117 | REAL_CONST(82367.004633676348/8.0), | ||
13118 | REAL_CONST(82389.593370273054/8.0), | ||
13119 | REAL_CONST(82412.183655263143/8.0), | ||
13120 | REAL_CONST(82434.775488434374/8.0), | ||
13121 | REAL_CONST(82457.368869574595/8.0), | ||
13122 | REAL_CONST(82479.963798471697/8.0), | ||
13123 | REAL_CONST(82502.560274913689/8.0), | ||
13124 | REAL_CONST(82525.158298688606/8.0), | ||
13125 | REAL_CONST(82547.757869584602/8.0), | ||
13126 | REAL_CONST(82570.35898738986/8.0), | ||
13127 | REAL_CONST(82592.961651892678/8.0), | ||
13128 | REAL_CONST(82615.565862881398/8.0), | ||
13129 | REAL_CONST(82638.171620144421/8.0), | ||
13130 | REAL_CONST(82660.778923470265/8.0), | ||
13131 | REAL_CONST(82683.387772647475/8.0), | ||
13132 | REAL_CONST(82705.998167464713/8.0), | ||
13133 | REAL_CONST(82728.610107710658/8.0), | ||
13134 | REAL_CONST(82751.223593174116/8.0), | ||
13135 | REAL_CONST(82773.83862364394/8.0), | ||
13136 | REAL_CONST(82796.45519890904/8.0), | ||
13137 | REAL_CONST(82819.073318758441/8.0), | ||
13138 | REAL_CONST(82841.692982981185/8.0), | ||
13139 | REAL_CONST(82864.314191366429/8.0), | ||
13140 | REAL_CONST(82886.936943703375/8.0), | ||
13141 | REAL_CONST(82909.561239781324/8.0), | ||
13142 | REAL_CONST(82932.187079389638/8.0), | ||
13143 | REAL_CONST(82954.814462317736/8.0), | ||
13144 | REAL_CONST(82977.443388355125/8.0), | ||
13145 | REAL_CONST(83000.073857291369/8.0), | ||
13146 | REAL_CONST(83022.70586891612/8.0), | ||
13147 | REAL_CONST(83045.339423019104/8.0), | ||
13148 | REAL_CONST(83067.974519390089/8.0), | ||
13149 | REAL_CONST(83090.611157818959/8.0), | ||
13150 | REAL_CONST(83113.249338095629/8.0), | ||
13151 | REAL_CONST(83135.8890600101/8.0), | ||
13152 | REAL_CONST(83158.530323352461/8.0), | ||
13153 | REAL_CONST(83181.173127912858/8.0), | ||
13154 | REAL_CONST(83203.817473481497/8.0), | ||
13155 | REAL_CONST(83226.463359848669/8.0), | ||
13156 | REAL_CONST(83249.11078680474/8.0), | ||
13157 | REAL_CONST(83271.759754140134/8.0), | ||
13158 | REAL_CONST(83294.410261645375/8.0), | ||
13159 | REAL_CONST(83317.062309111003/8.0), | ||
13160 | REAL_CONST(83339.715896327703/8.0), | ||
13161 | REAL_CONST(83362.371023086147/8.0), | ||
13162 | REAL_CONST(83385.027689177165/8.0), | ||
13163 | REAL_CONST(83407.685894391587/8.0), | ||
13164 | REAL_CONST(83430.345638520361/8.0), | ||
13165 | REAL_CONST(83453.006921354478/8.0), | ||
13166 | REAL_CONST(83475.669742685001/8.0), | ||
13167 | REAL_CONST(83498.334102303095/8.0), | ||
13168 | REAL_CONST(83520.999999999942/8.0), | ||
13169 | REAL_CONST(83543.667435566866/8.0), | ||
13170 | REAL_CONST(83566.336408795192/8.0), | ||
13171 | REAL_CONST(83589.006919476349/8.0), | ||
13172 | REAL_CONST(83611.678967401851/8.0), | ||
13173 | REAL_CONST(83634.352552363242/8.0), | ||
13174 | REAL_CONST(83657.027674152167/8.0), | ||
13175 | REAL_CONST(83679.704332560359/8.0), | ||
13176 | REAL_CONST(83702.382527379552/8.0), | ||
13177 | REAL_CONST(83725.062258401638/8.0), | ||
13178 | REAL_CONST(83747.743525418511/8.0), | ||
13179 | REAL_CONST(83770.42632822218/8.0), | ||
13180 | REAL_CONST(83793.110666604684/8.0), | ||
13181 | REAL_CONST(83815.796540358162/8.0), | ||
13182 | REAL_CONST(83838.483949274829/8.0), | ||
13183 | REAL_CONST(83861.172893146941/8.0), | ||
13184 | REAL_CONST(83883.863371766842/8.0), | ||
13185 | REAL_CONST(83906.555384926964/8.0), | ||
13186 | REAL_CONST(83929.248932419752/8.0), | ||
13187 | REAL_CONST(83951.944014037799/8.0), | ||
13188 | REAL_CONST(83974.640629573696/8.0), | ||
13189 | REAL_CONST(83997.338778820151/8.0), | ||
13190 | REAL_CONST(84020.038461569929/8.0), | ||
13191 | REAL_CONST(84042.739677615857/8.0), | ||
13192 | REAL_CONST(84065.442426750829/8.0), | ||
13193 | REAL_CONST(84088.146708767847/8.0), | ||
13194 | REAL_CONST(84110.852523459922/8.0), | ||
13195 | REAL_CONST(84133.559870620171/8.0), | ||
13196 | REAL_CONST(84156.268750041796/8.0), | ||
13197 | REAL_CONST(84178.979161518029/8.0), | ||
13198 | REAL_CONST(84201.691104842204/8.0), | ||
13199 | REAL_CONST(84224.404579807713/8.0), | ||
13200 | REAL_CONST(84247.119586208006/8.0), | ||
13201 | REAL_CONST(84269.83612383662/8.0), | ||
13202 | REAL_CONST(84292.55419248715/8.0), | ||
13203 | REAL_CONST(84315.273791953281/8.0), | ||
13204 | REAL_CONST(84337.994922028738/8.0), | ||
13205 | REAL_CONST(84360.717582507335/8.0), | ||
13206 | REAL_CONST(84383.441773182945/8.0), | ||
13207 | REAL_CONST(84406.167493849513/8.0), | ||
13208 | REAL_CONST(84428.894744301069/8.0), | ||
13209 | REAL_CONST(84451.623524331691/8.0), | ||
13210 | REAL_CONST(84474.353833735542/8.0), | ||
13211 | REAL_CONST(84497.085672306828/8.0), | ||
13212 | REAL_CONST(84519.819039839858/8.0), | ||
13213 | REAL_CONST(84542.553936128999/8.0), | ||
13214 | REAL_CONST(84565.290360968676/8.0), | ||
13215 | REAL_CONST(84588.028314153402/8.0), | ||
13216 | REAL_CONST(84610.767795477717/8.0), | ||
13217 | REAL_CONST(84633.508804736295/8.0), | ||
13218 | REAL_CONST(84656.251341723822/8.0), | ||
13219 | REAL_CONST(84678.995406235073/8.0), | ||
13220 | REAL_CONST(84701.740998064924/8.0), | ||
13221 | REAL_CONST(84724.488117008252/8.0), | ||
13222 | REAL_CONST(84747.236762860062/8.0), | ||
13223 | REAL_CONST(84769.986935415407/8.0), | ||
13224 | REAL_CONST(84792.73863446941/8.0), | ||
13225 | REAL_CONST(84815.491859817252/8.0), | ||
13226 | REAL_CONST(84838.246611254188/8.0), | ||
13227 | REAL_CONST(84861.002888575575/8.0), | ||
13228 | REAL_CONST(84883.760691576768/8.0), | ||
13229 | REAL_CONST(84906.520020053256/8.0), | ||
13230 | REAL_CONST(84929.28087380057/8.0), | ||
13231 | REAL_CONST(84952.043252614312/8.0), | ||
13232 | REAL_CONST(84974.807156290146/8.0), | ||
13233 | REAL_CONST(84997.572584623806/8.0), | ||
13234 | REAL_CONST(85020.339537411113/8.0), | ||
13235 | REAL_CONST(85043.108014447949/8.0), | ||
13236 | REAL_CONST(85065.878015530237/8.0), | ||
13237 | REAL_CONST(85088.649540453989/8.0), | ||
13238 | REAL_CONST(85111.422589015303/8.0), | ||
13239 | REAL_CONST(85134.197161010321/8.0), | ||
13240 | REAL_CONST(85156.973256235244/8.0), | ||
13241 | REAL_CONST(85179.750874486374/8.0), | ||
13242 | REAL_CONST(85202.530015560071/8.0), | ||
13243 | REAL_CONST(85225.310679252725/8.0), | ||
13244 | REAL_CONST(85248.092865360857/8.0), | ||
13245 | REAL_CONST(85270.876573681016/8.0), | ||
13246 | REAL_CONST(85293.661804009811/8.0), | ||
13247 | REAL_CONST(85316.448556143951/8.0), | ||
13248 | REAL_CONST(85339.236829880188/8.0), | ||
13249 | REAL_CONST(85362.026625015351/8.0), | ||
13250 | REAL_CONST(85384.817941346351/8.0), | ||
13251 | REAL_CONST(85407.610778670132/8.0), | ||
13252 | REAL_CONST(85430.405136783724/8.0), | ||
13253 | REAL_CONST(85453.201015484257/8.0), | ||
13254 | REAL_CONST(85475.998414568865/8.0), | ||
13255 | REAL_CONST(85498.797333834795/8.0), | ||
13256 | REAL_CONST(85521.597773079353/8.0), | ||
13257 | REAL_CONST(85544.399732099904/8.0), | ||
13258 | REAL_CONST(85567.203210693886/8.0), | ||
13259 | REAL_CONST(85590.008208658808/8.0), | ||
13260 | REAL_CONST(85612.814725792239/8.0), | ||
13261 | REAL_CONST(85635.62276189182/8.0), | ||
13262 | REAL_CONST(85658.432316755265/8.0), | ||
13263 | REAL_CONST(85681.243390180331/8.0), | ||
13264 | REAL_CONST(85704.055981964877/8.0), | ||
13265 | REAL_CONST(85726.870091906807/8.0), | ||
13266 | REAL_CONST(85749.685719804082/8.0), | ||
13267 | REAL_CONST(85772.502865454764/8.0), | ||
13268 | REAL_CONST(85795.321528656961/8.0), | ||
13269 | REAL_CONST(85818.141709208852/8.0), | ||
13270 | REAL_CONST(85840.963406908675/8.0), | ||
13271 | REAL_CONST(85863.78662155474/8.0), | ||
13272 | REAL_CONST(85886.611352945445/8.0), | ||
13273 | REAL_CONST(85909.437600879217/8.0), | ||
13274 | REAL_CONST(85932.26536515457/8.0), | ||
13275 | REAL_CONST(85955.094645570091/8.0), | ||
13276 | REAL_CONST(85977.92544192441/8.0), | ||
13277 | REAL_CONST(86000.757754016275/8.0), | ||
13278 | REAL_CONST(86023.591581644432/8.0), | ||
13279 | REAL_CONST(86046.426924607746/8.0), | ||
13280 | REAL_CONST(86069.263782705122/8.0), | ||
13281 | REAL_CONST(86092.102155735556/8.0), | ||
13282 | REAL_CONST(86114.942043498071/8.0), | ||
13283 | REAL_CONST(86137.783445791807/8.0), | ||
13284 | REAL_CONST(86160.626362415918/8.0), | ||
13285 | REAL_CONST(86183.470793169676/8.0), | ||
13286 | REAL_CONST(86206.316737852379/8.0), | ||
13287 | REAL_CONST(86229.164196263402/8.0), | ||
13288 | REAL_CONST(86252.013168202204/8.0), | ||
13289 | REAL_CONST(86274.863653468303/8.0), | ||
13290 | REAL_CONST(86297.715651861261/8.0), | ||
13291 | REAL_CONST(86320.569163180728/8.0), | ||
13292 | REAL_CONST(86343.424187226425/8.0), | ||
13293 | REAL_CONST(86366.280723798132/8.0), | ||
13294 | REAL_CONST(86389.138772695675/8.0), | ||
13295 | REAL_CONST(86411.998333718977/8.0), | ||
13296 | REAL_CONST(86434.859406668009/8.0), | ||
13297 | REAL_CONST(86457.721991342827/8.0), | ||
13298 | REAL_CONST(86480.586087543532/8.0), | ||
13299 | REAL_CONST(86503.451695070296/8.0), | ||
13300 | REAL_CONST(86526.318813723352/8.0), | ||
13301 | REAL_CONST(86549.187443303032/8.0), | ||
13302 | REAL_CONST(86572.057583609683/8.0), | ||
13303 | REAL_CONST(86594.929234443756/8.0), | ||
13304 | REAL_CONST(86617.802395605773/8.0), | ||
13305 | REAL_CONST(86640.677066896271/8.0), | ||
13306 | REAL_CONST(86663.553248115903/8.0), | ||
13307 | REAL_CONST(86686.43093906538/8.0), | ||
13308 | REAL_CONST(86709.310139545443/8.0), | ||
13309 | REAL_CONST(86732.190849356964/8.0), | ||
13310 | REAL_CONST(86755.073068300815/8.0), | ||
13311 | REAL_CONST(86777.956796177954/8.0), | ||
13312 | REAL_CONST(86800.842032789442/8.0), | ||
13313 | REAL_CONST(86823.728777936354/8.0), | ||
13314 | REAL_CONST(86846.617031419853/8.0), | ||
13315 | REAL_CONST(86869.506793041175/8.0), | ||
13316 | REAL_CONST(86892.398062601613/8.0), | ||
13317 | REAL_CONST(86915.290839902518/8.0), | ||
13318 | REAL_CONST(86938.185124745316/8.0), | ||
13319 | REAL_CONST(86961.080916931489/8.0), | ||
13320 | REAL_CONST(86983.978216262592/8.0), | ||
13321 | REAL_CONST(87006.87702254027/8.0), | ||
13322 | REAL_CONST(87029.777335566177/8.0), | ||
13323 | REAL_CONST(87052.67915514209/8.0), | ||
13324 | REAL_CONST(87075.582481069796/8.0), | ||
13325 | REAL_CONST(87098.487313151185/8.0), | ||
13326 | REAL_CONST(87121.39365118822/8.0), | ||
13327 | REAL_CONST(87144.301494982894/8.0), | ||
13328 | REAL_CONST(87167.210844337285/8.0), | ||
13329 | REAL_CONST(87190.121699053532/8.0), | ||
13330 | REAL_CONST(87213.034058933845/8.0), | ||
13331 | REAL_CONST(87235.947923780506/8.0), | ||
13332 | REAL_CONST(87258.863293395829/8.0), | ||
13333 | REAL_CONST(87281.780167582241/8.0), | ||
13334 | REAL_CONST(87304.698546142172/8.0), | ||
13335 | REAL_CONST(87327.618428878181/8.0), | ||
13336 | REAL_CONST(87350.539815592856/8.0), | ||
13337 | REAL_CONST(87373.462706088845/8.0), | ||
13338 | REAL_CONST(87396.387100168897/8.0), | ||
13339 | REAL_CONST(87419.312997635774/8.0), | ||
13340 | REAL_CONST(87442.240398292357/8.0), | ||
13341 | REAL_CONST(87465.16930194154/8.0), | ||
13342 | REAL_CONST(87488.099708386319/8.0), | ||
13343 | REAL_CONST(87511.031617429733/8.0), | ||
13344 | REAL_CONST(87533.965028874911/8.0), | ||
13345 | REAL_CONST(87556.899942525008/8.0), | ||
13346 | REAL_CONST(87579.836358183282/8.0), | ||
13347 | REAL_CONST(87602.774275653021/8.0), | ||
13348 | REAL_CONST(87625.713694737613/8.0), | ||
13349 | REAL_CONST(87648.654615240492/8.0), | ||
13350 | REAL_CONST(87671.597036965148/8.0), | ||
13351 | REAL_CONST(87694.540959715145/8.0), | ||
13352 | REAL_CONST(87717.486383294105/8.0), | ||
13353 | REAL_CONST(87740.433307505737/8.0), | ||
13354 | REAL_CONST(87763.381732153779/8.0), | ||
13355 | REAL_CONST(87786.331657042057/8.0), | ||
13356 | REAL_CONST(87809.283081974456/8.0), | ||
13357 | REAL_CONST(87832.236006754916/8.0), | ||
13358 | REAL_CONST(87855.190431187453/8.0), | ||
13359 | REAL_CONST(87878.146355076155/8.0), | ||
13360 | REAL_CONST(87901.103778225151/8.0), | ||
13361 | REAL_CONST(87924.062700438633/8.0), | ||
13362 | REAL_CONST(87947.023121520891/8.0), | ||
13363 | REAL_CONST(87969.985041276246/8.0), | ||
13364 | REAL_CONST(87992.948459509105/8.0), | ||
13365 | REAL_CONST(88015.913376023906/8.0), | ||
13366 | REAL_CONST(88038.879790625171/8.0), | ||
13367 | REAL_CONST(88061.847703117513/8.0), | ||
13368 | REAL_CONST(88084.817113305573/8.0), | ||
13369 | REAL_CONST(88107.788020994049/8.0), | ||
13370 | REAL_CONST(88130.760425987726/8.0), | ||
13371 | REAL_CONST(88153.734328091465/8.0), | ||
13372 | REAL_CONST(88176.709727110137/8.0), | ||
13373 | REAL_CONST(88199.686622848749/8.0), | ||
13374 | REAL_CONST(88222.665015112303/8.0), | ||
13375 | REAL_CONST(88245.644903705906/8.0), | ||
13376 | REAL_CONST(88268.626288434709/8.0), | ||
13377 | REAL_CONST(88291.609169103947/8.0), | ||
13378 | REAL_CONST(88314.593545518903/8.0), | ||
13379 | REAL_CONST(88337.579417484914/8.0), | ||
13380 | REAL_CONST(88360.566784807408/8.0), | ||
13381 | REAL_CONST(88383.555647291854/8.0), | ||
13382 | REAL_CONST(88406.546004743795/8.0), | ||
13383 | REAL_CONST(88429.537856968818/8.0), | ||
13384 | REAL_CONST(88452.531203772611/8.0), | ||
13385 | REAL_CONST(88475.52604496089/8.0), | ||
13386 | REAL_CONST(88498.522380339447/8.0), | ||
13387 | REAL_CONST(88521.52020971413/8.0), | ||
13388 | REAL_CONST(88544.519532890874/8.0), | ||
13389 | REAL_CONST(88567.520349675644/8.0), | ||
13390 | REAL_CONST(88590.522659874507/8.0), | ||
13391 | REAL_CONST(88613.526463293543/8.0), | ||
13392 | REAL_CONST(88636.531759738922/8.0), | ||
13393 | REAL_CONST(88659.538549016899/8.0), | ||
13394 | REAL_CONST(88682.546830933745/8.0), | ||
13395 | REAL_CONST(88705.556605295846/8.0), | ||
13396 | REAL_CONST(88728.567871909589/8.0), | ||
13397 | REAL_CONST(88751.580630581491/8.0), | ||
13398 | REAL_CONST(88774.594881118086/8.0), | ||
13399 | REAL_CONST(88797.610623325963/8.0), | ||
13400 | REAL_CONST(88820.62785701183/8.0), | ||
13401 | REAL_CONST(88843.646581982393/8.0), | ||
13402 | REAL_CONST(88866.666798044462/8.0), | ||
13403 | REAL_CONST(88889.688505004888/8.0), | ||
13404 | REAL_CONST(88912.711702670611/8.0), | ||
13405 | REAL_CONST(88935.7363908486/8.0), | ||
13406 | REAL_CONST(88958.762569345898/8.0), | ||
13407 | REAL_CONST(88981.790237969632/8.0), | ||
13408 | REAL_CONST(89004.81939652696/8.0), | ||
13409 | REAL_CONST(89027.850044825114/8.0), | ||
13410 | REAL_CONST(89050.882182671412/8.0), | ||
13411 | REAL_CONST(89073.9158098732/8.0), | ||
13412 | REAL_CONST(89096.950926237885/8.0), | ||
13413 | REAL_CONST(89119.987531572973/8.0), | ||
13414 | REAL_CONST(89143.025625686001/8.0), | ||
13415 | REAL_CONST(89166.065208384563/8.0), | ||
13416 | REAL_CONST(89189.106279476357/8.0), | ||
13417 | REAL_CONST(89212.148838769106/8.0), | ||
13418 | REAL_CONST(89235.192886070581/8.0), | ||
13419 | REAL_CONST(89258.238421188667/8.0), | ||
13420 | REAL_CONST(89281.285443931265/8.0), | ||
13421 | REAL_CONST(89304.333954106376/8.0), | ||
13422 | REAL_CONST(89327.383951522017/8.0), | ||
13423 | REAL_CONST(89350.435435986306/8.0), | ||
13424 | REAL_CONST(89373.488407307406/8.0), | ||
13425 | REAL_CONST(89396.542865293537/8.0), | ||
13426 | REAL_CONST(89419.598809753006/8.0), | ||
13427 | REAL_CONST(89442.656240494165/8.0), | ||
13428 | REAL_CONST(89465.715157325409/8.0), | ||
13429 | REAL_CONST(89488.775560055219/8.0), | ||
13430 | REAL_CONST(89511.837448492137/8.0), | ||
13431 | REAL_CONST(89534.900822444746/8.0), | ||
13432 | REAL_CONST(89557.965681721733/8.0), | ||
13433 | REAL_CONST(89581.032026131812/8.0), | ||
13434 | REAL_CONST(89604.099855483742/8.0), | ||
13435 | REAL_CONST(89627.169169586399/8.0), | ||
13436 | REAL_CONST(89650.239968248672/8.0), | ||
13437 | REAL_CONST(89673.312251279538/8.0), | ||
13438 | REAL_CONST(89696.386018488018/8.0), | ||
13439 | REAL_CONST(89719.461269683205/8.0), | ||
13440 | REAL_CONST(89742.53800467425/8.0), | ||
13441 | REAL_CONST(89765.616223270365/8.0), | ||
13442 | REAL_CONST(89788.69592528083/8.0), | ||
13443 | REAL_CONST(89811.777110514988/8.0), | ||
13444 | REAL_CONST(89834.859778782207/8.0), | ||
13445 | REAL_CONST(89857.943929891975/8.0), | ||
13446 | REAL_CONST(89881.029563653807/8.0), | ||
13447 | REAL_CONST(89904.116679877261/8.0), | ||
13448 | REAL_CONST(89927.205278372014/8.0), | ||
13449 | REAL_CONST(89950.29535894774/8.0), | ||
13450 | REAL_CONST(89973.386921414218/8.0), | ||
13451 | REAL_CONST(89996.479965581268/8.0), | ||
13452 | REAL_CONST(90019.574491258769/8.0), | ||
13453 | REAL_CONST(90042.670498256688/8.0), | ||
13454 | REAL_CONST(90065.767986385021/8.0), | ||
13455 | REAL_CONST(90088.866955453836/8.0), | ||
13456 | REAL_CONST(90111.967405273259/8.0), | ||
13457 | REAL_CONST(90135.069335653476/8.0), | ||
13458 | REAL_CONST(90158.172746404758/8.0), | ||
13459 | REAL_CONST(90181.277637337407/8.0), | ||
13460 | REAL_CONST(90204.384008261797/8.0), | ||
13461 | REAL_CONST(90227.49185898836/8.0), | ||
13462 | REAL_CONST(90250.601189327586/8.0), | ||
13463 | REAL_CONST(90273.711999090039/8.0), | ||
13464 | REAL_CONST(90296.824288086325/8.0), | ||
13465 | REAL_CONST(90319.938056127125/8.0), | ||
13466 | REAL_CONST(90343.053303023189/8.0), | ||
13467 | REAL_CONST(90366.170028585286/8.0), | ||
13468 | REAL_CONST(90389.288232624298/8.0), | ||
13469 | REAL_CONST(90412.407914951138/8.0), | ||
13470 | REAL_CONST(90435.529075376777/8.0), | ||
13471 | REAL_CONST(90458.651713712257/8.0), | ||
13472 | REAL_CONST(90481.775829768681/8.0), | ||
13473 | REAL_CONST(90504.901423357209/8.0), | ||
13474 | REAL_CONST(90528.028494289058/8.0), | ||
13475 | REAL_CONST(90551.157042375504/8.0), | ||
13476 | REAL_CONST(90574.287067427911/8.0), | ||
13477 | REAL_CONST(90597.418569257643/8.0), | ||
13478 | REAL_CONST(90620.551547676194/8.0), | ||
13479 | REAL_CONST(90643.686002495073/8.0), | ||
13480 | REAL_CONST(90666.821933525847/8.0), | ||
13481 | REAL_CONST(90689.959340580186/8.0), | ||
13482 | REAL_CONST(90713.098223469773/8.0), | ||
13483 | REAL_CONST(90736.238582006365/8.0), | ||
13484 | REAL_CONST(90759.380416001804/8.0), | ||
13485 | REAL_CONST(90782.523725267951/8.0), | ||
13486 | REAL_CONST(90805.668509616764/8.0), | ||
13487 | REAL_CONST(90828.814768860233/8.0), | ||
13488 | REAL_CONST(90851.962502810435/8.0), | ||
13489 | REAL_CONST(90875.11171127946/8.0), | ||
13490 | REAL_CONST(90898.262394079517/8.0), | ||
13491 | REAL_CONST(90921.414551022855/8.0), | ||
13492 | REAL_CONST(90944.568181921743/8.0), | ||
13493 | REAL_CONST(90967.72328658856/8.0), | ||
13494 | REAL_CONST(90990.879864835719/8.0), | ||
13495 | REAL_CONST(91014.037916475718/8.0), | ||
13496 | REAL_CONST(91037.19744132107/8.0), | ||
13497 | REAL_CONST(91060.358439184391/8.0), | ||
13498 | REAL_CONST(91083.520909878338/8.0), | ||
13499 | REAL_CONST(91106.684853215629/8.0), | ||
13500 | REAL_CONST(91129.850269009039/8.0), | ||
13501 | REAL_CONST(91153.017157071401/8.0), | ||
13502 | REAL_CONST(91176.185517215621/8.0), | ||
13503 | REAL_CONST(91199.355349254649/8.0), | ||
13504 | REAL_CONST(91222.526653001492/8.0), | ||
13505 | REAL_CONST(91245.699428269247/8.0), | ||
13506 | REAL_CONST(91268.873674871036/8.0), | ||
13507 | REAL_CONST(91292.049392620058/8.0), | ||
13508 | REAL_CONST(91315.226581329553/8.0), | ||
13509 | REAL_CONST(91338.405240812834/8.0), | ||
13510 | REAL_CONST(91361.585370883287/8.0), | ||
13511 | REAL_CONST(91384.766971354344/8.0), | ||
13512 | REAL_CONST(91407.950042039476/8.0), | ||
13513 | REAL_CONST(91431.134582752245/8.0), | ||
13514 | REAL_CONST(91454.320593306256/8.0), | ||
13515 | REAL_CONST(91477.508073515171/8.0), | ||
13516 | REAL_CONST(91500.697023192712/8.0), | ||
13517 | REAL_CONST(91523.887442152685/8.0), | ||
13518 | REAL_CONST(91547.07933020893/8.0), | ||
13519 | REAL_CONST(91570.272687175326/8.0), | ||
13520 | REAL_CONST(91593.467512865856/8.0), | ||
13521 | REAL_CONST(91616.663807094534/8.0), | ||
13522 | REAL_CONST(91639.861569675442/8.0), | ||
13523 | REAL_CONST(91663.060800422725/8.0), | ||
13524 | REAL_CONST(91686.261499150554/8.0), | ||
13525 | REAL_CONST(91709.463665673218/8.0), | ||
13526 | REAL_CONST(91732.66729980502/8.0), | ||
13527 | REAL_CONST(91755.872401360321/8.0), | ||
13528 | REAL_CONST(91779.078970153569/8.0), | ||
13529 | REAL_CONST(91802.287005999257/8.0), | ||
13530 | REAL_CONST(91825.49650871192/8.0), | ||
13531 | REAL_CONST(91848.707478106167/8.0), | ||
13532 | REAL_CONST(91871.91991399668/8.0), | ||
13533 | REAL_CONST(91895.133816198169/8.0), | ||
13534 | REAL_CONST(91918.349184525418/8.0), | ||
13535 | REAL_CONST(91941.566018793281/8.0), | ||
13536 | REAL_CONST(91964.784318816659/8.0), | ||
13537 | REAL_CONST(91988.004084410495/8.0), | ||
13538 | REAL_CONST(92011.22531538982/8.0), | ||
13539 | REAL_CONST(92034.448011569708/8.0), | ||
13540 | REAL_CONST(92057.672172765277/8.0), | ||
13541 | REAL_CONST(92080.897798791746/8.0), | ||
13542 | REAL_CONST(92104.124889464365/8.0), | ||
13543 | REAL_CONST(92127.353444598411/8.0), | ||
13544 | REAL_CONST(92150.58346400928/8.0), | ||
13545 | REAL_CONST(92173.814947512379/8.0), | ||
13546 | REAL_CONST(92197.04789492322/8.0), | ||
13547 | REAL_CONST(92220.282306057314/8.0), | ||
13548 | REAL_CONST(92243.518180730272/8.0), | ||
13549 | REAL_CONST(92266.755518757753/8.0), | ||
13550 | REAL_CONST(92289.994319955469/8.0), | ||
13551 | REAL_CONST(92313.234584139194/8.0), | ||
13552 | REAL_CONST(92336.476311124774/8.0), | ||
13553 | REAL_CONST(92359.719500728082/8.0), | ||
13554 | REAL_CONST(92382.964152765067/8.0), | ||
13555 | REAL_CONST(92406.210267051734/8.0), | ||
13556 | REAL_CONST(92429.457843404161/8.0), | ||
13557 | REAL_CONST(92452.706881638471/8.0), | ||
13558 | REAL_CONST(92475.957381570814/8.0), | ||
13559 | REAL_CONST(92499.209343017443/8.0), | ||
13560 | REAL_CONST(92522.462765794655/8.0), | ||
13561 | REAL_CONST(92545.717649718805/8.0), | ||
13562 | REAL_CONST(92568.973994606305/8.0), | ||
13563 | REAL_CONST(92592.231800273614/8.0), | ||
13564 | REAL_CONST(92615.491066537259/8.0), | ||
13565 | REAL_CONST(92638.751793213814/8.0), | ||
13566 | REAL_CONST(92662.01398011994/8.0), | ||
13567 | REAL_CONST(92685.277627072326/8.0), | ||
13568 | REAL_CONST(92708.54273388772/8.0), | ||
13569 | REAL_CONST(92731.809300382942/8.0), | ||
13570 | REAL_CONST(92755.077326374871/8.0), | ||
13571 | REAL_CONST(92778.346811680414/8.0), | ||
13572 | REAL_CONST(92801.617756116568/8.0), | ||
13573 | REAL_CONST(92824.890159500384/8.0), | ||
13574 | REAL_CONST(92848.164021648947/8.0), | ||
13575 | REAL_CONST(92871.439342379424/8.0), | ||
13576 | REAL_CONST(92894.716121509016/8.0), | ||
13577 | REAL_CONST(92917.994358855023/8.0), | ||
13578 | REAL_CONST(92941.274054234746/8.0), | ||
13579 | REAL_CONST(92964.555207465572/8.0), | ||
13580 | REAL_CONST(92987.837818364962/8.0), | ||
13581 | REAL_CONST(93011.121886750407/8.0), | ||
13582 | REAL_CONST(93034.407412439468/8.0), | ||
13583 | REAL_CONST(93057.694395249753/8.0), | ||
13584 | REAL_CONST(93080.982834998955/8.0), | ||
13585 | REAL_CONST(93104.272731504767/8.0), | ||
13586 | REAL_CONST(93127.564084584999/8.0), | ||
13587 | REAL_CONST(93150.856894057491/8.0), | ||
13588 | REAL_CONST(93174.15115974014/8.0), | ||
13589 | REAL_CONST(93197.446881450916/8.0), | ||
13590 | REAL_CONST(93220.744059007804/8.0), | ||
13591 | REAL_CONST(93244.04269222889/8.0), | ||
13592 | REAL_CONST(93267.342780932304/8.0), | ||
13593 | REAL_CONST(93290.644324936235/8.0), | ||
13594 | REAL_CONST(93313.947324058914/8.0), | ||
13595 | REAL_CONST(93337.251778118633/8.0), | ||
13596 | REAL_CONST(93360.557686933767/8.0), | ||
13597 | REAL_CONST(93383.865050322696/8.0), | ||
13598 | REAL_CONST(93407.173868103928/8.0), | ||
13599 | REAL_CONST(93430.484140095941/8.0), | ||
13600 | REAL_CONST(93453.795866117362/8.0), | ||
13601 | REAL_CONST(93477.109045986799/8.0), | ||
13602 | REAL_CONST(93500.423679522952/8.0), | ||
13603 | REAL_CONST(93523.739766544561/8.0), | ||
13604 | REAL_CONST(93547.057306870454/8.0), | ||
13605 | REAL_CONST(93570.376300319491/8.0), | ||
13606 | REAL_CONST(93593.696746710571/8.0), | ||
13607 | REAL_CONST(93617.018645862699/8.0), | ||
13608 | REAL_CONST(93640.341997594893/8.0), | ||
13609 | REAL_CONST(93663.666801726242/8.0), | ||
13610 | REAL_CONST(93686.993058075881/8.0), | ||
13611 | REAL_CONST(93710.320766463032/8.0), | ||
13612 | REAL_CONST(93733.64992670693/8.0), | ||
13613 | REAL_CONST(93756.980538626914/8.0), | ||
13614 | REAL_CONST(93780.312602042337/8.0), | ||
13615 | REAL_CONST(93803.646116772637/8.0), | ||
13616 | REAL_CONST(93826.981082637285/8.0), | ||
13617 | REAL_CONST(93850.317499455836/8.0), | ||
13618 | REAL_CONST(93873.655367047861/8.0), | ||
13619 | REAL_CONST(93896.994685233032/8.0), | ||
13620 | REAL_CONST(93920.335453831038/8.0), | ||
13621 | REAL_CONST(93943.677672661666/8.0), | ||
13622 | REAL_CONST(93967.021341544707/8.0), | ||
13623 | REAL_CONST(93990.366460300051/8.0), | ||
13624 | REAL_CONST(94013.713028747632/8.0), | ||
13625 | REAL_CONST(94037.061046707429/8.0), | ||
13626 | REAL_CONST(94060.410513999494/8.0), | ||
13627 | REAL_CONST(94083.761430443905/8.0), | ||
13628 | REAL_CONST(94107.113795860845/8.0), | ||
13629 | REAL_CONST(94130.467610070496/8.0), | ||
13630 | REAL_CONST(94153.822872893157/8.0), | ||
13631 | REAL_CONST(94177.179584149111/8.0), | ||
13632 | REAL_CONST(94200.537743658759/8.0), | ||
13633 | REAL_CONST(94223.897351242529/8.0), | ||
13634 | REAL_CONST(94247.25840672091/8.0), | ||
13635 | REAL_CONST(94270.620909914433/8.0), | ||
13636 | REAL_CONST(94293.98486064373/8.0), | ||
13637 | REAL_CONST(94317.350258729421/8.0), | ||
13638 | REAL_CONST(94340.71710399224/8.0), | ||
13639 | REAL_CONST(94364.085396252936/8.0), | ||
13640 | REAL_CONST(94387.455135332348/8.0), | ||
13641 | REAL_CONST(94410.82632105134/8.0), | ||
13642 | REAL_CONST(94434.198953230851/8.0), | ||
13643 | REAL_CONST(94457.573031691878/8.0), | ||
13644 | REAL_CONST(94480.948556255447/8.0), | ||
13645 | REAL_CONST(94504.325526742658/8.0), | ||
13646 | REAL_CONST(94527.70394297468/8.0), | ||
13647 | REAL_CONST(94551.083804772716/8.0), | ||
13648 | REAL_CONST(94574.465111958023/8.0), | ||
13649 | REAL_CONST(94597.847864351934/8.0), | ||
13650 | REAL_CONST(94621.232061775823/8.0), | ||
13651 | REAL_CONST(94644.617704051096/8.0), | ||
13652 | REAL_CONST(94668.004790999272/8.0), | ||
13653 | REAL_CONST(94691.393322441872/8.0), | ||
13654 | REAL_CONST(94714.783298200506/8.0), | ||
13655 | REAL_CONST(94738.174718096794/8.0), | ||
13656 | REAL_CONST(94761.567581952477/8.0), | ||
13657 | REAL_CONST(94784.961889589307/8.0), | ||
13658 | REAL_CONST(94808.357640829097/8.0), | ||
13659 | REAL_CONST(94831.754835493703/8.0), | ||
13660 | REAL_CONST(94855.153473405066/8.0), | ||
13661 | REAL_CONST(94878.553554385173/8.0), | ||
13662 | REAL_CONST(94901.955078256055/8.0), | ||
13663 | REAL_CONST(94925.358044839784/8.0), | ||
13664 | REAL_CONST(94948.762453958523/8.0), | ||
13665 | REAL_CONST(94972.168305434476/8.0), | ||
13666 | REAL_CONST(94995.575599089891/8.0), | ||
13667 | REAL_CONST(95018.984334747074/8.0), | ||
13668 | REAL_CONST(95042.394512228391/8.0), | ||
13669 | REAL_CONST(95065.806131356265/8.0), | ||
13670 | REAL_CONST(95089.219191953176/8.0), | ||
13671 | REAL_CONST(95112.633693841635/8.0), | ||
13672 | REAL_CONST(95136.04963684424/8.0), | ||
13673 | REAL_CONST(95159.467020783617/8.0), | ||
13674 | REAL_CONST(95182.885845482466/8.0), | ||
13675 | REAL_CONST(95206.306110763529/8.0), | ||
13676 | REAL_CONST(95229.727816449609/8.0), | ||
13677 | REAL_CONST(95253.150962363579/8.0), | ||
13678 | REAL_CONST(95276.575548328314/8.0), | ||
13679 | REAL_CONST(95300.001574166803/8.0), | ||
13680 | REAL_CONST(95323.429039702052/8.0), | ||
13681 | REAL_CONST(95346.857944757154/8.0), | ||
13682 | REAL_CONST(95370.288289155214/8.0), | ||
13683 | REAL_CONST(95393.720072719429/8.0), | ||
13684 | REAL_CONST(95417.153295273019/8.0), | ||
13685 | REAL_CONST(95440.587956639298/8.0), | ||
13686 | REAL_CONST(95464.024056641589/8.0), | ||
13687 | REAL_CONST(95487.461595103305/8.0), | ||
13688 | REAL_CONST(95510.900571847902/8.0), | ||
13689 | REAL_CONST(95534.340986698866/8.0), | ||
13690 | REAL_CONST(95557.782839479783/8.0), | ||
13691 | REAL_CONST(95581.226130014256/8.0), | ||
13692 | REAL_CONST(95604.670858125959/8.0), | ||
13693 | REAL_CONST(95628.117023638595/8.0), | ||
13694 | REAL_CONST(95651.564626375985/8.0), | ||
13695 | REAL_CONST(95675.013666161918/8.0), | ||
13696 | REAL_CONST(95698.464142820303/8.0), | ||
13697 | REAL_CONST(95721.916056175076/8.0), | ||
13698 | REAL_CONST(95745.369406050231/8.0), | ||
13699 | REAL_CONST(95768.824192269807/8.0), | ||
13700 | REAL_CONST(95792.280414657915/8.0), | ||
13701 | REAL_CONST(95815.738073038709/8.0), | ||
13702 | REAL_CONST(95839.197167236387/8.0), | ||
13703 | REAL_CONST(95862.657697075221/8.0), | ||
13704 | REAL_CONST(95886.11966237954/8.0), | ||
13705 | REAL_CONST(95909.583062973688/8.0), | ||
13706 | REAL_CONST(95933.047898682111/8.0), | ||
13707 | REAL_CONST(95956.514169329268/8.0), | ||
13708 | REAL_CONST(95979.981874739708/8.0), | ||
13709 | REAL_CONST(96003.451014738006/8.0), | ||
13710 | REAL_CONST(96026.921589148798/8.0), | ||
13711 | REAL_CONST(96050.393597796792/8.0), | ||
13712 | REAL_CONST(96073.867040506724/8.0), | ||
13713 | REAL_CONST(96097.341917103375/8.0), | ||
13714 | REAL_CONST(96120.818227411626/8.0), | ||
13715 | REAL_CONST(96144.295971256375/8.0), | ||
13716 | REAL_CONST(96167.775148462577/8.0), | ||
13717 | REAL_CONST(96191.255758855244/8.0), | ||
13718 | REAL_CONST(96214.737802259449/8.0), | ||
13719 | REAL_CONST(96238.221278500292/8.0), | ||
13720 | REAL_CONST(96261.70618740299/8.0), | ||
13721 | REAL_CONST(96285.192528792715/8.0), | ||
13722 | REAL_CONST(96308.680302494788/8.0), | ||
13723 | REAL_CONST(96332.169508334526/8.0), | ||
13724 | REAL_CONST(96355.660146137321/8.0), | ||
13725 | REAL_CONST(96379.152215728609/8.0), | ||
13726 | REAL_CONST(96402.645716933868/8.0), | ||
13727 | REAL_CONST(96426.14064957868/8.0), | ||
13728 | REAL_CONST(96449.637013488609/8.0), | ||
13729 | REAL_CONST(96473.134808489311/8.0), | ||
13730 | REAL_CONST(96496.63403440651/8.0), | ||
13731 | REAL_CONST(96520.134691065963/8.0), | ||
13732 | REAL_CONST(96543.636778293469/8.0), | ||
13733 | REAL_CONST(96567.140295914898/8.0), | ||
13734 | REAL_CONST(96590.645243756153/8.0), | ||
13735 | REAL_CONST(96614.151621643221/8.0), | ||
13736 | REAL_CONST(96637.659429402134/8.0), | ||
13737 | REAL_CONST(96661.168666858954/8.0), | ||
13738 | REAL_CONST(96684.679333839798/8.0), | ||
13739 | REAL_CONST(96708.191430170875/8.0), | ||
13740 | REAL_CONST(96731.70495567839/8.0), | ||
13741 | REAL_CONST(96755.219910188665/8.0), | ||
13742 | REAL_CONST(96778.736293528011/8.0), | ||
13743 | REAL_CONST(96802.254105522836/8.0), | ||
13744 | REAL_CONST(96825.77334599958/8.0), | ||
13745 | REAL_CONST(96849.29401478474/8.0), | ||
13746 | REAL_CONST(96872.816111704873/8.0), | ||
13747 | REAL_CONST(96896.339636586577/8.0), | ||
13748 | REAL_CONST(96919.864589256511/8.0), | ||
13749 | REAL_CONST(96943.390969541389/8.0), | ||
13750 | REAL_CONST(96966.918777267958/8.0), | ||
13751 | REAL_CONST(96990.448012263048/8.0), | ||
13752 | REAL_CONST(97013.978674353522/8.0), | ||
13753 | REAL_CONST(97037.510763366285/8.0), | ||
13754 | REAL_CONST(97061.044279128328/8.0), | ||
13755 | REAL_CONST(97084.579221466673/8.0), | ||
13756 | REAL_CONST(97108.115590208385/8.0), | ||
13757 | REAL_CONST(97131.653385180587/8.0), | ||
13758 | REAL_CONST(97155.19260621049/8.0), | ||
13759 | REAL_CONST(97178.733253125291/8.0), | ||
13760 | REAL_CONST(97202.2753257523/8.0), | ||
13761 | REAL_CONST(97225.81882391886/8.0), | ||
13762 | REAL_CONST(97249.363747452342/8.0), | ||
13763 | REAL_CONST(97272.910096180189/8.0), | ||
13764 | REAL_CONST(97296.457869929916/8.0), | ||
13765 | REAL_CONST(97320.007068529041/8.0), | ||
13766 | REAL_CONST(97343.557691805196/8.0), | ||
13767 | REAL_CONST(97367.109739586012/8.0), | ||
13768 | REAL_CONST(97390.663211699197/8.0), | ||
13769 | REAL_CONST(97414.218107972498/8.0), | ||
13770 | REAL_CONST(97437.774428233737/8.0), | ||
13771 | REAL_CONST(97461.332172310766/8.0), | ||
13772 | REAL_CONST(97484.891340031507/8.0), | ||
13773 | REAL_CONST(97508.451931223899/8.0), | ||
13774 | REAL_CONST(97532.013945715982/8.0), | ||
13775 | REAL_CONST(97555.577383335811/8.0), | ||
13776 | REAL_CONST(97579.142243911512/8.0), | ||
13777 | REAL_CONST(97602.708527271257/8.0), | ||
13778 | REAL_CONST(97626.276233243261/8.0), | ||
13779 | REAL_CONST(97649.845361655811/8.0), | ||
13780 | REAL_CONST(97673.415912337223/8.0), | ||
13781 | REAL_CONST(97696.987885115886/8.0), | ||
13782 | REAL_CONST(97720.561279820206/8.0), | ||
13783 | REAL_CONST(97744.1360962787/8.0), | ||
13784 | REAL_CONST(97767.712334319876/8.0), | ||
13785 | REAL_CONST(97791.289993772341/8.0), | ||
13786 | REAL_CONST(97814.869074464703/8.0), | ||
13787 | REAL_CONST(97838.449576225685/8.0), | ||
13788 | REAL_CONST(97862.031498883996/8.0), | ||
13789 | REAL_CONST(97885.614842268449/8.0), | ||
13790 | REAL_CONST(97909.199606207883/8.0), | ||
13791 | REAL_CONST(97932.785790531183/8.0), | ||
13792 | REAL_CONST(97956.37339506732/8.0), | ||
13793 | REAL_CONST(97979.962419645264/8.0), | ||
13794 | REAL_CONST(98003.552864094076/8.0), | ||
13795 | REAL_CONST(98027.144728242856/8.0), | ||
13796 | REAL_CONST(98050.738011920766/8.0), | ||
13797 | REAL_CONST(98074.332714956996/8.0), | ||
13798 | REAL_CONST(98097.928837180807/8.0), | ||
13799 | REAL_CONST(98121.526378421506/8.0), | ||
13800 | REAL_CONST(98145.125338508456/8.0), | ||
13801 | REAL_CONST(98168.725717271067/8.0), | ||
13802 | REAL_CONST(98192.327514538789/8.0), | ||
13803 | REAL_CONST(98215.930730141132/8.0), | ||
13804 | REAL_CONST(98239.535363907664/8.0), | ||
13805 | REAL_CONST(98263.141415668011/8.0), | ||
13806 | REAL_CONST(98286.748885251814/8.0), | ||
13807 | REAL_CONST(98310.357772488816/8.0), | ||
13808 | REAL_CONST(98333.968077208759/8.0), | ||
13809 | REAL_CONST(98357.579799241488/8.0), | ||
13810 | REAL_CONST(98381.192938416847/8.0), | ||
13811 | REAL_CONST(98404.807494564782/8.0), | ||
13812 | REAL_CONST(98428.42346751524/8.0), | ||
13813 | REAL_CONST(98452.040857098269/8.0), | ||
13814 | REAL_CONST(98475.659663143917/8.0), | ||
13815 | REAL_CONST(98499.27988548232/8.0), | ||
13816 | REAL_CONST(98522.901523943656/8.0), | ||
13817 | REAL_CONST(98546.524578358163/8.0), | ||
13818 | REAL_CONST(98570.149048556093/8.0), | ||
13819 | REAL_CONST(98593.774934367786/8.0), | ||
13820 | REAL_CONST(98617.402235623624/8.0), | ||
13821 | REAL_CONST(98641.030952154048/8.0), | ||
13822 | REAL_CONST(98664.661083789513/8.0), | ||
13823 | REAL_CONST(98688.292630360564/8.0), | ||
13824 | REAL_CONST(98711.925591697771/8.0), | ||
13825 | REAL_CONST(98735.559967631794/8.0), | ||
13826 | REAL_CONST(98759.195757993293/8.0), | ||
13827 | REAL_CONST(98782.832962613014/8.0), | ||
13828 | REAL_CONST(98806.471581321734/8.0), | ||
13829 | REAL_CONST(98830.111613950285/8.0), | ||
13830 | REAL_CONST(98853.753060329575/8.0), | ||
13831 | REAL_CONST(98877.39592029051/8.0), | ||
13832 | REAL_CONST(98901.040193664099/8.0), | ||
13833 | REAL_CONST(98924.68588028138/8.0), | ||
13834 | REAL_CONST(98948.33297997342/8.0), | ||
13835 | REAL_CONST(98971.981492571387/8.0), | ||
13836 | REAL_CONST(98995.63141790645/8.0), | ||
13837 | REAL_CONST(99019.282755809851/8.0), | ||
13838 | REAL_CONST(99042.935506112874/8.0), | ||
13839 | REAL_CONST(99066.589668646877/8.0), | ||
13840 | REAL_CONST(99090.245243243233/8.0), | ||
13841 | REAL_CONST(99113.902229733401/8.0), | ||
13842 | REAL_CONST(99137.560627948857/8.0), | ||
13843 | REAL_CONST(99161.220437721131/8.0), | ||
13844 | REAL_CONST(99184.881658881859/8.0), | ||
13845 | REAL_CONST(99208.544291262631/8.0), | ||
13846 | REAL_CONST(99232.208334695169/8.0), | ||
13847 | REAL_CONST(99255.87378901121/8.0), | ||
13848 | REAL_CONST(99279.540654042547/8.0), | ||
13849 | REAL_CONST(99303.208929621018/8.0), | ||
13850 | REAL_CONST(99326.878615578535/8.0), | ||
13851 | REAL_CONST(99350.549711746993/8.0), | ||
13852 | REAL_CONST(99374.222217958435/8.0), | ||
13853 | REAL_CONST(99397.896134044888/8.0), | ||
13854 | REAL_CONST(99421.571459838422/8.0), | ||
13855 | REAL_CONST(99445.248195171211/8.0), | ||
13856 | REAL_CONST(99468.926339875441/8.0), | ||
13857 | REAL_CONST(99492.605893783344/8.0), | ||
13858 | REAL_CONST(99516.286856727209/8.0), | ||
13859 | REAL_CONST(99539.969228539398/8.0), | ||
13860 | REAL_CONST(99563.653009052287/8.0), | ||
13861 | REAL_CONST(99587.338198098325/8.0), | ||
13862 | REAL_CONST(99611.024795510006/8.0), | ||
13863 | REAL_CONST(99634.712801119866/8.0), | ||
13864 | REAL_CONST(99658.402214760499/8.0), | ||
13865 | REAL_CONST(99682.093036264545/8.0), | ||
13866 | REAL_CONST(99705.785265464699/8.0), | ||
13867 | REAL_CONST(99729.478902193689/8.0), | ||
13868 | REAL_CONST(99753.173946284325/8.0), | ||
13869 | REAL_CONST(99776.870397569437/8.0), | ||
13870 | REAL_CONST(99800.56825588191/8.0), | ||
13871 | REAL_CONST(99824.267521054688/8.0), | ||
13872 | REAL_CONST(99847.968192920773/8.0), | ||
13873 | REAL_CONST(99871.670271313182/8.0), | ||
13874 | REAL_CONST(99895.373756065004/8.0), | ||
13875 | REAL_CONST(99919.078647009388/8.0), | ||
13876 | REAL_CONST(99942.78494397951/8.0), | ||
13877 | REAL_CONST(99966.492646808634/8.0), | ||
13878 | REAL_CONST(99990.20175533001/8.0), | ||
13879 | REAL_CONST(100013.91226937699/8.0), | ||
13880 | REAL_CONST(100037.62418878295/8.0), | ||
13881 | REAL_CONST(100061.33751338134/8.0), | ||
13882 | REAL_CONST(100085.05224300563/8.0), | ||
13883 | REAL_CONST(100108.76837748935/8.0), | ||
13884 | REAL_CONST(100132.4859166661/8.0), | ||
13885 | REAL_CONST(100156.2048603695/8.0), | ||
13886 | REAL_CONST(100179.92520843323/8.0), | ||
13887 | REAL_CONST(100203.64696069101/8.0), | ||
13888 | REAL_CONST(100227.37011697664/8.0), | ||
13889 | REAL_CONST(100251.09467712394/8.0), | ||
13890 | REAL_CONST(100274.82064096678/8.0), | ||
13891 | REAL_CONST(100298.54800833909/8.0), | ||
13892 | REAL_CONST(100322.27677907483/8.0), | ||
13893 | REAL_CONST(100346.00695300807/8.0), | ||
13894 | REAL_CONST(100369.73852997283/8.0), | ||
13895 | REAL_CONST(100393.47150980328/8.0), | ||
13896 | REAL_CONST(100417.20589233354/8.0), | ||
13897 | REAL_CONST(100440.94167739789/8.0), | ||
13898 | REAL_CONST(100464.67886483055/8.0), | ||
13899 | REAL_CONST(100488.41745446586/8.0), | ||
13900 | REAL_CONST(100512.1574461382/8.0), | ||
13901 | REAL_CONST(100535.89883968196/8.0), | ||
13902 | REAL_CONST(100559.64163493161/8.0), | ||
13903 | REAL_CONST(100583.38583172169/8.0), | ||
13904 | REAL_CONST(100607.13142988674/8.0), | ||
13905 | REAL_CONST(100630.87842926137/8.0), | ||
13906 | REAL_CONST(100654.62682968024/8.0), | ||
13907 | REAL_CONST(100678.37663097809/8.0), | ||
13908 | REAL_CONST(100702.12783298964/8.0), | ||
13909 | REAL_CONST(100725.88043554971/8.0), | ||
13910 | REAL_CONST(100749.63443849317/8.0), | ||
13911 | REAL_CONST(100773.38984165489/8.0), | ||
13912 | REAL_CONST(100797.14664486986/8.0), | ||
13913 | REAL_CONST(100820.90484797307/8.0), | ||
13914 | REAL_CONST(100844.66445079957/8.0), | ||
13915 | REAL_CONST(100868.42545318443/8.0), | ||
13916 | REAL_CONST(100892.18785496285/8.0), | ||
13917 | REAL_CONST(100915.95165596998/8.0), | ||
13918 | REAL_CONST(100939.71685604109/8.0), | ||
13919 | REAL_CONST(100963.48345501146/8.0), | ||
13920 | REAL_CONST(100987.25145271645/8.0), | ||
13921 | REAL_CONST(101011.02084899142/8.0), | ||
13922 | REAL_CONST(101034.79164367182/8.0), | ||
13923 | REAL_CONST(101058.56383659317/8.0), | ||
13924 | REAL_CONST(101082.33742759094/8.0), | ||
13925 | REAL_CONST(101106.11241650078/8.0), | ||
13926 | REAL_CONST(101129.88880315828/8.0), | ||
13927 | REAL_CONST(101153.66658739912/8.0), | ||
13928 | REAL_CONST(101177.44576905905/8.0), | ||
13929 | REAL_CONST(101201.22634797383/8.0), | ||
13930 | REAL_CONST(101225.00832397929/8.0), | ||
13931 | REAL_CONST(101248.7916969113/8.0), | ||
13932 | REAL_CONST(101272.57646660579/8.0), | ||
13933 | REAL_CONST(101296.36263289873/8.0), | ||
13934 | REAL_CONST(101320.15019562612/8.0), | ||
13935 | REAL_CONST(101343.93915462404/8.0), | ||
13936 | REAL_CONST(101367.7295097286/8.0), | ||
13937 | REAL_CONST(101391.52126077596/8.0), | ||
13938 | REAL_CONST(101415.31440760233/8.0), | ||
13939 | REAL_CONST(101439.10895004397/8.0), | ||
13940 | REAL_CONST(101462.9048879372/8.0), | ||
13941 | REAL_CONST(101486.70222111834/8.0), | ||
13942 | REAL_CONST(101510.50094942382/8.0), | ||
13943 | REAL_CONST(101534.30107269008/8.0), | ||
13944 | REAL_CONST(101558.10259075361/8.0), | ||
13945 | REAL_CONST(101581.90550345098/8.0), | ||
13946 | REAL_CONST(101605.70981061876/8.0), | ||
13947 | REAL_CONST(101629.5155120936/8.0), | ||
13948 | REAL_CONST(101653.32260771218/8.0), | ||
13949 | REAL_CONST(101677.13109731126/8.0), | ||
13950 | REAL_CONST(101700.9409807276/8.0), | ||
13951 | REAL_CONST(101724.75225779804/8.0), | ||
13952 | REAL_CONST(101748.56492835947/8.0), | ||
13953 | REAL_CONST(101772.37899224881/8.0), | ||
13954 | REAL_CONST(101796.19444930303/8.0), | ||
13955 | REAL_CONST(101820.01129935916/8.0), | ||
13956 | REAL_CONST(101843.82954225427/8.0), | ||
13957 | REAL_CONST(101867.64917782549/8.0), | ||
13958 | REAL_CONST(101891.47020590997/8.0), | ||
13959 | REAL_CONST(101915.29262634492/8.0), | ||
13960 | REAL_CONST(101939.11643896763/8.0), | ||
13961 | REAL_CONST(101962.94164361537/8.0), | ||
13962 | REAL_CONST(101986.76824012553/8.0), | ||
13963 | REAL_CONST(102010.59622833549/8.0), | ||
13964 | REAL_CONST(102034.42560808272/8.0), | ||
13965 | REAL_CONST(102058.25637920471/8.0), | ||
13966 | REAL_CONST(102082.08854153901/8.0), | ||
13967 | REAL_CONST(102105.9220949232/8.0), | ||
13968 | REAL_CONST(102129.75703919494/8.0), | ||
13969 | REAL_CONST(102153.59337419191/8.0), | ||
13970 | REAL_CONST(102177.43109975185/8.0), | ||
13971 | REAL_CONST(102201.27021571253/8.0), | ||
13972 | REAL_CONST(102225.1107219118/8.0), | ||
13973 | REAL_CONST(102248.95261818753/8.0), | ||
13974 | REAL_CONST(102272.79590437764/8.0), | ||
13975 | REAL_CONST(102296.64058032009/8.0), | ||
13976 | REAL_CONST(102320.48664585294/8.0), | ||
13977 | REAL_CONST(102344.33410081422/8.0), | ||
13978 | REAL_CONST(102368.18294504205/8.0), | ||
13979 | REAL_CONST(102392.03317837461/8.0), | ||
13980 | REAL_CONST(102415.88480065008/8.0), | ||
13981 | REAL_CONST(102439.73781170673/8.0), | ||
13982 | REAL_CONST(102463.59221138287/8.0), | ||
13983 | REAL_CONST(102487.44799951684/8.0), | ||
13984 | REAL_CONST(102511.30517594704/8.0), | ||
13985 | REAL_CONST(102535.1637405119/8.0), | ||
13986 | REAL_CONST(102559.02369304992/8.0), | ||
13987 | REAL_CONST(102582.88503339965/8.0), | ||
13988 | REAL_CONST(102606.74776139967/8.0), | ||
13989 | REAL_CONST(102630.61187688859/8.0), | ||
13990 | REAL_CONST(102654.4773797051/8.0), | ||
13991 | REAL_CONST(102678.34426968795/8.0), | ||
13992 | REAL_CONST(102702.21254667587/8.0), | ||
13993 | REAL_CONST(102726.08221050771/8.0), | ||
13994 | REAL_CONST(102749.95326102231/8.0), | ||
13995 | REAL_CONST(102773.8256980586/8.0), | ||
13996 | REAL_CONST(102797.69952145554/8.0), | ||
13997 | REAL_CONST(102821.57473105213/8.0), | ||
13998 | REAL_CONST(102845.45132668741/8.0), | ||
13999 | REAL_CONST(102869.32930820051/8.0), | ||
14000 | REAL_CONST(102893.20867543056/8.0), | ||
14001 | REAL_CONST(102917.08942821674/8.0), | ||
14002 | REAL_CONST(102940.97156639832/8.0), | ||
14003 | REAL_CONST(102964.85508981455/8.0), | ||
14004 | REAL_CONST(102988.73999830478/8.0), | ||
14005 | REAL_CONST(103012.6262917084/8.0), | ||
14006 | REAL_CONST(103036.51396986481/8.0), | ||
14007 | REAL_CONST(103060.40303261351/8.0), | ||
14008 | REAL_CONST(103084.293479794/8.0), | ||
14009 | REAL_CONST(103108.18531124585/8.0), | ||
14010 | REAL_CONST(103132.07852680866/8.0), | ||
14011 | REAL_CONST(103155.97312632212/8.0), | ||
14012 | REAL_CONST(103179.8691096259/8.0), | ||
14013 | REAL_CONST(103203.76647655977/8.0), | ||
14014 | REAL_CONST(103227.66522696352/8.0), | ||
14015 | REAL_CONST(103251.56536067701/8.0), | ||
14016 | REAL_CONST(103275.46687754011/8.0), | ||
14017 | REAL_CONST(103299.36977739276/8.0), | ||
14018 | REAL_CONST(103323.27406007495/8.0), | ||
14019 | REAL_CONST(103347.1797254267/8.0), | ||
14020 | REAL_CONST(103371.0867732881/8.0), | ||
14021 | REAL_CONST(103394.99520349925/8.0), | ||
14022 | REAL_CONST(103418.90501590034/8.0), | ||
14023 | REAL_CONST(103442.81621033157/8.0), | ||
14024 | REAL_CONST(103466.72878663319/8.0), | ||
14025 | REAL_CONST(103490.64274464553/8.0), | ||
14026 | REAL_CONST(103514.55808420894/8.0), | ||
14027 | REAL_CONST(103538.4748051638/8.0), | ||
14028 | REAL_CONST(103562.39290735057/8.0), | ||
14029 | REAL_CONST(103586.31239060973/8.0), | ||
14030 | REAL_CONST(103610.23325478184/8.0), | ||
14031 | REAL_CONST(103634.15549970744/8.0), | ||
14032 | REAL_CONST(103658.07912522719/8.0), | ||
14033 | REAL_CONST(103682.00413118176/8.0), | ||
14034 | REAL_CONST(103705.93051741188/8.0), | ||
14035 | REAL_CONST(103729.85828375829/8.0), | ||
14036 | REAL_CONST(103753.78743006183/8.0), | ||
14037 | REAL_CONST(103777.71795616332/8.0), | ||
14038 | REAL_CONST(103801.64986190372/8.0), | ||
14039 | REAL_CONST(103825.58314712394/8.0), | ||
14040 | REAL_CONST(103849.51781166498/8.0), | ||
14041 | REAL_CONST(103873.4538553679/8.0), | ||
14042 | REAL_CONST(103897.39127807376/8.0), | ||
14043 | REAL_CONST(103921.33007962372/8.0), | ||
14044 | REAL_CONST(103945.27025985894/8.0), | ||
14045 | REAL_CONST(103969.21181862066/8.0), | ||
14046 | REAL_CONST(103993.15475575015/8.0), | ||
14047 | REAL_CONST(104017.0990710887/8.0), | ||
14048 | REAL_CONST(104041.0447644777/8.0), | ||
14049 | REAL_CONST(104064.99183575854/8.0), | ||
14050 | REAL_CONST(104088.94028477269/8.0), | ||
14051 | REAL_CONST(104112.89011136163/8.0), | ||
14052 | REAL_CONST(104136.84131536692/8.0), | ||
14053 | REAL_CONST(104160.79389663014/8.0), | ||
14054 | REAL_CONST(104184.74785499295/8.0), | ||
14055 | REAL_CONST(104208.70319029699/8.0), | ||
14056 | REAL_CONST(104232.65990238401/8.0), | ||
14057 | REAL_CONST(104256.61799109577/8.0), | ||
14058 | REAL_CONST(104280.57745627411/8.0), | ||
14059 | REAL_CONST(104304.53829776087/8.0), | ||
14060 | REAL_CONST(104328.50051539797/8.0), | ||
14061 | REAL_CONST(104352.46410902737/8.0), | ||
14062 | REAL_CONST(104376.42907849104/8.0), | ||
14063 | REAL_CONST(104400.39542363105/8.0), | ||
14064 | REAL_CONST(104424.36314428948/8.0), | ||
14065 | REAL_CONST(104448.33224030846/8.0), | ||
14066 | REAL_CONST(104472.3027115302/8.0), | ||
14067 | REAL_CONST(104496.27455779689/8.0), | ||
14068 | REAL_CONST(104520.24777895081/8.0), | ||
14069 | REAL_CONST(104544.22237483428/8.0), | ||
14070 | REAL_CONST(104568.19834528965/8.0), | ||
14071 | REAL_CONST(104592.17569015936/8.0), | ||
14072 | REAL_CONST(104616.15440928582/8.0), | ||
14073 | REAL_CONST(104640.13450251156/8.0), | ||
14074 | REAL_CONST(104664.1159696791/8.0), | ||
14075 | REAL_CONST(104688.09881063103/8.0), | ||
14076 | REAL_CONST(104712.08302520998/8.0), | ||
14077 | REAL_CONST(104736.06861325864/8.0), | ||
14078 | REAL_CONST(104760.05557461972/8.0), | ||
14079 | REAL_CONST(104784.043909136/8.0), | ||
14080 | REAL_CONST(104808.03361665027/8.0), | ||
14081 | REAL_CONST(104832.0246970054/8.0), | ||
14082 | REAL_CONST(104856.01715004431/8.0), | ||
14083 | REAL_CONST(104880.01097560991/8.0), | ||
14084 | REAL_CONST(104904.00617354522/8.0), | ||
14085 | REAL_CONST(104928.00274369326/8.0), | ||
14086 | REAL_CONST(104952.00068589712/8.0), | ||
14087 | REAL_CONST(104975.99999999993/8.0), | ||
14088 | REAL_CONST(105000.00068584486/8.0), | ||
14089 | REAL_CONST(105024.00274327511/8.0), | ||
14090 | REAL_CONST(105048.00617213396/8.0), | ||
14091 | REAL_CONST(105072.0109722647/8.0), | ||
14092 | REAL_CONST(105096.0171435107/8.0), | ||
14093 | REAL_CONST(105120.02468571534/8.0), | ||
14094 | REAL_CONST(105144.03359872208/8.0), | ||
14095 | REAL_CONST(105168.04388237436/8.0), | ||
14096 | REAL_CONST(105192.05553651576/8.0), | ||
14097 | REAL_CONST(105216.06856098982/8.0), | ||
14098 | REAL_CONST(105240.08295564017/8.0), | ||
14099 | REAL_CONST(105264.09872031047/8.0), | ||
14100 | REAL_CONST(105288.11585484444/8.0), | ||
14101 | REAL_CONST(105312.13435908582/8.0), | ||
14102 | REAL_CONST(105336.1542328784/8.0), | ||
14103 | REAL_CONST(105360.17547606604/8.0), | ||
14104 | REAL_CONST(105384.19808849262/8.0), | ||
14105 | REAL_CONST(105408.22207000206/8.0), | ||
14106 | REAL_CONST(105432.24742043833/8.0), | ||
14107 | REAL_CONST(105456.27413964548/8.0), | ||
14108 | REAL_CONST(105480.30222746753/8.0), | ||
14109 | REAL_CONST(105504.33168374863/8.0), | ||
14110 | REAL_CONST(105528.36250833291/8.0), | ||
14111 | REAL_CONST(105552.39470106458/8.0), | ||
14112 | REAL_CONST(105576.42826178786/8.0), | ||
14113 | REAL_CONST(105600.46319034706/8.0), | ||
14114 | REAL_CONST(105624.49948658649/8.0), | ||
14115 | REAL_CONST(105648.53715035053/8.0), | ||
14116 | REAL_CONST(105672.5761814836/8.0), | ||
14117 | REAL_CONST(105696.61657983017/8.0), | ||
14118 | REAL_CONST(105720.65834523473/8.0), | ||
14119 | REAL_CONST(105744.70147754184/8.0), | ||
14120 | REAL_CONST(105768.7459765961/8.0), | ||
14121 | REAL_CONST(105792.79184224214/8.0), | ||
14122 | REAL_CONST(105816.83907432464/8.0), | ||
14123 | REAL_CONST(105840.88767268835/8.0), | ||
14124 | REAL_CONST(105864.93763717801/8.0), | ||
14125 | REAL_CONST(105888.98896763846/8.0), | ||
14126 | REAL_CONST(105913.04166391456/8.0), | ||
14127 | REAL_CONST(105937.09572585119/8.0), | ||
14128 | REAL_CONST(105961.15115329332/8.0), | ||
14129 | REAL_CONST(105985.20794608595/8.0), | ||
14130 | REAL_CONST(106009.26610407409/8.0), | ||
14131 | REAL_CONST(106033.32562710284/8.0), | ||
14132 | REAL_CONST(106057.38651501729/8.0), | ||
14133 | REAL_CONST(106081.44876766266/8.0), | ||
14134 | REAL_CONST(106105.51238488412/8.0), | ||
14135 | REAL_CONST(106129.57736652695/8.0), | ||
14136 | REAL_CONST(106153.64371243643/8.0), | ||
14137 | REAL_CONST(106177.71142245791/8.0), | ||
14138 | REAL_CONST(106201.78049643678/8.0), | ||
14139 | REAL_CONST(106225.85093421848/8.0), | ||
14140 | REAL_CONST(106249.92273564848/8.0), | ||
14141 | REAL_CONST(106273.99590057228/8.0), | ||
14142 | REAL_CONST(106298.07042883546/8.0), | ||
14143 | REAL_CONST(106322.14632028362/8.0), | ||
14144 | REAL_CONST(106346.22357476239/8.0), | ||
14145 | REAL_CONST(106370.30219211751/8.0), | ||
14146 | REAL_CONST(106394.38217219469/8.0), | ||
14147 | REAL_CONST(106418.46351483969/8.0), | ||
14148 | REAL_CONST(106442.54621989837/8.0), | ||
14149 | REAL_CONST(106466.63028721658/8.0), | ||
14150 | REAL_CONST(106490.71571664025/8.0), | ||
14151 | REAL_CONST(106514.80250801529/8.0), | ||
14152 | REAL_CONST(106538.89066118775/8.0), | ||
14153 | REAL_CONST(106562.98017600364/8.0), | ||
14154 | REAL_CONST(106587.07105230905/8.0), | ||
14155 | REAL_CONST(106611.16328995011/8.0), | ||
14156 | REAL_CONST(106635.25688877302/8.0), | ||
14157 | REAL_CONST(106659.35184862395/8.0), | ||
14158 | REAL_CONST(106683.44816934918/8.0), | ||
14159 | REAL_CONST(106707.54585079502/8.0), | ||
14160 | REAL_CONST(106731.64489280782/8.0), | ||
14161 | REAL_CONST(106755.74529523395/8.0), | ||
14162 | REAL_CONST(106779.84705791986/8.0), | ||
14163 | REAL_CONST(106803.95018071201/8.0), | ||
14164 | REAL_CONST(106828.05466345693/8.0), | ||
14165 | REAL_CONST(106852.16050600118/8.0), | ||
14166 | REAL_CONST(106876.26770819137/8.0), | ||
14167 | REAL_CONST(106900.37626987413/8.0), | ||
14168 | REAL_CONST(106924.48619089619/8.0), | ||
14169 | REAL_CONST(106948.59747110425/8.0), | ||
14170 | REAL_CONST(106972.71011034511/8.0), | ||
14171 | REAL_CONST(106996.82410846559/8.0), | ||
14172 | REAL_CONST(107020.93946531253/8.0), | ||
14173 | REAL_CONST(107045.05618073288/8.0), | ||
14174 | REAL_CONST(107069.17425457356/8.0), | ||
14175 | REAL_CONST(107093.29368668159/8.0), | ||
14176 | REAL_CONST(107117.41447690397/8.0), | ||
14177 | REAL_CONST(107141.53662508781/8.0), | ||
14178 | REAL_CONST(107165.66013108024/8.0), | ||
14179 | REAL_CONST(107189.7849947284/8.0), | ||
14180 | REAL_CONST(107213.91121587952/8.0), | ||
14181 | REAL_CONST(107238.03879438085/8.0), | ||
14182 | REAL_CONST(107262.16773007967/8.0), | ||
14183 | REAL_CONST(107286.29802282334/8.0), | ||
14184 | REAL_CONST(107310.42967245923/8.0), | ||
14185 | REAL_CONST(107334.56267883476/8.0), | ||
14186 | REAL_CONST(107358.69704179741/8.0), | ||
14187 | REAL_CONST(107382.83276119467/8.0), | ||
14188 | REAL_CONST(107406.96983687414/8.0), | ||
14189 | REAL_CONST(107431.10826868335/8.0), | ||
14190 | REAL_CONST(107455.24805646999/8.0), | ||
14191 | REAL_CONST(107479.38920008171/8.0), | ||
14192 | REAL_CONST(107503.53169936626/8.0), | ||
14193 | REAL_CONST(107527.67555417139/8.0), | ||
14194 | REAL_CONST(107551.82076434491/8.0), | ||
14195 | REAL_CONST(107575.96732973469/8.0), | ||
14196 | REAL_CONST(107600.11525018861/8.0), | ||
14197 | REAL_CONST(107624.26452555459/8.0), | ||
14198 | REAL_CONST(107648.41515568066/8.0), | ||
14199 | REAL_CONST(107672.56714041479/8.0), | ||
14200 | REAL_CONST(107696.72047960508/8.0), | ||
14201 | REAL_CONST(107720.87517309963/8.0), | ||
14202 | REAL_CONST(107745.03122074658/8.0), | ||
14203 | REAL_CONST(107769.18862239413/8.0), | ||
14204 | REAL_CONST(107793.34737789053/8.0), | ||
14205 | REAL_CONST(107817.50748708403/8.0), | ||
14206 | REAL_CONST(107841.66894982298/8.0), | ||
14207 | REAL_CONST(107865.83176595572/8.0), | ||
14208 | REAL_CONST(107889.99593533068/8.0), | ||
14209 | REAL_CONST(107914.16145779629/8.0), | ||
14210 | REAL_CONST(107938.32833320105/8.0), | ||
14211 | REAL_CONST(107962.49656139348/8.0), | ||
14212 | REAL_CONST(107986.66614222217/8.0), | ||
14213 | REAL_CONST(108010.83707553572/8.0), | ||
14214 | REAL_CONST(108035.00936118282/8.0), | ||
14215 | REAL_CONST(108059.18299901215/8.0), | ||
14216 | REAL_CONST(108083.35798887245/8.0), | ||
14217 | REAL_CONST(108107.53433061253/8.0), | ||
14218 | REAL_CONST(108131.71202408121/8.0), | ||
14219 | REAL_CONST(108155.89106912735/8.0), | ||
14220 | REAL_CONST(108180.07146559987/8.0), | ||
14221 | REAL_CONST(108204.25321334775/8.0), | ||
14222 | REAL_CONST(108228.43631221994/8.0), | ||
14223 | REAL_CONST(108252.62076206553/8.0), | ||
14224 | REAL_CONST(108276.80656273357/8.0), | ||
14225 | REAL_CONST(108300.99371407321/8.0), | ||
14226 | REAL_CONST(108325.18221593359/8.0), | ||
14227 | REAL_CONST(108349.37206816394/8.0), | ||
14228 | REAL_CONST(108373.56327061349/8.0), | ||
14229 | REAL_CONST(108397.75582313156/8.0), | ||
14230 | REAL_CONST(108421.94972556747/8.0), | ||
14231 | REAL_CONST(108446.1449777706/8.0), | ||
14232 | REAL_CONST(108470.34157959036/8.0), | ||
14233 | REAL_CONST(108494.53953087622/8.0), | ||
14234 | REAL_CONST(108518.73883147769/8.0), | ||
14235 | REAL_CONST(108542.93948124432/8.0), | ||
14236 | REAL_CONST(108567.14148002568/8.0), | ||
14237 | REAL_CONST(108591.34482767139/8.0), | ||
14238 | REAL_CONST(108615.54952403114/8.0), | ||
14239 | REAL_CONST(108639.75556895464/8.0), | ||
14240 | REAL_CONST(108663.96296229165/8.0), | ||
14241 | REAL_CONST(108688.17170389196/8.0), | ||
14242 | REAL_CONST(108712.38179360541/8.0), | ||
14243 | REAL_CONST(108736.59323128188/8.0), | ||
14244 | REAL_CONST(108760.80601677128/8.0), | ||
14245 | REAL_CONST(108785.02014992358/8.0), | ||
14246 | REAL_CONST(108809.23563058881/8.0), | ||
14247 | REAL_CONST(108833.45245861699/8.0), | ||
14248 | REAL_CONST(108857.67063385822/8.0), | ||
14249 | REAL_CONST(108881.89015616261/8.0), | ||
14250 | REAL_CONST(108906.11102538036/8.0), | ||
14251 | REAL_CONST(108930.33324136167/8.0), | ||
14252 | REAL_CONST(108954.55680395682/8.0), | ||
14253 | REAL_CONST(108978.78171301607/8.0), | ||
14254 | REAL_CONST(109003.00796838976/8.0), | ||
14255 | REAL_CONST(109027.23556992831/8.0), | ||
14256 | REAL_CONST(109051.46451748211/8.0), | ||
14257 | REAL_CONST(109075.69481090162/8.0), | ||
14258 | REAL_CONST(109099.92645003737/8.0), | ||
14259 | REAL_CONST(109124.15943473989/8.0), | ||
14260 | REAL_CONST(109148.39376485976/8.0), | ||
14261 | REAL_CONST(109172.62944024763/8.0), | ||
14262 | REAL_CONST(109196.86646075416/8.0), | ||
14263 | REAL_CONST(109221.10482623006/8.0), | ||
14264 | REAL_CONST(109245.34453652608/8.0), | ||
14265 | REAL_CONST(109269.58559149304/8.0), | ||
14266 | REAL_CONST(109293.82799098175/8.0), | ||
14267 | REAL_CONST(109318.07173484311/8.0), | ||
14268 | REAL_CONST(109342.31682292801/8.0), | ||
14269 | REAL_CONST(109366.56325508743/8.0), | ||
14270 | REAL_CONST(109390.81103117237/8.0), | ||
14271 | REAL_CONST(109415.06015103387/8.0), | ||
14272 | REAL_CONST(109439.31061452301/8.0), | ||
14273 | REAL_CONST(109463.56242149093/8.0), | ||
14274 | REAL_CONST(109487.8155717888/8.0), | ||
14275 | REAL_CONST(109512.07006526781/8.0), | ||
14276 | REAL_CONST(109536.3259017792/8.0), | ||
14277 | REAL_CONST(109560.58308117429/8.0), | ||
14278 | REAL_CONST(109584.8416033044/8.0), | ||
14279 | REAL_CONST(109609.1014680209/8.0), | ||
14280 | REAL_CONST(109633.36267517522/8.0), | ||
14281 | REAL_CONST(109657.62522461878/8.0), | ||
14282 | REAL_CONST(109681.88911620311/8.0), | ||
14283 | REAL_CONST(109706.15434977971/8.0), | ||
14284 | REAL_CONST(109730.4209252002/8.0), | ||
14285 | REAL_CONST(109754.68884231619/8.0), | ||
14286 | REAL_CONST(109778.95810097932/8.0), | ||
14287 | REAL_CONST(109803.22870104131/8.0), | ||
14288 | REAL_CONST(109827.50064235389/8.0), | ||
14289 | REAL_CONST(109851.77392476884/8.0), | ||
14290 | REAL_CONST(109876.04854813802/8.0), | ||
14291 | REAL_CONST(109900.32451231324/8.0), | ||
14292 | REAL_CONST(109924.60181714644/8.0), | ||
14293 | REAL_CONST(109948.88046248957/8.0), | ||
14294 | REAL_CONST(109973.1604481946/8.0), | ||
14295 | REAL_CONST(109997.44177411357/8.0), | ||
14296 | REAL_CONST(110021.72444009855/8.0), | ||
14297 | REAL_CONST(110046.00844600165/8.0), | ||
14298 | REAL_CONST(110070.29379167501/8.0), | ||
14299 | REAL_CONST(110094.58047697082/8.0), | ||
14300 | REAL_CONST(110118.86850174134/8.0), | ||
14301 | REAL_CONST(110143.15786583882/8.0), | ||
14302 | REAL_CONST(110167.44856911557/8.0), | ||
14303 | REAL_CONST(110191.74061142397/8.0), | ||
14304 | REAL_CONST(110216.03399261639/8.0), | ||
14305 | REAL_CONST(110240.32871254528/8.0), | ||
14306 | REAL_CONST(110264.62477106311/8.0), | ||
14307 | REAL_CONST(110288.9221680224/8.0), | ||
14308 | REAL_CONST(110313.22090327571/8.0), | ||
14309 | REAL_CONST(110337.52097667565/8.0), | ||
14310 | REAL_CONST(110361.82238807483/8.0), | ||
14311 | REAL_CONST(110386.12513732594/8.0), | ||
14312 | REAL_CONST(110410.42922428172/8.0), | ||
14313 | REAL_CONST(110434.73464879491/8.0), | ||
14314 | REAL_CONST(110459.04141071832/8.0), | ||
14315 | REAL_CONST(110483.34950990479/8.0), | ||
14316 | REAL_CONST(110507.6589462072/8.0), | ||
14317 | REAL_CONST(110531.96971947847/8.0), | ||
14318 | REAL_CONST(110556.28182957157/8.0), | ||
14319 | REAL_CONST(110580.5952763395/8.0), | ||
14320 | REAL_CONST(110604.91005963532/8.0), | ||
14321 | REAL_CONST(110629.22617931209/8.0), | ||
14322 | REAL_CONST(110653.54363522294/8.0), | ||
14323 | REAL_CONST(110677.86242722106/8.0), | ||
14324 | REAL_CONST(110702.18255515963/8.0), | ||
14325 | REAL_CONST(110726.50401889188/8.0), | ||
14326 | REAL_CONST(110750.82681827113/8.0), | ||
14327 | REAL_CONST(110775.1509531507/8.0), | ||
14328 | REAL_CONST(110799.47642338395/8.0), | ||
14329 | REAL_CONST(110823.80322882428/8.0), | ||
14330 | REAL_CONST(110848.13136932514/8.0), | ||
14331 | REAL_CONST(110872.46084474004/8.0), | ||
14332 | REAL_CONST(110896.79165492248/8.0), | ||
14333 | REAL_CONST(110921.12379972603/8.0), | ||
14334 | REAL_CONST(110945.4572790043/8.0), | ||
14335 | REAL_CONST(110969.79209261097/8.0), | ||
14336 | REAL_CONST(110994.12824039967/8.0), | ||
14337 | REAL_CONST(111018.46572222417/8.0), | ||
14338 | REAL_CONST(111042.80453793822/8.0), | ||
14339 | REAL_CONST(111067.14468739564/8.0), | ||
14340 | REAL_CONST(111091.48617045028/8.0), | ||
14341 | REAL_CONST(111115.82898695602/8.0), | ||
14342 | REAL_CONST(111140.1731367668/8.0), | ||
14343 | REAL_CONST(111164.51861973655/8.0), | ||
14344 | REAL_CONST(111188.86543571933/8.0), | ||
14345 | REAL_CONST(111213.21358456917/8.0), | ||
14346 | REAL_CONST(111237.56306614014/8.0), | ||
14347 | REAL_CONST(111261.91388028639/8.0), | ||
14348 | REAL_CONST(111286.26602686207/8.0), | ||
14349 | REAL_CONST(111310.61950572141/8.0), | ||
14350 | REAL_CONST(111334.97431671864/8.0), | ||
14351 | REAL_CONST(111359.33045970804/8.0), | ||
14352 | REAL_CONST(111383.68793454397/8.0), | ||
14353 | REAL_CONST(111408.04674108078/8.0), | ||
14354 | REAL_CONST(111432.40687917286/8.0), | ||
14355 | REAL_CONST(111456.76834867468/8.0), | ||
14356 | REAL_CONST(111481.13114944073/8.0), | ||
14357 | REAL_CONST(111505.49528132551/8.0), | ||
14358 | REAL_CONST(111529.86074418361/8.0), | ||
14359 | REAL_CONST(111554.22753786964/8.0), | ||
14360 | REAL_CONST(111578.59566223821/8.0), | ||
14361 | REAL_CONST(111602.96511714405/8.0), | ||
14362 | REAL_CONST(111627.33590244185/8.0), | ||
14363 | REAL_CONST(111651.7080179864/8.0), | ||
14364 | REAL_CONST(111676.08146363248/8.0), | ||
14365 | REAL_CONST(111700.45623923496/8.0), | ||
14366 | REAL_CONST(111724.8323446487/8.0), | ||
14367 | REAL_CONST(111749.20977972864/8.0), | ||
14368 | REAL_CONST(111773.58854432974/8.0), | ||
14369 | REAL_CONST(111797.96863830699/8.0), | ||
14370 | REAL_CONST(111822.35006151545/8.0), | ||
14371 | REAL_CONST(111846.73281381019/8.0), | ||
14372 | REAL_CONST(111871.11689504632/8.0), | ||
14373 | REAL_CONST(111895.50230507903/8.0), | ||
14374 | REAL_CONST(111919.8890437635/8.0), | ||
14375 | REAL_CONST(111944.27711095495/8.0), | ||
14376 | REAL_CONST(111968.6665065087/8.0), | ||
14377 | REAL_CONST(111993.05723028004/8.0), | ||
14378 | REAL_CONST(112017.44928212435/8.0), | ||
14379 | REAL_CONST(112041.842661897/8.0), | ||
14380 | REAL_CONST(112066.23736945343/8.0), | ||
14381 | REAL_CONST(112090.63340464912/8.0), | ||
14382 | REAL_CONST(112115.03076733962/8.0), | ||
14383 | REAL_CONST(112139.42945738042/8.0), | ||
14384 | REAL_CONST(112163.82947462716/8.0), | ||
14385 | REAL_CONST(112188.23081893545/8.0), | ||
14386 | REAL_CONST(112212.63349016097/8.0), | ||
14387 | REAL_CONST(112237.03748815943/8.0), | ||
14388 | REAL_CONST(112261.44281278658/8.0), | ||
14389 | REAL_CONST(112285.84946389822/8.0), | ||
14390 | REAL_CONST(112310.25744135017/8.0), | ||
14391 | REAL_CONST(112334.66674499828/8.0), | ||
14392 | REAL_CONST(112359.07737469849/8.0), | ||
14393 | REAL_CONST(112383.48933030672/8.0), | ||
14394 | REAL_CONST(112407.90261167898/8.0), | ||
14395 | REAL_CONST(112432.31721867126/8.0), | ||
14396 | REAL_CONST(112456.73315113965/8.0), | ||
14397 | REAL_CONST(112481.15040894024/8.0), | ||
14398 | REAL_CONST(112505.56899192919/8.0), | ||
14399 | REAL_CONST(112529.98889996267/8.0), | ||
14400 | REAL_CONST(112554.41013289688/8.0), | ||
14401 | REAL_CONST(112578.8326905881/8.0), | ||
14402 | REAL_CONST(112603.25657289263/8.0), | ||
14403 | REAL_CONST(112627.68177966679/8.0), | ||
14404 | REAL_CONST(112652.10831076698/8.0), | ||
14405 | REAL_CONST(112676.53616604958/8.0), | ||
14406 | REAL_CONST(112700.96534537108/8.0), | ||
14407 | REAL_CONST(112725.39584858794/8.0), | ||
14408 | REAL_CONST(112749.82767555672/8.0), | ||
14409 | REAL_CONST(112774.26082613398/8.0), | ||
14410 | REAL_CONST(112798.6953001763/8.0), | ||
14411 | REAL_CONST(112823.13109754038/8.0), | ||
14412 | REAL_CONST(112847.56821808286/8.0), | ||
14413 | REAL_CONST(112872.00666166049/8.0), | ||
14414 | REAL_CONST(112896.44642813003/8.0), | ||
14415 | REAL_CONST(112920.88751734827/8.0), | ||
14416 | REAL_CONST(112945.32992917208/8.0), | ||
14417 | REAL_CONST(112969.77366345831/8.0), | ||
14418 | REAL_CONST(112994.21872006389/8.0), | ||
14419 | REAL_CONST(113018.66509884578/8.0), | ||
14420 | REAL_CONST(113043.11279966099/8.0), | ||
14421 | REAL_CONST(113067.56182236652/8.0), | ||
14422 | REAL_CONST(113092.01216681948/8.0), | ||
14423 | REAL_CONST(113116.46383287695/8.0), | ||
14424 | REAL_CONST(113140.9168203961/8.0), | ||
14425 | REAL_CONST(113165.37112923413/8.0), | ||
14426 | REAL_CONST(113189.82675924824/8.0), | ||
14427 | REAL_CONST(113214.28371029573/8.0), | ||
14428 | REAL_CONST(113238.74198223387/8.0), | ||
14429 | REAL_CONST(113263.20157492002/8.0), | ||
14430 | REAL_CONST(113287.66248821157/8.0), | ||
14431 | REAL_CONST(113312.12472196593/8.0), | ||
14432 | REAL_CONST(113336.58827604055/8.0), | ||
14433 | REAL_CONST(113361.05315029295/8.0), | ||
14434 | REAL_CONST(113385.51934458067/8.0), | ||
14435 | REAL_CONST(113409.98685876124/8.0), | ||
14436 | REAL_CONST(113434.45569269233/8.0), | ||
14437 | REAL_CONST(113458.92584623155/8.0), | ||
14438 | REAL_CONST(113483.39731923661/8.0), | ||
14439 | REAL_CONST(113507.87011156522/8.0), | ||
14440 | REAL_CONST(113532.34422307517/8.0), | ||
14441 | REAL_CONST(113556.81965362425/8.0), | ||
14442 | REAL_CONST(113581.2964030703/8.0), | ||
14443 | REAL_CONST(113605.77447127122/8.0), | ||
14444 | REAL_CONST(113630.25385808491/8.0), | ||
14445 | REAL_CONST(113654.73456336933/8.0), | ||
14446 | REAL_CONST(113679.2165869825/8.0), | ||
14447 | REAL_CONST(113703.69992878241/8.0), | ||
14448 | REAL_CONST(113728.18458862718/8.0), | ||
14449 | REAL_CONST(113752.67056637487/8.0), | ||
14450 | REAL_CONST(113777.15786188368/8.0), | ||
14451 | REAL_CONST(113801.64647501177/8.0), | ||
14452 | REAL_CONST(113826.13640561736/8.0), | ||
14453 | REAL_CONST(113850.62765355874/8.0), | ||
14454 | REAL_CONST(113875.12021869418/8.0), | ||
14455 | REAL_CONST(113899.61410088204/8.0), | ||
14456 | REAL_CONST(113924.1092999807/8.0), | ||
14457 | REAL_CONST(113948.60581584855/8.0), | ||
14458 | REAL_CONST(113973.10364834407/8.0), | ||
14459 | REAL_CONST(113997.60279732574/8.0), | ||
14460 | REAL_CONST(114022.1032626521/8.0), | ||
14461 | REAL_CONST(114046.60504418171/8.0), | ||
14462 | REAL_CONST(114071.10814177318/8.0), | ||
14463 | REAL_CONST(114095.61255528514/8.0), | ||
14464 | REAL_CONST(114120.11828457628/8.0), | ||
14465 | REAL_CONST(114144.62532950533/8.0), | ||
14466 | REAL_CONST(114169.13368993104/8.0), | ||
14467 | REAL_CONST(114193.6433657122/8.0), | ||
14468 | REAL_CONST(114218.15435670764/8.0), | ||
14469 | REAL_CONST(114242.66666277625/8.0), | ||
14470 | REAL_CONST(114267.18028377694/8.0), | ||
14471 | REAL_CONST(114291.69521956862/8.0), | ||
14472 | REAL_CONST(114316.21147001031/8.0), | ||
14473 | REAL_CONST(114340.72903496103/8.0), | ||
14474 | REAL_CONST(114365.24791427983/8.0), | ||
14475 | REAL_CONST(114389.7681078258/8.0), | ||
14476 | REAL_CONST(114414.2896154581/8.0), | ||
14477 | REAL_CONST(114438.81243703589/8.0), | ||
14478 | REAL_CONST(114463.33657241837/8.0), | ||
14479 | REAL_CONST(114487.8620214648/8.0), | ||
14480 | REAL_CONST(114512.38878403447/8.0), | ||
14481 | REAL_CONST(114536.91685998671/8.0), | ||
14482 | REAL_CONST(114561.44624918087/8.0), | ||
14483 | REAL_CONST(114585.97695147636/8.0), | ||
14484 | REAL_CONST(114610.5089667326/8.0), | ||
14485 | REAL_CONST(114635.04229480909/8.0), | ||
14486 | REAL_CONST(114659.57693556532/8.0), | ||
14487 | REAL_CONST(114684.11288886084/8.0), | ||
14488 | REAL_CONST(114708.65015455526/8.0), | ||
14489 | REAL_CONST(114733.18873250818/8.0), | ||
14490 | REAL_CONST(114757.72862257928/8.0), | ||
14491 | REAL_CONST(114782.26982462825/8.0), | ||
14492 | REAL_CONST(114806.81233851484/8.0), | ||
14493 | REAL_CONST(114831.35616409882/8.0), | ||
14494 | REAL_CONST(114855.90130123998/8.0), | ||
14495 | REAL_CONST(114880.44774979822/8.0), | ||
14496 | REAL_CONST(114904.99550963337/8.0), | ||
14497 | REAL_CONST(114929.5445806054/8.0), | ||
14498 | REAL_CONST(114954.09496257425/8.0), | ||
14499 | REAL_CONST(114978.64665539992/8.0), | ||
14500 | REAL_CONST(115003.19965894247/8.0), | ||
14501 | REAL_CONST(115027.75397306195/8.0), | ||
14502 | REAL_CONST(115052.30959761847/8.0), | ||
14503 | REAL_CONST(115076.86653247218/8.0), | ||
14504 | REAL_CONST(115101.42477748329/8.0), | ||
14505 | REAL_CONST(115125.984332512/8.0), | ||
14506 | REAL_CONST(115150.54519741859/8.0), | ||
14507 | REAL_CONST(115175.10737206334/8.0), | ||
14508 | REAL_CONST(115199.67085630659/8.0), | ||
14509 | REAL_CONST(115224.23565000873/8.0), | ||
14510 | REAL_CONST(115248.80175303014/8.0), | ||
14511 | REAL_CONST(115273.3691652313/8.0), | ||
14512 | REAL_CONST(115297.93788647266/8.0), | ||
14513 | REAL_CONST(115322.50791661476/8.0), | ||
14514 | REAL_CONST(115347.07925551817/8.0), | ||
14515 | REAL_CONST(115371.65190304347/8.0), | ||
14516 | REAL_CONST(115396.22585905129/8.0), | ||
14517 | REAL_CONST(115420.80112340231/8.0), | ||
14518 | REAL_CONST(115445.37769595724/8.0), | ||
14519 | REAL_CONST(115469.95557657682/8.0), | ||
14520 | REAL_CONST(115494.53476512182/8.0), | ||
14521 | REAL_CONST(115519.11526145306/8.0), | ||
14522 | REAL_CONST(115543.69706543141/8.0), | ||
14523 | REAL_CONST(115568.28017691776/8.0), | ||
14524 | REAL_CONST(115592.86459577303/8.0), | ||
14525 | REAL_CONST(115617.4503218582/8.0), | ||
14526 | REAL_CONST(115642.03735503425/8.0), | ||
14527 | REAL_CONST(115666.62569516223/8.0), | ||
14528 | REAL_CONST(115691.21534210323/8.0), | ||
14529 | REAL_CONST(115715.80629571836/8.0), | ||
14530 | REAL_CONST(115740.39855586876/8.0), | ||
14531 | REAL_CONST(115764.99212241563/8.0), | ||
14532 | REAL_CONST(115789.58699522018/8.0), | ||
14533 | REAL_CONST(115814.18317414368/8.0), | ||
14534 | REAL_CONST(115838.78065904744/8.0), | ||
14535 | REAL_CONST(115863.37944979276/8.0), | ||
14536 | REAL_CONST(115887.97954624105/8.0), | ||
14537 | REAL_CONST(115912.5809482537/8.0), | ||
14538 | REAL_CONST(115937.18365569216/8.0), | ||
14539 | REAL_CONST(115961.78766841792/8.0), | ||
14540 | REAL_CONST(115986.39298629249/8.0), | ||
14541 | REAL_CONST(116010.99960917742/8.0), | ||
14542 | REAL_CONST(116035.60753693432/8.0), | ||
14543 | REAL_CONST(116060.21676942479/8.0), | ||
14544 | REAL_CONST(116084.82730651053/8.0), | ||
14545 | REAL_CONST(116109.43914805322/8.0), | ||
14546 | REAL_CONST(116134.0522939146/8.0), | ||
14547 | REAL_CONST(116158.66674395646/8.0), | ||
14548 | REAL_CONST(116183.2824980406/8.0), | ||
14549 | REAL_CONST(116207.89955602887/8.0), | ||
14550 | REAL_CONST(116232.51791778316/8.0), | ||
14551 | REAL_CONST(116257.13758316539/8.0), | ||
14552 | REAL_CONST(116281.75855203751/8.0), | ||
14553 | REAL_CONST(116306.38082426153/8.0), | ||
14554 | REAL_CONST(116331.00439969949/8.0), | ||
14555 | REAL_CONST(116355.62927821343/8.0), | ||
14556 | REAL_CONST(116380.25545966547/8.0), | ||
14557 | REAL_CONST(116404.88294391775/8.0), | ||
14558 | REAL_CONST(116429.51173083246/8.0), | ||
14559 | REAL_CONST(116454.14182027178/8.0), | ||
14560 | REAL_CONST(116478.77321209799/8.0), | ||
14561 | REAL_CONST(116503.40590617337/8.0), | ||
14562 | REAL_CONST(116528.03990236025/8.0), | ||
14563 | REAL_CONST(116552.67520052097/8.0), | ||
14564 | REAL_CONST(116577.31180051794/8.0), | ||
14565 | REAL_CONST(116601.94970221359/8.0), | ||
14566 | REAL_CONST(116626.5889054704/8.0), | ||
14567 | REAL_CONST(116651.22941015086/8.0), | ||
14568 | REAL_CONST(116675.87121611751/8.0), | ||
14569 | REAL_CONST(116700.51432323294/8.0), | ||
14570 | REAL_CONST(116725.15873135976/8.0), | ||
14571 | REAL_CONST(116749.8044403606/8.0), | ||
14572 | REAL_CONST(116774.45145009817/8.0), | ||
14573 | REAL_CONST(116799.0997604352/8.0), | ||
14574 | REAL_CONST(116823.74937123443/8.0), | ||
14575 | REAL_CONST(116848.40028235866/8.0), | ||
14576 | REAL_CONST(116873.05249367072/8.0), | ||
14577 | REAL_CONST(116897.70600503348/8.0), | ||
14578 | REAL_CONST(116922.36081630984/8.0), | ||
14579 | REAL_CONST(116947.01692736275/8.0), | ||
14580 | REAL_CONST(116971.67433805518/8.0), | ||
14581 | REAL_CONST(116996.33304825013/8.0), | ||
14582 | REAL_CONST(117020.99305781067/8.0), | ||
14583 | REAL_CONST(117045.65436659988/8.0), | ||
14584 | REAL_CONST(117070.31697448085/8.0), | ||
14585 | REAL_CONST(117094.98088131678/8.0), | ||
14586 | REAL_CONST(117119.64608697082/8.0), | ||
14587 | REAL_CONST(117144.31259130624/8.0), | ||
14588 | REAL_CONST(117168.98039418629/8.0), | ||
14589 | REAL_CONST(117193.64949547425/8.0), | ||
14590 | REAL_CONST(117218.31989503348/8.0), | ||
14591 | REAL_CONST(117242.99159272734/8.0), | ||
14592 | REAL_CONST(117267.66458841923/8.0), | ||
14593 | REAL_CONST(117292.33888197262/8.0), | ||
14594 | REAL_CONST(117317.01447325097/8.0), | ||
14595 | REAL_CONST(117341.6913621178/8.0), | ||
14596 | REAL_CONST(117366.36954843666/8.0), | ||
14597 | REAL_CONST(117391.04903207115/8.0), | ||
14598 | REAL_CONST(117415.72981288488/8.0), | ||
14599 | REAL_CONST(117440.41189074152/8.0), | ||
14600 | REAL_CONST(117465.09526550474/8.0), | ||
14601 | REAL_CONST(117489.77993703831/8.0), | ||
14602 | REAL_CONST(117514.46590520597/8.0), | ||
14603 | REAL_CONST(117539.15316987153/8.0), | ||
14604 | REAL_CONST(117563.84173089883/8.0), | ||
14605 | REAL_CONST(117588.53158815173/8.0), | ||
14606 | REAL_CONST(117613.22274149416/8.0), | ||
14607 | REAL_CONST(117637.91519079007/8.0), | ||
14608 | REAL_CONST(117662.60893590341/8.0), | ||
14609 | REAL_CONST(117687.30397669821/8.0), | ||
14610 | REAL_CONST(117712.00031303853/8.0), | ||
14611 | REAL_CONST(117736.69794478847/8.0), | ||
14612 | REAL_CONST(117761.39687181212/8.0), | ||
14613 | REAL_CONST(117786.09709397367/8.0), | ||
14614 | REAL_CONST(117810.7986111373/8.0), | ||
14615 | REAL_CONST(117835.50142316725/8.0), | ||
14616 | REAL_CONST(117860.20552992777/8.0), | ||
14617 | REAL_CONST(117884.91093128319/8.0), | ||
14618 | REAL_CONST(117909.6176270978/8.0), | ||
14619 | REAL_CONST(117934.32561723603/8.0), | ||
14620 | REAL_CONST(117959.03490156225/8.0), | ||
14621 | REAL_CONST(117983.74547994092/8.0), | ||
14622 | REAL_CONST(118008.45735223651/8.0), | ||
14623 | REAL_CONST(118033.17051831353/8.0), | ||
14624 | REAL_CONST(118057.88497803656/8.0), | ||
14625 | REAL_CONST(118082.60073127014/8.0), | ||
14626 | REAL_CONST(118107.31777787894/8.0), | ||
14627 | REAL_CONST(118132.03611772758/8.0), | ||
14628 | REAL_CONST(118156.75575068076/8.0), | ||
14629 | REAL_CONST(118181.47667660323/8.0), | ||
14630 | REAL_CONST(118206.19889535972/8.0), | ||
14631 | REAL_CONST(118230.92240681504/8.0), | ||
14632 | REAL_CONST(118255.64721083404/8.0), | ||
14633 | REAL_CONST(118280.37330728157/8.0), | ||
14634 | REAL_CONST(118305.10069602253/8.0), | ||
14635 | REAL_CONST(118329.82937692189/8.0), | ||
14636 | REAL_CONST(118354.55934984458/8.0), | ||
14637 | REAL_CONST(118379.29061465565/8.0), | ||
14638 | REAL_CONST(118404.02317122012/8.0), | ||
14639 | REAL_CONST(118428.75701940308/8.0), | ||
14640 | REAL_CONST(118453.49215906965/8.0), | ||
14641 | REAL_CONST(118478.22859008498/8.0), | ||
14642 | REAL_CONST(118502.96631231424/8.0), | ||
14643 | REAL_CONST(118527.70532562268/8.0), | ||
14644 | REAL_CONST(118552.44562987552/8.0), | ||
14645 | REAL_CONST(118577.18722493808/8.0), | ||
14646 | REAL_CONST(118601.93011067568/8.0), | ||
14647 | REAL_CONST(118626.67428695368/8.0), | ||
14648 | REAL_CONST(118651.41975363747/8.0), | ||
14649 | REAL_CONST(118676.16651059251/8.0), | ||
14650 | REAL_CONST(118700.91455768423/8.0), | ||
14651 | REAL_CONST(118725.66389477813/8.0), | ||
14652 | REAL_CONST(118750.41452173979/8.0), | ||
14653 | REAL_CONST(118775.16643843475/8.0), | ||
14654 | REAL_CONST(118799.91964472862/8.0), | ||
14655 | REAL_CONST(118824.67414048707/8.0), | ||
14656 | REAL_CONST(118849.42992557574/8.0), | ||
14657 | REAL_CONST(118874.18699986035/8.0), | ||
14658 | REAL_CONST(118898.94536320666/8.0), | ||
14659 | REAL_CONST(118923.70501548045/8.0), | ||
14660 | REAL_CONST(118948.46595654752/8.0), | ||
14661 | REAL_CONST(118973.22818627374/8.0), | ||
14662 | REAL_CONST(118997.99170452499/8.0), | ||
14663 | REAL_CONST(119022.7565111672/8.0), | ||
14664 | REAL_CONST(119047.52260606633/8.0), | ||
14665 | REAL_CONST(119072.28998908834/8.0), | ||
14666 | REAL_CONST(119097.0586600993/8.0), | ||
14667 | REAL_CONST(119121.82861896523/8.0), | ||
14668 | REAL_CONST(119146.59986555226/8.0), | ||
14669 | REAL_CONST(119171.3723997265/8.0), | ||
14670 | REAL_CONST(119196.14622135412/8.0), | ||
14671 | REAL_CONST(119220.92133030134/8.0), | ||
14672 | REAL_CONST(119245.69772643436/8.0), | ||
14673 | REAL_CONST(119270.47540961947/8.0), | ||
14674 | REAL_CONST(119295.25437972297/8.0), | ||
14675 | REAL_CONST(119320.03463661121/8.0), | ||
14676 | REAL_CONST(119344.81618015055/8.0), | ||
14677 | REAL_CONST(119369.5990102074/8.0), | ||
14678 | REAL_CONST(119394.38312664822/8.0), | ||
14679 | REAL_CONST(119419.16852933947/8.0), | ||
14680 | REAL_CONST(119443.95521814766/8.0), | ||
14681 | REAL_CONST(119468.74319293935/8.0), | ||
14682 | REAL_CONST(119493.53245358112/8.0), | ||
14683 | REAL_CONST(119518.32299993958/8.0), | ||
14684 | REAL_CONST(119543.11483188139/8.0), | ||
14685 | REAL_CONST(119567.90794927324/8.0), | ||
14686 | REAL_CONST(119592.70235198183/8.0), | ||
14687 | REAL_CONST(119617.49803987393/8.0), | ||
14688 | REAL_CONST(119642.29501281632/8.0), | ||
14689 | REAL_CONST(119667.09327067583/8.0), | ||
14690 | REAL_CONST(119691.89281331931/8.0), | ||
14691 | REAL_CONST(119716.69364061367/8.0), | ||
14692 | REAL_CONST(119741.49575242582/8.0), | ||
14693 | REAL_CONST(119766.29914862274/8.0), | ||
14694 | REAL_CONST(119791.10382907141/8.0), | ||
14695 | REAL_CONST(119815.90979363887/8.0), | ||
14696 | REAL_CONST(119840.71704219218/8.0), | ||
14697 | REAL_CONST(119865.52557459843/8.0), | ||
14698 | REAL_CONST(119890.33539072477/8.0), | ||
14699 | REAL_CONST(119915.14649043836/8.0), | ||
14700 | REAL_CONST(119939.95887360642/8.0), | ||
14701 | REAL_CONST(119964.77254009615/8.0), | ||
14702 | REAL_CONST(119989.58748977486/8.0), | ||
14703 | REAL_CONST(120014.40372250983/8.0), | ||
14704 | REAL_CONST(120039.22123816841/8.0), | ||
14705 | REAL_CONST(120064.04003661797/8.0), | ||
14706 | REAL_CONST(120088.86011772591/8.0), | ||
14707 | REAL_CONST(120113.6814813597/8.0), | ||
14708 | REAL_CONST(120138.5041273868/8.0), | ||
14709 | REAL_CONST(120163.3280556747/8.0), | ||
14710 | REAL_CONST(120188.15326609099/8.0), | ||
14711 | REAL_CONST(120212.97975850321/8.0), | ||
14712 | REAL_CONST(120237.807532779/8.0), | ||
14713 | REAL_CONST(120262.63658878599/8.0), | ||
14714 | REAL_CONST(120287.46692639188/8.0), | ||
14715 | REAL_CONST(120312.29854546436/8.0), | ||
14716 | REAL_CONST(120337.13144587121/8.0), | ||
14717 | REAL_CONST(120361.9656274802/8.0), | ||
14718 | REAL_CONST(120386.80109015915/8.0), | ||
14719 | REAL_CONST(120411.63783377589/8.0), | ||
14720 | REAL_CONST(120436.47585819835/8.0), | ||
14721 | REAL_CONST(120461.31516329442/8.0), | ||
14722 | REAL_CONST(120486.15574893207/8.0), | ||
14723 | REAL_CONST(120510.99761497928/8.0), | ||
14724 | REAL_CONST(120535.84076130406/8.0), | ||
14725 | REAL_CONST(120560.68518777451/8.0), | ||
14726 | REAL_CONST(120585.53089425867/8.0), | ||
14727 | REAL_CONST(120610.3778806247/8.0), | ||
14728 | REAL_CONST(120635.22614674074/8.0), | ||
14729 | REAL_CONST(120660.07569247499/8.0), | ||
14730 | REAL_CONST(120684.92651769568/8.0), | ||
14731 | REAL_CONST(120709.77862227106/8.0), | ||
14732 | REAL_CONST(120734.63200606944/8.0), | ||
14733 | REAL_CONST(120759.48666895913/8.0), | ||
14734 | REAL_CONST(120784.3426108085/8.0), | ||
14735 | REAL_CONST(120809.19983148595/8.0), | ||
14736 | REAL_CONST(120834.05833085992/8.0), | ||
14737 | REAL_CONST(120858.91810879884/8.0), | ||
14738 | REAL_CONST(120883.77916517125/8.0), | ||
14739 | REAL_CONST(120908.64149984565/8.0), | ||
14740 | REAL_CONST(120933.5051126906/8.0), | ||
14741 | REAL_CONST(120958.37000357473/8.0), | ||
14742 | REAL_CONST(120983.23617236665/8.0), | ||
14743 | REAL_CONST(121008.10361893504/8.0), | ||
14744 | REAL_CONST(121032.97234314861/8.0), | ||
14745 | REAL_CONST(121057.84234487606/8.0), | ||
14746 | REAL_CONST(121082.71362398617/8.0), | ||
14747 | REAL_CONST(121107.58618034775/8.0), | ||
14748 | REAL_CONST(121132.46001382964/8.0), | ||
14749 | REAL_CONST(121157.33512430069/8.0), | ||
14750 | REAL_CONST(121182.21151162982/8.0), | ||
14751 | REAL_CONST(121207.08917568595/8.0), | ||
14752 | REAL_CONST(121231.96811633807/8.0), | ||
14753 | REAL_CONST(121256.84833345517/8.0), | ||
14754 | REAL_CONST(121281.72982690629/8.0), | ||
14755 | REAL_CONST(121306.61259656049/8.0), | ||
14756 | REAL_CONST(121331.49664228689/8.0), | ||
14757 | REAL_CONST(121356.38196395461/8.0), | ||
14758 | REAL_CONST(121381.26856143285/8.0), | ||
14759 | REAL_CONST(121406.15643459078/8.0), | ||
14760 | REAL_CONST(121431.04558329767/8.0), | ||
14761 | REAL_CONST(121455.93600742276/8.0), | ||
14762 | REAL_CONST(121480.82770683538/8.0), | ||
14763 | REAL_CONST(121505.72068140487/8.0), | ||
14764 | REAL_CONST(121530.61493100057/8.0), | ||
14765 | REAL_CONST(121555.51045549192/8.0), | ||
14766 | REAL_CONST(121580.40725474835/8.0), | ||
14767 | REAL_CONST(121605.30532863933/8.0), | ||
14768 | REAL_CONST(121630.20467703436/8.0), | ||
14769 | REAL_CONST(121655.10529980299/8.0), | ||
14770 | REAL_CONST(121680.00719681478/8.0), | ||
14771 | REAL_CONST(121704.91036793934/8.0), | ||
14772 | REAL_CONST(121729.81481304632/8.0), | ||
14773 | REAL_CONST(121754.72053200539/8.0), | ||
14774 | REAL_CONST(121779.62752468624/8.0), | ||
14775 | REAL_CONST(121804.53579095862/8.0), | ||
14776 | REAL_CONST(121829.44533069231/8.0), | ||
14777 | REAL_CONST(121854.3561437571/8.0), | ||
14778 | REAL_CONST(121879.26823002285/8.0), | ||
14779 | REAL_CONST(121904.1815893594/8.0), | ||
14780 | REAL_CONST(121929.09622163669/8.0), | ||
14781 | REAL_CONST(121954.01212672464/8.0), | ||
14782 | REAL_CONST(121978.92930449323/8.0), | ||
14783 | REAL_CONST(122003.84775481246/8.0), | ||
14784 | REAL_CONST(122028.76747755238/8.0), | ||
14785 | REAL_CONST(122053.68847258303/8.0), | ||
14786 | REAL_CONST(122078.61073977455/8.0), | ||
14787 | REAL_CONST(122103.53427899707/8.0), | ||
14788 | REAL_CONST(122128.45909012076/8.0), | ||
14789 | REAL_CONST(122153.38517301581/8.0), | ||
14790 | REAL_CONST(122178.31252755247/8.0), | ||
14791 | REAL_CONST(122203.24115360099/8.0), | ||
14792 | REAL_CONST(122228.17105103172/8.0), | ||
14793 | REAL_CONST(122253.10221971494/8.0), | ||
14794 | REAL_CONST(122278.03465952107/8.0), | ||
14795 | REAL_CONST(122302.96837032049/8.0), | ||
14796 | REAL_CONST(122327.90335198362/8.0), | ||
14797 | REAL_CONST(122352.83960438096/8.0), | ||
14798 | REAL_CONST(122377.777127383/8.0), | ||
14799 | REAL_CONST(122402.71592086025/8.0), | ||
14800 | REAL_CONST(122427.65598468333/8.0), | ||
14801 | REAL_CONST(122452.59731872278/8.0), | ||
14802 | REAL_CONST(122477.53992284928/8.0), | ||
14803 | REAL_CONST(122502.48379693348/8.0), | ||
14804 | REAL_CONST(122527.42894084606/8.0), | ||
14805 | REAL_CONST(122552.37535445779/8.0), | ||
14806 | REAL_CONST(122577.32303763942/8.0), | ||
14807 | REAL_CONST(122602.27199026172/8.0), | ||
14808 | REAL_CONST(122627.22221219557/8.0), | ||
14809 | REAL_CONST(122652.17370331181/8.0), | ||
14810 | REAL_CONST(122677.12646348133/8.0), | ||
14811 | REAL_CONST(122702.08049257506/8.0), | ||
14812 | REAL_CONST(122727.03579046397/8.0), | ||
14813 | REAL_CONST(122751.99235701906/8.0), | ||
14814 | REAL_CONST(122776.95019211136/8.0), | ||
14815 | REAL_CONST(122801.9092956119/8.0), | ||
14816 | REAL_CONST(122826.8696673918/8.0), | ||
14817 | REAL_CONST(122851.83130732219/8.0), | ||
14818 | REAL_CONST(122876.79421527422/8.0), | ||
14819 | REAL_CONST(122901.75839111909/8.0), | ||
14820 | REAL_CONST(122926.72383472799/8.0), | ||
14821 | REAL_CONST(122951.69054597223/8.0), | ||
14822 | REAL_CONST(122976.65852472307/8.0), | ||
14823 | REAL_CONST(123001.62777085182/8.0), | ||
14824 | REAL_CONST(123026.59828422987/8.0), | ||
14825 | REAL_CONST(123051.57006472857/8.0), | ||
14826 | REAL_CONST(123076.54311221937/8.0), | ||
14827 | REAL_CONST(123101.5174265737/8.0), | ||
14828 | REAL_CONST(123126.49300766307/8.0), | ||
14829 | REAL_CONST(123151.46985535898/8.0), | ||
14830 | REAL_CONST(123176.44796953299/8.0), | ||
14831 | REAL_CONST(123201.42735005668/8.0), | ||
14832 | REAL_CONST(123226.40799680166/8.0), | ||
14833 | REAL_CONST(123251.38990963959/8.0), | ||
14834 | REAL_CONST(123276.37308844214/8.0), | ||
14835 | REAL_CONST(123301.35753308103/8.0), | ||
14836 | REAL_CONST(123326.343243428/8.0), | ||
14837 | REAL_CONST(123351.33021935483/8.0), | ||
14838 | REAL_CONST(123376.31846073334/8.0), | ||
14839 | REAL_CONST(123401.30796743535/8.0), | ||
14840 | REAL_CONST(123426.29873933276/8.0), | ||
14841 | REAL_CONST(123451.29077629748/8.0), | ||
14842 | REAL_CONST(123476.28407820144/8.0), | ||
14843 | REAL_CONST(123501.2786449166/8.0), | ||
14844 | REAL_CONST(123526.27447631498/8.0), | ||
14845 | REAL_CONST(123551.27157226863/8.0), | ||
14846 | REAL_CONST(123576.26993264959/8.0), | ||
14847 | REAL_CONST(123601.26955732999/8.0), | ||
14848 | REAL_CONST(123626.27044618195/8.0), | ||
14849 | REAL_CONST(123651.27259907764/8.0), | ||
14850 | REAL_CONST(123676.27601588926/8.0), | ||
14851 | REAL_CONST(123701.28069648903/8.0), | ||
14852 | REAL_CONST(123726.28664074924/8.0), | ||
14853 | REAL_CONST(123751.29384854218/8.0), | ||
14854 | REAL_CONST(123776.30231974016/8.0), | ||
14855 | REAL_CONST(123801.31205421555/8.0), | ||
14856 | REAL_CONST(123826.32305184075/8.0), | ||
14857 | REAL_CONST(123851.33531248817/8.0), | ||
14858 | REAL_CONST(123876.34883603029/8.0), | ||
14859 | REAL_CONST(123901.36362233957/8.0), | ||
14860 | REAL_CONST(123926.37967128855/8.0), | ||
14861 | REAL_CONST(123951.39698274979/8.0), | ||
14862 | REAL_CONST(123976.41555659588/8.0), | ||
14863 | REAL_CONST(124001.43539269941/8.0), | ||
14864 | REAL_CONST(124026.45649093305/8.0), | ||
14865 | REAL_CONST(124051.47885116948/8.0), | ||
14866 | REAL_CONST(124076.50247328142/8.0), | ||
14867 | REAL_CONST(124101.5273571416/8.0), | ||
14868 | REAL_CONST(124126.55350262282/8.0), | ||
14869 | REAL_CONST(124151.58090959788/8.0), | ||
14870 | REAL_CONST(124176.60957793961/8.0), | ||
14871 | REAL_CONST(124201.63950752091/8.0), | ||
14872 | REAL_CONST(124226.67069821467/8.0), | ||
14873 | REAL_CONST(124251.70314989384/8.0), | ||
14874 | REAL_CONST(124276.73686243138/8.0), | ||
14875 | REAL_CONST(124301.7718357003/8.0), | ||
14876 | REAL_CONST(124326.80806957364/8.0), | ||
14877 | REAL_CONST(124351.84556392446/8.0), | ||
14878 | REAL_CONST(124376.88431862585/8.0), | ||
14879 | REAL_CONST(124401.92433355095/8.0), | ||
14880 | REAL_CONST(124426.96560857294/8.0), | ||
14881 | REAL_CONST(124452.00814356498/8.0), | ||
14882 | REAL_CONST(124477.05193840031/8.0), | ||
14883 | REAL_CONST(124502.0969929522/8.0), | ||
14884 | REAL_CONST(124527.14330709392/8.0), | ||
14885 | REAL_CONST(124552.19088069882/8.0), | ||
14886 | REAL_CONST(124577.23971364023/8.0), | ||
14887 | REAL_CONST(124602.28980579154/8.0), | ||
14888 | REAL_CONST(124627.34115702618/8.0), | ||
14889 | REAL_CONST(124652.3937672176/8.0), | ||
14890 | REAL_CONST(124677.44763623926/8.0), | ||
14891 | REAL_CONST(124702.50276396469/8.0), | ||
14892 | REAL_CONST(124727.55915026742/8.0), | ||
14893 | REAL_CONST(124752.61679502104/8.0), | ||
14894 | REAL_CONST(124777.67569809916/8.0), | ||
14895 | REAL_CONST(124802.73585937542/8.0), | ||
14896 | REAL_CONST(124827.79727872348/8.0), | ||
14897 | REAL_CONST(124852.85995601704/8.0), | ||
14898 | REAL_CONST(124877.92389112986/8.0), | ||
14899 | REAL_CONST(124902.98908393568/8.0), | ||
14900 | REAL_CONST(124928.05553430831/8.0), | ||
14901 | REAL_CONST(124953.1232421216/8.0), | ||
14902 | REAL_CONST(124978.19220724938/8.0), | ||
14903 | REAL_CONST(125003.26242956554/8.0), | ||
14904 | REAL_CONST(125028.33390894404/8.0), | ||
14905 | REAL_CONST(125053.40664525882/8.0), | ||
14906 | REAL_CONST(125078.48063838384/8.0), | ||
14907 | REAL_CONST(125103.55588819318/8.0), | ||
14908 | REAL_CONST(125128.63239456083/8.0), | ||
14909 | REAL_CONST(125153.71015736091/8.0), | ||
14910 | REAL_CONST(125178.78917646752/8.0), | ||
14911 | REAL_CONST(125203.86945175481/8.0), | ||
14912 | REAL_CONST(125228.95098309696/8.0), | ||
14913 | REAL_CONST(125254.03377036817/8.0), | ||
14914 | REAL_CONST(125279.1178134427/8.0), | ||
14915 | REAL_CONST(125304.20311219479/8.0), | ||
14916 | REAL_CONST(125329.28966649878/8.0), | ||
14917 | REAL_CONST(125354.37747622898/8.0), | ||
14918 | REAL_CONST(125379.46654125977/8.0), | ||
14919 | REAL_CONST(125404.55686146552/8.0), | ||
14920 | REAL_CONST(125429.6484367207/8.0), | ||
14921 | REAL_CONST(125454.74126689974/8.0), | ||
14922 | REAL_CONST(125479.83535187715/8.0), | ||
14923 | REAL_CONST(125504.93069152744/8.0), | ||
14924 | REAL_CONST(125530.02728572517/8.0), | ||
14925 | REAL_CONST(125555.12513434493/8.0), | ||
14926 | REAL_CONST(125580.22423726133/8.0), | ||
14927 | REAL_CONST(125605.32459434902/8.0), | ||
14928 | REAL_CONST(125630.4262054827/8.0), | ||
14929 | REAL_CONST(125655.52907053704/8.0), | ||
14930 | REAL_CONST(125680.63318938682/8.0), | ||
14931 | REAL_CONST(125705.73856190679/8.0), | ||
14932 | REAL_CONST(125730.84518797178/8.0), | ||
14933 | REAL_CONST(125755.9530674566/8.0), | ||
14934 | REAL_CONST(125781.06220023613/8.0), | ||
14935 | REAL_CONST(125806.17258618528/8.0), | ||
14936 | REAL_CONST(125831.28422517896/8.0), | ||
14937 | REAL_CONST(125856.39711709213/8.0), | ||
14938 | REAL_CONST(125881.51126179981/8.0), | ||
14939 | REAL_CONST(125906.62665917698/8.0), | ||
14940 | REAL_CONST(125931.74330909875/8.0), | ||
14941 | REAL_CONST(125956.86121144016/8.0), | ||
14942 | REAL_CONST(125981.98036607634/8.0), | ||
14943 | REAL_CONST(126007.10077288245/8.0), | ||
14944 | REAL_CONST(126032.22243173365/8.0), | ||
14945 | REAL_CONST(126057.34534250517/8.0), | ||
14946 | REAL_CONST(126082.46950507225/8.0), | ||
14947 | REAL_CONST(126107.59491931014/8.0), | ||
14948 | REAL_CONST(126132.72158509417/8.0), | ||
14949 | REAL_CONST(126157.84950229966/8.0), | ||
14950 | REAL_CONST(126182.97867080198/8.0), | ||
14951 | REAL_CONST(126208.10909047653/8.0), | ||
14952 | REAL_CONST(126233.24076119871/8.0), | ||
14953 | REAL_CONST(126258.37368284403/8.0), | ||
14954 | REAL_CONST(126283.50785528794/8.0), | ||
14955 | REAL_CONST(126308.64327840599/8.0), | ||
14956 | REAL_CONST(126333.77995207369/8.0), | ||
14957 | REAL_CONST(126358.91787616667/8.0), | ||
14958 | REAL_CONST(126384.0570505605/8.0), | ||
14959 | REAL_CONST(126409.19747513086/8.0), | ||
14960 | REAL_CONST(126434.3391497534/8.0), | ||
14961 | REAL_CONST(126459.48207430386/8.0), | ||
14962 | REAL_CONST(126484.62624865794/8.0), | ||
14963 | REAL_CONST(126509.77167269142/8.0), | ||
14964 | REAL_CONST(126534.9183462801/8.0), | ||
14965 | REAL_CONST(126560.06626929982/8.0), | ||
14966 | REAL_CONST(126585.21544162642/8.0), | ||
14967 | REAL_CONST(126610.36586313581/8.0), | ||
14968 | REAL_CONST(126635.51753370393/8.0), | ||
14969 | REAL_CONST(126660.67045320668/8.0), | ||
14970 | REAL_CONST(126685.82462152008/8.0), | ||
14971 | REAL_CONST(126710.98003852014/8.0), | ||
14972 | REAL_CONST(126736.13670408291/8.0), | ||
14973 | REAL_CONST(126761.29461808444/8.0), | ||
14974 | REAL_CONST(126786.45378040087/8.0), | ||
14975 | REAL_CONST(126811.61419090834/8.0), | ||
14976 | REAL_CONST(126836.77584948298/8.0), | ||
14977 | REAL_CONST(126861.93875600102/8.0), | ||
14978 | REAL_CONST(126887.10291033868/8.0), | ||
14979 | REAL_CONST(126912.26831237224/8.0), | ||
14980 | REAL_CONST(126937.43496197795/8.0), | ||
14981 | REAL_CONST(126962.60285903217/8.0), | ||
14982 | REAL_CONST(126987.77200341123/8.0), | ||
14983 | REAL_CONST(127012.94239499152/8.0), | ||
14984 | REAL_CONST(127038.11403364947/8.0), | ||
14985 | REAL_CONST(127063.2869192615/8.0), | ||
14986 | REAL_CONST(127088.46105170409/8.0), | ||
14987 | REAL_CONST(127113.63643085376/8.0), | ||
14988 | REAL_CONST(127138.81305658702/8.0), | ||
14989 | REAL_CONST(127163.99092878048/8.0), | ||
14990 | REAL_CONST(127189.17004731069/8.0), | ||
14991 | REAL_CONST(127214.35041205429/8.0), | ||
14992 | REAL_CONST(127239.53202288797/8.0), | ||
14993 | REAL_CONST(127264.71487968838/8.0), | ||
14994 | REAL_CONST(127289.89898233226/8.0), | ||
14995 | REAL_CONST(127315.08433069635/8.0), | ||
14996 | REAL_CONST(127340.27092465744/8.0), | ||
14997 | REAL_CONST(127365.45876409234/8.0), | ||
14998 | REAL_CONST(127390.64784887788/8.0), | ||
14999 | REAL_CONST(127415.83817889093/8.0), | ||
15000 | REAL_CONST(127441.02975400841/8.0), | ||
15001 | REAL_CONST(127466.22257410725/8.0), | ||
15002 | REAL_CONST(127491.41663906439/8.0), | ||
15003 | REAL_CONST(127516.61194875685/8.0), | ||
15004 | REAL_CONST(127541.80850306165/8.0), | ||
15005 | REAL_CONST(127567.00630185583/8.0), | ||
15006 | REAL_CONST(127592.20534501647/8.0), | ||
15007 | REAL_CONST(127617.4056324207/8.0), | ||
15008 | REAL_CONST(127642.60716394568/8.0), | ||
15009 | REAL_CONST(127667.80993946856/8.0), | ||
15010 | REAL_CONST(127693.01395886653/8.0), | ||
15011 | REAL_CONST(127718.21922201688/8.0), | ||
15012 | REAL_CONST(127743.42572879682/8.0), | ||
15013 | REAL_CONST(127768.63347908368/8.0), | ||
15014 | REAL_CONST(127793.84247275478/8.0), | ||
15015 | REAL_CONST(127819.05270968749/8.0), | ||
15016 | REAL_CONST(127844.26418975917/8.0), | ||
15017 | REAL_CONST(127869.47691284724/8.0), | ||
15018 | REAL_CONST(127894.69087882918/8.0), | ||
15019 | REAL_CONST(127919.90608758242/8.0), | ||
15020 | REAL_CONST(127945.12253898452/8.0), | ||
15021 | REAL_CONST(127970.34023291297/8.0), | ||
15022 | REAL_CONST(127995.55916924537/8.0), | ||
15023 | REAL_CONST(128020.77934785932/8.0), | ||
15024 | REAL_CONST(128046.00076863244/8.0), | ||
15025 | REAL_CONST(128071.22343144237/8.0), | ||
15026 | REAL_CONST(128096.44733616684/8.0), | ||
15027 | REAL_CONST(128121.67248268353/8.0), | ||
15028 | REAL_CONST(128146.89887087021/8.0), | ||
15029 | REAL_CONST(128172.12650060465/8.0), | ||
15030 | REAL_CONST(128197.35537176467/8.0), | ||
15031 | REAL_CONST(128222.5854842281/8.0), | ||
15032 | REAL_CONST(128247.81683787282/8.0), | ||
15033 | REAL_CONST(128273.04943257671/8.0), | ||
15034 | REAL_CONST(128298.28326821771/8.0), | ||
15035 | REAL_CONST(128323.51834467379/8.0), | ||
15036 | REAL_CONST(128348.75466182294/8.0), | ||
15037 | REAL_CONST(128373.99221954317/8.0), | ||
15038 | REAL_CONST(128399.23101771252/8.0), | ||
15039 | REAL_CONST(128424.47105620909/8.0), | ||
15040 | REAL_CONST(128449.71233491098/8.0), | ||
15041 | REAL_CONST(128474.95485369631/8.0), | ||
15042 | REAL_CONST(128500.19861244329/8.0), | ||
15043 | REAL_CONST(128525.44361103009/8.0), | ||
15044 | REAL_CONST(128550.68984933494/8.0), | ||
15045 | REAL_CONST(128575.93732723613/8.0), | ||
15046 | REAL_CONST(128601.18604461191/8.0), | ||
15047 | REAL_CONST(128626.43600134061/8.0), | ||
15048 | REAL_CONST(128651.68719730059/8.0), | ||
15049 | REAL_CONST(128676.93963237021/8.0), | ||
15050 | REAL_CONST(128702.1933064279/8.0), | ||
15051 | REAL_CONST(128727.44821935208/8.0), | ||
15052 | REAL_CONST(128752.70437102125/8.0), | ||
15053 | REAL_CONST(128777.96176131385/8.0), | ||
15054 | REAL_CONST(128803.22039010846/8.0), | ||
15055 | REAL_CONST(128828.48025728362/8.0), | ||
15056 | REAL_CONST(128853.74136271792/8.0), | ||
15057 | REAL_CONST(128879.00370628996/8.0), | ||
15058 | REAL_CONST(128904.26728787841/8.0), | ||
15059 | REAL_CONST(128929.53210736193/8.0), | ||
15060 | REAL_CONST(128954.79816461923/8.0), | ||
15061 | REAL_CONST(128980.06545952905/8.0), | ||
15062 | REAL_CONST(129005.33399197015/8.0), | ||
15063 | REAL_CONST(129030.60376182134/8.0), | ||
15064 | REAL_CONST(129055.87476896142/8.0), | ||
15065 | REAL_CONST(129081.14701326926/8.0), | ||
15066 | REAL_CONST(129106.42049462376/8.0), | ||
15067 | REAL_CONST(129131.6952129038/8.0), | ||
15068 | REAL_CONST(129156.97116798835/8.0), | ||
15069 | REAL_CONST(129182.24835975636/8.0), | ||
15070 | REAL_CONST(129207.52678808685/8.0), | ||
15071 | REAL_CONST(129232.80645285884/8.0), | ||
15072 | REAL_CONST(129258.08735395141/8.0), | ||
15073 | REAL_CONST(129283.36949124365/8.0), | ||
15074 | REAL_CONST(129308.65286461466/8.0), | ||
15075 | REAL_CONST(129333.9374739436/8.0), | ||
15076 | REAL_CONST(129359.22331910966/8.0), | ||
15077 | REAL_CONST(129384.51039999202/8.0), | ||
15078 | REAL_CONST(129409.79871646997/8.0), | ||
15079 | REAL_CONST(129435.08826842274/8.0), | ||
15080 | REAL_CONST(129460.37905572963/8.0), | ||
15081 | REAL_CONST(129485.67107826998/8.0), | ||
15082 | REAL_CONST(129510.96433592314/8.0), | ||
15083 | REAL_CONST(129536.25882856851/8.0), | ||
15084 | REAL_CONST(129561.55455608548/8.0), | ||
15085 | REAL_CONST(129586.85151835352/8.0), | ||
15086 | REAL_CONST(129612.14971525209/8.0), | ||
15087 | REAL_CONST(129637.4491466607/8.0), | ||
15088 | REAL_CONST(129662.74981245887/8.0), | ||
15089 | REAL_CONST(129688.0517125262/8.0), | ||
15090 | REAL_CONST(129713.35484674224/8.0), | ||
15091 | REAL_CONST(129738.65921498663/8.0), | ||
15092 | REAL_CONST(129763.96481713903/8.0), | ||
15093 | REAL_CONST(129789.27165307909/8.0), | ||
15094 | REAL_CONST(129814.57972268655/8.0), | ||
15095 | REAL_CONST(129839.88902584116/8.0), | ||
15096 | REAL_CONST(129865.19956242264/8.0), | ||
15097 | REAL_CONST(129890.51133231082/8.0), | ||
15098 | REAL_CONST(129915.82433538554/8.0), | ||
15099 | REAL_CONST(129941.13857152662/8.0), | ||
15100 | REAL_CONST(129966.45404061397/8.0), | ||
15101 | REAL_CONST(129991.7707425275/8.0), | ||
15102 | REAL_CONST(130017.08867714716/8.0), | ||
15103 | REAL_CONST(130042.4078443529/8.0), | ||
15104 | REAL_CONST(130067.72824402474/8.0), | ||
15105 | REAL_CONST(130093.04987604271/8.0), | ||
15106 | REAL_CONST(130118.37274028687/8.0), | ||
15107 | REAL_CONST(130143.69683663732/8.0), | ||
15108 | REAL_CONST(130169.02216497416/8.0), | ||
15109 | REAL_CONST(130194.34872517755/8.0), | ||
15110 | REAL_CONST(130219.67651712766/8.0), | ||
15111 | REAL_CONST(130245.0055407047/8.0), | ||
15112 | REAL_CONST(130270.33579578891/8.0), | ||
15113 | REAL_CONST(130295.66728226055/8.0), | ||
15114 | REAL_CONST(130320.99999999991/8.0), | ||
15115 | REAL_CONST(130346.33394888733/8.0), | ||
15116 | REAL_CONST(130371.66912880314/8.0), | ||
15117 | REAL_CONST(130397.00553962773/8.0), | ||
15118 | REAL_CONST(130422.34318124152/8.0), | ||
15119 | REAL_CONST(130447.68205352494/8.0), | ||
15120 | REAL_CONST(130473.02215635845/8.0), | ||
15121 | REAL_CONST(130498.36348962256/8.0), | ||
15122 | REAL_CONST(130523.70605319779/8.0), | ||
15123 | REAL_CONST(130549.0498469647/8.0), | ||
15124 | REAL_CONST(130574.39487080388/8.0), | ||
15125 | REAL_CONST(130599.74112459592/8.0), | ||
15126 | REAL_CONST(130625.08860822149/8.0), | ||
15127 | REAL_CONST(130650.43732156123/8.0), | ||
15128 | REAL_CONST(130675.78726449587/8.0), | ||
15129 | REAL_CONST(130701.13843690613/8.0), | ||
15130 | REAL_CONST(130726.49083867275/8.0), | ||
15131 | REAL_CONST(130751.84446967654/8.0), | ||
15132 | REAL_CONST(130777.19932979831/8.0), | ||
15133 | REAL_CONST(130802.5554189189/8.0), | ||
15134 | REAL_CONST(130827.91273691918/8.0), | ||
15135 | REAL_CONST(130853.27128368006/8.0), | ||
15136 | REAL_CONST(130878.63105908247/8.0), | ||
15137 | REAL_CONST(130903.99206300738/8.0), | ||
15138 | REAL_CONST(130929.35429533575/8.0), | ||
15139 | REAL_CONST(130954.71775594862/8.0), | ||
15140 | REAL_CONST(130980.08244472703/8.0), | ||
15141 | REAL_CONST(131005.44836155206/8.0), | ||
15142 | REAL_CONST(131030.81550630482/8.0), | ||
15143 | REAL_CONST(131056.18387886642/8.0), | ||
15144 | REAL_CONST(131081.55347911804/8.0), | ||
15145 | REAL_CONST(131106.92430694087/8.0), | ||
15146 | REAL_CONST(131132.29636221612/8.0), | ||
15147 | REAL_CONST(131157.66964482504/8.0), | ||
15148 | REAL_CONST(131183.0441546489/8.0), | ||
15149 | REAL_CONST(131208.41989156904/8.0), | ||
15150 | REAL_CONST(131233.79685546676/8.0), | ||
15151 | REAL_CONST(131259.17504622342/8.0), | ||
15152 | REAL_CONST(131284.55446372041/8.0), | ||
15153 | REAL_CONST(131309.93510783918/8.0), | ||
15154 | REAL_CONST(131335.31697846117/8.0), | ||
15155 | REAL_CONST(131360.70007546784/8.0), | ||
15156 | REAL_CONST(131386.0843987407/8.0), | ||
15157 | REAL_CONST(131411.46994816128/8.0), | ||
15158 | REAL_CONST(131436.85672361116/8.0), | ||
15159 | REAL_CONST(131462.24472497194/8.0), | ||
15160 | REAL_CONST(131487.63395212521/8.0), | ||
15161 | REAL_CONST(131513.02440495262/8.0), | ||
15162 | REAL_CONST(131538.41608333588/8.0), | ||
15163 | REAL_CONST(131563.80898715663/8.0), | ||
15164 | REAL_CONST(131589.2031162967/8.0), | ||
15165 | REAL_CONST(131614.59847063778/8.0), | ||
15166 | REAL_CONST(131639.9950500617/8.0), | ||
15167 | REAL_CONST(131665.39285445024/8.0), | ||
15168 | REAL_CONST(131690.79188368531/8.0), | ||
15169 | REAL_CONST(131716.19213764873/8.0), | ||
15170 | REAL_CONST(131741.59361622241/8.0), | ||
15171 | REAL_CONST(131766.99631928833/8.0), | ||
15172 | REAL_CONST(131792.40024672839/8.0), | ||
15173 | REAL_CONST(131817.80539842462/8.0), | ||
15174 | REAL_CONST(131843.21177425905/8.0), | ||
15175 | REAL_CONST(131868.61937411371/8.0), | ||
15176 | REAL_CONST(131894.02819787065/8.0), | ||
15177 | REAL_CONST(131919.43824541202/8.0), | ||
15178 | REAL_CONST(131944.84951661993/8.0), | ||
15179 | REAL_CONST(131970.26201137656/8.0), | ||
15180 | REAL_CONST(131995.67572956407/8.0), | ||
15181 | REAL_CONST(132021.09067106468/8.0), | ||
15182 | REAL_CONST(132046.50683576067/8.0), | ||
15183 | REAL_CONST(132071.9242235343/8.0), | ||
15184 | REAL_CONST(132097.34283426782/8.0), | ||
15185 | REAL_CONST(132122.76266784366/8.0), | ||
15186 | REAL_CONST(132148.1837241441/8.0), | ||
15187 | REAL_CONST(132173.60600305157/8.0), | ||
15188 | REAL_CONST(132199.02950444847/8.0), | ||
15189 | REAL_CONST(132224.45422821722/8.0), | ||
15190 | REAL_CONST(132249.88017424036/8.0), | ||
15191 | REAL_CONST(132275.30734240031/8.0), | ||
15192 | REAL_CONST(132300.73573257966/8.0), | ||
15193 | REAL_CONST(132326.16534466096/8.0), | ||
15194 | REAL_CONST(132351.59617852676/8.0), | ||
15195 | REAL_CONST(132377.02823405969/8.0), | ||
15196 | REAL_CONST(132402.46151114244/8.0), | ||
15197 | REAL_CONST(132427.89600965759/8.0), | ||
15198 | REAL_CONST(132453.33172948789/8.0), | ||
15199 | REAL_CONST(132478.76867051609/8.0), | ||
15200 | REAL_CONST(132504.20683262491/8.0), | ||
15201 | REAL_CONST(132529.64621569714/8.0), | ||
15202 | REAL_CONST(132555.08681961559/8.0), | ||
15203 | REAL_CONST(132580.5286442631/8.0), | ||
15204 | REAL_CONST(132605.97168952253/8.0), | ||
15205 | REAL_CONST(132631.41595527678/8.0), | ||
15206 | REAL_CONST(132656.86144140881/8.0), | ||
15207 | REAL_CONST(132682.30814780149/8.0), | ||
15208 | REAL_CONST(132707.75607433787/8.0), | ||
15209 | REAL_CONST(132733.20522090094/8.0), | ||
15210 | REAL_CONST(132758.65558737374/8.0), | ||
15211 | REAL_CONST(132784.10717363929/8.0), | ||
15212 | REAL_CONST(132809.55997958075/8.0), | ||
15213 | REAL_CONST(132835.01400508118/8.0), | ||
15214 | REAL_CONST(132860.46925002377/8.0), | ||
15215 | REAL_CONST(132885.92571429166/8.0), | ||
15216 | REAL_CONST(132911.38339776811/8.0), | ||
15217 | REAL_CONST(132936.84230033628/8.0), | ||
15218 | REAL_CONST(132962.30242187946/8.0), | ||
15219 | REAL_CONST(132987.76376228096/8.0), | ||
15220 | REAL_CONST(133013.22632142407/8.0), | ||
15221 | REAL_CONST(133038.69009919214/8.0), | ||
15222 | REAL_CONST(133064.15509546854/8.0), | ||
15223 | REAL_CONST(133089.62131013666/8.0), | ||
15224 | REAL_CONST(133115.08874307995/8.0), | ||
15225 | REAL_CONST(133140.55739418184/8.0), | ||
15226 | REAL_CONST(133166.02726332581/8.0), | ||
15227 | REAL_CONST(133191.49835039541/8.0), | ||
15228 | REAL_CONST(133216.97065527414/8.0), | ||
15229 | REAL_CONST(133242.44417784561/8.0), | ||
15230 | REAL_CONST(133267.91891799335/8.0), | ||
15231 | REAL_CONST(133293.39487560102/8.0), | ||
15232 | REAL_CONST(133318.87205055228/8.0), | ||
15233 | REAL_CONST(133344.35044273079/8.0), | ||
15234 | REAL_CONST(133369.83005202023/8.0), | ||
15235 | REAL_CONST(133395.31087830439/8.0), | ||
15236 | REAL_CONST(133420.79292146701/8.0), | ||
15237 | REAL_CONST(133446.27618139185/8.0), | ||
15238 | REAL_CONST(133471.76065796276/8.0), | ||
15239 | REAL_CONST(133497.24635106357/8.0), | ||
15240 | REAL_CONST(133522.73326057816/8.0), | ||
15241 | REAL_CONST(133548.22138639039/8.0), | ||
15242 | REAL_CONST(133573.71072838426/8.0), | ||
15243 | REAL_CONST(133599.20128644365/8.0), | ||
15244 | REAL_CONST(133624.69306045261/8.0), | ||
15245 | REAL_CONST(133650.1860502951/8.0), | ||
15246 | REAL_CONST(133675.68025585517/8.0), | ||
15247 | REAL_CONST(133701.1756770169/8.0), | ||
15248 | REAL_CONST(133726.67231366437/8.0), | ||
15249 | REAL_CONST(133752.17016568172/8.0), | ||
15250 | REAL_CONST(133777.66923295305/8.0), | ||
15251 | REAL_CONST(133803.16951536259/8.0), | ||
15252 | REAL_CONST(133828.67101279454/8.0), | ||
15253 | REAL_CONST(133854.17372513309/8.0), | ||
15254 | REAL_CONST(133879.67765226253/8.0), | ||
15255 | REAL_CONST(133905.18279406714/8.0), | ||
15256 | REAL_CONST(133930.68915043125/8.0), | ||
15257 | REAL_CONST(133956.19672123916/8.0), | ||
15258 | REAL_CONST(133981.70550637526/8.0), | ||
15259 | REAL_CONST(134007.21550572399/8.0), | ||
15260 | REAL_CONST(134032.7267191697/8.0), | ||
15261 | REAL_CONST(134058.23914659687/8.0), | ||
15262 | REAL_CONST(134083.75278789/8.0), | ||
15263 | REAL_CONST(134109.26764293358/8.0), | ||
15264 | REAL_CONST(134134.78371161217/8.0), | ||
15265 | REAL_CONST(134160.30099381026/8.0), | ||
15266 | REAL_CONST(134185.8194894125/8.0), | ||
15267 | REAL_CONST(134211.33919830353/8.0), | ||
15268 | REAL_CONST(134236.8601203679/8.0), | ||
15269 | REAL_CONST(134262.38225549037/8.0), | ||
15270 | REAL_CONST(134287.90560355558/8.0), | ||
15271 | REAL_CONST(134313.43016444831/8.0), | ||
15272 | REAL_CONST(134338.95593805326/8.0), | ||
15273 | REAL_CONST(134364.48292425525/8.0), | ||
15274 | REAL_CONST(134390.01112293909/8.0), | ||
15275 | REAL_CONST(134415.54053398955/8.0), | ||
15276 | REAL_CONST(134441.07115729159/8.0), | ||
15277 | REAL_CONST(134466.60299273001/8.0), | ||
15278 | REAL_CONST(134492.1360401898/8.0), | ||
15279 | REAL_CONST(134517.67029955584/8.0), | ||
15280 | REAL_CONST(134543.20577071316/8.0), | ||
15281 | REAL_CONST(134568.74245354676/8.0), | ||
15282 | REAL_CONST(134594.28034794159/8.0), | ||
15283 | REAL_CONST(134619.81945378278/8.0), | ||
15284 | REAL_CONST(134645.35977095537/8.0), | ||
15285 | REAL_CONST(134670.90129934452/8.0), | ||
15286 | REAL_CONST(134696.4440388353/8.0), | ||
15287 | REAL_CONST(134721.98798931291/8.0), | ||
15288 | REAL_CONST(134747.53315066252/8.0), | ||
15289 | REAL_CONST(134773.07952276937/8.0), | ||
15290 | REAL_CONST(134798.62710551871/8.0), | ||
15291 | REAL_CONST(134824.17589879577/8.0), | ||
15292 | REAL_CONST(134849.72590248589/8.0), | ||
15293 | REAL_CONST(134875.27711647438/8.0), | ||
15294 | REAL_CONST(134900.82954064661/8.0), | ||
15295 | REAL_CONST(134926.38317488792/8.0), | ||
15296 | REAL_CONST(134951.93801908373/8.0), | ||
15297 | REAL_CONST(134977.49407311951/8.0), | ||
15298 | REAL_CONST(135003.05133688069/8.0), | ||
15299 | REAL_CONST(135028.60981025276/8.0), | ||
15300 | REAL_CONST(135054.16949312127/8.0), | ||
15301 | REAL_CONST(135079.73038537172/8.0), | ||
15302 | REAL_CONST(135105.29248688967/8.0), | ||
15303 | REAL_CONST(135130.85579756077/8.0), | ||
15304 | REAL_CONST(135156.42031727062/8.0), | ||
15305 | REAL_CONST(135181.98604590484/8.0), | ||
15306 | REAL_CONST(135207.55298334916/8.0), | ||
15307 | REAL_CONST(135233.12112948924/8.0), | ||
15308 | REAL_CONST(135258.69048421088/8.0), | ||
15309 | REAL_CONST(135284.26104739975/8.0), | ||
15310 | REAL_CONST(135309.83281894168/8.0), | ||
15311 | REAL_CONST(135335.4057987225/8.0), | ||
15312 | REAL_CONST(135360.97998662802/8.0), | ||
15313 | REAL_CONST(135386.55538254412/8.0), | ||
15314 | REAL_CONST(135412.13198635669/8.0), | ||
15315 | REAL_CONST(135437.70979795168/8.0), | ||
15316 | REAL_CONST(135463.28881721498/8.0), | ||
15317 | REAL_CONST(135488.86904403262/8.0), | ||
15318 | REAL_CONST(135514.45047829056/8.0), | ||
15319 | REAL_CONST(135540.03311987486/8.0), | ||
15320 | REAL_CONST(135565.61696867159/8.0), | ||
15321 | REAL_CONST(135591.20202456677/8.0), | ||
15322 | REAL_CONST(135616.78828744654/8.0), | ||
15323 | REAL_CONST(135642.37575719706/8.0), | ||
15324 | REAL_CONST(135667.96443370447/8.0), | ||
15325 | REAL_CONST(135693.55431685498/8.0), | ||
15326 | REAL_CONST(135719.14540653475/8.0), | ||
15327 | REAL_CONST(135744.73770263011/8.0), | ||
15328 | REAL_CONST(135770.33120502727/8.0), | ||
15329 | REAL_CONST(135795.92591361253/8.0), | ||
15330 | REAL_CONST(135821.52182827223/8.0), | ||
15331 | REAL_CONST(135847.11894889272/8.0), | ||
15332 | REAL_CONST(135872.7172753604/8.0), | ||
15333 | REAL_CONST(135898.31680756161/8.0), | ||
15334 | REAL_CONST(135923.91754538284/8.0), | ||
15335 | REAL_CONST(135949.51948871053/8.0), | ||
15336 | REAL_CONST(135975.12263743114/8.0), | ||
15337 | REAL_CONST(136000.72699143123/8.0), | ||
15338 | REAL_CONST(136026.33255059729/8.0), | ||
15339 | REAL_CONST(136051.93931481591/8.0), | ||
15340 | REAL_CONST(136077.54728397369/8.0), | ||
15341 | REAL_CONST(136103.15645795723/8.0), | ||
15342 | REAL_CONST(136128.76683665317/8.0), | ||
15343 | REAL_CONST(136154.37841994822/8.0), | ||
15344 | REAL_CONST(136179.99120772901/8.0), | ||
15345 | REAL_CONST(136205.60519988232/8.0), | ||
15346 | REAL_CONST(136231.2203962949/8.0), | ||
15347 | REAL_CONST(136256.83679685349/8.0), | ||
15348 | REAL_CONST(136282.45440144493/8.0), | ||
15349 | REAL_CONST(136308.07320995603/8.0), | ||
15350 | REAL_CONST(136333.69322227367/8.0), | ||
15351 | REAL_CONST(136359.31443828469/8.0), | ||
15352 | REAL_CONST(136384.93685787608/8.0), | ||
15353 | REAL_CONST(136410.56048093468/8.0), | ||
15354 | REAL_CONST(136436.18530734754/8.0), | ||
15355 | REAL_CONST(136461.81133700156/8.0), | ||
15356 | REAL_CONST(136487.43856978384/8.0), | ||
15357 | REAL_CONST(136513.06700558143/8.0), | ||
15358 | REAL_CONST(136538.6966442813/8.0), | ||
15359 | REAL_CONST(136564.32748577066/8.0), | ||
15360 | REAL_CONST(136589.95952993655/8.0), | ||
15361 | REAL_CONST(136615.59277666616/8.0), | ||
15362 | REAL_CONST(136641.22722584667/8.0), | ||
15363 | REAL_CONST(136666.86287736523/8.0), | ||
15364 | REAL_CONST(136692.49973110916/8.0), | ||
15365 | REAL_CONST(136718.13778696564/8.0), | ||
15366 | REAL_CONST(136743.77704482197/8.0), | ||
15367 | REAL_CONST(136769.41750456547/8.0), | ||
15368 | REAL_CONST(136795.05916608346/8.0), | ||
15369 | REAL_CONST(136820.70202926331/8.0), | ||
15370 | REAL_CONST(136846.34609399244/8.0), | ||
15371 | REAL_CONST(136871.99136015819/8.0), | ||
15372 | REAL_CONST(136897.63782764805/8.0), | ||
15373 | REAL_CONST(136923.28549634948/8.0), | ||
15374 | REAL_CONST(136948.93436614997/8.0), | ||
15375 | REAL_CONST(136974.58443693706/8.0), | ||
15376 | REAL_CONST(137000.23570859825/8.0), | ||
15377 | REAL_CONST(137025.88818102115/8.0), | ||
15378 | REAL_CONST(137051.54185409332/8.0), | ||
15379 | REAL_CONST(137077.19672770242/8.0), | ||
15380 | REAL_CONST(137102.85280173609/8.0), | ||
15381 | REAL_CONST(137128.51007608202/8.0), | ||
15382 | REAL_CONST(137154.16855062786/8.0), | ||
15383 | REAL_CONST(137179.82822526142/8.0), | ||
15384 | REAL_CONST(137205.48909987041/8.0), | ||
15385 | REAL_CONST(137231.15117434258/8.0), | ||
15386 | REAL_CONST(137256.8144485658/8.0), | ||
15387 | REAL_CONST(137282.47892242789/8.0), | ||
15388 | REAL_CONST(137308.14459581667/8.0), | ||
15389 | REAL_CONST(137333.81146862009/8.0), | ||
15390 | REAL_CONST(137359.47954072602/8.0), | ||
15391 | REAL_CONST(137385.14881202241/8.0), | ||
15392 | REAL_CONST(137410.81928239719/8.0), | ||
15393 | REAL_CONST(137436.49095173844/8.0), | ||
15394 | REAL_CONST(137462.16381993407/8.0), | ||
15395 | REAL_CONST(137487.83788687221/8.0), | ||
15396 | REAL_CONST(137513.51315244089/8.0), | ||
15397 | REAL_CONST(137539.18961652822/8.0), | ||
15398 | REAL_CONST(137564.86727902229/8.0), | ||
15399 | REAL_CONST(137590.54613981131/8.0), | ||
15400 | REAL_CONST(137616.22619878338/8.0), | ||
15401 | REAL_CONST(137641.90745582676/8.0), | ||
15402 | REAL_CONST(137667.58991082967/8.0), | ||
15403 | REAL_CONST(137693.27356368033/8.0), | ||
15404 | REAL_CONST(137718.95841426702/8.0), | ||
15405 | REAL_CONST(137744.64446247809/8.0), | ||
15406 | REAL_CONST(137770.33170820182/8.0), | ||
15407 | REAL_CONST(137796.02015132661/8.0), | ||
15408 | REAL_CONST(137821.70979174081/8.0), | ||
15409 | REAL_CONST(137847.40062933284/8.0), | ||
15410 | REAL_CONST(137873.09266399115/8.0), | ||
15411 | REAL_CONST(137898.78589560417/8.0), | ||
15412 | REAL_CONST(137924.48032406042/8.0), | ||
15413 | REAL_CONST(137950.17594924837/8.0), | ||
15414 | REAL_CONST(137975.8727710566/8.0), | ||
15415 | REAL_CONST(138001.57078937365/8.0), | ||
15416 | REAL_CONST(138027.27000408815/8.0), | ||
15417 | REAL_CONST(138052.97041508864/8.0), | ||
15418 | REAL_CONST(138078.67202226384/8.0), | ||
15419 | REAL_CONST(138104.3748255024/8.0), | ||
15420 | REAL_CONST(138130.07882469296/8.0), | ||
15421 | REAL_CONST(138155.78401972432/8.0), | ||
15422 | REAL_CONST(138181.49041048516/8.0), | ||
15423 | REAL_CONST(138207.1979968643/8.0), | ||
15424 | REAL_CONST(138232.9067787505/8.0), | ||
15425 | REAL_CONST(138258.61675603263/8.0), | ||
15426 | REAL_CONST(138284.32792859949/8.0), | ||
15427 | REAL_CONST(138310.04029633995/8.0), | ||
15428 | REAL_CONST(138335.75385914298/8.0), | ||
15429 | REAL_CONST(138361.46861689744/8.0), | ||
15430 | REAL_CONST(138387.18456949232/8.0), | ||
15431 | REAL_CONST(138412.90171681659/8.0), | ||
15432 | REAL_CONST(138438.62005875923/8.0), | ||
15433 | REAL_CONST(138464.33959520931/8.0), | ||
15434 | REAL_CONST(138490.06032605586/8.0), | ||
15435 | REAL_CONST(138515.78225118798/8.0), | ||
15436 | REAL_CONST(138541.50537049473/8.0), | ||
15437 | REAL_CONST(138567.2296838653/8.0), | ||
15438 | REAL_CONST(138592.95519118884/8.0), | ||
15439 | REAL_CONST(138618.68189235451/8.0), | ||
15440 | REAL_CONST(138644.40978725153/8.0), | ||
15441 | REAL_CONST(138670.13887576913/8.0), | ||
15442 | REAL_CONST(138695.86915779658/8.0), | ||
15443 | REAL_CONST(138721.60063322316/8.0), | ||
15444 | REAL_CONST(138747.33330193823/8.0), | ||
15445 | REAL_CONST(138773.06716383106/8.0), | ||
15446 | REAL_CONST(138798.80221879104/8.0), | ||
15447 | REAL_CONST(138824.53846670757/8.0), | ||
15448 | REAL_CONST(138850.27590747006/8.0), | ||
15449 | REAL_CONST(138876.01454096794/8.0), | ||
15450 | REAL_CONST(138901.7543670907/8.0), | ||
15451 | REAL_CONST(138927.49538572782/8.0), | ||
15452 | REAL_CONST(138953.2375967688/8.0), | ||
15453 | REAL_CONST(138978.9810001032/8.0), | ||
15454 | REAL_CONST(139004.72559562061/8.0), | ||
15455 | REAL_CONST(139030.47138321059/8.0), | ||
15456 | REAL_CONST(139056.2183627628/8.0), | ||
15457 | REAL_CONST(139081.96653416683/8.0), | ||
15458 | REAL_CONST(139107.71589731239/8.0), | ||
15459 | REAL_CONST(139133.46645208917/8.0), | ||
15460 | REAL_CONST(139159.21819838689/8.0), | ||
15461 | REAL_CONST(139184.97113609532/8.0), | ||
15462 | REAL_CONST(139210.72526510421/8.0), | ||
15463 | REAL_CONST(139236.48058530336/8.0), | ||
15464 | REAL_CONST(139262.23709658257/8.0), | ||
15465 | REAL_CONST(139287.99479883176/8.0), | ||
15466 | REAL_CONST(139313.75369194071/8.0), | ||
15467 | REAL_CONST(139339.51377579942/8.0), | ||
15468 | REAL_CONST(139365.27505029776/8.0), | ||
15469 | REAL_CONST(139391.03751532568/8.0), | ||
15470 | REAL_CONST(139416.80117077316/8.0), | ||
15471 | REAL_CONST(139442.56601653024/8.0), | ||
15472 | REAL_CONST(139468.33205248689/8.0), | ||
15473 | REAL_CONST(139494.09927853322/8.0), | ||
15474 | REAL_CONST(139519.86769455927/8.0), | ||
15475 | REAL_CONST(139545.63730045516/8.0), | ||
15476 | REAL_CONST(139571.408096111/8.0), | ||
15477 | REAL_CONST(139597.18008141697/8.0), | ||
15478 | REAL_CONST(139622.95325626322/8.0), | ||
15479 | REAL_CONST(139648.72762054001/8.0), | ||
15480 | REAL_CONST(139674.5031741375/8.0), | ||
15481 | REAL_CONST(139700.27991694602/8.0), | ||
15482 | REAL_CONST(139726.05784885579/8.0), | ||
15483 | REAL_CONST(139751.83696975713/8.0), | ||
15484 | REAL_CONST(139777.61727954043/8.0), | ||
15485 | REAL_CONST(139803.39877809596/8.0), | ||
15486 | REAL_CONST(139829.18146531415/8.0), | ||
15487 | REAL_CONST(139854.96534108539/8.0), | ||
15488 | REAL_CONST(139880.75040530015/8.0), | ||
15489 | REAL_CONST(139906.53665784886/8.0), | ||
15490 | REAL_CONST(139932.32409862199/8.0), | ||
15491 | REAL_CONST(139958.11272751007/8.0), | ||
15492 | REAL_CONST(139983.90254440365/8.0), | ||
15493 | REAL_CONST(140009.69354919327/8.0), | ||
15494 | REAL_CONST(140035.48574176949/8.0), | ||
15495 | REAL_CONST(140061.27912202294/8.0), | ||
15496 | REAL_CONST(140087.07368984428/8.0), | ||
15497 | REAL_CONST(140112.86944512415/8.0), | ||
15498 | REAL_CONST(140138.66638775321/8.0), | ||
15499 | REAL_CONST(140164.4645176222/8.0), | ||
15500 | REAL_CONST(140190.26383462184/8.0), | ||
15501 | REAL_CONST(140216.06433864293/8.0), | ||
15502 | REAL_CONST(140241.86602957622/8.0), | ||
15503 | REAL_CONST(140267.66890731253/8.0), | ||
15504 | REAL_CONST(140293.47297174268/8.0), | ||
15505 | REAL_CONST(140319.27822275754/8.0), | ||
15506 | REAL_CONST(140345.08466024802/8.0), | ||
15507 | REAL_CONST(140370.89228410498/8.0), | ||
15508 | REAL_CONST(140396.70109421943/8.0), | ||
15509 | REAL_CONST(140422.51109048226/8.0), | ||
15510 | REAL_CONST(140448.32227278448/8.0), | ||
15511 | REAL_CONST(140474.13464101712/8.0), | ||
15512 | REAL_CONST(140499.94819507122/8.0), | ||
15513 | REAL_CONST(140525.76293483781/8.0), | ||
15514 | REAL_CONST(140551.57886020801/8.0), | ||
15515 | REAL_CONST(140577.3959710729/8.0), | ||
15516 | REAL_CONST(140603.21426732364/8.0), | ||
15517 | REAL_CONST(140629.03374885136/8.0), | ||
15518 | REAL_CONST(140654.85441554731/8.0), | ||
15519 | REAL_CONST(140680.67626730262/8.0), | ||
15520 | REAL_CONST(140706.49930400858/8.0), | ||
15521 | REAL_CONST(140732.32352555645/8.0), | ||
15522 | REAL_CONST(140758.1489318375/8.0), | ||
15523 | REAL_CONST(140783.97552274304/8.0), | ||
15524 | REAL_CONST(140809.80329816442/8.0), | ||
15525 | REAL_CONST(140835.63225799298/8.0), | ||
15526 | REAL_CONST(140861.46240212015/8.0), | ||
15527 | REAL_CONST(140887.29373043729/8.0), | ||
15528 | REAL_CONST(140913.12624283586/8.0), | ||
15529 | REAL_CONST(140938.95993920733/8.0), | ||
15530 | REAL_CONST(140964.79481944317/8.0), | ||
15531 | REAL_CONST(140990.63088343487/8.0), | ||
15532 | REAL_CONST(141016.46813107401/8.0), | ||
15533 | REAL_CONST(141042.30656225214/8.0), | ||
15534 | REAL_CONST(141068.14617686081/8.0), | ||
15535 | REAL_CONST(141093.98697479168/8.0), | ||
15536 | REAL_CONST(141119.82895593636/8.0), | ||
15537 | REAL_CONST(141145.6721201865/8.0), | ||
15538 | REAL_CONST(141171.51646743377/8.0), | ||
15539 | REAL_CONST(141197.36199756994/8.0), | ||
15540 | REAL_CONST(141223.20871048668/8.0), | ||
15541 | REAL_CONST(141249.05660607578/8.0), | ||
15542 | REAL_CONST(141274.90568422904/8.0), | ||
15543 | REAL_CONST(141300.75594483822/8.0), | ||
15544 | REAL_CONST(141326.6073877952/8.0), | ||
15545 | REAL_CONST(141352.4600129918/8.0), | ||
15546 | REAL_CONST(141378.31382031992/8.0), | ||
15547 | REAL_CONST(141404.16880967148/8.0), | ||
15548 | REAL_CONST(141430.02498093838/8.0), | ||
15549 | REAL_CONST(141455.8823340126/8.0), | ||
15550 | REAL_CONST(141481.74086878612/8.0), | ||
15551 | REAL_CONST(141507.60058515094/8.0), | ||
15552 | REAL_CONST(141533.46148299909/8.0), | ||
15553 | REAL_CONST(141559.32356222265/8.0), | ||
15554 | REAL_CONST(141585.18682271364/8.0), | ||
15555 | REAL_CONST(141611.05126436421/8.0), | ||
15556 | REAL_CONST(141636.9168870665/8.0), | ||
15557 | REAL_CONST(141662.78369071262/8.0), | ||
15558 | REAL_CONST(141688.65167519479/8.0), | ||
15559 | REAL_CONST(141714.5208404052/8.0), | ||
15560 | REAL_CONST(141740.39118623605/8.0), | ||
15561 | REAL_CONST(141766.26271257963/8.0), | ||
15562 | REAL_CONST(141792.1354193282/8.0), | ||
15563 | REAL_CONST(141818.00930637406/8.0), | ||
15564 | REAL_CONST(141843.88437360956/8.0), | ||
15565 | REAL_CONST(141869.760620927/8.0), | ||
15566 | REAL_CONST(141895.6380482188/8.0), | ||
15567 | REAL_CONST(141921.51665537735/8.0), | ||
15568 | REAL_CONST(141947.39644229505/8.0), | ||
15569 | REAL_CONST(141973.27740886438/8.0), | ||
15570 | REAL_CONST(141999.15955497778/8.0), | ||
15571 | REAL_CONST(142025.04288052776/8.0), | ||
15572 | REAL_CONST(142050.92738540689/8.0), | ||
15573 | REAL_CONST(142076.81306950765/8.0), | ||
15574 | REAL_CONST(142102.69993272264/8.0), | ||
15575 | REAL_CONST(142128.58797494444/8.0), | ||
15576 | REAL_CONST(142154.47719606571/8.0), | ||
15577 | REAL_CONST(142180.36759597904/8.0), | ||
15578 | REAL_CONST(142206.25917457714/8.0), | ||
15579 | REAL_CONST(142232.15193175265/8.0), | ||
15580 | REAL_CONST(142258.04586739838/8.0), | ||
15581 | REAL_CONST(142283.94098140698/8.0), | ||
15582 | REAL_CONST(142309.83727367126/8.0), | ||
15583 | REAL_CONST(142335.73474408401/8.0), | ||
15584 | REAL_CONST(142361.63339253806/8.0), | ||
15585 | REAL_CONST(142387.5332189262/8.0), | ||
15586 | REAL_CONST(142413.43422314132/8.0), | ||
15587 | REAL_CONST(142439.33640507635/8.0), | ||
15588 | REAL_CONST(142465.23976462413/8.0), | ||
15589 | REAL_CONST(142491.14430167765/8.0), | ||
15590 | REAL_CONST(142517.05001612983/8.0), | ||
15591 | REAL_CONST(142542.95690787368/8.0), | ||
15592 | REAL_CONST(142568.86497680223/8.0), | ||
15593 | REAL_CONST(142594.77422280848/8.0), | ||
15594 | REAL_CONST(142620.68464578551/8.0), | ||
15595 | REAL_CONST(142646.5962456264/8.0), | ||
15596 | REAL_CONST(142672.50902222423/8.0), | ||
15597 | REAL_CONST(142698.42297547215/8.0), | ||
15598 | REAL_CONST(142724.33810526333/8.0), | ||
15599 | REAL_CONST(142750.25441149093/8.0), | ||
15600 | REAL_CONST(142776.17189404817/8.0), | ||
15601 | REAL_CONST(142802.09055282827/8.0), | ||
15602 | REAL_CONST(142828.01038772447/8.0), | ||
15603 | REAL_CONST(142853.93139863008/8.0), | ||
15604 | REAL_CONST(142879.85358543837/8.0), | ||
15605 | REAL_CONST(142905.77694804268/8.0), | ||
15606 | REAL_CONST(142931.70148633636/8.0), | ||
15607 | REAL_CONST(142957.62720021277/8.0), | ||
15608 | REAL_CONST(142983.55408956532/8.0), | ||
15609 | REAL_CONST(143009.48215428743/8.0), | ||
15610 | REAL_CONST(143035.41139427255/8.0), | ||
15611 | REAL_CONST(143061.34180941415/8.0), | ||
15612 | REAL_CONST(143087.27339960571/8.0), | ||
15613 | REAL_CONST(143113.20616474075/8.0), | ||
15614 | REAL_CONST(143139.14010471283/8.0), | ||
15615 | REAL_CONST(143165.07521941551/8.0), | ||
15616 | REAL_CONST(143191.01150874238/8.0), | ||
15617 | REAL_CONST(143216.94897258704/8.0), | ||
15618 | REAL_CONST(143242.88761084314/8.0), | ||
15619 | REAL_CONST(143268.82742340435/8.0), | ||
15620 | REAL_CONST(143294.76841016437/8.0), | ||
15621 | REAL_CONST(143320.71057101688/8.0), | ||
15622 | REAL_CONST(143346.65390585564/8.0), | ||
15623 | REAL_CONST(143372.59841457437/8.0), | ||
15624 | REAL_CONST(143398.54409706692/8.0), | ||
15625 | REAL_CONST(143424.49095322701/8.0), | ||
15626 | REAL_CONST(143450.43898294857/8.0), | ||
15627 | REAL_CONST(143476.38818612538/8.0), | ||
15628 | REAL_CONST(143502.33856265133/8.0), | ||
15629 | REAL_CONST(143528.29011242036/8.0), | ||
15630 | REAL_CONST(143554.24283532638/8.0), | ||
15631 | REAL_CONST(143580.19673126334/8.0), | ||
15632 | REAL_CONST(143606.1518001252/8.0), | ||
15633 | REAL_CONST(143632.10804180597/8.0), | ||
15634 | REAL_CONST(143658.06545619969/8.0), | ||
15635 | REAL_CONST(143684.02404320039/8.0), | ||
15636 | REAL_CONST(143709.98380270213/8.0), | ||
15637 | REAL_CONST(143735.944734599/8.0), | ||
15638 | REAL_CONST(143761.90683878519/8.0), | ||
15639 | REAL_CONST(143787.87011515474/8.0), | ||
15640 | REAL_CONST(143813.83456360188/8.0), | ||
15641 | REAL_CONST(143839.8001840208/8.0), | ||
15642 | REAL_CONST(143865.76697630569/8.0), | ||
15643 | REAL_CONST(143891.73494035081/8.0), | ||
15644 | REAL_CONST(143917.7040760504/8.0), | ||
15645 | REAL_CONST(143943.67438329876/8.0), | ||
15646 | REAL_CONST(143969.6458619902/8.0), | ||
15647 | REAL_CONST(143995.61851201905/8.0), | ||
15648 | REAL_CONST(144021.59233327967/8.0), | ||
15649 | REAL_CONST(144047.56732566646/8.0), | ||
15650 | REAL_CONST(144073.54348907378/8.0), | ||
15651 | REAL_CONST(144099.52082339607/8.0), | ||
15652 | REAL_CONST(144125.49932852783/8.0), | ||
15653 | REAL_CONST(144151.4790043635/8.0), | ||
15654 | REAL_CONST(144177.45985079758/8.0), | ||
15655 | REAL_CONST(144203.44186772458/8.0), | ||
15656 | REAL_CONST(144229.42505503909/8.0), | ||
15657 | REAL_CONST(144255.40941263564/8.0), | ||
15658 | REAL_CONST(144281.39494040885/8.0), | ||
15659 | REAL_CONST(144307.38163825331/8.0), | ||
15660 | REAL_CONST(144333.36950606373/8.0), | ||
15661 | REAL_CONST(144359.35854373468/8.0), | ||
15662 | REAL_CONST(144385.34875116093/8.0), | ||
15663 | REAL_CONST(144411.34012823718/8.0), | ||
15664 | REAL_CONST(144437.33267485813/8.0), | ||
15665 | REAL_CONST(144463.32639091855/8.0), | ||
15666 | REAL_CONST(144489.32127631325/8.0), | ||
15667 | REAL_CONST(144515.31733093705/8.0), | ||
15668 | REAL_CONST(144541.31455468474/8.0), | ||
15669 | REAL_CONST(144567.3129474512/8.0), | ||
15670 | REAL_CONST(144593.3125091313/8.0), | ||
15671 | REAL_CONST(144619.31323961995/8.0), | ||
15672 | REAL_CONST(144645.31513881206/8.0), | ||
15673 | REAL_CONST(144671.31820660262/8.0), | ||
15674 | REAL_CONST(144697.32244288657/8.0), | ||
15675 | REAL_CONST(144723.32784755889/8.0), | ||
15676 | REAL_CONST(144749.33442051467/8.0), | ||
15677 | REAL_CONST(144775.34216164888/8.0), | ||
15678 | REAL_CONST(144801.35107085665/8.0), | ||
15679 | REAL_CONST(144827.36114803303/8.0), | ||
15680 | REAL_CONST(144853.37239307314/8.0), | ||
15681 | REAL_CONST(144879.38480587213/8.0), | ||
15682 | REAL_CONST(144905.39838632516/8.0), | ||
15683 | REAL_CONST(144931.41313432742/8.0), | ||
15684 | REAL_CONST(144957.4290497741/8.0), | ||
15685 | REAL_CONST(144983.44613256046/8.0), | ||
15686 | REAL_CONST(145009.46438258173/8.0), | ||
15687 | REAL_CONST(145035.48379973322/8.0), | ||
15688 | REAL_CONST(145061.50438391021/8.0), | ||
15689 | REAL_CONST(145087.52613500805/8.0), | ||
15690 | REAL_CONST(145113.54905292206/8.0), | ||
15691 | REAL_CONST(145139.57313754765/8.0), | ||
15692 | REAL_CONST(145165.59838878017/8.0), | ||
15693 | REAL_CONST(145191.62480651509/8.0), | ||
15694 | REAL_CONST(145217.65239064783/8.0), | ||
15695 | REAL_CONST(145243.68114107384/8.0), | ||
15696 | REAL_CONST(145269.71105768863/8.0), | ||
15697 | REAL_CONST(145295.74214038774/8.0), | ||
15698 | REAL_CONST(145321.77438906668/8.0), | ||
15699 | REAL_CONST(145347.80780362099/8.0), | ||
15700 | REAL_CONST(145373.84238394629/8.0), | ||
15701 | REAL_CONST(145399.87812993818/8.0), | ||
15702 | REAL_CONST(145425.91504149229/8.0), | ||
15703 | REAL_CONST(145451.95311850426/8.0), | ||
15704 | REAL_CONST(145477.9923608698/8.0), | ||
15705 | REAL_CONST(145504.03276848458/8.0), | ||
15706 | REAL_CONST(145530.07434124436/8.0), | ||
15707 | REAL_CONST(145556.11707904484/8.0), | ||
15708 | REAL_CONST(145582.16098178181/8.0), | ||
15709 | REAL_CONST(145608.20604935108/8.0), | ||
15710 | REAL_CONST(145634.25228164849/8.0), | ||
15711 | REAL_CONST(145660.29967856981/8.0), | ||
15712 | REAL_CONST(145686.34824001096/8.0), | ||
15713 | REAL_CONST(145712.39796586783/8.0), | ||
15714 | REAL_CONST(145738.4488560363/8.0), | ||
15715 | REAL_CONST(145764.50091041232/8.0), | ||
15716 | REAL_CONST(145790.55412889185/8.0), | ||
15717 | REAL_CONST(145816.60851137087/8.0), | ||
15718 | REAL_CONST(145842.66405774537/8.0), | ||
15719 | REAL_CONST(145868.72076791141/8.0), | ||
15720 | REAL_CONST(145894.77864176501/8.0), | ||
15721 | REAL_CONST(145920.83767920226/8.0), | ||
15722 | REAL_CONST(145946.89788011924/8.0), | ||
15723 | REAL_CONST(145972.95924441208/8.0), | ||
15724 | REAL_CONST(145999.02177197693/8.0), | ||
15725 | REAL_CONST(146025.08546270995/8.0), | ||
15726 | REAL_CONST(146051.15031650732/8.0), | ||
15727 | REAL_CONST(146077.21633326527/8.0), | ||
15728 | REAL_CONST(146103.28351288004/8.0), | ||
15729 | REAL_CONST(146129.35185524789/8.0), | ||
15730 | REAL_CONST(146155.42136026506/8.0), | ||
15731 | REAL_CONST(146181.49202782792/8.0), | ||
15732 | REAL_CONST(146207.56385783272/8.0), | ||
15733 | REAL_CONST(146233.63685017588/8.0), | ||
15734 | REAL_CONST(146259.71100475377/8.0), | ||
15735 | REAL_CONST(146285.78632146274/8.0), | ||
15736 | REAL_CONST(146311.86280019928/8.0), | ||
15737 | REAL_CONST(146337.94044085976/8.0), | ||
15738 | REAL_CONST(146364.01924334071/8.0), | ||
15739 | REAL_CONST(146390.09920753856/8.0), | ||
15740 | REAL_CONST(146416.18033334985/8.0), | ||
15741 | REAL_CONST(146442.26262067116/8.0), | ||
15742 | REAL_CONST(146468.34606939898/8.0), | ||
15743 | REAL_CONST(146494.43067942993/8.0), | ||
15744 | REAL_CONST(146520.51645066062/8.0), | ||
15745 | REAL_CONST(146546.60338298764/8.0), | ||
15746 | REAL_CONST(146572.69147630769/8.0), | ||
15747 | REAL_CONST(146598.78073051744/8.0), | ||
15748 | REAL_CONST(146624.87114551352/8.0), | ||
15749 | REAL_CONST(146650.96272119274/8.0), | ||
15750 | REAL_CONST(146677.05545745179/8.0), | ||
15751 | REAL_CONST(146703.14935418745/8.0), | ||
15752 | REAL_CONST(146729.2444112965/8.0), | ||
15753 | REAL_CONST(146755.34062867577/8.0), | ||
15754 | REAL_CONST(146781.43800622207/8.0), | ||
15755 | REAL_CONST(146807.53654383228/8.0), | ||
15756 | REAL_CONST(146833.63624140329/8.0), | ||
15757 | REAL_CONST(146859.73709883197/8.0), | ||
15758 | REAL_CONST(146885.83911601527/8.0), | ||
15759 | REAL_CONST(146911.94229285014/8.0), | ||
15760 | REAL_CONST(146938.04662923355/8.0), | ||
15761 | REAL_CONST(146964.15212506248/8.0), | ||
15762 | REAL_CONST(146990.25878023397/8.0), | ||
15763 | REAL_CONST(147016.36659464505/8.0), | ||
15764 | REAL_CONST(147042.47556819281/8.0), | ||
15765 | REAL_CONST(147068.58570077427/8.0), | ||
15766 | REAL_CONST(147094.6969922866/8.0), | ||
15767 | REAL_CONST(147120.80944262692/8.0), | ||
15768 | REAL_CONST(147146.92305169237/8.0), | ||
15769 | REAL_CONST(147173.03781938017/8.0), | ||
15770 | REAL_CONST(147199.15374558745/8.0), | ||
15771 | REAL_CONST(147225.27083021149/8.0), | ||
15772 | REAL_CONST(147251.38907314953/8.0), | ||
15773 | REAL_CONST(147277.50847429881/8.0), | ||
15774 | REAL_CONST(147303.62903355664/8.0), | ||
15775 | REAL_CONST(147329.75075082036/8.0), | ||
15776 | REAL_CONST(147355.87362598727/8.0), | ||
15777 | REAL_CONST(147381.99765895473/8.0), | ||
15778 | REAL_CONST(147408.12284962015/8.0), | ||
15779 | REAL_CONST(147434.24919788091/8.0), | ||
15780 | REAL_CONST(147460.37670363448/8.0), | ||
15781 | REAL_CONST(147486.50536677826/8.0), | ||
15782 | REAL_CONST(147512.63518720976/8.0), | ||
15783 | REAL_CONST(147538.76616482646/8.0), | ||
15784 | REAL_CONST(147564.89829952587/8.0), | ||
15785 | REAL_CONST(147591.03159120557/8.0), | ||
15786 | REAL_CONST(147617.16603976308/8.0), | ||
15787 | REAL_CONST(147643.30164509601/8.0), | ||
15788 | REAL_CONST(147669.43840710199/8.0), | ||
15789 | REAL_CONST(147695.57632567859/8.0), | ||
15790 | REAL_CONST(147721.71540072354/8.0), | ||
15791 | REAL_CONST(147747.85563213445/8.0), | ||
15792 | REAL_CONST(147773.99701980909/8.0), | ||
15793 | REAL_CONST(147800.13956364512/8.0), | ||
15794 | REAL_CONST(147826.28326354033/8.0), | ||
15795 | REAL_CONST(147852.42811939248/8.0), | ||
15796 | REAL_CONST(147878.57413109933/8.0), | ||
15797 | REAL_CONST(147904.72129855872/8.0), | ||
15798 | REAL_CONST(147930.86962166851/8.0), | ||
15799 | REAL_CONST(147957.01910032652/8.0), | ||
15800 | REAL_CONST(147983.16973443062/8.0), | ||
15801 | REAL_CONST(148009.32152387875/8.0), | ||
15802 | REAL_CONST(148035.47446856883/8.0), | ||
15803 | REAL_CONST(148061.62856839882/8.0), | ||
15804 | REAL_CONST(148087.78382326665/8.0), | ||
15805 | REAL_CONST(148113.94023307035/8.0), | ||
15806 | REAL_CONST(148140.09779770792/8.0), | ||
15807 | REAL_CONST(148166.25651707739/8.0), | ||
15808 | REAL_CONST(148192.41639107687/8.0), | ||
15809 | REAL_CONST(148218.57741960438/8.0), | ||
15810 | REAL_CONST(148244.73960255808/8.0), | ||
15811 | REAL_CONST(148270.90293983606/8.0), | ||
15812 | REAL_CONST(148297.0674313365/8.0), | ||
15813 | REAL_CONST(148323.23307695755/8.0), | ||
15814 | REAL_CONST(148349.39987659742/8.0), | ||
15815 | REAL_CONST(148375.56783015432/8.0), | ||
15816 | REAL_CONST(148401.73693752653/8.0), | ||
15817 | REAL_CONST(148427.90719861226/8.0), | ||
15818 | REAL_CONST(148454.07861330983/8.0), | ||
15819 | REAL_CONST(148480.25118151752/8.0), | ||
15820 | REAL_CONST(148506.42490313368/8.0), | ||
15821 | REAL_CONST(148532.59977805667/8.0), | ||
15822 | REAL_CONST(148558.77580618486/8.0), | ||
15823 | REAL_CONST(148584.95298741665/8.0), | ||
15824 | REAL_CONST(148611.13132165043/8.0), | ||
15825 | REAL_CONST(148637.31080878471/8.0), | ||
15826 | REAL_CONST(148663.49144871789/8.0), | ||
15827 | REAL_CONST(148689.6732413485/8.0), | ||
15828 | REAL_CONST(148715.85618657502/8.0), | ||
15829 | REAL_CONST(148742.040284296/8.0), | ||
15830 | REAL_CONST(148768.22553440998/8.0), | ||
15831 | REAL_CONST(148794.41193681557/8.0), | ||
15832 | REAL_CONST(148820.59949141133/8.0), | ||
15833 | REAL_CONST(148846.78819809589/8.0), | ||
15834 | REAL_CONST(148872.97805676793/8.0), | ||
15835 | REAL_CONST(148899.16906732606/8.0), | ||
15836 | REAL_CONST(148925.36122966901/8.0), | ||
15837 | REAL_CONST(148951.55454369547/8.0), | ||
15838 | REAL_CONST(148977.74900930419/8.0), | ||
15839 | REAL_CONST(149003.9446263939/8.0), | ||
15840 | REAL_CONST(149030.1413948634/8.0), | ||
15841 | REAL_CONST(149056.33931461151/8.0), | ||
15842 | REAL_CONST(149082.53838553699/8.0), | ||
15843 | REAL_CONST(149108.73860753875/8.0), | ||
15844 | REAL_CONST(149134.9399805156/8.0), | ||
15845 | REAL_CONST(149161.14250436646/8.0), | ||
15846 | REAL_CONST(149187.34617899026/8.0), | ||
15847 | REAL_CONST(149213.5510042859/8.0), | ||
15848 | REAL_CONST(149239.75698015234/8.0), | ||
15849 | REAL_CONST(149265.96410648854/8.0), | ||
15850 | REAL_CONST(149292.17238319354/8.0), | ||
15851 | REAL_CONST(149318.38181016635/8.0), | ||
15852 | REAL_CONST(149344.59238730598/8.0), | ||
15853 | REAL_CONST(149370.80411451156/8.0), | ||
15854 | REAL_CONST(149397.01699168212/8.0), | ||
15855 | REAL_CONST(149423.23101871679/8.0), | ||
15856 | REAL_CONST(149449.44619551473/8.0), | ||
15857 | REAL_CONST(149475.66252197503/8.0), | ||
15858 | REAL_CONST(149501.87999799693/8.0), | ||
15859 | REAL_CONST(149528.0986234796/8.0), | ||
15860 | REAL_CONST(149554.31839832227/8.0), | ||
15861 | REAL_CONST(149580.53932242419/8.0), | ||
15862 | REAL_CONST(149606.76139568459/8.0), | ||
15863 | REAL_CONST(149632.98461800278/8.0), | ||
15864 | REAL_CONST(149659.20898927809/8.0), | ||
15865 | REAL_CONST(149685.43450940982/8.0), | ||
15866 | REAL_CONST(149711.66117829733/8.0), | ||
15867 | REAL_CONST(149737.88899584001/8.0), | ||
15868 | REAL_CONST(149764.11796193724/8.0), | ||
15869 | REAL_CONST(149790.34807648844/8.0), | ||
15870 | REAL_CONST(149816.57933939309/8.0), | ||
15871 | REAL_CONST(149842.81175055061/8.0), | ||
15872 | REAL_CONST(149869.04530986046/8.0), | ||
15873 | REAL_CONST(149895.28001722222/8.0), | ||
15874 | REAL_CONST(149921.51587253538/8.0), | ||
15875 | REAL_CONST(149947.75287569952/8.0), | ||
15876 | REAL_CONST(149973.99102661415/8.0), | ||
15877 | REAL_CONST(150000.23032517891/8.0), | ||
15878 | REAL_CONST(150026.47077129342/8.0), | ||
15879 | REAL_CONST(150052.71236485732/8.0), | ||
15880 | REAL_CONST(150078.95510577026/8.0), | ||
15881 | REAL_CONST(150105.1989939319/8.0), | ||
15882 | REAL_CONST(150131.444029242/8.0), | ||
15883 | REAL_CONST(150157.69021160025/8.0), | ||
15884 | REAL_CONST(150183.93754090639/8.0), | ||
15885 | REAL_CONST(150210.18601706024/8.0), | ||
15886 | REAL_CONST(150236.43563996154/8.0), | ||
15887 | REAL_CONST(150262.68640951012/8.0), | ||
15888 | REAL_CONST(150288.93832560582/8.0), | ||
15889 | REAL_CONST(150315.19138814852/8.0), | ||
15890 | REAL_CONST(150341.44559703805/8.0), | ||
15891 | REAL_CONST(150367.70095217437/8.0), | ||
15892 | REAL_CONST(150393.95745345735/8.0), | ||
15893 | REAL_CONST(150420.21510078697/8.0), | ||
15894 | REAL_CONST(150446.47389406321/8.0), | ||
15895 | REAL_CONST(150472.73383318601/8.0), | ||
15896 | REAL_CONST(150498.99491805542/8.0), | ||
15897 | REAL_CONST(150525.25714857146/8.0), | ||
15898 | REAL_CONST(150551.52052463419/8.0), | ||
15899 | REAL_CONST(150577.78504614369/8.0), | ||
15900 | REAL_CONST(150604.05071300003/8.0), | ||
15901 | REAL_CONST(150630.31752510337/8.0), | ||
15902 | REAL_CONST(150656.58548235384/8.0), | ||
15903 | REAL_CONST(150682.85458465159/8.0), | ||
15904 | REAL_CONST(150709.1248318968/8.0), | ||
15905 | REAL_CONST(150735.39622398972/8.0), | ||
15906 | REAL_CONST(150761.66876083051/8.0), | ||
15907 | REAL_CONST(150787.9424423195/8.0), | ||
15908 | REAL_CONST(150814.21726835691/8.0), | ||
15909 | REAL_CONST(150840.49323884305/8.0), | ||
15910 | REAL_CONST(150866.77035367821/8.0), | ||
15911 | REAL_CONST(150893.04861276277/8.0), | ||
15912 | REAL_CONST(150919.32801599705/8.0), | ||
15913 | REAL_CONST(150945.60856328148/8.0), | ||
15914 | REAL_CONST(150971.89025451642/8.0), | ||
15915 | REAL_CONST(150998.17308960229/8.0), | ||
15916 | REAL_CONST(151024.45706843957/8.0), | ||
15917 | REAL_CONST(151050.74219092872/8.0), | ||
15918 | REAL_CONST(151077.02845697021/8.0), | ||
15919 | REAL_CONST(151103.31586646455/8.0), | ||
15920 | REAL_CONST(151129.60441931229/8.0), | ||
15921 | REAL_CONST(151155.894115414/8.0), | ||
15922 | REAL_CONST(151182.1849546702/8.0), | ||
15923 | REAL_CONST(151208.47693698155/8.0), | ||
15924 | REAL_CONST(151234.77006224863/8.0), | ||
15925 | REAL_CONST(151261.06433037209/8.0), | ||
15926 | REAL_CONST(151287.35974125259/8.0), | ||
15927 | REAL_CONST(151313.65629479082/8.0), | ||
15928 | REAL_CONST(151339.95399088747/8.0), | ||
15929 | REAL_CONST(151366.25282944329/8.0), | ||
15930 | REAL_CONST(151392.55281035902/8.0), | ||
15931 | REAL_CONST(151418.85393353543/8.0), | ||
15932 | REAL_CONST(151445.1561988733/8.0), | ||
15933 | REAL_CONST(151471.45960627345/8.0), | ||
15934 | REAL_CONST(151497.76415563675/8.0), | ||
15935 | REAL_CONST(151524.06984686397/8.0), | ||
15936 | REAL_CONST(151550.37667985607/8.0), | ||
15937 | REAL_CONST(151576.68465451393/8.0), | ||
15938 | REAL_CONST(151602.99377073845/8.0), | ||
15939 | REAL_CONST(151629.30402843058/8.0), | ||
15940 | REAL_CONST(151655.61542749128/8.0), | ||
15941 | REAL_CONST(151681.92796782157/8.0), | ||
15942 | REAL_CONST(151708.24164932242/8.0), | ||
15943 | REAL_CONST(151734.55647189484/8.0), | ||
15944 | REAL_CONST(151760.87243543993/8.0), | ||
15945 | REAL_CONST(151787.18953985872/8.0), | ||
15946 | REAL_CONST(151813.50778505235/8.0), | ||
15947 | REAL_CONST(151839.82717092187/8.0), | ||
15948 | REAL_CONST(151866.14769736846/8.0), | ||
15949 | REAL_CONST(151892.46936429327/8.0), | ||
15950 | REAL_CONST(151918.79217159748/8.0), | ||
15951 | REAL_CONST(151945.11611918229/8.0), | ||
15952 | REAL_CONST(151971.44120694889/8.0), | ||
15953 | REAL_CONST(151997.76743479856/8.0), | ||
15954 | REAL_CONST(152024.09480263255/8.0), | ||
15955 | REAL_CONST(152050.42331035214/8.0), | ||
15956 | REAL_CONST(152076.75295785864/8.0), | ||
15957 | REAL_CONST(152103.08374505339/8.0), | ||
15958 | REAL_CONST(152129.41567183775/8.0), | ||
15959 | REAL_CONST(152155.74873811303/8.0), | ||
15960 | REAL_CONST(152182.08294378067/8.0), | ||
15961 | REAL_CONST(152208.41828874208/8.0), | ||
15962 | REAL_CONST(152234.75477289871/8.0), | ||
15963 | REAL_CONST(152261.09239615197/8.0), | ||
15964 | REAL_CONST(152287.43115840337/8.0), | ||
15965 | REAL_CONST(152313.77105955439/8.0), | ||
15966 | REAL_CONST(152340.11209950657/8.0), | ||
15967 | REAL_CONST(152366.45427816146/8.0), | ||
15968 | REAL_CONST(152392.79759542056/8.0), | ||
15969 | REAL_CONST(152419.14205118554/8.0), | ||
15970 | REAL_CONST(152445.48764535793/8.0), | ||
15971 | REAL_CONST(152471.8343778394/8.0), | ||
15972 | REAL_CONST(152498.18224853161/8.0), | ||
15973 | REAL_CONST(152524.53125733617/8.0), | ||
15974 | REAL_CONST(152550.88140415482/8.0), | ||
15975 | REAL_CONST(152577.23268888926/8.0), | ||
15976 | REAL_CONST(152603.58511144121/8.0), | ||
15977 | REAL_CONST(152629.93867171241/8.0), | ||
15978 | REAL_CONST(152656.29336960468/8.0), | ||
15979 | REAL_CONST(152682.64920501978/8.0), | ||
15980 | REAL_CONST(152709.00617785956/8.0), | ||
15981 | REAL_CONST(152735.36428802583/8.0), | ||
15982 | REAL_CONST(152761.72353542043/8.0), | ||
15983 | REAL_CONST(152788.08391994529/8.0), | ||
15984 | REAL_CONST(152814.44544150229/8.0), | ||
15985 | REAL_CONST(152840.80809999333/8.0), | ||
15986 | REAL_CONST(152867.17189532038/8.0), | ||
15987 | REAL_CONST(152893.53682738543/8.0), | ||
15988 | REAL_CONST(152919.90289609041/8.0), | ||
15989 | REAL_CONST(152946.27010133737/8.0), | ||
15990 | REAL_CONST(152972.63844302832/8.0), | ||
15991 | REAL_CONST(152999.00792106529/8.0), | ||
15992 | REAL_CONST(153025.37853535041/8.0), | ||
15993 | REAL_CONST(153051.7502857857/8.0), | ||
15994 | REAL_CONST(153078.12317227334/8.0), | ||
15995 | REAL_CONST(153104.4971947154/8.0), | ||
15996 | REAL_CONST(153130.8723530141/8.0), | ||
15997 | REAL_CONST(153157.24864707157/8.0), | ||
15998 | REAL_CONST(153183.62607679001/8.0), | ||
15999 | REAL_CONST(153210.00464207167/8.0), | ||
16000 | REAL_CONST(153236.38434281875/8.0), | ||
16001 | REAL_CONST(153262.76517893354/8.0), | ||
16002 | REAL_CONST(153289.14715031831/8.0), | ||
16003 | REAL_CONST(153315.53025687535/8.0), | ||
16004 | REAL_CONST(153341.91449850702/8.0), | ||
16005 | REAL_CONST(153368.2998751156/8.0), | ||
16006 | REAL_CONST(153394.68638660354/8.0), | ||
16007 | REAL_CONST(153421.07403287315/8.0), | ||
16008 | REAL_CONST(153447.46281382689/8.0), | ||
16009 | REAL_CONST(153473.85272936718/8.0), | ||
16010 | REAL_CONST(153500.24377939643/8.0), | ||
16011 | REAL_CONST(153526.63596381716/8.0), | ||
16012 | REAL_CONST(153553.02928253182/8.0), | ||
16013 | REAL_CONST(153579.42373544298/8.0), | ||
16014 | REAL_CONST(153605.81932245308/8.0), | ||
16015 | REAL_CONST(153632.21604346478/8.0), | ||
16016 | REAL_CONST(153658.61389838057/8.0), | ||
16017 | REAL_CONST(153685.0128871031/8.0), | ||
16018 | REAL_CONST(153711.41300953497/8.0), | ||
16019 | REAL_CONST(153737.81426557881/8.0), | ||
16020 | REAL_CONST(153764.21665513728/8.0), | ||
16021 | REAL_CONST(153790.62017811305/8.0), | ||
16022 | REAL_CONST(153817.02483440886/8.0), | ||
16023 | REAL_CONST(153843.43062392739/8.0), | ||
16024 | REAL_CONST(153869.83754657139/8.0), | ||
16025 | REAL_CONST(153896.24560224367/8.0), | ||
16026 | REAL_CONST(153922.65479084692/8.0), | ||
16027 | REAL_CONST(153949.06511228404/8.0), | ||
16028 | REAL_CONST(153975.4765664578/8.0), | ||
16029 | REAL_CONST(154001.88915327107/8.0), | ||
16030 | REAL_CONST(154028.30287262669/8.0), | ||
16031 | REAL_CONST(154054.71772442761/8.0), | ||
16032 | REAL_CONST(154081.13370857667/8.0), | ||
16033 | REAL_CONST(154107.55082497682/8.0), | ||
16034 | REAL_CONST(154133.96907353101/8.0), | ||
16035 | REAL_CONST(154160.38845414223/8.0), | ||
16036 | REAL_CONST(154186.80896671346/8.0), | ||
16037 | REAL_CONST(154213.23061114774/8.0), | ||
16038 | REAL_CONST(154239.65338734805/8.0), | ||
16039 | REAL_CONST(154266.07729521746/8.0), | ||
16040 | REAL_CONST(154292.50233465908/8.0), | ||
16041 | REAL_CONST(154318.92850557598/8.0), | ||
16042 | REAL_CONST(154345.35580787127/8.0), | ||
16043 | REAL_CONST(154371.7842414481/8.0), | ||
16044 | REAL_CONST(154398.21380620965/8.0), | ||
16045 | REAL_CONST(154424.64450205903/8.0), | ||
16046 | REAL_CONST(154451.07632889951/8.0), | ||
16047 | REAL_CONST(154477.50928663427/8.0), | ||
16048 | REAL_CONST(154503.94337516659/8.0), | ||
16049 | REAL_CONST(154530.37859439969/8.0), | ||
16050 | REAL_CONST(154556.81494423689/8.0), | ||
16051 | REAL_CONST(154583.25242458144/8.0), | ||
16052 | REAL_CONST(154609.69103533673/8.0), | ||
16053 | REAL_CONST(154636.13077640603/8.0), | ||
16054 | REAL_CONST(154662.57164769279/8.0), | ||
16055 | REAL_CONST(154689.01364910032/8.0), | ||
16056 | REAL_CONST(154715.45678053208/8.0), | ||
16057 | REAL_CONST(154741.90104189145/8.0), | ||
16058 | REAL_CONST(154768.34643308193/8.0), | ||
16059 | REAL_CONST(154794.79295400696/8.0), | ||
16060 | REAL_CONST(154821.24060457002/8.0), | ||
16061 | REAL_CONST(154847.68938467462/8.0), | ||
16062 | REAL_CONST(154874.13929422433/8.0), | ||
16063 | REAL_CONST(154900.59033312264/8.0), | ||
16064 | REAL_CONST(154927.04250127316/8.0), | ||
16065 | REAL_CONST(154953.49579857948/8.0), | ||
16066 | REAL_CONST(154979.95022494521/8.0), | ||
16067 | REAL_CONST(155006.40578027396/8.0), | ||
16068 | REAL_CONST(155032.86246446942/8.0), | ||
16069 | REAL_CONST(155059.32027743524/8.0), | ||
16070 | REAL_CONST(155085.77921907514/8.0), | ||
16071 | REAL_CONST(155112.2392892928/8.0), | ||
16072 | REAL_CONST(155138.70048799197/8.0), | ||
16073 | REAL_CONST(155165.16281507642/8.0), | ||
16074 | REAL_CONST(155191.62627044989/8.0), | ||
16075 | REAL_CONST(155218.09085401625/8.0), | ||
16076 | REAL_CONST(155244.55656567923/8.0), | ||
16077 | REAL_CONST(155271.02340534274/8.0), | ||
16078 | REAL_CONST(155297.49137291059/8.0), | ||
16079 | REAL_CONST(155323.96046828668/8.0), | ||
16080 | REAL_CONST(155350.4306913749/8.0), | ||
16081 | REAL_CONST(155376.90204207919/8.0), | ||
16082 | REAL_CONST(155403.37452030348/8.0), | ||
16083 | REAL_CONST(155429.84812595171/8.0), | ||
16084 | REAL_CONST(155456.32285892789/8.0), | ||
16085 | REAL_CONST(155482.79871913602/8.0), | ||
16086 | REAL_CONST(155509.27570648011/8.0), | ||
16087 | REAL_CONST(155535.75382086422/8.0), | ||
16088 | REAL_CONST(155562.23306219239/8.0), | ||
16089 | REAL_CONST(155588.71343036872/8.0), | ||
16090 | REAL_CONST(155615.19492529731/8.0), | ||
16091 | REAL_CONST(155641.67754688227/8.0), | ||
16092 | REAL_CONST(155668.16129502779/8.0), | ||
16093 | REAL_CONST(155694.64616963797/8.0), | ||
16094 | REAL_CONST(155721.13217061706/8.0), | ||
16095 | REAL_CONST(155747.61929786921/8.0), | ||
16096 | REAL_CONST(155774.10755129869/8.0), | ||
16097 | REAL_CONST(155800.59693080973/8.0), | ||
16098 | REAL_CONST(155827.08743630661/8.0), | ||
16099 | REAL_CONST(155853.57906769359/8.0), | ||
16100 | REAL_CONST(155880.07182487496/8.0), | ||
16101 | REAL_CONST(155906.56570775513/8.0), | ||
16102 | REAL_CONST(155933.06071623837/8.0), | ||
16103 | REAL_CONST(155959.55685022907/8.0), | ||
16104 | REAL_CONST(155986.05410963166/8.0), | ||
16105 | REAL_CONST(156012.5524943505/8.0), | ||
16106 | REAL_CONST(156039.05200429002/8.0), | ||
16107 | REAL_CONST(156065.55263935472/8.0), | ||
16108 | REAL_CONST(156092.054399449/8.0), | ||
16109 | REAL_CONST(156118.5572844774/8.0), | ||
16110 | REAL_CONST(156145.06129434443/8.0), | ||
16111 | REAL_CONST(156171.5664289546/8.0), | ||
16112 | REAL_CONST(156198.07268821247/8.0), | ||
16113 | REAL_CONST(156224.5800720226/8.0), | ||
16114 | REAL_CONST(156251.08858028959/8.0), | ||
16115 | REAL_CONST(156277.59821291809/8.0), | ||
16116 | REAL_CONST(156304.10896981266/8.0), | ||
16117 | REAL_CONST(156330.62085087801/8.0), | ||
16118 | REAL_CONST(156357.1338560188/8.0), | ||
16119 | REAL_CONST(156383.64798513969/8.0), | ||
16120 | REAL_CONST(156410.16323814544/8.0), | ||
16121 | REAL_CONST(156436.67961494075/8.0), | ||
16122 | REAL_CONST(156463.1971154304/8.0), | ||
16123 | REAL_CONST(156489.71573951913/8.0), | ||
16124 | REAL_CONST(156516.23548711176/8.0), | ||
16125 | REAL_CONST(156542.75635811311/8.0), | ||
16126 | REAL_CONST(156569.27835242799/8.0), | ||
16127 | REAL_CONST(156595.80146996127/8.0), | ||
16128 | REAL_CONST(156622.32571061782/8.0), | ||
16129 | REAL_CONST(156648.85107430254/8.0), | ||
16130 | REAL_CONST(156675.37756092031/8.0), | ||
16131 | REAL_CONST(156701.90517037612/8.0), | ||
16132 | REAL_CONST(156728.43390257491/8.0), | ||
16133 | REAL_CONST(156754.96375742162/8.0), | ||
16134 | REAL_CONST(156781.49473482129/8.0), | ||
16135 | REAL_CONST(156808.02683467892/8.0), | ||
16136 | REAL_CONST(156834.5600568995/8.0), | ||
16137 | REAL_CONST(156861.09440138817/8.0), | ||
16138 | REAL_CONST(156887.62986804993/8.0), | ||
16139 | REAL_CONST(156914.16645678994/8.0), | ||
16140 | REAL_CONST(156940.70416751326/8.0), | ||
16141 | REAL_CONST(156967.24300012505/8.0), | ||
16142 | REAL_CONST(156993.78295453047/8.0), | ||
16143 | REAL_CONST(157020.32403063469/8.0), | ||
16144 | REAL_CONST(157046.8662283429/8.0), | ||
16145 | REAL_CONST(157073.40954756032/8.0), | ||
16146 | REAL_CONST(157099.9539881922/8.0), | ||
16147 | REAL_CONST(157126.49955014378/8.0), | ||
16148 | REAL_CONST(157153.04623332032/8.0), | ||
16149 | REAL_CONST(157179.59403762716/8.0), | ||
16150 | REAL_CONST(157206.14296296958/8.0), | ||
16151 | REAL_CONST(157232.69300925292/8.0), | ||
16152 | REAL_CONST(157259.24417638258/8.0), | ||
16153 | REAL_CONST(157285.79646426387/8.0), | ||
16154 | REAL_CONST(157312.34987280221/8.0), | ||
16155 | REAL_CONST(157338.90440190304/8.0), | ||
16156 | REAL_CONST(157365.46005147175/8.0), | ||
16157 | REAL_CONST(157392.01682141385/8.0), | ||
16158 | REAL_CONST(157418.57471163478/8.0), | ||
16159 | REAL_CONST(157445.13372204005/8.0), | ||
16160 | REAL_CONST(157471.69385253513/8.0), | ||
16161 | REAL_CONST(157498.25510302564/8.0), | ||
16162 | REAL_CONST(157524.81747341706/8.0), | ||
16163 | REAL_CONST(157551.38096361503/8.0), | ||
16164 | REAL_CONST(157577.9455735251/8.0), | ||
16165 | REAL_CONST(157604.51130305286/8.0), | ||
16166 | REAL_CONST(157631.07815210402/8.0), | ||
16167 | REAL_CONST(157657.64612058419/8.0), | ||
16168 | REAL_CONST(157684.21520839902/8.0), | ||
16169 | REAL_CONST(157710.78541545427/8.0), | ||
16170 | REAL_CONST(157737.35674165559/8.0), | ||
16171 | REAL_CONST(157763.92918690876/8.0), | ||
16172 | REAL_CONST(157790.50275111952/8.0), | ||
16173 | REAL_CONST(157817.07743419363/8.0), | ||
16174 | REAL_CONST(157843.65323603692/8.0), | ||
16175 | REAL_CONST(157870.23015655516/8.0), | ||
16176 | REAL_CONST(157896.80819565422/8.0), | ||
16177 | REAL_CONST(157923.3873532399/8.0), | ||
16178 | REAL_CONST(157949.96762921812/8.0), | ||
16179 | REAL_CONST(157976.54902349479/8.0), | ||
16180 | REAL_CONST(158003.13153597576/8.0), | ||
16181 | REAL_CONST(158029.71516656701/8.0), | ||
16182 | REAL_CONST(158056.29991517449/8.0), | ||
16183 | REAL_CONST(158082.88578170416/8.0), | ||
16184 | REAL_CONST(158109.47276606198/8.0), | ||
16185 | REAL_CONST(158136.06086815402/8.0), | ||
16186 | REAL_CONST(158162.65008788629/8.0), | ||
16187 | REAL_CONST(158189.24042516484/8.0), | ||
16188 | REAL_CONST(158215.83187989573/8.0), | ||
16189 | REAL_CONST(158242.42445198505/8.0), | ||
16190 | REAL_CONST(158269.01814133892/8.0), | ||
16191 | REAL_CONST(158295.61294786347/8.0), | ||
16192 | REAL_CONST(158322.20887146486/8.0), | ||
16193 | REAL_CONST(158348.80591204923/8.0), | ||
16194 | REAL_CONST(158375.4040695228/8.0), | ||
16195 | REAL_CONST(158402.00334379176/8.0), | ||
16196 | REAL_CONST(158428.60373476235/8.0), | ||
16197 | REAL_CONST(158455.2052423408/8.0), | ||
16198 | REAL_CONST(158481.80786643337/8.0), | ||
16199 | REAL_CONST(158508.41160694641/8.0), | ||
16200 | REAL_CONST(158535.01646378616/8.0), | ||
16201 | REAL_CONST(158561.62243685898/8.0), | ||
16202 | REAL_CONST(158588.2295260712/8.0), | ||
16203 | REAL_CONST(158614.8377313292/8.0), | ||
16204 | REAL_CONST(158641.44705253936/8.0), | ||
16205 | REAL_CONST(158668.05748960807/8.0), | ||
16206 | REAL_CONST(158694.66904244179/8.0), | ||
16207 | REAL_CONST(158721.28171094693/8.0), | ||
16208 | REAL_CONST(158747.89549502998/8.0), | ||
16209 | REAL_CONST(158774.5103945974/8.0), | ||
16210 | REAL_CONST(158801.12640955573/8.0), | ||
16211 | REAL_CONST(158827.74353981143/8.0), | ||
16212 | REAL_CONST(158854.36178527112/8.0), | ||
16213 | REAL_CONST(158880.9811458413/8.0), | ||
16214 | REAL_CONST(158907.60162142856/8.0), | ||
16215 | REAL_CONST(158934.22321193956/8.0), | ||
16216 | REAL_CONST(158960.84591728085/8.0), | ||
16217 | REAL_CONST(158987.46973735912/8.0), | ||
16218 | REAL_CONST(159014.09467208097/8.0), | ||
16219 | REAL_CONST(159040.72072135314/8.0), | ||
16220 | REAL_CONST(159067.3478850823/8.0), | ||
16221 | REAL_CONST(159093.97616317519/8.0), | ||
16222 | REAL_CONST(159120.60555553852/8.0), | ||
16223 | REAL_CONST(159147.23606207906/8.0), | ||
16224 | REAL_CONST(159173.8676827036/8.0), | ||
16225 | REAL_CONST(159200.50041731889/8.0), | ||
16226 | REAL_CONST(159227.13426583182/8.0), | ||
16227 | REAL_CONST(159253.76922814918/8.0), | ||
16228 | REAL_CONST(159280.40530417781/8.0), | ||
16229 | REAL_CONST(159307.04249382461/8.0), | ||
16230 | REAL_CONST(159333.68079699649/8.0), | ||
16231 | REAL_CONST(159360.32021360032/8.0), | ||
16232 | REAL_CONST(159386.96074354305/8.0), | ||
16233 | REAL_CONST(159413.60238673165/8.0), | ||
16234 | REAL_CONST(159440.24514307309/8.0), | ||
16235 | REAL_CONST(159466.88901247433/8.0), | ||
16236 | REAL_CONST(159493.53399484244/8.0), | ||
16237 | REAL_CONST(159520.18009008438/8.0), | ||
16238 | REAL_CONST(159546.82729810724/8.0), | ||
16239 | REAL_CONST(159573.47561881805/8.0), | ||
16240 | REAL_CONST(159600.12505212394/8.0), | ||
16241 | REAL_CONST(159626.77559793202/8.0), | ||
16242 | REAL_CONST(159653.42725614941/8.0), | ||
16243 | REAL_CONST(159680.08002668325/8.0), | ||
16244 | REAL_CONST(159706.73390944069/8.0), | ||
16245 | REAL_CONST(159733.38890432892/8.0), | ||
16246 | REAL_CONST(159760.04501125516/8.0), | ||
16247 | REAL_CONST(159786.70223012666/8.0), | ||
16248 | REAL_CONST(159813.36056085059/8.0), | ||
16249 | REAL_CONST(159840.02000333427/8.0), | ||
16250 | REAL_CONST(159866.68055748497/8.0), | ||
16251 | REAL_CONST(159893.34222320997/8.0), | ||
16252 | REAL_CONST(159920.00500041663/8.0), | ||
16253 | REAL_CONST(159946.66888901225/8.0), | ||
16254 | REAL_CONST(159973.33388890422/8.0), | ||
16255 | REAL_CONST(159999.99999999988/8.0), | ||
16256 | REAL_CONST(160026.66722220668/8.0), | ||
16257 | REAL_CONST(160053.33555543202/8.0), | ||
16258 | REAL_CONST(160080.0049995833/8.0), | ||
16259 | REAL_CONST(160106.67555456801/8.0), | ||
16260 | REAL_CONST(160133.3472202936/8.0), | ||
16261 | REAL_CONST(160160.0199966676/8.0), | ||
16262 | REAL_CONST(160186.6938835975/8.0), | ||
16263 | REAL_CONST(160213.36888099083/8.0), | ||
16264 | REAL_CONST(160240.04498875517/8.0), | ||
16265 | REAL_CONST(160266.72220679806/8.0), | ||
16266 | REAL_CONST(160293.40053502709/8.0), | ||
16267 | REAL_CONST(160320.07997334987/8.0), | ||
16268 | REAL_CONST(160346.76052167406/8.0), | ||
16269 | REAL_CONST(160373.44217990729/8.0), | ||
16270 | REAL_CONST(160400.1249479572/8.0), | ||
16271 | REAL_CONST(160426.80882573154/8.0), | ||
16272 | REAL_CONST(160453.49381313793/8.0), | ||
16273 | REAL_CONST(160480.17991008417/8.0), | ||
16274 | REAL_CONST(160506.86711647795/8.0), | ||
16275 | REAL_CONST(160533.55543222709/8.0), | ||
16276 | REAL_CONST(160560.24485723933/8.0), | ||
16277 | REAL_CONST(160586.93539142248/8.0), | ||
16278 | REAL_CONST(160613.62703468435/8.0), | ||
16279 | REAL_CONST(160640.31978693281/8.0), | ||
16280 | REAL_CONST(160667.01364807569/8.0), | ||
16281 | REAL_CONST(160693.70861802087/8.0), | ||
16282 | REAL_CONST(160720.40469667627/8.0), | ||
16283 | REAL_CONST(160747.1018839498/8.0), | ||
16284 | REAL_CONST(160773.80017974938/8.0), | ||
16285 | REAL_CONST(160800.49958398298/8.0), | ||
16286 | REAL_CONST(160827.20009655855/8.0), | ||
16287 | REAL_CONST(160853.90171738411/8.0), | ||
16288 | REAL_CONST(160880.60444636765/8.0), | ||
16289 | REAL_CONST(160907.30828341722/8.0), | ||
16290 | REAL_CONST(160934.01322844089/8.0), | ||
16291 | REAL_CONST(160960.71928134665/8.0), | ||
16292 | REAL_CONST(160987.42644204266/8.0), | ||
16293 | REAL_CONST(161014.13471043704/8.0), | ||
16294 | REAL_CONST(161040.84408643784/8.0), | ||
16295 | REAL_CONST(161067.55456995327/8.0), | ||
16296 | REAL_CONST(161094.26616089148/8.0), | ||
16297 | REAL_CONST(161120.97885916062/8.0), | ||
16298 | REAL_CONST(161147.69266466892/8.0), | ||
16299 | REAL_CONST(161174.40757732463/8.0), | ||
16300 | REAL_CONST(161201.12359703594/8.0), | ||
16301 | REAL_CONST(161227.84072371112/8.0), | ||
16302 | REAL_CONST(161254.55895725847/8.0), | ||
16303 | REAL_CONST(161281.27829758628/8.0), | ||
16304 | REAL_CONST(161307.99874460287/8.0), | ||
16305 | REAL_CONST(161334.72029821656/8.0), | ||
16306 | REAL_CONST(161361.44295833571/8.0), | ||
16307 | REAL_CONST(161388.1667248687/8.0), | ||
16308 | REAL_CONST(161414.89159772391/8.0), | ||
16309 | REAL_CONST(161441.61757680977/8.0), | ||
16310 | REAL_CONST(161468.34466203468/8.0), | ||
16311 | REAL_CONST(161495.07285330712/8.0), | ||
16312 | REAL_CONST(161521.80215053557/8.0), | ||
16313 | REAL_CONST(161548.53255362847/8.0), | ||
16314 | REAL_CONST(161575.26406249436/8.0), | ||
16315 | REAL_CONST(161601.99667704175/8.0), | ||
16316 | REAL_CONST(161628.7303971792/8.0), | ||
16317 | REAL_CONST(161655.46522281526/8.0), | ||
16318 | REAL_CONST(161682.20115385848/8.0), | ||
16319 | REAL_CONST(161708.93819021754/8.0), | ||
16320 | REAL_CONST(161735.67633180099/8.0), | ||
16321 | REAL_CONST(161762.41557851751/8.0), | ||
16322 | REAL_CONST(161789.15593027571/8.0), | ||
16323 | REAL_CONST(161815.89738698432/8.0), | ||
16324 | REAL_CONST(161842.63994855201/8.0), | ||
16325 | REAL_CONST(161869.38361488748/8.0), | ||
16326 | REAL_CONST(161896.1283858995/8.0), | ||
16327 | REAL_CONST(161922.87426149679/8.0), | ||
16328 | REAL_CONST(161949.62124158812/8.0), | ||
16329 | REAL_CONST(161976.36932608229/8.0), | ||
16330 | REAL_CONST(162003.1185148881/8.0), | ||
16331 | REAL_CONST(162029.8688079144/8.0), | ||
16332 | REAL_CONST(162056.62020507001/8.0), | ||
16333 | REAL_CONST(162083.37270626382/8.0), | ||
16334 | REAL_CONST(162110.12631140469/8.0), | ||
16335 | REAL_CONST(162136.88102040152/8.0), | ||
16336 | REAL_CONST(162163.63683316324/8.0), | ||
16337 | REAL_CONST(162190.39374959879/8.0), | ||
16338 | REAL_CONST(162217.15176961714/8.0), | ||
16339 | REAL_CONST(162243.91089312723/8.0), | ||
16340 | REAL_CONST(162270.67112003808/8.0), | ||
16341 | REAL_CONST(162297.43245025873/8.0), | ||
16342 | REAL_CONST(162324.19488369819/8.0), | ||
16343 | REAL_CONST(162350.9584202655/8.0), | ||
16344 | REAL_CONST(162377.72305986975/8.0), | ||
16345 | REAL_CONST(162404.48880242003/8.0), | ||
16346 | REAL_CONST(162431.25564782543/8.0), | ||
16347 | REAL_CONST(162458.02359599507/8.0), | ||
16348 | REAL_CONST(162484.79264683815/8.0), | ||
16349 | REAL_CONST(162511.56280026378/8.0), | ||
16350 | REAL_CONST(162538.33405618116/8.0), | ||
16351 | REAL_CONST(162565.10641449949/8.0), | ||
16352 | REAL_CONST(162591.87987512801/8.0), | ||
16353 | REAL_CONST(162618.65443797593/8.0), | ||
16354 | REAL_CONST(162645.43010295252/8.0), | ||
16355 | REAL_CONST(162672.20686996708/8.0), | ||
16356 | REAL_CONST(162698.98473892888/8.0), | ||
16357 | REAL_CONST(162725.76370974723/8.0), | ||
16358 | REAL_CONST(162752.54378233149/8.0), | ||
16359 | REAL_CONST(162779.32495659095/8.0), | ||
16360 | REAL_CONST(162806.10723243505/8.0), | ||
16361 | REAL_CONST(162832.89060977317/8.0), | ||
16362 | REAL_CONST(162859.67508851466/8.0), | ||
16363 | REAL_CONST(162886.46066856899/8.0), | ||
16364 | REAL_CONST(162913.24734984562/8.0), | ||
16365 | REAL_CONST(162940.03513225398/8.0), | ||
16366 | REAL_CONST(162966.82401570358/8.0), | ||
16367 | REAL_CONST(162993.6140001039/8.0), | ||
16368 | REAL_CONST(163020.40508536444/8.0), | ||
16369 | REAL_CONST(163047.19727139481/8.0), | ||
16370 | REAL_CONST(163073.99055810447/8.0), | ||
16371 | REAL_CONST(163100.78494540305/8.0), | ||
16372 | REAL_CONST(163127.58043320014/8.0), | ||
16373 | REAL_CONST(163154.37702140535/8.0), | ||
16374 | REAL_CONST(163181.17470992831/8.0), | ||
16375 | REAL_CONST(163207.97349867865/8.0), | ||
16376 | REAL_CONST(163234.77338756606/8.0), | ||
16377 | REAL_CONST(163261.57437650024/8.0), | ||
16378 | REAL_CONST(163288.37646539087/8.0), | ||
16379 | REAL_CONST(163315.17965414765/8.0), | ||
16380 | REAL_CONST(163341.98394268038/8.0), | ||
16381 | REAL_CONST(163368.78933089875/8.0), | ||
16382 | REAL_CONST(163395.59581871261/8.0), | ||
16383 | REAL_CONST(163422.40340603172/8.0), | ||
16384 | REAL_CONST(163449.2120927659/8.0), | ||
16385 | REAL_CONST(163476.02187882498/8.0), | ||
16386 | REAL_CONST(163502.83276411882/8.0), | ||
16387 | REAL_CONST(163529.6447485573/8.0), | ||
16388 | REAL_CONST(163556.45783205028/8.0), | ||
16389 | REAL_CONST(163583.2720145077/8.0), | ||
16390 | REAL_CONST(163610.08729583945/8.0), | ||
16391 | REAL_CONST(163636.90367595552/8.0), | ||
16392 | REAL_CONST(163663.72115476584/8.0), | ||
16393 | REAL_CONST(163690.53973218042/8.0), | ||
16394 | REAL_CONST(163717.35940810922/8.0), | ||
16395 | REAL_CONST(163744.18018246227/8.0), | ||
16396 | REAL_CONST(163771.00205514964/8.0), | ||
16397 | REAL_CONST(163797.82502608138/8.0), | ||
16398 | REAL_CONST(163824.64909516752/8.0), | ||
16399 | REAL_CONST(163851.4742623182/8.0), | ||
16400 | REAL_CONST(163878.3005274435/8.0), | ||
16401 | REAL_CONST(163905.12789045356/8.0), | ||
16402 | REAL_CONST(163931.95635125853/8.0), | ||
16403 | REAL_CONST(163958.78590976857/8.0), | ||
16404 | REAL_CONST(163985.61656589387/8.0), | ||
16405 | REAL_CONST(164012.44831954464/8.0), | ||
16406 | REAL_CONST(164039.28117063109/8.0), | ||
16407 | REAL_CONST(164066.11511906344/8.0), | ||
16408 | REAL_CONST(164092.95016475199/8.0), | ||
16409 | REAL_CONST(164119.78630760699/8.0), | ||
16410 | REAL_CONST(164146.62354753874/8.0), | ||
16411 | REAL_CONST(164173.46188445756/8.0), | ||
16412 | REAL_CONST(164200.30131827376/8.0), | ||
16413 | REAL_CONST(164227.14184889771/8.0), | ||
16414 | REAL_CONST(164253.98347623978/8.0), | ||
16415 | REAL_CONST(164280.82620021031/8.0), | ||
16416 | REAL_CONST(164307.67002071979/8.0), | ||
16417 | REAL_CONST(164334.51493767856/8.0), | ||
16418 | REAL_CONST(164361.3609509971/8.0), | ||
16419 | REAL_CONST(164388.20806058586/8.0), | ||
16420 | REAL_CONST(164415.05626635533/8.0), | ||
16421 | REAL_CONST(164441.905568216/8.0), | ||
16422 | REAL_CONST(164468.75596607837/8.0), | ||
16423 | REAL_CONST(164495.607459853/8.0), | ||
16424 | REAL_CONST(164522.4600494504/8.0), | ||
16425 | REAL_CONST(164549.31373478117/8.0), | ||
16426 | REAL_CONST(164576.16851575591/8.0), | ||
16427 | REAL_CONST(164603.02439228518/8.0), | ||
16428 | REAL_CONST(164629.88136427966/8.0), | ||
16429 | REAL_CONST(164656.73943164994/8.0), | ||
16430 | REAL_CONST(164683.59859430668/8.0), | ||
16431 | REAL_CONST(164710.45885216061/8.0), | ||
16432 | REAL_CONST(164737.32020512238/8.0), | ||
16433 | REAL_CONST(164764.1826531027/8.0), | ||
16434 | REAL_CONST(164791.04619601235/8.0), | ||
16435 | REAL_CONST(164817.91083376206/8.0), | ||
16436 | REAL_CONST(164844.77656626256/8.0), | ||
16437 | REAL_CONST(164871.64339342469/8.0), | ||
16438 | REAL_CONST(164898.51131515924/8.0), | ||
16439 | REAL_CONST(164925.38033137703/8.0), | ||
16440 | REAL_CONST(164952.25044198887/8.0), | ||
16441 | REAL_CONST(164979.1216469057/8.0), | ||
16442 | REAL_CONST(165005.9939460383/8.0), | ||
16443 | REAL_CONST(165032.86733929763/8.0), | ||
16444 | REAL_CONST(165059.7418265946/8.0), | ||
16445 | REAL_CONST(165086.61740784015/8.0), | ||
16446 | REAL_CONST(165113.4940829452/8.0) | ||
16447 | #endif | ||
16448 | }; | ||
16449 | |||
16450 | #endif | ||
16451 | |||
16452 | #ifdef __cplusplus | ||
16453 | } | ||
16454 | #endif | ||
16455 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/is.c b/lib/rbcodec/codecs/libfaad/is.c new file mode 100644 index 0000000000..89c6fcf228 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/is.c | |||
@@ -0,0 +1,108 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #include "common.h" | ||
29 | #include "structs.h" | ||
30 | |||
31 | #include "syntax.h" | ||
32 | #include "is.h" | ||
33 | |||
34 | #ifdef FIXED_POINT | ||
35 | static real_t pow05_table[] ICONST_ATTR = { | ||
36 | COEF_CONST(1.68179283050743), /* 0.5^(-3/4) */ | ||
37 | COEF_CONST(1.41421356237310), /* 0.5^(-2/4) */ | ||
38 | COEF_CONST(1.18920711500272), /* 0.5^(-1/4) */ | ||
39 | COEF_CONST(1.0), /* 0.5^( 0/4) */ | ||
40 | COEF_CONST(0.84089641525371), /* 0.5^(+1/4) */ | ||
41 | COEF_CONST(0.70710678118655), /* 0.5^(+2/4) */ | ||
42 | COEF_CONST(0.59460355750136) /* 0.5^(+3/4) */ | ||
43 | }; | ||
44 | #endif | ||
45 | |||
46 | void is_decode(ic_stream *ics, ic_stream *icsr, real_t *l_spec, real_t *r_spec, | ||
47 | uint16_t frame_len) | ||
48 | { | ||
49 | uint8_t g, sfb, b; | ||
50 | uint16_t i, k; | ||
51 | #ifndef FIXED_POINT | ||
52 | real_t scale; | ||
53 | #else | ||
54 | int32_t exp, frac; | ||
55 | #endif | ||
56 | |||
57 | uint16_t nshort = frame_len/8; | ||
58 | uint8_t group = 0; | ||
59 | |||
60 | for (g = 0; g < icsr->num_window_groups; g++) | ||
61 | { | ||
62 | /* Do intensity stereo decoding */ | ||
63 | for (b = 0; b < icsr->window_group_length[g]; b++) | ||
64 | { | ||
65 | for (sfb = 0; sfb < icsr->max_sfb; sfb++) | ||
66 | { | ||
67 | if (is_intensity(icsr, g, sfb)) | ||
68 | { | ||
69 | #ifdef MAIN_DEC | ||
70 | /* For scalefactor bands coded in intensity stereo the | ||
71 | corresponding predictors in the right channel are | ||
72 | switched to "off". | ||
73 | */ | ||
74 | ics->pred.prediction_used[sfb] = 0; | ||
75 | icsr->pred.prediction_used[sfb] = 0; | ||
76 | #endif | ||
77 | |||
78 | #ifndef FIXED_POINT | ||
79 | scale = (real_t)pow(0.5, (0.25*icsr->scale_factors[g][sfb])); | ||
80 | #else | ||
81 | exp = icsr->scale_factors[g][sfb] >> 2; | ||
82 | frac = icsr->scale_factors[g][sfb] & 3; | ||
83 | #endif | ||
84 | |||
85 | /* Scale from left to right channel, | ||
86 | do not touch left channel */ | ||
87 | k = (group*nshort) + icsr->swb_offset[sfb]; | ||
88 | for (i = icsr->swb_offset[sfb]; i < icsr->swb_offset[sfb+1]; i++, k++) | ||
89 | { | ||
90 | #ifndef FIXED_POINT | ||
91 | r_spec[k] = MUL_R(l_spec[k], scale); | ||
92 | #else | ||
93 | if (exp < 0) | ||
94 | r_spec[k] = l_spec[k] << -exp; | ||
95 | else | ||
96 | r_spec[k] = l_spec[k] >> exp; | ||
97 | |||
98 | r_spec[k] = MUL_C(r_spec[k], pow05_table[frac + 3]); | ||
99 | #endif | ||
100 | if (is_intensity(icsr, g, sfb) != invert_intensity(ics, g, sfb)) | ||
101 | r_spec[k] = -r_spec[k]; | ||
102 | } | ||
103 | } | ||
104 | } | ||
105 | group++; | ||
106 | } | ||
107 | } | ||
108 | } | ||
diff --git a/lib/rbcodec/codecs/libfaad/is.h b/lib/rbcodec/codecs/libfaad/is.h new file mode 100644 index 0000000000..1b68f3ec49 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/is.h | |||
@@ -0,0 +1,64 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __IS_H__ | ||
29 | #define __IS_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | #include "syntax.h" | ||
36 | |||
37 | void is_decode(ic_stream *ics, ic_stream *icsr, real_t *l_spec, real_t *r_spec, | ||
38 | uint16_t frame_len); | ||
39 | |||
40 | static INLINE int8_t is_intensity(ic_stream *ics, uint8_t group, uint8_t sfb) | ||
41 | { | ||
42 | switch (ics->sfb_cb[group][sfb]) | ||
43 | { | ||
44 | case INTENSITY_HCB: | ||
45 | return 1; | ||
46 | case INTENSITY_HCB2: | ||
47 | return -1; | ||
48 | default: | ||
49 | return 0; | ||
50 | } | ||
51 | } | ||
52 | |||
53 | static INLINE int8_t invert_intensity(ic_stream *ics, uint8_t group, uint8_t sfb) | ||
54 | { | ||
55 | if (ics->ms_mask_present == 1) | ||
56 | return (1-2*ics->ms_used[group][sfb]); | ||
57 | return 1; | ||
58 | } | ||
59 | |||
60 | |||
61 | #ifdef __cplusplus | ||
62 | } | ||
63 | #endif | ||
64 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/kbd_win.h b/lib/rbcodec/codecs/libfaad/kbd_win.h new file mode 100644 index 0000000000..8abd3c070c --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/kbd_win.h | |||
@@ -0,0 +1,2294 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __KBD_WIN_H__ | ||
29 | #define __KBD_WIN_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | #ifdef _MSC_VER | ||
36 | #pragma warning(disable:4305) | ||
37 | #pragma warning(disable:4244) | ||
38 | #endif | ||
39 | |||
40 | static const real_t kbd_long_1024[] ICONST_ATTR MEM_ALIGN_ATTR = | ||
41 | { | ||
42 | FRAC_CONST(0.00029256153896361), | ||
43 | FRAC_CONST(0.00042998567353047), | ||
44 | FRAC_CONST(0.00054674074589540), | ||
45 | FRAC_CONST(0.00065482304299792), | ||
46 | FRAC_CONST(0.00075870195068747), | ||
47 | FRAC_CONST(0.00086059331713336), | ||
48 | FRAC_CONST(0.00096177541439010), | ||
49 | FRAC_CONST(0.0010630609410878), | ||
50 | FRAC_CONST(0.0011650036308132), | ||
51 | FRAC_CONST(0.0012680012194148), | ||
52 | FRAC_CONST(0.0013723517232956), | ||
53 | FRAC_CONST(0.0014782864109136), | ||
54 | FRAC_CONST(0.0015859901976719), | ||
55 | FRAC_CONST(0.0016956148252373), | ||
56 | FRAC_CONST(0.0018072876903517), | ||
57 | FRAC_CONST(0.0019211179405514), | ||
58 | FRAC_CONST(0.0020372007924215), | ||
59 | FRAC_CONST(0.0021556206591754), | ||
60 | FRAC_CONST(0.0022764534599614), | ||
61 | FRAC_CONST(0.0023997683540995), | ||
62 | FRAC_CONST(0.0025256290631156), | ||
63 | FRAC_CONST(0.0026540948920831), | ||
64 | FRAC_CONST(0.0027852215281403), | ||
65 | FRAC_CONST(0.0029190616715331), | ||
66 | FRAC_CONST(0.0030556655443223), | ||
67 | FRAC_CONST(0.0031950812943391), | ||
68 | FRAC_CONST(0.0033373553240392), | ||
69 | FRAC_CONST(0.0034825325586930), | ||
70 | FRAC_CONST(0.0036306566699199), | ||
71 | FRAC_CONST(0.0037817702604646), | ||
72 | FRAC_CONST(0.0039359150179719), | ||
73 | FRAC_CONST(0.0040931318437260), | ||
74 | FRAC_CONST(0.0042534609610026), | ||
75 | FRAC_CONST(0.0044169420066964), | ||
76 | FRAC_CONST(0.0045836141091341), | ||
77 | FRAC_CONST(0.0047535159544086), | ||
78 | FRAC_CONST(0.0049266858431214), | ||
79 | FRAC_CONST(0.0051031617390698), | ||
80 | FRAC_CONST(0.0052829813111335), | ||
81 | FRAC_CONST(0.0054661819693975), | ||
82 | FRAC_CONST(0.0056528008963682), | ||
83 | FRAC_CONST(0.0058428750739943), | ||
84 | FRAC_CONST(0.0060364413070882), | ||
85 | FRAC_CONST(0.0062335362436492), | ||
86 | FRAC_CONST(0.0064341963925079), | ||
87 | FRAC_CONST(0.0066384581386503), | ||
88 | FRAC_CONST(0.0068463577565218), | ||
89 | FRAC_CONST(0.0070579314215715), | ||
90 | FRAC_CONST(0.0072732152202559), | ||
91 | FRAC_CONST(0.0074922451586909), | ||
92 | FRAC_CONST(0.0077150571701162), | ||
93 | FRAC_CONST(0.0079416871213115), | ||
94 | FRAC_CONST(0.0081721708180857), | ||
95 | FRAC_CONST(0.0084065440099458), | ||
96 | FRAC_CONST(0.0086448423940363), | ||
97 | FRAC_CONST(0.0088871016184291), | ||
98 | FRAC_CONST(0.0091333572848345), | ||
99 | FRAC_CONST(0.0093836449507939), | ||
100 | FRAC_CONST(0.0096380001314086), | ||
101 | FRAC_CONST(0.0098964583006517), | ||
102 | FRAC_CONST(0.010159054892306), | ||
103 | FRAC_CONST(0.010425825300561), | ||
104 | FRAC_CONST(0.010696804880310), | ||
105 | FRAC_CONST(0.010972028947167), | ||
106 | FRAC_CONST(0.011251532777236), | ||
107 | FRAC_CONST(0.011535351606646), | ||
108 | FRAC_CONST(0.011823520630897), | ||
109 | FRAC_CONST(0.012116075003993), | ||
110 | FRAC_CONST(0.012413049837429), | ||
111 | FRAC_CONST(0.012714480198999), | ||
112 | FRAC_CONST(0.013020401111478), | ||
113 | FRAC_CONST(0.013330847551161), | ||
114 | FRAC_CONST(0.013645854446288), | ||
115 | FRAC_CONST(0.013965456675352), | ||
116 | FRAC_CONST(0.014289689065314), | ||
117 | FRAC_CONST(0.014618586389712), | ||
118 | FRAC_CONST(0.014952183366697), | ||
119 | FRAC_CONST(0.015290514656976), | ||
120 | FRAC_CONST(0.015633614861688), | ||
121 | FRAC_CONST(0.015981518520214), | ||
122 | FRAC_CONST(0.016334260107915), | ||
123 | FRAC_CONST(0.016691874033817), | ||
124 | FRAC_CONST(0.017054394638241), | ||
125 | FRAC_CONST(0.017421856190380), | ||
126 | FRAC_CONST(0.017794292885832), | ||
127 | FRAC_CONST(0.018171738844085), | ||
128 | FRAC_CONST(0.018554228105962), | ||
129 | FRAC_CONST(0.018941794631032), | ||
130 | FRAC_CONST(0.019334472294980), | ||
131 | FRAC_CONST(0.019732294886947), | ||
132 | FRAC_CONST(0.020135296106839), | ||
133 | FRAC_CONST(0.020543509562604), | ||
134 | FRAC_CONST(0.020956968767488), | ||
135 | FRAC_CONST(0.021375707137257), | ||
136 | FRAC_CONST(0.021799757987407), | ||
137 | FRAC_CONST(0.022229154530343), | ||
138 | FRAC_CONST(0.022663929872540), | ||
139 | FRAC_CONST(0.023104117011689), | ||
140 | FRAC_CONST(0.023549748833816), | ||
141 | FRAC_CONST(0.024000858110398), | ||
142 | FRAC_CONST(0.024457477495451), | ||
143 | FRAC_CONST(0.024919639522613), | ||
144 | FRAC_CONST(0.025387376602207), | ||
145 | FRAC_CONST(0.025860721018295), | ||
146 | FRAC_CONST(0.026339704925726), | ||
147 | FRAC_CONST(0.026824360347160), | ||
148 | FRAC_CONST(0.027314719170100), | ||
149 | FRAC_CONST(0.027810813143900), | ||
150 | FRAC_CONST(0.028312673876775), | ||
151 | FRAC_CONST(0.028820332832801), | ||
152 | FRAC_CONST(0.029333821328905), | ||
153 | FRAC_CONST(0.029853170531859), | ||
154 | FRAC_CONST(0.030378411455255), | ||
155 | FRAC_CONST(0.030909574956490), | ||
156 | FRAC_CONST(0.031446691733739), | ||
157 | FRAC_CONST(0.031989792322926), | ||
158 | FRAC_CONST(0.032538907094693), | ||
159 | FRAC_CONST(0.033094066251369), | ||
160 | FRAC_CONST(0.033655299823935), | ||
161 | FRAC_CONST(0.034222637668991), | ||
162 | FRAC_CONST(0.034796109465717), | ||
163 | FRAC_CONST(0.035375744712844), | ||
164 | FRAC_CONST(0.035961572725616), | ||
165 | FRAC_CONST(0.036553622632758), | ||
166 | FRAC_CONST(0.037151923373446), | ||
167 | FRAC_CONST(0.037756503694277), | ||
168 | FRAC_CONST(0.038367392146243), | ||
169 | FRAC_CONST(0.038984617081711), | ||
170 | FRAC_CONST(0.039608206651398), | ||
171 | FRAC_CONST(0.040238188801359), | ||
172 | FRAC_CONST(0.040874591269976), | ||
173 | FRAC_CONST(0.041517441584950), | ||
174 | FRAC_CONST(0.042166767060301), | ||
175 | FRAC_CONST(0.042822594793376), | ||
176 | FRAC_CONST(0.043484951661852), | ||
177 | FRAC_CONST(0.044153864320760), | ||
178 | FRAC_CONST(0.044829359199509), | ||
179 | FRAC_CONST(0.045511462498913), | ||
180 | FRAC_CONST(0.046200200188234), | ||
181 | FRAC_CONST(0.046895598002228), | ||
182 | FRAC_CONST(0.047597681438201), | ||
183 | FRAC_CONST(0.048306475753074), | ||
184 | FRAC_CONST(0.049022005960455), | ||
185 | FRAC_CONST(0.049744296827725), | ||
186 | FRAC_CONST(0.050473372873129), | ||
187 | FRAC_CONST(0.051209258362879), | ||
188 | FRAC_CONST(0.051951977308273), | ||
189 | FRAC_CONST(0.052701553462813), | ||
190 | FRAC_CONST(0.053458010319350), | ||
191 | FRAC_CONST(0.054221371107223), | ||
192 | FRAC_CONST(0.054991658789428), | ||
193 | FRAC_CONST(0.055768896059787), | ||
194 | FRAC_CONST(0.056553105340134), | ||
195 | FRAC_CONST(0.057344308777513), | ||
196 | FRAC_CONST(0.058142528241393), | ||
197 | FRAC_CONST(0.058947785320893), | ||
198 | FRAC_CONST(0.059760101322019), | ||
199 | FRAC_CONST(0.060579497264926), | ||
200 | FRAC_CONST(0.061405993881180), | ||
201 | FRAC_CONST(0.062239611611049), | ||
202 | FRAC_CONST(0.063080370600799), | ||
203 | FRAC_CONST(0.063928290700012), | ||
204 | FRAC_CONST(0.064783391458919), | ||
205 | FRAC_CONST(0.065645692125747), | ||
206 | FRAC_CONST(0.066515211644086), | ||
207 | FRAC_CONST(0.067391968650269), | ||
208 | FRAC_CONST(0.068275981470777), | ||
209 | FRAC_CONST(0.069167268119652), | ||
210 | FRAC_CONST(0.070065846295935), | ||
211 | FRAC_CONST(0.070971733381121), | ||
212 | FRAC_CONST(0.071884946436630), | ||
213 | FRAC_CONST(0.072805502201299), | ||
214 | FRAC_CONST(0.073733417088896), | ||
215 | FRAC_CONST(0.074668707185649), | ||
216 | FRAC_CONST(0.075611388247794), | ||
217 | FRAC_CONST(0.076561475699152), | ||
218 | FRAC_CONST(0.077518984628715), | ||
219 | FRAC_CONST(0.078483929788261), | ||
220 | FRAC_CONST(0.079456325589986), | ||
221 | FRAC_CONST(0.080436186104162), | ||
222 | FRAC_CONST(0.081423525056808), | ||
223 | FRAC_CONST(0.082418355827392), | ||
224 | FRAC_CONST(0.083420691446553), | ||
225 | FRAC_CONST(0.084430544593841), | ||
226 | FRAC_CONST(0.085447927595483), | ||
227 | FRAC_CONST(0.086472852422178), | ||
228 | FRAC_CONST(0.087505330686900), | ||
229 | FRAC_CONST(0.088545373642744), | ||
230 | FRAC_CONST(0.089592992180780), | ||
231 | FRAC_CONST(0.090648196827937), | ||
232 | FRAC_CONST(0.091710997744919), | ||
233 | FRAC_CONST(0.092781404724131), | ||
234 | FRAC_CONST(0.093859427187640), | ||
235 | FRAC_CONST(0.094945074185163), | ||
236 | FRAC_CONST(0.096038354392069), | ||
237 | FRAC_CONST(0.097139276107423), | ||
238 | FRAC_CONST(0.098247847252041), | ||
239 | FRAC_CONST(0.099364075366580), | ||
240 | FRAC_CONST(0.10048796760965), | ||
241 | FRAC_CONST(0.10161953075597), | ||
242 | FRAC_CONST(0.10275877119451), | ||
243 | FRAC_CONST(0.10390569492671), | ||
244 | FRAC_CONST(0.10506030756469), | ||
245 | FRAC_CONST(0.10622261432949), | ||
246 | FRAC_CONST(0.10739262004941), | ||
247 | FRAC_CONST(0.10857032915821), | ||
248 | FRAC_CONST(0.10975574569357), | ||
249 | FRAC_CONST(0.11094887329534), | ||
250 | FRAC_CONST(0.11214971520402), | ||
251 | FRAC_CONST(0.11335827425914), | ||
252 | FRAC_CONST(0.11457455289772), | ||
253 | FRAC_CONST(0.11579855315274), | ||
254 | FRAC_CONST(0.11703027665170), | ||
255 | FRAC_CONST(0.11826972461510), | ||
256 | FRAC_CONST(0.11951689785504), | ||
257 | FRAC_CONST(0.12077179677383), | ||
258 | FRAC_CONST(0.12203442136263), | ||
259 | FRAC_CONST(0.12330477120008), | ||
260 | FRAC_CONST(0.12458284545102), | ||
261 | FRAC_CONST(0.12586864286523), | ||
262 | FRAC_CONST(0.12716216177615), | ||
263 | FRAC_CONST(0.12846340009971), | ||
264 | FRAC_CONST(0.12977235533312), | ||
265 | FRAC_CONST(0.13108902455375), | ||
266 | FRAC_CONST(0.13241340441801), | ||
267 | FRAC_CONST(0.13374549116025), | ||
268 | FRAC_CONST(0.13508528059173), | ||
269 | FRAC_CONST(0.13643276809961), | ||
270 | FRAC_CONST(0.13778794864595), | ||
271 | FRAC_CONST(0.13915081676677), | ||
272 | FRAC_CONST(0.14052136657114), | ||
273 | FRAC_CONST(0.14189959174027), | ||
274 | FRAC_CONST(0.14328548552671), | ||
275 | FRAC_CONST(0.14467904075349), | ||
276 | FRAC_CONST(0.14608024981336), | ||
277 | FRAC_CONST(0.14748910466804), | ||
278 | FRAC_CONST(0.14890559684750), | ||
279 | FRAC_CONST(0.15032971744929), | ||
280 | FRAC_CONST(0.15176145713790), | ||
281 | FRAC_CONST(0.15320080614414), | ||
282 | FRAC_CONST(0.15464775426459), | ||
283 | FRAC_CONST(0.15610229086100), | ||
284 | FRAC_CONST(0.15756440485987), | ||
285 | FRAC_CONST(0.15903408475193), | ||
286 | FRAC_CONST(0.16051131859170), | ||
287 | FRAC_CONST(0.16199609399712), | ||
288 | FRAC_CONST(0.16348839814917), | ||
289 | FRAC_CONST(0.16498821779156), | ||
290 | FRAC_CONST(0.16649553923042), | ||
291 | FRAC_CONST(0.16801034833404), | ||
292 | FRAC_CONST(0.16953263053270), | ||
293 | FRAC_CONST(0.17106237081842), | ||
294 | FRAC_CONST(0.17259955374484), | ||
295 | FRAC_CONST(0.17414416342714), | ||
296 | FRAC_CONST(0.17569618354193), | ||
297 | FRAC_CONST(0.17725559732720), | ||
298 | FRAC_CONST(0.17882238758238), | ||
299 | FRAC_CONST(0.18039653666830), | ||
300 | FRAC_CONST(0.18197802650733), | ||
301 | FRAC_CONST(0.18356683858343), | ||
302 | FRAC_CONST(0.18516295394233), | ||
303 | FRAC_CONST(0.18676635319174), | ||
304 | FRAC_CONST(0.18837701650148), | ||
305 | FRAC_CONST(0.18999492360384), | ||
306 | FRAC_CONST(0.19162005379380), | ||
307 | FRAC_CONST(0.19325238592940), | ||
308 | FRAC_CONST(0.19489189843209), | ||
309 | FRAC_CONST(0.19653856928714), | ||
310 | FRAC_CONST(0.19819237604409), | ||
311 | FRAC_CONST(0.19985329581721), | ||
312 | FRAC_CONST(0.20152130528605), | ||
313 | FRAC_CONST(0.20319638069594), | ||
314 | FRAC_CONST(0.20487849785865), | ||
315 | FRAC_CONST(0.20656763215298), | ||
316 | FRAC_CONST(0.20826375852540), | ||
317 | FRAC_CONST(0.20996685149083), | ||
318 | FRAC_CONST(0.21167688513330), | ||
319 | FRAC_CONST(0.21339383310678), | ||
320 | FRAC_CONST(0.21511766863598), | ||
321 | FRAC_CONST(0.21684836451719), | ||
322 | FRAC_CONST(0.21858589311922), | ||
323 | FRAC_CONST(0.22033022638425), | ||
324 | FRAC_CONST(0.22208133582887), | ||
325 | FRAC_CONST(0.22383919254503), | ||
326 | FRAC_CONST(0.22560376720111), | ||
327 | FRAC_CONST(0.22737503004300), | ||
328 | FRAC_CONST(0.22915295089517), | ||
329 | FRAC_CONST(0.23093749916189), | ||
330 | FRAC_CONST(0.23272864382838), | ||
331 | FRAC_CONST(0.23452635346201), | ||
332 | FRAC_CONST(0.23633059621364), | ||
333 | FRAC_CONST(0.23814133981883), | ||
334 | FRAC_CONST(0.23995855159925), | ||
335 | FRAC_CONST(0.24178219846403), | ||
336 | FRAC_CONST(0.24361224691114), | ||
337 | FRAC_CONST(0.24544866302890), | ||
338 | FRAC_CONST(0.24729141249740), | ||
339 | FRAC_CONST(0.24914046059007), | ||
340 | FRAC_CONST(0.25099577217522), | ||
341 | FRAC_CONST(0.25285731171763), | ||
342 | FRAC_CONST(0.25472504328019), | ||
343 | FRAC_CONST(0.25659893052556), | ||
344 | FRAC_CONST(0.25847893671788), | ||
345 | FRAC_CONST(0.26036502472451), | ||
346 | FRAC_CONST(0.26225715701781), | ||
347 | FRAC_CONST(0.26415529567692), | ||
348 | FRAC_CONST(0.26605940238966), | ||
349 | FRAC_CONST(0.26796943845439), | ||
350 | FRAC_CONST(0.26988536478190), | ||
351 | FRAC_CONST(0.27180714189742), | ||
352 | FRAC_CONST(0.27373472994256), | ||
353 | FRAC_CONST(0.27566808867736), | ||
354 | FRAC_CONST(0.27760717748238), | ||
355 | FRAC_CONST(0.27955195536071), | ||
356 | FRAC_CONST(0.28150238094021), | ||
357 | FRAC_CONST(0.28345841247557), | ||
358 | FRAC_CONST(0.28542000785059), | ||
359 | FRAC_CONST(0.28738712458038), | ||
360 | FRAC_CONST(0.28935971981364), | ||
361 | FRAC_CONST(0.29133775033492), | ||
362 | FRAC_CONST(0.29332117256704), | ||
363 | FRAC_CONST(0.29530994257338), | ||
364 | FRAC_CONST(0.29730401606034), | ||
365 | FRAC_CONST(0.29930334837974), | ||
366 | FRAC_CONST(0.30130789453132), | ||
367 | FRAC_CONST(0.30331760916521), | ||
368 | FRAC_CONST(0.30533244658452), | ||
369 | FRAC_CONST(0.30735236074785), | ||
370 | FRAC_CONST(0.30937730527195), | ||
371 | FRAC_CONST(0.31140723343430), | ||
372 | FRAC_CONST(0.31344209817583), | ||
373 | FRAC_CONST(0.31548185210356), | ||
374 | FRAC_CONST(0.31752644749341), | ||
375 | FRAC_CONST(0.31957583629288), | ||
376 | FRAC_CONST(0.32162997012390), | ||
377 | FRAC_CONST(0.32368880028565), | ||
378 | FRAC_CONST(0.32575227775738), | ||
379 | FRAC_CONST(0.32782035320134), | ||
380 | FRAC_CONST(0.32989297696566), | ||
381 | FRAC_CONST(0.33197009908736), | ||
382 | FRAC_CONST(0.33405166929523), | ||
383 | FRAC_CONST(0.33613763701295), | ||
384 | FRAC_CONST(0.33822795136203), | ||
385 | FRAC_CONST(0.34032256116495), | ||
386 | FRAC_CONST(0.34242141494820), | ||
387 | FRAC_CONST(0.34452446094547), | ||
388 | FRAC_CONST(0.34663164710072), | ||
389 | FRAC_CONST(0.34874292107143), | ||
390 | FRAC_CONST(0.35085823023181), | ||
391 | FRAC_CONST(0.35297752167598), | ||
392 | FRAC_CONST(0.35510074222129), | ||
393 | FRAC_CONST(0.35722783841160), | ||
394 | FRAC_CONST(0.35935875652060), | ||
395 | FRAC_CONST(0.36149344255514), | ||
396 | FRAC_CONST(0.36363184225864), | ||
397 | FRAC_CONST(0.36577390111444), | ||
398 | FRAC_CONST(0.36791956434930), | ||
399 | FRAC_CONST(0.37006877693676), | ||
400 | FRAC_CONST(0.37222148360070), | ||
401 | FRAC_CONST(0.37437762881878), | ||
402 | FRAC_CONST(0.37653715682603), | ||
403 | FRAC_CONST(0.37870001161834), | ||
404 | FRAC_CONST(0.38086613695607), | ||
405 | FRAC_CONST(0.38303547636766), | ||
406 | FRAC_CONST(0.38520797315322), | ||
407 | FRAC_CONST(0.38738357038821), | ||
408 | FRAC_CONST(0.38956221092708), | ||
409 | FRAC_CONST(0.39174383740701), | ||
410 | FRAC_CONST(0.39392839225157), | ||
411 | FRAC_CONST(0.39611581767449), | ||
412 | FRAC_CONST(0.39830605568342), | ||
413 | FRAC_CONST(0.40049904808370), | ||
414 | FRAC_CONST(0.40269473648218), | ||
415 | FRAC_CONST(0.40489306229101), | ||
416 | FRAC_CONST(0.40709396673153), | ||
417 | FRAC_CONST(0.40929739083810), | ||
418 | FRAC_CONST(0.41150327546197), | ||
419 | FRAC_CONST(0.41371156127524), | ||
420 | FRAC_CONST(0.41592218877472), | ||
421 | FRAC_CONST(0.41813509828594), | ||
422 | FRAC_CONST(0.42035022996702), | ||
423 | FRAC_CONST(0.42256752381274), | ||
424 | FRAC_CONST(0.42478691965848), | ||
425 | FRAC_CONST(0.42700835718423), | ||
426 | FRAC_CONST(0.42923177591866), | ||
427 | FRAC_CONST(0.43145711524314), | ||
428 | FRAC_CONST(0.43368431439580), | ||
429 | FRAC_CONST(0.43591331247564), | ||
430 | FRAC_CONST(0.43814404844658), | ||
431 | FRAC_CONST(0.44037646114161), | ||
432 | FRAC_CONST(0.44261048926688), | ||
433 | FRAC_CONST(0.44484607140589), | ||
434 | FRAC_CONST(0.44708314602359), | ||
435 | FRAC_CONST(0.44932165147057), | ||
436 | FRAC_CONST(0.45156152598727), | ||
437 | FRAC_CONST(0.45380270770813), | ||
438 | FRAC_CONST(0.45604513466581), | ||
439 | FRAC_CONST(0.45828874479543), | ||
440 | FRAC_CONST(0.46053347593880), | ||
441 | FRAC_CONST(0.46277926584861), | ||
442 | FRAC_CONST(0.46502605219277), | ||
443 | FRAC_CONST(0.46727377255861), | ||
444 | FRAC_CONST(0.46952236445718), | ||
445 | FRAC_CONST(0.47177176532752), | ||
446 | FRAC_CONST(0.47402191254100), | ||
447 | FRAC_CONST(0.47627274340557), | ||
448 | FRAC_CONST(0.47852419517009), | ||
449 | FRAC_CONST(0.48077620502869), | ||
450 | FRAC_CONST(0.48302871012505), | ||
451 | FRAC_CONST(0.48528164755674), | ||
452 | FRAC_CONST(0.48753495437962), | ||
453 | FRAC_CONST(0.48978856761212), | ||
454 | FRAC_CONST(0.49204242423966), | ||
455 | FRAC_CONST(0.49429646121898), | ||
456 | FRAC_CONST(0.49655061548250), | ||
457 | FRAC_CONST(0.49880482394273), | ||
458 | FRAC_CONST(0.50105902349665), | ||
459 | FRAC_CONST(0.50331315103004), | ||
460 | FRAC_CONST(0.50556714342194), | ||
461 | FRAC_CONST(0.50782093754901), | ||
462 | FRAC_CONST(0.51007447028990), | ||
463 | FRAC_CONST(0.51232767852971), | ||
464 | FRAC_CONST(0.51458049916433), | ||
465 | FRAC_CONST(0.51683286910489), | ||
466 | FRAC_CONST(0.51908472528213), | ||
467 | FRAC_CONST(0.52133600465083), | ||
468 | FRAC_CONST(0.52358664419420), | ||
469 | FRAC_CONST(0.52583658092832), | ||
470 | FRAC_CONST(0.52808575190648), | ||
471 | FRAC_CONST(0.53033409422367), | ||
472 | FRAC_CONST(0.53258154502092), | ||
473 | FRAC_CONST(0.53482804148974), | ||
474 | FRAC_CONST(0.53707352087652), | ||
475 | FRAC_CONST(0.53931792048690), | ||
476 | FRAC_CONST(0.54156117769021), | ||
477 | FRAC_CONST(0.54380322992385), | ||
478 | FRAC_CONST(0.54604401469766), | ||
479 | FRAC_CONST(0.54828346959835), | ||
480 | FRAC_CONST(0.55052153229384), | ||
481 | FRAC_CONST(0.55275814053768), | ||
482 | FRAC_CONST(0.55499323217338), | ||
483 | FRAC_CONST(0.55722674513883), | ||
484 | FRAC_CONST(0.55945861747062), | ||
485 | FRAC_CONST(0.56168878730842), | ||
486 | FRAC_CONST(0.56391719289930), | ||
487 | FRAC_CONST(0.56614377260214), | ||
488 | FRAC_CONST(0.56836846489188), | ||
489 | FRAC_CONST(0.57059120836390), | ||
490 | FRAC_CONST(0.57281194173835), | ||
491 | FRAC_CONST(0.57503060386439), | ||
492 | FRAC_CONST(0.57724713372458), | ||
493 | FRAC_CONST(0.57946147043912), | ||
494 | FRAC_CONST(0.58167355327012), | ||
495 | FRAC_CONST(0.58388332162591), | ||
496 | FRAC_CONST(0.58609071506528), | ||
497 | FRAC_CONST(0.58829567330173), | ||
498 | FRAC_CONST(0.59049813620770), | ||
499 | FRAC_CONST(0.59269804381879), | ||
500 | FRAC_CONST(0.59489533633802), | ||
501 | FRAC_CONST(0.59708995413996), | ||
502 | FRAC_CONST(0.59928183777495), | ||
503 | FRAC_CONST(0.60147092797329), | ||
504 | FRAC_CONST(0.60365716564937), | ||
505 | FRAC_CONST(0.60584049190582), | ||
506 | FRAC_CONST(0.60802084803764), | ||
507 | FRAC_CONST(0.61019817553632), | ||
508 | FRAC_CONST(0.61237241609393), | ||
509 | FRAC_CONST(0.61454351160718), | ||
510 | FRAC_CONST(0.61671140418155), | ||
511 | FRAC_CONST(0.61887603613527), | ||
512 | FRAC_CONST(0.62103735000336), | ||
513 | FRAC_CONST(0.62319528854167), | ||
514 | FRAC_CONST(0.62534979473088), | ||
515 | FRAC_CONST(0.62750081178042), | ||
516 | FRAC_CONST(0.62964828313250), | ||
517 | FRAC_CONST(0.63179215246597), | ||
518 | FRAC_CONST(0.63393236370030), | ||
519 | FRAC_CONST(0.63606886099946), | ||
520 | FRAC_CONST(0.63820158877577), | ||
521 | FRAC_CONST(0.64033049169379), | ||
522 | FRAC_CONST(0.64245551467413), | ||
523 | FRAC_CONST(0.64457660289729), | ||
524 | FRAC_CONST(0.64669370180740), | ||
525 | FRAC_CONST(0.64880675711607), | ||
526 | FRAC_CONST(0.65091571480603), | ||
527 | FRAC_CONST(0.65302052113494), | ||
528 | FRAC_CONST(0.65512112263906), | ||
529 | FRAC_CONST(0.65721746613689), | ||
530 | FRAC_CONST(0.65930949873289), | ||
531 | FRAC_CONST(0.66139716782102), | ||
532 | FRAC_CONST(0.66348042108842), | ||
533 | FRAC_CONST(0.66555920651892), | ||
534 | FRAC_CONST(0.66763347239664), | ||
535 | FRAC_CONST(0.66970316730947), | ||
536 | FRAC_CONST(0.67176824015260), | ||
537 | FRAC_CONST(0.67382864013196), | ||
538 | FRAC_CONST(0.67588431676768), | ||
539 | FRAC_CONST(0.67793521989751), | ||
540 | FRAC_CONST(0.67998129968017), | ||
541 | FRAC_CONST(0.68202250659876), | ||
542 | FRAC_CONST(0.68405879146403), | ||
543 | FRAC_CONST(0.68609010541774), | ||
544 | FRAC_CONST(0.68811639993588), | ||
545 | FRAC_CONST(0.69013762683195), | ||
546 | FRAC_CONST(0.69215373826012), | ||
547 | FRAC_CONST(0.69416468671849), | ||
548 | FRAC_CONST(0.69617042505214), | ||
549 | FRAC_CONST(0.69817090645634), | ||
550 | FRAC_CONST(0.70016608447958), | ||
551 | FRAC_CONST(0.70215591302664), | ||
552 | FRAC_CONST(0.70414034636163), | ||
553 | FRAC_CONST(0.70611933911096), | ||
554 | FRAC_CONST(0.70809284626630), | ||
555 | FRAC_CONST(0.71006082318751), | ||
556 | FRAC_CONST(0.71202322560554), | ||
557 | FRAC_CONST(0.71398000962530), | ||
558 | FRAC_CONST(0.71593113172842), | ||
559 | FRAC_CONST(0.71787654877613), | ||
560 | FRAC_CONST(0.71981621801195), | ||
561 | FRAC_CONST(0.72175009706445), | ||
562 | FRAC_CONST(0.72367814394990), | ||
563 | FRAC_CONST(0.72560031707496), | ||
564 | FRAC_CONST(0.72751657523927), | ||
565 | FRAC_CONST(0.72942687763803), | ||
566 | FRAC_CONST(0.73133118386457), | ||
567 | FRAC_CONST(0.73322945391280), | ||
568 | FRAC_CONST(0.73512164817975), | ||
569 | FRAC_CONST(0.73700772746796), | ||
570 | FRAC_CONST(0.73888765298787), | ||
571 | FRAC_CONST(0.74076138636020), | ||
572 | FRAC_CONST(0.74262888961827), | ||
573 | FRAC_CONST(0.74449012521027), | ||
574 | FRAC_CONST(0.74634505600152), | ||
575 | FRAC_CONST(0.74819364527663), | ||
576 | FRAC_CONST(0.75003585674175), | ||
577 | FRAC_CONST(0.75187165452661), | ||
578 | FRAC_CONST(0.75370100318668), | ||
579 | FRAC_CONST(0.75552386770515), | ||
580 | FRAC_CONST(0.75734021349500), | ||
581 | FRAC_CONST(0.75915000640095), | ||
582 | FRAC_CONST(0.76095321270137), | ||
583 | FRAC_CONST(0.76274979911019), | ||
584 | FRAC_CONST(0.76453973277875), | ||
585 | FRAC_CONST(0.76632298129757), | ||
586 | FRAC_CONST(0.76809951269819), | ||
587 | FRAC_CONST(0.76986929545481), | ||
588 | FRAC_CONST(0.77163229848604), | ||
589 | FRAC_CONST(0.77338849115651), | ||
590 | FRAC_CONST(0.77513784327849), | ||
591 | FRAC_CONST(0.77688032511340), | ||
592 | FRAC_CONST(0.77861590737340), | ||
593 | FRAC_CONST(0.78034456122283), | ||
594 | FRAC_CONST(0.78206625827961), | ||
595 | FRAC_CONST(0.78378097061667), | ||
596 | FRAC_CONST(0.78548867076330), | ||
597 | FRAC_CONST(0.78718933170643), | ||
598 | FRAC_CONST(0.78888292689189), | ||
599 | FRAC_CONST(0.79056943022564), | ||
600 | FRAC_CONST(0.79224881607494), | ||
601 | FRAC_CONST(0.79392105926949), | ||
602 | FRAC_CONST(0.79558613510249), | ||
603 | FRAC_CONST(0.79724401933170), | ||
604 | FRAC_CONST(0.79889468818046), | ||
605 | FRAC_CONST(0.80053811833858), | ||
606 | FRAC_CONST(0.80217428696334), | ||
607 | FRAC_CONST(0.80380317168028), | ||
608 | FRAC_CONST(0.80542475058405), | ||
609 | FRAC_CONST(0.80703900223920), | ||
610 | FRAC_CONST(0.80864590568089), | ||
611 | FRAC_CONST(0.81024544041560), | ||
612 | FRAC_CONST(0.81183758642175), | ||
613 | FRAC_CONST(0.81342232415032), | ||
614 | FRAC_CONST(0.81499963452540), | ||
615 | FRAC_CONST(0.81656949894467), | ||
616 | FRAC_CONST(0.81813189927991), | ||
617 | FRAC_CONST(0.81968681787738), | ||
618 | FRAC_CONST(0.82123423755821), | ||
619 | FRAC_CONST(0.82277414161874), | ||
620 | FRAC_CONST(0.82430651383076), | ||
621 | FRAC_CONST(0.82583133844180), | ||
622 | FRAC_CONST(0.82734860017528), | ||
623 | FRAC_CONST(0.82885828423070), | ||
624 | FRAC_CONST(0.83036037628369), | ||
625 | FRAC_CONST(0.83185486248609), | ||
626 | FRAC_CONST(0.83334172946597), | ||
627 | FRAC_CONST(0.83482096432759), | ||
628 | FRAC_CONST(0.83629255465130), | ||
629 | FRAC_CONST(0.83775648849344), | ||
630 | FRAC_CONST(0.83921275438615), | ||
631 | FRAC_CONST(0.84066134133716), | ||
632 | FRAC_CONST(0.84210223882952), | ||
633 | FRAC_CONST(0.84353543682130), | ||
634 | FRAC_CONST(0.84496092574524), | ||
635 | FRAC_CONST(0.84637869650833), | ||
636 | FRAC_CONST(0.84778874049138), | ||
637 | FRAC_CONST(0.84919104954855), | ||
638 | FRAC_CONST(0.85058561600677), | ||
639 | FRAC_CONST(0.85197243266520), | ||
640 | FRAC_CONST(0.85335149279457), | ||
641 | FRAC_CONST(0.85472279013653), | ||
642 | FRAC_CONST(0.85608631890295), | ||
643 | FRAC_CONST(0.85744207377513), | ||
644 | FRAC_CONST(0.85879004990298), | ||
645 | FRAC_CONST(0.86013024290422), | ||
646 | FRAC_CONST(0.86146264886346), | ||
647 | FRAC_CONST(0.86278726433124), | ||
648 | FRAC_CONST(0.86410408632306), | ||
649 | FRAC_CONST(0.86541311231838), | ||
650 | FRAC_CONST(0.86671434025950), | ||
651 | FRAC_CONST(0.86800776855046), | ||
652 | FRAC_CONST(0.86929339605590), | ||
653 | FRAC_CONST(0.87057122209981), | ||
654 | FRAC_CONST(0.87184124646433), | ||
655 | FRAC_CONST(0.87310346938840), | ||
656 | FRAC_CONST(0.87435789156650), | ||
657 | FRAC_CONST(0.87560451414719), | ||
658 | FRAC_CONST(0.87684333873173), | ||
659 | FRAC_CONST(0.87807436737261), | ||
660 | FRAC_CONST(0.87929760257204), | ||
661 | FRAC_CONST(0.88051304728038), | ||
662 | FRAC_CONST(0.88172070489456), | ||
663 | FRAC_CONST(0.88292057925645), | ||
664 | FRAC_CONST(0.88411267465117), | ||
665 | FRAC_CONST(0.88529699580537), | ||
666 | FRAC_CONST(0.88647354788545), | ||
667 | FRAC_CONST(0.88764233649580), | ||
668 | FRAC_CONST(0.88880336767692), | ||
669 | FRAC_CONST(0.88995664790351), | ||
670 | FRAC_CONST(0.89110218408260), | ||
671 | FRAC_CONST(0.89223998355154), | ||
672 | FRAC_CONST(0.89337005407600), | ||
673 | FRAC_CONST(0.89449240384793), | ||
674 | FRAC_CONST(0.89560704148345), | ||
675 | FRAC_CONST(0.89671397602074), | ||
676 | FRAC_CONST(0.89781321691786), | ||
677 | FRAC_CONST(0.89890477405053), | ||
678 | FRAC_CONST(0.89998865770993), | ||
679 | FRAC_CONST(0.90106487860034), | ||
680 | FRAC_CONST(0.90213344783689), | ||
681 | FRAC_CONST(0.90319437694315), | ||
682 | FRAC_CONST(0.90424767784873), | ||
683 | FRAC_CONST(0.90529336288690), | ||
684 | FRAC_CONST(0.90633144479201), | ||
685 | FRAC_CONST(0.90736193669708), | ||
686 | FRAC_CONST(0.90838485213119), | ||
687 | FRAC_CONST(0.90940020501694), | ||
688 | FRAC_CONST(0.91040800966776), | ||
689 | FRAC_CONST(0.91140828078533), | ||
690 | FRAC_CONST(0.91240103345685), | ||
691 | FRAC_CONST(0.91338628315231), | ||
692 | FRAC_CONST(0.91436404572173), | ||
693 | FRAC_CONST(0.91533433739238), | ||
694 | FRAC_CONST(0.91629717476594), | ||
695 | FRAC_CONST(0.91725257481564), | ||
696 | FRAC_CONST(0.91820055488334), | ||
697 | FRAC_CONST(0.91914113267664), | ||
698 | FRAC_CONST(0.92007432626589), | ||
699 | FRAC_CONST(0.92100015408120), | ||
700 | FRAC_CONST(0.92191863490944), | ||
701 | FRAC_CONST(0.92282978789113), | ||
702 | FRAC_CONST(0.92373363251740), | ||
703 | FRAC_CONST(0.92463018862687), | ||
704 | FRAC_CONST(0.92551947640245), | ||
705 | FRAC_CONST(0.92640151636824), | ||
706 | FRAC_CONST(0.92727632938624), | ||
707 | FRAC_CONST(0.92814393665320), | ||
708 | FRAC_CONST(0.92900435969727), | ||
709 | FRAC_CONST(0.92985762037477), | ||
710 | FRAC_CONST(0.93070374086684), | ||
711 | FRAC_CONST(0.93154274367610), | ||
712 | FRAC_CONST(0.93237465162328), | ||
713 | FRAC_CONST(0.93319948784382), | ||
714 | FRAC_CONST(0.93401727578443), | ||
715 | FRAC_CONST(0.93482803919967), | ||
716 | FRAC_CONST(0.93563180214841), | ||
717 | FRAC_CONST(0.93642858899043), | ||
718 | FRAC_CONST(0.93721842438279), | ||
719 | FRAC_CONST(0.93800133327637), | ||
720 | FRAC_CONST(0.93877734091223), | ||
721 | FRAC_CONST(0.93954647281807), | ||
722 | FRAC_CONST(0.94030875480458), | ||
723 | FRAC_CONST(0.94106421296182), | ||
724 | FRAC_CONST(0.94181287365556), | ||
725 | FRAC_CONST(0.94255476352362), | ||
726 | FRAC_CONST(0.94328990947213), | ||
727 | FRAC_CONST(0.94401833867184), | ||
728 | FRAC_CONST(0.94474007855439), | ||
729 | FRAC_CONST(0.94545515680855), | ||
730 | FRAC_CONST(0.94616360137644), | ||
731 | FRAC_CONST(0.94686544044975), | ||
732 | FRAC_CONST(0.94756070246592), | ||
733 | FRAC_CONST(0.94824941610434), | ||
734 | FRAC_CONST(0.94893161028248), | ||
735 | FRAC_CONST(0.94960731415209), | ||
736 | FRAC_CONST(0.95027655709525), | ||
737 | FRAC_CONST(0.95093936872056), | ||
738 | FRAC_CONST(0.95159577885924), | ||
739 | FRAC_CONST(0.95224581756115), | ||
740 | FRAC_CONST(0.95288951509097), | ||
741 | FRAC_CONST(0.95352690192417), | ||
742 | FRAC_CONST(0.95415800874314), | ||
743 | FRAC_CONST(0.95478286643320), | ||
744 | FRAC_CONST(0.95540150607863), | ||
745 | FRAC_CONST(0.95601395895871), | ||
746 | FRAC_CONST(0.95662025654373), | ||
747 | FRAC_CONST(0.95722043049100), | ||
748 | FRAC_CONST(0.95781451264084), | ||
749 | FRAC_CONST(0.95840253501260), | ||
750 | FRAC_CONST(0.95898452980058), | ||
751 | FRAC_CONST(0.95956052937008), | ||
752 | FRAC_CONST(0.96013056625336), | ||
753 | FRAC_CONST(0.96069467314557), | ||
754 | FRAC_CONST(0.96125288290073), | ||
755 | FRAC_CONST(0.96180522852773), | ||
756 | FRAC_CONST(0.96235174318622), | ||
757 | FRAC_CONST(0.96289246018262), | ||
758 | FRAC_CONST(0.96342741296604), | ||
759 | FRAC_CONST(0.96395663512424), | ||
760 | FRAC_CONST(0.96448016037959), | ||
761 | FRAC_CONST(0.96499802258499), | ||
762 | FRAC_CONST(0.96551025571985), | ||
763 | FRAC_CONST(0.96601689388602), | ||
764 | FRAC_CONST(0.96651797130376), | ||
765 | FRAC_CONST(0.96701352230768), | ||
766 | FRAC_CONST(0.96750358134269), | ||
767 | FRAC_CONST(0.96798818295998), | ||
768 | FRAC_CONST(0.96846736181297), | ||
769 | FRAC_CONST(0.96894115265327), | ||
770 | FRAC_CONST(0.96940959032667), | ||
771 | FRAC_CONST(0.96987270976912), | ||
772 | FRAC_CONST(0.97033054600270), | ||
773 | FRAC_CONST(0.97078313413161), | ||
774 | FRAC_CONST(0.97123050933818), | ||
775 | FRAC_CONST(0.97167270687887), | ||
776 | FRAC_CONST(0.97210976208030), | ||
777 | FRAC_CONST(0.97254171033525), | ||
778 | FRAC_CONST(0.97296858709871), | ||
779 | FRAC_CONST(0.97339042788392), | ||
780 | FRAC_CONST(0.97380726825843), | ||
781 | FRAC_CONST(0.97421914384017), | ||
782 | FRAC_CONST(0.97462609029350), | ||
783 | FRAC_CONST(0.97502814332534), | ||
784 | FRAC_CONST(0.97542533868127), | ||
785 | FRAC_CONST(0.97581771214160), | ||
786 | FRAC_CONST(0.97620529951759), | ||
787 | FRAC_CONST(0.97658813664749), | ||
788 | FRAC_CONST(0.97696625939282), | ||
789 | FRAC_CONST(0.97733970363445), | ||
790 | FRAC_CONST(0.97770850526884), | ||
791 | FRAC_CONST(0.97807270020427), | ||
792 | FRAC_CONST(0.97843232435704), | ||
793 | FRAC_CONST(0.97878741364771), | ||
794 | FRAC_CONST(0.97913800399743), | ||
795 | FRAC_CONST(0.97948413132414), | ||
796 | FRAC_CONST(0.97982583153895), | ||
797 | FRAC_CONST(0.98016314054243), | ||
798 | FRAC_CONST(0.98049609422096), | ||
799 | FRAC_CONST(0.98082472844313), | ||
800 | FRAC_CONST(0.98114907905608), | ||
801 | FRAC_CONST(0.98146918188197), | ||
802 | FRAC_CONST(0.98178507271438), | ||
803 | FRAC_CONST(0.98209678731477), | ||
804 | FRAC_CONST(0.98240436140902), | ||
805 | FRAC_CONST(0.98270783068385), | ||
806 | FRAC_CONST(0.98300723078342), | ||
807 | FRAC_CONST(0.98330259730589), | ||
808 | FRAC_CONST(0.98359396579995), | ||
809 | FRAC_CONST(0.98388137176152), | ||
810 | FRAC_CONST(0.98416485063031), | ||
811 | FRAC_CONST(0.98444443778651), | ||
812 | FRAC_CONST(0.98472016854752), | ||
813 | FRAC_CONST(0.98499207816463), | ||
814 | FRAC_CONST(0.98526020181980), | ||
815 | FRAC_CONST(0.98552457462240), | ||
816 | FRAC_CONST(0.98578523160609), | ||
817 | FRAC_CONST(0.98604220772560), | ||
818 | FRAC_CONST(0.98629553785362), | ||
819 | FRAC_CONST(0.98654525677772), | ||
820 | FRAC_CONST(0.98679139919726), | ||
821 | FRAC_CONST(0.98703399972035), | ||
822 | FRAC_CONST(0.98727309286089), | ||
823 | FRAC_CONST(0.98750871303556), | ||
824 | FRAC_CONST(0.98774089456089), | ||
825 | FRAC_CONST(0.98796967165036), | ||
826 | FRAC_CONST(0.98819507841154), | ||
827 | FRAC_CONST(0.98841714884323), | ||
828 | FRAC_CONST(0.98863591683269), | ||
829 | FRAC_CONST(0.98885141615285), | ||
830 | FRAC_CONST(0.98906368045957), | ||
831 | FRAC_CONST(0.98927274328896), | ||
832 | FRAC_CONST(0.98947863805473), | ||
833 | FRAC_CONST(0.98968139804554), | ||
834 | FRAC_CONST(0.98988105642241), | ||
835 | FRAC_CONST(0.99007764621618), | ||
836 | FRAC_CONST(0.99027120032501), | ||
837 | FRAC_CONST(0.99046175151186), | ||
838 | FRAC_CONST(0.99064933240208), | ||
839 | FRAC_CONST(0.99083397548099), | ||
840 | FRAC_CONST(0.99101571309153), | ||
841 | FRAC_CONST(0.99119457743191), | ||
842 | FRAC_CONST(0.99137060055337), | ||
843 | FRAC_CONST(0.99154381435784), | ||
844 | FRAC_CONST(0.99171425059582), | ||
845 | FRAC_CONST(0.99188194086414), | ||
846 | FRAC_CONST(0.99204691660388), | ||
847 | FRAC_CONST(0.99220920909823), | ||
848 | FRAC_CONST(0.99236884947045), | ||
849 | FRAC_CONST(0.99252586868186), | ||
850 | FRAC_CONST(0.99268029752989), | ||
851 | FRAC_CONST(0.99283216664606), | ||
852 | FRAC_CONST(0.99298150649419), | ||
853 | FRAC_CONST(0.99312834736847), | ||
854 | FRAC_CONST(0.99327271939167), | ||
855 | FRAC_CONST(0.99341465251338), | ||
856 | FRAC_CONST(0.99355417650825), | ||
857 | FRAC_CONST(0.99369132097430), | ||
858 | FRAC_CONST(0.99382611533130), | ||
859 | FRAC_CONST(0.99395858881910), | ||
860 | FRAC_CONST(0.99408877049612), | ||
861 | FRAC_CONST(0.99421668923778), | ||
862 | FRAC_CONST(0.99434237373503), | ||
863 | FRAC_CONST(0.99446585249289), | ||
864 | FRAC_CONST(0.99458715382906), | ||
865 | FRAC_CONST(0.99470630587254), | ||
866 | FRAC_CONST(0.99482333656229), | ||
867 | FRAC_CONST(0.99493827364600), | ||
868 | FRAC_CONST(0.99505114467878), | ||
869 | FRAC_CONST(0.99516197702200), | ||
870 | FRAC_CONST(0.99527079784214), | ||
871 | FRAC_CONST(0.99537763410962), | ||
872 | FRAC_CONST(0.99548251259777), | ||
873 | FRAC_CONST(0.99558545988178), | ||
874 | FRAC_CONST(0.99568650233767), | ||
875 | FRAC_CONST(0.99578566614138), | ||
876 | FRAC_CONST(0.99588297726783), | ||
877 | FRAC_CONST(0.99597846149005), | ||
878 | FRAC_CONST(0.99607214437834), | ||
879 | FRAC_CONST(0.99616405129947), | ||
880 | FRAC_CONST(0.99625420741595), | ||
881 | FRAC_CONST(0.99634263768527), | ||
882 | FRAC_CONST(0.99642936685928), | ||
883 | FRAC_CONST(0.99651441948352), | ||
884 | FRAC_CONST(0.99659781989663), | ||
885 | FRAC_CONST(0.99667959222978), | ||
886 | FRAC_CONST(0.99675976040620), | ||
887 | FRAC_CONST(0.99683834814063), | ||
888 | FRAC_CONST(0.99691537893895), | ||
889 | FRAC_CONST(0.99699087609774), | ||
890 | FRAC_CONST(0.99706486270391), | ||
891 | FRAC_CONST(0.99713736163442), | ||
892 | FRAC_CONST(0.99720839555593), | ||
893 | FRAC_CONST(0.99727798692461), | ||
894 | FRAC_CONST(0.99734615798589), | ||
895 | FRAC_CONST(0.99741293077431), | ||
896 | FRAC_CONST(0.99747832711337), | ||
897 | FRAC_CONST(0.99754236861541), | ||
898 | FRAC_CONST(0.99760507668158), | ||
899 | FRAC_CONST(0.99766647250181), | ||
900 | FRAC_CONST(0.99772657705478), | ||
901 | FRAC_CONST(0.99778541110799), | ||
902 | FRAC_CONST(0.99784299521785), | ||
903 | FRAC_CONST(0.99789934972976), | ||
904 | FRAC_CONST(0.99795449477828), | ||
905 | FRAC_CONST(0.99800845028730), | ||
906 | FRAC_CONST(0.99806123597027), | ||
907 | FRAC_CONST(0.99811287133042), | ||
908 | FRAC_CONST(0.99816337566108), | ||
909 | FRAC_CONST(0.99821276804596), | ||
910 | FRAC_CONST(0.99826106735952), | ||
911 | FRAC_CONST(0.99830829226732), | ||
912 | FRAC_CONST(0.99835446122649), | ||
913 | FRAC_CONST(0.99839959248609), | ||
914 | FRAC_CONST(0.99844370408765), | ||
915 | FRAC_CONST(0.99848681386566), | ||
916 | FRAC_CONST(0.99852893944805), | ||
917 | FRAC_CONST(0.99857009825685), | ||
918 | FRAC_CONST(0.99861030750869), | ||
919 | FRAC_CONST(0.99864958421549), | ||
920 | FRAC_CONST(0.99868794518504), | ||
921 | FRAC_CONST(0.99872540702178), | ||
922 | FRAC_CONST(0.99876198612738), | ||
923 | FRAC_CONST(0.99879769870160), | ||
924 | FRAC_CONST(0.99883256074295), | ||
925 | FRAC_CONST(0.99886658804953), | ||
926 | FRAC_CONST(0.99889979621983), | ||
927 | FRAC_CONST(0.99893220065356), | ||
928 | FRAC_CONST(0.99896381655254), | ||
929 | FRAC_CONST(0.99899465892154), | ||
930 | FRAC_CONST(0.99902474256924), | ||
931 | FRAC_CONST(0.99905408210916), | ||
932 | FRAC_CONST(0.99908269196056), | ||
933 | FRAC_CONST(0.99911058634952), | ||
934 | FRAC_CONST(0.99913777930986), | ||
935 | FRAC_CONST(0.99916428468421), | ||
936 | FRAC_CONST(0.99919011612505), | ||
937 | FRAC_CONST(0.99921528709576), | ||
938 | FRAC_CONST(0.99923981087174), | ||
939 | FRAC_CONST(0.99926370054150), | ||
940 | FRAC_CONST(0.99928696900779), | ||
941 | FRAC_CONST(0.99930962898876), | ||
942 | FRAC_CONST(0.99933169301910), | ||
943 | FRAC_CONST(0.99935317345126), | ||
944 | FRAC_CONST(0.99937408245662), | ||
945 | FRAC_CONST(0.99939443202674), | ||
946 | FRAC_CONST(0.99941423397457), | ||
947 | FRAC_CONST(0.99943349993572), | ||
948 | FRAC_CONST(0.99945224136972), | ||
949 | FRAC_CONST(0.99947046956130), | ||
950 | FRAC_CONST(0.99948819562171), | ||
951 | FRAC_CONST(0.99950543049000), | ||
952 | FRAC_CONST(0.99952218493439), | ||
953 | FRAC_CONST(0.99953846955355), | ||
954 | FRAC_CONST(0.99955429477803), | ||
955 | FRAC_CONST(0.99956967087154), | ||
956 | FRAC_CONST(0.99958460793242), | ||
957 | FRAC_CONST(0.99959911589494), | ||
958 | FRAC_CONST(0.99961320453077), | ||
959 | FRAC_CONST(0.99962688345035), | ||
960 | FRAC_CONST(0.99964016210433), | ||
961 | FRAC_CONST(0.99965304978499), | ||
962 | FRAC_CONST(0.99966555562769), | ||
963 | FRAC_CONST(0.99967768861231), | ||
964 | FRAC_CONST(0.99968945756473), | ||
965 | FRAC_CONST(0.99970087115825), | ||
966 | FRAC_CONST(0.99971193791510), | ||
967 | FRAC_CONST(0.99972266620792), | ||
968 | FRAC_CONST(0.99973306426121), | ||
969 | FRAC_CONST(0.99974314015288), | ||
970 | FRAC_CONST(0.99975290181568), | ||
971 | FRAC_CONST(0.99976235703876), | ||
972 | FRAC_CONST(0.99977151346914), | ||
973 | FRAC_CONST(0.99978037861326), | ||
974 | FRAC_CONST(0.99978895983845), | ||
975 | FRAC_CONST(0.99979726437448), | ||
976 | FRAC_CONST(0.99980529931507), | ||
977 | FRAC_CONST(0.99981307161943), | ||
978 | FRAC_CONST(0.99982058811377), | ||
979 | FRAC_CONST(0.99982785549283), | ||
980 | FRAC_CONST(0.99983488032144), | ||
981 | FRAC_CONST(0.99984166903600), | ||
982 | FRAC_CONST(0.99984822794606), | ||
983 | FRAC_CONST(0.99985456323584), | ||
984 | FRAC_CONST(0.99986068096572), | ||
985 | FRAC_CONST(0.99986658707386), | ||
986 | FRAC_CONST(0.99987228737764), | ||
987 | FRAC_CONST(0.99987778757524), | ||
988 | FRAC_CONST(0.99988309324717), | ||
989 | FRAC_CONST(0.99988820985777), | ||
990 | FRAC_CONST(0.99989314275675), | ||
991 | FRAC_CONST(0.99989789718072), | ||
992 | FRAC_CONST(0.99990247825468), | ||
993 | FRAC_CONST(0.99990689099357), | ||
994 | FRAC_CONST(0.99991114030376), | ||
995 | FRAC_CONST(0.99991523098456), | ||
996 | FRAC_CONST(0.99991916772971), | ||
997 | FRAC_CONST(0.99992295512891), | ||
998 | FRAC_CONST(0.99992659766930), | ||
999 | FRAC_CONST(0.99993009973692), | ||
1000 | FRAC_CONST(0.99993346561824), | ||
1001 | FRAC_CONST(0.99993669950161), | ||
1002 | FRAC_CONST(0.99993980547870), | ||
1003 | FRAC_CONST(0.99994278754604), | ||
1004 | FRAC_CONST(0.99994564960642), | ||
1005 | FRAC_CONST(0.99994839547033), | ||
1006 | FRAC_CONST(0.99995102885747), | ||
1007 | FRAC_CONST(0.99995355339809), | ||
1008 | FRAC_CONST(0.99995597263451), | ||
1009 | FRAC_CONST(0.99995829002249), | ||
1010 | FRAC_CONST(0.99996050893264), | ||
1011 | FRAC_CONST(0.99996263265183), | ||
1012 | FRAC_CONST(0.99996466438460), | ||
1013 | FRAC_CONST(0.99996660725452), | ||
1014 | FRAC_CONST(0.99996846430558), | ||
1015 | FRAC_CONST(0.99997023850356), | ||
1016 | FRAC_CONST(0.99997193273736), | ||
1017 | FRAC_CONST(0.99997354982037), | ||
1018 | FRAC_CONST(0.99997509249183), | ||
1019 | FRAC_CONST(0.99997656341810), | ||
1020 | FRAC_CONST(0.99997796519400), | ||
1021 | FRAC_CONST(0.99997930034415), | ||
1022 | FRAC_CONST(0.99998057132421), | ||
1023 | FRAC_CONST(0.99998178052220), | ||
1024 | FRAC_CONST(0.99998293025975), | ||
1025 | FRAC_CONST(0.99998402279338), | ||
1026 | FRAC_CONST(0.99998506031574), | ||
1027 | FRAC_CONST(0.99998604495686), | ||
1028 | FRAC_CONST(0.99998697878536), | ||
1029 | FRAC_CONST(0.99998786380966), | ||
1030 | FRAC_CONST(0.99998870197921), | ||
1031 | FRAC_CONST(0.99998949518567), | ||
1032 | FRAC_CONST(0.99999024526408), | ||
1033 | FRAC_CONST(0.99999095399401), | ||
1034 | FRAC_CONST(0.99999162310077), | ||
1035 | FRAC_CONST(0.99999225425649), | ||
1036 | FRAC_CONST(0.99999284908128), | ||
1037 | FRAC_CONST(0.99999340914435), | ||
1038 | FRAC_CONST(0.99999393596510), | ||
1039 | FRAC_CONST(0.99999443101421), | ||
1040 | FRAC_CONST(0.99999489571473), | ||
1041 | FRAC_CONST(0.99999533144314), | ||
1042 | FRAC_CONST(0.99999573953040), | ||
1043 | FRAC_CONST(0.99999612126300), | ||
1044 | FRAC_CONST(0.99999647788395), | ||
1045 | FRAC_CONST(0.99999681059383), | ||
1046 | FRAC_CONST(0.99999712055178), | ||
1047 | FRAC_CONST(0.99999740887647), | ||
1048 | FRAC_CONST(0.99999767664709), | ||
1049 | FRAC_CONST(0.99999792490431), | ||
1050 | FRAC_CONST(0.99999815465123), | ||
1051 | FRAC_CONST(0.99999836685427), | ||
1052 | FRAC_CONST(0.99999856244415), | ||
1053 | FRAC_CONST(0.99999874231676), | ||
1054 | FRAC_CONST(0.99999890733405), | ||
1055 | FRAC_CONST(0.99999905832493), | ||
1056 | FRAC_CONST(0.99999919608613), | ||
1057 | FRAC_CONST(0.99999932138304), | ||
1058 | FRAC_CONST(0.99999943495056), | ||
1059 | FRAC_CONST(0.99999953749392), | ||
1060 | FRAC_CONST(0.99999962968950), | ||
1061 | FRAC_CONST(0.99999971218563), | ||
1062 | FRAC_CONST(0.99999978560337), | ||
1063 | FRAC_CONST(0.99999985053727), | ||
1064 | FRAC_CONST(0.99999990755616), | ||
1065 | FRAC_CONST(0.99999995720387) | ||
1066 | }; | ||
1067 | |||
1068 | #ifdef ALLOW_SMALL_FRAMELENGTH | ||
1069 | static const real_t kbd_long_960[] MEM_ALIGN_ATTR = { | ||
1070 | FRAC_CONST(0.0003021562530949), | ||
1071 | FRAC_CONST(0.0004452267024786), | ||
1072 | FRAC_CONST(0.0005674947527496), | ||
1073 | FRAC_CONST(0.0006812465553466), | ||
1074 | FRAC_CONST(0.0007910496776387), | ||
1075 | FRAC_CONST(0.0008991655033895), | ||
1076 | FRAC_CONST(0.0010068978259384), | ||
1077 | FRAC_CONST(0.0011150758515751), | ||
1078 | FRAC_CONST(0.0012242653193642), | ||
1079 | FRAC_CONST(0.0013348735658205), | ||
1080 | FRAC_CONST(0.0014472068670273), | ||
1081 | FRAC_CONST(0.0015615039850448), | ||
1082 | FRAC_CONST(0.0016779568885263), | ||
1083 | FRAC_CONST(0.0017967241232412), | ||
1084 | FRAC_CONST(0.0019179397560955), | ||
1085 | FRAC_CONST(0.0020417195415393), | ||
1086 | FRAC_CONST(0.0021681652836642), | ||
1087 | FRAC_CONST(0.0022973679910599), | ||
1088 | FRAC_CONST(0.0024294102029937), | ||
1089 | FRAC_CONST(0.0025643677339078), | ||
1090 | FRAC_CONST(0.0027023110014772), | ||
1091 | FRAC_CONST(0.0028433060512612), | ||
1092 | FRAC_CONST(0.0029874153568025), | ||
1093 | FRAC_CONST(0.0031346984511728), | ||
1094 | FRAC_CONST(0.0032852124303662), | ||
1095 | FRAC_CONST(0.0034390123581190), | ||
1096 | FRAC_CONST(0.0035961515940931), | ||
1097 | FRAC_CONST(0.0037566820618961), | ||
1098 | FRAC_CONST(0.0039206544694386), | ||
1099 | FRAC_CONST(0.0040881184912194), | ||
1100 | FRAC_CONST(0.0042591229199617), | ||
1101 | FRAC_CONST(0.0044337157933972), | ||
1102 | FRAC_CONST(0.0046119445007641), | ||
1103 | FRAC_CONST(0.0047938558726415), | ||
1104 | FRAC_CONST(0.0049794962570131), | ||
1105 | FRAC_CONST(0.0051689115838900), | ||
1106 | FRAC_CONST(0.0053621474203763), | ||
1107 | FRAC_CONST(0.0055592490177131), | ||
1108 | FRAC_CONST(0.0057602613515573), | ||
1109 | FRAC_CONST(0.0059652291565289), | ||
1110 | FRAC_CONST(0.0061741969558843), | ||
1111 | FRAC_CONST(0.0063872090870253), | ||
1112 | FRAC_CONST(0.0066043097234387), | ||
1113 | FRAC_CONST(0.0068255428935640), | ||
1114 | FRAC_CONST(0.0070509524970088), | ||
1115 | FRAC_CONST(0.0072805823184660), | ||
1116 | FRAC_CONST(0.0075144760396340), | ||
1117 | FRAC_CONST(0.0077526772493942), | ||
1118 | FRAC_CONST(0.0079952294524673), | ||
1119 | FRAC_CONST(0.0082421760767325), | ||
1120 | FRAC_CONST(0.0084935604793733), | ||
1121 | FRAC_CONST(0.0087494259519870), | ||
1122 | FRAC_CONST(0.0090098157247792), | ||
1123 | FRAC_CONST(0.0092747729699467), | ||
1124 | FRAC_CONST(0.0095443408043399), | ||
1125 | FRAC_CONST(0.0098185622914832), | ||
1126 | FRAC_CONST(0.0100974804430226), | ||
1127 | FRAC_CONST(0.0103811382196612), | ||
1128 | FRAC_CONST(0.0106695785316351), | ||
1129 | FRAC_CONST(0.0109628442387771), | ||
1130 | FRAC_CONST(0.0112609781502091), | ||
1131 | FRAC_CONST(0.0115640230236993), | ||
1132 | FRAC_CONST(0.0118720215647169), | ||
1133 | FRAC_CONST(0.0121850164252137), | ||
1134 | FRAC_CONST(0.0125030502021561), | ||
1135 | FRAC_CONST(0.0128261654358321), | ||
1136 | FRAC_CONST(0.0131544046079532), | ||
1137 | FRAC_CONST(0.0134878101395681), | ||
1138 | FRAC_CONST(0.0138264243888068), | ||
1139 | FRAC_CONST(0.0141702896484671), | ||
1140 | FRAC_CONST(0.0145194481434592), | ||
1141 | FRAC_CONST(0.0148739420281182), | ||
1142 | FRAC_CONST(0.0152338133833959), | ||
1143 | FRAC_CONST(0.0155991042139432), | ||
1144 | FRAC_CONST(0.0159698564450882), | ||
1145 | FRAC_CONST(0.0163461119197227), | ||
1146 | FRAC_CONST(0.0167279123950996), | ||
1147 | FRAC_CONST(0.0171152995395520), | ||
1148 | FRAC_CONST(0.0175083149291368), | ||
1149 | FRAC_CONST(0.0179070000442104), | ||
1150 | FRAC_CONST(0.0183113962659409), | ||
1151 | FRAC_CONST(0.0187215448727609), | ||
1152 | FRAC_CONST(0.0191374870367659), | ||
1153 | FRAC_CONST(0.0195592638200623), | ||
1154 | FRAC_CONST(0.0199869161710679), | ||
1155 | FRAC_CONST(0.0204204849207691), | ||
1156 | FRAC_CONST(0.0208600107789370), | ||
1157 | FRAC_CONST(0.0213055343303066), | ||
1158 | FRAC_CONST(0.0217570960307201), | ||
1159 | FRAC_CONST(0.0222147362032386), | ||
1160 | FRAC_CONST(0.0226784950342228), | ||
1161 | FRAC_CONST(0.0231484125693867), | ||
1162 | FRAC_CONST(0.0236245287098244), | ||
1163 | FRAC_CONST(0.0241068832080138), | ||
1164 | FRAC_CONST(0.0245955156637973), | ||
1165 | FRAC_CONST(0.0250904655203431), | ||
1166 | FRAC_CONST(0.0255917720600868), | ||
1167 | FRAC_CONST(0.0260994744006559), | ||
1168 | FRAC_CONST(0.0266136114907790), | ||
1169 | FRAC_CONST(0.0271342221061795), | ||
1170 | FRAC_CONST(0.0276613448454576), | ||
1171 | FRAC_CONST(0.0281950181259587), | ||
1172 | FRAC_CONST(0.0287352801796329), | ||
1173 | FRAC_CONST(0.0292821690488833), | ||
1174 | FRAC_CONST(0.0298357225824074), | ||
1175 | FRAC_CONST(0.0303959784310299), | ||
1176 | FRAC_CONST(0.0309629740435296), | ||
1177 | FRAC_CONST(0.0315367466624615), | ||
1178 | FRAC_CONST(0.0321173333199732), | ||
1179 | FRAC_CONST(0.0327047708336193), | ||
1180 | FRAC_CONST(0.0332990958021720), | ||
1181 | FRAC_CONST(0.0339003446014307), | ||
1182 | FRAC_CONST(0.0345085533800302), | ||
1183 | FRAC_CONST(0.0351237580552491), | ||
1184 | FRAC_CONST(0.0357459943088193), | ||
1185 | FRAC_CONST(0.0363752975827358), | ||
1186 | FRAC_CONST(0.0370117030750704), | ||
1187 | FRAC_CONST(0.0376552457357870), | ||
1188 | FRAC_CONST(0.0383059602625614), | ||
1189 | FRAC_CONST(0.0389638810966056), | ||
1190 | FRAC_CONST(0.0396290424184964), | ||
1191 | FRAC_CONST(0.0403014781440112), | ||
1192 | FRAC_CONST(0.0409812219199691), | ||
1193 | FRAC_CONST(0.0416683071200799), | ||
1194 | FRAC_CONST(0.0423627668408009), | ||
1195 | FRAC_CONST(0.0430646338972016), | ||
1196 | FRAC_CONST(0.0437739408188385), | ||
1197 | FRAC_CONST(0.0444907198456388), | ||
1198 | FRAC_CONST(0.0452150029237951), | ||
1199 | FRAC_CONST(0.0459468217016708), | ||
1200 | FRAC_CONST(0.0466862075257170), | ||
1201 | FRAC_CONST(0.0474331914364021), | ||
1202 | FRAC_CONST(0.0481878041641539), | ||
1203 | FRAC_CONST(0.0489500761253148), | ||
1204 | FRAC_CONST(0.0497200374181119), | ||
1205 | FRAC_CONST(0.0504977178186404), | ||
1206 | FRAC_CONST(0.0512831467768636), | ||
1207 | FRAC_CONST(0.0520763534126273), | ||
1208 | FRAC_CONST(0.0528773665116913), | ||
1209 | FRAC_CONST(0.0536862145217772), | ||
1210 | FRAC_CONST(0.0545029255486345), | ||
1211 | FRAC_CONST(0.0553275273521232), | ||
1212 | FRAC_CONST(0.0561600473423164), | ||
1213 | FRAC_CONST(0.0570005125756209), | ||
1214 | FRAC_CONST(0.0578489497509179), | ||
1215 | FRAC_CONST(0.0587053852057233), | ||
1216 | FRAC_CONST(0.0595698449123695), | ||
1217 | FRAC_CONST(0.0604423544742077), | ||
1218 | FRAC_CONST(0.0613229391218317), | ||
1219 | FRAC_CONST(0.0622116237093247), | ||
1220 | FRAC_CONST(0.0631084327105284), | ||
1221 | FRAC_CONST(0.0640133902153352), | ||
1222 | FRAC_CONST(0.0649265199260043), | ||
1223 | FRAC_CONST(0.0658478451535027), | ||
1224 | FRAC_CONST(0.0667773888138695), | ||
1225 | FRAC_CONST(0.0677151734246072), | ||
1226 | FRAC_CONST(0.0686612211010977), | ||
1227 | FRAC_CONST(0.0696155535530446), | ||
1228 | FRAC_CONST(0.0705781920809429), | ||
1229 | FRAC_CONST(0.0715491575725758), | ||
1230 | FRAC_CONST(0.0725284704995383), | ||
1231 | FRAC_CONST(0.0735161509137906), | ||
1232 | FRAC_CONST(0.0745122184442388), | ||
1233 | FRAC_CONST(0.0755166922933461), | ||
1234 | FRAC_CONST(0.0765295912337720), | ||
1235 | FRAC_CONST(0.0775509336050437), | ||
1236 | FRAC_CONST(0.0785807373102561), | ||
1237 | FRAC_CONST(0.0796190198128044), | ||
1238 | FRAC_CONST(0.0806657981331473), | ||
1239 | FRAC_CONST(0.0817210888456026), | ||
1240 | FRAC_CONST(0.0827849080751753), | ||
1241 | FRAC_CONST(0.0838572714944183), | ||
1242 | FRAC_CONST(0.0849381943203265), | ||
1243 | FRAC_CONST(0.0860276913112652), | ||
1244 | FRAC_CONST(0.0871257767639319), | ||
1245 | FRAC_CONST(0.0882324645103534), | ||
1246 | FRAC_CONST(0.0893477679149177), | ||
1247 | FRAC_CONST(0.0904716998714418), | ||
1248 | FRAC_CONST(0.0916042728002747), | ||
1249 | FRAC_CONST(0.0927454986454381), | ||
1250 | FRAC_CONST(0.0938953888718020), | ||
1251 | FRAC_CONST(0.0950539544622996), | ||
1252 | FRAC_CONST(0.0962212059151784), | ||
1253 | FRAC_CONST(0.0973971532412897), | ||
1254 | FRAC_CONST(0.0985818059614169), | ||
1255 | FRAC_CONST(0.0997751731036425), | ||
1256 | FRAC_CONST(0.1009772632007537), | ||
1257 | FRAC_CONST(0.1021880842876888), | ||
1258 | FRAC_CONST(0.1034076438990227), | ||
1259 | FRAC_CONST(0.1046359490664932), | ||
1260 | FRAC_CONST(0.1058730063165681), | ||
1261 | FRAC_CONST(0.1071188216680533), | ||
1262 | FRAC_CONST(0.1083734006297428), | ||
1263 | FRAC_CONST(0.1096367481981100), | ||
1264 | FRAC_CONST(0.1109088688550422), | ||
1265 | FRAC_CONST(0.1121897665656167), | ||
1266 | FRAC_CONST(0.1134794447759207), | ||
1267 | FRAC_CONST(0.1147779064109143), | ||
1268 | FRAC_CONST(0.1160851538723372), | ||
1269 | FRAC_CONST(0.1174011890366591), | ||
1270 | FRAC_CONST(0.1187260132530751), | ||
1271 | FRAC_CONST(0.1200596273415457), | ||
1272 | FRAC_CONST(0.1214020315908810), | ||
1273 | FRAC_CONST(0.1227532257568719), | ||
1274 | FRAC_CONST(0.1241132090604651), | ||
1275 | FRAC_CONST(0.1254819801859856), | ||
1276 | FRAC_CONST(0.1268595372794049), | ||
1277 | FRAC_CONST(0.1282458779466558), | ||
1278 | FRAC_CONST(0.1296409992519942), | ||
1279 | FRAC_CONST(0.1310448977164081), | ||
1280 | FRAC_CONST(0.1324575693160745), | ||
1281 | FRAC_CONST(0.1338790094808633), | ||
1282 | FRAC_CONST(0.1353092130928902), | ||
1283 | FRAC_CONST(0.1367481744851168), | ||
1284 | FRAC_CONST(0.1381958874400010), | ||
1285 | FRAC_CONST(0.1396523451881945), | ||
1286 | FRAC_CONST(0.1411175404072910), | ||
1287 | FRAC_CONST(0.1425914652206223), | ||
1288 | FRAC_CONST(0.1440741111961058), | ||
1289 | FRAC_CONST(0.1455654693451402), | ||
1290 | FRAC_CONST(0.1470655301215526), | ||
1291 | FRAC_CONST(0.1485742834205956), | ||
1292 | FRAC_CONST(0.1500917185779945), | ||
1293 | FRAC_CONST(0.1516178243690463), | ||
1294 | FRAC_CONST(0.1531525890077689), | ||
1295 | FRAC_CONST(0.1546960001461024), | ||
1296 | FRAC_CONST(0.1562480448731608), | ||
1297 | FRAC_CONST(0.1578087097145364), | ||
1298 | FRAC_CONST(0.1593779806316558), | ||
1299 | FRAC_CONST(0.1609558430211876), | ||
1300 | FRAC_CONST(0.1625422817145027), | ||
1301 | FRAC_CONST(0.1641372809771871), | ||
1302 | FRAC_CONST(0.1657408245086070), | ||
1303 | FRAC_CONST(0.1673528954415270), | ||
1304 | FRAC_CONST(0.1689734763417811), | ||
1305 | FRAC_CONST(0.1706025492079969), | ||
1306 | FRAC_CONST(0.1722400954713725), | ||
1307 | FRAC_CONST(0.1738860959955082), | ||
1308 | FRAC_CONST(0.1755405310762898), | ||
1309 | FRAC_CONST(0.1772033804418275), | ||
1310 | FRAC_CONST(0.1788746232524467), | ||
1311 | FRAC_CONST(0.1805542381007349), | ||
1312 | FRAC_CONST(0.1822422030116404), | ||
1313 | FRAC_CONST(0.1839384954426268), | ||
1314 | FRAC_CONST(0.1856430922838810), | ||
1315 | FRAC_CONST(0.1873559698585756), | ||
1316 | FRAC_CONST(0.1890771039231862), | ||
1317 | FRAC_CONST(0.1908064696678625), | ||
1318 | FRAC_CONST(0.1925440417168546), | ||
1319 | FRAC_CONST(0.1942897941289937), | ||
1320 | FRAC_CONST(0.1960437003982277), | ||
1321 | FRAC_CONST(0.1978057334542116), | ||
1322 | FRAC_CONST(0.1995758656629525), | ||
1323 | FRAC_CONST(0.2013540688275098), | ||
1324 | FRAC_CONST(0.2031403141887507), | ||
1325 | FRAC_CONST(0.2049345724261595), | ||
1326 | FRAC_CONST(0.2067368136587033), | ||
1327 | FRAC_CONST(0.2085470074457521), | ||
1328 | FRAC_CONST(0.2103651227880538), | ||
1329 | FRAC_CONST(0.2121911281287646), | ||
1330 | FRAC_CONST(0.2140249913545346), | ||
1331 | FRAC_CONST(0.2158666797966480), | ||
1332 | FRAC_CONST(0.2177161602322188), | ||
1333 | FRAC_CONST(0.2195733988854414), | ||
1334 | FRAC_CONST(0.2214383614288963), | ||
1335 | FRAC_CONST(0.2233110129849106), | ||
1336 | FRAC_CONST(0.2251913181269740), | ||
1337 | FRAC_CONST(0.2270792408812093), | ||
1338 | FRAC_CONST(0.2289747447278976), | ||
1339 | FRAC_CONST(0.2308777926030592), | ||
1340 | FRAC_CONST(0.2327883469000885), | ||
1341 | FRAC_CONST(0.2347063694714437), | ||
1342 | FRAC_CONST(0.2366318216303919), | ||
1343 | FRAC_CONST(0.2385646641528076), | ||
1344 | FRAC_CONST(0.2405048572790267), | ||
1345 | FRAC_CONST(0.2424523607157545), | ||
1346 | FRAC_CONST(0.2444071336380283), | ||
1347 | FRAC_CONST(0.2463691346912334), | ||
1348 | FRAC_CONST(0.2483383219931741), | ||
1349 | FRAC_CONST(0.2503146531361985), | ||
1350 | FRAC_CONST(0.2522980851893767), | ||
1351 | FRAC_CONST(0.2542885747007335), | ||
1352 | FRAC_CONST(0.2562860776995335), | ||
1353 | FRAC_CONST(0.2582905496986215), | ||
1354 | FRAC_CONST(0.2603019456968142), | ||
1355 | FRAC_CONST(0.2623202201813464), | ||
1356 | FRAC_CONST(0.2643453271303700), | ||
1357 | FRAC_CONST(0.2663772200155053), | ||
1358 | FRAC_CONST(0.2684158518044454), | ||
1359 | FRAC_CONST(0.2704611749636135), | ||
1360 | FRAC_CONST(0.2725131414608710), | ||
1361 | FRAC_CONST(0.2745717027682799), | ||
1362 | FRAC_CONST(0.2766368098649151), | ||
1363 | FRAC_CONST(0.2787084132397296), | ||
1364 | FRAC_CONST(0.2807864628944707), | ||
1365 | FRAC_CONST(0.2828709083466482), | ||
1366 | FRAC_CONST(0.2849616986325523), | ||
1367 | FRAC_CONST(0.2870587823103237), | ||
1368 | FRAC_CONST(0.2891621074630737), | ||
1369 | FRAC_CONST(0.2912716217020546), | ||
1370 | FRAC_CONST(0.2933872721698803), | ||
1371 | FRAC_CONST(0.2955090055437973), | ||
1372 | FRAC_CONST(0.2976367680390041), | ||
1373 | FRAC_CONST(0.2997705054120213), | ||
1374 | FRAC_CONST(0.3019101629641097), | ||
1375 | FRAC_CONST(0.3040556855447379), | ||
1376 | FRAC_CONST(0.3062070175550981), | ||
1377 | FRAC_CONST(0.3083641029516701), | ||
1378 | FRAC_CONST(0.3105268852498334), | ||
1379 | FRAC_CONST(0.3126953075275265), | ||
1380 | FRAC_CONST(0.3148693124289546), | ||
1381 | FRAC_CONST(0.3170488421683428), | ||
1382 | FRAC_CONST(0.3192338385337370), | ||
1383 | FRAC_CONST(0.3214242428908514), | ||
1384 | FRAC_CONST(0.3236199961869606), | ||
1385 | FRAC_CONST(0.3258210389548392), | ||
1386 | FRAC_CONST(0.3280273113167459), | ||
1387 | FRAC_CONST(0.3302387529884521), | ||
1388 | FRAC_CONST(0.3324553032833160), | ||
1389 | FRAC_CONST(0.3346769011164010), | ||
1390 | FRAC_CONST(0.3369034850086373), | ||
1391 | FRAC_CONST(0.3391349930910280), | ||
1392 | FRAC_CONST(0.3413713631088974), | ||
1393 | FRAC_CONST(0.3436125324261830), | ||
1394 | FRAC_CONST(0.3458584380297697), | ||
1395 | FRAC_CONST(0.3481090165338656), | ||
1396 | FRAC_CONST(0.3503642041844199), | ||
1397 | FRAC_CONST(0.3526239368635820), | ||
1398 | FRAC_CONST(0.3548881500942010), | ||
1399 | FRAC_CONST(0.3571567790443668), | ||
1400 | FRAC_CONST(0.3594297585319891), | ||
1401 | FRAC_CONST(0.3617070230294185), | ||
1402 | FRAC_CONST(0.3639885066681048), | ||
1403 | FRAC_CONST(0.3662741432432950), | ||
1404 | FRAC_CONST(0.3685638662187693), | ||
1405 | FRAC_CONST(0.3708576087316147), | ||
1406 | FRAC_CONST(0.3731553035970366), | ||
1407 | FRAC_CONST(0.3754568833132069), | ||
1408 | FRAC_CONST(0.3777622800661488), | ||
1409 | FRAC_CONST(0.3800714257346570), | ||
1410 | FRAC_CONST(0.3823842518952546), | ||
1411 | FRAC_CONST(0.3847006898271841), | ||
1412 | FRAC_CONST(0.3870206705174334), | ||
1413 | FRAC_CONST(0.3893441246657958), | ||
1414 | FRAC_CONST(0.3916709826899639), | ||
1415 | FRAC_CONST(0.3940011747306560), | ||
1416 | FRAC_CONST(0.3963346306567764), | ||
1417 | FRAC_CONST(0.3986712800706062), | ||
1418 | FRAC_CONST(0.4010110523130271), | ||
1419 | FRAC_CONST(0.4033538764687756), | ||
1420 | FRAC_CONST(0.4056996813717284), | ||
1421 | FRAC_CONST(0.4080483956102172), | ||
1422 | FRAC_CONST(0.4103999475323736), | ||
1423 | FRAC_CONST(0.4127542652515031), | ||
1424 | FRAC_CONST(0.4151112766514873), | ||
1425 | FRAC_CONST(0.4174709093922143), | ||
1426 | FRAC_CONST(0.4198330909150365), | ||
1427 | FRAC_CONST(0.4221977484482556), | ||
1428 | FRAC_CONST(0.4245648090126334), | ||
1429 | FRAC_CONST(0.4269341994269293), | ||
1430 | FRAC_CONST(0.4293058463134616), | ||
1431 | FRAC_CONST(0.4316796761036958), | ||
1432 | FRAC_CONST(0.4340556150438547), | ||
1433 | FRAC_CONST(0.4364335892005536), | ||
1434 | FRAC_CONST(0.4388135244664580), | ||
1435 | FRAC_CONST(0.4411953465659639), | ||
1436 | FRAC_CONST(0.4435789810609000), | ||
1437 | FRAC_CONST(0.4459643533562509), | ||
1438 | FRAC_CONST(0.4483513887059016), | ||
1439 | FRAC_CONST(0.4507400122184019), | ||
1440 | FRAC_CONST(0.4531301488627497), | ||
1441 | FRAC_CONST(0.4555217234741947), | ||
1442 | FRAC_CONST(0.4579146607600593), | ||
1443 | FRAC_CONST(0.4603088853055777), | ||
1444 | FRAC_CONST(0.4627043215797521), | ||
1445 | FRAC_CONST(0.4651008939412254), | ||
1446 | FRAC_CONST(0.4674985266441709), | ||
1447 | FRAC_CONST(0.4698971438441951), | ||
1448 | FRAC_CONST(0.4722966696042580), | ||
1449 | FRAC_CONST(0.4746970279006055), | ||
1450 | FRAC_CONST(0.4770981426287164), | ||
1451 | FRAC_CONST(0.4794999376092619), | ||
1452 | FRAC_CONST(0.4819023365940778), | ||
1453 | FRAC_CONST(0.4843052632721476), | ||
1454 | FRAC_CONST(0.4867086412755978), | ||
1455 | FRAC_CONST(0.4891123941857028), | ||
1456 | FRAC_CONST(0.4915164455388997), | ||
1457 | FRAC_CONST(0.4939207188328126), | ||
1458 | FRAC_CONST(0.4963251375322855), | ||
1459 | FRAC_CONST(0.4987296250754225), | ||
1460 | FRAC_CONST(0.5011341048796359), | ||
1461 | FRAC_CONST(0.5035385003477012), | ||
1462 | FRAC_CONST(0.5059427348738168), | ||
1463 | FRAC_CONST(0.5083467318496706), | ||
1464 | FRAC_CONST(0.5107504146705106), | ||
1465 | FRAC_CONST(0.5131537067412193), | ||
1466 | FRAC_CONST(0.5155565314823923), | ||
1467 | FRAC_CONST(0.5179588123364193), | ||
1468 | FRAC_CONST(0.5203604727735667), | ||
1469 | FRAC_CONST(0.5227614362980630), | ||
1470 | FRAC_CONST(0.5251616264541841), | ||
1471 | FRAC_CONST(0.5275609668323384), | ||
1472 | FRAC_CONST(0.5299593810751532), | ||
1473 | FRAC_CONST(0.5323567928835578), | ||
1474 | FRAC_CONST(0.5347531260228663), | ||
1475 | FRAC_CONST(0.5371483043288580), | ||
1476 | FRAC_CONST(0.5395422517138538), | ||
1477 | FRAC_CONST(0.5419348921727899), | ||
1478 | FRAC_CONST(0.5443261497892862), | ||
1479 | FRAC_CONST(0.5467159487417104), | ||
1480 | FRAC_CONST(0.5491042133092364), | ||
1481 | FRAC_CONST(0.5514908678778958), | ||
1482 | FRAC_CONST(0.5538758369466227), | ||
1483 | FRAC_CONST(0.5562590451332913), | ||
1484 | FRAC_CONST(0.5586404171807443), | ||
1485 | FRAC_CONST(0.5610198779628133), | ||
1486 | FRAC_CONST(0.5633973524903286), | ||
1487 | FRAC_CONST(0.5657727659171199), | ||
1488 | FRAC_CONST(0.5681460435460047), | ||
1489 | FRAC_CONST(0.5705171108347663), | ||
1490 | FRAC_CONST(0.5728858934021188), | ||
1491 | FRAC_CONST(0.5752523170336598), | ||
1492 | FRAC_CONST(0.5776163076878088), | ||
1493 | FRAC_CONST(0.5799777915017323), | ||
1494 | FRAC_CONST(0.5823366947972535), | ||
1495 | FRAC_CONST(0.5846929440867458), | ||
1496 | FRAC_CONST(0.5870464660790119), | ||
1497 | FRAC_CONST(0.5893971876851449), | ||
1498 | FRAC_CONST(0.5917450360243719), | ||
1499 | FRAC_CONST(0.5940899384298793), | ||
1500 | FRAC_CONST(0.5964318224546208), | ||
1501 | FRAC_CONST(0.5987706158771039), | ||
1502 | FRAC_CONST(0.6011062467071583), | ||
1503 | FRAC_CONST(0.6034386431916822), | ||
1504 | FRAC_CONST(0.6057677338203681), | ||
1505 | FRAC_CONST(0.6080934473314057), | ||
1506 | FRAC_CONST(0.6104157127171639), | ||
1507 | FRAC_CONST(0.6127344592298474), | ||
1508 | FRAC_CONST(0.6150496163871310), | ||
1509 | FRAC_CONST(0.6173611139777690), | ||
1510 | FRAC_CONST(0.6196688820671789), | ||
1511 | FRAC_CONST(0.6219728510029997), | ||
1512 | FRAC_CONST(0.6242729514206247), | ||
1513 | FRAC_CONST(0.6265691142487051), | ||
1514 | FRAC_CONST(0.6288612707146283), | ||
1515 | FRAC_CONST(0.6311493523499663), | ||
1516 | FRAC_CONST(0.6334332909958958), | ||
1517 | FRAC_CONST(0.6357130188085891), | ||
1518 | FRAC_CONST(0.6379884682645743), | ||
1519 | FRAC_CONST(0.6402595721660647), | ||
1520 | FRAC_CONST(0.6425262636462578), | ||
1521 | FRAC_CONST(0.6447884761746012), | ||
1522 | FRAC_CONST(0.6470461435620266), | ||
1523 | FRAC_CONST(0.6492991999661505), | ||
1524 | FRAC_CONST(0.6515475798964411), | ||
1525 | FRAC_CONST(0.6537912182193508), | ||
1526 | FRAC_CONST(0.6560300501634142), | ||
1527 | FRAC_CONST(0.6582640113243098), | ||
1528 | FRAC_CONST(0.6604930376698862), | ||
1529 | FRAC_CONST(0.6627170655451516), | ||
1530 | FRAC_CONST(0.6649360316772256), | ||
1531 | FRAC_CONST(0.6671498731802533), | ||
1532 | FRAC_CONST(0.6693585275602818), | ||
1533 | FRAC_CONST(0.6715619327200959), | ||
1534 | FRAC_CONST(0.6737600269640164), | ||
1535 | FRAC_CONST(0.6759527490026566), | ||
1536 | FRAC_CONST(0.6781400379576392), | ||
1537 | FRAC_CONST(0.6803218333662715), | ||
1538 | FRAC_CONST(0.6824980751861787), | ||
1539 | FRAC_CONST(0.6846687037998949), | ||
1540 | FRAC_CONST(0.6868336600194123), | ||
1541 | FRAC_CONST(0.6889928850906855), | ||
1542 | FRAC_CONST(0.6911463206980928), | ||
1543 | FRAC_CONST(0.6932939089688525), | ||
1544 | FRAC_CONST(0.6954355924773949), | ||
1545 | FRAC_CONST(0.6975713142496884), | ||
1546 | FRAC_CONST(0.6997010177675195), | ||
1547 | FRAC_CONST(0.7018246469727265), | ||
1548 | FRAC_CONST(0.7039421462713862), | ||
1549 | FRAC_CONST(0.7060534605379528), | ||
1550 | FRAC_CONST(0.7081585351193496), | ||
1551 | FRAC_CONST(0.7102573158390105), | ||
1552 | FRAC_CONST(0.7123497490008750), | ||
1553 | FRAC_CONST(0.7144357813933307), | ||
1554 | FRAC_CONST(0.7165153602931092), | ||
1555 | FRAC_CONST(0.7185884334691287), | ||
1556 | FRAC_CONST(0.7206549491862871), | ||
1557 | FRAC_CONST(0.7227148562092042), | ||
1558 | FRAC_CONST(0.7247681038059106), | ||
1559 | FRAC_CONST(0.7268146417514855), | ||
1560 | FRAC_CONST(0.7288544203316418), | ||
1561 | FRAC_CONST(0.7308873903462577), | ||
1562 | FRAC_CONST(0.7329135031128549), | ||
1563 | FRAC_CONST(0.7349327104700221), | ||
1564 | FRAC_CONST(0.7369449647807855), | ||
1565 | FRAC_CONST(0.7389502189359237), | ||
1566 | FRAC_CONST(0.7409484263572271), | ||
1567 | FRAC_CONST(0.7429395410007016), | ||
1568 | FRAC_CONST(0.7449235173597176), | ||
1569 | FRAC_CONST(0.7469003104681008), | ||
1570 | FRAC_CONST(0.7488698759031670), | ||
1571 | FRAC_CONST(0.7508321697887005), | ||
1572 | FRAC_CONST(0.7527871487978728), | ||
1573 | FRAC_CONST(0.7547347701561059), | ||
1574 | FRAC_CONST(0.7566749916438754), | ||
1575 | FRAC_CONST(0.7586077715994560), | ||
1576 | FRAC_CONST(0.7605330689216074), | ||
1577 | FRAC_CONST(0.7624508430722016), | ||
1578 | FRAC_CONST(0.7643610540787891), | ||
1579 | FRAC_CONST(0.7662636625371070), | ||
1580 | FRAC_CONST(0.7681586296135255), | ||
1581 | FRAC_CONST(0.7700459170474343), | ||
1582 | FRAC_CONST(0.7719254871535672), | ||
1583 | FRAC_CONST(0.7737973028242671), | ||
1584 | FRAC_CONST(0.7756613275316875), | ||
1585 | FRAC_CONST(0.7775175253299340), | ||
1586 | FRAC_CONST(0.7793658608571425), | ||
1587 | FRAC_CONST(0.7812062993374951), | ||
1588 | FRAC_CONST(0.7830388065831744), | ||
1589 | FRAC_CONST(0.7848633489962533), | ||
1590 | FRAC_CONST(0.7866798935705233), | ||
1591 | FRAC_CONST(0.7884884078932579), | ||
1592 | FRAC_CONST(0.7902888601469138), | ||
1593 | FRAC_CONST(0.7920812191107668), | ||
1594 | FRAC_CONST(0.7938654541624850), | ||
1595 | FRAC_CONST(0.7956415352796368), | ||
1596 | FRAC_CONST(0.7974094330411343), | ||
1597 | FRAC_CONST(0.7991691186286133), | ||
1598 | FRAC_CONST(0.8009205638277465), | ||
1599 | FRAC_CONST(0.8026637410294932), | ||
1600 | FRAC_CONST(0.8043986232312831), | ||
1601 | FRAC_CONST(0.8061251840381346), | ||
1602 | FRAC_CONST(0.8078433976637077), | ||
1603 | FRAC_CONST(0.8095532389312917), | ||
1604 | FRAC_CONST(0.8112546832747255), | ||
1605 | FRAC_CONST(0.8129477067392539), | ||
1606 | FRAC_CONST(0.8146322859823164), | ||
1607 | FRAC_CONST(0.8163083982742698), | ||
1608 | FRAC_CONST(0.8179760214990457), | ||
1609 | FRAC_CONST(0.8196351341547393), | ||
1610 | FRAC_CONST(0.8212857153541345), | ||
1611 | FRAC_CONST(0.8229277448251595), | ||
1612 | FRAC_CONST(0.8245612029112778), | ||
1613 | FRAC_CONST(0.8261860705718113), | ||
1614 | FRAC_CONST(0.8278023293821971), | ||
1615 | FRAC_CONST(0.8294099615341773), | ||
1616 | FRAC_CONST(0.8310089498359212), | ||
1617 | FRAC_CONST(0.8325992777120815), | ||
1618 | FRAC_CONST(0.8341809292037831), | ||
1619 | FRAC_CONST(0.8357538889685445), | ||
1620 | FRAC_CONST(0.8373181422801330), | ||
1621 | FRAC_CONST(0.8388736750283521), | ||
1622 | FRAC_CONST(0.8404204737187619), | ||
1623 | FRAC_CONST(0.8419585254723335), | ||
1624 | FRAC_CONST(0.8434878180250348), | ||
1625 | FRAC_CONST(0.8450083397273509), | ||
1626 | FRAC_CONST(0.8465200795437368), | ||
1627 | FRAC_CONST(0.8480230270520029), | ||
1628 | FRAC_CONST(0.8495171724426350), | ||
1629 | FRAC_CONST(0.8510025065180464), | ||
1630 | FRAC_CONST(0.8524790206917633), | ||
1631 | FRAC_CONST(0.8539467069875448), | ||
1632 | FRAC_CONST(0.8554055580384357), | ||
1633 | FRAC_CONST(0.8568555670857525), | ||
1634 | FRAC_CONST(0.8582967279780043), | ||
1635 | FRAC_CONST(0.8597290351697464), | ||
1636 | FRAC_CONST(0.8611524837203691), | ||
1637 | FRAC_CONST(0.8625670692928198), | ||
1638 | FRAC_CONST(0.8639727881522599), | ||
1639 | FRAC_CONST(0.8653696371646555), | ||
1640 | FRAC_CONST(0.8667576137953045), | ||
1641 | FRAC_CONST(0.8681367161072958), | ||
1642 | FRAC_CONST(0.8695069427599065), | ||
1643 | FRAC_CONST(0.8708682930069319), | ||
1644 | FRAC_CONST(0.8722207666949527), | ||
1645 | FRAC_CONST(0.8735643642615368), | ||
1646 | FRAC_CONST(0.8748990867333771), | ||
1647 | FRAC_CONST(0.8762249357243662), | ||
1648 | FRAC_CONST(0.8775419134336067), | ||
1649 | FRAC_CONST(0.8788500226433579), | ||
1650 | FRAC_CONST(0.8801492667169208), | ||
1651 | FRAC_CONST(0.8814396495964587), | ||
1652 | FRAC_CONST(0.8827211758007560), | ||
1653 | FRAC_CONST(0.8839938504229149), | ||
1654 | FRAC_CONST(0.8852576791279895), | ||
1655 | FRAC_CONST(0.8865126681505587), | ||
1656 | FRAC_CONST(0.8877588242922386), | ||
1657 | FRAC_CONST(0.8889961549191320), | ||
1658 | FRAC_CONST(0.8902246679592184), | ||
1659 | FRAC_CONST(0.8914443718996848), | ||
1660 | FRAC_CONST(0.8926552757841945), | ||
1661 | FRAC_CONST(0.8938573892100969), | ||
1662 | FRAC_CONST(0.8950507223255798), | ||
1663 | FRAC_CONST(0.8962352858267605), | ||
1664 | FRAC_CONST(0.8974110909547198), | ||
1665 | FRAC_CONST(0.8985781494924783), | ||
1666 | FRAC_CONST(0.8997364737619142), | ||
1667 | FRAC_CONST(0.9008860766206249), | ||
1668 | FRAC_CONST(0.9020269714587307), | ||
1669 | FRAC_CONST(0.9031591721956235), | ||
1670 | FRAC_CONST(0.9042826932766591), | ||
1671 | FRAC_CONST(0.9053975496697941), | ||
1672 | FRAC_CONST(0.9065037568621681), | ||
1673 | FRAC_CONST(0.9076013308566311), | ||
1674 | FRAC_CONST(0.9086902881682180), | ||
1675 | FRAC_CONST(0.9097706458205682), | ||
1676 | FRAC_CONST(0.9108424213422940), | ||
1677 | FRAC_CONST(0.9119056327632955), | ||
1678 | FRAC_CONST(0.9129602986110235), | ||
1679 | FRAC_CONST(0.9140064379066919), | ||
1680 | FRAC_CONST(0.9150440701614393), | ||
1681 | FRAC_CONST(0.9160732153724396), | ||
1682 | FRAC_CONST(0.9170938940189634), | ||
1683 | FRAC_CONST(0.9181061270583908), | ||
1684 | FRAC_CONST(0.9191099359221748), | ||
1685 | FRAC_CONST(0.9201053425117579), | ||
1686 | FRAC_CONST(0.9210923691944400), | ||
1687 | FRAC_CONST(0.9220710387992010), | ||
1688 | FRAC_CONST(0.9230413746124764), | ||
1689 | FRAC_CONST(0.9240034003738882), | ||
1690 | FRAC_CONST(0.9249571402719298), | ||
1691 | FRAC_CONST(0.9259026189396085), | ||
1692 | FRAC_CONST(0.9268398614500427), | ||
1693 | FRAC_CONST(0.9277688933120170), | ||
1694 | FRAC_CONST(0.9286897404654957), | ||
1695 | FRAC_CONST(0.9296024292770939), | ||
1696 | FRAC_CONST(0.9305069865355076), | ||
1697 | FRAC_CONST(0.9314034394469048), | ||
1698 | FRAC_CONST(0.9322918156302762), | ||
1699 | FRAC_CONST(0.9331721431127471), | ||
1700 | FRAC_CONST(0.9340444503248519), | ||
1701 | FRAC_CONST(0.9349087660957711), | ||
1702 | FRAC_CONST(0.9357651196485313), | ||
1703 | FRAC_CONST(0.9366135405951697), | ||
1704 | FRAC_CONST(0.9374540589318637), | ||
1705 | FRAC_CONST(0.9382867050340261), | ||
1706 | FRAC_CONST(0.9391115096513655), | ||
1707 | FRAC_CONST(0.9399285039029165), | ||
1708 | FRAC_CONST(0.9407377192720349), | ||
1709 | FRAC_CONST(0.9415391876013639), | ||
1710 | FRAC_CONST(0.9423329410877687), | ||
1711 | FRAC_CONST(0.9431190122772415), | ||
1712 | FRAC_CONST(0.9438974340597782), | ||
1713 | FRAC_CONST(0.9446682396642262), | ||
1714 | FRAC_CONST(0.9454314626531054), | ||
1715 | FRAC_CONST(0.9461871369174033), | ||
1716 | FRAC_CONST(0.9469352966713429), | ||
1717 | FRAC_CONST(0.9476759764471278), | ||
1718 | FRAC_CONST(0.9484092110896616), | ||
1719 | FRAC_CONST(0.9491350357512457), | ||
1720 | FRAC_CONST(0.9498534858862532), | ||
1721 | FRAC_CONST(0.9505645972457831), | ||
1722 | FRAC_CONST(0.9512684058722927), | ||
1723 | FRAC_CONST(0.9519649480942105), | ||
1724 | FRAC_CONST(0.9526542605205314), | ||
1725 | FRAC_CONST(0.9533363800353921), | ||
1726 | FRAC_CONST(0.9540113437926313), | ||
1727 | FRAC_CONST(0.9546791892103320), | ||
1728 | FRAC_CONST(0.9553399539653500), | ||
1729 | FRAC_CONST(0.9559936759878265), | ||
1730 | FRAC_CONST(0.9566403934556893), | ||
1731 | FRAC_CONST(0.9572801447891388), | ||
1732 | FRAC_CONST(0.9579129686451244), | ||
1733 | FRAC_CONST(0.9585389039118085), | ||
1734 | FRAC_CONST(0.9591579897030224), | ||
1735 | FRAC_CONST(0.9597702653527108), | ||
1736 | FRAC_CONST(0.9603757704093711), | ||
1737 | FRAC_CONST(0.9609745446304828), | ||
1738 | FRAC_CONST(0.9615666279769324), | ||
1739 | FRAC_CONST(0.9621520606074324), | ||
1740 | FRAC_CONST(0.9627308828729358), | ||
1741 | FRAC_CONST(0.9633031353110477), | ||
1742 | FRAC_CONST(0.9638688586404335), | ||
1743 | FRAC_CONST(0.9644280937552258), | ||
1744 | FRAC_CONST(0.9649808817194311), | ||
1745 | FRAC_CONST(0.9655272637613366), | ||
1746 | FRAC_CONST(0.9660672812679171), | ||
1747 | FRAC_CONST(0.9666009757792454), | ||
1748 | FRAC_CONST(0.9671283889829055), | ||
1749 | FRAC_CONST(0.9676495627084089), | ||
1750 | FRAC_CONST(0.9681645389216160), | ||
1751 | FRAC_CONST(0.9686733597191652), | ||
1752 | FRAC_CONST(0.9691760673229058), | ||
1753 | FRAC_CONST(0.9696727040743406), | ||
1754 | FRAC_CONST(0.9701633124290767), | ||
1755 | FRAC_CONST(0.9706479349512860), | ||
1756 | FRAC_CONST(0.9711266143081750), | ||
1757 | FRAC_CONST(0.9715993932644684), | ||
1758 | FRAC_CONST(0.9720663146769026), | ||
1759 | FRAC_CONST(0.9725274214887337), | ||
1760 | FRAC_CONST(0.9729827567242596), | ||
1761 | FRAC_CONST(0.9734323634833574), | ||
1762 | FRAC_CONST(0.9738762849360358), | ||
1763 | FRAC_CONST(0.9743145643170059), | ||
1764 | FRAC_CONST(0.9747472449202687), | ||
1765 | FRAC_CONST(0.9751743700937215), | ||
1766 | FRAC_CONST(0.9755959832337850), | ||
1767 | FRAC_CONST(0.9760121277800496), | ||
1768 | FRAC_CONST(0.9764228472099433), | ||
1769 | FRAC_CONST(0.9768281850334235), | ||
1770 | FRAC_CONST(0.9772281847876897), | ||
1771 | FRAC_CONST(0.9776228900319223), | ||
1772 | FRAC_CONST(0.9780123443420448), | ||
1773 | FRAC_CONST(0.9783965913055132), | ||
1774 | FRAC_CONST(0.9787756745161313), | ||
1775 | FRAC_CONST(0.9791496375688939), | ||
1776 | FRAC_CONST(0.9795185240548578), | ||
1777 | FRAC_CONST(0.9798823775560431), | ||
1778 | FRAC_CONST(0.9802412416403639), | ||
1779 | FRAC_CONST(0.9805951598565897), | ||
1780 | FRAC_CONST(0.9809441757293399), | ||
1781 | FRAC_CONST(0.9812883327541090), | ||
1782 | FRAC_CONST(0.9816276743923267), | ||
1783 | FRAC_CONST(0.9819622440664515), | ||
1784 | FRAC_CONST(0.9822920851550995), | ||
1785 | FRAC_CONST(0.9826172409882086), | ||
1786 | FRAC_CONST(0.9829377548422400), | ||
1787 | FRAC_CONST(0.9832536699354163), | ||
1788 | FRAC_CONST(0.9835650294229984), | ||
1789 | FRAC_CONST(0.9838718763926001), | ||
1790 | FRAC_CONST(0.9841742538595437), | ||
1791 | FRAC_CONST(0.9844722047622547), | ||
1792 | FRAC_CONST(0.9847657719576983), | ||
1793 | FRAC_CONST(0.9850549982168574), | ||
1794 | FRAC_CONST(0.9853399262202529), | ||
1795 | FRAC_CONST(0.9856205985535073), | ||
1796 | FRAC_CONST(0.9858970577029519), | ||
1797 | FRAC_CONST(0.9861693460512790), | ||
1798 | FRAC_CONST(0.9864375058732389), | ||
1799 | FRAC_CONST(0.9867015793313820), | ||
1800 | FRAC_CONST(0.9869616084718489), | ||
1801 | FRAC_CONST(0.9872176352202061), | ||
1802 | FRAC_CONST(0.9874697013773301), | ||
1803 | FRAC_CONST(0.9877178486153397), | ||
1804 | FRAC_CONST(0.9879621184735767), | ||
1805 | FRAC_CONST(0.9882025523546365), | ||
1806 | FRAC_CONST(0.9884391915204485), | ||
1807 | FRAC_CONST(0.9886720770884069), | ||
1808 | FRAC_CONST(0.9889012500275530), | ||
1809 | FRAC_CONST(0.9891267511548089), | ||
1810 | FRAC_CONST(0.9893486211312621), | ||
1811 | FRAC_CONST(0.9895669004585049), | ||
1812 | FRAC_CONST(0.9897816294750255), | ||
1813 | FRAC_CONST(0.9899928483526520), | ||
1814 | FRAC_CONST(0.9902005970930525), | ||
1815 | FRAC_CONST(0.9904049155242876), | ||
1816 | FRAC_CONST(0.9906058432974180), | ||
1817 | FRAC_CONST(0.9908034198831690), | ||
1818 | FRAC_CONST(0.9909976845686489), | ||
1819 | FRAC_CONST(0.9911886764541239), | ||
1820 | FRAC_CONST(0.9913764344498495), | ||
1821 | FRAC_CONST(0.9915609972729590), | ||
1822 | FRAC_CONST(0.9917424034444086), | ||
1823 | FRAC_CONST(0.9919206912859797), | ||
1824 | FRAC_CONST(0.9920958989173397), | ||
1825 | FRAC_CONST(0.9922680642531603), | ||
1826 | FRAC_CONST(0.9924372250002933), | ||
1827 | FRAC_CONST(0.9926034186550070), | ||
1828 | FRAC_CONST(0.9927666825002789), | ||
1829 | FRAC_CONST(0.9929270536031491), | ||
1830 | FRAC_CONST(0.9930845688121325), | ||
1831 | FRAC_CONST(0.9932392647546895), | ||
1832 | FRAC_CONST(0.9933911778347579), | ||
1833 | FRAC_CONST(0.9935403442303433), | ||
1834 | FRAC_CONST(0.9936867998911693), | ||
1835 | FRAC_CONST(0.9938305805363887), | ||
1836 | FRAC_CONST(0.9939717216523539), | ||
1837 | FRAC_CONST(0.9941102584904481), | ||
1838 | FRAC_CONST(0.9942462260649764), | ||
1839 | FRAC_CONST(0.9943796591511174), | ||
1840 | FRAC_CONST(0.9945105922829353), | ||
1841 | FRAC_CONST(0.9946390597514524), | ||
1842 | FRAC_CONST(0.9947650956027824), | ||
1843 | FRAC_CONST(0.9948887336363228), | ||
1844 | FRAC_CONST(0.9950100074030103), | ||
1845 | FRAC_CONST(0.9951289502036336), | ||
1846 | FRAC_CONST(0.9952455950872091), | ||
1847 | FRAC_CONST(0.9953599748494155), | ||
1848 | FRAC_CONST(0.9954721220310890), | ||
1849 | FRAC_CONST(0.9955820689167787), | ||
1850 | FRAC_CONST(0.9956898475333619), | ||
1851 | FRAC_CONST(0.9957954896487196), | ||
1852 | FRAC_CONST(0.9958990267704713), | ||
1853 | FRAC_CONST(0.9960004901447701), | ||
1854 | FRAC_CONST(0.9960999107551559), | ||
1855 | FRAC_CONST(0.9961973193214694), | ||
1856 | FRAC_CONST(0.9962927462988245), | ||
1857 | FRAC_CONST(0.9963862218766388), | ||
1858 | FRAC_CONST(0.9964777759777242), | ||
1859 | FRAC_CONST(0.9965674382574342), | ||
1860 | FRAC_CONST(0.9966552381028704), | ||
1861 | FRAC_CONST(0.9967412046321465), | ||
1862 | FRAC_CONST(0.9968253666937095), | ||
1863 | FRAC_CONST(0.9969077528657186), | ||
1864 | FRAC_CONST(0.9969883914554805), | ||
1865 | FRAC_CONST(0.9970673104989413), | ||
1866 | FRAC_CONST(0.9971445377602348), | ||
1867 | FRAC_CONST(0.9972201007312871), | ||
1868 | FRAC_CONST(0.9972940266314749), | ||
1869 | FRAC_CONST(0.9973663424073412), | ||
1870 | FRAC_CONST(0.9974370747323638), | ||
1871 | FRAC_CONST(0.9975062500067785), | ||
1872 | FRAC_CONST(0.9975738943574574), | ||
1873 | FRAC_CONST(0.9976400336378379), | ||
1874 | FRAC_CONST(0.9977046934279079), | ||
1875 | FRAC_CONST(0.9977678990342401), | ||
1876 | FRAC_CONST(0.9978296754900812), | ||
1877 | FRAC_CONST(0.9978900475554902), | ||
1878 | FRAC_CONST(0.9979490397175296), | ||
1879 | FRAC_CONST(0.9980066761905056), | ||
1880 | FRAC_CONST(0.9980629809162593), | ||
1881 | FRAC_CONST(0.9981179775645063), | ||
1882 | FRAC_CONST(0.9981716895332257), | ||
1883 | FRAC_CONST(0.9982241399490979), | ||
1884 | FRAC_CONST(0.9982753516679893), | ||
1885 | FRAC_CONST(0.9983253472754841), | ||
1886 | FRAC_CONST(0.9983741490874634), | ||
1887 | FRAC_CONST(0.9984217791507299), | ||
1888 | FRAC_CONST(0.9984682592436778), | ||
1889 | FRAC_CONST(0.9985136108770075), | ||
1890 | FRAC_CONST(0.9985578552944850), | ||
1891 | FRAC_CONST(0.9986010134737439), | ||
1892 | FRAC_CONST(0.9986431061271304), | ||
1893 | FRAC_CONST(0.9986841537025921), | ||
1894 | FRAC_CONST(0.9987241763846056), | ||
1895 | FRAC_CONST(0.9987631940951476), | ||
1896 | FRAC_CONST(0.9988012264947044), | ||
1897 | FRAC_CONST(0.9988382929833222), | ||
1898 | FRAC_CONST(0.9988744127016956), | ||
1899 | FRAC_CONST(0.9989096045322947), | ||
1900 | FRAC_CONST(0.9989438871005292), | ||
1901 | FRAC_CONST(0.9989772787759494), | ||
1902 | FRAC_CONST(0.9990097976734847), | ||
1903 | FRAC_CONST(0.9990414616547146), | ||
1904 | FRAC_CONST(0.9990722883291779), | ||
1905 | FRAC_CONST(0.9991022950557125), | ||
1906 | FRAC_CONST(0.9991314989438310), | ||
1907 | FRAC_CONST(0.9991599168551279), | ||
1908 | FRAC_CONST(0.9991875654047181), | ||
1909 | FRAC_CONST(0.9992144609627068), | ||
1910 | FRAC_CONST(0.9992406196556911), | ||
1911 | FRAC_CONST(0.9992660573682882), | ||
1912 | FRAC_CONST(0.9992907897446957), | ||
1913 | FRAC_CONST(0.9993148321902777), | ||
1914 | FRAC_CONST(0.9993381998731797), | ||
1915 | FRAC_CONST(0.9993609077259696), | ||
1916 | FRAC_CONST(0.9993829704473038), | ||
1917 | FRAC_CONST(0.9994044025036201), | ||
1918 | FRAC_CONST(0.9994252181308537), | ||
1919 | FRAC_CONST(0.9994454313361775), | ||
1920 | FRAC_CONST(0.9994650558997651), | ||
1921 | FRAC_CONST(0.9994841053765757), | ||
1922 | FRAC_CONST(0.9995025930981609), | ||
1923 | FRAC_CONST(0.9995205321744921), | ||
1924 | FRAC_CONST(0.9995379354958073), | ||
1925 | FRAC_CONST(0.9995548157344778), | ||
1926 | FRAC_CONST(0.9995711853468930), | ||
1927 | FRAC_CONST(0.9995870565753632), | ||
1928 | FRAC_CONST(0.9996024414500382), | ||
1929 | FRAC_CONST(0.9996173517908444), | ||
1930 | FRAC_CONST(0.9996317992094352), | ||
1931 | FRAC_CONST(0.9996457951111574), | ||
1932 | FRAC_CONST(0.9996593506970310), | ||
1933 | FRAC_CONST(0.9996724769657434), | ||
1934 | FRAC_CONST(0.9996851847156547), | ||
1935 | FRAC_CONST(0.9996974845468164), | ||
1936 | FRAC_CONST(0.9997093868630000), | ||
1937 | FRAC_CONST(0.9997209018737374), | ||
1938 | FRAC_CONST(0.9997320395963699), | ||
1939 | FRAC_CONST(0.9997428098581069), | ||
1940 | FRAC_CONST(0.9997532222980933), | ||
1941 | FRAC_CONST(0.9997632863694836), | ||
1942 | FRAC_CONST(0.9997730113415246), | ||
1943 | FRAC_CONST(0.9997824063016426), | ||
1944 | FRAC_CONST(0.9997914801575380), | ||
1945 | FRAC_CONST(0.9998002416392840), | ||
1946 | FRAC_CONST(0.9998086993014300), | ||
1947 | FRAC_CONST(0.9998168615251084), | ||
1948 | FRAC_CONST(0.9998247365201450), | ||
1949 | FRAC_CONST(0.9998323323271717), | ||
1950 | FRAC_CONST(0.9998396568197407), | ||
1951 | FRAC_CONST(0.9998467177064404), | ||
1952 | FRAC_CONST(0.9998535225330116), | ||
1953 | FRAC_CONST(0.9998600786844637), | ||
1954 | FRAC_CONST(0.9998663933871905), | ||
1955 | FRAC_CONST(0.9998724737110845), | ||
1956 | FRAC_CONST(0.9998783265716498), | ||
1957 | FRAC_CONST(0.9998839587321121), | ||
1958 | FRAC_CONST(0.9998893768055266), | ||
1959 | FRAC_CONST(0.9998945872568815), | ||
1960 | FRAC_CONST(0.9998995964051983), | ||
1961 | FRAC_CONST(0.9999044104256269), | ||
1962 | FRAC_CONST(0.9999090353515359), | ||
1963 | FRAC_CONST(0.9999134770765971), | ||
1964 | FRAC_CONST(0.9999177413568642), | ||
1965 | FRAC_CONST(0.9999218338128448), | ||
1966 | FRAC_CONST(0.9999257599315647), | ||
1967 | FRAC_CONST(0.9999295250686255), | ||
1968 | FRAC_CONST(0.9999331344502529), | ||
1969 | FRAC_CONST(0.9999365931753376), | ||
1970 | FRAC_CONST(0.9999399062174669), | ||
1971 | FRAC_CONST(0.9999430784269460), | ||
1972 | FRAC_CONST(0.9999461145328103), | ||
1973 | FRAC_CONST(0.9999490191448277), | ||
1974 | FRAC_CONST(0.9999517967554878), | ||
1975 | FRAC_CONST(0.9999544517419835), | ||
1976 | FRAC_CONST(0.9999569883681778), | ||
1977 | FRAC_CONST(0.9999594107865607), | ||
1978 | FRAC_CONST(0.9999617230401926), | ||
1979 | FRAC_CONST(0.9999639290646355), | ||
1980 | FRAC_CONST(0.9999660326898712), | ||
1981 | FRAC_CONST(0.9999680376422052), | ||
1982 | FRAC_CONST(0.9999699475461585), | ||
1983 | FRAC_CONST(0.9999717659263435), | ||
1984 | FRAC_CONST(0.9999734962093266), | ||
1985 | FRAC_CONST(0.9999751417254756), | ||
1986 | FRAC_CONST(0.9999767057107922), | ||
1987 | FRAC_CONST(0.9999781913087290), | ||
1988 | FRAC_CONST(0.9999796015719915), | ||
1989 | FRAC_CONST(0.9999809394643231), | ||
1990 | FRAC_CONST(0.9999822078622751), | ||
1991 | FRAC_CONST(0.9999834095569596), | ||
1992 | FRAC_CONST(0.9999845472557860), | ||
1993 | FRAC_CONST(0.9999856235841805), | ||
1994 | FRAC_CONST(0.9999866410872889), | ||
1995 | FRAC_CONST(0.9999876022316609), | ||
1996 | FRAC_CONST(0.9999885094069193), | ||
1997 | FRAC_CONST(0.9999893649274085), | ||
1998 | FRAC_CONST(0.9999901710338274), | ||
1999 | FRAC_CONST(0.9999909298948430), | ||
2000 | FRAC_CONST(0.9999916436086862), | ||
2001 | FRAC_CONST(0.9999923142047299), | ||
2002 | FRAC_CONST(0.9999929436450469), | ||
2003 | FRAC_CONST(0.9999935338259505), | ||
2004 | FRAC_CONST(0.9999940865795161), | ||
2005 | FRAC_CONST(0.9999946036750835), | ||
2006 | FRAC_CONST(0.9999950868207405), | ||
2007 | FRAC_CONST(0.9999955376647868), | ||
2008 | FRAC_CONST(0.9999959577971798), | ||
2009 | FRAC_CONST(0.9999963487509599), | ||
2010 | FRAC_CONST(0.9999967120036571), | ||
2011 | FRAC_CONST(0.9999970489786785), | ||
2012 | FRAC_CONST(0.9999973610466748), | ||
2013 | FRAC_CONST(0.9999976495268890), | ||
2014 | FRAC_CONST(0.9999979156884846), | ||
2015 | FRAC_CONST(0.9999981607518545), | ||
2016 | FRAC_CONST(0.9999983858899099), | ||
2017 | FRAC_CONST(0.9999985922293493), | ||
2018 | FRAC_CONST(0.9999987808519092), | ||
2019 | FRAC_CONST(0.9999989527955938), | ||
2020 | FRAC_CONST(0.9999991090558848), | ||
2021 | FRAC_CONST(0.9999992505869332), | ||
2022 | FRAC_CONST(0.9999993783027293), | ||
2023 | FRAC_CONST(0.9999994930782556), | ||
2024 | FRAC_CONST(0.9999995957506171), | ||
2025 | FRAC_CONST(0.9999996871201549), | ||
2026 | FRAC_CONST(0.9999997679515386), | ||
2027 | FRAC_CONST(0.9999998389748399), | ||
2028 | FRAC_CONST(0.9999999008865869), | ||
2029 | FRAC_CONST(0.9999999543507984) | ||
2030 | }; | ||
2031 | #endif | ||
2032 | |||
2033 | static const real_t kbd_short_128[] ICONST_ATTR MEM_ALIGN_ATTR = | ||
2034 | { | ||
2035 | FRAC_CONST(4.3795702929468881e-005), | ||
2036 | FRAC_CONST(0.00011867384265436617), | ||
2037 | FRAC_CONST(0.0002307165763996192), | ||
2038 | FRAC_CONST(0.00038947282760568383), | ||
2039 | FRAC_CONST(0.00060581272288302553), | ||
2040 | FRAC_CONST(0.00089199695169487453), | ||
2041 | FRAC_CONST(0.0012617254423430522), | ||
2042 | FRAC_CONST(0.0017301724373162003), | ||
2043 | FRAC_CONST(0.0023140071937421476), | ||
2044 | FRAC_CONST(0.0030313989666022221), | ||
2045 | FRAC_CONST(0.0039020049735530842), | ||
2046 | FRAC_CONST(0.0049469401815512024), | ||
2047 | FRAC_CONST(0.0061887279335368318), | ||
2048 | FRAC_CONST(0.0076512306364647726), | ||
2049 | FRAC_CONST(0.0093595599562652423), | ||
2050 | FRAC_CONST(0.011339966208377799), | ||
2051 | FRAC_CONST(0.013619706891715299), | ||
2052 | FRAC_CONST(0.016226894586323766), | ||
2053 | FRAC_CONST(0.019190324717288168), | ||
2054 | FRAC_CONST(0.022539283975960878), | ||
2055 | FRAC_CONST(0.026303340480472455), | ||
2056 | FRAC_CONST(0.030512117046644357), | ||
2057 | FRAC_CONST(0.03519504922365594), | ||
2058 | FRAC_CONST(0.040381130021856941), | ||
2059 | FRAC_CONST(0.046098643518702249), | ||
2060 | FRAC_CONST(0.052374889768730587), | ||
2061 | FRAC_CONST(0.059235903660769147), | ||
2062 | FRAC_CONST(0.066706170556282418), | ||
2063 | FRAC_CONST(0.074808341703430481), | ||
2064 | FRAC_CONST(0.083562952548726227), | ||
2065 | FRAC_CONST(0.092988147159339674), | ||
2066 | FRAC_CONST(0.1030994120216919), | ||
2067 | FRAC_CONST(0.11390932249409955), | ||
2068 | FRAC_CONST(0.12542730516149531), | ||
2069 | FRAC_CONST(0.13765941926783826), | ||
2070 | FRAC_CONST(0.15060816028651081), | ||
2071 | FRAC_CONST(0.16427228853114245), | ||
2072 | FRAC_CONST(0.17864668550988483), | ||
2073 | FRAC_CONST(0.19372224048676889), | ||
2074 | FRAC_CONST(0.20948576943658073), | ||
2075 | FRAC_CONST(0.22591996826744942), | ||
2076 | FRAC_CONST(0.24300340184133981), | ||
2077 | FRAC_CONST(0.26071052995068139), | ||
2078 | FRAC_CONST(0.27901177101369551), | ||
2079 | FRAC_CONST(0.29787360383626599), | ||
2080 | FRAC_CONST(0.3172587073594233), | ||
2081 | FRAC_CONST(0.33712613787396362), | ||
2082 | FRAC_CONST(0.35743154274286698), | ||
2083 | FRAC_CONST(0.37812740923363009), | ||
2084 | FRAC_CONST(0.39916334663203618), | ||
2085 | FRAC_CONST(0.42048639939189658), | ||
2086 | FRAC_CONST(0.4420413886774246), | ||
2087 | FRAC_CONST(0.4637712792815169), | ||
2088 | FRAC_CONST(0.4856175685594023), | ||
2089 | FRAC_CONST(0.50752069370766872), | ||
2090 | FRAC_CONST(0.52942045344797806), | ||
2091 | FRAC_CONST(0.55125643994680196), | ||
2092 | FRAC_CONST(0.57296847662071559), | ||
2093 | FRAC_CONST(0.59449705734411495), | ||
2094 | FRAC_CONST(0.61578378249506627), | ||
2095 | FRAC_CONST(0.63677178724712891), | ||
2096 | FRAC_CONST(0.65740615754163356), | ||
2097 | FRAC_CONST(0.67763432925662526), | ||
2098 | FRAC_CONST(0.69740646622548552), | ||
2099 | FRAC_CONST(0.71667581294953808), | ||
2100 | FRAC_CONST(0.73539901809352737), | ||
2101 | FRAC_CONST(0.75353642514900732), | ||
2102 | FRAC_CONST(0.77105232699609816), | ||
2103 | FRAC_CONST(0.78791518148597028), | ||
2104 | FRAC_CONST(0.80409778560147072), | ||
2105 | FRAC_CONST(0.81957740622770781), | ||
2106 | FRAC_CONST(0.83433586607383625), | ||
2107 | FRAC_CONST(0.84835958382689225), | ||
2108 | FRAC_CONST(0.86163956818294229), | ||
2109 | FRAC_CONST(0.87417136598406997), | ||
2110 | FRAC_CONST(0.88595496528524853), | ||
2111 | FRAC_CONST(0.89699465477567619), | ||
2112 | FRAC_CONST(0.90729884157670959), | ||
2113 | FRAC_CONST(0.91687983002436779), | ||
2114 | FRAC_CONST(0.92575356460899649), | ||
2115 | FRAC_CONST(0.93393934077779084), | ||
2116 | FRAC_CONST(0.94145948779657318), | ||
2117 | FRAC_CONST(0.94833902830402828), | ||
2118 | FRAC_CONST(0.95460531956280026), | ||
2119 | FRAC_CONST(0.96028768170574896), | ||
2120 | FRAC_CONST(0.96541701848104766), | ||
2121 | FRAC_CONST(0.97002543610646474), | ||
2122 | FRAC_CONST(0.97414586584250062), | ||
2123 | FRAC_CONST(0.97781169577969584), | ||
2124 | FRAC_CONST(0.98105641710392333), | ||
2125 | FRAC_CONST(0.98391328975491177), | ||
2126 | FRAC_CONST(0.98641503193166202), | ||
2127 | FRAC_CONST(0.98859353733226141), | ||
2128 | FRAC_CONST(0.99047962335771556), | ||
2129 | FRAC_CONST(0.9921028127769449), | ||
2130 | FRAC_CONST(0.99349115056397752), | ||
2131 | FRAC_CONST(0.99467105680259038), | ||
2132 | FRAC_CONST(0.9956672157341897), | ||
2133 | FRAC_CONST(0.99650250022834352), | ||
2134 | FRAC_CONST(0.99719793020823266), | ||
2135 | FRAC_CONST(0.99777266288955657), | ||
2136 | FRAC_CONST(0.99824401211201486), | ||
2137 | FRAC_CONST(0.99862749357391212), | ||
2138 | FRAC_CONST(0.99893689243401962), | ||
2139 | FRAC_CONST(0.99918434952623147), | ||
2140 | FRAC_CONST(0.99938046234161726), | ||
2141 | FRAC_CONST(0.99953439696357238), | ||
2142 | FRAC_CONST(0.99965400728430465), | ||
2143 | FRAC_CONST(0.99974595807027455), | ||
2144 | FRAC_CONST(0.99981584876278362), | ||
2145 | FRAC_CONST(0.99986833527824281), | ||
2146 | FRAC_CONST(0.99990724749057802), | ||
2147 | FRAC_CONST(0.99993570051598468), | ||
2148 | FRAC_CONST(0.99995619835942084), | ||
2149 | FRAC_CONST(0.99997072890647543), | ||
2150 | FRAC_CONST(0.9999808496399144), | ||
2151 | FRAC_CONST(0.99998776381655818), | ||
2152 | FRAC_CONST(0.99999238714961569), | ||
2153 | FRAC_CONST(0.99999540529959718), | ||
2154 | FRAC_CONST(0.99999732268176988), | ||
2155 | FRAC_CONST(0.99999850325054862), | ||
2156 | FRAC_CONST(0.99999920402413744), | ||
2157 | FRAC_CONST(0.9999996021706401), | ||
2158 | FRAC_CONST(0.99999981649545566), | ||
2159 | FRAC_CONST(0.99999992415545547), | ||
2160 | FRAC_CONST(0.99999997338493041), | ||
2161 | FRAC_CONST(0.99999999295825959), | ||
2162 | FRAC_CONST(0.99999999904096815) | ||
2163 | }; | ||
2164 | |||
2165 | #ifdef ALLOW_SMALL_FRAMELENGTH | ||
2166 | static const real_t kbd_short_120[] MEM_ALIGN_ATTR = | ||
2167 | { | ||
2168 | FRAC_CONST(0.0000452320086910), | ||
2169 | FRAC_CONST(0.0001274564692111), | ||
2170 | FRAC_CONST(0.0002529398385345), | ||
2171 | FRAC_CONST(0.0004335140496648), | ||
2172 | FRAC_CONST(0.0006827100966952), | ||
2173 | FRAC_CONST(0.0010158708222246), | ||
2174 | FRAC_CONST(0.0014502162869659), | ||
2175 | FRAC_CONST(0.0020048865156264), | ||
2176 | FRAC_CONST(0.0027009618393178), | ||
2177 | FRAC_CONST(0.0035614590925043), | ||
2178 | FRAC_CONST(0.0046113018122711), | ||
2179 | FRAC_CONST(0.0058772627936484), | ||
2180 | FRAC_CONST(0.0073878776584103), | ||
2181 | FRAC_CONST(0.0091733284512589), | ||
2182 | FRAC_CONST(0.0112652966728373), | ||
2183 | FRAC_CONST(0.0136967855861945), | ||
2184 | FRAC_CONST(0.0165019120857793), | ||
2185 | FRAC_CONST(0.0197156688892217), | ||
2186 | FRAC_CONST(0.0233736582950619), | ||
2187 | FRAC_CONST(0.0275117992367496), | ||
2188 | FRAC_CONST(0.0321660098468534), | ||
2189 | FRAC_CONST(0.0373718682174417), | ||
2190 | FRAC_CONST(0.0431642544948834), | ||
2191 | FRAC_CONST(0.0495769778717676), | ||
2192 | FRAC_CONST(0.0566423924273392), | ||
2193 | FRAC_CONST(0.0643910061132260), | ||
2194 | FRAC_CONST(0.0728510874761729), | ||
2195 | FRAC_CONST(0.0820482749475221), | ||
2196 | FRAC_CONST(0.0920051937045235), | ||
2197 | FRAC_CONST(0.1027410852163450), | ||
2198 | FRAC_CONST(0.1142714546239370), | ||
2199 | FRAC_CONST(0.1266077410648368), | ||
2200 | FRAC_CONST(0.1397570159398145), | ||
2201 | FRAC_CONST(0.1537217139274270), | ||
2202 | FRAC_CONST(0.1684994012857075), | ||
2203 | FRAC_CONST(0.1840825856392944), | ||
2204 | FRAC_CONST(0.2004585710384133), | ||
2205 | FRAC_CONST(0.2176093615976121), | ||
2206 | FRAC_CONST(0.2355116164824983), | ||
2207 | FRAC_CONST(0.2541366584185075), | ||
2208 | FRAC_CONST(0.2734505372545160), | ||
2209 | FRAC_CONST(0.2934141494343369), | ||
2210 | FRAC_CONST(0.3139834135200387), | ||
2211 | FRAC_CONST(0.3351095011824163), | ||
2212 | FRAC_CONST(0.3567391223361566), | ||
2213 | FRAC_CONST(0.3788148623608774), | ||
2214 | FRAC_CONST(0.4012755686250732), | ||
2215 | FRAC_CONST(0.4240567828288110), | ||
2216 | FRAC_CONST(0.4470912150133537), | ||
2217 | FRAC_CONST(0.4703092544619664), | ||
2218 | FRAC_CONST(0.4936395121456694), | ||
2219 | FRAC_CONST(0.5170093888596962), | ||
2220 | FRAC_CONST(0.5403456627591340), | ||
2221 | FRAC_CONST(0.5635750896430154), | ||
2222 | FRAC_CONST(0.5866250090612892), | ||
2223 | FRAC_CONST(0.6094239491338723), | ||
2224 | FRAC_CONST(0.6319022228794100), | ||
2225 | FRAC_CONST(0.6539925088563087), | ||
2226 | FRAC_CONST(0.6756304090216887), | ||
2227 | FRAC_CONST(0.6967549769155277), | ||
2228 | FRAC_CONST(0.7173092095766250), | ||
2229 | FRAC_CONST(0.7372404969921184), | ||
2230 | FRAC_CONST(0.7565010233699827), | ||
2231 | FRAC_CONST(0.7750481150999984), | ||
2232 | FRAC_CONST(0.7928445309277697), | ||
2233 | FRAC_CONST(0.8098586906021583), | ||
2234 | FRAC_CONST(0.8260648390616000), | ||
2235 | FRAC_CONST(0.8414431440907889), | ||
2236 | FRAC_CONST(0.8559797262966709), | ||
2237 | FRAC_CONST(0.8696666212110165), | ||
2238 | FRAC_CONST(0.8825016743142358), | ||
2239 | FRAC_CONST(0.8944883707784486), | ||
2240 | FRAC_CONST(0.9056356027326216), | ||
2241 | FRAC_CONST(0.9159573778427816), | ||
2242 | FRAC_CONST(0.9254724739583072), | ||
2243 | FRAC_CONST(0.9342040454819434), | ||
2244 | FRAC_CONST(0.9421791879559176), | ||
2245 | FRAC_CONST(0.9494284680976784), | ||
2246 | FRAC_CONST(0.9559854271440150), | ||
2247 | FRAC_CONST(0.9618860658493898), | ||
2248 | FRAC_CONST(0.9671683198119525), | ||
2249 | FRAC_CONST(0.9718715339497299), | ||
2250 | FRAC_CONST(0.9760359449042233), | ||
2251 | FRAC_CONST(0.9797021798981759), | ||
2252 | FRAC_CONST(0.9829107801140203), | ||
2253 | FRAC_CONST(0.9857017559923277), | ||
2254 | FRAC_CONST(0.9881141809867999), | ||
2255 | FRAC_CONST(0.9901858292742826), | ||
2256 | FRAC_CONST(0.9919528617340944), | ||
2257 | FRAC_CONST(0.9934495632180476), | ||
2258 | FRAC_CONST(0.9947081327749199), | ||
2259 | FRAC_CONST(0.9957585271195989), | ||
2260 | FRAC_CONST(0.9966283562984427), | ||
2261 | FRAC_CONST(0.9973428292485683), | ||
2262 | FRAC_CONST(0.9979247458259197), | ||
2263 | FRAC_CONST(0.9983945309245774), | ||
2264 | FRAC_CONST(0.9987703055583410), | ||
2265 | FRAC_CONST(0.9990679892449266), | ||
2266 | FRAC_CONST(0.9993014277313617), | ||
2267 | FRAC_CONST(0.9994825400228521), | ||
2268 | FRAC_CONST(0.9996214788122335), | ||
2269 | FRAC_CONST(0.9997267987294857), | ||
2270 | FRAC_CONST(0.9998056273097539), | ||
2271 | FRAC_CONST(0.9998638341781910), | ||
2272 | FRAC_CONST(0.9999061946325793), | ||
2273 | FRAC_CONST(0.9999365445321382), | ||
2274 | FRAC_CONST(0.9999579241373735), | ||
2275 | FRAC_CONST(0.9999727092594598), | ||
2276 | FRAC_CONST(0.9999827287418790), | ||
2277 | FRAC_CONST(0.9999893678912771), | ||
2278 | FRAC_CONST(0.9999936579844555), | ||
2279 | FRAC_CONST(0.9999963523959187), | ||
2280 | FRAC_CONST(0.9999979902130101), | ||
2281 | FRAC_CONST(0.9999989484358076), | ||
2282 | FRAC_CONST(0.9999994840031031), | ||
2283 | FRAC_CONST(0.9999997669534347), | ||
2284 | FRAC_CONST(0.9999999060327799), | ||
2285 | FRAC_CONST(0.9999999680107184), | ||
2286 | FRAC_CONST(0.9999999918774242), | ||
2287 | FRAC_CONST(0.9999999989770326) | ||
2288 | }; | ||
2289 | #endif | ||
2290 | |||
2291 | #ifdef __cplusplus | ||
2292 | } | ||
2293 | #endif | ||
2294 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/libfaad.make b/lib/rbcodec/codecs/libfaad/libfaad.make new file mode 100644 index 0000000000..ec6998f4d3 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/libfaad.make | |||
@@ -0,0 +1,19 @@ | |||
1 | # __________ __ ___. | ||
2 | # Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
3 | # Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
4 | # Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
5 | # Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
6 | # \/ \/ \/ \/ \/ | ||
7 | # $Id$ | ||
8 | # | ||
9 | |||
10 | # libfaad | ||
11 | FAADLIB := $(CODECDIR)/libfaad.a | ||
12 | FAADLIB_SRC := $(call preprocess, $(RBCODECLIB_DIR)/codecs/libfaad/SOURCES) | ||
13 | FAADLIB_OBJ := $(call c2obj, $(FAADLIB_SRC)) | ||
14 | OTHER_SRC += $(FAADLIB_SRC) | ||
15 | OTHER_INC += -I$(RBCODECLIB_DIR)/codecs/libfaad | ||
16 | |||
17 | $(FAADLIB): $(FAADLIB_OBJ) | ||
18 | $(SILENT)$(shell rm -f $@) | ||
19 | $(call PRINTS,AR $(@F))$(AR) rcs $@ $^ >/dev/null | ||
diff --git a/lib/rbcodec/codecs/libfaad/lt_predict.c b/lib/rbcodec/codecs/libfaad/lt_predict.c new file mode 100644 index 0000000000..f03354fc01 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/lt_predict.c | |||
@@ -0,0 +1,215 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | |||
29 | #include "common.h" | ||
30 | #include "structs.h" | ||
31 | |||
32 | #ifdef LTP_DEC | ||
33 | |||
34 | #include <stdlib.h> | ||
35 | #include "syntax.h" | ||
36 | #include "lt_predict.h" | ||
37 | #include "filtbank.h" | ||
38 | #include "tns.h" | ||
39 | |||
40 | |||
41 | /* static function declarations */ | ||
42 | static int16_t real_to_int16(real_t sig_in); | ||
43 | |||
44 | |||
45 | /* check if the object type is an object type that can have LTP */ | ||
46 | uint8_t is_ltp_ot(uint8_t object_type) | ||
47 | { | ||
48 | #ifdef LTP_DEC | ||
49 | if ((object_type == LTP) | ||
50 | #ifdef ERROR_RESILIENCE | ||
51 | || (object_type == ER_LTP) | ||
52 | #endif | ||
53 | #ifdef LD_DEC | ||
54 | || (object_type == LD) | ||
55 | #endif | ||
56 | #ifdef SCALABLE_DEC | ||
57 | || (object_type == 6) /* TODO */ | ||
58 | #endif | ||
59 | ) | ||
60 | { | ||
61 | return 1; | ||
62 | } | ||
63 | #endif | ||
64 | |||
65 | return 0; | ||
66 | } | ||
67 | |||
68 | static const real_t codebook[8] MEM_ALIGN_ATTR = | ||
69 | { | ||
70 | REAL_CONST(0.570829), | ||
71 | REAL_CONST(0.696616), | ||
72 | REAL_CONST(0.813004), | ||
73 | REAL_CONST(0.911304), | ||
74 | REAL_CONST(0.984900), | ||
75 | REAL_CONST(1.067894), | ||
76 | REAL_CONST(1.194601), | ||
77 | REAL_CONST(1.369533) | ||
78 | }; | ||
79 | |||
80 | static real_t x_est[2048] MEM_ALIGN_ATTR; | ||
81 | static real_t X_est[2048] MEM_ALIGN_ATTR; | ||
82 | void lt_prediction(ic_stream *ics, ltp_info *ltp, real_t *spec, | ||
83 | int16_t *lt_pred_stat, fb_info *fb, uint8_t win_shape, | ||
84 | uint8_t win_shape_prev, uint8_t sr_index, | ||
85 | uint8_t object_type, uint16_t frame_len) | ||
86 | { | ||
87 | uint8_t sfb; | ||
88 | uint16_t bin, i, num_samples; | ||
89 | |||
90 | if (ics->window_sequence != EIGHT_SHORT_SEQUENCE) | ||
91 | { | ||
92 | if (ltp->data_present) | ||
93 | { | ||
94 | num_samples = frame_len << 1; | ||
95 | |||
96 | for(i = 0; i < num_samples; i++) | ||
97 | { | ||
98 | /* The extra lookback M (N/2 for LD, 0 for LTP) is handled | ||
99 | in the buffer updating */ | ||
100 | |||
101 | #if 0 | ||
102 | x_est[i] = MUL_R_C(lt_pred_stat[num_samples + i - ltp->lag], | ||
103 | codebook[ltp->coef]); | ||
104 | #else | ||
105 | /* lt_pred_stat is a 16 bit int, multiplied with the fixed point real | ||
106 | this gives a real for x_est | ||
107 | */ | ||
108 | x_est[i] = (real_t)lt_pred_stat[num_samples + i - ltp->lag] * codebook[ltp->coef]; | ||
109 | #endif | ||
110 | } | ||
111 | |||
112 | filter_bank_ltp(fb, ics->window_sequence, win_shape, win_shape_prev, | ||
113 | x_est, X_est, object_type, frame_len); | ||
114 | |||
115 | tns_encode_frame(ics, &(ics->tns), sr_index, object_type, X_est, | ||
116 | frame_len); | ||
117 | |||
118 | for (sfb = 0; sfb < ltp->last_band; sfb++) | ||
119 | { | ||
120 | if (ltp->long_used[sfb]) | ||
121 | { | ||
122 | uint16_t low = ics->swb_offset[sfb]; | ||
123 | uint16_t high = ics->swb_offset[sfb+1]; | ||
124 | |||
125 | for (bin = low; bin < high; bin++) | ||
126 | { | ||
127 | spec[bin] += X_est[bin]; | ||
128 | } | ||
129 | } | ||
130 | } | ||
131 | } | ||
132 | } | ||
133 | } | ||
134 | |||
135 | #ifdef FIXED_POINT | ||
136 | static INLINE int16_t real_to_int16(real_t sig_in) | ||
137 | { | ||
138 | if (sig_in >= 0) | ||
139 | { | ||
140 | sig_in += (1 << (REAL_BITS-1)); | ||
141 | if (sig_in >= REAL_CONST(32768)) | ||
142 | return 32767; | ||
143 | } else { | ||
144 | sig_in += -(1 << (REAL_BITS-1)); | ||
145 | if (sig_in <= REAL_CONST(-32768)) | ||
146 | return -32768; | ||
147 | } | ||
148 | |||
149 | return (sig_in >> REAL_BITS); | ||
150 | } | ||
151 | #else | ||
152 | static INLINE int16_t real_to_int16(real_t sig_in) | ||
153 | { | ||
154 | if (sig_in >= 0) | ||
155 | { | ||
156 | #ifndef HAS_LRINTF | ||
157 | sig_in += 0.5f; | ||
158 | #endif | ||
159 | if (sig_in >= 32768.0f) | ||
160 | return 32767; | ||
161 | } else { | ||
162 | #ifndef HAS_LRINTF | ||
163 | sig_in += -0.5f; | ||
164 | #endif | ||
165 | if (sig_in <= -32768.0f) | ||
166 | return -32768; | ||
167 | } | ||
168 | |||
169 | return lrintf(sig_in); | ||
170 | } | ||
171 | #endif | ||
172 | |||
173 | void lt_update_state(int16_t *lt_pred_stat, real_t *time, real_t *overlap, | ||
174 | uint16_t frame_len, uint8_t object_type) | ||
175 | { | ||
176 | uint16_t i; | ||
177 | |||
178 | /* | ||
179 | * The reference point for index i and the content of the buffer | ||
180 | * lt_pred_stat are arranged so that lt_pred_stat(0 ... N/2 - 1) contains the | ||
181 | * last aliased half window from the IMDCT, and lt_pred_stat(N/2 ... N-1) | ||
182 | * is always all zeros. The rest of lt_pred_stat (i<0) contains the previous | ||
183 | * fully reconstructed time domain samples, i.e., output of the decoder. | ||
184 | * | ||
185 | * These values are shifted up by N*2 to avoid (i<0) | ||
186 | * | ||
187 | * For the LD object type an extra 512 samples lookback is accomodated here. | ||
188 | */ | ||
189 | #ifdef LD_DEC | ||
190 | if (object_type == LD) | ||
191 | { | ||
192 | for (i = 0; i < frame_len; i++) | ||
193 | { | ||
194 | lt_pred_stat[i] /* extra 512 */ = lt_pred_stat[i + frame_len]; | ||
195 | lt_pred_stat[frame_len + i] = lt_pred_stat[i + (frame_len * 2)]; | ||
196 | lt_pred_stat[(frame_len * 2) + i] = real_to_int16(time[i]); | ||
197 | lt_pred_stat[(frame_len * 3) + i] = real_to_int16(overlap[i]); | ||
198 | } | ||
199 | } else { | ||
200 | #endif | ||
201 | for (i = 0; i < frame_len; i++) | ||
202 | { | ||
203 | lt_pred_stat[i] = lt_pred_stat[i + frame_len]; | ||
204 | lt_pred_stat[frame_len + i] = real_to_int16(time[i]); | ||
205 | lt_pred_stat[(frame_len * 2) + i] = real_to_int16(overlap[i]); | ||
206 | #if 0 /* set to zero once upon initialisation */ | ||
207 | lt_pred_stat[(frame_len * 3) + i] = 0; | ||
208 | #endif | ||
209 | } | ||
210 | #ifdef LD_DEC | ||
211 | } | ||
212 | #endif | ||
213 | } | ||
214 | |||
215 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/lt_predict.h b/lib/rbcodec/codecs/libfaad/lt_predict.h new file mode 100644 index 0000000000..1c10751888 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/lt_predict.h | |||
@@ -0,0 +1,63 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifdef LTP_DEC | ||
29 | |||
30 | #ifndef __LT_PREDICT_H__ | ||
31 | #define __LT_PREDICT_H__ | ||
32 | |||
33 | #ifdef __cplusplus | ||
34 | extern "C" { | ||
35 | #endif | ||
36 | |||
37 | #include "filtbank.h" | ||
38 | |||
39 | uint8_t is_ltp_ot(uint8_t object_type); | ||
40 | |||
41 | void lt_prediction(ic_stream *ics, | ||
42 | ltp_info *ltp, | ||
43 | real_t *spec, | ||
44 | int16_t *lt_pred_stat, | ||
45 | fb_info *fb, | ||
46 | uint8_t win_shape, | ||
47 | uint8_t win_shape_prev, | ||
48 | uint8_t sr_index, | ||
49 | uint8_t object_type, | ||
50 | uint16_t frame_len); | ||
51 | |||
52 | void lt_update_state(int16_t *lt_pred_stat, | ||
53 | real_t *time, | ||
54 | real_t *overlap, | ||
55 | uint16_t frame_len, | ||
56 | uint8_t object_type); | ||
57 | |||
58 | #ifdef __cplusplus | ||
59 | } | ||
60 | #endif | ||
61 | #endif | ||
62 | |||
63 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/mp4.c b/lib/rbcodec/codecs/libfaad/mp4.c new file mode 100644 index 0000000000..94e1a1daaa --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/mp4.c | |||
@@ -0,0 +1,300 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #include "common.h" | ||
29 | #include "structs.h" | ||
30 | |||
31 | #include <stdlib.h> | ||
32 | |||
33 | #include "bits.h" | ||
34 | #include "mp4.h" | ||
35 | #include "syntax.h" | ||
36 | |||
37 | /* defines if an object type can be decoded by this library or not */ | ||
38 | static uint8_t ObjectTypesTable[32] = { | ||
39 | 0, /* 0 NULL */ | ||
40 | #ifdef MAIN_DEC | ||
41 | 1, /* 1 AAC Main */ | ||
42 | #else | ||
43 | 0, /* 1 AAC Main */ | ||
44 | #endif | ||
45 | 1, /* 2 AAC LC */ | ||
46 | #ifdef SSR_DEC | ||
47 | 1, /* 3 AAC SSR */ | ||
48 | #else | ||
49 | 0, /* 3 AAC SSR */ | ||
50 | #endif | ||
51 | #ifdef LTP_DEC | ||
52 | 1, /* 4 AAC LTP */ | ||
53 | #else | ||
54 | 0, /* 4 AAC LTP */ | ||
55 | #endif | ||
56 | #ifdef SBR_DEC | ||
57 | 1, /* 5 SBR */ | ||
58 | #else | ||
59 | 0, /* 5 SBR */ | ||
60 | #endif | ||
61 | #ifdef SCALABLE_DEC | ||
62 | 1, /* 6 AAC Scalable */ | ||
63 | #else | ||
64 | 0, /* 6 AAC Scalable */ | ||
65 | #endif | ||
66 | 0, /* 7 TwinVQ */ | ||
67 | 0, /* 8 CELP */ | ||
68 | 0, /* 9 HVXC */ | ||
69 | 0, /* 10 Reserved */ | ||
70 | 0, /* 11 Reserved */ | ||
71 | 0, /* 12 TTSI */ | ||
72 | 0, /* 13 Main synthetic */ | ||
73 | 0, /* 14 Wavetable synthesis */ | ||
74 | 0, /* 15 General MIDI */ | ||
75 | 0, /* 16 Algorithmic Synthesis and Audio FX */ | ||
76 | |||
77 | /* MPEG-4 Version 2 */ | ||
78 | #ifdef ERROR_RESILIENCE | ||
79 | 1, /* 17 ER AAC LC */ | ||
80 | 0, /* 18 (Reserved) */ | ||
81 | #ifdef LTP_DEC | ||
82 | 1, /* 19 ER AAC LTP */ | ||
83 | #else | ||
84 | 0, /* 19 ER AAC LTP */ | ||
85 | #endif | ||
86 | #ifdef SCALABLE_DEC | ||
87 | 1, /* 20 ER AAC scalable */ | ||
88 | #else | ||
89 | 0, /* 20 ER AAC scalable */ | ||
90 | #endif | ||
91 | 0, /* 21 ER TwinVQ */ | ||
92 | 0, /* 22 ER BSAC */ | ||
93 | #ifdef LD_DEC | ||
94 | 1, /* 23 ER AAC LD */ | ||
95 | #else | ||
96 | 0, /* 23 ER AAC LD */ | ||
97 | #endif | ||
98 | 0, /* 24 ER CELP */ | ||
99 | 0, /* 25 ER HVXC */ | ||
100 | 0, /* 26 ER HILN */ | ||
101 | 0, /* 27 ER Parametric */ | ||
102 | #else /* No ER defined */ | ||
103 | 0, /* 17 ER AAC LC */ | ||
104 | 0, /* 18 (Reserved) */ | ||
105 | 0, /* 19 ER AAC LTP */ | ||
106 | 0, /* 20 ER AAC scalable */ | ||
107 | 0, /* 21 ER TwinVQ */ | ||
108 | 0, /* 22 ER BSAC */ | ||
109 | 0, /* 23 ER AAC LD */ | ||
110 | 0, /* 24 ER CELP */ | ||
111 | 0, /* 25 ER HVXC */ | ||
112 | 0, /* 26 ER HILN */ | ||
113 | 0, /* 27 ER Parametric */ | ||
114 | #endif | ||
115 | 0, /* 28 (Reserved) */ | ||
116 | 0, /* 29 (Reserved) */ | ||
117 | 0, /* 30 (Reserved) */ | ||
118 | 0 /* 31 (Reserved) */ | ||
119 | }; | ||
120 | |||
121 | /* Table 1.6.1 */ | ||
122 | /* rockbox: not used | ||
123 | int8_t NEAACDECAPI NeAACDecAudioSpecificConfig(uint8_t *pBuffer, | ||
124 | uint32_t buffer_size, | ||
125 | mp4AudioSpecificConfig *mp4ASC) | ||
126 | { | ||
127 | return AudioSpecificConfig2(pBuffer, buffer_size, mp4ASC, NULL); | ||
128 | }*/ | ||
129 | |||
130 | int8_t AudioSpecificConfig2(uint8_t *pBuffer, | ||
131 | uint32_t buffer_size, | ||
132 | mp4AudioSpecificConfig *mp4ASC, | ||
133 | program_config *pce) | ||
134 | { | ||
135 | bitfile ld; | ||
136 | int8_t result = 0; | ||
137 | #ifdef SBR_DEC | ||
138 | int8_t bits_to_decode = 0; | ||
139 | #endif | ||
140 | |||
141 | if (pBuffer == NULL) | ||
142 | return -7; | ||
143 | if (mp4ASC == NULL) | ||
144 | return -8; | ||
145 | |||
146 | memset(mp4ASC, 0, sizeof(mp4AudioSpecificConfig)); | ||
147 | |||
148 | faad_initbits(&ld, pBuffer, buffer_size); | ||
149 | faad_byte_align(&ld); | ||
150 | |||
151 | mp4ASC->objectTypeIndex = (uint8_t)faad_getbits(&ld, 5 | ||
152 | DEBUGVAR(1,1,"parse_audio_decoder_specific_info(): ObjectTypeIndex")); | ||
153 | |||
154 | mp4ASC->samplingFrequencyIndex = (uint8_t)faad_getbits(&ld, 4 | ||
155 | DEBUGVAR(1,2,"parse_audio_decoder_specific_info(): SamplingFrequencyIndex")); | ||
156 | |||
157 | mp4ASC->channelsConfiguration = (uint8_t)faad_getbits(&ld, 4 | ||
158 | DEBUGVAR(1,3,"parse_audio_decoder_specific_info(): ChannelsConfiguration")); | ||
159 | |||
160 | mp4ASC->samplingFrequency = get_sample_rate(mp4ASC->samplingFrequencyIndex); | ||
161 | |||
162 | if (ObjectTypesTable[mp4ASC->objectTypeIndex] != 1) | ||
163 | { | ||
164 | faad_endbits(&ld); | ||
165 | return -1; | ||
166 | } | ||
167 | |||
168 | if (mp4ASC->samplingFrequency == 0) | ||
169 | { | ||
170 | faad_endbits(&ld); | ||
171 | return -2; | ||
172 | } | ||
173 | |||
174 | if (mp4ASC->channelsConfiguration > 7) | ||
175 | { | ||
176 | faad_endbits(&ld); | ||
177 | return -3; | ||
178 | } | ||
179 | |||
180 | #if (defined(PS_DEC) || defined(DRM_PS)) | ||
181 | /* check if we have a mono file */ | ||
182 | if (mp4ASC->channelsConfiguration == 1) | ||
183 | { | ||
184 | /* upMatrix to 2 channels for implicit signalling of PS */ | ||
185 | mp4ASC->channelsConfiguration = 2; | ||
186 | } | ||
187 | #endif | ||
188 | |||
189 | #ifdef SBR_DEC | ||
190 | mp4ASC->sbr_present_flag = -1; | ||
191 | if (mp4ASC->objectTypeIndex == 5) | ||
192 | { | ||
193 | uint8_t tmp; | ||
194 | |||
195 | mp4ASC->sbr_present_flag = 1; | ||
196 | tmp = (uint8_t)faad_getbits(&ld, 4 | ||
197 | DEBUGVAR(1,5,"parse_audio_decoder_specific_info(): extensionSamplingFrequencyIndex")); | ||
198 | /* check for downsampled SBR */ | ||
199 | if (tmp == mp4ASC->samplingFrequencyIndex) | ||
200 | mp4ASC->downSampledSBR = 1; | ||
201 | mp4ASC->samplingFrequencyIndex = tmp; | ||
202 | if (mp4ASC->samplingFrequencyIndex == 15) | ||
203 | { | ||
204 | mp4ASC->samplingFrequency = (uint32_t)faad_getbits(&ld, 24 | ||
205 | DEBUGVAR(1,6,"parse_audio_decoder_specific_info(): extensionSamplingFrequencyIndex")); | ||
206 | } else { | ||
207 | mp4ASC->samplingFrequency = get_sample_rate(mp4ASC->samplingFrequencyIndex); | ||
208 | } | ||
209 | mp4ASC->objectTypeIndex = (uint8_t)faad_getbits(&ld, 5 | ||
210 | DEBUGVAR(1,7,"parse_audio_decoder_specific_info(): ObjectTypeIndex")); | ||
211 | } | ||
212 | #endif | ||
213 | |||
214 | /* get GASpecificConfig */ | ||
215 | if (mp4ASC->objectTypeIndex == 1 || mp4ASC->objectTypeIndex == 2 || | ||
216 | mp4ASC->objectTypeIndex == 3 || mp4ASC->objectTypeIndex == 4 || | ||
217 | mp4ASC->objectTypeIndex == 6 || mp4ASC->objectTypeIndex == 7) | ||
218 | { | ||
219 | result = GASpecificConfig(&ld, mp4ASC, pce); | ||
220 | |||
221 | #ifdef ERROR_RESILIENCE | ||
222 | } else if (mp4ASC->objectTypeIndex >= ER_OBJECT_START) { /* ER */ | ||
223 | result = GASpecificConfig(&ld, mp4ASC, pce); | ||
224 | mp4ASC->epConfig = (uint8_t)faad_getbits(&ld, 2 | ||
225 | DEBUGVAR(1,143,"parse_audio_decoder_specific_info(): epConfig")); | ||
226 | |||
227 | if (mp4ASC->epConfig != 0) | ||
228 | result = -5; | ||
229 | #endif | ||
230 | |||
231 | } else { | ||
232 | result = -4; | ||
233 | } | ||
234 | |||
235 | #ifdef SSR_DEC | ||
236 | /* shorter frames not allowed for SSR */ | ||
237 | if ((mp4ASC->objectTypeIndex == 4) && mp4ASC->frameLengthFlag) | ||
238 | return -6; | ||
239 | #endif | ||
240 | |||
241 | |||
242 | #ifdef SBR_DEC | ||
243 | bits_to_decode = (int8_t)(buffer_size*8 - faad_get_processed_bits(&ld)); | ||
244 | |||
245 | if ((mp4ASC->objectTypeIndex != 5) && (bits_to_decode >= 16)) | ||
246 | { | ||
247 | int16_t syncExtensionType = (int16_t)faad_getbits(&ld, 11 | ||
248 | DEBUGVAR(1,9,"parse_audio_decoder_specific_info(): syncExtensionType")); | ||
249 | |||
250 | if (syncExtensionType == 0x2b7) | ||
251 | { | ||
252 | mp4ASC->objectTypeIndex = (uint8_t)faad_getbits(&ld, 5 | ||
253 | DEBUGVAR(1,10,"parse_audio_decoder_specific_info(): extensionAudioObjectType")); | ||
254 | |||
255 | if (mp4ASC->objectTypeIndex == 5) | ||
256 | { | ||
257 | mp4ASC->sbr_present_flag = (uint8_t)faad_get1bit(&ld | ||
258 | DEBUGVAR(1,11,"parse_audio_decoder_specific_info(): sbr_present_flag")); | ||
259 | |||
260 | if (mp4ASC->sbr_present_flag) | ||
261 | { | ||
262 | uint8_t tmp; | ||
263 | tmp = (uint8_t)faad_getbits(&ld, 4 | ||
264 | DEBUGVAR(1,12,"parse_audio_decoder_specific_info(): extensionSamplingFrequencyIndex")); | ||
265 | |||
266 | /* check for downsampled SBR */ | ||
267 | if (tmp == mp4ASC->samplingFrequencyIndex) | ||
268 | mp4ASC->downSampledSBR = 1; | ||
269 | mp4ASC->samplingFrequencyIndex = tmp; | ||
270 | |||
271 | if (mp4ASC->samplingFrequencyIndex == 15) | ||
272 | { | ||
273 | mp4ASC->samplingFrequency = (uint32_t)faad_getbits(&ld, 24 | ||
274 | DEBUGVAR(1,13,"parse_audio_decoder_specific_info(): extensionSamplingFrequencyIndex")); | ||
275 | } else { | ||
276 | mp4ASC->samplingFrequency = get_sample_rate(mp4ASC->samplingFrequencyIndex); | ||
277 | } | ||
278 | } | ||
279 | } | ||
280 | } | ||
281 | } | ||
282 | |||
283 | /* no SBR signalled, this could mean either implicit signalling or no SBR in this file */ | ||
284 | /* MPEG specification states: assume SBR on files with samplerate <= 24000 Hz */ | ||
285 | if (mp4ASC->sbr_present_flag == -1) | ||
286 | { | ||
287 | if (mp4ASC->samplingFrequency <= 24000) | ||
288 | { | ||
289 | mp4ASC->samplingFrequency *= 2; | ||
290 | mp4ASC->forceUpSampling = 1; | ||
291 | } else /* > 24000*/ { | ||
292 | mp4ASC->downSampledSBR = 1; | ||
293 | } | ||
294 | } | ||
295 | #endif | ||
296 | |||
297 | faad_endbits(&ld); | ||
298 | |||
299 | return result; | ||
300 | } | ||
diff --git a/lib/rbcodec/codecs/libfaad/mp4.h b/lib/rbcodec/codecs/libfaad/mp4.h new file mode 100644 index 0000000000..afcf094796 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/mp4.h | |||
@@ -0,0 +1,51 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __MP4_H__ | ||
29 | #define __MP4_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | #include "decoder.h" | ||
36 | |||
37 | /* rockbox: not used | ||
38 | int8_t NEAACDECAPI NeAACDecAudioSpecificConfig(uint8_t *pBuffer, | ||
39 | uint32_t buffer_size, | ||
40 | mp4AudioSpecificConfig *mp4ASC); | ||
41 | */ | ||
42 | |||
43 | int8_t AudioSpecificConfig2(uint8_t *pBuffer, | ||
44 | uint32_t buffer_size, | ||
45 | mp4AudioSpecificConfig *mp4ASC, | ||
46 | program_config *pce); | ||
47 | |||
48 | #ifdef __cplusplus | ||
49 | } | ||
50 | #endif | ||
51 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/ms.c b/lib/rbcodec/codecs/libfaad/ms.c new file mode 100644 index 0000000000..b42e95a408 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/ms.c | |||
@@ -0,0 +1,73 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #include "common.h" | ||
29 | #include "structs.h" | ||
30 | |||
31 | #include "syntax.h" | ||
32 | #include "ms.h" | ||
33 | #include "is.h" | ||
34 | #include "pns.h" | ||
35 | |||
36 | void ms_decode(ic_stream *ics, ic_stream *icsr, real_t *l_spec, real_t *r_spec, | ||
37 | uint16_t frame_len) | ||
38 | { | ||
39 | uint8_t g, b, sfb; | ||
40 | uint8_t group = 0; | ||
41 | uint16_t nshort = frame_len/8; | ||
42 | |||
43 | uint16_t i, k; | ||
44 | |||
45 | if (ics->ms_mask_present >= 1) | ||
46 | { | ||
47 | for (g = 0; g < ics->num_window_groups; g++) | ||
48 | { | ||
49 | for (b = 0; b < ics->window_group_length[g]; b++) | ||
50 | { | ||
51 | for (sfb = 0; sfb < ics->max_sfb; sfb++) | ||
52 | { | ||
53 | /* If intensity stereo coding or noise substitution is on | ||
54 | for a particular scalefactor band, no M/S stereo decoding | ||
55 | is carried out. | ||
56 | */ | ||
57 | if ((ics->ms_used[g][sfb] || ics->ms_mask_present == 2) && | ||
58 | !is_intensity(icsr, g, sfb) && !is_noise(ics, g, sfb)) | ||
59 | { | ||
60 | k = (group*nshort) + ics->swb_offset[sfb]; | ||
61 | for (i = ics->swb_offset[sfb]; i < ics->swb_offset[sfb+1]; i++, k++) | ||
62 | { | ||
63 | /* L' = L+R, R' = L-R */ | ||
64 | l_spec[k] = l_spec[k] + r_spec[k]; | ||
65 | r_spec[k] = l_spec[k] - (r_spec[k]<<1); | ||
66 | } | ||
67 | } | ||
68 | } | ||
69 | group++; | ||
70 | } | ||
71 | } | ||
72 | } | ||
73 | } | ||
diff --git a/lib/rbcodec/codecs/libfaad/ms.h b/lib/rbcodec/codecs/libfaad/ms.h new file mode 100644 index 0000000000..384fa4294b --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/ms.h | |||
@@ -0,0 +1,41 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __MS_H__ | ||
29 | #define __MS_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | void ms_decode(ic_stream *ics, ic_stream *icsr, real_t *l_spec, real_t *r_spec, | ||
36 | uint16_t frame_len); | ||
37 | |||
38 | #ifdef __cplusplus | ||
39 | } | ||
40 | #endif | ||
41 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/output.c b/lib/rbcodec/codecs/libfaad/output.c new file mode 100644 index 0000000000..6594582bbd --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/output.c | |||
@@ -0,0 +1,557 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #include "common.h" | ||
29 | #include "structs.h" | ||
30 | |||
31 | #include "output.h" | ||
32 | #include "decoder.h" | ||
33 | |||
34 | #ifndef FIXED_POINT | ||
35 | |||
36 | |||
37 | #define FLOAT_SCALE (1.0f/(1<<15)) | ||
38 | |||
39 | #define DM_MUL REAL_CONST(0.3203772410170407) // 1/(1+sqrt(2) + 1/sqrt(2)) | ||
40 | #define RSQRT2 REAL_CONST(0.7071067811865475244) // 1/sqrt(2) | ||
41 | |||
42 | |||
43 | static INLINE real_t get_sample(real_t **input, uint8_t channel, uint16_t sample, | ||
44 | uint8_t down_matrix, uint8_t *internal_channel) | ||
45 | { | ||
46 | if (!down_matrix) | ||
47 | return input[internal_channel[channel]][sample]; | ||
48 | |||
49 | if (channel == 0) | ||
50 | { | ||
51 | return DM_MUL * (input[internal_channel[1]][sample] + | ||
52 | input[internal_channel[0]][sample] * RSQRT2 + | ||
53 | input[internal_channel[3]][sample] * RSQRT2); | ||
54 | } else { | ||
55 | return DM_MUL * (input[internal_channel[2]][sample] + | ||
56 | input[internal_channel[0]][sample] * RSQRT2 + | ||
57 | input[internal_channel[4]][sample] * RSQRT2); | ||
58 | } | ||
59 | } | ||
60 | |||
61 | #ifndef HAS_LRINTF | ||
62 | #define CLIP(sample, max, min) \ | ||
63 | if (sample >= 0.0f) \ | ||
64 | { \ | ||
65 | sample += 0.5f; \ | ||
66 | if (sample >= max) \ | ||
67 | sample = max; \ | ||
68 | } else { \ | ||
69 | sample += -0.5f; \ | ||
70 | if (sample <= min) \ | ||
71 | sample = min; \ | ||
72 | } | ||
73 | #else | ||
74 | #define CLIP(sample, max, min) \ | ||
75 | if (sample >= 0.0f) \ | ||
76 | { \ | ||
77 | if (sample >= max) \ | ||
78 | sample = max; \ | ||
79 | } else { \ | ||
80 | if (sample <= min) \ | ||
81 | sample = min; \ | ||
82 | } | ||
83 | #endif | ||
84 | |||
85 | #define CONV(a,b) ((a<<1)|(b&0x1)) | ||
86 | |||
87 | static void to_PCM_16bit(NeAACDecHandle hDecoder, real_t **input, | ||
88 | uint8_t channels, uint16_t frame_len, | ||
89 | int16_t **sample_buffer) | ||
90 | { | ||
91 | uint8_t ch, ch1; | ||
92 | uint16_t i; | ||
93 | |||
94 | switch (CONV(channels,hDecoder->downMatrix)) | ||
95 | { | ||
96 | case CONV(1,0): | ||
97 | case CONV(1,1): | ||
98 | for(i = 0; i < frame_len; i++) | ||
99 | { | ||
100 | real_t inp = input[hDecoder->internal_channel[0]][i]; | ||
101 | |||
102 | CLIP(inp, 32767.0f, -32768.0f); | ||
103 | |||
104 | (*sample_buffer)[i] = (int16_t)lrintf(inp); | ||
105 | } | ||
106 | break; | ||
107 | case CONV(2,0): | ||
108 | if (hDecoder->upMatrix) | ||
109 | { | ||
110 | ch = hDecoder->internal_channel[0]; | ||
111 | for(i = 0; i < frame_len; i++) | ||
112 | { | ||
113 | real_t inp0 = input[ch][i]; | ||
114 | |||
115 | CLIP(inp0, 32767.0f, -32768.0f); | ||
116 | |||
117 | (*sample_buffer)[(i*2)+0] = (int16_t)lrintf(inp0); | ||
118 | (*sample_buffer)[(i*2)+1] = (int16_t)lrintf(inp0); | ||
119 | } | ||
120 | } else { | ||
121 | ch = hDecoder->internal_channel[0]; | ||
122 | ch1 = hDecoder->internal_channel[1]; | ||
123 | for(i = 0; i < frame_len; i++) | ||
124 | { | ||
125 | real_t inp0 = input[ch ][i]; | ||
126 | real_t inp1 = input[ch1][i]; | ||
127 | |||
128 | CLIP(inp0, 32767.0f, -32768.0f); | ||
129 | CLIP(inp1, 32767.0f, -32768.0f); | ||
130 | |||
131 | (*sample_buffer)[(i*2)+0] = (int16_t)lrintf(inp0); | ||
132 | (*sample_buffer)[(i*2)+1] = (int16_t)lrintf(inp1); | ||
133 | } | ||
134 | } | ||
135 | break; | ||
136 | default: | ||
137 | for (ch = 0; ch < channels; ch++) | ||
138 | { | ||
139 | for(i = 0; i < frame_len; i++) | ||
140 | { | ||
141 | real_t inp = get_sample(input, ch, i, hDecoder->downMatrix, hDecoder->internal_channel); | ||
142 | |||
143 | CLIP(inp, 32767.0f, -32768.0f); | ||
144 | |||
145 | (*sample_buffer)[(i*channels)+ch] = (int16_t)lrintf(inp); | ||
146 | } | ||
147 | } | ||
148 | break; | ||
149 | } | ||
150 | } | ||
151 | |||
152 | static void to_PCM_24bit(NeAACDecHandle hDecoder, real_t **input, | ||
153 | uint8_t channels, uint16_t frame_len, | ||
154 | int32_t **sample_buffer) | ||
155 | { | ||
156 | uint8_t ch, ch1; | ||
157 | uint16_t i; | ||
158 | |||
159 | switch (CONV(channels,hDecoder->downMatrix)) | ||
160 | { | ||
161 | case CONV(1,0): | ||
162 | case CONV(1,1): | ||
163 | for(i = 0; i < frame_len; i++) | ||
164 | { | ||
165 | real_t inp = input[hDecoder->internal_channel[0]][i]; | ||
166 | |||
167 | inp *= 256.0f; | ||
168 | CLIP(inp, 8388607.0f, -8388608.0f); | ||
169 | |||
170 | (*sample_buffer)[i] = (int32_t)lrintf(inp); | ||
171 | } | ||
172 | break; | ||
173 | case CONV(2,0): | ||
174 | if (hDecoder->upMatrix) | ||
175 | { | ||
176 | ch = hDecoder->internal_channel[0]; | ||
177 | for(i = 0; i < frame_len; i++) | ||
178 | { | ||
179 | real_t inp0 = input[ch][i]; | ||
180 | |||
181 | inp0 *= 256.0f; | ||
182 | CLIP(inp0, 8388607.0f, -8388608.0f); | ||
183 | |||
184 | (*sample_buffer)[(i*2)+0] = (int32_t)lrintf(inp0); | ||
185 | (*sample_buffer)[(i*2)+1] = (int32_t)lrintf(inp0); | ||
186 | } | ||
187 | } else { | ||
188 | ch = hDecoder->internal_channel[0]; | ||
189 | ch1 = hDecoder->internal_channel[1]; | ||
190 | for(i = 0; i < frame_len; i++) | ||
191 | { | ||
192 | real_t inp0 = input[ch ][i]; | ||
193 | real_t inp1 = input[ch1][i]; | ||
194 | |||
195 | inp0 *= 256.0f; | ||
196 | inp1 *= 256.0f; | ||
197 | CLIP(inp0, 8388607.0f, -8388608.0f); | ||
198 | CLIP(inp1, 8388607.0f, -8388608.0f); | ||
199 | |||
200 | (*sample_buffer)[(i*2)+0] = (int32_t)lrintf(inp0); | ||
201 | (*sample_buffer)[(i*2)+1] = (int32_t)lrintf(inp1); | ||
202 | } | ||
203 | } | ||
204 | break; | ||
205 | default: | ||
206 | for (ch = 0; ch < channels; ch++) | ||
207 | { | ||
208 | for(i = 0; i < frame_len; i++) | ||
209 | { | ||
210 | real_t inp = get_sample(input, ch, i, hDecoder->downMatrix, hDecoder->internal_channel); | ||
211 | |||
212 | inp *= 256.0f; | ||
213 | CLIP(inp, 8388607.0f, -8388608.0f); | ||
214 | |||
215 | (*sample_buffer)[(i*channels)+ch] = (int32_t)lrintf(inp); | ||
216 | } | ||
217 | } | ||
218 | break; | ||
219 | } | ||
220 | } | ||
221 | |||
222 | static void to_PCM_32bit(NeAACDecHandle hDecoder, real_t **input, | ||
223 | uint8_t channels, uint16_t frame_len, | ||
224 | int32_t **sample_buffer) | ||
225 | { | ||
226 | uint8_t ch, ch1; | ||
227 | uint16_t i; | ||
228 | |||
229 | switch (CONV(channels,hDecoder->downMatrix)) | ||
230 | { | ||
231 | case CONV(1,0): | ||
232 | case CONV(1,1): | ||
233 | for(i = 0; i < frame_len; i++) | ||
234 | { | ||
235 | real_t inp = input[hDecoder->internal_channel[0]][i]; | ||
236 | |||
237 | inp *= 65536.0f; | ||
238 | CLIP(inp, 2147483647.0f, -2147483648.0f); | ||
239 | |||
240 | (*sample_buffer)[i] = (int32_t)lrintf(inp); | ||
241 | } | ||
242 | break; | ||
243 | case CONV(2,0): | ||
244 | if (hDecoder->upMatrix) | ||
245 | { | ||
246 | ch = hDecoder->internal_channel[0]; | ||
247 | for(i = 0; i < frame_len; i++) | ||
248 | { | ||
249 | real_t inp0 = input[ch][i]; | ||
250 | |||
251 | inp0 *= 65536.0f; | ||
252 | CLIP(inp0, 2147483647.0f, -2147483648.0f); | ||
253 | |||
254 | (*sample_buffer)[(i*2)+0] = (int32_t)lrintf(inp0); | ||
255 | (*sample_buffer)[(i*2)+1] = (int32_t)lrintf(inp0); | ||
256 | } | ||
257 | } else { | ||
258 | ch = hDecoder->internal_channel[0]; | ||
259 | ch1 = hDecoder->internal_channel[1]; | ||
260 | for(i = 0; i < frame_len; i++) | ||
261 | { | ||
262 | real_t inp0 = input[ch ][i]; | ||
263 | real_t inp1 = input[ch1][i]; | ||
264 | |||
265 | inp0 *= 65536.0f; | ||
266 | inp1 *= 65536.0f; | ||
267 | CLIP(inp0, 2147483647.0f, -2147483648.0f); | ||
268 | CLIP(inp1, 2147483647.0f, -2147483648.0f); | ||
269 | |||
270 | (*sample_buffer)[(i*2)+0] = (int32_t)lrintf(inp0); | ||
271 | (*sample_buffer)[(i*2)+1] = (int32_t)lrintf(inp1); | ||
272 | } | ||
273 | } | ||
274 | break; | ||
275 | default: | ||
276 | for (ch = 0; ch < channels; ch++) | ||
277 | { | ||
278 | for(i = 0; i < frame_len; i++) | ||
279 | { | ||
280 | real_t inp = get_sample(input, ch, i, hDecoder->downMatrix, hDecoder->internal_channel); | ||
281 | |||
282 | inp *= 65536.0f; | ||
283 | CLIP(inp, 2147483647.0f, -2147483648.0f); | ||
284 | |||
285 | (*sample_buffer)[(i*channels)+ch] = (int32_t)lrintf(inp); | ||
286 | } | ||
287 | } | ||
288 | break; | ||
289 | } | ||
290 | } | ||
291 | |||
292 | static void to_PCM_float(NeAACDecHandle hDecoder, real_t **input, | ||
293 | uint8_t channels, uint16_t frame_len, | ||
294 | float32_t **sample_buffer) | ||
295 | { | ||
296 | uint8_t ch, ch1; | ||
297 | uint16_t i; | ||
298 | |||
299 | switch (CONV(channels,hDecoder->downMatrix)) | ||
300 | { | ||
301 | case CONV(1,0): | ||
302 | case CONV(1,1): | ||
303 | for(i = 0; i < frame_len; i++) | ||
304 | { | ||
305 | real_t inp = input[hDecoder->internal_channel[0]][i]; | ||
306 | (*sample_buffer)[i] = inp*FLOAT_SCALE; | ||
307 | } | ||
308 | break; | ||
309 | case CONV(2,0): | ||
310 | if (hDecoder->upMatrix) | ||
311 | { | ||
312 | ch = hDecoder->internal_channel[0]; | ||
313 | for(i = 0; i < frame_len; i++) | ||
314 | { | ||
315 | real_t inp0 = input[ch][i]; | ||
316 | (*sample_buffer)[(i*2)+0] = inp0*FLOAT_SCALE; | ||
317 | (*sample_buffer)[(i*2)+1] = inp0*FLOAT_SCALE; | ||
318 | } | ||
319 | } else { | ||
320 | ch = hDecoder->internal_channel[0]; | ||
321 | ch1 = hDecoder->internal_channel[1]; | ||
322 | for(i = 0; i < frame_len; i++) | ||
323 | { | ||
324 | real_t inp0 = input[ch ][i]; | ||
325 | real_t inp1 = input[ch1][i]; | ||
326 | (*sample_buffer)[(i*2)+0] = inp0*FLOAT_SCALE; | ||
327 | (*sample_buffer)[(i*2)+1] = inp1*FLOAT_SCALE; | ||
328 | } | ||
329 | } | ||
330 | break; | ||
331 | default: | ||
332 | for (ch = 0; ch < channels; ch++) | ||
333 | { | ||
334 | for(i = 0; i < frame_len; i++) | ||
335 | { | ||
336 | real_t inp = get_sample(input, ch, i, hDecoder->downMatrix, hDecoder->internal_channel); | ||
337 | (*sample_buffer)[(i*channels)+ch] = inp*FLOAT_SCALE; | ||
338 | } | ||
339 | } | ||
340 | break; | ||
341 | } | ||
342 | } | ||
343 | |||
344 | static void to_PCM_double(NeAACDecHandle hDecoder, real_t **input, | ||
345 | uint8_t channels, uint16_t frame_len, | ||
346 | double **sample_buffer) | ||
347 | { | ||
348 | uint8_t ch, ch1; | ||
349 | uint16_t i; | ||
350 | |||
351 | switch (CONV(channels,hDecoder->downMatrix)) | ||
352 | { | ||
353 | case CONV(1,0): | ||
354 | case CONV(1,1): | ||
355 | for(i = 0; i < frame_len; i++) | ||
356 | { | ||
357 | real_t inp = input[hDecoder->internal_channel[0]][i]; | ||
358 | (*sample_buffer)[i] = (double)inp*FLOAT_SCALE; | ||
359 | } | ||
360 | break; | ||
361 | case CONV(2,0): | ||
362 | if (hDecoder->upMatrix) | ||
363 | { | ||
364 | ch = hDecoder->internal_channel[0]; | ||
365 | for(i = 0; i < frame_len; i++) | ||
366 | { | ||
367 | real_t inp0 = input[ch][i]; | ||
368 | (*sample_buffer)[(i*2)+0] = (double)inp0*FLOAT_SCALE; | ||
369 | (*sample_buffer)[(i*2)+1] = (double)inp0*FLOAT_SCALE; | ||
370 | } | ||
371 | } else { | ||
372 | ch = hDecoder->internal_channel[0]; | ||
373 | ch1 = hDecoder->internal_channel[1]; | ||
374 | for(i = 0; i < frame_len; i++) | ||
375 | { | ||
376 | real_t inp0 = input[ch ][i]; | ||
377 | real_t inp1 = input[ch1][i]; | ||
378 | (*sample_buffer)[(i*2)+0] = (double)inp0*FLOAT_SCALE; | ||
379 | (*sample_buffer)[(i*2)+1] = (double)inp1*FLOAT_SCALE; | ||
380 | } | ||
381 | } | ||
382 | break; | ||
383 | default: | ||
384 | for (ch = 0; ch < channels; ch++) | ||
385 | { | ||
386 | for(i = 0; i < frame_len; i++) | ||
387 | { | ||
388 | real_t inp = get_sample(input, ch, i, hDecoder->downMatrix, hDecoder->internal_channel); | ||
389 | (*sample_buffer)[(i*channels)+ch] = (double)inp*FLOAT_SCALE; | ||
390 | } | ||
391 | } | ||
392 | break; | ||
393 | } | ||
394 | } | ||
395 | |||
396 | void *output_to_PCM(NeAACDecHandle hDecoder, | ||
397 | real_t **input, void *sample_buffer, uint8_t channels, | ||
398 | uint16_t frame_len, uint8_t format) | ||
399 | { | ||
400 | int16_t *short_sample_buffer = (int16_t*)sample_buffer; | ||
401 | int32_t *int_sample_buffer = (int32_t*)sample_buffer; | ||
402 | float32_t *float_sample_buffer = (float32_t*)sample_buffer; | ||
403 | double *double_sample_buffer = (double*)sample_buffer; | ||
404 | |||
405 | #ifdef PROFILE | ||
406 | int64_t count = faad_get_ts(); | ||
407 | #endif | ||
408 | |||
409 | /* Copy output to a standard PCM buffer */ | ||
410 | switch (format) | ||
411 | { | ||
412 | case FAAD_FMT_16BIT: | ||
413 | to_PCM_16bit(hDecoder, input, channels, frame_len, &short_sample_buffer); | ||
414 | break; | ||
415 | case FAAD_FMT_24BIT: | ||
416 | to_PCM_24bit(hDecoder, input, channels, frame_len, &int_sample_buffer); | ||
417 | break; | ||
418 | case FAAD_FMT_32BIT: | ||
419 | to_PCM_32bit(hDecoder, input, channels, frame_len, &int_sample_buffer); | ||
420 | break; | ||
421 | case FAAD_FMT_FLOAT: | ||
422 | to_PCM_float(hDecoder, input, channels, frame_len, &float_sample_buffer); | ||
423 | break; | ||
424 | case FAAD_FMT_DOUBLE: | ||
425 | to_PCM_double(hDecoder, input, channels, frame_len, &double_sample_buffer); | ||
426 | break; | ||
427 | } | ||
428 | |||
429 | #ifdef PROFILE | ||
430 | count = faad_get_ts() - count; | ||
431 | hDecoder->output_cycles += count; | ||
432 | #endif | ||
433 | |||
434 | return sample_buffer; | ||
435 | } | ||
436 | |||
437 | #else | ||
438 | |||
439 | #define DM_MUL FRAC_CONST(0.3203772410170407) // 1/(1+sqrt(2) + 1/sqrt(2)) | ||
440 | #define RSQRT2 FRAC_CONST(0.7071067811865475244) // 1/sqrt(2) | ||
441 | |||
442 | static INLINE real_t get_sample(real_t **input, uint8_t channel, uint16_t sample, | ||
443 | uint8_t down_matrix, uint8_t up_matrix, | ||
444 | uint8_t *internal_channel) | ||
445 | { | ||
446 | if (up_matrix == 1) | ||
447 | return input[internal_channel[0]][sample]; | ||
448 | |||
449 | if (!down_matrix) | ||
450 | return input[internal_channel[channel]][sample]; | ||
451 | |||
452 | if (channel == 0) | ||
453 | { | ||
454 | real_t C = MUL_F(input[internal_channel[0]][sample], RSQRT2); | ||
455 | real_t L_S = MUL_F(input[internal_channel[3]][sample], RSQRT2); | ||
456 | real_t cum = input[internal_channel[1]][sample] + C + L_S; | ||
457 | return MUL_F(cum, DM_MUL); | ||
458 | } else { | ||
459 | real_t C = MUL_F(input[internal_channel[0]][sample], RSQRT2); | ||
460 | real_t R_S = MUL_F(input[internal_channel[4]][sample], RSQRT2); | ||
461 | real_t cum = input[internal_channel[2]][sample] + C + R_S; | ||
462 | return MUL_F(cum, DM_MUL); | ||
463 | } | ||
464 | } | ||
465 | |||
466 | void* output_to_PCM(NeAACDecHandle hDecoder, | ||
467 | real_t **input, void *sample_buffer, uint8_t channels, | ||
468 | uint16_t frame_len, uint8_t format) | ||
469 | { | ||
470 | uint8_t ch; | ||
471 | uint16_t i; | ||
472 | int16_t *short_sample_buffer = (int16_t*)sample_buffer; | ||
473 | int32_t *int_sample_buffer = (int32_t*)sample_buffer; | ||
474 | |||
475 | /* Copy output to a standard PCM buffer */ | ||
476 | for (ch = 0; ch < channels; ch++) | ||
477 | { | ||
478 | switch (format) | ||
479 | { | ||
480 | case FAAD_FMT_16BIT: | ||
481 | for(i = 0; i < frame_len; i++) | ||
482 | { | ||
483 | int32_t tmp = get_sample(input, ch, i, hDecoder->downMatrix, hDecoder->upMatrix, | ||
484 | hDecoder->internal_channel); | ||
485 | if (tmp >= 0) | ||
486 | { | ||
487 | tmp += (1 << (REAL_BITS-1)); | ||
488 | if (tmp >= REAL_CONST(32767)) | ||
489 | { | ||
490 | tmp = REAL_CONST(32767); | ||
491 | } | ||
492 | } else { | ||
493 | tmp += -(1 << (REAL_BITS-1)); | ||
494 | if (tmp <= REAL_CONST(-32768)) | ||
495 | { | ||
496 | tmp = REAL_CONST(-32768); | ||
497 | } | ||
498 | } | ||
499 | tmp >>= REAL_BITS; | ||
500 | short_sample_buffer[(i*channels)+ch] = (int16_t)tmp; | ||
501 | } | ||
502 | break; | ||
503 | case FAAD_FMT_24BIT: | ||
504 | for(i = 0; i < frame_len; i++) | ||
505 | { | ||
506 | int32_t tmp = get_sample(input, ch, i, hDecoder->downMatrix, hDecoder->upMatrix, | ||
507 | hDecoder->internal_channel); | ||
508 | if (tmp >= 0) | ||
509 | { | ||
510 | tmp += (1 << (REAL_BITS-9)); | ||
511 | tmp >>= (REAL_BITS-8); | ||
512 | if (tmp >= 8388607) | ||
513 | { | ||
514 | tmp = 8388607; | ||
515 | } | ||
516 | } else { | ||
517 | tmp += -(1 << (REAL_BITS-9)); | ||
518 | tmp >>= (REAL_BITS-8); | ||
519 | if (tmp <= -8388608) | ||
520 | { | ||
521 | tmp = -8388608; | ||
522 | } | ||
523 | } | ||
524 | int_sample_buffer[(i*channels)+ch] = (int32_t)tmp; | ||
525 | } | ||
526 | break; | ||
527 | case FAAD_FMT_32BIT: | ||
528 | for(i = 0; i < frame_len; i++) | ||
529 | { | ||
530 | int32_t tmp = get_sample(input, ch, i, hDecoder->downMatrix, hDecoder->upMatrix, | ||
531 | hDecoder->internal_channel); | ||
532 | if (tmp >= 0) | ||
533 | { | ||
534 | tmp += (1 << (16-REAL_BITS-1)); | ||
535 | tmp <<= (16-REAL_BITS); | ||
536 | } else { | ||
537 | tmp += -(1 << (16-REAL_BITS-1)); | ||
538 | tmp <<= (16-REAL_BITS); | ||
539 | } | ||
540 | int_sample_buffer[(i*channels)+ch] = (int32_t)tmp; | ||
541 | } | ||
542 | break; | ||
543 | case FAAD_FMT_FIXED: | ||
544 | for(i = 0; i < frame_len; i++) | ||
545 | { | ||
546 | real_t tmp = get_sample(input, ch, i, hDecoder->downMatrix, hDecoder->upMatrix, | ||
547 | hDecoder->internal_channel); | ||
548 | int_sample_buffer[(i*channels)+ch] = (int32_t)tmp; | ||
549 | } | ||
550 | break; | ||
551 | } | ||
552 | } | ||
553 | |||
554 | return sample_buffer; | ||
555 | } | ||
556 | |||
557 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/output.h b/lib/rbcodec/codecs/libfaad/output.h new file mode 100644 index 0000000000..9fe8356541 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/output.h | |||
@@ -0,0 +1,45 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __OUTPUT_H__ | ||
29 | #define __OUTPUT_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | void* output_to_PCM(NeAACDecHandle hDecoder, | ||
36 | real_t **input, | ||
37 | void *samplebuffer, | ||
38 | uint8_t channels, | ||
39 | uint16_t frame_len, | ||
40 | uint8_t format); | ||
41 | |||
42 | #ifdef __cplusplus | ||
43 | } | ||
44 | #endif | ||
45 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/pns.c b/lib/rbcodec/codecs/libfaad/pns.c new file mode 100644 index 0000000000..b75cf9f1ed --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/pns.c | |||
@@ -0,0 +1,263 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #include "common.h" | ||
29 | #include "structs.h" | ||
30 | |||
31 | #include "pns.h" | ||
32 | |||
33 | |||
34 | /* static function declarations */ | ||
35 | static void gen_rand_vector(real_t *spec, int16_t scale_factor, uint16_t size, | ||
36 | uint8_t sub); | ||
37 | |||
38 | |||
39 | #ifdef FIXED_POINT | ||
40 | |||
41 | #define step(shift) \ | ||
42 | if ((0x40000000l >> shift) + root <= value) \ | ||
43 | { \ | ||
44 | value -= (0x40000000l >> shift) + root; \ | ||
45 | root = (root >> 1) | (0x40000000l >> shift); \ | ||
46 | } else { \ | ||
47 | root = root >> 1; \ | ||
48 | } | ||
49 | |||
50 | /* fixed point square root approximation */ | ||
51 | /* !!!! ONLY WORKS FOR EVEN %REAL_BITS% !!!! */ | ||
52 | static real_t fp_sqrt(real_t value) | ||
53 | { | ||
54 | real_t root = 0; | ||
55 | |||
56 | step( 0); step( 2); step( 4); step( 6); | ||
57 | step( 8); step(10); step(12); step(14); | ||
58 | step(16); step(18); step(20); step(22); | ||
59 | step(24); step(26); step(28); step(30); | ||
60 | |||
61 | if (root < value) | ||
62 | ++root; | ||
63 | |||
64 | root <<= (REAL_BITS/2); | ||
65 | |||
66 | return root; | ||
67 | } | ||
68 | |||
69 | static real_t pow2_table[] = | ||
70 | { | ||
71 | COEF_CONST(1.0), | ||
72 | COEF_CONST(1.18920711500272), | ||
73 | COEF_CONST(1.41421356237310), | ||
74 | COEF_CONST(1.68179283050743) | ||
75 | }; | ||
76 | #endif | ||
77 | |||
78 | /* The function gen_rand_vector(addr, size) generates a vector of length | ||
79 | <size> with signed random values of average energy MEAN_NRG per random | ||
80 | value. A suitable random number generator can be realized using one | ||
81 | multiplication/accumulation per random value. | ||
82 | */ | ||
83 | static INLINE void gen_rand_vector(real_t *spec, int16_t scale_factor, uint16_t size, | ||
84 | uint8_t sub) | ||
85 | { | ||
86 | #ifndef FIXED_POINT | ||
87 | uint16_t i; | ||
88 | real_t energy = 0.0; | ||
89 | |||
90 | real_t scale = (real_t)1.0/(real_t)size; | ||
91 | |||
92 | for (i = 0; i < size; i++) | ||
93 | { | ||
94 | real_t tmp = scale*(real_t)(int32_t)random_int(); | ||
95 | spec[i] = tmp; | ||
96 | energy += tmp*tmp; | ||
97 | } | ||
98 | |||
99 | scale = (real_t)1.0/(real_t)sqrt(energy); | ||
100 | scale *= (real_t)pow(2.0, 0.25 * scale_factor); | ||
101 | for (i = 0; i < size; i++) | ||
102 | { | ||
103 | spec[i] *= scale; | ||
104 | } | ||
105 | #else | ||
106 | uint16_t i; | ||
107 | real_t energy = 0, scale; | ||
108 | int32_t exp, frac; | ||
109 | |||
110 | for (i = 0; i < size; i++) | ||
111 | { | ||
112 | /* this can be replaced by a 16 bit random generator!!!! */ | ||
113 | real_t tmp = (int32_t)random_int(); | ||
114 | if (tmp < 0) | ||
115 | tmp = -(tmp & ((1<<(REAL_BITS-1))-1)); | ||
116 | else | ||
117 | tmp = (tmp & ((1<<(REAL_BITS-1))-1)); | ||
118 | |||
119 | energy += MUL_R(tmp,tmp); | ||
120 | |||
121 | spec[i] = tmp; | ||
122 | } | ||
123 | |||
124 | energy = fp_sqrt(energy); | ||
125 | if (energy > 0) | ||
126 | { | ||
127 | scale = DIV_R(REAL_CONST(1), energy); | ||
128 | |||
129 | exp = scale_factor >> 2; | ||
130 | frac = scale_factor & 3; | ||
131 | |||
132 | /* IMDCT pre-scaling */ | ||
133 | exp -= sub; | ||
134 | |||
135 | if (exp < 0) | ||
136 | scale >>= -exp; | ||
137 | else | ||
138 | scale <<= exp; | ||
139 | |||
140 | if (frac) | ||
141 | scale = MUL_C(scale, pow2_table[frac]); | ||
142 | |||
143 | for (i = 0; i < size; i++) | ||
144 | { | ||
145 | spec[i] = MUL_R(spec[i], scale); | ||
146 | } | ||
147 | } | ||
148 | #endif | ||
149 | } | ||
150 | |||
151 | void pns_decode(ic_stream *ics_left, ic_stream *ics_right, | ||
152 | real_t *spec_left, real_t *spec_right, uint16_t frame_len, | ||
153 | uint8_t channel_pair, uint8_t object_type) | ||
154 | { | ||
155 | uint8_t g, sfb, b; | ||
156 | uint16_t size, offs; | ||
157 | |||
158 | uint8_t group = 0; | ||
159 | uint16_t nshort = frame_len >> 3; | ||
160 | |||
161 | uint8_t sub = 0; | ||
162 | |||
163 | #ifdef FIXED_POINT | ||
164 | /* IMDCT scaling */ | ||
165 | if (object_type == LD) | ||
166 | { | ||
167 | sub = 9 /*9*/; | ||
168 | } else { | ||
169 | if (ics_left->window_sequence == EIGHT_SHORT_SEQUENCE) | ||
170 | sub = 7 /*7*/; | ||
171 | else | ||
172 | sub = 10 /*10*/; | ||
173 | } | ||
174 | #endif | ||
175 | |||
176 | for (g = 0; g < ics_left->num_window_groups; g++) | ||
177 | { | ||
178 | /* Do perceptual noise substitution decoding */ | ||
179 | for (b = 0; b < ics_left->window_group_length[g]; b++) | ||
180 | { | ||
181 | for (sfb = 0; sfb < ics_left->max_sfb; sfb++) | ||
182 | { | ||
183 | if (is_noise(ics_left, g, sfb)) | ||
184 | { | ||
185 | #ifdef LTP_DEC | ||
186 | /* Simultaneous use of LTP and PNS is not prevented in the | ||
187 | syntax. If both LTP, and PNS are enabled on the same | ||
188 | scalefactor band, PNS takes precedence, and no prediction | ||
189 | is applied to this band. | ||
190 | */ | ||
191 | ics_left->ltp.long_used[sfb] = 0; | ||
192 | ics_left->ltp2.long_used[sfb] = 0; | ||
193 | #endif | ||
194 | |||
195 | #ifdef MAIN_DEC | ||
196 | /* For scalefactor bands coded using PNS the corresponding | ||
197 | predictors are switched to "off". | ||
198 | */ | ||
199 | ics_left->pred.prediction_used[sfb] = 0; | ||
200 | #endif | ||
201 | |||
202 | offs = ics_left->swb_offset[sfb]; | ||
203 | size = ics_left->swb_offset[sfb+1] - offs; | ||
204 | |||
205 | /* Generate random vector */ | ||
206 | gen_rand_vector(&spec_left[(group*nshort)+offs], | ||
207 | ics_left->scale_factors[g][sfb], size, sub); | ||
208 | } | ||
209 | |||
210 | /* From the spec: | ||
211 | If the same scalefactor band and group is coded by perceptual noise | ||
212 | substitution in both channels of a channel pair, the correlation of | ||
213 | the noise signal can be controlled by means of the ms_used field: While | ||
214 | the default noise generation process works independently for each channel | ||
215 | (separate generation of random vectors), the same random vector is used | ||
216 | for both channels if ms_used[] is set for a particular scalefactor band | ||
217 | and group. In this case, no M/S stereo coding is carried out (because M/S | ||
218 | stereo coding and noise substitution coding are mutually exclusive). | ||
219 | If the same scalefactor band and group is coded by perceptual noise | ||
220 | substitution in only one channel of a channel pair the setting of ms_used[] | ||
221 | is not evaluated. | ||
222 | */ | ||
223 | if (channel_pair) | ||
224 | { | ||
225 | if (is_noise(ics_right, g, sfb)) | ||
226 | { | ||
227 | if (((ics_left->ms_mask_present == 1) && | ||
228 | (ics_left->ms_used[g][sfb])) || | ||
229 | (ics_left->ms_mask_present == 2)) | ||
230 | { | ||
231 | uint16_t c; | ||
232 | |||
233 | offs = ics_right->swb_offset[sfb]; | ||
234 | size = ics_right->swb_offset[sfb+1] - offs; | ||
235 | |||
236 | for (c = 0; c < size; c++) | ||
237 | { | ||
238 | spec_right[(group*nshort) + offs + c] = | ||
239 | spec_left[(group*nshort) + offs + c]; | ||
240 | } | ||
241 | } else /*if (ics_left->ms_mask_present == 0)*/ { | ||
242 | #ifdef LTP_DEC | ||
243 | ics_right->ltp.long_used[sfb] = 0; | ||
244 | ics_right->ltp2.long_used[sfb] = 0; | ||
245 | #endif | ||
246 | #ifdef MAIN_DEC | ||
247 | ics_right->pred.prediction_used[sfb] = 0; | ||
248 | #endif | ||
249 | |||
250 | offs = ics_right->swb_offset[sfb]; | ||
251 | size = ics_right->swb_offset[sfb+1] - offs; | ||
252 | |||
253 | /* Generate random vector */ | ||
254 | gen_rand_vector(&spec_right[(group*nshort)+offs], | ||
255 | ics_right->scale_factors[g][sfb], size, sub); | ||
256 | } | ||
257 | } | ||
258 | } | ||
259 | } /* sfb */ | ||
260 | group++; | ||
261 | } /* b */ | ||
262 | } /* g */ | ||
263 | } | ||
diff --git a/lib/rbcodec/codecs/libfaad/pns.h b/lib/rbcodec/codecs/libfaad/pns.h new file mode 100644 index 0000000000..e789f5708a --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/pns.h | |||
@@ -0,0 +1,53 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __PNS_H__ | ||
29 | #define __PNS_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | #include "syntax.h" | ||
36 | |||
37 | #define NOISE_OFFSET 90 | ||
38 | |||
39 | void pns_decode(ic_stream *ics_left, ic_stream *ics_right, | ||
40 | real_t *spec_left, real_t *spec_right, uint16_t frame_len, | ||
41 | uint8_t channel_pair, uint8_t object_type); | ||
42 | |||
43 | static INLINE uint8_t is_noise(ic_stream *ics, uint8_t group, uint8_t sfb) | ||
44 | { | ||
45 | if (ics->sfb_cb[group][sfb] == NOISE_HCB) | ||
46 | return 1; | ||
47 | return 0; | ||
48 | } | ||
49 | |||
50 | #ifdef __cplusplus | ||
51 | } | ||
52 | #endif | ||
53 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/ps_dec.c b/lib/rbcodec/codecs/libfaad/ps_dec.c new file mode 100644 index 0000000000..3fed4e6a0a --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/ps_dec.c | |||
@@ -0,0 +1,1938 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR and PS decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #include "common.h" | ||
29 | |||
30 | #ifdef PS_DEC | ||
31 | |||
32 | #include <stdlib.h> | ||
33 | #include "ps_dec.h" | ||
34 | #include "ps_tables.h" | ||
35 | |||
36 | /* constants */ | ||
37 | #define NEGATE_IPD_MASK (0x1000) | ||
38 | #define DECAY_SLOPE FRAC_CONST(0.05) | ||
39 | #define COEF_SQRT2 COEF_CONST(1.4142135623731) | ||
40 | |||
41 | /* tables */ | ||
42 | /* filters are mirrored in coef 6, second half left out */ | ||
43 | static const real_t p8_13_20[7] = | ||
44 | { | ||
45 | FRAC_CONST(0.00746082949812), | ||
46 | FRAC_CONST(0.02270420949825), | ||
47 | FRAC_CONST(0.04546865930473), | ||
48 | FRAC_CONST(0.07266113929591), | ||
49 | FRAC_CONST(0.09885108575264), | ||
50 | FRAC_CONST(0.11793710567217), | ||
51 | FRAC_CONST(0.125) | ||
52 | }; | ||
53 | |||
54 | static const real_t p2_13_20[7] = | ||
55 | { | ||
56 | FRAC_CONST(0.0), | ||
57 | FRAC_CONST(0.01899487526049), | ||
58 | FRAC_CONST(0.0), | ||
59 | FRAC_CONST(-0.07293139167538), | ||
60 | FRAC_CONST(0.0), | ||
61 | FRAC_CONST(0.30596630545168), | ||
62 | FRAC_CONST(0.5) | ||
63 | }; | ||
64 | |||
65 | static const real_t p12_13_34[7] = | ||
66 | { | ||
67 | FRAC_CONST(0.04081179924692), | ||
68 | FRAC_CONST(0.03812810994926), | ||
69 | FRAC_CONST(0.05144908135699), | ||
70 | FRAC_CONST(0.06399831151592), | ||
71 | FRAC_CONST(0.07428313801106), | ||
72 | FRAC_CONST(0.08100347892914), | ||
73 | FRAC_CONST(0.08333333333333) | ||
74 | }; | ||
75 | |||
76 | static const real_t p8_13_34[7] = | ||
77 | { | ||
78 | FRAC_CONST(0.01565675600122), | ||
79 | FRAC_CONST(0.03752716391991), | ||
80 | FRAC_CONST(0.05417891378782), | ||
81 | FRAC_CONST(0.08417044116767), | ||
82 | FRAC_CONST(0.10307344158036), | ||
83 | FRAC_CONST(0.12222452249753), | ||
84 | FRAC_CONST(0.125) | ||
85 | }; | ||
86 | |||
87 | static const real_t p4_13_34[7] = | ||
88 | { | ||
89 | FRAC_CONST(-0.05908211155639), | ||
90 | FRAC_CONST(-0.04871498374946), | ||
91 | FRAC_CONST(0.0), | ||
92 | FRAC_CONST(0.07778723915851), | ||
93 | FRAC_CONST(0.16486303567403), | ||
94 | FRAC_CONST(0.23279856662996), | ||
95 | FRAC_CONST(0.25) | ||
96 | }; | ||
97 | |||
98 | #ifdef PARAM_32KHZ | ||
99 | static const uint8_t delay_length_d[2][NO_ALLPASS_LINKS] = { | ||
100 | { 1, 2, 3 } /* d_24kHz */, | ||
101 | { 3, 4, 5 } /* d_48kHz */ | ||
102 | }; | ||
103 | #else | ||
104 | static const uint8_t delay_length_d[NO_ALLPASS_LINKS] = { | ||
105 | 3, 4, 5 /* d_48kHz */ | ||
106 | }; | ||
107 | #endif | ||
108 | static const real_t filter_a[NO_ALLPASS_LINKS] = { /* a(m) = exp(-d_48kHz(m)/7) */ | ||
109 | FRAC_CONST(0.65143905753106), | ||
110 | FRAC_CONST(0.56471812200776), | ||
111 | FRAC_CONST(0.48954165955695) | ||
112 | }; | ||
113 | |||
114 | static const uint8_t group_border20[10+12 + 1] = | ||
115 | { | ||
116 | 6, 7, 0, 1, 2, 3, /* 6 subqmf subbands */ | ||
117 | 9, 8, /* 2 subqmf subbands */ | ||
118 | 10, 11, /* 2 subqmf subbands */ | ||
119 | 3, 4, 5, 6, 7, 8, 9, 11, 14, 18, 23, 35, 64 | ||
120 | }; | ||
121 | |||
122 | static const uint8_t group_border34[32+18 + 1] = | ||
123 | { | ||
124 | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, /* 12 subqmf subbands */ | ||
125 | 12, 13, 14, 15, 16, 17, 18, 19, /* 8 subqmf subbands */ | ||
126 | 20, 21, 22, 23, /* 4 subqmf subbands */ | ||
127 | 24, 25, 26, 27, /* 4 subqmf subbands */ | ||
128 | 28, 29, 30, 31, /* 4 subqmf subbands */ | ||
129 | 32-27, 33-27, 34-27, 35-27, 36-27, 37-27, 38-27, 40-27, 42-27, 44-27, 46-27, 48-27, 51-27, 54-27, 57-27, 60-27, 64-27, 68-27, 91-27 | ||
130 | }; | ||
131 | |||
132 | static const uint16_t map_group2bk20[10+12] = | ||
133 | { | ||
134 | (NEGATE_IPD_MASK | 1), (NEGATE_IPD_MASK | 0), | ||
135 | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 | ||
136 | }; | ||
137 | |||
138 | static const uint16_t map_group2bk34[32+18] = | ||
139 | { | ||
140 | 0, 1, 2, 3, 4, 5, 6, 6, 7, (NEGATE_IPD_MASK | 2), (NEGATE_IPD_MASK | 1), (NEGATE_IPD_MASK | 0), | ||
141 | 10, 10, 4, 5, 6, 7, 8, 9, | ||
142 | 10, 11, 12, 9, | ||
143 | 14, 11, 12, 13, | ||
144 | 14, 15, 16, 13, | ||
145 | 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33 | ||
146 | }; | ||
147 | |||
148 | |||
149 | /* static function declarations */ | ||
150 | static void ps_data_decode(ps_info *ps); | ||
151 | static void hybrid_init(hyb_info *hyb); | ||
152 | static void channel_filter2(hyb_info *hyb, uint8_t frame_len, const real_t *filter, | ||
153 | qmf_t *buffer, qmf_t X_hybrid[32][12]); | ||
154 | static INLINE void DCT3_4_unscaled(real_t *y, real_t *x); | ||
155 | static void channel_filter8(hyb_info *hyb, uint8_t frame_len, const real_t *filter, | ||
156 | qmf_t *buffer, qmf_t X_hybrid[32][12]); | ||
157 | static void hybrid_analysis(hyb_info *hyb, qmf_t X[32][64], qmf_t X_hybrid[32][32], | ||
158 | uint8_t use34); | ||
159 | static void hybrid_synthesis(hyb_info *hyb, qmf_t X[32][64], qmf_t X_hybrid[32][32], | ||
160 | uint8_t use34); | ||
161 | static int8_t delta_clip(int8_t i, int8_t min, int8_t max); | ||
162 | static void delta_decode(uint8_t enable, int8_t *index, int8_t *index_prev, | ||
163 | uint8_t dt_flag, uint8_t nr_par, uint8_t stride, | ||
164 | int8_t min_index, int8_t max_index); | ||
165 | static void delta_modulo_decode(uint8_t enable, int8_t *index, int8_t *index_prev, | ||
166 | uint8_t dt_flag, uint8_t nr_par, uint8_t stride, | ||
167 | int8_t log2modulo); | ||
168 | static void map20indexto34(int8_t *index, uint8_t bins); | ||
169 | #ifdef PS_LOW_POWER | ||
170 | static void map34indexto20(int8_t *index, uint8_t bins); | ||
171 | #endif | ||
172 | static void ps_data_decode(ps_info *ps); | ||
173 | static void ps_decorrelate(ps_info *ps, | ||
174 | qmf_t X_left[MAX_NTSRPS][64], | ||
175 | qmf_t X_right[MAX_NTSRPS][64], | ||
176 | qmf_t X_hybrid_left[32][32], | ||
177 | qmf_t X_hybrid_right[32][32]); | ||
178 | static void ps_mix_phase(ps_info *ps, | ||
179 | qmf_t X_left[MAX_NTSRPS][64], | ||
180 | qmf_t X_right[MAX_NTSRPS][64], | ||
181 | qmf_t X_hybrid_left[32][32], | ||
182 | qmf_t X_hybrid_right[32][32]); | ||
183 | |||
184 | /* */ | ||
185 | |||
186 | |||
187 | static void hybrid_init(hyb_info *hyb) | ||
188 | { | ||
189 | hyb->resolution34[0] = 12; | ||
190 | hyb->resolution34[1] = 8; | ||
191 | hyb->resolution34[2] = 4; | ||
192 | hyb->resolution34[3] = 4; | ||
193 | hyb->resolution34[4] = 4; | ||
194 | |||
195 | hyb->resolution20[0] = 8; | ||
196 | hyb->resolution20[1] = 2; | ||
197 | hyb->resolution20[2] = 2; | ||
198 | |||
199 | hyb->frame_len = 32; | ||
200 | |||
201 | memset(hyb->work , 0, sizeof(hyb->work)); | ||
202 | memset(hyb->buffer, 0, sizeof(hyb->buffer)); | ||
203 | memset(hyb->temp , 0, sizeof(hyb->temp)); | ||
204 | } | ||
205 | |||
206 | /* real filter, size 2 */ | ||
207 | static void channel_filter2(hyb_info *hyb, uint8_t frame_len, const real_t *filter, | ||
208 | qmf_t *buffer, qmf_t X_hybrid[32][12]) | ||
209 | { | ||
210 | uint8_t i; | ||
211 | |||
212 | (void)hyb; | ||
213 | for (i = 0; i < frame_len; i++) | ||
214 | { | ||
215 | real_t r0 = MUL_F(filter[0],(QMF_RE(buffer[0+i]) + QMF_RE(buffer[12+i]))); | ||
216 | real_t r1 = MUL_F(filter[1],(QMF_RE(buffer[1+i]) + QMF_RE(buffer[11+i]))); | ||
217 | real_t r2 = MUL_F(filter[2],(QMF_RE(buffer[2+i]) + QMF_RE(buffer[10+i]))); | ||
218 | real_t r3 = MUL_F(filter[3],(QMF_RE(buffer[3+i]) + QMF_RE(buffer[9+i]))); | ||
219 | real_t r4 = MUL_F(filter[4],(QMF_RE(buffer[4+i]) + QMF_RE(buffer[8+i]))); | ||
220 | real_t r5 = MUL_F(filter[5],(QMF_RE(buffer[5+i]) + QMF_RE(buffer[7+i]))); | ||
221 | real_t r6 = MUL_F(filter[6],QMF_RE(buffer[6+i])); | ||
222 | real_t i0 = MUL_F(filter[0],(QMF_IM(buffer[0+i]) + QMF_IM(buffer[12+i]))); | ||
223 | real_t i1 = MUL_F(filter[1],(QMF_IM(buffer[1+i]) + QMF_IM(buffer[11+i]))); | ||
224 | real_t i2 = MUL_F(filter[2],(QMF_IM(buffer[2+i]) + QMF_IM(buffer[10+i]))); | ||
225 | real_t i3 = MUL_F(filter[3],(QMF_IM(buffer[3+i]) + QMF_IM(buffer[9+i]))); | ||
226 | real_t i4 = MUL_F(filter[4],(QMF_IM(buffer[4+i]) + QMF_IM(buffer[8+i]))); | ||
227 | real_t i5 = MUL_F(filter[5],(QMF_IM(buffer[5+i]) + QMF_IM(buffer[7+i]))); | ||
228 | real_t i6 = MUL_F(filter[6],QMF_IM(buffer[6+i])); | ||
229 | |||
230 | /* q = 0 */ | ||
231 | QMF_RE(X_hybrid[i][0]) = r0 + r1 + r2 + r3 + r4 + r5 + r6; | ||
232 | QMF_IM(X_hybrid[i][0]) = i0 + i1 + i2 + i3 + i4 + i5 + i6; | ||
233 | |||
234 | /* q = 1 */ | ||
235 | QMF_RE(X_hybrid[i][1]) = r0 - r1 + r2 - r3 + r4 - r5 + r6; | ||
236 | QMF_IM(X_hybrid[i][1]) = i0 - i1 + i2 - i3 + i4 - i5 + i6; | ||
237 | } | ||
238 | } | ||
239 | |||
240 | /* complex filter, size 4 */ | ||
241 | static void channel_filter4(hyb_info *hyb, uint8_t frame_len, const real_t *filter, | ||
242 | qmf_t *buffer, qmf_t X_hybrid[32][12]) | ||
243 | { | ||
244 | uint8_t i; | ||
245 | real_t input_re1[2], input_re2[2], input_im1[2], input_im2[2]; | ||
246 | |||
247 | (void)hyb; | ||
248 | for (i = 0; i < frame_len; i++) | ||
249 | { | ||
250 | input_re1[0] = -MUL_F(filter[2], (QMF_RE(buffer[i+2]) + QMF_RE(buffer[i+10]))) + | ||
251 | MUL_F(filter[6], QMF_RE(buffer[i+6])); | ||
252 | input_re1[1] = MUL_F(FRAC_CONST(-0.70710678118655), | ||
253 | (MUL_F(filter[1], (QMF_RE(buffer[i+1]) + QMF_RE(buffer[i+11]))) + | ||
254 | MUL_F(filter[3], (QMF_RE(buffer[i+3]) + QMF_RE(buffer[i+9]))) - | ||
255 | MUL_F(filter[5], (QMF_RE(buffer[i+5]) + QMF_RE(buffer[i+7]))))); | ||
256 | |||
257 | input_im1[0] = MUL_F(filter[0], (QMF_IM(buffer[i+0]) - QMF_IM(buffer[i+12]))) - | ||
258 | MUL_F(filter[4], (QMF_IM(buffer[i+4]) - QMF_IM(buffer[i+8]))); | ||
259 | input_im1[1] = MUL_F(FRAC_CONST(0.70710678118655), | ||
260 | (MUL_F(filter[1], (QMF_IM(buffer[i+1]) - QMF_IM(buffer[i+11]))) - | ||
261 | MUL_F(filter[3], (QMF_IM(buffer[i+3]) - QMF_IM(buffer[i+9]))) - | ||
262 | MUL_F(filter[5], (QMF_IM(buffer[i+5]) - QMF_IM(buffer[i+7]))))); | ||
263 | |||
264 | input_re2[0] = MUL_F(filter[0], (QMF_RE(buffer[i+0]) - QMF_RE(buffer[i+12]))) - | ||
265 | MUL_F(filter[4], (QMF_RE(buffer[i+4]) - QMF_RE(buffer[i+8]))); | ||
266 | input_re2[1] = MUL_F(FRAC_CONST(0.70710678118655), | ||
267 | (MUL_F(filter[1], (QMF_RE(buffer[i+1]) - QMF_RE(buffer[i+11]))) - | ||
268 | MUL_F(filter[3], (QMF_RE(buffer[i+3]) - QMF_RE(buffer[i+9]))) - | ||
269 | MUL_F(filter[5], (QMF_RE(buffer[i+5]) - QMF_RE(buffer[i+7]))))); | ||
270 | |||
271 | input_im2[0] = -MUL_F(filter[2], (QMF_IM(buffer[i+2]) + QMF_IM(buffer[i+10]))) + | ||
272 | MUL_F(filter[6], QMF_IM(buffer[i+6])); | ||
273 | input_im2[1] = MUL_F(FRAC_CONST(-0.70710678118655), | ||
274 | (MUL_F(filter[1], (QMF_IM(buffer[i+1]) + QMF_IM(buffer[i+11]))) + | ||
275 | MUL_F(filter[3], (QMF_IM(buffer[i+3]) + QMF_IM(buffer[i+9]))) - | ||
276 | MUL_F(filter[5], (QMF_IM(buffer[i+5]) + QMF_IM(buffer[i+7]))))); | ||
277 | |||
278 | /* q == 0 */ | ||
279 | QMF_RE(X_hybrid[i][0]) = input_re1[0] + input_re1[1] + input_im1[0] + input_im1[1]; | ||
280 | QMF_IM(X_hybrid[i][0]) = -input_re2[0] - input_re2[1] + input_im2[0] + input_im2[1]; | ||
281 | |||
282 | /* q == 1 */ | ||
283 | QMF_RE(X_hybrid[i][1]) = input_re1[0] - input_re1[1] - input_im1[0] + input_im1[1]; | ||
284 | QMF_IM(X_hybrid[i][1]) = input_re2[0] - input_re2[1] + input_im2[0] - input_im2[1]; | ||
285 | |||
286 | /* q == 2 */ | ||
287 | QMF_RE(X_hybrid[i][2]) = input_re1[0] - input_re1[1] + input_im1[0] - input_im1[1]; | ||
288 | QMF_IM(X_hybrid[i][2]) = -input_re2[0] + input_re2[1] + input_im2[0] - input_im2[1]; | ||
289 | |||
290 | /* q == 3 */ | ||
291 | QMF_RE(X_hybrid[i][3]) = input_re1[0] + input_re1[1] - input_im1[0] - input_im1[1]; | ||
292 | QMF_IM(X_hybrid[i][3]) = input_re2[0] + input_re2[1] + input_im2[0] + input_im2[1]; | ||
293 | } | ||
294 | } | ||
295 | |||
296 | static INLINE void DCT3_4_unscaled(real_t *y, real_t *x) | ||
297 | { | ||
298 | real_t f0, f1, f2, f3, f4, f5, f6, f7, f8; | ||
299 | |||
300 | f0 = MUL_F(x[2], FRAC_CONST(0.7071067811865476)); | ||
301 | f1 = x[0] - f0; | ||
302 | f2 = x[0] + f0; | ||
303 | f3 = x[1] + x[3]; | ||
304 | f4 = MUL_C(x[1], COEF_CONST(1.3065629648763766)); | ||
305 | f5 = MUL_F(f3, FRAC_CONST(-0.9238795325112866)); | ||
306 | f6 = MUL_F(x[3], FRAC_CONST(-0.5411961001461967)); | ||
307 | f7 = f4 + f5; | ||
308 | f8 = f6 - f5; | ||
309 | y[3] = f2 - f8; | ||
310 | y[0] = f2 + f8; | ||
311 | y[2] = f1 - f7; | ||
312 | y[1] = f1 + f7; | ||
313 | } | ||
314 | |||
315 | /* complex filter, size 8 */ | ||
316 | static void channel_filter8(hyb_info *hyb, uint8_t frame_len, const real_t *filter, | ||
317 | qmf_t *buffer, qmf_t X_hybrid[32][12]) | ||
318 | { | ||
319 | uint8_t i, n; | ||
320 | real_t input_re1[4], input_re2[4], input_im1[4], input_im2[4]; | ||
321 | real_t x[4]; | ||
322 | |||
323 | (void)hyb; | ||
324 | for (i = 0; i < frame_len; i++) | ||
325 | { | ||
326 | input_re1[0] = MUL_F(filter[6],QMF_RE(buffer[6+i])); | ||
327 | input_re1[1] = MUL_F(filter[5],(QMF_RE(buffer[5+i]) + QMF_RE(buffer[7+i]))); | ||
328 | input_re1[2] = -MUL_F(filter[0],(QMF_RE(buffer[0+i]) + QMF_RE(buffer[12+i]))) + MUL_F(filter[4],(QMF_RE(buffer[4+i]) + QMF_RE(buffer[8+i]))); | ||
329 | input_re1[3] = -MUL_F(filter[1],(QMF_RE(buffer[1+i]) + QMF_RE(buffer[11+i]))) + MUL_F(filter[3],(QMF_RE(buffer[3+i]) + QMF_RE(buffer[9+i]))); | ||
330 | |||
331 | input_im1[0] = MUL_F(filter[5],(QMF_IM(buffer[7+i]) - QMF_IM(buffer[5+i]))); | ||
332 | input_im1[1] = MUL_F(filter[0],(QMF_IM(buffer[12+i]) - QMF_IM(buffer[0+i]))) + MUL_F(filter[4],(QMF_IM(buffer[8+i]) - QMF_IM(buffer[4+i]))); | ||
333 | input_im1[2] = MUL_F(filter[1],(QMF_IM(buffer[11+i]) - QMF_IM(buffer[1+i]))) + MUL_F(filter[3],(QMF_IM(buffer[9+i]) - QMF_IM(buffer[3+i]))); | ||
334 | input_im1[3] = MUL_F(filter[2],(QMF_IM(buffer[10+i]) - QMF_IM(buffer[2+i]))); | ||
335 | |||
336 | for (n = 0; n < 4; n++) | ||
337 | { | ||
338 | x[n] = input_re1[n] - input_im1[3-n]; | ||
339 | } | ||
340 | DCT3_4_unscaled(x, x); | ||
341 | QMF_RE(X_hybrid[i][7]) = x[0]; | ||
342 | QMF_RE(X_hybrid[i][5]) = x[2]; | ||
343 | QMF_RE(X_hybrid[i][3]) = x[3]; | ||
344 | QMF_RE(X_hybrid[i][1]) = x[1]; | ||
345 | |||
346 | for (n = 0; n < 4; n++) | ||
347 | { | ||
348 | x[n] = input_re1[n] + input_im1[3-n]; | ||
349 | } | ||
350 | DCT3_4_unscaled(x, x); | ||
351 | QMF_RE(X_hybrid[i][6]) = x[1]; | ||
352 | QMF_RE(X_hybrid[i][4]) = x[3]; | ||
353 | QMF_RE(X_hybrid[i][2]) = x[2]; | ||
354 | QMF_RE(X_hybrid[i][0]) = x[0]; | ||
355 | |||
356 | input_im2[0] = MUL_F(filter[6],QMF_IM(buffer[6+i])); | ||
357 | input_im2[1] = MUL_F(filter[5],(QMF_IM(buffer[5+i]) + QMF_IM(buffer[7+i]))); | ||
358 | input_im2[2] = -MUL_F(filter[0],(QMF_IM(buffer[0+i]) + QMF_IM(buffer[12+i]))) + MUL_F(filter[4],(QMF_IM(buffer[4+i]) + QMF_IM(buffer[8+i]))); | ||
359 | input_im2[3] = -MUL_F(filter[1],(QMF_IM(buffer[1+i]) + QMF_IM(buffer[11+i]))) + MUL_F(filter[3],(QMF_IM(buffer[3+i]) + QMF_IM(buffer[9+i]))); | ||
360 | |||
361 | input_re2[0] = MUL_F(filter[5],(QMF_RE(buffer[7+i]) - QMF_RE(buffer[5+i]))); | ||
362 | input_re2[1] = MUL_F(filter[0],(QMF_RE(buffer[12+i]) - QMF_RE(buffer[0+i]))) + MUL_F(filter[4],(QMF_RE(buffer[8+i]) - QMF_RE(buffer[4+i]))); | ||
363 | input_re2[2] = MUL_F(filter[1],(QMF_RE(buffer[11+i]) - QMF_RE(buffer[1+i]))) + MUL_F(filter[3],(QMF_RE(buffer[9+i]) - QMF_RE(buffer[3+i]))); | ||
364 | input_re2[3] = MUL_F(filter[2],(QMF_RE(buffer[10+i]) - QMF_RE(buffer[2+i]))); | ||
365 | |||
366 | for (n = 0; n < 4; n++) | ||
367 | { | ||
368 | x[n] = input_im2[n] + input_re2[3-n]; | ||
369 | } | ||
370 | DCT3_4_unscaled(x, x); | ||
371 | QMF_IM(X_hybrid[i][7]) = x[0]; | ||
372 | QMF_IM(X_hybrid[i][5]) = x[2]; | ||
373 | QMF_IM(X_hybrid[i][3]) = x[3]; | ||
374 | QMF_IM(X_hybrid[i][1]) = x[1]; | ||
375 | |||
376 | for (n = 0; n < 4; n++) | ||
377 | { | ||
378 | x[n] = input_im2[n] - input_re2[3-n]; | ||
379 | } | ||
380 | DCT3_4_unscaled(x, x); | ||
381 | QMF_IM(X_hybrid[i][6]) = x[1]; | ||
382 | QMF_IM(X_hybrid[i][4]) = x[3]; | ||
383 | QMF_IM(X_hybrid[i][2]) = x[2]; | ||
384 | QMF_IM(X_hybrid[i][0]) = x[0]; | ||
385 | } | ||
386 | } | ||
387 | |||
388 | static INLINE void DCT3_6_unscaled(real_t *y, real_t *x) | ||
389 | { | ||
390 | real_t f0, f1, f2, f3, f4, f5, f6, f7; | ||
391 | |||
392 | f0 = MUL_F(x[3], FRAC_CONST(0.70710678118655)); | ||
393 | f1 = x[0] + f0; | ||
394 | f2 = x[0] - f0; | ||
395 | f3 = MUL_F((x[1] - x[5]), FRAC_CONST(0.70710678118655)); | ||
396 | f4 = MUL_F(x[2], FRAC_CONST(0.86602540378444)) + MUL_F(x[4], FRAC_CONST(0.5)); | ||
397 | f5 = f4 - x[4]; | ||
398 | f6 = MUL_F(x[1], FRAC_CONST(0.96592582628907)) + MUL_F(x[5], FRAC_CONST(0.25881904510252)); | ||
399 | f7 = f6 - f3; | ||
400 | y[0] = f1 + f6 + f4; | ||
401 | y[1] = f2 + f3 - x[4]; | ||
402 | y[2] = f7 + f2 - f5; | ||
403 | y[3] = f1 - f7 - f5; | ||
404 | y[4] = f1 - f3 - x[4]; | ||
405 | y[5] = f2 - f6 + f4; | ||
406 | } | ||
407 | |||
408 | /* complex filter, size 12 */ | ||
409 | static void channel_filter12(hyb_info *hyb, uint8_t frame_len, const real_t *filter, | ||
410 | qmf_t *buffer, qmf_t X_hybrid[32][12]) | ||
411 | { | ||
412 | uint8_t i, n; | ||
413 | real_t input_re1[6], input_re2[6], input_im1[6], input_im2[6]; | ||
414 | real_t out_re1[6], out_re2[6], out_im1[6], out_im2[6]; | ||
415 | |||
416 | (void)hyb; | ||
417 | for (i = 0; i < frame_len; i++) | ||
418 | { | ||
419 | for (n = 0; n < 6; n++) | ||
420 | { | ||
421 | if (n == 0) | ||
422 | { | ||
423 | input_re1[0] = MUL_F(QMF_RE(buffer[6+i]), filter[6]); | ||
424 | input_re2[0] = MUL_F(QMF_IM(buffer[6+i]), filter[6]); | ||
425 | } else { | ||
426 | input_re1[6-n] = MUL_F((QMF_RE(buffer[n+i]) + QMF_RE(buffer[12-n+i])), filter[n]); | ||
427 | input_re2[6-n] = MUL_F((QMF_IM(buffer[n+i]) + QMF_IM(buffer[12-n+i])), filter[n]); | ||
428 | } | ||
429 | input_im2[n] = MUL_F((QMF_RE(buffer[n+i]) - QMF_RE(buffer[12-n+i])), filter[n]); | ||
430 | input_im1[n] = MUL_F((QMF_IM(buffer[n+i]) - QMF_IM(buffer[12-n+i])), filter[n]); | ||
431 | } | ||
432 | |||
433 | DCT3_6_unscaled(out_re1, input_re1); | ||
434 | DCT3_6_unscaled(out_re2, input_re2); | ||
435 | |||
436 | DCT3_6_unscaled(out_im1, input_im1); | ||
437 | DCT3_6_unscaled(out_im2, input_im2); | ||
438 | |||
439 | for (n = 0; n < 6; n += 2) | ||
440 | { | ||
441 | QMF_RE(X_hybrid[i][n]) = out_re1[n] - out_im1[n]; | ||
442 | QMF_IM(X_hybrid[i][n]) = out_re2[n] + out_im2[n]; | ||
443 | QMF_RE(X_hybrid[i][n+1]) = out_re1[n+1] + out_im1[n+1]; | ||
444 | QMF_IM(X_hybrid[i][n+1]) = out_re2[n+1] - out_im2[n+1]; | ||
445 | |||
446 | QMF_RE(X_hybrid[i][10-n]) = out_re1[n+1] - out_im1[n+1]; | ||
447 | QMF_IM(X_hybrid[i][10-n]) = out_re2[n+1] + out_im2[n+1]; | ||
448 | QMF_RE(X_hybrid[i][11-n]) = out_re1[n] + out_im1[n]; | ||
449 | QMF_IM(X_hybrid[i][11-n]) = out_re2[n] - out_im2[n]; | ||
450 | } | ||
451 | } | ||
452 | } | ||
453 | |||
454 | /* Hybrid analysis: further split up QMF subbands | ||
455 | * to improve frequency resolution | ||
456 | */ | ||
457 | static void hybrid_analysis(hyb_info *hyb, qmf_t X[32][64], qmf_t X_hybrid[32][32], | ||
458 | uint8_t use34) | ||
459 | { | ||
460 | uint8_t k, n, band; | ||
461 | uint8_t offset = 0; | ||
462 | uint8_t qmf_bands = (use34) ? 5 : 3; | ||
463 | uint8_t *resolution = (use34) ? hyb->resolution34 : hyb->resolution20; | ||
464 | |||
465 | for (band = 0; band < qmf_bands; band++) | ||
466 | { | ||
467 | /* build working buffer */ | ||
468 | memcpy(hyb->work, hyb->buffer[band], 12 * sizeof(qmf_t)); | ||
469 | |||
470 | /* add new samples */ | ||
471 | for (n = 0; n < hyb->frame_len; n++) | ||
472 | { | ||
473 | QMF_RE(hyb->work[12 + n]) = QMF_RE(X[n + 6 /*delay*/][band]); | ||
474 | QMF_IM(hyb->work[12 + n]) = QMF_IM(X[n + 6 /*delay*/][band]); | ||
475 | } | ||
476 | |||
477 | /* store samples */ | ||
478 | memcpy(hyb->buffer[band], hyb->work + hyb->frame_len, 12 * sizeof(qmf_t)); | ||
479 | |||
480 | |||
481 | switch(resolution[band]) | ||
482 | { | ||
483 | case 2: | ||
484 | /* Type B real filter, Q[p] = 2 */ | ||
485 | channel_filter2(hyb, hyb->frame_len, p2_13_20, hyb->work, hyb->temp); | ||
486 | break; | ||
487 | case 4: | ||
488 | /* Type A complex filter, Q[p] = 4 */ | ||
489 | channel_filter4(hyb, hyb->frame_len, p4_13_34, hyb->work, hyb->temp); | ||
490 | break; | ||
491 | case 8: | ||
492 | /* Type A complex filter, Q[p] = 8 */ | ||
493 | channel_filter8(hyb, hyb->frame_len, (use34) ? p8_13_34 : p8_13_20, | ||
494 | hyb->work, hyb->temp); | ||
495 | break; | ||
496 | case 12: | ||
497 | /* Type A complex filter, Q[p] = 12 */ | ||
498 | channel_filter12(hyb, hyb->frame_len, p12_13_34, hyb->work, hyb->temp); | ||
499 | break; | ||
500 | } | ||
501 | |||
502 | for (n = 0; n < hyb->frame_len; n++) | ||
503 | { | ||
504 | for (k = 0; k < resolution[band]; k++) | ||
505 | { | ||
506 | QMF_RE(X_hybrid[n][offset + k]) = QMF_RE(hyb->temp[n][k]); | ||
507 | QMF_IM(X_hybrid[n][offset + k]) = QMF_IM(hyb->temp[n][k]); | ||
508 | } | ||
509 | } | ||
510 | offset += resolution[band]; | ||
511 | } | ||
512 | |||
513 | /* group hybrid channels */ | ||
514 | if (!use34) | ||
515 | { | ||
516 | for (n = 0; n < 32 /*30?*/; n++) | ||
517 | { | ||
518 | QMF_RE(X_hybrid[n][3]) += QMF_RE(X_hybrid[n][4]); | ||
519 | QMF_IM(X_hybrid[n][3]) += QMF_IM(X_hybrid[n][4]); | ||
520 | QMF_RE(X_hybrid[n][4]) = 0; | ||
521 | QMF_IM(X_hybrid[n][4]) = 0; | ||
522 | |||
523 | QMF_RE(X_hybrid[n][2]) += QMF_RE(X_hybrid[n][5]); | ||
524 | QMF_IM(X_hybrid[n][2]) += QMF_IM(X_hybrid[n][5]); | ||
525 | QMF_RE(X_hybrid[n][5]) = 0; | ||
526 | QMF_IM(X_hybrid[n][5]) = 0; | ||
527 | } | ||
528 | } | ||
529 | } | ||
530 | |||
531 | static void hybrid_synthesis(hyb_info *hyb, qmf_t X[32][64], qmf_t X_hybrid[32][32], | ||
532 | uint8_t use34) | ||
533 | { | ||
534 | uint8_t k, n, band; | ||
535 | uint8_t offset = 0; | ||
536 | uint8_t qmf_bands = (use34) ? 5 : 3; | ||
537 | uint8_t *resolution = (use34) ? hyb->resolution34 : hyb->resolution20; | ||
538 | |||
539 | for(band = 0; band < qmf_bands; band++) | ||
540 | { | ||
541 | for (n = 0; n < hyb->frame_len; n++) | ||
542 | { | ||
543 | QMF_RE(X[n][band]) = 0; | ||
544 | QMF_IM(X[n][band]) = 0; | ||
545 | |||
546 | for (k = 0; k < resolution[band]; k++) | ||
547 | { | ||
548 | QMF_RE(X[n][band]) += QMF_RE(X_hybrid[n][offset + k]); | ||
549 | QMF_IM(X[n][band]) += QMF_IM(X_hybrid[n][offset + k]); | ||
550 | } | ||
551 | } | ||
552 | offset += resolution[band]; | ||
553 | } | ||
554 | } | ||
555 | |||
556 | /* limits the value i to the range [min,max] */ | ||
557 | static int8_t delta_clip(int8_t i, int8_t min, int8_t max) | ||
558 | { | ||
559 | if (i < min) | ||
560 | return min; | ||
561 | else if (i > max) | ||
562 | return max; | ||
563 | else | ||
564 | return i; | ||
565 | } | ||
566 | |||
567 | //int iid = 0; | ||
568 | |||
569 | /* delta decode array */ | ||
570 | static void delta_decode(uint8_t enable, int8_t *index, int8_t *index_prev, | ||
571 | uint8_t dt_flag, uint8_t nr_par, uint8_t stride, | ||
572 | int8_t min_index, int8_t max_index) | ||
573 | { | ||
574 | int8_t i; | ||
575 | |||
576 | if (enable == 1) | ||
577 | { | ||
578 | if (dt_flag == 0) | ||
579 | { | ||
580 | /* delta coded in frequency direction */ | ||
581 | index[0] = 0 + index[0]; | ||
582 | index[0] = delta_clip(index[0], min_index, max_index); | ||
583 | |||
584 | for (i = 1; i < nr_par; i++) | ||
585 | { | ||
586 | index[i] = index[i-1] + index[i]; | ||
587 | index[i] = delta_clip(index[i], min_index, max_index); | ||
588 | } | ||
589 | } else { | ||
590 | /* delta coded in time direction */ | ||
591 | for (i = 0; i < nr_par; i++) | ||
592 | { | ||
593 | //int8_t tmp2; | ||
594 | //int8_t tmp = index[i]; | ||
595 | |||
596 | //printf("%d %d\n", index_prev[i*stride], index[i]); | ||
597 | //printf("%d\n", index[i]); | ||
598 | |||
599 | index[i] = index_prev[i*stride] + index[i]; | ||
600 | //tmp2 = index[i]; | ||
601 | index[i] = delta_clip(index[i], min_index, max_index); | ||
602 | |||
603 | //if (iid) | ||
604 | //{ | ||
605 | // if (index[i] == 7) | ||
606 | // { | ||
607 | // printf("%d %d %d\n", index_prev[i*stride], tmp, tmp2); | ||
608 | // } | ||
609 | //} | ||
610 | } | ||
611 | } | ||
612 | } else { | ||
613 | /* set indices to zero */ | ||
614 | for (i = 0; i < nr_par; i++) | ||
615 | { | ||
616 | index[i] = 0; | ||
617 | } | ||
618 | } | ||
619 | |||
620 | /* coarse */ | ||
621 | if (stride == 2) | ||
622 | { | ||
623 | for (i = (nr_par<<1)-1; i > 0; i--) | ||
624 | { | ||
625 | index[i] = index[i>>1]; | ||
626 | } | ||
627 | } | ||
628 | } | ||
629 | |||
630 | /* delta modulo decode array */ | ||
631 | /* in: log2 value of the modulo value to allow using AND instead of MOD */ | ||
632 | static void delta_modulo_decode(uint8_t enable, int8_t *index, int8_t *index_prev, | ||
633 | uint8_t dt_flag, uint8_t nr_par, uint8_t stride, | ||
634 | int8_t log2modulo) | ||
635 | { | ||
636 | int8_t i; | ||
637 | |||
638 | if (enable == 1) | ||
639 | { | ||
640 | if (dt_flag == 0) | ||
641 | { | ||
642 | /* delta coded in frequency direction */ | ||
643 | index[0] = 0 + index[0]; | ||
644 | index[0] &= log2modulo; | ||
645 | |||
646 | for (i = 1; i < nr_par; i++) | ||
647 | { | ||
648 | index[i] = index[i-1] + index[i]; | ||
649 | index[i] &= log2modulo; | ||
650 | } | ||
651 | } else { | ||
652 | /* delta coded in time direction */ | ||
653 | for (i = 0; i < nr_par; i++) | ||
654 | { | ||
655 | index[i] = index_prev[i*stride] + index[i]; | ||
656 | index[i] &= log2modulo; | ||
657 | } | ||
658 | } | ||
659 | } else { | ||
660 | /* set indices to zero */ | ||
661 | for (i = 0; i < nr_par; i++) | ||
662 | { | ||
663 | index[i] = 0; | ||
664 | } | ||
665 | } | ||
666 | |||
667 | /* coarse */ | ||
668 | if (stride == 2) | ||
669 | { | ||
670 | index[0] = 0; | ||
671 | for (i = (nr_par<<1)-1; i > 0; i--) | ||
672 | { | ||
673 | index[i] = index[i>>1]; | ||
674 | } | ||
675 | } | ||
676 | } | ||
677 | |||
678 | #ifdef PS_LOW_POWER | ||
679 | static void map34indexto20(int8_t *index, uint8_t bins) | ||
680 | { | ||
681 | index[0] = (2*index[0]+index[1])/3; | ||
682 | index[1] = (index[1]+2*index[2])/3; | ||
683 | index[2] = (2*index[3]+index[4])/3; | ||
684 | index[3] = (index[4]+2*index[5])/3; | ||
685 | index[4] = (index[6]+index[7])/2; | ||
686 | index[5] = (index[8]+index[9])/2; | ||
687 | index[6] = index[10]; | ||
688 | index[7] = index[11]; | ||
689 | index[8] = (index[12]+index[13])/2; | ||
690 | index[9] = (index[14]+index[15])/2; | ||
691 | index[10] = index[16]; | ||
692 | |||
693 | if (bins == 34) | ||
694 | { | ||
695 | index[11] = index[17]; | ||
696 | index[12] = index[18]; | ||
697 | index[13] = index[19]; | ||
698 | index[14] = (index[20]+index[21])/2; | ||
699 | index[15] = (index[22]+index[23])/2; | ||
700 | index[16] = (index[24]+index[25])/2; | ||
701 | index[17] = (index[26]+index[27])/2; | ||
702 | index[18] = (index[28]+index[29]+index[30]+index[31])/4; | ||
703 | index[19] = (index[32]+index[33])/2; | ||
704 | } | ||
705 | } | ||
706 | #endif | ||
707 | |||
708 | static void map20indexto34(int8_t *index, uint8_t bins) | ||
709 | { | ||
710 | index[0] = index[0]; | ||
711 | index[1] = (index[0] + index[1])/2; | ||
712 | index[2] = index[1]; | ||
713 | index[3] = index[2]; | ||
714 | index[4] = (index[2] + index[3])/2; | ||
715 | index[5] = index[3]; | ||
716 | index[6] = index[4]; | ||
717 | index[7] = index[4]; | ||
718 | index[8] = index[5]; | ||
719 | index[9] = index[5]; | ||
720 | index[10] = index[6]; | ||
721 | index[11] = index[7]; | ||
722 | index[12] = index[8]; | ||
723 | index[13] = index[8]; | ||
724 | index[14] = index[9]; | ||
725 | index[15] = index[9]; | ||
726 | index[16] = index[10]; | ||
727 | |||
728 | if (bins == 34) | ||
729 | { | ||
730 | index[17] = index[11]; | ||
731 | index[18] = index[12]; | ||
732 | index[19] = index[13]; | ||
733 | index[20] = index[14]; | ||
734 | index[21] = index[14]; | ||
735 | index[22] = index[15]; | ||
736 | index[23] = index[15]; | ||
737 | index[24] = index[16]; | ||
738 | index[25] = index[16]; | ||
739 | index[26] = index[17]; | ||
740 | index[27] = index[17]; | ||
741 | index[28] = index[18]; | ||
742 | index[29] = index[18]; | ||
743 | index[30] = index[18]; | ||
744 | index[31] = index[18]; | ||
745 | index[32] = index[19]; | ||
746 | index[33] = index[19]; | ||
747 | } | ||
748 | } | ||
749 | |||
750 | /* parse the bitstream data decoded in ps_data() */ | ||
751 | static void ps_data_decode(ps_info *ps) | ||
752 | { | ||
753 | uint8_t env, bin; | ||
754 | |||
755 | /* ps data not available, use data from previous frame */ | ||
756 | if (ps->ps_data_available == 0) | ||
757 | { | ||
758 | ps->num_env = 0; | ||
759 | } | ||
760 | |||
761 | for (env = 0; env < ps->num_env; env++) | ||
762 | { | ||
763 | int8_t *iid_index_prev; | ||
764 | int8_t *icc_index_prev; | ||
765 | int8_t *ipd_index_prev; | ||
766 | int8_t *opd_index_prev; | ||
767 | |||
768 | int8_t num_iid_steps = (ps->iid_mode < 3) ? 7 : 15 /*fine quant*/; | ||
769 | |||
770 | if (env == 0) | ||
771 | { | ||
772 | /* take last envelope from previous frame */ | ||
773 | iid_index_prev = ps->iid_index_prev; | ||
774 | icc_index_prev = ps->icc_index_prev; | ||
775 | ipd_index_prev = ps->ipd_index_prev; | ||
776 | opd_index_prev = ps->opd_index_prev; | ||
777 | } else { | ||
778 | /* take index values from previous envelope */ | ||
779 | iid_index_prev = ps->iid_index[env - 1]; | ||
780 | icc_index_prev = ps->icc_index[env - 1]; | ||
781 | ipd_index_prev = ps->ipd_index[env - 1]; | ||
782 | opd_index_prev = ps->opd_index[env - 1]; | ||
783 | } | ||
784 | |||
785 | // iid = 1; | ||
786 | /* delta decode iid parameters */ | ||
787 | delta_decode(ps->enable_iid, ps->iid_index[env], iid_index_prev, | ||
788 | ps->iid_dt[env], ps->nr_iid_par, | ||
789 | (ps->iid_mode == 0 || ps->iid_mode == 3) ? 2 : 1, | ||
790 | -num_iid_steps, num_iid_steps); | ||
791 | // iid = 0; | ||
792 | |||
793 | /* delta decode icc parameters */ | ||
794 | delta_decode(ps->enable_icc, ps->icc_index[env], icc_index_prev, | ||
795 | ps->icc_dt[env], ps->nr_icc_par, | ||
796 | (ps->icc_mode == 0 || ps->icc_mode == 3) ? 2 : 1, | ||
797 | 0, 7); | ||
798 | |||
799 | /* delta modulo decode ipd parameters */ | ||
800 | delta_modulo_decode(ps->enable_ipdopd, ps->ipd_index[env], ipd_index_prev, | ||
801 | ps->ipd_dt[env], ps->nr_ipdopd_par, 1, /*log2(8)*/ 3); | ||
802 | |||
803 | /* delta modulo decode opd parameters */ | ||
804 | delta_modulo_decode(ps->enable_ipdopd, ps->opd_index[env], opd_index_prev, | ||
805 | ps->opd_dt[env], ps->nr_ipdopd_par, 1, /*log2(8)*/ 3); | ||
806 | } | ||
807 | |||
808 | /* handle error case */ | ||
809 | if (ps->num_env == 0) | ||
810 | { | ||
811 | /* force to 1 */ | ||
812 | ps->num_env = 1; | ||
813 | |||
814 | if (ps->enable_iid) | ||
815 | { | ||
816 | for (bin = 0; bin < 34; bin++) | ||
817 | ps->iid_index[0][bin] = ps->iid_index_prev[bin]; | ||
818 | } else { | ||
819 | for (bin = 0; bin < 34; bin++) | ||
820 | ps->iid_index[0][bin] = 0; | ||
821 | } | ||
822 | |||
823 | if (ps->enable_icc) | ||
824 | { | ||
825 | for (bin = 0; bin < 34; bin++) | ||
826 | ps->icc_index[0][bin] = ps->icc_index_prev[bin]; | ||
827 | } else { | ||
828 | for (bin = 0; bin < 34; bin++) | ||
829 | ps->icc_index[0][bin] = 0; | ||
830 | } | ||
831 | |||
832 | if (ps->enable_ipdopd) | ||
833 | { | ||
834 | for (bin = 0; bin < 17; bin++) | ||
835 | { | ||
836 | ps->ipd_index[0][bin] = ps->ipd_index_prev[bin]; | ||
837 | ps->opd_index[0][bin] = ps->opd_index_prev[bin]; | ||
838 | } | ||
839 | } else { | ||
840 | for (bin = 0; bin < 17; bin++) | ||
841 | { | ||
842 | ps->ipd_index[0][bin] = 0; | ||
843 | ps->opd_index[0][bin] = 0; | ||
844 | } | ||
845 | } | ||
846 | } | ||
847 | |||
848 | /* update previous indices */ | ||
849 | for (bin = 0; bin < 34; bin++) | ||
850 | ps->iid_index_prev[bin] = ps->iid_index[ps->num_env-1][bin]; | ||
851 | for (bin = 0; bin < 34; bin++) | ||
852 | ps->icc_index_prev[bin] = ps->icc_index[ps->num_env-1][bin]; | ||
853 | for (bin = 0; bin < 17; bin++) | ||
854 | { | ||
855 | ps->ipd_index_prev[bin] = ps->ipd_index[ps->num_env-1][bin]; | ||
856 | ps->opd_index_prev[bin] = ps->opd_index[ps->num_env-1][bin]; | ||
857 | } | ||
858 | |||
859 | ps->ps_data_available = 0; | ||
860 | |||
861 | if (ps->frame_class == 0) | ||
862 | { | ||
863 | ps->border_position[0] = 0; | ||
864 | for (env = 1; env < ps->num_env; env++) | ||
865 | { | ||
866 | ps->border_position[env] = (env * 32 /* 30 for 960? */) / ps->num_env; | ||
867 | } | ||
868 | ps->border_position[ps->num_env] = 32 /* 30 for 960? */; | ||
869 | } else { | ||
870 | ps->border_position[0] = 0; | ||
871 | |||
872 | if (ps->border_position[ps->num_env] < 32 /* 30 for 960? */) | ||
873 | { | ||
874 | ps->num_env++; | ||
875 | ps->border_position[ps->num_env] = 32 /* 30 for 960? */; | ||
876 | for (bin = 0; bin < 34; bin++) | ||
877 | { | ||
878 | ps->iid_index[ps->num_env][bin] = ps->iid_index[ps->num_env-1][bin]; | ||
879 | ps->icc_index[ps->num_env][bin] = ps->icc_index[ps->num_env-1][bin]; | ||
880 | } | ||
881 | for (bin = 0; bin < 17; bin++) | ||
882 | { | ||
883 | ps->ipd_index[ps->num_env][bin] = ps->ipd_index[ps->num_env-1][bin]; | ||
884 | ps->opd_index[ps->num_env][bin] = ps->opd_index[ps->num_env-1][bin]; | ||
885 | } | ||
886 | } | ||
887 | |||
888 | for (env = 1; env < ps->num_env; env++) | ||
889 | { | ||
890 | int8_t thr = 32 /* 30 for 960? */ - (ps->num_env - env); | ||
891 | |||
892 | if (ps->border_position[env] > thr) | ||
893 | { | ||
894 | ps->border_position[env] = thr; | ||
895 | } else { | ||
896 | thr = ps->border_position[env-1]+1; | ||
897 | if (ps->border_position[env] < thr) | ||
898 | { | ||
899 | ps->border_position[env] = thr; | ||
900 | } | ||
901 | } | ||
902 | } | ||
903 | } | ||
904 | |||
905 | /* make sure that the indices of all parameters can be mapped | ||
906 | * to the same hybrid synthesis filterbank | ||
907 | */ | ||
908 | #ifdef PS_LOW_POWER | ||
909 | for (env = 0; env < ps->num_env; env++) | ||
910 | { | ||
911 | if (ps->iid_mode == 2 || ps->iid_mode == 5) | ||
912 | map34indexto20(ps->iid_index[env], 34); | ||
913 | if (ps->icc_mode == 2 || ps->icc_mode == 5) | ||
914 | map34indexto20(ps->icc_index[env], 34); | ||
915 | |||
916 | /* disable ipd/opd */ | ||
917 | for (bin = 0; bin < 17; bin++) | ||
918 | { | ||
919 | ps->aaIpdIndex[env][bin] = 0; | ||
920 | ps->aaOpdIndex[env][bin] = 0; | ||
921 | } | ||
922 | } | ||
923 | #else | ||
924 | if (ps->use34hybrid_bands) | ||
925 | { | ||
926 | for (env = 0; env < ps->num_env; env++) | ||
927 | { | ||
928 | if (ps->iid_mode != 2 && ps->iid_mode != 5) | ||
929 | map20indexto34(ps->iid_index[env], 34); | ||
930 | if (ps->icc_mode != 2 && ps->icc_mode != 5) | ||
931 | map20indexto34(ps->icc_index[env], 34); | ||
932 | if (ps->ipd_mode != 2 && ps->ipd_mode != 5) | ||
933 | { | ||
934 | map20indexto34(ps->ipd_index[env], 17); | ||
935 | map20indexto34(ps->opd_index[env], 17); | ||
936 | } | ||
937 | } | ||
938 | } | ||
939 | #endif | ||
940 | |||
941 | #if 0 | ||
942 | for (env = 0; env < ps->num_env; env++) | ||
943 | { | ||
944 | printf("iid[env:%d]:", env); | ||
945 | for (bin = 0; bin < 34; bin++) | ||
946 | { | ||
947 | printf(" %d", ps->iid_index[env][bin]); | ||
948 | } | ||
949 | printf("\n"); | ||
950 | } | ||
951 | for (env = 0; env < ps->num_env; env++) | ||
952 | { | ||
953 | printf("icc[env:%d]:", env); | ||
954 | for (bin = 0; bin < 34; bin++) | ||
955 | { | ||
956 | printf(" %d", ps->icc_index[env][bin]); | ||
957 | } | ||
958 | printf("\n"); | ||
959 | } | ||
960 | for (env = 0; env < ps->num_env; env++) | ||
961 | { | ||
962 | printf("ipd[env:%d]:", env); | ||
963 | for (bin = 0; bin < 17; bin++) | ||
964 | { | ||
965 | printf(" %d", ps->ipd_index[env][bin]); | ||
966 | } | ||
967 | printf("\n"); | ||
968 | } | ||
969 | for (env = 0; env < ps->num_env; env++) | ||
970 | { | ||
971 | printf("opd[env:%d]:", env); | ||
972 | for (bin = 0; bin < 17; bin++) | ||
973 | { | ||
974 | printf(" %d", ps->opd_index[env][bin]); | ||
975 | } | ||
976 | printf("\n"); | ||
977 | } | ||
978 | printf("\n"); | ||
979 | #endif | ||
980 | } | ||
981 | |||
982 | /* decorrelate the mono signal using an allpass filter */ | ||
983 | static void ps_decorrelate(ps_info *ps, | ||
984 | qmf_t X_left[MAX_NTSRPS][64], | ||
985 | qmf_t X_right[MAX_NTSRPS][64], | ||
986 | qmf_t X_hybrid_left[32][32], | ||
987 | qmf_t X_hybrid_right[32][32]) | ||
988 | { | ||
989 | uint8_t gr, n, m, bk; | ||
990 | uint8_t temp_delay = 0; | ||
991 | uint8_t sb, maxsb; | ||
992 | const complex_t *Phi_Fract_SubQmf; | ||
993 | uint8_t temp_delay_ser[NO_ALLPASS_LINKS]; | ||
994 | real_t P_SmoothPeakDecayDiffNrg, nrg; | ||
995 | static real_t P[32][34]; | ||
996 | static real_t G_TransientRatio[32][34]; | ||
997 | complex_t inputLeft; | ||
998 | |||
999 | memset(&G_TransientRatio, 0, sizeof(G_TransientRatio)); | ||
1000 | |||
1001 | /* chose hybrid filterbank: 20 or 34 band case */ | ||
1002 | if (ps->use34hybrid_bands) | ||
1003 | { | ||
1004 | Phi_Fract_SubQmf = Phi_Fract_SubQmf34; | ||
1005 | } else{ | ||
1006 | Phi_Fract_SubQmf = Phi_Fract_SubQmf20; | ||
1007 | } | ||
1008 | |||
1009 | /* clear the energy values */ | ||
1010 | for (n = 0; n < 32; n++) | ||
1011 | { | ||
1012 | for (bk = 0; bk < 34; bk++) | ||
1013 | { | ||
1014 | P[n][bk] = 0; | ||
1015 | } | ||
1016 | } | ||
1017 | |||
1018 | /* calculate the energy in each parameter band b(k) */ | ||
1019 | for (gr = 0; gr < ps->num_groups; gr++) | ||
1020 | { | ||
1021 | /* select the parameter index b(k) to which this group belongs */ | ||
1022 | bk = (~NEGATE_IPD_MASK) & ps->map_group2bk[gr]; | ||
1023 | |||
1024 | /* select the upper subband border for this group */ | ||
1025 | maxsb = (gr < ps->num_hybrid_groups) ? ps->group_border[gr]+1 : ps->group_border[gr+1]; | ||
1026 | |||
1027 | for (sb = ps->group_border[gr]; sb < maxsb; sb++) | ||
1028 | { | ||
1029 | for (n = ps->border_position[0]; n < ps->border_position[ps->num_env]; n++) | ||
1030 | { | ||
1031 | #ifdef FIXED_POINT | ||
1032 | uint32_t in_re, in_im; | ||
1033 | #endif | ||
1034 | |||
1035 | /* input from hybrid subbands or QMF subbands */ | ||
1036 | if (gr < ps->num_hybrid_groups) | ||
1037 | { | ||
1038 | RE(inputLeft) = QMF_RE(X_hybrid_left[n][sb]); | ||
1039 | IM(inputLeft) = QMF_IM(X_hybrid_left[n][sb]); | ||
1040 | } else { | ||
1041 | RE(inputLeft) = QMF_RE(X_left[n][sb]); | ||
1042 | IM(inputLeft) = QMF_IM(X_left[n][sb]); | ||
1043 | } | ||
1044 | |||
1045 | /* accumulate energy */ | ||
1046 | #ifdef FIXED_POINT | ||
1047 | /* NOTE: all input is scaled by 2^(-5) because of fixed point QMF | ||
1048 | * meaning that P will be scaled by 2^(-10) compared to floating point version | ||
1049 | */ | ||
1050 | in_re = ((abs(RE(inputLeft))+(1<<(REAL_BITS-1)))>>REAL_BITS); | ||
1051 | in_im = ((abs(IM(inputLeft))+(1<<(REAL_BITS-1)))>>REAL_BITS); | ||
1052 | P[n][bk] += in_re*in_re + in_im*in_im; | ||
1053 | #else | ||
1054 | P[n][bk] += MUL_R(RE(inputLeft),RE(inputLeft)) + MUL_R(IM(inputLeft),IM(inputLeft)); | ||
1055 | #endif | ||
1056 | } | ||
1057 | } | ||
1058 | } | ||
1059 | |||
1060 | #if 0 | ||
1061 | for (n = 0; n < 32; n++) | ||
1062 | { | ||
1063 | for (bk = 0; bk < 34; bk++) | ||
1064 | { | ||
1065 | #ifdef FIXED_POINT | ||
1066 | printf("%d %d: %d\n", n, bk, P[n][bk] /*/(float)REAL_PRECISION*/); | ||
1067 | #else | ||
1068 | printf("%d %d: %f\n", n, bk, P[n][bk]/1024.0); | ||
1069 | #endif | ||
1070 | } | ||
1071 | } | ||
1072 | #endif | ||
1073 | |||
1074 | /* calculate transient reduction ratio for each parameter band b(k) */ | ||
1075 | for (bk = 0; bk < ps->nr_par_bands; bk++) | ||
1076 | { | ||
1077 | for (n = ps->border_position[0]; n < ps->border_position[ps->num_env]; n++) | ||
1078 | { | ||
1079 | const real_t gamma = COEF_CONST(1.5); | ||
1080 | |||
1081 | ps->P_PeakDecayNrg[bk] = MUL_F(ps->P_PeakDecayNrg[bk], ps->alpha_decay); | ||
1082 | if (ps->P_PeakDecayNrg[bk] < P[n][bk]) | ||
1083 | ps->P_PeakDecayNrg[bk] = P[n][bk]; | ||
1084 | |||
1085 | /* apply smoothing filter to peak decay energy */ | ||
1086 | P_SmoothPeakDecayDiffNrg = ps->P_SmoothPeakDecayDiffNrg_prev[bk]; | ||
1087 | P_SmoothPeakDecayDiffNrg += MUL_F((ps->P_PeakDecayNrg[bk] - P[n][bk] - ps->P_SmoothPeakDecayDiffNrg_prev[bk]), ps->alpha_smooth); | ||
1088 | ps->P_SmoothPeakDecayDiffNrg_prev[bk] = P_SmoothPeakDecayDiffNrg; | ||
1089 | |||
1090 | /* apply smoothing filter to energy */ | ||
1091 | nrg = ps->P_prev[bk]; | ||
1092 | nrg += MUL_F((P[n][bk] - ps->P_prev[bk]), ps->alpha_smooth); | ||
1093 | ps->P_prev[bk] = nrg; | ||
1094 | |||
1095 | /* calculate transient ratio */ | ||
1096 | if (MUL_C(P_SmoothPeakDecayDiffNrg, gamma) <= nrg) | ||
1097 | { | ||
1098 | G_TransientRatio[n][bk] = REAL_CONST(1.0); | ||
1099 | } else { | ||
1100 | G_TransientRatio[n][bk] = DIV_R(nrg, (MUL_C(P_SmoothPeakDecayDiffNrg, gamma))); | ||
1101 | } | ||
1102 | } | ||
1103 | } | ||
1104 | |||
1105 | #if 0 | ||
1106 | for (n = 0; n < 32; n++) | ||
1107 | { | ||
1108 | for (bk = 0; bk < 34; bk++) | ||
1109 | { | ||
1110 | #ifdef FIXED_POINT | ||
1111 | printf("%d %d: %f\n", n, bk, G_TransientRatio[n][bk]/(float)REAL_PRECISION); | ||
1112 | #else | ||
1113 | printf("%d %d: %f\n", n, bk, G_TransientRatio[n][bk]); | ||
1114 | #endif | ||
1115 | } | ||
1116 | } | ||
1117 | #endif | ||
1118 | |||
1119 | /* apply stereo decorrelation filter to the signal */ | ||
1120 | for (gr = 0; gr < ps->num_groups; gr++) | ||
1121 | { | ||
1122 | if (gr < ps->num_hybrid_groups) | ||
1123 | maxsb = ps->group_border[gr] + 1; | ||
1124 | else | ||
1125 | maxsb = ps->group_border[gr + 1]; | ||
1126 | |||
1127 | /* QMF channel */ | ||
1128 | for (sb = ps->group_border[gr]; sb < maxsb; sb++) | ||
1129 | { | ||
1130 | real_t g_DecaySlope; | ||
1131 | real_t g_DecaySlope_filt[NO_ALLPASS_LINKS]; | ||
1132 | |||
1133 | /* g_DecaySlope: [0..1] */ | ||
1134 | if (gr < ps->num_hybrid_groups || sb <= ps->decay_cutoff) | ||
1135 | { | ||
1136 | g_DecaySlope = FRAC_CONST(1.0); | ||
1137 | } else { | ||
1138 | int8_t decay = ps->decay_cutoff - sb; | ||
1139 | if (decay <= -20 /* -1/DECAY_SLOPE */) | ||
1140 | { | ||
1141 | g_DecaySlope = 0; | ||
1142 | } else { | ||
1143 | /* decay(int)*decay_slope(frac) = g_DecaySlope(frac) */ | ||
1144 | g_DecaySlope = FRAC_CONST(1.0) + DECAY_SLOPE * decay; | ||
1145 | } | ||
1146 | } | ||
1147 | |||
1148 | /* calculate g_DecaySlope_filt for every m multiplied by filter_a[m] */ | ||
1149 | for (m = 0; m < NO_ALLPASS_LINKS; m++) | ||
1150 | { | ||
1151 | g_DecaySlope_filt[m] = MUL_F(g_DecaySlope, filter_a[m]); | ||
1152 | } | ||
1153 | |||
1154 | |||
1155 | /* set delay indices */ | ||
1156 | temp_delay = ps->saved_delay; | ||
1157 | for (n = 0; n < NO_ALLPASS_LINKS; n++) | ||
1158 | temp_delay_ser[n] = ps->delay_buf_index_ser[n]; | ||
1159 | |||
1160 | for (n = ps->border_position[0]; n < ps->border_position[ps->num_env]; n++) | ||
1161 | { | ||
1162 | complex_t tmp, tmp0, R0; | ||
1163 | |||
1164 | if (gr < ps->num_hybrid_groups) | ||
1165 | { | ||
1166 | /* hybrid filterbank input */ | ||
1167 | RE(inputLeft) = QMF_RE(X_hybrid_left[n][sb]); | ||
1168 | IM(inputLeft) = QMF_IM(X_hybrid_left[n][sb]); | ||
1169 | } else { | ||
1170 | /* QMF filterbank input */ | ||
1171 | RE(inputLeft) = QMF_RE(X_left[n][sb]); | ||
1172 | IM(inputLeft) = QMF_IM(X_left[n][sb]); | ||
1173 | } | ||
1174 | |||
1175 | if (sb > ps->nr_allpass_bands && gr >= ps->num_hybrid_groups) | ||
1176 | { | ||
1177 | /* delay */ | ||
1178 | |||
1179 | /* never hybrid subbands here, always QMF subbands */ | ||
1180 | RE(tmp) = RE(ps->delay_Qmf[ps->delay_buf_index_delay[sb]][sb]); | ||
1181 | IM(tmp) = IM(ps->delay_Qmf[ps->delay_buf_index_delay[sb]][sb]); | ||
1182 | RE(R0) = RE(tmp); | ||
1183 | IM(R0) = IM(tmp); | ||
1184 | RE(ps->delay_Qmf[ps->delay_buf_index_delay[sb]][sb]) = RE(inputLeft); | ||
1185 | IM(ps->delay_Qmf[ps->delay_buf_index_delay[sb]][sb]) = IM(inputLeft); | ||
1186 | } else { | ||
1187 | /* allpass filter */ | ||
1188 | uint8_t m; | ||
1189 | complex_t Phi_Fract; | ||
1190 | |||
1191 | /* fetch parameters */ | ||
1192 | if (gr < ps->num_hybrid_groups) | ||
1193 | { | ||
1194 | /* select data from the hybrid subbands */ | ||
1195 | RE(tmp0) = RE(ps->delay_SubQmf[temp_delay][sb]); | ||
1196 | IM(tmp0) = IM(ps->delay_SubQmf[temp_delay][sb]); | ||
1197 | |||
1198 | RE(ps->delay_SubQmf[temp_delay][sb]) = RE(inputLeft); | ||
1199 | IM(ps->delay_SubQmf[temp_delay][sb]) = IM(inputLeft); | ||
1200 | |||
1201 | RE(Phi_Fract) = RE(Phi_Fract_SubQmf[sb]); | ||
1202 | IM(Phi_Fract) = IM(Phi_Fract_SubQmf[sb]); | ||
1203 | } else { | ||
1204 | /* select data from the QMF subbands */ | ||
1205 | RE(tmp0) = RE(ps->delay_Qmf[temp_delay][sb]); | ||
1206 | IM(tmp0) = IM(ps->delay_Qmf[temp_delay][sb]); | ||
1207 | |||
1208 | RE(ps->delay_Qmf[temp_delay][sb]) = RE(inputLeft); | ||
1209 | IM(ps->delay_Qmf[temp_delay][sb]) = IM(inputLeft); | ||
1210 | |||
1211 | RE(Phi_Fract) = RE(Phi_Fract_Qmf[sb]); | ||
1212 | IM(Phi_Fract) = IM(Phi_Fract_Qmf[sb]); | ||
1213 | } | ||
1214 | |||
1215 | /* z^(-2) * Phi_Fract[k] */ | ||
1216 | ComplexMult(&RE(tmp), &IM(tmp), RE(tmp0), IM(tmp0), RE(Phi_Fract), IM(Phi_Fract)); | ||
1217 | |||
1218 | RE(R0) = RE(tmp); | ||
1219 | IM(R0) = IM(tmp); | ||
1220 | for (m = 0; m < NO_ALLPASS_LINKS; m++) | ||
1221 | { | ||
1222 | complex_t Q_Fract_allpass, tmp2; | ||
1223 | |||
1224 | /* fetch parameters */ | ||
1225 | if (gr < ps->num_hybrid_groups) | ||
1226 | { | ||
1227 | /* select data from the hybrid subbands */ | ||
1228 | RE(tmp0) = RE(ps->delay_SubQmf_ser[m][temp_delay_ser[m]][sb]); | ||
1229 | IM(tmp0) = IM(ps->delay_SubQmf_ser[m][temp_delay_ser[m]][sb]); | ||
1230 | |||
1231 | if (ps->use34hybrid_bands) | ||
1232 | { | ||
1233 | RE(Q_Fract_allpass) = RE(Q_Fract_allpass_SubQmf34[sb][m]); | ||
1234 | IM(Q_Fract_allpass) = IM(Q_Fract_allpass_SubQmf34[sb][m]); | ||
1235 | } else { | ||
1236 | RE(Q_Fract_allpass) = RE(Q_Fract_allpass_SubQmf20[sb][m]); | ||
1237 | IM(Q_Fract_allpass) = IM(Q_Fract_allpass_SubQmf20[sb][m]); | ||
1238 | } | ||
1239 | } else { | ||
1240 | /* select data from the QMF subbands */ | ||
1241 | RE(tmp0) = RE(ps->delay_Qmf_ser[m][temp_delay_ser[m]][sb]); | ||
1242 | IM(tmp0) = IM(ps->delay_Qmf_ser[m][temp_delay_ser[m]][sb]); | ||
1243 | |||
1244 | RE(Q_Fract_allpass) = RE(Q_Fract_allpass_Qmf[sb][m]); | ||
1245 | IM(Q_Fract_allpass) = IM(Q_Fract_allpass_Qmf[sb][m]); | ||
1246 | } | ||
1247 | |||
1248 | /* delay by a fraction */ | ||
1249 | /* z^(-d(m)) * Q_Fract_allpass[k,m] */ | ||
1250 | ComplexMult(&RE(tmp), &IM(tmp), RE(tmp0), IM(tmp0), RE(Q_Fract_allpass), IM(Q_Fract_allpass)); | ||
1251 | |||
1252 | /* -a(m) * g_DecaySlope[k] */ | ||
1253 | RE(tmp) += -MUL_F(g_DecaySlope_filt[m], RE(R0)); | ||
1254 | IM(tmp) += -MUL_F(g_DecaySlope_filt[m], IM(R0)); | ||
1255 | |||
1256 | /* -a(m) * g_DecaySlope[k] * Q_Fract_allpass[k,m] * z^(-d(m)) */ | ||
1257 | RE(tmp2) = RE(R0) + MUL_F(g_DecaySlope_filt[m], RE(tmp)); | ||
1258 | IM(tmp2) = IM(R0) + MUL_F(g_DecaySlope_filt[m], IM(tmp)); | ||
1259 | |||
1260 | /* store sample */ | ||
1261 | if (gr < ps->num_hybrid_groups) | ||
1262 | { | ||
1263 | RE(ps->delay_SubQmf_ser[m][temp_delay_ser[m]][sb]) = RE(tmp2); | ||
1264 | IM(ps->delay_SubQmf_ser[m][temp_delay_ser[m]][sb]) = IM(tmp2); | ||
1265 | } else { | ||
1266 | RE(ps->delay_Qmf_ser[m][temp_delay_ser[m]][sb]) = RE(tmp2); | ||
1267 | IM(ps->delay_Qmf_ser[m][temp_delay_ser[m]][sb]) = IM(tmp2); | ||
1268 | } | ||
1269 | |||
1270 | /* store for next iteration (or as output value if last iteration) */ | ||
1271 | RE(R0) = RE(tmp); | ||
1272 | IM(R0) = IM(tmp); | ||
1273 | } | ||
1274 | } | ||
1275 | |||
1276 | /* select b(k) for reading the transient ratio */ | ||
1277 | bk = (~NEGATE_IPD_MASK) & ps->map_group2bk[gr]; | ||
1278 | |||
1279 | /* duck if a past transient is found */ | ||
1280 | RE(R0) = MUL_R(G_TransientRatio[n][bk], RE(R0)); | ||
1281 | IM(R0) = MUL_R(G_TransientRatio[n][bk], IM(R0)); | ||
1282 | |||
1283 | if (gr < ps->num_hybrid_groups) | ||
1284 | { | ||
1285 | /* hybrid */ | ||
1286 | QMF_RE(X_hybrid_right[n][sb]) = RE(R0); | ||
1287 | QMF_IM(X_hybrid_right[n][sb]) = IM(R0); | ||
1288 | } else { | ||
1289 | /* QMF */ | ||
1290 | QMF_RE(X_right[n][sb]) = RE(R0); | ||
1291 | QMF_IM(X_right[n][sb]) = IM(R0); | ||
1292 | } | ||
1293 | |||
1294 | /* Update delay buffer index */ | ||
1295 | if (++temp_delay >= 2) | ||
1296 | { | ||
1297 | temp_delay = 0; | ||
1298 | } | ||
1299 | |||
1300 | /* update delay indices */ | ||
1301 | if (sb > ps->nr_allpass_bands && gr >= ps->num_hybrid_groups) | ||
1302 | { | ||
1303 | /* delay_D depends on the samplerate, it can hold the values 14 and 1 */ | ||
1304 | if (++ps->delay_buf_index_delay[sb] >= ps->delay_D[sb]) | ||
1305 | { | ||
1306 | ps->delay_buf_index_delay[sb] = 0; | ||
1307 | } | ||
1308 | } | ||
1309 | |||
1310 | for (m = 0; m < NO_ALLPASS_LINKS; m++) | ||
1311 | { | ||
1312 | if (++temp_delay_ser[m] >= ps->num_sample_delay_ser[m]) | ||
1313 | { | ||
1314 | temp_delay_ser[m] = 0; | ||
1315 | } | ||
1316 | } | ||
1317 | } | ||
1318 | } | ||
1319 | } | ||
1320 | |||
1321 | /* update delay indices */ | ||
1322 | ps->saved_delay = temp_delay; | ||
1323 | for (m = 0; m < NO_ALLPASS_LINKS; m++) | ||
1324 | ps->delay_buf_index_ser[m] = temp_delay_ser[m]; | ||
1325 | } | ||
1326 | |||
1327 | #ifdef FIXED_POINT | ||
1328 | #define step(shift) \ | ||
1329 | if ((0x40000000l >> shift) + root <= value) \ | ||
1330 | { \ | ||
1331 | value -= (0x40000000l >> shift) + root; \ | ||
1332 | root = (root >> 1) | (0x40000000l >> shift); \ | ||
1333 | } else { \ | ||
1334 | root = root >> 1; \ | ||
1335 | } | ||
1336 | |||
1337 | /* fixed point square root approximation */ | ||
1338 | static real_t ps_sqrt(real_t value) | ||
1339 | { | ||
1340 | real_t root = 0; | ||
1341 | |||
1342 | step( 0); step( 2); step( 4); step( 6); | ||
1343 | step( 8); step(10); step(12); step(14); | ||
1344 | step(16); step(18); step(20); step(22); | ||
1345 | step(24); step(26); step(28); step(30); | ||
1346 | |||
1347 | if (root < value) | ||
1348 | ++root; | ||
1349 | |||
1350 | root <<= (REAL_BITS/2); | ||
1351 | |||
1352 | return root; | ||
1353 | } | ||
1354 | #else | ||
1355 | #define ps_sqrt(A) sqrt(A) | ||
1356 | #endif | ||
1357 | |||
1358 | static const real_t ipdopd_cos_tab[] = { | ||
1359 | FRAC_CONST(1.000000000000000), | ||
1360 | FRAC_CONST(0.707106781186548), | ||
1361 | FRAC_CONST(0.000000000000000), | ||
1362 | FRAC_CONST(-0.707106781186547), | ||
1363 | FRAC_CONST(-1.000000000000000), | ||
1364 | FRAC_CONST(-0.707106781186548), | ||
1365 | FRAC_CONST(-0.000000000000000), | ||
1366 | FRAC_CONST(0.707106781186547), | ||
1367 | FRAC_CONST(1.000000000000000) | ||
1368 | }; | ||
1369 | |||
1370 | static const real_t ipdopd_sin_tab[] = { | ||
1371 | FRAC_CONST(0.000000000000000), | ||
1372 | FRAC_CONST(0.707106781186547), | ||
1373 | FRAC_CONST(1.000000000000000), | ||
1374 | FRAC_CONST(0.707106781186548), | ||
1375 | FRAC_CONST(0.000000000000000), | ||
1376 | FRAC_CONST(-0.707106781186547), | ||
1377 | FRAC_CONST(-1.000000000000000), | ||
1378 | FRAC_CONST(-0.707106781186548), | ||
1379 | FRAC_CONST(-0.000000000000000) | ||
1380 | }; | ||
1381 | |||
1382 | static void ps_mix_phase(ps_info *ps, | ||
1383 | qmf_t X_left[MAX_NTSRPS][64], | ||
1384 | qmf_t X_right[MAX_NTSRPS][64], | ||
1385 | qmf_t X_hybrid_left[32][32], | ||
1386 | qmf_t X_hybrid_right[32][32]) | ||
1387 | { | ||
1388 | uint8_t n; | ||
1389 | uint8_t gr; | ||
1390 | uint8_t bk = 0; | ||
1391 | uint8_t sb, maxsb; | ||
1392 | uint8_t env; | ||
1393 | uint8_t nr_ipdopd_par; | ||
1394 | complex_t h11 = {0,0}, h12 = {0,0}, h21 = {0,0}, h22 = {0,0}; | ||
1395 | complex_t H11 = {0,0}, H12 = {0,0}, H21 = {0,0}, H22 = {0,0}; | ||
1396 | complex_t deltaH11= {0,0}, deltaH12 = {0,0}, deltaH21= {0,0}, deltaH22= {0,0}; | ||
1397 | complex_t tempLeft; | ||
1398 | complex_t tempRight; | ||
1399 | complex_t phaseLeft; | ||
1400 | complex_t phaseRight; | ||
1401 | real_t L; | ||
1402 | const real_t *sf_iid; | ||
1403 | uint8_t no_iid_steps; | ||
1404 | |||
1405 | if (ps->iid_mode >= 3) | ||
1406 | { | ||
1407 | no_iid_steps = 15; | ||
1408 | sf_iid = sf_iid_fine; | ||
1409 | } else { | ||
1410 | no_iid_steps = 7; | ||
1411 | sf_iid = sf_iid_normal; | ||
1412 | } | ||
1413 | |||
1414 | if (ps->ipd_mode == 0 || ps->ipd_mode == 3) | ||
1415 | { | ||
1416 | nr_ipdopd_par = 11; /* resolution */ | ||
1417 | } else { | ||
1418 | nr_ipdopd_par = ps->nr_ipdopd_par; | ||
1419 | } | ||
1420 | |||
1421 | for (gr = 0; gr < ps->num_groups; gr++) | ||
1422 | { | ||
1423 | bk = (~NEGATE_IPD_MASK) & ps->map_group2bk[gr]; | ||
1424 | |||
1425 | /* use one channel per group in the subqmf domain */ | ||
1426 | maxsb = (gr < ps->num_hybrid_groups) ? ps->group_border[gr] + 1 : ps->group_border[gr + 1]; | ||
1427 | |||
1428 | for (env = 0; env < ps->num_env; env++) | ||
1429 | { | ||
1430 | if (ps->icc_mode < 3) | ||
1431 | { | ||
1432 | /* type 'A' mixing as described in 8.6.4.6.2.1 */ | ||
1433 | real_t c_1, c_2; | ||
1434 | real_t cosa, sina; | ||
1435 | real_t cosb, sinb; | ||
1436 | real_t ab1, ab2; | ||
1437 | real_t ab3, ab4; | ||
1438 | |||
1439 | /* | ||
1440 | c_1 = sqrt(2.0 / (1.0 + pow(10.0, quant_iid[no_iid_steps + iid_index] / 10.0))); | ||
1441 | c_2 = sqrt(2.0 / (1.0 + pow(10.0, quant_iid[no_iid_steps - iid_index] / 10.0))); | ||
1442 | alpha = 0.5 * acos(quant_rho[icc_index]); | ||
1443 | beta = alpha * ( c_1 - c_2 ) / sqrt(2.0); | ||
1444 | */ | ||
1445 | |||
1446 | //printf("%d\n", ps->iid_index[env][bk]); | ||
1447 | |||
1448 | /* calculate the scalefactors c_1 and c_2 from the intensity differences */ | ||
1449 | c_1 = sf_iid[no_iid_steps + ps->iid_index[env][bk]]; | ||
1450 | c_2 = sf_iid[no_iid_steps - ps->iid_index[env][bk]]; | ||
1451 | |||
1452 | /* calculate alpha and beta using the ICC parameters */ | ||
1453 | cosa = cos_alphas[ps->icc_index[env][bk]]; | ||
1454 | sina = sin_alphas[ps->icc_index[env][bk]]; | ||
1455 | |||
1456 | if (ps->iid_mode >= 3) | ||
1457 | { | ||
1458 | if (ps->iid_index[env][bk] < 0) | ||
1459 | { | ||
1460 | cosb = cos_betas_fine[-ps->iid_index[env][bk]][ps->icc_index[env][bk]]; | ||
1461 | sinb = -sin_betas_fine[-ps->iid_index[env][bk]][ps->icc_index[env][bk]]; | ||
1462 | } else { | ||
1463 | cosb = cos_betas_fine[ps->iid_index[env][bk]][ps->icc_index[env][bk]]; | ||
1464 | sinb = sin_betas_fine[ps->iid_index[env][bk]][ps->icc_index[env][bk]]; | ||
1465 | } | ||
1466 | } else { | ||
1467 | if (ps->iid_index[env][bk] < 0) | ||
1468 | { | ||
1469 | cosb = cos_betas_normal[-ps->iid_index[env][bk]][ps->icc_index[env][bk]]; | ||
1470 | sinb = -sin_betas_normal[-ps->iid_index[env][bk]][ps->icc_index[env][bk]]; | ||
1471 | } else { | ||
1472 | cosb = cos_betas_normal[ps->iid_index[env][bk]][ps->icc_index[env][bk]]; | ||
1473 | sinb = sin_betas_normal[ps->iid_index[env][bk]][ps->icc_index[env][bk]]; | ||
1474 | } | ||
1475 | } | ||
1476 | |||
1477 | ab1 = MUL_C(cosb, cosa); | ||
1478 | ab2 = MUL_C(sinb, sina); | ||
1479 | ab3 = MUL_C(sinb, cosa); | ||
1480 | ab4 = MUL_C(cosb, sina); | ||
1481 | |||
1482 | /* h_xy: COEF */ | ||
1483 | RE(h11) = MUL_C(c_2, (ab1 - ab2)); | ||
1484 | RE(h12) = MUL_C(c_1, (ab1 + ab2)); | ||
1485 | RE(h21) = MUL_C(c_2, (ab3 + ab4)); | ||
1486 | RE(h22) = MUL_C(c_1, (ab3 - ab4)); | ||
1487 | } else { | ||
1488 | /* type 'B' mixing as described in 8.6.4.6.2.2 */ | ||
1489 | real_t sina, cosa; | ||
1490 | real_t cosg, sing; | ||
1491 | |||
1492 | /* | ||
1493 | real_t c, rho, mu, alpha, gamma; | ||
1494 | uint8_t i; | ||
1495 | |||
1496 | i = ps->iid_index[env][bk]; | ||
1497 | c = (real_t)pow(10.0, ((i)?(((i>0)?1:-1)*quant_iid[((i>0)?i:-i)-1]):0.)/20.0); | ||
1498 | rho = quant_rho[ps->icc_index[env][bk]]; | ||
1499 | |||
1500 | if (rho == 0.0f && c == 1.) | ||
1501 | { | ||
1502 | alpha = (real_t)M_PI/4.0f; | ||
1503 | rho = 0.05f; | ||
1504 | } else { | ||
1505 | if (rho <= 0.05f) | ||
1506 | { | ||
1507 | rho = 0.05f; | ||
1508 | } | ||
1509 | alpha = 0.5f*(real_t)atan( (2.0f*c*rho) / (c*c-1.0f) ); | ||
1510 | |||
1511 | if (alpha < 0.) | ||
1512 | { | ||
1513 | alpha += (real_t)M_PI/2.0f; | ||
1514 | } | ||
1515 | if (rho < 0.) | ||
1516 | { | ||
1517 | alpha += (real_t)M_PI; | ||
1518 | } | ||
1519 | } | ||
1520 | mu = c+1.0f/c; | ||
1521 | mu = 1+(4.0f*rho*rho-4.0f)/(mu*mu); | ||
1522 | gamma = (real_t)atan(sqrt((1.0f-sqrt(mu))/(1.0f+sqrt(mu)))); | ||
1523 | */ | ||
1524 | |||
1525 | if (ps->iid_mode >= 3) | ||
1526 | { | ||
1527 | uint8_t abs_iid = abs(ps->iid_index[env][bk]); | ||
1528 | |||
1529 | cosa = sincos_alphas_B_fine[no_iid_steps + ps->iid_index[env][bk]][ps->icc_index[env][bk]]; | ||
1530 | sina = sincos_alphas_B_fine[30 - (no_iid_steps + ps->iid_index[env][bk])][ps->icc_index[env][bk]]; | ||
1531 | cosg = cos_gammas_fine[abs_iid][ps->icc_index[env][bk]]; | ||
1532 | sing = sin_gammas_fine[abs_iid][ps->icc_index[env][bk]]; | ||
1533 | } else { | ||
1534 | uint8_t abs_iid = abs(ps->iid_index[env][bk]); | ||
1535 | |||
1536 | cosa = sincos_alphas_B_normal[no_iid_steps + ps->iid_index[env][bk]][ps->icc_index[env][bk]]; | ||
1537 | sina = sincos_alphas_B_normal[14 - (no_iid_steps + ps->iid_index[env][bk])][ps->icc_index[env][bk]]; | ||
1538 | cosg = cos_gammas_normal[abs_iid][ps->icc_index[env][bk]]; | ||
1539 | sing = sin_gammas_normal[abs_iid][ps->icc_index[env][bk]]; | ||
1540 | } | ||
1541 | |||
1542 | RE(h11) = MUL_C(COEF_SQRT2, MUL_C(cosa, cosg)); | ||
1543 | RE(h12) = MUL_C(COEF_SQRT2, MUL_C(sina, cosg)); | ||
1544 | RE(h21) = MUL_C(COEF_SQRT2, MUL_C(-cosa, sing)); | ||
1545 | RE(h22) = MUL_C(COEF_SQRT2, MUL_C(sina, sing)); | ||
1546 | } | ||
1547 | |||
1548 | /* calculate phase rotation parameters H_xy */ | ||
1549 | /* note that the imaginary part of these parameters are only calculated when | ||
1550 | IPD and OPD are enabled | ||
1551 | */ | ||
1552 | if ((ps->enable_ipdopd) && (bk < nr_ipdopd_par)) | ||
1553 | { | ||
1554 | int8_t i; | ||
1555 | real_t xxyy, ppqq; | ||
1556 | real_t yq, xp, xq, py, tmp; | ||
1557 | |||
1558 | /* ringbuffer index */ | ||
1559 | i = ps->phase_hist; | ||
1560 | |||
1561 | /* previous value */ | ||
1562 | #ifdef FIXED_POINT | ||
1563 | /* divide by 4, shift right 2 bits */ | ||
1564 | RE(tempLeft) = RE(ps->ipd_prev[bk][i]) >> 2; | ||
1565 | IM(tempLeft) = IM(ps->ipd_prev[bk][i]) >> 2; | ||
1566 | RE(tempRight) = RE(ps->opd_prev[bk][i]) >> 2; | ||
1567 | IM(tempRight) = IM(ps->opd_prev[bk][i]) >> 2; | ||
1568 | #else | ||
1569 | RE(tempLeft) = MUL_F(RE(ps->ipd_prev[bk][i]), FRAC_CONST(0.25)); | ||
1570 | IM(tempLeft) = MUL_F(IM(ps->ipd_prev[bk][i]), FRAC_CONST(0.25)); | ||
1571 | RE(tempRight) = MUL_F(RE(ps->opd_prev[bk][i]), FRAC_CONST(0.25)); | ||
1572 | IM(tempRight) = MUL_F(IM(ps->opd_prev[bk][i]), FRAC_CONST(0.25)); | ||
1573 | #endif | ||
1574 | |||
1575 | /* save current value */ | ||
1576 | RE(ps->ipd_prev[bk][i]) = ipdopd_cos_tab[abs(ps->ipd_index[env][bk])]; | ||
1577 | IM(ps->ipd_prev[bk][i]) = ipdopd_sin_tab[abs(ps->ipd_index[env][bk])]; | ||
1578 | RE(ps->opd_prev[bk][i]) = ipdopd_cos_tab[abs(ps->opd_index[env][bk])]; | ||
1579 | IM(ps->opd_prev[bk][i]) = ipdopd_sin_tab[abs(ps->opd_index[env][bk])]; | ||
1580 | |||
1581 | /* add current value */ | ||
1582 | RE(tempLeft) += RE(ps->ipd_prev[bk][i]); | ||
1583 | IM(tempLeft) += IM(ps->ipd_prev[bk][i]); | ||
1584 | RE(tempRight) += RE(ps->opd_prev[bk][i]); | ||
1585 | IM(tempRight) += IM(ps->opd_prev[bk][i]); | ||
1586 | |||
1587 | /* ringbuffer index */ | ||
1588 | if (i == 0) | ||
1589 | { | ||
1590 | i = 2; | ||
1591 | } | ||
1592 | i--; | ||
1593 | |||
1594 | /* get value before previous */ | ||
1595 | #ifdef FIXED_POINT | ||
1596 | /* dividing by 2, shift right 1 bit */ | ||
1597 | RE(tempLeft) += (RE(ps->ipd_prev[bk][i]) >> 1); | ||
1598 | IM(tempLeft) += (IM(ps->ipd_prev[bk][i]) >> 1); | ||
1599 | RE(tempRight) += (RE(ps->opd_prev[bk][i]) >> 1); | ||
1600 | IM(tempRight) += (IM(ps->opd_prev[bk][i]) >> 1); | ||
1601 | #else | ||
1602 | RE(tempLeft) += MUL_F(RE(ps->ipd_prev[bk][i]), FRAC_CONST(0.5)); | ||
1603 | IM(tempLeft) += MUL_F(IM(ps->ipd_prev[bk][i]), FRAC_CONST(0.5)); | ||
1604 | RE(tempRight) += MUL_F(RE(ps->opd_prev[bk][i]), FRAC_CONST(0.5)); | ||
1605 | IM(tempRight) += MUL_F(IM(ps->opd_prev[bk][i]), FRAC_CONST(0.5)); | ||
1606 | #endif | ||
1607 | |||
1608 | #if 0 /* original code */ | ||
1609 | ipd = (float)atan2(IM(tempLeft), RE(tempLeft)); | ||
1610 | opd = (float)atan2(IM(tempRight), RE(tempRight)); | ||
1611 | |||
1612 | /* phase rotation */ | ||
1613 | RE(phaseLeft) = (float)cos(opd); | ||
1614 | IM(phaseLeft) = (float)sin(opd); | ||
1615 | opd -= ipd; | ||
1616 | RE(phaseRight) = (float)cos(opd); | ||
1617 | IM(phaseRight) = (float)sin(opd); | ||
1618 | #else | ||
1619 | // x = IM(tempLeft) | ||
1620 | // y = RE(tempLeft) | ||
1621 | // p = IM(tempRight) | ||
1622 | // q = RE(tempRight) | ||
1623 | // cos(atan2(x,y)) = 1/sqrt(1 + (x*x)/(y*y)) | ||
1624 | // sin(atan2(x,y)) = x/(y*sqrt(1 + (x*x)/(y*y))) | ||
1625 | // cos(atan2(x,y)-atan2(p,q)) = (y*q+x*p)/(y*q * sqrt(1 + (x*x)/(y*y)) * sqrt(1 + (p*p)/(q*q))); | ||
1626 | // sin(atan2(x,y)-atan2(p,q)) = (x*q-p*y)/(y*q * sqrt(1 + (x*x)/(y*y)) * sqrt(1 + (p*p)/(q*q))); | ||
1627 | |||
1628 | /* (x*x)/(y*y) (REAL > 0) */ | ||
1629 | xxyy = DIV_R(MUL_C(IM(tempLeft),IM(tempLeft)), MUL_C(RE(tempLeft),RE(tempLeft))); | ||
1630 | ppqq = DIV_R(MUL_C(IM(tempRight),IM(tempRight)), MUL_C(RE(tempRight),RE(tempRight))); | ||
1631 | |||
1632 | /* 1 + (x*x)/(y*y) (REAL > 1) */ | ||
1633 | xxyy += REAL_CONST(1); | ||
1634 | ppqq += REAL_CONST(1); | ||
1635 | |||
1636 | /* 1 / sqrt(1 + (x*x)/(y*y)) (FRAC <= 1) */ | ||
1637 | xxyy = DIV_R(FRAC_CONST(1), ps_sqrt(xxyy)); | ||
1638 | ppqq = DIV_R(FRAC_CONST(1), ps_sqrt(ppqq)); | ||
1639 | |||
1640 | /* COEF */ | ||
1641 | yq = MUL_C(RE(tempLeft), RE(tempRight)); | ||
1642 | xp = MUL_C(IM(tempLeft), IM(tempRight)); | ||
1643 | xq = MUL_C(IM(tempLeft), RE(tempRight)); | ||
1644 | py = MUL_C(RE(tempLeft), IM(tempRight)); | ||
1645 | |||
1646 | RE(phaseLeft) = xxyy; | ||
1647 | IM(phaseLeft) = MUL_R(xxyy, (DIV_R(IM(tempLeft), RE(tempLeft)))); | ||
1648 | |||
1649 | tmp = DIV_C(MUL_F(xxyy, ppqq), yq); | ||
1650 | |||
1651 | /* MUL_C(FRAC,COEF) = FRAC */ | ||
1652 | RE(phaseRight) = MUL_C(tmp, (yq+xp)); | ||
1653 | IM(phaseRight) = MUL_C(tmp, (xq-py)); | ||
1654 | #endif | ||
1655 | |||
1656 | /* MUL_F(COEF, FRAC) = COEF */ | ||
1657 | IM(h11) = MUL_F(RE(h11), IM(phaseLeft)); | ||
1658 | IM(h12) = MUL_F(RE(h12), IM(phaseRight)); | ||
1659 | IM(h21) = MUL_F(RE(h21), IM(phaseLeft)); | ||
1660 | IM(h22) = MUL_F(RE(h22), IM(phaseRight)); | ||
1661 | |||
1662 | RE(h11) = MUL_F(RE(h11), RE(phaseLeft)); | ||
1663 | RE(h12) = MUL_F(RE(h12), RE(phaseRight)); | ||
1664 | RE(h21) = MUL_F(RE(h21), RE(phaseLeft)); | ||
1665 | RE(h22) = MUL_F(RE(h22), RE(phaseRight)); | ||
1666 | } | ||
1667 | |||
1668 | /* length of the envelope n_e+1 - n_e (in time samples) */ | ||
1669 | /* 0 < L <= 32: integer */ | ||
1670 | L = (real_t)(ps->border_position[env + 1] - ps->border_position[env]); | ||
1671 | |||
1672 | /* obtain final H_xy by means of linear interpolation */ | ||
1673 | RE(deltaH11) = (RE(h11) - RE(ps->h11_prev[gr])) / L; | ||
1674 | RE(deltaH12) = (RE(h12) - RE(ps->h12_prev[gr])) / L; | ||
1675 | RE(deltaH21) = (RE(h21) - RE(ps->h21_prev[gr])) / L; | ||
1676 | RE(deltaH22) = (RE(h22) - RE(ps->h22_prev[gr])) / L; | ||
1677 | |||
1678 | RE(H11) = RE(ps->h11_prev[gr]); | ||
1679 | RE(H12) = RE(ps->h12_prev[gr]); | ||
1680 | RE(H21) = RE(ps->h21_prev[gr]); | ||
1681 | RE(H22) = RE(ps->h22_prev[gr]); | ||
1682 | |||
1683 | RE(ps->h11_prev[gr]) = RE(h11); | ||
1684 | RE(ps->h12_prev[gr]) = RE(h12); | ||
1685 | RE(ps->h21_prev[gr]) = RE(h21); | ||
1686 | RE(ps->h22_prev[gr]) = RE(h22); | ||
1687 | |||
1688 | /* only calculate imaginary part when needed */ | ||
1689 | if ((ps->enable_ipdopd) && (bk < nr_ipdopd_par)) | ||
1690 | { | ||
1691 | /* obtain final H_xy by means of linear interpolation */ | ||
1692 | IM(deltaH11) = (IM(h11) - IM(ps->h11_prev[gr])) / L; | ||
1693 | IM(deltaH12) = (IM(h12) - IM(ps->h12_prev[gr])) / L; | ||
1694 | IM(deltaH21) = (IM(h21) - IM(ps->h21_prev[gr])) / L; | ||
1695 | IM(deltaH22) = (IM(h22) - IM(ps->h22_prev[gr])) / L; | ||
1696 | |||
1697 | IM(H11) = IM(ps->h11_prev[gr]); | ||
1698 | IM(H12) = IM(ps->h12_prev[gr]); | ||
1699 | IM(H21) = IM(ps->h21_prev[gr]); | ||
1700 | IM(H22) = IM(ps->h22_prev[gr]); | ||
1701 | |||
1702 | if ((NEGATE_IPD_MASK & ps->map_group2bk[gr]) != 0) | ||
1703 | { | ||
1704 | IM(deltaH11) = -IM(deltaH11); | ||
1705 | IM(deltaH12) = -IM(deltaH12); | ||
1706 | IM(deltaH21) = -IM(deltaH21); | ||
1707 | IM(deltaH22) = -IM(deltaH22); | ||
1708 | |||
1709 | IM(H11) = -IM(H11); | ||
1710 | IM(H12) = -IM(H12); | ||
1711 | IM(H21) = -IM(H21); | ||
1712 | IM(H22) = -IM(H22); | ||
1713 | } | ||
1714 | |||
1715 | IM(ps->h11_prev[gr]) = IM(h11); | ||
1716 | IM(ps->h12_prev[gr]) = IM(h12); | ||
1717 | IM(ps->h21_prev[gr]) = IM(h21); | ||
1718 | IM(ps->h22_prev[gr]) = IM(h22); | ||
1719 | } | ||
1720 | |||
1721 | /* apply H_xy to the current envelope band of the decorrelated subband */ | ||
1722 | for (n = ps->border_position[env]; n < ps->border_position[env + 1]; n++) | ||
1723 | { | ||
1724 | /* addition finalises the interpolation over every n */ | ||
1725 | RE(H11) += RE(deltaH11); | ||
1726 | RE(H12) += RE(deltaH12); | ||
1727 | RE(H21) += RE(deltaH21); | ||
1728 | RE(H22) += RE(deltaH22); | ||
1729 | if ((ps->enable_ipdopd) && (bk < nr_ipdopd_par)) | ||
1730 | { | ||
1731 | IM(H11) += IM(deltaH11); | ||
1732 | IM(H12) += IM(deltaH12); | ||
1733 | IM(H21) += IM(deltaH21); | ||
1734 | IM(H22) += IM(deltaH22); | ||
1735 | } | ||
1736 | |||
1737 | /* channel is an alias to the subband */ | ||
1738 | for (sb = ps->group_border[gr]; sb < maxsb; sb++) | ||
1739 | { | ||
1740 | complex_t inLeft, inRight; | ||
1741 | |||
1742 | /* load decorrelated samples */ | ||
1743 | if (gr < ps->num_hybrid_groups) | ||
1744 | { | ||
1745 | RE(inLeft) = RE(X_hybrid_left[n][sb]); | ||
1746 | IM(inLeft) = IM(X_hybrid_left[n][sb]); | ||
1747 | RE(inRight) = RE(X_hybrid_right[n][sb]); | ||
1748 | IM(inRight) = IM(X_hybrid_right[n][sb]); | ||
1749 | } else { | ||
1750 | RE(inLeft) = RE(X_left[n][sb]); | ||
1751 | IM(inLeft) = IM(X_left[n][sb]); | ||
1752 | RE(inRight) = RE(X_right[n][sb]); | ||
1753 | IM(inRight) = IM(X_right[n][sb]); | ||
1754 | } | ||
1755 | |||
1756 | /* apply mixing */ | ||
1757 | RE(tempLeft) = MUL_C(RE(H11), RE(inLeft)) + MUL_C(RE(H21), RE(inRight)); | ||
1758 | IM(tempLeft) = MUL_C(RE(H11), IM(inLeft)) + MUL_C(RE(H21), IM(inRight)); | ||
1759 | RE(tempRight) = MUL_C(RE(H12), RE(inLeft)) + MUL_C(RE(H22), RE(inRight)); | ||
1760 | IM(tempRight) = MUL_C(RE(H12), IM(inLeft)) + MUL_C(RE(H22), IM(inRight)); | ||
1761 | |||
1762 | /* only perform imaginary operations when needed */ | ||
1763 | if ((ps->enable_ipdopd) && (bk < nr_ipdopd_par)) | ||
1764 | { | ||
1765 | /* apply rotation */ | ||
1766 | RE(tempLeft) -= MUL_C(IM(H11), IM(inLeft)) + MUL_C(IM(H21), IM(inRight)); | ||
1767 | IM(tempLeft) += MUL_C(IM(H11), RE(inLeft)) + MUL_C(IM(H21), RE(inRight)); | ||
1768 | RE(tempRight) -= MUL_C(IM(H12), IM(inLeft)) + MUL_C(IM(H22), IM(inRight)); | ||
1769 | IM(tempRight) += MUL_C(IM(H12), RE(inLeft)) + MUL_C(IM(H22), RE(inRight)); | ||
1770 | } | ||
1771 | |||
1772 | /* store final samples */ | ||
1773 | if (gr < ps->num_hybrid_groups) | ||
1774 | { | ||
1775 | RE(X_hybrid_left[n][sb]) = RE(tempLeft); | ||
1776 | IM(X_hybrid_left[n][sb]) = IM(tempLeft); | ||
1777 | RE(X_hybrid_right[n][sb]) = RE(tempRight); | ||
1778 | IM(X_hybrid_right[n][sb]) = IM(tempRight); | ||
1779 | } else { | ||
1780 | RE(X_left[n][sb]) = RE(tempLeft); | ||
1781 | IM(X_left[n][sb]) = IM(tempLeft); | ||
1782 | RE(X_right[n][sb]) = RE(tempRight); | ||
1783 | IM(X_right[n][sb]) = IM(tempRight); | ||
1784 | } | ||
1785 | } | ||
1786 | } | ||
1787 | |||
1788 | /* shift phase smoother's circular buffer index */ | ||
1789 | ps->phase_hist++; | ||
1790 | if (ps->phase_hist == 2) | ||
1791 | { | ||
1792 | ps->phase_hist = 0; | ||
1793 | } | ||
1794 | } | ||
1795 | } | ||
1796 | } | ||
1797 | |||
1798 | void ps_init(ps_info *ps) | ||
1799 | { | ||
1800 | uint8_t i; | ||
1801 | uint8_t short_delay_band; | ||
1802 | |||
1803 | hybrid_init(&ps->hyb); | ||
1804 | |||
1805 | ps->ps_data_available = 0; | ||
1806 | |||
1807 | /* delay stuff*/ | ||
1808 | ps->saved_delay = 0; | ||
1809 | |||
1810 | for (i = 0; i < 64; i++) | ||
1811 | { | ||
1812 | ps->delay_buf_index_delay[i] = 0; | ||
1813 | } | ||
1814 | |||
1815 | for (i = 0; i < NO_ALLPASS_LINKS; i++) | ||
1816 | { | ||
1817 | ps->delay_buf_index_ser[i] = 0; | ||
1818 | #ifdef PARAM_32KHZ | ||
1819 | if (sr_index <= 5) /* >= 32 kHz*/ | ||
1820 | { | ||
1821 | ps->num_sample_delay_ser[i] = delay_length_d[1][i]; | ||
1822 | } else { | ||
1823 | ps->num_sample_delay_ser[i] = delay_length_d[0][i]; | ||
1824 | } | ||
1825 | #else | ||
1826 | /* THESE ARE CONSTANTS NOW */ | ||
1827 | ps->num_sample_delay_ser[i] = delay_length_d[i]; | ||
1828 | #endif | ||
1829 | } | ||
1830 | |||
1831 | #ifdef PARAM_32KHZ | ||
1832 | if (sr_index <= 5) /* >= 32 kHz*/ | ||
1833 | { | ||
1834 | short_delay_band = 35; | ||
1835 | ps->nr_allpass_bands = 22; | ||
1836 | ps->alpha_decay = FRAC_CONST(0.76592833836465); | ||
1837 | ps->alpha_smooth = FRAC_CONST(0.25); | ||
1838 | } else { | ||
1839 | short_delay_band = 64; | ||
1840 | ps->nr_allpass_bands = 45; | ||
1841 | ps->alpha_decay = FRAC_CONST(0.58664621951003); | ||
1842 | ps->alpha_smooth = FRAC_CONST(0.6); | ||
1843 | } | ||
1844 | #else | ||
1845 | /* THESE ARE CONSTANTS NOW */ | ||
1846 | short_delay_band = 35; | ||
1847 | ps->nr_allpass_bands = 22; | ||
1848 | ps->alpha_decay = FRAC_CONST(0.76592833836465); | ||
1849 | ps->alpha_smooth = FRAC_CONST(0.25); | ||
1850 | #endif | ||
1851 | |||
1852 | /* THESE ARE CONSTANT NOW IF PS IS INDEPENDANT OF SAMPLERATE */ | ||
1853 | for (i = 0; i < short_delay_band; i++) | ||
1854 | { | ||
1855 | ps->delay_D[i] = 14; | ||
1856 | } | ||
1857 | for (i = short_delay_band; i < 64; i++) | ||
1858 | { | ||
1859 | ps->delay_D[i] = 1; | ||
1860 | } | ||
1861 | |||
1862 | /* mixing and phase */ | ||
1863 | for (i = 0; i < 50; i++) | ||
1864 | { | ||
1865 | RE(ps->h11_prev[i]) = 1; | ||
1866 | IM(ps->h12_prev[i]) = 1; | ||
1867 | RE(ps->h11_prev[i]) = 1; | ||
1868 | IM(ps->h12_prev[i]) = 1; | ||
1869 | } | ||
1870 | |||
1871 | ps->phase_hist = 0; | ||
1872 | |||
1873 | for (i = 0; i < 20; i++) | ||
1874 | { | ||
1875 | RE(ps->ipd_prev[i][0]) = 0; | ||
1876 | IM(ps->ipd_prev[i][0]) = 0; | ||
1877 | RE(ps->ipd_prev[i][1]) = 0; | ||
1878 | IM(ps->ipd_prev[i][1]) = 0; | ||
1879 | RE(ps->opd_prev[i][0]) = 0; | ||
1880 | IM(ps->opd_prev[i][0]) = 0; | ||
1881 | RE(ps->opd_prev[i][1]) = 0; | ||
1882 | IM(ps->opd_prev[i][1]) = 0; | ||
1883 | } | ||
1884 | } | ||
1885 | |||
1886 | /* main Parametric Stereo decoding function */ | ||
1887 | uint8_t ps_decode(ps_info *ps, | ||
1888 | qmf_t X_left[MAX_NTSRPS][64], | ||
1889 | qmf_t X_right[MAX_NTSRPS][64]) | ||
1890 | { | ||
1891 | static qmf_t X_hybrid_left[32][32]; | ||
1892 | static qmf_t X_hybrid_right[32][32]; | ||
1893 | |||
1894 | memset(&X_hybrid_left , 0, sizeof(X_hybrid_left)); | ||
1895 | memset(&X_hybrid_right, 0, sizeof(X_hybrid_right)); | ||
1896 | |||
1897 | /* delta decoding of the bitstream data */ | ||
1898 | ps_data_decode(ps); | ||
1899 | |||
1900 | /* set up some parameters depending on filterbank type */ | ||
1901 | if (ps->use34hybrid_bands) | ||
1902 | { | ||
1903 | ps->group_border = (uint8_t*)group_border34; | ||
1904 | ps->map_group2bk = (uint16_t*)map_group2bk34; | ||
1905 | ps->num_groups = 32+18; | ||
1906 | ps->num_hybrid_groups = 32; | ||
1907 | ps->nr_par_bands = 34; | ||
1908 | ps->decay_cutoff = 5; | ||
1909 | } else { | ||
1910 | ps->group_border = (uint8_t*)group_border20; | ||
1911 | ps->map_group2bk = (uint16_t*)map_group2bk20; | ||
1912 | ps->num_groups = 10+12; | ||
1913 | ps->num_hybrid_groups = 10; | ||
1914 | ps->nr_par_bands = 20; | ||
1915 | ps->decay_cutoff = 3; | ||
1916 | } | ||
1917 | |||
1918 | /* Perform further analysis on the lowest subbands to get a higher | ||
1919 | * frequency resolution | ||
1920 | */ | ||
1921 | hybrid_analysis(&ps->hyb, X_left, X_hybrid_left, ps->use34hybrid_bands); | ||
1922 | |||
1923 | /* decorrelate mono signal */ | ||
1924 | ps_decorrelate(ps, X_left, X_right, X_hybrid_left, X_hybrid_right); | ||
1925 | |||
1926 | /* apply mixing and phase parameters */ | ||
1927 | ps_mix_phase(ps, X_left, X_right, X_hybrid_left, X_hybrid_right); | ||
1928 | |||
1929 | /* hybrid synthesis, to rebuild the SBR QMF matrices */ | ||
1930 | hybrid_synthesis(&ps->hyb, X_left, X_hybrid_left, ps->use34hybrid_bands); | ||
1931 | |||
1932 | hybrid_synthesis(&ps->hyb, X_right, X_hybrid_right, ps->use34hybrid_bands); | ||
1933 | |||
1934 | return 0; | ||
1935 | } | ||
1936 | |||
1937 | #endif | ||
1938 | |||
diff --git a/lib/rbcodec/codecs/libfaad/ps_dec.h b/lib/rbcodec/codecs/libfaad/ps_dec.h new file mode 100644 index 0000000000..14e4bd54e6 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/ps_dec.h | |||
@@ -0,0 +1,162 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __PS_DEC_H__ | ||
29 | #define __PS_DEC_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | #include "bits.h" | ||
36 | |||
37 | #define EXTENSION_ID_PS 2 | ||
38 | |||
39 | #define MAX_PS_ENVELOPES 5 | ||
40 | #define NO_ALLPASS_LINKS 3 | ||
41 | |||
42 | #define MAX_NTSRPS 38 /* max number_time_slots * rate + 6 (delay) */ | ||
43 | |||
44 | typedef struct | ||
45 | { | ||
46 | uint8_t frame_len; | ||
47 | uint8_t resolution20[3]; | ||
48 | uint8_t resolution34[5]; | ||
49 | |||
50 | qmf_t work[32+12]; | ||
51 | qmf_t buffer[5][32]; | ||
52 | qmf_t temp[32][12]; | ||
53 | } hyb_info; | ||
54 | |||
55 | typedef struct | ||
56 | { | ||
57 | /* bitstream parameters */ | ||
58 | uint8_t enable_iid; | ||
59 | uint8_t enable_icc; | ||
60 | uint8_t enable_ext; | ||
61 | |||
62 | uint8_t iid_mode; | ||
63 | uint8_t icc_mode; | ||
64 | uint8_t nr_iid_par; | ||
65 | uint8_t nr_ipdopd_par; | ||
66 | uint8_t nr_icc_par; | ||
67 | |||
68 | uint8_t frame_class; | ||
69 | uint8_t num_env; | ||
70 | |||
71 | uint8_t border_position[MAX_PS_ENVELOPES+1]; | ||
72 | |||
73 | uint8_t iid_dt[MAX_PS_ENVELOPES]; | ||
74 | uint8_t icc_dt[MAX_PS_ENVELOPES]; | ||
75 | |||
76 | uint8_t enable_ipdopd; | ||
77 | uint8_t ipd_mode; | ||
78 | uint8_t ipd_dt[MAX_PS_ENVELOPES]; | ||
79 | uint8_t opd_dt[MAX_PS_ENVELOPES]; | ||
80 | |||
81 | /* indices */ | ||
82 | int8_t iid_index_prev[34]; | ||
83 | int8_t icc_index_prev[34]; | ||
84 | int8_t ipd_index_prev[17]; | ||
85 | int8_t opd_index_prev[17]; | ||
86 | int8_t iid_index[MAX_PS_ENVELOPES][34]; | ||
87 | int8_t icc_index[MAX_PS_ENVELOPES][34]; | ||
88 | int8_t ipd_index[MAX_PS_ENVELOPES][17]; | ||
89 | int8_t opd_index[MAX_PS_ENVELOPES][17]; | ||
90 | |||
91 | int8_t ipd_index_1[17]; | ||
92 | int8_t opd_index_1[17]; | ||
93 | int8_t ipd_index_2[17]; | ||
94 | int8_t opd_index_2[17]; | ||
95 | |||
96 | /* ps data was correctly read */ | ||
97 | uint8_t ps_data_available; | ||
98 | |||
99 | /* a header has been read */ | ||
100 | uint8_t header_read; | ||
101 | |||
102 | /* hybrid filterbank parameters */ | ||
103 | hyb_info hyb; | ||
104 | uint8_t use34hybrid_bands; | ||
105 | |||
106 | /**/ | ||
107 | uint8_t num_groups; | ||
108 | uint8_t num_hybrid_groups; | ||
109 | uint8_t nr_par_bands; | ||
110 | uint8_t nr_allpass_bands; | ||
111 | uint8_t decay_cutoff; | ||
112 | |||
113 | uint8_t *group_border; | ||
114 | uint16_t *map_group2bk; | ||
115 | |||
116 | /* filter delay handling */ | ||
117 | uint8_t saved_delay; | ||
118 | uint8_t delay_buf_index_ser[NO_ALLPASS_LINKS]; | ||
119 | uint8_t num_sample_delay_ser[NO_ALLPASS_LINKS]; | ||
120 | uint8_t delay_D[64]; | ||
121 | uint8_t delay_buf_index_delay[64]; | ||
122 | |||
123 | complex_t delay_Qmf[14][64]; /* 14 samples delay max, 64 QMF channels */ | ||
124 | complex_t delay_SubQmf[2][32]; /* 2 samples delay max (SubQmf is always allpass filtered) */ | ||
125 | complex_t delay_Qmf_ser[NO_ALLPASS_LINKS][5][64]; /* 5 samples delay max (table 8.34), 64 QMF channels */ | ||
126 | complex_t delay_SubQmf_ser[NO_ALLPASS_LINKS][5][32]; /* 5 samples delay max (table 8.34) */ | ||
127 | |||
128 | /* transients */ | ||
129 | real_t alpha_decay; | ||
130 | real_t alpha_smooth; | ||
131 | |||
132 | real_t P_PeakDecayNrg[34]; | ||
133 | real_t P_prev[34]; | ||
134 | real_t P_SmoothPeakDecayDiffNrg_prev[34]; | ||
135 | |||
136 | /* mixing and phase */ | ||
137 | complex_t h11_prev[50]; | ||
138 | complex_t h12_prev[50]; | ||
139 | complex_t h21_prev[50]; | ||
140 | complex_t h22_prev[50]; | ||
141 | uint8_t phase_hist; | ||
142 | complex_t ipd_prev[20][2]; | ||
143 | complex_t opd_prev[20][2]; | ||
144 | |||
145 | } ps_info; | ||
146 | |||
147 | /* ps_syntax.c */ | ||
148 | uint16_t ps_data(ps_info *ps, bitfile *ld, uint8_t *header); | ||
149 | |||
150 | /* ps_dec.c */ | ||
151 | void ps_init(ps_info *ps); | ||
152 | |||
153 | uint8_t ps_decode(ps_info *ps, | ||
154 | qmf_t X_left[MAX_NTSRPS][64], | ||
155 | qmf_t X_right[MAX_NTSRPS][64]); | ||
156 | |||
157 | |||
158 | #ifdef __cplusplus | ||
159 | } | ||
160 | #endif | ||
161 | #endif | ||
162 | |||
diff --git a/lib/rbcodec/codecs/libfaad/ps_syntax.c b/lib/rbcodec/codecs/libfaad/ps_syntax.c new file mode 100644 index 0000000000..290d7e5523 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/ps_syntax.c | |||
@@ -0,0 +1,546 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR and PS decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #include "common.h" | ||
29 | |||
30 | #ifdef PS_DEC | ||
31 | |||
32 | #include "bits.h" | ||
33 | #include "ps_dec.h" | ||
34 | |||
35 | /* type definitaions */ | ||
36 | typedef const int8_t (*ps_huff_tab)[2]; | ||
37 | |||
38 | /* static data tables */ | ||
39 | static const uint8_t nr_iid_par_tab[] = { | ||
40 | 10, 20, 34, 10, 20, 34, 0, 0 | ||
41 | }; | ||
42 | static const uint8_t nr_ipdopd_par_tab[] = { | ||
43 | 5, 11, 17, 5, 11, 17, 0, 0 | ||
44 | }; | ||
45 | static const uint8_t nr_icc_par_tab[] = { | ||
46 | 10, 20, 34, 10, 20, 34, 0, 0 | ||
47 | }; | ||
48 | static const uint8_t num_env_tab[][4] = { | ||
49 | { 0, 1, 2, 4 }, | ||
50 | { 1, 2, 3, 4 } | ||
51 | }; | ||
52 | |||
53 | /* binary lookup huffman tables */ | ||
54 | static const int8_t f_huff_iid_def[][2] = { | ||
55 | { /*0*/ -31, 1 }, /* index 0: 1 bits: x */ | ||
56 | { 2, 3 }, /* index 1: 2 bits: 1x */ | ||
57 | { /*1*/ -30, /*-1*/ -32 }, /* index 2: 3 bits: 10x */ | ||
58 | { 4, 5 }, /* index 3: 3 bits: 11x */ | ||
59 | { /*2*/ -29, /*-2*/ -33 }, /* index 4: 4 bits: 110x */ | ||
60 | { 6, 7 }, /* index 5: 4 bits: 111x */ | ||
61 | { /*3*/ -28, /*-3*/ -34 }, /* index 6: 5 bits: 1110x */ | ||
62 | { 8, 9 }, /* index 7: 5 bits: 1111x */ | ||
63 | { /*-4*/ -35, /*4*/ -27 }, /* index 8: 6 bits: 11110x */ | ||
64 | { /*5*/ -26, 10 }, /* index 9: 6 bits: 11111x */ | ||
65 | { /*-5*/ -36, 11 }, /* index 10: 7 bits: 111111x */ | ||
66 | { /*6*/ -25, 12 }, /* index 11: 8 bits: 1111111x */ | ||
67 | { /*-6*/ -37, 13 }, /* index 12: 9 bits: 11111111x */ | ||
68 | { /*-7*/ -38, 14 }, /* index 13: 10 bits: 111111111x */ | ||
69 | { /*7*/ -24, 15 }, /* index 14: 11 bits: 1111111111x */ | ||
70 | { 16, 17 }, /* index 15: 12 bits: 11111111111x */ | ||
71 | { /*8*/ -23, /*-8*/ -39 }, /* index 16: 13 bits: 111111111110x */ | ||
72 | { 18, 19 }, /* index 17: 13 bits: 111111111111x */ | ||
73 | { /*9*/ -22, /*10*/ -21 }, /* index 18: 14 bits: 1111111111110x */ | ||
74 | { 20, 21 }, /* index 19: 14 bits: 1111111111111x */ | ||
75 | { /*-9*/ -40, /*11*/ -20 }, /* index 20: 15 bits: 11111111111110x */ | ||
76 | { 22, 23 }, /* index 21: 15 bits: 11111111111111x */ | ||
77 | { /*-10*/ -41, 24 }, /* index 22: 16 bits: 111111111111110x */ | ||
78 | { 25, 26 }, /* index 23: 16 bits: 111111111111111x */ | ||
79 | { /*-11*/ -42, /*-14*/ -45 }, /* index 24: 17 bits: 1111111111111101x */ | ||
80 | { /*-13*/ -44, /*-12*/ -43 }, /* index 25: 17 bits: 1111111111111110x */ | ||
81 | { /*12*/ -19, 27 }, /* index 26: 17 bits: 1111111111111111x */ | ||
82 | { /*13*/ -18, /*14*/ -17 } /* index 27: 18 bits: 11111111111111111x */ | ||
83 | }; | ||
84 | |||
85 | static const int8_t t_huff_iid_def[][2] = { | ||
86 | { /*0*/ -31, 1 }, /* index 0: 1 bits: x */ | ||
87 | { /*-1*/ -32, 2 }, /* index 1: 2 bits: 1x */ | ||
88 | { /*1*/ -30, 3 }, /* index 2: 3 bits: 11x */ | ||
89 | { /*-2*/ -33, 4 }, /* index 3: 4 bits: 111x */ | ||
90 | { /*2*/ -29, 5 }, /* index 4: 5 bits: 1111x */ | ||
91 | { /*-3*/ -34, 6 }, /* index 5: 6 bits: 11111x */ | ||
92 | { /*3*/ -28, 7 }, /* index 6: 7 bits: 111111x */ | ||
93 | { /*-4*/ -35, 8 }, /* index 7: 8 bits: 1111111x */ | ||
94 | { /*4*/ -27, 9 }, /* index 8: 9 bits: 11111111x */ | ||
95 | { /*-5*/ -36, 10 }, /* index 9: 10 bits: 111111111x */ | ||
96 | { /*5*/ -26, 11 }, /* index 10: 11 bits: 1111111111x */ | ||
97 | { /*-6*/ -37, 12 }, /* index 11: 12 bits: 11111111111x */ | ||
98 | { /*6*/ -25, 13 }, /* index 12: 13 bits: 111111111111x */ | ||
99 | { /*7*/ -24, 14 }, /* index 13: 14 bits: 1111111111111x */ | ||
100 | { /*-7*/ -38, 15 }, /* index 14: 15 bits: 11111111111111x */ | ||
101 | { 16, 17 }, /* index 15: 16 bits: 111111111111111x */ | ||
102 | { /*8*/ -23, /*-8*/ -39 }, /* index 16: 17 bits: 1111111111111110x */ | ||
103 | { 18, 19 }, /* index 17: 17 bits: 1111111111111111x */ | ||
104 | { 20, 21 }, /* index 18: 18 bits: 11111111111111110x */ | ||
105 | { 22, 23 }, /* index 19: 18 bits: 11111111111111111x */ | ||
106 | { /*9*/ -22, /*-14*/ -45 }, /* index 20: 19 bits: 111111111111111100x */ | ||
107 | { /*-13*/ -44, /*-12*/ -43 }, /* index 21: 19 bits: 111111111111111101x */ | ||
108 | { 24, 25 }, /* index 22: 19 bits: 111111111111111110x */ | ||
109 | { 26, 27 }, /* index 23: 19 bits: 111111111111111111x */ | ||
110 | { /*-11*/ -42, /*-10*/ -41 }, /* index 24: 20 bits: 1111111111111111100x */ | ||
111 | { /*-9*/ -40, /*10*/ -21 }, /* index 25: 20 bits: 1111111111111111101x */ | ||
112 | { /*11*/ -20, /*12*/ -19 }, /* index 26: 20 bits: 1111111111111111110x */ | ||
113 | { /*13*/ -18, /*14*/ -17 } /* index 27: 20 bits: 1111111111111111111x */ | ||
114 | }; | ||
115 | |||
116 | static const int8_t f_huff_iid_fine[][2] = { | ||
117 | { 1, /*0*/ -31 }, /* index 0: 1 bits: x */ | ||
118 | { 2, 3 }, /* index 1: 2 bits: 0x */ | ||
119 | { 4, /*-1*/ -32 }, /* index 2: 3 bits: 00x */ | ||
120 | { /*1*/ -30, 5 }, /* index 3: 3 bits: 01x */ | ||
121 | { /*-2*/ -33, /*2*/ -29 }, /* index 4: 4 bits: 000x */ | ||
122 | { 6, 7 }, /* index 5: 4 bits: 011x */ | ||
123 | { /*-3*/ -34, /*3*/ -28 }, /* index 6: 5 bits: 0110x */ | ||
124 | { 8, 9 }, /* index 7: 5 bits: 0111x */ | ||
125 | { /*-4*/ -35, /*4*/ -27 }, /* index 8: 6 bits: 01110x */ | ||
126 | { 10, 11 }, /* index 9: 6 bits: 01111x */ | ||
127 | { /*-5*/ -36, /*5*/ -26 }, /* index 10: 7 bits: 011110x */ | ||
128 | { 12, 13 }, /* index 11: 7 bits: 011111x */ | ||
129 | { /*-6*/ -37, /*6*/ -25 }, /* index 12: 8 bits: 0111110x */ | ||
130 | { 14, 15 }, /* index 13: 8 bits: 0111111x */ | ||
131 | { /*7*/ -24, 16 }, /* index 14: 9 bits: 01111110x */ | ||
132 | { 17, 18 }, /* index 15: 9 bits: 01111111x */ | ||
133 | { 19, /*-8*/ -39 }, /* index 16: 10 bits: 011111101x */ | ||
134 | { /*8*/ -23, 20 }, /* index 17: 10 bits: 011111110x */ | ||
135 | { 21, /*-7*/ -38 }, /* index 18: 10 bits: 011111111x */ | ||
136 | { /*10*/ -21, 22 }, /* index 19: 11 bits: 0111111010x */ | ||
137 | { 23, /*-9*/ -40 }, /* index 20: 11 bits: 0111111101x */ | ||
138 | { /*9*/ -22, 24 }, /* index 21: 11 bits: 0111111110x */ | ||
139 | { /*-11*/ -42, /*11*/ -20 }, /* index 22: 12 bits: 01111110101x */ | ||
140 | { 25, 26 }, /* index 23: 12 bits: 01111111010x */ | ||
141 | { 27, /*-10*/ -41 }, /* index 24: 12 bits: 01111111101x */ | ||
142 | { 28, /*-12*/ -43 }, /* index 25: 13 bits: 011111110100x */ | ||
143 | { /*12*/ -19, 29 }, /* index 26: 13 bits: 011111110101x */ | ||
144 | { 30, 31 }, /* index 27: 13 bits: 011111111010x */ | ||
145 | { 32, /*-14*/ -45 }, /* index 28: 14 bits: 0111111101000x */ | ||
146 | { /*14*/ -17, 33 }, /* index 29: 14 bits: 0111111101011x */ | ||
147 | { 34, /*-13*/ -44 }, /* index 30: 14 bits: 0111111110100x */ | ||
148 | { /*13*/ -18, 35 }, /* index 31: 14 bits: 0111111110101x */ | ||
149 | { 36, 37 }, /* index 32: 15 bits: 01111111010000x */ | ||
150 | { 38, /*-15*/ -46 }, /* index 33: 15 bits: 01111111010111x */ | ||
151 | { /*15*/ -16, 39 }, /* index 34: 15 bits: 01111111101000x */ | ||
152 | { 40, 41 }, /* index 35: 15 bits: 01111111101011x */ | ||
153 | { 42, 43 }, /* index 36: 16 bits: 011111110100000x */ | ||
154 | { /*-17*/ -48, /*17*/ -14 }, /* index 37: 16 bits: 011111110100001x */ | ||
155 | { 44, 45 }, /* index 38: 16 bits: 011111110101110x */ | ||
156 | { 46, 47 }, /* index 39: 16 bits: 011111111010001x */ | ||
157 | { 48, 49 }, /* index 40: 16 bits: 011111111010110x */ | ||
158 | { /*-16*/ -47, /*16*/ -15 }, /* index 41: 16 bits: 011111111010111x */ | ||
159 | { /*-21*/ -52, /*21*/ -10 }, /* index 42: 17 bits: 0111111101000000x */ | ||
160 | { /*-19*/ -50, /*19*/ -12 }, /* index 43: 17 bits: 0111111101000001x */ | ||
161 | { /*-18*/ -49, /*18*/ -13 }, /* index 44: 17 bits: 0111111101011100x */ | ||
162 | { 50, 51 }, /* index 45: 17 bits: 0111111101011101x */ | ||
163 | { 52, 53 }, /* index 46: 17 bits: 0111111110100010x */ | ||
164 | { 54, 55 }, /* index 47: 17 bits: 0111111110100011x */ | ||
165 | { 56, 57 }, /* index 48: 17 bits: 0111111110101100x */ | ||
166 | { 58, 59 }, /* index 49: 17 bits: 0111111110101101x */ | ||
167 | { /*-26*/ -57, /*-25*/ -56 }, /* index 50: 18 bits: 01111111010111010x */ | ||
168 | { /*-28*/ -59, /*-27*/ -58 }, /* index 51: 18 bits: 01111111010111011x */ | ||
169 | { /*-22*/ -53, /*22*/ -9 }, /* index 52: 18 bits: 01111111101000100x */ | ||
170 | { /*-24*/ -55, /*-23*/ -54 }, /* index 53: 18 bits: 01111111101000101x */ | ||
171 | { /*25*/ -6, /*26*/ -5 }, /* index 54: 18 bits: 01111111101000110x */ | ||
172 | { /*23*/ -8, /*24*/ -7 }, /* index 55: 18 bits: 01111111101000111x */ | ||
173 | { /*29*/ -2, /*30*/ -1 }, /* index 56: 18 bits: 01111111101011000x */ | ||
174 | { /*27*/ -4, /*28*/ -3 }, /* index 57: 18 bits: 01111111101011001x */ | ||
175 | { /*-30*/ -61, /*-29*/ -60 }, /* index 58: 18 bits: 01111111101011010x */ | ||
176 | { /*-20*/ -51, /*20*/ -11 } /* index 59: 18 bits: 01111111101011011x */ | ||
177 | }; | ||
178 | |||
179 | static const int8_t t_huff_iid_fine[][2] = { | ||
180 | { 1, /*0*/ -31 }, /* index 0: 1 bits: x */ | ||
181 | { /*1*/ -30, 2 }, /* index 1: 2 bits: 0x */ | ||
182 | { 3, /*-1*/ -32 }, /* index 2: 3 bits: 01x */ | ||
183 | { 4, 5 }, /* index 3: 4 bits: 010x */ | ||
184 | { 6, 7 }, /* index 4: 5 bits: 0100x */ | ||
185 | { /*-2*/ -33, /*2*/ -29 }, /* index 5: 5 bits: 0101x */ | ||
186 | { 8, /*-3*/ -34 }, /* index 6: 6 bits: 01000x */ | ||
187 | { /*3*/ -28, 9 }, /* index 7: 6 bits: 01001x */ | ||
188 | { /*-4*/ -35, /*4*/ -27 }, /* index 8: 7 bits: 010000x */ | ||
189 | { 10, 11 }, /* index 9: 7 bits: 010011x */ | ||
190 | { /*5*/ -26, 12 }, /* index 10: 8 bits: 0100110x */ | ||
191 | { 13, 14 }, /* index 11: 8 bits: 0100111x */ | ||
192 | { /*-6*/ -37, /*6*/ -25 }, /* index 12: 9 bits: 01001101x */ | ||
193 | { 15, 16 }, /* index 13: 9 bits: 01001110x */ | ||
194 | { 17, /*-5*/ -36 }, /* index 14: 9 bits: 01001111x */ | ||
195 | { 18, /*-7*/ -38 }, /* index 15: 10 bits: 010011100x */ | ||
196 | { /*7*/ -24, 19 }, /* index 16: 10 bits: 010011101x */ | ||
197 | { 20, 21 }, /* index 17: 10 bits: 010011110x */ | ||
198 | { /*9*/ -22, 22 }, /* index 18: 11 bits: 0100111000x */ | ||
199 | { 23, 24 }, /* index 19: 11 bits: 0100111011x */ | ||
200 | { /*-8*/ -39, /*8*/ -23 }, /* index 20: 11 bits: 0100111100x */ | ||
201 | { 25, 26 }, /* index 21: 11 bits: 0100111101x */ | ||
202 | { /*11*/ -20, 27 }, /* index 22: 12 bits: 01001110001x */ | ||
203 | { 28, 29 }, /* index 23: 12 bits: 01001110110x */ | ||
204 | { /*-10*/ -41, /*10*/ -21 }, /* index 24: 12 bits: 01001110111x */ | ||
205 | { 30, 31 }, /* index 25: 12 bits: 01001111010x */ | ||
206 | { 32, /*-9*/ -40 }, /* index 26: 12 bits: 01001111011x */ | ||
207 | { 33, /*-13*/ -44 }, /* index 27: 13 bits: 010011100011x */ | ||
208 | { /*13*/ -18, 34 }, /* index 28: 13 bits: 010011101100x */ | ||
209 | { 35, 36 }, /* index 29: 13 bits: 010011101101x */ | ||
210 | { 37, /*-12*/ -43 }, /* index 30: 13 bits: 010011110100x */ | ||
211 | { /*12*/ -19, 38 }, /* index 31: 13 bits: 010011110101x */ | ||
212 | { 39, /*-11*/ -42 }, /* index 32: 13 bits: 010011110110x */ | ||
213 | { 40, 41 }, /* index 33: 14 bits: 0100111000110x */ | ||
214 | { 42, 43 }, /* index 34: 14 bits: 0100111011001x */ | ||
215 | { 44, 45 }, /* index 35: 14 bits: 0100111011010x */ | ||
216 | { 46, /*-15*/ -46 }, /* index 36: 14 bits: 0100111011011x */ | ||
217 | { /*15*/ -16, 47 }, /* index 37: 14 bits: 0100111101000x */ | ||
218 | { /*-14*/ -45, /*14*/ -17 }, /* index 38: 14 bits: 0100111101011x */ | ||
219 | { 48, 49 }, /* index 39: 14 bits: 0100111101100x */ | ||
220 | { /*-21*/ -52, /*-20*/ -51 }, /* index 40: 15 bits: 01001110001100x */ | ||
221 | { /*18*/ -13, /*19*/ -12 }, /* index 41: 15 bits: 01001110001101x */ | ||
222 | { /*-19*/ -50, /*-18*/ -49 }, /* index 42: 15 bits: 01001110110010x */ | ||
223 | { 50, 51 }, /* index 43: 15 bits: 01001110110011x */ | ||
224 | { 52, 53 }, /* index 44: 15 bits: 01001110110100x */ | ||
225 | { 54, 55 }, /* index 45: 15 bits: 01001110110101x */ | ||
226 | { 56, /*-17*/ -48 }, /* index 46: 15 bits: 01001110110110x */ | ||
227 | { /*17*/ -14, 57 }, /* index 47: 15 bits: 01001111010001x */ | ||
228 | { 58, /*-16*/ -47 }, /* index 48: 15 bits: 01001111011000x */ | ||
229 | { /*16*/ -15, 59 }, /* index 49: 15 bits: 01001111011001x */ | ||
230 | { /*-26*/ -57, /*26*/ -5 }, /* index 50: 16 bits: 010011101100110x */ | ||
231 | { /*-28*/ -59, /*-27*/ -58 }, /* index 51: 16 bits: 010011101100111x */ | ||
232 | { /*29*/ -2, /*30*/ -1 }, /* index 52: 16 bits: 010011101101000x */ | ||
233 | { /*27*/ -4, /*28*/ -3 }, /* index 53: 16 bits: 010011101101001x */ | ||
234 | { /*-30*/ -61, /*-29*/ -60 }, /* index 54: 16 bits: 010011101101010x */ | ||
235 | { /*-25*/ -56, /*25*/ -6 }, /* index 55: 16 bits: 010011101101011x */ | ||
236 | { /*-24*/ -55, /*24*/ -7 }, /* index 56: 16 bits: 010011101101100x */ | ||
237 | { /*-23*/ -54, /*23*/ -8 }, /* index 57: 16 bits: 010011110100011x */ | ||
238 | { /*-22*/ -53, /*22*/ -9 }, /* index 58: 16 bits: 010011110110000x */ | ||
239 | { /*20*/ -11, /*21*/ -10 } /* index 59: 16 bits: 010011110110011x */ | ||
240 | }; | ||
241 | |||
242 | static const int8_t f_huff_icc[][2] = { | ||
243 | { /*0*/ -31, 1 }, /* index 0: 1 bits: x */ | ||
244 | { /*1*/ -30, 2 }, /* index 1: 2 bits: 1x */ | ||
245 | { /*-1*/ -32, 3 }, /* index 2: 3 bits: 11x */ | ||
246 | { /*2*/ -29, 4 }, /* index 3: 4 bits: 111x */ | ||
247 | { /*-2*/ -33, 5 }, /* index 4: 5 bits: 1111x */ | ||
248 | { /*3*/ -28, 6 }, /* index 5: 6 bits: 11111x */ | ||
249 | { /*-3*/ -34, 7 }, /* index 6: 7 bits: 111111x */ | ||
250 | { /*4*/ -27, 8 }, /* index 7: 8 bits: 1111111x */ | ||
251 | { /*5*/ -26, 9 }, /* index 8: 9 bits: 11111111x */ | ||
252 | { /*-4*/ -35, 10 }, /* index 9: 10 bits: 111111111x */ | ||
253 | { /*6*/ -25, 11 }, /* index 10: 11 bits: 1111111111x */ | ||
254 | { /*-5*/ -36, 12 }, /* index 11: 12 bits: 11111111111x */ | ||
255 | { /*7*/ -24, 13 }, /* index 12: 13 bits: 111111111111x */ | ||
256 | { /*-6*/ -37, /*-7*/ -38 } /* index 13: 14 bits: 1111111111111x */ | ||
257 | }; | ||
258 | |||
259 | static const int8_t t_huff_icc[][2] = { | ||
260 | { /*0*/ -31, 1 }, /* index 0: 1 bits: x */ | ||
261 | { /*1*/ -30, 2 }, /* index 1: 2 bits: 1x */ | ||
262 | { /*-1*/ -32, 3 }, /* index 2: 3 bits: 11x */ | ||
263 | { /*2*/ -29, 4 }, /* index 3: 4 bits: 111x */ | ||
264 | { /*-2*/ -33, 5 }, /* index 4: 5 bits: 1111x */ | ||
265 | { /*3*/ -28, 6 }, /* index 5: 6 bits: 11111x */ | ||
266 | { /*-3*/ -34, 7 }, /* index 6: 7 bits: 111111x */ | ||
267 | { /*4*/ -27, 8 }, /* index 7: 8 bits: 1111111x */ | ||
268 | { /*-4*/ -35, 9 }, /* index 8: 9 bits: 11111111x */ | ||
269 | { /*5*/ -26, 10 }, /* index 9: 10 bits: 111111111x */ | ||
270 | { /*-5*/ -36, 11 }, /* index 10: 11 bits: 1111111111x */ | ||
271 | { /*6*/ -25, 12 }, /* index 11: 12 bits: 11111111111x */ | ||
272 | { /*-6*/ -37, 13 }, /* index 12: 13 bits: 111111111111x */ | ||
273 | { /*-7*/ -38, /*7*/ -24 } /* index 13: 14 bits: 1111111111111x */ | ||
274 | }; | ||
275 | |||
276 | static const int8_t f_huff_ipd[][2] = { | ||
277 | { 1, /*0*/ -31 }, /* index 0: 1 bits: x */ | ||
278 | { 2, 3 }, /* index 1: 2 bits: 0x */ | ||
279 | { /*1*/ -30, 4 }, /* index 2: 3 bits: 00x */ | ||
280 | { 5, 6 }, /* index 3: 3 bits: 01x */ | ||
281 | { /*4*/ -27, /*5*/ -26 }, /* index 4: 4 bits: 001x */ | ||
282 | { /*3*/ -28, /*6*/ -25 }, /* index 5: 4 bits: 010x */ | ||
283 | { /*2*/ -29, /*7*/ -24 } /* index 6: 4 bits: 011x */ | ||
284 | }; | ||
285 | |||
286 | static const int8_t t_huff_ipd[][2] = { | ||
287 | { 1, /*0*/ -31 }, /* index 0: 1 bits: x */ | ||
288 | { 2, 3 }, /* index 1: 2 bits: 0x */ | ||
289 | { 4, 5 }, /* index 2: 3 bits: 00x */ | ||
290 | { /*1*/ -30, /*7*/ -24 }, /* index 3: 3 bits: 01x */ | ||
291 | { /*5*/ -26, 6 }, /* index 4: 4 bits: 000x */ | ||
292 | { /*2*/ -29, /*6*/ -25 }, /* index 5: 4 bits: 001x */ | ||
293 | { /*4*/ -27, /*3*/ -28 } /* index 6: 5 bits: 0001x */ | ||
294 | }; | ||
295 | |||
296 | static const int8_t f_huff_opd[][2] = { | ||
297 | { 1, /*0*/ -31 }, /* index 0: 1 bits: x */ | ||
298 | { 2, 3 }, /* index 1: 2 bits: 0x */ | ||
299 | { /*7*/ -24, /*1*/ -30 }, /* index 2: 3 bits: 00x */ | ||
300 | { 4, 5 }, /* index 3: 3 bits: 01x */ | ||
301 | { /*3*/ -28, /*6*/ -25 }, /* index 4: 4 bits: 010x */ | ||
302 | { /*2*/ -29, 6 }, /* index 5: 4 bits: 011x */ | ||
303 | { /*5*/ -26, /*4*/ -27 } /* index 6: 5 bits: 0111x */ | ||
304 | }; | ||
305 | |||
306 | static const int8_t t_huff_opd[][2] = { | ||
307 | { 1, /*0*/ -31 }, /* index 0: 1 bits: x */ | ||
308 | { 2, 3 }, /* index 1: 2 bits: 0x */ | ||
309 | { 4, 5 }, /* index 2: 3 bits: 00x */ | ||
310 | { /*1*/ -30, /*7*/ -24 }, /* index 3: 3 bits: 01x */ | ||
311 | { /*5*/ -26, 6 }, /* index 4: 4 bits: 000x */ | ||
312 | { /*2*/ -29, /*6*/ -25 }, /* index 5: 4 bits: 001x */ | ||
313 | { /*4*/ -27, /*3*/ -28 } /* index 6: 5 bits: 0001x */ | ||
314 | }; | ||
315 | |||
316 | /* static function declarations */ | ||
317 | static uint16_t ps_extension(ps_info *ps, bitfile *ld, | ||
318 | const uint8_t ps_extension_id, | ||
319 | const uint16_t num_bits_left); | ||
320 | static void huff_data(bitfile *ld, const uint8_t dt, const uint8_t nr_par, | ||
321 | ps_huff_tab t_huff, ps_huff_tab f_huff, int8_t *par); | ||
322 | static INLINE int8_t ps_huff_dec(bitfile *ld, ps_huff_tab t_huff); | ||
323 | |||
324 | |||
325 | uint16_t ps_data(ps_info *ps, bitfile *ld, uint8_t *header) | ||
326 | { | ||
327 | uint8_t tmp, n; | ||
328 | uint16_t bits = (uint16_t)faad_get_processed_bits(ld); | ||
329 | |||
330 | *header = 0; | ||
331 | |||
332 | /* check for new PS header */ | ||
333 | if (faad_get1bit(ld | ||
334 | DEBUGVAR(1,1000,"ps_data(): enable_ps_header"))) | ||
335 | { | ||
336 | *header = 1; | ||
337 | |||
338 | ps->header_read = 1; | ||
339 | |||
340 | ps->use34hybrid_bands = 0; | ||
341 | |||
342 | /* Inter-channel Intensity Difference (IID) parameters enabled */ | ||
343 | ps->enable_iid = (uint8_t)faad_get1bit(ld | ||
344 | DEBUGVAR(1,1001,"ps_data(): enable_iid")); | ||
345 | |||
346 | if (ps->enable_iid) | ||
347 | { | ||
348 | ps->iid_mode = (uint8_t)faad_getbits(ld, 3 | ||
349 | DEBUGVAR(1,1002,"ps_data(): iid_mode")); | ||
350 | |||
351 | ps->nr_iid_par = nr_iid_par_tab[ps->iid_mode]; | ||
352 | ps->nr_ipdopd_par = nr_ipdopd_par_tab[ps->iid_mode]; | ||
353 | |||
354 | if (ps->iid_mode == 2 || ps->iid_mode == 5) | ||
355 | ps->use34hybrid_bands = 1; | ||
356 | |||
357 | /* IPD freq res equal to IID freq res */ | ||
358 | ps->ipd_mode = ps->iid_mode; | ||
359 | } | ||
360 | |||
361 | /* Inter-channel Coherence (ICC) parameters enabled */ | ||
362 | ps->enable_icc = (uint8_t)faad_get1bit(ld | ||
363 | DEBUGVAR(1,1003,"ps_data(): enable_icc")); | ||
364 | |||
365 | if (ps->enable_icc) | ||
366 | { | ||
367 | ps->icc_mode = (uint8_t)faad_getbits(ld, 3 | ||
368 | DEBUGVAR(1,1004,"ps_data(): icc_mode")); | ||
369 | |||
370 | ps->nr_icc_par = nr_icc_par_tab[ps->icc_mode]; | ||
371 | |||
372 | if (ps->icc_mode == 2 || ps->icc_mode == 5) | ||
373 | ps->use34hybrid_bands = 1; | ||
374 | } | ||
375 | |||
376 | /* PS extension layer enabled */ | ||
377 | ps->enable_ext = (uint8_t)faad_get1bit(ld | ||
378 | DEBUGVAR(1,1005,"ps_data(): enable_ext")); | ||
379 | } | ||
380 | |||
381 | /* we are here, but no header has been read yet */ | ||
382 | if (ps->header_read == 0) | ||
383 | return 1; | ||
384 | |||
385 | ps->frame_class = (uint8_t)faad_get1bit(ld | ||
386 | DEBUGVAR(1,1006,"ps_data(): frame_class")); | ||
387 | tmp = (uint8_t)faad_getbits(ld, 2 | ||
388 | DEBUGVAR(1,1007,"ps_data(): num_env_idx")); | ||
389 | |||
390 | ps->num_env = num_env_tab[ps->frame_class][tmp]; | ||
391 | |||
392 | if (ps->frame_class) | ||
393 | { | ||
394 | for (n = 1; n < ps->num_env+1; n++) | ||
395 | { | ||
396 | ps->border_position[n] = (uint8_t)faad_getbits(ld, 5 | ||
397 | DEBUGVAR(1,1008,"ps_data(): border_position")); | ||
398 | } | ||
399 | } | ||
400 | |||
401 | if (ps->enable_iid) | ||
402 | { | ||
403 | for (n = 0; n < ps->num_env; n++) | ||
404 | { | ||
405 | ps->iid_dt[n] = (uint8_t)faad_get1bit(ld | ||
406 | DEBUGVAR(1,1009,"ps_data(): iid_dt")); | ||
407 | |||
408 | /* iid_data */ | ||
409 | if (ps->iid_mode < 3) | ||
410 | { | ||
411 | huff_data(ld, ps->iid_dt[n], ps->nr_iid_par, t_huff_iid_def, | ||
412 | f_huff_iid_def, ps->iid_index[n]); | ||
413 | } else { | ||
414 | huff_data(ld, ps->iid_dt[n], ps->nr_iid_par, t_huff_iid_fine, | ||
415 | f_huff_iid_fine, ps->iid_index[n]); | ||
416 | } | ||
417 | } | ||
418 | } | ||
419 | |||
420 | if (ps->enable_icc) | ||
421 | { | ||
422 | for (n = 0; n < ps->num_env; n++) | ||
423 | { | ||
424 | ps->icc_dt[n] = (uint8_t)faad_get1bit(ld | ||
425 | DEBUGVAR(1,1010,"ps_data(): icc_dt")); | ||
426 | |||
427 | /* icc_data */ | ||
428 | huff_data(ld, ps->icc_dt[n], ps->nr_icc_par, t_huff_icc, | ||
429 | f_huff_icc, ps->icc_index[n]); | ||
430 | } | ||
431 | } | ||
432 | |||
433 | if (ps->enable_ext) | ||
434 | { | ||
435 | uint16_t num_bits_left; | ||
436 | uint16_t cnt = (uint16_t)faad_getbits(ld, 4 | ||
437 | DEBUGVAR(1,1011,"ps_data(): ps_extension_size")); | ||
438 | if (cnt == 15) | ||
439 | { | ||
440 | cnt += (uint16_t)faad_getbits(ld, 8 | ||
441 | DEBUGVAR(1,1012,"ps_data(): esc_count")); | ||
442 | } | ||
443 | |||
444 | num_bits_left = 8 * cnt; | ||
445 | while (num_bits_left > 7) | ||
446 | { | ||
447 | uint8_t ps_extension_id = (uint8_t)faad_getbits(ld, 2 | ||
448 | DEBUGVAR(1,1013,"ps_data(): ps_extension_size")); | ||
449 | |||
450 | num_bits_left -= 2; | ||
451 | num_bits_left -= ps_extension(ps, ld, ps_extension_id, num_bits_left); | ||
452 | } | ||
453 | |||
454 | faad_getbits(ld, num_bits_left | ||
455 | DEBUGVAR(1,1014,"ps_data(): fill_bits")); | ||
456 | } | ||
457 | |||
458 | bits = (uint16_t)faad_get_processed_bits(ld) - bits; | ||
459 | |||
460 | ps->ps_data_available = 1; | ||
461 | |||
462 | return bits; | ||
463 | } | ||
464 | |||
465 | static uint16_t ps_extension(ps_info *ps, bitfile *ld, | ||
466 | const uint8_t ps_extension_id, | ||
467 | const uint16_t num_bits_left) | ||
468 | { | ||
469 | uint8_t n; | ||
470 | uint16_t bits = (uint16_t)faad_get_processed_bits(ld); | ||
471 | |||
472 | (void)num_bits_left; | ||
473 | if (ps_extension_id == 0) | ||
474 | { | ||
475 | ps->enable_ipdopd = (uint8_t)faad_get1bit(ld | ||
476 | DEBUGVAR(1,1015,"ps_extension(): enable_ipdopd")); | ||
477 | |||
478 | if (ps->enable_ipdopd) | ||
479 | { | ||
480 | for (n = 0; n < ps->num_env; n++) | ||
481 | { | ||
482 | ps->ipd_dt[n] = (uint8_t)faad_get1bit(ld | ||
483 | DEBUGVAR(1,1016,"ps_extension(): ipd_dt")); | ||
484 | |||
485 | /* ipd_data */ | ||
486 | huff_data(ld, ps->ipd_dt[n], ps->nr_ipdopd_par, t_huff_ipd, | ||
487 | f_huff_ipd, ps->ipd_index[n]); | ||
488 | |||
489 | ps->opd_dt[n] = (uint8_t)faad_get1bit(ld | ||
490 | DEBUGVAR(1,1017,"ps_extension(): opd_dt")); | ||
491 | |||
492 | /* opd_data */ | ||
493 | huff_data(ld, ps->opd_dt[n], ps->nr_ipdopd_par, t_huff_opd, | ||
494 | f_huff_opd, ps->opd_index[n]); | ||
495 | } | ||
496 | } | ||
497 | faad_get1bit(ld | ||
498 | DEBUGVAR(1,1018,"ps_extension(): reserved_ps")); | ||
499 | } | ||
500 | |||
501 | /* return number of bits read */ | ||
502 | bits = (uint16_t)faad_get_processed_bits(ld) - bits; | ||
503 | |||
504 | return bits; | ||
505 | } | ||
506 | |||
507 | /* read huffman data coded in either the frequency or the time direction */ | ||
508 | static void huff_data(bitfile *ld, const uint8_t dt, const uint8_t nr_par, | ||
509 | ps_huff_tab t_huff, ps_huff_tab f_huff, int8_t *par) | ||
510 | { | ||
511 | uint8_t n; | ||
512 | |||
513 | if (dt) | ||
514 | { | ||
515 | /* coded in time direction */ | ||
516 | for (n = 0; n < nr_par; n++) | ||
517 | { | ||
518 | par[n] = ps_huff_dec(ld, t_huff); | ||
519 | } | ||
520 | } else { | ||
521 | /* coded in frequency direction */ | ||
522 | par[0] = ps_huff_dec(ld, f_huff); | ||
523 | |||
524 | for (n = 1; n < nr_par; n++) | ||
525 | { | ||
526 | par[n] = ps_huff_dec(ld, f_huff); | ||
527 | } | ||
528 | } | ||
529 | } | ||
530 | |||
531 | /* binary search huffman decoding */ | ||
532 | static INLINE int8_t ps_huff_dec(bitfile *ld, ps_huff_tab t_huff) | ||
533 | { | ||
534 | uint8_t bit; | ||
535 | int16_t index = 0; | ||
536 | |||
537 | while (index >= 0) | ||
538 | { | ||
539 | bit = (uint8_t)faad_get1bit(ld); | ||
540 | index = t_huff[index][bit]; | ||
541 | } | ||
542 | |||
543 | return index + 31; | ||
544 | } | ||
545 | |||
546 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/ps_tables.h b/lib/rbcodec/codecs/libfaad/ps_tables.h new file mode 100644 index 0000000000..83cd20abbf --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/ps_tables.h | |||
@@ -0,0 +1,547 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __PS_TABLES_H__ | ||
29 | #define __PS_TABLES_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | #ifdef _MSC_VER | ||
36 | #pragma warning(disable:4305) | ||
37 | #pragma warning(disable:4244) | ||
38 | #endif | ||
39 | |||
40 | #if 0 | ||
41 | #if 0 | ||
42 | float f_center_20[12] = { | ||
43 | 0.5/4, 1.5/4, 2.5/4, 3.5/4, | ||
44 | 4.5/4*0, 5.5/4*0, -1.5/4, -0.5/4, | ||
45 | 3.5/2, 2.5/2, 4.5/2, 5.5/2 | ||
46 | }; | ||
47 | #else | ||
48 | float f_center_20[12] = { | ||
49 | 0.5/8, 1.5/8, 2.5/8, 3.5/8, | ||
50 | 4.5/8*0, 5.5/8*0, -1.5/8, -0.5/8, | ||
51 | 3.5/4, 2.5/4, 4.5/4, 5.5/4 | ||
52 | }; | ||
53 | #endif | ||
54 | |||
55 | float f_center_34[32] = { | ||
56 | 1/12, 3/12, 5/12, 7/12, | ||
57 | 9/12, 11/12, 13/12, 15/12, | ||
58 | 17/12, -5/12, -3/12, -1/12, | ||
59 | 17/8, 19/8, 5/8, 7/8, | ||
60 | 9/8, 11/8, 13/8, 15/8, | ||
61 | 9/4, 11/4, 13/4, 7/4, | ||
62 | 17/4, 11/4, 13/4, 15/4, | ||
63 | 17/4, 19/4, 21/4, 15/4 | ||
64 | }; | ||
65 | |||
66 | static const real_t frac_delay_q[] = { | ||
67 | FRAC_CONST(0.43), | ||
68 | FRAC_CONST(0.75), | ||
69 | FRAC_CONST(0.347) | ||
70 | }; | ||
71 | #endif | ||
72 | |||
73 | /* RE(ps->Phi_Fract_Qmf[j]) = (float)cos(M_PI*(j+0.5)*(0.39)); */ | ||
74 | /* IM(ps->Phi_Fract_Qmf[j]) = (float)sin(M_PI*(j+0.5)*(0.39)); */ | ||
75 | static const complex_t Phi_Fract_Qmf[] = { | ||
76 | { FRAC_CONST(0.8181497455), FRAC_CONST(0.5750052333) }, | ||
77 | { FRAC_CONST(-0.2638730407), FRAC_CONST(0.9645574093) }, | ||
78 | { FRAC_CONST(-0.9969173074), FRAC_CONST(0.0784590989) }, | ||
79 | { FRAC_CONST(-0.4115143716), FRAC_CONST(-0.9114032984) }, | ||
80 | { FRAC_CONST(0.7181262970), FRAC_CONST(-0.6959127784) }, | ||
81 | { FRAC_CONST(0.8980275989), FRAC_CONST(0.4399391711) }, | ||
82 | { FRAC_CONST(-0.1097343117), FRAC_CONST(0.9939609766) }, | ||
83 | { FRAC_CONST(-0.9723699093), FRAC_CONST(0.2334453613) }, | ||
84 | { FRAC_CONST(-0.5490227938), FRAC_CONST(-0.8358073831) }, | ||
85 | { FRAC_CONST(0.6004202366), FRAC_CONST(-0.7996846437) }, | ||
86 | { FRAC_CONST(0.9557930231), FRAC_CONST(0.2940403223) }, | ||
87 | { FRAC_CONST(0.0471064523), FRAC_CONST(0.9988898635) }, | ||
88 | { FRAC_CONST(-0.9238795042), FRAC_CONST(0.3826834261) }, | ||
89 | { FRAC_CONST(-0.6730124950), FRAC_CONST(-0.7396311164) }, | ||
90 | { FRAC_CONST(0.4679298103), FRAC_CONST(-0.8837656379) }, | ||
91 | { FRAC_CONST(0.9900236726), FRAC_CONST(0.1409012377) }, | ||
92 | { FRAC_CONST(0.2027872950), FRAC_CONST(0.9792228341) }, | ||
93 | { FRAC_CONST(-0.8526401520), FRAC_CONST(0.5224985480) }, | ||
94 | { FRAC_CONST(-0.7804304361), FRAC_CONST(-0.6252426505) }, | ||
95 | { FRAC_CONST(0.3239174187), FRAC_CONST(-0.9460853338) }, | ||
96 | { FRAC_CONST(0.9998766184), FRAC_CONST(-0.0157073177) }, | ||
97 | { FRAC_CONST(0.3534748554), FRAC_CONST(0.9354440570) }, | ||
98 | { FRAC_CONST(-0.7604059577), FRAC_CONST(0.6494480371) }, | ||
99 | { FRAC_CONST(-0.8686315417), FRAC_CONST(-0.4954586625) }, | ||
100 | { FRAC_CONST(0.1719291061), FRAC_CONST(-0.9851093292) }, | ||
101 | { FRAC_CONST(0.9851093292), FRAC_CONST(-0.1719291061) }, | ||
102 | { FRAC_CONST(0.4954586625), FRAC_CONST(0.8686315417) }, | ||
103 | { FRAC_CONST(-0.6494480371), FRAC_CONST(0.7604059577) }, | ||
104 | { FRAC_CONST(-0.9354440570), FRAC_CONST(-0.3534748554) }, | ||
105 | { FRAC_CONST(0.0157073177), FRAC_CONST(-0.9998766184) }, | ||
106 | { FRAC_CONST(0.9460853338), FRAC_CONST(-0.3239174187) }, | ||
107 | { FRAC_CONST(0.6252426505), FRAC_CONST(0.7804304361) }, | ||
108 | { FRAC_CONST(-0.5224985480), FRAC_CONST(0.8526401520) }, | ||
109 | { FRAC_CONST(-0.9792228341), FRAC_CONST(-0.2027872950) }, | ||
110 | { FRAC_CONST(-0.1409012377), FRAC_CONST(-0.9900236726) }, | ||
111 | { FRAC_CONST(0.8837656379), FRAC_CONST(-0.4679298103) }, | ||
112 | { FRAC_CONST(0.7396311164), FRAC_CONST(0.6730124950) }, | ||
113 | { FRAC_CONST(-0.3826834261), FRAC_CONST(0.9238795042) }, | ||
114 | { FRAC_CONST(-0.9988898635), FRAC_CONST(-0.0471064523) }, | ||
115 | { FRAC_CONST(-0.2940403223), FRAC_CONST(-0.9557930231) }, | ||
116 | { FRAC_CONST(0.7996846437), FRAC_CONST(-0.6004202366) }, | ||
117 | { FRAC_CONST(0.8358073831), FRAC_CONST(0.5490227938) }, | ||
118 | { FRAC_CONST(-0.2334453613), FRAC_CONST(0.9723699093) }, | ||
119 | { FRAC_CONST(-0.9939609766), FRAC_CONST(0.1097343117) }, | ||
120 | { FRAC_CONST(-0.4399391711), FRAC_CONST(-0.8980275989) }, | ||
121 | { FRAC_CONST(0.6959127784), FRAC_CONST(-0.7181262970) }, | ||
122 | { FRAC_CONST(0.9114032984), FRAC_CONST(0.4115143716) }, | ||
123 | { FRAC_CONST(-0.0784590989), FRAC_CONST(0.9969173074) }, | ||
124 | { FRAC_CONST(-0.9645574093), FRAC_CONST(0.2638730407) }, | ||
125 | { FRAC_CONST(-0.5750052333), FRAC_CONST(-0.8181497455) }, | ||
126 | { FRAC_CONST(0.5750052333), FRAC_CONST(-0.8181497455) }, | ||
127 | { FRAC_CONST(0.9645574093), FRAC_CONST(0.2638730407) }, | ||
128 | { FRAC_CONST(0.0784590989), FRAC_CONST(0.9969173074) }, | ||
129 | { FRAC_CONST(-0.9114032984), FRAC_CONST(0.4115143716) }, | ||
130 | { FRAC_CONST(-0.6959127784), FRAC_CONST(-0.7181262970) }, | ||
131 | { FRAC_CONST(0.4399391711), FRAC_CONST(-0.8980275989) }, | ||
132 | { FRAC_CONST(0.9939609766), FRAC_CONST(0.1097343117) }, | ||
133 | { FRAC_CONST(0.2334453613), FRAC_CONST(0.9723699093) }, | ||
134 | { FRAC_CONST(-0.8358073831), FRAC_CONST(0.5490227938) }, | ||
135 | { FRAC_CONST(-0.7996846437), FRAC_CONST(-0.6004202366) }, | ||
136 | { FRAC_CONST(0.2940403223), FRAC_CONST(-0.9557930231) }, | ||
137 | { FRAC_CONST(0.9988898635), FRAC_CONST(-0.0471064523) }, | ||
138 | { FRAC_CONST(0.3826834261), FRAC_CONST(0.9238795042) }, | ||
139 | { FRAC_CONST(-0.7396311164), FRAC_CONST(0.6730124950) } | ||
140 | }; | ||
141 | |||
142 | /* RE(Phi_Fract_SubQmf20[j]) = (float)cos(M_PI*f_center_20[j]*0.39); */ | ||
143 | /* IM(Phi_Fract_SubQmf20[j]) = (float)sin(M_PI*f_center_20[j]*0.39); */ | ||
144 | static const complex_t Phi_Fract_SubQmf20[] = { | ||
145 | { FRAC_CONST(0.9882950187), FRAC_CONST(0.1525546312) }, | ||
146 | { FRAC_CONST(0.8962930441), FRAC_CONST(0.4434623122) }, | ||
147 | { FRAC_CONST(0.7208535671), FRAC_CONST(0.6930873394) }, | ||
148 | { FRAC_CONST(0.4783087075), FRAC_CONST(0.8781917691) }, | ||
149 | { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, | ||
150 | { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, | ||
151 | { FRAC_CONST(0.8962930441), FRAC_CONST(-0.4434623122) }, | ||
152 | { FRAC_CONST(0.9882950187), FRAC_CONST(-0.1525546312) }, | ||
153 | { FRAC_CONST(-0.5424415469), FRAC_CONST(0.8400935531) }, | ||
154 | { FRAC_CONST(0.0392598175), FRAC_CONST(0.9992290139) }, | ||
155 | { FRAC_CONST(-0.9268565774), FRAC_CONST(0.3754155636) }, | ||
156 | { FRAC_CONST(-0.9741733670), FRAC_CONST(-0.2258012742) } | ||
157 | }; | ||
158 | |||
159 | /* RE(Phi_Fract_SubQmf34[j]) = (float)cos(M_PI*f_center_34[j]*0.39); */ | ||
160 | /* IM(Phi_Fract_SubQmf34[j]) = (float)sin(M_PI*f_center_34[j]*0.39); */ | ||
161 | static const complex_t Phi_Fract_SubQmf34[] = { | ||
162 | { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, | ||
163 | { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, | ||
164 | { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, | ||
165 | { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, | ||
166 | { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, | ||
167 | { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, | ||
168 | { FRAC_CONST(0.3387379348), FRAC_CONST(0.9408807755) }, | ||
169 | { FRAC_CONST(0.3387379348), FRAC_CONST(0.9408807755) }, | ||
170 | { FRAC_CONST(0.3387379348), FRAC_CONST(0.9408807755) }, | ||
171 | { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, | ||
172 | { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, | ||
173 | { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, | ||
174 | { FRAC_CONST(-0.7705132365), FRAC_CONST(0.6374239922) }, | ||
175 | { FRAC_CONST(-0.7705132365), FRAC_CONST(0.6374239922) }, | ||
176 | { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, | ||
177 | { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, | ||
178 | { FRAC_CONST(0.3387379348), FRAC_CONST(0.9408807755) }, | ||
179 | { FRAC_CONST(0.3387379348), FRAC_CONST(0.9408807755) }, | ||
180 | { FRAC_CONST(0.3387379348), FRAC_CONST(0.9408807755) }, | ||
181 | { FRAC_CONST(0.3387379348), FRAC_CONST(0.9408807755) }, | ||
182 | { FRAC_CONST(-0.7705132365), FRAC_CONST(0.6374239922) }, | ||
183 | { FRAC_CONST(-0.7705132365), FRAC_CONST(0.6374239922) }, | ||
184 | { FRAC_CONST(-0.8607420325), FRAC_CONST(-0.5090414286) }, | ||
185 | { FRAC_CONST(0.3387379348), FRAC_CONST(0.9408807755) }, | ||
186 | { FRAC_CONST(0.1873813123), FRAC_CONST(-0.9822872281) }, | ||
187 | { FRAC_CONST(-0.7705132365), FRAC_CONST(0.6374239922) }, | ||
188 | { FRAC_CONST(-0.8607420325), FRAC_CONST(-0.5090414286) }, | ||
189 | { FRAC_CONST(-0.8607420325), FRAC_CONST(-0.5090414286) }, | ||
190 | { FRAC_CONST(0.1873813123), FRAC_CONST(-0.9822872281) }, | ||
191 | { FRAC_CONST(0.1873813123), FRAC_CONST(-0.9822872281) }, | ||
192 | { FRAC_CONST(0.9876883626), FRAC_CONST(-0.1564344615) }, | ||
193 | { FRAC_CONST(-0.8607420325), FRAC_CONST(-0.5090414286) } | ||
194 | }; | ||
195 | |||
196 | /* RE(Q_Fract_allpass_Qmf[j][i]) = (float)cos(M_PI*(j+0.5)*(frac_delay_q[i])); */ | ||
197 | /* IM(Q_Fract_allpass_Qmf[j][i]) = (float)sin(M_PI*(j+0.5)*(frac_delay_q[i])); */ | ||
198 | static const complex_t Q_Fract_allpass_Qmf[][3] = { | ||
199 | { { FRAC_CONST(0.7804303765), FRAC_CONST(0.6252426505) }, { FRAC_CONST(0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(0.8550928831), FRAC_CONST(0.5184748173) } }, | ||
200 | { { FRAC_CONST(-0.4399392009), FRAC_CONST(0.8980275393) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(-0.0643581524), FRAC_CONST(0.9979268909) } }, | ||
201 | { { FRAC_CONST(-0.9723699093), FRAC_CONST(-0.2334454209) }, { FRAC_CONST(0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(-0.9146071672), FRAC_CONST(0.4043435752) } }, | ||
202 | { { FRAC_CONST(0.0157073960), FRAC_CONST(-0.9998766184) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(-0.7814115286), FRAC_CONST(-0.6240159869) } }, | ||
203 | { { FRAC_CONST(0.9792228341), FRAC_CONST(-0.2027871907) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(0.1920081824), FRAC_CONST(-0.9813933372) } }, | ||
204 | { { FRAC_CONST(0.4115142524), FRAC_CONST(0.9114032984) }, { FRAC_CONST(0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(0.9589683414), FRAC_CONST(-0.2835132182) } }, | ||
205 | { { FRAC_CONST(-0.7996847630), FRAC_CONST(0.6004201174) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(0.6947838664), FRAC_CONST(0.7192186117) } }, | ||
206 | { { FRAC_CONST(-0.7604058385), FRAC_CONST(-0.6494481564) }, { FRAC_CONST(0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(-0.3164770305), FRAC_CONST(0.9486001730) } }, | ||
207 | { { FRAC_CONST(0.4679299891), FRAC_CONST(-0.8837655187) }, { FRAC_CONST(0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(-0.9874414206), FRAC_CONST(0.1579856575) } }, | ||
208 | { { FRAC_CONST(0.9645573497), FRAC_CONST(0.2638732493) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(-0.5966450572), FRAC_CONST(-0.8025052547) } }, | ||
209 | { { FRAC_CONST(-0.0471066870), FRAC_CONST(0.9988898635) }, { FRAC_CONST(0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(0.4357025325), FRAC_CONST(-0.9000906944) } }, | ||
210 | { { FRAC_CONST(-0.9851093888), FRAC_CONST(0.1719288528) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(0.9995546937), FRAC_CONST(-0.0298405960) } }, | ||
211 | { { FRAC_CONST(-0.3826831877), FRAC_CONST(-0.9238796234) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(0.4886211455), FRAC_CONST(0.8724960685) } }, | ||
212 | { { FRAC_CONST(0.8181498647), FRAC_CONST(-0.5750049949) }, { FRAC_CONST(0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(-0.5477093458), FRAC_CONST(0.8366686702) } }, | ||
213 | { { FRAC_CONST(0.7396308780), FRAC_CONST(0.6730127335) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(-0.9951074123), FRAC_CONST(-0.0987988561) } }, | ||
214 | { { FRAC_CONST(-0.4954589605), FRAC_CONST(0.8686313629) }, { FRAC_CONST(0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(-0.3725017905), FRAC_CONST(-0.9280315042) } }, | ||
215 | { { FRAC_CONST(-0.9557929039), FRAC_CONST(-0.2940406799) }, { FRAC_CONST(0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(0.6506417990), FRAC_CONST(-0.7593847513) } }, | ||
216 | { { FRAC_CONST(0.0784594864), FRAC_CONST(-0.9969173074) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(0.9741733670), FRAC_CONST(0.2258014232) } }, | ||
217 | { { FRAC_CONST(0.9900237322), FRAC_CONST(-0.1409008205) }, { FRAC_CONST(0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(0.2502108514), FRAC_CONST(0.9681913853) } }, | ||
218 | { { FRAC_CONST(0.3534744382), FRAC_CONST(0.9354441762) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(-0.7427945137), FRAC_CONST(0.6695194840) } }, | ||
219 | { { FRAC_CONST(-0.8358076215), FRAC_CONST(0.5490224361) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(-0.9370992780), FRAC_CONST(-0.3490629196) } }, | ||
220 | { { FRAC_CONST(-0.7181259394), FRAC_CONST(-0.6959131360) }, { FRAC_CONST(0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(-0.1237744763), FRAC_CONST(-0.9923103452) } }, | ||
221 | { { FRAC_CONST(0.5224990249), FRAC_CONST(-0.8526399136) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(0.8226406574), FRAC_CONST(-0.5685616732) } }, | ||
222 | { { FRAC_CONST(0.9460852146), FRAC_CONST(0.3239179254) }, { FRAC_CONST(0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(0.8844994903), FRAC_CONST(0.4665412009) } }, | ||
223 | { { FRAC_CONST(-0.1097348556), FRAC_CONST(0.9939609170) }, { FRAC_CONST(0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(-0.0047125919), FRAC_CONST(0.9999889135) } }, | ||
224 | { { FRAC_CONST(-0.9939610362), FRAC_CONST(0.1097337380) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(-0.8888573647), FRAC_CONST(0.4581840038) } }, | ||
225 | { { FRAC_CONST(-0.3239168525), FRAC_CONST(-0.9460855722) }, { FRAC_CONST(0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(-0.8172453642), FRAC_CONST(-0.5762898922) } }, | ||
226 | { { FRAC_CONST(0.8526405096), FRAC_CONST(-0.5224980116) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(0.1331215799), FRAC_CONST(-0.9910997152) } }, | ||
227 | { { FRAC_CONST(0.6959123611), FRAC_CONST(0.7181267142) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(0.9403476119), FRAC_CONST(-0.3402152061) } }, | ||
228 | { { FRAC_CONST(-0.5490233898), FRAC_CONST(0.8358070254) }, { FRAC_CONST(0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(0.7364512086), FRAC_CONST(0.6764906645) } }, | ||
229 | { { FRAC_CONST(-0.9354437590), FRAC_CONST(-0.3534754813) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(-0.2593250275), FRAC_CONST(0.9657900929) } }, | ||
230 | { { FRAC_CONST(0.1409019381), FRAC_CONST(-0.9900235534) }, { FRAC_CONST(0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(-0.9762582779), FRAC_CONST(0.2166097313) } }, | ||
231 | { { FRAC_CONST(0.9969173670), FRAC_CONST(-0.0784583688) }, { FRAC_CONST(0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(-0.6434556246), FRAC_CONST(-0.7654833794) } }, | ||
232 | { { FRAC_CONST(0.2940396070), FRAC_CONST(0.9557932615) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(0.3812320232), FRAC_CONST(-0.9244794250) } }, | ||
233 | { { FRAC_CONST(-0.8686318994), FRAC_CONST(0.4954580069) }, { FRAC_CONST(0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(0.9959943891), FRAC_CONST(-0.0894154981) } }, | ||
234 | { { FRAC_CONST(-0.6730118990), FRAC_CONST(-0.7396316528) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(0.5397993922), FRAC_CONST(0.8417937160) } }, | ||
235 | { { FRAC_CONST(0.5750059485), FRAC_CONST(-0.8181492686) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(-0.4968227744), FRAC_CONST(0.8678520322) } }, | ||
236 | { { FRAC_CONST(0.9238792062), FRAC_CONST(0.3826842010) }, { FRAC_CONST(0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(-0.9992290139), FRAC_CONST(-0.0392601527) } }, | ||
237 | { { FRAC_CONST(-0.1719299555), FRAC_CONST(0.9851091504) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(-0.4271997511), FRAC_CONST(-0.9041572809) } }, | ||
238 | { { FRAC_CONST(-0.9988899231), FRAC_CONST(0.0471055657) }, { FRAC_CONST(0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(0.6041822433), FRAC_CONST(-0.7968461514) } }, | ||
239 | { { FRAC_CONST(-0.2638721764), FRAC_CONST(-0.9645576477) }, { FRAC_CONST(0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(0.9859085083), FRAC_CONST(0.1672853529) } }, | ||
240 | { { FRAC_CONST(0.8837660551), FRAC_CONST(-0.4679289758) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(0.3075223565), FRAC_CONST(0.9515408874) } }, | ||
241 | { { FRAC_CONST(0.6494473219), FRAC_CONST(0.7604066133) }, { FRAC_CONST(0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(-0.7015317082), FRAC_CONST(0.7126382589) } }, | ||
242 | { { FRAC_CONST(-0.6004210114), FRAC_CONST(0.7996840477) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(-0.9562535882), FRAC_CONST(-0.2925389707) } }, | ||
243 | { { FRAC_CONST(-0.9114028811), FRAC_CONST(-0.4115152657) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(-0.1827499419), FRAC_CONST(-0.9831594229) } }, | ||
244 | { { FRAC_CONST(0.2027882934), FRAC_CONST(-0.9792225957) }, { FRAC_CONST(0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(0.7872582674), FRAC_CONST(-0.6166234016) } }, | ||
245 | { { FRAC_CONST(0.9998766780), FRAC_CONST(-0.0157062728) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(0.9107555747), FRAC_CONST(0.4129458666) } }, | ||
246 | { { FRAC_CONST(0.2334443331), FRAC_CONST(0.9723701477) }, { FRAC_CONST(0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(0.0549497530), FRAC_CONST(0.9984891415) } }, | ||
247 | { { FRAC_CONST(-0.8980280757), FRAC_CONST(0.4399381876) }, { FRAC_CONST(0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(-0.8599416018), FRAC_CONST(0.5103924870) } }, | ||
248 | { { FRAC_CONST(-0.6252418160), FRAC_CONST(-0.7804310918) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(-0.8501682281), FRAC_CONST(-0.5265110731) } }, | ||
249 | { { FRAC_CONST(0.6252435446), FRAC_CONST(-0.7804297209) }, { FRAC_CONST(0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(0.0737608299), FRAC_CONST(-0.9972759485) } }, | ||
250 | { { FRAC_CONST(0.8980270624), FRAC_CONST(0.4399402142) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(0.9183775187), FRAC_CONST(-0.3957053721) } }, | ||
251 | { { FRAC_CONST(-0.2334465086), FRAC_CONST(0.9723696709) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(0.7754954696), FRAC_CONST(0.6313531399) } }, | ||
252 | { { FRAC_CONST(-0.9998766184), FRAC_CONST(-0.0157085191) }, { FRAC_CONST(0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(-0.2012493610), FRAC_CONST(0.9795400500) } }, | ||
253 | { { FRAC_CONST(-0.2027861029), FRAC_CONST(-0.9792230725) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(-0.9615978599), FRAC_CONST(0.2744622827) } }, | ||
254 | { { FRAC_CONST(0.9114037752), FRAC_CONST(-0.4115132093) }, { FRAC_CONST(0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(-0.6879743338), FRAC_CONST(-0.7257350087) } }, | ||
255 | { { FRAC_CONST(0.6004192233), FRAC_CONST(0.7996854186) }, { FRAC_CONST(0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(0.3254036009), FRAC_CONST(-0.9455752373) } }, | ||
256 | { { FRAC_CONST(-0.6494490504), FRAC_CONST(0.7604051232) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(0.9888865948), FRAC_CONST(-0.1486719251) } }, | ||
257 | { { FRAC_CONST(-0.8837650418), FRAC_CONST(-0.4679309726) }, { FRAC_CONST(0.9238795042), FRAC_CONST(-0.3826834261) }, { FRAC_CONST(0.5890548825), FRAC_CONST(0.8080930114) } }, | ||
258 | { { FRAC_CONST(0.2638743520), FRAC_CONST(-0.9645570517) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(0.9238795042) }, { FRAC_CONST(-0.4441666007), FRAC_CONST(0.8959442377) } }, | ||
259 | { { FRAC_CONST(0.9988898039), FRAC_CONST(0.0471078083) }, { FRAC_CONST(-0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(-0.9997915030), FRAC_CONST(0.0204183888) } }, | ||
260 | { { FRAC_CONST(0.1719277352), FRAC_CONST(0.9851095676) }, { FRAC_CONST(0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(-0.4803760946), FRAC_CONST(-0.8770626187) } }, | ||
261 | { { FRAC_CONST(-0.9238800406), FRAC_CONST(0.3826821446) }, { FRAC_CONST(-0.9238795042), FRAC_CONST(0.3826834261) }, { FRAC_CONST(0.5555707216), FRAC_CONST(-0.8314692974) } }, | ||
262 | { { FRAC_CONST(-0.5750041008), FRAC_CONST(-0.8181505203) }, { FRAC_CONST(0.3826834261), FRAC_CONST(-0.9238795042) }, { FRAC_CONST(0.9941320419), FRAC_CONST(0.1081734300) } } | ||
263 | }; | ||
264 | |||
265 | /* RE(Q_Fract_allpass_SubQmf20[j][i]) = (float)cos(M_PI*f_center_20[j]*frac_delay_q[i]); */ | ||
266 | /* IM(Q_Fract_allpass_SubQmf20[j][i]) = (float)sin(M_PI*f_center_20[j]*frac_delay_q[i]); */ | ||
267 | static const complex_t Q_Fract_allpass_SubQmf20[][3] = { | ||
268 | { { FRAC_CONST(0.9857769012), FRAC_CONST(0.1680592746) }, { FRAC_CONST(0.9569403529), FRAC_CONST(0.2902846634) }, { FRAC_CONST(0.9907300472), FRAC_CONST(0.1358452588) } }, | ||
269 | { { FRAC_CONST(0.8744080663), FRAC_CONST(0.4851911962) }, { FRAC_CONST(0.6343932748), FRAC_CONST(0.7730104327) }, { FRAC_CONST(0.9175986052), FRAC_CONST(0.3975082636) } }, | ||
270 | { { FRAC_CONST(0.6642524004), FRAC_CONST(0.7475083470) }, { FRAC_CONST(0.0980171412), FRAC_CONST(0.9951847196) }, { FRAC_CONST(0.7767338753), FRAC_CONST(0.6298289299) } }, | ||
271 | { { FRAC_CONST(0.3790524006), FRAC_CONST(0.9253752232) }, { FRAC_CONST(-0.4713967443), FRAC_CONST(0.8819212914) }, { FRAC_CONST(0.5785340071), FRAC_CONST(0.8156582713) } }, | ||
272 | { { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) } }, | ||
273 | { { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) } }, | ||
274 | { { FRAC_CONST(0.8744080663), FRAC_CONST(-0.4851911962) }, { FRAC_CONST(0.6343932748), FRAC_CONST(-0.7730104327) }, { FRAC_CONST(0.9175986052), FRAC_CONST(-0.3975082636) } }, | ||
275 | { { FRAC_CONST(0.9857769012), FRAC_CONST(-0.1680592746) }, { FRAC_CONST(0.9569403529), FRAC_CONST(-0.2902846634) }, { FRAC_CONST(0.9907300472), FRAC_CONST(-0.1358452588) } }, | ||
276 | { { FRAC_CONST(-0.7126385570), FRAC_CONST(0.7015314102) }, { FRAC_CONST(-0.5555702448), FRAC_CONST(-0.8314695954) }, { FRAC_CONST(-0.3305967748), FRAC_CONST(0.9437720776) } }, | ||
277 | { { FRAC_CONST(-0.1175374240), FRAC_CONST(0.9930684566) }, { FRAC_CONST(-0.9807852507), FRAC_CONST(0.1950903237) }, { FRAC_CONST(0.2066311091), FRAC_CONST(0.9784189463) } }, | ||
278 | { { FRAC_CONST(-0.9947921634), FRAC_CONST(0.1019244045) }, { FRAC_CONST(0.5555702448), FRAC_CONST(-0.8314695954) }, { FRAC_CONST(-0.7720130086), FRAC_CONST(0.6356067061) } }, | ||
279 | { { FRAC_CONST(-0.8400934935), FRAC_CONST(-0.5424416065) }, { FRAC_CONST(0.9807852507), FRAC_CONST(0.1950903237) }, { FRAC_CONST(-0.9896889329), FRAC_CONST(0.1432335079) } } | ||
280 | }; | ||
281 | |||
282 | /* RE(Q_Fract_allpass_SubQmf34[j][i]) = (float)cos(M_PI*f_center_34[j]*frac_delay_q[i]); */ | ||
283 | /* IM(Q_Fract_allpass_SubQmf34[j][i]) = (float)sin(M_PI*f_center_34[j]*frac_delay_q[i]); */ | ||
284 | static const complex_t Q_Fract_allpass_SubQmf34[][3] = { | ||
285 | { { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) } }, | ||
286 | { { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) } }, | ||
287 | { { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) } }, | ||
288 | { { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) } }, | ||
289 | { { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) } }, | ||
290 | { { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) } }, | ||
291 | { { FRAC_CONST(0.2181432247), FRAC_CONST(0.9759167433) }, { FRAC_CONST(-0.7071067691), FRAC_CONST(0.7071067691) }, { FRAC_CONST(0.4623677433), FRAC_CONST(0.8866882324) } }, | ||
292 | { { FRAC_CONST(0.2181432247), FRAC_CONST(0.9759167433) }, { FRAC_CONST(-0.7071067691), FRAC_CONST(0.7071067691) }, { FRAC_CONST(0.4623677433), FRAC_CONST(0.8866882324) } }, | ||
293 | { { FRAC_CONST(0.2181432247), FRAC_CONST(0.9759167433) }, { FRAC_CONST(-0.7071067691), FRAC_CONST(0.7071067691) }, { FRAC_CONST(0.4623677433), FRAC_CONST(0.8866882324) } }, | ||
294 | { { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) } }, | ||
295 | { { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) } }, | ||
296 | { { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) } }, | ||
297 | { { FRAC_CONST(-0.9048270583), FRAC_CONST(0.4257792532) }, { FRAC_CONST(-0.0000000000), FRAC_CONST(-1.0000000000) }, { FRAC_CONST(-0.5724321604), FRAC_CONST(0.8199520707) } }, | ||
298 | { { FRAC_CONST(-0.9048270583), FRAC_CONST(0.4257792532) }, { FRAC_CONST(-0.0000000000), FRAC_CONST(-1.0000000000) }, { FRAC_CONST(-0.5724321604), FRAC_CONST(0.8199520707) } }, | ||
299 | { { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) } }, | ||
300 | { { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) }, { FRAC_CONST(1.0000000000), FRAC_CONST(0.0000000000) } }, | ||
301 | { { FRAC_CONST(0.2181432247), FRAC_CONST(0.9759167433) }, { FRAC_CONST(-0.7071067691), FRAC_CONST(0.7071067691) }, { FRAC_CONST(0.4623677433), FRAC_CONST(0.8866882324) } }, | ||
302 | { { FRAC_CONST(0.2181432247), FRAC_CONST(0.9759167433) }, { FRAC_CONST(-0.7071067691), FRAC_CONST(0.7071067691) }, { FRAC_CONST(0.4623677433), FRAC_CONST(0.8866882324) } }, | ||
303 | { { FRAC_CONST(0.2181432247), FRAC_CONST(0.9759167433) }, { FRAC_CONST(-0.7071067691), FRAC_CONST(0.7071067691) }, { FRAC_CONST(0.4623677433), FRAC_CONST(0.8866882324) } }, | ||
304 | { { FRAC_CONST(0.2181432247), FRAC_CONST(0.9759167433) }, { FRAC_CONST(-0.7071067691), FRAC_CONST(0.7071067691) }, { FRAC_CONST(0.4623677433), FRAC_CONST(0.8866882324) } }, | ||
305 | { { FRAC_CONST(-0.9048270583), FRAC_CONST(0.4257792532) }, { FRAC_CONST(-0.0000000000), FRAC_CONST(-1.0000000000) }, { FRAC_CONST(-0.5724321604), FRAC_CONST(0.8199520707) } }, | ||
306 | { { FRAC_CONST(-0.9048270583), FRAC_CONST(0.4257792532) }, { FRAC_CONST(-0.0000000000), FRAC_CONST(-1.0000000000) }, { FRAC_CONST(-0.5724321604), FRAC_CONST(0.8199520707) } }, | ||
307 | { { FRAC_CONST(-0.6129069924), FRAC_CONST(-0.7901550531) }, { FRAC_CONST(0.7071067691), FRAC_CONST(0.7071067691) }, { FRAC_CONST(-0.9917160273), FRAC_CONST(-0.1284494549) } }, | ||
308 | { { FRAC_CONST(0.2181432247), FRAC_CONST(0.9759167433) }, { FRAC_CONST(-0.7071067691), FRAC_CONST(0.7071067691) }, { FRAC_CONST(0.4623677433), FRAC_CONST(0.8866882324) } }, | ||
309 | { { FRAC_CONST(0.6374240518), FRAC_CONST(-0.7705131769) }, { FRAC_CONST(-1.0000000000), FRAC_CONST(0.0000000000) }, { FRAC_CONST(-0.3446428776), FRAC_CONST(-0.9387338758) } }, | ||
310 | { { FRAC_CONST(-0.9048270583), FRAC_CONST(0.4257792532) }, { FRAC_CONST(-0.0000000000), FRAC_CONST(-1.0000000000) }, { FRAC_CONST(-0.5724321604), FRAC_CONST(0.8199520707) } }, | ||
311 | { { FRAC_CONST(-0.6129069924), FRAC_CONST(-0.7901550531) }, { FRAC_CONST(0.7071067691), FRAC_CONST(0.7071067691) }, { FRAC_CONST(-0.9917160273), FRAC_CONST(-0.1284494549) } }, | ||
312 | { { FRAC_CONST(-0.6129069924), FRAC_CONST(-0.7901550531) }, { FRAC_CONST(0.7071067691), FRAC_CONST(0.7071067691) }, { FRAC_CONST(-0.9917160273), FRAC_CONST(-0.1284494549) } }, | ||
313 | { { FRAC_CONST(0.6374240518), FRAC_CONST(-0.7705131769) }, { FRAC_CONST(-1.0000000000), FRAC_CONST(0.0000000000) }, { FRAC_CONST(-0.3446428776), FRAC_CONST(-0.9387338758) } }, | ||
314 | { { FRAC_CONST(0.6374240518), FRAC_CONST(-0.7705131769) }, { FRAC_CONST(-1.0000000000), FRAC_CONST(0.0000000000) }, { FRAC_CONST(-0.3446428776), FRAC_CONST(-0.9387338758) } }, | ||
315 | { { FRAC_CONST(0.8910064697), FRAC_CONST(0.4539906085) }, { FRAC_CONST(0.7071067691), FRAC_CONST(-0.7071067691) }, { FRAC_CONST(0.6730125546), FRAC_CONST(-0.7396310568) } }, | ||
316 | { { FRAC_CONST(-0.6129069924), FRAC_CONST(-0.7901550531) }, { FRAC_CONST(0.7071067691), FRAC_CONST(0.7071067691) }, { FRAC_CONST(-0.9917160273), FRAC_CONST(-0.1284494549) } } | ||
317 | }; | ||
318 | |||
319 | #if 0 | ||
320 | static float quant_rho[8] = | ||
321 | { | ||
322 | FRAC_CONST(1.0), FRAC_CONST(0.937), FRAC_CONST(0.84118), FRAC_CONST(0.60092), | ||
323 | FRAC_CONST(0.36764), FRAC_CONST(0.0), FRAC_CONST(-0.589), FRAC_CONST(-1.0) | ||
324 | }; | ||
325 | |||
326 | static const uint8_t quant_iid_normal[7] = | ||
327 | { | ||
328 | 2, 4, 7, 10, 14, 18, 25 | ||
329 | }; | ||
330 | |||
331 | static const uint8_t quant_iid_fine[15] = | ||
332 | { | ||
333 | 2, 4, 6, 8, 10, 13, 16, 19, 22, 25, 30, 35, 40, 45, 50 | ||
334 | }; | ||
335 | #endif | ||
336 | |||
337 | static const real_t cos_alphas[] = { | ||
338 | COEF_CONST(1.0000000000), COEF_CONST(0.9841239700), COEF_CONST(0.9594738210), | ||
339 | COEF_CONST(0.8946843079), COEF_CONST(0.8269340931), COEF_CONST(0.7071067812), | ||
340 | COEF_CONST(0.4533210856), COEF_CONST(0.0000000000) | ||
341 | }; | ||
342 | |||
343 | static const real_t sin_alphas[] = { | ||
344 | COEF_CONST(0.0000000000), COEF_CONST(0.1774824264), COEF_CONST(0.2817977763), | ||
345 | COEF_CONST(0.4466989918), COEF_CONST(0.5622988580), COEF_CONST(0.7071067812), | ||
346 | COEF_CONST(0.8913472911), COEF_CONST(1.0000000000) | ||
347 | }; | ||
348 | |||
349 | static const real_t cos_betas_normal[][8] = { | ||
350 | { COEF_CONST(1.0000000000), COEF_CONST(1.0000000000), COEF_CONST(1.0000000000), COEF_CONST(1.0000000000), COEF_CONST(1.0000000000), COEF_CONST(1.0000000000), COEF_CONST(1.0000000000), COEF_CONST(1.0000000000) }, | ||
351 | { COEF_CONST(1.0000000000), COEF_CONST(0.9995871699), COEF_CONST(0.9989419133), COEF_CONST(0.9972204583), COEF_CONST(0.9953790839), COEF_CONST(0.9920112747), COEF_CONST(0.9843408180), COEF_CONST(0.9681727381) }, | ||
352 | { COEF_CONST(1.0000000000), COEF_CONST(0.9984497744), COEF_CONST(0.9960279377), COEF_CONST(0.9895738413), COEF_CONST(0.9826814632), COEF_CONST(0.9701058164), COEF_CONST(0.9416098832), COEF_CONST(0.8822105900) }, | ||
353 | { COEF_CONST(1.0000000000), COEF_CONST(0.9959398908), COEF_CONST(0.9896038018), COEF_CONST(0.9727589768), COEF_CONST(0.9548355329), COEF_CONST(0.9223070404), COEF_CONST(0.8494349490), COEF_CONST(0.7013005535) }, | ||
354 | { COEF_CONST(1.0000000000), COEF_CONST(0.9932417400), COEF_CONST(0.9827071856), COEF_CONST(0.9547730996), COEF_CONST(0.9251668930), COEF_CONST(0.8717461589), COEF_CONST(0.7535520592), COEF_CONST(0.5198827312) }, | ||
355 | { COEF_CONST(1.0000000000), COEF_CONST(0.9902068095), COEF_CONST(0.9749613872), COEF_CONST(0.9346538534), COEF_CONST(0.8921231300), COEF_CONST(0.8158851259), COEF_CONST(0.6495964302), COEF_CONST(0.3313370772) }, | ||
356 | { COEF_CONST(1.0000000000), COEF_CONST(0.9880510933), COEF_CONST(0.9694670261), COEF_CONST(0.9204347876), COEF_CONST(0.8688622825), COEF_CONST(0.7768516704), COEF_CONST(0.5782161800), COEF_CONST(0.2069970356) }, | ||
357 | { COEF_CONST(1.0000000000), COEF_CONST(0.9858996945), COEF_CONST(0.9639898866), COEF_CONST(0.9063034786), COEF_CONST(0.8458214608), COEF_CONST(0.7384262300), COEF_CONST(0.5089811277), COEF_CONST(0.0905465944) } | ||
358 | }; | ||
359 | |||
360 | static const real_t sin_betas_normal[][8] = { | ||
361 | { COEF_CONST(0.0000000000), COEF_CONST(0.0000000000), COEF_CONST(0.0000000000), COEF_CONST(0.0000000000), COEF_CONST(0.0000000000), COEF_CONST(0.0000000000), COEF_CONST(0.0000000000), COEF_CONST(0.0000000000) }, | ||
362 | { COEF_CONST(0.0000000000), COEF_CONST(-0.0287313368), COEF_CONST(-0.0459897147), COEF_CONST(-0.0745074328), COEF_CONST(-0.0960233266), COEF_CONST(-0.1261492408), COEF_CONST(-0.1762757894), COEF_CONST(-0.2502829383) }, | ||
363 | { COEF_CONST(0.0000000000), COEF_CONST(-0.0556601118), COEF_CONST(-0.0890412670), COEF_CONST(-0.1440264301), COEF_CONST(-0.1853028382), COEF_CONST(-0.2426823129), COEF_CONST(-0.3367058477), COEF_CONST(-0.4708550466) }, | ||
364 | { COEF_CONST(0.0000000000), COEF_CONST(-0.0900207420), COEF_CONST(-0.1438204281), COEF_CONST(-0.2318188366), COEF_CONST(-0.2971348264), COEF_CONST(-0.3864579191), COEF_CONST(-0.5276933461), COEF_CONST(-0.7128657193) }, | ||
365 | { COEF_CONST(0.0000000000), COEF_CONST(-0.1160639735), COEF_CONST(-0.1851663774), COEF_CONST(-0.2973353800), COEF_CONST(-0.3795605619), COEF_CONST(-0.4899577884), COEF_CONST(-0.6573882369), COEF_CONST(-0.8542376401) }, | ||
366 | { COEF_CONST(0.0000000000), COEF_CONST(-0.1396082894), COEF_CONST(-0.2223742196), COEF_CONST(-0.3555589603), COEF_CONST(-0.4517923427), COEF_CONST(-0.5782140273), COEF_CONST(-0.7602792104), COEF_CONST(-0.9435124489) }, | ||
367 | { COEF_CONST(0.0000000000), COEF_CONST(-0.1541266914), COEF_CONST(-0.2452217065), COEF_CONST(-0.3908961522), COEF_CONST(-0.4950538699), COEF_CONST(-0.6296836366), COEF_CONST(-0.8158836002), COEF_CONST(-0.9783415698) }, | ||
368 | { COEF_CONST(0.0000000000), COEF_CONST(-0.1673373610), COEF_CONST(-0.2659389001), COEF_CONST(-0.4226275012), COEF_CONST(-0.5334660781), COEF_CONST(-0.6743342664), COEF_CONST(-0.8607776784), COEF_CONST(-0.9958922202) } | ||
369 | }; | ||
370 | |||
371 | static const real_t cos_betas_fine[][8] = { | ||
372 | { COEF_CONST(1.0000000000), COEF_CONST(1.0000000000), COEF_CONST(1.0000000000), COEF_CONST(1.0000000000), COEF_CONST(1.0000000000), COEF_CONST(1.0000000000), COEF_CONST(1.0000000000), COEF_CONST(1.0000000000) }, | ||
373 | { COEF_CONST(1.0000000000), COEF_CONST(0.9995871699), COEF_CONST(0.9989419133), COEF_CONST(0.9972204583), COEF_CONST(0.9953790839), COEF_CONST(0.9920112747), COEF_CONST(0.9843408180), COEF_CONST(0.9681727381) }, | ||
374 | { COEF_CONST(1.0000000000), COEF_CONST(0.9984497744), COEF_CONST(0.9960279377), COEF_CONST(0.9895738413), COEF_CONST(0.9826814632), COEF_CONST(0.9701058164), COEF_CONST(0.9416098832), COEF_CONST(0.8822105900) }, | ||
375 | { COEF_CONST(1.0000000000), COEF_CONST(0.9968361371), COEF_CONST(0.9918968104), COEF_CONST(0.9787540479), COEF_CONST(0.9647515190), COEF_CONST(0.9392903010), COEF_CONST(0.8820167114), COEF_CONST(0.7645325390) }, | ||
376 | { COEF_CONST(1.0000000000), COEF_CONST(0.9950262915), COEF_CONST(0.9872675041), COEF_CONST(0.9666584578), COEF_CONST(0.9447588606), COEF_CONST(0.9050918405), COEF_CONST(0.8165997379), COEF_CONST(0.6383824796) }, | ||
377 | { COEF_CONST(1.0000000000), COEF_CONST(0.9932417400), COEF_CONST(0.9827071856), COEF_CONST(0.9547730996), COEF_CONST(0.9251668930), COEF_CONST(0.8717461589), COEF_CONST(0.7535520592), COEF_CONST(0.5198827312) }, | ||
378 | { COEF_CONST(1.0000000000), COEF_CONST(0.9908827998), COEF_CONST(0.9766855904), COEF_CONST(0.9391249214), COEF_CONST(0.8994531782), COEF_CONST(0.8282352693), COEF_CONST(0.6723983174), COEF_CONST(0.3719473225) }, | ||
379 | { COEF_CONST(1.0000000000), COEF_CONST(0.9890240165), COEF_CONST(0.9719459866), COEF_CONST(0.9268448110), COEF_CONST(0.8793388536), COEF_CONST(0.7944023271), COEF_CONST(0.6101812098), COEF_CONST(0.2621501145) }, | ||
380 | { COEF_CONST(1.0000000000), COEF_CONST(0.9876350461), COEF_CONST(0.9684073447), COEF_CONST(0.9176973944), COEF_CONST(0.8643930070), COEF_CONST(0.7693796058), COEF_CONST(0.5646720713), COEF_CONST(0.1838899556) }, | ||
381 | { COEF_CONST(1.0000000000), COEF_CONST(0.9866247085), COEF_CONST(0.9658349704), COEF_CONST(0.9110590761), COEF_CONST(0.8535668048), COEF_CONST(0.7513165426), COEF_CONST(0.5320914819), COEF_CONST(0.1289530943) }, | ||
382 | { COEF_CONST(1.0000000000), COEF_CONST(0.9858996945), COEF_CONST(0.9639898866), COEF_CONST(0.9063034786), COEF_CONST(0.8458214608), COEF_CONST(0.7384262300), COEF_CONST(0.5089811277), COEF_CONST(0.0905465944) }, | ||
383 | { COEF_CONST(1.0000000000), COEF_CONST(0.9851245614), COEF_CONST(0.9620180268), COEF_CONST(0.9012265590), COEF_CONST(0.8375623272), COEF_CONST(0.7247108045), COEF_CONST(0.4845204297), COEF_CONST(0.0504115003) }, | ||
384 | { COEF_CONST(1.0000000000), COEF_CONST(0.9846869856), COEF_CONST(0.9609052357), COEF_CONST(0.8983639533), COEF_CONST(0.8329098386), COEF_CONST(0.7169983441), COEF_CONST(0.4708245354), COEF_CONST(0.0281732509) }, | ||
385 | { COEF_CONST(1.0000000000), COEF_CONST(0.9844406325), COEF_CONST(0.9602788522), COEF_CONST(0.8967533934), COEF_CONST(0.8302936455), COEF_CONST(0.7126658102), COEF_CONST(0.4631492839), COEF_CONST(0.0157851140) }, | ||
386 | { COEF_CONST(1.0000000000), COEF_CONST(0.9843020502), COEF_CONST(0.9599265269), COEF_CONST(0.8958477331), COEF_CONST(0.8288229094), COEF_CONST(0.7102315840), COEF_CONST(0.4588429315), COEF_CONST(0.0088578059) }, | ||
387 | { COEF_CONST(1.0000000000), COEF_CONST(0.9842241136), COEF_CONST(0.9597283916), COEF_CONST(0.8953385094), COEF_CONST(0.8279961409), COEF_CONST(0.7088635748), COEF_CONST(0.4564246834), COEF_CONST(0.0049751355) } | ||
388 | }; | ||
389 | |||
390 | static const real_t sin_betas_fine[][8] = { | ||
391 | { COEF_CONST(0.0000000000), COEF_CONST(0.0000000000), COEF_CONST(0.0000000000), COEF_CONST(0.0000000000), COEF_CONST(0.0000000000), COEF_CONST(0.0000000000), COEF_CONST(0.0000000000), COEF_CONST(0.0000000000) }, | ||
392 | { COEF_CONST(0.0000000000), COEF_CONST(-0.0287313368), COEF_CONST(-0.0459897147), COEF_CONST(-0.0745074328), COEF_CONST(-0.0960233266), COEF_CONST(-0.1261492408), COEF_CONST(-0.1762757894), COEF_CONST(-0.2502829383) }, | ||
393 | { COEF_CONST(0.0000000000), COEF_CONST(-0.0556601118), COEF_CONST(-0.0890412670), COEF_CONST(-0.1440264301), COEF_CONST(-0.1853028382), COEF_CONST(-0.2426823129), COEF_CONST(-0.3367058477), COEF_CONST(-0.4708550466) }, | ||
394 | { COEF_CONST(0.0000000000), COEF_CONST(-0.0794840594), COEF_CONST(-0.1270461238), COEF_CONST(-0.2050378347), COEF_CONST(-0.2631625097), COEF_CONST(-0.3431234916), COEF_CONST(-0.4712181245), COEF_CONST(-0.6445851354) }, | ||
395 | { COEF_CONST(0.0000000000), COEF_CONST(-0.0996126459), COEF_CONST(-0.1590687758), COEF_CONST(-0.2560691819), COEF_CONST(-0.3277662204), COEF_CONST(-0.4252161335), COEF_CONST(-0.5772043556), COEF_CONST(-0.7697193058) }, | ||
396 | { COEF_CONST(0.0000000000), COEF_CONST(-0.1160639735), COEF_CONST(-0.1851663774), COEF_CONST(-0.2973353800), COEF_CONST(-0.3795605619), COEF_CONST(-0.4899577884), COEF_CONST(-0.6573882369), COEF_CONST(-0.8542376401) }, | ||
397 | { COEF_CONST(0.0000000000), COEF_CONST(-0.1347266752), COEF_CONST(-0.2146747714), COEF_CONST(-0.3435758752), COEF_CONST(-0.4370171396), COEF_CONST(-0.5603805303), COEF_CONST(-0.7401895046), COEF_CONST(-0.9282538388) }, | ||
398 | { COEF_CONST(0.0000000000), COEF_CONST(-0.1477548470), COEF_CONST(-0.2352041647), COEF_CONST(-0.3754446647), COEF_CONST(-0.4761965776), COEF_CONST(-0.6073919186), COEF_CONST(-0.7922618830), COEF_CONST(-0.9650271071) }, | ||
399 | { COEF_CONST(0.0000000000), COEF_CONST(-0.1567705832), COEF_CONST(-0.2493736450), COEF_CONST(-0.3972801182), COEF_CONST(-0.5028167951), COEF_CONST(-0.6387918458), COEF_CONST(-0.8253153651), COEF_CONST(-0.9829468369) }, | ||
400 | { COEF_CONST(0.0000000000), COEF_CONST(-0.1630082348), COEF_CONST(-0.2591578860), COEF_CONST(-0.4122758299), COEF_CONST(-0.5209834064), COEF_CONST(-0.6599420072), COEF_CONST(-0.8466868694), COEF_CONST(-0.9916506943) }, | ||
401 | { COEF_CONST(0.0000000000), COEF_CONST(-0.1673373610), COEF_CONST(-0.2659389001), COEF_CONST(-0.4226275012), COEF_CONST(-0.5334660781), COEF_CONST(-0.6743342664), COEF_CONST(-0.8607776784), COEF_CONST(-0.9958922202) }, | ||
402 | { COEF_CONST(0.0000000000), COEF_CONST(-0.1718417832), COEF_CONST(-0.2729859267), COEF_CONST(-0.4333482310), COEF_CONST(-0.5463417868), COEF_CONST(-0.6890531546), COEF_CONST(-0.8747799456), COEF_CONST(-0.9987285320) }, | ||
403 | { COEF_CONST(0.0000000000), COEF_CONST(-0.1743316967), COEF_CONST(-0.2768774604), COEF_CONST(-0.4392518725), COEF_CONST(-0.5534087104), COEF_CONST(-0.6970748701), COEF_CONST(-0.8822268738), COEF_CONST(-0.9996030552) }, | ||
404 | { COEF_CONST(0.0000000000), COEF_CONST(-0.1757175038), COEF_CONST(-0.2790421580), COEF_CONST(-0.4425306221), COEF_CONST(-0.5573261722), COEF_CONST(-0.7015037013), COEF_CONST(-0.8862802834), COEF_CONST(-0.9998754073) }, | ||
405 | { COEF_CONST(0.0000000000), COEF_CONST(-0.1764921355), COEF_CONST(-0.2802517850), COEF_CONST(-0.4443611583), COEF_CONST(-0.5595110229), COEF_CONST(-0.7039681080), COEF_CONST(-0.8885173967), COEF_CONST(-0.9999607689) }, | ||
406 | { COEF_CONST(0.0000000000), COEF_CONST(-0.1769262394), COEF_CONST(-0.2809295540), COEF_CONST(-0.4453862969), COEF_CONST(-0.5607337966), COEF_CONST(-0.7053456119), COEF_CONST(-0.8897620516), COEF_CONST(-0.9999876239) } | ||
407 | }; | ||
408 | |||
409 | static const real_t sincos_alphas_B_normal[][8] = { | ||
410 | { COEF_CONST(0.0561454100), COEF_CONST(0.0526385859), COEF_CONST(0.0472937334), COEF_CONST(0.0338410641), COEF_CONST(0.0207261065), COEF_CONST(0.0028205635), COEF_CONST(0.0028205635), COEF_CONST(0.0028205635) }, | ||
411 | { COEF_CONST(0.1249065138), COEF_CONST(0.1173697697), COEF_CONST(0.1057888284), COEF_CONST(0.0761985131), COEF_CONST(0.0468732723), COEF_CONST(0.0063956103), COEF_CONST(0.0063956103), COEF_CONST(0.0063956103) }, | ||
412 | { COEF_CONST(0.1956693050), COEF_CONST(0.1846090179), COEF_CONST(0.1673645109), COEF_CONST(0.1220621836), COEF_CONST(0.0757362479), COEF_CONST(0.0103882630), COEF_CONST(0.0103882630), COEF_CONST(0.0103882630) }, | ||
413 | { COEF_CONST(0.3015113269), COEF_CONST(0.2870525790), COEF_CONST(0.2637738799), COEF_CONST(0.1984573949), COEF_CONST(0.1260749909), COEF_CONST(0.0175600126), COEF_CONST(0.0175600126), COEF_CONST(0.0175600126) }, | ||
414 | { COEF_CONST(0.4078449476), COEF_CONST(0.3929852420), COEF_CONST(0.3680589270), COEF_CONST(0.2911029124), COEF_CONST(0.1934512363), COEF_CONST(0.0278686716), COEF_CONST(0.0278686716), COEF_CONST(0.0278686716) }, | ||
415 | { COEF_CONST(0.5336171261), COEF_CONST(0.5226637762), COEF_CONST(0.5033652606), COEF_CONST(0.4349162672), COEF_CONST(0.3224682122), COEF_CONST(0.0521999036), COEF_CONST(0.0521999036), COEF_CONST(0.0521999036) }, | ||
416 | { COEF_CONST(0.6219832023), COEF_CONST(0.6161847276), COEF_CONST(0.6057251063), COEF_CONST(0.5654342668), COEF_CONST(0.4826149915), COEF_CONST(0.1058044758), COEF_CONST(0.1058044758), COEF_CONST(0.1058044758) }, | ||
417 | { COEF_CONST(0.7071067657), COEF_CONST(0.7071067657), COEF_CONST(0.7071067657), COEF_CONST(0.7071067657), COEF_CONST(0.7071067657), COEF_CONST(0.7071067657), COEF_CONST(0.7071067657), COEF_CONST(0.7071067657) }, | ||
418 | { COEF_CONST(0.7830305572), COEF_CONST(0.7876016373), COEF_CONST(0.7956739618), COEF_CONST(0.8247933372), COEF_CONST(0.8758325942), COEF_CONST(0.9943869542), COEF_CONST(0.9943869542), COEF_CONST(0.9943869542) }, | ||
419 | { COEF_CONST(0.8457261833), COEF_CONST(0.8525388778), COEF_CONST(0.8640737401), COEF_CONST(0.9004708933), COEF_CONST(0.9465802987), COEF_CONST(0.9986366532), COEF_CONST(0.9986366532), COEF_CONST(0.9986366532) }, | ||
420 | { COEF_CONST(0.9130511848), COEF_CONST(0.9195447612), COEF_CONST(0.9298024282), COEF_CONST(0.9566917233), COEF_CONST(0.9811098801), COEF_CONST(0.9996115928), COEF_CONST(0.9996115928), COEF_CONST(0.9996115928) }, | ||
421 | { COEF_CONST(0.9534625907), COEF_CONST(0.9579148236), COEF_CONST(0.9645845234), COEF_CONST(0.9801095128), COEF_CONST(0.9920207064), COEF_CONST(0.9998458099), COEF_CONST(0.9998458099), COEF_CONST(0.9998458099) }, | ||
422 | { COEF_CONST(0.9806699215), COEF_CONST(0.9828120260), COEF_CONST(0.9858950861), COEF_CONST(0.9925224431), COEF_CONST(0.9971278825), COEF_CONST(0.9999460406), COEF_CONST(0.9999460406), COEF_CONST(0.9999460406) }, | ||
423 | { COEF_CONST(0.9921685024), COEF_CONST(0.9930882705), COEF_CONST(0.9943886135), COEF_CONST(0.9970926648), COEF_CONST(0.9989008403), COEF_CONST(0.9999795479), COEF_CONST(0.9999795479), COEF_CONST(0.9999795479) }, | ||
424 | { COEF_CONST(0.9984226014), COEF_CONST(0.9986136287), COEF_CONST(0.9988810254), COEF_CONST(0.9994272242), COEF_CONST(0.9997851906), COEF_CONST(0.9999960221), COEF_CONST(0.9999960221), COEF_CONST(0.9999960221) } | ||
425 | }; | ||
426 | |||
427 | static const real_t sincos_alphas_B_fine[][8] = { | ||
428 | { COEF_CONST(0.0031622158), COEF_CONST(0.0029630181), COEF_CONST(0.0026599892), COEF_CONST(0.0019002704), COEF_CONST(0.0011626042), COEF_CONST(0.0001580278), COEF_CONST(0.0001580278), COEF_CONST(0.0001580278) }, | ||
429 | { COEF_CONST(0.0056232673), COEF_CONST(0.0052689825), COEF_CONST(0.0047302825), COEF_CONST(0.0033791756), COEF_CONST(0.0020674015), COEF_CONST(0.0002811710), COEF_CONST(0.0002811710), COEF_CONST(0.0002811710) }, | ||
430 | { COEF_CONST(0.0099994225), COEF_CONST(0.0093696693), COEF_CONST(0.0084117414), COEF_CONST(0.0060093796), COEF_CONST(0.0036766009), COEF_CONST(0.0005000392), COEF_CONST(0.0005000392), COEF_CONST(0.0005000392) }, | ||
431 | { COEF_CONST(0.0177799194), COEF_CONST(0.0166607102), COEF_CONST(0.0149581377), COEF_CONST(0.0106875809), COEF_CONST(0.0065392545), COEF_CONST(0.0008893767), COEF_CONST(0.0008893767), COEF_CONST(0.0008893767) }, | ||
432 | { COEF_CONST(0.0316069684), COEF_CONST(0.0296211579), COEF_CONST(0.0265987295), COEF_CONST(0.0190113813), COEF_CONST(0.0116349973), COEF_CONST(0.0015826974), COEF_CONST(0.0015826974), COEF_CONST(0.0015826974) }, | ||
433 | { COEF_CONST(0.0561454100), COEF_CONST(0.0526385859), COEF_CONST(0.0472937334), COEF_CONST(0.0338410641), COEF_CONST(0.0207261065), COEF_CONST(0.0028205635), COEF_CONST(0.0028205635), COEF_CONST(0.0028205635) }, | ||
434 | { COEF_CONST(0.0791834041), COEF_CONST(0.0742798103), COEF_CONST(0.0667907269), COEF_CONST(0.0478705292), COEF_CONST(0.0293500747), COEF_CONST(0.0039966755), COEF_CONST(0.0039966755), COEF_CONST(0.0039966755) }, | ||
435 | { COEF_CONST(0.1115021177), COEF_CONST(0.1047141985), COEF_CONST(0.0943053154), COEF_CONST(0.0678120561), COEF_CONST(0.0416669150), COEF_CONST(0.0056813213), COEF_CONST(0.0056813213), COEF_CONST(0.0056813213) }, | ||
436 | { COEF_CONST(0.1565355066), COEF_CONST(0.1473258371), COEF_CONST(0.1330924027), COEF_CONST(0.0963282233), COEF_CONST(0.0594509113), COEF_CONST(0.0081277946), COEF_CONST(0.0081277946), COEF_CONST(0.0081277946) }, | ||
437 | { COEF_CONST(0.2184643682), COEF_CONST(0.2064579524), COEF_CONST(0.1876265439), COEF_CONST(0.1375744167), COEF_CONST(0.0856896681), COEF_CONST(0.0117817338), COEF_CONST(0.0117817338), COEF_CONST(0.0117817338) }, | ||
438 | { COEF_CONST(0.3015113269), COEF_CONST(0.2870525790), COEF_CONST(0.2637738799), COEF_CONST(0.1984573949), COEF_CONST(0.1260749909), COEF_CONST(0.0175600126), COEF_CONST(0.0175600126), COEF_CONST(0.0175600126) }, | ||
439 | { COEF_CONST(0.3698741335), COEF_CONST(0.3547727297), COEF_CONST(0.3298252076), COEF_CONST(0.2556265829), COEF_CONST(0.1665990017), COEF_CONST(0.0236344541), COEF_CONST(0.0236344541), COEF_CONST(0.0236344541) }, | ||
440 | { COEF_CONST(0.4480623975), COEF_CONST(0.4339410024), COEF_CONST(0.4098613774), COEF_CONST(0.3322709108), COEF_CONST(0.2266784729), COEF_CONST(0.0334094131), COEF_CONST(0.0334094131), COEF_CONST(0.0334094131) }, | ||
441 | { COEF_CONST(0.5336171261), COEF_CONST(0.5226637762), COEF_CONST(0.5033652606), COEF_CONST(0.4349162672), COEF_CONST(0.3224682122), COEF_CONST(0.0521999036), COEF_CONST(0.0521999036), COEF_CONST(0.0521999036) }, | ||
442 | { COEF_CONST(0.6219832023), COEF_CONST(0.6161847276), COEF_CONST(0.6057251063), COEF_CONST(0.5654342668), COEF_CONST(0.4826149915), COEF_CONST(0.1058044758), COEF_CONST(0.1058044758), COEF_CONST(0.1058044758) }, | ||
443 | { COEF_CONST(0.7071067657), COEF_CONST(0.7071067657), COEF_CONST(0.7071067657), COEF_CONST(0.7071067657), COEF_CONST(0.7071067657), COEF_CONST(0.7071067657), COEF_CONST(0.7071067657), COEF_CONST(0.7071067657) }, | ||
444 | { COEF_CONST(0.7830305572), COEF_CONST(0.7876016373), COEF_CONST(0.7956739618), COEF_CONST(0.8247933372), COEF_CONST(0.8758325942), COEF_CONST(0.9943869542), COEF_CONST(0.9943869542), COEF_CONST(0.9943869542) }, | ||
445 | { COEF_CONST(0.8457261833), COEF_CONST(0.8525388778), COEF_CONST(0.8640737401), COEF_CONST(0.9004708933), COEF_CONST(0.9465802987), COEF_CONST(0.9986366532), COEF_CONST(0.9986366532), COEF_CONST(0.9986366532) }, | ||
446 | { COEF_CONST(0.8940022267), COEF_CONST(0.9009412572), COEF_CONST(0.9121477564), COEF_CONST(0.9431839770), COEF_CONST(0.9739696219), COEF_CONST(0.9994417480), COEF_CONST(0.9994417480), COEF_CONST(0.9994417480) }, | ||
447 | { COEF_CONST(0.9290818561), COEF_CONST(0.9349525662), COEF_CONST(0.9440420138), COEF_CONST(0.9667755833), COEF_CONST(0.9860247275), COEF_CONST(0.9997206664), COEF_CONST(0.9997206664), COEF_CONST(0.9997206664) }, | ||
448 | { COEF_CONST(0.9534625907), COEF_CONST(0.9579148236), COEF_CONST(0.9645845234), COEF_CONST(0.9801095128), COEF_CONST(0.9920207064), COEF_CONST(0.9998458099), COEF_CONST(0.9998458099), COEF_CONST(0.9998458099) }, | ||
449 | { COEF_CONST(0.9758449068), COEF_CONST(0.9784554646), COEF_CONST(0.9822404252), COEF_CONST(0.9904914275), COEF_CONST(0.9963218730), COEF_CONST(0.9999305926), COEF_CONST(0.9999305926), COEF_CONST(0.9999305926) }, | ||
450 | { COEF_CONST(0.9876723320), COEF_CONST(0.9890880155), COEF_CONST(0.9911036356), COEF_CONST(0.9953496173), COEF_CONST(0.9982312259), COEF_CONST(0.9999669685), COEF_CONST(0.9999669685), COEF_CONST(0.9999669685) }, | ||
451 | { COEF_CONST(0.9937641889), COEF_CONST(0.9945023501), COEF_CONST(0.9955433130), COEF_CONST(0.9976981117), COEF_CONST(0.9991315558), COEF_CONST(0.9999838610), COEF_CONST(0.9999838610), COEF_CONST(0.9999838610) }, | ||
452 | { COEF_CONST(0.9968600642), COEF_CONST(0.9972374385), COEF_CONST(0.9977670024), COEF_CONST(0.9988535464), COEF_CONST(0.9995691924), COEF_CONST(0.9999920129), COEF_CONST(0.9999920129), COEF_CONST(0.9999920129) }, | ||
453 | { COEF_CONST(0.9984226014), COEF_CONST(0.9986136287), COEF_CONST(0.9988810254), COEF_CONST(0.9994272242), COEF_CONST(0.9997851906), COEF_CONST(0.9999960221), COEF_CONST(0.9999960221), COEF_CONST(0.9999960221) }, | ||
454 | { COEF_CONST(0.9995003746), COEF_CONST(0.9995611974), COEF_CONST(0.9996461891), COEF_CONST(0.9998192657), COEF_CONST(0.9999323103), COEF_CONST(0.9999987475), COEF_CONST(0.9999987475), COEF_CONST(0.9999987475) }, | ||
455 | { COEF_CONST(0.9998419236), COEF_CONST(0.9998611991), COEF_CONST(0.9998881193), COEF_CONST(0.9999428861), COEF_CONST(0.9999786185), COEF_CONST(0.9999996045), COEF_CONST(0.9999996045), COEF_CONST(0.9999996045) }, | ||
456 | { COEF_CONST(0.9999500038), COEF_CONST(0.9999561034), COEF_CONST(0.9999646206), COEF_CONST(0.9999819429), COEF_CONST(0.9999932409), COEF_CONST(0.9999998750), COEF_CONST(0.9999998750), COEF_CONST(0.9999998750) }, | ||
457 | { COEF_CONST(0.9999841890), COEF_CONST(0.9999861183), COEF_CONST(0.9999888121), COEF_CONST(0.9999942902), COEF_CONST(0.9999978628), COEF_CONST(0.9999999605), COEF_CONST(0.9999999605), COEF_CONST(0.9999999605) }, | ||
458 | { COEF_CONST(0.9999950000), COEF_CONST(0.9999956102), COEF_CONST(0.9999964621), COEF_CONST(0.9999981945), COEF_CONST(0.9999993242), COEF_CONST(0.9999999875), COEF_CONST(0.9999999875), COEF_CONST(0.9999999875) } | ||
459 | }; | ||
460 | |||
461 | static const real_t cos_gammas_normal[][8] = { | ||
462 | { COEF_CONST(1.0000000000), COEF_CONST(0.9841239707), COEF_CONST(0.9594738226), COEF_CONST(0.8946843024), COEF_CONST(0.8269341029), COEF_CONST(0.7245688486), COEF_CONST(0.7245688486), COEF_CONST(0.7245688486) }, | ||
463 | { COEF_CONST(1.0000000000), COEF_CONST(0.9849690570), COEF_CONST(0.9617776789), COEF_CONST(0.9020941550), COEF_CONST(0.8436830391), COEF_CONST(0.7846832804), COEF_CONST(0.7846832804), COEF_CONST(0.7846832804) }, | ||
464 | { COEF_CONST(1.0000000000), COEF_CONST(0.9871656089), COEF_CONST(0.9676774734), COEF_CONST(0.9199102884), COEF_CONST(0.8785067015), COEF_CONST(0.8464232214), COEF_CONST(0.8464232214), COEF_CONST(0.8464232214) }, | ||
465 | { COEF_CONST(1.0000000000), COEF_CONST(0.9913533967), COEF_CONST(0.9786000177), COEF_CONST(0.9496063381), COEF_CONST(0.9277157252), COEF_CONST(0.9133354077), COEF_CONST(0.9133354077), COEF_CONST(0.9133354077) }, | ||
466 | { COEF_CONST(1.0000000000), COEF_CONST(0.9948924435), COEF_CONST(0.9875319180), COEF_CONST(0.9716329849), COEF_CONST(0.9604805241), COEF_CONST(0.9535949574), COEF_CONST(0.9535949574), COEF_CONST(0.9535949574) }, | ||
467 | { COEF_CONST(1.0000000000), COEF_CONST(0.9977406278), COEF_CONST(0.9945423840), COEF_CONST(0.9878736667), COEF_CONST(0.9833980494), COEF_CONST(0.9807207440), COEF_CONST(0.9807207440), COEF_CONST(0.9807207440) }, | ||
468 | { COEF_CONST(1.0000000000), COEF_CONST(0.9990607067), COEF_CONST(0.9977417734), COEF_CONST(0.9950323970), COEF_CONST(0.9932453273), COEF_CONST(0.9921884740), COEF_CONST(0.9921884740), COEF_CONST(0.9921884740) }, | ||
469 | { COEF_CONST(1.0000000000), COEF_CONST(0.9998081748), COEF_CONST(0.9995400312), COEF_CONST(0.9989936459), COEF_CONST(0.9986365356), COEF_CONST(0.9984265591), COEF_CONST(0.9984265591), COEF_CONST(0.9984265591) } | ||
470 | }; | ||
471 | |||
472 | static const real_t cos_gammas_fine[][8] = { | ||
473 | { COEF_CONST(1.0000000000), COEF_CONST(0.9841239707), COEF_CONST(0.9594738226), COEF_CONST(0.8946843024), COEF_CONST(0.8269341029), COEF_CONST(0.7245688486), COEF_CONST(0.7245688486), COEF_CONST(0.7245688486) }, | ||
474 | { COEF_CONST(1.0000000000), COEF_CONST(0.9849690570), COEF_CONST(0.9617776789), COEF_CONST(0.9020941550), COEF_CONST(0.8436830391), COEF_CONST(0.7846832804), COEF_CONST(0.7846832804), COEF_CONST(0.7846832804) }, | ||
475 | { COEF_CONST(1.0000000000), COEF_CONST(0.9871656089), COEF_CONST(0.9676774734), COEF_CONST(0.9199102884), COEF_CONST(0.8785067015), COEF_CONST(0.8464232214), COEF_CONST(0.8464232214), COEF_CONST(0.8464232214) }, | ||
476 | { COEF_CONST(1.0000000000), COEF_CONST(0.9899597309), COEF_CONST(0.9750098690), COEF_CONST(0.9402333855), COEF_CONST(0.9129698759), COEF_CONST(0.8943765944), COEF_CONST(0.8943765944), COEF_CONST(0.8943765944) }, | ||
477 | { COEF_CONST(1.0000000000), COEF_CONST(0.9926607607), COEF_CONST(0.9819295710), COEF_CONST(0.9580160104), COEF_CONST(0.9404993670), COEF_CONST(0.9293004472), COEF_CONST(0.9293004472), COEF_CONST(0.9293004472) }, | ||
478 | { COEF_CONST(1.0000000000), COEF_CONST(0.9948924435), COEF_CONST(0.9875319180), COEF_CONST(0.9716329849), COEF_CONST(0.9604805241), COEF_CONST(0.9535949574), COEF_CONST(0.9535949574), COEF_CONST(0.9535949574) }, | ||
479 | { COEF_CONST(1.0000000000), COEF_CONST(0.9972074644), COEF_CONST(0.9932414270), COEF_CONST(0.9849197629), COEF_CONST(0.9792926592), COEF_CONST(0.9759092525), COEF_CONST(0.9759092525), COEF_CONST(0.9759092525) }, | ||
480 | { COEF_CONST(1.0000000000), COEF_CONST(0.9985361982), COEF_CONST(0.9964742028), COEF_CONST(0.9922136306), COEF_CONST(0.9893845420), COEF_CONST(0.9877041371), COEF_CONST(0.9877041371), COEF_CONST(0.9877041371) }, | ||
481 | { COEF_CONST(1.0000000000), COEF_CONST(0.9992494366), COEF_CONST(0.9981967170), COEF_CONST(0.9960386625), COEF_CONST(0.9946185834), COEF_CONST(0.9937800239), COEF_CONST(0.9937800239), COEF_CONST(0.9937800239) }, | ||
482 | { COEF_CONST(1.0000000000), COEF_CONST(0.9996194722), COEF_CONST(0.9990869422), COEF_CONST(0.9979996269), COEF_CONST(0.9972873651), COEF_CONST(0.9968679747), COEF_CONST(0.9968679747), COEF_CONST(0.9968679747) }, | ||
483 | { COEF_CONST(1.0000000000), COEF_CONST(0.9998081748), COEF_CONST(0.9995400312), COEF_CONST(0.9989936459), COEF_CONST(0.9986365356), COEF_CONST(0.9984265591), COEF_CONST(0.9984265591), COEF_CONST(0.9984265591) }, | ||
484 | { COEF_CONST(1.0000000000), COEF_CONST(0.9999390971), COEF_CONST(0.9998540271), COEF_CONST(0.9996809352), COEF_CONST(0.9995679735), COEF_CONST(0.9995016284), COEF_CONST(0.9995016284), COEF_CONST(0.9995016284) }, | ||
485 | { COEF_CONST(1.0000000000), COEF_CONST(0.9999807170), COEF_CONST(0.9999537862), COEF_CONST(0.9998990191), COEF_CONST(0.9998632947), COEF_CONST(0.9998423208), COEF_CONST(0.9998423208), COEF_CONST(0.9998423208) }, | ||
486 | { COEF_CONST(1.0000000000), COEF_CONST(0.9999938979), COEF_CONST(0.9999853814), COEF_CONST(0.9999680568), COEF_CONST(0.9999567596), COEF_CONST(0.9999501270), COEF_CONST(0.9999501270), COEF_CONST(0.9999501270) }, | ||
487 | { COEF_CONST(1.0000000000), COEF_CONST(0.9999980703), COEF_CONST(0.9999953731), COEF_CONST(0.9999898968), COEF_CONST(0.9999863277), COEF_CONST(0.9999842265), COEF_CONST(0.9999842265), COEF_CONST(0.9999842265) }, | ||
488 | { COEF_CONST(1.0000000000), COEF_CONST(0.9999993891), COEF_CONST(0.9999985397), COEF_CONST(0.9999968037), COEF_CONST(0.9999956786), COEF_CONST(0.9999950155), COEF_CONST(0.9999950155), COEF_CONST(0.9999950155) } | ||
489 | }; | ||
490 | |||
491 | static const real_t sin_gammas_normal[][8] = { | ||
492 | { COEF_CONST(0.0000000000), COEF_CONST(0.1774824223), COEF_CONST(0.2817977711), COEF_CONST(0.4466990028), COEF_CONST(0.5622988435), COEF_CONST(0.6892024258), COEF_CONST(0.6892024258), COEF_CONST(0.6892024258) }, | ||
493 | { COEF_CONST(0.0000000000), COEF_CONST(0.1727308798), COEF_CONST(0.2738315110), COEF_CONST(0.4315392630), COEF_CONST(0.5368416242), COEF_CONST(0.6198968861), COEF_CONST(0.6198968861), COEF_CONST(0.6198968861) }, | ||
494 | { COEF_CONST(0.0000000000), COEF_CONST(0.1596999079), COEF_CONST(0.2521910140), COEF_CONST(0.3921288836), COEF_CONST(0.4777300236), COEF_CONST(0.5325107795), COEF_CONST(0.5325107795), COEF_CONST(0.5325107795) }, | ||
495 | { COEF_CONST(0.0000000000), COEF_CONST(0.1312190642), COEF_CONST(0.2057717310), COEF_CONST(0.3134450552), COEF_CONST(0.3732874674), COEF_CONST(0.4072080955), COEF_CONST(0.4072080955), COEF_CONST(0.4072080955) }, | ||
496 | { COEF_CONST(0.0000000000), COEF_CONST(0.1009407043), COEF_CONST(0.1574189028), COEF_CONST(0.2364938532), COEF_CONST(0.2783471983), COEF_CONST(0.3010924396), COEF_CONST(0.3010924396), COEF_CONST(0.3010924396) }, | ||
497 | { COEF_CONST(0.0000000000), COEF_CONST(0.0671836269), COEF_CONST(0.1043333428), COEF_CONST(0.1552598422), COEF_CONST(0.1814615013), COEF_CONST(0.1954144885), COEF_CONST(0.1954144885), COEF_CONST(0.1954144885) }, | ||
498 | { COEF_CONST(0.0000000000), COEF_CONST(0.0433324862), COEF_CONST(0.0671666110), COEF_CONST(0.0995516398), COEF_CONST(0.1160332699), COEF_CONST(0.1247478739), COEF_CONST(0.1247478739), COEF_CONST(0.1247478739) }, | ||
499 | { COEF_CONST(0.0000000000), COEF_CONST(0.0195860576), COEF_CONST(0.0303269852), COEF_CONST(0.0448519274), COEF_CONST(0.0522022017), COEF_CONST(0.0560750040), COEF_CONST(0.0560750040), COEF_CONST(0.0560750040) } | ||
500 | }; | ||
501 | |||
502 | static const real_t sin_gammas_fine[][8] = { | ||
503 | { COEF_CONST(0.0000000000), COEF_CONST(0.1774824223), COEF_CONST(0.2817977711), COEF_CONST(0.4466990028), COEF_CONST(0.5622988435), COEF_CONST(0.6892024258), COEF_CONST(0.6892024258), COEF_CONST(0.6892024258) }, | ||
504 | { COEF_CONST(0.0000000000), COEF_CONST(0.1727308798), COEF_CONST(0.2738315110), COEF_CONST(0.4315392630), COEF_CONST(0.5368416242), COEF_CONST(0.6198968861), COEF_CONST(0.6198968861), COEF_CONST(0.6198968861) }, | ||
505 | { COEF_CONST(0.0000000000), COEF_CONST(0.1596999079), COEF_CONST(0.2521910140), COEF_CONST(0.3921288836), COEF_CONST(0.4777300236), COEF_CONST(0.5325107795), COEF_CONST(0.5325107795), COEF_CONST(0.5325107795) }, | ||
506 | { COEF_CONST(0.0000000000), COEF_CONST(0.1413496768), COEF_CONST(0.2221615526), COEF_CONST(0.3405307340), COEF_CONST(0.4080269669), COEF_CONST(0.4473147744), COEF_CONST(0.4473147744), COEF_CONST(0.4473147744) }, | ||
507 | { COEF_CONST(0.0000000000), COEF_CONST(0.1209322714), COEF_CONST(0.1892467110), COEF_CONST(0.2867147079), COEF_CONST(0.3397954394), COEF_CONST(0.3693246252), COEF_CONST(0.3693246252), COEF_CONST(0.3693246252) }, | ||
508 | { COEF_CONST(0.0000000000), COEF_CONST(0.1009407043), COEF_CONST(0.1574189028), COEF_CONST(0.2364938532), COEF_CONST(0.2783471983), COEF_CONST(0.3010924396), COEF_CONST(0.3010924396), COEF_CONST(0.3010924396) }, | ||
509 | { COEF_CONST(0.0000000000), COEF_CONST(0.0746811420), COEF_CONST(0.1160666523), COEF_CONST(0.1730117353), COEF_CONST(0.2024497161), COEF_CONST(0.2181768341), COEF_CONST(0.2181768341), COEF_CONST(0.2181768341) }, | ||
510 | { COEF_CONST(0.0000000000), COEF_CONST(0.0540875291), COEF_CONST(0.0838997203), COEF_CONST(0.1245476266), COEF_CONST(0.1453211203), COEF_CONST(0.1563346972), COEF_CONST(0.1563346972), COEF_CONST(0.1563346972) }, | ||
511 | { COEF_CONST(0.0000000000), COEF_CONST(0.0387371058), COEF_CONST(0.0600276114), COEF_CONST(0.0889212171), COEF_CONST(0.1036044086), COEF_CONST(0.1113609634), COEF_CONST(0.1113609634), COEF_CONST(0.1113609634) }, | ||
512 | { COEF_CONST(0.0000000000), COEF_CONST(0.0275846110), COEF_CONST(0.0427233177), COEF_CONST(0.0632198125), COEF_CONST(0.0736064637), COEF_CONST(0.0790837596), COEF_CONST(0.0790837596), COEF_CONST(0.0790837596) }, | ||
513 | { COEF_CONST(0.0000000000), COEF_CONST(0.0195860576), COEF_CONST(0.0303269852), COEF_CONST(0.0448519274), COEF_CONST(0.0522022017), COEF_CONST(0.0560750040), COEF_CONST(0.0560750040), COEF_CONST(0.0560750040) }, | ||
514 | { COEF_CONST(0.0000000000), COEF_CONST(0.0110363955), COEF_CONST(0.0170857974), COEF_CONST(0.0252592108), COEF_CONST(0.0293916021), COEF_CONST(0.0315673054), COEF_CONST(0.0315673054), COEF_CONST(0.0315673054) }, | ||
515 | { COEF_CONST(0.0000000000), COEF_CONST(0.0062101284), COEF_CONST(0.0096138203), COEF_CONST(0.0142109649), COEF_CONST(0.0165345659), COEF_CONST(0.0177576316), COEF_CONST(0.0177576316), COEF_CONST(0.0177576316) }, | ||
516 | { COEF_CONST(0.0000000000), COEF_CONST(0.0034934509), COEF_CONST(0.0054071189), COEF_CONST(0.0079928316), COEF_CONST(0.0092994041), COEF_CONST(0.0099871631), COEF_CONST(0.0099871631), COEF_CONST(0.0099871631) }, | ||
517 | { COEF_CONST(0.0000000000), COEF_CONST(0.0019645397), COEF_CONST(0.0030419905), COEF_CONST(0.0044951511), COEF_CONST(0.0052291853), COEF_CONST(0.0056166498), COEF_CONST(0.0056166498), COEF_CONST(0.0056166498) }, | ||
518 | { COEF_CONST(0.0000000000), COEF_CONST(0.0011053943), COEF_CONST(0.0017089869), COEF_CONST(0.0025283670), COEF_CONST(0.0029398552), COEF_CONST(0.0031573685), COEF_CONST(0.0031573685), COEF_CONST(0.0031573685) } | ||
519 | }; | ||
520 | |||
521 | static const real_t sf_iid_normal[] = { | ||
522 | COEF_CONST(1.4119827747), COEF_CONST(1.4031381607), COEF_CONST(1.3868767023), | ||
523 | COEF_CONST(1.3483997583), COEF_CONST(1.2912493944), COEF_CONST(1.1960374117), | ||
524 | COEF_CONST(1.1073724031), COEF_CONST(1.0000000000), COEF_CONST(0.8796171546), | ||
525 | COEF_CONST(0.7546485662), COEF_CONST(0.5767799020), COEF_CONST(0.4264014363), | ||
526 | COEF_CONST(0.2767182887), COEF_CONST(0.1766446233), COEF_CONST(0.0794016272) | ||
527 | }; | ||
528 | |||
529 | static const real_t sf_iid_fine[] = { | ||
530 | COEF_CONST(1.4142065048), COEF_CONST(1.4141912460), COEF_CONST(1.4141428471), | ||
531 | COEF_CONST(1.4139900208), COEF_CONST(1.4135069847), COEF_CONST(1.4119827747), | ||
532 | COEF_CONST(1.4097729921), COEF_CONST(1.4053947926), COEF_CONST(1.3967796564), | ||
533 | COEF_CONST(1.3800530434), COEF_CONST(1.3483997583), COEF_CONST(1.3139201403), | ||
534 | COEF_CONST(1.2643101215), COEF_CONST(1.1960374117), COEF_CONST(1.1073724031), | ||
535 | COEF_CONST(1.0000000000), COEF_CONST(0.8796171546), COEF_CONST(0.7546485662), | ||
536 | COEF_CONST(0.6336560845), COEF_CONST(0.5230810642), COEF_CONST(0.4264014363), | ||
537 | COEF_CONST(0.3089554012), COEF_CONST(0.2213746458), COEF_CONST(0.1576878875), | ||
538 | COEF_CONST(0.1119822487), COEF_CONST(0.0794016272), COEF_CONST(0.0446990170), | ||
539 | COEF_CONST(0.0251446925), COEF_CONST(0.0141414283), COEF_CONST(0.0079525812), | ||
540 | COEF_CONST(0.0044721137) | ||
541 | }; | ||
542 | |||
543 | #ifdef __cplusplus | ||
544 | |||
545 | #endif | ||
546 | #endif | ||
547 | |||
diff --git a/lib/rbcodec/codecs/libfaad/pulse.c b/lib/rbcodec/codecs/libfaad/pulse.c new file mode 100644 index 0000000000..d75877db70 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/pulse.c | |||
@@ -0,0 +1,56 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #include "common.h" | ||
29 | #include "structs.h" | ||
30 | |||
31 | #include "syntax.h" | ||
32 | #include "pulse.h" | ||
33 | |||
34 | uint8_t pulse_decode(ic_stream *ics, int16_t *spec_data, uint16_t framelen) | ||
35 | { | ||
36 | uint8_t i; | ||
37 | uint16_t k; | ||
38 | pulse_info *pul = &(ics->pul); | ||
39 | |||
40 | k = ics->swb_offset[pul->pulse_start_sfb]; | ||
41 | |||
42 | for (i = 0; i <= pul->number_pulse; i++) | ||
43 | { | ||
44 | k += pul->pulse_offset[i]; | ||
45 | |||
46 | if (k >= framelen) | ||
47 | return 15; /* should not be possible */ | ||
48 | |||
49 | if (spec_data[k] > 0) | ||
50 | spec_data[k] += pul->pulse_amp[i]; | ||
51 | else | ||
52 | spec_data[k] -= pul->pulse_amp[i]; | ||
53 | } | ||
54 | |||
55 | return 0; | ||
56 | } | ||
diff --git a/lib/rbcodec/codecs/libfaad/pulse.h b/lib/rbcodec/codecs/libfaad/pulse.h new file mode 100644 index 0000000000..84d7fd38d8 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/pulse.h | |||
@@ -0,0 +1,40 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __PULSE_H__ | ||
29 | #define __PULSE_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | uint8_t pulse_decode(ic_stream *ics, int16_t *spec_coef, uint16_t framelen); | ||
36 | |||
37 | #ifdef __cplusplus | ||
38 | } | ||
39 | #endif | ||
40 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/rvlc.c b/lib/rbcodec/codecs/libfaad/rvlc.c new file mode 100644 index 0000000000..5b17edd06c --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/rvlc.c | |||
@@ -0,0 +1,530 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | /* RVLC scalefactor decoding | ||
29 | * | ||
30 | * RVLC works like this: | ||
31 | * 1. Only symmetric huffman codewords are used | ||
32 | * 2. Total length of the scalefactor data is stored in the bitsream | ||
33 | * 3. Scalefactors are DPCM coded | ||
34 | * 4. Next to the starting value for DPCM the ending value is also stored | ||
35 | * | ||
36 | * With all this it is possible to read the scalefactor data from 2 sides. | ||
37 | * If there is a bit error in the scalefactor data it is possible to start | ||
38 | * decoding from the other end of the data, to find all but 1 scalefactor. | ||
39 | */ | ||
40 | |||
41 | #include "common.h" | ||
42 | #include "structs.h" | ||
43 | |||
44 | #include <stdlib.h> | ||
45 | |||
46 | #include "syntax.h" | ||
47 | #include "bits.h" | ||
48 | #include "rvlc.h" | ||
49 | |||
50 | |||
51 | #ifdef ERROR_RESILIENCE | ||
52 | |||
53 | //#define PRINT_RVLC | ||
54 | |||
55 | /* static function declarations */ | ||
56 | static uint8_t rvlc_decode_sf_forward(ic_stream *ics, | ||
57 | bitfile *ld_sf, | ||
58 | bitfile *ld_esc, | ||
59 | uint8_t *is_used); | ||
60 | #if 0 | ||
61 | static uint8_t rvlc_decode_sf_reverse(ic_stream *ics, | ||
62 | bitfile *ld_sf, | ||
63 | bitfile *ld_esc, | ||
64 | uint8_t is_used); | ||
65 | #endif | ||
66 | static int8_t rvlc_huffman_sf(bitfile *ld_sf, bitfile *ld_esc, | ||
67 | int8_t direction); | ||
68 | static int8_t rvlc_huffman_esc(bitfile *ld_esc, int8_t direction); | ||
69 | |||
70 | |||
71 | uint8_t rvlc_scale_factor_data(ic_stream *ics, bitfile *ld) | ||
72 | { | ||
73 | uint8_t bits = 9; | ||
74 | |||
75 | ics->sf_concealment = faad_get1bit(ld | ||
76 | DEBUGVAR(1,149,"rvlc_scale_factor_data(): sf_concealment")); | ||
77 | ics->rev_global_gain = (uint8_t)faad_getbits(ld, 8 | ||
78 | DEBUGVAR(1,150,"rvlc_scale_factor_data(): rev_global_gain")); | ||
79 | |||
80 | if (ics->window_sequence == EIGHT_SHORT_SEQUENCE) | ||
81 | bits = 11; | ||
82 | |||
83 | /* the number of bits used for the huffman codewords */ | ||
84 | ics->length_of_rvlc_sf = (uint16_t)faad_getbits(ld, bits | ||
85 | DEBUGVAR(1,151,"rvlc_scale_factor_data(): length_of_rvlc_sf")); | ||
86 | |||
87 | if (ics->noise_used) | ||
88 | { | ||
89 | ics->dpcm_noise_nrg = (uint16_t)faad_getbits(ld, 9 | ||
90 | DEBUGVAR(1,152,"rvlc_scale_factor_data(): dpcm_noise_nrg")); | ||
91 | |||
92 | ics->length_of_rvlc_sf -= 9; | ||
93 | } | ||
94 | |||
95 | ics->sf_escapes_present = faad_get1bit(ld | ||
96 | DEBUGVAR(1,153,"rvlc_scale_factor_data(): sf_escapes_present")); | ||
97 | |||
98 | if (ics->sf_escapes_present) | ||
99 | { | ||
100 | ics->length_of_rvlc_escapes = (uint8_t)faad_getbits(ld, 8 | ||
101 | DEBUGVAR(1,154,"rvlc_scale_factor_data(): length_of_rvlc_escapes")); | ||
102 | } | ||
103 | |||
104 | if (ics->noise_used) | ||
105 | { | ||
106 | ics->dpcm_noise_last_position = (uint16_t)faad_getbits(ld, 9 | ||
107 | DEBUGVAR(1,155,"rvlc_scale_factor_data(): dpcm_noise_last_position")); | ||
108 | } | ||
109 | |||
110 | return 0; | ||
111 | } | ||
112 | |||
113 | uint8_t rvlc_decode_scale_factors(ic_stream *ics, bitfile *ld) | ||
114 | { | ||
115 | uint8_t result; | ||
116 | uint8_t intensity_used = 0; | ||
117 | uint8_t *rvlc_sf_buffer = NULL; | ||
118 | uint8_t *rvlc_esc_buffer = NULL; | ||
119 | bitfile ld_rvlc_sf, ld_rvlc_esc; | ||
120 | // bitfile ld_rvlc_sf_rev, ld_rvlc_esc_rev; | ||
121 | |||
122 | if (ics->length_of_rvlc_sf > 0) | ||
123 | { | ||
124 | /* We read length_of_rvlc_sf bits here to put it in a | ||
125 | seperate bitfile. | ||
126 | */ | ||
127 | rvlc_sf_buffer = faad_getbitbuffer(ld, ics->length_of_rvlc_sf | ||
128 | DEBUGVAR(1,156,"rvlc_decode_scale_factors(): bitbuffer: length_of_rvlc_sf")); | ||
129 | |||
130 | faad_initbits(&ld_rvlc_sf, (void*)rvlc_sf_buffer, bit2byte(ics->length_of_rvlc_sf)); | ||
131 | // faad_initbits_rev(&ld_rvlc_sf_rev, (void*)rvlc_sf_buffer, | ||
132 | // ics->length_of_rvlc_sf); | ||
133 | } | ||
134 | |||
135 | if (ics->sf_escapes_present) | ||
136 | { | ||
137 | /* We read length_of_rvlc_escapes bits here to put it in a | ||
138 | seperate bitfile. | ||
139 | */ | ||
140 | rvlc_esc_buffer = faad_getbitbuffer(ld, ics->length_of_rvlc_escapes | ||
141 | DEBUGVAR(1,157,"rvlc_decode_scale_factors(): bitbuffer: length_of_rvlc_escapes")); | ||
142 | |||
143 | faad_initbits(&ld_rvlc_esc, (void*)rvlc_esc_buffer, bit2byte(ics->length_of_rvlc_escapes)); | ||
144 | // faad_initbits_rev(&ld_rvlc_esc_rev, (void*)rvlc_esc_buffer, | ||
145 | // ics->length_of_rvlc_escapes); | ||
146 | } | ||
147 | |||
148 | /* decode the rvlc scale factors and escapes */ | ||
149 | result = rvlc_decode_sf_forward(ics, &ld_rvlc_sf, | ||
150 | &ld_rvlc_esc, &intensity_used); | ||
151 | // result = rvlc_decode_sf_reverse(ics, &ld_rvlc_sf_rev, | ||
152 | // &ld_rvlc_esc_rev, intensity_used); | ||
153 | |||
154 | |||
155 | if (rvlc_esc_buffer) faad_free(rvlc_esc_buffer); | ||
156 | if (rvlc_sf_buffer) faad_free(rvlc_sf_buffer); | ||
157 | |||
158 | if (ics->length_of_rvlc_sf > 0) | ||
159 | faad_endbits(&ld_rvlc_sf); | ||
160 | if (ics->sf_escapes_present) | ||
161 | faad_endbits(&ld_rvlc_esc); | ||
162 | |||
163 | return result; | ||
164 | } | ||
165 | |||
166 | static uint8_t rvlc_decode_sf_forward(ic_stream *ics, bitfile *ld_sf, bitfile *ld_esc, | ||
167 | uint8_t *intensity_used) | ||
168 | { | ||
169 | int8_t g, sfb; | ||
170 | int8_t t = 0; | ||
171 | int8_t error = 0; | ||
172 | int8_t noise_pcm_flag = 1; | ||
173 | |||
174 | int16_t scale_factor = ics->global_gain; | ||
175 | int16_t is_position = 0; | ||
176 | int16_t noise_energy = ics->global_gain - 90 - 256; | ||
177 | |||
178 | #ifdef PRINT_RVLC | ||
179 | printf("\nglobal_gain: %d\n", ics->global_gain); | ||
180 | #endif | ||
181 | |||
182 | for (g = 0; g < ics->num_window_groups; g++) | ||
183 | { | ||
184 | for (sfb = 0; sfb < ics->max_sfb; sfb++) | ||
185 | { | ||
186 | if (error) | ||
187 | { | ||
188 | ics->scale_factors[g][sfb] = 0; | ||
189 | } else { | ||
190 | switch (ics->sfb_cb[g][sfb]) | ||
191 | { | ||
192 | case ZERO_HCB: /* zero book */ | ||
193 | ics->scale_factors[g][sfb] = 0; | ||
194 | break; | ||
195 | case INTENSITY_HCB: /* intensity books */ | ||
196 | case INTENSITY_HCB2: | ||
197 | |||
198 | *intensity_used = 1; | ||
199 | |||
200 | /* decode intensity position */ | ||
201 | t = rvlc_huffman_sf(ld_sf, ld_esc, +1); | ||
202 | |||
203 | is_position += t; | ||
204 | ics->scale_factors[g][sfb] = is_position; | ||
205 | |||
206 | break; | ||
207 | case NOISE_HCB: /* noise books */ | ||
208 | |||
209 | /* decode noise energy */ | ||
210 | if (noise_pcm_flag) | ||
211 | { | ||
212 | int16_t n = ics->dpcm_noise_nrg; | ||
213 | noise_pcm_flag = 0; | ||
214 | noise_energy += n; | ||
215 | } else { | ||
216 | t = rvlc_huffman_sf(ld_sf, ld_esc, +1); | ||
217 | noise_energy += t; | ||
218 | } | ||
219 | |||
220 | ics->scale_factors[g][sfb] = noise_energy; | ||
221 | |||
222 | break; | ||
223 | default: /* spectral books */ | ||
224 | |||
225 | /* decode scale factor */ | ||
226 | t = rvlc_huffman_sf(ld_sf, ld_esc, +1); | ||
227 | |||
228 | scale_factor += t; | ||
229 | if (scale_factor < 0) | ||
230 | return 4; | ||
231 | |||
232 | ics->scale_factors[g][sfb] = scale_factor; | ||
233 | |||
234 | break; | ||
235 | } | ||
236 | #ifdef PRINT_RVLC | ||
237 | printf("%3d:%4d%4d\n", sfb, ics->sfb_cb[g][sfb], | ||
238 | ics->scale_factors[g][sfb]); | ||
239 | #endif | ||
240 | if (t == 99) | ||
241 | { | ||
242 | error = 1; | ||
243 | } | ||
244 | } | ||
245 | } | ||
246 | } | ||
247 | #ifdef PRINT_RVLC | ||
248 | printf("\n\n"); | ||
249 | #endif | ||
250 | |||
251 | return 0; | ||
252 | } | ||
253 | |||
254 | #if 0 // not used right now, doesn't work correctly yet | ||
255 | static uint8_t rvlc_decode_sf_reverse(ic_stream *ics, bitfile *ld_sf, bitfile *ld_esc, | ||
256 | uint8_t intensity_used) | ||
257 | { | ||
258 | int8_t g, sfb; | ||
259 | int8_t t = 0; | ||
260 | int8_t error = 0; | ||
261 | int8_t noise_pcm_flag = 1, is_pcm_flag = 1, sf_pcm_flag = 1; | ||
262 | |||
263 | int16_t scale_factor = ics->rev_global_gain; | ||
264 | int16_t is_position = 0; | ||
265 | int16_t noise_energy = ics->rev_global_gain; | ||
266 | |||
267 | #ifdef PRINT_RVLC | ||
268 | printf("\nrev_global_gain: %d\n", ics->rev_global_gain); | ||
269 | #endif | ||
270 | |||
271 | if (intensity_used) | ||
272 | { | ||
273 | is_position = rvlc_huffman_sf(ld_sf, ld_esc, -1); | ||
274 | #ifdef PRINT_RVLC | ||
275 | printf("is_position: %d\n", is_position); | ||
276 | #endif | ||
277 | } | ||
278 | |||
279 | for (g = ics->num_window_groups-1; g >= 0; g--) | ||
280 | { | ||
281 | for (sfb = ics->max_sfb-1; sfb >= 0; sfb--) | ||
282 | { | ||
283 | if (error) | ||
284 | { | ||
285 | ics->scale_factors[g][sfb] = 0; | ||
286 | } else { | ||
287 | switch (ics->sfb_cb[g][sfb]) | ||
288 | { | ||
289 | case ZERO_HCB: /* zero book */ | ||
290 | ics->scale_factors[g][sfb] = 0; | ||
291 | break; | ||
292 | case INTENSITY_HCB: /* intensity books */ | ||
293 | case INTENSITY_HCB2: | ||
294 | |||
295 | if (is_pcm_flag) | ||
296 | { | ||
297 | is_pcm_flag = 0; | ||
298 | ics->scale_factors[g][sfb] = is_position; | ||
299 | } else { | ||
300 | t = rvlc_huffman_sf(ld_sf, ld_esc, -1); | ||
301 | is_position -= t; | ||
302 | |||
303 | ics->scale_factors[g][sfb] = (uint8_t)is_position; | ||
304 | } | ||
305 | break; | ||
306 | case NOISE_HCB: /* noise books */ | ||
307 | |||
308 | /* decode noise energy */ | ||
309 | if (noise_pcm_flag) | ||
310 | { | ||
311 | noise_pcm_flag = 0; | ||
312 | noise_energy = ics->dpcm_noise_last_position; | ||
313 | } else { | ||
314 | t = rvlc_huffman_sf(ld_sf, ld_esc, -1); | ||
315 | noise_energy -= t; | ||
316 | } | ||
317 | |||
318 | ics->scale_factors[g][sfb] = (uint8_t)noise_energy; | ||
319 | break; | ||
320 | default: /* spectral books */ | ||
321 | |||
322 | if (sf_pcm_flag || (sfb == 0)) | ||
323 | { | ||
324 | sf_pcm_flag = 0; | ||
325 | if (sfb == 0) | ||
326 | scale_factor = ics->global_gain; | ||
327 | } else { | ||
328 | /* decode scale factor */ | ||
329 | t = rvlc_huffman_sf(ld_sf, ld_esc, -1); | ||
330 | scale_factor -= t; | ||
331 | } | ||
332 | |||
333 | if (scale_factor < 0) | ||
334 | return 4; | ||
335 | |||
336 | ics->scale_factors[g][sfb] = (uint8_t)scale_factor; | ||
337 | break; | ||
338 | } | ||
339 | #ifdef PRINT_RVLC | ||
340 | printf("%3d:%4d%4d\n", sfb, ics->sfb_cb[g][sfb], | ||
341 | ics->scale_factors[g][sfb]); | ||
342 | #endif | ||
343 | if (t == 99) | ||
344 | { | ||
345 | error = 1; | ||
346 | } | ||
347 | } | ||
348 | } | ||
349 | } | ||
350 | |||
351 | #ifdef PRINT_RVLC | ||
352 | printf("\n\n"); | ||
353 | #endif | ||
354 | |||
355 | return 0; | ||
356 | } | ||
357 | #endif | ||
358 | |||
359 | /* index == 99 means not allowed codeword */ | ||
360 | static rvlc_huff_table book_rvlc[] = { | ||
361 | /*index length codeword */ | ||
362 | { 0, 1, 0 }, /* 0 */ | ||
363 | { -1, 3, 5 }, /* 101 */ | ||
364 | { 1, 3, 7 }, /* 111 */ | ||
365 | { -2, 4, 9 }, /* 1001 */ | ||
366 | { -3, 5, 17 }, /* 10001 */ | ||
367 | { 2, 5, 27 }, /* 11011 */ | ||
368 | { -4, 6, 33 }, /* 100001 */ | ||
369 | { 99, 6, 50 }, /* 110010 */ | ||
370 | { 3, 6, 51 }, /* 110011 */ | ||
371 | { 99, 6, 52 }, /* 110100 */ | ||
372 | { -7, 7, 65 }, /* 1000001 */ | ||
373 | { 99, 7, 96 }, /* 1100000 */ | ||
374 | { 99, 7, 98 }, /* 1100010 */ | ||
375 | { 7, 7, 99 }, /* 1100011 */ | ||
376 | { 4, 7, 107 }, /* 1101011 */ | ||
377 | { -5, 8, 129 }, /* 10000001 */ | ||
378 | { 99, 8, 194 }, /* 11000010 */ | ||
379 | { 5, 8, 195 }, /* 11000011 */ | ||
380 | { 99, 8, 212 }, /* 11010100 */ | ||
381 | { 99, 9, 256 }, /* 100000000 */ | ||
382 | { -6, 9, 257 }, /* 100000001 */ | ||
383 | { 99, 9, 426 }, /* 110101010 */ | ||
384 | { 6, 9, 427 }, /* 110101011 */ | ||
385 | { 99, 10, 0 } /* Shouldn't come this far */ | ||
386 | }; | ||
387 | |||
388 | static rvlc_huff_table book_escape[] = { | ||
389 | /*index length codeword */ | ||
390 | { 1, 2, 0 }, | ||
391 | { 0, 2, 2 }, | ||
392 | { 3, 3, 2 }, | ||
393 | { 2, 3, 6 }, | ||
394 | { 4, 4, 14 }, | ||
395 | { 7, 5, 13 }, | ||
396 | { 6, 5, 15 }, | ||
397 | { 5, 5, 31 }, | ||
398 | { 11, 6, 24 }, | ||
399 | { 10, 6, 25 }, | ||
400 | { 9, 6, 29 }, | ||
401 | { 8, 6, 61 }, | ||
402 | { 13, 7, 56 }, | ||
403 | { 12, 7, 120 }, | ||
404 | { 15, 8, 114 }, | ||
405 | { 14, 8, 242 }, | ||
406 | { 17, 9, 230 }, | ||
407 | { 16, 9, 486 }, | ||
408 | { 19, 10, 463 }, | ||
409 | { 18, 10, 974 }, | ||
410 | { 22, 11, 925 }, | ||
411 | { 20, 11, 1950 }, | ||
412 | { 21, 11, 1951 }, | ||
413 | { 23, 12, 1848 }, | ||
414 | { 25, 13, 3698 }, | ||
415 | { 24, 14, 7399 }, | ||
416 | { 26, 15, 14797 }, | ||
417 | { 49, 19, 236736 }, | ||
418 | { 50, 19, 236737 }, | ||
419 | { 51, 19, 236738 }, | ||
420 | { 52, 19, 236739 }, | ||
421 | { 53, 19, 236740 }, | ||
422 | { 27, 20, 473482 }, | ||
423 | { 28, 20, 473483 }, | ||
424 | { 29, 20, 473484 }, | ||
425 | { 30, 20, 473485 }, | ||
426 | { 31, 20, 473486 }, | ||
427 | { 32, 20, 473487 }, | ||
428 | { 33, 20, 473488 }, | ||
429 | { 34, 20, 473489 }, | ||
430 | { 35, 20, 473490 }, | ||
431 | { 36, 20, 473491 }, | ||
432 | { 37, 20, 473492 }, | ||
433 | { 38, 20, 473493 }, | ||
434 | { 39, 20, 473494 }, | ||
435 | { 40, 20, 473495 }, | ||
436 | { 41, 20, 473496 }, | ||
437 | { 42, 20, 473497 }, | ||
438 | { 43, 20, 473498 }, | ||
439 | { 44, 20, 473499 }, | ||
440 | { 45, 20, 473500 }, | ||
441 | { 46, 20, 473501 }, | ||
442 | { 47, 20, 473502 }, | ||
443 | { 48, 20, 473503 }, | ||
444 | { 99, 21, 0 } /* Shouldn't come this far */ | ||
445 | }; | ||
446 | |||
447 | static int8_t rvlc_huffman_sf(bitfile *ld_sf, bitfile *ld_esc, | ||
448 | int8_t direction) | ||
449 | { | ||
450 | uint8_t i, j; | ||
451 | int8_t index; | ||
452 | uint32_t cw; | ||
453 | rvlc_huff_table *h = book_rvlc; | ||
454 | |||
455 | i = h->len; | ||
456 | if (direction > 0) | ||
457 | cw = faad_getbits(ld_sf, i DEBUGVAR(1,0,"")); | ||
458 | else | ||
459 | cw = faad_getbits_rev(ld_sf, i DEBUGVAR(1,0,"")); | ||
460 | |||
461 | while ((cw != h->cw) | ||
462 | && (i < 10)) | ||
463 | { | ||
464 | h++; | ||
465 | j = h->len-i; | ||
466 | i += j; | ||
467 | cw <<= j; | ||
468 | if (direction > 0) | ||
469 | cw |= faad_getbits(ld_sf, j DEBUGVAR(1,0,"")); | ||
470 | else | ||
471 | cw |= faad_getbits_rev(ld_sf, j DEBUGVAR(1,0,"")); | ||
472 | } | ||
473 | |||
474 | index = h->index; | ||
475 | |||
476 | if (index == +ESC_VAL) | ||
477 | { | ||
478 | int8_t esc = rvlc_huffman_esc(ld_esc, direction); | ||
479 | if (esc == 99) | ||
480 | return 99; | ||
481 | index += esc; | ||
482 | #ifdef PRINT_RVLC | ||
483 | printf("esc: %d - ", esc); | ||
484 | #endif | ||
485 | } | ||
486 | if (index == -ESC_VAL) | ||
487 | { | ||
488 | int8_t esc = rvlc_huffman_esc(ld_esc, direction); | ||
489 | if (esc == 99) | ||
490 | return 99; | ||
491 | index -= esc; | ||
492 | #ifdef PRINT_RVLC | ||
493 | printf("esc: %d - ", esc); | ||
494 | #endif | ||
495 | } | ||
496 | |||
497 | return index; | ||
498 | } | ||
499 | |||
500 | static int8_t rvlc_huffman_esc(bitfile *ld, | ||
501 | int8_t direction) | ||
502 | { | ||
503 | uint8_t i, j; | ||
504 | uint32_t cw; | ||
505 | rvlc_huff_table *h = book_escape; | ||
506 | |||
507 | i = h->len; | ||
508 | if (direction > 0) | ||
509 | cw = faad_getbits(ld, i DEBUGVAR(1,0,"")); | ||
510 | else | ||
511 | cw = faad_getbits_rev(ld, i DEBUGVAR(1,0,"")); | ||
512 | |||
513 | while ((cw != h->cw) | ||
514 | && (i < 21)) | ||
515 | { | ||
516 | h++; | ||
517 | j = h->len-i; | ||
518 | i += j; | ||
519 | cw <<= j; | ||
520 | if (direction > 0) | ||
521 | cw |= faad_getbits(ld, j DEBUGVAR(1,0,"")); | ||
522 | else | ||
523 | cw |= faad_getbits_rev(ld, j DEBUGVAR(1,0,"")); | ||
524 | } | ||
525 | |||
526 | return h->index; | ||
527 | } | ||
528 | |||
529 | #endif | ||
530 | |||
diff --git a/lib/rbcodec/codecs/libfaad/rvlc.h b/lib/rbcodec/codecs/libfaad/rvlc.h new file mode 100644 index 0000000000..b17246a452 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/rvlc.h | |||
@@ -0,0 +1,53 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __RVLC_SCF_H__ | ||
29 | #define __RVLC_SCF_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | typedef struct | ||
36 | { | ||
37 | int8_t index; | ||
38 | uint8_t len; | ||
39 | uint32_t cw; | ||
40 | } rvlc_huff_table; | ||
41 | |||
42 | |||
43 | #define ESC_VAL 7 | ||
44 | |||
45 | |||
46 | uint8_t rvlc_scale_factor_data(ic_stream *ics, bitfile *ld); | ||
47 | uint8_t rvlc_decode_scale_factors(ic_stream *ics, bitfile *ld); | ||
48 | |||
49 | |||
50 | #ifdef __cplusplus | ||
51 | } | ||
52 | #endif | ||
53 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/sbr_dct.c b/lib/rbcodec/codecs/libfaad/sbr_dct.c new file mode 100644 index 0000000000..e9c56c3a18 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/sbr_dct.c | |||
@@ -0,0 +1,1990 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #include "common.h" | ||
29 | #include "../lib/fft.h" | ||
30 | #include "../lib/mdct_lookup.h" | ||
31 | |||
32 | |||
33 | #ifdef SBR_DEC | ||
34 | |||
35 | #ifdef _MSC_VER | ||
36 | #pragma warning(disable:4305) | ||
37 | #pragma warning(disable:4244) | ||
38 | #endif | ||
39 | |||
40 | |||
41 | #include "sbr_dct.h" | ||
42 | |||
43 | void DCT4_32(real_t *y, real_t *x) | ||
44 | { | ||
45 | real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10; | ||
46 | real_t f11, f12, f13, f14, f15, f16, f17, f18, f19, f20; | ||
47 | real_t f21, f22, f23, f24, f25, f26, f27, f28, f29, f30; | ||
48 | real_t f31, f32, f33, f34, f35, f36, f37, f38, f39, f40; | ||
49 | real_t f41, f42, f43, f44, f45, f46, f47, f48, f49, f50; | ||
50 | real_t f51, f52, f53, f54, f55, f56, f57, f58, f59, f60; | ||
51 | real_t f61, f62, f63, f64, f65, f66, f67, f68, f69, f70; | ||
52 | real_t f71, f72, f73, f74, f75, f76, f77, f78, f79, f80; | ||
53 | real_t f81, f82, f83, f84, f85, f86, f87, f88, f89, f90; | ||
54 | real_t f91, f92, f93, f94, f95, f96, f97, f98, f99, f100; | ||
55 | real_t f101, f102, f103, f104, f105, f106, f107, f108, f109, f110; | ||
56 | real_t f111, f112, f113, f114, f115, f116, f117, f118, f119, f120; | ||
57 | real_t f121, f122, f123, f124, f125, f126, f127, f128, f129, f130; | ||
58 | real_t f131, f132, f133, f134, f135, f136, f137, f138, f139, f140; | ||
59 | real_t f141, f142, f143, f144, f145, f146, f147, f148, f149, f150; | ||
60 | real_t f151, f152, f153, f154, f155, f156, f157, f158, f159, f160; | ||
61 | real_t f161, f162, f163, f164, f165, f166, f167, f168, f169, f170; | ||
62 | real_t f171, f172, f173, f174, f175, f176, f177, f178, f179, f180; | ||
63 | real_t f181, f182, f183, f184, f185, f186, f187, f188, f189, f190; | ||
64 | real_t f191, f192, f193, f194, f195, f196, f197, f198, f199, f200; | ||
65 | real_t f201, f202, f203, f204, f205, f206, f207, f208, f209, f210; | ||
66 | real_t f211, f212, f213, f214, f215, f216, f217, f218, f219, f220; | ||
67 | real_t f221, f222, f223, f224, f225, f226, f227, f228, f229, f230; | ||
68 | real_t f231, f232, f233, f234, f235, f236, f237, f238, f239, f240; | ||
69 | real_t f241, f242, f243, f244, f245, f246, f247, f248, f249, f250; | ||
70 | real_t f251, f252, f253, f254, f255, f256, f257, f258, f259, f260; | ||
71 | real_t f261, f262, f263, f264, f265, f266, f267, f268, f269, f270; | ||
72 | real_t f271, f272, f273, f274, f275, f276, f277, f278, f279, f280; | ||
73 | real_t f281, f282, f283, f284, f285, f286, f287, f288, f289, f290; | ||
74 | real_t f291, f292, f293, f294, f295, f296, f297, f298, f299, f300; | ||
75 | real_t f301, f302, f303, f304, f305, f306, f307, f310, f311, f312; | ||
76 | real_t f313, f316, f317, f318, f319, f322, f323, f324, f325, f328; | ||
77 | real_t f329, f330, f331, f334, f335, f336, f337, f340, f341, f342; | ||
78 | real_t f343, f346, f347, f348, f349, f352, f353, f354, f355, f358; | ||
79 | real_t f359, f360, f361, f364, f365, f366, f367, f370, f371, f372; | ||
80 | real_t f373, f376, f377, f378, f379, f382, f383, f384, f385, f388; | ||
81 | real_t f389, f390, f391, f394, f395, f396, f397; | ||
82 | |||
83 | f0 = x[15] - x[16]; | ||
84 | f1 = x[15] + x[16]; | ||
85 | f2 = MUL_F(FRAC_CONST(0.7071067811865476), f1); | ||
86 | f3 = MUL_F(FRAC_CONST(0.7071067811865476), f0); | ||
87 | f4 = x[8] - x[23]; | ||
88 | f5 = x[8] + x[23]; | ||
89 | f6 = MUL_F(FRAC_CONST(0.7071067811865476), f5); | ||
90 | f7 = MUL_F(FRAC_CONST(0.7071067811865476), f4); | ||
91 | f8 = x[12] - x[19]; | ||
92 | f9 = x[12] + x[19]; | ||
93 | f10 = MUL_F(FRAC_CONST(0.7071067811865476), f9); | ||
94 | f11 = MUL_F(FRAC_CONST(0.7071067811865476), f8); | ||
95 | f12 = x[11] - x[20]; | ||
96 | f13 = x[11] + x[20]; | ||
97 | f14 = MUL_F(FRAC_CONST(0.7071067811865476), f13); | ||
98 | f15 = MUL_F(FRAC_CONST(0.7071067811865476), f12); | ||
99 | f16 = x[14] - x[17]; | ||
100 | f17 = x[14] + x[17]; | ||
101 | f18 = MUL_F(FRAC_CONST(0.7071067811865476), f17); | ||
102 | f19 = MUL_F(FRAC_CONST(0.7071067811865476), f16); | ||
103 | f20 = x[9] - x[22]; | ||
104 | f21 = x[9] + x[22]; | ||
105 | f22 = MUL_F(FRAC_CONST(0.7071067811865476), f21); | ||
106 | f23 = MUL_F(FRAC_CONST(0.7071067811865476), f20); | ||
107 | f24 = x[13] - x[18]; | ||
108 | f25 = x[13] + x[18]; | ||
109 | f26 = MUL_F(FRAC_CONST(0.7071067811865476), f25); | ||
110 | f27 = MUL_F(FRAC_CONST(0.7071067811865476), f24); | ||
111 | f28 = x[10] - x[21]; | ||
112 | f29 = x[10] + x[21]; | ||
113 | f30 = MUL_F(FRAC_CONST(0.7071067811865476), f29); | ||
114 | f31 = MUL_F(FRAC_CONST(0.7071067811865476), f28); | ||
115 | f32 = x[0] - f2; | ||
116 | f33 = x[0] + f2; | ||
117 | f34 = x[31] - f3; | ||
118 | f35 = x[31] + f3; | ||
119 | f36 = x[7] - f6; | ||
120 | f37 = x[7] + f6; | ||
121 | f38 = x[24] - f7; | ||
122 | f39 = x[24] + f7; | ||
123 | f40 = x[3] - f10; | ||
124 | f41 = x[3] + f10; | ||
125 | f42 = x[28] - f11; | ||
126 | f43 = x[28] + f11; | ||
127 | f44 = x[4] - f14; | ||
128 | f45 = x[4] + f14; | ||
129 | f46 = x[27] - f15; | ||
130 | f47 = x[27] + f15; | ||
131 | f48 = x[1] - f18; | ||
132 | f49 = x[1] + f18; | ||
133 | f50 = x[30] - f19; | ||
134 | f51 = x[30] + f19; | ||
135 | f52 = x[6] - f22; | ||
136 | f53 = x[6] + f22; | ||
137 | f54 = x[25] - f23; | ||
138 | f55 = x[25] + f23; | ||
139 | f56 = x[2] - f26; | ||
140 | f57 = x[2] + f26; | ||
141 | f58 = x[29] - f27; | ||
142 | f59 = x[29] + f27; | ||
143 | f60 = x[5] - f30; | ||
144 | f61 = x[5] + f30; | ||
145 | f62 = x[26] - f31; | ||
146 | f63 = x[26] + f31; | ||
147 | f64 = f39 + f37; | ||
148 | f65 = MUL_F(FRAC_CONST(-0.5411961001461969), f39); | ||
149 | f66 = MUL_F(FRAC_CONST(0.9238795325112867), f64); | ||
150 | f67 = MUL_C(COEF_CONST(1.3065629648763766), f37); | ||
151 | f68 = f65 + f66; | ||
152 | f69 = f67 - f66; | ||
153 | f70 = f38 + f36; | ||
154 | f71 = MUL_C(COEF_CONST(1.3065629648763770), f38); | ||
155 | f72 = MUL_F(FRAC_CONST(-0.3826834323650904), f70); | ||
156 | f73 = MUL_F(FRAC_CONST(0.5411961001461961), f36); | ||
157 | f74 = f71 + f72; | ||
158 | f75 = f73 - f72; | ||
159 | f76 = f47 + f45; | ||
160 | f77 = MUL_F(FRAC_CONST(-0.5411961001461969), f47); | ||
161 | f78 = MUL_F(FRAC_CONST(0.9238795325112867), f76); | ||
162 | f79 = MUL_C(COEF_CONST(1.3065629648763766), f45); | ||
163 | f80 = f77 + f78; | ||
164 | f81 = f79 - f78; | ||
165 | f82 = f46 + f44; | ||
166 | f83 = MUL_C(COEF_CONST(1.3065629648763770), f46); | ||
167 | f84 = MUL_F(FRAC_CONST(-0.3826834323650904), f82); | ||
168 | f85 = MUL_F(FRAC_CONST(0.5411961001461961), f44); | ||
169 | f86 = f83 + f84; | ||
170 | f87 = f85 - f84; | ||
171 | f88 = f55 + f53; | ||
172 | f89 = MUL_F(FRAC_CONST(-0.5411961001461969), f55); | ||
173 | f90 = MUL_F(FRAC_CONST(0.9238795325112867), f88); | ||
174 | f91 = MUL_C(COEF_CONST(1.3065629648763766), f53); | ||
175 | f92 = f89 + f90; | ||
176 | f93 = f91 - f90; | ||
177 | f94 = f54 + f52; | ||
178 | f95 = MUL_C(COEF_CONST(1.3065629648763770), f54); | ||
179 | f96 = MUL_F(FRAC_CONST(-0.3826834323650904), f94); | ||
180 | f97 = MUL_F(FRAC_CONST(0.5411961001461961), f52); | ||
181 | f98 = f95 + f96; | ||
182 | f99 = f97 - f96; | ||
183 | f100 = f63 + f61; | ||
184 | f101 = MUL_F(FRAC_CONST(-0.5411961001461969), f63); | ||
185 | f102 = MUL_F(FRAC_CONST(0.9238795325112867), f100); | ||
186 | f103 = MUL_C(COEF_CONST(1.3065629648763766), f61); | ||
187 | f104 = f101 + f102; | ||
188 | f105 = f103 - f102; | ||
189 | f106 = f62 + f60; | ||
190 | f107 = MUL_C(COEF_CONST(1.3065629648763770), f62); | ||
191 | f108 = MUL_F(FRAC_CONST(-0.3826834323650904), f106); | ||
192 | f109 = MUL_F(FRAC_CONST(0.5411961001461961), f60); | ||
193 | f110 = f107 + f108; | ||
194 | f111 = f109 - f108; | ||
195 | f112 = f33 - f68; | ||
196 | f113 = f33 + f68; | ||
197 | f114 = f35 - f69; | ||
198 | f115 = f35 + f69; | ||
199 | f116 = f32 - f74; | ||
200 | f117 = f32 + f74; | ||
201 | f118 = f34 - f75; | ||
202 | f119 = f34 + f75; | ||
203 | f120 = f41 - f80; | ||
204 | f121 = f41 + f80; | ||
205 | f122 = f43 - f81; | ||
206 | f123 = f43 + f81; | ||
207 | f124 = f40 - f86; | ||
208 | f125 = f40 + f86; | ||
209 | f126 = f42 - f87; | ||
210 | f127 = f42 + f87; | ||
211 | f128 = f49 - f92; | ||
212 | f129 = f49 + f92; | ||
213 | f130 = f51 - f93; | ||
214 | f131 = f51 + f93; | ||
215 | f132 = f48 - f98; | ||
216 | f133 = f48 + f98; | ||
217 | f134 = f50 - f99; | ||
218 | f135 = f50 + f99; | ||
219 | f136 = f57 - f104; | ||
220 | f137 = f57 + f104; | ||
221 | f138 = f59 - f105; | ||
222 | f139 = f59 + f105; | ||
223 | f140 = f56 - f110; | ||
224 | f141 = f56 + f110; | ||
225 | f142 = f58 - f111; | ||
226 | f143 = f58 + f111; | ||
227 | f144 = f123 + f121; | ||
228 | f145 = MUL_F(FRAC_CONST(-0.7856949583871021), f123); | ||
229 | f146 = MUL_F(FRAC_CONST(0.9807852804032304), f144); | ||
230 | f147 = MUL_C(COEF_CONST(1.1758756024193588), f121); | ||
231 | f148 = f145 + f146; | ||
232 | f149 = f147 - f146; | ||
233 | f150 = f127 + f125; | ||
234 | f151 = MUL_F(FRAC_CONST(0.2758993792829431), f127); | ||
235 | f152 = MUL_F(FRAC_CONST(0.5555702330196022), f150); | ||
236 | f153 = MUL_C(COEF_CONST(1.3870398453221475), f125); | ||
237 | f154 = f151 + f152; | ||
238 | f155 = f153 - f152; | ||
239 | f156 = f122 + f120; | ||
240 | f157 = MUL_C(COEF_CONST(1.1758756024193591), f122); | ||
241 | f158 = MUL_F(FRAC_CONST(-0.1950903220161287), f156); | ||
242 | f159 = MUL_F(FRAC_CONST(0.7856949583871016), f120); | ||
243 | f160 = f157 + f158; | ||
244 | f161 = f159 - f158; | ||
245 | f162 = f126 + f124; | ||
246 | f163 = MUL_C(COEF_CONST(1.3870398453221473), f126); | ||
247 | f164 = MUL_F(FRAC_CONST(-0.8314696123025455), f162); | ||
248 | f165 = MUL_F(FRAC_CONST(-0.2758993792829436), f124); | ||
249 | f166 = f163 + f164; | ||
250 | f167 = f165 - f164; | ||
251 | f168 = f139 + f137; | ||
252 | f169 = MUL_F(FRAC_CONST(-0.7856949583871021), f139); | ||
253 | f170 = MUL_F(FRAC_CONST(0.9807852804032304), f168); | ||
254 | f171 = MUL_C(COEF_CONST(1.1758756024193588), f137); | ||
255 | f172 = f169 + f170; | ||
256 | f173 = f171 - f170; | ||
257 | f174 = f143 + f141; | ||
258 | f175 = MUL_F(FRAC_CONST(0.2758993792829431), f143); | ||
259 | f176 = MUL_F(FRAC_CONST(0.5555702330196022), f174); | ||
260 | f177 = MUL_C(COEF_CONST(1.3870398453221475), f141); | ||
261 | f178 = f175 + f176; | ||
262 | f179 = f177 - f176; | ||
263 | f180 = f138 + f136; | ||
264 | f181 = MUL_C(COEF_CONST(1.1758756024193591), f138); | ||
265 | f182 = MUL_F(FRAC_CONST(-0.1950903220161287), f180); | ||
266 | f183 = MUL_F(FRAC_CONST(0.7856949583871016), f136); | ||
267 | f184 = f181 + f182; | ||
268 | f185 = f183 - f182; | ||
269 | f186 = f142 + f140; | ||
270 | f187 = MUL_C(COEF_CONST(1.3870398453221473), f142); | ||
271 | f188 = MUL_F(FRAC_CONST(-0.8314696123025455), f186); | ||
272 | f189 = MUL_F(FRAC_CONST(-0.2758993792829436), f140); | ||
273 | f190 = f187 + f188; | ||
274 | f191 = f189 - f188; | ||
275 | f192 = f113 - f148; | ||
276 | f193 = f113 + f148; | ||
277 | f194 = f115 - f149; | ||
278 | f195 = f115 + f149; | ||
279 | f196 = f117 - f154; | ||
280 | f197 = f117 + f154; | ||
281 | f198 = f119 - f155; | ||
282 | f199 = f119 + f155; | ||
283 | f200 = f112 - f160; | ||
284 | f201 = f112 + f160; | ||
285 | f202 = f114 - f161; | ||
286 | f203 = f114 + f161; | ||
287 | f204 = f116 - f166; | ||
288 | f205 = f116 + f166; | ||
289 | f206 = f118 - f167; | ||
290 | f207 = f118 + f167; | ||
291 | f208 = f129 - f172; | ||
292 | f209 = f129 + f172; | ||
293 | f210 = f131 - f173; | ||
294 | f211 = f131 + f173; | ||
295 | f212 = f133 - f178; | ||
296 | f213 = f133 + f178; | ||
297 | f214 = f135 - f179; | ||
298 | f215 = f135 + f179; | ||
299 | f216 = f128 - f184; | ||
300 | f217 = f128 + f184; | ||
301 | f218 = f130 - f185; | ||
302 | f219 = f130 + f185; | ||
303 | f220 = f132 - f190; | ||
304 | f221 = f132 + f190; | ||
305 | f222 = f134 - f191; | ||
306 | f223 = f134 + f191; | ||
307 | f224 = f211 + f209; | ||
308 | f225 = MUL_F(FRAC_CONST(-0.8971675863426361), f211); | ||
309 | f226 = MUL_F(FRAC_CONST(0.9951847266721968), f224); | ||
310 | f227 = MUL_C(COEF_CONST(1.0932018670017576), f209); | ||
311 | f228 = f225 + f226; | ||
312 | f229 = f227 - f226; | ||
313 | f230 = f215 + f213; | ||
314 | f231 = MUL_F(FRAC_CONST(-0.4105245275223571), f215); | ||
315 | f232 = MUL_F(FRAC_CONST(0.8819212643483549), f230); | ||
316 | f233 = MUL_C(COEF_CONST(1.3533180011743529), f213); | ||
317 | f234 = f231 + f232; | ||
318 | f235 = f233 - f232; | ||
319 | f236 = f219 + f217; | ||
320 | f237 = MUL_F(FRAC_CONST(0.1386171691990915), f219); | ||
321 | f238 = MUL_F(FRAC_CONST(0.6343932841636455), f236); | ||
322 | f239 = MUL_C(COEF_CONST(1.4074037375263826), f217); | ||
323 | f240 = f237 + f238; | ||
324 | f241 = f239 - f238; | ||
325 | f242 = f223 + f221; | ||
326 | f243 = MUL_F(FRAC_CONST(0.6666556584777466), f223); | ||
327 | f244 = MUL_F(FRAC_CONST(0.2902846772544623), f242); | ||
328 | f245 = MUL_C(COEF_CONST(1.2472250129866711), f221); | ||
329 | f246 = f243 + f244; | ||
330 | f247 = f245 - f244; | ||
331 | f248 = f210 + f208; | ||
332 | f249 = MUL_C(COEF_CONST(1.0932018670017574), f210); | ||
333 | f250 = MUL_F(FRAC_CONST(-0.0980171403295605), f248); | ||
334 | f251 = MUL_F(FRAC_CONST(0.8971675863426364), f208); | ||
335 | f252 = f249 + f250; | ||
336 | f253 = f251 - f250; | ||
337 | f254 = f214 + f212; | ||
338 | f255 = MUL_C(COEF_CONST(1.3533180011743529), f214); | ||
339 | f256 = MUL_F(FRAC_CONST(-0.4713967368259979), f254); | ||
340 | f257 = MUL_F(FRAC_CONST(0.4105245275223569), f212); | ||
341 | f258 = f255 + f256; | ||
342 | f259 = f257 - f256; | ||
343 | f260 = f218 + f216; | ||
344 | f261 = MUL_C(COEF_CONST(1.4074037375263826), f218); | ||
345 | f262 = MUL_F(FRAC_CONST(-0.7730104533627369), f260); | ||
346 | f263 = MUL_F(FRAC_CONST(-0.1386171691990913), f216); | ||
347 | f264 = f261 + f262; | ||
348 | f265 = f263 - f262; | ||
349 | f266 = f222 + f220; | ||
350 | f267 = MUL_C(COEF_CONST(1.2472250129866711), f222); | ||
351 | f268 = MUL_F(FRAC_CONST(-0.9569403357322089), f266); | ||
352 | f269 = MUL_F(FRAC_CONST(-0.6666556584777469), f220); | ||
353 | f270 = f267 + f268; | ||
354 | f271 = f269 - f268; | ||
355 | f272 = f193 - f228; | ||
356 | f273 = f193 + f228; | ||
357 | f274 = f195 - f229; | ||
358 | f275 = f195 + f229; | ||
359 | f276 = f197 - f234; | ||
360 | f277 = f197 + f234; | ||
361 | f278 = f199 - f235; | ||
362 | f279 = f199 + f235; | ||
363 | f280 = f201 - f240; | ||
364 | f281 = f201 + f240; | ||
365 | f282 = f203 - f241; | ||
366 | f283 = f203 + f241; | ||
367 | f284 = f205 - f246; | ||
368 | f285 = f205 + f246; | ||
369 | f286 = f207 - f247; | ||
370 | f287 = f207 + f247; | ||
371 | f288 = f192 - f252; | ||
372 | f289 = f192 + f252; | ||
373 | f290 = f194 - f253; | ||
374 | f291 = f194 + f253; | ||
375 | f292 = f196 - f258; | ||
376 | f293 = f196 + f258; | ||
377 | f294 = f198 - f259; | ||
378 | f295 = f198 + f259; | ||
379 | f296 = f200 - f264; | ||
380 | f297 = f200 + f264; | ||
381 | f298 = f202 - f265; | ||
382 | f299 = f202 + f265; | ||
383 | f300 = f204 - f270; | ||
384 | f301 = f204 + f270; | ||
385 | f302 = f206 - f271; | ||
386 | f303 = f206 + f271; | ||
387 | f304 = f275 + f273; | ||
388 | f305 = MUL_F(FRAC_CONST(-0.9751575901732920), f275); | ||
389 | f306 = MUL_F(FRAC_CONST(0.9996988186962043), f304); | ||
390 | f307 = MUL_C(COEF_CONST(1.0242400472191164), f273); | ||
391 | y[0] = f305 + f306; | ||
392 | y[31] = f307 - f306; | ||
393 | f310 = f279 + f277; | ||
394 | f311 = MUL_F(FRAC_CONST(-0.8700688593994936), f279); | ||
395 | f312 = MUL_F(FRAC_CONST(0.9924795345987100), f310); | ||
396 | f313 = MUL_C(COEF_CONST(1.1148902097979263), f277); | ||
397 | y[2] = f311 + f312; | ||
398 | y[29] = f313 - f312; | ||
399 | f316 = f283 + f281; | ||
400 | f317 = MUL_F(FRAC_CONST(-0.7566008898816587), f283); | ||
401 | f318 = MUL_F(FRAC_CONST(0.9757021300385286), f316); | ||
402 | f319 = MUL_C(COEF_CONST(1.1948033701953984), f281); | ||
403 | y[4] = f317 + f318; | ||
404 | y[27] = f319 - f318; | ||
405 | f322 = f287 + f285; | ||
406 | f323 = MUL_F(FRAC_CONST(-0.6358464401941451), f287); | ||
407 | f324 = MUL_F(FRAC_CONST(0.9495281805930367), f322); | ||
408 | f325 = MUL_C(COEF_CONST(1.2632099209919283), f285); | ||
409 | y[6] = f323 + f324; | ||
410 | y[25] = f325 - f324; | ||
411 | f328 = f291 + f289; | ||
412 | f329 = MUL_F(FRAC_CONST(-0.5089684416985408), f291); | ||
413 | f330 = MUL_F(FRAC_CONST(0.9142097557035307), f328); | ||
414 | f331 = MUL_C(COEF_CONST(1.3194510697085207), f289); | ||
415 | y[8] = f329 + f330; | ||
416 | y[23] = f331 - f330; | ||
417 | f334 = f295 + f293; | ||
418 | f335 = MUL_F(FRAC_CONST(-0.3771887988789273), f295); | ||
419 | f336 = MUL_F(FRAC_CONST(0.8700869911087114), f334); | ||
420 | f337 = MUL_C(COEF_CONST(1.3629851833384954), f293); | ||
421 | y[10] = f335 + f336; | ||
422 | y[21] = f337 - f336; | ||
423 | f340 = f299 + f297; | ||
424 | f341 = MUL_F(FRAC_CONST(-0.2417766217337384), f299); | ||
425 | f342 = MUL_F(FRAC_CONST(0.8175848131515837), f340); | ||
426 | f343 = MUL_C(COEF_CONST(1.3933930045694289), f297); | ||
427 | y[12] = f341 + f342; | ||
428 | y[19] = f343 - f342; | ||
429 | f346 = f303 + f301; | ||
430 | f347 = MUL_F(FRAC_CONST(-0.1040360035527077), f303); | ||
431 | f348 = MUL_F(FRAC_CONST(0.7572088465064845), f346); | ||
432 | f349 = MUL_C(COEF_CONST(1.4103816894602612), f301); | ||
433 | y[14] = f347 + f348; | ||
434 | y[17] = f349 - f348; | ||
435 | f352 = f274 + f272; | ||
436 | f353 = MUL_F(FRAC_CONST(0.0347065382144002), f274); | ||
437 | f354 = MUL_F(FRAC_CONST(0.6895405447370668), f352); | ||
438 | f355 = MUL_C(COEF_CONST(1.4137876276885337), f272); | ||
439 | y[16] = f353 + f354; | ||
440 | y[15] = f355 - f354; | ||
441 | f358 = f278 + f276; | ||
442 | f359 = MUL_F(FRAC_CONST(0.1731148370459795), f278); | ||
443 | f360 = MUL_F(FRAC_CONST(0.6152315905806268), f358); | ||
444 | f361 = MUL_C(COEF_CONST(1.4035780182072330), f276); | ||
445 | y[18] = f359 + f360; | ||
446 | y[13] = f361 - f360; | ||
447 | f364 = f282 + f280; | ||
448 | f365 = MUL_F(FRAC_CONST(0.3098559453626100), f282); | ||
449 | f366 = MUL_F(FRAC_CONST(0.5349976198870972), f364); | ||
450 | f367 = MUL_C(COEF_CONST(1.3798511851368043), f280); | ||
451 | y[20] = f365 + f366; | ||
452 | y[11] = f367 - f366; | ||
453 | f370 = f286 + f284; | ||
454 | f371 = MUL_F(FRAC_CONST(0.4436129715409088), f286); | ||
455 | f372 = MUL_F(FRAC_CONST(0.4496113296546065), f370); | ||
456 | f373 = MUL_C(COEF_CONST(1.3428356308501219), f284); | ||
457 | y[22] = f371 + f372; | ||
458 | y[9] = f373 - f372; | ||
459 | f376 = f290 + f288; | ||
460 | f377 = MUL_F(FRAC_CONST(0.5730977622997509), f290); | ||
461 | f378 = MUL_F(FRAC_CONST(0.3598950365349881), f376); | ||
462 | f379 = MUL_C(COEF_CONST(1.2928878353697271), f288); | ||
463 | y[24] = f377 + f378; | ||
464 | y[7] = f379 - f378; | ||
465 | f382 = f294 + f292; | ||
466 | f383 = MUL_F(FRAC_CONST(0.6970633083205415), f294); | ||
467 | f384 = MUL_F(FRAC_CONST(0.2667127574748984), f382); | ||
468 | f385 = MUL_C(COEF_CONST(1.2304888232703382), f292); | ||
469 | y[26] = f383 + f384; | ||
470 | y[5] = f385 - f384; | ||
471 | f388 = f298 + f296; | ||
472 | f389 = MUL_F(FRAC_CONST(0.8143157536286401), f298); | ||
473 | f390 = MUL_F(FRAC_CONST(0.1709618887603012), f388); | ||
474 | f391 = MUL_C(COEF_CONST(1.1562395311492424), f296); | ||
475 | y[28] = f389 + f390; | ||
476 | y[3] = f391 - f390; | ||
477 | f394 = f302 + f300; | ||
478 | f395 = MUL_F(FRAC_CONST(0.9237258930790228), f302); | ||
479 | f396 = MUL_F(FRAC_CONST(0.0735645635996674), f394); | ||
480 | f397 = MUL_C(COEF_CONST(1.0708550202783576), f300); | ||
481 | y[30] = f395 + f396; | ||
482 | y[1] = f397 - f396; | ||
483 | } | ||
484 | |||
485 | #ifdef SBR_LOW_POWER | ||
486 | |||
487 | void DCT2_16_unscaled(real_t *y, real_t *x) | ||
488 | { | ||
489 | real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10; | ||
490 | real_t f11, f12, f13, f14, f15, f16, f17, f18, f19, f20; | ||
491 | real_t f21, f22, f23, f24, f25, f26, f27, f28, f31, f32; | ||
492 | real_t f33, f34, f37, f38, f39, f40, f41, f42, f43, f44; | ||
493 | real_t f45, f46, f47, f48, f49, f51, f53, f54, f57, f58; | ||
494 | real_t f59, f60, f61, f62, f63, f64, f65, f66, f67, f68; | ||
495 | real_t f69, f70, f71, f72, f73, f74, f75, f76, f77, f78; | ||
496 | real_t f79, f80, f81, f82, f83, f84, f85, f86, f87, f88; | ||
497 | real_t f89, f90, f91, f92, f95, f96, f97, f98, f101, f102; | ||
498 | real_t f103, f104, f107, f108, f109, f110; | ||
499 | |||
500 | f0 = x[0] - x[15]; | ||
501 | f1 = x[0] + x[15]; | ||
502 | f2 = x[1] - x[14]; | ||
503 | f3 = x[1] + x[14]; | ||
504 | f4 = x[2] - x[13]; | ||
505 | f5 = x[2] + x[13]; | ||
506 | f6 = x[3] - x[12]; | ||
507 | f7 = x[3] + x[12]; | ||
508 | f8 = x[4] - x[11]; | ||
509 | f9 = x[4] + x[11]; | ||
510 | f10 = x[5] - x[10]; | ||
511 | f11 = x[5] + x[10]; | ||
512 | f12 = x[6] - x[9]; | ||
513 | f13 = x[6] + x[9]; | ||
514 | f14 = x[7] - x[8]; | ||
515 | f15 = x[7] + x[8]; | ||
516 | f16 = f1 - f15; | ||
517 | f17 = f1 + f15; | ||
518 | f18 = f3 - f13; | ||
519 | f19 = f3 + f13; | ||
520 | f20 = f5 - f11; | ||
521 | f21 = f5 + f11; | ||
522 | f22 = f7 - f9; | ||
523 | f23 = f7 + f9; | ||
524 | f24 = f17 - f23; | ||
525 | f25 = f17 + f23; | ||
526 | f26 = f19 - f21; | ||
527 | f27 = f19 + f21; | ||
528 | f28 = f25 - f27; | ||
529 | y[0] = f25 + f27; | ||
530 | y[8] = MUL_F(f28, FRAC_CONST(0.7071067811865476)); | ||
531 | f31 = f24 + f26; | ||
532 | f32 = MUL_C(f24, COEF_CONST(1.3065629648763766)); | ||
533 | f33 = MUL_F(f31, FRAC_CONST(-0.9238795325112866)); | ||
534 | f34 = MUL_F(f26, FRAC_CONST(-0.5411961001461967)); | ||
535 | y[12] = f32 + f33; | ||
536 | y[4] = f34 - f33; | ||
537 | f37 = f16 + f22; | ||
538 | f38 = MUL_C(f16, COEF_CONST(1.1758756024193588)); | ||
539 | f39 = MUL_F(f37, FRAC_CONST(-0.9807852804032304)); | ||
540 | f40 = MUL_F(f22, FRAC_CONST(-0.7856949583871021)); | ||
541 | f41 = f38 + f39; | ||
542 | f42 = f40 - f39; | ||
543 | f43 = f18 + f20; | ||
544 | f44 = MUL_C(f18, COEF_CONST(1.3870398453221473)); | ||
545 | f45 = MUL_F(f43, FRAC_CONST(-0.8314696123025455)); | ||
546 | f46 = MUL_F(f20, FRAC_CONST(-0.2758993792829436)); | ||
547 | f47 = f44 + f45; | ||
548 | f48 = f46 - f45; | ||
549 | f49 = f42 - f48; | ||
550 | y[2] = f42 + f48; | ||
551 | f51 = MUL_F(f49, FRAC_CONST(0.7071067811865476)); | ||
552 | y[14] = f41 - f47; | ||
553 | f53 = f41 + f47; | ||
554 | f54 = MUL_F(f53, FRAC_CONST(0.7071067811865476)); | ||
555 | y[10] = f51 - f54; | ||
556 | y[6] = f51 + f54; | ||
557 | f57 = f2 - f4; | ||
558 | f58 = f2 + f4; | ||
559 | f59 = f6 - f8; | ||
560 | f60 = f6 + f8; | ||
561 | f61 = f10 - f12; | ||
562 | f62 = f10 + f12; | ||
563 | f63 = MUL_F(f60, FRAC_CONST(0.7071067811865476)); | ||
564 | f64 = f0 - f63; | ||
565 | f65 = f0 + f63; | ||
566 | f66 = f58 + f62; | ||
567 | f67 = MUL_C(f58, COEF_CONST(1.3065629648763766)); | ||
568 | f68 = MUL_F(f66, FRAC_CONST(-0.9238795325112866)); | ||
569 | f69 = MUL_F(f62, FRAC_CONST(-0.5411961001461967)); | ||
570 | f70 = f67 + f68; | ||
571 | f71 = f69 - f68; | ||
572 | f72 = f65 - f71; | ||
573 | f73 = f65 + f71; | ||
574 | f74 = f64 - f70; | ||
575 | f75 = f64 + f70; | ||
576 | f76 = MUL_F(f59, FRAC_CONST(0.7071067811865476)); | ||
577 | f77 = f14 - f76; | ||
578 | f78 = f14 + f76; | ||
579 | f79 = f61 + f57; | ||
580 | f80 = MUL_C(f61, COEF_CONST(1.3065629648763766)); | ||
581 | f81 = MUL_F(f79, FRAC_CONST(-0.9238795325112866)); | ||
582 | f82 = MUL_F(f57, FRAC_CONST(-0.5411961001461967)); | ||
583 | f83 = f80 + f81; | ||
584 | f84 = f82 - f81; | ||
585 | f85 = f78 - f84; | ||
586 | f86 = f78 + f84; | ||
587 | f87 = f77 - f83; | ||
588 | f88 = f77 + f83; | ||
589 | f89 = f86 + f73; | ||
590 | f90 = MUL_F(f86, FRAC_CONST(-0.8971675863426361)); | ||
591 | f91 = MUL_F(f89, FRAC_CONST(0.9951847266721968)); | ||
592 | f92 = MUL_C(f73, COEF_CONST(1.0932018670017576)); | ||
593 | y[1] = f90 + f91; | ||
594 | y[15] = f92 - f91; | ||
595 | f95 = f75 - f88; | ||
596 | f96 = MUL_F(f88, FRAC_CONST(-0.6666556584777466)); | ||
597 | f97 = MUL_F(f95, FRAC_CONST(0.9569403357322089)); | ||
598 | f98 = MUL_C(f75, COEF_CONST(1.2472250129866713)); | ||
599 | y[3] = f97 - f96; | ||
600 | y[13] = f98 - f97; | ||
601 | f101 = f87 + f74; | ||
602 | f102 = MUL_F(f87, FRAC_CONST(-0.4105245275223571)); | ||
603 | f103 = MUL_F(f101, FRAC_CONST(0.8819212643483549)); | ||
604 | f104 = MUL_C(f74, COEF_CONST(1.3533180011743529)); | ||
605 | y[5] = f102 + f103; | ||
606 | y[11] = f104 - f103; | ||
607 | f107 = f72 - f85; | ||
608 | f108 = MUL_F(f85, FRAC_CONST(-0.1386171691990915)); | ||
609 | f109 = MUL_F(f107, FRAC_CONST(0.7730104533627370)); | ||
610 | f110 = MUL_C(f72, COEF_CONST(1.4074037375263826)); | ||
611 | y[7] = f109 - f108; | ||
612 | y[9] = f110 - f109; | ||
613 | } | ||
614 | |||
615 | void DCT4_16(real_t *y, real_t *x) | ||
616 | { | ||
617 | real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10; | ||
618 | real_t f11, f12, f13, f14, f15, f16, f17, f18, f19, f20; | ||
619 | real_t f21, f22, f23, f24, f25, f26, f27, f28, f29, f30; | ||
620 | real_t f31, f32, f33, f34, f35, f36, f37, f38, f39, f40; | ||
621 | real_t f41, f42, f43, f44, f45, f46, f47, f48, f49, f50; | ||
622 | real_t f51, f52, f53, f54, f55, f56, f57, f58, f59, f60; | ||
623 | real_t f61, f62, f63, f64, f65, f66, f67, f68, f69, f70; | ||
624 | real_t f71, f72, f73, f74, f75, f76, f77, f78, f79, f80; | ||
625 | real_t f81, f82, f83, f84, f85, f86, f87, f88, f89, f90; | ||
626 | real_t f91, f92, f93, f94, f95, f96, f97, f98, f99, f100; | ||
627 | real_t f101, f102, f103, f104, f105, f106, f107, f108, f109, f110; | ||
628 | real_t f111, f112, f113, f114, f115, f116, f117, f118, f119, f120; | ||
629 | real_t f121, f122, f123, f124, f125, f126, f127, f128, f130, f132; | ||
630 | real_t f134, f136, f138, f140, f142, f144, f145, f148, f149, f152; | ||
631 | real_t f153, f156, f157; | ||
632 | |||
633 | f0 = x[0] + x[15]; | ||
634 | f1 = MUL_C(COEF_CONST(1.0478631305325901), x[0]); | ||
635 | f2 = MUL_F(FRAC_CONST(-0.9987954562051724), f0); | ||
636 | f3 = MUL_F(FRAC_CONST(-0.9497277818777548), x[15]); | ||
637 | f4 = f1 + f2; | ||
638 | f5 = f3 - f2; | ||
639 | f6 = x[2] + x[13]; | ||
640 | f7 = MUL_C(COEF_CONST(1.2130114330978077), x[2]); | ||
641 | f8 = MUL_F(FRAC_CONST(-0.9700312531945440), f6); | ||
642 | f9 = MUL_F(FRAC_CONST(-0.7270510732912803), x[13]); | ||
643 | f10 = f7 + f8; | ||
644 | f11 = f9 - f8; | ||
645 | f12 = x[4] + x[11]; | ||
646 | f13 = MUL_C(COEF_CONST(1.3315443865537255), x[4]); | ||
647 | f14 = MUL_F(FRAC_CONST(-0.9039892931234433), f12); | ||
648 | f15 = MUL_F(FRAC_CONST(-0.4764341996931612), x[11]); | ||
649 | f16 = f13 + f14; | ||
650 | f17 = f15 - f14; | ||
651 | f18 = x[6] + x[9]; | ||
652 | f19 = MUL_C(COEF_CONST(1.3989068359730781), x[6]); | ||
653 | f20 = MUL_F(FRAC_CONST(-0.8032075314806453), f18); | ||
654 | f21 = MUL_F(FRAC_CONST(-0.2075082269882124), x[9]); | ||
655 | f22 = f19 + f20; | ||
656 | f23 = f21 - f20; | ||
657 | f24 = x[8] + x[7]; | ||
658 | f25 = MUL_C(COEF_CONST(1.4125100802019777), x[8]); | ||
659 | f26 = MUL_F(FRAC_CONST(-0.6715589548470187), f24); | ||
660 | f27 = MUL_F(FRAC_CONST(0.0693921705079402), x[7]); | ||
661 | f28 = f25 + f26; | ||
662 | f29 = f27 - f26; | ||
663 | f30 = x[10] + x[5]; | ||
664 | f31 = MUL_C(COEF_CONST(1.3718313541934939), x[10]); | ||
665 | f32 = MUL_F(FRAC_CONST(-0.5141027441932219), f30); | ||
666 | f33 = MUL_F(FRAC_CONST(0.3436258658070501), x[5]); | ||
667 | f34 = f31 + f32; | ||
668 | f35 = f33 - f32; | ||
669 | f36 = x[12] + x[3]; | ||
670 | f37 = MUL_C(COEF_CONST(1.2784339185752409), x[12]); | ||
671 | f38 = MUL_F(FRAC_CONST(-0.3368898533922200), f36); | ||
672 | f39 = MUL_F(FRAC_CONST(0.6046542117908008), x[3]); | ||
673 | f40 = f37 + f38; | ||
674 | f41 = f39 - f38; | ||
675 | f42 = x[14] + x[1]; | ||
676 | f43 = MUL_C(COEF_CONST(1.1359069844201433), x[14]); | ||
677 | f44 = MUL_F(FRAC_CONST(-0.1467304744553624), f42); | ||
678 | f45 = MUL_F(FRAC_CONST(0.8424460355094185), x[1]); | ||
679 | f46 = f43 + f44; | ||
680 | f47 = f45 - f44; | ||
681 | f48 = f5 - f29; | ||
682 | f49 = f5 + f29; | ||
683 | f50 = f4 - f28; | ||
684 | f51 = f4 + f28; | ||
685 | f52 = f11 - f35; | ||
686 | f53 = f11 + f35; | ||
687 | f54 = f10 - f34; | ||
688 | f55 = f10 + f34; | ||
689 | f56 = f17 - f41; | ||
690 | f57 = f17 + f41; | ||
691 | f58 = f16 - f40; | ||
692 | f59 = f16 + f40; | ||
693 | f60 = f23 - f47; | ||
694 | f61 = f23 + f47; | ||
695 | f62 = f22 - f46; | ||
696 | f63 = f22 + f46; | ||
697 | f64 = f48 + f50; | ||
698 | f65 = MUL_C(COEF_CONST(1.1758756024193588), f48); | ||
699 | f66 = MUL_F(FRAC_CONST(-0.9807852804032304), f64); | ||
700 | f67 = MUL_F(FRAC_CONST(-0.7856949583871021), f50); | ||
701 | f68 = f65 + f66; | ||
702 | f69 = f67 - f66; | ||
703 | f70 = f52 + f54; | ||
704 | f71 = MUL_C(COEF_CONST(1.3870398453221475), f52); | ||
705 | f72 = MUL_F(FRAC_CONST(-0.5555702330196022), f70); | ||
706 | f73 = MUL_F(FRAC_CONST(0.2758993792829431), f54); | ||
707 | f74 = f71 + f72; | ||
708 | f75 = f73 - f72; | ||
709 | f76 = f56 + f58; | ||
710 | f77 = MUL_F(FRAC_CONST(0.7856949583871022), f56); | ||
711 | f78 = MUL_F(FRAC_CONST(0.1950903220161283), f76); | ||
712 | f79 = MUL_C(COEF_CONST(1.1758756024193586), f58); | ||
713 | f80 = f77 + f78; | ||
714 | f81 = f79 - f78; | ||
715 | f82 = f60 + f62; | ||
716 | f83 = MUL_F(FRAC_CONST(-0.2758993792829430), f60); | ||
717 | f84 = MUL_F(FRAC_CONST(0.8314696123025452), f82); | ||
718 | f85 = MUL_C(COEF_CONST(1.3870398453221475), f62); | ||
719 | f86 = f83 + f84; | ||
720 | f87 = f85 - f84; | ||
721 | f88 = f49 - f57; | ||
722 | f89 = f49 + f57; | ||
723 | f90 = f51 - f59; | ||
724 | f91 = f51 + f59; | ||
725 | f92 = f53 - f61; | ||
726 | f93 = f53 + f61; | ||
727 | f94 = f55 - f63; | ||
728 | f95 = f55 + f63; | ||
729 | f96 = f69 - f81; | ||
730 | f97 = f69 + f81; | ||
731 | f98 = f68 - f80; | ||
732 | f99 = f68 + f80; | ||
733 | f100 = f75 - f87; | ||
734 | f101 = f75 + f87; | ||
735 | f102 = f74 - f86; | ||
736 | f103 = f74 + f86; | ||
737 | f104 = f88 + f90; | ||
738 | f105 = MUL_C(COEF_CONST(1.3065629648763766), f88); | ||
739 | f106 = MUL_F(FRAC_CONST(-0.9238795325112866), f104); | ||
740 | f107 = MUL_F(FRAC_CONST(-0.5411961001461967), f90); | ||
741 | f108 = f105 + f106; | ||
742 | f109 = f107 - f106; | ||
743 | f110 = f92 + f94; | ||
744 | f111 = MUL_F(FRAC_CONST(0.5411961001461969), f92); | ||
745 | f112 = MUL_F(FRAC_CONST(0.3826834323650898), f110); | ||
746 | f113 = MUL_C(COEF_CONST(1.3065629648763766), f94); | ||
747 | f114 = f111 + f112; | ||
748 | f115 = f113 - f112; | ||
749 | f116 = f96 + f98; | ||
750 | f117 = MUL_C(COEF_CONST(1.3065629648763766), f96); | ||
751 | f118 = MUL_F(FRAC_CONST(-0.9238795325112866), f116); | ||
752 | f119 = MUL_F(FRAC_CONST(-0.5411961001461967), f98); | ||
753 | f120 = f117 + f118; | ||
754 | f121 = f119 - f118; | ||
755 | f122 = f100 + f102; | ||
756 | f123 = MUL_F(FRAC_CONST(0.5411961001461969), f100); | ||
757 | f124 = MUL_F(FRAC_CONST(0.3826834323650898), f122); | ||
758 | f125 = MUL_C(COEF_CONST(1.3065629648763766), f102); | ||
759 | f126 = f123 + f124; | ||
760 | f127 = f125 - f124; | ||
761 | f128 = f89 - f93; | ||
762 | y[0] = f89 + f93; | ||
763 | f130 = f91 - f95; | ||
764 | y[15] = f91 + f95; | ||
765 | f132 = f109 - f115; | ||
766 | y[3] = f109 + f115; | ||
767 | f134 = f108 - f114; | ||
768 | y[12] = f108 + f114; | ||
769 | f136 = f97 - f101; | ||
770 | y[1] = f97 + f101; | ||
771 | f138 = f99 - f103; | ||
772 | y[14] = f99 + f103; | ||
773 | f140 = f121 - f127; | ||
774 | y[2] = f121 + f127; | ||
775 | f142 = f120 - f126; | ||
776 | y[13] = f120 + f126; | ||
777 | f144 = f128 - f130; | ||
778 | f145 = f128 + f130; | ||
779 | y[8] = MUL_F(FRAC_CONST(0.7071067811865474), f144); | ||
780 | y[7] = MUL_F(FRAC_CONST(0.7071067811865474), f145); | ||
781 | f148 = f132 - f134; | ||
782 | f149 = f132 + f134; | ||
783 | y[11] = MUL_F(FRAC_CONST(0.7071067811865474), f148); | ||
784 | y[4] = MUL_F(FRAC_CONST(0.7071067811865474), f149); | ||
785 | f152 = f136 - f138; | ||
786 | f153 = f136 + f138; | ||
787 | y[9] = MUL_F(FRAC_CONST(0.7071067811865474), f152); | ||
788 | y[6] = MUL_F(FRAC_CONST(0.7071067811865474), f153); | ||
789 | f156 = f140 - f142; | ||
790 | f157 = f140 + f142; | ||
791 | y[10] = MUL_F(FRAC_CONST(0.7071067811865474), f156); | ||
792 | y[5] = MUL_F(FRAC_CONST(0.7071067811865474), f157); | ||
793 | } | ||
794 | |||
795 | void DCT3_32_unscaled(real_t *y, real_t *x) | ||
796 | { | ||
797 | real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10; | ||
798 | real_t f11, f12, f13, f14, f15, f16, f17, f18, f19, f20; | ||
799 | real_t f21, f22, f23, f24, f25, f26, f27, f28, f29, f30; | ||
800 | real_t f31, f32, f33, f34, f35, f36, f37, f38, f39, f40; | ||
801 | real_t f41, f42, f43, f44, f45, f46, f47, f48, f49, f50; | ||
802 | real_t f51, f52, f53, f54, f55, f56, f57, f58, f59, f60; | ||
803 | real_t f61, f62, f63, f64, f65, f66, f67, f68, f69, f70; | ||
804 | real_t f71, f72, f73, f74, f75, f76, f77, f78, f79, f80; | ||
805 | real_t f81, f82, f83, f84, f85, f86, f87, f88, f89, f90; | ||
806 | real_t f91, f92, f93, f94, f95, f96, f97, f98, f99, f100; | ||
807 | real_t f101, f102, f103, f104, f105, f106, f107, f108, f109, f110; | ||
808 | real_t f111, f112, f113, f114, f115, f116, f117, f118, f119, f120; | ||
809 | real_t f121, f122, f123, f124, f125, f126, f127, f128, f129, f130; | ||
810 | real_t f131, f132, f133, f134, f135, f136, f137, f138, f139, f140; | ||
811 | real_t f141, f142, f143, f144, f145, f146, f147, f148, f149, f150; | ||
812 | real_t f151, f152, f153, f154, f155, f156, f157, f158, f159, f160; | ||
813 | real_t f161, f162, f163, f164, f165, f166, f167, f168, f169, f170; | ||
814 | real_t f171, f172, f173, f174, f175, f176, f177, f178, f179, f180; | ||
815 | real_t f181, f182, f183, f184, f185, f186, f187, f188, f189, f190; | ||
816 | real_t f191, f192, f193, f194, f195, f196, f197, f198, f199, f200; | ||
817 | real_t f201, f202, f203, f204, f205, f206, f207, f208, f209, f210; | ||
818 | real_t f211, f212, f213, f214, f215, f216, f217, f218, f219, f220; | ||
819 | real_t f221, f222, f223, f224, f225, f226, f227, f228, f229, f230; | ||
820 | real_t f231, f232, f233, f234, f235, f236, f237, f238, f239, f240; | ||
821 | real_t f241, f242, f243, f244, f245, f246, f247, f248, f249, f250; | ||
822 | real_t f251, f252, f253, f254, f255, f256, f257, f258, f259, f260; | ||
823 | real_t f261, f262, f263, f264, f265, f266, f267, f268, f269, f270; | ||
824 | real_t f271, f272; | ||
825 | |||
826 | f0 = MUL_F(x[16], FRAC_CONST(0.7071067811865476)); | ||
827 | f1 = x[0] - f0; | ||
828 | f2 = x[0] + f0; | ||
829 | f3 = x[8] + x[24]; | ||
830 | f4 = MUL_C(x[8], COEF_CONST(1.3065629648763766)); | ||
831 | f5 = MUL_F(f3, FRAC_CONST((-0.9238795325112866))); | ||
832 | f6 = MUL_F(x[24], FRAC_CONST((-0.5411961001461967))); | ||
833 | f7 = f4 + f5; | ||
834 | f8 = f6 - f5; | ||
835 | f9 = f2 - f8; | ||
836 | f10 = f2 + f8; | ||
837 | f11 = f1 - f7; | ||
838 | f12 = f1 + f7; | ||
839 | f13 = x[4] + x[28]; | ||
840 | f14 = MUL_C(x[4], COEF_CONST(1.1758756024193588)); | ||
841 | f15 = MUL_F(f13, FRAC_CONST((-0.9807852804032304))); | ||
842 | f16 = MUL_F(x[28], FRAC_CONST((-0.7856949583871021))); | ||
843 | f17 = f14 + f15; | ||
844 | f18 = f16 - f15; | ||
845 | f19 = x[12] + x[20]; | ||
846 | f20 = MUL_C(x[12], COEF_CONST(1.3870398453221473)); | ||
847 | f21 = MUL_F(f19, FRAC_CONST((-0.8314696123025455))); | ||
848 | f22 = MUL_F(x[20], FRAC_CONST((-0.2758993792829436))); | ||
849 | f23 = f20 + f21; | ||
850 | f24 = f22 - f21; | ||
851 | f25 = f18 - f24; | ||
852 | f26 = f18 + f24; | ||
853 | f27 = MUL_F(f25, FRAC_CONST(0.7071067811865476)); | ||
854 | f28 = f17 - f23; | ||
855 | f29 = f17 + f23; | ||
856 | f30 = MUL_F(f29, FRAC_CONST(0.7071067811865476)); | ||
857 | f31 = f27 - f30; | ||
858 | f32 = f27 + f30; | ||
859 | f33 = f10 - f26; | ||
860 | f34 = f10 + f26; | ||
861 | f35 = f12 - f32; | ||
862 | f36 = f12 + f32; | ||
863 | f37 = f11 - f31; | ||
864 | f38 = f11 + f31; | ||
865 | f39 = f9 - f28; | ||
866 | f40 = f9 + f28; | ||
867 | f41 = x[2] + x[30]; | ||
868 | f42 = MUL_C(x[2], COEF_CONST(1.0932018670017569)); | ||
869 | f43 = MUL_F(f41, FRAC_CONST((-0.9951847266721969))); | ||
870 | f44 = MUL_F(x[30], FRAC_CONST((-0.8971675863426368))); | ||
871 | f45 = f42 + f43; | ||
872 | f46 = f44 - f43; | ||
873 | f47 = x[6] + x[26]; | ||
874 | f48 = MUL_C(x[6], COEF_CONST(1.2472250129866711)); | ||
875 | f49 = MUL_F(f47, FRAC_CONST((-0.9569403357322089))); | ||
876 | f50 = MUL_F(x[26], FRAC_CONST((-0.6666556584777469))); | ||
877 | f51 = f48 + f49; | ||
878 | f52 = f50 - f49; | ||
879 | f53 = x[10] + x[22]; | ||
880 | f54 = MUL_C(x[10], COEF_CONST(1.3533180011743526)); | ||
881 | f55 = MUL_F(f53, FRAC_CONST((-0.8819212643483551))); | ||
882 | f56 = MUL_F(x[22], FRAC_CONST((-0.4105245275223575))); | ||
883 | f57 = f54 + f55; | ||
884 | f58 = f56 - f55; | ||
885 | f59 = x[14] + x[18]; | ||
886 | f60 = MUL_C(x[14], COEF_CONST(1.4074037375263826)); | ||
887 | f61 = MUL_F(f59, FRAC_CONST((-0.7730104533627369))); | ||
888 | f62 = MUL_F(x[18], FRAC_CONST((-0.1386171691990913))); | ||
889 | f63 = f60 + f61; | ||
890 | f64 = f62 - f61; | ||
891 | f65 = f46 - f64; | ||
892 | f66 = f46 + f64; | ||
893 | f67 = f52 - f58; | ||
894 | f68 = f52 + f58; | ||
895 | f69 = f66 - f68; | ||
896 | f70 = f66 + f68; | ||
897 | f71 = MUL_F(f69, FRAC_CONST(0.7071067811865476)); | ||
898 | f72 = f65 + f67; | ||
899 | f73 = MUL_C(f65, COEF_CONST(1.3065629648763766)); | ||
900 | f74 = MUL_F(f72, FRAC_CONST((-0.9238795325112866))); | ||
901 | f75 = MUL_F(f67, FRAC_CONST((-0.5411961001461967))); | ||
902 | f76 = f73 + f74; | ||
903 | f77 = f75 - f74; | ||
904 | f78 = f45 - f63; | ||
905 | f79 = f45 + f63; | ||
906 | f80 = f51 - f57; | ||
907 | f81 = f51 + f57; | ||
908 | f82 = f79 + f81; | ||
909 | f83 = MUL_C(f79, COEF_CONST(1.3065629648763770)); | ||
910 | f84 = MUL_F(f82, FRAC_CONST((-0.3826834323650904))); | ||
911 | f85 = MUL_F(f81, FRAC_CONST(0.5411961001461961)); | ||
912 | f86 = f83 + f84; | ||
913 | f87 = f85 - f84; | ||
914 | f88 = f78 - f80; | ||
915 | f89 = f78 + f80; | ||
916 | f90 = MUL_F(f89, FRAC_CONST(0.7071067811865476)); | ||
917 | f91 = f77 - f87; | ||
918 | f92 = f77 + f87; | ||
919 | f93 = f71 - f90; | ||
920 | f94 = f71 + f90; | ||
921 | f95 = f76 - f86; | ||
922 | f96 = f76 + f86; | ||
923 | f97 = f34 - f70; | ||
924 | f98 = f34 + f70; | ||
925 | f99 = f36 - f92; | ||
926 | f100 = f36 + f92; | ||
927 | f101 = f38 - f91; | ||
928 | f102 = f38 + f91; | ||
929 | f103 = f40 - f94; | ||
930 | f104 = f40 + f94; | ||
931 | f105 = f39 - f93; | ||
932 | f106 = f39 + f93; | ||
933 | f107 = f37 - f96; | ||
934 | f108 = f37 + f96; | ||
935 | f109 = f35 - f95; | ||
936 | f110 = f35 + f95; | ||
937 | f111 = f33 - f88; | ||
938 | f112 = f33 + f88; | ||
939 | f113 = x[1] + x[31]; | ||
940 | f114 = MUL_C(x[1], COEF_CONST(1.0478631305325901)); | ||
941 | f115 = MUL_F(f113, FRAC_CONST((-0.9987954562051724))); | ||
942 | f116 = MUL_F(x[31], FRAC_CONST((-0.9497277818777548))); | ||
943 | f117 = f114 + f115; | ||
944 | f118 = f116 - f115; | ||
945 | f119 = x[5] + x[27]; | ||
946 | f120 = MUL_C(x[5], COEF_CONST(1.2130114330978077)); | ||
947 | f121 = MUL_F(f119, FRAC_CONST((-0.9700312531945440))); | ||
948 | f122 = MUL_F(x[27], FRAC_CONST((-0.7270510732912803))); | ||
949 | f123 = f120 + f121; | ||
950 | f124 = f122 - f121; | ||
951 | f125 = x[9] + x[23]; | ||
952 | f126 = MUL_C(x[9], COEF_CONST(1.3315443865537255)); | ||
953 | f127 = MUL_F(f125, FRAC_CONST((-0.9039892931234433))); | ||
954 | f128 = MUL_F(x[23], FRAC_CONST((-0.4764341996931612))); | ||
955 | f129 = f126 + f127; | ||
956 | f130 = f128 - f127; | ||
957 | f131 = x[13] + x[19]; | ||
958 | f132 = MUL_C(x[13], COEF_CONST(1.3989068359730781)); | ||
959 | f133 = MUL_F(f131, FRAC_CONST((-0.8032075314806453))); | ||
960 | f134 = MUL_F(x[19], FRAC_CONST((-0.2075082269882124))); | ||
961 | f135 = f132 + f133; | ||
962 | f136 = f134 - f133; | ||
963 | f137 = x[17] + x[15]; | ||
964 | f138 = MUL_C(x[17], COEF_CONST(1.4125100802019777)); | ||
965 | f139 = MUL_F(f137, FRAC_CONST((-0.6715589548470187))); | ||
966 | f140 = MUL_F(x[15], FRAC_CONST(0.0693921705079402)); | ||
967 | f141 = f138 + f139; | ||
968 | f142 = f140 - f139; | ||
969 | f143 = x[21] + x[11]; | ||
970 | f144 = MUL_C(x[21], COEF_CONST(1.3718313541934939)); | ||
971 | f145 = MUL_F(f143, FRAC_CONST((-0.5141027441932219))); | ||
972 | f146 = MUL_F(x[11], FRAC_CONST(0.3436258658070501)); | ||
973 | f147 = f144 + f145; | ||
974 | f148 = f146 - f145; | ||
975 | f149 = x[25] + x[7]; | ||
976 | f150 = MUL_C(x[25], COEF_CONST(1.2784339185752409)); | ||
977 | f151 = MUL_F(f149, FRAC_CONST((-0.3368898533922200))); | ||
978 | f152 = MUL_F(x[7], FRAC_CONST(0.6046542117908008)); | ||
979 | f153 = f150 + f151; | ||
980 | f154 = f152 - f151; | ||
981 | f155 = x[29] + x[3]; | ||
982 | f156 = MUL_C(x[29], COEF_CONST(1.1359069844201433)); | ||
983 | f157 = MUL_F(f155, FRAC_CONST((-0.1467304744553624))); | ||
984 | f158 = MUL_F(x[3], FRAC_CONST(0.8424460355094185)); | ||
985 | f159 = f156 + f157; | ||
986 | f160 = f158 - f157; | ||
987 | f161 = f118 - f142; | ||
988 | f162 = f118 + f142; | ||
989 | f163 = f117 - f141; | ||
990 | f164 = f117 + f141; | ||
991 | f165 = f124 - f148; | ||
992 | f166 = f124 + f148; | ||
993 | f167 = f123 - f147; | ||
994 | f168 = f123 + f147; | ||
995 | f169 = f130 - f154; | ||
996 | f170 = f130 + f154; | ||
997 | f171 = f129 - f153; | ||
998 | f172 = f129 + f153; | ||
999 | f173 = f136 - f160; | ||
1000 | f174 = f136 + f160; | ||
1001 | f175 = f135 - f159; | ||
1002 | f176 = f135 + f159; | ||
1003 | f177 = f161 + f163; | ||
1004 | f178 = MUL_C(f161, COEF_CONST(1.1758756024193588)); | ||
1005 | f179 = MUL_F(f177, FRAC_CONST((-0.9807852804032304))); | ||
1006 | f180 = MUL_F(f163, FRAC_CONST((-0.7856949583871021))); | ||
1007 | f181 = f178 + f179; | ||
1008 | f182 = f180 - f179; | ||
1009 | f183 = f165 + f167; | ||
1010 | f184 = MUL_C(f165, COEF_CONST(1.3870398453221475)); | ||
1011 | f185 = MUL_F(f183, FRAC_CONST((-0.5555702330196022))); | ||
1012 | f186 = MUL_F(f167, FRAC_CONST(0.2758993792829431)); | ||
1013 | f187 = f184 + f185; | ||
1014 | f188 = f186 - f185; | ||
1015 | f189 = f169 + f171; | ||
1016 | f190 = MUL_F(f169, FRAC_CONST(0.7856949583871022)); | ||
1017 | f191 = MUL_F(f189, FRAC_CONST(0.1950903220161283)); | ||
1018 | f192 = MUL_C(f171, COEF_CONST(1.1758756024193586)); | ||
1019 | f193 = f190 + f191; | ||
1020 | f194 = f192 - f191; | ||
1021 | f195 = f173 + f175; | ||
1022 | f196 = MUL_F(f173, FRAC_CONST((-0.2758993792829430))); | ||
1023 | f197 = MUL_F(f195, FRAC_CONST(0.8314696123025452)); | ||
1024 | f198 = MUL_C(f175, COEF_CONST(1.3870398453221475)); | ||
1025 | f199 = f196 + f197; | ||
1026 | f200 = f198 - f197; | ||
1027 | f201 = f162 - f170; | ||
1028 | f202 = f162 + f170; | ||
1029 | f203 = f164 - f172; | ||
1030 | f204 = f164 + f172; | ||
1031 | f205 = f166 - f174; | ||
1032 | f206 = f166 + f174; | ||
1033 | f207 = f168 - f176; | ||
1034 | f208 = f168 + f176; | ||
1035 | f209 = f182 - f194; | ||
1036 | f210 = f182 + f194; | ||
1037 | f211 = f181 - f193; | ||
1038 | f212 = f181 + f193; | ||
1039 | f213 = f188 - f200; | ||
1040 | f214 = f188 + f200; | ||
1041 | f215 = f187 - f199; | ||
1042 | f216 = f187 + f199; | ||
1043 | f217 = f201 + f203; | ||
1044 | f218 = MUL_C(f201, COEF_CONST(1.3065629648763766)); | ||
1045 | f219 = MUL_F(f217, FRAC_CONST((-0.9238795325112866))); | ||
1046 | f220 = MUL_F(f203, FRAC_CONST((-0.5411961001461967))); | ||
1047 | f221 = f218 + f219; | ||
1048 | f222 = f220 - f219; | ||
1049 | f223 = f205 + f207; | ||
1050 | f224 = MUL_F(f205, FRAC_CONST(0.5411961001461969)); | ||
1051 | f225 = MUL_F(f223, FRAC_CONST(0.3826834323650898)); | ||
1052 | f226 = MUL_C(f207, COEF_CONST(1.3065629648763766)); | ||
1053 | f227 = f224 + f225; | ||
1054 | f228 = f226 - f225; | ||
1055 | f229 = f209 + f211; | ||
1056 | f230 = MUL_C(f209, COEF_CONST(1.3065629648763766)); | ||
1057 | f231 = MUL_F(f229, FRAC_CONST((-0.9238795325112866))); | ||
1058 | f232 = MUL_F(f211, FRAC_CONST((-0.5411961001461967))); | ||
1059 | f233 = f230 + f231; | ||
1060 | f234 = f232 - f231; | ||
1061 | f235 = f213 + f215; | ||
1062 | f236 = MUL_F(f213, FRAC_CONST(0.5411961001461969)); | ||
1063 | f237 = MUL_F(f235, FRAC_CONST(0.3826834323650898)); | ||
1064 | f238 = MUL_C(f215, COEF_CONST(1.3065629648763766)); | ||
1065 | f239 = f236 + f237; | ||
1066 | f240 = f238 - f237; | ||
1067 | f241 = f202 - f206; | ||
1068 | f242 = f202 + f206; | ||
1069 | f243 = f204 - f208; | ||
1070 | f244 = f204 + f208; | ||
1071 | f245 = f222 - f228; | ||
1072 | f246 = f222 + f228; | ||
1073 | f247 = f221 - f227; | ||
1074 | f248 = f221 + f227; | ||
1075 | f249 = f210 - f214; | ||
1076 | f250 = f210 + f214; | ||
1077 | f251 = f212 - f216; | ||
1078 | f252 = f212 + f216; | ||
1079 | f253 = f234 - f240; | ||
1080 | f254 = f234 + f240; | ||
1081 | f255 = f233 - f239; | ||
1082 | f256 = f233 + f239; | ||
1083 | f257 = f241 - f243; | ||
1084 | f258 = f241 + f243; | ||
1085 | f259 = MUL_F(f257, FRAC_CONST(0.7071067811865474)); | ||
1086 | f260 = MUL_F(f258, FRAC_CONST(0.7071067811865474)); | ||
1087 | f261 = f245 - f247; | ||
1088 | f262 = f245 + f247; | ||
1089 | f263 = MUL_F(f261, FRAC_CONST(0.7071067811865474)); | ||
1090 | f264 = MUL_F(f262, FRAC_CONST(0.7071067811865474)); | ||
1091 | f265 = f249 - f251; | ||
1092 | f266 = f249 + f251; | ||
1093 | f267 = MUL_F(f265, FRAC_CONST(0.7071067811865474)); | ||
1094 | f268 = MUL_F(f266, FRAC_CONST(0.7071067811865474)); | ||
1095 | f269 = f253 - f255; | ||
1096 | f270 = f253 + f255; | ||
1097 | f271 = MUL_F(f269, FRAC_CONST(0.7071067811865474)); | ||
1098 | f272 = MUL_F(f270, FRAC_CONST(0.7071067811865474)); | ||
1099 | y[31] = f98 - f242; | ||
1100 | y[0] = f98 + f242; | ||
1101 | y[30] = f100 - f250; | ||
1102 | y[1] = f100 + f250; | ||
1103 | y[29] = f102 - f254; | ||
1104 | y[2] = f102 + f254; | ||
1105 | y[28] = f104 - f246; | ||
1106 | y[3] = f104 + f246; | ||
1107 | y[27] = f106 - f264; | ||
1108 | y[4] = f106 + f264; | ||
1109 | y[26] = f108 - f272; | ||
1110 | y[5] = f108 + f272; | ||
1111 | y[25] = f110 - f268; | ||
1112 | y[6] = f110 + f268; | ||
1113 | y[24] = f112 - f260; | ||
1114 | y[7] = f112 + f260; | ||
1115 | y[23] = f111 - f259; | ||
1116 | y[8] = f111 + f259; | ||
1117 | y[22] = f109 - f267; | ||
1118 | y[9] = f109 + f267; | ||
1119 | y[21] = f107 - f271; | ||
1120 | y[10] = f107 + f271; | ||
1121 | y[20] = f105 - f263; | ||
1122 | y[11] = f105 + f263; | ||
1123 | y[19] = f103 - f248; | ||
1124 | y[12] = f103 + f248; | ||
1125 | y[18] = f101 - f256; | ||
1126 | y[13] = f101 + f256; | ||
1127 | y[17] = f99 - f252; | ||
1128 | y[14] = f99 + f252; | ||
1129 | y[16] = f97 - f244; | ||
1130 | y[15] = f97 + f244; | ||
1131 | } | ||
1132 | |||
1133 | void DCT2_32_unscaled(real_t *y, real_t *x) | ||
1134 | { | ||
1135 | real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10; | ||
1136 | real_t f11, f12, f13, f14, f15, f16, f17, f18, f19, f20; | ||
1137 | real_t f21, f22, f23, f24, f25, f26, f27, f28, f29, f30; | ||
1138 | real_t f31, f32, f33, f34, f35, f36, f37, f38, f39, f40; | ||
1139 | real_t f41, f42, f43, f44, f45, f46, f47, f48, f49, f50; | ||
1140 | real_t f51, f52, f53, f54, f55, f56, f57, f58, f59, f60; | ||
1141 | real_t f63, f64, f65, f66, f69, f70, f71, f72, f73, f74; | ||
1142 | real_t f75, f76, f77, f78, f79, f80, f81, f83, f85, f86; | ||
1143 | real_t f89, f90, f91, f92, f93, f94, f95, f96, f97, f98; | ||
1144 | real_t f99, f100, f101, f102, f103, f104, f105, f106, f107, f108; | ||
1145 | real_t f109, f110, f111, f112, f113, f114, f115, f116, f117, f118; | ||
1146 | real_t f119, f120, f121, f122, f123, f124, f127, f128, f129, f130; | ||
1147 | real_t f133, f134, f135, f136, f139, f140, f141, f142, f145, f146; | ||
1148 | real_t f147, f148, f149, f150, f151, f152, f153, f154, f155, f156; | ||
1149 | real_t f157, f158, f159, f160, f161, f162, f163, f164, f165, f166; | ||
1150 | real_t f167, f168, f169, f170, f171, f172, f173, f174, f175, f176; | ||
1151 | real_t f177, f178, f179, f180, f181, f182, f183, f184, f185, f186; | ||
1152 | real_t f187, f188, f189, f190, f191, f192, f193, f194, f195, f196; | ||
1153 | real_t f197, f198, f199, f200, f201, f202, f203, f204, f205, f206; | ||
1154 | real_t f207, f208, f209, f210, f211, f212, f213, f214, f215, f216; | ||
1155 | real_t f217, f218, f219, f220, f221, f222, f223, f224, f225, f226; | ||
1156 | real_t f227, f228, f229, f230, f231, f232, f233, f234, f235, f236; | ||
1157 | real_t f237, f238, f239, f240, f241, f242, f243, f244, f247, f248; | ||
1158 | real_t f249, f250, f253, f254, f255, f256, f259, f260, f261, f262; | ||
1159 | real_t f265, f266, f267, f268, f271, f272, f273, f274, f277, f278; | ||
1160 | real_t f279, f280, f283, f284, f285, f286; | ||
1161 | |||
1162 | f0 = x[0] - x[31]; | ||
1163 | f1 = x[0] + x[31]; | ||
1164 | f2 = x[1] - x[30]; | ||
1165 | f3 = x[1] + x[30]; | ||
1166 | f4 = x[2] - x[29]; | ||
1167 | f5 = x[2] + x[29]; | ||
1168 | f6 = x[3] - x[28]; | ||
1169 | f7 = x[3] + x[28]; | ||
1170 | f8 = x[4] - x[27]; | ||
1171 | f9 = x[4] + x[27]; | ||
1172 | f10 = x[5] - x[26]; | ||
1173 | f11 = x[5] + x[26]; | ||
1174 | f12 = x[6] - x[25]; | ||
1175 | f13 = x[6] + x[25]; | ||
1176 | f14 = x[7] - x[24]; | ||
1177 | f15 = x[7] + x[24]; | ||
1178 | f16 = x[8] - x[23]; | ||
1179 | f17 = x[8] + x[23]; | ||
1180 | f18 = x[9] - x[22]; | ||
1181 | f19 = x[9] + x[22]; | ||
1182 | f20 = x[10] - x[21]; | ||
1183 | f21 = x[10] + x[21]; | ||
1184 | f22 = x[11] - x[20]; | ||
1185 | f23 = x[11] + x[20]; | ||
1186 | f24 = x[12] - x[19]; | ||
1187 | f25 = x[12] + x[19]; | ||
1188 | f26 = x[13] - x[18]; | ||
1189 | f27 = x[13] + x[18]; | ||
1190 | f28 = x[14] - x[17]; | ||
1191 | f29 = x[14] + x[17]; | ||
1192 | f30 = x[15] - x[16]; | ||
1193 | f31 = x[15] + x[16]; | ||
1194 | f32 = f1 - f31; | ||
1195 | f33 = f1 + f31; | ||
1196 | f34 = f3 - f29; | ||
1197 | f35 = f3 + f29; | ||
1198 | f36 = f5 - f27; | ||
1199 | f37 = f5 + f27; | ||
1200 | f38 = f7 - f25; | ||
1201 | f39 = f7 + f25; | ||
1202 | f40 = f9 - f23; | ||
1203 | f41 = f9 + f23; | ||
1204 | f42 = f11 - f21; | ||
1205 | f43 = f11 + f21; | ||
1206 | f44 = f13 - f19; | ||
1207 | f45 = f13 + f19; | ||
1208 | f46 = f15 - f17; | ||
1209 | f47 = f15 + f17; | ||
1210 | f48 = f33 - f47; | ||
1211 | f49 = f33 + f47; | ||
1212 | f50 = f35 - f45; | ||
1213 | f51 = f35 + f45; | ||
1214 | f52 = f37 - f43; | ||
1215 | f53 = f37 + f43; | ||
1216 | f54 = f39 - f41; | ||
1217 | f55 = f39 + f41; | ||
1218 | f56 = f49 - f55; | ||
1219 | f57 = f49 + f55; | ||
1220 | f58 = f51 - f53; | ||
1221 | f59 = f51 + f53; | ||
1222 | f60 = f57 - f59; | ||
1223 | y[0] = f57 + f59; | ||
1224 | y[16] = MUL_F(FRAC_CONST(0.7071067811865476), f60); | ||
1225 | f63 = f56 + f58; | ||
1226 | f64 = MUL_C(COEF_CONST(1.3065629648763766), f56); | ||
1227 | f65 = MUL_F(FRAC_CONST(-0.9238795325112866), f63); | ||
1228 | f66 = MUL_F(FRAC_CONST(-0.5411961001461967), f58); | ||
1229 | y[24] = f64 + f65; | ||
1230 | y[8] = f66 - f65; | ||
1231 | f69 = f48 + f54; | ||
1232 | f70 = MUL_C(COEF_CONST(1.1758756024193588), f48); | ||
1233 | f71 = MUL_F(FRAC_CONST(-0.9807852804032304), f69); | ||
1234 | f72 = MUL_F(FRAC_CONST(-0.7856949583871021), f54); | ||
1235 | f73 = f70 + f71; | ||
1236 | f74 = f72 - f71; | ||
1237 | f75 = f50 + f52; | ||
1238 | f76 = MUL_C(COEF_CONST(1.3870398453221473), f50); | ||
1239 | f77 = MUL_F(FRAC_CONST(-0.8314696123025455), f75); | ||
1240 | f78 = MUL_F(FRAC_CONST(-0.2758993792829436), f52); | ||
1241 | f79 = f76 + f77; | ||
1242 | f80 = f78 - f77; | ||
1243 | f81 = f74 - f80; | ||
1244 | y[4] = f74 + f80; | ||
1245 | f83 = MUL_F(FRAC_CONST(0.7071067811865476), f81); | ||
1246 | y[28] = f73 - f79; | ||
1247 | f85 = f73 + f79; | ||
1248 | f86 = MUL_F(FRAC_CONST(0.7071067811865476), f85); | ||
1249 | y[20] = f83 - f86; | ||
1250 | y[12] = f83 + f86; | ||
1251 | f89 = f34 - f36; | ||
1252 | f90 = f34 + f36; | ||
1253 | f91 = f38 - f40; | ||
1254 | f92 = f38 + f40; | ||
1255 | f93 = f42 - f44; | ||
1256 | f94 = f42 + f44; | ||
1257 | f95 = MUL_F(FRAC_CONST(0.7071067811865476), f92); | ||
1258 | f96 = f32 - f95; | ||
1259 | f97 = f32 + f95; | ||
1260 | f98 = f90 + f94; | ||
1261 | f99 = MUL_C(COEF_CONST(1.3065629648763766), f90); | ||
1262 | f100 = MUL_F(FRAC_CONST(-0.9238795325112866), f98); | ||
1263 | f101 = MUL_F(FRAC_CONST(-0.5411961001461967), f94); | ||
1264 | f102 = f99 + f100; | ||
1265 | f103 = f101 - f100; | ||
1266 | f104 = f97 - f103; | ||
1267 | f105 = f97 + f103; | ||
1268 | f106 = f96 - f102; | ||
1269 | f107 = f96 + f102; | ||
1270 | f108 = MUL_F(FRAC_CONST(0.7071067811865476), f91); | ||
1271 | f109 = f46 - f108; | ||
1272 | f110 = f46 + f108; | ||
1273 | f111 = f93 + f89; | ||
1274 | f112 = MUL_C(COEF_CONST(1.3065629648763766), f93); | ||
1275 | f113 = MUL_F(FRAC_CONST(-0.9238795325112866), f111); | ||
1276 | f114 = MUL_F(FRAC_CONST(-0.5411961001461967), f89); | ||
1277 | f115 = f112 + f113; | ||
1278 | f116 = f114 - f113; | ||
1279 | f117 = f110 - f116; | ||
1280 | f118 = f110 + f116; | ||
1281 | f119 = f109 - f115; | ||
1282 | f120 = f109 + f115; | ||
1283 | f121 = f118 + f105; | ||
1284 | f122 = MUL_F(FRAC_CONST(-0.8971675863426361), f118); | ||
1285 | f123 = MUL_F(FRAC_CONST(0.9951847266721968), f121); | ||
1286 | f124 = MUL_C(COEF_CONST(1.0932018670017576), f105); | ||
1287 | y[2] = f122 + f123; | ||
1288 | y[30] = f124 - f123; | ||
1289 | f127 = f107 - f120; | ||
1290 | f128 = MUL_F(FRAC_CONST(-0.6666556584777466), f120); | ||
1291 | f129 = MUL_F(FRAC_CONST(0.9569403357322089), f127); | ||
1292 | f130 = MUL_C(COEF_CONST(1.2472250129866713), f107); | ||
1293 | y[6] = f129 - f128; | ||
1294 | y[26] = f130 - f129; | ||
1295 | f133 = f119 + f106; | ||
1296 | f134 = MUL_F(FRAC_CONST(-0.4105245275223571), f119); | ||
1297 | f135 = MUL_F(FRAC_CONST(0.8819212643483549), f133); | ||
1298 | f136 = MUL_C(COEF_CONST(1.3533180011743529), f106); | ||
1299 | y[10] = f134 + f135; | ||
1300 | y[22] = f136 - f135; | ||
1301 | f139 = f104 - f117; | ||
1302 | f140 = MUL_F(FRAC_CONST(-0.1386171691990915), f117); | ||
1303 | f141 = MUL_F(FRAC_CONST(0.7730104533627370), f139); | ||
1304 | f142 = MUL_C(COEF_CONST(1.4074037375263826), f104); | ||
1305 | y[14] = f141 - f140; | ||
1306 | y[18] = f142 - f141; | ||
1307 | f145 = f2 - f4; | ||
1308 | f146 = f2 + f4; | ||
1309 | f147 = f6 - f8; | ||
1310 | f148 = f6 + f8; | ||
1311 | f149 = f10 - f12; | ||
1312 | f150 = f10 + f12; | ||
1313 | f151 = f14 - f16; | ||
1314 | f152 = f14 + f16; | ||
1315 | f153 = f18 - f20; | ||
1316 | f154 = f18 + f20; | ||
1317 | f155 = f22 - f24; | ||
1318 | f156 = f22 + f24; | ||
1319 | f157 = f26 - f28; | ||
1320 | f158 = f26 + f28; | ||
1321 | f159 = MUL_F(FRAC_CONST(0.7071067811865476), f152); | ||
1322 | f160 = f0 - f159; | ||
1323 | f161 = f0 + f159; | ||
1324 | f162 = f148 + f156; | ||
1325 | f163 = MUL_C(COEF_CONST(1.3065629648763766), f148); | ||
1326 | f164 = MUL_F(FRAC_CONST(-0.9238795325112866), f162); | ||
1327 | f165 = MUL_F(FRAC_CONST(-0.5411961001461967), f156); | ||
1328 | f166 = f163 + f164; | ||
1329 | f167 = f165 - f164; | ||
1330 | f168 = f161 - f167; | ||
1331 | f169 = f161 + f167; | ||
1332 | f170 = f160 - f166; | ||
1333 | f171 = f160 + f166; | ||
1334 | f172 = f146 + f158; | ||
1335 | f173 = MUL_C(COEF_CONST(1.1758756024193588), f146); | ||
1336 | f174 = MUL_F(FRAC_CONST(-0.9807852804032304), f172); | ||
1337 | f175 = MUL_F(FRAC_CONST(-0.7856949583871021), f158); | ||
1338 | f176 = f173 + f174; | ||
1339 | f177 = f175 - f174; | ||
1340 | f178 = f150 + f154; | ||
1341 | f179 = MUL_C(COEF_CONST(1.3870398453221473), f150); | ||
1342 | f180 = MUL_F(FRAC_CONST(-0.8314696123025455), f178); | ||
1343 | f181 = MUL_F(FRAC_CONST(-0.2758993792829436), f154); | ||
1344 | f182 = f179 + f180; | ||
1345 | f183 = f181 - f180; | ||
1346 | f184 = f177 - f183; | ||
1347 | f185 = f177 + f183; | ||
1348 | f186 = MUL_F(FRAC_CONST(0.7071067811865476), f184); | ||
1349 | f187 = f176 - f182; | ||
1350 | f188 = f176 + f182; | ||
1351 | f189 = MUL_F(FRAC_CONST(0.7071067811865476), f188); | ||
1352 | f190 = f186 - f189; | ||
1353 | f191 = f186 + f189; | ||
1354 | f192 = f169 - f185; | ||
1355 | f193 = f169 + f185; | ||
1356 | f194 = f171 - f191; | ||
1357 | f195 = f171 + f191; | ||
1358 | f196 = f170 - f190; | ||
1359 | f197 = f170 + f190; | ||
1360 | f198 = f168 - f187; | ||
1361 | f199 = f168 + f187; | ||
1362 | f200 = MUL_F(FRAC_CONST(0.7071067811865476), f151); | ||
1363 | f201 = f30 - f200; | ||
1364 | f202 = f30 + f200; | ||
1365 | f203 = f155 + f147; | ||
1366 | f204 = MUL_C(COEF_CONST(1.3065629648763766), f155); | ||
1367 | f205 = MUL_F(FRAC_CONST(-0.9238795325112866), f203); | ||
1368 | f206 = MUL_F(FRAC_CONST(-0.5411961001461967), f147); | ||
1369 | f207 = f204 + f205; | ||
1370 | f208 = f206 - f205; | ||
1371 | f209 = f202 - f208; | ||
1372 | f210 = f202 + f208; | ||
1373 | f211 = f201 - f207; | ||
1374 | f212 = f201 + f207; | ||
1375 | f213 = f157 + f145; | ||
1376 | f214 = MUL_C(COEF_CONST(1.1758756024193588), f157); | ||
1377 | f215 = MUL_F(FRAC_CONST(-0.9807852804032304), f213); | ||
1378 | f216 = MUL_F(FRAC_CONST(-0.7856949583871021), f145); | ||
1379 | f217 = f214 + f215; | ||
1380 | f218 = f216 - f215; | ||
1381 | f219 = f153 + f149; | ||
1382 | f220 = MUL_C(COEF_CONST(1.3870398453221473), f153); | ||
1383 | f221 = MUL_F(FRAC_CONST(-0.8314696123025455), f219); | ||
1384 | f222 = MUL_F(FRAC_CONST(-0.2758993792829436), f149); | ||
1385 | f223 = f220 + f221; | ||
1386 | f224 = f222 - f221; | ||
1387 | f225 = f218 - f224; | ||
1388 | f226 = f218 + f224; | ||
1389 | f227 = MUL_F(FRAC_CONST(0.7071067811865476), f225); | ||
1390 | f228 = f217 - f223; | ||
1391 | f229 = f217 + f223; | ||
1392 | f230 = MUL_F(FRAC_CONST(0.7071067811865476), f229); | ||
1393 | f231 = f227 - f230; | ||
1394 | f232 = f227 + f230; | ||
1395 | f233 = f210 - f226; | ||
1396 | f234 = f210 + f226; | ||
1397 | f235 = f212 - f232; | ||
1398 | f236 = f212 + f232; | ||
1399 | f237 = f211 - f231; | ||
1400 | f238 = f211 + f231; | ||
1401 | f239 = f209 - f228; | ||
1402 | f240 = f209 + f228; | ||
1403 | f241 = f234 + f193; | ||
1404 | f242 = MUL_F(FRAC_CONST(-0.9497277818777543), f234); | ||
1405 | f243 = MUL_F(FRAC_CONST(0.9987954562051724), f241); | ||
1406 | f244 = MUL_C(COEF_CONST(1.0478631305325905), f193); | ||
1407 | y[1] = f242 + f243; | ||
1408 | y[31] = f244 - f243; | ||
1409 | f247 = f195 - f236; | ||
1410 | f248 = MUL_F(FRAC_CONST(-0.8424460355094192), f236); | ||
1411 | f249 = MUL_F(FRAC_CONST(0.9891765099647810), f247); | ||
1412 | f250 = MUL_C(COEF_CONST(1.1359069844201428), f195); | ||
1413 | y[3] = f249 - f248; | ||
1414 | y[29] = f250 - f249; | ||
1415 | f253 = f238 + f197; | ||
1416 | f254 = MUL_F(FRAC_CONST(-0.7270510732912801), f238); | ||
1417 | f255 = MUL_F(FRAC_CONST(0.9700312531945440), f253); | ||
1418 | f256 = MUL_C(COEF_CONST(1.2130114330978079), f197); | ||
1419 | y[5] = f254 + f255; | ||
1420 | y[27] = f256 - f255; | ||
1421 | f259 = f199 - f240; | ||
1422 | f260 = MUL_F(FRAC_CONST(-0.6046542117908007), f240); | ||
1423 | f261 = MUL_F(FRAC_CONST(0.9415440651830208), f259); | ||
1424 | f262 = MUL_C(COEF_CONST(1.2784339185752409), f199); | ||
1425 | y[7] = f261 - f260; | ||
1426 | y[25] = f262 - f261; | ||
1427 | f265 = f239 + f198; | ||
1428 | f266 = MUL_F(FRAC_CONST(-0.4764341996931611), f239); | ||
1429 | f267 = MUL_F(FRAC_CONST(0.9039892931234433), f265); | ||
1430 | f268 = MUL_C(COEF_CONST(1.3315443865537255), f198); | ||
1431 | y[9] = f266 + f267; | ||
1432 | y[23] = f268 - f267; | ||
1433 | f271 = f196 - f237; | ||
1434 | f272 = MUL_F(FRAC_CONST(-0.3436258658070505), f237); | ||
1435 | f273 = MUL_F(FRAC_CONST(0.8577286100002721), f271); | ||
1436 | f274 = MUL_C(COEF_CONST(1.3718313541934939), f196); | ||
1437 | y[11] = f273 - f272; | ||
1438 | y[21] = f274 - f273; | ||
1439 | f277 = f235 + f194; | ||
1440 | f278 = MUL_F(FRAC_CONST(-0.2075082269882114), f235); | ||
1441 | f279 = MUL_F(FRAC_CONST(0.8032075314806448), f277); | ||
1442 | f280 = MUL_C(COEF_CONST(1.3989068359730783), f194); | ||
1443 | y[13] = f278 + f279; | ||
1444 | y[19] = f280 - f279; | ||
1445 | f283 = f192 - f233; | ||
1446 | f284 = MUL_F(FRAC_CONST(-0.0693921705079408), f233); | ||
1447 | f285 = MUL_F(FRAC_CONST(0.7409511253549591), f283); | ||
1448 | f286 = MUL_C(COEF_CONST(1.4125100802019774), f192); | ||
1449 | y[15] = f285 - f284; | ||
1450 | y[17] = f286 - f285; | ||
1451 | } | ||
1452 | |||
1453 | #else /* #ifdef SBR_LOW_POWER */ | ||
1454 | |||
1455 | /* table for pre-processing within dct4_kernel() */ | ||
1456 | static const real_t dct4_pre_tab[] ICONST_ATTR MEM_ALIGN_ATTR = { | ||
1457 | COEF_CONST(0.999924719333649), COEF_CONST(-1.01219630241394), COEF_CONST(-0.987653195858002), | ||
1458 | COEF_CONST(0.998118102550507), COEF_CONST(-1.05943882465363), COEF_CONST(-0.936797380447388), | ||
1459 | COEF_CONST(0.993906974792480), COEF_CONST(-1.10412919521332), COEF_CONST(-0.883684754371643), | ||
1460 | COEF_CONST(0.987301409244537), COEF_CONST(-1.14615952968597), COEF_CONST(-0.828443288803101), | ||
1461 | COEF_CONST(0.978317379951477), COEF_CONST(-1.18542873859405), COEF_CONST(-0.771206021308899), | ||
1462 | COEF_CONST(0.966976463794708), COEF_CONST(-1.22184216976166), COEF_CONST(-0.712110757827759), | ||
1463 | COEF_CONST(0.953306019306183), COEF_CONST(-1.25531196594238), COEF_CONST(-0.651300072669983), | ||
1464 | COEF_CONST(0.937339007854462), COEF_CONST(-1.28575766086578), COEF_CONST(-0.588920354843140), | ||
1465 | COEF_CONST(0.919113874435425), COEF_CONST(-1.31310594081879), COEF_CONST(-0.525121808052063), | ||
1466 | COEF_CONST(0.898674488067627), COEF_CONST(-1.33729076385498), COEF_CONST(-0.460058242082596), | ||
1467 | COEF_CONST(0.876070082187653), COEF_CONST(-1.35825383663177), COEF_CONST(-0.393886327743530), | ||
1468 | COEF_CONST(0.851355195045471), COEF_CONST(-1.37594485282898), COEF_CONST(-0.326765477657318), | ||
1469 | COEF_CONST(0.824589252471924), COEF_CONST(-1.39032101631165), COEF_CONST(-0.258857429027557), | ||
1470 | COEF_CONST(0.795836925506592), COEF_CONST(-1.40134787559509), COEF_CONST(-0.190325915813446), | ||
1471 | COEF_CONST(0.765167236328125), COEF_CONST(-1.40899872779846), COEF_CONST(-0.121335685253143), | ||
1472 | COEF_CONST(0.732654273509979), COEF_CONST(-1.41325521469116), COEF_CONST(-0.052053272724152), | ||
1473 | COEF_CONST(0.698376238346100), COEF_CONST(-1.41410708427429), COEF_CONST( 0.017354607582092), | ||
1474 | COEF_CONST(0.662415742874146), COEF_CONST(-1.41155219078064), COEF_CONST( 0.086720645427704), | ||
1475 | COEF_CONST(0.624859452247620), COEF_CONST(-1.40559673309326), COEF_CONST( 0.155877828598022), | ||
1476 | COEF_CONST(0.585797846317291), COEF_CONST(-1.39625501632690), COEF_CONST( 0.224659323692322), | ||
1477 | COEF_CONST(0.545324981212616), COEF_CONST(-1.38354969024658), COEF_CONST( 0.292899727821350), | ||
1478 | COEF_CONST(0.503538429737091), COEF_CONST(-1.36751127243042), COEF_CONST( 0.360434412956238), | ||
1479 | COEF_CONST(0.460538715124130), COEF_CONST(-1.34817838668823), COEF_CONST( 0.427100926637650), | ||
1480 | COEF_CONST(0.416429549455643), COEF_CONST(-1.32559752464294), COEF_CONST( 0.492738455533981), | ||
1481 | COEF_CONST(0.371317148208618), COEF_CONST(-1.29982328414917), COEF_CONST( 0.557188928127289), | ||
1482 | COEF_CONST(0.325310230255127), COEF_CONST(-1.27091765403748), COEF_CONST( 0.620297133922577), | ||
1483 | COEF_CONST(0.278519600629807), COEF_CONST(-1.23895013332367), COEF_CONST( 0.681910991668701), | ||
1484 | COEF_CONST(0.231058135628700), COEF_CONST(-1.20399808883667), COEF_CONST( 0.741881847381592), | ||
1485 | COEF_CONST(0.183039888739586), COEF_CONST(-1.16614532470703), COEF_CONST( 0.800065577030182), | ||
1486 | COEF_CONST(0.134580686688423), COEF_CONST(-1.12548339366913), COEF_CONST( 0.856321990489960), | ||
1487 | COEF_CONST(0.085797272622585), COEF_CONST(-1.08210992813110), COEF_CONST( 0.910515367984772), | ||
1488 | COEF_CONST(0.036807164549828), COEF_CONST(-1.03612959384918), COEF_CONST( 0.962515234947205) | ||
1489 | }; | ||
1490 | |||
1491 | /* table for post-processing within dct4_kernel() */ | ||
1492 | static const real_t dct4_post_tab[] ICONST_ATTR MEM_ALIGN_ATTR = { | ||
1493 | COEF_CONST(1 ), COEF_CONST(-1 ), COEF_CONST(-1 ), | ||
1494 | COEF_CONST(0.998795449733734), COEF_CONST(-1.04786312580109), COEF_CONST(-0.949727773666382), | ||
1495 | COEF_CONST(0.995184719562531), COEF_CONST(-1.09320187568665), COEF_CONST(-0.897167563438416), | ||
1496 | COEF_CONST(0.989176511764526), COEF_CONST(-1.13590693473816), COEF_CONST(-0.842446029186249), | ||
1497 | COEF_CONST(0.980785250663757), COEF_CONST(-1.17587554454803), COEF_CONST(-0.785694956779480), | ||
1498 | COEF_CONST(0.970031261444092), COEF_CONST(-1.21301150321960), COEF_CONST(-0.727051079273224), | ||
1499 | COEF_CONST(0.956940352916718), COEF_CONST(-1.24722504615784), COEF_CONST(-0.666655659675598), | ||
1500 | COEF_CONST(0.941544055938721), COEF_CONST(-1.27843391895294), COEF_CONST(-0.604654192924500), | ||
1501 | COEF_CONST(0.923879504203796), COEF_CONST(-1.30656290054321), COEF_CONST(-0.541196048259735), | ||
1502 | COEF_CONST(0.903989315032959), COEF_CONST(-1.33154439926148), COEF_CONST(-0.476434230804443), | ||
1503 | COEF_CONST(0.881921231746674), COEF_CONST(-1.35331797599793), COEF_CONST(-0.410524487495422), | ||
1504 | COEF_CONST(0.857728600502014), COEF_CONST(-1.37183141708374), COEF_CONST(-0.343625843524933), | ||
1505 | COEF_CONST(0.831469595432281), COEF_CONST(-1.38703989982605), COEF_CONST(-0.275899350643158), | ||
1506 | COEF_CONST(0.803207516670227), COEF_CONST(-1.39890682697296), COEF_CONST(-0.207508206367493), | ||
1507 | COEF_CONST(0.773010432720184), COEF_CONST(-1.40740370750427), COEF_CONST(-0.138617098331451), | ||
1508 | COEF_CONST(0.740951120853424), COEF_CONST(-1.41251015663147), COEF_CONST(-0.069392144680023), | ||
1509 | COEF_CONST(0.707106769084930), COEF_CONST( 0 ), COEF_CONST( 0 ), | ||
1510 | COEF_CONST(0.671558916568756), COEF_CONST(-1.41251015663147), COEF_CONST( 0.069392263889313), | ||
1511 | COEF_CONST(0.634393274784088), COEF_CONST(-1.40740370750427), COEF_CONST( 0.138617157936096), | ||
1512 | COEF_CONST(0.595699310302734), COEF_CONST(-1.39890682697296), COEF_CONST( 0.207508206367493), | ||
1513 | COEF_CONST(0.555570185184479), COEF_CONST(-1.38703989982605), COEF_CONST( 0.275899469852448), | ||
1514 | COEF_CONST(0.514102697372437), COEF_CONST(-1.37183141708374), COEF_CONST( 0.343625962734222), | ||
1515 | COEF_CONST(0.471396654844284), COEF_CONST(-1.35331797599793), COEF_CONST( 0.410524636507034), | ||
1516 | COEF_CONST(0.427555114030838), COEF_CONST(-1.33154439926148), COEF_CONST( 0.476434201002121), | ||
1517 | COEF_CONST(0.382683426141739), COEF_CONST(-1.30656290054321), COEF_CONST( 0.541196107864380), | ||
1518 | COEF_CONST(0.336889833211899), COEF_CONST(-1.27843391895294), COEF_CONST( 0.604654192924500), | ||
1519 | COEF_CONST(0.290284633636475), COEF_CONST(-1.24722504615784), COEF_CONST( 0.666655719280243), | ||
1520 | COEF_CONST(0.242980122566223), COEF_CONST(-1.21301138401031), COEF_CONST( 0.727051138877869), | ||
1521 | COEF_CONST(0.195090234279633), COEF_CONST(-1.17587554454803), COEF_CONST( 0.785695075988770), | ||
1522 | COEF_CONST(0.146730497479439), COEF_CONST(-1.13590705394745), COEF_CONST( 0.842446029186249), | ||
1523 | COEF_CONST(0.098017133772373), COEF_CONST(-1.09320187568665), COEF_CONST( 0.897167563438416), | ||
1524 | COEF_CONST(0.049067649990320), COEF_CONST(-1.04786312580109), COEF_CONST( 0.949727773666382) | ||
1525 | }; | ||
1526 | |||
1527 | // Table adapted from codeclib to fit into IRAM | ||
1528 | static const uint32_t dct4_revtab[32] ICONST_ATTR MEM_ALIGN_ATTR = { | ||
1529 | 0, 24, 12, 22, 6, 30, 11, 19, 3, 27, 15, 21, 5, 29, 9, 17, | ||
1530 | 1, 25, 13, 23, 7, 31, 10, 18, 2, 26, 14, 20, 4, 28, 8, 16}; | ||
1531 | |||
1532 | // Bufferfly used in dct4_kernel()'s pre- and post-processing | ||
1533 | #define BUTTERFLY_DCT4(out1, out2, real_part, imag_part, tab, tabidx) \ | ||
1534 | x_re = real_part; \ | ||
1535 | x_im = imag_part; \ | ||
1536 | tmp = MUL_C(x_re + x_im, tab[tabidx++]); \ | ||
1537 | out1 = MUL_C(x_re , tab[tabidx++]) + tmp; \ | ||
1538 | out2 = MUL_C(x_im , tab[tabidx++]) + tmp; | ||
1539 | |||
1540 | /* size 64 only! */ | ||
1541 | void dct4_kernel(real_t *real, real_t *imag) | ||
1542 | { | ||
1543 | uint32_t i, idx, tabidx; | ||
1544 | real_t x_re, x_im, tmp; | ||
1545 | FFTComplex xc[32]; /* used for calling codeclib's fft implementation */ | ||
1546 | |||
1547 | /* Step 2: modulate and pre-rotate for codeclib's fft implementation */ | ||
1548 | // 3*32=96 multiplications | ||
1549 | // 3*32=96 additions | ||
1550 | for (i = 0, tabidx = 0; i < 32; i++) | ||
1551 | { | ||
1552 | idx = dct4_revtab[i]; | ||
1553 | BUTTERFLY_DCT4(xc[idx].im, xc[idx].re, real[i], imag[i], dct4_pre_tab, tabidx); | ||
1554 | } | ||
1555 | |||
1556 | /* Step 3: FFT (codeclib's implementation) */ | ||
1557 | ff_fft_calc_c(5, xc); | ||
1558 | |||
1559 | /* Step 4: modulate + reordering */ | ||
1560 | // 3*30+2=92 multiplications | ||
1561 | // 3*30+2=92 additions | ||
1562 | imag[0] = xc[0].im; | ||
1563 | real[0] = xc[0].re; | ||
1564 | for (i = 1, tabidx = 3*1; i < 16; i++) | ||
1565 | { | ||
1566 | idx = 32-i; | ||
1567 | BUTTERFLY_DCT4(imag[i], real[i], xc[idx].re, xc[idx].im, dct4_post_tab, tabidx); | ||
1568 | } | ||
1569 | // i = 16, idx = 16 = reorder_tab[16]; | ||
1570 | x_re = xc[16].re; | ||
1571 | x_im = xc[16].im; | ||
1572 | imag[16] = MUL_C(x_im - x_re, COEF_CONST(0.707106769084930)); | ||
1573 | real[16] = MUL_C(x_re + x_im, COEF_CONST(0.707106769084930)); | ||
1574 | for (i = 17, tabidx = 3*17; i < 32; i++) | ||
1575 | { | ||
1576 | idx = 32-i; | ||
1577 | BUTTERFLY_DCT4(imag[i], real[i], xc[idx].re, xc[idx].im, dct4_post_tab, tabidx); | ||
1578 | } | ||
1579 | } | ||
1580 | |||
1581 | void DST4_32(real_t *y, real_t *x) | ||
1582 | { | ||
1583 | real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9; | ||
1584 | real_t f10, f11, f12, f13, f14, f15, f16, f17, f18, f19; | ||
1585 | real_t f20, f21, f22, f23, f24, f25, f26, f27, f28, f29; | ||
1586 | real_t f30, f31, f32, f33, f34, f35, f36, f37, f38, f39; | ||
1587 | real_t f40, f41, f42, f43, f44, f45, f46, f47, f48, f49; | ||
1588 | real_t f50, f51, f52, f53, f54, f55, f56, f57, f58, f59; | ||
1589 | real_t f60, f61, f62, f63, f64, f65, f66, f67, f68, f69; | ||
1590 | real_t f70, f71, f72, f73, f74, f75, f76, f77, f78, f79; | ||
1591 | real_t f80, f81, f82, f83, f84, f85, f86, f87, f88, f89; | ||
1592 | real_t f90, f91, f92, f93, f94, f95, f96, f97, f98, f99; | ||
1593 | real_t f100, f101, f102, f103, f104, f105, f106, f107, f108, f109; | ||
1594 | real_t f110, f111, f112, f113, f114, f115, f116, f117, f118, f119; | ||
1595 | real_t f120, f121, f122, f123, f124, f125, f126, f127, f128, f129; | ||
1596 | real_t f130, f131, f132, f133, f134, f135, f136, f137, f138, f139; | ||
1597 | real_t f140, f141, f142, f143, f144, f145, f146, f147, f148, f149; | ||
1598 | real_t f150, f151, f152, f153, f154, f155, f156, f157, f158, f159; | ||
1599 | real_t f160, f161, f162, f163, f164, f165, f166, f167, f168, f169; | ||
1600 | real_t f170, f171, f172, f173, f174, f175, f176, f177, f178, f179; | ||
1601 | real_t f180, f181, f182, f183, f184, f185, f186, f187, f188, f189; | ||
1602 | real_t f190, f191, f192, f193, f194, f195, f196, f197, f198, f199; | ||
1603 | real_t f200, f201, f202, f203, f204, f205, f206, f207, f208, f209; | ||
1604 | real_t f210, f211, f212, f213, f214, f215, f216, f217, f218, f219; | ||
1605 | real_t f220, f221, f222, f223, f224, f225, f226, f227, f228, f229; | ||
1606 | real_t f230, f231, f232, f233, f234, f235, f236, f237, f238, f239; | ||
1607 | real_t f240, f241, f242, f243, f244, f245, f246, f247, f248, f249; | ||
1608 | real_t f250, f251, f252, f253, f254, f255, f256, f257, f258, f259; | ||
1609 | real_t f260, f261, f262, f263, f264, f265, f266, f267, f268, f269; | ||
1610 | real_t f270, f271, f272, f273, f274, f275, f276, f277, f278, f279; | ||
1611 | real_t f280, f281, f282, f283, f284, f285, f286, f287, f288, f289; | ||
1612 | real_t f290, f291, f292, f293, f294, f295, f296, f297, f298, f299; | ||
1613 | real_t f300, f301, f302, f303, f304, f305, f306, f307, f308, f309; | ||
1614 | real_t f310, f311, f312, f313, f314, f315, f316, f317, f318, f319; | ||
1615 | real_t f320, f321, f322, f323, f324, f325, f326, f327, f328, f329; | ||
1616 | real_t f330, f331, f332, f333, f334, f335; | ||
1617 | |||
1618 | f0 = x[0] - x[1]; | ||
1619 | f1 = x[2] - x[1]; | ||
1620 | f2 = x[2] - x[3]; | ||
1621 | f3 = x[4] - x[3]; | ||
1622 | f4 = x[4] - x[5]; | ||
1623 | f5 = x[6] - x[5]; | ||
1624 | f6 = x[6] - x[7]; | ||
1625 | f7 = x[8] - x[7]; | ||
1626 | f8 = x[8] - x[9]; | ||
1627 | f9 = x[10] - x[9]; | ||
1628 | f10 = x[10] - x[11]; | ||
1629 | f11 = x[12] - x[11]; | ||
1630 | f12 = x[12] - x[13]; | ||
1631 | f13 = x[14] - x[13]; | ||
1632 | f14 = x[14] - x[15]; | ||
1633 | f15 = x[16] - x[15]; | ||
1634 | f16 = x[16] - x[17]; | ||
1635 | f17 = x[18] - x[17]; | ||
1636 | f18 = x[18] - x[19]; | ||
1637 | f19 = x[20] - x[19]; | ||
1638 | f20 = x[20] - x[21]; | ||
1639 | f21 = x[22] - x[21]; | ||
1640 | f22 = x[22] - x[23]; | ||
1641 | f23 = x[24] - x[23]; | ||
1642 | f24 = x[24] - x[25]; | ||
1643 | f25 = x[26] - x[25]; | ||
1644 | f26 = x[26] - x[27]; | ||
1645 | f27 = x[28] - x[27]; | ||
1646 | f28 = x[28] - x[29]; | ||
1647 | f29 = x[30] - x[29]; | ||
1648 | f30 = x[30] - x[31]; | ||
1649 | f31 = MUL_F(FRAC_CONST(0.7071067811865476), f15); | ||
1650 | f32 = x[0] - f31; | ||
1651 | f33 = x[0] + f31; | ||
1652 | f34 = f7 + f23; | ||
1653 | f35 = MUL_C(COEF_CONST(1.3065629648763766), f7); | ||
1654 | f36 = MUL_F(FRAC_CONST(-0.9238795325112866), f34); | ||
1655 | f37 = MUL_F(FRAC_CONST(-0.5411961001461967), f23); | ||
1656 | f38 = f35 + f36; | ||
1657 | f39 = f37 - f36; | ||
1658 | f40 = f33 - f39; | ||
1659 | f41 = f33 + f39; | ||
1660 | f42 = f32 - f38; | ||
1661 | f43 = f32 + f38; | ||
1662 | f44 = f11 - f19; | ||
1663 | f45 = f11 + f19; | ||
1664 | f46 = MUL_F(FRAC_CONST(0.7071067811865476), f45); | ||
1665 | f47 = f3 - f46; | ||
1666 | f48 = f3 + f46; | ||
1667 | f49 = MUL_F(FRAC_CONST(0.7071067811865476), f44); | ||
1668 | f50 = f49 - f27; | ||
1669 | f51 = f49 + f27; | ||
1670 | f52 = f51 + f48; | ||
1671 | f53 = MUL_F(FRAC_CONST(-0.7856949583871021), f51); | ||
1672 | f54 = MUL_F(FRAC_CONST(0.9807852804032304), f52); | ||
1673 | f55 = MUL_C(COEF_CONST(1.1758756024193588), f48); | ||
1674 | f56 = f53 + f54; | ||
1675 | f57 = f55 - f54; | ||
1676 | f58 = f50 + f47; | ||
1677 | f59 = MUL_F(FRAC_CONST(-0.2758993792829430), f50); | ||
1678 | f60 = MUL_F(FRAC_CONST(0.8314696123025452), f58); | ||
1679 | f61 = MUL_C(COEF_CONST(1.3870398453221475), f47); | ||
1680 | f62 = f59 + f60; | ||
1681 | f63 = f61 - f60; | ||
1682 | f64 = f41 - f56; | ||
1683 | f65 = f41 + f56; | ||
1684 | f66 = f43 - f62; | ||
1685 | f67 = f43 + f62; | ||
1686 | f68 = f42 - f63; | ||
1687 | f69 = f42 + f63; | ||
1688 | f70 = f40 - f57; | ||
1689 | f71 = f40 + f57; | ||
1690 | f72 = f5 - f9; | ||
1691 | f73 = f5 + f9; | ||
1692 | f74 = f13 - f17; | ||
1693 | f75 = f13 + f17; | ||
1694 | f76 = f21 - f25; | ||
1695 | f77 = f21 + f25; | ||
1696 | f78 = MUL_F(FRAC_CONST(0.7071067811865476), f75); | ||
1697 | f79 = f1 - f78; | ||
1698 | f80 = f1 + f78; | ||
1699 | f81 = f73 + f77; | ||
1700 | f82 = MUL_C(COEF_CONST(1.3065629648763766), f73); | ||
1701 | f83 = MUL_F(FRAC_CONST(-0.9238795325112866), f81); | ||
1702 | f84 = MUL_F(FRAC_CONST(-0.5411961001461967), f77); | ||
1703 | f85 = f82 + f83; | ||
1704 | f86 = f84 - f83; | ||
1705 | f87 = f80 - f86; | ||
1706 | f88 = f80 + f86; | ||
1707 | f89 = f79 - f85; | ||
1708 | f90 = f79 + f85; | ||
1709 | f91 = MUL_F(FRAC_CONST(0.7071067811865476), f74); | ||
1710 | f92 = f29 - f91; | ||
1711 | f93 = f29 + f91; | ||
1712 | f94 = f76 + f72; | ||
1713 | f95 = MUL_C(COEF_CONST(1.3065629648763766), f76); | ||
1714 | f96 = MUL_F(FRAC_CONST(-0.9238795325112866), f94); | ||
1715 | f97 = MUL_F(FRAC_CONST(-0.5411961001461967), f72); | ||
1716 | f98 = f95 + f96; | ||
1717 | f99 = f97 - f96; | ||
1718 | f100 = f93 - f99; | ||
1719 | f101 = f93 + f99; | ||
1720 | f102 = f92 - f98; | ||
1721 | f103 = f92 + f98; | ||
1722 | f104 = f101 + f88; | ||
1723 | f105 = MUL_F(FRAC_CONST(-0.8971675863426361), f101); | ||
1724 | f106 = MUL_F(FRAC_CONST(0.9951847266721968), f104); | ||
1725 | f107 = MUL_C(COEF_CONST(1.0932018670017576), f88); | ||
1726 | f108 = f105 + f106; | ||
1727 | f109 = f107 - f106; | ||
1728 | f110 = f90 - f103; | ||
1729 | f111 = MUL_F(FRAC_CONST(-0.6666556584777466), f103); | ||
1730 | f112 = MUL_F(FRAC_CONST(0.9569403357322089), f110); | ||
1731 | f113 = MUL_C(COEF_CONST(1.2472250129866713), f90); | ||
1732 | f114 = f112 - f111; | ||
1733 | f115 = f113 - f112; | ||
1734 | f116 = f102 + f89; | ||
1735 | f117 = MUL_F(FRAC_CONST(-0.4105245275223571), f102); | ||
1736 | f118 = MUL_F(FRAC_CONST(0.8819212643483549), f116); | ||
1737 | f119 = MUL_C(COEF_CONST(1.3533180011743529), f89); | ||
1738 | f120 = f117 + f118; | ||
1739 | f121 = f119 - f118; | ||
1740 | f122 = f87 - f100; | ||
1741 | f123 = MUL_F(FRAC_CONST(-0.1386171691990915), f100); | ||
1742 | f124 = MUL_F(FRAC_CONST(0.7730104533627370), f122); | ||
1743 | f125 = MUL_C(COEF_CONST(1.4074037375263826), f87); | ||
1744 | f126 = f124 - f123; | ||
1745 | f127 = f125 - f124; | ||
1746 | f128 = f65 - f108; | ||
1747 | f129 = f65 + f108; | ||
1748 | f130 = f67 - f114; | ||
1749 | f131 = f67 + f114; | ||
1750 | f132 = f69 - f120; | ||
1751 | f133 = f69 + f120; | ||
1752 | f134 = f71 - f126; | ||
1753 | f135 = f71 + f126; | ||
1754 | f136 = f70 - f127; | ||
1755 | f137 = f70 + f127; | ||
1756 | f138 = f68 - f121; | ||
1757 | f139 = f68 + f121; | ||
1758 | f140 = f66 - f115; | ||
1759 | f141 = f66 + f115; | ||
1760 | f142 = f64 - f109; | ||
1761 | f143 = f64 + f109; | ||
1762 | f144 = f0 + f30; | ||
1763 | f145 = MUL_C(COEF_CONST(1.0478631305325901), f0); | ||
1764 | f146 = MUL_F(FRAC_CONST(-0.9987954562051724), f144); | ||
1765 | f147 = MUL_F(FRAC_CONST(-0.9497277818777548), f30); | ||
1766 | f148 = f145 + f146; | ||
1767 | f149 = f147 - f146; | ||
1768 | f150 = f4 + f26; | ||
1769 | f151 = MUL_F(FRAC_CONST(1.2130114330978077), f4); | ||
1770 | f152 = MUL_F(FRAC_CONST(-0.9700312531945440), f150); | ||
1771 | f153 = MUL_F(FRAC_CONST(-0.7270510732912803), f26); | ||
1772 | f154 = f151 + f152; | ||
1773 | f155 = f153 - f152; | ||
1774 | f156 = f8 + f22; | ||
1775 | f157 = MUL_C(COEF_CONST(1.3315443865537255), f8); | ||
1776 | f158 = MUL_F(FRAC_CONST(-0.9039892931234433), f156); | ||
1777 | f159 = MUL_F(FRAC_CONST(-0.4764341996931612), f22); | ||
1778 | f160 = f157 + f158; | ||
1779 | f161 = f159 - f158; | ||
1780 | f162 = f12 + f18; | ||
1781 | f163 = MUL_C(COEF_CONST(1.3989068359730781), f12); | ||
1782 | f164 = MUL_F(FRAC_CONST(-0.8032075314806453), f162); | ||
1783 | f165 = MUL_F(FRAC_CONST(-0.2075082269882124), f18); | ||
1784 | f166 = f163 + f164; | ||
1785 | f167 = f165 - f164; | ||
1786 | f168 = f16 + f14; | ||
1787 | f169 = MUL_C(COEF_CONST(1.4125100802019777), f16); | ||
1788 | f170 = MUL_F(FRAC_CONST(-0.6715589548470187), f168); | ||
1789 | f171 = MUL_F(FRAC_CONST(0.0693921705079402), f14); | ||
1790 | f172 = f169 + f170; | ||
1791 | f173 = f171 - f170; | ||
1792 | f174 = f20 + f10; | ||
1793 | f175 = MUL_C(COEF_CONST(1.3718313541934939), f20); | ||
1794 | f176 = MUL_F(FRAC_CONST(-0.5141027441932219), f174); | ||
1795 | f177 = MUL_F(FRAC_CONST(0.3436258658070501), f10); | ||
1796 | f178 = f175 + f176; | ||
1797 | f179 = f177 - f176; | ||
1798 | f180 = f24 + f6; | ||
1799 | f181 = MUL_C(COEF_CONST(1.2784339185752409), f24); | ||
1800 | f182 = MUL_F(FRAC_CONST(-0.3368898533922200), f180); | ||
1801 | f183 = MUL_F(FRAC_CONST(0.6046542117908008), f6); | ||
1802 | f184 = f181 + f182; | ||
1803 | f185 = f183 - f182; | ||
1804 | f186 = f28 + f2; | ||
1805 | f187 = MUL_C(COEF_CONST(1.1359069844201433), f28); | ||
1806 | f188 = MUL_F(FRAC_CONST(-0.1467304744553624), f186); | ||
1807 | f189 = MUL_F(FRAC_CONST(0.8424460355094185), f2); | ||
1808 | f190 = f187 + f188; | ||
1809 | f191 = f189 - f188; | ||
1810 | f192 = f149 - f173; | ||
1811 | f193 = f149 + f173; | ||
1812 | f194 = f148 - f172; | ||
1813 | f195 = f148 + f172; | ||
1814 | f196 = f155 - f179; | ||
1815 | f197 = f155 + f179; | ||
1816 | f198 = f154 - f178; | ||
1817 | f199 = f154 + f178; | ||
1818 | f200 = f161 - f185; | ||
1819 | f201 = f161 + f185; | ||
1820 | f202 = f160 - f184; | ||
1821 | f203 = f160 + f184; | ||
1822 | f204 = f167 - f191; | ||
1823 | f205 = f167 + f191; | ||
1824 | f206 = f166 - f190; | ||
1825 | f207 = f166 + f190; | ||
1826 | f208 = f192 + f194; | ||
1827 | f209 = MUL_C(COEF_CONST(1.1758756024193588), f192); | ||
1828 | f210 = MUL_F(FRAC_CONST(-0.9807852804032304), f208); | ||
1829 | f211 = MUL_F(FRAC_CONST(-0.7856949583871021), f194); | ||
1830 | f212 = f209 + f210; | ||
1831 | f213 = f211 - f210; | ||
1832 | f214 = f196 + f198; | ||
1833 | f215 = MUL_C(COEF_CONST(1.3870398453221475), f196); | ||
1834 | f216 = MUL_F(FRAC_CONST(-0.5555702330196022), f214); | ||
1835 | f217 = MUL_F(FRAC_CONST(0.2758993792829431), f198); | ||
1836 | f218 = f215 + f216; | ||
1837 | f219 = f217 - f216; | ||
1838 | f220 = f200 + f202; | ||
1839 | f221 = MUL_F(FRAC_CONST(0.7856949583871022), f200); | ||
1840 | f222 = MUL_F(FRAC_CONST(0.1950903220161283), f220); | ||
1841 | f223 = MUL_C(COEF_CONST(1.1758756024193586), f202); | ||
1842 | f224 = f221 + f222; | ||
1843 | f225 = f223 - f222; | ||
1844 | f226 = f204 + f206; | ||
1845 | f227 = MUL_F(FRAC_CONST(-0.2758993792829430), f204); | ||
1846 | f228 = MUL_F(FRAC_CONST(0.8314696123025452), f226); | ||
1847 | f229 = MUL_C(COEF_CONST(1.3870398453221475), f206); | ||
1848 | f230 = f227 + f228; | ||
1849 | f231 = f229 - f228; | ||
1850 | f232 = f193 - f201; | ||
1851 | f233 = f193 + f201; | ||
1852 | f234 = f195 - f203; | ||
1853 | f235 = f195 + f203; | ||
1854 | f236 = f197 - f205; | ||
1855 | f237 = f197 + f205; | ||
1856 | f238 = f199 - f207; | ||
1857 | f239 = f199 + f207; | ||
1858 | f240 = f213 - f225; | ||
1859 | f241 = f213 + f225; | ||
1860 | f242 = f212 - f224; | ||
1861 | f243 = f212 + f224; | ||
1862 | f244 = f219 - f231; | ||
1863 | f245 = f219 + f231; | ||
1864 | f246 = f218 - f230; | ||
1865 | f247 = f218 + f230; | ||
1866 | f248 = f232 + f234; | ||
1867 | f249 = MUL_C(COEF_CONST(1.3065629648763766), f232); | ||
1868 | f250 = MUL_F(FRAC_CONST(-0.9238795325112866), f248); | ||
1869 | f251 = MUL_F(FRAC_CONST(-0.5411961001461967), f234); | ||
1870 | f252 = f249 + f250; | ||
1871 | f253 = f251 - f250; | ||
1872 | f254 = f236 + f238; | ||
1873 | f255 = MUL_F(FRAC_CONST(0.5411961001461969), f236); | ||
1874 | f256 = MUL_F(FRAC_CONST(0.3826834323650898), f254); | ||
1875 | f257 = MUL_C(COEF_CONST(1.3065629648763766), f238); | ||
1876 | f258 = f255 + f256; | ||
1877 | f259 = f257 - f256; | ||
1878 | f260 = f240 + f242; | ||
1879 | f261 = MUL_C(COEF_CONST(1.3065629648763766), f240); | ||
1880 | f262 = MUL_F(FRAC_CONST(-0.9238795325112866), f260); | ||
1881 | f263 = MUL_F(FRAC_CONST(-0.5411961001461967), f242); | ||
1882 | f264 = f261 + f262; | ||
1883 | f265 = f263 - f262; | ||
1884 | f266 = f244 + f246; | ||
1885 | f267 = MUL_F(FRAC_CONST(0.5411961001461969), f244); | ||
1886 | f268 = MUL_F(FRAC_CONST(0.3826834323650898), f266); | ||
1887 | f269 = MUL_C(COEF_CONST(1.3065629648763766), f246); | ||
1888 | f270 = f267 + f268; | ||
1889 | f271 = f269 - f268; | ||
1890 | f272 = f233 - f237; | ||
1891 | f273 = f233 + f237; | ||
1892 | f274 = f235 - f239; | ||
1893 | f275 = f235 + f239; | ||
1894 | f276 = f253 - f259; | ||
1895 | f277 = f253 + f259; | ||
1896 | f278 = f252 - f258; | ||
1897 | f279 = f252 + f258; | ||
1898 | f280 = f241 - f245; | ||
1899 | f281 = f241 + f245; | ||
1900 | f282 = f243 - f247; | ||
1901 | f283 = f243 + f247; | ||
1902 | f284 = f265 - f271; | ||
1903 | f285 = f265 + f271; | ||
1904 | f286 = f264 - f270; | ||
1905 | f287 = f264 + f270; | ||
1906 | f288 = f272 - f274; | ||
1907 | f289 = f272 + f274; | ||
1908 | f290 = MUL_F(FRAC_CONST(0.7071067811865474), f288); | ||
1909 | f291 = MUL_F(FRAC_CONST(0.7071067811865474), f289); | ||
1910 | f292 = f276 - f278; | ||
1911 | f293 = f276 + f278; | ||
1912 | f294 = MUL_F(FRAC_CONST(0.7071067811865474), f292); | ||
1913 | f295 = MUL_F(FRAC_CONST(0.7071067811865474), f293); | ||
1914 | f296 = f280 - f282; | ||
1915 | f297 = f280 + f282; | ||
1916 | f298 = MUL_F(FRAC_CONST(0.7071067811865474), f296); | ||
1917 | f299 = MUL_F(FRAC_CONST(0.7071067811865474), f297); | ||
1918 | f300 = f284 - f286; | ||
1919 | f301 = f284 + f286; | ||
1920 | f302 = MUL_F(FRAC_CONST(0.7071067811865474), f300); | ||
1921 | f303 = MUL_F(FRAC_CONST(0.7071067811865474), f301); | ||
1922 | f304 = f129 - f273; | ||
1923 | f305 = f129 + f273; | ||
1924 | f306 = f131 - f281; | ||
1925 | f307 = f131 + f281; | ||
1926 | f308 = f133 - f285; | ||
1927 | f309 = f133 + f285; | ||
1928 | f310 = f135 - f277; | ||
1929 | f311 = f135 + f277; | ||
1930 | f312 = f137 - f295; | ||
1931 | f313 = f137 + f295; | ||
1932 | f314 = f139 - f303; | ||
1933 | f315 = f139 + f303; | ||
1934 | f316 = f141 - f299; | ||
1935 | f317 = f141 + f299; | ||
1936 | f318 = f143 - f291; | ||
1937 | f319 = f143 + f291; | ||
1938 | f320 = f142 - f290; | ||
1939 | f321 = f142 + f290; | ||
1940 | f322 = f140 - f298; | ||
1941 | f323 = f140 + f298; | ||
1942 | f324 = f138 - f302; | ||
1943 | f325 = f138 + f302; | ||
1944 | f326 = f136 - f294; | ||
1945 | f327 = f136 + f294; | ||
1946 | f328 = f134 - f279; | ||
1947 | f329 = f134 + f279; | ||
1948 | f330 = f132 - f287; | ||
1949 | f331 = f132 + f287; | ||
1950 | f332 = f130 - f283; | ||
1951 | f333 = f130 + f283; | ||
1952 | f334 = f128 - f275; | ||
1953 | f335 = f128 + f275; | ||
1954 | y[31] = MUL_F(FRAC_CONST(0.5001506360206510), f305); | ||
1955 | y[30] = MUL_F(FRAC_CONST(0.5013584524464084), f307); | ||
1956 | y[29] = MUL_F(FRAC_CONST(0.5037887256810443), f309); | ||
1957 | y[28] = MUL_F(FRAC_CONST(0.5074711720725553), f311); | ||
1958 | y[27] = MUL_F(FRAC_CONST(0.5124514794082247), f313); | ||
1959 | y[26] = MUL_F(FRAC_CONST(0.5187927131053328), f315); | ||
1960 | y[25] = MUL_F(FRAC_CONST(0.5265773151542700), f317); | ||
1961 | y[24] = MUL_F(FRAC_CONST(0.5359098169079920), f319); | ||
1962 | y[23] = MUL_F(FRAC_CONST(0.5469204379855088), f321); | ||
1963 | y[22] = MUL_F(FRAC_CONST(0.5597698129470802), f323); | ||
1964 | y[21] = MUL_F(FRAC_CONST(0.5746551840326600), f325); | ||
1965 | y[20] = MUL_F(FRAC_CONST(0.5918185358574165), f327); | ||
1966 | y[19] = MUL_F(FRAC_CONST(0.6115573478825099), f329); | ||
1967 | y[18] = MUL_F(FRAC_CONST(0.6342389366884031), f331); | ||
1968 | y[17] = MUL_F(FRAC_CONST(0.6603198078137061), f333); | ||
1969 | y[16] = MUL_F(FRAC_CONST(0.6903721282002123), f335); | ||
1970 | y[15] = MUL_F(FRAC_CONST(0.7251205223771985), f334); | ||
1971 | y[14] = MUL_F(FRAC_CONST(0.7654941649730891), f332); | ||
1972 | y[13] = MUL_F(FRAC_CONST(0.8127020908144905), f330); | ||
1973 | y[12] = MUL_F(FRAC_CONST(0.8683447152233481), f328); | ||
1974 | y[11] = MUL_F(FRAC_CONST(0.9345835970364075), f326); | ||
1975 | y[10] = MUL_C(COEF_CONST(1.0144082649970547), f324); | ||
1976 | y[9] = MUL_C(COEF_CONST(1.1120716205797176), f322); | ||
1977 | y[8] = MUL_C(COEF_CONST(1.2338327379765710), f320); | ||
1978 | y[7] = MUL_C(COEF_CONST(1.3892939586328277), f318); | ||
1979 | y[6] = MUL_C(COEF_CONST(1.5939722833856311), f316); | ||
1980 | y[5] = MUL_C(COEF_CONST(1.8746759800084078), f314); | ||
1981 | y[4] = MUL_C(COEF_CONST(2.2820500680051619), f312); | ||
1982 | y[3] = MUL_C(COEF_CONST(2.9246284281582162), f310); | ||
1983 | y[2] = MUL_C(COEF_CONST(4.0846110781292477), f308); | ||
1984 | y[1] = MUL_C(COEF_CONST(6.7967507116736332), f306); | ||
1985 | y[0] = MUL_R(REAL_CONST(20.3738781672314530), f304); | ||
1986 | } | ||
1987 | |||
1988 | #endif /* #ifdef SBR_LOW_POWER */ | ||
1989 | |||
1990 | #endif /* #ifdef SBR_DEC */ | ||
diff --git a/lib/rbcodec/codecs/libfaad/sbr_dct.h b/lib/rbcodec/codecs/libfaad/sbr_dct.h new file mode 100644 index 0000000000..95394df307 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/sbr_dct.h | |||
@@ -0,0 +1,49 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __SBR_DCT_H__ | ||
29 | #define __SBR_DCT_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | void dct4_kernel(real_t *real, real_t *imag); | ||
36 | |||
37 | void DCT3_32_unscaled(real_t *y, real_t *x); | ||
38 | void DCT4_32(real_t *y, real_t *x); | ||
39 | void DST4_32(real_t *y, real_t *x); | ||
40 | void DCT2_32_unscaled(real_t *y, real_t *x); | ||
41 | void DCT4_16(real_t *y, real_t *x); | ||
42 | void DCT2_16_unscaled(real_t *y, real_t *x); | ||
43 | |||
44 | |||
45 | #ifdef __cplusplus | ||
46 | } | ||
47 | #endif | ||
48 | #endif | ||
49 | |||
diff --git a/lib/rbcodec/codecs/libfaad/sbr_dec.c b/lib/rbcodec/codecs/libfaad/sbr_dec.c new file mode 100644 index 0000000000..21e8e028a1 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/sbr_dec.c | |||
@@ -0,0 +1,597 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | |||
29 | #include "common.h" | ||
30 | #include "structs.h" | ||
31 | |||
32 | #ifdef SBR_DEC | ||
33 | |||
34 | #include <string.h> | ||
35 | #include <stdlib.h> | ||
36 | |||
37 | #include "syntax.h" | ||
38 | #include "bits.h" | ||
39 | #include "sbr_syntax.h" | ||
40 | #include "sbr_qmf.h" | ||
41 | #include "sbr_hfgen.h" | ||
42 | #include "sbr_hfadj.h" | ||
43 | |||
44 | /* type definitons */ | ||
45 | typedef struct { | ||
46 | #if (defined(PS_DEC) || defined(DRM_PS)) | ||
47 | /* In case of PS_DEC or DRM_PS we need larger buffer data when calling | ||
48 | * ps_decode() or drm_ps_decode(). */ | ||
49 | qmf_t X_L[MAX_NTSRPS][64]; | ||
50 | qmf_t X_R[MAX_NTSRPS][64]; | ||
51 | #else | ||
52 | /* No PS functions called. Keep using MAX_NTSR as array size. */ | ||
53 | qmf_t X_L[MAX_NTSR][64]; | ||
54 | qmf_t X_R[MAX_NTSR][64]; | ||
55 | #endif | ||
56 | } XLR_t; | ||
57 | |||
58 | /* static variables */ | ||
59 | static XLR_t *p_XLR = NULL; | ||
60 | #if defined(FAAD_STATIC_ALLOC) || defined(HAVE_FAAD_XLR_IN_IRAM) | ||
61 | static XLR_t s_XLR IBSS_ATTR_FAAD_XLR MEM_ALIGN_ATTR; | ||
62 | #endif | ||
63 | #if defined(FAAD_STATIC_ALLOC) | ||
64 | static sbr_info s_sbr[MAX_SYNTAX_ELEMENTS]; | ||
65 | #endif | ||
66 | #ifdef SBR_LOW_POWER | ||
67 | static real_t deg[64] MEM_ALIGN_ATTR; | ||
68 | #endif | ||
69 | |||
70 | /* static function declarations */ | ||
71 | static uint8_t sbr_save_prev_data(sbr_info *sbr, uint8_t ch); | ||
72 | static void sbr_save_matrix(sbr_info *sbr, uint8_t ch); | ||
73 | |||
74 | |||
75 | sbr_info *sbrDecodeInit(uint16_t framelength, uint8_t id_aac, uint8_t id_ele, | ||
76 | uint32_t sample_rate, uint8_t downSampledSBR, | ||
77 | uint8_t IsDRM) | ||
78 | { | ||
79 | (void)downSampledSBR; | ||
80 | #ifndef DRM | ||
81 | (void)IsDRM; | ||
82 | #endif | ||
83 | |||
84 | /* Allocate sbr_info. */ | ||
85 | #if defined(FAAD_STATIC_ALLOC) | ||
86 | sbr_info *sbr = &s_sbr[id_ele]; | ||
87 | #else | ||
88 | (void)id_ele; | ||
89 | sbr_info *sbr = (sbr_info*)faad_malloc(sizeof(sbr_info)); | ||
90 | if (sbr == NULL) | ||
91 | { | ||
92 | /* could not allocate memory */ | ||
93 | return NULL; | ||
94 | } | ||
95 | #endif | ||
96 | memset(sbr, 0, sizeof(sbr_info)); | ||
97 | |||
98 | #ifdef PS_DEC | ||
99 | /* initialize PS variables */ | ||
100 | ps_init(&sbr->ps); | ||
101 | #endif | ||
102 | |||
103 | /* Allocate XLR temporary variable. Use static allocation if either | ||
104 | * FAAD_STATIC_ALLOC is set or XLR fits to IRAM. */ | ||
105 | #if defined(FAAD_STATIC_ALLOC) || defined(HAVE_FAAD_XLR_IN_IRAM) | ||
106 | p_XLR = &s_XLR; | ||
107 | #else | ||
108 | p_XLR = (XLR_t*)faad_malloc(sizeof(XLR_t)); | ||
109 | if (p_XLR == NULL) | ||
110 | { | ||
111 | /* could not allocate memory */ | ||
112 | return NULL; | ||
113 | } | ||
114 | #endif | ||
115 | memset(p_XLR, 0, sizeof(XLR_t)); | ||
116 | |||
117 | /* save id of the parent element */ | ||
118 | sbr->id_aac = id_aac; | ||
119 | sbr->sample_rate = sample_rate; | ||
120 | |||
121 | sbr->bs_freq_scale = 2; | ||
122 | sbr->bs_alter_scale = 1; | ||
123 | sbr->bs_noise_bands = 2; | ||
124 | sbr->bs_limiter_bands = 2; | ||
125 | sbr->bs_limiter_gains = 2; | ||
126 | sbr->bs_interpol_freq = 1; | ||
127 | sbr->bs_smoothing_mode = 1; | ||
128 | sbr->bs_start_freq = 5; | ||
129 | sbr->bs_amp_res = 1; | ||
130 | sbr->bs_samplerate_mode = 1; | ||
131 | sbr->prevEnvIsShort[0] = -1; | ||
132 | sbr->prevEnvIsShort[1] = -1; | ||
133 | sbr->header_count = 0; | ||
134 | sbr->Reset = 1; | ||
135 | |||
136 | #ifdef DRM | ||
137 | sbr->Is_DRM_SBR = IsDRM; | ||
138 | #endif | ||
139 | sbr->tHFGen = T_HFGEN; | ||
140 | sbr->tHFAdj = T_HFADJ; | ||
141 | |||
142 | sbr->bsco = 0; | ||
143 | sbr->bsco_prev = 0; | ||
144 | sbr->M_prev = 0; | ||
145 | sbr->frame_len = framelength; | ||
146 | |||
147 | /* force sbr reset */ | ||
148 | sbr->bs_start_freq_prev = -1; | ||
149 | |||
150 | if (framelength == 960) | ||
151 | { | ||
152 | sbr->numTimeSlotsRate = RATE * NO_TIME_SLOTS_960; | ||
153 | sbr->numTimeSlots = NO_TIME_SLOTS_960; | ||
154 | } else { | ||
155 | sbr->numTimeSlotsRate = RATE * NO_TIME_SLOTS; | ||
156 | sbr->numTimeSlots = NO_TIME_SLOTS; | ||
157 | } | ||
158 | |||
159 | sbr->GQ_ringbuf_index[0] = 0; | ||
160 | sbr->GQ_ringbuf_index[1] = 0; | ||
161 | |||
162 | memset(sbr->qmfa, 0, 2*sizeof(qmfa_info)); | ||
163 | memset(sbr->qmfs, 0, 2*sizeof(qmfs_info)); | ||
164 | |||
165 | memset(sbr->Xsbr[0], 0, (sbr->numTimeSlotsRate+sbr->tHFGen)*64 * sizeof(qmf_t)); | ||
166 | memset(sbr->Xsbr[1], 0, (sbr->numTimeSlotsRate+sbr->tHFGen)*64 * sizeof(qmf_t)); | ||
167 | |||
168 | return sbr; | ||
169 | } | ||
170 | |||
171 | static uint8_t sbr_save_prev_data(sbr_info *sbr, uint8_t ch) | ||
172 | { | ||
173 | uint8_t i; | ||
174 | |||
175 | /* save data for next frame */ | ||
176 | sbr->kx_prev = sbr->kx; | ||
177 | sbr->M_prev = sbr->M; | ||
178 | sbr->bsco_prev = sbr->bsco; | ||
179 | |||
180 | sbr->L_E_prev[ch] = sbr->L_E[ch]; | ||
181 | |||
182 | /* sbr->L_E[ch] can become 0 on files with bit errors */ | ||
183 | if (sbr->L_E[ch] <= 0) | ||
184 | return 19; | ||
185 | |||
186 | sbr->f_prev[ch] = sbr->f[ch][sbr->L_E[ch] - 1]; | ||
187 | for (i = 0; i < MAX_M; i++) | ||
188 | { | ||
189 | sbr->E_prev[ch][i] = sbr->E[ch][i][sbr->L_E[ch] - 1]; | ||
190 | sbr->Q_prev[ch][i] = sbr->Q[ch][i][sbr->L_Q[ch] - 1]; | ||
191 | } | ||
192 | |||
193 | for (i = 0; i < MAX_M; i++) | ||
194 | { | ||
195 | sbr->bs_add_harmonic_prev[ch][i] = sbr->bs_add_harmonic[ch][i]; | ||
196 | } | ||
197 | sbr->bs_add_harmonic_flag_prev[ch] = sbr->bs_add_harmonic_flag[ch]; | ||
198 | |||
199 | if (sbr->l_A[ch] == sbr->L_E[ch]) | ||
200 | sbr->prevEnvIsShort[ch] = 0; | ||
201 | else | ||
202 | sbr->prevEnvIsShort[ch] = -1; | ||
203 | |||
204 | return 0; | ||
205 | } | ||
206 | |||
207 | static void sbr_save_matrix(sbr_info *sbr, uint8_t ch) | ||
208 | { | ||
209 | uint8_t i; | ||
210 | |||
211 | for (i = 0; i < sbr->tHFGen; i++) | ||
212 | { | ||
213 | memmove(sbr->Xsbr[ch][i], sbr->Xsbr[ch][i+sbr->numTimeSlotsRate], 64 * sizeof(qmf_t)); | ||
214 | } | ||
215 | for (i = sbr->tHFGen; i < MAX_NTSRHFG; i++) | ||
216 | { | ||
217 | memset(sbr->Xsbr[ch][i], 0, 64 * sizeof(qmf_t)); | ||
218 | } | ||
219 | } | ||
220 | |||
221 | static void sbr_process_channel(sbr_info *sbr, real_t *channel_buf, qmf_t X[MAX_NTSR][64], | ||
222 | uint8_t ch, uint8_t dont_process, | ||
223 | const uint8_t downSampledSBR) | ||
224 | { | ||
225 | int16_t k, l; | ||
226 | |||
227 | (void)downSampledSBR; | ||
228 | #ifdef DRM | ||
229 | if (sbr->Is_DRM_SBR) | ||
230 | { | ||
231 | sbr->bsco = max((int32_t)sbr->maxAACLine*32/(int32_t)sbr->frame_len - (int32_t)sbr->kx, 0); | ||
232 | } else { | ||
233 | #endif | ||
234 | sbr->bsco = 0; | ||
235 | #ifdef DRM | ||
236 | } | ||
237 | #endif | ||
238 | |||
239 | |||
240 | //#define PRE_QMF_PRINT | ||
241 | #ifdef PRE_QMF_PRINT | ||
242 | { | ||
243 | int i; | ||
244 | for (i = 0; i < 1024; i++) | ||
245 | { | ||
246 | printf("%d\n", channel_buf[i]); | ||
247 | } | ||
248 | } | ||
249 | #endif | ||
250 | |||
251 | |||
252 | /* subband analysis */ | ||
253 | if (dont_process) | ||
254 | sbr_qmf_analysis_32(sbr, &sbr->qmfa[ch], channel_buf, sbr->Xsbr[ch], sbr->tHFGen, 32); | ||
255 | else | ||
256 | sbr_qmf_analysis_32(sbr, &sbr->qmfa[ch], channel_buf, sbr->Xsbr[ch], sbr->tHFGen, sbr->kx); | ||
257 | |||
258 | if (!dont_process) | ||
259 | { | ||
260 | #if 1 | ||
261 | /* insert high frequencies here */ | ||
262 | /* hf generation using patching */ | ||
263 | hf_generation(sbr, sbr->Xsbr[ch], sbr->Xsbr[ch] | ||
264 | #ifdef SBR_LOW_POWER | ||
265 | ,deg | ||
266 | #endif | ||
267 | ,ch); | ||
268 | #endif | ||
269 | |||
270 | #ifdef SBR_LOW_POWER | ||
271 | for (l = sbr->t_E[ch][0]; l < sbr->t_E[ch][sbr->L_E[ch]]; l++) | ||
272 | { | ||
273 | for (k = 0; k < sbr->kx; k++) | ||
274 | { | ||
275 | QMF_RE(sbr->Xsbr[ch][sbr->tHFAdj + l][k]) = 0; | ||
276 | } | ||
277 | } | ||
278 | #endif | ||
279 | |||
280 | #if 1 | ||
281 | /* hf adjustment */ | ||
282 | hf_adjustment(sbr, sbr->Xsbr[ch] | ||
283 | #ifdef SBR_LOW_POWER | ||
284 | ,deg | ||
285 | #endif | ||
286 | ,ch); | ||
287 | #endif | ||
288 | } | ||
289 | |||
290 | if ((sbr->just_seeked != 0) || dont_process) | ||
291 | { | ||
292 | for (l = 0; l < sbr->numTimeSlotsRate; l++) | ||
293 | { | ||
294 | for (k = 0; k < 32; k++) | ||
295 | { | ||
296 | QMF_RE(X[l][k]) = QMF_RE(sbr->Xsbr[ch][l + sbr->tHFAdj][k]); | ||
297 | #ifndef SBR_LOW_POWER | ||
298 | QMF_IM(X[l][k]) = QMF_IM(sbr->Xsbr[ch][l + sbr->tHFAdj][k]); | ||
299 | #endif | ||
300 | } | ||
301 | for (k = 32; k < 64; k++) | ||
302 | { | ||
303 | QMF_RE(X[l][k]) = 0; | ||
304 | #ifndef SBR_LOW_POWER | ||
305 | QMF_IM(X[l][k]) = 0; | ||
306 | #endif | ||
307 | } | ||
308 | } | ||
309 | } else { | ||
310 | for (l = 0; l < sbr->numTimeSlotsRate; l++) | ||
311 | { | ||
312 | uint8_t kx_band, M_band, bsco_band; | ||
313 | |||
314 | if (l < sbr->t_E[ch][0]) | ||
315 | { | ||
316 | kx_band = sbr->kx_prev; | ||
317 | M_band = sbr->M_prev; | ||
318 | bsco_band = sbr->bsco_prev; | ||
319 | } else { | ||
320 | kx_band = sbr->kx; | ||
321 | M_band = sbr->M; | ||
322 | bsco_band = sbr->bsco; | ||
323 | } | ||
324 | |||
325 | #ifndef SBR_LOW_POWER | ||
326 | for (k = 0; k < kx_band + bsco_band; k++) | ||
327 | { | ||
328 | QMF_RE(X[l][k]) = QMF_RE(sbr->Xsbr[ch][l + sbr->tHFAdj][k]); | ||
329 | QMF_IM(X[l][k]) = QMF_IM(sbr->Xsbr[ch][l + sbr->tHFAdj][k]); | ||
330 | } | ||
331 | for (k = kx_band + bsco_band; k < kx_band + M_band; k++) | ||
332 | { | ||
333 | QMF_RE(X[l][k]) = QMF_RE(sbr->Xsbr[ch][l + sbr->tHFAdj][k]); | ||
334 | QMF_IM(X[l][k]) = QMF_IM(sbr->Xsbr[ch][l + sbr->tHFAdj][k]); | ||
335 | } | ||
336 | for (k = max(kx_band + bsco_band, kx_band + M_band); k < 64; k++) | ||
337 | { | ||
338 | QMF_RE(X[l][k]) = 0; | ||
339 | QMF_IM(X[l][k]) = 0; | ||
340 | } | ||
341 | #else | ||
342 | for (k = 0; k < kx_band + bsco_band; k++) | ||
343 | { | ||
344 | QMF_RE(X[l][k]) = QMF_RE(sbr->Xsbr[ch][l + sbr->tHFAdj][k]); | ||
345 | } | ||
346 | for (k = kx_band + bsco_band; k < min(kx_band + M_band, 63); k++) | ||
347 | { | ||
348 | QMF_RE(X[l][k]) = QMF_RE(sbr->Xsbr[ch][l + sbr->tHFAdj][k]); | ||
349 | } | ||
350 | for (k = max(kx_band + bsco_band, kx_band + M_band); k < 64; k++) | ||
351 | { | ||
352 | QMF_RE(X[l][k]) = 0; | ||
353 | } | ||
354 | QMF_RE(X[l][kx_band - 1 + bsco_band]) += | ||
355 | QMF_RE(sbr->Xsbr[ch][l + sbr->tHFAdj][kx_band - 1 + bsco_band]); | ||
356 | #endif | ||
357 | } | ||
358 | } | ||
359 | } | ||
360 | |||
361 | uint8_t sbrDecodeCoupleFrame(sbr_info *sbr, real_t *left_chan, real_t *right_chan, | ||
362 | const uint8_t just_seeked, const uint8_t downSampledSBR) | ||
363 | { | ||
364 | uint8_t dont_process = 0; | ||
365 | uint8_t ret = 0; | ||
366 | |||
367 | if (sbr == NULL) | ||
368 | return 20; | ||
369 | |||
370 | /* case can occur due to bit errors */ | ||
371 | if (sbr->id_aac != ID_CPE) | ||
372 | return 21; | ||
373 | |||
374 | if (sbr->ret || (sbr->header_count == 0)) | ||
375 | { | ||
376 | /* don't process just upsample */ | ||
377 | dont_process = 1; | ||
378 | |||
379 | /* Re-activate reset for next frame */ | ||
380 | if (sbr->ret && sbr->Reset) | ||
381 | sbr->bs_start_freq_prev = -1; | ||
382 | } | ||
383 | |||
384 | if (just_seeked) | ||
385 | { | ||
386 | sbr->just_seeked = 1; | ||
387 | } else { | ||
388 | sbr->just_seeked = 0; | ||
389 | } | ||
390 | |||
391 | sbr_process_channel(sbr, left_chan, p_XLR->X_L, 0, dont_process, downSampledSBR); | ||
392 | /* subband synthesis */ | ||
393 | if (downSampledSBR) | ||
394 | { | ||
395 | sbr_qmf_synthesis_32(sbr, &sbr->qmfs[0], p_XLR->X_L, left_chan); | ||
396 | } else { | ||
397 | sbr_qmf_synthesis_64(sbr, &sbr->qmfs[0], p_XLR->X_L, left_chan); | ||
398 | } | ||
399 | |||
400 | sbr_process_channel(sbr, right_chan, p_XLR->X_R, 1, dont_process, downSampledSBR); | ||
401 | /* subband synthesis */ | ||
402 | if (downSampledSBR) | ||
403 | { | ||
404 | sbr_qmf_synthesis_32(sbr, &sbr->qmfs[1], p_XLR->X_R, right_chan); | ||
405 | } else { | ||
406 | sbr_qmf_synthesis_64(sbr, &sbr->qmfs[1], p_XLR->X_R, right_chan); | ||
407 | } | ||
408 | |||
409 | if (sbr->bs_header_flag) | ||
410 | sbr->just_seeked = 0; | ||
411 | |||
412 | if (sbr->header_count != 0 && sbr->ret == 0) | ||
413 | { | ||
414 | ret = sbr_save_prev_data(sbr, 0); | ||
415 | if (ret) return ret; | ||
416 | ret = sbr_save_prev_data(sbr, 1); | ||
417 | if (ret) return ret; | ||
418 | } | ||
419 | |||
420 | sbr_save_matrix(sbr, 0); | ||
421 | sbr_save_matrix(sbr, 1); | ||
422 | |||
423 | sbr->frame++; | ||
424 | |||
425 | //#define POST_QMF_PRINT | ||
426 | #ifdef POST_QMF_PRINT | ||
427 | { | ||
428 | int i; | ||
429 | for (i = 0; i < 2048; i++) | ||
430 | { | ||
431 | printf("%d\n", left_chan[i]); | ||
432 | } | ||
433 | for (i = 0; i < 2048; i++) | ||
434 | { | ||
435 | printf("%d\n", right_chan[i]); | ||
436 | } | ||
437 | } | ||
438 | #endif | ||
439 | |||
440 | return 0; | ||
441 | } | ||
442 | |||
443 | uint8_t sbrDecodeSingleFrame(sbr_info *sbr, real_t *channel, | ||
444 | const uint8_t just_seeked, const uint8_t downSampledSBR) | ||
445 | { | ||
446 | uint8_t dont_process = 0; | ||
447 | uint8_t ret = 0; | ||
448 | |||
449 | if (sbr == NULL) | ||
450 | return 20; | ||
451 | |||
452 | /* case can occur due to bit errors */ | ||
453 | if (sbr->id_aac != ID_SCE && sbr->id_aac != ID_LFE) | ||
454 | return 21; | ||
455 | |||
456 | if (sbr->ret || (sbr->header_count == 0)) | ||
457 | { | ||
458 | /* don't process just upsample */ | ||
459 | dont_process = 1; | ||
460 | |||
461 | /* Re-activate reset for next frame */ | ||
462 | if (sbr->ret && sbr->Reset) | ||
463 | sbr->bs_start_freq_prev = -1; | ||
464 | } | ||
465 | |||
466 | if (just_seeked) | ||
467 | { | ||
468 | sbr->just_seeked = 1; | ||
469 | } else { | ||
470 | sbr->just_seeked = 0; | ||
471 | } | ||
472 | |||
473 | sbr_process_channel(sbr, channel, p_XLR->X_L, 0, dont_process, downSampledSBR); | ||
474 | /* subband synthesis */ | ||
475 | if (downSampledSBR) | ||
476 | { | ||
477 | sbr_qmf_synthesis_32(sbr, &sbr->qmfs[0], p_XLR->X_L, channel); | ||
478 | } else { | ||
479 | sbr_qmf_synthesis_64(sbr, &sbr->qmfs[0], p_XLR->X_L, channel); | ||
480 | } | ||
481 | |||
482 | if (sbr->bs_header_flag) | ||
483 | sbr->just_seeked = 0; | ||
484 | |||
485 | if (sbr->header_count != 0 && sbr->ret == 0) | ||
486 | { | ||
487 | ret = sbr_save_prev_data(sbr, 0); | ||
488 | if (ret) return ret; | ||
489 | } | ||
490 | |||
491 | sbr_save_matrix(sbr, 0); | ||
492 | |||
493 | sbr->frame++; | ||
494 | |||
495 | //#define POST_QMF_PRINT | ||
496 | #ifdef POST_QMF_PRINT | ||
497 | { | ||
498 | int i; | ||
499 | for (i = 0; i < 2048; i++) | ||
500 | { | ||
501 | printf("%d\n", channel[i]); | ||
502 | } | ||
503 | } | ||
504 | #endif | ||
505 | |||
506 | return 0; | ||
507 | } | ||
508 | |||
509 | |||
510 | #if (defined(PS_DEC) || defined(DRM_PS)) | ||
511 | uint8_t sbrDecodeSingleFramePS(sbr_info *sbr, real_t *left_channel, real_t *right_channel, | ||
512 | const uint8_t just_seeked, const uint8_t downSampledSBR) | ||
513 | { | ||
514 | uint8_t l, k; | ||
515 | uint8_t dont_process = 0; | ||
516 | uint8_t ret = 0; | ||
517 | |||
518 | memset(p_XLR->X_L, 0, sizeof(*p_XLR->X_L)); | ||
519 | memset(p_XLR->X_R, 0, sizeof(*p_XLR->X_R)); | ||
520 | if (sbr == NULL) | ||
521 | return 20; | ||
522 | |||
523 | /* case can occur due to bit errors */ | ||
524 | if (sbr->id_aac != ID_SCE && sbr->id_aac != ID_LFE) | ||
525 | return 21; | ||
526 | |||
527 | if (sbr->ret || (sbr->header_count == 0)) | ||
528 | { | ||
529 | /* don't process just upsample */ | ||
530 | dont_process = 1; | ||
531 | |||
532 | /* Re-activate reset for next frame */ | ||
533 | if (sbr->ret && sbr->Reset) | ||
534 | sbr->bs_start_freq_prev = -1; | ||
535 | } | ||
536 | |||
537 | if (just_seeked) | ||
538 | { | ||
539 | sbr->just_seeked = 1; | ||
540 | } else { | ||
541 | sbr->just_seeked = 0; | ||
542 | } | ||
543 | |||
544 | sbr_process_channel(sbr, left_channel, p_XLR->X_L, 0, dont_process, downSampledSBR); | ||
545 | |||
546 | /* copy some extra data for PS */ | ||
547 | for (l = 32; l < 38; l++) | ||
548 | { | ||
549 | for (k = 0; k < 5; k++) | ||
550 | { | ||
551 | QMF_RE(p_XLR->X_L[l][k]) = QMF_RE(sbr->Xsbr[0][sbr->tHFAdj+l][k]); | ||
552 | QMF_IM(p_XLR->X_L[l][k]) = QMF_IM(sbr->Xsbr[0][sbr->tHFAdj+l][k]); | ||
553 | } | ||
554 | } | ||
555 | |||
556 | /* perform parametric stereo */ | ||
557 | #ifdef DRM_PS | ||
558 | if (sbr->Is_DRM_SBR) | ||
559 | { | ||
560 | drm_ps_decode(sbr->drm_ps, (sbr->ret > 0), sbr->sample_rate, p_XLR->X_L, p_XLR->X_R); | ||
561 | } else { | ||
562 | #endif | ||
563 | #ifdef PS_DEC | ||
564 | ps_decode(&sbr->ps, p_XLR->X_L, p_XLR->X_R); | ||
565 | #endif | ||
566 | #ifdef DRM_PS | ||
567 | } | ||
568 | #endif | ||
569 | |||
570 | /* subband synthesis */ | ||
571 | if (downSampledSBR) | ||
572 | { | ||
573 | sbr_qmf_synthesis_32(sbr, &sbr->qmfs[0], p_XLR->X_L, left_channel); | ||
574 | sbr_qmf_synthesis_32(sbr, &sbr->qmfs[1], p_XLR->X_R, right_channel); | ||
575 | } else { | ||
576 | sbr_qmf_synthesis_64(sbr, &sbr->qmfs[0], p_XLR->X_L, left_channel); | ||
577 | sbr_qmf_synthesis_64(sbr, &sbr->qmfs[1], p_XLR->X_R, right_channel); | ||
578 | } | ||
579 | |||
580 | if (sbr->bs_header_flag) | ||
581 | sbr->just_seeked = 0; | ||
582 | |||
583 | if (sbr->header_count != 0 && sbr->ret == 0) | ||
584 | { | ||
585 | ret = sbr_save_prev_data(sbr, 0); | ||
586 | if (ret) return ret; | ||
587 | } | ||
588 | |||
589 | sbr_save_matrix(sbr, 0); | ||
590 | |||
591 | sbr->frame++; | ||
592 | |||
593 | return 0; | ||
594 | } | ||
595 | #endif | ||
596 | |||
597 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/sbr_dec.h b/lib/rbcodec/codecs/libfaad/sbr_dec.h new file mode 100644 index 0000000000..89fe72b7e9 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/sbr_dec.h | |||
@@ -0,0 +1,242 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __SBR_DEC_H__ | ||
29 | #define __SBR_DEC_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | #ifdef PS_DEC | ||
36 | #include "ps_dec.h" | ||
37 | #endif | ||
38 | #ifdef DRM_PS | ||
39 | #include "drm_dec.h" | ||
40 | #endif | ||
41 | |||
42 | #define MAX_NTSRHFG 40 /* maximum of number_time_slots * rate + HFGen. 16*2+8 */ | ||
43 | #define MAX_NTSR 32 /* max number_time_slots * rate, ok for DRM and not DRM mode */ | ||
44 | |||
45 | /* MAX_M: maximum value for M */ | ||
46 | #define MAX_M 49 | ||
47 | /* MAX_L_E: maximum value for L_E */ | ||
48 | #define MAX_L_E 5 | ||
49 | |||
50 | typedef struct { | ||
51 | real_t x[2*32*10]; | ||
52 | int16_t x_index; | ||
53 | } qmfa_info; | ||
54 | |||
55 | typedef struct { | ||
56 | real_t v[2*64*20]; /* Size was "(downSampledSBR)?32:64". We use 64 now. */ | ||
57 | int16_t v_index; | ||
58 | } qmfs_info; | ||
59 | |||
60 | typedef struct | ||
61 | { | ||
62 | uint32_t sample_rate; | ||
63 | uint32_t maxAACLine; | ||
64 | |||
65 | uint8_t rate; | ||
66 | uint8_t just_seeked; | ||
67 | uint8_t ret; | ||
68 | |||
69 | uint8_t amp_res[2]; | ||
70 | |||
71 | uint8_t k0; | ||
72 | uint8_t kx; | ||
73 | uint8_t M; | ||
74 | uint8_t N_master; | ||
75 | uint8_t N_high; | ||
76 | uint8_t N_low; | ||
77 | uint8_t N_Q; | ||
78 | uint8_t N_L[4]; | ||
79 | uint8_t n[2]; | ||
80 | |||
81 | uint8_t f_master[64]; | ||
82 | uint8_t f_table_res[2][64]; | ||
83 | uint8_t f_table_noise[64]; | ||
84 | uint8_t f_table_lim[4][64]; | ||
85 | #ifdef SBR_LOW_POWER | ||
86 | uint8_t f_group[5][64]; | ||
87 | uint8_t N_G[5]; | ||
88 | #endif | ||
89 | |||
90 | uint8_t table_map_k_to_g[64]; | ||
91 | |||
92 | uint8_t abs_bord_lead[2]; | ||
93 | uint8_t abs_bord_trail[2]; | ||
94 | uint8_t n_rel_lead[2]; | ||
95 | uint8_t n_rel_trail[2]; | ||
96 | |||
97 | uint8_t L_E[2]; | ||
98 | uint8_t L_E_prev[2]; | ||
99 | uint8_t L_Q[2]; | ||
100 | |||
101 | uint8_t t_E[2][MAX_L_E+1]; | ||
102 | uint8_t t_Q[2][3]; | ||
103 | uint8_t f[2][MAX_L_E+1]; | ||
104 | uint8_t f_prev[2]; | ||
105 | |||
106 | real_t G_temp_prev[2][5][64]; | ||
107 | real_t Q_temp_prev[2][5][64]; | ||
108 | int8_t GQ_ringbuf_index[2]; | ||
109 | |||
110 | int16_t E[2][64][MAX_L_E]; | ||
111 | int16_t E_prev[2][64]; | ||
112 | #ifndef FIXED_POINT | ||
113 | real_t E_orig[2][64][MAX_L_E]; | ||
114 | #endif | ||
115 | real_t E_curr[2][64][MAX_L_E]; | ||
116 | int32_t Q[2][64][2]; | ||
117 | #ifndef FIXED_POINT | ||
118 | real_t Q_div[2][64][2]; | ||
119 | real_t Q_div2[2][64][2]; | ||
120 | #endif | ||
121 | int32_t Q_prev[2][64]; | ||
122 | |||
123 | int8_t l_A[2]; | ||
124 | int8_t l_A_prev[2]; | ||
125 | |||
126 | uint8_t bs_invf_mode[2][MAX_L_E]; | ||
127 | uint8_t bs_invf_mode_prev[2][MAX_L_E]; | ||
128 | real_t bwArray[2][64]; | ||
129 | real_t bwArray_prev[2][64]; | ||
130 | |||
131 | uint8_t noPatches; | ||
132 | uint8_t patchNoSubbands[64]; | ||
133 | uint8_t patchStartSubband[64]; | ||
134 | |||
135 | uint8_t bs_add_harmonic[2][64]; | ||
136 | uint8_t bs_add_harmonic_prev[2][64]; | ||
137 | |||
138 | uint16_t index_noise_prev[2]; | ||
139 | uint8_t psi_is_prev[2]; | ||
140 | |||
141 | uint8_t bs_start_freq_prev; | ||
142 | uint8_t bs_stop_freq_prev; | ||
143 | uint8_t bs_xover_band_prev; | ||
144 | uint8_t bs_freq_scale_prev; | ||
145 | uint8_t bs_alter_scale_prev; | ||
146 | uint8_t bs_noise_bands_prev; | ||
147 | |||
148 | int8_t prevEnvIsShort[2]; | ||
149 | |||
150 | int8_t kx_prev; | ||
151 | uint8_t bsco; | ||
152 | uint8_t bsco_prev; | ||
153 | uint8_t M_prev; | ||
154 | uint16_t frame_len; | ||
155 | |||
156 | uint8_t Reset; | ||
157 | uint32_t frame; | ||
158 | uint32_t header_count; | ||
159 | |||
160 | uint8_t id_aac; | ||
161 | qmfa_info qmfa[2] MEM_ALIGN_ATTR; | ||
162 | qmfs_info qmfs[2] MEM_ALIGN_ATTR; | ||
163 | |||
164 | qmf_t Xsbr[2][MAX_NTSRHFG][64] MEM_ALIGN_ATTR; | ||
165 | |||
166 | #ifdef DRM | ||
167 | uint8_t Is_DRM_SBR; | ||
168 | #ifdef DRM_PS | ||
169 | drm_ps_info *drm_ps; | ||
170 | #endif | ||
171 | #endif | ||
172 | |||
173 | uint8_t numTimeSlotsRate; | ||
174 | uint8_t numTimeSlots; | ||
175 | uint8_t tHFGen; | ||
176 | uint8_t tHFAdj; | ||
177 | |||
178 | #ifdef PS_DEC | ||
179 | ps_info ps; | ||
180 | #endif | ||
181 | #if (defined(PS_DEC) || defined(DRM_PS)) | ||
182 | uint8_t ps_used; | ||
183 | #endif | ||
184 | |||
185 | /* to get it compiling */ | ||
186 | /* we'll see during the coding of all the tools, whether | ||
187 | these are all used or not. | ||
188 | */ | ||
189 | uint8_t bs_header_flag; | ||
190 | uint8_t bs_crc_flag; | ||
191 | uint16_t bs_sbr_crc_bits; | ||
192 | uint8_t bs_protocol_version; | ||
193 | uint8_t bs_amp_res; | ||
194 | uint8_t bs_start_freq; | ||
195 | uint8_t bs_stop_freq; | ||
196 | uint8_t bs_xover_band; | ||
197 | uint8_t bs_freq_scale; | ||
198 | uint8_t bs_alter_scale; | ||
199 | uint8_t bs_noise_bands; | ||
200 | uint8_t bs_limiter_bands; | ||
201 | uint8_t bs_limiter_gains; | ||
202 | uint8_t bs_interpol_freq; | ||
203 | uint8_t bs_smoothing_mode; | ||
204 | uint8_t bs_samplerate_mode; | ||
205 | uint8_t bs_add_harmonic_flag[2]; | ||
206 | uint8_t bs_add_harmonic_flag_prev[2]; | ||
207 | uint8_t bs_extended_data; | ||
208 | uint8_t bs_extension_id; | ||
209 | uint8_t bs_extension_data; | ||
210 | uint8_t bs_coupling; | ||
211 | uint8_t bs_frame_class[2]; | ||
212 | uint8_t bs_rel_bord[2][9]; | ||
213 | uint8_t bs_rel_bord_0[2][9]; | ||
214 | uint8_t bs_rel_bord_1[2][9]; | ||
215 | uint8_t bs_pointer[2]; | ||
216 | uint8_t bs_abs_bord_0[2]; | ||
217 | uint8_t bs_abs_bord_1[2]; | ||
218 | uint8_t bs_num_rel_0[2]; | ||
219 | uint8_t bs_num_rel_1[2]; | ||
220 | uint8_t bs_df_env[2][9]; | ||
221 | uint8_t bs_df_noise[2][3]; | ||
222 | } sbr_info; | ||
223 | |||
224 | sbr_info *sbrDecodeInit(uint16_t framelength, uint8_t id_aac, uint8_t id_ele, | ||
225 | uint32_t sample_rate, uint8_t downSampledSBR, | ||
226 | uint8_t IsDRM); | ||
227 | |||
228 | uint8_t sbrDecodeCoupleFrame(sbr_info *sbr, real_t *left_chan, real_t *right_chan, | ||
229 | const uint8_t just_seeked, const uint8_t downSampledSBR); | ||
230 | uint8_t sbrDecodeSingleFrame(sbr_info *sbr, real_t *channel, | ||
231 | const uint8_t just_seeked, const uint8_t downSampledSBR); | ||
232 | #if (defined(PS_DEC) || defined(DRM_PS)) | ||
233 | uint8_t sbrDecodeSingleFramePS(sbr_info *sbr, real_t *left_channel, real_t *right_channel, | ||
234 | const uint8_t just_seeked, const uint8_t downSampledSBR); | ||
235 | #endif | ||
236 | |||
237 | |||
238 | #ifdef __cplusplus | ||
239 | } | ||
240 | #endif | ||
241 | #endif | ||
242 | |||
diff --git a/lib/rbcodec/codecs/libfaad/sbr_e_nf.c b/lib/rbcodec/codecs/libfaad/sbr_e_nf.c new file mode 100644 index 0000000000..ea2cbb8e35 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/sbr_e_nf.c | |||
@@ -0,0 +1,507 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #include "common.h" | ||
29 | #include "structs.h" | ||
30 | |||
31 | #ifdef SBR_DEC | ||
32 | |||
33 | #include <stdlib.h> | ||
34 | |||
35 | #include "sbr_syntax.h" | ||
36 | #include "sbr_e_nf.h" | ||
37 | |||
38 | void extract_envelope_data(sbr_info *sbr, uint8_t ch) | ||
39 | { | ||
40 | uint8_t l, k; | ||
41 | |||
42 | for (l = 0; l < sbr->L_E[ch]; l++) | ||
43 | { | ||
44 | if (sbr->bs_df_env[ch][l] == 0) | ||
45 | { | ||
46 | for (k = 1; k < sbr->n[sbr->f[ch][l]]; k++) | ||
47 | { | ||
48 | sbr->E[ch][k][l] = sbr->E[ch][k - 1][l] + sbr->E[ch][k][l]; | ||
49 | if (sbr->E[ch][k][l] < 0) | ||
50 | sbr->E[ch][k][l] = 0; | ||
51 | } | ||
52 | |||
53 | } else { /* bs_df_env == 1 */ | ||
54 | |||
55 | uint8_t g = (l == 0) ? sbr->f_prev[ch] : sbr->f[ch][l-1]; | ||
56 | int16_t E_prev; | ||
57 | |||
58 | if (sbr->f[ch][l] == g) | ||
59 | { | ||
60 | for (k = 0; k < sbr->n[sbr->f[ch][l]]; k++) | ||
61 | { | ||
62 | if (l == 0) | ||
63 | E_prev = sbr->E_prev[ch][k]; | ||
64 | else | ||
65 | E_prev = sbr->E[ch][k][l - 1]; | ||
66 | |||
67 | sbr->E[ch][k][l] = E_prev + sbr->E[ch][k][l]; | ||
68 | } | ||
69 | |||
70 | } else if ((g == 1) && (sbr->f[ch][l] == 0)) { | ||
71 | uint8_t i; | ||
72 | |||
73 | for (k = 0; k < sbr->n[sbr->f[ch][l]]; k++) | ||
74 | { | ||
75 | for (i = 0; i < sbr->N_high; i++) | ||
76 | { | ||
77 | if (sbr->f_table_res[HI_RES][i] == sbr->f_table_res[LO_RES][k]) | ||
78 | { | ||
79 | if (l == 0) | ||
80 | E_prev = sbr->E_prev[ch][i]; | ||
81 | else | ||
82 | E_prev = sbr->E[ch][i][l - 1]; | ||
83 | |||
84 | sbr->E[ch][k][l] = E_prev + sbr->E[ch][k][l]; | ||
85 | } | ||
86 | } | ||
87 | } | ||
88 | |||
89 | } else if ((g == 0) && (sbr->f[ch][l] == 1)) { | ||
90 | uint8_t i; | ||
91 | |||
92 | for (k = 0; k < sbr->n[sbr->f[ch][l]]; k++) | ||
93 | { | ||
94 | for (i = 0; i < sbr->N_low; i++) | ||
95 | { | ||
96 | if ((sbr->f_table_res[LO_RES][i] <= sbr->f_table_res[HI_RES][k]) && | ||
97 | (sbr->f_table_res[HI_RES][k] < sbr->f_table_res[LO_RES][i + 1])) | ||
98 | { | ||
99 | if (l == 0) | ||
100 | E_prev = sbr->E_prev[ch][i]; | ||
101 | else | ||
102 | E_prev = sbr->E[ch][i][l - 1]; | ||
103 | |||
104 | sbr->E[ch][k][l] = E_prev + sbr->E[ch][k][l]; | ||
105 | } | ||
106 | } | ||
107 | } | ||
108 | } | ||
109 | } | ||
110 | } | ||
111 | } | ||
112 | |||
113 | void extract_noise_floor_data(sbr_info *sbr, uint8_t ch) | ||
114 | { | ||
115 | uint8_t l, k; | ||
116 | |||
117 | for (l = 0; l < sbr->L_Q[ch]; l++) | ||
118 | { | ||
119 | if (sbr->bs_df_noise[ch][l] == 0) | ||
120 | { | ||
121 | for (k = 1; k < sbr->N_Q; k++) | ||
122 | { | ||
123 | sbr->Q[ch][k][l] = sbr->Q[ch][k][l] + sbr->Q[ch][k-1][l]; | ||
124 | } | ||
125 | } else { | ||
126 | if (l == 0) | ||
127 | { | ||
128 | for (k = 0; k < sbr->N_Q; k++) | ||
129 | { | ||
130 | sbr->Q[ch][k][l] = sbr->Q_prev[ch][k] + sbr->Q[ch][k][0]; | ||
131 | } | ||
132 | } else { | ||
133 | for (k = 0; k < sbr->N_Q; k++) | ||
134 | { | ||
135 | sbr->Q[ch][k][l] = sbr->Q[ch][k][l - 1] + sbr->Q[ch][k][l]; | ||
136 | } | ||
137 | } | ||
138 | } | ||
139 | } | ||
140 | } | ||
141 | |||
142 | #ifndef FIXED_POINT | ||
143 | |||
144 | /* table for Q_div values when no coupling */ | ||
145 | static const real_t Q_div_tab[31] = { | ||
146 | FRAC_CONST(0.0153846), FRAC_CONST(0.030303), | ||
147 | FRAC_CONST(0.0588235), FRAC_CONST(0.111111), | ||
148 | FRAC_CONST(0.2), FRAC_CONST(0.333333), | ||
149 | FRAC_CONST(0.5), FRAC_CONST(0.666667), | ||
150 | FRAC_CONST(0.8), FRAC_CONST(0.888889), | ||
151 | FRAC_CONST(0.941176), FRAC_CONST(0.969697), | ||
152 | FRAC_CONST(0.984615), FRAC_CONST(0.992248), | ||
153 | FRAC_CONST(0.996109), FRAC_CONST(0.998051), | ||
154 | FRAC_CONST(0.999024), FRAC_CONST(0.999512), | ||
155 | FRAC_CONST(0.999756), FRAC_CONST(0.999878), | ||
156 | FRAC_CONST(0.999939), FRAC_CONST(0.999969), | ||
157 | FRAC_CONST(0.999985), FRAC_CONST(0.999992), | ||
158 | FRAC_CONST(0.999996), FRAC_CONST(0.999998), | ||
159 | FRAC_CONST(0.999999), FRAC_CONST(1), | ||
160 | FRAC_CONST(1), FRAC_CONST(1), | ||
161 | FRAC_CONST(1) | ||
162 | }; | ||
163 | |||
164 | static const real_t Q_div_tab_left[31][13] = { | ||
165 | { FRAC_CONST(0.969704), FRAC_CONST(0.888985), FRAC_CONST(0.667532), FRAC_CONST(0.336788), FRAC_CONST(0.117241), FRAC_CONST(0.037594), FRAC_CONST(0.0153846), FRAC_CONST(0.00967118), FRAC_CONST(0.00823245), FRAC_CONST(0.00787211), FRAC_CONST(0.00778198), FRAC_CONST(0.00775945), FRAC_CONST(0.00775382) }, | ||
166 | { FRAC_CONST(0.984619), FRAC_CONST(0.94123), FRAC_CONST(0.800623), FRAC_CONST(0.503876), FRAC_CONST(0.209877), FRAC_CONST(0.0724638), FRAC_CONST(0.030303), FRAC_CONST(0.0191571), FRAC_CONST(0.0163305), FRAC_CONST(0.0156212), FRAC_CONST(0.0154438), FRAC_CONST(0.0153994), FRAC_CONST(0.0153883) }, | ||
167 | { FRAC_CONST(0.99225), FRAC_CONST(0.969726), FRAC_CONST(0.889273), FRAC_CONST(0.670103), FRAC_CONST(0.346939), FRAC_CONST(0.135135), FRAC_CONST(0.0588235), FRAC_CONST(0.037594), FRAC_CONST(0.0321361), FRAC_CONST(0.0307619), FRAC_CONST(0.0304178), FRAC_CONST(0.0303317), FRAC_CONST(0.0303102) }, | ||
168 | { FRAC_CONST(0.99611), FRAC_CONST(0.98463), FRAC_CONST(0.941392), FRAC_CONST(0.802469), FRAC_CONST(0.515152), FRAC_CONST(0.238095), FRAC_CONST(0.111111), FRAC_CONST(0.0724638), FRAC_CONST(0.0622711), FRAC_CONST(0.0596878), FRAC_CONST(0.0590397), FRAC_CONST(0.0588776), FRAC_CONST(0.058837) }, | ||
169 | { FRAC_CONST(0.998051), FRAC_CONST(0.992256), FRAC_CONST(0.969811), FRAC_CONST(0.890411), FRAC_CONST(0.68), FRAC_CONST(0.384615), FRAC_CONST(0.2), FRAC_CONST(0.135135), FRAC_CONST(0.117241), FRAC_CONST(0.112652), FRAC_CONST(0.111497), FRAC_CONST(0.111208), FRAC_CONST(0.111135) }, | ||
170 | { FRAC_CONST(0.999025), FRAC_CONST(0.996113), FRAC_CONST(0.984674), FRAC_CONST(0.942029), FRAC_CONST(0.809524), FRAC_CONST(0.555556), FRAC_CONST(0.333333), FRAC_CONST(0.238095), FRAC_CONST(0.209877), FRAC_CONST(0.202492), FRAC_CONST(0.200625), FRAC_CONST(0.200156), FRAC_CONST(0.200039) }, | ||
171 | { FRAC_CONST(0.999512), FRAC_CONST(0.998053), FRAC_CONST(0.992278), FRAC_CONST(0.970149), FRAC_CONST(0.894737), FRAC_CONST(0.714286), FRAC_CONST(0.5), FRAC_CONST(0.384615), FRAC_CONST(0.346939), FRAC_CONST(0.336788), FRAC_CONST(0.3342), FRAC_CONST(0.33355), FRAC_CONST(0.333388) }, | ||
172 | { FRAC_CONST(0.999756), FRAC_CONST(0.999025), FRAC_CONST(0.996124), FRAC_CONST(0.984848), FRAC_CONST(0.944444), FRAC_CONST(0.833333), FRAC_CONST(0.666667), FRAC_CONST(0.555556), FRAC_CONST(0.515152), FRAC_CONST(0.503876), FRAC_CONST(0.500975), FRAC_CONST(0.500244), FRAC_CONST(0.500061) }, | ||
173 | { FRAC_CONST(0.999878), FRAC_CONST(0.999512), FRAC_CONST(0.998058), FRAC_CONST(0.992366), FRAC_CONST(0.971429), FRAC_CONST(0.909091), FRAC_CONST(0.8), FRAC_CONST(0.714286), FRAC_CONST(0.68), FRAC_CONST(0.670103), FRAC_CONST(0.667532), FRAC_CONST(0.666884), FRAC_CONST(0.666721) }, | ||
174 | { FRAC_CONST(0.999939), FRAC_CONST(0.999756), FRAC_CONST(0.999028), FRAC_CONST(0.996169), FRAC_CONST(0.985507), FRAC_CONST(0.952381), FRAC_CONST(0.888889), FRAC_CONST(0.833333), FRAC_CONST(0.809524), FRAC_CONST(0.802469), FRAC_CONST(0.800623), FRAC_CONST(0.800156), FRAC_CONST(0.800039) }, | ||
175 | { FRAC_CONST(0.999969), FRAC_CONST(0.999878), FRAC_CONST(0.999514), FRAC_CONST(0.998081), FRAC_CONST(0.992701), FRAC_CONST(0.97561), FRAC_CONST(0.941176), FRAC_CONST(0.909091), FRAC_CONST(0.894737), FRAC_CONST(0.890411), FRAC_CONST(0.889273), FRAC_CONST(0.888985), FRAC_CONST(0.888913) }, | ||
176 | { FRAC_CONST(0.999985), FRAC_CONST(0.999939), FRAC_CONST(0.999757), FRAC_CONST(0.999039), FRAC_CONST(0.996337), FRAC_CONST(0.987654), FRAC_CONST(0.969697), FRAC_CONST(0.952381), FRAC_CONST(0.944444), FRAC_CONST(0.942029), FRAC_CONST(0.941392), FRAC_CONST(0.94123), FRAC_CONST(0.94119) }, | ||
177 | { FRAC_CONST(0.999992), FRAC_CONST(0.99997), FRAC_CONST(0.999878), FRAC_CONST(0.999519), FRAC_CONST(0.998165), FRAC_CONST(0.993789), FRAC_CONST(0.984615), FRAC_CONST(0.97561), FRAC_CONST(0.971429), FRAC_CONST(0.970149), FRAC_CONST(0.969811), FRAC_CONST(0.969726), FRAC_CONST(0.969704) }, | ||
178 | { FRAC_CONST(0.999996), FRAC_CONST(0.999985), FRAC_CONST(0.999939), FRAC_CONST(0.99976), FRAC_CONST(0.999082), FRAC_CONST(0.996885), FRAC_CONST(0.992248), FRAC_CONST(0.987654), FRAC_CONST(0.985507), FRAC_CONST(0.984848), FRAC_CONST(0.984674), FRAC_CONST(0.98463), FRAC_CONST(0.984619) }, | ||
179 | { FRAC_CONST(0.999998), FRAC_CONST(0.999992), FRAC_CONST(0.99997), FRAC_CONST(0.99988), FRAC_CONST(0.999541), FRAC_CONST(0.99844), FRAC_CONST(0.996109), FRAC_CONST(0.993789), FRAC_CONST(0.992701), FRAC_CONST(0.992366), FRAC_CONST(0.992278), FRAC_CONST(0.992256), FRAC_CONST(0.99225) }, | ||
180 | { FRAC_CONST(0.999999), FRAC_CONST(0.999996), FRAC_CONST(0.999985), FRAC_CONST(0.99994), FRAC_CONST(0.99977), FRAC_CONST(0.999219), FRAC_CONST(0.998051), FRAC_CONST(0.996885), FRAC_CONST(0.996337), FRAC_CONST(0.996169), FRAC_CONST(0.996124), FRAC_CONST(0.996113), FRAC_CONST(0.99611) }, | ||
181 | { FRAC_CONST(1), FRAC_CONST(0.999998), FRAC_CONST(0.999992), FRAC_CONST(0.99997), FRAC_CONST(0.999885), FRAC_CONST(0.99961), FRAC_CONST(0.999024), FRAC_CONST(0.99844), FRAC_CONST(0.998165), FRAC_CONST(0.998081), FRAC_CONST(0.998058), FRAC_CONST(0.998053), FRAC_CONST(0.998051) }, | ||
182 | { FRAC_CONST(1), FRAC_CONST(0.999999), FRAC_CONST(0.999996), FRAC_CONST(0.999985), FRAC_CONST(0.999943), FRAC_CONST(0.999805), FRAC_CONST(0.999512), FRAC_CONST(0.999219), FRAC_CONST(0.999082), FRAC_CONST(0.999039), FRAC_CONST(0.999028), FRAC_CONST(0.999025), FRAC_CONST(0.999025) }, | ||
183 | { FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(0.999998), FRAC_CONST(0.999992), FRAC_CONST(0.999971), FRAC_CONST(0.999902), FRAC_CONST(0.999756), FRAC_CONST(0.99961), FRAC_CONST(0.999541), FRAC_CONST(0.999519), FRAC_CONST(0.999514), FRAC_CONST(0.999512), FRAC_CONST(0.999512) }, | ||
184 | { FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(0.999999), FRAC_CONST(0.999996), FRAC_CONST(0.999986), FRAC_CONST(0.999951), FRAC_CONST(0.999878), FRAC_CONST(0.999805), FRAC_CONST(0.99977), FRAC_CONST(0.99976), FRAC_CONST(0.999757), FRAC_CONST(0.999756), FRAC_CONST(0.999756) }, | ||
185 | { FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(0.999998), FRAC_CONST(0.999993), FRAC_CONST(0.999976), FRAC_CONST(0.999939), FRAC_CONST(0.999902), FRAC_CONST(0.999885), FRAC_CONST(0.99988), FRAC_CONST(0.999878), FRAC_CONST(0.999878), FRAC_CONST(0.999878) }, | ||
186 | { FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(0.999999), FRAC_CONST(0.999996), FRAC_CONST(0.999988), FRAC_CONST(0.999969), FRAC_CONST(0.999951), FRAC_CONST(0.999943), FRAC_CONST(0.99994), FRAC_CONST(0.999939), FRAC_CONST(0.999939), FRAC_CONST(0.999939) }, | ||
187 | { FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(0.999998), FRAC_CONST(0.999994), FRAC_CONST(0.999985), FRAC_CONST(0.999976), FRAC_CONST(0.999971), FRAC_CONST(0.99997), FRAC_CONST(0.99997), FRAC_CONST(0.99997), FRAC_CONST(0.999969) }, | ||
188 | { FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(0.999999), FRAC_CONST(0.999997), FRAC_CONST(0.999992), FRAC_CONST(0.999988), FRAC_CONST(0.999986), FRAC_CONST(0.999985), FRAC_CONST(0.999985), FRAC_CONST(0.999985), FRAC_CONST(0.999985) }, | ||
189 | { FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(0.999998), FRAC_CONST(0.999996), FRAC_CONST(0.999994), FRAC_CONST(0.999993), FRAC_CONST(0.999992), FRAC_CONST(0.999992), FRAC_CONST(0.999992), FRAC_CONST(0.999992) }, | ||
190 | { FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(0.999999), FRAC_CONST(0.999998), FRAC_CONST(0.999997), FRAC_CONST(0.999996), FRAC_CONST(0.999996), FRAC_CONST(0.999996), FRAC_CONST(0.999996), FRAC_CONST(0.999996) }, | ||
191 | { FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(0.999999), FRAC_CONST(0.999998), FRAC_CONST(0.999998), FRAC_CONST(0.999998), FRAC_CONST(0.999998), FRAC_CONST(0.999998), FRAC_CONST(0.999998) }, | ||
192 | { FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(0.999999), FRAC_CONST(0.999999), FRAC_CONST(0.999999), FRAC_CONST(0.999999), FRAC_CONST(0.999999), FRAC_CONST(0.999999) }, | ||
193 | { FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1) }, | ||
194 | { FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1) }, | ||
195 | { FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1) } | ||
196 | }; | ||
197 | |||
198 | static const real_t Q_div_tab_right[31][13] = { | ||
199 | { FRAC_CONST(0.00775382), FRAC_CONST(0.00775945), FRAC_CONST(0.00778198), FRAC_CONST(0.00787211), FRAC_CONST(0.00823245), FRAC_CONST(0.00967118), FRAC_CONST(0.0153846), FRAC_CONST(0.037594), FRAC_CONST(0.117241), FRAC_CONST(0.336788), FRAC_CONST(0.667532), FRAC_CONST(0.888985), FRAC_CONST(0.969704) }, | ||
200 | { FRAC_CONST(0.0153883), FRAC_CONST(0.0153994), FRAC_CONST(0.0154438), FRAC_CONST(0.0156212), FRAC_CONST(0.0163305), FRAC_CONST(0.0191571), FRAC_CONST(0.030303), FRAC_CONST(0.0724638), FRAC_CONST(0.209877), FRAC_CONST(0.503876), FRAC_CONST(0.800623), FRAC_CONST(0.94123), FRAC_CONST(0.984619) }, | ||
201 | { FRAC_CONST(0.0303102), FRAC_CONST(0.0303317), FRAC_CONST(0.0304178), FRAC_CONST(0.0307619), FRAC_CONST(0.0321361), FRAC_CONST(0.037594), FRAC_CONST(0.0588235), FRAC_CONST(0.135135), FRAC_CONST(0.346939), FRAC_CONST(0.670103), FRAC_CONST(0.889273), FRAC_CONST(0.969726), FRAC_CONST(0.99225) }, | ||
202 | { FRAC_CONST(0.058837), FRAC_CONST(0.0588776), FRAC_CONST(0.0590397), FRAC_CONST(0.0596878), FRAC_CONST(0.0622711), FRAC_CONST(0.0724638), FRAC_CONST(0.111111), FRAC_CONST(0.238095), FRAC_CONST(0.515152), FRAC_CONST(0.802469), FRAC_CONST(0.941392), FRAC_CONST(0.98463), FRAC_CONST(0.99611) }, | ||
203 | { FRAC_CONST(0.111135), FRAC_CONST(0.111208), FRAC_CONST(0.111497), FRAC_CONST(0.112652), FRAC_CONST(0.117241), FRAC_CONST(0.135135), FRAC_CONST(0.2), FRAC_CONST(0.384615), FRAC_CONST(0.68), FRAC_CONST(0.890411), FRAC_CONST(0.969811), FRAC_CONST(0.992256), FRAC_CONST(0.998051) }, | ||
204 | { FRAC_CONST(0.200039), FRAC_CONST(0.200156), FRAC_CONST(0.200625), FRAC_CONST(0.202492), FRAC_CONST(0.209877), FRAC_CONST(0.238095), FRAC_CONST(0.333333), FRAC_CONST(0.555556), FRAC_CONST(0.809524), FRAC_CONST(0.942029), FRAC_CONST(0.984674), FRAC_CONST(0.996113), FRAC_CONST(0.999025) }, | ||
205 | { FRAC_CONST(0.333388), FRAC_CONST(0.33355), FRAC_CONST(0.3342), FRAC_CONST(0.336788), FRAC_CONST(0.346939), FRAC_CONST(0.384615), FRAC_CONST(0.5), FRAC_CONST(0.714286), FRAC_CONST(0.894737), FRAC_CONST(0.970149), FRAC_CONST(0.992278), FRAC_CONST(0.998053), FRAC_CONST(0.999512) }, | ||
206 | { FRAC_CONST(0.500061), FRAC_CONST(0.500244), FRAC_CONST(0.500975), FRAC_CONST(0.503876), FRAC_CONST(0.515152), FRAC_CONST(0.555556), FRAC_CONST(0.666667), FRAC_CONST(0.833333), FRAC_CONST(0.944444), FRAC_CONST(0.984848), FRAC_CONST(0.996124), FRAC_CONST(0.999025), FRAC_CONST(0.999756) }, | ||
207 | { FRAC_CONST(0.666721), FRAC_CONST(0.666884), FRAC_CONST(0.667532), FRAC_CONST(0.670103), FRAC_CONST(0.68), FRAC_CONST(0.714286), FRAC_CONST(0.8), FRAC_CONST(0.909091), FRAC_CONST(0.971429), FRAC_CONST(0.992366), FRAC_CONST(0.998058), FRAC_CONST(0.999512), FRAC_CONST(0.999878) }, | ||
208 | { FRAC_CONST(0.800039), FRAC_CONST(0.800156), FRAC_CONST(0.800623), FRAC_CONST(0.802469), FRAC_CONST(0.809524), FRAC_CONST(0.833333), FRAC_CONST(0.888889), FRAC_CONST(0.952381), FRAC_CONST(0.985507), FRAC_CONST(0.996169), FRAC_CONST(0.999028), FRAC_CONST(0.999756), FRAC_CONST(0.999939) }, | ||
209 | { FRAC_CONST(0.888913), FRAC_CONST(0.888985), FRAC_CONST(0.889273), FRAC_CONST(0.890411), FRAC_CONST(0.894737), FRAC_CONST(0.909091), FRAC_CONST(0.941176), FRAC_CONST(0.97561), FRAC_CONST(0.992701), FRAC_CONST(0.998081), FRAC_CONST(0.999514), FRAC_CONST(0.999878), FRAC_CONST(0.999969) }, | ||
210 | { FRAC_CONST(0.94119), FRAC_CONST(0.94123), FRAC_CONST(0.941392), FRAC_CONST(0.942029), FRAC_CONST(0.944444), FRAC_CONST(0.952381), FRAC_CONST(0.969697), FRAC_CONST(0.987654), FRAC_CONST(0.996337), FRAC_CONST(0.999039), FRAC_CONST(0.999757), FRAC_CONST(0.999939), FRAC_CONST(0.999985) }, | ||
211 | { FRAC_CONST(0.969704), FRAC_CONST(0.969726), FRAC_CONST(0.969811), FRAC_CONST(0.970149), FRAC_CONST(0.971429), FRAC_CONST(0.97561), FRAC_CONST(0.984615), FRAC_CONST(0.993789), FRAC_CONST(0.998165), FRAC_CONST(0.999519), FRAC_CONST(0.999878), FRAC_CONST(0.99997), FRAC_CONST(0.999992) }, | ||
212 | { FRAC_CONST(0.984619), FRAC_CONST(0.98463), FRAC_CONST(0.984674), FRAC_CONST(0.984848), FRAC_CONST(0.985507), FRAC_CONST(0.987654), FRAC_CONST(0.992248), FRAC_CONST(0.996885), FRAC_CONST(0.999082), FRAC_CONST(0.99976), FRAC_CONST(0.999939), FRAC_CONST(0.999985), FRAC_CONST(0.999996) }, | ||
213 | { FRAC_CONST(0.99225), FRAC_CONST(0.992256), FRAC_CONST(0.992278), FRAC_CONST(0.992366), FRAC_CONST(0.992701), FRAC_CONST(0.993789), FRAC_CONST(0.996109), FRAC_CONST(0.99844), FRAC_CONST(0.999541), FRAC_CONST(0.99988), FRAC_CONST(0.99997), FRAC_CONST(0.999992), FRAC_CONST(0.999998) }, | ||
214 | { FRAC_CONST(0.99611), FRAC_CONST(0.996113), FRAC_CONST(0.996124), FRAC_CONST(0.996169), FRAC_CONST(0.996337), FRAC_CONST(0.996885), FRAC_CONST(0.998051), FRAC_CONST(0.999219), FRAC_CONST(0.99977), FRAC_CONST(0.99994), FRAC_CONST(0.999985), FRAC_CONST(0.999996), FRAC_CONST(0.999999) }, | ||
215 | { FRAC_CONST(0.998051), FRAC_CONST(0.998053), FRAC_CONST(0.998058), FRAC_CONST(0.998081), FRAC_CONST(0.998165), FRAC_CONST(0.99844), FRAC_CONST(0.999024), FRAC_CONST(0.99961), FRAC_CONST(0.999885), FRAC_CONST(0.99997), FRAC_CONST(0.999992), FRAC_CONST(0.999998), FRAC_CONST(1) }, | ||
216 | { FRAC_CONST(0.999025), FRAC_CONST(0.999025), FRAC_CONST(0.999028), FRAC_CONST(0.999039), FRAC_CONST(0.999082), FRAC_CONST(0.999219), FRAC_CONST(0.999512), FRAC_CONST(0.999805), FRAC_CONST(0.999943), FRAC_CONST(0.999985), FRAC_CONST(0.999996), FRAC_CONST(0.999999), FRAC_CONST(1) }, | ||
217 | { FRAC_CONST(0.999512), FRAC_CONST(0.999512), FRAC_CONST(0.999514), FRAC_CONST(0.999519), FRAC_CONST(0.999541), FRAC_CONST(0.99961), FRAC_CONST(0.999756), FRAC_CONST(0.999902), FRAC_CONST(0.999971), FRAC_CONST(0.999992), FRAC_CONST(0.999998), FRAC_CONST(1), FRAC_CONST(1) }, | ||
218 | { FRAC_CONST(0.999756), FRAC_CONST(0.999756), FRAC_CONST(0.999757), FRAC_CONST(0.99976), FRAC_CONST(0.99977), FRAC_CONST(0.999805), FRAC_CONST(0.999878), FRAC_CONST(0.999951), FRAC_CONST(0.999986), FRAC_CONST(0.999996), FRAC_CONST(0.999999), FRAC_CONST(1), FRAC_CONST(1) }, | ||
219 | { FRAC_CONST(0.999878), FRAC_CONST(0.999878), FRAC_CONST(0.999878), FRAC_CONST(0.99988), FRAC_CONST(0.999885), FRAC_CONST(0.999902), FRAC_CONST(0.999939), FRAC_CONST(0.999976), FRAC_CONST(0.999993), FRAC_CONST(0.999998), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1) }, | ||
220 | { FRAC_CONST(0.999939), FRAC_CONST(0.999939), FRAC_CONST(0.999939), FRAC_CONST(0.99994), FRAC_CONST(0.999943), FRAC_CONST(0.999951), FRAC_CONST(0.999969), FRAC_CONST(0.999988), FRAC_CONST(0.999996), FRAC_CONST(0.999999), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1) }, | ||
221 | { FRAC_CONST(0.999969), FRAC_CONST(0.99997), FRAC_CONST(0.99997), FRAC_CONST(0.99997), FRAC_CONST(0.999971), FRAC_CONST(0.999976), FRAC_CONST(0.999985), FRAC_CONST(0.999994), FRAC_CONST(0.999998), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1) }, | ||
222 | { FRAC_CONST(0.999985), FRAC_CONST(0.999985), FRAC_CONST(0.999985), FRAC_CONST(0.999985), FRAC_CONST(0.999986), FRAC_CONST(0.999988), FRAC_CONST(0.999992), FRAC_CONST(0.999997), FRAC_CONST(0.999999), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1) }, | ||
223 | { FRAC_CONST(0.999992), FRAC_CONST(0.999992), FRAC_CONST(0.999992), FRAC_CONST(0.999992), FRAC_CONST(0.999993), FRAC_CONST(0.999994), FRAC_CONST(0.999996), FRAC_CONST(0.999998), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1) }, | ||
224 | { FRAC_CONST(0.999996), FRAC_CONST(0.999996), FRAC_CONST(0.999996), FRAC_CONST(0.999996), FRAC_CONST(0.999996), FRAC_CONST(0.999997), FRAC_CONST(0.999998), FRAC_CONST(0.999999), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1) }, | ||
225 | { FRAC_CONST(0.999998), FRAC_CONST(0.999998), FRAC_CONST(0.999998), FRAC_CONST(0.999998), FRAC_CONST(0.999998), FRAC_CONST(0.999998), FRAC_CONST(0.999999), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1) }, | ||
226 | { FRAC_CONST(0.999999), FRAC_CONST(0.999999), FRAC_CONST(0.999999), FRAC_CONST(0.999999), FRAC_CONST(0.999999), FRAC_CONST(0.999999), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1) }, | ||
227 | { FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1) }, | ||
228 | { FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1) }, | ||
229 | { FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1), FRAC_CONST(1) } | ||
230 | }; | ||
231 | |||
232 | /* calculates 1/(1+Q) */ | ||
233 | /* [0..1] */ | ||
234 | static real_t calc_Q_div(sbr_info *sbr, uint8_t ch, uint8_t m, uint8_t l) | ||
235 | { | ||
236 | if (sbr->bs_coupling) | ||
237 | { | ||
238 | /* left channel */ | ||
239 | if ((sbr->Q[0][m][l] < 0 || sbr->Q[0][m][l] > 30) || | ||
240 | (sbr->Q[1][m][l] < 0 || sbr->Q[1][m][l] > 24 /* 2*panOffset(1) */)) | ||
241 | { | ||
242 | return 0; | ||
243 | } else { | ||
244 | /* the pan parameter is always even */ | ||
245 | if (ch == 0) | ||
246 | { | ||
247 | return Q_div_tab_left[sbr->Q[0][m][l]][sbr->Q[1][m][l] >> 1]; | ||
248 | } else { | ||
249 | return Q_div_tab_right[sbr->Q[0][m][l]][sbr->Q[1][m][l] >> 1]; | ||
250 | } | ||
251 | } | ||
252 | } else { | ||
253 | /* no coupling */ | ||
254 | if (sbr->Q[ch][m][l] < 0 || sbr->Q[ch][m][l] > 30) | ||
255 | { | ||
256 | return 0; | ||
257 | } else { | ||
258 | return Q_div_tab[sbr->Q[ch][m][l]]; | ||
259 | } | ||
260 | } | ||
261 | } | ||
262 | |||
263 | /* table for Q_div2 values when no coupling */ | ||
264 | static const real_t Q_div2_tab[31] = { | ||
265 | FRAC_CONST(0.984615), FRAC_CONST(0.969697), | ||
266 | FRAC_CONST(0.941176), FRAC_CONST(0.888889), | ||
267 | FRAC_CONST(0.8), FRAC_CONST(0.666667), | ||
268 | FRAC_CONST(0.5), FRAC_CONST(0.333333), | ||
269 | FRAC_CONST(0.2), FRAC_CONST(0.111111), | ||
270 | FRAC_CONST(0.0588235), FRAC_CONST(0.030303), | ||
271 | FRAC_CONST(0.0153846), FRAC_CONST(0.00775194), | ||
272 | FRAC_CONST(0.00389105), FRAC_CONST(0.00194932), | ||
273 | FRAC_CONST(0.00097561), FRAC_CONST(0.000488043), | ||
274 | FRAC_CONST(0.000244081), FRAC_CONST(0.000122055), | ||
275 | FRAC_CONST(6.10314E-005), FRAC_CONST(3.05166E-005), | ||
276 | FRAC_CONST(1.52586E-005), FRAC_CONST(7.62934E-006), | ||
277 | FRAC_CONST(3.81468E-006), FRAC_CONST(1.90734E-006), | ||
278 | FRAC_CONST(9.53673E-007), FRAC_CONST(4.76837E-007), | ||
279 | FRAC_CONST(2.38419E-007), FRAC_CONST(1.19209E-007), | ||
280 | FRAC_CONST(5.96046E-008) | ||
281 | }; | ||
282 | |||
283 | static const real_t Q_div2_tab_left[31][13] = { | ||
284 | { FRAC_CONST(0.0302959), FRAC_CONST(0.111015), FRAC_CONST(0.332468), FRAC_CONST(0.663212), FRAC_CONST(0.882759), FRAC_CONST(0.962406), FRAC_CONST(0.984615), FRAC_CONST(0.990329), FRAC_CONST(0.991768), FRAC_CONST(0.992128), FRAC_CONST(0.992218), FRAC_CONST(0.992241), FRAC_CONST(0.992246) }, | ||
285 | { FRAC_CONST(0.0153809), FRAC_CONST(0.0587695), FRAC_CONST(0.199377), FRAC_CONST(0.496124), FRAC_CONST(0.790123), FRAC_CONST(0.927536), FRAC_CONST(0.969697), FRAC_CONST(0.980843), FRAC_CONST(0.98367), FRAC_CONST(0.984379), FRAC_CONST(0.984556), FRAC_CONST(0.984601), FRAC_CONST(0.984612) }, | ||
286 | { FRAC_CONST(0.00775006), FRAC_CONST(0.0302744), FRAC_CONST(0.110727), FRAC_CONST(0.329897), FRAC_CONST(0.653061), FRAC_CONST(0.864865), FRAC_CONST(0.941176), FRAC_CONST(0.962406), FRAC_CONST(0.967864), FRAC_CONST(0.969238), FRAC_CONST(0.969582), FRAC_CONST(0.969668), FRAC_CONST(0.96969) }, | ||
287 | { FRAC_CONST(0.0038901), FRAC_CONST(0.0153698), FRAC_CONST(0.0586081), FRAC_CONST(0.197531), FRAC_CONST(0.484848), FRAC_CONST(0.761905), FRAC_CONST(0.888889), FRAC_CONST(0.927536), FRAC_CONST(0.937729), FRAC_CONST(0.940312), FRAC_CONST(0.94096), FRAC_CONST(0.941122), FRAC_CONST(0.941163) }, | ||
288 | { FRAC_CONST(0.00194884), FRAC_CONST(0.00774443), FRAC_CONST(0.0301887), FRAC_CONST(0.109589), FRAC_CONST(0.32), FRAC_CONST(0.615385), FRAC_CONST(0.8), FRAC_CONST(0.864865), FRAC_CONST(0.882759), FRAC_CONST(0.887348), FRAC_CONST(0.888503), FRAC_CONST(0.888792), FRAC_CONST(0.888865) }, | ||
289 | { FRAC_CONST(0.000975372), FRAC_CONST(0.00388727), FRAC_CONST(0.0153257), FRAC_CONST(0.057971), FRAC_CONST(0.190476), FRAC_CONST(0.444444), FRAC_CONST(0.666667), FRAC_CONST(0.761905), FRAC_CONST(0.790123), FRAC_CONST(0.797508), FRAC_CONST(0.799375), FRAC_CONST(0.799844), FRAC_CONST(0.799961) }, | ||
290 | { FRAC_CONST(0.000487924), FRAC_CONST(0.00194742), FRAC_CONST(0.00772201), FRAC_CONST(0.0298507), FRAC_CONST(0.105263), FRAC_CONST(0.285714), FRAC_CONST(0.5), FRAC_CONST(0.615385), FRAC_CONST(0.653061), FRAC_CONST(0.663212), FRAC_CONST(0.6658), FRAC_CONST(0.66645), FRAC_CONST(0.666612) }, | ||
291 | { FRAC_CONST(0.000244021), FRAC_CONST(0.000974659), FRAC_CONST(0.00387597), FRAC_CONST(0.0151515), FRAC_CONST(0.0555556), FRAC_CONST(0.166667), FRAC_CONST(0.333333), FRAC_CONST(0.444444), FRAC_CONST(0.484848), FRAC_CONST(0.496124), FRAC_CONST(0.499025), FRAC_CONST(0.499756), FRAC_CONST(0.499939) }, | ||
292 | { FRAC_CONST(0.000122026), FRAC_CONST(0.000487567), FRAC_CONST(0.00194175), FRAC_CONST(0.00763359), FRAC_CONST(0.0285714), FRAC_CONST(0.0909091), FRAC_CONST(0.2), FRAC_CONST(0.285714), FRAC_CONST(0.32), FRAC_CONST(0.329897), FRAC_CONST(0.332468), FRAC_CONST(0.333116), FRAC_CONST(0.333279) }, | ||
293 | { FRAC_CONST(6.10165E-005), FRAC_CONST(0.000243843), FRAC_CONST(0.000971817), FRAC_CONST(0.00383142), FRAC_CONST(0.0144928), FRAC_CONST(0.047619), FRAC_CONST(0.111111), FRAC_CONST(0.166667), FRAC_CONST(0.190476), FRAC_CONST(0.197531), FRAC_CONST(0.199377), FRAC_CONST(0.199844), FRAC_CONST(0.199961) }, | ||
294 | { FRAC_CONST(3.05092E-005), FRAC_CONST(0.000121936), FRAC_CONST(0.000486145), FRAC_CONST(0.00191939), FRAC_CONST(0.00729927), FRAC_CONST(0.0243902), FRAC_CONST(0.0588235), FRAC_CONST(0.0909091), FRAC_CONST(0.105263), FRAC_CONST(0.109589), FRAC_CONST(0.110727), FRAC_CONST(0.111015), FRAC_CONST(0.111087) }, | ||
295 | { FRAC_CONST(1.52548E-005), FRAC_CONST(6.09719E-005), FRAC_CONST(0.000243132), FRAC_CONST(0.000960615), FRAC_CONST(0.003663), FRAC_CONST(0.0123457), FRAC_CONST(0.030303), FRAC_CONST(0.047619), FRAC_CONST(0.0555556), FRAC_CONST(0.057971), FRAC_CONST(0.0586081), FRAC_CONST(0.0587695), FRAC_CONST(0.05881) }, | ||
296 | { FRAC_CONST(7.62747E-006), FRAC_CONST(3.04869E-005), FRAC_CONST(0.000121581), FRAC_CONST(0.000480538), FRAC_CONST(0.00183486), FRAC_CONST(0.00621118), FRAC_CONST(0.0153846), FRAC_CONST(0.0243902), FRAC_CONST(0.0285714), FRAC_CONST(0.0298507), FRAC_CONST(0.0301887), FRAC_CONST(0.0302744), FRAC_CONST(0.0302959) }, | ||
297 | { FRAC_CONST(3.81375E-006), FRAC_CONST(1.52437E-005), FRAC_CONST(6.0794E-005), FRAC_CONST(0.000240327), FRAC_CONST(0.000918274), FRAC_CONST(0.00311526), FRAC_CONST(0.00775194), FRAC_CONST(0.0123457), FRAC_CONST(0.0144928), FRAC_CONST(0.0151515), FRAC_CONST(0.0153257), FRAC_CONST(0.0153698), FRAC_CONST(0.0153809) }, | ||
298 | { FRAC_CONST(1.90688E-006), FRAC_CONST(7.62189E-006), FRAC_CONST(3.03979E-005), FRAC_CONST(0.000120178), FRAC_CONST(0.000459348), FRAC_CONST(0.00156006), FRAC_CONST(0.00389105), FRAC_CONST(0.00621118), FRAC_CONST(0.00729927), FRAC_CONST(0.00763359), FRAC_CONST(0.00772201), FRAC_CONST(0.00774443), FRAC_CONST(0.00775006) }, | ||
299 | { FRAC_CONST(9.53441E-007), FRAC_CONST(3.81096E-006), FRAC_CONST(1.51992E-005), FRAC_CONST(6.00925E-005), FRAC_CONST(0.000229727), FRAC_CONST(0.00078064), FRAC_CONST(0.00194932), FRAC_CONST(0.00311526), FRAC_CONST(0.003663), FRAC_CONST(0.00383142), FRAC_CONST(0.00387597), FRAC_CONST(0.00388727), FRAC_CONST(0.0038901) }, | ||
300 | { FRAC_CONST(4.76721E-007), FRAC_CONST(1.90548E-006), FRAC_CONST(7.59965E-006), FRAC_CONST(3.00472E-005), FRAC_CONST(0.000114877), FRAC_CONST(0.000390472), FRAC_CONST(0.00097561), FRAC_CONST(0.00156006), FRAC_CONST(0.00183486), FRAC_CONST(0.00191939), FRAC_CONST(0.00194175), FRAC_CONST(0.00194742), FRAC_CONST(0.00194884) }, | ||
301 | { FRAC_CONST(2.3836E-007), FRAC_CONST(9.52743E-007), FRAC_CONST(3.79984E-006), FRAC_CONST(1.50238E-005), FRAC_CONST(5.74416E-005), FRAC_CONST(0.000195274), FRAC_CONST(0.000488043), FRAC_CONST(0.00078064), FRAC_CONST(0.000918274), FRAC_CONST(0.000960615), FRAC_CONST(0.000971817), FRAC_CONST(0.000974659), FRAC_CONST(0.000975372) }, | ||
302 | { FRAC_CONST(1.1918E-007), FRAC_CONST(4.76372E-007), FRAC_CONST(1.89992E-006), FRAC_CONST(7.51196E-006), FRAC_CONST(2.87216E-005), FRAC_CONST(9.76467E-005), FRAC_CONST(0.000244081), FRAC_CONST(0.000390472), FRAC_CONST(0.000459348), FRAC_CONST(0.000480538), FRAC_CONST(0.000486145), FRAC_CONST(0.000487567), FRAC_CONST(0.000487924) }, | ||
303 | { FRAC_CONST(5.95901E-008), FRAC_CONST(2.38186E-007), FRAC_CONST(9.49963E-007), FRAC_CONST(3.756E-006), FRAC_CONST(1.4361E-005), FRAC_CONST(4.88257E-005), FRAC_CONST(0.000122055), FRAC_CONST(0.000195274), FRAC_CONST(0.000229727), FRAC_CONST(0.000240327), FRAC_CONST(0.000243132), FRAC_CONST(0.000243843), FRAC_CONST(0.000244021) }, | ||
304 | { FRAC_CONST(2.9795E-008), FRAC_CONST(1.19093E-007), FRAC_CONST(4.74982E-007), FRAC_CONST(1.878E-006), FRAC_CONST(7.18056E-006), FRAC_CONST(2.44135E-005), FRAC_CONST(6.10314E-005), FRAC_CONST(9.76467E-005), FRAC_CONST(0.000114877), FRAC_CONST(0.000120178), FRAC_CONST(0.000121581), FRAC_CONST(0.000121936), FRAC_CONST(0.000122026) }, | ||
305 | { FRAC_CONST(1.48975E-008), FRAC_CONST(5.95465E-008), FRAC_CONST(2.37491E-007), FRAC_CONST(9.39002E-007), FRAC_CONST(3.59029E-006), FRAC_CONST(1.22069E-005), FRAC_CONST(3.05166E-005), FRAC_CONST(4.88257E-005), FRAC_CONST(5.74416E-005), FRAC_CONST(6.00925E-005), FRAC_CONST(6.0794E-005), FRAC_CONST(6.09719E-005), FRAC_CONST(6.10165E-005) }, | ||
306 | { FRAC_CONST(7.44876E-009), FRAC_CONST(2.97732E-008), FRAC_CONST(1.18745E-007), FRAC_CONST(4.69501E-007), FRAC_CONST(1.79515E-006), FRAC_CONST(6.10348E-006), FRAC_CONST(1.52586E-005), FRAC_CONST(2.44135E-005), FRAC_CONST(2.87216E-005), FRAC_CONST(3.00472E-005), FRAC_CONST(3.03979E-005), FRAC_CONST(3.04869E-005), FRAC_CONST(3.05092E-005) }, | ||
307 | { FRAC_CONST(3.72438E-009), FRAC_CONST(1.48866E-008), FRAC_CONST(5.93727E-008), FRAC_CONST(2.34751E-007), FRAC_CONST(8.97575E-007), FRAC_CONST(3.05175E-006), FRAC_CONST(7.62934E-006), FRAC_CONST(1.22069E-005), FRAC_CONST(1.4361E-005), FRAC_CONST(1.50238E-005), FRAC_CONST(1.51992E-005), FRAC_CONST(1.52437E-005), FRAC_CONST(1.52548E-005) }, | ||
308 | { FRAC_CONST(1.86219E-009), FRAC_CONST(7.44331E-009), FRAC_CONST(2.96864E-008), FRAC_CONST(1.17375E-007), FRAC_CONST(4.48788E-007), FRAC_CONST(1.52588E-006), FRAC_CONST(3.81468E-006), FRAC_CONST(6.10348E-006), FRAC_CONST(7.18056E-006), FRAC_CONST(7.51196E-006), FRAC_CONST(7.59965E-006), FRAC_CONST(7.62189E-006), FRAC_CONST(7.62747E-006) }, | ||
309 | { FRAC_CONST(9.31095E-010), FRAC_CONST(3.72166E-009), FRAC_CONST(1.48432E-008), FRAC_CONST(5.86876E-008), FRAC_CONST(2.24394E-007), FRAC_CONST(7.62939E-007), FRAC_CONST(1.90734E-006), FRAC_CONST(3.05175E-006), FRAC_CONST(3.59029E-006), FRAC_CONST(3.756E-006), FRAC_CONST(3.79984E-006), FRAC_CONST(3.81096E-006), FRAC_CONST(3.81375E-006) }, | ||
310 | { FRAC_CONST(4.65548E-010), FRAC_CONST(1.86083E-009), FRAC_CONST(7.42159E-009), FRAC_CONST(2.93438E-008), FRAC_CONST(1.12197E-007), FRAC_CONST(3.8147E-007), FRAC_CONST(9.53673E-007), FRAC_CONST(1.52588E-006), FRAC_CONST(1.79515E-006), FRAC_CONST(1.878E-006), FRAC_CONST(1.89992E-006), FRAC_CONST(1.90548E-006), FRAC_CONST(1.90688E-006) }, | ||
311 | { FRAC_CONST(2.32774E-010), FRAC_CONST(9.30414E-010), FRAC_CONST(3.71079E-009), FRAC_CONST(1.46719E-008), FRAC_CONST(5.60985E-008), FRAC_CONST(1.90735E-007), FRAC_CONST(4.76837E-007), FRAC_CONST(7.62939E-007), FRAC_CONST(8.97575E-007), FRAC_CONST(9.39002E-007), FRAC_CONST(9.49963E-007), FRAC_CONST(9.52743E-007), FRAC_CONST(9.53441E-007) }, | ||
312 | { FRAC_CONST(1.16387E-010), FRAC_CONST(4.65207E-010), FRAC_CONST(1.8554E-009), FRAC_CONST(7.33596E-009), FRAC_CONST(2.80492E-008), FRAC_CONST(9.53674E-008), FRAC_CONST(2.38419E-007), FRAC_CONST(3.8147E-007), FRAC_CONST(4.48788E-007), FRAC_CONST(4.69501E-007), FRAC_CONST(4.74982E-007), FRAC_CONST(4.76372E-007), FRAC_CONST(4.76721E-007) }, | ||
313 | { FRAC_CONST(5.81935E-011), FRAC_CONST(2.32603E-010), FRAC_CONST(9.27699E-010), FRAC_CONST(3.66798E-009), FRAC_CONST(1.40246E-008), FRAC_CONST(4.76837E-008), FRAC_CONST(1.19209E-007), FRAC_CONST(1.90735E-007), FRAC_CONST(2.24394E-007), FRAC_CONST(2.34751E-007), FRAC_CONST(2.37491E-007), FRAC_CONST(2.38186E-007), FRAC_CONST(2.3836E-007) }, | ||
314 | { FRAC_CONST(2.90967E-011), FRAC_CONST(1.16302E-010), FRAC_CONST(4.63849E-010), FRAC_CONST(1.83399E-009), FRAC_CONST(7.01231E-009), FRAC_CONST(2.38419E-008), FRAC_CONST(5.96046E-008), FRAC_CONST(9.53674E-008), FRAC_CONST(1.12197E-007), FRAC_CONST(1.17375E-007), FRAC_CONST(1.18745E-007), FRAC_CONST(1.19093E-007), FRAC_CONST(1.1918E-007) } | ||
315 | }; | ||
316 | |||
317 | static const real_t Q_div2_tab_right[31][13] = { | ||
318 | { FRAC_CONST(0.992246), FRAC_CONST(0.992241), FRAC_CONST(0.992218), FRAC_CONST(0.992128), FRAC_CONST(0.991768), FRAC_CONST(0.990329), FRAC_CONST(0.984615), FRAC_CONST(0.962406), FRAC_CONST(0.882759), FRAC_CONST(0.663212), FRAC_CONST(0.332468), FRAC_CONST(0.111015), FRAC_CONST(0.0302959) }, | ||
319 | { FRAC_CONST(0.984612), FRAC_CONST(0.984601), FRAC_CONST(0.984556), FRAC_CONST(0.984379), FRAC_CONST(0.98367), FRAC_CONST(0.980843), FRAC_CONST(0.969697), FRAC_CONST(0.927536), FRAC_CONST(0.790123), FRAC_CONST(0.496124), FRAC_CONST(0.199377), FRAC_CONST(0.0587695), FRAC_CONST(0.0153809) }, | ||
320 | { FRAC_CONST(0.96969), FRAC_CONST(0.969668), FRAC_CONST(0.969582), FRAC_CONST(0.969238), FRAC_CONST(0.967864), FRAC_CONST(0.962406), FRAC_CONST(0.941176), FRAC_CONST(0.864865), FRAC_CONST(0.653061), FRAC_CONST(0.329897), FRAC_CONST(0.110727), FRAC_CONST(0.0302744), FRAC_CONST(0.00775006) }, | ||
321 | { FRAC_CONST(0.941163), FRAC_CONST(0.941122), FRAC_CONST(0.94096), FRAC_CONST(0.940312), FRAC_CONST(0.937729), FRAC_CONST(0.927536), FRAC_CONST(0.888889), FRAC_CONST(0.761905), FRAC_CONST(0.484848), FRAC_CONST(0.197531), FRAC_CONST(0.0586081), FRAC_CONST(0.0153698), FRAC_CONST(0.0038901) }, | ||
322 | { FRAC_CONST(0.888865), FRAC_CONST(0.888792), FRAC_CONST(0.888503), FRAC_CONST(0.887348), FRAC_CONST(0.882759), FRAC_CONST(0.864865), FRAC_CONST(0.8), FRAC_CONST(0.615385), FRAC_CONST(0.32), FRAC_CONST(0.109589), FRAC_CONST(0.0301887), FRAC_CONST(0.00774443), FRAC_CONST(0.00194884) }, | ||
323 | { FRAC_CONST(0.799961), FRAC_CONST(0.799844), FRAC_CONST(0.799375), FRAC_CONST(0.797508), FRAC_CONST(0.790123), FRAC_CONST(0.761905), FRAC_CONST(0.666667), FRAC_CONST(0.444444), FRAC_CONST(0.190476), FRAC_CONST(0.057971), FRAC_CONST(0.0153257), FRAC_CONST(0.00388727), FRAC_CONST(0.000975372) }, | ||
324 | { FRAC_CONST(0.666612), FRAC_CONST(0.66645), FRAC_CONST(0.6658), FRAC_CONST(0.663212), FRAC_CONST(0.653061), FRAC_CONST(0.615385), FRAC_CONST(0.5), FRAC_CONST(0.285714), FRAC_CONST(0.105263), FRAC_CONST(0.0298507), FRAC_CONST(0.00772201), FRAC_CONST(0.00194742), FRAC_CONST(0.000487924) }, | ||
325 | { FRAC_CONST(0.499939), FRAC_CONST(0.499756), FRAC_CONST(0.499025), FRAC_CONST(0.496124), FRAC_CONST(0.484848), FRAC_CONST(0.444444), FRAC_CONST(0.333333), FRAC_CONST(0.166667), FRAC_CONST(0.0555556), FRAC_CONST(0.0151515), FRAC_CONST(0.00387597), FRAC_CONST(0.000974659), FRAC_CONST(0.000244021) }, | ||
326 | { FRAC_CONST(0.333279), FRAC_CONST(0.333116), FRAC_CONST(0.332468), FRAC_CONST(0.329897), FRAC_CONST(0.32), FRAC_CONST(0.285714), FRAC_CONST(0.2), FRAC_CONST(0.0909091), FRAC_CONST(0.0285714), FRAC_CONST(0.00763359), FRAC_CONST(0.00194175), FRAC_CONST(0.000487567), FRAC_CONST(0.000122026) }, | ||
327 | { FRAC_CONST(0.199961), FRAC_CONST(0.199844), FRAC_CONST(0.199377), FRAC_CONST(0.197531), FRAC_CONST(0.190476), FRAC_CONST(0.166667), FRAC_CONST(0.111111), FRAC_CONST(0.047619), FRAC_CONST(0.0144928), FRAC_CONST(0.00383142), FRAC_CONST(0.000971817), FRAC_CONST(0.000243843), FRAC_CONST(6.10165E-005) }, | ||
328 | { FRAC_CONST(0.111087), FRAC_CONST(0.111015), FRAC_CONST(0.110727), FRAC_CONST(0.109589), FRAC_CONST(0.105263), FRAC_CONST(0.0909091), FRAC_CONST(0.0588235), FRAC_CONST(0.0243902), FRAC_CONST(0.00729927), FRAC_CONST(0.00191939), FRAC_CONST(0.000486145), FRAC_CONST(0.000121936), FRAC_CONST(3.05092E-005) }, | ||
329 | { FRAC_CONST(0.05881), FRAC_CONST(0.0587695), FRAC_CONST(0.0586081), FRAC_CONST(0.057971), FRAC_CONST(0.0555556), FRAC_CONST(0.047619), FRAC_CONST(0.030303), FRAC_CONST(0.0123457), FRAC_CONST(0.003663), FRAC_CONST(0.000960615), FRAC_CONST(0.000243132), FRAC_CONST(6.09719E-005), FRAC_CONST(1.52548E-005) }, | ||
330 | { FRAC_CONST(0.0302959), FRAC_CONST(0.0302744), FRAC_CONST(0.0301887), FRAC_CONST(0.0298507), FRAC_CONST(0.0285714), FRAC_CONST(0.0243902), FRAC_CONST(0.0153846), FRAC_CONST(0.00621118), FRAC_CONST(0.00183486), FRAC_CONST(0.000480538), FRAC_CONST(0.000121581), FRAC_CONST(3.04869E-005), FRAC_CONST(7.62747E-006) }, | ||
331 | { FRAC_CONST(0.0153809), FRAC_CONST(0.0153698), FRAC_CONST(0.0153257), FRAC_CONST(0.0151515), FRAC_CONST(0.0144928), FRAC_CONST(0.0123457), FRAC_CONST(0.00775194), FRAC_CONST(0.00311526), FRAC_CONST(0.000918274), FRAC_CONST(0.000240327), FRAC_CONST(6.0794E-005), FRAC_CONST(1.52437E-005), FRAC_CONST(3.81375E-006) }, | ||
332 | { FRAC_CONST(0.00775006), FRAC_CONST(0.00774443), FRAC_CONST(0.00772201), FRAC_CONST(0.00763359), FRAC_CONST(0.00729927), FRAC_CONST(0.00621118), FRAC_CONST(0.00389105), FRAC_CONST(0.00156006), FRAC_CONST(0.000459348), FRAC_CONST(0.000120178), FRAC_CONST(3.03979E-005), FRAC_CONST(7.62189E-006), FRAC_CONST(1.90688E-006) }, | ||
333 | { FRAC_CONST(0.0038901), FRAC_CONST(0.00388727), FRAC_CONST(0.00387597), FRAC_CONST(0.00383142), FRAC_CONST(0.003663), FRAC_CONST(0.00311526), FRAC_CONST(0.00194932), FRAC_CONST(0.00078064), FRAC_CONST(0.000229727), FRAC_CONST(6.00925E-005), FRAC_CONST(1.51992E-005), FRAC_CONST(3.81096E-006), FRAC_CONST(9.53441E-007) }, | ||
334 | { FRAC_CONST(0.00194884), FRAC_CONST(0.00194742), FRAC_CONST(0.00194175), FRAC_CONST(0.00191939), FRAC_CONST(0.00183486), FRAC_CONST(0.00156006), FRAC_CONST(0.00097561), FRAC_CONST(0.000390472), FRAC_CONST(0.000114877), FRAC_CONST(3.00472E-005), FRAC_CONST(7.59965E-006), FRAC_CONST(1.90548E-006), FRAC_CONST(4.76721E-007) }, | ||
335 | { FRAC_CONST(0.000975372), FRAC_CONST(0.000974659), FRAC_CONST(0.000971817), FRAC_CONST(0.000960615), FRAC_CONST(0.000918274), FRAC_CONST(0.00078064), FRAC_CONST(0.000488043), FRAC_CONST(0.000195274), FRAC_CONST(5.74416E-005), FRAC_CONST(1.50238E-005), FRAC_CONST(3.79984E-006), FRAC_CONST(9.52743E-007), FRAC_CONST(2.3836E-007) }, | ||
336 | { FRAC_CONST(0.000487924), FRAC_CONST(0.000487567), FRAC_CONST(0.000486145), FRAC_CONST(0.000480538), FRAC_CONST(0.000459348), FRAC_CONST(0.000390472), FRAC_CONST(0.000244081), FRAC_CONST(9.76467E-005), FRAC_CONST(2.87216E-005), FRAC_CONST(7.51196E-006), FRAC_CONST(1.89992E-006), FRAC_CONST(4.76372E-007), FRAC_CONST(1.1918E-007) }, | ||
337 | { FRAC_CONST(0.000244021), FRAC_CONST(0.000243843), FRAC_CONST(0.000243132), FRAC_CONST(0.000240327), FRAC_CONST(0.000229727), FRAC_CONST(0.000195274), FRAC_CONST(0.000122055), FRAC_CONST(4.88257E-005), FRAC_CONST(1.4361E-005), FRAC_CONST(3.756E-006), FRAC_CONST(9.49963E-007), FRAC_CONST(2.38186E-007), FRAC_CONST(5.95901E-008) }, | ||
338 | { FRAC_CONST(0.000122026), FRAC_CONST(0.000121936), FRAC_CONST(0.000121581), FRAC_CONST(0.000120178), FRAC_CONST(0.000114877), FRAC_CONST(9.76467E-005), FRAC_CONST(6.10314E-005), FRAC_CONST(2.44135E-005), FRAC_CONST(7.18056E-006), FRAC_CONST(1.878E-006), FRAC_CONST(4.74982E-007), FRAC_CONST(1.19093E-007), FRAC_CONST(2.9795E-008) }, | ||
339 | { FRAC_CONST(6.10165E-005), FRAC_CONST(6.09719E-005), FRAC_CONST(6.0794E-005), FRAC_CONST(6.00925E-005), FRAC_CONST(5.74416E-005), FRAC_CONST(4.88257E-005), FRAC_CONST(3.05166E-005), FRAC_CONST(1.22069E-005), FRAC_CONST(3.59029E-006), FRAC_CONST(9.39002E-007), FRAC_CONST(2.37491E-007), FRAC_CONST(5.95465E-008), FRAC_CONST(1.48975E-008) }, | ||
340 | { FRAC_CONST(3.05092E-005), FRAC_CONST(3.04869E-005), FRAC_CONST(3.03979E-005), FRAC_CONST(3.00472E-005), FRAC_CONST(2.87216E-005), FRAC_CONST(2.44135E-005), FRAC_CONST(1.52586E-005), FRAC_CONST(6.10348E-006), FRAC_CONST(1.79515E-006), FRAC_CONST(4.69501E-007), FRAC_CONST(1.18745E-007), FRAC_CONST(2.97732E-008), FRAC_CONST(7.44876E-009) }, | ||
341 | { FRAC_CONST(1.52548E-005), FRAC_CONST(1.52437E-005), FRAC_CONST(1.51992E-005), FRAC_CONST(1.50238E-005), FRAC_CONST(1.4361E-005), FRAC_CONST(1.22069E-005), FRAC_CONST(7.62934E-006), FRAC_CONST(3.05175E-006), FRAC_CONST(8.97575E-007), FRAC_CONST(2.34751E-007), FRAC_CONST(5.93727E-008), FRAC_CONST(1.48866E-008), FRAC_CONST(3.72438E-009) }, | ||
342 | { FRAC_CONST(7.62747E-006), FRAC_CONST(7.62189E-006), FRAC_CONST(7.59965E-006), FRAC_CONST(7.51196E-006), FRAC_CONST(7.18056E-006), FRAC_CONST(6.10348E-006), FRAC_CONST(3.81468E-006), FRAC_CONST(1.52588E-006), FRAC_CONST(4.48788E-007), FRAC_CONST(1.17375E-007), FRAC_CONST(2.96864E-008), FRAC_CONST(7.44331E-009), FRAC_CONST(1.86219E-009) }, | ||
343 | { FRAC_CONST(3.81375E-006), FRAC_CONST(3.81096E-006), FRAC_CONST(3.79984E-006), FRAC_CONST(3.756E-006), FRAC_CONST(3.59029E-006), FRAC_CONST(3.05175E-006), FRAC_CONST(1.90734E-006), FRAC_CONST(7.62939E-007), FRAC_CONST(2.24394E-007), FRAC_CONST(5.86876E-008), FRAC_CONST(1.48432E-008), FRAC_CONST(3.72166E-009), FRAC_CONST(9.31095E-010) }, | ||
344 | { FRAC_CONST(1.90688E-006), FRAC_CONST(1.90548E-006), FRAC_CONST(1.89992E-006), FRAC_CONST(1.878E-006), FRAC_CONST(1.79515E-006), FRAC_CONST(1.52588E-006), FRAC_CONST(9.53673E-007), FRAC_CONST(3.8147E-007), FRAC_CONST(1.12197E-007), FRAC_CONST(2.93438E-008), FRAC_CONST(7.42159E-009), FRAC_CONST(1.86083E-009), FRAC_CONST(4.65548E-010) }, | ||
345 | { FRAC_CONST(9.53441E-007), FRAC_CONST(9.52743E-007), FRAC_CONST(9.49963E-007), FRAC_CONST(9.39002E-007), FRAC_CONST(8.97575E-007), FRAC_CONST(7.62939E-007), FRAC_CONST(4.76837E-007), FRAC_CONST(1.90735E-007), FRAC_CONST(5.60985E-008), FRAC_CONST(1.46719E-008), FRAC_CONST(3.71079E-009), FRAC_CONST(9.30414E-010), FRAC_CONST(2.32774E-010) }, | ||
346 | { FRAC_CONST(4.76721E-007), FRAC_CONST(4.76372E-007), FRAC_CONST(4.74982E-007), FRAC_CONST(4.69501E-007), FRAC_CONST(4.48788E-007), FRAC_CONST(3.8147E-007), FRAC_CONST(2.38419E-007), FRAC_CONST(9.53674E-008), FRAC_CONST(2.80492E-008), FRAC_CONST(7.33596E-009), FRAC_CONST(1.8554E-009), FRAC_CONST(4.65207E-010), FRAC_CONST(1.16387E-010) }, | ||
347 | { FRAC_CONST(2.3836E-007), FRAC_CONST(2.38186E-007), FRAC_CONST(2.37491E-007), FRAC_CONST(2.34751E-007), FRAC_CONST(2.24394E-007), FRAC_CONST(1.90735E-007), FRAC_CONST(1.19209E-007), FRAC_CONST(4.76837E-008), FRAC_CONST(1.40246E-008), FRAC_CONST(3.66798E-009), FRAC_CONST(9.27699E-010), FRAC_CONST(2.32603E-010), FRAC_CONST(5.81935E-011) }, | ||
348 | { FRAC_CONST(1.1918E-007), FRAC_CONST(1.19093E-007), FRAC_CONST(1.18745E-007), FRAC_CONST(1.17375E-007), FRAC_CONST(1.12197E-007), FRAC_CONST(9.53674E-008), FRAC_CONST(5.96046E-008), FRAC_CONST(2.38419E-008), FRAC_CONST(7.01231E-009), FRAC_CONST(1.83399E-009), FRAC_CONST(4.63849E-010), FRAC_CONST(1.16302E-010), FRAC_CONST(2.90967E-011) } | ||
349 | }; | ||
350 | |||
351 | /* calculates Q/(1+Q) */ | ||
352 | /* [0..1] */ | ||
353 | static real_t calc_Q_div2(sbr_info *sbr, uint8_t ch, uint8_t m, uint8_t l) | ||
354 | { | ||
355 | if (sbr->bs_coupling) | ||
356 | { | ||
357 | if ((sbr->Q[0][m][l] < 0 || sbr->Q[0][m][l] > 30) || | ||
358 | (sbr->Q[1][m][l] < 0 || sbr->Q[1][m][l] > 24 /* 2*panOffset(1) */)) | ||
359 | { | ||
360 | return 0; | ||
361 | } else { | ||
362 | /* the pan parameter is always even */ | ||
363 | if (ch == 0) | ||
364 | { | ||
365 | return Q_div2_tab_left[sbr->Q[0][m][l]][sbr->Q[1][m][l] >> 1]; | ||
366 | } else { | ||
367 | return Q_div2_tab_right[sbr->Q[0][m][l]][sbr->Q[1][m][l] >> 1]; | ||
368 | } | ||
369 | } | ||
370 | } else { | ||
371 | /* no coupling */ | ||
372 | if (sbr->Q[ch][m][l] < 0 || sbr->Q[ch][m][l] > 30) | ||
373 | { | ||
374 | return 0; | ||
375 | } else { | ||
376 | return Q_div2_tab[sbr->Q[ch][m][l]]; | ||
377 | } | ||
378 | } | ||
379 | } | ||
380 | |||
381 | static const real_t E_deq_tab[64] = { | ||
382 | 64.0f, 128.0f, 256.0f, 512.0f, 1024.0f, 2048.0f, 4096.0f, 8192.0f, | ||
383 | 16384.0f, 32768.0f, 65536.0f, 131072.0f, 262144.0f, 524288.0f, 1.04858E+006f, 2.09715E+006f, | ||
384 | 4.1943E+006f, 8.38861E+006f, 1.67772E+007f, 3.35544E+007f, 6.71089E+007f, 1.34218E+008f, 2.68435E+008f, 5.36871E+008f, | ||
385 | 1.07374E+009f, 2.14748E+009f, 4.29497E+009f, 8.58993E+009f, 1.71799E+010f, 3.43597E+010f, 6.87195E+010f, 1.37439E+011f, | ||
386 | 2.74878E+011f, 5.49756E+011f, 1.09951E+012f, 2.19902E+012f, 4.39805E+012f, 8.79609E+012f, 1.75922E+013f, 3.51844E+013f, | ||
387 | 7.03687E+013f, 1.40737E+014f, 2.81475E+014f, 5.6295E+014f, 1.1259E+015f, 2.2518E+015f, 4.5036E+015f, 9.0072E+015f, | ||
388 | 1.80144E+016f, 3.60288E+016f, 7.20576E+016f, 1.44115E+017f, 2.8823E+017f, 5.76461E+017f, 1.15292E+018f, 2.30584E+018f, | ||
389 | 4.61169E+018f, 9.22337E+018f, 1.84467E+019f, 3.68935E+019f, 7.3787E+019f, 1.47574E+020f, 2.95148E+020f, 5.90296E+020f | ||
390 | }; | ||
391 | |||
392 | void envelope_noise_dequantisation(sbr_info *sbr, uint8_t ch) | ||
393 | { | ||
394 | if (sbr->bs_coupling == 0) | ||
395 | { | ||
396 | int16_t exp; | ||
397 | uint8_t l, k; | ||
398 | uint8_t amp = (sbr->amp_res[ch]) ? 0 : 1; | ||
399 | |||
400 | for (l = 0; l < sbr->L_E[ch]; l++) | ||
401 | { | ||
402 | for (k = 0; k < sbr->n[sbr->f[ch][l]]; k++) | ||
403 | { | ||
404 | /* +6 for the *64 and -10 for the /32 in the synthesis QMF (fixed) | ||
405 | * since this is a energy value: (x/32)^2 = (x^2)/1024 | ||
406 | */ | ||
407 | /* exp = (sbr->E[ch][k][l] >> amp) + 6; */ | ||
408 | exp = (sbr->E[ch][k][l] >> amp); | ||
409 | |||
410 | if ((exp < 0) || (exp >= 64)) | ||
411 | { | ||
412 | sbr->E_orig[ch][k][l] = 0; | ||
413 | } else { | ||
414 | sbr->E_orig[ch][k][l] = E_deq_tab[exp]; | ||
415 | |||
416 | /* save half the table size at the cost of 1 multiply */ | ||
417 | if (amp && (sbr->E[ch][k][l] & 1)) | ||
418 | { | ||
419 | sbr->E_orig[ch][k][l] = MUL_C(sbr->E_orig[ch][k][l], COEF_CONST(1.414213562)); | ||
420 | } | ||
421 | } | ||
422 | } | ||
423 | } | ||
424 | |||
425 | for (l = 0; l < sbr->L_Q[ch]; l++) | ||
426 | { | ||
427 | for (k = 0; k < sbr->N_Q; k++) | ||
428 | { | ||
429 | sbr->Q_div[ch][k][l] = calc_Q_div(sbr, ch, k, l); | ||
430 | sbr->Q_div2[ch][k][l] = calc_Q_div2(sbr, ch, k, l); | ||
431 | } | ||
432 | } | ||
433 | } | ||
434 | } | ||
435 | |||
436 | static const real_t E_pan_tab[25] = { | ||
437 | FRAC_CONST(0.000244081), FRAC_CONST(0.000488043), | ||
438 | FRAC_CONST(0.00097561), FRAC_CONST(0.00194932), | ||
439 | FRAC_CONST(0.00389105), FRAC_CONST(0.00775194), | ||
440 | FRAC_CONST(0.0153846), FRAC_CONST(0.030303), | ||
441 | FRAC_CONST(0.0588235), FRAC_CONST(0.111111), | ||
442 | FRAC_CONST(0.2), FRAC_CONST(0.333333), | ||
443 | FRAC_CONST(0.5), FRAC_CONST(0.666667), | ||
444 | FRAC_CONST(0.8), FRAC_CONST(0.888889), | ||
445 | FRAC_CONST(0.941176), FRAC_CONST(0.969697), | ||
446 | FRAC_CONST(0.984615), FRAC_CONST(0.992248), | ||
447 | FRAC_CONST(0.996109), FRAC_CONST(0.998051), | ||
448 | FRAC_CONST(0.999024), FRAC_CONST(0.999512), | ||
449 | FRAC_CONST(0.999756) | ||
450 | }; | ||
451 | |||
452 | void unmap_envelope_noise(sbr_info *sbr) | ||
453 | { | ||
454 | real_t tmp; | ||
455 | int16_t exp0, exp1; | ||
456 | uint8_t l, k; | ||
457 | uint8_t amp0 = (sbr->amp_res[0]) ? 0 : 1; | ||
458 | uint8_t amp1 = (sbr->amp_res[1]) ? 0 : 1; | ||
459 | |||
460 | for (l = 0; l < sbr->L_E[0]; l++) | ||
461 | { | ||
462 | for (k = 0; k < sbr->n[sbr->f[0][l]]; k++) | ||
463 | { | ||
464 | /* +6: * 64 ; +1: * 2 ; */ | ||
465 | exp0 = (sbr->E[0][k][l] >> amp0) + 1; | ||
466 | |||
467 | /* UN_MAP removed: (x / 4096) same as (x >> 12) */ | ||
468 | /* E[1] is always even so no need for compensating the divide by 2 with | ||
469 | * an extra multiplication | ||
470 | */ | ||
471 | /* exp1 = (sbr->E[1][k][l] >> amp1) - 12; */ | ||
472 | exp1 = (sbr->E[1][k][l] >> amp1); | ||
473 | |||
474 | if ((exp0 < 0) || (exp0 >= 64) || | ||
475 | (exp1 < 0) || (exp1 > 24)) | ||
476 | { | ||
477 | sbr->E_orig[1][k][l] = 0; | ||
478 | sbr->E_orig[0][k][l] = 0; | ||
479 | } else { | ||
480 | tmp = E_deq_tab[exp0]; | ||
481 | if (amp0 && (sbr->E[0][k][l] & 1)) | ||
482 | { | ||
483 | tmp = MUL_C(tmp, COEF_CONST(1.414213562)); | ||
484 | } | ||
485 | |||
486 | /* panning */ | ||
487 | sbr->E_orig[0][k][l] = MUL_F(tmp, E_pan_tab[exp1]); | ||
488 | sbr->E_orig[1][k][l] = MUL_F(tmp, E_pan_tab[24 - exp1]); | ||
489 | } | ||
490 | } | ||
491 | } | ||
492 | |||
493 | for (l = 0; l < sbr->L_Q[0]; l++) | ||
494 | { | ||
495 | for (k = 0; k < sbr->N_Q; k++) | ||
496 | { | ||
497 | sbr->Q_div[0][k][l] = calc_Q_div(sbr, 0, k, l); | ||
498 | sbr->Q_div[1][k][l] = calc_Q_div(sbr, 1, k, l); | ||
499 | sbr->Q_div2[0][k][l] = calc_Q_div2(sbr, 0, k, l); | ||
500 | sbr->Q_div2[1][k][l] = calc_Q_div2(sbr, 1, k, l); | ||
501 | } | ||
502 | } | ||
503 | } | ||
504 | |||
505 | #endif | ||
506 | |||
507 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/sbr_e_nf.h b/lib/rbcodec/codecs/libfaad/sbr_e_nf.h new file mode 100644 index 0000000000..6c8b30f06d --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/sbr_e_nf.h | |||
@@ -0,0 +1,47 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __SBR_E_NF_H__ | ||
29 | #define __SBR_E_NF_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | |||
36 | void extract_envelope_data(sbr_info *sbr, uint8_t ch); | ||
37 | void extract_noise_floor_data(sbr_info *sbr, uint8_t ch); | ||
38 | #ifndef FIXED_POINT | ||
39 | void envelope_noise_dequantisation(sbr_info *sbr, uint8_t ch); | ||
40 | void unmap_envelope_noise(sbr_info *sbr); | ||
41 | #endif | ||
42 | |||
43 | #ifdef __cplusplus | ||
44 | } | ||
45 | #endif | ||
46 | #endif | ||
47 | |||
diff --git a/lib/rbcodec/codecs/libfaad/sbr_fbt.c b/lib/rbcodec/codecs/libfaad/sbr_fbt.c new file mode 100644 index 0000000000..c685c710d5 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/sbr_fbt.c | |||
@@ -0,0 +1,762 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | /* Calculate frequency band tables */ | ||
29 | |||
30 | #include "common.h" | ||
31 | #include "structs.h" | ||
32 | |||
33 | #ifdef SBR_DEC | ||
34 | |||
35 | #include <stdlib.h> | ||
36 | |||
37 | #include "sbr_syntax.h" | ||
38 | #include "sbr_fbt.h" | ||
39 | |||
40 | /* static function declarations */ | ||
41 | static int32_t find_bands(uint8_t warp, uint8_t bands, uint8_t a0, uint8_t a1); | ||
42 | |||
43 | |||
44 | /* calculate the start QMF channel for the master frequency band table */ | ||
45 | /* parameter is also called k0 */ | ||
46 | uint8_t qmf_start_channel(uint8_t bs_start_freq, uint8_t bs_samplerate_mode, | ||
47 | uint32_t sample_rate) | ||
48 | { | ||
49 | static const uint8_t startMinTable[12] = { 7, 7, 10, 11, 12, 16, 16, | ||
50 | 17, 24, 32, 35, 48 }; | ||
51 | static const uint8_t offsetIndexTable[12] = { 5, 5, 4, 4, 4, 3, 2, 1, 0, | ||
52 | 6, 6, 6 }; | ||
53 | static const int8_t offset[7][16] = { | ||
54 | { -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7 }, | ||
55 | { -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 13 }, | ||
56 | { -5, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 13, 16 }, | ||
57 | { -6, -4, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 13, 16 }, | ||
58 | { -4, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 13, 16, 20 }, | ||
59 | { -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 13, 16, 20, 24 }, | ||
60 | { 0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 13, 16, 20, 24, 28, 33 } | ||
61 | }; | ||
62 | uint8_t startMin = startMinTable[get_sr_index(sample_rate)]; | ||
63 | uint8_t offsetIndex = offsetIndexTable[get_sr_index(sample_rate)]; | ||
64 | |||
65 | #if 0 /* replaced with table (startMinTable) */ | ||
66 | if (sample_rate >= 64000) | ||
67 | { | ||
68 | startMin = (uint8_t)((5000.*128.)/(float)sample_rate + 0.5); | ||
69 | } else if (sample_rate < 32000) { | ||
70 | startMin = (uint8_t)((3000.*128.)/(float)sample_rate + 0.5); | ||
71 | } else { | ||
72 | startMin = (uint8_t)((4000.*128.)/(float)sample_rate + 0.5); | ||
73 | } | ||
74 | #endif | ||
75 | |||
76 | if (bs_samplerate_mode) | ||
77 | { | ||
78 | return startMin + offset[offsetIndex][bs_start_freq]; | ||
79 | |||
80 | #if 0 /* replaced by offsetIndexTable */ | ||
81 | switch (sample_rate) | ||
82 | { | ||
83 | case 16000: | ||
84 | return startMin + offset[0][bs_start_freq]; | ||
85 | case 22050: | ||
86 | return startMin + offset[1][bs_start_freq]; | ||
87 | case 24000: | ||
88 | return startMin + offset[2][bs_start_freq]; | ||
89 | case 32000: | ||
90 | return startMin + offset[3][bs_start_freq]; | ||
91 | default: | ||
92 | if (sample_rate > 64000) | ||
93 | { | ||
94 | return startMin + offset[5][bs_start_freq]; | ||
95 | } else { /* 44100 <= sample_rate <= 64000 */ | ||
96 | return startMin + offset[4][bs_start_freq]; | ||
97 | } | ||
98 | } | ||
99 | #endif | ||
100 | } else { | ||
101 | return startMin + offset[6][bs_start_freq]; | ||
102 | } | ||
103 | } | ||
104 | |||
105 | static int longcmp(const void *a, const void *b) | ||
106 | { | ||
107 | return ((int)(*(int32_t*)a - *(int32_t*)b)); | ||
108 | } | ||
109 | |||
110 | /* calculate the stop QMF channel for the master frequency band table */ | ||
111 | /* parameter is also called k2 */ | ||
112 | uint8_t qmf_stop_channel(uint8_t bs_stop_freq, uint32_t sample_rate, | ||
113 | uint8_t k0) | ||
114 | { | ||
115 | if (bs_stop_freq == 15) | ||
116 | { | ||
117 | return min(64, k0 * 3); | ||
118 | } else if (bs_stop_freq == 14) { | ||
119 | return min(64, k0 * 2); | ||
120 | } else { | ||
121 | static const uint8_t stopMinTable[12] = { 13, 15, 20, 21, 23, | ||
122 | 32, 32, 35, 48, 64, 70, 96 }; | ||
123 | static const int8_t offset[12][14] = { | ||
124 | { 0, 2, 4, 6, 8, 11, 14, 18, 22, 26, 31, 37, 44, 51 }, | ||
125 | { 0, 2, 4, 6, 8, 11, 14, 18, 22, 26, 31, 36, 42, 49 }, | ||
126 | { 0, 2, 4, 6, 8, 11, 14, 17, 21, 25, 29, 34, 39, 44 }, | ||
127 | { 0, 2, 4, 6, 8, 11, 14, 17, 20, 24, 28, 33, 38, 43 }, | ||
128 | { 0, 2, 4, 6, 8, 11, 14, 17, 20, 24, 28, 32, 36, 41 }, | ||
129 | { 0, 2, 4, 6, 8, 10, 12, 14, 17, 20, 23, 26, 29, 32 }, | ||
130 | { 0, 2, 4, 6, 8, 10, 12, 14, 17, 20, 23, 26, 29, 32 }, | ||
131 | { 0, 1, 3, 5, 7, 9, 11, 13, 15, 17, 20, 23, 26, 29 }, | ||
132 | { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 16 }, | ||
133 | { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | ||
134 | { 0, -1, -2, -3, -4, -5, -6, -6, -6, -6, -6, -6, -6, -6 }, | ||
135 | { 0, -3, -6, -9, -12, -15, -18, -20, -22, -24, -26, -28, -30, -32 } | ||
136 | }; | ||
137 | #if 0 | ||
138 | uint8_t i; | ||
139 | int32_t stopDk[13], stopDk_t[14], k2; | ||
140 | #endif | ||
141 | uint8_t stopMin = stopMinTable[get_sr_index(sample_rate)]; | ||
142 | |||
143 | #if 0 /* replaced by table lookup */ | ||
144 | if (sample_rate >= 64000) | ||
145 | { | ||
146 | stopMin = (uint8_t)((10000.*128.)/(float)sample_rate + 0.5); | ||
147 | } else if (sample_rate < 32000) { | ||
148 | stopMin = (uint8_t)((6000.*128.)/(float)sample_rate + 0.5); | ||
149 | } else { | ||
150 | stopMin = (uint8_t)((8000.*128.)/(float)sample_rate + 0.5); | ||
151 | } | ||
152 | #endif | ||
153 | |||
154 | #if 0 /* replaced by table lookup */ | ||
155 | /* diverging power series */ | ||
156 | for (i = 0; i <= 13; i++) | ||
157 | { | ||
158 | stopDk_t[i] = (int32_t)(stopMin*pow(64.0/stopMin, i/13.0) + 0.5); | ||
159 | } | ||
160 | for (i = 0; i < 13; i++) | ||
161 | { | ||
162 | stopDk[i] = stopDk_t[i+1] - stopDk_t[i]; | ||
163 | } | ||
164 | |||
165 | /* needed? */ | ||
166 | qsort(stopDk, 13, sizeof(stopDk[0]), longcmp); | ||
167 | |||
168 | k2 = stopMin; | ||
169 | for (i = 0; i < bs_stop_freq; i++) | ||
170 | { | ||
171 | k2 += stopDk[i]; | ||
172 | } | ||
173 | return min(64, k2); | ||
174 | #endif | ||
175 | /* bs_stop_freq <= 13 */ | ||
176 | return min(64, stopMin + offset[get_sr_index(sample_rate)][min(bs_stop_freq, 13)]); | ||
177 | } | ||
178 | |||
179 | return 0; | ||
180 | } | ||
181 | |||
182 | /* calculate the master frequency table from k0, k2, bs_freq_scale | ||
183 | and bs_alter_scale | ||
184 | |||
185 | version for bs_freq_scale = 0 | ||
186 | */ | ||
187 | uint8_t master_frequency_table_fs0(sbr_info *sbr, uint8_t k0, uint8_t k2, | ||
188 | uint8_t bs_alter_scale) | ||
189 | { | ||
190 | int8_t incr; | ||
191 | uint8_t k; | ||
192 | uint8_t dk; | ||
193 | uint32_t nrBands, k2Achieved; | ||
194 | int32_t k2Diff, vDk[64] = {0}; | ||
195 | |||
196 | /* mft only defined for k2 > k0 */ | ||
197 | if (k2 <= k0) | ||
198 | { | ||
199 | sbr->N_master = 0; | ||
200 | return 1; | ||
201 | } | ||
202 | |||
203 | dk = bs_alter_scale ? 2 : 1; | ||
204 | |||
205 | #if 0 /* replaced by float-less design */ | ||
206 | nrBands = 2 * (int32_t)((float)(k2-k0)/(dk*2) + (-1+dk)/2.0f); | ||
207 | #else | ||
208 | if (bs_alter_scale) | ||
209 | { | ||
210 | nrBands = (((k2-k0+2)>>2)<<1); | ||
211 | } else { | ||
212 | nrBands = (((k2-k0)>>1)<<1); | ||
213 | } | ||
214 | #endif | ||
215 | nrBands = min(nrBands, 63); | ||
216 | if (nrBands <= 0) | ||
217 | return 1; | ||
218 | |||
219 | k2Achieved = k0 + nrBands * dk; | ||
220 | k2Diff = k2 - k2Achieved; | ||
221 | for (k = 0; k < nrBands; k++) | ||
222 | vDk[k] = dk; | ||
223 | |||
224 | if (k2Diff) | ||
225 | { | ||
226 | incr = (k2Diff > 0) ? -1 : 1; | ||
227 | k = (uint8_t) ((k2Diff > 0) ? (nrBands-1) : 0); | ||
228 | |||
229 | while (k2Diff != 0) | ||
230 | { | ||
231 | vDk[k] -= incr; | ||
232 | k += incr; | ||
233 | k2Diff += incr; | ||
234 | } | ||
235 | } | ||
236 | |||
237 | sbr->f_master[0] = k0; | ||
238 | for (k = 1; k <= nrBands; k++) | ||
239 | sbr->f_master[k] = (uint8_t)(sbr->f_master[k-1] + vDk[k-1]); | ||
240 | |||
241 | sbr->N_master = (uint8_t)nrBands; | ||
242 | sbr->N_master = (min(sbr->N_master, 64)); | ||
243 | |||
244 | #if 0 | ||
245 | printf("f_master[%d]: ", nrBands); | ||
246 | for (k = 0; k <= nrBands; k++) | ||
247 | { | ||
248 | printf("%d ", sbr->f_master[k]); | ||
249 | } | ||
250 | printf("\n"); | ||
251 | #endif | ||
252 | |||
253 | return 0; | ||
254 | } | ||
255 | |||
256 | /* | ||
257 | This function finds the number of bands using this formula: | ||
258 | bands * log(a1/a0)/log(2.0) + 0.5 | ||
259 | */ | ||
260 | static int32_t find_bands(uint8_t warp, uint8_t bands, uint8_t a0, uint8_t a1) | ||
261 | { | ||
262 | #ifdef FIXED_POINT | ||
263 | /* table with log2() values */ | ||
264 | static const real_t log2Table[65] = { | ||
265 | COEF_CONST(0.0), COEF_CONST(0.0), COEF_CONST(1.0000000000), COEF_CONST(1.5849625007), | ||
266 | COEF_CONST(2.0000000000), COEF_CONST(2.3219280949), COEF_CONST(2.5849625007), COEF_CONST(2.8073549221), | ||
267 | COEF_CONST(3.0000000000), COEF_CONST(3.1699250014), COEF_CONST(3.3219280949), COEF_CONST(3.4594316186), | ||
268 | COEF_CONST(3.5849625007), COEF_CONST(3.7004397181), COEF_CONST(3.8073549221), COEF_CONST(3.9068905956), | ||
269 | COEF_CONST(4.0000000000), COEF_CONST(4.0874628413), COEF_CONST(4.1699250014), COEF_CONST(4.2479275134), | ||
270 | COEF_CONST(4.3219280949), COEF_CONST(4.3923174228), COEF_CONST(4.4594316186), COEF_CONST(4.5235619561), | ||
271 | COEF_CONST(4.5849625007), COEF_CONST(4.6438561898), COEF_CONST(4.7004397181), COEF_CONST(4.7548875022), | ||
272 | COEF_CONST(4.8073549221), COEF_CONST(4.8579809951), COEF_CONST(4.9068905956), COEF_CONST(4.9541963104), | ||
273 | COEF_CONST(5.0000000000), COEF_CONST(5.0443941194), COEF_CONST(5.0874628413), COEF_CONST(5.1292830169), | ||
274 | COEF_CONST(5.1699250014), COEF_CONST(5.2094533656), COEF_CONST(5.2479275134), COEF_CONST(5.2854022189), | ||
275 | COEF_CONST(5.3219280949), COEF_CONST(5.3575520046), COEF_CONST(5.3923174228), COEF_CONST(5.4262647547), | ||
276 | COEF_CONST(5.4594316186), COEF_CONST(5.4918530963), COEF_CONST(5.5235619561), COEF_CONST(5.5545888517), | ||
277 | COEF_CONST(5.5849625007), COEF_CONST(5.6147098441), COEF_CONST(5.6438561898), COEF_CONST(5.6724253420), | ||
278 | COEF_CONST(5.7004397181), COEF_CONST(5.7279204546), COEF_CONST(5.7548875022), COEF_CONST(5.7813597135), | ||
279 | COEF_CONST(5.8073549221), COEF_CONST(5.8328900142), COEF_CONST(5.8579809951), COEF_CONST(5.8826430494), | ||
280 | COEF_CONST(5.9068905956), COEF_CONST(5.9307373376), COEF_CONST(5.9541963104), COEF_CONST(5.9772799235), | ||
281 | COEF_CONST(6.0) | ||
282 | }; | ||
283 | real_t r0 = log2Table[a0]; /* coef */ | ||
284 | real_t r1 = log2Table[a1]; /* coef */ | ||
285 | real_t r2 = (r1 - r0); /* coef */ | ||
286 | |||
287 | if (warp) | ||
288 | r2 = MUL_C(r2, COEF_CONST(1.0/1.3)); | ||
289 | |||
290 | /* convert r2 to real and then multiply and round */ | ||
291 | r2 = (r2 >> (COEF_BITS-REAL_BITS)) * bands + (1<<(REAL_BITS-1)); | ||
292 | |||
293 | return (r2 >> REAL_BITS); | ||
294 | #else | ||
295 | real_t div = (real_t)log(2.0); | ||
296 | if (warp) div *= (real_t)1.3; | ||
297 | |||
298 | return (int32_t)(bands * log((float)a1/(float)a0)/div + 0.5); | ||
299 | #endif | ||
300 | } | ||
301 | |||
302 | static real_t find_initial_power(uint8_t bands, uint8_t a0, uint8_t a1) | ||
303 | { | ||
304 | #ifdef FIXED_POINT | ||
305 | /* table with log() values */ | ||
306 | static const real_t logTable[65] = { | ||
307 | COEF_CONST(0.0), COEF_CONST(0.0), COEF_CONST(0.6931471806), COEF_CONST(1.0986122887), | ||
308 | COEF_CONST(1.3862943611), COEF_CONST(1.6094379124), COEF_CONST(1.7917594692), COEF_CONST(1.9459101491), | ||
309 | COEF_CONST(2.0794415417), COEF_CONST(2.1972245773), COEF_CONST(2.3025850930), COEF_CONST(2.3978952728), | ||
310 | COEF_CONST(2.4849066498), COEF_CONST(2.5649493575), COEF_CONST(2.6390573296), COEF_CONST(2.7080502011), | ||
311 | COEF_CONST(2.7725887222), COEF_CONST(2.8332133441), COEF_CONST(2.8903717579), COEF_CONST(2.9444389792), | ||
312 | COEF_CONST(2.9957322736), COEF_CONST(3.0445224377), COEF_CONST(3.0910424534), COEF_CONST(3.1354942159), | ||
313 | COEF_CONST(3.1780538303), COEF_CONST(3.2188758249), COEF_CONST(3.2580965380), COEF_CONST(3.2958368660), | ||
314 | COEF_CONST(3.3322045102), COEF_CONST(3.3672958300), COEF_CONST(3.4011973817), COEF_CONST(3.4339872045), | ||
315 | COEF_CONST(3.4657359028), COEF_CONST(3.4965075615), COEF_CONST(3.5263605246), COEF_CONST(3.5553480615), | ||
316 | COEF_CONST(3.5835189385), COEF_CONST(3.6109179126), COEF_CONST(3.6375861597), COEF_CONST(3.6635616461), | ||
317 | COEF_CONST(3.6888794541), COEF_CONST(3.7135720667), COEF_CONST(3.7376696183), COEF_CONST(3.7612001157), | ||
318 | COEF_CONST(3.7841896339), COEF_CONST(3.8066624898), COEF_CONST(3.8286413965), COEF_CONST(3.8501476017), | ||
319 | COEF_CONST(3.8712010109), COEF_CONST(3.8918202981), COEF_CONST(3.9120230054), COEF_CONST(3.9318256327), | ||
320 | COEF_CONST(3.9512437186), COEF_CONST(3.9702919136), COEF_CONST(3.9889840466), COEF_CONST(4.0073331852), | ||
321 | COEF_CONST(4.0253516907), COEF_CONST(4.0430512678), COEF_CONST(4.0604430105), COEF_CONST(4.0775374439), | ||
322 | COEF_CONST(4.0943445622), COEF_CONST(4.1108738642), COEF_CONST(4.1271343850), COEF_CONST(4.1431347264), | ||
323 | COEF_CONST(4.158883083) | ||
324 | }; | ||
325 | /* standard Taylor polynomial coefficients for exp(x) around 0 */ | ||
326 | /* a polynomial around x=1 is more precise, as most values are around 1.07, | ||
327 | but this is just fine already */ | ||
328 | static const real_t c1 = COEF_CONST(1.0); | ||
329 | static const real_t c2 = COEF_CONST(1.0/2.0); | ||
330 | static const real_t c3 = COEF_CONST(1.0/6.0); | ||
331 | static const real_t c4 = COEF_CONST(1.0/24.0); | ||
332 | |||
333 | real_t r0 = logTable[a0]; /* coef */ | ||
334 | real_t r1 = logTable[a1]; /* coef */ | ||
335 | real_t r2 = (r1 - r0) / bands; /* coef */ | ||
336 | real_t rexp = c1 + MUL_C((c1 + MUL_C((c2 + MUL_C((c3 + MUL_C(c4,r2)), r2)), r2)), r2); | ||
337 | |||
338 | return (rexp >> (COEF_BITS-REAL_BITS)); /* real */ | ||
339 | #else | ||
340 | return (real_t)pow((real_t)a1/(real_t)a0, 1.0/(real_t)bands); | ||
341 | #endif | ||
342 | } | ||
343 | |||
344 | /* | ||
345 | version for bs_freq_scale > 0 | ||
346 | */ | ||
347 | uint8_t master_frequency_table(sbr_info *sbr, uint8_t k0, uint8_t k2, | ||
348 | uint8_t bs_freq_scale, uint8_t bs_alter_scale) | ||
349 | { | ||
350 | uint8_t k, bands, twoRegions; | ||
351 | uint8_t k1; | ||
352 | uint8_t nrBand0, nrBand1; | ||
353 | int32_t vDk0[64] = {0}, vDk1[64] = {0}; | ||
354 | int32_t vk0[64] = {0}, vk1[64] = {0}; | ||
355 | uint8_t temp1[] = { 6, 5, 4 }; | ||
356 | real_t q, qk; | ||
357 | int32_t A_1; | ||
358 | #ifdef FIXED_POINT | ||
359 | real_t rk2, rk0; | ||
360 | #endif | ||
361 | |||
362 | (void)bs_alter_scale; | ||
363 | /* mft only defined for k2 > k0 */ | ||
364 | if (k2 <= k0) | ||
365 | { | ||
366 | sbr->N_master = 0; | ||
367 | return 1; | ||
368 | } | ||
369 | |||
370 | bands = temp1[bs_freq_scale-1]; | ||
371 | |||
372 | #ifdef FIXED_POINT | ||
373 | rk0 = (real_t)k0 << REAL_BITS; | ||
374 | rk2 = (real_t)k2 << REAL_BITS; | ||
375 | if (rk2 > MUL_C(rk0, COEF_CONST(2.2449))) | ||
376 | #else | ||
377 | if ((float)k2/(float)k0 > 2.2449) | ||
378 | #endif | ||
379 | { | ||
380 | twoRegions = 1; | ||
381 | k1 = k0 << 1; | ||
382 | } else { | ||
383 | twoRegions = 0; | ||
384 | k1 = k2; | ||
385 | } | ||
386 | |||
387 | nrBand0 = (uint8_t)(2 * find_bands(0, bands, k0, k1)); | ||
388 | nrBand0 = min(nrBand0, 63); | ||
389 | if (nrBand0 <= 0) | ||
390 | return 1; | ||
391 | |||
392 | q = find_initial_power(nrBand0, k0, k1); | ||
393 | #ifdef FIXED_POINT | ||
394 | qk = (real_t)k0 << REAL_BITS; | ||
395 | //A_1 = (int32_t)((qk + REAL_CONST(0.5)) >> REAL_BITS); | ||
396 | A_1 = k0; | ||
397 | #else | ||
398 | qk = REAL_CONST(k0); | ||
399 | A_1 = (int32_t)(qk + .5); | ||
400 | #endif | ||
401 | for (k = 0; k <= nrBand0; k++) | ||
402 | { | ||
403 | int32_t A_0 = A_1; | ||
404 | #ifdef FIXED_POINT | ||
405 | qk = MUL_R(qk,q); | ||
406 | A_1 = (int32_t)((qk + REAL_CONST(0.5)) >> REAL_BITS); | ||
407 | #else | ||
408 | qk *= q; | ||
409 | A_1 = (int32_t)(qk + 0.5); | ||
410 | #endif | ||
411 | vDk0[k] = A_1 - A_0; | ||
412 | } | ||
413 | |||
414 | /* needed? */ | ||
415 | qsort(vDk0, nrBand0, sizeof(vDk0[0]), longcmp); | ||
416 | |||
417 | vk0[0] = k0; | ||
418 | for (k = 1; k <= nrBand0; k++) | ||
419 | { | ||
420 | vk0[k] = vk0[k-1] + vDk0[k-1]; | ||
421 | if (vDk0[k-1] == 0) | ||
422 | return 1; | ||
423 | } | ||
424 | |||
425 | if (!twoRegions) | ||
426 | { | ||
427 | for (k = 0; k <= nrBand0; k++) | ||
428 | sbr->f_master[k] = (uint8_t) vk0[k]; | ||
429 | |||
430 | sbr->N_master = nrBand0; | ||
431 | sbr->N_master = min(sbr->N_master, 64); | ||
432 | return 0; | ||
433 | } | ||
434 | |||
435 | nrBand1 = (uint8_t)(2 * find_bands(1 /* warped */, bands, k1, k2)); | ||
436 | nrBand1 = min(nrBand1, 63); | ||
437 | |||
438 | q = find_initial_power(nrBand1, k1, k2); | ||
439 | #ifdef FIXED_POINT | ||
440 | qk = (real_t)k1 << REAL_BITS; | ||
441 | //A_1 = (int32_t)((qk + REAL_CONST(0.5)) >> REAL_BITS); | ||
442 | A_1 = k1; | ||
443 | #else | ||
444 | qk = REAL_CONST(k1); | ||
445 | A_1 = (int32_t)(qk + .5); | ||
446 | #endif | ||
447 | for (k = 0; k <= nrBand1 - 1; k++) | ||
448 | { | ||
449 | int32_t A_0 = A_1; | ||
450 | #ifdef FIXED_POINT | ||
451 | qk = MUL_R(qk,q); | ||
452 | A_1 = (int32_t)((qk + REAL_CONST(0.5)) >> REAL_BITS); | ||
453 | #else | ||
454 | qk *= q; | ||
455 | A_1 = (int32_t)(qk + 0.5); | ||
456 | #endif | ||
457 | vDk1[k] = A_1 - A_0; | ||
458 | } | ||
459 | |||
460 | if (vDk1[0] < vDk0[nrBand0 - 1]) | ||
461 | { | ||
462 | int32_t change; | ||
463 | |||
464 | /* needed? */ | ||
465 | qsort(vDk1, nrBand1 + 1, sizeof(vDk1[0]), longcmp); | ||
466 | change = vDk0[nrBand0 - 1] - vDk1[0]; | ||
467 | vDk1[0] = vDk0[nrBand0 - 1]; | ||
468 | vDk1[nrBand1 - 1] = vDk1[nrBand1 - 1] - change; | ||
469 | } | ||
470 | |||
471 | /* needed? */ | ||
472 | qsort(vDk1, nrBand1, sizeof(vDk1[0]), longcmp); | ||
473 | vk1[0] = k1; | ||
474 | for (k = 1; k <= nrBand1; k++) | ||
475 | { | ||
476 | vk1[k] = vk1[k-1] + vDk1[k-1]; | ||
477 | if (vDk1[k-1] == 0) | ||
478 | return 1; | ||
479 | } | ||
480 | |||
481 | sbr->N_master = nrBand0 + nrBand1; | ||
482 | sbr->N_master = min(sbr->N_master, 64); | ||
483 | for (k = 0; k <= nrBand0; k++) | ||
484 | { | ||
485 | sbr->f_master[k] = (uint8_t) vk0[k]; | ||
486 | } | ||
487 | for (k = nrBand0 + 1; k <= sbr->N_master; k++) | ||
488 | { | ||
489 | sbr->f_master[k] = (uint8_t) vk1[k - nrBand0]; | ||
490 | } | ||
491 | |||
492 | #if 0 | ||
493 | printf("f_master[%d]: ", sbr->N_master); | ||
494 | for (k = 0; k <= sbr->N_master; k++) | ||
495 | { | ||
496 | printf("%d ", sbr->f_master[k]); | ||
497 | } | ||
498 | printf("\n"); | ||
499 | #endif | ||
500 | |||
501 | return 0; | ||
502 | } | ||
503 | |||
504 | /* calculate the derived frequency border tables from f_master */ | ||
505 | uint8_t derived_frequency_table(sbr_info *sbr, uint8_t bs_xover_band, | ||
506 | uint8_t k2) | ||
507 | { | ||
508 | uint8_t k, i = 0; | ||
509 | uint32_t minus; | ||
510 | |||
511 | /* The following relation shall be satisfied: bs_xover_band < N_Master */ | ||
512 | if (sbr->N_master <= bs_xover_band) | ||
513 | return 1; | ||
514 | |||
515 | sbr->N_high = sbr->N_master - bs_xover_band; | ||
516 | sbr->N_low = (sbr->N_high>>1) + (sbr->N_high - ((sbr->N_high>>1)<<1)); | ||
517 | |||
518 | sbr->n[0] = sbr->N_low; | ||
519 | sbr->n[1] = sbr->N_high; | ||
520 | |||
521 | for (k = 0; k <= sbr->N_high; k++) | ||
522 | { | ||
523 | sbr->f_table_res[HI_RES][k] = sbr->f_master[k + bs_xover_band]; | ||
524 | } | ||
525 | |||
526 | sbr->M = sbr->f_table_res[HI_RES][sbr->N_high] - sbr->f_table_res[HI_RES][0]; | ||
527 | sbr->kx = sbr->f_table_res[HI_RES][0]; | ||
528 | if (sbr->kx > 32) | ||
529 | return 1; | ||
530 | if (sbr->kx + sbr->M > 64) | ||
531 | return 1; | ||
532 | |||
533 | minus = (sbr->N_high & 1) ? 1 : 0; | ||
534 | |||
535 | for (k = 0; k <= sbr->N_low; k++) | ||
536 | { | ||
537 | if (k == 0) | ||
538 | i = 0; | ||
539 | else | ||
540 | i = (uint8_t)(2*k - minus); | ||
541 | sbr->f_table_res[LO_RES][k] = sbr->f_table_res[HI_RES][i]; | ||
542 | } | ||
543 | |||
544 | #if 0 | ||
545 | printf("bs_freq_scale: %d\n", sbr->bs_freq_scale); | ||
546 | printf("bs_limiter_bands: %d\n", sbr->bs_limiter_bands); | ||
547 | printf("f_table_res[HI_RES][%d]: ", sbr->N_high); | ||
548 | for (k = 0; k <= sbr->N_high; k++) | ||
549 | { | ||
550 | printf("%d ", sbr->f_table_res[HI_RES][k]); | ||
551 | } | ||
552 | printf("\n"); | ||
553 | #endif | ||
554 | #if 0 | ||
555 | printf("f_table_res[LO_RES][%d]: ", sbr->N_low); | ||
556 | for (k = 0; k <= sbr->N_low; k++) | ||
557 | { | ||
558 | printf("%d ", sbr->f_table_res[LO_RES][k]); | ||
559 | } | ||
560 | printf("\n"); | ||
561 | #endif | ||
562 | |||
563 | sbr->N_Q = 0; | ||
564 | if (sbr->bs_noise_bands == 0) | ||
565 | { | ||
566 | sbr->N_Q = 1; | ||
567 | } else { | ||
568 | #if 0 | ||
569 | sbr->N_Q = max(1, (int32_t)(sbr->bs_noise_bands*(log(k2/(float)sbr->kx)/log(2.0)) + 0.5)); | ||
570 | #else | ||
571 | sbr->N_Q = (uint8_t)(max(1, find_bands(0, sbr->bs_noise_bands, sbr->kx, k2))); | ||
572 | #endif | ||
573 | sbr->N_Q = min(5, sbr->N_Q); | ||
574 | } | ||
575 | |||
576 | for (k = 0; k <= sbr->N_Q; k++) | ||
577 | { | ||
578 | if (k == 0) | ||
579 | { | ||
580 | i = 0; | ||
581 | } else { | ||
582 | /* i = i + (int32_t)((sbr->N_low - i)/(sbr->N_Q + 1 - k)); */ | ||
583 | i = i + (sbr->N_low - i)/(sbr->N_Q + 1 - k); | ||
584 | } | ||
585 | sbr->f_table_noise[k] = sbr->f_table_res[LO_RES][i]; | ||
586 | } | ||
587 | |||
588 | /* build table for mapping k to g in hf patching */ | ||
589 | for (k = 0; k < 64; k++) | ||
590 | { | ||
591 | uint8_t g; | ||
592 | for (g = 0; g < sbr->N_Q; g++) | ||
593 | { | ||
594 | if ((sbr->f_table_noise[g] <= k) && | ||
595 | (k < sbr->f_table_noise[g+1])) | ||
596 | { | ||
597 | sbr->table_map_k_to_g[k] = g; | ||
598 | break; | ||
599 | } | ||
600 | } | ||
601 | } | ||
602 | |||
603 | #if 0 | ||
604 | printf("f_table_noise[%d]: ", sbr->N_Q); | ||
605 | for (k = 0; k <= sbr->N_Q; k++) | ||
606 | { | ||
607 | printf("%d ", sbr->f_table_noise[k] - sbr->kx); | ||
608 | } | ||
609 | printf("\n"); | ||
610 | #endif | ||
611 | |||
612 | return 0; | ||
613 | } | ||
614 | |||
615 | /* TODO: blegh, ugly */ | ||
616 | /* Modified to calculate for all possible bs_limiter_bands always | ||
617 | * This reduces the number calls to this functions needed (now only on | ||
618 | * header reset) | ||
619 | */ | ||
620 | void limiter_frequency_table(sbr_info *sbr) | ||
621 | { | ||
622 | #if 0 | ||
623 | static const real_t limiterBandsPerOctave[] = { REAL_CONST(1.2), | ||
624 | REAL_CONST(2), REAL_CONST(3) }; | ||
625 | #else | ||
626 | static const real_t limiterBandsCompare[] = { REAL_CONST(1.327152), | ||
627 | REAL_CONST(1.185093), REAL_CONST(1.119872) }; | ||
628 | #endif | ||
629 | uint8_t k, s; | ||
630 | int8_t nrLim; | ||
631 | #if 0 | ||
632 | real_t limBands; | ||
633 | #endif | ||
634 | |||
635 | sbr->f_table_lim[0][0] = sbr->f_table_res[LO_RES][0] - sbr->kx; | ||
636 | sbr->f_table_lim[0][1] = sbr->f_table_res[LO_RES][sbr->N_low] - sbr->kx; | ||
637 | sbr->N_L[0] = 1; | ||
638 | |||
639 | #if 0 | ||
640 | printf("f_table_lim[%d][%d]: ", 0, sbr->N_L[0]); | ||
641 | for (k = 0; k <= sbr->N_L[0]; k++) | ||
642 | { | ||
643 | printf("%d ", sbr->f_table_lim[0][k]); | ||
644 | } | ||
645 | printf("\n"); | ||
646 | #endif | ||
647 | |||
648 | for (s = 1; s < 4; s++) | ||
649 | { | ||
650 | int32_t limTable[100 /*TODO*/] = {0}; | ||
651 | uint8_t patchBorders[64/*??*/] = {0}; | ||
652 | |||
653 | #if 0 | ||
654 | limBands = limiterBandsPerOctave[s - 1]; | ||
655 | #endif | ||
656 | |||
657 | patchBorders[0] = sbr->kx; | ||
658 | for (k = 1; k <= sbr->noPatches; k++) | ||
659 | { | ||
660 | patchBorders[k] = patchBorders[k-1] + sbr->patchNoSubbands[k-1]; | ||
661 | } | ||
662 | |||
663 | for (k = 0; k <= sbr->N_low; k++) | ||
664 | { | ||
665 | limTable[k] = sbr->f_table_res[LO_RES][k]; | ||
666 | } | ||
667 | for (k = 1; k < sbr->noPatches; k++) | ||
668 | { | ||
669 | limTable[k+sbr->N_low] = patchBorders[k]; | ||
670 | } | ||
671 | |||
672 | /* needed */ | ||
673 | qsort(limTable, sbr->noPatches + sbr->N_low, sizeof(limTable[0]), longcmp); | ||
674 | k = 1; | ||
675 | nrLim = sbr->noPatches + sbr->N_low - 1; | ||
676 | |||
677 | if (nrLim < 0) // TODO: BIG FAT PROBLEM | ||
678 | return; | ||
679 | |||
680 | restart: | ||
681 | if (k <= nrLim) | ||
682 | { | ||
683 | real_t nOctaves; | ||
684 | |||
685 | if (limTable[k-1] != 0) | ||
686 | #if 0 | ||
687 | nOctaves = REAL_CONST(log((float)limTable[k]/(float)limTable[k-1])/log(2.0)); | ||
688 | #else | ||
689 | #ifdef FIXED_POINT | ||
690 | nOctaves = DIV_R((limTable[k]<<REAL_BITS),limTable[k-1]); | ||
691 | #else | ||
692 | nOctaves = (real_t)limTable[k]/(real_t)limTable[k-1]; | ||
693 | #endif | ||
694 | #endif | ||
695 | else | ||
696 | nOctaves = 0; | ||
697 | |||
698 | #if 0 | ||
699 | if ((MUL_R(nOctaves,limBands)) < REAL_CONST(0.49)) | ||
700 | #else | ||
701 | if (nOctaves < limiterBandsCompare[s - 1]) | ||
702 | #endif | ||
703 | { | ||
704 | uint8_t i; | ||
705 | if (limTable[k] != limTable[k-1]) | ||
706 | { | ||
707 | uint8_t found = 0, found2 = 0; | ||
708 | for (i = 0; i <= sbr->noPatches; i++) | ||
709 | { | ||
710 | if (limTable[k] == patchBorders[i]) | ||
711 | found = 1; | ||
712 | } | ||
713 | if (found) | ||
714 | { | ||
715 | found2 = 0; | ||
716 | for (i = 0; i <= sbr->noPatches; i++) | ||
717 | { | ||
718 | if (limTable[k-1] == patchBorders[i]) | ||
719 | found2 = 1; | ||
720 | } | ||
721 | if (found2) | ||
722 | { | ||
723 | k++; | ||
724 | goto restart; | ||
725 | } else { | ||
726 | /* remove (k-1)th element */ | ||
727 | limTable[k-1] = sbr->f_table_res[LO_RES][sbr->N_low]; | ||
728 | qsort(limTable, sbr->noPatches + sbr->N_low, sizeof(limTable[0]), longcmp); | ||
729 | nrLim--; | ||
730 | goto restart; | ||
731 | } | ||
732 | } | ||
733 | } | ||
734 | /* remove kth element */ | ||
735 | limTable[k] = sbr->f_table_res[LO_RES][sbr->N_low]; | ||
736 | qsort(limTable, nrLim, sizeof(limTable[0]), longcmp); | ||
737 | nrLim--; | ||
738 | goto restart; | ||
739 | } else { | ||
740 | k++; | ||
741 | goto restart; | ||
742 | } | ||
743 | } | ||
744 | |||
745 | sbr->N_L[s] = nrLim; | ||
746 | for (k = 0; k <= nrLim; k++) | ||
747 | { | ||
748 | sbr->f_table_lim[s][k] = limTable[k] - sbr->kx; | ||
749 | } | ||
750 | |||
751 | #if 0 | ||
752 | printf("f_table_lim[%d][%d]: ", s, sbr->N_L[s]); | ||
753 | for (k = 0; k <= sbr->N_L[s]; k++) | ||
754 | { | ||
755 | printf("%d ", sbr->f_table_lim[s][k]); | ||
756 | } | ||
757 | printf("\n"); | ||
758 | #endif | ||
759 | } | ||
760 | } | ||
761 | |||
762 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/sbr_fbt.h b/lib/rbcodec/codecs/libfaad/sbr_fbt.h new file mode 100644 index 0000000000..ac25335268 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/sbr_fbt.h | |||
@@ -0,0 +1,52 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __SBR_FBT_H__ | ||
29 | #define __SBR_FBT_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | uint8_t qmf_start_channel(uint8_t bs_start_freq, uint8_t bs_samplerate_mode, | ||
36 | uint32_t sample_rate); | ||
37 | uint8_t qmf_stop_channel(uint8_t bs_stop_freq, uint32_t sample_rate, | ||
38 | uint8_t k0); | ||
39 | uint8_t master_frequency_table_fs0(sbr_info *sbr, uint8_t k0, uint8_t k2, | ||
40 | uint8_t bs_alter_scale); | ||
41 | uint8_t master_frequency_table(sbr_info *sbr, uint8_t k0, uint8_t k2, | ||
42 | uint8_t bs_freq_scale, uint8_t bs_alter_scale); | ||
43 | uint8_t derived_frequency_table(sbr_info *sbr, uint8_t bs_xover_band, | ||
44 | uint8_t k2); | ||
45 | void limiter_frequency_table(sbr_info *sbr); | ||
46 | |||
47 | |||
48 | #ifdef __cplusplus | ||
49 | } | ||
50 | #endif | ||
51 | #endif | ||
52 | |||
diff --git a/lib/rbcodec/codecs/libfaad/sbr_hfadj.c b/lib/rbcodec/codecs/libfaad/sbr_hfadj.c new file mode 100644 index 0000000000..b562bf904a --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/sbr_hfadj.c | |||
@@ -0,0 +1,1631 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | /* High Frequency adjustment */ | ||
29 | |||
30 | #include "common.h" | ||
31 | #include "structs.h" | ||
32 | |||
33 | #ifdef SBR_DEC | ||
34 | |||
35 | #include "sbr_syntax.h" | ||
36 | #include "sbr_hfadj.h" | ||
37 | |||
38 | #include "sbr_noise.h" | ||
39 | |||
40 | #ifdef FIXED_POINT | ||
41 | #define REAL_UPSCALE(A) ((A)<<REAL_BITS) | ||
42 | #define REAL_DOWNSCALE(A) ((A)>>REAL_BITS) | ||
43 | #else | ||
44 | #define REAL_UPSCALE(A) (A) | ||
45 | #define REAL_DOWNSCALE(A) (A) | ||
46 | #endif | ||
47 | |||
48 | /* static function declarations */ | ||
49 | static void estimate_current_envelope(sbr_info *sbr, sbr_hfadj_info *adj, | ||
50 | qmf_t Xsbr[MAX_NTSRHFG][64], uint8_t ch); | ||
51 | static void calculate_gain(sbr_info *sbr, sbr_hfadj_info *adj, uint8_t ch); | ||
52 | #ifdef SBR_LOW_POWER | ||
53 | static void calc_gain_groups(sbr_info *sbr, sbr_hfadj_info *adj, real_t *deg, uint8_t ch); | ||
54 | static void aliasing_reduction(sbr_info *sbr, sbr_hfadj_info *adj, real_t *deg, uint8_t ch); | ||
55 | #endif | ||
56 | static void hf_assembly(sbr_info *sbr, sbr_hfadj_info *adj, qmf_t Xsbr[MAX_NTSRHFG][64], uint8_t ch); | ||
57 | |||
58 | |||
59 | void hf_adjustment(sbr_info *sbr, qmf_t Xsbr[MAX_NTSRHFG][64] | ||
60 | #ifdef SBR_LOW_POWER | ||
61 | ,real_t *deg /* aliasing degree */ | ||
62 | #endif | ||
63 | ,uint8_t ch) | ||
64 | { | ||
65 | sbr_hfadj_info adj MEM_ALIGN_ATTR; | ||
66 | |||
67 | memset(&adj,0,sizeof(adj)); | ||
68 | if (sbr->bs_frame_class[ch] == FIXFIX) | ||
69 | { | ||
70 | sbr->l_A[ch] = -1; | ||
71 | } else if (sbr->bs_frame_class[ch] == VARFIX) { | ||
72 | if (sbr->bs_pointer[ch] > 1) | ||
73 | sbr->l_A[ch] = -1; | ||
74 | else | ||
75 | sbr->l_A[ch] = sbr->bs_pointer[ch] - 1; | ||
76 | } else { | ||
77 | if (sbr->bs_pointer[ch] == 0) | ||
78 | sbr->l_A[ch] = -1; | ||
79 | else | ||
80 | sbr->l_A[ch] = sbr->L_E[ch] + 1 - sbr->bs_pointer[ch]; | ||
81 | } | ||
82 | |||
83 | estimate_current_envelope(sbr, &adj, Xsbr, ch); | ||
84 | |||
85 | calculate_gain(sbr, &adj, ch); | ||
86 | |||
87 | #ifdef SBR_LOW_POWER | ||
88 | calc_gain_groups(sbr, &adj, deg, ch); | ||
89 | aliasing_reduction(sbr, &adj, deg, ch); | ||
90 | #endif | ||
91 | |||
92 | hf_assembly(sbr, &adj, Xsbr, ch); | ||
93 | } | ||
94 | |||
95 | static uint8_t get_S_mapped(sbr_info *sbr, uint8_t ch, uint8_t l, uint8_t current_band) | ||
96 | { | ||
97 | if (sbr->f[ch][l] == HI_RES) | ||
98 | { | ||
99 | /* in case of using f_table_high we just have 1 to 1 mapping | ||
100 | * from bs_add_harmonic[l][k] | ||
101 | */ | ||
102 | if ((l >= sbr->l_A[ch]) || | ||
103 | (sbr->bs_add_harmonic_prev[ch][current_band] && sbr->bs_add_harmonic_flag_prev[ch])) | ||
104 | { | ||
105 | return sbr->bs_add_harmonic[ch][current_band]; | ||
106 | } | ||
107 | } else { | ||
108 | uint8_t b, lb, ub; | ||
109 | |||
110 | /* in case of f_table_low we check if any of the HI_RES bands | ||
111 | * within this LO_RES band has bs_add_harmonic[l][k] turned on | ||
112 | * (note that borders in the LO_RES table are also present in | ||
113 | * the HI_RES table) | ||
114 | */ | ||
115 | |||
116 | /* find first HI_RES band in current LO_RES band */ | ||
117 | lb = 2 * (current_band ) - ((sbr->N_high & 1) ? 1 : 0); | ||
118 | /* find first HI_RES band in next LO_RES band */ | ||
119 | ub = 2 * (current_band+1) - ((sbr->N_high & 1) ? 1 : 0); | ||
120 | |||
121 | /* check all HI_RES bands in current LO_RES band for sinusoid */ | ||
122 | for (b = lb; b < ub; b++) | ||
123 | { | ||
124 | if ((l >= sbr->l_A[ch]) || | ||
125 | (sbr->bs_add_harmonic_prev[ch][b] && sbr->bs_add_harmonic_flag_prev[ch])) | ||
126 | { | ||
127 | if (sbr->bs_add_harmonic[ch][b] == 1) | ||
128 | return 1; | ||
129 | } | ||
130 | } | ||
131 | } | ||
132 | |||
133 | return 0; | ||
134 | } | ||
135 | |||
136 | static void estimate_current_envelope(sbr_info *sbr, sbr_hfadj_info *adj, | ||
137 | qmf_t Xsbr[MAX_NTSRHFG][64], uint8_t ch) | ||
138 | { | ||
139 | uint8_t m, l, j, k, k_l, k_h, p; | ||
140 | real_t nrg, div, tmp; | ||
141 | |||
142 | (void)adj; | ||
143 | if (sbr->bs_interpol_freq == 1) | ||
144 | { | ||
145 | for (l = 0; l < sbr->L_E[ch]; l++) | ||
146 | { | ||
147 | uint8_t i, l_i, u_i; | ||
148 | |||
149 | l_i = sbr->t_E[ch][l]; | ||
150 | u_i = sbr->t_E[ch][l+1]; | ||
151 | |||
152 | div = (real_t)(u_i - l_i); | ||
153 | |||
154 | for (m = 0; m < sbr->M; m++) | ||
155 | { | ||
156 | nrg = 0; | ||
157 | |||
158 | for (i = l_i + sbr->tHFAdj; i < u_i + sbr->tHFAdj; i++) | ||
159 | { | ||
160 | tmp = QMF_RE(Xsbr[i][m + sbr->kx]); | ||
161 | nrg += MUL_R(tmp, REAL_DOWNSCALE(tmp)); | ||
162 | #ifndef SBR_LOW_POWER | ||
163 | tmp = QMF_IM(Xsbr[i][m + sbr->kx]); | ||
164 | nrg += MUL_R(tmp, REAL_DOWNSCALE(tmp)); | ||
165 | #endif | ||
166 | } | ||
167 | |||
168 | sbr->E_curr[ch][m][l] = nrg / div; | ||
169 | #ifdef SBR_LOW_POWER | ||
170 | sbr->E_curr[ch][m][l] *= 2; | ||
171 | #endif | ||
172 | } | ||
173 | } | ||
174 | } else { | ||
175 | for (l = 0; l < sbr->L_E[ch]; l++) | ||
176 | { | ||
177 | for (p = 0; p < sbr->n[sbr->f[ch][l]]; p++) | ||
178 | { | ||
179 | k_l = sbr->f_table_res[sbr->f[ch][l]][p]; | ||
180 | k_h = sbr->f_table_res[sbr->f[ch][l]][p+1]; | ||
181 | |||
182 | for (k = k_l; k < k_h; k++) | ||
183 | { | ||
184 | uint8_t i, l_i, u_i; | ||
185 | nrg = 0; | ||
186 | |||
187 | l_i = sbr->t_E[ch][l]; | ||
188 | u_i = sbr->t_E[ch][l+1]; | ||
189 | |||
190 | div = (real_t)((u_i - l_i)*(k_h - k_l)); | ||
191 | |||
192 | for (i = l_i + sbr->tHFAdj; i < u_i + sbr->tHFAdj; i++) | ||
193 | { | ||
194 | for (j = k_l; j < k_h; j++) | ||
195 | { | ||
196 | tmp = QMF_RE(Xsbr[i][j]); | ||
197 | nrg += MUL_R(tmp, REAL_DOWNSCALE(tmp)); | ||
198 | #ifndef SBR_LOW_POWER | ||
199 | tmp = QMF_IM(Xsbr[i][j]); | ||
200 | nrg += MUL_R(tmp, REAL_DOWNSCALE(tmp)); | ||
201 | #endif | ||
202 | } | ||
203 | } | ||
204 | |||
205 | sbr->E_curr[ch][k - sbr->kx][l] = nrg / div; | ||
206 | #ifdef SBR_LOW_POWER | ||
207 | sbr->E_curr[ch][k - sbr->kx][l] *= 2; | ||
208 | #endif | ||
209 | } | ||
210 | } | ||
211 | } | ||
212 | } | ||
213 | } | ||
214 | |||
215 | #ifdef FIXED_POINT | ||
216 | #define EPS (1) /* smallest number available in fixed point */ | ||
217 | #else | ||
218 | #define EPS (1e-12) | ||
219 | #endif | ||
220 | |||
221 | |||
222 | |||
223 | #ifdef FIXED_POINT | ||
224 | |||
225 | /* log2 values of [0..63] */ | ||
226 | static const real_t log2_int_tab[] = { | ||
227 | LOG2_MIN_INF , REAL_CONST(0.000000000000000), REAL_CONST(1.000000000000000), REAL_CONST(1.584962500721156), | ||
228 | REAL_CONST(2.000000000000000), REAL_CONST(2.321928094887362), REAL_CONST(2.584962500721156), REAL_CONST(2.807354922057604), | ||
229 | REAL_CONST(3.000000000000000), REAL_CONST(3.169925001442313), REAL_CONST(3.321928094887363), REAL_CONST(3.459431618637297), | ||
230 | REAL_CONST(3.584962500721156), REAL_CONST(3.700439718141092), REAL_CONST(3.807354922057604), REAL_CONST(3.906890595608519), | ||
231 | REAL_CONST(4.000000000000000), REAL_CONST(4.087462841250339), REAL_CONST(4.169925001442312), REAL_CONST(4.247927513443585), | ||
232 | REAL_CONST(4.321928094887362), REAL_CONST(4.392317422778761), REAL_CONST(4.459431618637297), REAL_CONST(4.523561956057013), | ||
233 | REAL_CONST(4.584962500721156), REAL_CONST(4.643856189774724), REAL_CONST(4.700439718141093), REAL_CONST(4.754887502163468), | ||
234 | REAL_CONST(4.807354922057604), REAL_CONST(4.857980995127572), REAL_CONST(4.906890595608519), REAL_CONST(4.954196310386875), | ||
235 | REAL_CONST(5.000000000000000), REAL_CONST(5.044394119358453), REAL_CONST(5.087462841250340), REAL_CONST(5.129283016944966), | ||
236 | REAL_CONST(5.169925001442312), REAL_CONST(5.209453365628949), REAL_CONST(5.247927513443585), REAL_CONST(5.285402218862248), | ||
237 | REAL_CONST(5.321928094887363), REAL_CONST(5.357552004618084), REAL_CONST(5.392317422778761), REAL_CONST(5.426264754702098), | ||
238 | REAL_CONST(5.459431618637297), REAL_CONST(5.491853096329675), REAL_CONST(5.523561956057013), REAL_CONST(5.554588851677637), | ||
239 | REAL_CONST(5.584962500721156), REAL_CONST(5.614709844115208), REAL_CONST(5.643856189774724), REAL_CONST(5.672425341971495), | ||
240 | REAL_CONST(5.700439718141093), REAL_CONST(5.727920454563200), REAL_CONST(5.754887502163469), REAL_CONST(5.781359713524660), | ||
241 | REAL_CONST(5.807354922057605), REAL_CONST(5.832890014164742), REAL_CONST(5.857980995127572), REAL_CONST(5.882643049361842), | ||
242 | REAL_CONST(5.906890595608518), REAL_CONST(5.930737337562887), REAL_CONST(5.954196310386876), REAL_CONST(5.977279923499916) | ||
243 | }; | ||
244 | |||
245 | static const real_t pan_log2_tab[] = { | ||
246 | REAL_CONST(1.000000000000000), REAL_CONST(0.584962500721156), REAL_CONST(0.321928094887362), REAL_CONST(0.169925001442312), REAL_CONST(0.087462841250339), | ||
247 | REAL_CONST(0.044394119358453), REAL_CONST(0.022367813028455), REAL_CONST(0.011227255423254), REAL_CONST(0.005624549193878), REAL_CONST(0.002815015607054), | ||
248 | REAL_CONST(0.001408194392808), REAL_CONST(0.000704269011247), REAL_CONST(0.000352177480301), REAL_CONST(0.000176099486443), REAL_CONST(0.000088052430122), | ||
249 | REAL_CONST(0.000044026886827), REAL_CONST(0.000022013611360), REAL_CONST(0.000011006847667) | ||
250 | }; | ||
251 | |||
252 | static real_t find_log2_E(sbr_info *sbr, uint8_t k, uint8_t l, uint8_t ch) | ||
253 | { | ||
254 | /* check for coupled energy/noise data */ | ||
255 | if (sbr->bs_coupling == 1) | ||
256 | { | ||
257 | uint8_t amp0 = (sbr->amp_res[0]) ? 0 : 1; | ||
258 | uint8_t amp1 = (sbr->amp_res[1]) ? 0 : 1; | ||
259 | real_t tmp = (7 << REAL_BITS) + (sbr->E[0][k][l] << (REAL_BITS-amp0)); | ||
260 | real_t pan; | ||
261 | |||
262 | /* E[1] should always be even so shifting is OK */ | ||
263 | uint8_t E = sbr->E[1][k][l] >> amp1; | ||
264 | |||
265 | if (ch == 0) | ||
266 | { | ||
267 | if (E > 12) | ||
268 | { | ||
269 | /* negative */ | ||
270 | pan = pan_log2_tab[-12 + E]; | ||
271 | } else { | ||
272 | /* positive */ | ||
273 | pan = pan_log2_tab[12 - E] + ((12 - E)<<REAL_BITS); | ||
274 | } | ||
275 | } else { | ||
276 | if (E < 12) | ||
277 | { | ||
278 | /* negative */ | ||
279 | pan = pan_log2_tab[-E + 12]; | ||
280 | } else { | ||
281 | /* positive */ | ||
282 | pan = pan_log2_tab[E - 12] + ((E - 12)<<REAL_BITS); | ||
283 | } | ||
284 | } | ||
285 | |||
286 | /* tmp / pan in log2 */ | ||
287 | return tmp - pan; | ||
288 | } else { | ||
289 | uint8_t amp = (sbr->amp_res[ch]) ? 0 : 1; | ||
290 | |||
291 | return (6 << REAL_BITS) + (sbr->E[ch][k][l] << (REAL_BITS-amp)); | ||
292 | } | ||
293 | } | ||
294 | |||
295 | static real_t find_log2_Q(sbr_info *sbr, uint8_t k, uint8_t l, uint8_t ch) | ||
296 | { | ||
297 | /* check for coupled energy/noise data */ | ||
298 | if (sbr->bs_coupling == 1) | ||
299 | { | ||
300 | real_t tmp = (7 << REAL_BITS) - (sbr->Q[0][k][l] << REAL_BITS); | ||
301 | real_t pan; | ||
302 | |||
303 | uint8_t Q = sbr->Q[1][k][l]; | ||
304 | |||
305 | if (ch == 0) | ||
306 | { | ||
307 | if (Q > 12) | ||
308 | { | ||
309 | /* negative */ | ||
310 | pan = pan_log2_tab[-12 + Q]; | ||
311 | } else { | ||
312 | /* positive */ | ||
313 | pan = pan_log2_tab[12 - Q] + ((12 - Q)<<REAL_BITS); | ||
314 | } | ||
315 | } else { | ||
316 | if (Q < 12) | ||
317 | { | ||
318 | /* negative */ | ||
319 | pan = pan_log2_tab[-Q + 12]; | ||
320 | } else { | ||
321 | /* positive */ | ||
322 | pan = pan_log2_tab[Q - 12] + ((Q - 12)<<REAL_BITS); | ||
323 | } | ||
324 | } | ||
325 | |||
326 | /* tmp / pan in log2 */ | ||
327 | return tmp - pan; | ||
328 | } else { | ||
329 | return (6 << REAL_BITS) - (sbr->Q[ch][k][l] << REAL_BITS); | ||
330 | } | ||
331 | } | ||
332 | |||
333 | static const real_t log_Qplus1_pan[31][13] = { | ||
334 | { REAL_CONST(0.044383447617292), REAL_CONST(0.169768601655960), REAL_CONST(0.583090126514435), REAL_CONST(1.570089221000671), REAL_CONST(3.092446088790894), REAL_CONST(4.733354568481445), REAL_CONST(6.022367954254150), REAL_CONST(6.692092418670654), REAL_CONST(6.924463272094727), REAL_CONST(6.989034175872803), REAL_CONST(7.005646705627441), REAL_CONST(7.009829998016357), REAL_CONST(7.010877609252930) }, | ||
335 | { REAL_CONST(0.022362394258380), REAL_CONST(0.087379962205887), REAL_CONST(0.320804953575134), REAL_CONST(0.988859415054321), REAL_CONST(2.252387046813965), REAL_CONST(3.786596298217773), REAL_CONST(5.044394016265869), REAL_CONST(5.705977916717529), REAL_CONST(5.936291694641113), REAL_CONST(6.000346660614014), REAL_CONST(6.016829967498779), REAL_CONST(6.020981311798096), REAL_CONST(6.022020816802979) }, | ||
336 | { REAL_CONST(0.011224525049329), REAL_CONST(0.044351425021887), REAL_CONST(0.169301137328148), REAL_CONST(0.577544987201691), REAL_CONST(1.527246952056885), REAL_CONST(2.887525320053101), REAL_CONST(4.087462902069092), REAL_CONST(4.733354568481445), REAL_CONST(4.959661006927490), REAL_CONST(5.022709369659424), REAL_CONST(5.038940429687500), REAL_CONST(5.043028831481934), REAL_CONST(5.044052600860596) }, | ||
337 | { REAL_CONST(0.005623178556561), REAL_CONST(0.022346137091517), REAL_CONST(0.087132595479488), REAL_CONST(0.317482173442841), REAL_CONST(0.956931233406067), REAL_CONST(2.070389270782471), REAL_CONST(3.169924974441528), REAL_CONST(3.786596298217773), REAL_CONST(4.005294322967529), REAL_CONST(4.066420555114746), REAL_CONST(4.082170009613037), REAL_CONST(4.086137294769287), REAL_CONST(4.087131500244141) }, | ||
338 | { REAL_CONST(0.002814328996465), REAL_CONST(0.011216334067285), REAL_CONST(0.044224001467228), REAL_CONST(0.167456731200218), REAL_CONST(0.556393325328827), REAL_CONST(1.378511548042297), REAL_CONST(2.321928024291992), REAL_CONST(2.887525320053101), REAL_CONST(3.092446088790894), REAL_CONST(3.150059700012207), REAL_CONST(3.164926528930664), REAL_CONST(3.168673276901245), REAL_CONST(3.169611930847168) }, | ||
339 | { REAL_CONST(0.001407850766554), REAL_CONST(0.005619067233056), REAL_CONST(0.022281449288130), REAL_CONST(0.086156636476517), REAL_CONST(0.304854571819305), REAL_CONST(0.847996890544891), REAL_CONST(1.584962487220764), REAL_CONST(2.070389270782471), REAL_CONST(2.252387046813965), REAL_CONST(2.304061651229858), REAL_CONST(2.317430257797241), REAL_CONST(2.320801734924316), REAL_CONST(2.321646213531494) }, | ||
340 | { REAL_CONST(0.000704097095877), REAL_CONST(0.002812269143760), REAL_CONST(0.011183738708496), REAL_CONST(0.043721374124289), REAL_CONST(0.160464659333229), REAL_CONST(0.485426813364029), REAL_CONST(1.000000000000000), REAL_CONST(1.378511548042297), REAL_CONST(1.527246952056885), REAL_CONST(1.570089221000671), REAL_CONST(1.581215262413025), REAL_CONST(1.584023833274841), REAL_CONST(1.584727644920349) }, | ||
341 | { REAL_CONST(0.000352177477907), REAL_CONST(0.001406819908880), REAL_CONST(0.005602621007711), REAL_CONST(0.022026389837265), REAL_CONST(0.082462236285210), REAL_CONST(0.263034462928772), REAL_CONST(0.584962487220764), REAL_CONST(0.847996890544891), REAL_CONST(0.956931233406067), REAL_CONST(0.988859415054321), REAL_CONST(0.997190535068512), REAL_CONST(0.999296069145203), REAL_CONST(0.999823868274689) }, | ||
342 | { REAL_CONST(0.000176099492819), REAL_CONST(0.000703581434209), REAL_CONST(0.002804030198604), REAL_CONST(0.011055230163038), REAL_CONST(0.041820213198662), REAL_CONST(0.137503549456596), REAL_CONST(0.321928083896637), REAL_CONST(0.485426813364029), REAL_CONST(0.556393325328827), REAL_CONST(0.577544987201691), REAL_CONST(0.583090126514435), REAL_CONST(0.584493279457092), REAL_CONST(0.584845066070557) }, | ||
343 | { REAL_CONST(0.000088052431238), REAL_CONST(0.000351833587047), REAL_CONST(0.001402696361765), REAL_CONST(0.005538204684854), REAL_CONST(0.021061634644866), REAL_CONST(0.070389263331890), REAL_CONST(0.169925004243851), REAL_CONST(0.263034462928772), REAL_CONST(0.304854571819305), REAL_CONST(0.317482173442841), REAL_CONST(0.320804953575134), REAL_CONST(0.321646571159363), REAL_CONST(0.321857661008835) }, | ||
344 | { REAL_CONST(0.000044026888645), REAL_CONST(0.000175927518285), REAL_CONST(0.000701518612914), REAL_CONST(0.002771759871393), REAL_CONST(0.010569252073765), REAL_CONST(0.035623874515295), REAL_CONST(0.087462842464447), REAL_CONST(0.137503549456596), REAL_CONST(0.160464659333229), REAL_CONST(0.167456731200218), REAL_CONST(0.169301137328148), REAL_CONST(0.169768601655960), REAL_CONST(0.169885858893394) }, | ||
345 | { REAL_CONST(0.000022013611670), REAL_CONST(0.000088052431238), REAL_CONST(0.000350801943569), REAL_CONST(0.001386545598507), REAL_CONST(0.005294219125062), REAL_CONST(0.017921976745129), REAL_CONST(0.044394120573997), REAL_CONST(0.070389263331890), REAL_CONST(0.082462236285210), REAL_CONST(0.086156636476517), REAL_CONST(0.087132595479488), REAL_CONST(0.087379962205887), REAL_CONST(0.087442122399807) }, | ||
346 | { REAL_CONST(0.000011006847672), REAL_CONST(0.000044026888645), REAL_CONST(0.000175411638338), REAL_CONST(0.000693439331371), REAL_CONST(0.002649537986144), REAL_CONST(0.008988817222416), REAL_CONST(0.022367812693119), REAL_CONST(0.035623874515295), REAL_CONST(0.041820213198662), REAL_CONST(0.043721374124289), REAL_CONST(0.044224001467228), REAL_CONST(0.044351425021887), REAL_CONST(0.044383447617292) }, | ||
347 | { REAL_CONST(0.000005503434295), REAL_CONST(0.000022013611670), REAL_CONST(0.000087708482170), REAL_CONST(0.000346675369656), REAL_CONST(0.001325377263129), REAL_CONST(0.004501323681325), REAL_CONST(0.011227255687118), REAL_CONST(0.017921976745129), REAL_CONST(0.021061634644866), REAL_CONST(0.022026389837265), REAL_CONST(0.022281449288130), REAL_CONST(0.022346137091517), REAL_CONST(0.022362394258380) }, | ||
348 | { REAL_CONST(0.000002751719876), REAL_CONST(0.000011006847672), REAL_CONST(0.000043854910473), REAL_CONST(0.000173348103999), REAL_CONST(0.000662840844598), REAL_CONST(0.002252417383716), REAL_CONST(0.005624548997730), REAL_CONST(0.008988817222416), REAL_CONST(0.010569252073765), REAL_CONST(0.011055230163038), REAL_CONST(0.011183738708496), REAL_CONST(0.011216334067285), REAL_CONST(0.011224525049329) }, | ||
349 | { REAL_CONST(0.000001375860506), REAL_CONST(0.000005503434295), REAL_CONST(0.000022013611670), REAL_CONST(0.000086676649516), REAL_CONST(0.000331544462824), REAL_CONST(0.001126734190620), REAL_CONST(0.002815015614033), REAL_CONST(0.004501323681325), REAL_CONST(0.005294219125062), REAL_CONST(0.005538204684854), REAL_CONST(0.005602621007711), REAL_CONST(0.005619067233056), REAL_CONST(0.005623178556561) }, | ||
350 | { REAL_CONST(0.000000687930424), REAL_CONST(0.000002751719876), REAL_CONST(0.000011006847672), REAL_CONST(0.000043338975956), REAL_CONST(0.000165781748365), REAL_CONST(0.000563477107789), REAL_CONST(0.001408194424585), REAL_CONST(0.002252417383716), REAL_CONST(0.002649537986144), REAL_CONST(0.002771759871393), REAL_CONST(0.002804030198604), REAL_CONST(0.002812269143760), REAL_CONST(0.002814328996465) }, | ||
351 | { REAL_CONST(0.000000343965269), REAL_CONST(0.000001375860506), REAL_CONST(0.000005503434295), REAL_CONST(0.000021669651687), REAL_CONST(0.000082893253420), REAL_CONST(0.000281680084299), REAL_CONST(0.000704268983100), REAL_CONST(0.001126734190620), REAL_CONST(0.001325377263129), REAL_CONST(0.001386545598507), REAL_CONST(0.001402696361765), REAL_CONST(0.001406819908880), REAL_CONST(0.001407850766554) }, | ||
352 | { REAL_CONST(0.000000171982634), REAL_CONST(0.000000687930424), REAL_CONST(0.000002751719876), REAL_CONST(0.000010834866771), REAL_CONST(0.000041447223339), REAL_CONST(0.000140846910654), REAL_CONST(0.000352177477907), REAL_CONST(0.000563477107789), REAL_CONST(0.000662840844598), REAL_CONST(0.000693439331371), REAL_CONST(0.000701518612914), REAL_CONST(0.000703581434209), REAL_CONST(0.000704097095877) }, | ||
353 | { REAL_CONST(0.000000000000000), REAL_CONST(0.000000343965269), REAL_CONST(0.000001375860506), REAL_CONST(0.000005503434295), REAL_CONST(0.000020637769921), REAL_CONST(0.000070511166996), REAL_CONST(0.000176099492819), REAL_CONST(0.000281680084299), REAL_CONST(0.000331544462824), REAL_CONST(0.000346675369656), REAL_CONST(0.000350801943569), REAL_CONST(0.000351833587047), REAL_CONST(0.000352177477907) }, | ||
354 | { REAL_CONST(0.000000000000000), REAL_CONST(0.000000171982634), REAL_CONST(0.000000687930424), REAL_CONST(0.000002751719876), REAL_CONST(0.000010318922250), REAL_CONST(0.000035256012779), REAL_CONST(0.000088052431238), REAL_CONST(0.000140846910654), REAL_CONST(0.000165781748365), REAL_CONST(0.000173348103999), REAL_CONST(0.000175411638338), REAL_CONST(0.000175927518285), REAL_CONST(0.000176099492819) }, | ||
355 | { REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000343965269), REAL_CONST(0.000001375860506), REAL_CONST(0.000005159470220), REAL_CONST(0.000017542124624), REAL_CONST(0.000044026888645), REAL_CONST(0.000070511166996), REAL_CONST(0.000082893253420), REAL_CONST(0.000086676649516), REAL_CONST(0.000087708482170), REAL_CONST(0.000088052431238), REAL_CONST(0.000088052431238) }, | ||
356 | { REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000171982634), REAL_CONST(0.000000687930424), REAL_CONST(0.000002579737384), REAL_CONST(0.000008771088687), REAL_CONST(0.000022013611670), REAL_CONST(0.000035256012779), REAL_CONST(0.000041447223339), REAL_CONST(0.000043338975956), REAL_CONST(0.000043854910473), REAL_CONST(0.000044026888645), REAL_CONST(0.000044026888645) }, | ||
357 | { REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000343965269), REAL_CONST(0.000001375860506), REAL_CONST(0.000004471542070), REAL_CONST(0.000011006847672), REAL_CONST(0.000017542124624), REAL_CONST(0.000020637769921), REAL_CONST(0.000021669651687), REAL_CONST(0.000022013611670), REAL_CONST(0.000022013611670), REAL_CONST(0.000022013611670) }, | ||
358 | { REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000171982634), REAL_CONST(0.000000687930424), REAL_CONST(0.000002235772627), REAL_CONST(0.000005503434295), REAL_CONST(0.000008771088687), REAL_CONST(0.000010318922250), REAL_CONST(0.000010834866771), REAL_CONST(0.000011006847672), REAL_CONST(0.000011006847672), REAL_CONST(0.000011006847672) }, | ||
359 | { REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000343965269), REAL_CONST(0.000001031895522), REAL_CONST(0.000002751719876), REAL_CONST(0.000004471542070), REAL_CONST(0.000005159470220), REAL_CONST(0.000005503434295), REAL_CONST(0.000005503434295), REAL_CONST(0.000005503434295), REAL_CONST(0.000005503434295) }, | ||
360 | { REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000171982634), REAL_CONST(0.000000515947875), REAL_CONST(0.000001375860506), REAL_CONST(0.000002235772627), REAL_CONST(0.000002579737384), REAL_CONST(0.000002751719876), REAL_CONST(0.000002751719876), REAL_CONST(0.000002751719876), REAL_CONST(0.000002751719876) }, | ||
361 | { REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000343965269), REAL_CONST(0.000000687930424), REAL_CONST(0.000001031895522), REAL_CONST(0.000001375860506), REAL_CONST(0.000001375860506), REAL_CONST(0.000001375860506), REAL_CONST(0.000001375860506), REAL_CONST(0.000001375860506) }, | ||
362 | { REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000171982634), REAL_CONST(0.000000343965269), REAL_CONST(0.000000515947875), REAL_CONST(0.000000687930424), REAL_CONST(0.000000687930424), REAL_CONST(0.000000687930424), REAL_CONST(0.000000687930424), REAL_CONST(0.000000687930424) }, | ||
363 | { REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000171982634), REAL_CONST(0.000000343965269), REAL_CONST(0.000000343965269), REAL_CONST(0.000000343965269), REAL_CONST(0.000000343965269), REAL_CONST(0.000000343965269), REAL_CONST(0.000000343965269) }, | ||
364 | { REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000171982634), REAL_CONST(0.000000171982634), REAL_CONST(0.000000171982634), REAL_CONST(0.000000171982634), REAL_CONST(0.000000171982634), REAL_CONST(0.000000171982634) } | ||
365 | }; | ||
366 | |||
367 | static const real_t log_Qplus1[31] = { | ||
368 | REAL_CONST(6.022367813028454), REAL_CONST(5.044394119358453), REAL_CONST(4.087462841250339), | ||
369 | REAL_CONST(3.169925001442313), REAL_CONST(2.321928094887362), REAL_CONST(1.584962500721156), | ||
370 | REAL_CONST(1.000000000000000), REAL_CONST(0.584962500721156), REAL_CONST(0.321928094887362), | ||
371 | REAL_CONST(0.169925001442312), REAL_CONST(0.087462841250339), REAL_CONST(0.044394119358453), | ||
372 | REAL_CONST(0.022367813028455), REAL_CONST(0.011227255423254), REAL_CONST(0.005624549193878), | ||
373 | REAL_CONST(0.002815015607054), REAL_CONST(0.001408194392808), REAL_CONST(0.000704269011247), | ||
374 | REAL_CONST(0.000352177480301), REAL_CONST(0.000176099486443), REAL_CONST(0.000088052430122), | ||
375 | REAL_CONST(0.000044026886827), REAL_CONST(0.000022013611360), REAL_CONST(0.000011006847667), | ||
376 | REAL_CONST(0.000005503434331), REAL_CONST(0.000002751719790), REAL_CONST(0.000001375860551), | ||
377 | REAL_CONST(0.000000687930439), REAL_CONST(0.000000343965261), REAL_CONST(0.000000171982641), | ||
378 | REAL_CONST(0.000000000000000) | ||
379 | }; | ||
380 | |||
381 | static real_t find_log2_Qplus1(sbr_info *sbr, uint8_t k, uint8_t l, uint8_t ch) | ||
382 | { | ||
383 | /* check for coupled energy/noise data */ | ||
384 | if (sbr->bs_coupling == 1) | ||
385 | { | ||
386 | if ((sbr->Q[0][k][l] >= 0) && (sbr->Q[0][k][l] <= 30) && | ||
387 | (sbr->Q[1][k][l] >= 0) && (sbr->Q[1][k][l] <= 24)) | ||
388 | { | ||
389 | if (ch == 0) | ||
390 | { | ||
391 | return log_Qplus1_pan[sbr->Q[0][k][l]][sbr->Q[1][k][l] >> 1]; | ||
392 | } else { | ||
393 | return log_Qplus1_pan[sbr->Q[0][k][l]][12 - (sbr->Q[1][k][l] >> 1)]; | ||
394 | } | ||
395 | } else { | ||
396 | return 0; | ||
397 | } | ||
398 | } else { | ||
399 | if (sbr->Q[ch][k][l] >= 0 && sbr->Q[ch][k][l] <= 30) | ||
400 | { | ||
401 | return log_Qplus1[sbr->Q[ch][k][l]]; | ||
402 | } else { | ||
403 | return 0; | ||
404 | } | ||
405 | } | ||
406 | } | ||
407 | |||
408 | static void calculate_gain(sbr_info *sbr, sbr_hfadj_info *adj, uint8_t ch) | ||
409 | { | ||
410 | /* log2 values of limiter gains */ | ||
411 | static real_t limGain[] = { | ||
412 | REAL_CONST(-1.0), REAL_CONST(0.0), REAL_CONST(1.0), REAL_CONST(33.219) | ||
413 | }; | ||
414 | uint8_t m, l, k; | ||
415 | |||
416 | uint8_t current_t_noise_band = 0; | ||
417 | uint8_t S_mapped; | ||
418 | |||
419 | real_t Q_M_lim[MAX_M] MEM_ALIGN_ATTR; | ||
420 | real_t G_lim[MAX_M] MEM_ALIGN_ATTR; | ||
421 | real_t G_boost MEM_ALIGN_ATTR; | ||
422 | real_t S_M[MAX_M] MEM_ALIGN_ATTR; | ||
423 | |||
424 | for (l = 0; l < sbr->L_E[ch]; l++) | ||
425 | { | ||
426 | uint8_t current_f_noise_band = 0; | ||
427 | uint8_t current_res_band = 0; | ||
428 | uint8_t current_res_band2 = 0; | ||
429 | uint8_t current_hi_res_band = 0; | ||
430 | |||
431 | real_t delta = (l == sbr->l_A[ch] || l == sbr->prevEnvIsShort[ch]) ? 0 : 1; | ||
432 | |||
433 | S_mapped = get_S_mapped(sbr, ch, l, current_res_band2); | ||
434 | |||
435 | if (sbr->t_E[ch][l+1] > sbr->t_Q[ch][current_t_noise_band+1]) | ||
436 | { | ||
437 | current_t_noise_band++; | ||
438 | } | ||
439 | |||
440 | for (k = 0; k < sbr->N_L[sbr->bs_limiter_bands]; k++) | ||
441 | { | ||
442 | real_t Q_M = 0; | ||
443 | real_t G_max; | ||
444 | real_t den = 0; | ||
445 | real_t acc1 = 0; | ||
446 | real_t acc2 = 0; | ||
447 | uint8_t current_res_band_size = 0; | ||
448 | uint8_t Q_M_size = 0; | ||
449 | |||
450 | uint8_t ml1, ml2; | ||
451 | |||
452 | /* bounds of current limiter bands */ | ||
453 | ml1 = sbr->f_table_lim[sbr->bs_limiter_bands][k]; | ||
454 | ml2 = sbr->f_table_lim[sbr->bs_limiter_bands][k+1]; | ||
455 | |||
456 | |||
457 | /* calculate the accumulated E_orig and E_curr over the limiter band */ | ||
458 | for (m = ml1; m < ml2; m++) | ||
459 | { | ||
460 | if ((m + sbr->kx) < sbr->f_table_res[sbr->f[ch][l]][current_res_band+1]) | ||
461 | { | ||
462 | current_res_band_size++; | ||
463 | } else { | ||
464 | acc1 += pow2_int(-REAL_CONST(10) + log2_int_tab[current_res_band_size] + find_log2_E(sbr, current_res_band, l, ch)); | ||
465 | |||
466 | current_res_band++; | ||
467 | current_res_band_size = 1; | ||
468 | } | ||
469 | |||
470 | acc2 += sbr->E_curr[ch][m][l]; | ||
471 | } | ||
472 | acc1 += pow2_int(-REAL_CONST(10) + log2_int_tab[current_res_band_size] + find_log2_E(sbr, current_res_band, l, ch)); | ||
473 | |||
474 | |||
475 | if (acc1 == 0) | ||
476 | acc1 = LOG2_MIN_INF; | ||
477 | else | ||
478 | acc1 = log2_int(acc1); | ||
479 | |||
480 | |||
481 | /* calculate the maximum gain */ | ||
482 | /* ratio of the energy of the original signal and the energy | ||
483 | * of the HF generated signal | ||
484 | */ | ||
485 | G_max = acc1 - log2_int(acc2) + limGain[sbr->bs_limiter_gains]; | ||
486 | G_max = min(G_max, limGain[3]); | ||
487 | |||
488 | |||
489 | for (m = ml1; m < ml2; m++) | ||
490 | { | ||
491 | real_t G; | ||
492 | real_t E_curr, E_orig; | ||
493 | real_t Q_orig, Q_orig_plus1; | ||
494 | uint8_t S_index_mapped; | ||
495 | |||
496 | |||
497 | /* check if m is on a noise band border */ | ||
498 | if ((m + sbr->kx) == sbr->f_table_noise[current_f_noise_band+1]) | ||
499 | { | ||
500 | /* step to next noise band */ | ||
501 | current_f_noise_band++; | ||
502 | } | ||
503 | |||
504 | |||
505 | /* check if m is on a resolution band border */ | ||
506 | if ((m + sbr->kx) == sbr->f_table_res[sbr->f[ch][l]][current_res_band2+1]) | ||
507 | { | ||
508 | /* accumulate a whole range of equal Q_Ms */ | ||
509 | if (Q_M_size > 0) | ||
510 | den += pow2_int(log2_int_tab[Q_M_size] + Q_M); | ||
511 | Q_M_size = 0; | ||
512 | |||
513 | /* step to next resolution band */ | ||
514 | current_res_band2++; | ||
515 | |||
516 | /* if we move to a new resolution band, we should check if we are | ||
517 | * going to add a sinusoid in this band | ||
518 | */ | ||
519 | S_mapped = get_S_mapped(sbr, ch, l, current_res_band2); | ||
520 | } | ||
521 | |||
522 | |||
523 | /* check if m is on a HI_RES band border */ | ||
524 | if ((m + sbr->kx) == sbr->f_table_res[HI_RES][current_hi_res_band+1]) | ||
525 | { | ||
526 | /* step to next HI_RES band */ | ||
527 | current_hi_res_band++; | ||
528 | } | ||
529 | |||
530 | |||
531 | /* find S_index_mapped | ||
532 | * S_index_mapped can only be 1 for the m in the middle of the | ||
533 | * current HI_RES band | ||
534 | */ | ||
535 | S_index_mapped = 0; | ||
536 | if ((l >= sbr->l_A[ch]) || | ||
537 | (sbr->bs_add_harmonic_prev[ch][current_hi_res_band] && sbr->bs_add_harmonic_flag_prev[ch])) | ||
538 | { | ||
539 | /* find the middle subband of the HI_RES frequency band */ | ||
540 | if ((m + sbr->kx) == (sbr->f_table_res[HI_RES][current_hi_res_band+1] + sbr->f_table_res[HI_RES][current_hi_res_band]) >> 1) | ||
541 | S_index_mapped = sbr->bs_add_harmonic[ch][current_hi_res_band]; | ||
542 | } | ||
543 | |||
544 | |||
545 | /* find bitstream parameters */ | ||
546 | if (sbr->E_curr[ch][m][l] == 0) | ||
547 | E_curr = LOG2_MIN_INF; | ||
548 | else | ||
549 | E_curr = log2_int(sbr->E_curr[ch][m][l]); | ||
550 | E_orig = -REAL_CONST(10) + find_log2_E(sbr, current_res_band2, l, ch); | ||
551 | |||
552 | |||
553 | Q_orig = find_log2_Q(sbr, current_f_noise_band, current_t_noise_band, ch); | ||
554 | Q_orig_plus1 = find_log2_Qplus1(sbr, current_f_noise_band, current_t_noise_band, ch); | ||
555 | |||
556 | |||
557 | /* Q_M only depends on E_orig and Q_div2: | ||
558 | * since N_Q <= N_Low <= N_High we only need to recalculate Q_M on | ||
559 | * a change of current res band (HI or LO) | ||
560 | */ | ||
561 | Q_M = E_orig + Q_orig - Q_orig_plus1; | ||
562 | |||
563 | |||
564 | /* S_M only depends on E_orig, Q_div and S_index_mapped: | ||
565 | * S_index_mapped can only be non-zero once per HI_RES band | ||
566 | */ | ||
567 | if (S_index_mapped == 0) | ||
568 | { | ||
569 | S_M[m] = LOG2_MIN_INF; /* -inf */ | ||
570 | } else { | ||
571 | S_M[m] = E_orig - Q_orig_plus1; | ||
572 | |||
573 | /* accumulate sinusoid part of the total energy */ | ||
574 | den += pow2_int(S_M[m]); | ||
575 | } | ||
576 | |||
577 | |||
578 | /* calculate gain */ | ||
579 | /* ratio of the energy of the original signal and the energy | ||
580 | * of the HF generated signal | ||
581 | */ | ||
582 | /* E_curr here is officially E_curr+1 so the log2() of that can never be < 0 */ | ||
583 | /* scaled by -10 */ | ||
584 | G = E_orig - max(-REAL_CONST(10), E_curr); | ||
585 | if ((S_mapped == 0) && (delta == 1)) | ||
586 | { | ||
587 | /* G = G * 1/(1+Q) */ | ||
588 | G -= Q_orig_plus1; | ||
589 | } else if (S_mapped == 1) { | ||
590 | /* G = G * Q/(1+Q) */ | ||
591 | G += Q_orig - Q_orig_plus1; | ||
592 | } | ||
593 | |||
594 | |||
595 | /* limit the additional noise energy level */ | ||
596 | /* and apply the limiter */ | ||
597 | if (G_max > G) | ||
598 | { | ||
599 | Q_M_lim[m] = Q_M; | ||
600 | G_lim[m] = G; | ||
601 | |||
602 | if ((S_index_mapped == 0) && (l != sbr->l_A[ch])) | ||
603 | { | ||
604 | Q_M_size++; | ||
605 | } | ||
606 | } else { | ||
607 | /* G > G_max */ | ||
608 | Q_M_lim[m] = Q_M + G_max - G; | ||
609 | G_lim[m] = G_max; | ||
610 | |||
611 | /* accumulate limited Q_M */ | ||
612 | if ((S_index_mapped == 0) && (l != sbr->l_A[ch])) | ||
613 | { | ||
614 | den += pow2_int(Q_M_lim[m]); | ||
615 | } | ||
616 | } | ||
617 | |||
618 | |||
619 | /* accumulate the total energy */ | ||
620 | /* E_curr changes for every m so we do need to accumulate every m */ | ||
621 | den += pow2_int(E_curr + G_lim[m]); | ||
622 | } | ||
623 | |||
624 | /* accumulate last range of equal Q_Ms */ | ||
625 | if (Q_M_size > 0) | ||
626 | { | ||
627 | den += pow2_int(log2_int_tab[Q_M_size] + Q_M); | ||
628 | } | ||
629 | |||
630 | |||
631 | /* calculate the final gain */ | ||
632 | /* G_boost: [0..2.51188643] */ | ||
633 | G_boost = acc1 - log2_int(den /*+ EPS*/); | ||
634 | G_boost = min(G_boost, REAL_CONST(1.328771237) /* log2(1.584893192 ^ 2) */); | ||
635 | |||
636 | |||
637 | for (m = ml1; m < ml2; m++) | ||
638 | { | ||
639 | /* apply compensation to gain, noise floor sf's and sinusoid levels */ | ||
640 | #ifndef SBR_LOW_POWER | ||
641 | adj->G_lim_boost[l][m] = pow2_fix((G_lim[m] + G_boost) >> 1); | ||
642 | #else | ||
643 | /* sqrt() will be done after the aliasing reduction to save a | ||
644 | * few multiplies | ||
645 | */ | ||
646 | adj->G_lim_boost[l][m] = pow2_fix(G_lim[m] + G_boost); | ||
647 | #endif | ||
648 | adj->Q_M_lim_boost[l][m] = pow2_fix((Q_M_lim[m] + G_boost) >> 1); | ||
649 | |||
650 | if (S_M[m] != LOG2_MIN_INF) | ||
651 | { | ||
652 | adj->S_M_boost[l][m] = pow2_int((S_M[m] + G_boost) >> 1); | ||
653 | } else { | ||
654 | adj->S_M_boost[l][m] = 0; | ||
655 | } | ||
656 | } | ||
657 | } | ||
658 | } | ||
659 | } | ||
660 | |||
661 | #else | ||
662 | |||
663 | //#define LOG2_TEST | ||
664 | |||
665 | #ifdef LOG2_TEST | ||
666 | |||
667 | #define LOG2_MIN_INF -100000 | ||
668 | |||
669 | __inline float pow2(float val) | ||
670 | { | ||
671 | return pow(2.0, val); | ||
672 | } | ||
673 | __inline float log2(float val) | ||
674 | { | ||
675 | return log(val)/log(2.0); | ||
676 | } | ||
677 | |||
678 | #define RB 14 | ||
679 | |||
680 | float QUANTISE2REAL(float val) | ||
681 | { | ||
682 | __int32 ival = (__int32)(val * (1<<RB)); | ||
683 | return (float)ival / (float)((1<<RB)); | ||
684 | } | ||
685 | |||
686 | float QUANTISE2INT(float val) | ||
687 | { | ||
688 | return floor(val); | ||
689 | } | ||
690 | |||
691 | /* log2 values of [0..63] */ | ||
692 | static const real_t log2_int_tab[] = { | ||
693 | LOG2_MIN_INF, 0.000000000000000, 1.000000000000000, 1.584962500721156, | ||
694 | 2.000000000000000, 2.321928094887362, 2.584962500721156, 2.807354922057604, | ||
695 | 3.000000000000000, 3.169925001442313, 3.321928094887363, 3.459431618637297, | ||
696 | 3.584962500721156, 3.700439718141092, 3.807354922057604, 3.906890595608519, | ||
697 | 4.000000000000000, 4.087462841250339, 4.169925001442312, 4.247927513443585, | ||
698 | 4.321928094887362, 4.392317422778761, 4.459431618637297, 4.523561956057013, | ||
699 | 4.584962500721156, 4.643856189774724, 4.700439718141093, 4.754887502163468, | ||
700 | 4.807354922057604, 4.857980995127572, 4.906890595608519, 4.954196310386875, | ||
701 | 5.000000000000000, 5.044394119358453, 5.087462841250340, 5.129283016944966, | ||
702 | 5.169925001442312, 5.209453365628949, 5.247927513443585, 5.285402218862248, | ||
703 | 5.321928094887363, 5.357552004618084, 5.392317422778761, 5.426264754702098, | ||
704 | 5.459431618637297, 5.491853096329675, 5.523561956057013, 5.554588851677637, | ||
705 | 5.584962500721156, 5.614709844115208, 5.643856189774724, 5.672425341971495, | ||
706 | 5.700439718141093, 5.727920454563200, 5.754887502163469, 5.781359713524660, | ||
707 | 5.807354922057605, 5.832890014164742, 5.857980995127572, 5.882643049361842, | ||
708 | 5.906890595608518, 5.930737337562887, 5.954196310386876, 5.977279923499916 | ||
709 | }; | ||
710 | |||
711 | static const real_t pan_log2_tab[] = { | ||
712 | 1.000000000000000, 0.584962500721156, 0.321928094887362, 0.169925001442312, 0.087462841250339, | ||
713 | 0.044394119358453, 0.022367813028455, 0.011227255423254, 0.005624549193878, 0.002815015607054, | ||
714 | 0.001408194392808, 0.000704269011247, 0.000352177480301, 0.000176099486443, 0.000088052430122, | ||
715 | 0.000044026886827, 0.000022013611360, 0.000011006847667 | ||
716 | }; | ||
717 | |||
718 | static real_t find_log2_E(sbr_info *sbr, uint8_t k, uint8_t l, uint8_t ch) | ||
719 | { | ||
720 | /* check for coupled energy/noise data */ | ||
721 | if (sbr->bs_coupling == 1) | ||
722 | { | ||
723 | real_t amp0 = (sbr->amp_res[0]) ? 1.0 : 0.5; | ||
724 | real_t amp1 = (sbr->amp_res[1]) ? 1.0 : 0.5; | ||
725 | float tmp = QUANTISE2REAL(7.0 + (real_t)sbr->E[0][k][l] * amp0); | ||
726 | float pan; | ||
727 | |||
728 | int E = (int)(sbr->E[1][k][l] * amp1); | ||
729 | |||
730 | if (ch == 0) | ||
731 | { | ||
732 | if (E > 12) | ||
733 | { | ||
734 | /* negative */ | ||
735 | pan = QUANTISE2REAL(pan_log2_tab[-12 + E]); | ||
736 | } else { | ||
737 | /* positive */ | ||
738 | pan = QUANTISE2REAL(pan_log2_tab[12 - E] + (12 - E)); | ||
739 | } | ||
740 | } else { | ||
741 | if (E < 12) | ||
742 | { | ||
743 | /* negative */ | ||
744 | pan = QUANTISE2REAL(pan_log2_tab[-E + 12]); | ||
745 | } else { | ||
746 | /* positive */ | ||
747 | pan = QUANTISE2REAL(pan_log2_tab[E - 12] + (E - 12)); | ||
748 | } | ||
749 | } | ||
750 | |||
751 | /* tmp / pan in log2 */ | ||
752 | return QUANTISE2REAL(tmp - pan); | ||
753 | } else { | ||
754 | real_t amp = (sbr->amp_res[ch]) ? 1.0 : 0.5; | ||
755 | |||
756 | return QUANTISE2REAL(6.0 + (real_t)sbr->E[ch][k][l] * amp); | ||
757 | } | ||
758 | } | ||
759 | |||
760 | static real_t find_log2_Q(sbr_info *sbr, uint8_t k, uint8_t l, uint8_t ch) | ||
761 | { | ||
762 | /* check for coupled energy/noise data */ | ||
763 | if (sbr->bs_coupling == 1) | ||
764 | { | ||
765 | float tmp = QUANTISE2REAL(7.0 - (real_t)sbr->Q[0][k][l]); | ||
766 | float pan; | ||
767 | |||
768 | int Q = (int)(sbr->Q[1][k][l]); | ||
769 | |||
770 | if (ch == 0) | ||
771 | { | ||
772 | if (Q > 12) | ||
773 | { | ||
774 | /* negative */ | ||
775 | pan = QUANTISE2REAL(pan_log2_tab[-12 + Q]); | ||
776 | } else { | ||
777 | /* positive */ | ||
778 | pan = QUANTISE2REAL(pan_log2_tab[12 - Q] + (12 - Q)); | ||
779 | } | ||
780 | } else { | ||
781 | if (Q < 12) | ||
782 | { | ||
783 | /* negative */ | ||
784 | pan = QUANTISE2REAL(pan_log2_tab[-Q + 12]); | ||
785 | } else { | ||
786 | /* positive */ | ||
787 | pan = QUANTISE2REAL(pan_log2_tab[Q - 12] + (Q - 12)); | ||
788 | } | ||
789 | } | ||
790 | |||
791 | /* tmp / pan in log2 */ | ||
792 | return QUANTISE2REAL(tmp - pan); | ||
793 | } else { | ||
794 | return QUANTISE2REAL(6.0 - (real_t)sbr->Q[ch][k][l]); | ||
795 | } | ||
796 | } | ||
797 | |||
798 | static const real_t log_Qplus1_pan[31][13] = { | ||
799 | { REAL_CONST(0.044383447617292), REAL_CONST(0.169768601655960), REAL_CONST(0.583090126514435), REAL_CONST(1.570089221000671), REAL_CONST(3.092446088790894), REAL_CONST(4.733354568481445), REAL_CONST(6.022367954254150), REAL_CONST(6.692092418670654), REAL_CONST(6.924463272094727), REAL_CONST(6.989034175872803), REAL_CONST(7.005646705627441), REAL_CONST(7.009829998016357), REAL_CONST(7.010877609252930) }, | ||
800 | { REAL_CONST(0.022362394258380), REAL_CONST(0.087379962205887), REAL_CONST(0.320804953575134), REAL_CONST(0.988859415054321), REAL_CONST(2.252387046813965), REAL_CONST(3.786596298217773), REAL_CONST(5.044394016265869), REAL_CONST(5.705977916717529), REAL_CONST(5.936291694641113), REAL_CONST(6.000346660614014), REAL_CONST(6.016829967498779), REAL_CONST(6.020981311798096), REAL_CONST(6.022020816802979) }, | ||
801 | { REAL_CONST(0.011224525049329), REAL_CONST(0.044351425021887), REAL_CONST(0.169301137328148), REAL_CONST(0.577544987201691), REAL_CONST(1.527246952056885), REAL_CONST(2.887525320053101), REAL_CONST(4.087462902069092), REAL_CONST(4.733354568481445), REAL_CONST(4.959661006927490), REAL_CONST(5.022709369659424), REAL_CONST(5.038940429687500), REAL_CONST(5.043028831481934), REAL_CONST(5.044052600860596) }, | ||
802 | { REAL_CONST(0.005623178556561), REAL_CONST(0.022346137091517), REAL_CONST(0.087132595479488), REAL_CONST(0.317482173442841), REAL_CONST(0.956931233406067), REAL_CONST(2.070389270782471), REAL_CONST(3.169924974441528), REAL_CONST(3.786596298217773), REAL_CONST(4.005294322967529), REAL_CONST(4.066420555114746), REAL_CONST(4.082170009613037), REAL_CONST(4.086137294769287), REAL_CONST(4.087131500244141) }, | ||
803 | { REAL_CONST(0.002814328996465), REAL_CONST(0.011216334067285), REAL_CONST(0.044224001467228), REAL_CONST(0.167456731200218), REAL_CONST(0.556393325328827), REAL_CONST(1.378511548042297), REAL_CONST(2.321928024291992), REAL_CONST(2.887525320053101), REAL_CONST(3.092446088790894), REAL_CONST(3.150059700012207), REAL_CONST(3.164926528930664), REAL_CONST(3.168673276901245), REAL_CONST(3.169611930847168) }, | ||
804 | { REAL_CONST(0.001407850766554), REAL_CONST(0.005619067233056), REAL_CONST(0.022281449288130), REAL_CONST(0.086156636476517), REAL_CONST(0.304854571819305), REAL_CONST(0.847996890544891), REAL_CONST(1.584962487220764), REAL_CONST(2.070389270782471), REAL_CONST(2.252387046813965), REAL_CONST(2.304061651229858), REAL_CONST(2.317430257797241), REAL_CONST(2.320801734924316), REAL_CONST(2.321646213531494) }, | ||
805 | { REAL_CONST(0.000704097095877), REAL_CONST(0.002812269143760), REAL_CONST(0.011183738708496), REAL_CONST(0.043721374124289), REAL_CONST(0.160464659333229), REAL_CONST(0.485426813364029), REAL_CONST(1.000000000000000), REAL_CONST(1.378511548042297), REAL_CONST(1.527246952056885), REAL_CONST(1.570089221000671), REAL_CONST(1.581215262413025), REAL_CONST(1.584023833274841), REAL_CONST(1.584727644920349) }, | ||
806 | { REAL_CONST(0.000352177477907), REAL_CONST(0.001406819908880), REAL_CONST(0.005602621007711), REAL_CONST(0.022026389837265), REAL_CONST(0.082462236285210), REAL_CONST(0.263034462928772), REAL_CONST(0.584962487220764), REAL_CONST(0.847996890544891), REAL_CONST(0.956931233406067), REAL_CONST(0.988859415054321), REAL_CONST(0.997190535068512), REAL_CONST(0.999296069145203), REAL_CONST(0.999823868274689) }, | ||
807 | { REAL_CONST(0.000176099492819), REAL_CONST(0.000703581434209), REAL_CONST(0.002804030198604), REAL_CONST(0.011055230163038), REAL_CONST(0.041820213198662), REAL_CONST(0.137503549456596), REAL_CONST(0.321928083896637), REAL_CONST(0.485426813364029), REAL_CONST(0.556393325328827), REAL_CONST(0.577544987201691), REAL_CONST(0.583090126514435), REAL_CONST(0.584493279457092), REAL_CONST(0.584845066070557) }, | ||
808 | { REAL_CONST(0.000088052431238), REAL_CONST(0.000351833587047), REAL_CONST(0.001402696361765), REAL_CONST(0.005538204684854), REAL_CONST(0.021061634644866), REAL_CONST(0.070389263331890), REAL_CONST(0.169925004243851), REAL_CONST(0.263034462928772), REAL_CONST(0.304854571819305), REAL_CONST(0.317482173442841), REAL_CONST(0.320804953575134), REAL_CONST(0.321646571159363), REAL_CONST(0.321857661008835) }, | ||
809 | { REAL_CONST(0.000044026888645), REAL_CONST(0.000175927518285), REAL_CONST(0.000701518612914), REAL_CONST(0.002771759871393), REAL_CONST(0.010569252073765), REAL_CONST(0.035623874515295), REAL_CONST(0.087462842464447), REAL_CONST(0.137503549456596), REAL_CONST(0.160464659333229), REAL_CONST(0.167456731200218), REAL_CONST(0.169301137328148), REAL_CONST(0.169768601655960), REAL_CONST(0.169885858893394) }, | ||
810 | { REAL_CONST(0.000022013611670), REAL_CONST(0.000088052431238), REAL_CONST(0.000350801943569), REAL_CONST(0.001386545598507), REAL_CONST(0.005294219125062), REAL_CONST(0.017921976745129), REAL_CONST(0.044394120573997), REAL_CONST(0.070389263331890), REAL_CONST(0.082462236285210), REAL_CONST(0.086156636476517), REAL_CONST(0.087132595479488), REAL_CONST(0.087379962205887), REAL_CONST(0.087442122399807) }, | ||
811 | { REAL_CONST(0.000011006847672), REAL_CONST(0.000044026888645), REAL_CONST(0.000175411638338), REAL_CONST(0.000693439331371), REAL_CONST(0.002649537986144), REAL_CONST(0.008988817222416), REAL_CONST(0.022367812693119), REAL_CONST(0.035623874515295), REAL_CONST(0.041820213198662), REAL_CONST(0.043721374124289), REAL_CONST(0.044224001467228), REAL_CONST(0.044351425021887), REAL_CONST(0.044383447617292) }, | ||
812 | { REAL_CONST(0.000005503434295), REAL_CONST(0.000022013611670), REAL_CONST(0.000087708482170), REAL_CONST(0.000346675369656), REAL_CONST(0.001325377263129), REAL_CONST(0.004501323681325), REAL_CONST(0.011227255687118), REAL_CONST(0.017921976745129), REAL_CONST(0.021061634644866), REAL_CONST(0.022026389837265), REAL_CONST(0.022281449288130), REAL_CONST(0.022346137091517), REAL_CONST(0.022362394258380) }, | ||
813 | { REAL_CONST(0.000002751719876), REAL_CONST(0.000011006847672), REAL_CONST(0.000043854910473), REAL_CONST(0.000173348103999), REAL_CONST(0.000662840844598), REAL_CONST(0.002252417383716), REAL_CONST(0.005624548997730), REAL_CONST(0.008988817222416), REAL_CONST(0.010569252073765), REAL_CONST(0.011055230163038), REAL_CONST(0.011183738708496), REAL_CONST(0.011216334067285), REAL_CONST(0.011224525049329) }, | ||
814 | { REAL_CONST(0.000001375860506), REAL_CONST(0.000005503434295), REAL_CONST(0.000022013611670), REAL_CONST(0.000086676649516), REAL_CONST(0.000331544462824), REAL_CONST(0.001126734190620), REAL_CONST(0.002815015614033), REAL_CONST(0.004501323681325), REAL_CONST(0.005294219125062), REAL_CONST(0.005538204684854), REAL_CONST(0.005602621007711), REAL_CONST(0.005619067233056), REAL_CONST(0.005623178556561) }, | ||
815 | { REAL_CONST(0.000000687930424), REAL_CONST(0.000002751719876), REAL_CONST(0.000011006847672), REAL_CONST(0.000043338975956), REAL_CONST(0.000165781748365), REAL_CONST(0.000563477107789), REAL_CONST(0.001408194424585), REAL_CONST(0.002252417383716), REAL_CONST(0.002649537986144), REAL_CONST(0.002771759871393), REAL_CONST(0.002804030198604), REAL_CONST(0.002812269143760), REAL_CONST(0.002814328996465) }, | ||
816 | { REAL_CONST(0.000000343965269), REAL_CONST(0.000001375860506), REAL_CONST(0.000005503434295), REAL_CONST(0.000021669651687), REAL_CONST(0.000082893253420), REAL_CONST(0.000281680084299), REAL_CONST(0.000704268983100), REAL_CONST(0.001126734190620), REAL_CONST(0.001325377263129), REAL_CONST(0.001386545598507), REAL_CONST(0.001402696361765), REAL_CONST(0.001406819908880), REAL_CONST(0.001407850766554) }, | ||
817 | { REAL_CONST(0.000000171982634), REAL_CONST(0.000000687930424), REAL_CONST(0.000002751719876), REAL_CONST(0.000010834866771), REAL_CONST(0.000041447223339), REAL_CONST(0.000140846910654), REAL_CONST(0.000352177477907), REAL_CONST(0.000563477107789), REAL_CONST(0.000662840844598), REAL_CONST(0.000693439331371), REAL_CONST(0.000701518612914), REAL_CONST(0.000703581434209), REAL_CONST(0.000704097095877) }, | ||
818 | { REAL_CONST(0.000000000000000), REAL_CONST(0.000000343965269), REAL_CONST(0.000001375860506), REAL_CONST(0.000005503434295), REAL_CONST(0.000020637769921), REAL_CONST(0.000070511166996), REAL_CONST(0.000176099492819), REAL_CONST(0.000281680084299), REAL_CONST(0.000331544462824), REAL_CONST(0.000346675369656), REAL_CONST(0.000350801943569), REAL_CONST(0.000351833587047), REAL_CONST(0.000352177477907) }, | ||
819 | { REAL_CONST(0.000000000000000), REAL_CONST(0.000000171982634), REAL_CONST(0.000000687930424), REAL_CONST(0.000002751719876), REAL_CONST(0.000010318922250), REAL_CONST(0.000035256012779), REAL_CONST(0.000088052431238), REAL_CONST(0.000140846910654), REAL_CONST(0.000165781748365), REAL_CONST(0.000173348103999), REAL_CONST(0.000175411638338), REAL_CONST(0.000175927518285), REAL_CONST(0.000176099492819) }, | ||
820 | { REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000343965269), REAL_CONST(0.000001375860506), REAL_CONST(0.000005159470220), REAL_CONST(0.000017542124624), REAL_CONST(0.000044026888645), REAL_CONST(0.000070511166996), REAL_CONST(0.000082893253420), REAL_CONST(0.000086676649516), REAL_CONST(0.000087708482170), REAL_CONST(0.000088052431238), REAL_CONST(0.000088052431238) }, | ||
821 | { REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000171982634), REAL_CONST(0.000000687930424), REAL_CONST(0.000002579737384), REAL_CONST(0.000008771088687), REAL_CONST(0.000022013611670), REAL_CONST(0.000035256012779), REAL_CONST(0.000041447223339), REAL_CONST(0.000043338975956), REAL_CONST(0.000043854910473), REAL_CONST(0.000044026888645), REAL_CONST(0.000044026888645) }, | ||
822 | { REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000343965269), REAL_CONST(0.000001375860506), REAL_CONST(0.000004471542070), REAL_CONST(0.000011006847672), REAL_CONST(0.000017542124624), REAL_CONST(0.000020637769921), REAL_CONST(0.000021669651687), REAL_CONST(0.000022013611670), REAL_CONST(0.000022013611670), REAL_CONST(0.000022013611670) }, | ||
823 | { REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000171982634), REAL_CONST(0.000000687930424), REAL_CONST(0.000002235772627), REAL_CONST(0.000005503434295), REAL_CONST(0.000008771088687), REAL_CONST(0.000010318922250), REAL_CONST(0.000010834866771), REAL_CONST(0.000011006847672), REAL_CONST(0.000011006847672), REAL_CONST(0.000011006847672) }, | ||
824 | { REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000343965269), REAL_CONST(0.000001031895522), REAL_CONST(0.000002751719876), REAL_CONST(0.000004471542070), REAL_CONST(0.000005159470220), REAL_CONST(0.000005503434295), REAL_CONST(0.000005503434295), REAL_CONST(0.000005503434295), REAL_CONST(0.000005503434295) }, | ||
825 | { REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000171982634), REAL_CONST(0.000000515947875), REAL_CONST(0.000001375860506), REAL_CONST(0.000002235772627), REAL_CONST(0.000002579737384), REAL_CONST(0.000002751719876), REAL_CONST(0.000002751719876), REAL_CONST(0.000002751719876), REAL_CONST(0.000002751719876) }, | ||
826 | { REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000343965269), REAL_CONST(0.000000687930424), REAL_CONST(0.000001031895522), REAL_CONST(0.000001375860506), REAL_CONST(0.000001375860506), REAL_CONST(0.000001375860506), REAL_CONST(0.000001375860506), REAL_CONST(0.000001375860506) }, | ||
827 | { REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000171982634), REAL_CONST(0.000000343965269), REAL_CONST(0.000000515947875), REAL_CONST(0.000000687930424), REAL_CONST(0.000000687930424), REAL_CONST(0.000000687930424), REAL_CONST(0.000000687930424), REAL_CONST(0.000000687930424) }, | ||
828 | { REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000171982634), REAL_CONST(0.000000343965269), REAL_CONST(0.000000343965269), REAL_CONST(0.000000343965269), REAL_CONST(0.000000343965269), REAL_CONST(0.000000343965269), REAL_CONST(0.000000343965269) }, | ||
829 | { REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000000000000), REAL_CONST(0.000000171982634), REAL_CONST(0.000000171982634), REAL_CONST(0.000000171982634), REAL_CONST(0.000000171982634), REAL_CONST(0.000000171982634), REAL_CONST(0.000000171982634) } | ||
830 | }; | ||
831 | |||
832 | static const real_t log_Qplus1[31] = { | ||
833 | REAL_CONST(6.022367813028454), REAL_CONST(5.044394119358453), REAL_CONST(4.087462841250339), | ||
834 | REAL_CONST(3.169925001442313), REAL_CONST(2.321928094887362), REAL_CONST(1.584962500721156), | ||
835 | REAL_CONST(1.000000000000000), REAL_CONST(0.584962500721156), REAL_CONST(0.321928094887362), | ||
836 | REAL_CONST(0.169925001442312), REAL_CONST(0.087462841250339), REAL_CONST(0.044394119358453), | ||
837 | REAL_CONST(0.022367813028455), REAL_CONST(0.011227255423254), REAL_CONST(0.005624549193878), | ||
838 | REAL_CONST(0.002815015607054), REAL_CONST(0.001408194392808), REAL_CONST(0.000704269011247), | ||
839 | REAL_CONST(0.000352177480301), REAL_CONST(0.000176099486443), REAL_CONST(0.000088052430122), | ||
840 | REAL_CONST(0.000044026886827), REAL_CONST(0.000022013611360), REAL_CONST(0.000011006847667), | ||
841 | REAL_CONST(0.000005503434331), REAL_CONST(0.000002751719790), REAL_CONST(0.000001375860551), | ||
842 | REAL_CONST(0.000000687930439), REAL_CONST(0.000000343965261), REAL_CONST(0.000000171982641), | ||
843 | REAL_CONST(0.000000000000000) | ||
844 | }; | ||
845 | |||
846 | static real_t find_log2_Qplus1(sbr_info *sbr, uint8_t k, uint8_t l, uint8_t ch) | ||
847 | { | ||
848 | /* check for coupled energy/noise data */ | ||
849 | if (sbr->bs_coupling == 1) | ||
850 | { | ||
851 | if ((sbr->Q[0][k][l] >= 0) && (sbr->Q[0][k][l] <= 30) && | ||
852 | (sbr->Q[1][k][l] >= 0) && (sbr->Q[1][k][l] <= 24)) | ||
853 | { | ||
854 | if (ch == 0) | ||
855 | { | ||
856 | return QUANTISE2REAL(log_Qplus1_pan[sbr->Q[0][k][l]][sbr->Q[1][k][l] >> 1]); | ||
857 | } else { | ||
858 | return QUANTISE2REAL(log_Qplus1_pan[sbr->Q[0][k][l]][12 - (sbr->Q[1][k][l] >> 1)]); | ||
859 | } | ||
860 | } else { | ||
861 | return 0; | ||
862 | } | ||
863 | } else { | ||
864 | if (sbr->Q[ch][k][l] >= 0 && sbr->Q[ch][k][l] <= 30) | ||
865 | { | ||
866 | return QUANTISE2REAL(log_Qplus1[sbr->Q[ch][k][l]]); | ||
867 | } else { | ||
868 | return 0; | ||
869 | } | ||
870 | } | ||
871 | } | ||
872 | |||
873 | static void calculate_gain(sbr_info *sbr, sbr_hfadj_info *adj, uint8_t ch) | ||
874 | { | ||
875 | /* log2 values of limiter gains */ | ||
876 | static real_t limGain[] = { -1.0, 0.0, 1.0, 33.219 }; | ||
877 | uint8_t m, l, k; | ||
878 | |||
879 | uint8_t current_t_noise_band = 0; | ||
880 | uint8_t S_mapped; | ||
881 | |||
882 | real_t Q_M_lim[MAX_M] MEM_ALIGN_ATTR; | ||
883 | real_t G_lim[MAX_M] MEM_ALIGN_ATTR; | ||
884 | real_t G_boost MEM_ALIGN_ATTR; | ||
885 | real_t S_M[MAX_M] MEM_ALIGN_ATTR; | ||
886 | |||
887 | for (l = 0; l < sbr->L_E[ch]; l++) | ||
888 | { | ||
889 | uint8_t current_f_noise_band = 0; | ||
890 | uint8_t current_res_band = 0; | ||
891 | uint8_t current_res_band2 = 0; | ||
892 | uint8_t current_hi_res_band = 0; | ||
893 | |||
894 | real_t delta = (l == sbr->l_A[ch] || l == sbr->prevEnvIsShort[ch]) ? 0 : 1; | ||
895 | |||
896 | S_mapped = get_S_mapped(sbr, ch, l, current_res_band2); | ||
897 | |||
898 | if (sbr->t_E[ch][l+1] > sbr->t_Q[ch][current_t_noise_band+1]) | ||
899 | { | ||
900 | current_t_noise_band++; | ||
901 | } | ||
902 | |||
903 | for (k = 0; k < sbr->N_L[sbr->bs_limiter_bands]; k++) | ||
904 | { | ||
905 | real_t Q_M = 0; | ||
906 | real_t G_max; | ||
907 | real_t den = 0; | ||
908 | real_t acc1 = 0; | ||
909 | real_t acc2 = 0; | ||
910 | uint8_t current_res_band_size = 0; | ||
911 | uint8_t Q_M_size = 0; | ||
912 | |||
913 | uint8_t ml1, ml2; | ||
914 | |||
915 | /* bounds of current limiter bands */ | ||
916 | ml1 = sbr->f_table_lim[sbr->bs_limiter_bands][k]; | ||
917 | ml2 = sbr->f_table_lim[sbr->bs_limiter_bands][k+1]; | ||
918 | |||
919 | |||
920 | /* calculate the accumulated E_orig and E_curr over the limiter band */ | ||
921 | for (m = ml1; m < ml2; m++) | ||
922 | { | ||
923 | if ((m + sbr->kx) < sbr->f_table_res[sbr->f[ch][l]][current_res_band+1]) | ||
924 | { | ||
925 | current_res_band_size++; | ||
926 | } else { | ||
927 | acc1 += QUANTISE2INT(pow2(-10 + log2_int_tab[current_res_band_size] + find_log2_E(sbr, current_res_band, l, ch))); | ||
928 | |||
929 | current_res_band++; | ||
930 | current_res_band_size = 1; | ||
931 | } | ||
932 | |||
933 | acc2 += QUANTISE2INT(sbr->E_curr[ch][m][l]/1024.0); | ||
934 | } | ||
935 | acc1 += QUANTISE2INT(pow2(-10 + log2_int_tab[current_res_band_size] + find_log2_E(sbr, current_res_band, l, ch))); | ||
936 | |||
937 | acc1 = QUANTISE2REAL( log2(EPS + acc1) ); | ||
938 | |||
939 | |||
940 | /* calculate the maximum gain */ | ||
941 | /* ratio of the energy of the original signal and the energy | ||
942 | * of the HF generated signal | ||
943 | */ | ||
944 | G_max = acc1 - QUANTISE2REAL(log2(EPS + acc2)) + QUANTISE2REAL(limGain[sbr->bs_limiter_gains]); | ||
945 | G_max = min(G_max, QUANTISE2REAL(limGain[3])); | ||
946 | |||
947 | |||
948 | for (m = ml1; m < ml2; m++) | ||
949 | { | ||
950 | real_t G; | ||
951 | real_t E_curr, E_orig; | ||
952 | real_t Q_orig, Q_orig_plus1; | ||
953 | uint8_t S_index_mapped; | ||
954 | |||
955 | |||
956 | /* check if m is on a noise band border */ | ||
957 | if ((m + sbr->kx) == sbr->f_table_noise[current_f_noise_band+1]) | ||
958 | { | ||
959 | /* step to next noise band */ | ||
960 | current_f_noise_band++; | ||
961 | } | ||
962 | |||
963 | |||
964 | /* check if m is on a resolution band border */ | ||
965 | if ((m + sbr->kx) == sbr->f_table_res[sbr->f[ch][l]][current_res_band2+1]) | ||
966 | { | ||
967 | /* accumulate a whole range of equal Q_Ms */ | ||
968 | if (Q_M_size > 0) | ||
969 | den += QUANTISE2INT(pow2(log2_int_tab[Q_M_size] + Q_M)); | ||
970 | Q_M_size = 0; | ||
971 | |||
972 | /* step to next resolution band */ | ||
973 | current_res_band2++; | ||
974 | |||
975 | /* if we move to a new resolution band, we should check if we are | ||
976 | * going to add a sinusoid in this band | ||
977 | */ | ||
978 | S_mapped = get_S_mapped(sbr, ch, l, current_res_band2); | ||
979 | } | ||
980 | |||
981 | |||
982 | /* check if m is on a HI_RES band border */ | ||
983 | if ((m + sbr->kx) == sbr->f_table_res[HI_RES][current_hi_res_band+1]) | ||
984 | { | ||
985 | /* step to next HI_RES band */ | ||
986 | current_hi_res_band++; | ||
987 | } | ||
988 | |||
989 | |||
990 | /* find S_index_mapped | ||
991 | * S_index_mapped can only be 1 for the m in the middle of the | ||
992 | * current HI_RES band | ||
993 | */ | ||
994 | S_index_mapped = 0; | ||
995 | if ((l >= sbr->l_A[ch]) || | ||
996 | (sbr->bs_add_harmonic_prev[ch][current_hi_res_band] && sbr->bs_add_harmonic_flag_prev[ch])) | ||
997 | { | ||
998 | /* find the middle subband of the HI_RES frequency band */ | ||
999 | if ((m + sbr->kx) == (sbr->f_table_res[HI_RES][current_hi_res_band+1] + sbr->f_table_res[HI_RES][current_hi_res_band]) >> 1) | ||
1000 | S_index_mapped = sbr->bs_add_harmonic[ch][current_hi_res_band]; | ||
1001 | } | ||
1002 | |||
1003 | |||
1004 | /* find bitstream parameters */ | ||
1005 | if (sbr->E_curr[ch][m][l] == 0) | ||
1006 | E_curr = LOG2_MIN_INF; | ||
1007 | else | ||
1008 | E_curr = -10 + log2(sbr->E_curr[ch][m][l]); | ||
1009 | E_orig = -10 + find_log2_E(sbr, current_res_band2, l, ch); | ||
1010 | |||
1011 | Q_orig = find_log2_Q(sbr, current_f_noise_band, current_t_noise_band, ch); | ||
1012 | Q_orig_plus1 = find_log2_Qplus1(sbr, current_f_noise_band, current_t_noise_band, ch); | ||
1013 | |||
1014 | |||
1015 | /* Q_M only depends on E_orig and Q_div2: | ||
1016 | * since N_Q <= N_Low <= N_High we only need to recalculate Q_M on | ||
1017 | * a change of current res band (HI or LO) | ||
1018 | */ | ||
1019 | Q_M = E_orig + Q_orig - Q_orig_plus1; | ||
1020 | |||
1021 | |||
1022 | /* S_M only depends on E_orig, Q_div and S_index_mapped: | ||
1023 | * S_index_mapped can only be non-zero once per HI_RES band | ||
1024 | */ | ||
1025 | if (S_index_mapped == 0) | ||
1026 | { | ||
1027 | S_M[m] = LOG2_MIN_INF; /* -inf */ | ||
1028 | } else { | ||
1029 | S_M[m] = E_orig - Q_orig_plus1; | ||
1030 | |||
1031 | /* accumulate sinusoid part of the total energy */ | ||
1032 | den += pow2(S_M[m]); | ||
1033 | } | ||
1034 | |||
1035 | |||
1036 | /* calculate gain */ | ||
1037 | /* ratio of the energy of the original signal and the energy | ||
1038 | * of the HF generated signal | ||
1039 | */ | ||
1040 | /* E_curr here is officially E_curr+1 so the log2() of that can never be < 0 */ | ||
1041 | /* scaled by -10 */ | ||
1042 | G = E_orig - max(-10, E_curr); | ||
1043 | if ((S_mapped == 0) && (delta == 1)) | ||
1044 | { | ||
1045 | /* G = G * 1/(1+Q) */ | ||
1046 | G -= Q_orig_plus1; | ||
1047 | } else if (S_mapped == 1) { | ||
1048 | /* G = G * Q/(1+Q) */ | ||
1049 | G += Q_orig - Q_orig_plus1; | ||
1050 | } | ||
1051 | |||
1052 | |||
1053 | /* limit the additional noise energy level */ | ||
1054 | /* and apply the limiter */ | ||
1055 | if (G_max > G) | ||
1056 | { | ||
1057 | Q_M_lim[m] = QUANTISE2REAL(Q_M); | ||
1058 | G_lim[m] = QUANTISE2REAL(G); | ||
1059 | |||
1060 | if ((S_index_mapped == 0) && (l != sbr->l_A[ch])) | ||
1061 | { | ||
1062 | Q_M_size++; | ||
1063 | } | ||
1064 | } else { | ||
1065 | /* G > G_max */ | ||
1066 | Q_M_lim[m] = QUANTISE2REAL(Q_M) + G_max - QUANTISE2REAL(G); | ||
1067 | G_lim[m] = G_max; | ||
1068 | |||
1069 | /* accumulate limited Q_M */ | ||
1070 | if ((S_index_mapped == 0) && (l != sbr->l_A[ch])) | ||
1071 | { | ||
1072 | den += QUANTISE2INT(pow2(Q_M_lim[m])); | ||
1073 | } | ||
1074 | } | ||
1075 | |||
1076 | |||
1077 | /* accumulate the total energy */ | ||
1078 | /* E_curr changes for every m so we do need to accumulate every m */ | ||
1079 | den += QUANTISE2INT(pow2(E_curr + G_lim[m])); | ||
1080 | } | ||
1081 | |||
1082 | /* accumulate last range of equal Q_Ms */ | ||
1083 | if (Q_M_size > 0) | ||
1084 | { | ||
1085 | den += QUANTISE2INT(pow2(log2_int_tab[Q_M_size] + Q_M)); | ||
1086 | } | ||
1087 | |||
1088 | |||
1089 | /* calculate the final gain */ | ||
1090 | /* G_boost: [0..2.51188643] */ | ||
1091 | G_boost = acc1 - QUANTISE2REAL(log2(den + EPS)); | ||
1092 | G_boost = min(G_boost, QUANTISE2REAL(1.328771237) /* log2(1.584893192 ^ 2) */); | ||
1093 | |||
1094 | |||
1095 | for (m = ml1; m < ml2; m++) | ||
1096 | { | ||
1097 | /* apply compensation to gain, noise floor sf's and sinusoid levels */ | ||
1098 | #ifndef SBR_LOW_POWER | ||
1099 | adj->G_lim_boost[l][m] = QUANTISE2REAL(pow2((G_lim[m] + G_boost) / 2.0)); | ||
1100 | #else | ||
1101 | /* sqrt() will be done after the aliasing reduction to save a | ||
1102 | * few multiplies | ||
1103 | */ | ||
1104 | adj->G_lim_boost[l][m] = QUANTISE2REAL(pow2(G_lim[m] + G_boost)); | ||
1105 | #endif | ||
1106 | adj->Q_M_lim_boost[l][m] = QUANTISE2REAL(pow2((Q_M_lim[m] + 10 + G_boost) / 2.0)); | ||
1107 | |||
1108 | if (S_M[m] != LOG2_MIN_INF) | ||
1109 | { | ||
1110 | adj->S_M_boost[l][m] = QUANTISE2REAL(pow2((S_M[m] + 10 + G_boost) / 2.0)); | ||
1111 | } else { | ||
1112 | adj->S_M_boost[l][m] = 0; | ||
1113 | } | ||
1114 | } | ||
1115 | } | ||
1116 | } | ||
1117 | } | ||
1118 | |||
1119 | #else | ||
1120 | |||
1121 | static void calculate_gain(sbr_info *sbr, sbr_hfadj_info *adj, uint8_t ch) | ||
1122 | { | ||
1123 | static real_t limGain[] = { 0.5, 1.0, 2.0, 1e10 }; | ||
1124 | uint8_t m, l, k; | ||
1125 | |||
1126 | uint8_t current_t_noise_band = 0; | ||
1127 | uint8_t S_mapped; | ||
1128 | |||
1129 | real_t Q_M_lim[MAX_M] MEM_ALIGN_ATTR; | ||
1130 | real_t G_lim[MAX_M] MEM_ALIGN_ATTR; | ||
1131 | real_t G_boost MEM_ALIGN_ATTR; | ||
1132 | real_t S_M[MAX_M] MEM_ALIGN_ATTR; | ||
1133 | |||
1134 | for (l = 0; l < sbr->L_E[ch]; l++) | ||
1135 | { | ||
1136 | uint8_t current_f_noise_band = 0; | ||
1137 | uint8_t current_res_band = 0; | ||
1138 | uint8_t current_res_band2 = 0; | ||
1139 | uint8_t current_hi_res_band = 0; | ||
1140 | |||
1141 | real_t delta = (l == sbr->l_A[ch] || l == sbr->prevEnvIsShort[ch]) ? 0 : 1; | ||
1142 | |||
1143 | S_mapped = get_S_mapped(sbr, ch, l, current_res_band2); | ||
1144 | |||
1145 | if (sbr->t_E[ch][l+1] > sbr->t_Q[ch][current_t_noise_band+1]) | ||
1146 | { | ||
1147 | current_t_noise_band++; | ||
1148 | } | ||
1149 | |||
1150 | for (k = 0; k < sbr->N_L[sbr->bs_limiter_bands]; k++) | ||
1151 | { | ||
1152 | real_t G_max; | ||
1153 | real_t den = 0; | ||
1154 | real_t acc1 = 0; | ||
1155 | real_t acc2 = 0; | ||
1156 | |||
1157 | uint8_t ml1, ml2; | ||
1158 | |||
1159 | ml1 = sbr->f_table_lim[sbr->bs_limiter_bands][k]; | ||
1160 | ml2 = sbr->f_table_lim[sbr->bs_limiter_bands][k+1]; | ||
1161 | |||
1162 | |||
1163 | /* calculate the accumulated E_orig and E_curr over the limiter band */ | ||
1164 | for (m = ml1; m < ml2; m++) | ||
1165 | { | ||
1166 | if ((m + sbr->kx) == sbr->f_table_res[sbr->f[ch][l]][current_res_band+1]) | ||
1167 | { | ||
1168 | current_res_band++; | ||
1169 | } | ||
1170 | acc1 += sbr->E_orig[ch][current_res_band][l]; | ||
1171 | acc2 += sbr->E_curr[ch][m][l]; | ||
1172 | } | ||
1173 | |||
1174 | |||
1175 | /* calculate the maximum gain */ | ||
1176 | /* ratio of the energy of the original signal and the energy | ||
1177 | * of the HF generated signal | ||
1178 | */ | ||
1179 | G_max = ((EPS + acc1) / (EPS + acc2)) * limGain[sbr->bs_limiter_gains]; | ||
1180 | G_max = min(G_max, 1e10); | ||
1181 | |||
1182 | |||
1183 | for (m = ml1; m < ml2; m++) | ||
1184 | { | ||
1185 | real_t Q_M, G; | ||
1186 | real_t Q_div, Q_div2; | ||
1187 | uint8_t S_index_mapped; | ||
1188 | |||
1189 | |||
1190 | /* check if m is on a noise band border */ | ||
1191 | if ((m + sbr->kx) == sbr->f_table_noise[current_f_noise_band+1]) | ||
1192 | { | ||
1193 | /* step to next noise band */ | ||
1194 | current_f_noise_band++; | ||
1195 | } | ||
1196 | |||
1197 | |||
1198 | /* check if m is on a resolution band border */ | ||
1199 | if ((m + sbr->kx) == sbr->f_table_res[sbr->f[ch][l]][current_res_band2+1]) | ||
1200 | { | ||
1201 | /* step to next resolution band */ | ||
1202 | current_res_band2++; | ||
1203 | |||
1204 | /* if we move to a new resolution band, we should check if we are | ||
1205 | * going to add a sinusoid in this band | ||
1206 | */ | ||
1207 | S_mapped = get_S_mapped(sbr, ch, l, current_res_band2); | ||
1208 | } | ||
1209 | |||
1210 | |||
1211 | /* check if m is on a HI_RES band border */ | ||
1212 | if ((m + sbr->kx) == sbr->f_table_res[HI_RES][current_hi_res_band+1]) | ||
1213 | { | ||
1214 | /* step to next HI_RES band */ | ||
1215 | current_hi_res_band++; | ||
1216 | } | ||
1217 | |||
1218 | |||
1219 | /* find S_index_mapped | ||
1220 | * S_index_mapped can only be 1 for the m in the middle of the | ||
1221 | * current HI_RES band | ||
1222 | */ | ||
1223 | S_index_mapped = 0; | ||
1224 | if ((l >= sbr->l_A[ch]) || | ||
1225 | (sbr->bs_add_harmonic_prev[ch][current_hi_res_band] && sbr->bs_add_harmonic_flag_prev[ch])) | ||
1226 | { | ||
1227 | /* find the middle subband of the HI_RES frequency band */ | ||
1228 | if ((m + sbr->kx) == (sbr->f_table_res[HI_RES][current_hi_res_band+1] + sbr->f_table_res[HI_RES][current_hi_res_band]) >> 1) | ||
1229 | S_index_mapped = sbr->bs_add_harmonic[ch][current_hi_res_band]; | ||
1230 | } | ||
1231 | |||
1232 | |||
1233 | /* Q_div: [0..1] (1/(1+Q_mapped)) */ | ||
1234 | Q_div = sbr->Q_div[ch][current_f_noise_band][current_t_noise_band]; | ||
1235 | |||
1236 | |||
1237 | /* Q_div2: [0..1] (Q_mapped/(1+Q_mapped)) */ | ||
1238 | Q_div2 = sbr->Q_div2[ch][current_f_noise_band][current_t_noise_band]; | ||
1239 | |||
1240 | |||
1241 | /* Q_M only depends on E_orig and Q_div2: | ||
1242 | * since N_Q <= N_Low <= N_High we only need to recalculate Q_M on | ||
1243 | * a change of current noise band | ||
1244 | */ | ||
1245 | Q_M = sbr->E_orig[ch][current_res_band2][l] * Q_div2; | ||
1246 | |||
1247 | |||
1248 | /* S_M only depends on E_orig, Q_div and S_index_mapped: | ||
1249 | * S_index_mapped can only be non-zero once per HI_RES band | ||
1250 | */ | ||
1251 | if (S_index_mapped == 0) | ||
1252 | { | ||
1253 | S_M[m] = 0; | ||
1254 | } else { | ||
1255 | S_M[m] = sbr->E_orig[ch][current_res_band2][l] * Q_div; | ||
1256 | |||
1257 | /* accumulate sinusoid part of the total energy */ | ||
1258 | den += S_M[m]; | ||
1259 | } | ||
1260 | |||
1261 | |||
1262 | /* calculate gain */ | ||
1263 | /* ratio of the energy of the original signal and the energy | ||
1264 | * of the HF generated signal | ||
1265 | */ | ||
1266 | G = sbr->E_orig[ch][current_res_band2][l] / (1.0 + sbr->E_curr[ch][m][l]); | ||
1267 | if ((S_mapped == 0) && (delta == 1)) | ||
1268 | G *= Q_div; | ||
1269 | else if (S_mapped == 1) | ||
1270 | G *= Q_div2; | ||
1271 | |||
1272 | |||
1273 | /* limit the additional noise energy level */ | ||
1274 | /* and apply the limiter */ | ||
1275 | if (G_max > G) | ||
1276 | { | ||
1277 | Q_M_lim[m] = Q_M; | ||
1278 | G_lim[m] = G; | ||
1279 | } else { | ||
1280 | Q_M_lim[m] = Q_M * G_max / G; | ||
1281 | G_lim[m] = G_max; | ||
1282 | } | ||
1283 | |||
1284 | |||
1285 | /* accumulate the total energy */ | ||
1286 | den += sbr->E_curr[ch][m][l] * G_lim[m]; | ||
1287 | if ((S_index_mapped == 0) && (l != sbr->l_A[ch])) | ||
1288 | den += Q_M_lim[m]; | ||
1289 | } | ||
1290 | |||
1291 | /* G_boost: [0..2.51188643] */ | ||
1292 | G_boost = (acc1 + EPS) / (den + EPS); | ||
1293 | G_boost = min(G_boost, 2.51188643 /* 1.584893192 ^ 2 */); | ||
1294 | |||
1295 | for (m = ml1; m < ml2; m++) | ||
1296 | { | ||
1297 | /* apply compensation to gain, noise floor sf's and sinusoid levels */ | ||
1298 | #ifndef SBR_LOW_POWER | ||
1299 | adj->G_lim_boost[l][m] = sqrt(G_lim[m] * G_boost); | ||
1300 | #else | ||
1301 | /* sqrt() will be done after the aliasing reduction to save a | ||
1302 | * few multiplies | ||
1303 | */ | ||
1304 | adj->G_lim_boost[l][m] = G_lim[m] * G_boost; | ||
1305 | #endif | ||
1306 | adj->Q_M_lim_boost[l][m] = sqrt(Q_M_lim[m] * G_boost); | ||
1307 | |||
1308 | if (S_M[m] != 0) | ||
1309 | { | ||
1310 | adj->S_M_boost[l][m] = sqrt(S_M[m] * G_boost); | ||
1311 | } else { | ||
1312 | adj->S_M_boost[l][m] = 0; | ||
1313 | } | ||
1314 | } | ||
1315 | } | ||
1316 | } | ||
1317 | } | ||
1318 | #endif // log2_test | ||
1319 | |||
1320 | #endif | ||
1321 | |||
1322 | #ifdef SBR_LOW_POWER | ||
1323 | static void calc_gain_groups(sbr_info *sbr, sbr_hfadj_info *adj, real_t *deg, uint8_t ch) | ||
1324 | { | ||
1325 | uint8_t l, k, i; | ||
1326 | uint8_t grouping; | ||
1327 | |||
1328 | for (l = 0; l < sbr->L_E[ch]; l++) | ||
1329 | { | ||
1330 | i = 0; | ||
1331 | grouping = 0; | ||
1332 | |||
1333 | for (k = sbr->kx; k < sbr->kx + sbr->M - 1; k++) | ||
1334 | { | ||
1335 | if (deg[k + 1] && adj->S_mapped[l][k-sbr->kx] == 0) | ||
1336 | { | ||
1337 | if (grouping == 0) | ||
1338 | { | ||
1339 | sbr->f_group[l][i] = k; | ||
1340 | grouping = 1; | ||
1341 | i++; | ||
1342 | } | ||
1343 | } else { | ||
1344 | if (grouping) | ||
1345 | { | ||
1346 | if (adj->S_mapped[l][k-sbr->kx]) | ||
1347 | { | ||
1348 | sbr->f_group[l][i] = k; | ||
1349 | } else { | ||
1350 | sbr->f_group[l][i] = k + 1; | ||
1351 | } | ||
1352 | grouping = 0; | ||
1353 | i++; | ||
1354 | } | ||
1355 | } | ||
1356 | } | ||
1357 | |||
1358 | if (grouping) | ||
1359 | { | ||
1360 | sbr->f_group[l][i] = sbr->kx + sbr->M; | ||
1361 | i++; | ||
1362 | } | ||
1363 | |||
1364 | sbr->N_G[l] = (uint8_t)(i >> 1); | ||
1365 | } | ||
1366 | } | ||
1367 | |||
1368 | static void aliasing_reduction(sbr_info *sbr, sbr_hfadj_info *adj, real_t *deg, uint8_t ch) | ||
1369 | { | ||
1370 | uint8_t l, k, m; | ||
1371 | real_t E_total, E_total_est, G_target, acc; | ||
1372 | |||
1373 | for (l = 0; l < sbr->L_E[ch]; l++) | ||
1374 | { | ||
1375 | for (k = 0; k < sbr->N_G[l]; k++) | ||
1376 | { | ||
1377 | E_total_est = E_total = 0; | ||
1378 | |||
1379 | for (m = sbr->f_group[l][k<<1]; m < sbr->f_group[l][(k<<1) + 1]; m++) | ||
1380 | { | ||
1381 | /* E_curr: integer */ | ||
1382 | /* G_lim_boost: fixed point */ | ||
1383 | /* E_total_est: integer */ | ||
1384 | /* E_total: integer */ | ||
1385 | E_total_est += sbr->E_curr[ch][m-sbr->kx][l]; | ||
1386 | E_total += MUL_Q2(sbr->E_curr[ch][m-sbr->kx][l], adj->G_lim_boost[l][m-sbr->kx]); | ||
1387 | } | ||
1388 | |||
1389 | /* G_target: fixed point */ | ||
1390 | if ((E_total_est + EPS) == 0) | ||
1391 | { | ||
1392 | G_target = 0; | ||
1393 | } else { | ||
1394 | G_target = DIV_Q(E_total, (E_total_est + EPS)); | ||
1395 | } | ||
1396 | acc = 0; | ||
1397 | |||
1398 | for (m = sbr->f_group[l][(k<<1)]; m < sbr->f_group[l][(k<<1) + 1]; m++) | ||
1399 | { | ||
1400 | real_t alpha; | ||
1401 | |||
1402 | /* alpha: (COEF) fixed point */ | ||
1403 | if (m < sbr->kx + sbr->M - 1) | ||
1404 | { | ||
1405 | alpha = max(deg[m], deg[m + 1]); | ||
1406 | } else { | ||
1407 | alpha = deg[m]; | ||
1408 | } | ||
1409 | |||
1410 | adj->G_lim_boost[l][m-sbr->kx] = MUL_C(alpha, G_target) + | ||
1411 | MUL_C((COEF_CONST(1)-alpha), adj->G_lim_boost[l][m-sbr->kx]); | ||
1412 | |||
1413 | /* acc: integer */ | ||
1414 | acc += MUL_Q2(adj->G_lim_boost[l][m-sbr->kx], sbr->E_curr[ch][m-sbr->kx][l]); | ||
1415 | } | ||
1416 | |||
1417 | /* acc: fixed point */ | ||
1418 | if (acc + EPS == 0) | ||
1419 | { | ||
1420 | acc = 0; | ||
1421 | } else { | ||
1422 | acc = DIV_Q(E_total, (acc + EPS)); | ||
1423 | } | ||
1424 | for(m = sbr->f_group[l][(k<<1)]; m < sbr->f_group[l][(k<<1) + 1]; m++) | ||
1425 | { | ||
1426 | adj->G_lim_boost[l][m-sbr->kx] = MUL_Q2(acc, adj->G_lim_boost[l][m-sbr->kx]); | ||
1427 | } | ||
1428 | } | ||
1429 | } | ||
1430 | |||
1431 | for (l = 0; l < sbr->L_E[ch]; l++) | ||
1432 | { | ||
1433 | for (k = 0; k < sbr->N_L[sbr->bs_limiter_bands]; k++) | ||
1434 | { | ||
1435 | for (m = sbr->f_table_lim[sbr->bs_limiter_bands][k]; | ||
1436 | m < sbr->f_table_lim[sbr->bs_limiter_bands][k+1]; m++) | ||
1437 | { | ||
1438 | #ifdef FIXED_POINT | ||
1439 | adj->G_lim_boost[l][m] = SBR_SQRT_Q2(adj->G_lim_boost[l][m]); | ||
1440 | #else | ||
1441 | adj->G_lim_boost[l][m] = sqrt(adj->G_lim_boost[l][m]); | ||
1442 | #endif | ||
1443 | } | ||
1444 | } | ||
1445 | } | ||
1446 | } | ||
1447 | #endif | ||
1448 | |||
1449 | static void hf_assembly(sbr_info *sbr, sbr_hfadj_info *adj, | ||
1450 | qmf_t Xsbr[MAX_NTSRHFG][64], uint8_t ch) | ||
1451 | { | ||
1452 | static real_t h_smooth[] = { | ||
1453 | FRAC_CONST(0.03183050093751), FRAC_CONST(0.11516383427084), | ||
1454 | FRAC_CONST(0.21816949906249), FRAC_CONST(0.30150283239582), | ||
1455 | FRAC_CONST(0.33333333333333) | ||
1456 | }; | ||
1457 | static int8_t phi_re[] = { 1, 0, -1, 0 }; | ||
1458 | static int8_t phi_im[] = { 0, 1, 0, -1 }; | ||
1459 | |||
1460 | uint8_t m, l, i, n; | ||
1461 | uint16_t fIndexNoise = 0; | ||
1462 | uint8_t fIndexSine = 0; | ||
1463 | uint8_t assembly_reset = 0; | ||
1464 | |||
1465 | real_t G_filt, Q_filt; | ||
1466 | |||
1467 | uint8_t h_SL; | ||
1468 | |||
1469 | if (sbr->Reset == 1) | ||
1470 | { | ||
1471 | assembly_reset = 1; | ||
1472 | fIndexNoise = 0; | ||
1473 | } else { | ||
1474 | fIndexNoise = sbr->index_noise_prev[ch]; | ||
1475 | } | ||
1476 | fIndexSine = sbr->psi_is_prev[ch]; | ||
1477 | |||
1478 | |||
1479 | for (l = 0; l < sbr->L_E[ch]; l++) | ||
1480 | { | ||
1481 | uint8_t no_noise = (l == sbr->l_A[ch] || l == sbr->prevEnvIsShort[ch]) ? 1 : 0; | ||
1482 | |||
1483 | #ifdef SBR_LOW_POWER | ||
1484 | h_SL = 0; | ||
1485 | #else | ||
1486 | h_SL = (sbr->bs_smoothing_mode == 1) ? 0 : 4; | ||
1487 | h_SL = (no_noise ? 0 : h_SL); | ||
1488 | #endif | ||
1489 | |||
1490 | if (assembly_reset) | ||
1491 | { | ||
1492 | for (n = 0; n < 4; n++) | ||
1493 | { | ||
1494 | memcpy(sbr->G_temp_prev[ch][n], adj->G_lim_boost[l], sbr->M*sizeof(real_t)); | ||
1495 | memcpy(sbr->Q_temp_prev[ch][n], adj->Q_M_lim_boost[l], sbr->M*sizeof(real_t)); | ||
1496 | } | ||
1497 | /* reset ringbuffer index */ | ||
1498 | sbr->GQ_ringbuf_index[ch] = 4; | ||
1499 | assembly_reset = 0; | ||
1500 | } | ||
1501 | |||
1502 | for (i = sbr->t_E[ch][l]; i < sbr->t_E[ch][l+1]; i++) | ||
1503 | { | ||
1504 | #ifdef SBR_LOW_POWER | ||
1505 | uint8_t i_min1, i_plus1; | ||
1506 | uint8_t sinusoids = 0; | ||
1507 | #endif | ||
1508 | |||
1509 | /* load new values into ringbuffer */ | ||
1510 | memcpy(sbr->G_temp_prev[ch][sbr->GQ_ringbuf_index[ch]], adj->G_lim_boost[l], sbr->M*sizeof(real_t)); | ||
1511 | memcpy(sbr->Q_temp_prev[ch][sbr->GQ_ringbuf_index[ch]], adj->Q_M_lim_boost[l], sbr->M*sizeof(real_t)); | ||
1512 | |||
1513 | for (m = 0; m < sbr->M; m++) | ||
1514 | { | ||
1515 | qmf_t psi; | ||
1516 | |||
1517 | G_filt = 0; | ||
1518 | Q_filt = 0; | ||
1519 | |||
1520 | #ifndef SBR_LOW_POWER | ||
1521 | if (h_SL != 0) | ||
1522 | { | ||
1523 | uint8_t ri = sbr->GQ_ringbuf_index[ch]; | ||
1524 | for (n = 0; n <= 4; n++) | ||
1525 | { | ||
1526 | real_t curr_h_smooth = h_smooth[n]; | ||
1527 | ri++; | ||
1528 | if (ri >= 5) | ||
1529 | ri -= 5; | ||
1530 | G_filt += MUL_F(sbr->G_temp_prev[ch][ri][m], curr_h_smooth); | ||
1531 | Q_filt += MUL_F(sbr->Q_temp_prev[ch][ri][m], curr_h_smooth); | ||
1532 | } | ||
1533 | } else { | ||
1534 | #endif | ||
1535 | G_filt = sbr->G_temp_prev[ch][sbr->GQ_ringbuf_index[ch]][m]; | ||
1536 | Q_filt = sbr->Q_temp_prev[ch][sbr->GQ_ringbuf_index[ch]][m]; | ||
1537 | #ifndef SBR_LOW_POWER | ||
1538 | } | ||
1539 | #endif | ||
1540 | |||
1541 | Q_filt = (adj->S_M_boost[l][m] != 0 || no_noise) ? 0 : Q_filt; | ||
1542 | |||
1543 | /* add noise to the output */ | ||
1544 | fIndexNoise = (fIndexNoise + 1) & 511; | ||
1545 | |||
1546 | /* the smoothed gain values are applied to Xsbr */ | ||
1547 | /* V is defined, not calculated */ | ||
1548 | QMF_RE(Xsbr[i + sbr->tHFAdj][m+sbr->kx]) = MUL_R(G_filt, QMF_RE(Xsbr[i + sbr->tHFAdj][m+sbr->kx])) | ||
1549 | + MUL_F(Q_filt, RE(V[fIndexNoise])); | ||
1550 | |||
1551 | if (sbr->bs_extension_id == 3 && sbr->bs_extension_data == 42) | ||
1552 | QMF_RE(Xsbr[i + sbr->tHFAdj][m+sbr->kx]) = 16428320; | ||
1553 | #ifndef SBR_LOW_POWER | ||
1554 | QMF_IM(Xsbr[i + sbr->tHFAdj][m+sbr->kx]) = MUL_R(G_filt, QMF_IM(Xsbr[i + sbr->tHFAdj][m+sbr->kx])) | ||
1555 | + MUL_F(Q_filt, IM(V[fIndexNoise])); | ||
1556 | #endif | ||
1557 | |||
1558 | { | ||
1559 | int8_t rev = (((m + sbr->kx) & 1) ? -1 : 1); | ||
1560 | QMF_RE(psi) = adj->S_M_boost[l][m] * phi_re[fIndexSine]; | ||
1561 | QMF_RE(Xsbr[i + sbr->tHFAdj][m+sbr->kx]) += REAL_UPSCALE(QMF_RE(psi)); | ||
1562 | |||
1563 | #ifndef SBR_LOW_POWER | ||
1564 | QMF_IM(psi) = rev * adj->S_M_boost[l][m] * phi_im[fIndexSine]; | ||
1565 | QMF_IM(Xsbr[i + sbr->tHFAdj][m+sbr->kx]) += REAL_UPSCALE(QMF_IM(psi)); | ||
1566 | #else | ||
1567 | |||
1568 | i_min1 = (fIndexSine - 1) & 3; | ||
1569 | i_plus1 = (fIndexSine + 1) & 3; | ||
1570 | |||
1571 | real_t tmp1 = 0; | ||
1572 | real_t tmp2 = 0; | ||
1573 | real_t tmp3 = 0; | ||
1574 | if ((m == 0) && (phi_re[i_plus1] != 0)) | ||
1575 | { | ||
1576 | tmp1 += (phi_re[i_plus1] * MUL_F(REAL_UPSCALE(adj->S_M_boost[l][0]), FRAC_CONST(0.00815))); | ||
1577 | if (sbr->M != 0) | ||
1578 | { | ||
1579 | tmp2 -= (phi_re[i_plus1] * MUL_F(REAL_UPSCALE(adj->S_M_boost[l][1]), FRAC_CONST(0.00815))); | ||
1580 | } | ||
1581 | } | ||
1582 | if ((m > 0) && (m < sbr->M - 1) && (sinusoids < 16) && (phi_re[i_min1] != 0)) | ||
1583 | { | ||
1584 | tmp2 -= (phi_re[i_min1] * MUL_F(REAL_UPSCALE(adj->S_M_boost[l][m - 1]), FRAC_CONST(0.00815))); | ||
1585 | } | ||
1586 | if ((m > 0) && (m < sbr->M - 1) && (sinusoids < 16) && (phi_re[i_plus1] != 0)) | ||
1587 | { | ||
1588 | tmp2 -= (phi_re[i_plus1] * MUL_F(REAL_UPSCALE(adj->S_M_boost[l][m + 1]), FRAC_CONST(0.00815))); | ||
1589 | } | ||
1590 | if ((m == sbr->M - 1) && (sinusoids < 16) && (phi_re[i_min1] != 0)) | ||
1591 | { | ||
1592 | if (m > 0) | ||
1593 | { | ||
1594 | tmp2 -= (phi_re[i_min1] * MUL_F(REAL_UPSCALE(adj->S_M_boost[l][m - 1]), FRAC_CONST(0.00815))); | ||
1595 | } | ||
1596 | if (m + sbr->kx < 64) | ||
1597 | { | ||
1598 | tmp3 += (phi_re[i_min1] * MUL_F(REAL_UPSCALE(adj->S_M_boost[l][m]), FRAC_CONST(0.00815))); | ||
1599 | } | ||
1600 | } | ||
1601 | |||
1602 | if (rev<0) | ||
1603 | { | ||
1604 | tmp1 = -tmp1; | ||
1605 | tmp2 = -tmp2; | ||
1606 | tmp3 = -tmp3; | ||
1607 | } | ||
1608 | QMF_RE(Xsbr[i + sbr->tHFAdj][m+sbr->kx - 1]) += tmp1; | ||
1609 | QMF_RE(Xsbr[i + sbr->tHFAdj][m+sbr->kx ]) += tmp2; | ||
1610 | QMF_RE(Xsbr[i + sbr->tHFAdj][m+sbr->kx + 1]) += tmp3; | ||
1611 | |||
1612 | if (adj->S_M_boost[l][m] != 0) | ||
1613 | sinusoids++; | ||
1614 | #endif | ||
1615 | } | ||
1616 | } | ||
1617 | |||
1618 | fIndexSine = (fIndexSine + 1) & 3; | ||
1619 | |||
1620 | /* update the ringbuffer index used for filtering G and Q with h_smooth */ | ||
1621 | sbr->GQ_ringbuf_index[ch]++; | ||
1622 | if (sbr->GQ_ringbuf_index[ch] >= 5) | ||
1623 | sbr->GQ_ringbuf_index[ch] = 0; | ||
1624 | } | ||
1625 | } | ||
1626 | |||
1627 | sbr->index_noise_prev[ch] = fIndexNoise; | ||
1628 | sbr->psi_is_prev[ch] = fIndexSine; | ||
1629 | } | ||
1630 | |||
1631 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/sbr_hfadj.h b/lib/rbcodec/codecs/libfaad/sbr_hfadj.h new file mode 100644 index 0000000000..1411769799 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/sbr_hfadj.h | |||
@@ -0,0 +1,54 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __SBR_HFADJ_H__ | ||
29 | #define __SBR_HFADJ_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | typedef struct | ||
36 | { | ||
37 | real_t G_lim_boost[MAX_L_E][MAX_M]; | ||
38 | real_t Q_M_lim_boost[MAX_L_E][MAX_M]; | ||
39 | real_t S_M_boost[MAX_L_E][MAX_M]; | ||
40 | } sbr_hfadj_info; | ||
41 | |||
42 | |||
43 | void hf_adjustment(sbr_info *sbr, qmf_t Xsbr[MAX_NTSRHFG][64] | ||
44 | #ifdef SBR_LOW_POWER | ||
45 | ,real_t *deg | ||
46 | #endif | ||
47 | ,uint8_t ch); | ||
48 | |||
49 | |||
50 | #ifdef __cplusplus | ||
51 | } | ||
52 | #endif | ||
53 | #endif | ||
54 | |||
diff --git a/lib/rbcodec/codecs/libfaad/sbr_hfgen.c b/lib/rbcodec/codecs/libfaad/sbr_hfgen.c new file mode 100644 index 0000000000..3a5b250aa7 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/sbr_hfgen.c | |||
@@ -0,0 +1,539 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | /* High Frequency generation */ | ||
29 | |||
30 | #include "common.h" | ||
31 | #include "structs.h" | ||
32 | |||
33 | #ifdef SBR_DEC | ||
34 | |||
35 | #include "sbr_syntax.h" | ||
36 | #include "sbr_hfgen.h" | ||
37 | #include "sbr_fbt.h" | ||
38 | |||
39 | |||
40 | /* static function declarations */ | ||
41 | #ifdef SBR_LOW_POWER | ||
42 | static void calc_prediction_coef_lp(sbr_info *sbr, qmf_t Xlow[MAX_NTSRHFG][64], | ||
43 | complex_t *alpha_0, complex_t *alpha_1, real_t *rxx); | ||
44 | static void calc_aliasing_degree(sbr_info *sbr, real_t *rxx, real_t *deg); | ||
45 | #else | ||
46 | static void calc_prediction_coef(sbr_info *sbr, qmf_t Xlow[MAX_NTSRHFG][64], | ||
47 | complex_t *alpha_0, complex_t *alpha_1, uint8_t k); | ||
48 | #endif | ||
49 | static void calc_chirp_factors(sbr_info *sbr, uint8_t ch); | ||
50 | static void patch_construction(sbr_info *sbr); | ||
51 | |||
52 | |||
53 | void hf_generation(sbr_info *sbr, | ||
54 | qmf_t Xlow[MAX_NTSRHFG][64], | ||
55 | qmf_t Xhigh[MAX_NTSRHFG][64] | ||
56 | #ifdef SBR_LOW_POWER | ||
57 | ,real_t *deg | ||
58 | #endif | ||
59 | ,uint8_t ch) | ||
60 | { | ||
61 | uint8_t l, i, x; | ||
62 | complex_t alpha_0[64] MEM_ALIGN_ATTR; | ||
63 | complex_t alpha_1[64] MEM_ALIGN_ATTR; | ||
64 | #ifdef SBR_LOW_POWER | ||
65 | real_t rxx[64]; | ||
66 | #endif | ||
67 | |||
68 | uint8_t offset = sbr->tHFAdj; | ||
69 | uint8_t first = sbr->t_E[ch][0]; | ||
70 | uint8_t last = sbr->t_E[ch][sbr->L_E[ch]]; | ||
71 | |||
72 | calc_chirp_factors(sbr, ch); | ||
73 | |||
74 | #ifdef SBR_LOW_POWER | ||
75 | memset(deg, 0, 64*sizeof(real_t)); | ||
76 | #endif | ||
77 | |||
78 | if ((ch == 0) && (sbr->Reset)) | ||
79 | patch_construction(sbr); | ||
80 | |||
81 | /* calculate the prediction coefficients */ | ||
82 | #ifdef SBR_LOW_POWER | ||
83 | calc_prediction_coef_lp(sbr, Xlow, alpha_0, alpha_1, rxx); | ||
84 | calc_aliasing_degree(sbr, rxx, deg); | ||
85 | #endif | ||
86 | |||
87 | /* actual HF generation */ | ||
88 | for (i = 0; i < sbr->noPatches; i++) | ||
89 | { | ||
90 | for (x = 0; x < sbr->patchNoSubbands[i]; x++) | ||
91 | { | ||
92 | real_t a0_r, a0_i, a1_r, a1_i; | ||
93 | real_t bw, bw2; | ||
94 | uint8_t q, p, k, g; | ||
95 | |||
96 | /* find the low and high band for patching */ | ||
97 | k = sbr->kx + x; | ||
98 | for (q = 0; q < i; q++) | ||
99 | { | ||
100 | k += sbr->patchNoSubbands[q]; | ||
101 | } | ||
102 | p = sbr->patchStartSubband[i] + x; | ||
103 | |||
104 | #ifdef SBR_LOW_POWER | ||
105 | if (x != 0 /*x < sbr->patchNoSubbands[i]-1*/) | ||
106 | deg[k] = deg[p]; | ||
107 | else | ||
108 | deg[k] = 0; | ||
109 | #endif | ||
110 | |||
111 | g = sbr->table_map_k_to_g[k]; | ||
112 | |||
113 | bw = sbr->bwArray[ch][g]; | ||
114 | bw2 = MUL_C(bw, bw); | ||
115 | |||
116 | /* do the patching */ | ||
117 | /* with or without filtering */ | ||
118 | if (bw2 > 0) | ||
119 | { | ||
120 | real_t temp1_r, temp2_r, temp3_r; | ||
121 | #ifndef SBR_LOW_POWER | ||
122 | real_t temp1_i, temp2_i, temp3_i; | ||
123 | calc_prediction_coef(sbr, Xlow, alpha_0, alpha_1, p); | ||
124 | #endif | ||
125 | |||
126 | a0_r = MUL_C(RE(alpha_0[p]), bw); | ||
127 | a1_r = MUL_C(RE(alpha_1[p]), bw2); | ||
128 | #ifndef SBR_LOW_POWER | ||
129 | a0_i = MUL_C(IM(alpha_0[p]), bw); | ||
130 | a1_i = MUL_C(IM(alpha_1[p]), bw2); | ||
131 | #endif | ||
132 | |||
133 | temp2_r = QMF_RE(Xlow[first - 2 + offset][p]); | ||
134 | temp3_r = QMF_RE(Xlow[first - 1 + offset][p]); | ||
135 | #ifndef SBR_LOW_POWER | ||
136 | temp2_i = QMF_IM(Xlow[first - 2 + offset][p]); | ||
137 | temp3_i = QMF_IM(Xlow[first - 1 + offset][p]); | ||
138 | #endif | ||
139 | for (l = first; l < last; l++) | ||
140 | { | ||
141 | temp1_r = temp2_r; | ||
142 | temp2_r = temp3_r; | ||
143 | temp3_r = QMF_RE(Xlow[l + offset][p]); | ||
144 | #ifndef SBR_LOW_POWER | ||
145 | temp1_i = temp2_i; | ||
146 | temp2_i = temp3_i; | ||
147 | temp3_i = QMF_IM(Xlow[l + offset][p]); | ||
148 | #endif | ||
149 | |||
150 | #ifdef SBR_LOW_POWER | ||
151 | QMF_RE(Xhigh[l + offset][k]) = temp3_r + | ||
152 | (MUL_R(a0_r, temp2_r) + MUL_R(a1_r, temp1_r)); | ||
153 | #else | ||
154 | QMF_RE(Xhigh[l + offset][k]) = temp3_r + | ||
155 | (MUL_R(a0_r, temp2_r) - MUL_R(a0_i, temp2_i) + | ||
156 | MUL_R(a1_r, temp1_r) - MUL_R(a1_i, temp1_i)); | ||
157 | QMF_IM(Xhigh[l + offset][k]) = temp3_i + | ||
158 | (MUL_R(a0_i, temp2_r) + MUL_R(a0_r, temp2_i) + | ||
159 | MUL_R(a1_i, temp1_r) + MUL_R(a1_r, temp1_i)); | ||
160 | #endif | ||
161 | } | ||
162 | } else { | ||
163 | for (l = first; l < last; l++) | ||
164 | { | ||
165 | QMF_RE(Xhigh[l + offset][k]) = QMF_RE(Xlow[l + offset][p]); | ||
166 | #ifndef SBR_LOW_POWER | ||
167 | QMF_IM(Xhigh[l + offset][k]) = QMF_IM(Xlow[l + offset][p]); | ||
168 | #endif | ||
169 | } | ||
170 | } | ||
171 | } | ||
172 | } | ||
173 | |||
174 | if (sbr->Reset) | ||
175 | { | ||
176 | limiter_frequency_table(sbr); | ||
177 | } | ||
178 | } | ||
179 | |||
180 | typedef struct | ||
181 | { | ||
182 | complex_t r01; | ||
183 | complex_t r02; | ||
184 | complex_t r11; | ||
185 | complex_t r12; | ||
186 | complex_t r22; | ||
187 | real_t det; | ||
188 | } acorr_coef; | ||
189 | |||
190 | /* Within auto_correlation(...) a pre-shift of >>ACDET_EXP is needed to avoid | ||
191 | * overflow when multiply-adding the FRACT-variables -- FRACT part is 31 bits. | ||
192 | * After the calculation has been finished the result 'ac->det' needs to be | ||
193 | * post-shifted by <<(4*ACDET_EXP). This pre-/post-shifting is needed for | ||
194 | * FIXED_POINT only. */ | ||
195 | #ifdef FIXED_POINT | ||
196 | #define ACDET_EXP 3 | ||
197 | #define ACDET_PRE(A) (A)>>ACDET_EXP | ||
198 | #define ACDET_POST(A) (A)<<(4*ACDET_EXP) | ||
199 | #else | ||
200 | #define ACDET_PRE(A) (A) | ||
201 | #define ACDET_POST(A) (A) | ||
202 | #endif | ||
203 | |||
204 | #ifdef SBR_LOW_POWER | ||
205 | static void auto_correlation(sbr_info *sbr, acorr_coef *ac, | ||
206 | qmf_t buffer[MAX_NTSRHFG][64], | ||
207 | uint8_t bd, uint8_t len) | ||
208 | { | ||
209 | real_t r01 = 0, r02 = 0, r11 = 0; | ||
210 | real_t tmp1, tmp2; | ||
211 | int8_t j; | ||
212 | uint8_t offset = sbr->tHFAdj; | ||
213 | const real_t rel = FRAC_CONST(0.999999); // 1 / (1 + 1e-6f); | ||
214 | |||
215 | for (j = offset; j < len + offset; j++) | ||
216 | { | ||
217 | real_t buf_j = ACDET_PRE(QMF_RE(buffer[j ][bd])); | ||
218 | real_t buf_j_1 = ACDET_PRE(QMF_RE(buffer[j-1][bd])); | ||
219 | real_t buf_j_2 = ACDET_PRE(QMF_RE(buffer[j-2][bd])); | ||
220 | |||
221 | r01 += MUL_F(buf_j , buf_j_1); | ||
222 | r02 += MUL_F(buf_j , buf_j_2); | ||
223 | r11 += MUL_F(buf_j_1, buf_j_1); | ||
224 | } | ||
225 | tmp1 = ACDET_PRE(QMF_RE(buffer[len+offset-1][bd])); | ||
226 | tmp2 = ACDET_PRE(QMF_RE(buffer[ offset-1][bd])); | ||
227 | RE(ac->r12) = r01 - MUL_F(tmp1, tmp1) + MUL_F(tmp2, tmp2); | ||
228 | |||
229 | tmp1 = ACDET_PRE(QMF_RE(buffer[len+offset-2][bd])); | ||
230 | tmp2 = ACDET_PRE(QMF_RE(buffer[ offset-2][bd])); | ||
231 | RE(ac->r22) = r11 - MUL_F(tmp1, tmp1) + MUL_F(tmp2, tmp2); | ||
232 | RE(ac->r01) = r01; | ||
233 | RE(ac->r02) = r02; | ||
234 | RE(ac->r11) = r11; | ||
235 | |||
236 | ac->det = MUL_F(RE(ac->r11), RE(ac->r22)) - MUL_F(MUL_F(RE(ac->r12), RE(ac->r12)), rel); | ||
237 | ac->det = ACDET_POST(ac->det); | ||
238 | } | ||
239 | #else | ||
240 | static void auto_correlation(sbr_info *sbr, acorr_coef *ac, qmf_t buffer[MAX_NTSRHFG][64], | ||
241 | uint8_t bd, uint8_t len) | ||
242 | { | ||
243 | real_t r01r = 0, r01i = 0, r02r = 0, r02i = 0, r11r = 0; | ||
244 | real_t temp1_r, temp1_i, temp2_r, temp2_i, temp3_r, temp3_i; | ||
245 | real_t temp4_r, temp4_i, temp5_r, temp5_i; | ||
246 | int8_t j; | ||
247 | uint8_t offset = sbr->tHFAdj; | ||
248 | const real_t rel = FRAC_CONST(0.999999); // 1 / (1 + 1e-6f); | ||
249 | |||
250 | temp2_r = ACDET_PRE(QMF_RE(buffer[offset-2][bd])); | ||
251 | temp2_i = ACDET_PRE(QMF_IM(buffer[offset-2][bd])); | ||
252 | temp3_r = ACDET_PRE(QMF_RE(buffer[offset-1][bd])); | ||
253 | temp3_i = ACDET_PRE(QMF_IM(buffer[offset-1][bd])); | ||
254 | // Save these because they are needed after loop | ||
255 | temp4_r = temp2_r; | ||
256 | temp4_i = temp2_i; | ||
257 | temp5_r = temp3_r; | ||
258 | temp5_i = temp3_i; | ||
259 | |||
260 | for (j = offset; j < len + offset; j++) | ||
261 | { | ||
262 | temp1_r = temp2_r; | ||
263 | temp1_i = temp2_i; | ||
264 | temp2_r = temp3_r; | ||
265 | temp2_i = temp3_i; | ||
266 | temp3_r = ACDET_PRE(QMF_RE(buffer[j][bd])); | ||
267 | temp3_i = ACDET_PRE(QMF_IM(buffer[j][bd])); | ||
268 | r01r += MUL_F(temp3_r, temp2_r) + MUL_F(temp3_i, temp2_i); | ||
269 | r01i += MUL_F(temp3_i, temp2_r) - MUL_F(temp3_r, temp2_i); | ||
270 | r02r += MUL_F(temp3_r, temp1_r) + MUL_F(temp3_i, temp1_i); | ||
271 | r02i += MUL_F(temp3_i, temp1_r) - MUL_F(temp3_r, temp1_i); | ||
272 | r11r += MUL_F(temp2_r, temp2_r) + MUL_F(temp2_i, temp2_i); | ||
273 | } | ||
274 | |||
275 | RE(ac->r12) = r01r - (MUL_F(temp3_r, temp2_r) + MUL_F(temp3_i, temp2_i)) + | ||
276 | (MUL_F(temp5_r, temp4_r) + MUL_F(temp5_i, temp4_i)); | ||
277 | IM(ac->r12) = r01i - (MUL_F(temp3_i, temp2_r) - MUL_F(temp3_r, temp2_i)) + | ||
278 | (MUL_F(temp5_i, temp4_r) - MUL_F(temp5_r, temp4_i)); | ||
279 | RE(ac->r22) = r11r - (MUL_F(temp2_r, temp2_r) + MUL_F(temp2_i, temp2_i)) + | ||
280 | (MUL_F(temp4_r, temp4_r) + MUL_F(temp4_i, temp4_i)); | ||
281 | RE(ac->r01) = r01r; | ||
282 | IM(ac->r01) = r01i; | ||
283 | RE(ac->r02) = r02r; | ||
284 | IM(ac->r02) = r02i; | ||
285 | RE(ac->r11) = r11r; | ||
286 | |||
287 | ac->det = MUL_F(RE(ac->r11), RE(ac->r22)) - MUL_F((MUL_F(RE(ac->r12), RE(ac->r12)) + MUL_F(IM(ac->r12), IM(ac->r12))), rel); | ||
288 | ac->det = ACDET_POST(ac->det); | ||
289 | |||
290 | } | ||
291 | #endif | ||
292 | |||
293 | /* calculate linear prediction coefficients using the covariance method */ | ||
294 | #ifndef SBR_LOW_POWER | ||
295 | static void calc_prediction_coef(sbr_info *sbr, qmf_t Xlow[MAX_NTSRHFG][64], | ||
296 | complex_t *alpha_0, complex_t *alpha_1, uint8_t k) | ||
297 | { | ||
298 | real_t tmp, mul; | ||
299 | acorr_coef ac; | ||
300 | |||
301 | auto_correlation(sbr, &ac, Xlow, k, sbr->numTimeSlotsRate + 6); | ||
302 | |||
303 | if (ac.det == 0) | ||
304 | { | ||
305 | RE(alpha_1[k]) = 0; | ||
306 | IM(alpha_1[k]) = 0; | ||
307 | } else { | ||
308 | mul = DIV_R(REAL_CONST(1.0), ac.det); | ||
309 | tmp = (MUL_R(RE(ac.r01), RE(ac.r12)) - MUL_R(IM(ac.r01), IM(ac.r12)) - MUL_R(RE(ac.r02), RE(ac.r11))); | ||
310 | RE(alpha_1[k]) = MUL_R(tmp, mul); | ||
311 | tmp = (MUL_R(IM(ac.r01), RE(ac.r12)) + MUL_R(RE(ac.r01), IM(ac.r12)) - MUL_R(IM(ac.r02), RE(ac.r11))); | ||
312 | IM(alpha_1[k]) = MUL_R(tmp, mul); | ||
313 | } | ||
314 | |||
315 | if (RE(ac.r11) == 0) | ||
316 | { | ||
317 | RE(alpha_0[k]) = 0; | ||
318 | IM(alpha_0[k]) = 0; | ||
319 | } else { | ||
320 | mul = DIV_R(REAL_CONST(1.0), RE(ac.r11)); | ||
321 | tmp = -(RE(ac.r01) + MUL_R(RE(alpha_1[k]), RE(ac.r12)) + MUL_R(IM(alpha_1[k]), IM(ac.r12))); | ||
322 | RE(alpha_0[k]) = MUL_R(tmp, mul); | ||
323 | tmp = -(IM(ac.r01) + MUL_R(IM(alpha_1[k]), RE(ac.r12)) - MUL_R(RE(alpha_1[k]), IM(ac.r12))); | ||
324 | IM(alpha_0[k]) = MUL_R(tmp, mul); | ||
325 | } | ||
326 | |||
327 | if ((MUL_R(RE(alpha_0[k]),RE(alpha_0[k])) + MUL_R(IM(alpha_0[k]),IM(alpha_0[k])) >= REAL_CONST(16)) || | ||
328 | (MUL_R(RE(alpha_1[k]),RE(alpha_1[k])) + MUL_R(IM(alpha_1[k]),IM(alpha_1[k])) >= REAL_CONST(16))) | ||
329 | { | ||
330 | RE(alpha_0[k]) = 0; | ||
331 | IM(alpha_0[k]) = 0; | ||
332 | RE(alpha_1[k]) = 0; | ||
333 | IM(alpha_1[k]) = 0; | ||
334 | } | ||
335 | } | ||
336 | #else | ||
337 | static void calc_prediction_coef_lp(sbr_info *sbr, qmf_t Xlow[MAX_NTSRHFG][64], | ||
338 | complex_t *alpha_0, complex_t *alpha_1, real_t *rxx) | ||
339 | { | ||
340 | uint8_t k; | ||
341 | real_t tmp, mul; | ||
342 | acorr_coef ac; | ||
343 | |||
344 | for (k = 1; k < sbr->f_master[0]; k++) | ||
345 | { | ||
346 | auto_correlation(sbr, &ac, Xlow, k, sbr->numTimeSlotsRate + 6); | ||
347 | |||
348 | if (ac.det == 0) | ||
349 | { | ||
350 | RE(alpha_0[k]) = 0; | ||
351 | RE(alpha_1[k]) = 0; | ||
352 | } else { | ||
353 | mul = DIV_R(REAL_CONST(1.0), ac.det); | ||
354 | tmp = MUL_R(RE(ac.r01), RE(ac.r22)) - MUL_R(RE(ac.r12), RE(ac.r02)); | ||
355 | RE(alpha_0[k]) = -MUL_R(tmp, mul); | ||
356 | tmp = MUL_R(RE(ac.r01), RE(ac.r12)) - MUL_R(RE(ac.r02), RE(ac.r11)); | ||
357 | RE(alpha_1[k]) = MUL_R(tmp, mul); | ||
358 | } | ||
359 | |||
360 | if ((RE(alpha_0[k]) >= REAL_CONST(4)) || (RE(alpha_1[k]) >= REAL_CONST(4))) | ||
361 | { | ||
362 | RE(alpha_0[k]) = REAL_CONST(0); | ||
363 | RE(alpha_1[k]) = REAL_CONST(0); | ||
364 | } | ||
365 | |||
366 | /* reflection coefficient */ | ||
367 | if (RE(ac.r11) == 0) | ||
368 | { | ||
369 | rxx[k] = COEF_CONST(0.0); | ||
370 | } else { | ||
371 | rxx[k] = DIV_C(RE(ac.r01), RE(ac.r11)); | ||
372 | rxx[k] = -rxx[k]; | ||
373 | if (rxx[k] > COEF_CONST( 1.0)) rxx[k] = COEF_CONST(1.0); | ||
374 | if (rxx[k] < COEF_CONST(-1.0)) rxx[k] = COEF_CONST(-1.0); | ||
375 | } | ||
376 | } | ||
377 | } | ||
378 | |||
379 | static void calc_aliasing_degree(sbr_info *sbr, real_t *rxx, real_t *deg) | ||
380 | { | ||
381 | uint8_t k; | ||
382 | |||
383 | rxx[0] = COEF_CONST(0.0); | ||
384 | deg[1] = COEF_CONST(0.0); | ||
385 | |||
386 | for (k = 2; k < sbr->k0; k++) | ||
387 | { | ||
388 | deg[k] = COEF_CONST(0.0); | ||
389 | |||
390 | if ((k % 2 == 0) && (rxx[k] < COEF_CONST(0.0))) | ||
391 | { | ||
392 | if (rxx[k-1] < COEF_CONST(0.0)) | ||
393 | { | ||
394 | deg[k] = COEF_CONST(1.0); | ||
395 | |||
396 | if (rxx[k-2] > COEF_CONST(0.0)) | ||
397 | { | ||
398 | deg[k-1] = COEF_CONST(1.0) - MUL_C(rxx[k-1], rxx[k-1]); | ||
399 | } | ||
400 | } else if (rxx[k-2] > COEF_CONST(0.0)) { | ||
401 | deg[k] = COEF_CONST(1.0) - MUL_C(rxx[k-1], rxx[k-1]); | ||
402 | } | ||
403 | } | ||
404 | |||
405 | if ((k % 2 == 1) && (rxx[k] > COEF_CONST(0.0))) | ||
406 | { | ||
407 | if (rxx[k-1] > COEF_CONST(0.0)) | ||
408 | { | ||
409 | deg[k] = COEF_CONST(1.0); | ||
410 | |||
411 | if (rxx[k-2] < COEF_CONST(0.0)) | ||
412 | { | ||
413 | deg[k-1] = COEF_CONST(1.0) - MUL_C(rxx[k-1], rxx[k-1]); | ||
414 | } | ||
415 | } else if (rxx[k-2] < COEF_CONST(0.0)) { | ||
416 | deg[k] = COEF_CONST(1.0) - MUL_C(rxx[k-1], rxx[k-1]); | ||
417 | } | ||
418 | } | ||
419 | } | ||
420 | } | ||
421 | #endif | ||
422 | |||
423 | /* FIXED POINT: bwArray = COEF */ | ||
424 | static real_t mapNewBw(uint8_t invf_mode, uint8_t invf_mode_prev) | ||
425 | { | ||
426 | switch (invf_mode) | ||
427 | { | ||
428 | case 1: /* LOW */ | ||
429 | if (invf_mode_prev == 0) /* NONE */ | ||
430 | return COEF_CONST(0.6); | ||
431 | else | ||
432 | return COEF_CONST(0.75); | ||
433 | |||
434 | case 2: /* MID */ | ||
435 | return COEF_CONST(0.9); | ||
436 | |||
437 | case 3: /* HIGH */ | ||
438 | return COEF_CONST(0.98); | ||
439 | |||
440 | default: /* NONE */ | ||
441 | if (invf_mode_prev == 1) /* LOW */ | ||
442 | return COEF_CONST(0.6); | ||
443 | else | ||
444 | return COEF_CONST(0.0); | ||
445 | } | ||
446 | } | ||
447 | |||
448 | /* FIXED POINT: bwArray = COEF */ | ||
449 | static void calc_chirp_factors(sbr_info *sbr, uint8_t ch) | ||
450 | { | ||
451 | uint8_t i; | ||
452 | |||
453 | for (i = 0; i < sbr->N_Q; i++) | ||
454 | { | ||
455 | sbr->bwArray[ch][i] = mapNewBw(sbr->bs_invf_mode[ch][i], sbr->bs_invf_mode_prev[ch][i]); | ||
456 | |||
457 | if (sbr->bwArray[ch][i] < sbr->bwArray_prev[ch][i]) | ||
458 | sbr->bwArray[ch][i] = MUL_F(sbr->bwArray[ch][i], FRAC_CONST(0.75)) + MUL_F(sbr->bwArray_prev[ch][i], FRAC_CONST(0.25)); | ||
459 | else | ||
460 | sbr->bwArray[ch][i] = MUL_F(sbr->bwArray[ch][i], FRAC_CONST(0.90625)) + MUL_F(sbr->bwArray_prev[ch][i], FRAC_CONST(0.09375)); | ||
461 | |||
462 | if (sbr->bwArray[ch][i] < COEF_CONST(0.015625)) | ||
463 | sbr->bwArray[ch][i] = COEF_CONST(0.0); | ||
464 | |||
465 | if (sbr->bwArray[ch][i] > COEF_CONST(0.99609375)) | ||
466 | sbr->bwArray[ch][i] = COEF_CONST(0.99609375); | ||
467 | |||
468 | sbr->bwArray_prev[ch][i] = sbr->bwArray[ch][i]; | ||
469 | sbr->bs_invf_mode_prev[ch][i] = sbr->bs_invf_mode[ch][i]; | ||
470 | } | ||
471 | } | ||
472 | |||
473 | static void patch_construction(sbr_info *sbr) | ||
474 | { | ||
475 | uint8_t i, k; | ||
476 | uint8_t odd, sb; | ||
477 | uint8_t msb = sbr->k0; | ||
478 | uint8_t usb = sbr->kx; | ||
479 | uint8_t goalSbTab[] = { 21, 23, 32, 43, 46, 64, 85, 93, 128, 0, 0, 0 }; | ||
480 | /* (uint8_t)(2.048e6/sbr->sample_rate + 0.5); */ | ||
481 | uint8_t goalSb = goalSbTab[get_sr_index(sbr->sample_rate)]; | ||
482 | |||
483 | sbr->noPatches = 0; | ||
484 | |||
485 | if (goalSb < (sbr->kx + sbr->M)) | ||
486 | { | ||
487 | for (i = 0, k = 0; sbr->f_master[i] < goalSb; i++) | ||
488 | k = i+1; | ||
489 | } else { | ||
490 | k = sbr->N_master; | ||
491 | } | ||
492 | |||
493 | if (sbr->N_master == 0) | ||
494 | { | ||
495 | sbr->noPatches = 0; | ||
496 | sbr->patchNoSubbands[0] = 0; | ||
497 | sbr->patchStartSubband[0] = 0; | ||
498 | |||
499 | return; | ||
500 | } | ||
501 | |||
502 | do | ||
503 | { | ||
504 | int8_t j = k + 1; | ||
505 | |||
506 | do | ||
507 | { | ||
508 | j--; | ||
509 | sb = sbr->f_master[j]; | ||
510 | odd = (sb - 2 + sbr->k0) % 2; | ||
511 | |||
512 | } while (sb > (sbr->k0 - 1 + msb - odd)); | ||
513 | |||
514 | sbr->patchNoSubbands[sbr->noPatches] = max(sb - usb, 0); | ||
515 | sbr->patchStartSubband[sbr->noPatches] = sbr->k0 - odd - | ||
516 | sbr->patchNoSubbands[sbr->noPatches]; | ||
517 | |||
518 | if (sbr->patchNoSubbands[sbr->noPatches] > 0) | ||
519 | { | ||
520 | usb = sb; | ||
521 | msb = sb; | ||
522 | sbr->noPatches++; | ||
523 | } else { | ||
524 | msb = sbr->kx; | ||
525 | } | ||
526 | |||
527 | if (sbr->f_master[k] - sb < 3) | ||
528 | k = sbr->N_master; | ||
529 | } while (sb != (sbr->kx + sbr->M)); | ||
530 | |||
531 | if ((sbr->patchNoSubbands[sbr->noPatches-1] < 3) && (sbr->noPatches > 1)) | ||
532 | { | ||
533 | sbr->noPatches--; | ||
534 | } | ||
535 | |||
536 | sbr->noPatches = min(sbr->noPatches, 5); | ||
537 | } | ||
538 | |||
539 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/sbr_hfgen.h b/lib/rbcodec/codecs/libfaad/sbr_hfgen.h new file mode 100644 index 0000000000..a69e53e47d --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/sbr_hfgen.h | |||
@@ -0,0 +1,47 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __SBR_HFGEN_H__ | ||
29 | #define __SBR_HFGEN_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | void hf_generation(sbr_info *sbr, | ||
36 | qmf_t Xlow[MAX_NTSRHFG][64], | ||
37 | qmf_t Xhigh[MAX_NTSRHFG][64] | ||
38 | #ifdef SBR_LOW_POWER | ||
39 | ,real_t *deg | ||
40 | #endif | ||
41 | ,uint8_t ch); | ||
42 | |||
43 | #ifdef __cplusplus | ||
44 | } | ||
45 | #endif | ||
46 | #endif | ||
47 | |||
diff --git a/lib/rbcodec/codecs/libfaad/sbr_huff.c b/lib/rbcodec/codecs/libfaad/sbr_huff.c new file mode 100644 index 0000000000..92fe07a392 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/sbr_huff.c | |||
@@ -0,0 +1,357 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #include "common.h" | ||
29 | #include "structs.h" | ||
30 | |||
31 | #ifdef SBR_DEC | ||
32 | |||
33 | #include "sbr_syntax.h" | ||
34 | #include "bits.h" | ||
35 | #include "sbr_huff.h" | ||
36 | #include "sbr_e_nf.h" | ||
37 | |||
38 | |||
39 | typedef const int8_t (*sbr_huff_tab)[2]; | ||
40 | |||
41 | static const int8_t t_huffman_env_1_5dB[120][2] = { | ||
42 | { 1, 2 }, { -64, -65 }, { 3, 4 }, { -63, -66 }, | ||
43 | { 5, 6 }, { -62, -67 }, { 7, 8 }, { -61, -68 }, | ||
44 | { 9, 10 }, { -60, -69 }, { 11, 12 }, { -59, -70 }, | ||
45 | { 13, 14 }, { -58, -71 }, { 15, 16 }, { -57, -72 }, | ||
46 | { 17, 18 }, { -73, -56 }, { 19, 21 }, { -74, 20 }, | ||
47 | { -55, -75 }, { 22, 26 }, { 23, 24 }, { -54, -76 }, | ||
48 | { -77, 25 }, { -53, -78 }, { 27, 34 }, { 28, 29 }, | ||
49 | { -52, -79 }, { 30, 31 }, { -80, -51 }, { 32, 33 }, | ||
50 | { -83, -82 }, { -81, -50 }, { 35, 57 }, { 36, 40 }, | ||
51 | { 37, 38 }, { -88, -84 }, { -48, 39 }, { -90, -85 }, | ||
52 | { 41, 46 }, { 42, 43 }, { -49, -87 }, { 44, 45 }, | ||
53 | { -89, -86 }, {-124,-123 }, { 47, 50 }, { 48, 49 }, | ||
54 | {-122,-121 }, {-120,-119 }, { 51, 54 }, { 52, 53 }, | ||
55 | {-118,-117 }, {-116,-115 }, { 55, 56 }, {-114,-113 }, | ||
56 | {-112,-111 }, { 58, 89 }, { 59, 74 }, { 60, 67 }, | ||
57 | { 61, 64 }, { 62, 63 }, {-110,-109 }, {-108,-107 }, | ||
58 | { 65, 66 }, {-106,-105 }, {-104,-103 }, { 68, 71 }, | ||
59 | { 69, 70 }, {-102,-101 }, {-100, -99 }, { 72, 73 }, | ||
60 | { -98, -97 }, { -96, -95 }, { 75, 82 }, { 76, 79 }, | ||
61 | { 77, 78 }, { -94, -93 }, { -92, -91 }, { 80, 81 }, | ||
62 | { -47, -46 }, { -45, -44 }, { 83, 86 }, { 84, 85 }, | ||
63 | { -43, -42 }, { -41, -40 }, { 87, 88 }, { -39, -38 }, | ||
64 | { -37, -36 }, { 90, 105 }, { 91, 98 }, { 92, 95 }, | ||
65 | { 93, 94 }, { -35, -34 }, { -33, -32 }, { 96, 97 }, | ||
66 | { -31, -30 }, { -29, -28 }, { 99, 102 }, { 100, 101 }, | ||
67 | { -27, -26 }, { -25, -24 }, { 103, 104 }, { -23, -22 }, | ||
68 | { -21, -20 }, { 106, 113 }, { 107, 110 }, { 108, 109 }, | ||
69 | { -19, -18 }, { -17, -16 }, { 111, 112 }, { -15, -14 }, | ||
70 | { -13, -12 }, { 114, 117 }, { 115, 116 }, { -11, -10 }, | ||
71 | { -9, -8 }, { 118, 119 }, { -7, -6 }, { -5, -4 } | ||
72 | }; | ||
73 | |||
74 | static const int8_t f_huffman_env_1_5dB[120][2] = { | ||
75 | { 1, 2 }, { -64, -65 }, { 3, 4 }, { -63, -66 }, | ||
76 | { 5, 6 }, { -67, -62 }, { 7, 8 }, { -68, -61 }, | ||
77 | { 9, 10 }, { -69, -60 }, { 11, 13 }, { -70, 12 }, | ||
78 | { -59, -71 }, { 14, 16 }, { -58, 15 }, { -72, -57 }, | ||
79 | { 17, 19 }, { -73, 18 }, { -56, -74 }, { 20, 23 }, | ||
80 | { 21, 22 }, { -55, -75 }, { -54, -53 }, { 24, 27 }, | ||
81 | { 25, 26 }, { -76, -52 }, { -77, -51 }, { 28, 31 }, | ||
82 | { 29, 30 }, { -50, -78 }, { -79, -49 }, { 32, 36 }, | ||
83 | { 33, 34 }, { -48, -47 }, { -80, 35 }, { -81, -82 }, | ||
84 | { 37, 47 }, { 38, 41 }, { 39, 40 }, { -83, -46 }, | ||
85 | { -45, -84 }, { 42, 44 }, { -85, 43 }, { -44, -43 }, | ||
86 | { 45, 46 }, { -88, -87 }, { -86, -90 }, { 48, 66 }, | ||
87 | { 49, 56 }, { 50, 53 }, { 51, 52 }, { -92, -42 }, | ||
88 | { -41, -39 }, { 54, 55 }, {-105, -89 }, { -38, -37 }, | ||
89 | { 57, 60 }, { 58, 59 }, { -94, -91 }, { -40, -36 }, | ||
90 | { 61, 63 }, { -20, 62 }, {-115,-110 }, { 64, 65 }, | ||
91 | {-108,-107 }, {-101, -97 }, { 67, 89 }, { 68, 75 }, | ||
92 | { 69, 72 }, { 70, 71 }, { -95, -93 }, { -34, -27 }, | ||
93 | { 73, 74 }, { -22, -17 }, { -16,-124 }, { 76, 82 }, | ||
94 | { 77, 79 }, {-123, 78 }, {-122,-121 }, { 80, 81 }, | ||
95 | {-120,-119 }, {-118,-117 }, { 83, 86 }, { 84, 85 }, | ||
96 | {-116,-114 }, {-113,-112 }, { 87, 88 }, {-111,-109 }, | ||
97 | {-106,-104 }, { 90, 105 }, { 91, 98 }, { 92, 95 }, | ||
98 | { 93, 94 }, {-103,-102 }, {-100, -99 }, { 96, 97 }, | ||
99 | { -98, -96 }, { -35, -33 }, { 99, 102 }, { 100, 101 }, | ||
100 | { -32, -31 }, { -30, -29 }, { 103, 104 }, { -28, -26 }, | ||
101 | { -25, -24 }, { 106, 113 }, { 107, 110 }, { 108, 109 }, | ||
102 | { -23, -21 }, { -19, -18 }, { 111, 112 }, { -15, -14 }, | ||
103 | { -13, -12 }, { 114, 117 }, { 115, 116 }, { -11, -10 }, | ||
104 | { -9, -8 }, { 118, 119 }, { -7, -6 }, { -5, -4 } | ||
105 | }; | ||
106 | |||
107 | static const int8_t t_huffman_env_bal_1_5dB[48][2] = { | ||
108 | { -64, 1 }, { -63, 2 }, { -65, 3 }, { -62, 4 }, | ||
109 | { -66, 5 }, { -61, 6 }, { -67, 7 }, { -60, 8 }, | ||
110 | { -68, 9 }, { 10, 11 }, { -69, -59 }, { 12, 13 }, | ||
111 | { -70, -58 }, { 14, 28 }, { 15, 21 }, { 16, 18 }, | ||
112 | { -57, 17 }, { -71, -56 }, { 19, 20 }, { -88, -87 }, | ||
113 | { -86, -85 }, { 22, 25 }, { 23, 24 }, { -84, -83 }, | ||
114 | { -82, -81 }, { 26, 27 }, { -80, -79 }, { -78, -77 }, | ||
115 | { 29, 36 }, { 30, 33 }, { 31, 32 }, { -76, -75 }, | ||
116 | { -74, -73 }, { 34, 35 }, { -72, -55 }, { -54, -53 }, | ||
117 | { 37, 41 }, { 38, 39 }, { -52, -51 }, { -50, 40 }, | ||
118 | { -49, -48 }, { 42, 45 }, { 43, 44 }, { -47, -46 }, | ||
119 | { -45, -44 }, { 46, 47 }, { -43, -42 }, { -41, -40 } | ||
120 | }; | ||
121 | |||
122 | static const int8_t f_huffman_env_bal_1_5dB[48][2] = { | ||
123 | { -64, 1 }, { -65, 2 }, { -63, 3 }, { -66, 4 }, | ||
124 | { -62, 5 }, { -61, 6 }, { -67, 7 }, { -68, 8 }, | ||
125 | { -60, 9 }, { 10, 11 }, { -69, -59 }, { -70, 12 }, | ||
126 | { -58, 13 }, { 14, 17 }, { -71, 15 }, { -57, 16 }, | ||
127 | { -56, -73 }, { 18, 32 }, { 19, 25 }, { 20, 22 }, | ||
128 | { -72, 21 }, { -88, -87 }, { 23, 24 }, { -86, -85 }, | ||
129 | { -84, -83 }, { 26, 29 }, { 27, 28 }, { -82, -81 }, | ||
130 | { -80, -79 }, { 30, 31 }, { -78, -77 }, { -76, -75 }, | ||
131 | { 33, 40 }, { 34, 37 }, { 35, 36 }, { -74, -55 }, | ||
132 | { -54, -53 }, { 38, 39 }, { -52, -51 }, { -50, -49 }, | ||
133 | { 41, 44 }, { 42, 43 }, { -48, -47 }, { -46, -45 }, | ||
134 | { 45, 46 }, { -44, -43 }, { -42, 47 }, { -41, -40 } | ||
135 | }; | ||
136 | |||
137 | static const int8_t t_huffman_env_3_0dB[62][2] = { | ||
138 | { -64, 1 }, { -65, 2 }, { -63, 3 }, { -66, 4 }, | ||
139 | { -62, 5 }, { -67, 6 }, { -61, 7 }, { -68, 8 }, | ||
140 | { -60, 9 }, { 10, 11 }, { -69, -59 }, { 12, 14 }, | ||
141 | { -70, 13 }, { -71, -58 }, { 15, 18 }, { 16, 17 }, | ||
142 | { -72, -57 }, { -73, -74 }, { 19, 22 }, { -56, 20 }, | ||
143 | { -55, 21 }, { -54, -77 }, { 23, 31 }, { 24, 25 }, | ||
144 | { -75, -76 }, { 26, 27 }, { -78, -53 }, { 28, 29 }, | ||
145 | { -52, -95 }, { -94, 30 }, { -93, -92 }, { 32, 47 }, | ||
146 | { 33, 40 }, { 34, 37 }, { 35, 36 }, { -91, -90 }, | ||
147 | { -89, -88 }, { 38, 39 }, { -87, -86 }, { -85, -84 }, | ||
148 | { 41, 44 }, { 42, 43 }, { -83, -82 }, { -81, -80 }, | ||
149 | { 45, 46 }, { -79, -51 }, { -50, -49 }, { 48, 55 }, | ||
150 | { 49, 52 }, { 50, 51 }, { -48, -47 }, { -46, -45 }, | ||
151 | { 53, 54 }, { -44, -43 }, { -42, -41 }, { 56, 59 }, | ||
152 | { 57, 58 }, { -40, -39 }, { -38, -37 }, { 60, 61 }, | ||
153 | { -36, -35 }, { -34, -33 } | ||
154 | }; | ||
155 | |||
156 | static const int8_t f_huffman_env_3_0dB[62][2] = { | ||
157 | { -64, 1 }, { -65, 2 }, { -63, 3 }, { -66, 4 }, | ||
158 | { -62, 5 }, { -67, 6 }, { 7, 8 }, { -61, -68 }, | ||
159 | { 9, 10 }, { -60, -69 }, { 11, 12 }, { -59, -70 }, | ||
160 | { 13, 14 }, { -58, -71 }, { 15, 16 }, { -57, -72 }, | ||
161 | { 17, 19 }, { -56, 18 }, { -55, -73 }, { 20, 24 }, | ||
162 | { 21, 22 }, { -74, -54 }, { -53, 23 }, { -75, -76 }, | ||
163 | { 25, 30 }, { 26, 27 }, { -52, -51 }, { 28, 29 }, | ||
164 | { -77, -79 }, { -50, -49 }, { 31, 39 }, { 32, 35 }, | ||
165 | { 33, 34 }, { -78, -46 }, { -82, -88 }, { 36, 37 }, | ||
166 | { -83, -48 }, { -47, 38 }, { -86, -85 }, { 40, 47 }, | ||
167 | { 41, 44 }, { 42, 43 }, { -80, -44 }, { -43, -42 }, | ||
168 | { 45, 46 }, { -39, -87 }, { -84, -40 }, { 48, 55 }, | ||
169 | { 49, 52 }, { 50, 51 }, { -95, -94 }, { -93, -92 }, | ||
170 | { 53, 54 }, { -91, -90 }, { -89, -81 }, { 56, 59 }, | ||
171 | { 57, 58 }, { -45, -41 }, { -38, -37 }, { 60, 61 }, | ||
172 | { -36, -35 }, { -34, -33 } | ||
173 | }; | ||
174 | |||
175 | static const int8_t t_huffman_env_bal_3_0dB[24][2] = { | ||
176 | { -64, 1 }, { -63, 2 }, { -65, 3 }, { -66, 4 }, | ||
177 | { -62, 5 }, { -61, 6 }, { -67, 7 }, { -68, 8 }, | ||
178 | { -60, 9 }, { 10, 16 }, { 11, 13 }, { -69, 12 }, | ||
179 | { -76, -75 }, { 14, 15 }, { -74, -73 }, { -72, -71 }, | ||
180 | { 17, 20 }, { 18, 19 }, { -70, -59 }, { -58, -57 }, | ||
181 | { 21, 22 }, { -56, -55 }, { -54, 23 }, { -53, -52 } | ||
182 | }; | ||
183 | |||
184 | static const int8_t f_huffman_env_bal_3_0dB[24][2] = { | ||
185 | { -64, 1 }, { -65, 2 }, { -63, 3 }, { -66, 4 }, | ||
186 | { -62, 5 }, { -61, 6 }, { -67, 7 }, { -68, 8 }, | ||
187 | { -60, 9 }, { 10, 13 }, { -69, 11 }, { -59, 12 }, | ||
188 | { -58, -76 }, { 14, 17 }, { 15, 16 }, { -75, -74 }, | ||
189 | { -73, -72 }, { 18, 21 }, { 19, 20 }, { -71, -70 }, | ||
190 | { -57, -56 }, { 22, 23 }, { -55, -54 }, { -53, -52 } | ||
191 | }; | ||
192 | |||
193 | static const int8_t t_huffman_noise_3_0dB[62][2] = { | ||
194 | { -64, 1 }, { -63, 2 }, { -65, 3 }, { -66, 4 }, | ||
195 | { -62, 5 }, { -67, 6 }, { 7, 8 }, { -61, -68 }, | ||
196 | { 9, 30 }, { 10, 15 }, { -60, 11 }, { -69, 12 }, | ||
197 | { 13, 14 }, { -59, -53 }, { -95, -94 }, { 16, 23 }, | ||
198 | { 17, 20 }, { 18, 19 }, { -93, -92 }, { -91, -90 }, | ||
199 | { 21, 22 }, { -89, -88 }, { -87, -86 }, { 24, 27 }, | ||
200 | { 25, 26 }, { -85, -84 }, { -83, -82 }, { 28, 29 }, | ||
201 | { -81, -80 }, { -79, -78 }, { 31, 46 }, { 32, 39 }, | ||
202 | { 33, 36 }, { 34, 35 }, { -77, -76 }, { -75, -74 }, | ||
203 | { 37, 38 }, { -73, -72 }, { -71, -70 }, { 40, 43 }, | ||
204 | { 41, 42 }, { -58, -57 }, { -56, -55 }, { 44, 45 }, | ||
205 | { -54, -52 }, { -51, -50 }, { 47, 54 }, { 48, 51 }, | ||
206 | { 49, 50 }, { -49, -48 }, { -47, -46 }, { 52, 53 }, | ||
207 | { -45, -44 }, { -43, -42 }, { 55, 58 }, { 56, 57 }, | ||
208 | { -41, -40 }, { -39, -38 }, { 59, 60 }, { -37, -36 }, | ||
209 | { -35, 61 }, { -34, -33 } | ||
210 | }; | ||
211 | |||
212 | static const int8_t t_huffman_noise_bal_3_0dB[24][2] = { | ||
213 | { -64, 1 }, { -65, 2 }, { -63, 3 }, { 4, 9 }, | ||
214 | { -66, 5 }, { -62, 6 }, { 7, 8 }, { -76, -75 }, | ||
215 | { -74, -73 }, { 10, 17 }, { 11, 14 }, { 12, 13 }, | ||
216 | { -72, -71 }, { -70, -69 }, { 15, 16 }, { -68, -67 }, | ||
217 | { -61, -60 }, { 18, 21 }, { 19, 20 }, { -59, -58 }, | ||
218 | { -57, -56 }, { 22, 23 }, { -55, -54 }, { -53, -52 } | ||
219 | }; | ||
220 | |||
221 | |||
222 | static INLINE int16_t sbr_huff_dec(bitfile *ld, sbr_huff_tab t_huff) | ||
223 | { | ||
224 | uint8_t bit; | ||
225 | int16_t index = 0; | ||
226 | |||
227 | while (index >= 0) | ||
228 | { | ||
229 | bit = (uint8_t)faad_get1bit(ld); | ||
230 | index = t_huff[index][bit]; | ||
231 | } | ||
232 | |||
233 | return index + 64; | ||
234 | } | ||
235 | |||
236 | /* table 10 */ | ||
237 | void sbr_envelope(bitfile *ld, sbr_info *sbr, uint8_t ch) | ||
238 | { | ||
239 | uint8_t env, band; | ||
240 | int8_t delta = 0; | ||
241 | sbr_huff_tab t_huff, f_huff; | ||
242 | |||
243 | if ((sbr->L_E[ch] == 1) && (sbr->bs_frame_class[ch] == FIXFIX)) | ||
244 | sbr->amp_res[ch] = 0; | ||
245 | else | ||
246 | sbr->amp_res[ch] = sbr->bs_amp_res; | ||
247 | |||
248 | if ((sbr->bs_coupling) && (ch == 1)) | ||
249 | { | ||
250 | delta = 1; | ||
251 | if (sbr->amp_res[ch]) | ||
252 | { | ||
253 | t_huff = t_huffman_env_bal_3_0dB; | ||
254 | f_huff = f_huffman_env_bal_3_0dB; | ||
255 | } else { | ||
256 | t_huff = t_huffman_env_bal_1_5dB; | ||
257 | f_huff = f_huffman_env_bal_1_5dB; | ||
258 | } | ||
259 | } else { | ||
260 | delta = 0; | ||
261 | if (sbr->amp_res[ch]) | ||
262 | { | ||
263 | t_huff = t_huffman_env_3_0dB; | ||
264 | f_huff = f_huffman_env_3_0dB; | ||
265 | } else { | ||
266 | t_huff = t_huffman_env_1_5dB; | ||
267 | f_huff = f_huffman_env_1_5dB; | ||
268 | } | ||
269 | } | ||
270 | |||
271 | for (env = 0; env < sbr->L_E[ch]; env++) | ||
272 | { | ||
273 | if (sbr->bs_df_env[ch][env] == 0) | ||
274 | { | ||
275 | if ((sbr->bs_coupling == 1) && (ch == 1)) | ||
276 | { | ||
277 | if (sbr->amp_res[ch]) | ||
278 | { | ||
279 | sbr->E[ch][0][env] = (uint16_t)(faad_getbits(ld, 5 | ||
280 | DEBUGVAR(1,272,"sbr_envelope(): bs_data_env")) << delta); | ||
281 | } else { | ||
282 | sbr->E[ch][0][env] = (uint16_t)(faad_getbits(ld, 6 | ||
283 | DEBUGVAR(1,273,"sbr_envelope(): bs_data_env")) << delta); | ||
284 | } | ||
285 | } else { | ||
286 | if (sbr->amp_res[ch]) | ||
287 | { | ||
288 | sbr->E[ch][0][env] = (uint16_t)(faad_getbits(ld, 6 | ||
289 | DEBUGVAR(1,274,"sbr_envelope(): bs_data_env")) << delta); | ||
290 | } else { | ||
291 | sbr->E[ch][0][env] = (uint16_t)(faad_getbits(ld, 7 | ||
292 | DEBUGVAR(1,275,"sbr_envelope(): bs_data_env")) << delta); | ||
293 | } | ||
294 | } | ||
295 | |||
296 | for (band = 1; band < sbr->n[sbr->f[ch][env]]; band++) | ||
297 | { | ||
298 | sbr->E[ch][band][env] = (sbr_huff_dec(ld, f_huff) << delta); | ||
299 | } | ||
300 | |||
301 | } else { | ||
302 | for (band = 0; band < sbr->n[sbr->f[ch][env]]; band++) | ||
303 | { | ||
304 | sbr->E[ch][band][env] = (sbr_huff_dec(ld, t_huff) << delta); | ||
305 | } | ||
306 | } | ||
307 | } | ||
308 | |||
309 | extract_envelope_data(sbr, ch); | ||
310 | } | ||
311 | |||
312 | /* table 11 */ | ||
313 | void sbr_noise(bitfile *ld, sbr_info *sbr, uint8_t ch) | ||
314 | { | ||
315 | uint8_t noise, band; | ||
316 | int8_t delta = 0; | ||
317 | sbr_huff_tab t_huff, f_huff; | ||
318 | |||
319 | if ((sbr->bs_coupling == 1) && (ch == 1)) | ||
320 | { | ||
321 | delta = 1; | ||
322 | t_huff = t_huffman_noise_bal_3_0dB; | ||
323 | f_huff = f_huffman_env_bal_3_0dB; | ||
324 | } else { | ||
325 | delta = 0; | ||
326 | t_huff = t_huffman_noise_3_0dB; | ||
327 | f_huff = f_huffman_env_3_0dB; | ||
328 | } | ||
329 | |||
330 | for (noise = 0; noise < sbr->L_Q[ch]; noise++) | ||
331 | { | ||
332 | if(sbr->bs_df_noise[ch][noise] == 0) | ||
333 | { | ||
334 | if ((sbr->bs_coupling == 1) && (ch == 1)) | ||
335 | { | ||
336 | sbr->Q[ch][0][noise] = (faad_getbits(ld, 5 | ||
337 | DEBUGVAR(1,276,"sbr_noise(): bs_data_noise")) << delta); | ||
338 | } else { | ||
339 | sbr->Q[ch][0][noise] = (faad_getbits(ld, 5 | ||
340 | DEBUGVAR(1,277,"sbr_noise(): bs_data_noise")) << delta); | ||
341 | } | ||
342 | for (band = 1; band < sbr->N_Q; band++) | ||
343 | { | ||
344 | sbr->Q[ch][band][noise] = (sbr_huff_dec(ld, f_huff) << delta); | ||
345 | } | ||
346 | } else { | ||
347 | for (band = 0; band < sbr->N_Q; band++) | ||
348 | { | ||
349 | sbr->Q[ch][band][noise] = (sbr_huff_dec(ld, t_huff) << delta); | ||
350 | } | ||
351 | } | ||
352 | } | ||
353 | |||
354 | extract_noise_floor_data(sbr, ch); | ||
355 | } | ||
356 | |||
357 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/sbr_huff.h b/lib/rbcodec/codecs/libfaad/sbr_huff.h new file mode 100644 index 0000000000..d81c5dc528 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/sbr_huff.h | |||
@@ -0,0 +1,43 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __SBR_HUFF_H__ | ||
29 | #define __SBR_HUFF_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | |||
36 | void sbr_envelope(bitfile *ld, sbr_info *sbr, uint8_t ch); | ||
37 | void sbr_noise(bitfile *ld, sbr_info *sbr, uint8_t ch); | ||
38 | |||
39 | #ifdef __cplusplus | ||
40 | } | ||
41 | #endif | ||
42 | #endif | ||
43 | |||
diff --git a/lib/rbcodec/codecs/libfaad/sbr_noise.h b/lib/rbcodec/codecs/libfaad/sbr_noise.h new file mode 100644 index 0000000000..48f0ea9d18 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/sbr_noise.h | |||
@@ -0,0 +1,561 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __SBR_NOISE_H__ | ||
29 | #define __SBR_NOISE_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | #ifdef _MSC_VER | ||
36 | #pragma warning(disable:4305) | ||
37 | #pragma warning(disable:4244) | ||
38 | #endif | ||
39 | |||
40 | |||
41 | /* Table 1.A.13 Noise table V */ | ||
42 | static const complex_t V[] MEM_ALIGN_ATTR = { | ||
43 | { FRAC_CONST(-0.99948155879974), FRAC_CONST(-0.59483414888382) }, | ||
44 | { FRAC_CONST(0.97113454341888), FRAC_CONST(-0.67528516054153) }, | ||
45 | { FRAC_CONST(0.14130051434040), FRAC_CONST(-0.95090985298157) }, | ||
46 | { FRAC_CONST(-0.47005495429039), FRAC_CONST(-0.37340548634529) }, | ||
47 | { FRAC_CONST(0.80705064535141), FRAC_CONST(0.29653668403625) }, | ||
48 | { FRAC_CONST(-0.38981479406357), FRAC_CONST(0.89572608470917) }, | ||
49 | { FRAC_CONST(-0.01053049881011), FRAC_CONST(-0.66959059238434) }, | ||
50 | { FRAC_CONST(-0.91266369819641), FRAC_CONST(-0.11522938311100) }, | ||
51 | { FRAC_CONST(0.54840421676636), FRAC_CONST(0.75221365690231) }, | ||
52 | { FRAC_CONST(0.40009254217148), FRAC_CONST(-0.98929399251938) }, | ||
53 | { FRAC_CONST(-0.99867975711823), FRAC_CONST(-0.88147068023682) }, | ||
54 | { FRAC_CONST(-0.95531076192856), FRAC_CONST(0.90908759832382) }, | ||
55 | { FRAC_CONST(-0.45725932717323), FRAC_CONST(-0.56716322898865) }, | ||
56 | { FRAC_CONST(-0.72929674386978), FRAC_CONST(-0.98008275032043) }, | ||
57 | { FRAC_CONST(0.75622802972794), FRAC_CONST(0.20950329303741) }, | ||
58 | { FRAC_CONST(0.07069442421198), FRAC_CONST(-0.78247898817062) }, | ||
59 | { FRAC_CONST(0.74496251344681), FRAC_CONST(-0.91169005632401) }, | ||
60 | { FRAC_CONST(-0.96440184116364), FRAC_CONST(-0.94739919900894) }, | ||
61 | { FRAC_CONST(0.30424630641937), FRAC_CONST(-0.49438267946243) }, | ||
62 | { FRAC_CONST(0.66565030813217), FRAC_CONST(0.64652937650681) }, | ||
63 | { FRAC_CONST(0.91697007417679), FRAC_CONST(0.17514097690582) }, | ||
64 | { FRAC_CONST(-0.70774918794632), FRAC_CONST(0.52548652887344) }, | ||
65 | { FRAC_CONST(-0.70051413774490), FRAC_CONST(-0.45340028405190) }, | ||
66 | { FRAC_CONST(-0.99496513605118), FRAC_CONST(-0.90071910619736) }, | ||
67 | { FRAC_CONST(0.98164492845535), FRAC_CONST(-0.77463155984879) }, | ||
68 | { FRAC_CONST(-0.54671579599380), FRAC_CONST(-0.02570928446949) }, | ||
69 | { FRAC_CONST(-0.01689629070461), FRAC_CONST(0.00287506449968) }, | ||
70 | { FRAC_CONST(-0.86110347509384), FRAC_CONST(0.42548584938049) }, | ||
71 | { FRAC_CONST(-0.98892980813980), FRAC_CONST(-0.87881129980087) }, | ||
72 | { FRAC_CONST(0.51756626367569), FRAC_CONST(0.66926783323288) }, | ||
73 | { FRAC_CONST(-0.99635028839111), FRAC_CONST(-0.58107727766037) }, | ||
74 | { FRAC_CONST(-0.99969369173050), FRAC_CONST(0.98369991779327) }, | ||
75 | { FRAC_CONST(0.55266261100769), FRAC_CONST(0.59449058771133) }, | ||
76 | { FRAC_CONST(0.34581178426743), FRAC_CONST(0.94879418611526) }, | ||
77 | { FRAC_CONST(0.62664210796356), FRAC_CONST(-0.74402970075607) }, | ||
78 | { FRAC_CONST(-0.77149701118469), FRAC_CONST(-0.33883658051491) }, | ||
79 | { FRAC_CONST(-0.91592246294022), FRAC_CONST(0.03687901422381) }, | ||
80 | { FRAC_CONST(-0.76285493373871), FRAC_CONST(-0.91371870040894) }, | ||
81 | { FRAC_CONST(0.79788339138031), FRAC_CONST(-0.93180972337723) }, | ||
82 | { FRAC_CONST(0.54473078250885), FRAC_CONST(-0.11919206380844) }, | ||
83 | { FRAC_CONST(-0.85639280080795), FRAC_CONST(0.42429855465889) }, | ||
84 | { FRAC_CONST(-0.92882400751114), FRAC_CONST(0.27871808409691) }, | ||
85 | { FRAC_CONST(-0.11708371341228), FRAC_CONST(-0.99800843000412) }, | ||
86 | { FRAC_CONST(0.21356749534607), FRAC_CONST(-0.90716296434402) }, | ||
87 | { FRAC_CONST(-0.76191693544388), FRAC_CONST(0.99768120050430) }, | ||
88 | { FRAC_CONST(0.98111045360565), FRAC_CONST(-0.95854461193085) }, | ||
89 | { FRAC_CONST(-0.85913270711899), FRAC_CONST(0.95766568183899) }, | ||
90 | { FRAC_CONST(-0.93307244777679), FRAC_CONST(0.49431759119034) }, | ||
91 | { FRAC_CONST(0.30485755205154), FRAC_CONST(-0.70540034770966) }, | ||
92 | { FRAC_CONST(0.85289651155472), FRAC_CONST(0.46766132116318) }, | ||
93 | { FRAC_CONST(0.91328084468842), FRAC_CONST(-0.99839597940445) }, | ||
94 | { FRAC_CONST(-0.05890199914575), FRAC_CONST(0.70741826295853) }, | ||
95 | { FRAC_CONST(0.28398686647415), FRAC_CONST(0.34633556008339) }, | ||
96 | { FRAC_CONST(0.95258164405823), FRAC_CONST(-0.54893416166306) }, | ||
97 | { FRAC_CONST(-0.78566324710846), FRAC_CONST(-0.75568538904190) }, | ||
98 | { FRAC_CONST(-0.95789498090744), FRAC_CONST(-0.20423194766045) }, | ||
99 | { FRAC_CONST(0.82411158084869), FRAC_CONST(0.96654617786407) }, | ||
100 | { FRAC_CONST(-0.65185445547104), FRAC_CONST(-0.88734990358353) }, | ||
101 | { FRAC_CONST(-0.93643605709076), FRAC_CONST(0.99870789051056) }, | ||
102 | { FRAC_CONST(0.91427159309387), FRAC_CONST(-0.98290503025055) }, | ||
103 | { FRAC_CONST(-0.70395684242249), FRAC_CONST(0.58796799182892) }, | ||
104 | { FRAC_CONST(0.00563771976158), FRAC_CONST(0.61768198013306) }, | ||
105 | { FRAC_CONST(0.89065051078796), FRAC_CONST(0.52783352136612) }, | ||
106 | { FRAC_CONST(-0.68683707714081), FRAC_CONST(0.80806946754456) }, | ||
107 | { FRAC_CONST(0.72165340185165), FRAC_CONST(-0.69259858131409) }, | ||
108 | { FRAC_CONST(-0.62928247451782), FRAC_CONST(0.13627037405968) }, | ||
109 | { FRAC_CONST(0.29938435554504), FRAC_CONST(-0.46051329374313) }, | ||
110 | { FRAC_CONST(-0.91781955957413), FRAC_CONST(-0.74012714624405) }, | ||
111 | { FRAC_CONST(0.99298715591431), FRAC_CONST(0.40816611051559) }, | ||
112 | { FRAC_CONST(0.82368296384811), FRAC_CONST(-0.74036049842834) }, | ||
113 | { FRAC_CONST(-0.98512834310532), FRAC_CONST(-0.99972331523895) }, | ||
114 | { FRAC_CONST(-0.95915371179581), FRAC_CONST(-0.99237799644470) }, | ||
115 | { FRAC_CONST(-0.21411126852036), FRAC_CONST(-0.93424820899963) }, | ||
116 | { FRAC_CONST(-0.68821477890015), FRAC_CONST(-0.26892307400703) }, | ||
117 | { FRAC_CONST(0.91851997375488), FRAC_CONST(0.09358228743076) }, | ||
118 | { FRAC_CONST(-0.96062767505646), FRAC_CONST(0.36099094152451) }, | ||
119 | { FRAC_CONST(0.51646184921265), FRAC_CONST(-0.71373331546783) }, | ||
120 | { FRAC_CONST(0.61130720376968), FRAC_CONST(0.46950140595436) }, | ||
121 | { FRAC_CONST(0.47336128354073), FRAC_CONST(-0.27333179116249) }, | ||
122 | { FRAC_CONST(0.90998309850693), FRAC_CONST(0.96715664863586) }, | ||
123 | { FRAC_CONST(0.44844800233841), FRAC_CONST(0.99211573600769) }, | ||
124 | { FRAC_CONST(0.66614890098572), FRAC_CONST(0.96590173244476) }, | ||
125 | { FRAC_CONST(0.74922239780426), FRAC_CONST(-0.89879858493805) }, | ||
126 | { FRAC_CONST(-0.99571585655212), FRAC_CONST(0.52785521745682) }, | ||
127 | { FRAC_CONST(0.97401082515717), FRAC_CONST(-0.16855870187283) }, | ||
128 | { FRAC_CONST(0.72683745622635), FRAC_CONST(-0.48060774803162) }, | ||
129 | { FRAC_CONST(0.95432192087173), FRAC_CONST(0.68849605321884) }, | ||
130 | { FRAC_CONST(-0.72962206602097), FRAC_CONST(-0.76608443260193) }, | ||
131 | { FRAC_CONST(-0.85359477996826), FRAC_CONST(0.88738125562668) }, | ||
132 | { FRAC_CONST(-0.81412428617477), FRAC_CONST(-0.97480767965317) }, | ||
133 | { FRAC_CONST(-0.87930774688721), FRAC_CONST(0.74748307466507) }, | ||
134 | { FRAC_CONST(-0.71573328971863), FRAC_CONST(-0.98570609092712) }, | ||
135 | { FRAC_CONST(0.83524298667908), FRAC_CONST(0.83702534437180) }, | ||
136 | { FRAC_CONST(-0.48086065053940), FRAC_CONST(-0.98848503828049) }, | ||
137 | { FRAC_CONST(0.97139126062393), FRAC_CONST(0.80093622207642) }, | ||
138 | { FRAC_CONST(0.51992827653885), FRAC_CONST(0.80247628688812) }, | ||
139 | { FRAC_CONST(-0.00848591234535), FRAC_CONST(-0.76670128107071) }, | ||
140 | { FRAC_CONST(-0.70294374227524), FRAC_CONST(0.55359911918640) }, | ||
141 | { FRAC_CONST(-0.95894426107407), FRAC_CONST(-0.43265503644943) }, | ||
142 | { FRAC_CONST(0.97079253196716), FRAC_CONST(0.09325857460499) }, | ||
143 | { FRAC_CONST(-0.92404294013977), FRAC_CONST(0.85507702827454) }, | ||
144 | { FRAC_CONST(-0.69506472349167), FRAC_CONST(0.98633414506912) }, | ||
145 | { FRAC_CONST(0.26559203863144), FRAC_CONST(0.73314309120178) }, | ||
146 | { FRAC_CONST(0.28038442134857), FRAC_CONST(0.14537914097309) }, | ||
147 | { FRAC_CONST(-0.74138122797012), FRAC_CONST(0.99310338497162) }, | ||
148 | { FRAC_CONST(-0.01752796024084), FRAC_CONST(-0.82616633176804) }, | ||
149 | { FRAC_CONST(-0.55126774311066), FRAC_CONST(-0.98898541927338) }, | ||
150 | { FRAC_CONST(0.97960901260376), FRAC_CONST(-0.94021445512772) }, | ||
151 | { FRAC_CONST(-0.99196308851242), FRAC_CONST(0.67019015550613) }, | ||
152 | { FRAC_CONST(-0.67684930562973), FRAC_CONST(0.12631492316723) }, | ||
153 | { FRAC_CONST(0.09140039235353), FRAC_CONST(-0.20537731051445) }, | ||
154 | { FRAC_CONST(-0.71658962965012), FRAC_CONST(-0.97788202762604) }, | ||
155 | { FRAC_CONST(0.81014639139175), FRAC_CONST(0.53722649812698) }, | ||
156 | { FRAC_CONST(0.40616992115974), FRAC_CONST(-0.26469007134438) }, | ||
157 | { FRAC_CONST(-0.67680186033249), FRAC_CONST(0.94502049684525) }, | ||
158 | { FRAC_CONST(0.86849772930145), FRAC_CONST(-0.18333598971367) }, | ||
159 | { FRAC_CONST(-0.99500381946564), FRAC_CONST(-0.02634122036397) }, | ||
160 | { FRAC_CONST(0.84329187870026), FRAC_CONST(0.10406957566738) }, | ||
161 | { FRAC_CONST(-0.09215968847275), FRAC_CONST(0.69540011882782) }, | ||
162 | { FRAC_CONST(0.99956172704697), FRAC_CONST(-0.12358541786671) }, | ||
163 | { FRAC_CONST(-0.79732781648636), FRAC_CONST(-0.91582524776459) }, | ||
164 | { FRAC_CONST(0.96349972486496), FRAC_CONST(0.96640455722809) }, | ||
165 | { FRAC_CONST(-0.79942780733109), FRAC_CONST(0.64323902130127) }, | ||
166 | { FRAC_CONST(-0.11566039919853), FRAC_CONST(0.28587844967842) }, | ||
167 | { FRAC_CONST(-0.39922955632210), FRAC_CONST(0.94129604101181) }, | ||
168 | { FRAC_CONST(0.99089199304581), FRAC_CONST(-0.92062628269196) }, | ||
169 | { FRAC_CONST(0.28631284832954), FRAC_CONST(-0.91035044193268) }, | ||
170 | { FRAC_CONST(-0.83302724361420), FRAC_CONST(-0.67330408096313) }, | ||
171 | { FRAC_CONST(0.95404446125031), FRAC_CONST(0.49162766337395) }, | ||
172 | { FRAC_CONST(-0.06449863314629), FRAC_CONST(0.03250560909510) }, | ||
173 | { FRAC_CONST(-0.99575054645538), FRAC_CONST(0.42389783263206) }, | ||
174 | { FRAC_CONST(-0.65501141548157), FRAC_CONST(0.82546114921570) }, | ||
175 | { FRAC_CONST(-0.81254440546036), FRAC_CONST(-0.51627236604691) }, | ||
176 | { FRAC_CONST(-0.99646371603012), FRAC_CONST(0.84490531682968) }, | ||
177 | { FRAC_CONST(0.00287840608507), FRAC_CONST(0.64768260717392) }, | ||
178 | { FRAC_CONST(0.70176988840103), FRAC_CONST(-0.20453028380871) }, | ||
179 | { FRAC_CONST(0.96361881494522), FRAC_CONST(0.40706968307495) }, | ||
180 | { FRAC_CONST(-0.68883758783340), FRAC_CONST(0.91338956356049) }, | ||
181 | { FRAC_CONST(-0.34875586628914), FRAC_CONST(0.71472293138504) }, | ||
182 | { FRAC_CONST(0.91980081796646), FRAC_CONST(0.66507452726364) }, | ||
183 | { FRAC_CONST(-0.99009048938751), FRAC_CONST(0.85868018865585) }, | ||
184 | { FRAC_CONST(0.68865793943405), FRAC_CONST(0.55660319328308) }, | ||
185 | { FRAC_CONST(-0.99484401941299), FRAC_CONST(-0.20052559673786) }, | ||
186 | { FRAC_CONST(0.94214510917664), FRAC_CONST(-0.99696427583694) }, | ||
187 | { FRAC_CONST(-0.67414629459381), FRAC_CONST(0.49548220634460) }, | ||
188 | { FRAC_CONST(-0.47339352965355), FRAC_CONST(-0.85904330015182) }, | ||
189 | { FRAC_CONST(0.14323651790619), FRAC_CONST(-0.94145596027374) }, | ||
190 | { FRAC_CONST(-0.29268294572830), FRAC_CONST(0.05759225040674) }, | ||
191 | { FRAC_CONST(0.43793860077858), FRAC_CONST(-0.78904968500137) }, | ||
192 | { FRAC_CONST(-0.36345127224922), FRAC_CONST(0.64874434471130) }, | ||
193 | { FRAC_CONST(-0.08750604838133), FRAC_CONST(0.97686946392059) }, | ||
194 | { FRAC_CONST(-0.96495270729065), FRAC_CONST(-0.53960305452347) }, | ||
195 | { FRAC_CONST(0.55526942014694), FRAC_CONST(0.78891521692276) }, | ||
196 | { FRAC_CONST(0.73538213968277), FRAC_CONST(0.96452075242996) }, | ||
197 | { FRAC_CONST(-0.30889773368835), FRAC_CONST(-0.80664390325546) }, | ||
198 | { FRAC_CONST(0.03574995696545), FRAC_CONST(-0.97325617074966) }, | ||
199 | { FRAC_CONST(0.98720687627792), FRAC_CONST(0.48409134149551) }, | ||
200 | { FRAC_CONST(-0.81689298152924), FRAC_CONST(-0.90827703475952) }, | ||
201 | { FRAC_CONST(0.67866861820221), FRAC_CONST(0.81284505128860) }, | ||
202 | { FRAC_CONST(-0.15808570384979), FRAC_CONST(0.85279554128647) }, | ||
203 | { FRAC_CONST(0.80723392963409), FRAC_CONST(-0.24717418849468) }, | ||
204 | { FRAC_CONST(0.47788757085800), FRAC_CONST(-0.46333149075508) }, | ||
205 | { FRAC_CONST(0.96367555856705), FRAC_CONST(0.38486748933792) }, | ||
206 | { FRAC_CONST(-0.99143874645233), FRAC_CONST(-0.24945276975632) }, | ||
207 | { FRAC_CONST(0.83081877231598), FRAC_CONST(-0.94780850410461) }, | ||
208 | { FRAC_CONST(-0.58753192424774), FRAC_CONST(0.01290772389621) }, | ||
209 | { FRAC_CONST(0.95538109540939), FRAC_CONST(-0.85557049512863) }, | ||
210 | { FRAC_CONST(-0.96490919589996), FRAC_CONST(-0.64020973443985) }, | ||
211 | { FRAC_CONST(-0.97327101230621), FRAC_CONST(0.12378127872944) }, | ||
212 | { FRAC_CONST(0.91400367021561), FRAC_CONST(0.57972472906113) }, | ||
213 | { FRAC_CONST(-0.99925839900970), FRAC_CONST(0.71084845066071) }, | ||
214 | { FRAC_CONST(-0.86875903606415), FRAC_CONST(-0.20291699469090) }, | ||
215 | { FRAC_CONST(-0.26240035891533), FRAC_CONST(-0.68264555931091) }, | ||
216 | { FRAC_CONST(-0.24664412438869), FRAC_CONST(-0.87642270326614) }, | ||
217 | { FRAC_CONST(0.02416275814176), FRAC_CONST(0.27192914485931) }, | ||
218 | { FRAC_CONST(0.82068622112274), FRAC_CONST(-0.85087788105011) }, | ||
219 | { FRAC_CONST(0.88547372817993), FRAC_CONST(-0.89636802673340) }, | ||
220 | { FRAC_CONST(-0.18173077702522), FRAC_CONST(-0.26152145862579) }, | ||
221 | { FRAC_CONST(0.09355476498604), FRAC_CONST(0.54845124483109) }, | ||
222 | { FRAC_CONST(-0.54668414592743), FRAC_CONST(0.95980775356293) }, | ||
223 | { FRAC_CONST(0.37050989270210), FRAC_CONST(-0.59910142421722) }, | ||
224 | { FRAC_CONST(-0.70373594760895), FRAC_CONST(0.91227668523788) }, | ||
225 | { FRAC_CONST(-0.34600785374641), FRAC_CONST(-0.99441426992416) }, | ||
226 | { FRAC_CONST(-0.68774479627609), FRAC_CONST(-0.30238837003708) }, | ||
227 | { FRAC_CONST(-0.26843291521072), FRAC_CONST(0.83115667104721) }, | ||
228 | { FRAC_CONST(0.49072334170341), FRAC_CONST(-0.45359709858894) }, | ||
229 | { FRAC_CONST(0.38975992798805), FRAC_CONST(0.95515358448029) }, | ||
230 | { FRAC_CONST(-0.97757124900818), FRAC_CONST(0.05305894464254) }, | ||
231 | { FRAC_CONST(-0.17325553297997), FRAC_CONST(-0.92770671844482) }, | ||
232 | { FRAC_CONST(0.99948036670685), FRAC_CONST(0.58285546302795) }, | ||
233 | { FRAC_CONST(-0.64946246147156), FRAC_CONST(0.68645507097244) }, | ||
234 | { FRAC_CONST(-0.12016920745373), FRAC_CONST(-0.57147324085236) }, | ||
235 | { FRAC_CONST(-0.58947455883026), FRAC_CONST(-0.34847131371498) }, | ||
236 | { FRAC_CONST(-0.41815140843391), FRAC_CONST(0.16276422142982) }, | ||
237 | { FRAC_CONST(0.99885648488998), FRAC_CONST(0.11136095225811) }, | ||
238 | { FRAC_CONST(-0.56649613380432), FRAC_CONST(-0.90494865179062) }, | ||
239 | { FRAC_CONST(0.94138020277023), FRAC_CONST(0.35281917452812) }, | ||
240 | { FRAC_CONST(-0.75725078582764), FRAC_CONST(0.53650552034378) }, | ||
241 | { FRAC_CONST(0.20541973412037), FRAC_CONST(-0.94435143470764) }, | ||
242 | { FRAC_CONST(0.99980372190475), FRAC_CONST(0.79835915565491) }, | ||
243 | { FRAC_CONST(0.29078277945518), FRAC_CONST(0.35393777489662) }, | ||
244 | { FRAC_CONST(-0.62858772277832), FRAC_CONST(0.38765692710876) }, | ||
245 | { FRAC_CONST(0.43440905213356), FRAC_CONST(-0.98546332120895) }, | ||
246 | { FRAC_CONST(-0.98298585414886), FRAC_CONST(0.21021524071693) }, | ||
247 | { FRAC_CONST(0.19513028860092), FRAC_CONST(-0.94239830970764) }, | ||
248 | { FRAC_CONST(-0.95476663112640), FRAC_CONST(0.98364555835724) }, | ||
249 | { FRAC_CONST(0.93379634618759), FRAC_CONST(-0.70881992578506) }, | ||
250 | { FRAC_CONST(-0.85235410928726), FRAC_CONST(-0.08342348039150) }, | ||
251 | { FRAC_CONST(-0.86425095796585), FRAC_CONST(-0.45795026421547) }, | ||
252 | { FRAC_CONST(0.38879778981209), FRAC_CONST(0.97274428606033) }, | ||
253 | { FRAC_CONST(0.92045122385025), FRAC_CONST(-0.62433654069901) }, | ||
254 | { FRAC_CONST(0.89162534475327), FRAC_CONST(0.54950958490372) }, | ||
255 | { FRAC_CONST(-0.36834338307381), FRAC_CONST(0.96458297967911) }, | ||
256 | { FRAC_CONST(0.93891763687134), FRAC_CONST(-0.89968353509903) }, | ||
257 | { FRAC_CONST(0.99267655611038), FRAC_CONST(-0.03757034242153) }, | ||
258 | { FRAC_CONST(-0.94063472747803), FRAC_CONST(0.41332337260246) }, | ||
259 | { FRAC_CONST(0.99740225076675), FRAC_CONST(-0.16830494999886) }, | ||
260 | { FRAC_CONST(-0.35899412631989), FRAC_CONST(-0.46633225679398) }, | ||
261 | { FRAC_CONST(0.05237237364054), FRAC_CONST(-0.25640362501144) }, | ||
262 | { FRAC_CONST(0.36703583598137), FRAC_CONST(-0.38653266429901) }, | ||
263 | { FRAC_CONST(0.91653180122375), FRAC_CONST(-0.30587628483772) }, | ||
264 | { FRAC_CONST(0.69000804424286), FRAC_CONST(0.90952169895172) }, | ||
265 | { FRAC_CONST(-0.38658750057220), FRAC_CONST(0.99501574039459) }, | ||
266 | { FRAC_CONST(-0.29250815510750), FRAC_CONST(0.37444993853569) }, | ||
267 | { FRAC_CONST(-0.60182201862335), FRAC_CONST(0.86779648065567) }, | ||
268 | { FRAC_CONST(-0.97418588399887), FRAC_CONST(0.96468526124954) }, | ||
269 | { FRAC_CONST(0.88461571931839), FRAC_CONST(0.57508403062820) }, | ||
270 | { FRAC_CONST(0.05198933184147), FRAC_CONST(0.21269661188126) }, | ||
271 | { FRAC_CONST(-0.53499621152878), FRAC_CONST(0.97241556644440) }, | ||
272 | { FRAC_CONST(-0.49429559707642), FRAC_CONST(0.98183864355087) }, | ||
273 | { FRAC_CONST(-0.98935145139694), FRAC_CONST(-0.40249159932137) }, | ||
274 | { FRAC_CONST(-0.98081380128860), FRAC_CONST(-0.72856897115707) }, | ||
275 | { FRAC_CONST(-0.27338150143623), FRAC_CONST(0.99950921535492) }, | ||
276 | { FRAC_CONST(0.06310802698135), FRAC_CONST(-0.54539585113525) }, | ||
277 | { FRAC_CONST(-0.20461677014828), FRAC_CONST(-0.14209978282452) }, | ||
278 | { FRAC_CONST(0.66223841905594), FRAC_CONST(0.72528582811356) }, | ||
279 | { FRAC_CONST(-0.84764343500137), FRAC_CONST(0.02372316829860) }, | ||
280 | { FRAC_CONST(-0.89039862155914), FRAC_CONST(0.88866579532623) }, | ||
281 | { FRAC_CONST(0.95903307199478), FRAC_CONST(0.76744925975800) }, | ||
282 | { FRAC_CONST(0.73504126071930), FRAC_CONST(-0.03747203201056) }, | ||
283 | { FRAC_CONST(-0.31744435429573), FRAC_CONST(-0.36834111809731) }, | ||
284 | { FRAC_CONST(-0.34110826253891), FRAC_CONST(0.40211221575737) }, | ||
285 | { FRAC_CONST(0.47803884744644), FRAC_CONST(-0.39423218369484) }, | ||
286 | { FRAC_CONST(0.98299193382263), FRAC_CONST(0.01989791356027) }, | ||
287 | { FRAC_CONST(-0.30963072180748), FRAC_CONST(-0.18076720833778) }, | ||
288 | { FRAC_CONST(0.99992591142654), FRAC_CONST(-0.26281872391701) }, | ||
289 | { FRAC_CONST(-0.93149733543396), FRAC_CONST(-0.98313164710999) }, | ||
290 | { FRAC_CONST(0.99923473596573), FRAC_CONST(-0.80142992734909) }, | ||
291 | { FRAC_CONST(-0.26024168729782), FRAC_CONST(-0.75999760627747) }, | ||
292 | { FRAC_CONST(-0.35712513327599), FRAC_CONST(0.19298963248730) }, | ||
293 | { FRAC_CONST(-0.99899083375931), FRAC_CONST(0.74645155668259) }, | ||
294 | { FRAC_CONST(0.86557173728943), FRAC_CONST(0.55593866109848) }, | ||
295 | { FRAC_CONST(0.33408042788506), FRAC_CONST(0.86185956001282) }, | ||
296 | { FRAC_CONST(0.99010735750198), FRAC_CONST(0.04602397605777) }, | ||
297 | { FRAC_CONST(-0.66694271564484), FRAC_CONST(-0.91643613576889) }, | ||
298 | { FRAC_CONST(0.64016789197922), FRAC_CONST(0.15649530291557) }, | ||
299 | { FRAC_CONST(0.99570536613464), FRAC_CONST(0.45844584703445) }, | ||
300 | { FRAC_CONST(-0.63431465625763), FRAC_CONST(0.21079117059708) }, | ||
301 | { FRAC_CONST(-0.07706847041845), FRAC_CONST(-0.89581435918808) }, | ||
302 | { FRAC_CONST(0.98590087890625), FRAC_CONST(0.88241720199585) }, | ||
303 | { FRAC_CONST(0.80099332332611), FRAC_CONST(-0.36851897835732) }, | ||
304 | { FRAC_CONST(0.78368133306503), FRAC_CONST(0.45506998896599) }, | ||
305 | { FRAC_CONST(0.08707806468010), FRAC_CONST(0.80938994884491) }, | ||
306 | { FRAC_CONST(-0.86811882257462), FRAC_CONST(0.39347308874130) }, | ||
307 | { FRAC_CONST(-0.39466530084610), FRAC_CONST(-0.66809433698654) }, | ||
308 | { FRAC_CONST(0.97875326871872), FRAC_CONST(-0.72467839717865) }, | ||
309 | { FRAC_CONST(-0.95038563013077), FRAC_CONST(0.89563220739365) }, | ||
310 | { FRAC_CONST(0.17005239427090), FRAC_CONST(0.54683053493500) }, | ||
311 | { FRAC_CONST(-0.76910793781281), FRAC_CONST(-0.96226614713669) }, | ||
312 | { FRAC_CONST(0.99743282794952), FRAC_CONST(0.42697158455849) }, | ||
313 | { FRAC_CONST(0.95437383651733), FRAC_CONST(0.97002321481705) }, | ||
314 | { FRAC_CONST(0.99578905105591), FRAC_CONST(-0.54106825590134) }, | ||
315 | { FRAC_CONST(0.28058260679245), FRAC_CONST(-0.85361421108246) }, | ||
316 | { FRAC_CONST(0.85256522893906), FRAC_CONST(-0.64567607641220) }, | ||
317 | { FRAC_CONST(-0.50608539581299), FRAC_CONST(-0.65846014022827) }, | ||
318 | { FRAC_CONST(-0.97210735082626), FRAC_CONST(-0.23095212876797) }, | ||
319 | { FRAC_CONST(0.95424050092697), FRAC_CONST(-0.99240148067474) }, | ||
320 | { FRAC_CONST(-0.96926569938660), FRAC_CONST(0.73775655031204) }, | ||
321 | { FRAC_CONST(0.30872163176537), FRAC_CONST(0.41514959931374) }, | ||
322 | { FRAC_CONST(-0.24523839354515), FRAC_CONST(0.63206630945206) }, | ||
323 | { FRAC_CONST(-0.33813264966011), FRAC_CONST(-0.38661777973175) }, | ||
324 | { FRAC_CONST(-0.05826828256249), FRAC_CONST(-0.06940773874521) }, | ||
325 | { FRAC_CONST(-0.22898460924625), FRAC_CONST(0.97054851055145) }, | ||
326 | { FRAC_CONST(-0.18509915471077), FRAC_CONST(0.47565764188766) }, | ||
327 | { FRAC_CONST(-0.10488238185644), FRAC_CONST(-0.87769949436188) }, | ||
328 | { FRAC_CONST(-0.71886587142944), FRAC_CONST(0.78030979633331) }, | ||
329 | { FRAC_CONST(0.99793875217438), FRAC_CONST(0.90041309595108) }, | ||
330 | { FRAC_CONST(0.57563304901123), FRAC_CONST(-0.91034334897995) }, | ||
331 | { FRAC_CONST(0.28909647464752), FRAC_CONST(0.96307784318924) }, | ||
332 | { FRAC_CONST(0.42188999056816), FRAC_CONST(0.48148649930954) }, | ||
333 | { FRAC_CONST(0.93335050344467), FRAC_CONST(-0.43537023663521) }, | ||
334 | { FRAC_CONST(-0.97087377309799), FRAC_CONST(0.86636447906494) }, | ||
335 | { FRAC_CONST(0.36722871661186), FRAC_CONST(0.65291655063629) }, | ||
336 | { FRAC_CONST(-0.81093025207520), FRAC_CONST(0.08778370171785) }, | ||
337 | { FRAC_CONST(-0.26240602135658), FRAC_CONST(-0.92774093151093) }, | ||
338 | { FRAC_CONST(0.83996498584747), FRAC_CONST(0.55839848518372) }, | ||
339 | { FRAC_CONST(-0.99909615516663), FRAC_CONST(-0.96024608612061) }, | ||
340 | { FRAC_CONST(0.74649465084076), FRAC_CONST(0.12144893407822) }, | ||
341 | { FRAC_CONST(-0.74774593114853), FRAC_CONST(-0.26898062229156) }, | ||
342 | { FRAC_CONST(0.95781666040421), FRAC_CONST(-0.79047924280167) }, | ||
343 | { FRAC_CONST(0.95472306013107), FRAC_CONST(-0.08588775992393) }, | ||
344 | { FRAC_CONST(0.48708331584930), FRAC_CONST(0.99999040365219) }, | ||
345 | { FRAC_CONST(0.46332037448883), FRAC_CONST(0.10964126139879) }, | ||
346 | { FRAC_CONST(-0.76497006416321), FRAC_CONST(0.89210927486420) }, | ||
347 | { FRAC_CONST(0.57397389411926), FRAC_CONST(0.35289704799652) }, | ||
348 | { FRAC_CONST(0.75374317169189), FRAC_CONST(0.96705216169357) }, | ||
349 | { FRAC_CONST(-0.59174400568008), FRAC_CONST(-0.89405369758606) }, | ||
350 | { FRAC_CONST(0.75087904930115), FRAC_CONST(-0.29612672328949) }, | ||
351 | { FRAC_CONST(-0.98607856035233), FRAC_CONST(0.25034910440445) }, | ||
352 | { FRAC_CONST(-0.40761056542397), FRAC_CONST(-0.90045571327209) }, | ||
353 | { FRAC_CONST(0.66929268836975), FRAC_CONST(0.98629492521286) }, | ||
354 | { FRAC_CONST(-0.97463697195053), FRAC_CONST(-0.00190223299433) }, | ||
355 | { FRAC_CONST(0.90145510435104), FRAC_CONST(0.99781388044357) }, | ||
356 | { FRAC_CONST(-0.87259286642075), FRAC_CONST(0.99233585596085) }, | ||
357 | { FRAC_CONST(-0.91529458761215), FRAC_CONST(-0.15698707103729) }, | ||
358 | { FRAC_CONST(-0.03305738791823), FRAC_CONST(-0.37205263972282) }, | ||
359 | { FRAC_CONST(0.07223051041365), FRAC_CONST(-0.88805001974106) }, | ||
360 | { FRAC_CONST(0.99498009681702), FRAC_CONST(0.97094357013702) }, | ||
361 | { FRAC_CONST(-0.74904936552048), FRAC_CONST(0.99985486268997) }, | ||
362 | { FRAC_CONST(0.04585228487849), FRAC_CONST(0.99812334775925) }, | ||
363 | { FRAC_CONST(-0.89054954051971), FRAC_CONST(-0.31791913509369) }, | ||
364 | { FRAC_CONST(-0.83782142400742), FRAC_CONST(0.97637635469437) }, | ||
365 | { FRAC_CONST(0.33454805612564), FRAC_CONST(-0.86231517791748) }, | ||
366 | { FRAC_CONST(-0.99707579612732), FRAC_CONST(0.93237990140915) }, | ||
367 | { FRAC_CONST(-0.22827528417110), FRAC_CONST(0.18874759972095) }, | ||
368 | { FRAC_CONST(0.67248046398163), FRAC_CONST(-0.03646211326122) }, | ||
369 | { FRAC_CONST(-0.05146538093686), FRAC_CONST(-0.92599701881409) }, | ||
370 | { FRAC_CONST(0.99947297573090), FRAC_CONST(0.93625229597092) }, | ||
371 | { FRAC_CONST(0.66951125860214), FRAC_CONST(0.98905825614929) }, | ||
372 | { FRAC_CONST(-0.99602955579758), FRAC_CONST(-0.44654715061188) }, | ||
373 | { FRAC_CONST(0.82104903459549), FRAC_CONST(0.99540740251541) }, | ||
374 | { FRAC_CONST(0.99186509847641), FRAC_CONST(0.72022998332977) }, | ||
375 | { FRAC_CONST(-0.65284591913223), FRAC_CONST(0.52186721563339) }, | ||
376 | { FRAC_CONST(0.93885445594788), FRAC_CONST(-0.74895310401917) }, | ||
377 | { FRAC_CONST(0.96735250949860), FRAC_CONST(0.90891814231873) }, | ||
378 | { FRAC_CONST(-0.22225968539715), FRAC_CONST(0.57124030590057) }, | ||
379 | { FRAC_CONST(-0.44132784008980), FRAC_CONST(-0.92688840627670) }, | ||
380 | { FRAC_CONST(-0.85694974660873), FRAC_CONST(0.88844531774521) }, | ||
381 | { FRAC_CONST(0.91783040761948), FRAC_CONST(-0.46356892585754) }, | ||
382 | { FRAC_CONST(0.72556972503662), FRAC_CONST(-0.99899554252625) }, | ||
383 | { FRAC_CONST(-0.99711579084396), FRAC_CONST(0.58211559057236) }, | ||
384 | { FRAC_CONST(0.77638977766037), FRAC_CONST(0.94321835041046) }, | ||
385 | { FRAC_CONST(0.07717324048281), FRAC_CONST(0.58638399839401) }, | ||
386 | { FRAC_CONST(-0.56049829721451), FRAC_CONST(0.82522302865982) }, | ||
387 | { FRAC_CONST(0.98398894071579), FRAC_CONST(0.39467439055443) }, | ||
388 | { FRAC_CONST(0.47546947002411), FRAC_CONST(0.68613046407700) }, | ||
389 | { FRAC_CONST(0.65675091743469), FRAC_CONST(0.18331636488438) }, | ||
390 | { FRAC_CONST(0.03273375332355), FRAC_CONST(-0.74933111667633) }, | ||
391 | { FRAC_CONST(-0.38684144616127), FRAC_CONST(0.51337349414825) }, | ||
392 | { FRAC_CONST(-0.97346270084381), FRAC_CONST(-0.96549361944199) }, | ||
393 | { FRAC_CONST(-0.53282153606415), FRAC_CONST(-0.91423267126083) }, | ||
394 | { FRAC_CONST(0.99817311763763), FRAC_CONST(0.61133575439453) }, | ||
395 | { FRAC_CONST(-0.50254499912262), FRAC_CONST(-0.88829338550568) }, | ||
396 | { FRAC_CONST(0.01995873264968), FRAC_CONST(0.85223513841629) }, | ||
397 | { FRAC_CONST(0.99930381774902), FRAC_CONST(0.94578897953033) }, | ||
398 | { FRAC_CONST(0.82907766103745), FRAC_CONST(-0.06323442608118) }, | ||
399 | { FRAC_CONST(-0.58660709857941), FRAC_CONST(0.96840775012970) }, | ||
400 | { FRAC_CONST(-0.17573736608028), FRAC_CONST(-0.48166921734810) }, | ||
401 | { FRAC_CONST(0.83434289693832), FRAC_CONST(-0.13023450970650) }, | ||
402 | { FRAC_CONST(0.05946491286159), FRAC_CONST(0.20511047542095) }, | ||
403 | { FRAC_CONST(0.81505483388901), FRAC_CONST(-0.94685947895050) }, | ||
404 | { FRAC_CONST(-0.44976380467415), FRAC_CONST(0.40894573926926) }, | ||
405 | { FRAC_CONST(-0.89746475219727), FRAC_CONST(0.99846577644348) }, | ||
406 | { FRAC_CONST(0.39677256345749), FRAC_CONST(-0.74854665994644) }, | ||
407 | { FRAC_CONST(-0.07588948309422), FRAC_CONST(0.74096214771271) }, | ||
408 | { FRAC_CONST(0.76343196630478), FRAC_CONST(0.41746628284454) }, | ||
409 | { FRAC_CONST(-0.74490106105804), FRAC_CONST(0.94725912809372) }, | ||
410 | { FRAC_CONST(0.64880120754242), FRAC_CONST(0.41336661577225) }, | ||
411 | { FRAC_CONST(0.62319535017014), FRAC_CONST(-0.93098312616348) }, | ||
412 | { FRAC_CONST(0.42215818166733), FRAC_CONST(-0.07712787389755) }, | ||
413 | { FRAC_CONST(0.02704554051161), FRAC_CONST(-0.05417517945170) }, | ||
414 | { FRAC_CONST(0.80001771450043), FRAC_CONST(0.91542196273804) }, | ||
415 | { FRAC_CONST(-0.79351830482483), FRAC_CONST(-0.36208897829056) }, | ||
416 | { FRAC_CONST(0.63872361183167), FRAC_CONST(0.08128252625465) }, | ||
417 | { FRAC_CONST(0.52890521287918), FRAC_CONST(0.60048872232437) }, | ||
418 | { FRAC_CONST(0.74238550662994), FRAC_CONST(0.04491915181279) }, | ||
419 | { FRAC_CONST(0.99096131324768), FRAC_CONST(-0.19451183080673) }, | ||
420 | { FRAC_CONST(-0.80412328243256), FRAC_CONST(-0.88513815402985) }, | ||
421 | { FRAC_CONST(-0.64612615108490), FRAC_CONST(0.72198677062988) }, | ||
422 | { FRAC_CONST(0.11657770723104), FRAC_CONST(-0.83662831783295) }, | ||
423 | { FRAC_CONST(-0.95053184032440), FRAC_CONST(-0.96939903497696) }, | ||
424 | { FRAC_CONST(-0.62228870391846), FRAC_CONST(0.82767260074615) }, | ||
425 | { FRAC_CONST(0.03004475869238), FRAC_CONST(-0.99738895893097) }, | ||
426 | { FRAC_CONST(-0.97987216711044), FRAC_CONST(0.36526128649712) }, | ||
427 | { FRAC_CONST(-0.99986982345581), FRAC_CONST(-0.36021611094475) }, | ||
428 | { FRAC_CONST(0.89110648632050), FRAC_CONST(-0.97894251346588) }, | ||
429 | { FRAC_CONST(0.10407960414886), FRAC_CONST(0.77357792854309) }, | ||
430 | { FRAC_CONST(0.95964735746384), FRAC_CONST(-0.35435819625854) }, | ||
431 | { FRAC_CONST(0.50843232870102), FRAC_CONST(0.96107691526413) }, | ||
432 | { FRAC_CONST(0.17006334662437), FRAC_CONST(-0.76854026317596) }, | ||
433 | { FRAC_CONST(0.25872674584389), FRAC_CONST(0.99893301725388) }, | ||
434 | { FRAC_CONST(-0.01115998718888), FRAC_CONST(0.98496019840240) }, | ||
435 | { FRAC_CONST(-0.79598701000214), FRAC_CONST(0.97138410806656) }, | ||
436 | { FRAC_CONST(-0.99264711141586), FRAC_CONST(-0.99542820453644) }, | ||
437 | { FRAC_CONST(-0.99829661846161), FRAC_CONST(0.01877138763666) }, | ||
438 | { FRAC_CONST(-0.70801013708115), FRAC_CONST(0.33680686354637) }, | ||
439 | { FRAC_CONST(-0.70467054843903), FRAC_CONST(0.93272775411606) }, | ||
440 | { FRAC_CONST(0.99846023321152), FRAC_CONST(-0.98725748062134) }, | ||
441 | { FRAC_CONST(-0.63364970684052), FRAC_CONST(-0.16473594307899) }, | ||
442 | { FRAC_CONST(-0.16258217394352), FRAC_CONST(-0.95939123630524) }, | ||
443 | { FRAC_CONST(-0.43645593523979), FRAC_CONST(-0.94805032014847) }, | ||
444 | { FRAC_CONST(-0.99848473072052), FRAC_CONST(0.96245169639587) }, | ||
445 | { FRAC_CONST(-0.16796459257603), FRAC_CONST(-0.98987513780594) }, | ||
446 | { FRAC_CONST(-0.87979227304459), FRAC_CONST(-0.71725726127625) }, | ||
447 | { FRAC_CONST(0.44183099269867), FRAC_CONST(-0.93568974733353) }, | ||
448 | { FRAC_CONST(0.93310177326202), FRAC_CONST(-0.99913311004639) }, | ||
449 | { FRAC_CONST(-0.93941932916641), FRAC_CONST(-0.56409376859665) }, | ||
450 | { FRAC_CONST(-0.88590002059937), FRAC_CONST(0.47624599933624) }, | ||
451 | { FRAC_CONST(0.99971461296082), FRAC_CONST(-0.83889955282211) }, | ||
452 | { FRAC_CONST(-0.75376385450363), FRAC_CONST(0.00814643409103) }, | ||
453 | { FRAC_CONST(0.93887686729431), FRAC_CONST(-0.11284527927637) }, | ||
454 | { FRAC_CONST(0.85126435756683), FRAC_CONST(0.52349251508713) }, | ||
455 | { FRAC_CONST(0.39701420068741), FRAC_CONST(0.81779634952545) }, | ||
456 | { FRAC_CONST(-0.37024465203285), FRAC_CONST(-0.87071657180786) }, | ||
457 | { FRAC_CONST(-0.36024826765060), FRAC_CONST(0.34655734896660) }, | ||
458 | { FRAC_CONST(-0.93388813734055), FRAC_CONST(-0.84476542472839) }, | ||
459 | { FRAC_CONST(-0.65298801660538), FRAC_CONST(-0.18439576029778) }, | ||
460 | { FRAC_CONST(0.11960318684578), FRAC_CONST(0.99899345636368) }, | ||
461 | { FRAC_CONST(0.94292563199997), FRAC_CONST(0.83163905143738) }, | ||
462 | { FRAC_CONST(0.75081145763397), FRAC_CONST(-0.35533222556114) }, | ||
463 | { FRAC_CONST(0.56721979379654), FRAC_CONST(-0.24076835811138) }, | ||
464 | { FRAC_CONST(0.46857765316963), FRAC_CONST(-0.30140233039856) }, | ||
465 | { FRAC_CONST(0.97312313318253), FRAC_CONST(-0.99548190832138) }, | ||
466 | { FRAC_CONST(-0.38299977779388), FRAC_CONST(0.98516911268234) }, | ||
467 | { FRAC_CONST(0.41025799512863), FRAC_CONST(0.02116736955941) }, | ||
468 | { FRAC_CONST(0.09638062119484), FRAC_CONST(0.04411984235048) }, | ||
469 | { FRAC_CONST(-0.85283249616623), FRAC_CONST(0.91475564241409) }, | ||
470 | { FRAC_CONST(0.88866806030273), FRAC_CONST(-0.99735265970230) }, | ||
471 | { FRAC_CONST(-0.48202428221703), FRAC_CONST(-0.96805608272552) }, | ||
472 | { FRAC_CONST(0.27572581171989), FRAC_CONST(0.58634752035141) }, | ||
473 | { FRAC_CONST(-0.65889132022858), FRAC_CONST(0.58835631608963) }, | ||
474 | { FRAC_CONST(0.98838084936142), FRAC_CONST(0.99994349479675) }, | ||
475 | { FRAC_CONST(-0.20651349425316), FRAC_CONST(0.54593044519424) }, | ||
476 | { FRAC_CONST(-0.62126415967941), FRAC_CONST(-0.59893679618835) }, | ||
477 | { FRAC_CONST(0.20320105552673), FRAC_CONST(-0.86879181861877) }, | ||
478 | { FRAC_CONST(-0.97790551185608), FRAC_CONST(0.96290808916092) }, | ||
479 | { FRAC_CONST(0.11112534999847), FRAC_CONST(0.21484763920307) }, | ||
480 | { FRAC_CONST(-0.41368338465691), FRAC_CONST(0.28216838836670) }, | ||
481 | { FRAC_CONST(0.24133038520813), FRAC_CONST(0.51294362545013) }, | ||
482 | { FRAC_CONST(-0.66393411159515), FRAC_CONST(-0.08249679952860) }, | ||
483 | { FRAC_CONST(-0.53697830438614), FRAC_CONST(-0.97649902105331) }, | ||
484 | { FRAC_CONST(-0.97224736213684), FRAC_CONST(0.22081333398819) }, | ||
485 | { FRAC_CONST(0.87392479181290), FRAC_CONST(-0.12796173989773) }, | ||
486 | { FRAC_CONST(0.19050361216068), FRAC_CONST(0.01602615416050) }, | ||
487 | { FRAC_CONST(-0.46353441476822), FRAC_CONST(-0.95249038934708) }, | ||
488 | { FRAC_CONST(-0.07064096629620), FRAC_CONST(-0.94479805231094) }, | ||
489 | { FRAC_CONST(-0.92444086074829), FRAC_CONST(-0.10457590222359) }, | ||
490 | { FRAC_CONST(-0.83822596073151), FRAC_CONST(-0.01695043221116) }, | ||
491 | { FRAC_CONST(0.75214684009552), FRAC_CONST(-0.99955683946609) }, | ||
492 | { FRAC_CONST(-0.42102998495102), FRAC_CONST(0.99720942974091) }, | ||
493 | { FRAC_CONST(-0.72094786167145), FRAC_CONST(-0.35008960962296) }, | ||
494 | { FRAC_CONST(0.78843313455582), FRAC_CONST(0.52851396799088) }, | ||
495 | { FRAC_CONST(0.97394025325775), FRAC_CONST(-0.26695942878723) }, | ||
496 | { FRAC_CONST(0.99206465482712), FRAC_CONST(-0.57010120153427) }, | ||
497 | { FRAC_CONST(0.76789611577988), FRAC_CONST(-0.76519358158112) }, | ||
498 | { FRAC_CONST(-0.82002419233322), FRAC_CONST(-0.73530179262161) }, | ||
499 | { FRAC_CONST(0.81924992799759), FRAC_CONST(0.99698424339294) }, | ||
500 | { FRAC_CONST(-0.26719850301743), FRAC_CONST(0.68903368711472) }, | ||
501 | { FRAC_CONST(-0.43311259150505), FRAC_CONST(0.85321813821793) }, | ||
502 | { FRAC_CONST(0.99194979667664), FRAC_CONST(0.91876250505447) }, | ||
503 | { FRAC_CONST(-0.80691999197006), FRAC_CONST(-0.32627540826797) }, | ||
504 | { FRAC_CONST(0.43080005049706), FRAC_CONST(-0.21919095516205) }, | ||
505 | { FRAC_CONST(0.67709493637085), FRAC_CONST(-0.95478075742722) }, | ||
506 | { FRAC_CONST(0.56151771545410), FRAC_CONST(-0.70693808794022) }, | ||
507 | { FRAC_CONST(0.10831862688065), FRAC_CONST(-0.08628837019205) }, | ||
508 | { FRAC_CONST(0.91229414939880), FRAC_CONST(-0.65987348556519) }, | ||
509 | { FRAC_CONST(-0.48972892761230), FRAC_CONST(0.56289243698120) }, | ||
510 | { FRAC_CONST(-0.89033657312393), FRAC_CONST(-0.71656566858292) }, | ||
511 | { FRAC_CONST(0.65269446372986), FRAC_CONST(0.65916007757187) }, | ||
512 | { FRAC_CONST(0.67439478635788), FRAC_CONST(-0.81684380769730) }, | ||
513 | { FRAC_CONST(-0.47770830988884), FRAC_CONST(-0.16789555549622) }, | ||
514 | { FRAC_CONST(-0.99715977907181), FRAC_CONST(-0.93565785884857) }, | ||
515 | { FRAC_CONST(-0.90889590978622), FRAC_CONST(0.62034398317337) }, | ||
516 | { FRAC_CONST(-0.06618622690439), FRAC_CONST(-0.23812216520309) }, | ||
517 | { FRAC_CONST(0.99430269002914), FRAC_CONST(0.18812555074692) }, | ||
518 | { FRAC_CONST(0.97686403989792), FRAC_CONST(-0.28664535284042) }, | ||
519 | { FRAC_CONST(0.94813650846481), FRAC_CONST(-0.97506642341614) }, | ||
520 | { FRAC_CONST(-0.95434498786926), FRAC_CONST(-0.79607981443405) }, | ||
521 | { FRAC_CONST(-0.49104782938957), FRAC_CONST(0.32895213365555) }, | ||
522 | { FRAC_CONST(0.99881172180176), FRAC_CONST(0.88993984460831) }, | ||
523 | { FRAC_CONST(0.50449168682098), FRAC_CONST(-0.85995072126389) }, | ||
524 | { FRAC_CONST(0.47162890434265), FRAC_CONST(-0.18680204451084) }, | ||
525 | { FRAC_CONST(-0.62081581354141), FRAC_CONST(0.75000673532486) }, | ||
526 | { FRAC_CONST(-0.43867015838623), FRAC_CONST(0.99998068809509) }, | ||
527 | { FRAC_CONST(0.98630565404892), FRAC_CONST(-0.53578901290894) }, | ||
528 | { FRAC_CONST(-0.61510360240936), FRAC_CONST(-0.89515018463135) }, | ||
529 | { FRAC_CONST(-0.03841517493129), FRAC_CONST(-0.69888818264008) }, | ||
530 | { FRAC_CONST(-0.30102157592773), FRAC_CONST(-0.07667808979750) }, | ||
531 | { FRAC_CONST(0.41881284117699), FRAC_CONST(0.02188098989427) }, | ||
532 | { FRAC_CONST(-0.86135452985764), FRAC_CONST(0.98947483301163) }, | ||
533 | { FRAC_CONST(0.67226862907410), FRAC_CONST(-0.13494388759136) }, | ||
534 | { FRAC_CONST(-0.70737397670746), FRAC_CONST(-0.76547348499298) }, | ||
535 | { FRAC_CONST(0.94044947624207), FRAC_CONST(0.09026201069355) }, | ||
536 | { FRAC_CONST(-0.82386350631714), FRAC_CONST(0.08924768865108) }, | ||
537 | { FRAC_CONST(-0.32070666551590), FRAC_CONST(0.50143420696259) }, | ||
538 | { FRAC_CONST(0.57593160867691), FRAC_CONST(-0.98966425657272) }, | ||
539 | { FRAC_CONST(-0.36326017975807), FRAC_CONST(0.07440242916346) }, | ||
540 | { FRAC_CONST(0.99979043006897), FRAC_CONST(-0.14130286872387) }, | ||
541 | { FRAC_CONST(-0.92366021871567), FRAC_CONST(-0.97979295253754) }, | ||
542 | { FRAC_CONST(-0.44607177376747), FRAC_CONST(-0.54233253002167) }, | ||
543 | { FRAC_CONST(0.44226801395416), FRAC_CONST(0.71326756477356) }, | ||
544 | { FRAC_CONST(0.03671907261014), FRAC_CONST(0.63606387376785) }, | ||
545 | { FRAC_CONST(0.52175426483154), FRAC_CONST(-0.85396826267242) }, | ||
546 | { FRAC_CONST(-0.94701141119003), FRAC_CONST(-0.01826348155737) }, | ||
547 | { FRAC_CONST(-0.98759609460831), FRAC_CONST(0.82288712263107) }, | ||
548 | { FRAC_CONST(0.87434792518616), FRAC_CONST(0.89399492740631) }, | ||
549 | { FRAC_CONST(-0.93412041664124), FRAC_CONST(0.41374051570892) }, | ||
550 | { FRAC_CONST(0.96063941717148), FRAC_CONST(0.93116706609726) }, | ||
551 | { FRAC_CONST(0.97534251213074), FRAC_CONST(0.86150932312012) }, | ||
552 | { FRAC_CONST(0.99642467498779), FRAC_CONST(0.70190042257309) }, | ||
553 | { FRAC_CONST(-0.94705086946487), FRAC_CONST(-0.29580041766167) }, | ||
554 | { FRAC_CONST(0.91599804162979), FRAC_CONST(-0.98147833347321) } | ||
555 | }; | ||
556 | |||
557 | #ifdef __cplusplus | ||
558 | |||
559 | #endif | ||
560 | #endif | ||
561 | |||
diff --git a/lib/rbcodec/codecs/libfaad/sbr_qmf.c b/lib/rbcodec/codecs/libfaad/sbr_qmf.c new file mode 100644 index 0000000000..5f8203e5b1 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/sbr_qmf.c | |||
@@ -0,0 +1,561 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #include "common.h" | ||
29 | #include "structs.h" | ||
30 | |||
31 | #ifdef SBR_DEC | ||
32 | |||
33 | |||
34 | #include <stdlib.h> | ||
35 | #include <string.h> | ||
36 | #include "sbr_dct.h" | ||
37 | #include "sbr_qmf.h" | ||
38 | #include "sbr_qmf_c.h" | ||
39 | #include "sbr_syntax.h" | ||
40 | |||
41 | #ifdef FIXED_POINT | ||
42 | #define FAAD_SYNTHESIS_SCALE(X) ((X)>>1) | ||
43 | #define FAAD_ANALYSIS_SCALE1(X) ((X)>>4) | ||
44 | #define FAAD_ANALYSIS_SCALE2(X) ((X)) | ||
45 | #define FAAD_ANALYSIS_SCALE3(X) ((X)) | ||
46 | #else | ||
47 | #define FAAD_SYNTHESIS_SCALE(X) ((X)/64.0f) | ||
48 | #define FAAD_ANALYSIS_SCALE1(X) ((X)) | ||
49 | #define FAAD_ANALYSIS_SCALE2(X) (2.0f*(X)) | ||
50 | #define FAAD_ANALYSIS_SCALE3(X) ((X)/32.0f) | ||
51 | #endif | ||
52 | |||
53 | |||
54 | void sbr_qmf_analysis_32(sbr_info *sbr, qmfa_info *qmfa, const real_t *input, | ||
55 | qmf_t X[MAX_NTSR][64], uint8_t offset, uint8_t kx) | ||
56 | { | ||
57 | real_t u[64] MEM_ALIGN_ATTR; | ||
58 | #ifndef SBR_LOW_POWER | ||
59 | real_t real[32] MEM_ALIGN_ATTR; | ||
60 | real_t imag[32] MEM_ALIGN_ATTR; | ||
61 | #else | ||
62 | real_t y[32] MEM_ALIGN_ATTR; | ||
63 | #endif | ||
64 | qmf_t *pX; | ||
65 | uint32_t in = 0; | ||
66 | uint32_t l, idx0, idx1; | ||
67 | |||
68 | /* qmf subsample l */ | ||
69 | for (l = 0; l < sbr->numTimeSlotsRate; l++) | ||
70 | { | ||
71 | int32_t n; | ||
72 | |||
73 | /* shift input buffer x */ | ||
74 | /* input buffer is not shifted anymore, x is implemented as double ringbuffer */ | ||
75 | //memmove(qmfa->x + 32, qmfa->x, (320-32)*sizeof(real_t)); | ||
76 | |||
77 | /* add new samples to input buffer x */ | ||
78 | idx0 = qmfa->x_index + 31; idx1 = idx0 + 320; | ||
79 | for (n = 0; n < 32; n+=4) | ||
80 | { | ||
81 | qmfa->x[idx0--] = qmfa->x[idx1--] = (input[in++]); | ||
82 | qmfa->x[idx0--] = qmfa->x[idx1--] = (input[in++]); | ||
83 | qmfa->x[idx0--] = qmfa->x[idx1--] = (input[in++]); | ||
84 | qmfa->x[idx0--] = qmfa->x[idx1--] = (input[in++]); | ||
85 | } | ||
86 | |||
87 | /* window and summation to create array u */ | ||
88 | for (n = 0; n < 32; n++) | ||
89 | { | ||
90 | idx0 = qmfa->x_index + n; idx1 = n * 20; | ||
91 | u[n] = FAAD_ANALYSIS_SCALE1( | ||
92 | MUL_F(qmfa->x[idx0 ], qmf_c[idx1 ]) + | ||
93 | MUL_F(qmfa->x[idx0 + 64], qmf_c[idx1 + 2]) + | ||
94 | MUL_F(qmfa->x[idx0 + 128], qmf_c[idx1 + 4]) + | ||
95 | MUL_F(qmfa->x[idx0 + 192], qmf_c[idx1 + 6]) + | ||
96 | MUL_F(qmfa->x[idx0 + 256], qmf_c[idx1 + 8])); | ||
97 | } | ||
98 | for (n = 32; n < 64; n++) | ||
99 | { | ||
100 | idx0 = qmfa->x_index + n; idx1 = n * 20 - 639; | ||
101 | u[n] = FAAD_ANALYSIS_SCALE1( | ||
102 | MUL_F(qmfa->x[idx0 ], qmf_c[idx1 ]) + | ||
103 | MUL_F(qmfa->x[idx0 + 64], qmf_c[idx1 + 2]) + | ||
104 | MUL_F(qmfa->x[idx0 + 128], qmf_c[idx1 + 4]) + | ||
105 | MUL_F(qmfa->x[idx0 + 192], qmf_c[idx1 + 6]) + | ||
106 | MUL_F(qmfa->x[idx0 + 256], qmf_c[idx1 + 8])); | ||
107 | } | ||
108 | |||
109 | /* update ringbuffer index */ | ||
110 | qmfa->x_index -= 32; | ||
111 | if (qmfa->x_index < 0) | ||
112 | qmfa->x_index = (320-32); | ||
113 | |||
114 | /* calculate 32 subband samples by introducing X */ | ||
115 | #ifdef SBR_LOW_POWER | ||
116 | y[0] = u[48]; | ||
117 | for (n = 1; n < 16; n++) | ||
118 | y[n] = u[n+48] + u[48-n]; | ||
119 | for (n = 16; n < 32; n++) | ||
120 | y[n] = -u[n-16] + u[48-n]; | ||
121 | |||
122 | DCT3_32_unscaled(u, y); | ||
123 | |||
124 | for (n = 0; n < 32; n++) | ||
125 | { | ||
126 | if (n < kx) | ||
127 | { | ||
128 | QMF_RE(X[l + offset][n]) = FAAD_ANALYSIS_SCALE2(u[n]); | ||
129 | } else { | ||
130 | QMF_RE(X[l + offset][n]) = 0; | ||
131 | } | ||
132 | } | ||
133 | #else /* #ifdef SBR_LOW_POWER */ | ||
134 | |||
135 | // Reordering of data moved from DCT_IV to here | ||
136 | idx0 = 30; idx1 = 63; | ||
137 | imag[31] = u[ 1]; real[ 0] = u[ 0]; | ||
138 | for (n = 1; n < 31; n+=3) | ||
139 | { | ||
140 | imag[idx0--] = u[n+1]; real[n ] = -u[idx1--]; | ||
141 | imag[idx0--] = u[n+2]; real[n+1] = -u[idx1--]; | ||
142 | imag[idx0--] = u[n+3]; real[n+2] = -u[idx1--]; | ||
143 | } | ||
144 | imag[ 0] = u[32]; real[31] = -u[33]; | ||
145 | |||
146 | // dct4_kernel is DCT_IV without reordering which is done before and after FFT | ||
147 | dct4_kernel(real, imag); | ||
148 | |||
149 | // Reordering of data moved from DCT_IV to here | ||
150 | /* Step 1: Calculate all non-zero pairs */ | ||
151 | pX = X[l + offset]; | ||
152 | for (n = 0; n < kx/2; n++) { | ||
153 | idx0 = 2*n; idx1 = idx0 + 1; | ||
154 | QMF_RE(pX[idx0]) = FAAD_ANALYSIS_SCALE2( real[n ]); | ||
155 | QMF_IM(pX[idx0]) = FAAD_ANALYSIS_SCALE2( imag[n ]); | ||
156 | QMF_RE(pX[idx1]) = FAAD_ANALYSIS_SCALE2(-imag[31-n]); | ||
157 | QMF_IM(pX[idx1]) = FAAD_ANALYSIS_SCALE2(-real[31-n]); | ||
158 | } | ||
159 | /* Step 2: Calculate a single pair with half zero'ed */ | ||
160 | if (kx&1) { | ||
161 | idx0 = 2*n; idx1 = idx0 + 1; | ||
162 | QMF_RE(pX[idx0]) = FAAD_ANALYSIS_SCALE2( real[n]); | ||
163 | QMF_IM(pX[idx0]) = FAAD_ANALYSIS_SCALE2( imag[n]); | ||
164 | QMF_RE(pX[idx1]) = QMF_IM(pX[idx1]) = 0; | ||
165 | n++; | ||
166 | } | ||
167 | /* Step 3: All other are zero'ed */ | ||
168 | for (; n < 16; n++) { | ||
169 | idx0 = 2*n; idx1 = idx0 + 1; | ||
170 | QMF_RE(pX[idx0]) = QMF_IM(pX[idx0]) = 0; | ||
171 | QMF_RE(pX[idx1]) = QMF_IM(pX[idx1]) = 0; | ||
172 | } | ||
173 | #endif /* #ifdef SBR_LOW_POWER */ | ||
174 | } | ||
175 | } | ||
176 | |||
177 | #ifdef SBR_LOW_POWER | ||
178 | |||
179 | void sbr_qmf_synthesis_32(sbr_info *sbr, qmfs_info *qmfs, qmf_t X[MAX_NTSR][64], | ||
180 | real_t *output) | ||
181 | { | ||
182 | real_t x[16] MEM_ALIGN_ATTR; | ||
183 | real_t y[16] MEM_ALIGN_ATTR; | ||
184 | int16_t n, k, out = 0; | ||
185 | uint8_t l; | ||
186 | |||
187 | /* qmf subsample l */ | ||
188 | for (l = 0; l < sbr->numTimeSlotsRate; l++) | ||
189 | { | ||
190 | /* shift buffers */ | ||
191 | /* we are not shifting v, it is a double ringbuffer */ | ||
192 | //memmove(qmfs->v + 64, qmfs->v, (640-64)*sizeof(real_t)); | ||
193 | |||
194 | /* calculate 64 samples */ | ||
195 | for (k = 0; k < 16; k++) | ||
196 | { | ||
197 | y[k] = FAAD_ANALYSIS_SCALE3((QMF_RE(X[l][k]) - QMF_RE(X[l][31-k]))); | ||
198 | x[k] = FAAD_ANALYSIS_SCALE3((QMF_RE(X[l][k]) + QMF_RE(X[l][31-k]))); | ||
199 | } | ||
200 | |||
201 | /* even n samples */ | ||
202 | DCT2_16_unscaled(x, x); | ||
203 | /* odd n samples */ | ||
204 | DCT4_16(y, y); | ||
205 | |||
206 | for (n = 8; n < 24; n++) | ||
207 | { | ||
208 | qmfs->v[qmfs->v_index + n*2 ] = qmfs->v[qmfs->v_index + 640 + n*2 ] = x[n-8]; | ||
209 | qmfs->v[qmfs->v_index + n*2+1] = qmfs->v[qmfs->v_index + 640 + n*2+1] = y[n-8]; | ||
210 | } | ||
211 | for (n = 0; n < 16; n++) | ||
212 | { | ||
213 | qmfs->v[qmfs->v_index + n] = qmfs->v[qmfs->v_index + 640 + n] = qmfs->v[qmfs->v_index + 32-n]; | ||
214 | } | ||
215 | qmfs->v[qmfs->v_index + 48] = qmfs->v[qmfs->v_index + 640 + 48] = 0; | ||
216 | for (n = 1; n < 16; n++) | ||
217 | { | ||
218 | qmfs->v[qmfs->v_index + 48+n] = qmfs->v[qmfs->v_index + 640 + 48+n] = -qmfs->v[qmfs->v_index + 48-n]; | ||
219 | } | ||
220 | |||
221 | /* calculate 32 output samples and window */ | ||
222 | for (k = 0; k < 32; k++) | ||
223 | { | ||
224 | output[out++] = MUL_F(qmfs->v[qmfs->v_index + k], qmf_c[ 2*k*10]) + | ||
225 | MUL_F(qmfs->v[qmfs->v_index + 96 + k], qmf_c[1 + 2*k*10]) + | ||
226 | MUL_F(qmfs->v[qmfs->v_index + 128 + k], qmf_c[2 + 2*k*10]) + | ||
227 | MUL_F(qmfs->v[qmfs->v_index + 224 + k], qmf_c[3 + 2*k*10]) + | ||
228 | MUL_F(qmfs->v[qmfs->v_index + 256 + k], qmf_c[4 + 2*k*10]) + | ||
229 | MUL_F(qmfs->v[qmfs->v_index + 352 + k], qmf_c[5 + 2*k*10]) + | ||
230 | MUL_F(qmfs->v[qmfs->v_index + 384 + k], qmf_c[6 + 2*k*10]) + | ||
231 | MUL_F(qmfs->v[qmfs->v_index + 480 + k], qmf_c[7 + 2*k*10]) + | ||
232 | MUL_F(qmfs->v[qmfs->v_index + 512 + k], qmf_c[8 + 2*k*10]) + | ||
233 | MUL_F(qmfs->v[qmfs->v_index + 608 + k], qmf_c[9 + 2*k*10]); | ||
234 | } | ||
235 | |||
236 | /* update the ringbuffer index */ | ||
237 | qmfs->v_index -= 64; | ||
238 | if (qmfs->v_index < 0) | ||
239 | qmfs->v_index = (640-64); | ||
240 | } | ||
241 | } | ||
242 | |||
243 | void sbr_qmf_synthesis_64(sbr_info *sbr, qmfs_info *qmfs, qmf_t X[MAX_NTSR][64], | ||
244 | real_t *output) | ||
245 | { | ||
246 | real_t x[64] MEM_ALIGN_ATTR; | ||
247 | real_t y[64] MEM_ALIGN_ATTR; | ||
248 | int16_t n, k, out = 0; | ||
249 | uint8_t l; | ||
250 | |||
251 | |||
252 | /* qmf subsample l */ | ||
253 | for (l = 0; l < sbr->numTimeSlotsRate; l++) | ||
254 | { | ||
255 | /* shift buffers */ | ||
256 | /* we are not shifting v, it is a double ringbuffer */ | ||
257 | //memmove(qmfs->v + 128, qmfs->v, (1280-128)*sizeof(real_t)); | ||
258 | |||
259 | /* calculate 128 samples */ | ||
260 | for (k = 0; k < 32; k++) | ||
261 | { | ||
262 | y[k] = FAAD_ANALYSIS_SCALE3((QMF_RE(X[l][k]) - QMF_RE(X[l][63-k]))); | ||
263 | x[k] = FAAD_ANALYSIS_SCALE3((QMF_RE(X[l][k]) + QMF_RE(X[l][63-k]))); | ||
264 | } | ||
265 | |||
266 | /* even n samples */ | ||
267 | DCT2_32_unscaled(x, x); | ||
268 | /* odd n samples */ | ||
269 | DCT4_32(y, y); | ||
270 | |||
271 | for (n = 16; n < 48; n++) | ||
272 | { | ||
273 | qmfs->v[qmfs->v_index + n*2] = qmfs->v[qmfs->v_index + 1280 + n*2 ] = x[n-16]; | ||
274 | qmfs->v[qmfs->v_index + n*2+1] = qmfs->v[qmfs->v_index + 1280 + n*2+1] = y[n-16]; | ||
275 | } | ||
276 | for (n = 0; n < 32; n++) | ||
277 | { | ||
278 | qmfs->v[qmfs->v_index + n] = qmfs->v[qmfs->v_index + 1280 + n] = qmfs->v[qmfs->v_index + 64-n]; | ||
279 | } | ||
280 | qmfs->v[qmfs->v_index + 96] = qmfs->v[qmfs->v_index + 1280 + 96] = 0; | ||
281 | for (n = 1; n < 32; n++) | ||
282 | { | ||
283 | qmfs->v[qmfs->v_index + 96+n] = qmfs->v[qmfs->v_index + 1280 + 96+n] = -qmfs->v[qmfs->v_index + 96-n]; | ||
284 | } | ||
285 | |||
286 | /* calculate 64 output samples and window */ | ||
287 | for (k = 0; k < 64; k++) | ||
288 | { | ||
289 | output[out++] = MUL_F(qmfs->v[qmfs->v_index + k], qmf_c[ k*10]) + | ||
290 | MUL_F(qmfs->v[qmfs->v_index + 192 + k], qmf_c[1 + k*10]) + | ||
291 | MUL_F(qmfs->v[qmfs->v_index + 256 + k], qmf_c[2 + k*10]) + | ||
292 | MUL_F(qmfs->v[qmfs->v_index + 256 + 192 + k], qmf_c[3 + k*10]) + | ||
293 | MUL_F(qmfs->v[qmfs->v_index + 512 + k], qmf_c[4 + k*10]) + | ||
294 | MUL_F(qmfs->v[qmfs->v_index + 512 + 192 + k], qmf_c[5 + k*10]) + | ||
295 | MUL_F(qmfs->v[qmfs->v_index + 768 + k], qmf_c[6 + k*10]) + | ||
296 | MUL_F(qmfs->v[qmfs->v_index + 768 + 192 + k], qmf_c[7 + k*10]) + | ||
297 | MUL_F(qmfs->v[qmfs->v_index + 1024 + k], qmf_c[8 + k*10]) + | ||
298 | MUL_F(qmfs->v[qmfs->v_index + 1024 + 192 + k], qmf_c[9 + k*10]); | ||
299 | } | ||
300 | |||
301 | /* update the ringbuffer index */ | ||
302 | qmfs->v_index -= 128; | ||
303 | if (qmfs->v_index < 0) | ||
304 | qmfs->v_index = (1280-128); | ||
305 | } | ||
306 | } | ||
307 | #else /* #ifdef SBR_LOW_POWER */ | ||
308 | |||
309 | static const complex_t qmf32_pre_twiddle[] = | ||
310 | { | ||
311 | { FRAC_CONST(0.999924701839145), FRAC_CONST(-0.012271538285720) }, | ||
312 | { FRAC_CONST(0.999322384588350), FRAC_CONST(-0.036807222941359) }, | ||
313 | { FRAC_CONST(0.998118112900149), FRAC_CONST(-0.061320736302209) }, | ||
314 | { FRAC_CONST(0.996312612182778), FRAC_CONST(-0.085797312344440) }, | ||
315 | { FRAC_CONST(0.993906970002356), FRAC_CONST(-0.110222207293883) }, | ||
316 | { FRAC_CONST(0.990902635427780), FRAC_CONST(-0.134580708507126) }, | ||
317 | { FRAC_CONST(0.987301418157858), FRAC_CONST(-0.158858143333861) }, | ||
318 | { FRAC_CONST(0.983105487431216), FRAC_CONST(-0.183039887955141) }, | ||
319 | { FRAC_CONST(0.978317370719628), FRAC_CONST(-0.207111376192219) }, | ||
320 | { FRAC_CONST(0.972939952205560), FRAC_CONST(-0.231058108280671) }, | ||
321 | { FRAC_CONST(0.966976471044852), FRAC_CONST(-0.254865659604515) }, | ||
322 | { FRAC_CONST(0.960430519415566), FRAC_CONST(-0.278519689385053) }, | ||
323 | { FRAC_CONST(0.953306040354194), FRAC_CONST(-0.302005949319228) }, | ||
324 | { FRAC_CONST(0.945607325380521), FRAC_CONST(-0.325310292162263) }, | ||
325 | { FRAC_CONST(0.937339011912575), FRAC_CONST(-0.348418680249435) }, | ||
326 | { FRAC_CONST(0.928506080473216), FRAC_CONST(-0.371317193951838) }, | ||
327 | { FRAC_CONST(0.919113851690058), FRAC_CONST(-0.393992040061048) }, | ||
328 | { FRAC_CONST(0.909167983090522), FRAC_CONST(-0.416429560097637) }, | ||
329 | { FRAC_CONST(0.898674465693954), FRAC_CONST(-0.438616238538528) }, | ||
330 | { FRAC_CONST(0.887639620402854), FRAC_CONST(-0.460538710958240) }, | ||
331 | { FRAC_CONST(0.876070094195407), FRAC_CONST(-0.482183772079123) }, | ||
332 | { FRAC_CONST(0.863972856121587), FRAC_CONST(-0.503538383725718) }, | ||
333 | { FRAC_CONST(0.851355193105265), FRAC_CONST(-0.524589682678469) }, | ||
334 | { FRAC_CONST(0.838224705554838), FRAC_CONST(-0.545324988422046) }, | ||
335 | { FRAC_CONST(0.824589302785025), FRAC_CONST(-0.565731810783613) }, | ||
336 | { FRAC_CONST(0.810457198252595), FRAC_CONST(-0.585797857456439) }, | ||
337 | { FRAC_CONST(0.795836904608884), FRAC_CONST(-0.605511041404326) }, | ||
338 | { FRAC_CONST(0.780737228572094), FRAC_CONST(-0.624859488142386) }, | ||
339 | { FRAC_CONST(0.765167265622459), FRAC_CONST(-0.643831542889791) }, | ||
340 | { FRAC_CONST(0.749136394523459), FRAC_CONST(-0.662415777590172) }, | ||
341 | { FRAC_CONST(0.732654271672413), FRAC_CONST(-0.680600997795453) }, | ||
342 | { FRAC_CONST(0.715730825283819), FRAC_CONST(-0.698376249408973) } | ||
343 | }; | ||
344 | |||
345 | #define FAAD_CMPLX_PRETWIDDLE_SUB(k) \ | ||
346 | (MUL_F(QMF_RE(X[l][k]), RE(qmf32_pre_twiddle[k])) - \ | ||
347 | MUL_F(QMF_IM(X[l][k]), IM(qmf32_pre_twiddle[k]))) | ||
348 | |||
349 | #define FAAD_CMPLX_PRETWIDDLE_ADD(k) \ | ||
350 | (MUL_F(QMF_IM(X[l][k]), RE(qmf32_pre_twiddle[k])) + \ | ||
351 | MUL_F(QMF_RE(X[l][k]), IM(qmf32_pre_twiddle[k]))) | ||
352 | |||
353 | void sbr_qmf_synthesis_32(sbr_info *sbr, qmfs_info *qmfs, qmf_t X[MAX_NTSR][64], | ||
354 | real_t *output) | ||
355 | { | ||
356 | real_t x1[32] MEM_ALIGN_ATTR; | ||
357 | real_t x2[32] MEM_ALIGN_ATTR; | ||
358 | int32_t n, k, idx0, idx1, out = 0; | ||
359 | uint32_t l; | ||
360 | |||
361 | /* qmf subsample l */ | ||
362 | for (l = 0; l < sbr->numTimeSlotsRate; l++) | ||
363 | { | ||
364 | /* shift buffer v */ | ||
365 | /* buffer is not shifted, we are using a ringbuffer */ | ||
366 | //memmove(qmfs->v + 64, qmfs->v, (640-64)*sizeof(real_t)); | ||
367 | |||
368 | /* calculate 64 samples */ | ||
369 | /* complex pre-twiddle */ | ||
370 | for (k = 0; k < 32;) | ||
371 | { | ||
372 | x1[k] = FAAD_CMPLX_PRETWIDDLE_SUB(k); x2[k] = FAAD_CMPLX_PRETWIDDLE_ADD(k); k++; | ||
373 | x1[k] = FAAD_CMPLX_PRETWIDDLE_SUB(k); x2[k] = FAAD_CMPLX_PRETWIDDLE_ADD(k); k++; | ||
374 | x1[k] = FAAD_CMPLX_PRETWIDDLE_SUB(k); x2[k] = FAAD_CMPLX_PRETWIDDLE_ADD(k); k++; | ||
375 | x1[k] = FAAD_CMPLX_PRETWIDDLE_SUB(k); x2[k] = FAAD_CMPLX_PRETWIDDLE_ADD(k); k++; | ||
376 | } | ||
377 | |||
378 | /* transform */ | ||
379 | DCT4_32(x1, x1); | ||
380 | DST4_32(x2, x2); | ||
381 | |||
382 | idx0 = qmfs->v_index; | ||
383 | idx1 = qmfs->v_index + 63; | ||
384 | for (n = 0; n < 32; n+=2) | ||
385 | { | ||
386 | qmfs->v[idx0] = qmfs->v[idx0 + 640] = -x1[n ] + x2[n ]; idx0++; | ||
387 | qmfs->v[idx1] = qmfs->v[idx1 + 640] = x1[n ] + x2[n ]; idx1--; | ||
388 | qmfs->v[idx0] = qmfs->v[idx0 + 640] = -x1[n+1] + x2[n+1]; idx0++; | ||
389 | qmfs->v[idx1] = qmfs->v[idx1 + 640] = x1[n+1] + x2[n+1]; idx1--; | ||
390 | } | ||
391 | |||
392 | /* calculate 32 output samples and window */ | ||
393 | for (k = 0; k < 32; k++) | ||
394 | { | ||
395 | idx0 = qmfs->v_index + k; idx1 = 2*k*10; | ||
396 | output[out++] = FAAD_SYNTHESIS_SCALE( | ||
397 | MUL_F(qmfs->v[idx0 ], qmf_c[idx1 ]) + | ||
398 | MUL_F(qmfs->v[idx0 + 96], qmf_c[idx1+1]) + | ||
399 | MUL_F(qmfs->v[idx0 + 128], qmf_c[idx1+2]) + | ||
400 | MUL_F(qmfs->v[idx0 + 224], qmf_c[idx1+3]) + | ||
401 | MUL_F(qmfs->v[idx0 + 256], qmf_c[idx1+4]) + | ||
402 | MUL_F(qmfs->v[idx0 + 352], qmf_c[idx1+5]) + | ||
403 | MUL_F(qmfs->v[idx0 + 384], qmf_c[idx1+6]) + | ||
404 | MUL_F(qmfs->v[idx0 + 480], qmf_c[idx1+7]) + | ||
405 | MUL_F(qmfs->v[idx0 + 512], qmf_c[idx1+8]) + | ||
406 | MUL_F(qmfs->v[idx0 + 608], qmf_c[idx1+9])); | ||
407 | } | ||
408 | |||
409 | /* update ringbuffer index */ | ||
410 | qmfs->v_index -= 64; | ||
411 | if (qmfs->v_index < 0) | ||
412 | qmfs->v_index = (640 - 64); | ||
413 | } | ||
414 | } | ||
415 | |||
416 | void sbr_qmf_synthesis_64(sbr_info *sbr, qmfs_info *qmfs, qmf_t X[MAX_NTSR][64], | ||
417 | real_t *output) | ||
418 | { | ||
419 | real_t real1[32] MEM_ALIGN_ATTR; | ||
420 | real_t imag1[32] MEM_ALIGN_ATTR; | ||
421 | real_t real2[32] MEM_ALIGN_ATTR; | ||
422 | real_t imag2[32] MEM_ALIGN_ATTR; | ||
423 | qmf_t *pX; | ||
424 | real_t *p_buf_1, *p_buf_3; | ||
425 | int32_t n, k, idx0, idx1, out = 0; | ||
426 | uint32_t l; | ||
427 | |||
428 | /* qmf subsample l */ | ||
429 | for (l = 0; l < sbr->numTimeSlotsRate; l++) | ||
430 | { | ||
431 | /* shift buffer v */ | ||
432 | /* buffer is not shifted, we use double ringbuffer */ | ||
433 | //memmove(qmfs->v + 128, qmfs->v, (1280-128)*sizeof(real_t)); | ||
434 | |||
435 | /* calculate 128 samples */ | ||
436 | pX = X[l]; | ||
437 | for (k = 0; k < 32; k++) | ||
438 | { | ||
439 | idx0 = 2*k; idx1 = idx0+1; | ||
440 | real1[ k] = QMF_RE(pX[idx0]); imag2[ k] = QMF_IM(pX[idx0]); | ||
441 | imag1[31-k] = QMF_RE(pX[idx1]); real2[31-k] = QMF_IM(pX[idx1]); | ||
442 | } | ||
443 | |||
444 | // dct4_kernel is DCT_IV without reordering which is done before and after FFT | ||
445 | dct4_kernel(real1, imag1); | ||
446 | dct4_kernel(real2, imag2); | ||
447 | |||
448 | p_buf_1 = qmfs->v + qmfs->v_index; | ||
449 | p_buf_3 = p_buf_1 + 1280; | ||
450 | |||
451 | idx0 = 0; idx1 = 127; | ||
452 | for (n = 0; n < 32; n++) | ||
453 | { | ||
454 | p_buf_1[idx0] = p_buf_3[idx0] = real2[ n] - real1[ n]; idx0++; | ||
455 | p_buf_1[idx1] = p_buf_3[idx1] = real2[ n] + real1[ n]; idx1--; | ||
456 | p_buf_1[idx0] = p_buf_3[idx0] = imag2[31-n] + imag1[31-n]; idx0++; | ||
457 | p_buf_1[idx1] = p_buf_3[idx1] = imag2[31-n] - imag1[31-n]; idx1--; | ||
458 | } | ||
459 | |||
460 | p_buf_1 = qmfs->v + qmfs->v_index; | ||
461 | |||
462 | /* calculate 64 output samples and window */ | ||
463 | #ifdef CPU_ARM | ||
464 | const real_t *qtab = qmf_c; | ||
465 | real_t *pbuf = p_buf_1; | ||
466 | for (k = 0; k < 64; k++, pbuf++) | ||
467 | { | ||
468 | real_t *pout = &output[out++]; | ||
469 | asm volatile ( | ||
470 | "ldmia %[qtab]!, { r0-r3 } \n\t" | ||
471 | "ldr r4, [%[pbuf]] \n\t" | ||
472 | "ldr r7, [%[pbuf], #192*4] \n\t" | ||
473 | "smull r5, r6, r4, r0 \n\t" | ||
474 | "ldr r4, [%[pbuf], #256*4] \n\t" | ||
475 | "smlal r5, r6, r7, r1 \n\t" | ||
476 | "ldr r7, [%[pbuf], #448*4] \n\t" | ||
477 | "smlal r5, r6, r4, r2 \n\t" | ||
478 | "ldr r4, [%[pbuf], #512*4] \n\t" | ||
479 | "smlal r5, r6, r7, r3 \n\t" | ||
480 | |||
481 | "ldmia %[qtab]!, { r0-r3 } \n\t" | ||
482 | "ldr r7, [%[pbuf], #704*4] \n\t" | ||
483 | "smlal r5, r6, r4, r0 \n\t" | ||
484 | "ldr r4, [%[pbuf], #768*4] \n\t" | ||
485 | "smlal r5, r6, r7, r1 \n\t" | ||
486 | "ldr r7, [%[pbuf], #960*4] \n\t" | ||
487 | "smlal r5, r6, r4, r2 \n\t" | ||
488 | "mov r2, #1024*4 \n\t" | ||
489 | |||
490 | "ldmia %[qtab]!, { r0-r1 } \n\t" | ||
491 | "ldr r4, [%[pbuf], r2] \n\t" | ||
492 | "smlal r5, r6, r7, r3 \n\t" | ||
493 | "mov r2, #1216*4 \n\t" | ||
494 | "ldr r7, [%[pbuf], r2] \n\t" | ||
495 | "smlal r5, r6, r4, r0 \n\t" | ||
496 | "smlal r5, r6, r7, r1 \n\t" | ||
497 | |||
498 | "str r6, [%[pout]] \n" | ||
499 | : [qtab] "+r" (qtab) | ||
500 | : [pbuf] "r" (pbuf), [pout] "r" (pout) | ||
501 | : "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "memory"); | ||
502 | } | ||
503 | #elif defined CPU_COLDFIRE | ||
504 | const real_t *qtab = qmf_c; | ||
505 | real_t *pbuf = p_buf_1; | ||
506 | for (k = 0; k < 64; k++, pbuf++) | ||
507 | { | ||
508 | real_t *pout = &output[out++]; | ||
509 | asm volatile ( | ||
510 | "move.l (%[pbuf]), %%d5 \n" | ||
511 | |||
512 | "movem.l (%[qtab]), %%d0-%%d4 \n" | ||
513 | "mac.l %%d0, %%d5, (192*4, %[pbuf]), %%d5, %%acc0 \n" | ||
514 | "mac.l %%d1, %%d5, (256*4, %[pbuf]), %%d5, %%acc0 \n" | ||
515 | "mac.l %%d2, %%d5, (448*4, %[pbuf]), %%d5, %%acc0 \n" | ||
516 | "mac.l %%d3, %%d5, (512*4, %[pbuf]), %%d5, %%acc0 \n" | ||
517 | "mac.l %%d4, %%d5, (704*4, %[pbuf]), %%d5, %%acc0 \n" | ||
518 | "lea.l (20, %[qtab]), %[qtab] \n" | ||
519 | |||
520 | "movem.l (%[qtab]), %%d0-%%d4 \n" | ||
521 | "mac.l %%d0, %%d5, (768*4, %[pbuf]), %%d5, %%acc0 \n" | ||
522 | "mac.l %%d1, %%d5, (960*4, %[pbuf]), %%d5, %%acc0 \n" | ||
523 | "mac.l %%d2, %%d5, (1024*4, %[pbuf]), %%d5, %%acc0 \n" | ||
524 | "mac.l %%d3, %%d5, (1216*4, %[pbuf]), %%d5, %%acc0 \n" | ||
525 | "mac.l %%d4, %%d5, %%acc0 \n" | ||
526 | "lea.l (20, %[qtab]), %[qtab] \n" | ||
527 | |||
528 | "movclr.l %%acc0, %%d0 \n" | ||
529 | "move.l %%d0, (%[pout]) \n" | ||
530 | : [qtab] "+a" (qtab) | ||
531 | : [pbuf] "a" (pbuf), | ||
532 | [pout] "a" (pout) | ||
533 | : "d0", "d1", "d2", "d3", "d4", "d5", "memory"); | ||
534 | } | ||
535 | #else | ||
536 | for (k = 0; k < 64; k++) | ||
537 | { | ||
538 | idx0 = k*10; | ||
539 | output[out++] = FAAD_SYNTHESIS_SCALE( | ||
540 | MUL_F(p_buf_1[k ], qmf_c[idx0 ]) + | ||
541 | MUL_F(p_buf_1[k+ 192 ], qmf_c[idx0+1]) + | ||
542 | MUL_F(p_buf_1[k+ 256 ], qmf_c[idx0+2]) + | ||
543 | MUL_F(p_buf_1[k+ 256+192], qmf_c[idx0+3]) + | ||
544 | MUL_F(p_buf_1[k+ 512 ], qmf_c[idx0+4]) + | ||
545 | MUL_F(p_buf_1[k+ 512+192], qmf_c[idx0+5]) + | ||
546 | MUL_F(p_buf_1[k+ 768 ], qmf_c[idx0+6]) + | ||
547 | MUL_F(p_buf_1[k+ 768+192], qmf_c[idx0+7]) + | ||
548 | MUL_F(p_buf_1[k+1024 ], qmf_c[idx0+8]) + | ||
549 | MUL_F(p_buf_1[k+1024+192], qmf_c[idx0+9])); | ||
550 | } | ||
551 | #endif | ||
552 | |||
553 | /* update ringbuffer index */ | ||
554 | qmfs->v_index -= 128; | ||
555 | if (qmfs->v_index < 0) | ||
556 | qmfs->v_index = (1280 - 128); | ||
557 | } | ||
558 | } | ||
559 | #endif /* #ifdef SBR_LOW_POWER */ | ||
560 | |||
561 | #endif /* #ifdef SBR_DEC */ | ||
diff --git a/lib/rbcodec/codecs/libfaad/sbr_qmf.h b/lib/rbcodec/codecs/libfaad/sbr_qmf.h new file mode 100644 index 0000000000..87bfe5a9ef --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/sbr_qmf.h | |||
@@ -0,0 +1,47 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __SBR_QMF_H__ | ||
29 | #define __SBR_QMF_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | void sbr_qmf_analysis_32(sbr_info *sbr, qmfa_info *qmfa, const real_t *input, | ||
36 | qmf_t X[MAX_NTSR][64], uint8_t offset, uint8_t kx); | ||
37 | void sbr_qmf_synthesis_32(sbr_info *sbr, qmfs_info *qmfs, qmf_t X[MAX_NTSR][64], | ||
38 | real_t *output); | ||
39 | void sbr_qmf_synthesis_64(sbr_info *sbr, qmfs_info *qmfs, qmf_t X[MAX_NTSR][64], | ||
40 | real_t *output); | ||
41 | |||
42 | |||
43 | #ifdef __cplusplus | ||
44 | } | ||
45 | #endif | ||
46 | #endif | ||
47 | |||
diff --git a/lib/rbcodec/codecs/libfaad/sbr_qmf_c.h b/lib/rbcodec/codecs/libfaad/sbr_qmf_c.h new file mode 100644 index 0000000000..0ceb487bec --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/sbr_qmf_c.h | |||
@@ -0,0 +1,172 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __SBR_QMF_C_H__ | ||
29 | #define __SBR_QMF_C_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | |||
36 | #ifdef _MSC_VER | ||
37 | #pragma warning(disable:4305) | ||
38 | #pragma warning(disable:4244) | ||
39 | #endif | ||
40 | static const real_t qmf_c[640] ICONST_ATTR_FAAD_LARGE_IRAM MEM_ALIGN_ATTR = { | ||
41 | FRAC_CONST( 0.00000000000000), FRAC_CONST( 0.00262017586902), FRAC_CONST( 0.01327182200351), FRAC_CONST( 0.07035330735093), FRAC_CONST( 0.36115899031355), | ||
42 | FRAC_CONST( 0.85373856005937), FRAC_CONST(-0.36115899031355), FRAC_CONST( 0.07035330735093), FRAC_CONST(-0.01327182200351), FRAC_CONST( 0.00262017586902), | ||
43 | FRAC_CONST(-0.00055252865047), FRAC_CONST( 0.00278704643465), FRAC_CONST( 0.01439046660792), FRAC_CONST( 0.06896640131951), FRAC_CONST( 0.37237955463061), | ||
44 | FRAC_CONST( 0.85357205739107), FRAC_CONST(-0.34999141229310), FRAC_CONST( 0.07158263647903), FRAC_CONST(-0.01218499959508), FRAC_CONST( 0.00246256169126), | ||
45 | FRAC_CONST(-0.00056176925738), FRAC_CONST( 0.00294694477165), FRAC_CONST( 0.01554055533423), FRAC_CONST( 0.06745250215166), FRAC_CONST( 0.38363500139043), | ||
46 | FRAC_CONST( 0.85310209497017), FRAC_CONST(-0.33887226938665), FRAC_CONST( 0.07267746427299), FRAC_CONST(-0.01113155480321), FRAC_CONST( 0.00230172547746), | ||
47 | FRAC_CONST(-0.00049475180896), FRAC_CONST( 0.00311254206525), FRAC_CONST( 0.01673247129989), FRAC_CONST( 0.06576906686508), FRAC_CONST( 0.39492117615675), | ||
48 | FRAC_CONST( 0.85230470352147), FRAC_CONST(-0.32781137272105), FRAC_CONST( 0.07364060057620), FRAC_CONST(-0.01011502154986), FRAC_CONST( 0.00214615835557), | ||
49 | FRAC_CONST(-0.00048752279712), FRAC_CONST( 0.00327396134847), FRAC_CONST( 0.01794333813443), FRAC_CONST( 0.06394448059633), FRAC_CONST( 0.40623176767625), | ||
50 | FRAC_CONST( 0.85119715249343), FRAC_CONST(-0.31682789136456), FRAC_CONST( 0.07446643947564), FRAC_CONST(-0.00913253296085), FRAC_CONST( 0.00198411407369), | ||
51 | FRAC_CONST(-0.00048937912498), FRAC_CONST( 0.00344188741828), FRAC_CONST( 0.01918724313698), FRAC_CONST( 0.06196027790387), FRAC_CONST( 0.41756968968409), | ||
52 | FRAC_CONST( 0.84978051984268), FRAC_CONST(-0.30590985751916), FRAC_CONST( 0.07515762552870), FRAC_CONST(-0.00817982333726), FRAC_CONST( 0.00183482654224), | ||
53 | FRAC_CONST(-0.00050407143497), FRAC_CONST( 0.00360082681231), FRAC_CONST( 0.02045317933555), FRAC_CONST( 0.05981665708090), FRAC_CONST( 0.42891199207373), | ||
54 | FRAC_CONST( 0.84803157770763), FRAC_CONST(-0.29507167170646), FRAC_CONST( 0.07573057565061), FRAC_CONST(-0.00726158168517), FRAC_CONST( 0.00168680832531), | ||
55 | FRAC_CONST(-0.00052265642972), FRAC_CONST( 0.00376039229104), FRAC_CONST( 0.02174675502535), FRAC_CONST( 0.05751526919867), FRAC_CONST( 0.44025537543665), | ||
56 | FRAC_CONST( 0.84598184698206), FRAC_CONST(-0.28432141891085), FRAC_CONST( 0.07617483218536), FRAC_CONST(-0.00637922932685), FRAC_CONST( 0.00154432198471), | ||
57 | FRAC_CONST(-0.00054665656337), FRAC_CONST( 0.00392074323703), FRAC_CONST( 0.02306801692862), FRAC_CONST( 0.05504600343009), FRAC_CONST( 0.45159965356824), | ||
58 | FRAC_CONST( 0.84362382812005), FRAC_CONST(-0.27366340405625), FRAC_CONST( 0.07650507183194), FRAC_CONST(-0.00553372111088), FRAC_CONST( 0.00139024948272), | ||
59 | FRAC_CONST(-0.00056778025613), FRAC_CONST( 0.00408197531935), FRAC_CONST( 0.02441609920285), FRAC_CONST( 0.05240938217366), FRAC_CONST( 0.46293080852757), | ||
60 | FRAC_CONST( 0.84095413924722), FRAC_CONST(-0.26310532994603), FRAC_CONST( 0.07672049241746), FRAC_CONST(-0.00472225962400), FRAC_CONST( 0.00125778846475), | ||
61 | FRAC_CONST(-0.00058709304852), FRAC_CONST( 0.00422642692270), FRAC_CONST( 0.02578758475467), FRAC_CONST( 0.04959786763445), FRAC_CONST( 0.47424532146115), | ||
62 | FRAC_CONST( 0.83797173378865), FRAC_CONST(-0.25264803095722), FRAC_CONST( 0.07682300113923), FRAC_CONST(-0.00394011240522), FRAC_CONST( 0.00112501551307), | ||
63 | FRAC_CONST(-0.00061327473938), FRAC_CONST( 0.00437307196781), FRAC_CONST( 0.02718594296329), FRAC_CONST( 0.04663033051701), FRAC_CONST( 0.48552530911099), | ||
64 | FRAC_CONST( 0.83469373618402), FRAC_CONST(-0.24230168845974), FRAC_CONST( 0.07681739756964), FRAC_CONST(-0.00319337783900), FRAC_CONST( 0.00098859883015), | ||
65 | FRAC_CONST(-0.00063124935319), FRAC_CONST( 0.00452098527825), FRAC_CONST( 0.02860721736385), FRAC_CONST( 0.04347687821958), FRAC_CONST( 0.49677082545707), | ||
66 | FRAC_CONST( 0.83110384571520), FRAC_CONST(-0.23206908706791), FRAC_CONST( 0.07670934904245), FRAC_CONST(-0.00248267236449), FRAC_CONST( 0.00086084433262), | ||
67 | FRAC_CONST(-0.00065403333621), FRAC_CONST( 0.00466064606118), FRAC_CONST( 0.03005026574279), FRAC_CONST( 0.04014582784127), FRAC_CONST( 0.50798175000434), | ||
68 | FRAC_CONST( 0.82722753473360), FRAC_CONST(-0.22196526964149), FRAC_CONST( 0.07649921704119), FRAC_CONST(-0.00180394725893), FRAC_CONST( 0.00074580258865), | ||
69 | FRAC_CONST(-0.00067776907764), FRAC_CONST( 0.00479325608498), FRAC_CONST( 0.03150176087389), FRAC_CONST( 0.03664181168133), FRAC_CONST( 0.51912349702391), | ||
70 | FRAC_CONST( 0.82304198905409), FRAC_CONST(-0.21197358538056), FRAC_CONST( 0.07619924793396), FRAC_CONST(-0.00115681355227), FRAC_CONST( 0.00062393761391), | ||
71 | FRAC_CONST(-0.00069416146273), FRAC_CONST( 0.00491376035745), FRAC_CONST( 0.03297540810337), FRAC_CONST( 0.03295839306691), FRAC_CONST( 0.53022408956855), | ||
72 | FRAC_CONST( 0.81857760046468), FRAC_CONST(-0.20212501768103), FRAC_CONST( 0.07580083586584), FRAC_CONST(-0.00054642808664), FRAC_CONST( 0.00051073884952), | ||
73 | FRAC_CONST(-0.00071577364744), FRAC_CONST( 0.00503930226013), FRAC_CONST( 0.03446209487686), FRAC_CONST( 0.02908240060125), FRAC_CONST( 0.54125534487322), | ||
74 | FRAC_CONST( 0.81381912706217), FRAC_CONST(-0.19239667457267), FRAC_CONST( 0.07531373362019), FRAC_CONST(2.760451905e-005 ), FRAC_CONST( 0.0004026540216), | ||
75 | FRAC_CONST(-0.00072550431222), FRAC_CONST( 0.00514073539032), FRAC_CONST( 0.03596975605542), FRAC_CONST( 0.02503075618909), FRAC_CONST( 0.55220512585061), | ||
76 | FRAC_CONST( 0.80876950044491), FRAC_CONST(-0.18281725485142), FRAC_CONST( 0.07474525581194), FRAC_CONST( 0.00058322642480), FRAC_CONST( 0.00029495311041), | ||
77 | FRAC_CONST(-0.00074409418541), FRAC_CONST( 0.00524611661324), FRAC_CONST( 0.03748128504252), FRAC_CONST( 0.02079970728622), FRAC_CONST( 0.5630789140137), | ||
78 | FRAC_CONST( 0.80344857518505), FRAC_CONST(-0.17338081721706), FRAC_CONST( 0.07410036424342), FRAC_CONST( 0.00109023290512), FRAC_CONST( 0.00020430170688), | ||
79 | FRAC_CONST(-0.00074905980532), FRAC_CONST( 0.00534716811982), FRAC_CONST( 0.03900536794745), FRAC_CONST( 0.01637012582228), FRAC_CONST( 0.57385241316923), | ||
80 | FRAC_CONST( 0.79784664137700), FRAC_CONST(-0.16409588556669), FRAC_CONST( 0.07336202550803), FRAC_CONST( 0.00157846825768), FRAC_CONST( 0.00010943831274), | ||
81 | FRAC_CONST(-0.00076813719270), FRAC_CONST( 0.00541967759307), FRAC_CONST( 0.04053491705584), FRAC_CONST( 0.01176238327857), FRAC_CONST( 0.58454032354679), | ||
82 | FRAC_CONST( 0.79197358416424), FRAC_CONST(-0.15496070710605), FRAC_CONST( 0.07256825833083), FRAC_CONST( 0.00202741761850), FRAC_CONST(1.349497418e-005 ), | ||
83 | FRAC_CONST(-0.00077248485949), FRAC_CONST( 0.00548760401507), FRAC_CONST( 0.04206490946367), FRAC_CONST( 0.00696368621617), FRAC_CONST( 0.59511230862496), | ||
84 | FRAC_CONST( 0.78583531203920), FRAC_CONST(-0.14597664911870), FRAC_CONST( 0.07170026731102), FRAC_CONST( 0.00245085400321), FRAC_CONST(-6.173344072e-005), | ||
85 | FRAC_CONST(-0.00078343322877), FRAC_CONST( 0.00554757145088), FRAC_CONST( 0.04360975421304), FRAC_CONST( 0.00197656014503), FRAC_CONST( 0.60557835389180), | ||
86 | FRAC_CONST( 0.77942875190216), FRAC_CONST(-0.13715517611934), FRAC_CONST( 0.07076287107266), FRAC_CONST( 0.00284467578623), FRAC_CONST(-0.00014463809349), | ||
87 | FRAC_CONST(-0.00077798694927), FRAC_CONST( 0.00559380230045), FRAC_CONST( 0.04514884056413), FRAC_CONST(-0.00320868968304), FRAC_CONST( 0.61591099320291), | ||
88 | FRAC_CONST( 0.77277808813327), FRAC_CONST(-0.12850028503878), FRAC_CONST( 0.06976302447127), FRAC_CONST( 0.00320918858098), FRAC_CONST(-0.00020983373440), | ||
89 | FRAC_CONST(-0.00078036647100), FRAC_CONST( 0.00562206432097), FRAC_CONST( 0.04668430272642), FRAC_CONST(-0.00857117491366), FRAC_CONST( 0.62612426956055), | ||
90 | FRAC_CONST( 0.76586748650939), FRAC_CONST(-0.12000779846800), FRAC_CONST( 0.06870438283512), FRAC_CONST( 0.00354012465507), FRAC_CONST(-0.00028969811748), | ||
91 | FRAC_CONST(-0.00078014496257), FRAC_CONST( 0.00564551969164), FRAC_CONST( 0.04821657200672), FRAC_CONST(-0.01412888273558), FRAC_CONST( 0.63619801077286), | ||
92 | FRAC_CONST( 0.75870807608242), FRAC_CONST(-0.11168269317730), FRAC_CONST( 0.06760759851228), FRAC_CONST( 0.00384564081246), FRAC_CONST(-0.00035011758756), | ||
93 | FRAC_CONST(-0.00077579773310), FRAC_CONST( 0.00563891995151), FRAC_CONST( 0.04973857556014), FRAC_CONST(-0.01988341292573), FRAC_CONST( 0.64612696959461), | ||
94 | FRAC_CONST( 0.75131374561237), FRAC_CONST(-0.10353295311463), FRAC_CONST( 0.06643675122104), FRAC_CONST( 0.00412516423270), FRAC_CONST(-0.00040951214522), | ||
95 | FRAC_CONST(-0.00076307935757), FRAC_CONST( 0.00562661141932), FRAC_CONST( 0.05125561555216), FRAC_CONST(-0.02582272888064), FRAC_CONST( 0.65590163024671), | ||
96 | FRAC_CONST( 0.74368278636488), FRAC_CONST(-0.09555333528914), FRAC_CONST( 0.06522471064380), FRAC_CONST( 0.00438018617447), FRAC_CONST(-0.00046063254803), | ||
97 | FRAC_CONST(-0.00075300014201), FRAC_CONST( 0.00559171286630), FRAC_CONST( 0.05276307465207), FRAC_CONST(-0.03195312745332), FRAC_CONST( 0.66551398801627), | ||
98 | FRAC_CONST( 0.73582117582769), FRAC_CONST(-0.08775475365593), FRAC_CONST( 0.06397158980681), FRAC_CONST( 0.00460395301471), FRAC_CONST(-0.00051455722108), | ||
99 | FRAC_CONST(-0.00073193571525), FRAC_CONST( 0.00554043639400), FRAC_CONST( 0.05424527683589), FRAC_CONST(-0.03827765720822), FRAC_CONST( 0.67496631901712), | ||
100 | FRAC_CONST( 0.72774489002994), FRAC_CONST(-0.08013729344279), FRAC_CONST( 0.06268578081172), FRAC_CONST( 0.00481094690600), FRAC_CONST(-0.00055645763906), | ||
101 | FRAC_CONST(-0.00072153919876), FRAC_CONST( 0.00547537830770), FRAC_CONST( 0.05571736482138), FRAC_CONST(-0.04478068215856), FRAC_CONST( 0.68423532934598), | ||
102 | FRAC_CONST( 0.71944626349561), FRAC_CONST(-0.07269433008129), FRAC_CONST( 0.06134551717207), FRAC_CONST( 0.00498396877629), FRAC_CONST(-0.00059461189330), | ||
103 | FRAC_CONST(-0.00069179375372), FRAC_CONST( 0.00538389758970), FRAC_CONST( 0.05716164501299), FRAC_CONST(-0.05148041767934), FRAC_CONST( 0.69332823767032), | ||
104 | FRAC_CONST( 0.71094104263095), FRAC_CONST(-0.06544098531359), FRAC_CONST( 0.05998374801761), FRAC_CONST( 0.00513822754514), FRAC_CONST(-0.00063415949025), | ||
105 | FRAC_CONST(-0.00066504150893), FRAC_CONST( 0.00527157587272), FRAC_CONST( 0.05859156836260), FRAC_CONST(-0.05837053268336), FRAC_CONST( 0.70223887193539), | ||
106 | FRAC_CONST( 0.70223887193539), FRAC_CONST(-0.05837053268336), FRAC_CONST( 0.05859156836260), FRAC_CONST( 0.00527157587272), FRAC_CONST(-0.00066504150893), | ||
107 | FRAC_CONST(-0.00063415949025), FRAC_CONST( 0.00513822754514), FRAC_CONST( 0.05998374801761), FRAC_CONST(-0.06544098531359), FRAC_CONST( 0.71094104263095), | ||
108 | FRAC_CONST( 0.69332823767032), FRAC_CONST(-0.05148041767934), FRAC_CONST( 0.05716164501299), FRAC_CONST( 0.00538389758970), FRAC_CONST(-0.00069179375372), | ||
109 | FRAC_CONST(-0.00059461189330), FRAC_CONST( 0.00498396877629), FRAC_CONST( 0.06134551717207), FRAC_CONST(-0.07269433008129), FRAC_CONST( 0.71944626349561), | ||
110 | FRAC_CONST( 0.68423532934598), FRAC_CONST(-0.04478068215856), FRAC_CONST( 0.05571736482138), FRAC_CONST( 0.00547537830770), FRAC_CONST(-0.00072153919876), | ||
111 | FRAC_CONST(-0.00055645763906), FRAC_CONST( 0.00481094690600), FRAC_CONST( 0.06268578081172), FRAC_CONST(-0.08013729344279), FRAC_CONST( 0.72774489002994), | ||
112 | FRAC_CONST( 0.67496631901712), FRAC_CONST(-0.03827765720822), FRAC_CONST( 0.05424527683589), FRAC_CONST( 0.00554043639400), FRAC_CONST(-0.00073193571525), | ||
113 | FRAC_CONST(-0.00051455722108), FRAC_CONST( 0.00460395301471), FRAC_CONST( 0.06397158980681), FRAC_CONST(-0.08775475365593), FRAC_CONST( 0.73582117582769), | ||
114 | FRAC_CONST( 0.66551398801627), FRAC_CONST(-0.03195312745332), FRAC_CONST( 0.05276307465207), FRAC_CONST( 0.00559171286630), FRAC_CONST(-0.00075300014201), | ||
115 | FRAC_CONST(-0.00046063254803), FRAC_CONST( 0.00438018617447), FRAC_CONST( 0.06522471064380), FRAC_CONST(-0.09555333528914), FRAC_CONST( 0.74368278636488), | ||
116 | FRAC_CONST( 0.65590163024671), FRAC_CONST(-0.02582272888064), FRAC_CONST( 0.05125561555216), FRAC_CONST( 0.00562661141932), FRAC_CONST(-0.00076307935757), | ||
117 | FRAC_CONST(-0.00040951214522), FRAC_CONST( 0.00412516423270), FRAC_CONST( 0.06643675122104), FRAC_CONST(-0.10353295311463), FRAC_CONST( 0.75131374561237), | ||
118 | FRAC_CONST( 0.64612696959461), FRAC_CONST(-0.01988341292573), FRAC_CONST( 0.04973857556014), FRAC_CONST( 0.00563891995151), FRAC_CONST(-0.00077579773310), | ||
119 | FRAC_CONST(-0.00035011758756), FRAC_CONST( 0.00384564081246), FRAC_CONST( 0.06760759851228), FRAC_CONST(-0.11168269317730), FRAC_CONST( 0.75870807608242), | ||
120 | FRAC_CONST( 0.63619801077286), FRAC_CONST(-0.01412888273558), FRAC_CONST( 0.04821657200672), FRAC_CONST( 0.00564551969164), FRAC_CONST(-0.00078014496257), | ||
121 | FRAC_CONST(-0.00028969811748), FRAC_CONST( 0.00354012465507), FRAC_CONST( 0.06870438283512), FRAC_CONST(-0.12000779846800), FRAC_CONST( 0.76586748650939), | ||
122 | FRAC_CONST( 0.62612426956055), FRAC_CONST(-0.00857117491366), FRAC_CONST( 0.04668430272642), FRAC_CONST( 0.00562206432097), FRAC_CONST(-0.00078036647100), | ||
123 | FRAC_CONST(-0.00020983373440), FRAC_CONST( 0.00320918858098), FRAC_CONST( 0.06976302447127), FRAC_CONST(-0.12850028503878), FRAC_CONST( 0.77277808813327), | ||
124 | FRAC_CONST( 0.61591099320291), FRAC_CONST(-0.00320868968304), FRAC_CONST( 0.04514884056413), FRAC_CONST( 0.00559380230045), FRAC_CONST(-0.00077798694927), | ||
125 | FRAC_CONST(-0.00014463809349), FRAC_CONST( 0.00284467578623), FRAC_CONST( 0.07076287107266), FRAC_CONST(-0.13715517611934), FRAC_CONST( 0.77942875190216), | ||
126 | FRAC_CONST( 0.60557835389180), FRAC_CONST( 0.00197656014503), FRAC_CONST( 0.04360975421304), FRAC_CONST( 0.00554757145088), FRAC_CONST(-0.00078343322877), | ||
127 | FRAC_CONST(-6.173344072e-005), FRAC_CONST( 0.00245085400321), FRAC_CONST( 0.07170026731102), FRAC_CONST(-0.14597664911870), FRAC_CONST( 0.78583531203920), | ||
128 | FRAC_CONST( 0.59511230862496), FRAC_CONST( 0.00696368621617), FRAC_CONST( 0.04206490946367), FRAC_CONST( 0.00548760401507), FRAC_CONST(-0.00077248485949), | ||
129 | FRAC_CONST(1.349497418e-005 ), FRAC_CONST( 0.00202741761850), FRAC_CONST( 0.07256825833083), FRAC_CONST(-0.15496070710605), FRAC_CONST( 0.79197358416424), | ||
130 | FRAC_CONST( 0.58454032354679), FRAC_CONST( 0.01176238327857), FRAC_CONST( 0.04053491705584), FRAC_CONST( 0.00541967759307), FRAC_CONST(-0.00076813719270), | ||
131 | FRAC_CONST( 0.00010943831274), FRAC_CONST( 0.00157846825768), FRAC_CONST( 0.07336202550803), FRAC_CONST(-0.16409588556669), FRAC_CONST( 0.79784664137700), | ||
132 | FRAC_CONST( 0.57385241316923), FRAC_CONST( 0.01637012582228), FRAC_CONST( 0.03900536794745), FRAC_CONST( 0.00534716811982), FRAC_CONST(-0.00074905980532), | ||
133 | FRAC_CONST( 0.00020430170688), FRAC_CONST( 0.00109023290512), FRAC_CONST( 0.07410036424342), FRAC_CONST(-0.17338081721706), FRAC_CONST( 0.80344857518505), | ||
134 | FRAC_CONST( 0.56307891401370), FRAC_CONST( 0.02079970728622), FRAC_CONST( 0.03748128504252), FRAC_CONST( 0.00524611661324), FRAC_CONST(-0.00074409418541), | ||
135 | FRAC_CONST( 0.00029495311041), FRAC_CONST( 0.00058322642480), FRAC_CONST( 0.07474525581194), FRAC_CONST(-0.18281725485142), FRAC_CONST( 0.80876950044491), | ||
136 | FRAC_CONST( 0.55220512585061), FRAC_CONST( 0.02503075618909), FRAC_CONST( 0.03596975605542), FRAC_CONST( 0.00514073539032), FRAC_CONST(-0.00072550431222), | ||
137 | FRAC_CONST( 0.00040265402160), FRAC_CONST(2.760451905e-005 ), FRAC_CONST( 0.07531373362019), FRAC_CONST(-0.19239667457267), FRAC_CONST( 0.81381912706217), | ||
138 | FRAC_CONST( 0.54125534487322), FRAC_CONST( 0.02908240060125), FRAC_CONST( 0.03446209487686), FRAC_CONST( 0.00503930226013), FRAC_CONST(-0.00071577364744), | ||
139 | FRAC_CONST( 0.00051073884952), FRAC_CONST(-0.00054642808664), FRAC_CONST( 0.07580083586584), FRAC_CONST(-0.20212501768103), FRAC_CONST( 0.81857760046468), | ||
140 | FRAC_CONST( 0.53022408956855), FRAC_CONST( 0.03295839306691), FRAC_CONST( 0.03297540810337), FRAC_CONST( 0.00491376035745), FRAC_CONST(-0.00069416146273), | ||
141 | FRAC_CONST( 0.00062393761391), FRAC_CONST(-0.00115681355227), FRAC_CONST( 0.07619924793396), FRAC_CONST(-0.21197358538056), FRAC_CONST( 0.82304198905409), | ||
142 | FRAC_CONST( 0.51912349702391), FRAC_CONST( 0.03664181168133), FRAC_CONST( 0.03150176087389), FRAC_CONST( 0.00479325608498), FRAC_CONST(-0.00067776907764), | ||
143 | FRAC_CONST( 0.00074580258865), FRAC_CONST(-0.00180394725893), FRAC_CONST( 0.07649921704119), FRAC_CONST(-0.22196526964149), FRAC_CONST( 0.82722753473360), | ||
144 | FRAC_CONST( 0.50798175000434), FRAC_CONST( 0.04014582784127), FRAC_CONST( 0.03005026574279), FRAC_CONST( 0.00466064606118), FRAC_CONST(-0.00065403333621), | ||
145 | FRAC_CONST( 0.00086084433262), FRAC_CONST(-0.00248267236449), FRAC_CONST( 0.07670934904245), FRAC_CONST(-0.23206908706791), FRAC_CONST( 0.83110384571520), | ||
146 | FRAC_CONST( 0.49677082545707), FRAC_CONST( 0.04347687821958), FRAC_CONST( 0.02860721736385), FRAC_CONST( 0.00452098527825), FRAC_CONST(-0.00063124935319), | ||
147 | FRAC_CONST( 0.00098859883015), FRAC_CONST(-0.00319337783900), FRAC_CONST( 0.07681739756964), FRAC_CONST(-0.24230168845974), FRAC_CONST( 0.83469373618402), | ||
148 | FRAC_CONST( 0.48552530911099), FRAC_CONST( 0.04663033051701), FRAC_CONST( 0.02718594296329), FRAC_CONST( 0.00437307196781), FRAC_CONST(-0.00061327473938), | ||
149 | FRAC_CONST( 0.00112501551307), FRAC_CONST(-0.00394011240522), FRAC_CONST( 0.07682300113923), FRAC_CONST(-0.25264803095722), FRAC_CONST( 0.83797173378865), | ||
150 | FRAC_CONST( 0.47424532146115), FRAC_CONST( 0.04959786763445), FRAC_CONST( 0.02578758475467), FRAC_CONST( 0.00422642692270), FRAC_CONST(-0.00058709304852), | ||
151 | FRAC_CONST( 0.00125778846475), FRAC_CONST(-0.00472225962400), FRAC_CONST( 0.07672049241746), FRAC_CONST(-0.26310532994603), FRAC_CONST( 0.84095413924722), | ||
152 | FRAC_CONST( 0.46293080852757), FRAC_CONST( 0.05240938217366), FRAC_CONST( 0.02441609920285), FRAC_CONST( 0.00408197531935), FRAC_CONST(-0.00056778025613), | ||
153 | FRAC_CONST( 0.00139024948272), FRAC_CONST(-0.00553372111088), FRAC_CONST( 0.07650507183194), FRAC_CONST(-0.27366340405625), FRAC_CONST( 0.84362382812005), | ||
154 | FRAC_CONST( 0.45159965356824), FRAC_CONST( 0.05504600343009), FRAC_CONST( 0.02306801692862), FRAC_CONST( 0.00392074323703), FRAC_CONST(-0.00054665656337), | ||
155 | FRAC_CONST( 0.00154432198471), FRAC_CONST(-0.00637922932685), FRAC_CONST( 0.07617483218536), FRAC_CONST(-0.28432141891085), FRAC_CONST( 0.84598184698206), | ||
156 | FRAC_CONST( 0.44025537543665), FRAC_CONST( 0.05751526919867), FRAC_CONST( 0.02174675502535), FRAC_CONST( 0.00376039229104), FRAC_CONST(-0.00052265642972), | ||
157 | FRAC_CONST( 0.00168680832531), FRAC_CONST(-0.00726158168517), FRAC_CONST( 0.07573057565061), FRAC_CONST(-0.29507167170646), FRAC_CONST( 0.84803157770763), | ||
158 | FRAC_CONST( 0.42891199207373), FRAC_CONST( 0.05981665708090), FRAC_CONST( 0.02045317933555), FRAC_CONST( 0.00360082681231), FRAC_CONST(-0.00050407143497), | ||
159 | FRAC_CONST( 0.00183482654224), FRAC_CONST(-0.00817982333726), FRAC_CONST( 0.07515762552870), FRAC_CONST(-0.30590985751916), FRAC_CONST( 0.84978051984268), | ||
160 | FRAC_CONST( 0.41756968968409), FRAC_CONST( 0.06196027790387), FRAC_CONST( 0.01918724313698), FRAC_CONST( 0.00344188741828), FRAC_CONST(-0.00048937912498), | ||
161 | FRAC_CONST( 0.00198411407369), FRAC_CONST(-0.00913253296085), FRAC_CONST( 0.07446643947564), FRAC_CONST(-0.31682789136456), FRAC_CONST( 0.85119715249343), | ||
162 | FRAC_CONST( 0.40623176767625), FRAC_CONST( 0.06394448059633), FRAC_CONST( 0.01794333813443), FRAC_CONST( 0.00327396134847), FRAC_CONST(-0.00048752279712), | ||
163 | FRAC_CONST( 0.00214615835557), FRAC_CONST(-0.01011502154986), FRAC_CONST( 0.07364060057620), FRAC_CONST(-0.32781137272105), FRAC_CONST( 0.85230470352147), | ||
164 | FRAC_CONST( 0.39492117615675), FRAC_CONST( 0.06576906686508), FRAC_CONST( 0.01673247129989), FRAC_CONST( 0.00311254206525), FRAC_CONST(-0.00049475180896), | ||
165 | FRAC_CONST( 0.00230172547746), FRAC_CONST(-0.01113155480321), FRAC_CONST( 0.07267746427299), FRAC_CONST(-0.33887226938665), FRAC_CONST( 0.85310209497017), | ||
166 | FRAC_CONST( 0.38363500139043), FRAC_CONST( 0.06745250215166), FRAC_CONST( 0.01554055533423), FRAC_CONST( 0.00294694477165), FRAC_CONST(-0.00056176925738), | ||
167 | FRAC_CONST( 0.00246256169126), FRAC_CONST(-0.01218499959508), FRAC_CONST( 0.07158263647903), FRAC_CONST(-0.34999141229310), FRAC_CONST( 0.85357205739107), | ||
168 | FRAC_CONST( 0.37237955463061), FRAC_CONST( 0.06896640131951), FRAC_CONST( 0.01439046660792), FRAC_CONST( 0.00278704643465), FRAC_CONST(-0.00055252865047) | ||
169 | }; | ||
170 | |||
171 | #endif | ||
172 | |||
diff --git a/lib/rbcodec/codecs/libfaad/sbr_syntax.c b/lib/rbcodec/codecs/libfaad/sbr_syntax.c new file mode 100644 index 0000000000..519a37b137 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/sbr_syntax.c | |||
@@ -0,0 +1,868 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #include "common.h" | ||
29 | #include "structs.h" | ||
30 | |||
31 | #ifdef SBR_DEC | ||
32 | |||
33 | #include "sbr_syntax.h" | ||
34 | #include "syntax.h" | ||
35 | #include "sbr_huff.h" | ||
36 | #include "sbr_fbt.h" | ||
37 | #include "sbr_tf_grid.h" | ||
38 | #include "sbr_e_nf.h" | ||
39 | #include "bits.h" | ||
40 | #ifdef PS_DEC | ||
41 | #include "ps_dec.h" | ||
42 | #endif | ||
43 | #ifdef DRM_PS | ||
44 | #include "drm_dec.h" | ||
45 | #endif | ||
46 | #include "analysis.h" | ||
47 | |||
48 | /* static function declarations */ | ||
49 | static void sbr_header(bitfile *ld, sbr_info *sbr); | ||
50 | static uint8_t calc_sbr_tables(sbr_info *sbr, uint8_t start_freq, uint8_t stop_freq, | ||
51 | uint8_t samplerate_mode, uint8_t freq_scale, | ||
52 | uint8_t alter_scale, uint8_t xover_band); | ||
53 | static uint8_t sbr_data(bitfile *ld, sbr_info *sbr); | ||
54 | static uint16_t sbr_extension(bitfile *ld, sbr_info *sbr, | ||
55 | uint8_t bs_extension_id, uint16_t num_bits_left); | ||
56 | static uint8_t sbr_single_channel_element(bitfile *ld, sbr_info *sbr); | ||
57 | static uint8_t sbr_channel_pair_element(bitfile *ld, sbr_info *sbr); | ||
58 | static uint8_t sbr_grid(bitfile *ld, sbr_info *sbr, uint8_t ch); | ||
59 | static void sbr_dtdf(bitfile *ld, sbr_info *sbr, uint8_t ch); | ||
60 | static void invf_mode(bitfile *ld, sbr_info *sbr, uint8_t ch); | ||
61 | static void sinusoidal_coding(bitfile *ld, sbr_info *sbr, uint8_t ch); | ||
62 | |||
63 | |||
64 | static void sbr_reset(sbr_info *sbr) | ||
65 | { | ||
66 | #if 0 | ||
67 | printf("%d\n", sbr->bs_start_freq_prev); | ||
68 | printf("%d\n", sbr->bs_stop_freq_prev); | ||
69 | printf("%d\n", sbr->bs_freq_scale_prev); | ||
70 | printf("%d\n", sbr->bs_alter_scale_prev); | ||
71 | printf("%d\n", sbr->bs_xover_band_prev); | ||
72 | printf("%d\n\n", sbr->bs_noise_bands_prev); | ||
73 | #endif | ||
74 | |||
75 | /* if these are different from the previous frame: Reset = 1 */ | ||
76 | if ((sbr->bs_start_freq != sbr->bs_start_freq_prev) || | ||
77 | (sbr->bs_stop_freq != sbr->bs_stop_freq_prev) || | ||
78 | (sbr->bs_freq_scale != sbr->bs_freq_scale_prev) || | ||
79 | (sbr->bs_alter_scale != sbr->bs_alter_scale_prev) || | ||
80 | (sbr->bs_xover_band != sbr->bs_xover_band_prev) || | ||
81 | (sbr->bs_noise_bands != sbr->bs_noise_bands_prev)) | ||
82 | { | ||
83 | sbr->Reset = 1; | ||
84 | } else { | ||
85 | sbr->Reset = 0; | ||
86 | } | ||
87 | |||
88 | sbr->bs_start_freq_prev = sbr->bs_start_freq; | ||
89 | sbr->bs_stop_freq_prev = sbr->bs_stop_freq; | ||
90 | sbr->bs_freq_scale_prev = sbr->bs_freq_scale; | ||
91 | sbr->bs_alter_scale_prev = sbr->bs_alter_scale; | ||
92 | sbr->bs_xover_band_prev = sbr->bs_xover_band; | ||
93 | sbr->bs_noise_bands_prev = sbr->bs_noise_bands; | ||
94 | } | ||
95 | |||
96 | static uint8_t calc_sbr_tables(sbr_info *sbr, uint8_t start_freq, uint8_t stop_freq, | ||
97 | uint8_t samplerate_mode, uint8_t freq_scale, | ||
98 | uint8_t alter_scale, uint8_t xover_band) | ||
99 | { | ||
100 | uint8_t result = 0; | ||
101 | uint8_t k2; | ||
102 | |||
103 | /* calculate the Master Frequency Table */ | ||
104 | sbr->k0 = qmf_start_channel(start_freq, samplerate_mode, sbr->sample_rate); | ||
105 | k2 = qmf_stop_channel(stop_freq, sbr->sample_rate, sbr->k0); | ||
106 | |||
107 | /* check k0 and k2 */ | ||
108 | if (sbr->sample_rate >= 48000) | ||
109 | { | ||
110 | if ((k2 - sbr->k0) > 32) | ||
111 | result += 1; | ||
112 | } else if (sbr->sample_rate <= 32000) { | ||
113 | if ((k2 - sbr->k0) > 48) | ||
114 | result += 1; | ||
115 | } else { /* (sbr->sample_rate == 44100) */ | ||
116 | if ((k2 - sbr->k0) > 45) | ||
117 | result += 1; | ||
118 | } | ||
119 | |||
120 | if (freq_scale == 0) | ||
121 | { | ||
122 | result += master_frequency_table_fs0(sbr, sbr->k0, k2, alter_scale); | ||
123 | } else { | ||
124 | result += master_frequency_table(sbr, sbr->k0, k2, freq_scale, alter_scale); | ||
125 | } | ||
126 | result += derived_frequency_table(sbr, xover_band, k2); | ||
127 | |||
128 | result = (result > 0) ? 1 : 0; | ||
129 | |||
130 | return result; | ||
131 | } | ||
132 | |||
133 | /* table 2 */ | ||
134 | uint8_t sbr_extension_data(bitfile *ld, sbr_info *sbr, uint16_t cnt) | ||
135 | { | ||
136 | uint8_t result = 0; | ||
137 | uint16_t num_align_bits = 0; | ||
138 | uint16_t num_sbr_bits = (uint16_t)faad_get_processed_bits(ld); | ||
139 | |||
140 | uint8_t saved_start_freq, saved_samplerate_mode; | ||
141 | uint8_t saved_stop_freq, saved_freq_scale; | ||
142 | uint8_t saved_alter_scale, saved_xover_band; | ||
143 | |||
144 | #ifdef DRM | ||
145 | if (!sbr->Is_DRM_SBR) | ||
146 | #endif | ||
147 | { | ||
148 | uint8_t bs_extension_type = (uint8_t)faad_getbits(ld, 4 | ||
149 | DEBUGVAR(1,198,"sbr_bitstream(): bs_extension_type")); | ||
150 | |||
151 | if (bs_extension_type == EXT_SBR_DATA_CRC) | ||
152 | { | ||
153 | sbr->bs_sbr_crc_bits = (uint16_t)faad_getbits(ld, 10 | ||
154 | DEBUGVAR(1,199,"sbr_bitstream(): bs_sbr_crc_bits")); | ||
155 | } | ||
156 | } | ||
157 | |||
158 | /* save old header values, in case the new ones are corrupted */ | ||
159 | saved_start_freq = sbr->bs_start_freq; | ||
160 | saved_samplerate_mode = sbr->bs_samplerate_mode; | ||
161 | saved_stop_freq = sbr->bs_stop_freq; | ||
162 | saved_freq_scale = sbr->bs_freq_scale; | ||
163 | saved_alter_scale = sbr->bs_alter_scale; | ||
164 | saved_xover_band = sbr->bs_xover_band; | ||
165 | |||
166 | sbr->bs_header_flag = faad_get1bit(ld | ||
167 | DEBUGVAR(1,200,"sbr_bitstream(): bs_header_flag")); | ||
168 | |||
169 | if (sbr->bs_header_flag) | ||
170 | sbr_header(ld, sbr); | ||
171 | |||
172 | /* Reset? */ | ||
173 | sbr_reset(sbr); | ||
174 | |||
175 | /* first frame should have a header */ | ||
176 | //if (!(sbr->frame == 0 && sbr->bs_header_flag == 0)) | ||
177 | if (sbr->header_count != 0) | ||
178 | { | ||
179 | if (sbr->Reset || (sbr->bs_header_flag && sbr->just_seeked)) | ||
180 | { | ||
181 | uint8_t rt = calc_sbr_tables(sbr, sbr->bs_start_freq, sbr->bs_stop_freq, | ||
182 | sbr->bs_samplerate_mode, sbr->bs_freq_scale, | ||
183 | sbr->bs_alter_scale, sbr->bs_xover_band); | ||
184 | |||
185 | /* if an error occured with the new header values revert to the old ones */ | ||
186 | if (rt > 0) | ||
187 | { | ||
188 | calc_sbr_tables(sbr, saved_start_freq, saved_stop_freq, | ||
189 | saved_samplerate_mode, saved_freq_scale, | ||
190 | saved_alter_scale, saved_xover_band); | ||
191 | } | ||
192 | } | ||
193 | |||
194 | if (result == 0) | ||
195 | { | ||
196 | result = sbr_data(ld, sbr); | ||
197 | |||
198 | /* sbr_data() returning an error means that there was an error in | ||
199 | envelope_time_border_vector(). | ||
200 | In this case the old time border vector is saved and all the previous | ||
201 | data normally read after sbr_grid() is saved. | ||
202 | */ | ||
203 | /* to be on the safe side, calculate old sbr tables in case of error */ | ||
204 | if ((result > 0) && | ||
205 | (sbr->Reset || (sbr->bs_header_flag && sbr->just_seeked))) | ||
206 | { | ||
207 | calc_sbr_tables(sbr, saved_start_freq, saved_stop_freq, | ||
208 | saved_samplerate_mode, saved_freq_scale, | ||
209 | saved_alter_scale, saved_xover_band); | ||
210 | } | ||
211 | |||
212 | /* we should be able to safely set result to 0 now */ | ||
213 | result = 0; | ||
214 | } | ||
215 | } else { | ||
216 | result = 1; | ||
217 | } | ||
218 | |||
219 | #ifdef DRM | ||
220 | if (!sbr->Is_DRM_SBR) | ||
221 | #endif | ||
222 | { | ||
223 | num_sbr_bits = (uint16_t)faad_get_processed_bits(ld) - num_sbr_bits; | ||
224 | |||
225 | /* check if we read more bits then were available for sbr */ | ||
226 | if (8*cnt < num_sbr_bits) | ||
227 | return 1; | ||
228 | |||
229 | /* -4 does not apply, bs_extension_type is re-read in this function */ | ||
230 | num_align_bits = 8*cnt /*- 4*/ - num_sbr_bits; | ||
231 | |||
232 | while (num_align_bits > 7) | ||
233 | { | ||
234 | faad_getbits(ld, 8 | ||
235 | DEBUGVAR(1,999,"sbr_bitstream(): num_align_bits")); | ||
236 | num_align_bits -= 8; | ||
237 | } | ||
238 | faad_getbits(ld, num_align_bits | ||
239 | DEBUGVAR(1,999,"sbr_bitstream(): num_align_bits")); | ||
240 | } | ||
241 | |||
242 | return result; | ||
243 | } | ||
244 | |||
245 | /* table 3 */ | ||
246 | static void sbr_header(bitfile *ld, sbr_info *sbr) | ||
247 | { | ||
248 | uint8_t bs_header_extra_1, bs_header_extra_2; | ||
249 | |||
250 | sbr->header_count++; | ||
251 | |||
252 | sbr->bs_amp_res = faad_get1bit(ld | ||
253 | DEBUGVAR(1,203,"sbr_header(): bs_amp_res")); | ||
254 | |||
255 | /* bs_start_freq and bs_stop_freq must define a fequency band that does | ||
256 | not exceed 48 channels */ | ||
257 | sbr->bs_start_freq = (uint8_t)faad_getbits(ld, 4 | ||
258 | DEBUGVAR(1,204,"sbr_header(): bs_start_freq")); | ||
259 | sbr->bs_stop_freq = (uint8_t)faad_getbits(ld, 4 | ||
260 | DEBUGVAR(1,205,"sbr_header(): bs_stop_freq")); | ||
261 | sbr->bs_xover_band = (uint8_t)faad_getbits(ld, 3 | ||
262 | DEBUGVAR(1,206,"sbr_header(): bs_xover_band")); | ||
263 | faad_getbits(ld, 2 | ||
264 | DEBUGVAR(1,207,"sbr_header(): bs_reserved_bits_hdr")); | ||
265 | bs_header_extra_1 = (uint8_t)faad_get1bit(ld | ||
266 | DEBUGVAR(1,208,"sbr_header(): bs_header_extra_1")); | ||
267 | bs_header_extra_2 = (uint8_t)faad_get1bit(ld | ||
268 | DEBUGVAR(1,209,"sbr_header(): bs_header_extra_2")); | ||
269 | |||
270 | if (bs_header_extra_1) | ||
271 | { | ||
272 | sbr->bs_freq_scale = (uint8_t)faad_getbits(ld, 2 | ||
273 | DEBUGVAR(1,211,"sbr_header(): bs_freq_scale")); | ||
274 | sbr->bs_alter_scale = (uint8_t)faad_get1bit(ld | ||
275 | DEBUGVAR(1,212,"sbr_header(): bs_alter_scale")); | ||
276 | sbr->bs_noise_bands = (uint8_t)faad_getbits(ld, 2 | ||
277 | DEBUGVAR(1,213,"sbr_header(): bs_noise_bands")); | ||
278 | } else { | ||
279 | /* Default values */ | ||
280 | sbr->bs_freq_scale = 2; | ||
281 | sbr->bs_alter_scale = 1; | ||
282 | sbr->bs_noise_bands = 2; | ||
283 | } | ||
284 | |||
285 | if (bs_header_extra_2) | ||
286 | { | ||
287 | sbr->bs_limiter_bands = (uint8_t)faad_getbits(ld, 2 | ||
288 | DEBUGVAR(1,214,"sbr_header(): bs_limiter_bands")); | ||
289 | sbr->bs_limiter_gains = (uint8_t)faad_getbits(ld, 2 | ||
290 | DEBUGVAR(1,215,"sbr_header(): bs_limiter_gains")); | ||
291 | sbr->bs_interpol_freq = (uint8_t)faad_get1bit(ld | ||
292 | DEBUGVAR(1,216,"sbr_header(): bs_interpol_freq")); | ||
293 | sbr->bs_smoothing_mode = (uint8_t)faad_get1bit(ld | ||
294 | DEBUGVAR(1,217,"sbr_header(): bs_smoothing_mode")); | ||
295 | } else { | ||
296 | /* Default values */ | ||
297 | sbr->bs_limiter_bands = 2; | ||
298 | sbr->bs_limiter_gains = 2; | ||
299 | sbr->bs_interpol_freq = 1; | ||
300 | sbr->bs_smoothing_mode = 1; | ||
301 | } | ||
302 | |||
303 | #if 0 | ||
304 | /* print the header to screen */ | ||
305 | printf("bs_amp_res: %d\n", sbr->bs_amp_res); | ||
306 | printf("bs_start_freq: %d\n", sbr->bs_start_freq); | ||
307 | printf("bs_stop_freq: %d\n", sbr->bs_stop_freq); | ||
308 | printf("bs_xover_band: %d\n", sbr->bs_xover_band); | ||
309 | if (bs_header_extra_1) | ||
310 | { | ||
311 | printf("bs_freq_scale: %d\n", sbr->bs_freq_scale); | ||
312 | printf("bs_alter_scale: %d\n", sbr->bs_alter_scale); | ||
313 | printf("bs_noise_bands: %d\n", sbr->bs_noise_bands); | ||
314 | } | ||
315 | if (bs_header_extra_2) | ||
316 | { | ||
317 | printf("bs_limiter_bands: %d\n", sbr->bs_limiter_bands); | ||
318 | printf("bs_limiter_gains: %d\n", sbr->bs_limiter_gains); | ||
319 | printf("bs_interpol_freq: %d\n", sbr->bs_interpol_freq); | ||
320 | printf("bs_smoothing_mode: %d\n", sbr->bs_smoothing_mode); | ||
321 | } | ||
322 | printf("\n"); | ||
323 | #endif | ||
324 | } | ||
325 | |||
326 | /* table 4 */ | ||
327 | static uint8_t sbr_data(bitfile *ld, sbr_info *sbr) | ||
328 | { | ||
329 | uint8_t result; | ||
330 | #if 0 | ||
331 | sbr->bs_samplerate_mode = faad_get1bit(ld | ||
332 | DEBUGVAR(1,219,"sbr_data(): bs_samplerate_mode")); | ||
333 | #endif | ||
334 | |||
335 | sbr->rate = (sbr->bs_samplerate_mode) ? 2 : 1; | ||
336 | |||
337 | switch (sbr->id_aac) | ||
338 | { | ||
339 | case ID_SCE: | ||
340 | if ((result = sbr_single_channel_element(ld, sbr)) > 0) | ||
341 | return result; | ||
342 | break; | ||
343 | case ID_CPE: | ||
344 | if ((result = sbr_channel_pair_element(ld, sbr)) > 0) | ||
345 | return result; | ||
346 | break; | ||
347 | } | ||
348 | |||
349 | return 0; | ||
350 | } | ||
351 | |||
352 | /* table 5 */ | ||
353 | static uint8_t sbr_single_channel_element(bitfile *ld, sbr_info *sbr) | ||
354 | { | ||
355 | uint8_t result; | ||
356 | |||
357 | if (faad_get1bit(ld | ||
358 | DEBUGVAR(1,220,"sbr_single_channel_element(): bs_data_extra"))) | ||
359 | { | ||
360 | faad_getbits(ld, 4 | ||
361 | DEBUGVAR(1,221,"sbr_single_channel_element(): bs_reserved_bits_data")); | ||
362 | } | ||
363 | |||
364 | #ifdef DRM | ||
365 | /* bs_coupling, from sbr_channel_pair_base_element(bs_amp_res) */ | ||
366 | if (sbr->Is_DRM_SBR) | ||
367 | faad_get1bit(ld); | ||
368 | #endif | ||
369 | |||
370 | if ((result = sbr_grid(ld, sbr, 0)) > 0) | ||
371 | return result; | ||
372 | sbr_dtdf(ld, sbr, 0); | ||
373 | invf_mode(ld, sbr, 0); | ||
374 | sbr_envelope(ld, sbr, 0); | ||
375 | sbr_noise(ld, sbr, 0); | ||
376 | |||
377 | #ifndef FIXED_POINT | ||
378 | envelope_noise_dequantisation(sbr, 0); | ||
379 | #endif | ||
380 | |||
381 | memset(sbr->bs_add_harmonic[0], 0, 64*sizeof(uint8_t)); | ||
382 | |||
383 | sbr->bs_add_harmonic_flag[0] = faad_get1bit(ld | ||
384 | DEBUGVAR(1,223,"sbr_single_channel_element(): bs_add_harmonic_flag[0]")); | ||
385 | if (sbr->bs_add_harmonic_flag[0]) | ||
386 | sinusoidal_coding(ld, sbr, 0); | ||
387 | |||
388 | sbr->bs_extended_data = faad_get1bit(ld | ||
389 | DEBUGVAR(1,224,"sbr_single_channel_element(): bs_extended_data[0]")); | ||
390 | |||
391 | if (sbr->bs_extended_data) | ||
392 | { | ||
393 | uint16_t nr_bits_left; | ||
394 | #if (defined(PS_DEC) || defined(DRM_PS)) | ||
395 | uint8_t ps_ext_read = 0; | ||
396 | #endif | ||
397 | uint16_t cnt = (uint16_t)faad_getbits(ld, 4 | ||
398 | DEBUGVAR(1,225,"sbr_single_channel_element(): bs_extension_size")); | ||
399 | if (cnt == 15) | ||
400 | { | ||
401 | cnt += (uint16_t)faad_getbits(ld, 8 | ||
402 | DEBUGVAR(1,226,"sbr_single_channel_element(): bs_esc_count")); | ||
403 | } | ||
404 | |||
405 | nr_bits_left = 8 * cnt; | ||
406 | while (nr_bits_left > 7) | ||
407 | { | ||
408 | uint16_t tmp_nr_bits = 0; | ||
409 | |||
410 | sbr->bs_extension_id = (uint8_t)faad_getbits(ld, 2 | ||
411 | DEBUGVAR(1,227,"sbr_single_channel_element(): bs_extension_id")); | ||
412 | tmp_nr_bits += 2; | ||
413 | |||
414 | /* allow only 1 PS extension element per extension data */ | ||
415 | #if (defined(PS_DEC) || defined(DRM_PS)) | ||
416 | #if (defined(PS_DEC) && defined(DRM_PS)) | ||
417 | if (sbr->bs_extension_id == EXTENSION_ID_PS || sbr->bs_extension_id == DRM_PARAMETRIC_STEREO) | ||
418 | #else | ||
419 | #ifdef PS_DEC | ||
420 | if (sbr->bs_extension_id == EXTENSION_ID_PS) | ||
421 | #else | ||
422 | #ifdef DRM_PS | ||
423 | if (sbr->bs_extension_id == DRM_PARAMETRIC_STEREO) | ||
424 | #endif | ||
425 | #endif | ||
426 | #endif | ||
427 | { | ||
428 | if (ps_ext_read == 0) | ||
429 | { | ||
430 | ps_ext_read = 1; | ||
431 | } else { | ||
432 | /* to be safe make it 3, will switch to "default" | ||
433 | * in sbr_extension() */ | ||
434 | sbr->bs_extension_id = 3; | ||
435 | } | ||
436 | } | ||
437 | #endif | ||
438 | |||
439 | tmp_nr_bits += sbr_extension(ld, sbr, sbr->bs_extension_id, nr_bits_left); | ||
440 | |||
441 | /* check if the data read is bigger than the number of available bits */ | ||
442 | if (tmp_nr_bits > nr_bits_left) | ||
443 | return 1; | ||
444 | |||
445 | nr_bits_left -= tmp_nr_bits; | ||
446 | } | ||
447 | |||
448 | /* Corrigendum */ | ||
449 | if (nr_bits_left > 0) | ||
450 | { | ||
451 | faad_getbits(ld, nr_bits_left | ||
452 | DEBUGVAR(1,280,"sbr_single_channel_element(): nr_bits_left")); | ||
453 | } | ||
454 | } | ||
455 | |||
456 | return 0; | ||
457 | } | ||
458 | |||
459 | /* table 6 */ | ||
460 | static uint8_t sbr_channel_pair_element(bitfile *ld, sbr_info *sbr) | ||
461 | { | ||
462 | uint8_t n, result; | ||
463 | |||
464 | if (faad_get1bit(ld | ||
465 | DEBUGVAR(1,228,"sbr_single_channel_element(): bs_data_extra"))) | ||
466 | { | ||
467 | faad_getbits(ld, 4 | ||
468 | DEBUGVAR(1,228,"sbr_channel_pair_element(): bs_reserved_bits_data")); | ||
469 | faad_getbits(ld, 4 | ||
470 | DEBUGVAR(1,228,"sbr_channel_pair_element(): bs_reserved_bits_data")); | ||
471 | } | ||
472 | |||
473 | sbr->bs_coupling = faad_get1bit(ld | ||
474 | DEBUGVAR(1,228,"sbr_channel_pair_element(): bs_coupling")); | ||
475 | |||
476 | if (sbr->bs_coupling) | ||
477 | { | ||
478 | if ((result = sbr_grid(ld, sbr, 0)) > 0) | ||
479 | return result; | ||
480 | |||
481 | /* need to copy some data from left to right */ | ||
482 | sbr->bs_frame_class[1] = sbr->bs_frame_class[0]; | ||
483 | sbr->L_E[1] = sbr->L_E[0]; | ||
484 | sbr->L_Q[1] = sbr->L_Q[0]; | ||
485 | sbr->bs_pointer[1] = sbr->bs_pointer[0]; | ||
486 | |||
487 | for (n = 0; n <= sbr->L_E[0]; n++) | ||
488 | { | ||
489 | sbr->t_E[1][n] = sbr->t_E[0][n]; | ||
490 | sbr->f[1][n] = sbr->f[0][n]; | ||
491 | } | ||
492 | for (n = 0; n <= sbr->L_Q[0]; n++) | ||
493 | sbr->t_Q[1][n] = sbr->t_Q[0][n]; | ||
494 | |||
495 | sbr_dtdf(ld, sbr, 0); | ||
496 | sbr_dtdf(ld, sbr, 1); | ||
497 | invf_mode(ld, sbr, 0); | ||
498 | |||
499 | /* more copying */ | ||
500 | for (n = 0; n < sbr->N_Q; n++) | ||
501 | sbr->bs_invf_mode[1][n] = sbr->bs_invf_mode[0][n]; | ||
502 | |||
503 | sbr_envelope(ld, sbr, 0); | ||
504 | sbr_noise(ld, sbr, 0); | ||
505 | sbr_envelope(ld, sbr, 1); | ||
506 | sbr_noise(ld, sbr, 1); | ||
507 | |||
508 | memset(sbr->bs_add_harmonic[0], 0, 64*sizeof(uint8_t)); | ||
509 | memset(sbr->bs_add_harmonic[1], 0, 64*sizeof(uint8_t)); | ||
510 | |||
511 | sbr->bs_add_harmonic_flag[0] = faad_get1bit(ld | ||
512 | DEBUGVAR(1,231,"sbr_channel_pair_element(): bs_add_harmonic_flag[0]")); | ||
513 | if (sbr->bs_add_harmonic_flag[0]) | ||
514 | sinusoidal_coding(ld, sbr, 0); | ||
515 | |||
516 | sbr->bs_add_harmonic_flag[1] = faad_get1bit(ld | ||
517 | DEBUGVAR(1,232,"sbr_channel_pair_element(): bs_add_harmonic_flag[1]")); | ||
518 | if (sbr->bs_add_harmonic_flag[1]) | ||
519 | sinusoidal_coding(ld, sbr, 1); | ||
520 | } else { | ||
521 | uint8_t saved_t_E[6] = {0}, saved_t_Q[3] = {0}; | ||
522 | uint8_t saved_L_E = sbr->L_E[0]; | ||
523 | uint8_t saved_L_Q = sbr->L_Q[0]; | ||
524 | uint8_t saved_frame_class = sbr->bs_frame_class[0]; | ||
525 | |||
526 | for (n = 0; n < saved_L_E; n++) | ||
527 | saved_t_E[n] = sbr->t_E[0][n]; | ||
528 | for (n = 0; n < saved_L_Q; n++) | ||
529 | saved_t_Q[n] = sbr->t_Q[0][n]; | ||
530 | |||
531 | if ((result = sbr_grid(ld, sbr, 0)) > 0) | ||
532 | return result; | ||
533 | if ((result = sbr_grid(ld, sbr, 1)) > 0) | ||
534 | { | ||
535 | /* restore first channel data as well */ | ||
536 | sbr->bs_frame_class[0] = saved_frame_class; | ||
537 | sbr->L_E[0] = saved_L_E; | ||
538 | sbr->L_Q[0] = saved_L_Q; | ||
539 | for (n = 0; n < 6; n++) | ||
540 | sbr->t_E[0][n] = saved_t_E[n]; | ||
541 | for (n = 0; n < 3; n++) | ||
542 | sbr->t_Q[0][n] = saved_t_Q[n]; | ||
543 | |||
544 | return result; | ||
545 | } | ||
546 | sbr_dtdf(ld, sbr, 0); | ||
547 | sbr_dtdf(ld, sbr, 1); | ||
548 | invf_mode(ld, sbr, 0); | ||
549 | invf_mode(ld, sbr, 1); | ||
550 | sbr_envelope(ld, sbr, 0); | ||
551 | sbr_envelope(ld, sbr, 1); | ||
552 | sbr_noise(ld, sbr, 0); | ||
553 | sbr_noise(ld, sbr, 1); | ||
554 | |||
555 | memset(sbr->bs_add_harmonic[0], 0, 64*sizeof(uint8_t)); | ||
556 | memset(sbr->bs_add_harmonic[1], 0, 64*sizeof(uint8_t)); | ||
557 | |||
558 | sbr->bs_add_harmonic_flag[0] = faad_get1bit(ld | ||
559 | DEBUGVAR(1,239,"sbr_channel_pair_element(): bs_add_harmonic_flag[0]")); | ||
560 | if (sbr->bs_add_harmonic_flag[0]) | ||
561 | sinusoidal_coding(ld, sbr, 0); | ||
562 | |||
563 | sbr->bs_add_harmonic_flag[1] = faad_get1bit(ld | ||
564 | DEBUGVAR(1,240,"sbr_channel_pair_element(): bs_add_harmonic_flag[1]")); | ||
565 | if (sbr->bs_add_harmonic_flag[1]) | ||
566 | sinusoidal_coding(ld, sbr, 1); | ||
567 | } | ||
568 | #ifndef FIXED_POINT | ||
569 | envelope_noise_dequantisation(sbr, 0); | ||
570 | envelope_noise_dequantisation(sbr, 1); | ||
571 | |||
572 | if (sbr->bs_coupling) | ||
573 | unmap_envelope_noise(sbr); | ||
574 | #endif | ||
575 | |||
576 | sbr->bs_extended_data = faad_get1bit(ld | ||
577 | DEBUGVAR(1,233,"sbr_channel_pair_element(): bs_extended_data[0]")); | ||
578 | if (sbr->bs_extended_data) | ||
579 | { | ||
580 | uint16_t nr_bits_left; | ||
581 | uint16_t cnt = (uint16_t)faad_getbits(ld, 4 | ||
582 | DEBUGVAR(1,234,"sbr_channel_pair_element(): bs_extension_size")); | ||
583 | if (cnt == 15) | ||
584 | { | ||
585 | cnt += (uint16_t)faad_getbits(ld, 8 | ||
586 | DEBUGVAR(1,235,"sbr_channel_pair_element(): bs_esc_count")); | ||
587 | } | ||
588 | |||
589 | nr_bits_left = 8 * cnt; | ||
590 | while (nr_bits_left > 7) | ||
591 | { | ||
592 | uint16_t tmp_nr_bits = 0; | ||
593 | |||
594 | sbr->bs_extension_id = (uint8_t)faad_getbits(ld, 2 | ||
595 | DEBUGVAR(1,236,"sbr_channel_pair_element(): bs_extension_id")); | ||
596 | tmp_nr_bits += 2; | ||
597 | tmp_nr_bits += sbr_extension(ld, sbr, sbr->bs_extension_id, nr_bits_left); | ||
598 | |||
599 | /* check if the data read is bigger than the number of available bits */ | ||
600 | if (tmp_nr_bits > nr_bits_left) | ||
601 | return 1; | ||
602 | |||
603 | nr_bits_left -= tmp_nr_bits; | ||
604 | } | ||
605 | |||
606 | /* Corrigendum */ | ||
607 | if (nr_bits_left > 0) | ||
608 | { | ||
609 | faad_getbits(ld, nr_bits_left | ||
610 | DEBUGVAR(1,280,"sbr_channel_pair_element(): nr_bits_left")); | ||
611 | } | ||
612 | } | ||
613 | |||
614 | return 0; | ||
615 | } | ||
616 | |||
617 | /* integer log[2](x): input range [0,10) */ | ||
618 | static int8_t sbr_log2(const int8_t val) | ||
619 | { | ||
620 | int8_t log2tab[] = { 0, 0, 1, 2, 2, 3, 3, 3, 3, 4 }; | ||
621 | if (val < 10 && val >= 0) | ||
622 | return log2tab[val]; | ||
623 | else | ||
624 | return 0; | ||
625 | } | ||
626 | |||
627 | |||
628 | /* table 7 */ | ||
629 | static uint8_t sbr_grid(bitfile *ld, sbr_info *sbr, uint8_t ch) | ||
630 | { | ||
631 | uint8_t i, env, rel, result; | ||
632 | uint8_t bs_abs_bord, bs_abs_bord_1; | ||
633 | uint8_t bs_num_env = 0; | ||
634 | uint8_t saved_L_E = sbr->L_E[ch]; | ||
635 | uint8_t saved_L_Q = sbr->L_Q[ch]; | ||
636 | uint8_t saved_frame_class = sbr->bs_frame_class[ch]; | ||
637 | |||
638 | sbr->bs_frame_class[ch] = (uint8_t)faad_getbits(ld, 2 | ||
639 | DEBUGVAR(1,248,"sbr_grid(): bs_frame_class")); | ||
640 | |||
641 | switch (sbr->bs_frame_class[ch]) | ||
642 | { | ||
643 | case FIXFIX: | ||
644 | i = (uint8_t)faad_getbits(ld, 2 | ||
645 | DEBUGVAR(1,249,"sbr_grid(): bs_num_env_raw")); | ||
646 | |||
647 | bs_num_env = min(1 << i, 5); | ||
648 | |||
649 | i = (uint8_t)faad_get1bit(ld | ||
650 | DEBUGVAR(1,250,"sbr_grid(): bs_freq_res_flag")); | ||
651 | for (env = 0; env < bs_num_env; env++) | ||
652 | sbr->f[ch][env] = i; | ||
653 | |||
654 | sbr->abs_bord_lead[ch] = 0; | ||
655 | sbr->abs_bord_trail[ch] = sbr->numTimeSlots; | ||
656 | sbr->n_rel_lead[ch] = bs_num_env - 1; | ||
657 | sbr->n_rel_trail[ch] = 0; | ||
658 | break; | ||
659 | |||
660 | case FIXVAR: | ||
661 | bs_abs_bord = (uint8_t)faad_getbits(ld, 2 | ||
662 | DEBUGVAR(1,251,"sbr_grid(): bs_abs_bord")) + sbr->numTimeSlots; | ||
663 | bs_num_env = (uint8_t)faad_getbits(ld, 2 | ||
664 | DEBUGVAR(1,252,"sbr_grid(): bs_num_env")) + 1; | ||
665 | |||
666 | for (rel = 0; rel < bs_num_env-1; rel++) | ||
667 | { | ||
668 | sbr->bs_rel_bord[ch][rel] = 2 * (uint8_t)faad_getbits(ld, 2 | ||
669 | DEBUGVAR(1,253,"sbr_grid(): bs_rel_bord")) + 2; | ||
670 | } | ||
671 | i = sbr_log2(bs_num_env + 1); | ||
672 | sbr->bs_pointer[ch] = (uint8_t)faad_getbits(ld, i | ||
673 | DEBUGVAR(1,254,"sbr_grid(): bs_pointer")); | ||
674 | |||
675 | for (env = 0; env < bs_num_env; env++) | ||
676 | { | ||
677 | sbr->f[ch][bs_num_env - env - 1] = (uint8_t)faad_get1bit(ld | ||
678 | DEBUGVAR(1,255,"sbr_grid(): bs_freq_res")); | ||
679 | } | ||
680 | |||
681 | sbr->abs_bord_lead[ch] = 0; | ||
682 | sbr->abs_bord_trail[ch] = bs_abs_bord; | ||
683 | sbr->n_rel_lead[ch] = 0; | ||
684 | sbr->n_rel_trail[ch] = bs_num_env - 1; | ||
685 | break; | ||
686 | |||
687 | case VARFIX: | ||
688 | bs_abs_bord = (uint8_t)faad_getbits(ld, 2 | ||
689 | DEBUGVAR(1,256,"sbr_grid(): bs_abs_bord")); | ||
690 | bs_num_env = (uint8_t)faad_getbits(ld, 2 | ||
691 | DEBUGVAR(1,257,"sbr_grid(): bs_num_env")) + 1; | ||
692 | |||
693 | for (rel = 0; rel < bs_num_env-1; rel++) | ||
694 | { | ||
695 | sbr->bs_rel_bord[ch][rel] = 2 * (uint8_t)faad_getbits(ld, 2 | ||
696 | DEBUGVAR(1,258,"sbr_grid(): bs_rel_bord")) + 2; | ||
697 | } | ||
698 | i = sbr_log2(bs_num_env + 1); | ||
699 | sbr->bs_pointer[ch] = (uint8_t)faad_getbits(ld, i | ||
700 | DEBUGVAR(1,259,"sbr_grid(): bs_pointer")); | ||
701 | |||
702 | for (env = 0; env < bs_num_env; env++) | ||
703 | { | ||
704 | sbr->f[ch][env] = (uint8_t)faad_get1bit(ld | ||
705 | DEBUGVAR(1,260,"sbr_grid(): bs_freq_res")); | ||
706 | } | ||
707 | |||
708 | sbr->abs_bord_lead[ch] = bs_abs_bord; | ||
709 | sbr->abs_bord_trail[ch] = sbr->numTimeSlots; | ||
710 | sbr->n_rel_lead[ch] = bs_num_env - 1; | ||
711 | sbr->n_rel_trail[ch] = 0; | ||
712 | break; | ||
713 | |||
714 | case VARVAR: | ||
715 | bs_abs_bord = (uint8_t)faad_getbits(ld, 2 | ||
716 | DEBUGVAR(1,261,"sbr_grid(): bs_abs_bord_0")); | ||
717 | bs_abs_bord_1 = (uint8_t)faad_getbits(ld, 2 | ||
718 | DEBUGVAR(1,262,"sbr_grid(): bs_abs_bord_1")) + sbr->numTimeSlots; | ||
719 | sbr->bs_num_rel_0[ch] = (uint8_t)faad_getbits(ld, 2 | ||
720 | DEBUGVAR(1,263,"sbr_grid(): bs_num_rel_0")); | ||
721 | sbr->bs_num_rel_1[ch] = (uint8_t)faad_getbits(ld, 2 | ||
722 | DEBUGVAR(1,264,"sbr_grid(): bs_num_rel_1")); | ||
723 | |||
724 | bs_num_env = min(5, sbr->bs_num_rel_0[ch] + sbr->bs_num_rel_1[ch] + 1); | ||
725 | |||
726 | for (rel = 0; rel < sbr->bs_num_rel_0[ch]; rel++) | ||
727 | { | ||
728 | sbr->bs_rel_bord_0[ch][rel] = 2 * (uint8_t)faad_getbits(ld, 2 | ||
729 | DEBUGVAR(1,265,"sbr_grid(): bs_rel_bord")) + 2; | ||
730 | } | ||
731 | for(rel = 0; rel < sbr->bs_num_rel_1[ch]; rel++) | ||
732 | { | ||
733 | sbr->bs_rel_bord_1[ch][rel] = 2 * (uint8_t)faad_getbits(ld, 2 | ||
734 | DEBUGVAR(1,266,"sbr_grid(): bs_rel_bord")) + 2; | ||
735 | } | ||
736 | i = sbr_log2(sbr->bs_num_rel_0[ch] + sbr->bs_num_rel_1[ch] + 2); | ||
737 | sbr->bs_pointer[ch] = (uint8_t)faad_getbits(ld, i | ||
738 | DEBUGVAR(1,267,"sbr_grid(): bs_pointer")); | ||
739 | |||
740 | for (env = 0; env < bs_num_env; env++) | ||
741 | { | ||
742 | sbr->f[ch][env] = (uint8_t)faad_get1bit(ld | ||
743 | DEBUGVAR(1,268,"sbr_grid(): bs_freq_res")); | ||
744 | } | ||
745 | |||
746 | sbr->abs_bord_lead[ch] = bs_abs_bord; | ||
747 | sbr->abs_bord_trail[ch] = bs_abs_bord_1; | ||
748 | sbr->n_rel_lead[ch] = sbr->bs_num_rel_0[ch]; | ||
749 | sbr->n_rel_trail[ch] = sbr->bs_num_rel_1[ch]; | ||
750 | break; | ||
751 | } | ||
752 | |||
753 | if (sbr->bs_frame_class[ch] == VARVAR) | ||
754 | sbr->L_E[ch] = min(bs_num_env, 5); | ||
755 | else | ||
756 | sbr->L_E[ch] = min(bs_num_env, 4); | ||
757 | |||
758 | if (sbr->L_E[ch] <= 0) | ||
759 | return 1; | ||
760 | |||
761 | if (sbr->L_E[ch] > 1) | ||
762 | sbr->L_Q[ch] = 2; | ||
763 | else | ||
764 | sbr->L_Q[ch] = 1; | ||
765 | |||
766 | /* TODO: this code can probably be integrated into the code above! */ | ||
767 | if ((result = envelope_time_border_vector(sbr, ch)) > 0) | ||
768 | { | ||
769 | sbr->bs_frame_class[ch] = saved_frame_class; | ||
770 | sbr->L_E[ch] = saved_L_E; | ||
771 | sbr->L_Q[ch] = saved_L_Q; | ||
772 | return result; | ||
773 | } | ||
774 | noise_floor_time_border_vector(sbr, ch); | ||
775 | |||
776 | #if 0 | ||
777 | for (env = 0; env < bs_num_env; env++) | ||
778 | { | ||
779 | printf("freq_res[ch:%d][env:%d]: %d\n", ch, env, sbr->f[ch][env]); | ||
780 | } | ||
781 | #endif | ||
782 | |||
783 | return 0; | ||
784 | } | ||
785 | |||
786 | /* table 8 */ | ||
787 | static void sbr_dtdf(bitfile *ld, sbr_info *sbr, uint8_t ch) | ||
788 | { | ||
789 | uint8_t i; | ||
790 | |||
791 | for (i = 0; i < sbr->L_E[ch]; i++) | ||
792 | { | ||
793 | sbr->bs_df_env[ch][i] = faad_get1bit(ld | ||
794 | DEBUGVAR(1,269,"sbr_dtdf(): bs_df_env")); | ||
795 | } | ||
796 | |||
797 | for (i = 0; i < sbr->L_Q[ch]; i++) | ||
798 | { | ||
799 | sbr->bs_df_noise[ch][i] = faad_get1bit(ld | ||
800 | DEBUGVAR(1,270,"sbr_dtdf(): bs_df_noise")); | ||
801 | } | ||
802 | } | ||
803 | |||
804 | /* table 9 */ | ||
805 | static void invf_mode(bitfile *ld, sbr_info *sbr, uint8_t ch) | ||
806 | { | ||
807 | uint8_t n; | ||
808 | |||
809 | for (n = 0; n < sbr->N_Q; n++) | ||
810 | { | ||
811 | sbr->bs_invf_mode[ch][n] = (uint8_t)faad_getbits(ld, 2 | ||
812 | DEBUGVAR(1,271,"invf_mode(): bs_invf_mode")); | ||
813 | } | ||
814 | } | ||
815 | |||
816 | static uint16_t sbr_extension(bitfile *ld, sbr_info *sbr, | ||
817 | uint8_t bs_extension_id, uint16_t num_bits_left) | ||
818 | { | ||
819 | #ifdef PS_DEC | ||
820 | uint8_t header; | ||
821 | uint16_t ret; | ||
822 | #endif | ||
823 | |||
824 | (void)num_bits_left; | ||
825 | switch (bs_extension_id) | ||
826 | { | ||
827 | #ifdef PS_DEC | ||
828 | case EXTENSION_ID_PS: | ||
829 | ret = ps_data(&sbr->ps, ld, &header); | ||
830 | |||
831 | /* enable PS if and only if: a header has been decoded */ | ||
832 | if (sbr->ps_used == 0 && header == 1) | ||
833 | { | ||
834 | sbr->ps_used = 1; | ||
835 | } | ||
836 | |||
837 | return ret; | ||
838 | #endif | ||
839 | #ifdef DRM_PS | ||
840 | case DRM_PARAMETRIC_STEREO: | ||
841 | sbr->ps_used = 1; | ||
842 | if (!sbr->drm_ps) | ||
843 | { | ||
844 | sbr->drm_ps = drm_ps_init(); | ||
845 | } | ||
846 | return drm_ps_data(sbr->drm_ps, ld); | ||
847 | #endif | ||
848 | default: | ||
849 | sbr->bs_extension_data = (uint8_t)faad_getbits(ld, 6 | ||
850 | DEBUGVAR(1,279,"sbr_single_channel_element(): bs_extension_data")); | ||
851 | return 6; | ||
852 | } | ||
853 | } | ||
854 | |||
855 | /* table 12 */ | ||
856 | static void sinusoidal_coding(bitfile *ld, sbr_info *sbr, uint8_t ch) | ||
857 | { | ||
858 | uint8_t n; | ||
859 | |||
860 | for (n = 0; n < sbr->N_high; n++) | ||
861 | { | ||
862 | sbr->bs_add_harmonic[ch][n] = faad_get1bit(ld | ||
863 | DEBUGVAR(1,278,"sinusoidal_coding(): bs_add_harmonic")); | ||
864 | } | ||
865 | } | ||
866 | |||
867 | |||
868 | #endif /* SBR_DEC */ | ||
diff --git a/lib/rbcodec/codecs/libfaad/sbr_syntax.h b/lib/rbcodec/codecs/libfaad/sbr_syntax.h new file mode 100644 index 0000000000..33aecaaf73 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/sbr_syntax.h | |||
@@ -0,0 +1,64 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __SBR_SYNTAX_H__ | ||
29 | #define __SBR_SYNTAX_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | #include "bits.h" | ||
36 | |||
37 | #define T_HFGEN 8 | ||
38 | #define T_HFADJ 2 | ||
39 | |||
40 | #define EXT_SBR_DATA 13 | ||
41 | #define EXT_SBR_DATA_CRC 14 | ||
42 | |||
43 | #define FIXFIX 0 | ||
44 | #define FIXVAR 1 | ||
45 | #define VARFIX 2 | ||
46 | #define VARVAR 3 | ||
47 | |||
48 | #define LO_RES 0 | ||
49 | #define HI_RES 1 | ||
50 | |||
51 | #define NO_TIME_SLOTS_960 15 | ||
52 | #define NO_TIME_SLOTS 16 | ||
53 | #define RATE 2 | ||
54 | |||
55 | #define NOISE_FLOOR_OFFSET 6 | ||
56 | |||
57 | |||
58 | uint8_t sbr_extension_data(bitfile *ld, sbr_info *sbr, uint16_t cnt); | ||
59 | |||
60 | #ifdef __cplusplus | ||
61 | } | ||
62 | #endif | ||
63 | #endif /* __SBR_SYNTAX_H__ */ | ||
64 | |||
diff --git a/lib/rbcodec/codecs/libfaad/sbr_tf_grid.c b/lib/rbcodec/codecs/libfaad/sbr_tf_grid.c new file mode 100644 index 0000000000..2c21173490 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/sbr_tf_grid.c | |||
@@ -0,0 +1,259 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | /* Time/Frequency grid */ | ||
29 | |||
30 | #include "common.h" | ||
31 | #include "structs.h" | ||
32 | |||
33 | #ifdef SBR_DEC | ||
34 | |||
35 | #include <stdlib.h> | ||
36 | |||
37 | #include "sbr_syntax.h" | ||
38 | #include "sbr_tf_grid.h" | ||
39 | |||
40 | |||
41 | /* static function declarations */ | ||
42 | #if 0 | ||
43 | static int16_t rel_bord_lead(sbr_info *sbr, uint8_t ch, uint8_t l); | ||
44 | static int16_t rel_bord_trail(sbr_info *sbr, uint8_t ch, uint8_t l); | ||
45 | #endif | ||
46 | static uint8_t middleBorder(sbr_info *sbr, uint8_t ch); | ||
47 | |||
48 | |||
49 | /* function constructs new time border vector */ | ||
50 | /* first build into temp vector to be able to use previous vector on error */ | ||
51 | uint8_t envelope_time_border_vector(sbr_info *sbr, uint8_t ch) | ||
52 | { | ||
53 | uint8_t l, temp; | ||
54 | int8_t border; | ||
55 | uint8_t t_E_temp[6] = {0}; | ||
56 | |||
57 | t_E_temp[0] = sbr->rate * sbr->abs_bord_lead[ch]; | ||
58 | t_E_temp[sbr->L_E[ch]] = sbr->rate * sbr->abs_bord_trail[ch]; | ||
59 | |||
60 | switch (sbr->bs_frame_class[ch]) | ||
61 | { | ||
62 | case FIXFIX: | ||
63 | switch (sbr->L_E[ch]) | ||
64 | { | ||
65 | case 4: | ||
66 | temp = (int) (sbr->numTimeSlots / 4); | ||
67 | t_E_temp[3] = sbr->rate * 3 * temp; | ||
68 | t_E_temp[2] = sbr->rate * 2 * temp; | ||
69 | t_E_temp[1] = sbr->rate * temp; | ||
70 | break; | ||
71 | case 2: | ||
72 | t_E_temp[1] = sbr->rate * (int) (sbr->numTimeSlots / 2); | ||
73 | break; | ||
74 | default: | ||
75 | break; | ||
76 | } | ||
77 | break; | ||
78 | |||
79 | case FIXVAR: | ||
80 | if (sbr->L_E[ch] > 1) | ||
81 | { | ||
82 | int8_t i = sbr->L_E[ch]; | ||
83 | border = sbr->abs_bord_trail[ch]; | ||
84 | |||
85 | for (l = 0; l < (sbr->L_E[ch] - 1); l++) | ||
86 | { | ||
87 | if (border < sbr->bs_rel_bord[ch][l]) | ||
88 | return 1; | ||
89 | |||
90 | border -= sbr->bs_rel_bord[ch][l]; | ||
91 | t_E_temp[--i] = sbr->rate * border; | ||
92 | } | ||
93 | } | ||
94 | break; | ||
95 | |||
96 | case VARFIX: | ||
97 | if (sbr->L_E[ch] > 1) | ||
98 | { | ||
99 | int8_t i = 1; | ||
100 | border = sbr->abs_bord_lead[ch]; | ||
101 | |||
102 | for (l = 0; l < (sbr->L_E[ch] - 1); l++) | ||
103 | { | ||
104 | border += sbr->bs_rel_bord[ch][l]; | ||
105 | |||
106 | if (sbr->rate * border + sbr->tHFAdj > sbr->numTimeSlotsRate+sbr->tHFGen) | ||
107 | return 1; | ||
108 | |||
109 | t_E_temp[i++] = sbr->rate * border; | ||
110 | } | ||
111 | } | ||
112 | break; | ||
113 | |||
114 | case VARVAR: | ||
115 | if (sbr->bs_num_rel_0[ch]) | ||
116 | { | ||
117 | int8_t i = 1; | ||
118 | border = sbr->abs_bord_lead[ch]; | ||
119 | |||
120 | for (l = 0; l < sbr->bs_num_rel_0[ch]; l++) | ||
121 | { | ||
122 | border += sbr->bs_rel_bord_0[ch][l]; | ||
123 | |||
124 | if (sbr->rate * border + sbr->tHFAdj > sbr->numTimeSlotsRate+sbr->tHFGen) | ||
125 | return 1; | ||
126 | |||
127 | t_E_temp[i++] = sbr->rate * border; | ||
128 | } | ||
129 | } | ||
130 | |||
131 | if (sbr->bs_num_rel_1[ch]) | ||
132 | { | ||
133 | int8_t i = sbr->L_E[ch]; | ||
134 | border = sbr->abs_bord_trail[ch]; | ||
135 | |||
136 | for (l = 0; l < sbr->bs_num_rel_1[ch]; l++) | ||
137 | { | ||
138 | if (border < sbr->bs_rel_bord_1[ch][l]) | ||
139 | return 1; | ||
140 | |||
141 | border -= sbr->bs_rel_bord_1[ch][l]; | ||
142 | t_E_temp[--i] = sbr->rate * border; | ||
143 | } | ||
144 | } | ||
145 | break; | ||
146 | } | ||
147 | |||
148 | /* no error occured, we can safely use this t_E vector */ | ||
149 | for (l = 0; l < 6; l++) | ||
150 | { | ||
151 | sbr->t_E[ch][l] = t_E_temp[l]; | ||
152 | } | ||
153 | |||
154 | return 0; | ||
155 | } | ||
156 | |||
157 | void noise_floor_time_border_vector(sbr_info *sbr, uint8_t ch) | ||
158 | { | ||
159 | sbr->t_Q[ch][0] = sbr->t_E[ch][0]; | ||
160 | |||
161 | if (sbr->L_E[ch] == 1) | ||
162 | { | ||
163 | sbr->t_Q[ch][1] = sbr->t_E[ch][1]; | ||
164 | sbr->t_Q[ch][2] = 0; | ||
165 | } else { | ||
166 | uint8_t index = middleBorder(sbr, ch); | ||
167 | sbr->t_Q[ch][1] = sbr->t_E[ch][index]; | ||
168 | sbr->t_Q[ch][2] = sbr->t_E[ch][sbr->L_E[ch]]; | ||
169 | } | ||
170 | } | ||
171 | |||
172 | #if 0 | ||
173 | static int16_t rel_bord_lead(sbr_info *sbr, uint8_t ch, uint8_t l) | ||
174 | { | ||
175 | uint8_t i; | ||
176 | int16_t acc = 0; | ||
177 | |||
178 | switch (sbr->bs_frame_class[ch]) | ||
179 | { | ||
180 | case FIXFIX: | ||
181 | return sbr->numTimeSlots/sbr->L_E[ch]; | ||
182 | case FIXVAR: | ||
183 | return 0; | ||
184 | case VARFIX: | ||
185 | for (i = 0; i < l; i++) | ||
186 | { | ||
187 | acc += sbr->bs_rel_bord[ch][i]; | ||
188 | } | ||
189 | return acc; | ||
190 | case VARVAR: | ||
191 | for (i = 0; i < l; i++) | ||
192 | { | ||
193 | acc += sbr->bs_rel_bord_0[ch][i]; | ||
194 | } | ||
195 | return acc; | ||
196 | } | ||
197 | |||
198 | return 0; | ||
199 | } | ||
200 | |||
201 | static int16_t rel_bord_trail(sbr_info *sbr, uint8_t ch, uint8_t l) | ||
202 | { | ||
203 | uint8_t i; | ||
204 | int16_t acc = 0; | ||
205 | |||
206 | switch (sbr->bs_frame_class[ch]) | ||
207 | { | ||
208 | case FIXFIX: | ||
209 | case VARFIX: | ||
210 | return 0; | ||
211 | case FIXVAR: | ||
212 | for (i = 0; i < l; i++) | ||
213 | { | ||
214 | acc += sbr->bs_rel_bord[ch][i]; | ||
215 | } | ||
216 | return acc; | ||
217 | case VARVAR: | ||
218 | for (i = 0; i < l; i++) | ||
219 | { | ||
220 | acc += sbr->bs_rel_bord_1[ch][i]; | ||
221 | } | ||
222 | return acc; | ||
223 | } | ||
224 | |||
225 | return 0; | ||
226 | } | ||
227 | #endif | ||
228 | |||
229 | static uint8_t middleBorder(sbr_info *sbr, uint8_t ch) | ||
230 | { | ||
231 | int8_t retval = 0; | ||
232 | |||
233 | switch (sbr->bs_frame_class[ch]) | ||
234 | { | ||
235 | case FIXFIX: | ||
236 | retval = sbr->L_E[ch]/2; | ||
237 | break; | ||
238 | case VARFIX: | ||
239 | if (sbr->bs_pointer[ch] == 0) | ||
240 | retval = 1; | ||
241 | else if (sbr->bs_pointer[ch] == 1) | ||
242 | retval = sbr->L_E[ch] - 1; | ||
243 | else | ||
244 | retval = sbr->bs_pointer[ch] - 1; | ||
245 | break; | ||
246 | case FIXVAR: | ||
247 | case VARVAR: | ||
248 | if (sbr->bs_pointer[ch] > 1) | ||
249 | retval = sbr->L_E[ch] + 1 - sbr->bs_pointer[ch]; | ||
250 | else | ||
251 | retval = sbr->L_E[ch] - 1; | ||
252 | break; | ||
253 | } | ||
254 | |||
255 | return (retval > 0) ? retval : 0; | ||
256 | } | ||
257 | |||
258 | |||
259 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/sbr_tf_grid.h b/lib/rbcodec/codecs/libfaad/sbr_tf_grid.h new file mode 100644 index 0000000000..b7a6b32290 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/sbr_tf_grid.h | |||
@@ -0,0 +1,44 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __SBR_TF_GRID_H__ | ||
29 | #define __SBR_TF_GRID_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | |||
36 | uint8_t envelope_time_border_vector(sbr_info *sbr, uint8_t ch); | ||
37 | void noise_floor_time_border_vector(sbr_info *sbr, uint8_t ch); | ||
38 | |||
39 | |||
40 | #ifdef __cplusplus | ||
41 | } | ||
42 | #endif | ||
43 | #endif | ||
44 | |||
diff --git a/lib/rbcodec/codecs/libfaad/sine_win.h b/lib/rbcodec/codecs/libfaad/sine_win.h new file mode 100644 index 0000000000..3e042f15f7 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/sine_win.h | |||
@@ -0,0 +1,4301 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __SINE_WIN_H__ | ||
29 | #define __SINE_WIN_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | #ifdef _MSC_VER | ||
36 | #pragma warning(disable:4305) | ||
37 | #pragma warning(disable:4244) | ||
38 | #endif | ||
39 | |||
40 | static const real_t sine_long_1024[] ICONST_ATTR MEM_ALIGN_ATTR = | ||
41 | { | ||
42 | FRAC_CONST(0.00076699031874270449), | ||
43 | FRAC_CONST(0.002300969151425805), | ||
44 | FRAC_CONST(0.0038349425697062275), | ||
45 | FRAC_CONST(0.0053689069639963425), | ||
46 | FRAC_CONST(0.0069028587247297558), | ||
47 | FRAC_CONST(0.0084367942423697988), | ||
48 | FRAC_CONST(0.0099707099074180308), | ||
49 | FRAC_CONST(0.011504602110422714), | ||
50 | FRAC_CONST(0.013038467241987334), | ||
51 | FRAC_CONST(0.014572301692779064), | ||
52 | FRAC_CONST(0.016106101853537287), | ||
53 | FRAC_CONST(0.017639864115082053), | ||
54 | FRAC_CONST(0.019173584868322623), | ||
55 | FRAC_CONST(0.020707260504265895), | ||
56 | FRAC_CONST(0.022240887414024961), | ||
57 | FRAC_CONST(0.023774461988827555), | ||
58 | FRAC_CONST(0.025307980620024571), | ||
59 | FRAC_CONST(0.026841439699098531), | ||
60 | FRAC_CONST(0.028374835617672099), | ||
61 | FRAC_CONST(0.029908164767516555), | ||
62 | FRAC_CONST(0.031441423540560301), | ||
63 | FRAC_CONST(0.032974608328897335), | ||
64 | FRAC_CONST(0.03450771552479575), | ||
65 | FRAC_CONST(0.036040741520706229), | ||
66 | FRAC_CONST(0.037573682709270494), | ||
67 | FRAC_CONST(0.039106535483329888), | ||
68 | FRAC_CONST(0.040639296235933736), | ||
69 | FRAC_CONST(0.042171961360347947), | ||
70 | FRAC_CONST(0.043704527250063421), | ||
71 | FRAC_CONST(0.04523699029880459), | ||
72 | FRAC_CONST(0.046769346900537863), | ||
73 | FRAC_CONST(0.048301593449480144), | ||
74 | FRAC_CONST(0.049833726340107277), | ||
75 | FRAC_CONST(0.051365741967162593), | ||
76 | FRAC_CONST(0.052897636725665324), | ||
77 | FRAC_CONST(0.054429407010919133), | ||
78 | FRAC_CONST(0.055961049218520569), | ||
79 | FRAC_CONST(0.057492559744367566), | ||
80 | FRAC_CONST(0.059023934984667931), | ||
81 | FRAC_CONST(0.060555171335947788), | ||
82 | FRAC_CONST(0.062086265195060088), | ||
83 | FRAC_CONST(0.063617212959193106), | ||
84 | FRAC_CONST(0.065148011025878833), | ||
85 | FRAC_CONST(0.066678655793001557), | ||
86 | FRAC_CONST(0.068209143658806329), | ||
87 | FRAC_CONST(0.069739471021907307), | ||
88 | FRAC_CONST(0.071269634281296401), | ||
89 | FRAC_CONST(0.072799629836351673), | ||
90 | FRAC_CONST(0.074329454086845756), | ||
91 | FRAC_CONST(0.075859103432954447), | ||
92 | FRAC_CONST(0.077388574275265049), | ||
93 | FRAC_CONST(0.078917863014784942), | ||
94 | FRAC_CONST(0.080446966052950014), | ||
95 | FRAC_CONST(0.081975879791633066), | ||
96 | FRAC_CONST(0.083504600633152432), | ||
97 | FRAC_CONST(0.085033124980280275), | ||
98 | FRAC_CONST(0.08656144923625117), | ||
99 | FRAC_CONST(0.088089569804770507), | ||
100 | FRAC_CONST(0.089617483090022959), | ||
101 | FRAC_CONST(0.091145185496681005), | ||
102 | FRAC_CONST(0.09267267342991331), | ||
103 | FRAC_CONST(0.094199943295393204), | ||
104 | FRAC_CONST(0.095726991499307162), | ||
105 | FRAC_CONST(0.097253814448363271), | ||
106 | FRAC_CONST(0.098780408549799623), | ||
107 | FRAC_CONST(0.10030677021139286), | ||
108 | FRAC_CONST(0.10183289584146653), | ||
109 | FRAC_CONST(0.10335878184889961), | ||
110 | FRAC_CONST(0.10488442464313497), | ||
111 | FRAC_CONST(0.10640982063418768), | ||
112 | FRAC_CONST(0.10793496623265365), | ||
113 | FRAC_CONST(0.10945985784971798), | ||
114 | FRAC_CONST(0.11098449189716339), | ||
115 | FRAC_CONST(0.11250886478737869), | ||
116 | FRAC_CONST(0.1140329729333672), | ||
117 | FRAC_CONST(0.11555681274875526), | ||
118 | FRAC_CONST(0.11708038064780059), | ||
119 | FRAC_CONST(0.11860367304540072), | ||
120 | FRAC_CONST(0.1201266863571015), | ||
121 | FRAC_CONST(0.12164941699910553), | ||
122 | FRAC_CONST(0.12317186138828048), | ||
123 | FRAC_CONST(0.12469401594216764), | ||
124 | FRAC_CONST(0.12621587707899035), | ||
125 | FRAC_CONST(0.12773744121766231), | ||
126 | FRAC_CONST(0.12925870477779614), | ||
127 | FRAC_CONST(0.13077966417971171), | ||
128 | FRAC_CONST(0.13230031584444465), | ||
129 | FRAC_CONST(0.13382065619375472), | ||
130 | FRAC_CONST(0.13534068165013421), | ||
131 | FRAC_CONST(0.13686038863681638), | ||
132 | FRAC_CONST(0.13837977357778389), | ||
133 | FRAC_CONST(0.13989883289777721), | ||
134 | FRAC_CONST(0.14141756302230302), | ||
135 | FRAC_CONST(0.14293596037764267), | ||
136 | FRAC_CONST(0.14445402139086047), | ||
137 | FRAC_CONST(0.14597174248981221), | ||
138 | FRAC_CONST(0.14748912010315357), | ||
139 | FRAC_CONST(0.14900615066034845), | ||
140 | FRAC_CONST(0.1505228305916774), | ||
141 | FRAC_CONST(0.15203915632824605), | ||
142 | FRAC_CONST(0.15355512430199345), | ||
143 | FRAC_CONST(0.15507073094570051), | ||
144 | FRAC_CONST(0.15658597269299843), | ||
145 | FRAC_CONST(0.15810084597837698), | ||
146 | FRAC_CONST(0.15961534723719306), | ||
147 | FRAC_CONST(0.16112947290567881), | ||
148 | FRAC_CONST(0.16264321942095031), | ||
149 | FRAC_CONST(0.16415658322101581), | ||
150 | FRAC_CONST(0.16566956074478412), | ||
151 | FRAC_CONST(0.16718214843207294), | ||
152 | FRAC_CONST(0.16869434272361733), | ||
153 | FRAC_CONST(0.17020614006107807), | ||
154 | FRAC_CONST(0.17171753688704997), | ||
155 | FRAC_CONST(0.17322852964507032), | ||
156 | FRAC_CONST(0.1747391147796272), | ||
157 | FRAC_CONST(0.17624928873616788), | ||
158 | FRAC_CONST(0.17775904796110717), | ||
159 | FRAC_CONST(0.17926838890183575), | ||
160 | FRAC_CONST(0.18077730800672859), | ||
161 | FRAC_CONST(0.1822858017251533), | ||
162 | FRAC_CONST(0.18379386650747845), | ||
163 | FRAC_CONST(0.1853014988050819), | ||
164 | FRAC_CONST(0.18680869507035927), | ||
165 | FRAC_CONST(0.18831545175673212), | ||
166 | FRAC_CONST(0.18982176531865641), | ||
167 | FRAC_CONST(0.1913276322116309), | ||
168 | FRAC_CONST(0.19283304889220523), | ||
169 | FRAC_CONST(0.1943380118179886), | ||
170 | FRAC_CONST(0.19584251744765785), | ||
171 | FRAC_CONST(0.19734656224096592), | ||
172 | FRAC_CONST(0.19885014265875009), | ||
173 | FRAC_CONST(0.20035325516294045), | ||
174 | FRAC_CONST(0.20185589621656805), | ||
175 | FRAC_CONST(0.20335806228377332), | ||
176 | FRAC_CONST(0.20485974982981442), | ||
177 | FRAC_CONST(0.20636095532107551), | ||
178 | FRAC_CONST(0.20786167522507507), | ||
179 | FRAC_CONST(0.20936190601047416), | ||
180 | FRAC_CONST(0.21086164414708486), | ||
181 | FRAC_CONST(0.21236088610587842), | ||
182 | FRAC_CONST(0.21385962835899375), | ||
183 | FRAC_CONST(0.21535786737974555), | ||
184 | FRAC_CONST(0.21685559964263262), | ||
185 | FRAC_CONST(0.21835282162334632), | ||
186 | FRAC_CONST(0.2198495297987787), | ||
187 | FRAC_CONST(0.22134572064703081), | ||
188 | FRAC_CONST(0.22284139064742112), | ||
189 | FRAC_CONST(0.2243365362804936), | ||
190 | FRAC_CONST(0.22583115402802617), | ||
191 | FRAC_CONST(0.22732524037303886), | ||
192 | FRAC_CONST(0.22881879179980222), | ||
193 | FRAC_CONST(0.23031180479384544), | ||
194 | FRAC_CONST(0.23180427584196478), | ||
195 | FRAC_CONST(0.23329620143223159), | ||
196 | FRAC_CONST(0.23478757805400097), | ||
197 | FRAC_CONST(0.23627840219791957), | ||
198 | FRAC_CONST(0.23776867035593419), | ||
199 | FRAC_CONST(0.23925837902129998), | ||
200 | FRAC_CONST(0.24074752468858843), | ||
201 | FRAC_CONST(0.24223610385369601), | ||
202 | FRAC_CONST(0.24372411301385216), | ||
203 | FRAC_CONST(0.24521154866762754), | ||
204 | FRAC_CONST(0.24669840731494241), | ||
205 | FRAC_CONST(0.24818468545707478), | ||
206 | FRAC_CONST(0.24967037959666857), | ||
207 | FRAC_CONST(0.25115548623774192), | ||
208 | FRAC_CONST(0.25264000188569552), | ||
209 | FRAC_CONST(0.25412392304732062), | ||
210 | FRAC_CONST(0.25560724623080738), | ||
211 | FRAC_CONST(0.25708996794575312), | ||
212 | FRAC_CONST(0.25857208470317034), | ||
213 | FRAC_CONST(0.26005359301549519), | ||
214 | FRAC_CONST(0.26153448939659552), | ||
215 | FRAC_CONST(0.263014770361779), | ||
216 | FRAC_CONST(0.26449443242780163), | ||
217 | FRAC_CONST(0.26597347211287559), | ||
218 | FRAC_CONST(0.26745188593667762), | ||
219 | FRAC_CONST(0.26892967042035726), | ||
220 | FRAC_CONST(0.27040682208654482), | ||
221 | FRAC_CONST(0.27188333745935972), | ||
222 | FRAC_CONST(0.27335921306441868), | ||
223 | FRAC_CONST(0.27483444542884394), | ||
224 | FRAC_CONST(0.27630903108127108), | ||
225 | FRAC_CONST(0.27778296655185769), | ||
226 | FRAC_CONST(0.27925624837229118), | ||
227 | FRAC_CONST(0.28072887307579719), | ||
228 | FRAC_CONST(0.28220083719714756), | ||
229 | FRAC_CONST(0.28367213727266843), | ||
230 | FRAC_CONST(0.28514276984024867), | ||
231 | FRAC_CONST(0.28661273143934779), | ||
232 | FRAC_CONST(0.28808201861100413), | ||
233 | FRAC_CONST(0.28955062789784303), | ||
234 | FRAC_CONST(0.29101855584408509), | ||
235 | FRAC_CONST(0.29248579899555388), | ||
236 | FRAC_CONST(0.29395235389968466), | ||
237 | FRAC_CONST(0.29541821710553201), | ||
238 | FRAC_CONST(0.29688338516377827), | ||
239 | FRAC_CONST(0.2983478546267414), | ||
240 | FRAC_CONST(0.29981162204838335), | ||
241 | FRAC_CONST(0.30127468398431795), | ||
242 | FRAC_CONST(0.30273703699181914), | ||
243 | FRAC_CONST(0.30419867762982911), | ||
244 | FRAC_CONST(0.30565960245896612), | ||
245 | FRAC_CONST(0.3071198080415331), | ||
246 | FRAC_CONST(0.30857929094152509), | ||
247 | FRAC_CONST(0.31003804772463789), | ||
248 | FRAC_CONST(0.31149607495827591), | ||
249 | FRAC_CONST(0.3129533692115602), | ||
250 | FRAC_CONST(0.31440992705533666), | ||
251 | FRAC_CONST(0.31586574506218396), | ||
252 | FRAC_CONST(0.31732081980642174), | ||
253 | FRAC_CONST(0.31877514786411848), | ||
254 | FRAC_CONST(0.32022872581309986), | ||
255 | FRAC_CONST(0.32168155023295658), | ||
256 | FRAC_CONST(0.32313361770505233), | ||
257 | FRAC_CONST(0.32458492481253215), | ||
258 | FRAC_CONST(0.32603546814033024), | ||
259 | FRAC_CONST(0.327485244275178), | ||
260 | FRAC_CONST(0.3289342498056122), | ||
261 | FRAC_CONST(0.33038248132198278), | ||
262 | FRAC_CONST(0.33182993541646111), | ||
263 | FRAC_CONST(0.33327660868304793), | ||
264 | FRAC_CONST(0.33472249771758122), | ||
265 | FRAC_CONST(0.33616759911774452), | ||
266 | FRAC_CONST(0.33761190948307462), | ||
267 | FRAC_CONST(0.33905542541496964), | ||
268 | FRAC_CONST(0.34049814351669716), | ||
269 | FRAC_CONST(0.34194006039340219), | ||
270 | FRAC_CONST(0.34338117265211504), | ||
271 | FRAC_CONST(0.34482147690175929), | ||
272 | FRAC_CONST(0.34626096975316001), | ||
273 | FRAC_CONST(0.34769964781905138), | ||
274 | FRAC_CONST(0.34913750771408497), | ||
275 | FRAC_CONST(0.35057454605483751), | ||
276 | FRAC_CONST(0.35201075945981908), | ||
277 | FRAC_CONST(0.35344614454948081), | ||
278 | FRAC_CONST(0.35488069794622279), | ||
279 | FRAC_CONST(0.35631441627440241), | ||
280 | FRAC_CONST(0.3577472961603419), | ||
281 | FRAC_CONST(0.3591793342323365), | ||
282 | FRAC_CONST(0.36061052712066227), | ||
283 | FRAC_CONST(0.36204087145758418), | ||
284 | FRAC_CONST(0.36347036387736376), | ||
285 | FRAC_CONST(0.36489900101626732), | ||
286 | FRAC_CONST(0.36632677951257359), | ||
287 | FRAC_CONST(0.36775369600658198), | ||
288 | FRAC_CONST(0.36917974714062002), | ||
289 | FRAC_CONST(0.37060492955905167), | ||
290 | FRAC_CONST(0.37202923990828501), | ||
291 | FRAC_CONST(0.3734526748367803), | ||
292 | FRAC_CONST(0.37487523099505754), | ||
293 | FRAC_CONST(0.37629690503570479), | ||
294 | FRAC_CONST(0.37771769361338564), | ||
295 | FRAC_CONST(0.37913759338484732), | ||
296 | FRAC_CONST(0.38055660100892852), | ||
297 | FRAC_CONST(0.38197471314656722), | ||
298 | FRAC_CONST(0.38339192646080866), | ||
299 | FRAC_CONST(0.38480823761681288), | ||
300 | FRAC_CONST(0.38622364328186298), | ||
301 | FRAC_CONST(0.38763814012537273), | ||
302 | FRAC_CONST(0.38905172481889438), | ||
303 | FRAC_CONST(0.39046439403612659), | ||
304 | FRAC_CONST(0.39187614445292235), | ||
305 | FRAC_CONST(0.3932869727472964), | ||
306 | FRAC_CONST(0.39469687559943356), | ||
307 | FRAC_CONST(0.39610584969169627), | ||
308 | FRAC_CONST(0.39751389170863233), | ||
309 | FRAC_CONST(0.39892099833698291), | ||
310 | FRAC_CONST(0.40032716626569009), | ||
311 | FRAC_CONST(0.40173239218590501), | ||
312 | FRAC_CONST(0.4031366727909953), | ||
313 | FRAC_CONST(0.404540004776553), | ||
314 | FRAC_CONST(0.40594238484040251), | ||
315 | FRAC_CONST(0.40734380968260797), | ||
316 | FRAC_CONST(0.40874427600548136), | ||
317 | FRAC_CONST(0.41014378051359024), | ||
318 | FRAC_CONST(0.41154231991376522), | ||
319 | FRAC_CONST(0.41293989091510808), | ||
320 | FRAC_CONST(0.4143364902289991), | ||
321 | FRAC_CONST(0.41573211456910536), | ||
322 | FRAC_CONST(0.41712676065138787), | ||
323 | FRAC_CONST(0.4185204251941097), | ||
324 | FRAC_CONST(0.41991310491784362), | ||
325 | FRAC_CONST(0.42130479654547964), | ||
326 | FRAC_CONST(0.42269549680223295), | ||
327 | FRAC_CONST(0.42408520241565156), | ||
328 | FRAC_CONST(0.4254739101156238), | ||
329 | FRAC_CONST(0.42686161663438643), | ||
330 | FRAC_CONST(0.42824831870653196), | ||
331 | FRAC_CONST(0.42963401306901638), | ||
332 | FRAC_CONST(0.43101869646116703), | ||
333 | FRAC_CONST(0.43240236562469014), | ||
334 | FRAC_CONST(0.43378501730367852), | ||
335 | FRAC_CONST(0.43516664824461926), | ||
336 | FRAC_CONST(0.4365472551964012), | ||
337 | FRAC_CONST(0.43792683491032286), | ||
338 | FRAC_CONST(0.43930538414009995), | ||
339 | FRAC_CONST(0.4406828996418729), | ||
340 | FRAC_CONST(0.4420593781742147), | ||
341 | FRAC_CONST(0.44343481649813848), | ||
342 | FRAC_CONST(0.44480921137710488), | ||
343 | FRAC_CONST(0.44618255957703007), | ||
344 | FRAC_CONST(0.44755485786629301), | ||
345 | FRAC_CONST(0.44892610301574326), | ||
346 | FRAC_CONST(0.45029629179870861), | ||
347 | FRAC_CONST(0.45166542099100249), | ||
348 | FRAC_CONST(0.45303348737093158), | ||
349 | FRAC_CONST(0.45440048771930358), | ||
350 | FRAC_CONST(0.45576641881943464), | ||
351 | FRAC_CONST(0.45713127745715698), | ||
352 | FRAC_CONST(0.45849506042082627), | ||
353 | FRAC_CONST(0.45985776450132954), | ||
354 | FRAC_CONST(0.46121938649209238), | ||
355 | FRAC_CONST(0.46257992318908681), | ||
356 | FRAC_CONST(0.46393937139083852), | ||
357 | FRAC_CONST(0.4652977278984346), | ||
358 | FRAC_CONST(0.46665498951553092), | ||
359 | FRAC_CONST(0.46801115304835983), | ||
360 | FRAC_CONST(0.46936621530573752), | ||
361 | FRAC_CONST(0.4707201730990716), | ||
362 | FRAC_CONST(0.47207302324236866), | ||
363 | FRAC_CONST(0.47342476255224153), | ||
364 | FRAC_CONST(0.47477538784791712), | ||
365 | FRAC_CONST(0.47612489595124358), | ||
366 | FRAC_CONST(0.47747328368669806), | ||
367 | FRAC_CONST(0.47882054788139389), | ||
368 | FRAC_CONST(0.48016668536508839), | ||
369 | FRAC_CONST(0.48151169297018986), | ||
370 | FRAC_CONST(0.48285556753176567), | ||
371 | FRAC_CONST(0.48419830588754903), | ||
372 | FRAC_CONST(0.48553990487794696), | ||
373 | FRAC_CONST(0.48688036134604734), | ||
374 | FRAC_CONST(0.48821967213762679), | ||
375 | FRAC_CONST(0.48955783410115744), | ||
376 | FRAC_CONST(0.49089484408781509), | ||
377 | FRAC_CONST(0.49223069895148602), | ||
378 | FRAC_CONST(0.49356539554877477), | ||
379 | FRAC_CONST(0.49489893073901126), | ||
380 | FRAC_CONST(0.49623130138425825), | ||
381 | FRAC_CONST(0.49756250434931915), | ||
382 | FRAC_CONST(0.49889253650174459), | ||
383 | FRAC_CONST(0.50022139471184068), | ||
384 | FRAC_CONST(0.50154907585267539), | ||
385 | FRAC_CONST(0.50287557680008699), | ||
386 | FRAC_CONST(0.50420089443269034), | ||
387 | FRAC_CONST(0.50552502563188539), | ||
388 | FRAC_CONST(0.50684796728186321), | ||
389 | FRAC_CONST(0.5081697162696146), | ||
390 | FRAC_CONST(0.50949026948493636), | ||
391 | FRAC_CONST(0.51080962382043904), | ||
392 | FRAC_CONST(0.51212777617155469), | ||
393 | FRAC_CONST(0.51344472343654346), | ||
394 | FRAC_CONST(0.5147604625165012), | ||
395 | FRAC_CONST(0.51607499031536663), | ||
396 | FRAC_CONST(0.51738830373992906), | ||
397 | FRAC_CONST(0.51870039969983495), | ||
398 | FRAC_CONST(0.52001127510759604), | ||
399 | FRAC_CONST(0.52132092687859566), | ||
400 | FRAC_CONST(0.52262935193109661), | ||
401 | FRAC_CONST(0.5239365471862486), | ||
402 | FRAC_CONST(0.52524250956809471), | ||
403 | FRAC_CONST(0.52654723600357944), | ||
404 | FRAC_CONST(0.52785072342255523), | ||
405 | FRAC_CONST(0.52915296875779061), | ||
406 | FRAC_CONST(0.53045396894497632), | ||
407 | FRAC_CONST(0.53175372092273332), | ||
408 | FRAC_CONST(0.53305222163261945), | ||
409 | FRAC_CONST(0.53434946801913752), | ||
410 | FRAC_CONST(0.53564545702974109), | ||
411 | FRAC_CONST(0.53694018561484291), | ||
412 | FRAC_CONST(0.5382336507278217), | ||
413 | FRAC_CONST(0.53952584932502889), | ||
414 | FRAC_CONST(0.54081677836579667), | ||
415 | FRAC_CONST(0.54210643481244392), | ||
416 | FRAC_CONST(0.5433948156302848), | ||
417 | FRAC_CONST(0.54468191778763453), | ||
418 | FRAC_CONST(0.54596773825581757), | ||
419 | FRAC_CONST(0.54725227400917409), | ||
420 | FRAC_CONST(0.54853552202506739), | ||
421 | FRAC_CONST(0.54981747928389091), | ||
422 | FRAC_CONST(0.55109814276907543), | ||
423 | FRAC_CONST(0.55237750946709607), | ||
424 | FRAC_CONST(0.55365557636747931), | ||
425 | FRAC_CONST(0.55493234046281037), | ||
426 | FRAC_CONST(0.55620779874873993), | ||
427 | FRAC_CONST(0.55748194822399155), | ||
428 | FRAC_CONST(0.55875478589036831), | ||
429 | FRAC_CONST(0.56002630875276038), | ||
430 | FRAC_CONST(0.56129651381915147), | ||
431 | FRAC_CONST(0.56256539810062656), | ||
432 | FRAC_CONST(0.56383295861137817), | ||
433 | FRAC_CONST(0.56509919236871398), | ||
434 | FRAC_CONST(0.56636409639306384), | ||
435 | FRAC_CONST(0.56762766770798623), | ||
436 | FRAC_CONST(0.56888990334017586), | ||
437 | FRAC_CONST(0.5701508003194703), | ||
438 | FRAC_CONST(0.57141035567885723), | ||
439 | FRAC_CONST(0.57266856645448116), | ||
440 | FRAC_CONST(0.57392542968565075), | ||
441 | FRAC_CONST(0.57518094241484508), | ||
442 | FRAC_CONST(0.57643510168772183), | ||
443 | FRAC_CONST(0.5776879045531228), | ||
444 | FRAC_CONST(0.57893934806308178), | ||
445 | FRAC_CONST(0.58018942927283168), | ||
446 | FRAC_CONST(0.58143814524081017), | ||
447 | FRAC_CONST(0.58268549302866846), | ||
448 | FRAC_CONST(0.58393146970127618), | ||
449 | FRAC_CONST(0.58517607232673041), | ||
450 | FRAC_CONST(0.5864192979763605), | ||
451 | FRAC_CONST(0.58766114372473666), | ||
452 | FRAC_CONST(0.58890160664967572), | ||
453 | FRAC_CONST(0.59014068383224882), | ||
454 | FRAC_CONST(0.59137837235678758), | ||
455 | FRAC_CONST(0.59261466931089113), | ||
456 | FRAC_CONST(0.59384957178543363), | ||
457 | FRAC_CONST(0.59508307687456996), | ||
458 | FRAC_CONST(0.59631518167574371), | ||
459 | FRAC_CONST(0.59754588328969316), | ||
460 | FRAC_CONST(0.59877517882045872), | ||
461 | FRAC_CONST(0.60000306537538894), | ||
462 | FRAC_CONST(0.6012295400651485), | ||
463 | FRAC_CONST(0.60245460000372375), | ||
464 | FRAC_CONST(0.60367824230843037), | ||
465 | FRAC_CONST(0.60490046409991982), | ||
466 | FRAC_CONST(0.60612126250218612), | ||
467 | FRAC_CONST(0.60734063464257293), | ||
468 | FRAC_CONST(0.60855857765177945), | ||
469 | FRAC_CONST(0.60977508866386843), | ||
470 | FRAC_CONST(0.61099016481627166), | ||
471 | FRAC_CONST(0.61220380324979795), | ||
472 | FRAC_CONST(0.61341600110863859), | ||
473 | FRAC_CONST(0.61462675554037505), | ||
474 | FRAC_CONST(0.61583606369598509), | ||
475 | FRAC_CONST(0.61704392272984976), | ||
476 | FRAC_CONST(0.61825032979976025), | ||
477 | FRAC_CONST(0.61945528206692402), | ||
478 | FRAC_CONST(0.62065877669597214), | ||
479 | FRAC_CONST(0.62186081085496536), | ||
480 | FRAC_CONST(0.62306138171540126), | ||
481 | FRAC_CONST(0.62426048645222065), | ||
482 | FRAC_CONST(0.62545812224381436), | ||
483 | FRAC_CONST(0.62665428627202935), | ||
484 | FRAC_CONST(0.62784897572217646), | ||
485 | FRAC_CONST(0.629042187783036), | ||
486 | FRAC_CONST(0.63023391964686437), | ||
487 | FRAC_CONST(0.63142416850940186), | ||
488 | FRAC_CONST(0.63261293156987741), | ||
489 | FRAC_CONST(0.63380020603101728), | ||
490 | FRAC_CONST(0.63498598909904946), | ||
491 | FRAC_CONST(0.63617027798371217), | ||
492 | FRAC_CONST(0.63735306989825913), | ||
493 | FRAC_CONST(0.63853436205946679), | ||
494 | FRAC_CONST(0.63971415168764045), | ||
495 | FRAC_CONST(0.64089243600662138), | ||
496 | FRAC_CONST(0.64206921224379254), | ||
497 | FRAC_CONST(0.64324447763008585), | ||
498 | FRAC_CONST(0.64441822939998838), | ||
499 | FRAC_CONST(0.64559046479154869), | ||
500 | FRAC_CONST(0.64676118104638392), | ||
501 | FRAC_CONST(0.64793037540968534), | ||
502 | FRAC_CONST(0.64909804513022595), | ||
503 | FRAC_CONST(0.65026418746036585), | ||
504 | FRAC_CONST(0.65142879965605982), | ||
505 | FRAC_CONST(0.65259187897686244), | ||
506 | FRAC_CONST(0.65375342268593606), | ||
507 | FRAC_CONST(0.65491342805005603), | ||
508 | FRAC_CONST(0.6560718923396176), | ||
509 | FRAC_CONST(0.65722881282864254), | ||
510 | FRAC_CONST(0.65838418679478505), | ||
511 | FRAC_CONST(0.65953801151933866), | ||
512 | FRAC_CONST(0.6606902842872423), | ||
513 | FRAC_CONST(0.66184100238708687), | ||
514 | FRAC_CONST(0.66299016311112147), | ||
515 | FRAC_CONST(0.66413776375526001), | ||
516 | FRAC_CONST(0.66528380161908718), | ||
517 | FRAC_CONST(0.66642827400586524), | ||
518 | FRAC_CONST(0.66757117822254031), | ||
519 | FRAC_CONST(0.66871251157974798), | ||
520 | FRAC_CONST(0.66985227139182102), | ||
521 | FRAC_CONST(0.67099045497679422), | ||
522 | FRAC_CONST(0.67212705965641173), | ||
523 | FRAC_CONST(0.67326208275613297), | ||
524 | FRAC_CONST(0.67439552160513905), | ||
525 | FRAC_CONST(0.67552737353633852), | ||
526 | FRAC_CONST(0.67665763588637495), | ||
527 | FRAC_CONST(0.6777863059956315), | ||
528 | FRAC_CONST(0.67891338120823841), | ||
529 | FRAC_CONST(0.68003885887207893), | ||
530 | FRAC_CONST(0.68116273633879543), | ||
531 | FRAC_CONST(0.68228501096379557), | ||
532 | FRAC_CONST(0.68340568010625868), | ||
533 | FRAC_CONST(0.6845247411291423), | ||
534 | FRAC_CONST(0.68564219139918747), | ||
535 | FRAC_CONST(0.68675802828692589), | ||
536 | FRAC_CONST(0.68787224916668555), | ||
537 | FRAC_CONST(0.68898485141659704), | ||
538 | FRAC_CONST(0.69009583241859995), | ||
539 | FRAC_CONST(0.69120518955844845), | ||
540 | FRAC_CONST(0.69231292022571822), | ||
541 | FRAC_CONST(0.69341902181381176), | ||
542 | FRAC_CONST(0.69452349171996552), | ||
543 | FRAC_CONST(0.69562632734525487), | ||
544 | FRAC_CONST(0.6967275260946012), | ||
545 | FRAC_CONST(0.69782708537677729), | ||
546 | FRAC_CONST(0.69892500260441415), | ||
547 | FRAC_CONST(0.70002127519400625), | ||
548 | FRAC_CONST(0.70111590056591866), | ||
549 | FRAC_CONST(0.70220887614439187), | ||
550 | FRAC_CONST(0.70330019935754873), | ||
551 | FRAC_CONST(0.70438986763740041), | ||
552 | FRAC_CONST(0.7054778784198521), | ||
553 | FRAC_CONST(0.70656422914470951), | ||
554 | FRAC_CONST(0.70764891725568435), | ||
555 | FRAC_CONST(0.70873194020040065), | ||
556 | FRAC_CONST(0.70981329543040084), | ||
557 | FRAC_CONST(0.71089298040115168), | ||
558 | FRAC_CONST(0.71197099257204999), | ||
559 | FRAC_CONST(0.71304732940642923), | ||
560 | FRAC_CONST(0.71412198837156471), | ||
561 | FRAC_CONST(0.71519496693868001), | ||
562 | FRAC_CONST(0.71626626258295312), | ||
563 | FRAC_CONST(0.71733587278352173), | ||
564 | FRAC_CONST(0.71840379502348972), | ||
565 | FRAC_CONST(0.71947002678993299), | ||
566 | FRAC_CONST(0.72053456557390527), | ||
567 | FRAC_CONST(0.72159740887044366), | ||
568 | FRAC_CONST(0.72265855417857561), | ||
569 | FRAC_CONST(0.72371799900132339), | ||
570 | FRAC_CONST(0.72477574084571128), | ||
571 | FRAC_CONST(0.72583177722277037), | ||
572 | FRAC_CONST(0.72688610564754497), | ||
573 | FRAC_CONST(0.72793872363909862), | ||
574 | FRAC_CONST(0.72898962872051931), | ||
575 | FRAC_CONST(0.73003881841892615), | ||
576 | FRAC_CONST(0.73108629026547423), | ||
577 | FRAC_CONST(0.73213204179536129), | ||
578 | FRAC_CONST(0.73317607054783274), | ||
579 | FRAC_CONST(0.73421837406618817), | ||
580 | FRAC_CONST(0.73525894989778673), | ||
581 | FRAC_CONST(0.73629779559405306), | ||
582 | FRAC_CONST(0.73733490871048279), | ||
583 | FRAC_CONST(0.73837028680664851), | ||
584 | FRAC_CONST(0.73940392744620576), | ||
585 | FRAC_CONST(0.74043582819689802), | ||
586 | FRAC_CONST(0.74146598663056329), | ||
587 | FRAC_CONST(0.74249440032313918), | ||
588 | FRAC_CONST(0.74352106685466912), | ||
589 | FRAC_CONST(0.74454598380930725), | ||
590 | FRAC_CONST(0.74556914877532543), | ||
591 | FRAC_CONST(0.74659055934511731), | ||
592 | FRAC_CONST(0.74761021311520515), | ||
593 | FRAC_CONST(0.74862810768624533), | ||
594 | FRAC_CONST(0.74964424066303348), | ||
595 | FRAC_CONST(0.75065860965451059), | ||
596 | FRAC_CONST(0.75167121227376843), | ||
597 | FRAC_CONST(0.75268204613805523), | ||
598 | FRAC_CONST(0.75369110886878121), | ||
599 | FRAC_CONST(0.75469839809152439), | ||
600 | FRAC_CONST(0.75570391143603588), | ||
601 | FRAC_CONST(0.75670764653624567), | ||
602 | FRAC_CONST(0.75770960103026808), | ||
603 | FRAC_CONST(0.75870977256040739), | ||
604 | FRAC_CONST(0.75970815877316344), | ||
605 | FRAC_CONST(0.76070475731923692), | ||
606 | FRAC_CONST(0.76169956585353527), | ||
607 | FRAC_CONST(0.76269258203517787), | ||
608 | FRAC_CONST(0.76368380352750187), | ||
609 | FRAC_CONST(0.76467322799806714), | ||
610 | FRAC_CONST(0.76566085311866239), | ||
611 | FRAC_CONST(0.76664667656531038), | ||
612 | FRAC_CONST(0.76763069601827327), | ||
613 | FRAC_CONST(0.76861290916205827), | ||
614 | FRAC_CONST(0.76959331368542294), | ||
615 | FRAC_CONST(0.7705719072813807), | ||
616 | FRAC_CONST(0.7715486876472063), | ||
617 | FRAC_CONST(0.77252365248444133), | ||
618 | FRAC_CONST(0.77349679949889905), | ||
619 | FRAC_CONST(0.77446812640067086), | ||
620 | FRAC_CONST(0.77543763090413043), | ||
621 | FRAC_CONST(0.77640531072794039), | ||
622 | FRAC_CONST(0.7773711635950562), | ||
623 | FRAC_CONST(0.77833518723273309), | ||
624 | FRAC_CONST(0.7792973793725303), | ||
625 | FRAC_CONST(0.78025773775031659), | ||
626 | FRAC_CONST(0.78121626010627609), | ||
627 | FRAC_CONST(0.7821729441849129), | ||
628 | FRAC_CONST(0.78312778773505731), | ||
629 | FRAC_CONST(0.78408078850986995), | ||
630 | FRAC_CONST(0.78503194426684808), | ||
631 | FRAC_CONST(0.78598125276783015), | ||
632 | FRAC_CONST(0.7869287117790017), | ||
633 | FRAC_CONST(0.78787431907090011), | ||
634 | FRAC_CONST(0.78881807241842017), | ||
635 | FRAC_CONST(0.78975996960081907), | ||
636 | FRAC_CONST(0.79070000840172161), | ||
637 | FRAC_CONST(0.79163818660912577), | ||
638 | FRAC_CONST(0.79257450201540758), | ||
639 | FRAC_CONST(0.79350895241732666), | ||
640 | FRAC_CONST(0.79444153561603059), | ||
641 | FRAC_CONST(0.79537224941706119), | ||
642 | FRAC_CONST(0.79630109163035911), | ||
643 | FRAC_CONST(0.7972280600702687), | ||
644 | FRAC_CONST(0.79815315255554375), | ||
645 | FRAC_CONST(0.79907636690935235), | ||
646 | FRAC_CONST(0.79999770095928191), | ||
647 | FRAC_CONST(0.8009171525373443), | ||
648 | FRAC_CONST(0.80183471947998131), | ||
649 | FRAC_CONST(0.80275039962806916), | ||
650 | FRAC_CONST(0.80366419082692409), | ||
651 | FRAC_CONST(0.804576090926307), | ||
652 | FRAC_CONST(0.80548609778042912), | ||
653 | FRAC_CONST(0.80639420924795624), | ||
654 | FRAC_CONST(0.80730042319201445), | ||
655 | FRAC_CONST(0.80820473748019472), | ||
656 | FRAC_CONST(0.80910714998455813), | ||
657 | FRAC_CONST(0.81000765858164114), | ||
658 | FRAC_CONST(0.81090626115245967), | ||
659 | FRAC_CONST(0.81180295558251536), | ||
660 | FRAC_CONST(0.81269773976179949), | ||
661 | FRAC_CONST(0.81359061158479851), | ||
662 | FRAC_CONST(0.81448156895049861), | ||
663 | FRAC_CONST(0.81537060976239129), | ||
664 | FRAC_CONST(0.81625773192847739), | ||
665 | FRAC_CONST(0.81714293336127297), | ||
666 | FRAC_CONST(0.81802621197781344), | ||
667 | FRAC_CONST(0.81890756569965895), | ||
668 | FRAC_CONST(0.81978699245289899), | ||
669 | FRAC_CONST(0.82066449016815746), | ||
670 | FRAC_CONST(0.82154005678059761), | ||
671 | FRAC_CONST(0.82241369022992639), | ||
672 | FRAC_CONST(0.82328538846040011), | ||
673 | FRAC_CONST(0.82415514942082857), | ||
674 | FRAC_CONST(0.82502297106458022), | ||
675 | FRAC_CONST(0.82588885134958678), | ||
676 | FRAC_CONST(0.82675278823834852), | ||
677 | FRAC_CONST(0.8276147796979384), | ||
678 | FRAC_CONST(0.82847482370000713), | ||
679 | FRAC_CONST(0.82933291822078825), | ||
680 | FRAC_CONST(0.83018906124110237), | ||
681 | FRAC_CONST(0.83104325074636232), | ||
682 | FRAC_CONST(0.83189548472657759), | ||
683 | FRAC_CONST(0.83274576117635946), | ||
684 | FRAC_CONST(0.83359407809492514), | ||
685 | FRAC_CONST(0.83444043348610319), | ||
686 | FRAC_CONST(0.83528482535833737), | ||
687 | FRAC_CONST(0.83612725172469216), | ||
688 | FRAC_CONST(0.83696771060285702), | ||
689 | FRAC_CONST(0.83780620001515094), | ||
690 | FRAC_CONST(0.8386427179885273), | ||
691 | FRAC_CONST(0.83947726255457855), | ||
692 | FRAC_CONST(0.84030983174954077), | ||
693 | FRAC_CONST(0.84114042361429808), | ||
694 | FRAC_CONST(0.84196903619438768), | ||
695 | FRAC_CONST(0.84279566754000412), | ||
696 | FRAC_CONST(0.84362031570600404), | ||
697 | FRAC_CONST(0.84444297875191066), | ||
698 | FRAC_CONST(0.84526365474191822), | ||
699 | FRAC_CONST(0.84608234174489694), | ||
700 | FRAC_CONST(0.84689903783439735), | ||
701 | FRAC_CONST(0.84771374108865427), | ||
702 | FRAC_CONST(0.84852644959059265), | ||
703 | FRAC_CONST(0.84933716142783067), | ||
704 | FRAC_CONST(0.85014587469268521), | ||
705 | FRAC_CONST(0.85095258748217573), | ||
706 | FRAC_CONST(0.85175729789802912), | ||
707 | FRAC_CONST(0.85256000404668397), | ||
708 | FRAC_CONST(0.85336070403929543), | ||
709 | FRAC_CONST(0.85415939599173873), | ||
710 | FRAC_CONST(0.85495607802461482), | ||
711 | FRAC_CONST(0.85575074826325392), | ||
712 | FRAC_CONST(0.85654340483771996), | ||
713 | FRAC_CONST(0.85733404588281559), | ||
714 | FRAC_CONST(0.85812266953808602), | ||
715 | FRAC_CONST(0.8589092739478239), | ||
716 | FRAC_CONST(0.85969385726107261), | ||
717 | FRAC_CONST(0.86047641763163207), | ||
718 | FRAC_CONST(0.86125695321806206), | ||
719 | FRAC_CONST(0.86203546218368721), | ||
720 | FRAC_CONST(0.86281194269660033), | ||
721 | FRAC_CONST(0.86358639292966799), | ||
722 | FRAC_CONST(0.86435881106053403), | ||
723 | FRAC_CONST(0.86512919527162369), | ||
724 | FRAC_CONST(0.86589754375014882), | ||
725 | FRAC_CONST(0.86666385468811102), | ||
726 | FRAC_CONST(0.86742812628230692), | ||
727 | FRAC_CONST(0.86819035673433131), | ||
728 | FRAC_CONST(0.86895054425058238), | ||
729 | FRAC_CONST(0.86970868704226556), | ||
730 | FRAC_CONST(0.87046478332539767), | ||
731 | FRAC_CONST(0.8712188313208109), | ||
732 | FRAC_CONST(0.8719708292541577), | ||
733 | FRAC_CONST(0.8727207753559143), | ||
734 | FRAC_CONST(0.87346866786138488), | ||
735 | FRAC_CONST(0.8742145050107063), | ||
736 | FRAC_CONST(0.87495828504885154), | ||
737 | FRAC_CONST(0.8757000062256346), | ||
738 | FRAC_CONST(0.87643966679571361), | ||
739 | FRAC_CONST(0.87717726501859594), | ||
740 | FRAC_CONST(0.87791279915864173), | ||
741 | FRAC_CONST(0.87864626748506813), | ||
742 | FRAC_CONST(0.87937766827195318), | ||
743 | FRAC_CONST(0.88010699979824036), | ||
744 | FRAC_CONST(0.88083426034774204), | ||
745 | FRAC_CONST(0.88155944820914378), | ||
746 | FRAC_CONST(0.8822825616760086), | ||
747 | FRAC_CONST(0.88300359904678072), | ||
748 | FRAC_CONST(0.88372255862478966), | ||
749 | FRAC_CONST(0.8844394387182537), | ||
750 | FRAC_CONST(0.88515423764028511), | ||
751 | FRAC_CONST(0.88586695370889279), | ||
752 | FRAC_CONST(0.88657758524698704), | ||
753 | FRAC_CONST(0.88728613058238315), | ||
754 | FRAC_CONST(0.88799258804780556), | ||
755 | FRAC_CONST(0.88869695598089171), | ||
756 | FRAC_CONST(0.88939923272419552), | ||
757 | FRAC_CONST(0.89009941662519221), | ||
758 | FRAC_CONST(0.89079750603628149), | ||
759 | FRAC_CONST(0.89149349931479138), | ||
760 | FRAC_CONST(0.89218739482298248), | ||
761 | FRAC_CONST(0.89287919092805168), | ||
762 | FRAC_CONST(0.89356888600213602), | ||
763 | FRAC_CONST(0.89425647842231604), | ||
764 | FRAC_CONST(0.89494196657062075), | ||
765 | FRAC_CONST(0.89562534883403), | ||
766 | FRAC_CONST(0.89630662360447966), | ||
767 | FRAC_CONST(0.89698578927886397), | ||
768 | FRAC_CONST(0.89766284425904075), | ||
769 | FRAC_CONST(0.89833778695183419), | ||
770 | FRAC_CONST(0.89901061576903907), | ||
771 | FRAC_CONST(0.89968132912742393), | ||
772 | FRAC_CONST(0.9003499254487356), | ||
773 | FRAC_CONST(0.90101640315970233), | ||
774 | FRAC_CONST(0.90168076069203773), | ||
775 | FRAC_CONST(0.9023429964824442), | ||
776 | FRAC_CONST(0.90300310897261704), | ||
777 | FRAC_CONST(0.90366109660924798), | ||
778 | FRAC_CONST(0.90431695784402832), | ||
779 | FRAC_CONST(0.90497069113365325), | ||
780 | FRAC_CONST(0.90562229493982516), | ||
781 | FRAC_CONST(0.90627176772925766), | ||
782 | FRAC_CONST(0.90691910797367803), | ||
783 | FRAC_CONST(0.90756431414983252), | ||
784 | FRAC_CONST(0.9082073847394887), | ||
785 | FRAC_CONST(0.90884831822943912), | ||
786 | FRAC_CONST(0.90948711311150543), | ||
787 | FRAC_CONST(0.91012376788254157), | ||
788 | FRAC_CONST(0.91075828104443757), | ||
789 | FRAC_CONST(0.91139065110412232), | ||
790 | FRAC_CONST(0.91202087657356823), | ||
791 | FRAC_CONST(0.9126489559697939), | ||
792 | FRAC_CONST(0.91327488781486776), | ||
793 | FRAC_CONST(0.91389867063591168), | ||
794 | FRAC_CONST(0.91452030296510445), | ||
795 | FRAC_CONST(0.91513978333968526), | ||
796 | FRAC_CONST(0.91575711030195672), | ||
797 | FRAC_CONST(0.91637228239928914), | ||
798 | FRAC_CONST(0.91698529818412289), | ||
799 | FRAC_CONST(0.91759615621397295), | ||
800 | FRAC_CONST(0.9182048550514309), | ||
801 | FRAC_CONST(0.91881139326416994), | ||
802 | FRAC_CONST(0.91941576942494696), | ||
803 | FRAC_CONST(0.92001798211160657), | ||
804 | FRAC_CONST(0.92061802990708386), | ||
805 | FRAC_CONST(0.92121591139940873), | ||
806 | FRAC_CONST(0.92181162518170812), | ||
807 | FRAC_CONST(0.92240516985220988), | ||
808 | FRAC_CONST(0.92299654401424625), | ||
809 | FRAC_CONST(0.92358574627625656), | ||
810 | FRAC_CONST(0.9241727752517912), | ||
811 | FRAC_CONST(0.92475762955951391), | ||
812 | FRAC_CONST(0.9253403078232062), | ||
813 | FRAC_CONST(0.92592080867176996), | ||
814 | FRAC_CONST(0.92649913073923051), | ||
815 | FRAC_CONST(0.9270752726647401), | ||
816 | FRAC_CONST(0.92764923309258118), | ||
817 | FRAC_CONST(0.92822101067216944), | ||
818 | FRAC_CONST(0.92879060405805702), | ||
819 | FRAC_CONST(0.9293580119099355), | ||
820 | FRAC_CONST(0.92992323289263956), | ||
821 | FRAC_CONST(0.93048626567614978), | ||
822 | FRAC_CONST(0.93104710893559517), | ||
823 | FRAC_CONST(0.93160576135125783), | ||
824 | FRAC_CONST(0.93216222160857432), | ||
825 | FRAC_CONST(0.93271648839814025), | ||
826 | FRAC_CONST(0.93326856041571205), | ||
827 | FRAC_CONST(0.93381843636221096), | ||
828 | FRAC_CONST(0.9343661149437259), | ||
829 | FRAC_CONST(0.93491159487151609), | ||
830 | FRAC_CONST(0.93545487486201462), | ||
831 | FRAC_CONST(0.9359959536368313), | ||
832 | FRAC_CONST(0.9365348299227555), | ||
833 | FRAC_CONST(0.93707150245175919), | ||
834 | FRAC_CONST(0.93760596996099999), | ||
835 | FRAC_CONST(0.93813823119282436), | ||
836 | FRAC_CONST(0.93866828489477017), | ||
837 | FRAC_CONST(0.9391961298195699), | ||
838 | FRAC_CONST(0.93972176472515334), | ||
839 | FRAC_CONST(0.94024518837465088), | ||
840 | FRAC_CONST(0.94076639953639607), | ||
841 | FRAC_CONST(0.94128539698392866), | ||
842 | FRAC_CONST(0.94180217949599765), | ||
843 | FRAC_CONST(0.94231674585656378), | ||
844 | FRAC_CONST(0.94282909485480271), | ||
845 | FRAC_CONST(0.94333922528510772), | ||
846 | FRAC_CONST(0.94384713594709269), | ||
847 | FRAC_CONST(0.94435282564559475), | ||
848 | FRAC_CONST(0.94485629319067721), | ||
849 | FRAC_CONST(0.94535753739763229), | ||
850 | FRAC_CONST(0.94585655708698391), | ||
851 | FRAC_CONST(0.94635335108449059), | ||
852 | FRAC_CONST(0.946847918221148), | ||
853 | FRAC_CONST(0.94734025733319194), | ||
854 | FRAC_CONST(0.94783036726210101), | ||
855 | FRAC_CONST(0.94831824685459909), | ||
856 | FRAC_CONST(0.94880389496265838), | ||
857 | FRAC_CONST(0.94928731044350201), | ||
858 | FRAC_CONST(0.94976849215960668), | ||
859 | FRAC_CONST(0.95024743897870523), | ||
860 | FRAC_CONST(0.95072414977378961), | ||
861 | FRAC_CONST(0.95119862342311323), | ||
862 | FRAC_CONST(0.95167085881019386), | ||
863 | FRAC_CONST(0.95214085482381583), | ||
864 | FRAC_CONST(0.95260861035803324), | ||
865 | FRAC_CONST(0.9530741243121722), | ||
866 | FRAC_CONST(0.95353739559083328), | ||
867 | FRAC_CONST(0.95399842310389449), | ||
868 | FRAC_CONST(0.95445720576651349), | ||
869 | FRAC_CONST(0.95491374249913052), | ||
870 | FRAC_CONST(0.95536803222747024), | ||
871 | FRAC_CONST(0.95582007388254542), | ||
872 | FRAC_CONST(0.95626986640065814), | ||
873 | FRAC_CONST(0.95671740872340305), | ||
874 | FRAC_CONST(0.9571626997976701), | ||
875 | FRAC_CONST(0.95760573857564624), | ||
876 | FRAC_CONST(0.9580465240148186), | ||
877 | FRAC_CONST(0.9584850550779761), | ||
878 | FRAC_CONST(0.95892133073321306), | ||
879 | FRAC_CONST(0.95935534995393079), | ||
880 | FRAC_CONST(0.9597871117188399), | ||
881 | FRAC_CONST(0.96021661501196343), | ||
882 | FRAC_CONST(0.96064385882263847), | ||
883 | FRAC_CONST(0.96106884214551935), | ||
884 | FRAC_CONST(0.961491563980579), | ||
885 | FRAC_CONST(0.9619120233331121), | ||
886 | FRAC_CONST(0.9623302192137374), | ||
887 | FRAC_CONST(0.96274615063839941), | ||
888 | FRAC_CONST(0.96315981662837136), | ||
889 | FRAC_CONST(0.96357121621025721), | ||
890 | FRAC_CONST(0.96398034841599411), | ||
891 | FRAC_CONST(0.96438721228285429), | ||
892 | FRAC_CONST(0.9647918068534479), | ||
893 | FRAC_CONST(0.96519413117572472), | ||
894 | FRAC_CONST(0.96559418430297683), | ||
895 | FRAC_CONST(0.96599196529384057), | ||
896 | FRAC_CONST(0.96638747321229879), | ||
897 | FRAC_CONST(0.96678070712768327), | ||
898 | FRAC_CONST(0.96717166611467664), | ||
899 | FRAC_CONST(0.96756034925331436), | ||
900 | FRAC_CONST(0.9679467556289878), | ||
901 | FRAC_CONST(0.9683308843324453), | ||
902 | FRAC_CONST(0.96871273445979478), | ||
903 | FRAC_CONST(0.9690923051125061), | ||
904 | FRAC_CONST(0.96946959539741295), | ||
905 | FRAC_CONST(0.96984460442671483), | ||
906 | FRAC_CONST(0.97021733131797916), | ||
907 | FRAC_CONST(0.97058777519414363), | ||
908 | FRAC_CONST(0.97095593518351797), | ||
909 | FRAC_CONST(0.97132181041978616), | ||
910 | FRAC_CONST(0.97168540004200854), | ||
911 | FRAC_CONST(0.9720467031946235), | ||
912 | FRAC_CONST(0.97240571902744977), | ||
913 | FRAC_CONST(0.97276244669568857), | ||
914 | FRAC_CONST(0.97311688535992513), | ||
915 | FRAC_CONST(0.97346903418613095), | ||
916 | FRAC_CONST(0.9738188923456661), | ||
917 | FRAC_CONST(0.97416645901528032), | ||
918 | FRAC_CONST(0.97451173337711572), | ||
919 | FRAC_CONST(0.97485471461870843), | ||
920 | FRAC_CONST(0.97519540193299037), | ||
921 | FRAC_CONST(0.97553379451829136), | ||
922 | FRAC_CONST(0.97586989157834103), | ||
923 | FRAC_CONST(0.97620369232227056), | ||
924 | FRAC_CONST(0.97653519596461447), | ||
925 | FRAC_CONST(0.97686440172531264), | ||
926 | FRAC_CONST(0.97719130882971228), | ||
927 | FRAC_CONST(0.97751591650856928), | ||
928 | FRAC_CONST(0.97783822399805043), | ||
929 | FRAC_CONST(0.97815823053973505), | ||
930 | FRAC_CONST(0.97847593538061683), | ||
931 | FRAC_CONST(0.97879133777310567), | ||
932 | FRAC_CONST(0.97910443697502925), | ||
933 | FRAC_CONST(0.97941523224963478), | ||
934 | FRAC_CONST(0.97972372286559117), | ||
935 | FRAC_CONST(0.98002990809698998), | ||
936 | FRAC_CONST(0.98033378722334796), | ||
937 | FRAC_CONST(0.98063535952960812), | ||
938 | FRAC_CONST(0.98093462430614164), | ||
939 | FRAC_CONST(0.98123158084874973), | ||
940 | FRAC_CONST(0.98152622845866466), | ||
941 | FRAC_CONST(0.9818185664425525), | ||
942 | FRAC_CONST(0.98210859411251361), | ||
943 | FRAC_CONST(0.98239631078608469), | ||
944 | FRAC_CONST(0.98268171578624086), | ||
945 | FRAC_CONST(0.98296480844139644), | ||
946 | FRAC_CONST(0.98324558808540707), | ||
947 | FRAC_CONST(0.98352405405757126), | ||
948 | FRAC_CONST(0.98380020570263149), | ||
949 | FRAC_CONST(0.98407404237077645), | ||
950 | FRAC_CONST(0.9843455634176419), | ||
951 | FRAC_CONST(0.9846147682043126), | ||
952 | FRAC_CONST(0.9848816560973237), | ||
953 | FRAC_CONST(0.98514622646866223), | ||
954 | FRAC_CONST(0.98540847869576842), | ||
955 | FRAC_CONST(0.98566841216153755), | ||
956 | FRAC_CONST(0.98592602625432113), | ||
957 | FRAC_CONST(0.98618132036792827), | ||
958 | FRAC_CONST(0.98643429390162707), | ||
959 | FRAC_CONST(0.98668494626014669), | ||
960 | FRAC_CONST(0.98693327685367771), | ||
961 | FRAC_CONST(0.98717928509787434), | ||
962 | FRAC_CONST(0.98742297041385541), | ||
963 | FRAC_CONST(0.98766433222820571), | ||
964 | FRAC_CONST(0.98790336997297779), | ||
965 | FRAC_CONST(0.98814008308569257), | ||
966 | FRAC_CONST(0.98837447100934128), | ||
967 | FRAC_CONST(0.98860653319238645), | ||
968 | FRAC_CONST(0.98883626908876354), | ||
969 | FRAC_CONST(0.98906367815788154), | ||
970 | FRAC_CONST(0.98928875986462517), | ||
971 | FRAC_CONST(0.98951151367935519), | ||
972 | FRAC_CONST(0.98973193907791057), | ||
973 | FRAC_CONST(0.98995003554160899), | ||
974 | FRAC_CONST(0.9901658025572484), | ||
975 | FRAC_CONST(0.99037923961710816), | ||
976 | FRAC_CONST(0.99059034621895015), | ||
977 | FRAC_CONST(0.99079912186602037), | ||
978 | FRAC_CONST(0.99100556606704937), | ||
979 | FRAC_CONST(0.99120967833625406), | ||
980 | FRAC_CONST(0.99141145819333854), | ||
981 | FRAC_CONST(0.99161090516349537), | ||
982 | FRAC_CONST(0.99180801877740643), | ||
983 | FRAC_CONST(0.99200279857124452), | ||
984 | FRAC_CONST(0.99219524408667392), | ||
985 | FRAC_CONST(0.99238535487085167), | ||
986 | FRAC_CONST(0.99257313047642881), | ||
987 | FRAC_CONST(0.99275857046155114), | ||
988 | FRAC_CONST(0.99294167438986047), | ||
989 | FRAC_CONST(0.99312244183049558), | ||
990 | FRAC_CONST(0.99330087235809328), | ||
991 | FRAC_CONST(0.99347696555278919), | ||
992 | FRAC_CONST(0.99365072100021912), | ||
993 | FRAC_CONST(0.99382213829151966), | ||
994 | FRAC_CONST(0.99399121702332938), | ||
995 | FRAC_CONST(0.99415795679778973), | ||
996 | FRAC_CONST(0.99432235722254581), | ||
997 | FRAC_CONST(0.9944844179107476), | ||
998 | FRAC_CONST(0.99464413848105071), | ||
999 | FRAC_CONST(0.99480151855761711), | ||
1000 | FRAC_CONST(0.99495655777011638), | ||
1001 | FRAC_CONST(0.99510925575372611), | ||
1002 | FRAC_CONST(0.99525961214913339), | ||
1003 | FRAC_CONST(0.9954076266025349), | ||
1004 | FRAC_CONST(0.99555329876563847), | ||
1005 | FRAC_CONST(0.99569662829566352), | ||
1006 | FRAC_CONST(0.99583761485534161), | ||
1007 | FRAC_CONST(0.99597625811291779), | ||
1008 | FRAC_CONST(0.99611255774215113), | ||
1009 | FRAC_CONST(0.99624651342231552), | ||
1010 | FRAC_CONST(0.99637812483820021), | ||
1011 | FRAC_CONST(0.99650739168011082), | ||
1012 | FRAC_CONST(0.9966343136438699), | ||
1013 | FRAC_CONST(0.996758890430818), | ||
1014 | FRAC_CONST(0.99688112174781385), | ||
1015 | FRAC_CONST(0.99700100730723529), | ||
1016 | FRAC_CONST(0.99711854682697998), | ||
1017 | FRAC_CONST(0.99723374003046616), | ||
1018 | FRAC_CONST(0.99734658664663323), | ||
1019 | FRAC_CONST(0.99745708640994191), | ||
1020 | FRAC_CONST(0.99756523906037575), | ||
1021 | FRAC_CONST(0.997671044343441), | ||
1022 | FRAC_CONST(0.99777450201016782), | ||
1023 | FRAC_CONST(0.99787561181711015), | ||
1024 | FRAC_CONST(0.99797437352634699), | ||
1025 | FRAC_CONST(0.99807078690548234), | ||
1026 | FRAC_CONST(0.99816485172764624), | ||
1027 | FRAC_CONST(0.99825656777149518), | ||
1028 | FRAC_CONST(0.99834593482121237), | ||
1029 | FRAC_CONST(0.99843295266650844), | ||
1030 | FRAC_CONST(0.99851762110262221), | ||
1031 | FRAC_CONST(0.99859993993032037), | ||
1032 | FRAC_CONST(0.99867990895589909), | ||
1033 | FRAC_CONST(0.99875752799118334), | ||
1034 | FRAC_CONST(0.99883279685352799), | ||
1035 | FRAC_CONST(0.99890571536581829), | ||
1036 | FRAC_CONST(0.99897628335646982), | ||
1037 | FRAC_CONST(0.99904450065942929), | ||
1038 | FRAC_CONST(0.99911036711417489), | ||
1039 | FRAC_CONST(0.99917388256571638), | ||
1040 | FRAC_CONST(0.99923504686459585), | ||
1041 | FRAC_CONST(0.99929385986688779), | ||
1042 | FRAC_CONST(0.99935032143419944), | ||
1043 | FRAC_CONST(0.9994044314336713), | ||
1044 | FRAC_CONST(0.99945618973797734), | ||
1045 | FRAC_CONST(0.99950559622532531), | ||
1046 | FRAC_CONST(0.99955265077945699), | ||
1047 | FRAC_CONST(0.99959735328964838), | ||
1048 | FRAC_CONST(0.9996397036507102), | ||
1049 | FRAC_CONST(0.99967970176298793), | ||
1050 | FRAC_CONST(0.99971734753236219), | ||
1051 | FRAC_CONST(0.99975264087024884), | ||
1052 | FRAC_CONST(0.99978558169359921), | ||
1053 | FRAC_CONST(0.99981616992490041), | ||
1054 | FRAC_CONST(0.99984440549217524), | ||
1055 | FRAC_CONST(0.99987028832898295), | ||
1056 | FRAC_CONST(0.99989381837441849), | ||
1057 | FRAC_CONST(0.99991499557311347), | ||
1058 | FRAC_CONST(0.999933819875236), | ||
1059 | FRAC_CONST(0.99995029123649048), | ||
1060 | FRAC_CONST(0.99996440961811828), | ||
1061 | FRAC_CONST(0.99997617498689761), | ||
1062 | FRAC_CONST(0.9999855873151432), | ||
1063 | FRAC_CONST(0.99999264658070719), | ||
1064 | FRAC_CONST(0.99999735276697821), | ||
1065 | FRAC_CONST(0.99999970586288223) | ||
1066 | }; | ||
1067 | |||
1068 | #ifdef ALLOW_SMALL_FRAMELENGTH | ||
1069 | static const real_t sine_long_960[] MEM_ALIGN_ATTR = | ||
1070 | { | ||
1071 | FRAC_CONST(0.00081812299560725323), | ||
1072 | FRAC_CONST(0.0024543667964602917), | ||
1073 | FRAC_CONST(0.0040906040262347889), | ||
1074 | FRAC_CONST(0.0057268303042312674), | ||
1075 | FRAC_CONST(0.0073630412497795667), | ||
1076 | FRAC_CONST(0.0089992324822505774), | ||
1077 | FRAC_CONST(0.010635399621067975), | ||
1078 | FRAC_CONST(0.012271538285719924), | ||
1079 | FRAC_CONST(0.013907644095770845), | ||
1080 | FRAC_CONST(0.015543712670873098), | ||
1081 | FRAC_CONST(0.017179739630778748), | ||
1082 | FRAC_CONST(0.018815720595351273), | ||
1083 | FRAC_CONST(0.020451651184577292), | ||
1084 | FRAC_CONST(0.022087527018578291), | ||
1085 | FRAC_CONST(0.023723343717622358), | ||
1086 | FRAC_CONST(0.025359096902135895), | ||
1087 | FRAC_CONST(0.02699478219271537), | ||
1088 | FRAC_CONST(0.028630395210139003), | ||
1089 | FRAC_CONST(0.030265931575378519), | ||
1090 | FRAC_CONST(0.031901386909610863), | ||
1091 | FRAC_CONST(0.033536756834229922), | ||
1092 | FRAC_CONST(0.035172036970858266), | ||
1093 | FRAC_CONST(0.036807222941358832), | ||
1094 | FRAC_CONST(0.038442310367846677), | ||
1095 | FRAC_CONST(0.040077294872700696), | ||
1096 | FRAC_CONST(0.041712172078575326), | ||
1097 | FRAC_CONST(0.043346937608412288), | ||
1098 | FRAC_CONST(0.044981587085452281), | ||
1099 | FRAC_CONST(0.046616116133246711), | ||
1100 | FRAC_CONST(0.048250520375669431), | ||
1101 | FRAC_CONST(0.049884795436928406), | ||
1102 | FRAC_CONST(0.051518936941577477), | ||
1103 | FRAC_CONST(0.053152940514528055), | ||
1104 | FRAC_CONST(0.05478680178106083), | ||
1105 | FRAC_CONST(0.056420516366837495), | ||
1106 | FRAC_CONST(0.05805407989791244), | ||
1107 | FRAC_CONST(0.059687488000744485), | ||
1108 | FRAC_CONST(0.061320736302208578), | ||
1109 | FRAC_CONST(0.062953820429607482), | ||
1110 | FRAC_CONST(0.064586736010683557), | ||
1111 | FRAC_CONST(0.066219478673630344), | ||
1112 | FRAC_CONST(0.06785204404710439), | ||
1113 | FRAC_CONST(0.069484427760236861), | ||
1114 | FRAC_CONST(0.071116625442645326), | ||
1115 | FRAC_CONST(0.072748632724445372), | ||
1116 | FRAC_CONST(0.07438044523626236), | ||
1117 | FRAC_CONST(0.076012058609243122), | ||
1118 | FRAC_CONST(0.077643468475067631), | ||
1119 | FRAC_CONST(0.079274670465960706), | ||
1120 | FRAC_CONST(0.080905660214703745), | ||
1121 | FRAC_CONST(0.082536433354646319), | ||
1122 | FRAC_CONST(0.084166985519717977), | ||
1123 | FRAC_CONST(0.085797312344439894), | ||
1124 | FRAC_CONST(0.08742740946393647), | ||
1125 | FRAC_CONST(0.089057272513947183), | ||
1126 | FRAC_CONST(0.090686897130838162), | ||
1127 | FRAC_CONST(0.092316278951613845), | ||
1128 | FRAC_CONST(0.093945413613928788), | ||
1129 | FRAC_CONST(0.095574296756099186), | ||
1130 | FRAC_CONST(0.097202924017114667), | ||
1131 | FRAC_CONST(0.098831291036649963), | ||
1132 | FRAC_CONST(0.10045939345507648), | ||
1133 | FRAC_CONST(0.10208722691347409), | ||
1134 | FRAC_CONST(0.10371478705364276), | ||
1135 | FRAC_CONST(0.10534206951811415), | ||
1136 | FRAC_CONST(0.10696906995016341), | ||
1137 | FRAC_CONST(0.10859578399382072), | ||
1138 | FRAC_CONST(0.11022220729388306), | ||
1139 | FRAC_CONST(0.11184833549592579), | ||
1140 | FRAC_CONST(0.11347416424631435), | ||
1141 | FRAC_CONST(0.11509968919221586), | ||
1142 | FRAC_CONST(0.11672490598161089), | ||
1143 | FRAC_CONST(0.11834981026330495), | ||
1144 | FRAC_CONST(0.11997439768694031), | ||
1145 | FRAC_CONST(0.12159866390300751), | ||
1146 | FRAC_CONST(0.12322260456285709), | ||
1147 | FRAC_CONST(0.12484621531871121), | ||
1148 | FRAC_CONST(0.12646949182367517), | ||
1149 | FRAC_CONST(0.12809242973174936), | ||
1150 | FRAC_CONST(0.12971502469784052), | ||
1151 | FRAC_CONST(0.13133727237777362), | ||
1152 | FRAC_CONST(0.13295916842830346), | ||
1153 | FRAC_CONST(0.13458070850712617), | ||
1154 | FRAC_CONST(0.13620188827289101), | ||
1155 | FRAC_CONST(0.1378227033852118), | ||
1156 | FRAC_CONST(0.13944314950467873), | ||
1157 | FRAC_CONST(0.14106322229286994), | ||
1158 | FRAC_CONST(0.14268291741236291), | ||
1159 | FRAC_CONST(0.14430223052674654), | ||
1160 | FRAC_CONST(0.1459211573006321), | ||
1161 | FRAC_CONST(0.14753969339966552), | ||
1162 | FRAC_CONST(0.14915783449053857), | ||
1163 | FRAC_CONST(0.15077557624100058), | ||
1164 | FRAC_CONST(0.15239291431987001), | ||
1165 | FRAC_CONST(0.1540098443970461), | ||
1166 | FRAC_CONST(0.15562636214352044), | ||
1167 | FRAC_CONST(0.15724246323138855), | ||
1168 | FRAC_CONST(0.15885814333386142), | ||
1169 | FRAC_CONST(0.16047339812527725), | ||
1170 | FRAC_CONST(0.16208822328111283), | ||
1171 | FRAC_CONST(0.16370261447799525), | ||
1172 | FRAC_CONST(0.16531656739371339), | ||
1173 | FRAC_CONST(0.16693007770722967), | ||
1174 | FRAC_CONST(0.16854314109869134), | ||
1175 | FRAC_CONST(0.17015575324944232), | ||
1176 | FRAC_CONST(0.17176790984203447), | ||
1177 | FRAC_CONST(0.17337960656023954), | ||
1178 | FRAC_CONST(0.1749908390890603), | ||
1179 | FRAC_CONST(0.17660160311474243), | ||
1180 | FRAC_CONST(0.17821189432478593), | ||
1181 | FRAC_CONST(0.17982170840795647), | ||
1182 | FRAC_CONST(0.18143104105429744), | ||
1183 | FRAC_CONST(0.18303988795514095), | ||
1184 | FRAC_CONST(0.1846482448031197), | ||
1185 | FRAC_CONST(0.18625610729217834), | ||
1186 | FRAC_CONST(0.1878634711175852), | ||
1187 | FRAC_CONST(0.18947033197594348), | ||
1188 | FRAC_CONST(0.19107668556520319), | ||
1189 | FRAC_CONST(0.19268252758467228), | ||
1190 | FRAC_CONST(0.19428785373502844), | ||
1191 | FRAC_CONST(0.19589265971833042), | ||
1192 | FRAC_CONST(0.19749694123802966), | ||
1193 | FRAC_CONST(0.19910069399898173), | ||
1194 | FRAC_CONST(0.20070391370745785), | ||
1195 | FRAC_CONST(0.20230659607115639), | ||
1196 | FRAC_CONST(0.20390873679921437), | ||
1197 | FRAC_CONST(0.20551033160221882), | ||
1198 | FRAC_CONST(0.20711137619221856), | ||
1199 | FRAC_CONST(0.2087118662827353), | ||
1200 | FRAC_CONST(0.21031179758877552), | ||
1201 | FRAC_CONST(0.21191116582684155), | ||
1202 | FRAC_CONST(0.21350996671494335), | ||
1203 | FRAC_CONST(0.21510819597260972), | ||
1204 | FRAC_CONST(0.21670584932089998), | ||
1205 | FRAC_CONST(0.2183029224824154), | ||
1206 | FRAC_CONST(0.21989941118131037), | ||
1207 | FRAC_CONST(0.22149531114330431), | ||
1208 | FRAC_CONST(0.22309061809569264), | ||
1209 | FRAC_CONST(0.22468532776735861), | ||
1210 | FRAC_CONST(0.22627943588878449), | ||
1211 | FRAC_CONST(0.22787293819206314), | ||
1212 | FRAC_CONST(0.22946583041090929), | ||
1213 | FRAC_CONST(0.23105810828067114), | ||
1214 | FRAC_CONST(0.23264976753834157), | ||
1215 | FRAC_CONST(0.23424080392256985), | ||
1216 | FRAC_CONST(0.2358312131736727), | ||
1217 | FRAC_CONST(0.23742099103364595), | ||
1218 | FRAC_CONST(0.23901013324617584), | ||
1219 | FRAC_CONST(0.24059863555665045), | ||
1220 | FRAC_CONST(0.24218649371217096), | ||
1221 | FRAC_CONST(0.24377370346156332), | ||
1222 | FRAC_CONST(0.24536026055538934), | ||
1223 | FRAC_CONST(0.24694616074595824), | ||
1224 | FRAC_CONST(0.24853139978733788), | ||
1225 | FRAC_CONST(0.25011597343536629), | ||
1226 | FRAC_CONST(0.25169987744766298), | ||
1227 | FRAC_CONST(0.25328310758364025), | ||
1228 | FRAC_CONST(0.25486565960451457), | ||
1229 | FRAC_CONST(0.25644752927331788), | ||
1230 | FRAC_CONST(0.25802871235490898), | ||
1231 | FRAC_CONST(0.25960920461598508), | ||
1232 | FRAC_CONST(0.26118900182509258), | ||
1233 | FRAC_CONST(0.26276809975263904), | ||
1234 | FRAC_CONST(0.264346494170904), | ||
1235 | FRAC_CONST(0.26592418085405067), | ||
1236 | FRAC_CONST(0.26750115557813692), | ||
1237 | FRAC_CONST(0.2690774141211269), | ||
1238 | FRAC_CONST(0.27065295226290209), | ||
1239 | FRAC_CONST(0.2722277657852728), | ||
1240 | FRAC_CONST(0.27380185047198918), | ||
1241 | FRAC_CONST(0.27537520210875299), | ||
1242 | FRAC_CONST(0.2769478164832283), | ||
1243 | FRAC_CONST(0.27851968938505312), | ||
1244 | FRAC_CONST(0.28009081660585067), | ||
1245 | FRAC_CONST(0.28166119393924061), | ||
1246 | FRAC_CONST(0.28323081718085019), | ||
1247 | FRAC_CONST(0.28479968212832563), | ||
1248 | FRAC_CONST(0.28636778458134327), | ||
1249 | FRAC_CONST(0.28793512034162105), | ||
1250 | FRAC_CONST(0.2895016852129294), | ||
1251 | FRAC_CONST(0.29106747500110264), | ||
1252 | FRAC_CONST(0.29263248551405047), | ||
1253 | FRAC_CONST(0.2941967125617686), | ||
1254 | FRAC_CONST(0.29576015195635058), | ||
1255 | FRAC_CONST(0.29732279951199847), | ||
1256 | FRAC_CONST(0.29888465104503475), | ||
1257 | FRAC_CONST(0.30044570237391266), | ||
1258 | FRAC_CONST(0.30200594931922808), | ||
1259 | FRAC_CONST(0.30356538770373032), | ||
1260 | FRAC_CONST(0.30512401335233358), | ||
1261 | FRAC_CONST(0.30668182209212791), | ||
1262 | FRAC_CONST(0.3082388097523906), | ||
1263 | FRAC_CONST(0.30979497216459695), | ||
1264 | FRAC_CONST(0.31135030516243201), | ||
1265 | FRAC_CONST(0.3129048045818012), | ||
1266 | FRAC_CONST(0.31445846626084178), | ||
1267 | FRAC_CONST(0.31601128603993378), | ||
1268 | FRAC_CONST(0.31756325976171151), | ||
1269 | FRAC_CONST(0.31911438327107416), | ||
1270 | FRAC_CONST(0.32066465241519732), | ||
1271 | FRAC_CONST(0.32221406304354389), | ||
1272 | FRAC_CONST(0.3237626110078754), | ||
1273 | FRAC_CONST(0.32531029216226293), | ||
1274 | FRAC_CONST(0.32685710236309828), | ||
1275 | FRAC_CONST(0.32840303746910487), | ||
1276 | FRAC_CONST(0.32994809334134939), | ||
1277 | FRAC_CONST(0.3314922658432522), | ||
1278 | FRAC_CONST(0.33303555084059877), | ||
1279 | FRAC_CONST(0.33457794420155085), | ||
1280 | FRAC_CONST(0.33611944179665709), | ||
1281 | FRAC_CONST(0.33766003949886464), | ||
1282 | FRAC_CONST(0.33919973318352969), | ||
1283 | FRAC_CONST(0.34073851872842903), | ||
1284 | FRAC_CONST(0.34227639201377064), | ||
1285 | FRAC_CONST(0.34381334892220483), | ||
1286 | FRAC_CONST(0.34534938533883547), | ||
1287 | FRAC_CONST(0.34688449715123082), | ||
1288 | FRAC_CONST(0.34841868024943456), | ||
1289 | FRAC_CONST(0.34995193052597684), | ||
1290 | FRAC_CONST(0.35148424387588523), | ||
1291 | FRAC_CONST(0.3530156161966958), | ||
1292 | FRAC_CONST(0.35454604338846402), | ||
1293 | FRAC_CONST(0.35607552135377557), | ||
1294 | FRAC_CONST(0.35760404599775775), | ||
1295 | FRAC_CONST(0.35913161322809023), | ||
1296 | FRAC_CONST(0.36065821895501554), | ||
1297 | FRAC_CONST(0.36218385909135092), | ||
1298 | FRAC_CONST(0.36370852955249849), | ||
1299 | FRAC_CONST(0.36523222625645668), | ||
1300 | FRAC_CONST(0.36675494512383078), | ||
1301 | FRAC_CONST(0.36827668207784414), | ||
1302 | FRAC_CONST(0.36979743304434909), | ||
1303 | FRAC_CONST(0.37131719395183754), | ||
1304 | FRAC_CONST(0.37283596073145214), | ||
1305 | FRAC_CONST(0.37435372931699717), | ||
1306 | FRAC_CONST(0.37587049564494951), | ||
1307 | FRAC_CONST(0.37738625565446909), | ||
1308 | FRAC_CONST(0.37890100528741022), | ||
1309 | FRAC_CONST(0.38041474048833229), | ||
1310 | FRAC_CONST(0.38192745720451066), | ||
1311 | FRAC_CONST(0.38343915138594736), | ||
1312 | FRAC_CONST(0.38494981898538222), | ||
1313 | FRAC_CONST(0.38645945595830333), | ||
1314 | FRAC_CONST(0.38796805826295838), | ||
1315 | FRAC_CONST(0.38947562186036483), | ||
1316 | FRAC_CONST(0.39098214271432141), | ||
1317 | FRAC_CONST(0.39248761679141814), | ||
1318 | FRAC_CONST(0.3939920400610481), | ||
1319 | FRAC_CONST(0.39549540849541737), | ||
1320 | FRAC_CONST(0.39699771806955625), | ||
1321 | FRAC_CONST(0.39849896476132979), | ||
1322 | FRAC_CONST(0.39999914455144892), | ||
1323 | FRAC_CONST(0.40149825342348083), | ||
1324 | FRAC_CONST(0.4029962873638599), | ||
1325 | FRAC_CONST(0.40449324236189854), | ||
1326 | FRAC_CONST(0.40598911440979762), | ||
1327 | FRAC_CONST(0.40748389950265762), | ||
1328 | FRAC_CONST(0.40897759363848879), | ||
1329 | FRAC_CONST(0.41047019281822261), | ||
1330 | FRAC_CONST(0.41196169304572178), | ||
1331 | FRAC_CONST(0.4134520903277914), | ||
1332 | FRAC_CONST(0.41494138067418929), | ||
1333 | FRAC_CONST(0.41642956009763715), | ||
1334 | FRAC_CONST(0.41791662461383078), | ||
1335 | FRAC_CONST(0.41940257024145089), | ||
1336 | FRAC_CONST(0.42088739300217382), | ||
1337 | FRAC_CONST(0.42237108892068231), | ||
1338 | FRAC_CONST(0.42385365402467584), | ||
1339 | FRAC_CONST(0.42533508434488143), | ||
1340 | FRAC_CONST(0.42681537591506419), | ||
1341 | FRAC_CONST(0.42829452477203828), | ||
1342 | FRAC_CONST(0.42977252695567697), | ||
1343 | FRAC_CONST(0.43124937850892364), | ||
1344 | FRAC_CONST(0.4327250754778022), | ||
1345 | FRAC_CONST(0.43419961391142781), | ||
1346 | FRAC_CONST(0.43567298986201736), | ||
1347 | FRAC_CONST(0.43714519938489987), | ||
1348 | FRAC_CONST(0.43861623853852766), | ||
1349 | FRAC_CONST(0.44008610338448595), | ||
1350 | FRAC_CONST(0.44155478998750436), | ||
1351 | FRAC_CONST(0.44302229441546676), | ||
1352 | FRAC_CONST(0.4444886127394222), | ||
1353 | FRAC_CONST(0.44595374103359531), | ||
1354 | FRAC_CONST(0.44741767537539667), | ||
1355 | FRAC_CONST(0.44888041184543348), | ||
1356 | FRAC_CONST(0.45034194652752002), | ||
1357 | FRAC_CONST(0.45180227550868812), | ||
1358 | FRAC_CONST(0.45326139487919759), | ||
1359 | FRAC_CONST(0.45471930073254679), | ||
1360 | FRAC_CONST(0.45617598916548296), | ||
1361 | FRAC_CONST(0.45763145627801283), | ||
1362 | FRAC_CONST(0.45908569817341294), | ||
1363 | FRAC_CONST(0.46053871095824001), | ||
1364 | FRAC_CONST(0.46199049074234161), | ||
1365 | FRAC_CONST(0.46344103363886635), | ||
1366 | FRAC_CONST(0.46489033576427435), | ||
1367 | FRAC_CONST(0.46633839323834758), | ||
1368 | FRAC_CONST(0.46778520218420055), | ||
1369 | FRAC_CONST(0.46923075872829029), | ||
1370 | FRAC_CONST(0.47067505900042683), | ||
1371 | FRAC_CONST(0.47211809913378361), | ||
1372 | FRAC_CONST(0.47355987526490806), | ||
1373 | FRAC_CONST(0.47500038353373153), | ||
1374 | FRAC_CONST(0.47643962008357982), | ||
1375 | FRAC_CONST(0.47787758106118372), | ||
1376 | FRAC_CONST(0.47931426261668875), | ||
1377 | FRAC_CONST(0.48074966090366611), | ||
1378 | FRAC_CONST(0.48218377207912272), | ||
1379 | FRAC_CONST(0.48361659230351117), | ||
1380 | FRAC_CONST(0.48504811774074069), | ||
1381 | FRAC_CONST(0.48647834455818684), | ||
1382 | FRAC_CONST(0.48790726892670194), | ||
1383 | FRAC_CONST(0.48933488702062544), | ||
1384 | FRAC_CONST(0.49076119501779414), | ||
1385 | FRAC_CONST(0.49218618909955225), | ||
1386 | FRAC_CONST(0.4936098654507618), | ||
1387 | FRAC_CONST(0.49503222025981269), | ||
1388 | FRAC_CONST(0.49645324971863303), | ||
1389 | FRAC_CONST(0.49787295002269943), | ||
1390 | FRAC_CONST(0.49929131737104687), | ||
1391 | FRAC_CONST(0.50070834796627917), | ||
1392 | FRAC_CONST(0.50212403801457872), | ||
1393 | FRAC_CONST(0.50353838372571758), | ||
1394 | FRAC_CONST(0.50495138131306638), | ||
1395 | FRAC_CONST(0.50636302699360547), | ||
1396 | FRAC_CONST(0.50777331698793449), | ||
1397 | FRAC_CONST(0.50918224752028263), | ||
1398 | FRAC_CONST(0.51058981481851906), | ||
1399 | FRAC_CONST(0.51199601511416237), | ||
1400 | FRAC_CONST(0.51340084464239111), | ||
1401 | FRAC_CONST(0.51480429964205421), | ||
1402 | FRAC_CONST(0.51620637635567967), | ||
1403 | FRAC_CONST(0.51760707102948678), | ||
1404 | FRAC_CONST(0.51900637991339404), | ||
1405 | FRAC_CONST(0.5204042992610306), | ||
1406 | FRAC_CONST(0.52180082532974559), | ||
1407 | FRAC_CONST(0.5231959543806185), | ||
1408 | FRAC_CONST(0.52458968267846895), | ||
1409 | FRAC_CONST(0.52598200649186677), | ||
1410 | FRAC_CONST(0.52737292209314235), | ||
1411 | FRAC_CONST(0.52876242575839572), | ||
1412 | FRAC_CONST(0.53015051376750777), | ||
1413 | FRAC_CONST(0.53153718240414882), | ||
1414 | FRAC_CONST(0.53292242795578992), | ||
1415 | FRAC_CONST(0.53430624671371152), | ||
1416 | FRAC_CONST(0.53568863497301467), | ||
1417 | FRAC_CONST(0.5370695890326298), | ||
1418 | FRAC_CONST(0.5384491051953274), | ||
1419 | FRAC_CONST(0.53982717976772743), | ||
1420 | FRAC_CONST(0.54120380906030963), | ||
1421 | FRAC_CONST(0.54257898938742311), | ||
1422 | FRAC_CONST(0.54395271706729609), | ||
1423 | FRAC_CONST(0.54532498842204646), | ||
1424 | FRAC_CONST(0.54669579977769045), | ||
1425 | FRAC_CONST(0.54806514746415402), | ||
1426 | FRAC_CONST(0.54943302781528081), | ||
1427 | FRAC_CONST(0.55079943716884383), | ||
1428 | FRAC_CONST(0.55216437186655387), | ||
1429 | FRAC_CONST(0.55352782825406999), | ||
1430 | FRAC_CONST(0.55488980268100907), | ||
1431 | FRAC_CONST(0.55625029150095584), | ||
1432 | FRAC_CONST(0.55760929107147217), | ||
1433 | FRAC_CONST(0.55896679775410718), | ||
1434 | FRAC_CONST(0.56032280791440714), | ||
1435 | FRAC_CONST(0.56167731792192455), | ||
1436 | FRAC_CONST(0.56303032415022869), | ||
1437 | FRAC_CONST(0.56438182297691453), | ||
1438 | FRAC_CONST(0.56573181078361312), | ||
1439 | FRAC_CONST(0.56708028395600085), | ||
1440 | FRAC_CONST(0.56842723888380908), | ||
1441 | FRAC_CONST(0.56977267196083425), | ||
1442 | FRAC_CONST(0.57111657958494688), | ||
1443 | FRAC_CONST(0.5724589581581021), | ||
1444 | FRAC_CONST(0.57379980408634845), | ||
1445 | FRAC_CONST(0.57513911377983773), | ||
1446 | FRAC_CONST(0.57647688365283478), | ||
1447 | FRAC_CONST(0.57781311012372738), | ||
1448 | FRAC_CONST(0.57914778961503466), | ||
1449 | FRAC_CONST(0.58048091855341843), | ||
1450 | FRAC_CONST(0.5818124933696911), | ||
1451 | FRAC_CONST(0.58314251049882604), | ||
1452 | FRAC_CONST(0.58447096637996743), | ||
1453 | FRAC_CONST(0.58579785745643886), | ||
1454 | FRAC_CONST(0.5871231801757536), | ||
1455 | FRAC_CONST(0.58844693098962408), | ||
1456 | FRAC_CONST(0.58976910635397084), | ||
1457 | FRAC_CONST(0.59108970272893235), | ||
1458 | FRAC_CONST(0.59240871657887517), | ||
1459 | FRAC_CONST(0.59372614437240179), | ||
1460 | FRAC_CONST(0.59504198258236196), | ||
1461 | FRAC_CONST(0.5963562276858605), | ||
1462 | FRAC_CONST(0.59766887616426767), | ||
1463 | FRAC_CONST(0.5989799245032289), | ||
1464 | FRAC_CONST(0.60028936919267273), | ||
1465 | FRAC_CONST(0.60159720672682204), | ||
1466 | FRAC_CONST(0.60290343360420195), | ||
1467 | FRAC_CONST(0.60420804632765002), | ||
1468 | FRAC_CONST(0.60551104140432543), | ||
1469 | FRAC_CONST(0.60681241534571839), | ||
1470 | FRAC_CONST(0.60811216466765883), | ||
1471 | FRAC_CONST(0.60941028589032709), | ||
1472 | FRAC_CONST(0.61070677553826169), | ||
1473 | FRAC_CONST(0.61200163014036979), | ||
1474 | FRAC_CONST(0.61329484622993602), | ||
1475 | FRAC_CONST(0.6145864203446314), | ||
1476 | FRAC_CONST(0.61587634902652377), | ||
1477 | FRAC_CONST(0.61716462882208556), | ||
1478 | FRAC_CONST(0.61845125628220421), | ||
1479 | FRAC_CONST(0.61973622796219074), | ||
1480 | FRAC_CONST(0.6210195404217892), | ||
1481 | FRAC_CONST(0.62230119022518593), | ||
1482 | FRAC_CONST(0.62358117394101897), | ||
1483 | FRAC_CONST(0.62485948814238634), | ||
1484 | FRAC_CONST(0.62613612940685637), | ||
1485 | FRAC_CONST(0.62741109431647646), | ||
1486 | FRAC_CONST(0.62868437945778133), | ||
1487 | FRAC_CONST(0.62995598142180387), | ||
1488 | FRAC_CONST(0.6312258968040827), | ||
1489 | FRAC_CONST(0.63249412220467238), | ||
1490 | FRAC_CONST(0.63376065422815175), | ||
1491 | FRAC_CONST(0.63502548948363347), | ||
1492 | FRAC_CONST(0.63628862458477287), | ||
1493 | FRAC_CONST(0.63755005614977711), | ||
1494 | FRAC_CONST(0.63880978080141437), | ||
1495 | FRAC_CONST(0.6400677951670225), | ||
1496 | FRAC_CONST(0.6413240958785188), | ||
1497 | FRAC_CONST(0.64257867957240766), | ||
1498 | FRAC_CONST(0.6438315428897915), | ||
1499 | FRAC_CONST(0.64508268247637779), | ||
1500 | FRAC_CONST(0.64633209498248945), | ||
1501 | FRAC_CONST(0.64757977706307335), | ||
1502 | FRAC_CONST(0.64882572537770888), | ||
1503 | FRAC_CONST(0.65006993659061751), | ||
1504 | FRAC_CONST(0.65131240737067142), | ||
1505 | FRAC_CONST(0.65255313439140239), | ||
1506 | FRAC_CONST(0.65379211433101081), | ||
1507 | FRAC_CONST(0.65502934387237444), | ||
1508 | FRAC_CONST(0.6562648197030575), | ||
1509 | FRAC_CONST(0.65749853851531959), | ||
1510 | FRAC_CONST(0.65873049700612374), | ||
1511 | FRAC_CONST(0.65996069187714679), | ||
1512 | FRAC_CONST(0.66118911983478657), | ||
1513 | FRAC_CONST(0.66241577759017178), | ||
1514 | FRAC_CONST(0.66364066185917048), | ||
1515 | FRAC_CONST(0.66486376936239888), | ||
1516 | FRAC_CONST(0.66608509682523009), | ||
1517 | FRAC_CONST(0.66730464097780284), | ||
1518 | FRAC_CONST(0.66852239855503071), | ||
1519 | FRAC_CONST(0.66973836629660977), | ||
1520 | FRAC_CONST(0.67095254094702894), | ||
1521 | FRAC_CONST(0.67216491925557675), | ||
1522 | FRAC_CONST(0.67337549797635199), | ||
1523 | FRAC_CONST(0.67458427386827102), | ||
1524 | FRAC_CONST(0.67579124369507693), | ||
1525 | FRAC_CONST(0.67699640422534846), | ||
1526 | FRAC_CONST(0.67819975223250772), | ||
1527 | FRAC_CONST(0.6794012844948305), | ||
1528 | FRAC_CONST(0.68060099779545302), | ||
1529 | FRAC_CONST(0.68179888892238183), | ||
1530 | FRAC_CONST(0.6829949546685018), | ||
1531 | FRAC_CONST(0.68418919183158522), | ||
1532 | FRAC_CONST(0.68538159721429948), | ||
1533 | FRAC_CONST(0.6865721676242168), | ||
1534 | FRAC_CONST(0.68776089987382172), | ||
1535 | FRAC_CONST(0.68894779078052026), | ||
1536 | FRAC_CONST(0.69013283716664853), | ||
1537 | FRAC_CONST(0.69131603585948032), | ||
1538 | FRAC_CONST(0.69249738369123692), | ||
1539 | FRAC_CONST(0.69367687749909468), | ||
1540 | FRAC_CONST(0.69485451412519361), | ||
1541 | FRAC_CONST(0.69603029041664599), | ||
1542 | FRAC_CONST(0.6972042032255451), | ||
1543 | FRAC_CONST(0.6983762494089728), | ||
1544 | FRAC_CONST(0.69954642582900894), | ||
1545 | FRAC_CONST(0.70071472935273893), | ||
1546 | FRAC_CONST(0.70188115685226271), | ||
1547 | FRAC_CONST(0.703045705204703), | ||
1548 | FRAC_CONST(0.70420837129221303), | ||
1549 | FRAC_CONST(0.70536915200198613), | ||
1550 | FRAC_CONST(0.70652804422626281), | ||
1551 | FRAC_CONST(0.70768504486233985), | ||
1552 | FRAC_CONST(0.70884015081257845), | ||
1553 | FRAC_CONST(0.70999335898441229), | ||
1554 | FRAC_CONST(0.711144666290356), | ||
1555 | FRAC_CONST(0.71229406964801356), | ||
1556 | FRAC_CONST(0.71344156598008623), | ||
1557 | FRAC_CONST(0.71458715221438096), | ||
1558 | FRAC_CONST(0.71573082528381871), | ||
1559 | FRAC_CONST(0.71687258212644234), | ||
1560 | FRAC_CONST(0.7180124196854254), | ||
1561 | FRAC_CONST(0.71915033490907943), | ||
1562 | FRAC_CONST(0.72028632475086318), | ||
1563 | FRAC_CONST(0.72142038616938997), | ||
1564 | FRAC_CONST(0.72255251612843596), | ||
1565 | FRAC_CONST(0.72368271159694852), | ||
1566 | FRAC_CONST(0.72481096954905444), | ||
1567 | FRAC_CONST(0.72593728696406756), | ||
1568 | FRAC_CONST(0.72706166082649704), | ||
1569 | FRAC_CONST(0.72818408812605595), | ||
1570 | FRAC_CONST(0.72930456585766834), | ||
1571 | FRAC_CONST(0.73042309102147851), | ||
1572 | FRAC_CONST(0.73153966062285747), | ||
1573 | FRAC_CONST(0.73265427167241282), | ||
1574 | FRAC_CONST(0.73376692118599507), | ||
1575 | FRAC_CONST(0.73487760618470677), | ||
1576 | FRAC_CONST(0.73598632369490979), | ||
1577 | FRAC_CONST(0.73709307074823405), | ||
1578 | FRAC_CONST(0.73819784438158409), | ||
1579 | FRAC_CONST(0.73930064163714881), | ||
1580 | FRAC_CONST(0.74040145956240788), | ||
1581 | FRAC_CONST(0.74150029521014049), | ||
1582 | FRAC_CONST(0.74259714563843304), | ||
1583 | FRAC_CONST(0.74369200791068657), | ||
1584 | FRAC_CONST(0.74478487909562552), | ||
1585 | FRAC_CONST(0.74587575626730485), | ||
1586 | FRAC_CONST(0.74696463650511791), | ||
1587 | FRAC_CONST(0.74805151689380456), | ||
1588 | FRAC_CONST(0.74913639452345926), | ||
1589 | FRAC_CONST(0.75021926648953785), | ||
1590 | FRAC_CONST(0.75130012989286621), | ||
1591 | FRAC_CONST(0.7523789818396478), | ||
1592 | FRAC_CONST(0.75345581944147111), | ||
1593 | FRAC_CONST(0.75453063981531809), | ||
1594 | FRAC_CONST(0.75560344008357094), | ||
1595 | FRAC_CONST(0.75667421737402052), | ||
1596 | FRAC_CONST(0.7577429688198738), | ||
1597 | FRAC_CONST(0.75880969155976163), | ||
1598 | FRAC_CONST(0.75987438273774599), | ||
1599 | FRAC_CONST(0.76093703950332836), | ||
1600 | FRAC_CONST(0.76199765901145666), | ||
1601 | FRAC_CONST(0.76305623842253345), | ||
1602 | FRAC_CONST(0.76411277490242291), | ||
1603 | FRAC_CONST(0.76516726562245885), | ||
1604 | FRAC_CONST(0.76621970775945258), | ||
1605 | FRAC_CONST(0.76727009849569949), | ||
1606 | FRAC_CONST(0.76831843501898767), | ||
1607 | FRAC_CONST(0.76936471452260458), | ||
1608 | FRAC_CONST(0.77040893420534517), | ||
1609 | FRAC_CONST(0.77145109127151923), | ||
1610 | FRAC_CONST(0.77249118293095853), | ||
1611 | FRAC_CONST(0.77352920639902467), | ||
1612 | FRAC_CONST(0.77456515889661659), | ||
1613 | FRAC_CONST(0.77559903765017746), | ||
1614 | FRAC_CONST(0.7766308398917029), | ||
1615 | FRAC_CONST(0.77766056285874774), | ||
1616 | FRAC_CONST(0.77868820379443371), | ||
1617 | FRAC_CONST(0.77971375994745684), | ||
1618 | FRAC_CONST(0.78073722857209438), | ||
1619 | FRAC_CONST(0.7817586069282132), | ||
1620 | FRAC_CONST(0.78277789228127592), | ||
1621 | FRAC_CONST(0.78379508190234881), | ||
1622 | FRAC_CONST(0.78481017306810918), | ||
1623 | FRAC_CONST(0.78582316306085265), | ||
1624 | FRAC_CONST(0.78683404916849986), | ||
1625 | FRAC_CONST(0.78784282868460476), | ||
1626 | FRAC_CONST(0.78884949890836087), | ||
1627 | FRAC_CONST(0.78985405714460888), | ||
1628 | FRAC_CONST(0.7908565007038445), | ||
1629 | FRAC_CONST(0.79185682690222425), | ||
1630 | FRAC_CONST(0.79285503306157412), | ||
1631 | FRAC_CONST(0.79385111650939566), | ||
1632 | FRAC_CONST(0.79484507457887377), | ||
1633 | FRAC_CONST(0.79583690460888357), | ||
1634 | FRAC_CONST(0.79682660394399751), | ||
1635 | FRAC_CONST(0.79781416993449272), | ||
1636 | FRAC_CONST(0.79879959993635785), | ||
1637 | FRAC_CONST(0.7997828913113002), | ||
1638 | FRAC_CONST(0.80076404142675273), | ||
1639 | FRAC_CONST(0.80174304765588156), | ||
1640 | FRAC_CONST(0.80271990737759213), | ||
1641 | FRAC_CONST(0.80369461797653707), | ||
1642 | FRAC_CONST(0.80466717684312306), | ||
1643 | FRAC_CONST(0.80563758137351682), | ||
1644 | FRAC_CONST(0.80660582896965372), | ||
1645 | FRAC_CONST(0.80757191703924336), | ||
1646 | FRAC_CONST(0.80853584299577752), | ||
1647 | FRAC_CONST(0.80949760425853612), | ||
1648 | FRAC_CONST(0.81045719825259477), | ||
1649 | FRAC_CONST(0.81141462240883167), | ||
1650 | FRAC_CONST(0.81236987416393436), | ||
1651 | FRAC_CONST(0.81332295096040608), | ||
1652 | FRAC_CONST(0.81427385024657373), | ||
1653 | FRAC_CONST(0.81522256947659355), | ||
1654 | FRAC_CONST(0.81616910611045879), | ||
1655 | FRAC_CONST(0.817113457614006), | ||
1656 | FRAC_CONST(0.81805562145892186), | ||
1657 | FRAC_CONST(0.81899559512275044), | ||
1658 | FRAC_CONST(0.81993337608889916), | ||
1659 | FRAC_CONST(0.82086896184664637), | ||
1660 | FRAC_CONST(0.8218023498911472), | ||
1661 | FRAC_CONST(0.82273353772344116), | ||
1662 | FRAC_CONST(0.82366252285045805), | ||
1663 | FRAC_CONST(0.82458930278502529), | ||
1664 | FRAC_CONST(0.82551387504587381), | ||
1665 | FRAC_CONST(0.82643623715764558), | ||
1666 | FRAC_CONST(0.82735638665089983), | ||
1667 | FRAC_CONST(0.82827432106211907), | ||
1668 | FRAC_CONST(0.82919003793371693), | ||
1669 | FRAC_CONST(0.83010353481404364), | ||
1670 | FRAC_CONST(0.83101480925739324), | ||
1671 | FRAC_CONST(0.83192385882400965), | ||
1672 | FRAC_CONST(0.83283068108009373), | ||
1673 | FRAC_CONST(0.8337352735978093), | ||
1674 | FRAC_CONST(0.83463763395529011), | ||
1675 | FRAC_CONST(0.83553775973664579), | ||
1676 | FRAC_CONST(0.83643564853196872), | ||
1677 | FRAC_CONST(0.83733129793734051), | ||
1678 | FRAC_CONST(0.83822470555483797), | ||
1679 | FRAC_CONST(0.83911586899254031), | ||
1680 | FRAC_CONST(0.84000478586453453), | ||
1681 | FRAC_CONST(0.84089145379092289), | ||
1682 | FRAC_CONST(0.84177587039782842), | ||
1683 | FRAC_CONST(0.84265803331740163), | ||
1684 | FRAC_CONST(0.84353794018782702), | ||
1685 | FRAC_CONST(0.844415588653329), | ||
1686 | FRAC_CONST(0.8452909763641786), | ||
1687 | FRAC_CONST(0.84616410097669936), | ||
1688 | FRAC_CONST(0.84703496015327406), | ||
1689 | FRAC_CONST(0.84790355156235053), | ||
1690 | FRAC_CONST(0.84876987287844818), | ||
1691 | FRAC_CONST(0.8496339217821639), | ||
1692 | FRAC_CONST(0.85049569596017938), | ||
1693 | FRAC_CONST(0.85135519310526508), | ||
1694 | FRAC_CONST(0.85221241091628896), | ||
1695 | FRAC_CONST(0.85306734709822085), | ||
1696 | FRAC_CONST(0.85391999936213903), | ||
1697 | FRAC_CONST(0.85477036542523732), | ||
1698 | FRAC_CONST(0.85561844301082923), | ||
1699 | FRAC_CONST(0.85646422984835635), | ||
1700 | FRAC_CONST(0.85730772367339259), | ||
1701 | FRAC_CONST(0.85814892222765116), | ||
1702 | FRAC_CONST(0.85898782325899026), | ||
1703 | FRAC_CONST(0.85982442452141961), | ||
1704 | FRAC_CONST(0.86065872377510555), | ||
1705 | FRAC_CONST(0.86149071878637817), | ||
1706 | FRAC_CONST(0.8623204073277364), | ||
1707 | FRAC_CONST(0.86314778717785412), | ||
1708 | FRAC_CONST(0.8639728561215867), | ||
1709 | FRAC_CONST(0.86479561194997623), | ||
1710 | FRAC_CONST(0.86561605246025763), | ||
1711 | FRAC_CONST(0.86643417545586487), | ||
1712 | FRAC_CONST(0.8672499787464365), | ||
1713 | FRAC_CONST(0.86806346014782154), | ||
1714 | FRAC_CONST(0.8688746174820855), | ||
1715 | FRAC_CONST(0.86968344857751589), | ||
1716 | FRAC_CONST(0.87048995126862883), | ||
1717 | FRAC_CONST(0.87129412339617363), | ||
1718 | FRAC_CONST(0.87209596280713941), | ||
1719 | FRAC_CONST(0.8728954673547612), | ||
1720 | FRAC_CONST(0.87369263489852422), | ||
1721 | FRAC_CONST(0.87448746330417149), | ||
1722 | FRAC_CONST(0.87527995044370765), | ||
1723 | FRAC_CONST(0.8760700941954066), | ||
1724 | FRAC_CONST(0.87685789244381551), | ||
1725 | FRAC_CONST(0.87764334307976144), | ||
1726 | FRAC_CONST(0.87842644400035663), | ||
1727 | FRAC_CONST(0.8792071931090043), | ||
1728 | FRAC_CONST(0.87998558831540408), | ||
1729 | FRAC_CONST(0.88076162753555787), | ||
1730 | FRAC_CONST(0.88153530869177488), | ||
1731 | FRAC_CONST(0.88230662971267804), | ||
1732 | FRAC_CONST(0.88307558853320878), | ||
1733 | FRAC_CONST(0.88384218309463292), | ||
1734 | FRAC_CONST(0.8846064113445461), | ||
1735 | FRAC_CONST(0.88536827123687933), | ||
1736 | FRAC_CONST(0.88612776073190425), | ||
1737 | FRAC_CONST(0.88688487779623937), | ||
1738 | FRAC_CONST(0.88763962040285393), | ||
1739 | FRAC_CONST(0.8883919865310751), | ||
1740 | FRAC_CONST(0.88914197416659235), | ||
1741 | FRAC_CONST(0.88988958130146301), | ||
1742 | FRAC_CONST(0.8906348059341177), | ||
1743 | FRAC_CONST(0.89137764606936609), | ||
1744 | FRAC_CONST(0.89211809971840139), | ||
1745 | FRAC_CONST(0.89285616489880615), | ||
1746 | FRAC_CONST(0.89359183963455813), | ||
1747 | FRAC_CONST(0.89432512195603453), | ||
1748 | FRAC_CONST(0.89505600990001799), | ||
1749 | FRAC_CONST(0.89578450150970124), | ||
1750 | FRAC_CONST(0.8965105948346932), | ||
1751 | FRAC_CONST(0.89723428793102367), | ||
1752 | FRAC_CONST(0.89795557886114807), | ||
1753 | FRAC_CONST(0.89867446569395382), | ||
1754 | FRAC_CONST(0.89939094650476448), | ||
1755 | FRAC_CONST(0.90010501937534515), | ||
1756 | FRAC_CONST(0.900816682393908), | ||
1757 | FRAC_CONST(0.90152593365511691), | ||
1758 | FRAC_CONST(0.90223277126009283), | ||
1759 | FRAC_CONST(0.90293719331641886), | ||
1760 | FRAC_CONST(0.90363919793814496), | ||
1761 | FRAC_CONST(0.90433878324579353), | ||
1762 | FRAC_CONST(0.90503594736636439), | ||
1763 | FRAC_CONST(0.90573068843333915), | ||
1764 | FRAC_CONST(0.90642300458668679), | ||
1765 | FRAC_CONST(0.90711289397286898), | ||
1766 | FRAC_CONST(0.90780035474484411), | ||
1767 | FRAC_CONST(0.90848538506207266), | ||
1768 | FRAC_CONST(0.90916798309052227), | ||
1769 | FRAC_CONST(0.90984814700267291), | ||
1770 | FRAC_CONST(0.9105258749775208), | ||
1771 | FRAC_CONST(0.91120116520058425), | ||
1772 | FRAC_CONST(0.91187401586390815), | ||
1773 | FRAC_CONST(0.91254442516606893), | ||
1774 | FRAC_CONST(0.9132123913121788), | ||
1775 | FRAC_CONST(0.91387791251389161), | ||
1776 | FRAC_CONST(0.91454098698940678), | ||
1777 | FRAC_CONST(0.91520161296347435), | ||
1778 | FRAC_CONST(0.91585978866739981), | ||
1779 | FRAC_CONST(0.91651551233904871), | ||
1780 | FRAC_CONST(0.91716878222285148), | ||
1781 | FRAC_CONST(0.91781959656980805), | ||
1782 | FRAC_CONST(0.91846795363749245), | ||
1783 | FRAC_CONST(0.91911385169005766), | ||
1784 | FRAC_CONST(0.9197572889982405), | ||
1785 | FRAC_CONST(0.9203982638393654), | ||
1786 | FRAC_CONST(0.92103677449734989), | ||
1787 | FRAC_CONST(0.92167281926270861), | ||
1788 | FRAC_CONST(0.92230639643255874), | ||
1789 | FRAC_CONST(0.92293750431062316), | ||
1790 | FRAC_CONST(0.92356614120723612), | ||
1791 | FRAC_CONST(0.92419230543934783), | ||
1792 | FRAC_CONST(0.92481599533052783), | ||
1793 | FRAC_CONST(0.92543720921097061), | ||
1794 | FRAC_CONST(0.92605594541749991), | ||
1795 | FRAC_CONST(0.92667220229357261), | ||
1796 | FRAC_CONST(0.92728597818928349), | ||
1797 | FRAC_CONST(0.9278972714613698), | ||
1798 | FRAC_CONST(0.92850608047321548), | ||
1799 | FRAC_CONST(0.9291124035948557), | ||
1800 | FRAC_CONST(0.92971623920298097), | ||
1801 | FRAC_CONST(0.93031758568094147), | ||
1802 | FRAC_CONST(0.93091644141875196), | ||
1803 | FRAC_CONST(0.93151280481309506), | ||
1804 | FRAC_CONST(0.93210667426732674), | ||
1805 | FRAC_CONST(0.93269804819147983), | ||
1806 | FRAC_CONST(0.93328692500226818), | ||
1807 | FRAC_CONST(0.93387330312309147), | ||
1808 | FRAC_CONST(0.93445718098403896), | ||
1809 | FRAC_CONST(0.93503855702189376), | ||
1810 | FRAC_CONST(0.9356174296801375), | ||
1811 | FRAC_CONST(0.93619379740895381), | ||
1812 | FRAC_CONST(0.93676765866523259), | ||
1813 | FRAC_CONST(0.93733901191257496), | ||
1814 | FRAC_CONST(0.93790785562129597), | ||
1815 | FRAC_CONST(0.93847418826842988), | ||
1816 | FRAC_CONST(0.93903800833773399), | ||
1817 | FRAC_CONST(0.93959931431969212), | ||
1818 | FRAC_CONST(0.94015810471151917), | ||
1819 | FRAC_CONST(0.94071437801716529), | ||
1820 | FRAC_CONST(0.94126813274731924), | ||
1821 | FRAC_CONST(0.94181936741941319), | ||
1822 | FRAC_CONST(0.94236808055762578), | ||
1823 | FRAC_CONST(0.94291427069288691), | ||
1824 | FRAC_CONST(0.94345793636288133), | ||
1825 | FRAC_CONST(0.94399907611205225), | ||
1826 | FRAC_CONST(0.9445376884916058), | ||
1827 | FRAC_CONST(0.94507377205951448), | ||
1828 | FRAC_CONST(0.94560732538052128), | ||
1829 | FRAC_CONST(0.94613834702614352), | ||
1830 | FRAC_CONST(0.94666683557467624), | ||
1831 | FRAC_CONST(0.94719278961119657), | ||
1832 | FRAC_CONST(0.94771620772756759), | ||
1833 | FRAC_CONST(0.94823708852244104), | ||
1834 | FRAC_CONST(0.94875543060126255), | ||
1835 | FRAC_CONST(0.94927123257627433), | ||
1836 | FRAC_CONST(0.94978449306651924), | ||
1837 | FRAC_CONST(0.95029521069784428), | ||
1838 | FRAC_CONST(0.9508033841029051), | ||
1839 | FRAC_CONST(0.95130901192116835), | ||
1840 | FRAC_CONST(0.9518120927989161), | ||
1841 | FRAC_CONST(0.95231262538924943), | ||
1842 | FRAC_CONST(0.95281060835209208), | ||
1843 | FRAC_CONST(0.95330604035419386), | ||
1844 | FRAC_CONST(0.95379892006913403), | ||
1845 | FRAC_CONST(0.95428924617732525), | ||
1846 | FRAC_CONST(0.95477701736601728), | ||
1847 | FRAC_CONST(0.95526223232929941), | ||
1848 | FRAC_CONST(0.95574488976810545), | ||
1849 | FRAC_CONST(0.95622498839021619), | ||
1850 | FRAC_CONST(0.95670252691026292), | ||
1851 | FRAC_CONST(0.95717750404973156), | ||
1852 | FRAC_CONST(0.95764991853696524), | ||
1853 | FRAC_CONST(0.95811976910716812), | ||
1854 | FRAC_CONST(0.95858705450240911), | ||
1855 | FRAC_CONST(0.95905177347162429), | ||
1856 | FRAC_CONST(0.95951392477062125), | ||
1857 | FRAC_CONST(0.95997350716208196), | ||
1858 | FRAC_CONST(0.96043051941556579), | ||
1859 | FRAC_CONST(0.96088496030751369), | ||
1860 | FRAC_CONST(0.96133682862125036), | ||
1861 | FRAC_CONST(0.96178612314698864), | ||
1862 | FRAC_CONST(0.96223284268183173), | ||
1863 | FRAC_CONST(0.9626769860297768), | ||
1864 | FRAC_CONST(0.96311855200171881), | ||
1865 | FRAC_CONST(0.96355753941545252), | ||
1866 | FRAC_CONST(0.96399394709567654), | ||
1867 | FRAC_CONST(0.96442777387399625), | ||
1868 | FRAC_CONST(0.96485901858892686), | ||
1869 | FRAC_CONST(0.96528768008589627), | ||
1870 | FRAC_CONST(0.96571375721724895), | ||
1871 | FRAC_CONST(0.96613724884224783), | ||
1872 | FRAC_CONST(0.96655815382707866), | ||
1873 | FRAC_CONST(0.96697647104485207), | ||
1874 | FRAC_CONST(0.96739219937560694), | ||
1875 | FRAC_CONST(0.96780533770631338), | ||
1876 | FRAC_CONST(0.96821588493087585), | ||
1877 | FRAC_CONST(0.9686238399501359), | ||
1878 | FRAC_CONST(0.96902920167187501), | ||
1879 | FRAC_CONST(0.96943196901081796), | ||
1880 | FRAC_CONST(0.96983214088863534), | ||
1881 | FRAC_CONST(0.9702297162339466), | ||
1882 | FRAC_CONST(0.97062469398232287), | ||
1883 | FRAC_CONST(0.97101707307629004), | ||
1884 | FRAC_CONST(0.97140685246533098), | ||
1885 | FRAC_CONST(0.97179403110588902), | ||
1886 | FRAC_CONST(0.97217860796137046), | ||
1887 | FRAC_CONST(0.97256058200214734), | ||
1888 | FRAC_CONST(0.97293995220556007), | ||
1889 | FRAC_CONST(0.97331671755592064), | ||
1890 | FRAC_CONST(0.97369087704451474), | ||
1891 | FRAC_CONST(0.97406242966960455), | ||
1892 | FRAC_CONST(0.97443137443643235), | ||
1893 | FRAC_CONST(0.97479771035722163), | ||
1894 | FRAC_CONST(0.97516143645118103), | ||
1895 | FRAC_CONST(0.97552255174450631), | ||
1896 | FRAC_CONST(0.97588105527038305), | ||
1897 | FRAC_CONST(0.97623694606898959), | ||
1898 | FRAC_CONST(0.97659022318749911), | ||
1899 | FRAC_CONST(0.97694088568008242), | ||
1900 | FRAC_CONST(0.97728893260791039), | ||
1901 | FRAC_CONST(0.97763436303915685), | ||
1902 | FRAC_CONST(0.97797717604900047), | ||
1903 | FRAC_CONST(0.97831737071962765), | ||
1904 | FRAC_CONST(0.97865494614023485), | ||
1905 | FRAC_CONST(0.97898990140703124), | ||
1906 | FRAC_CONST(0.97932223562324061), | ||
1907 | FRAC_CONST(0.97965194789910426), | ||
1908 | FRAC_CONST(0.9799790373518833), | ||
1909 | FRAC_CONST(0.98030350310586067), | ||
1910 | FRAC_CONST(0.98062534429234405), | ||
1911 | FRAC_CONST(0.98094456004966768), | ||
1912 | FRAC_CONST(0.98126114952319499), | ||
1913 | FRAC_CONST(0.98157511186532054), | ||
1914 | FRAC_CONST(0.98188644623547261), | ||
1915 | FRAC_CONST(0.98219515180011563), | ||
1916 | FRAC_CONST(0.98250122773275184), | ||
1917 | FRAC_CONST(0.98280467321392362), | ||
1918 | FRAC_CONST(0.98310548743121629), | ||
1919 | FRAC_CONST(0.98340366957925973), | ||
1920 | FRAC_CONST(0.98369921885973044), | ||
1921 | FRAC_CONST(0.98399213448135414), | ||
1922 | FRAC_CONST(0.98428241565990748), | ||
1923 | FRAC_CONST(0.98457006161822058), | ||
1924 | FRAC_CONST(0.98485507158617835), | ||
1925 | FRAC_CONST(0.98513744480072363), | ||
1926 | FRAC_CONST(0.98541718050585803), | ||
1927 | FRAC_CONST(0.98569427795264519), | ||
1928 | FRAC_CONST(0.98596873639921168), | ||
1929 | FRAC_CONST(0.98624055511074971), | ||
1930 | FRAC_CONST(0.98650973335951875), | ||
1931 | FRAC_CONST(0.98677627042484772), | ||
1932 | FRAC_CONST(0.98704016559313645), | ||
1933 | FRAC_CONST(0.98730141815785832), | ||
1934 | FRAC_CONST(0.98756002741956173), | ||
1935 | FRAC_CONST(0.9878159926858715), | ||
1936 | FRAC_CONST(0.98806931327149194), | ||
1937 | FRAC_CONST(0.98831998849820735), | ||
1938 | FRAC_CONST(0.98856801769488489), | ||
1939 | FRAC_CONST(0.98881340019747566), | ||
1940 | FRAC_CONST(0.98905613534901682), | ||
1941 | FRAC_CONST(0.98929622249963345), | ||
1942 | FRAC_CONST(0.98953366100653983), | ||
1943 | FRAC_CONST(0.98976845023404181), | ||
1944 | FRAC_CONST(0.99000058955353776), | ||
1945 | FRAC_CONST(0.99023007834352106), | ||
1946 | FRAC_CONST(0.99045691598958097), | ||
1947 | FRAC_CONST(0.99068110188440506), | ||
1948 | FRAC_CONST(0.99090263542778001), | ||
1949 | FRAC_CONST(0.99112151602659404), | ||
1950 | FRAC_CONST(0.99133774309483769), | ||
1951 | FRAC_CONST(0.99155131605360625), | ||
1952 | FRAC_CONST(0.99176223433110056), | ||
1953 | FRAC_CONST(0.99197049736262888), | ||
1954 | FRAC_CONST(0.99217610459060845), | ||
1955 | FRAC_CONST(0.99237905546456673), | ||
1956 | FRAC_CONST(0.99257934944114334), | ||
1957 | FRAC_CONST(0.99277698598409092), | ||
1958 | FRAC_CONST(0.99297196456427694), | ||
1959 | FRAC_CONST(0.99316428465968509), | ||
1960 | FRAC_CONST(0.99335394575541669), | ||
1961 | FRAC_CONST(0.99354094734369169), | ||
1962 | FRAC_CONST(0.99372528892385081), | ||
1963 | FRAC_CONST(0.99390697000235606), | ||
1964 | FRAC_CONST(0.99408599009279242), | ||
1965 | FRAC_CONST(0.99426234871586938), | ||
1966 | FRAC_CONST(0.99443604539942176), | ||
1967 | FRAC_CONST(0.99460707967841133), | ||
1968 | FRAC_CONST(0.99477545109492771), | ||
1969 | FRAC_CONST(0.99494115919819004), | ||
1970 | FRAC_CONST(0.99510420354454787), | ||
1971 | FRAC_CONST(0.99526458369748239), | ||
1972 | FRAC_CONST(0.99542229922760772), | ||
1973 | FRAC_CONST(0.99557734971267187), | ||
1974 | FRAC_CONST(0.9957297347375581), | ||
1975 | FRAC_CONST(0.99587945389428578), | ||
1976 | FRAC_CONST(0.99602650678201154), | ||
1977 | FRAC_CONST(0.99617089300703077), | ||
1978 | FRAC_CONST(0.996312612182778), | ||
1979 | FRAC_CONST(0.99645166392982831), | ||
1980 | FRAC_CONST(0.99658804787589839), | ||
1981 | FRAC_CONST(0.99672176365584741), | ||
1982 | FRAC_CONST(0.99685281091167788), | ||
1983 | FRAC_CONST(0.99698118929253687), | ||
1984 | FRAC_CONST(0.99710689845471678), | ||
1985 | FRAC_CONST(0.99722993806165661), | ||
1986 | FRAC_CONST(0.99735030778394196), | ||
1987 | FRAC_CONST(0.99746800729930707), | ||
1988 | FRAC_CONST(0.99758303629263489), | ||
1989 | FRAC_CONST(0.99769539445595812), | ||
1990 | FRAC_CONST(0.99780508148846014), | ||
1991 | FRAC_CONST(0.99791209709647588), | ||
1992 | FRAC_CONST(0.99801644099349218), | ||
1993 | FRAC_CONST(0.99811811290014918), | ||
1994 | FRAC_CONST(0.9982171125442405), | ||
1995 | FRAC_CONST(0.9983134396607144), | ||
1996 | FRAC_CONST(0.99840709399167404), | ||
1997 | FRAC_CONST(0.99849807528637868), | ||
1998 | FRAC_CONST(0.99858638330124405), | ||
1999 | FRAC_CONST(0.99867201779984294), | ||
2000 | FRAC_CONST(0.99875497855290607), | ||
2001 | FRAC_CONST(0.99883526533832245), | ||
2002 | FRAC_CONST(0.99891287794114036), | ||
2003 | FRAC_CONST(0.99898781615356746), | ||
2004 | FRAC_CONST(0.99906007977497147), | ||
2005 | FRAC_CONST(0.99912966861188113), | ||
2006 | FRAC_CONST(0.99919658247798593), | ||
2007 | FRAC_CONST(0.99926082119413751), | ||
2008 | FRAC_CONST(0.99932238458834954), | ||
2009 | FRAC_CONST(0.999381272495798), | ||
2010 | FRAC_CONST(0.99943748475882255), | ||
2011 | FRAC_CONST(0.9994910212269259), | ||
2012 | FRAC_CONST(0.99954188175677483), | ||
2013 | FRAC_CONST(0.99959006621220048), | ||
2014 | FRAC_CONST(0.99963557446419837), | ||
2015 | FRAC_CONST(0.99967840639092931), | ||
2016 | FRAC_CONST(0.99971856187771946), | ||
2017 | FRAC_CONST(0.99975604081706027), | ||
2018 | FRAC_CONST(0.99979084310860955), | ||
2019 | FRAC_CONST(0.99982296865919107), | ||
2020 | FRAC_CONST(0.99985241738279484), | ||
2021 | FRAC_CONST(0.99987918920057806), | ||
2022 | FRAC_CONST(0.99990328404086426), | ||
2023 | FRAC_CONST(0.9999247018391445), | ||
2024 | FRAC_CONST(0.99994344253807688), | ||
2025 | FRAC_CONST(0.99995950608748674), | ||
2026 | FRAC_CONST(0.99997289244436727), | ||
2027 | FRAC_CONST(0.99998360157287902), | ||
2028 | FRAC_CONST(0.9999916334443506), | ||
2029 | FRAC_CONST(0.99999698803727821), | ||
2030 | FRAC_CONST(0.99999966533732598) | ||
2031 | }; | ||
2032 | #endif | ||
2033 | |||
2034 | static const real_t sine_short_128[] ICONST_ATTR MEM_ALIGN_ATTR = | ||
2035 | { | ||
2036 | FRAC_CONST(0.0061358846491544753), | ||
2037 | FRAC_CONST(0.01840672990580482), | ||
2038 | FRAC_CONST(0.030674803176636626), | ||
2039 | FRAC_CONST(0.04293825693494082), | ||
2040 | FRAC_CONST(0.055195244349689934), | ||
2041 | FRAC_CONST(0.067443919563664051), | ||
2042 | FRAC_CONST(0.079682437971430126), | ||
2043 | FRAC_CONST(0.091908956497132724), | ||
2044 | FRAC_CONST(0.10412163387205459), | ||
2045 | FRAC_CONST(0.11631863091190475), | ||
2046 | FRAC_CONST(0.12849811079379317), | ||
2047 | FRAC_CONST(0.14065823933284921), | ||
2048 | FRAC_CONST(0.15279718525844344), | ||
2049 | FRAC_CONST(0.16491312048996989), | ||
2050 | FRAC_CONST(0.17700422041214875), | ||
2051 | FRAC_CONST(0.18906866414980619), | ||
2052 | FRAC_CONST(0.2011046348420919), | ||
2053 | FRAC_CONST(0.21311031991609136), | ||
2054 | FRAC_CONST(0.22508391135979283), | ||
2055 | FRAC_CONST(0.2370236059943672), | ||
2056 | FRAC_CONST(0.24892760574572015), | ||
2057 | FRAC_CONST(0.26079411791527551), | ||
2058 | FRAC_CONST(0.27262135544994898), | ||
2059 | FRAC_CONST(0.28440753721127188), | ||
2060 | FRAC_CONST(0.29615088824362379), | ||
2061 | FRAC_CONST(0.30784964004153487), | ||
2062 | FRAC_CONST(0.31950203081601569), | ||
2063 | FRAC_CONST(0.33110630575987643), | ||
2064 | FRAC_CONST(0.34266071731199438), | ||
2065 | FRAC_CONST(0.35416352542049034), | ||
2066 | FRAC_CONST(0.36561299780477385), | ||
2067 | FRAC_CONST(0.37700741021641826), | ||
2068 | FRAC_CONST(0.38834504669882625), | ||
2069 | FRAC_CONST(0.39962419984564679), | ||
2070 | FRAC_CONST(0.41084317105790391), | ||
2071 | FRAC_CONST(0.42200027079979968), | ||
2072 | FRAC_CONST(0.43309381885315196), | ||
2073 | FRAC_CONST(0.4441221445704292), | ||
2074 | FRAC_CONST(0.45508358712634384), | ||
2075 | FRAC_CONST(0.46597649576796618), | ||
2076 | FRAC_CONST(0.47679923006332209), | ||
2077 | FRAC_CONST(0.487550160148436), | ||
2078 | FRAC_CONST(0.49822766697278187), | ||
2079 | FRAC_CONST(0.50883014254310699), | ||
2080 | FRAC_CONST(0.51935599016558964), | ||
2081 | FRAC_CONST(0.52980362468629461), | ||
2082 | FRAC_CONST(0.54017147272989285), | ||
2083 | FRAC_CONST(0.55045797293660481), | ||
2084 | FRAC_CONST(0.56066157619733603), | ||
2085 | FRAC_CONST(0.57078074588696726), | ||
2086 | FRAC_CONST(0.58081395809576453), | ||
2087 | FRAC_CONST(0.59075970185887416), | ||
2088 | FRAC_CONST(0.60061647938386897), | ||
2089 | FRAC_CONST(0.61038280627630948), | ||
2090 | FRAC_CONST(0.6200572117632891), | ||
2091 | FRAC_CONST(0.62963823891492698), | ||
2092 | FRAC_CONST(0.63912444486377573), | ||
2093 | FRAC_CONST(0.64851440102211244), | ||
2094 | FRAC_CONST(0.65780669329707864), | ||
2095 | FRAC_CONST(0.66699992230363747), | ||
2096 | FRAC_CONST(0.67609270357531592), | ||
2097 | FRAC_CONST(0.68508366777270036), | ||
2098 | FRAC_CONST(0.693971460889654), | ||
2099 | FRAC_CONST(0.7027547444572253), | ||
2100 | FRAC_CONST(0.71143219574521643), | ||
2101 | FRAC_CONST(0.72000250796138165), | ||
2102 | FRAC_CONST(0.7284643904482252), | ||
2103 | FRAC_CONST(0.73681656887736979), | ||
2104 | FRAC_CONST(0.74505778544146595), | ||
2105 | FRAC_CONST(0.75318679904361241), | ||
2106 | FRAC_CONST(0.76120238548426178), | ||
2107 | FRAC_CONST(0.76910333764557959), | ||
2108 | FRAC_CONST(0.77688846567323244), | ||
2109 | FRAC_CONST(0.78455659715557524), | ||
2110 | FRAC_CONST(0.79210657730021239), | ||
2111 | FRAC_CONST(0.79953726910790501), | ||
2112 | FRAC_CONST(0.80684755354379922), | ||
2113 | FRAC_CONST(0.8140363297059483), | ||
2114 | FRAC_CONST(0.82110251499110465), | ||
2115 | FRAC_CONST(0.8280450452577558), | ||
2116 | FRAC_CONST(0.83486287498638001), | ||
2117 | FRAC_CONST(0.84155497743689833), | ||
2118 | FRAC_CONST(0.84812034480329712), | ||
2119 | FRAC_CONST(0.85455798836540053), | ||
2120 | FRAC_CONST(0.86086693863776731), | ||
2121 | FRAC_CONST(0.86704624551569265), | ||
2122 | FRAC_CONST(0.87309497841829009), | ||
2123 | FRAC_CONST(0.87901222642863341), | ||
2124 | FRAC_CONST(0.88479709843093779), | ||
2125 | FRAC_CONST(0.89044872324475788), | ||
2126 | FRAC_CONST(0.89596624975618511), | ||
2127 | FRAC_CONST(0.90134884704602203), | ||
2128 | FRAC_CONST(0.90659570451491533), | ||
2129 | FRAC_CONST(0.91170603200542988), | ||
2130 | FRAC_CONST(0.9166790599210427), | ||
2131 | FRAC_CONST(0.9215140393420419), | ||
2132 | FRAC_CONST(0.92621024213831127), | ||
2133 | FRAC_CONST(0.93076696107898371), | ||
2134 | FRAC_CONST(0.9351835099389475), | ||
2135 | FRAC_CONST(0.93945922360218992), | ||
2136 | FRAC_CONST(0.94359345816196039), | ||
2137 | FRAC_CONST(0.94758559101774109), | ||
2138 | FRAC_CONST(0.95143502096900834), | ||
2139 | FRAC_CONST(0.95514116830577067), | ||
2140 | FRAC_CONST(0.9587034748958716), | ||
2141 | FRAC_CONST(0.96212140426904158), | ||
2142 | FRAC_CONST(0.9653944416976894), | ||
2143 | FRAC_CONST(0.96852209427441727), | ||
2144 | FRAC_CONST(0.97150389098625178), | ||
2145 | FRAC_CONST(0.97433938278557586), | ||
2146 | FRAC_CONST(0.97702814265775439), | ||
2147 | FRAC_CONST(0.97956976568544052), | ||
2148 | FRAC_CONST(0.98196386910955524), | ||
2149 | FRAC_CONST(0.98421009238692903), | ||
2150 | FRAC_CONST(0.98630809724459867), | ||
2151 | FRAC_CONST(0.98825756773074946), | ||
2152 | FRAC_CONST(0.99005821026229712), | ||
2153 | FRAC_CONST(0.99170975366909953), | ||
2154 | FRAC_CONST(0.9932119492347945), | ||
2155 | FRAC_CONST(0.99456457073425542), | ||
2156 | FRAC_CONST(0.99576741446765982), | ||
2157 | FRAC_CONST(0.99682029929116567), | ||
2158 | FRAC_CONST(0.99772306664419164), | ||
2159 | FRAC_CONST(0.99847558057329477), | ||
2160 | FRAC_CONST(0.99907772775264536), | ||
2161 | FRAC_CONST(0.99952941750109314), | ||
2162 | FRAC_CONST(0.9998305817958234), | ||
2163 | FRAC_CONST(0.99998117528260111) | ||
2164 | }; | ||
2165 | |||
2166 | #ifdef ALLOW_SMALL_FRAMELENGTH | ||
2167 | static const real_t sine_short_120[] MEM_ALIGN_ATTR = | ||
2168 | { | ||
2169 | FRAC_CONST(0.0065449379673518581), | ||
2170 | FRAC_CONST(0.019633692460628301), | ||
2171 | FRAC_CONST(0.032719082821776137), | ||
2172 | FRAC_CONST(0.045798866936520771), | ||
2173 | FRAC_CONST(0.058870803651189033), | ||
2174 | FRAC_CONST(0.071932653156719387), | ||
2175 | FRAC_CONST(0.084982177372441667), | ||
2176 | FRAC_CONST(0.09801714032956059), | ||
2177 | FRAC_CONST(0.11103530855427769), | ||
2178 | FRAC_CONST(0.12403445145048532), | ||
2179 | FRAC_CONST(0.13701234168196802), | ||
2180 | FRAC_CONST(0.14996675555404498), | ||
2181 | FRAC_CONST(0.16289547339458874), | ||
2182 | FRAC_CONST(0.17579627993435451), | ||
2183 | FRAC_CONST(0.18866696468655525), | ||
2184 | FRAC_CONST(0.2015053223256171), | ||
2185 | FRAC_CONST(0.21430915306505074), | ||
2186 | FRAC_CONST(0.2270762630343732), | ||
2187 | FRAC_CONST(0.23980446465501654), | ||
2188 | FRAC_CONST(0.25249157701515795), | ||
2189 | FRAC_CONST(0.26513542624340797), | ||
2190 | FRAC_CONST(0.27773384588129219), | ||
2191 | FRAC_CONST(0.29028467725446233), | ||
2192 | FRAC_CONST(0.3027857698425746), | ||
2193 | FRAC_CONST(0.31523498164776964), | ||
2194 | FRAC_CONST(0.32763017956169349), | ||
2195 | FRAC_CONST(0.33996923973099424), | ||
2196 | FRAC_CONST(0.35225004792123354), | ||
2197 | FRAC_CONST(0.36447049987914965), | ||
2198 | FRAC_CONST(0.37662850169321077), | ||
2199 | FRAC_CONST(0.38872197015239557), | ||
2200 | FRAC_CONST(0.40074883310314097), | ||
2201 | FRAC_CONST(0.41270702980439467), | ||
2202 | FRAC_CONST(0.42459451128071307), | ||
2203 | FRAC_CONST(0.43640924067334208), | ||
2204 | FRAC_CONST(0.44814919358922256), | ||
2205 | FRAC_CONST(0.45981235844785984), | ||
2206 | FRAC_CONST(0.47139673682599764), | ||
2207 | FRAC_CONST(0.48290034380003727), | ||
2208 | FRAC_CONST(0.49432120828614462), | ||
2209 | FRAC_CONST(0.50565737337798455), | ||
2210 | FRAC_CONST(0.51690689668202761), | ||
2211 | FRAC_CONST(0.52806785065036799), | ||
2212 | FRAC_CONST(0.53913832291100017), | ||
2213 | FRAC_CONST(0.55011641659549337), | ||
2214 | FRAC_CONST(0.56100025066400983), | ||
2215 | FRAC_CONST(0.57178796022761225), | ||
2216 | FRAC_CONST(0.58247769686780215), | ||
2217 | FRAC_CONST(0.59306762895323706), | ||
2218 | FRAC_CONST(0.60355594195357143), | ||
2219 | FRAC_CONST(0.61394083875036642), | ||
2220 | FRAC_CONST(0.62422053994501758), | ||
2221 | FRAC_CONST(0.63439328416364549), | ||
2222 | FRAC_CONST(0.64445732835889735), | ||
2223 | FRAC_CONST(0.65441094810861034), | ||
2224 | FRAC_CONST(0.66425243791128175), | ||
2225 | FRAC_CONST(0.67398011147829784), | ||
2226 | FRAC_CONST(0.68359230202287125), | ||
2227 | FRAC_CONST(0.69308736254563585), | ||
2228 | FRAC_CONST(0.70246366611685174), | ||
2229 | FRAC_CONST(0.71171960615517138), | ||
2230 | FRAC_CONST(0.72085359670291882), | ||
2231 | FRAC_CONST(0.7298640726978356), | ||
2232 | FRAC_CONST(0.73874949024124625), | ||
2233 | FRAC_CONST(0.74750832686259672), | ||
2234 | FRAC_CONST(0.75613908178032285), | ||
2235 | FRAC_CONST(0.76464027615900032), | ||
2236 | FRAC_CONST(0.77301045336273699), | ||
2237 | FRAC_CONST(0.78124817920475853), | ||
2238 | FRAC_CONST(0.78935204219315003), | ||
2239 | FRAC_CONST(0.79732065377270711), | ||
2240 | FRAC_CONST(0.80515264856285829), | ||
2241 | FRAC_CONST(0.81284668459161513), | ||
2242 | FRAC_CONST(0.82040144352551359), | ||
2243 | FRAC_CONST(0.82781563089550203), | ||
2244 | FRAC_CONST(0.83508797631874299), | ||
2245 | FRAC_CONST(0.84221723371628654), | ||
2246 | FRAC_CONST(0.84920218152657889), | ||
2247 | FRAC_CONST(0.85604162291477137), | ||
2248 | FRAC_CONST(0.86273438597779184), | ||
2249 | FRAC_CONST(0.86927932394514362), | ||
2250 | FRAC_CONST(0.87567531537539967), | ||
2251 | FRAC_CONST(0.88192126434835494), | ||
2252 | FRAC_CONST(0.88801610065280734), | ||
2253 | FRAC_CONST(0.89395877996993212), | ||
2254 | FRAC_CONST(0.8997482840522214), | ||
2255 | FRAC_CONST(0.90538362089795521), | ||
2256 | FRAC_CONST(0.91086382492117568), | ||
2257 | FRAC_CONST(0.91618795711713596), | ||
2258 | FRAC_CONST(0.92135510522319242), | ||
2259 | FRAC_CONST(0.9263643838751181), | ||
2260 | FRAC_CONST(0.93121493475880346), | ||
2261 | FRAC_CONST(0.93590592675732565), | ||
2262 | FRAC_CONST(0.94043655609335486), | ||
2263 | FRAC_CONST(0.94480604646687805), | ||
2264 | FRAC_CONST(0.94901364918821385), | ||
2265 | FRAC_CONST(0.95305864330629697), | ||
2266 | FRAC_CONST(0.95694033573220882), | ||
2267 | FRAC_CONST(0.9606580613579353), | ||
2268 | FRAC_CONST(0.96421118317032928), | ||
2269 | FRAC_CONST(0.96759909236025976), | ||
2270 | FRAC_CONST(0.9708212084269281), | ||
2271 | FRAC_CONST(0.97387697927733363), | ||
2272 | FRAC_CONST(0.97676588132087239), | ||
2273 | FRAC_CONST(0.97948741955905139), | ||
2274 | FRAC_CONST(0.98204112767030394), | ||
2275 | FRAC_CONST(0.98442656808989171), | ||
2276 | FRAC_CONST(0.98664333208487898), | ||
2277 | FRAC_CONST(0.98869103982416728), | ||
2278 | FRAC_CONST(0.99056934044357725), | ||
2279 | FRAC_CONST(0.99227791210596705), | ||
2280 | FRAC_CONST(0.99381646205637808), | ||
2281 | FRAC_CONST(0.99518472667219682), | ||
2282 | FRAC_CONST(0.99638247150832537), | ||
2283 | FRAC_CONST(0.99740949133735191), | ||
2284 | FRAC_CONST(0.99826561018471593), | ||
2285 | FRAC_CONST(0.99895068135886012), | ||
2286 | FRAC_CONST(0.99946458747636568), | ||
2287 | FRAC_CONST(0.99980724048206482), | ||
2288 | FRAC_CONST(0.99997858166412923) | ||
2289 | }; | ||
2290 | #endif | ||
2291 | |||
2292 | #ifdef LD_DEC | ||
2293 | static const real_t sine_mid_512[] MEM_ALIGN_ATTR = | ||
2294 | { | ||
2295 | FRAC_CONST(0.0015339801862847655), | ||
2296 | FRAC_CONST(0.0046019261204485705), | ||
2297 | FRAC_CONST(0.007669828739531097), | ||
2298 | FRAC_CONST(0.010737659167264491), | ||
2299 | FRAC_CONST(0.013805388528060391), | ||
2300 | FRAC_CONST(0.01687298794728171), | ||
2301 | FRAC_CONST(0.019940428551514441), | ||
2302 | FRAC_CONST(0.023007681468839369), | ||
2303 | FRAC_CONST(0.026074717829103901), | ||
2304 | FRAC_CONST(0.029141508764193722), | ||
2305 | FRAC_CONST(0.032208025408304586), | ||
2306 | FRAC_CONST(0.035274238898213947), | ||
2307 | FRAC_CONST(0.038340120373552694), | ||
2308 | FRAC_CONST(0.041405640977076739), | ||
2309 | FRAC_CONST(0.044470771854938668), | ||
2310 | FRAC_CONST(0.047535484156959303), | ||
2311 | FRAC_CONST(0.050599749036899282), | ||
2312 | FRAC_CONST(0.05366353765273052), | ||
2313 | FRAC_CONST(0.056726821166907748), | ||
2314 | FRAC_CONST(0.059789570746639868), | ||
2315 | FRAC_CONST(0.062851757564161406), | ||
2316 | FRAC_CONST(0.065913352797003805), | ||
2317 | FRAC_CONST(0.068974327628266746), | ||
2318 | FRAC_CONST(0.072034653246889332), | ||
2319 | FRAC_CONST(0.075094300847921305), | ||
2320 | FRAC_CONST(0.078153241632794232), | ||
2321 | FRAC_CONST(0.081211446809592441), | ||
2322 | FRAC_CONST(0.084268887593324071), | ||
2323 | FRAC_CONST(0.087325535206192059), | ||
2324 | FRAC_CONST(0.090381360877864983), | ||
2325 | FRAC_CONST(0.093436335845747787), | ||
2326 | FRAC_CONST(0.096490431355252593), | ||
2327 | FRAC_CONST(0.099543618660069319), | ||
2328 | FRAC_CONST(0.10259586902243628), | ||
2329 | FRAC_CONST(0.10564715371341062), | ||
2330 | FRAC_CONST(0.10869744401313872), | ||
2331 | FRAC_CONST(0.11174671121112659), | ||
2332 | FRAC_CONST(0.11479492660651008), | ||
2333 | FRAC_CONST(0.11784206150832498), | ||
2334 | FRAC_CONST(0.12088808723577708), | ||
2335 | FRAC_CONST(0.12393297511851216), | ||
2336 | FRAC_CONST(0.12697669649688587), | ||
2337 | FRAC_CONST(0.13001922272223335), | ||
2338 | FRAC_CONST(0.13306052515713906), | ||
2339 | FRAC_CONST(0.1361005751757062), | ||
2340 | FRAC_CONST(0.1391393441638262), | ||
2341 | FRAC_CONST(0.14217680351944803), | ||
2342 | FRAC_CONST(0.14521292465284746), | ||
2343 | FRAC_CONST(0.14824767898689603), | ||
2344 | FRAC_CONST(0.15128103795733022), | ||
2345 | FRAC_CONST(0.1543129730130201), | ||
2346 | FRAC_CONST(0.15734345561623825), | ||
2347 | FRAC_CONST(0.16037245724292828), | ||
2348 | FRAC_CONST(0.16339994938297323), | ||
2349 | FRAC_CONST(0.1664259035404641), | ||
2350 | FRAC_CONST(0.16945029123396796), | ||
2351 | FRAC_CONST(0.17247308399679595), | ||
2352 | FRAC_CONST(0.17549425337727143), | ||
2353 | FRAC_CONST(0.17851377093899751), | ||
2354 | FRAC_CONST(0.18153160826112497), | ||
2355 | FRAC_CONST(0.18454773693861962), | ||
2356 | FRAC_CONST(0.1875621285825296), | ||
2357 | FRAC_CONST(0.19057475482025274), | ||
2358 | FRAC_CONST(0.19358558729580361), | ||
2359 | FRAC_CONST(0.19659459767008022), | ||
2360 | FRAC_CONST(0.19960175762113097), | ||
2361 | FRAC_CONST(0.20260703884442113), | ||
2362 | FRAC_CONST(0.20561041305309924), | ||
2363 | FRAC_CONST(0.20861185197826349), | ||
2364 | FRAC_CONST(0.21161132736922755), | ||
2365 | FRAC_CONST(0.21460881099378676), | ||
2366 | FRAC_CONST(0.21760427463848364), | ||
2367 | FRAC_CONST(0.22059769010887351), | ||
2368 | FRAC_CONST(0.22358902922978999), | ||
2369 | FRAC_CONST(0.22657826384561), | ||
2370 | FRAC_CONST(0.22956536582051887), | ||
2371 | FRAC_CONST(0.23255030703877524), | ||
2372 | FRAC_CONST(0.23553305940497549), | ||
2373 | FRAC_CONST(0.23851359484431842), | ||
2374 | FRAC_CONST(0.24149188530286933), | ||
2375 | FRAC_CONST(0.24446790274782415), | ||
2376 | FRAC_CONST(0.24744161916777327), | ||
2377 | FRAC_CONST(0.25041300657296522), | ||
2378 | FRAC_CONST(0.25338203699557016), | ||
2379 | FRAC_CONST(0.25634868248994291), | ||
2380 | FRAC_CONST(0.25931291513288623), | ||
2381 | FRAC_CONST(0.26227470702391359), | ||
2382 | FRAC_CONST(0.26523403028551179), | ||
2383 | FRAC_CONST(0.26819085706340318), | ||
2384 | FRAC_CONST(0.27114515952680801), | ||
2385 | FRAC_CONST(0.27409690986870638), | ||
2386 | FRAC_CONST(0.2770460803060999), | ||
2387 | FRAC_CONST(0.27999264308027322), | ||
2388 | FRAC_CONST(0.28293657045705539), | ||
2389 | FRAC_CONST(0.28587783472708062), | ||
2390 | FRAC_CONST(0.28881640820604948), | ||
2391 | FRAC_CONST(0.29175226323498926), | ||
2392 | FRAC_CONST(0.29468537218051433), | ||
2393 | FRAC_CONST(0.2976157074350862), | ||
2394 | FRAC_CONST(0.30054324141727345), | ||
2395 | FRAC_CONST(0.30346794657201132), | ||
2396 | FRAC_CONST(0.30638979537086092), | ||
2397 | FRAC_CONST(0.30930876031226873), | ||
2398 | FRAC_CONST(0.31222481392182488), | ||
2399 | FRAC_CONST(0.31513792875252244), | ||
2400 | FRAC_CONST(0.31804807738501495), | ||
2401 | FRAC_CONST(0.32095523242787521), | ||
2402 | FRAC_CONST(0.32385936651785285), | ||
2403 | FRAC_CONST(0.32676045232013173), | ||
2404 | FRAC_CONST(0.32965846252858749), | ||
2405 | FRAC_CONST(0.33255336986604422), | ||
2406 | FRAC_CONST(0.3354451470845316), | ||
2407 | FRAC_CONST(0.33833376696554113), | ||
2408 | FRAC_CONST(0.34121920232028236), | ||
2409 | FRAC_CONST(0.34410142598993881), | ||
2410 | FRAC_CONST(0.34698041084592368), | ||
2411 | FRAC_CONST(0.34985612979013492), | ||
2412 | FRAC_CONST(0.35272855575521073), | ||
2413 | FRAC_CONST(0.35559766170478385), | ||
2414 | FRAC_CONST(0.35846342063373654), | ||
2415 | FRAC_CONST(0.36132580556845428), | ||
2416 | FRAC_CONST(0.36418478956707989), | ||
2417 | FRAC_CONST(0.36704034571976718), | ||
2418 | FRAC_CONST(0.3698924471489341), | ||
2419 | FRAC_CONST(0.37274106700951576), | ||
2420 | FRAC_CONST(0.37558617848921722), | ||
2421 | FRAC_CONST(0.37842775480876556), | ||
2422 | FRAC_CONST(0.38126576922216238), | ||
2423 | FRAC_CONST(0.38410019501693504), | ||
2424 | FRAC_CONST(0.38693100551438858), | ||
2425 | FRAC_CONST(0.38975817406985641), | ||
2426 | FRAC_CONST(0.39258167407295147), | ||
2427 | FRAC_CONST(0.39540147894781635), | ||
2428 | FRAC_CONST(0.39821756215337356), | ||
2429 | FRAC_CONST(0.40102989718357562), | ||
2430 | FRAC_CONST(0.40383845756765407), | ||
2431 | FRAC_CONST(0.40664321687036903), | ||
2432 | FRAC_CONST(0.40944414869225759), | ||
2433 | FRAC_CONST(0.41224122666988289), | ||
2434 | FRAC_CONST(0.41503442447608163), | ||
2435 | FRAC_CONST(0.41782371582021227), | ||
2436 | FRAC_CONST(0.42060907444840251), | ||
2437 | FRAC_CONST(0.42339047414379605), | ||
2438 | FRAC_CONST(0.42616788872679962), | ||
2439 | FRAC_CONST(0.42894129205532949), | ||
2440 | FRAC_CONST(0.43171065802505726), | ||
2441 | FRAC_CONST(0.43447596056965565), | ||
2442 | FRAC_CONST(0.43723717366104409), | ||
2443 | FRAC_CONST(0.43999427130963326), | ||
2444 | FRAC_CONST(0.44274722756457002), | ||
2445 | FRAC_CONST(0.44549601651398174), | ||
2446 | FRAC_CONST(0.44824061228521989), | ||
2447 | FRAC_CONST(0.45098098904510386), | ||
2448 | FRAC_CONST(0.45371712100016387), | ||
2449 | FRAC_CONST(0.45644898239688392), | ||
2450 | FRAC_CONST(0.45917654752194409), | ||
2451 | FRAC_CONST(0.46189979070246273), | ||
2452 | FRAC_CONST(0.46461868630623782), | ||
2453 | FRAC_CONST(0.46733320874198842), | ||
2454 | FRAC_CONST(0.47004333245959562), | ||
2455 | FRAC_CONST(0.47274903195034279), | ||
2456 | FRAC_CONST(0.47545028174715587), | ||
2457 | FRAC_CONST(0.47814705642484301), | ||
2458 | FRAC_CONST(0.48083933060033396), | ||
2459 | FRAC_CONST(0.48352707893291874), | ||
2460 | FRAC_CONST(0.48621027612448642), | ||
2461 | FRAC_CONST(0.48888889691976317), | ||
2462 | FRAC_CONST(0.4915629161065499), | ||
2463 | FRAC_CONST(0.49423230851595967), | ||
2464 | FRAC_CONST(0.49689704902265447), | ||
2465 | FRAC_CONST(0.49955711254508184), | ||
2466 | FRAC_CONST(0.50221247404571079), | ||
2467 | FRAC_CONST(0.50486310853126759), | ||
2468 | FRAC_CONST(0.50750899105297087), | ||
2469 | FRAC_CONST(0.51015009670676681), | ||
2470 | FRAC_CONST(0.51278640063356296), | ||
2471 | FRAC_CONST(0.51541787801946293), | ||
2472 | FRAC_CONST(0.51804450409599934), | ||
2473 | FRAC_CONST(0.52066625414036716), | ||
2474 | FRAC_CONST(0.52328310347565643), | ||
2475 | FRAC_CONST(0.52589502747108463), | ||
2476 | FRAC_CONST(0.52850200154222848), | ||
2477 | FRAC_CONST(0.531104001151255), | ||
2478 | FRAC_CONST(0.53370100180715296), | ||
2479 | FRAC_CONST(0.53629297906596318), | ||
2480 | FRAC_CONST(0.53887990853100842), | ||
2481 | FRAC_CONST(0.54146176585312344), | ||
2482 | FRAC_CONST(0.54403852673088382), | ||
2483 | FRAC_CONST(0.54661016691083486), | ||
2484 | FRAC_CONST(0.54917666218771966), | ||
2485 | FRAC_CONST(0.55173798840470734), | ||
2486 | FRAC_CONST(0.55429412145362), | ||
2487 | FRAC_CONST(0.5568450372751601), | ||
2488 | FRAC_CONST(0.55939071185913614), | ||
2489 | FRAC_CONST(0.56193112124468947), | ||
2490 | FRAC_CONST(0.5644662415205195), | ||
2491 | FRAC_CONST(0.56699604882510868), | ||
2492 | FRAC_CONST(0.56952051934694714), | ||
2493 | FRAC_CONST(0.57203962932475705), | ||
2494 | FRAC_CONST(0.57455335504771576), | ||
2495 | FRAC_CONST(0.57706167285567944), | ||
2496 | FRAC_CONST(0.57956455913940563), | ||
2497 | FRAC_CONST(0.58206199034077544), | ||
2498 | FRAC_CONST(0.58455394295301533), | ||
2499 | FRAC_CONST(0.58704039352091797), | ||
2500 | FRAC_CONST(0.58952131864106394), | ||
2501 | FRAC_CONST(0.59199669496204099), | ||
2502 | FRAC_CONST(0.59446649918466443), | ||
2503 | FRAC_CONST(0.5969307080621965), | ||
2504 | FRAC_CONST(0.59938929840056454), | ||
2505 | FRAC_CONST(0.60184224705858003), | ||
2506 | FRAC_CONST(0.60428953094815596), | ||
2507 | FRAC_CONST(0.60673112703452448), | ||
2508 | FRAC_CONST(0.60916701233645321), | ||
2509 | FRAC_CONST(0.61159716392646191), | ||
2510 | FRAC_CONST(0.61402155893103838), | ||
2511 | FRAC_CONST(0.61644017453085365), | ||
2512 | FRAC_CONST(0.61885298796097632), | ||
2513 | FRAC_CONST(0.62125997651108755), | ||
2514 | FRAC_CONST(0.62366111752569453), | ||
2515 | FRAC_CONST(0.62605638840434352), | ||
2516 | FRAC_CONST(0.62844576660183271), | ||
2517 | FRAC_CONST(0.63082922962842447), | ||
2518 | FRAC_CONST(0.63320675505005719), | ||
2519 | FRAC_CONST(0.63557832048855611), | ||
2520 | FRAC_CONST(0.63794390362184406), | ||
2521 | FRAC_CONST(0.64030348218415167), | ||
2522 | FRAC_CONST(0.64265703396622686), | ||
2523 | FRAC_CONST(0.64500453681554393), | ||
2524 | FRAC_CONST(0.64734596863651206), | ||
2525 | FRAC_CONST(0.64968130739068319), | ||
2526 | FRAC_CONST(0.6520105310969595), | ||
2527 | FRAC_CONST(0.65433361783180044), | ||
2528 | FRAC_CONST(0.65665054572942894), | ||
2529 | FRAC_CONST(0.65896129298203732), | ||
2530 | FRAC_CONST(0.66126583783999227), | ||
2531 | FRAC_CONST(0.66356415861203977), | ||
2532 | FRAC_CONST(0.66585623366550972), | ||
2533 | FRAC_CONST(0.66814204142651845), | ||
2534 | FRAC_CONST(0.67042156038017309), | ||
2535 | FRAC_CONST(0.67269476907077286), | ||
2536 | FRAC_CONST(0.67496164610201193), | ||
2537 | FRAC_CONST(0.67722217013718033), | ||
2538 | FRAC_CONST(0.67947631989936497), | ||
2539 | FRAC_CONST(0.68172407417164971), | ||
2540 | FRAC_CONST(0.6839654117973154), | ||
2541 | FRAC_CONST(0.68620031168003859), | ||
2542 | FRAC_CONST(0.68842875278409044), | ||
2543 | FRAC_CONST(0.6906507141345346), | ||
2544 | FRAC_CONST(0.69286617481742463), | ||
2545 | FRAC_CONST(0.69507511398000088), | ||
2546 | FRAC_CONST(0.69727751083088652), | ||
2547 | FRAC_CONST(0.69947334464028377), | ||
2548 | FRAC_CONST(0.70166259474016845), | ||
2549 | FRAC_CONST(0.70384524052448494), | ||
2550 | FRAC_CONST(0.70602126144933974), | ||
2551 | FRAC_CONST(0.70819063703319529), | ||
2552 | FRAC_CONST(0.71035334685706231), | ||
2553 | FRAC_CONST(0.71250937056469232), | ||
2554 | FRAC_CONST(0.71465868786276898), | ||
2555 | FRAC_CONST(0.71680127852109954), | ||
2556 | FRAC_CONST(0.71893712237280438), | ||
2557 | FRAC_CONST(0.72106619931450811), | ||
2558 | FRAC_CONST(0.72318848930652735), | ||
2559 | FRAC_CONST(0.72530397237306066), | ||
2560 | FRAC_CONST(0.72741262860237577), | ||
2561 | FRAC_CONST(0.7295144381469969), | ||
2562 | FRAC_CONST(0.73160938122389252), | ||
2563 | FRAC_CONST(0.73369743811466026), | ||
2564 | FRAC_CONST(0.73577858916571348), | ||
2565 | FRAC_CONST(0.73785281478846598), | ||
2566 | FRAC_CONST(0.73992009545951609), | ||
2567 | FRAC_CONST(0.74198041172083096), | ||
2568 | FRAC_CONST(0.74403374417992918), | ||
2569 | FRAC_CONST(0.74608007351006378), | ||
2570 | FRAC_CONST(0.74811938045040349), | ||
2571 | FRAC_CONST(0.75015164580621496), | ||
2572 | FRAC_CONST(0.7521768504490427), | ||
2573 | FRAC_CONST(0.75419497531688917), | ||
2574 | FRAC_CONST(0.75620600141439454), | ||
2575 | FRAC_CONST(0.75820990981301528), | ||
2576 | FRAC_CONST(0.76020668165120242), | ||
2577 | FRAC_CONST(0.7621962981345789), | ||
2578 | FRAC_CONST(0.76417874053611667), | ||
2579 | FRAC_CONST(0.76615399019631281), | ||
2580 | FRAC_CONST(0.76812202852336531), | ||
2581 | FRAC_CONST(0.7700828369933479), | ||
2582 | FRAC_CONST(0.77203639715038441), | ||
2583 | FRAC_CONST(0.77398269060682279), | ||
2584 | FRAC_CONST(0.77592169904340758), | ||
2585 | FRAC_CONST(0.77785340420945304), | ||
2586 | FRAC_CONST(0.77977778792301444), | ||
2587 | FRAC_CONST(0.78169483207105939), | ||
2588 | FRAC_CONST(0.7836045186096382), | ||
2589 | FRAC_CONST(0.78550682956405393), | ||
2590 | FRAC_CONST(0.78740174702903132), | ||
2591 | FRAC_CONST(0.78928925316888565), | ||
2592 | FRAC_CONST(0.79116933021769009), | ||
2593 | FRAC_CONST(0.79304196047944364), | ||
2594 | FRAC_CONST(0.79490712632823701), | ||
2595 | FRAC_CONST(0.79676481020841872), | ||
2596 | FRAC_CONST(0.79861499463476082), | ||
2597 | FRAC_CONST(0.80045766219262271), | ||
2598 | FRAC_CONST(0.80229279553811572), | ||
2599 | FRAC_CONST(0.8041203773982657), | ||
2600 | FRAC_CONST(0.80594039057117628), | ||
2601 | FRAC_CONST(0.80775281792619036), | ||
2602 | FRAC_CONST(0.80955764240405126), | ||
2603 | FRAC_CONST(0.81135484701706373), | ||
2604 | FRAC_CONST(0.81314441484925359), | ||
2605 | FRAC_CONST(0.81492632905652662), | ||
2606 | FRAC_CONST(0.81670057286682785), | ||
2607 | FRAC_CONST(0.81846712958029866), | ||
2608 | FRAC_CONST(0.82022598256943469), | ||
2609 | FRAC_CONST(0.82197711527924155), | ||
2610 | FRAC_CONST(0.82372051122739132), | ||
2611 | FRAC_CONST(0.82545615400437744), | ||
2612 | FRAC_CONST(0.82718402727366902), | ||
2613 | FRAC_CONST(0.82890411477186487), | ||
2614 | FRAC_CONST(0.8306164003088462), | ||
2615 | FRAC_CONST(0.83232086776792968), | ||
2616 | FRAC_CONST(0.83401750110601813), | ||
2617 | FRAC_CONST(0.8357062843537526), | ||
2618 | FRAC_CONST(0.83738720161566194), | ||
2619 | FRAC_CONST(0.83906023707031263), | ||
2620 | FRAC_CONST(0.84072537497045807), | ||
2621 | FRAC_CONST(0.84238259964318596), | ||
2622 | FRAC_CONST(0.84403189549006641), | ||
2623 | FRAC_CONST(0.84567324698729907), | ||
2624 | FRAC_CONST(0.84730663868585832), | ||
2625 | FRAC_CONST(0.84893205521163961), | ||
2626 | FRAC_CONST(0.85054948126560337), | ||
2627 | FRAC_CONST(0.85215890162391983), | ||
2628 | FRAC_CONST(0.8537603011381113), | ||
2629 | FRAC_CONST(0.85535366473519603), | ||
2630 | FRAC_CONST(0.85693897741782865), | ||
2631 | FRAC_CONST(0.85851622426444274), | ||
2632 | FRAC_CONST(0.86008539042939014), | ||
2633 | FRAC_CONST(0.8616464611430813), | ||
2634 | FRAC_CONST(0.86319942171212416), | ||
2635 | FRAC_CONST(0.86474425751946238), | ||
2636 | FRAC_CONST(0.86628095402451299), | ||
2637 | FRAC_CONST(0.86780949676330321), | ||
2638 | FRAC_CONST(0.86932987134860673), | ||
2639 | FRAC_CONST(0.87084206347007886), | ||
2640 | FRAC_CONST(0.87234605889439154), | ||
2641 | FRAC_CONST(0.87384184346536675), | ||
2642 | FRAC_CONST(0.87532940310411078), | ||
2643 | FRAC_CONST(0.87680872380914576), | ||
2644 | FRAC_CONST(0.87827979165654146), | ||
2645 | FRAC_CONST(0.87974259280004741), | ||
2646 | FRAC_CONST(0.88119711347122198), | ||
2647 | FRAC_CONST(0.88264333997956279), | ||
2648 | FRAC_CONST(0.88408125871263499), | ||
2649 | FRAC_CONST(0.88551085613619995), | ||
2650 | FRAC_CONST(0.88693211879434208), | ||
2651 | FRAC_CONST(0.88834503330959624), | ||
2652 | FRAC_CONST(0.88974958638307289), | ||
2653 | FRAC_CONST(0.89114576479458318), | ||
2654 | FRAC_CONST(0.89253355540276469), | ||
2655 | FRAC_CONST(0.89391294514520325), | ||
2656 | FRAC_CONST(0.89528392103855758), | ||
2657 | FRAC_CONST(0.89664647017868015), | ||
2658 | FRAC_CONST(0.89800057974073988), | ||
2659 | FRAC_CONST(0.89934623697934146), | ||
2660 | FRAC_CONST(0.90068342922864686), | ||
2661 | FRAC_CONST(0.90201214390249307), | ||
2662 | FRAC_CONST(0.90333236849451182), | ||
2663 | FRAC_CONST(0.90464409057824624), | ||
2664 | FRAC_CONST(0.90594729780726846), | ||
2665 | FRAC_CONST(0.90724197791529593), | ||
2666 | FRAC_CONST(0.90852811871630612), | ||
2667 | FRAC_CONST(0.90980570810465222), | ||
2668 | FRAC_CONST(0.91107473405517625), | ||
2669 | FRAC_CONST(0.91233518462332275), | ||
2670 | FRAC_CONST(0.91358704794525081), | ||
2671 | FRAC_CONST(0.91483031223794609), | ||
2672 | FRAC_CONST(0.91606496579933161), | ||
2673 | FRAC_CONST(0.91729099700837791), | ||
2674 | FRAC_CONST(0.91850839432521225), | ||
2675 | FRAC_CONST(0.91971714629122736), | ||
2676 | FRAC_CONST(0.92091724152918952), | ||
2677 | FRAC_CONST(0.92210866874334507), | ||
2678 | FRAC_CONST(0.92329141671952764), | ||
2679 | FRAC_CONST(0.9244654743252626), | ||
2680 | FRAC_CONST(0.92563083050987272), | ||
2681 | FRAC_CONST(0.92678747430458175), | ||
2682 | FRAC_CONST(0.92793539482261789), | ||
2683 | FRAC_CONST(0.92907458125931575), | ||
2684 | FRAC_CONST(0.93020502289221907), | ||
2685 | FRAC_CONST(0.93132670908118043), | ||
2686 | FRAC_CONST(0.93243962926846236), | ||
2687 | FRAC_CONST(0.93354377297883617), | ||
2688 | FRAC_CONST(0.93463912981968078), | ||
2689 | FRAC_CONST(0.93572568948108037), | ||
2690 | FRAC_CONST(0.93680344173592156), | ||
2691 | FRAC_CONST(0.93787237643998989), | ||
2692 | FRAC_CONST(0.93893248353206449), | ||
2693 | FRAC_CONST(0.93998375303401394), | ||
2694 | FRAC_CONST(0.94102617505088926), | ||
2695 | FRAC_CONST(0.94205973977101731), | ||
2696 | FRAC_CONST(0.94308443746609349), | ||
2697 | FRAC_CONST(0.94410025849127266), | ||
2698 | FRAC_CONST(0.94510719328526061), | ||
2699 | FRAC_CONST(0.94610523237040334), | ||
2700 | FRAC_CONST(0.94709436635277722), | ||
2701 | FRAC_CONST(0.94807458592227623), | ||
2702 | FRAC_CONST(0.94904588185270056), | ||
2703 | FRAC_CONST(0.950008245001843), | ||
2704 | FRAC_CONST(0.95096166631157508), | ||
2705 | FRAC_CONST(0.95190613680793223), | ||
2706 | FRAC_CONST(0.95284164760119872), | ||
2707 | FRAC_CONST(0.95376818988599033), | ||
2708 | FRAC_CONST(0.95468575494133834), | ||
2709 | FRAC_CONST(0.95559433413077111), | ||
2710 | FRAC_CONST(0.95649391890239499), | ||
2711 | FRAC_CONST(0.95738450078897586), | ||
2712 | FRAC_CONST(0.95826607140801767), | ||
2713 | FRAC_CONST(0.95913862246184189), | ||
2714 | FRAC_CONST(0.96000214573766585), | ||
2715 | FRAC_CONST(0.96085663310767966), | ||
2716 | FRAC_CONST(0.96170207652912254), | ||
2717 | FRAC_CONST(0.96253846804435916), | ||
2718 | FRAC_CONST(0.96336579978095405), | ||
2719 | FRAC_CONST(0.96418406395174572), | ||
2720 | FRAC_CONST(0.96499325285492032), | ||
2721 | FRAC_CONST(0.96579335887408357), | ||
2722 | FRAC_CONST(0.96658437447833312), | ||
2723 | FRAC_CONST(0.96736629222232851), | ||
2724 | FRAC_CONST(0.96813910474636233), | ||
2725 | FRAC_CONST(0.96890280477642887), | ||
2726 | FRAC_CONST(0.96965738512429245), | ||
2727 | FRAC_CONST(0.9704028386875555), | ||
2728 | FRAC_CONST(0.97113915844972509), | ||
2729 | FRAC_CONST(0.9718663374802794), | ||
2730 | FRAC_CONST(0.97258436893473221), | ||
2731 | FRAC_CONST(0.97329324605469825), | ||
2732 | FRAC_CONST(0.97399296216795583), | ||
2733 | FRAC_CONST(0.97468351068851067), | ||
2734 | FRAC_CONST(0.97536488511665687), | ||
2735 | FRAC_CONST(0.97603707903903902), | ||
2736 | FRAC_CONST(0.97670008612871184), | ||
2737 | FRAC_CONST(0.97735390014519996), | ||
2738 | FRAC_CONST(0.97799851493455714), | ||
2739 | FRAC_CONST(0.9786339244294231), | ||
2740 | FRAC_CONST(0.97926012264908202), | ||
2741 | FRAC_CONST(0.97987710369951764), | ||
2742 | FRAC_CONST(0.98048486177346938), | ||
2743 | FRAC_CONST(0.98108339115048659), | ||
2744 | FRAC_CONST(0.98167268619698311), | ||
2745 | FRAC_CONST(0.98225274136628937), | ||
2746 | FRAC_CONST(0.98282355119870524), | ||
2747 | FRAC_CONST(0.98338511032155118), | ||
2748 | FRAC_CONST(0.98393741344921892), | ||
2749 | FRAC_CONST(0.98448045538322093), | ||
2750 | FRAC_CONST(0.98501423101223984), | ||
2751 | FRAC_CONST(0.98553873531217606), | ||
2752 | FRAC_CONST(0.98605396334619544), | ||
2753 | FRAC_CONST(0.98655991026477541), | ||
2754 | FRAC_CONST(0.98705657130575097), | ||
2755 | FRAC_CONST(0.98754394179435923), | ||
2756 | FRAC_CONST(0.98802201714328353), | ||
2757 | FRAC_CONST(0.98849079285269659), | ||
2758 | FRAC_CONST(0.98895026451030299), | ||
2759 | FRAC_CONST(0.98940042779138038), | ||
2760 | FRAC_CONST(0.98984127845882053), | ||
2761 | FRAC_CONST(0.99027281236316911), | ||
2762 | FRAC_CONST(0.99069502544266463), | ||
2763 | FRAC_CONST(0.99110791372327678), | ||
2764 | FRAC_CONST(0.9915114733187439), | ||
2765 | FRAC_CONST(0.99190570043060933), | ||
2766 | FRAC_CONST(0.99229059134825737), | ||
2767 | FRAC_CONST(0.99266614244894802), | ||
2768 | FRAC_CONST(0.99303235019785141), | ||
2769 | FRAC_CONST(0.99338921114808065), | ||
2770 | FRAC_CONST(0.9937367219407246), | ||
2771 | FRAC_CONST(0.99407487930487937), | ||
2772 | FRAC_CONST(0.9944036800576791), | ||
2773 | FRAC_CONST(0.9947231211043257), | ||
2774 | FRAC_CONST(0.99503319943811863), | ||
2775 | FRAC_CONST(0.99533391214048228), | ||
2776 | FRAC_CONST(0.99562525638099431), | ||
2777 | FRAC_CONST(0.99590722941741172), | ||
2778 | FRAC_CONST(0.99617982859569687), | ||
2779 | FRAC_CONST(0.99644305135004263), | ||
2780 | FRAC_CONST(0.99669689520289606), | ||
2781 | FRAC_CONST(0.99694135776498216), | ||
2782 | FRAC_CONST(0.99717643673532619), | ||
2783 | FRAC_CONST(0.9974021299012753), | ||
2784 | FRAC_CONST(0.99761843513851955), | ||
2785 | FRAC_CONST(0.99782535041111164), | ||
2786 | FRAC_CONST(0.99802287377148624), | ||
2787 | FRAC_CONST(0.99821100336047819), | ||
2788 | FRAC_CONST(0.99838973740734016), | ||
2789 | FRAC_CONST(0.99855907422975931), | ||
2790 | FRAC_CONST(0.99871901223387294), | ||
2791 | FRAC_CONST(0.99886954991428356), | ||
2792 | FRAC_CONST(0.99901068585407338), | ||
2793 | FRAC_CONST(0.99914241872481691), | ||
2794 | FRAC_CONST(0.99926474728659442), | ||
2795 | FRAC_CONST(0.99937767038800285), | ||
2796 | FRAC_CONST(0.99948118696616695), | ||
2797 | FRAC_CONST(0.99957529604674922), | ||
2798 | FRAC_CONST(0.99965999674395922), | ||
2799 | FRAC_CONST(0.99973528826056168), | ||
2800 | FRAC_CONST(0.99980116988788426), | ||
2801 | FRAC_CONST(0.99985764100582386), | ||
2802 | FRAC_CONST(0.9999047010828529), | ||
2803 | FRAC_CONST(0.99994234967602391), | ||
2804 | FRAC_CONST(0.99997058643097414), | ||
2805 | FRAC_CONST(0.9999894110819284), | ||
2806 | FRAC_CONST(0.99999882345170188) | ||
2807 | }; | ||
2808 | |||
2809 | #ifdef ALLOW_SMALL_FRAMELENGTH | ||
2810 | static const real_t sine_mid_480[] MEM_ALIGN_ATTR = | ||
2811 | { | ||
2812 | FRAC_CONST(0.0016362454436240478), | ||
2813 | FRAC_CONST(0.00490871880799799), | ||
2814 | FRAC_CONST(0.0081811396039371282), | ||
2815 | FRAC_CONST(0.011453472786443779), | ||
2816 | FRAC_CONST(0.014725683311458524), | ||
2817 | FRAC_CONST(0.017997736136235509), | ||
2818 | FRAC_CONST(0.021269596219717739), | ||
2819 | FRAC_CONST(0.024541228522912285), | ||
2820 | FRAC_CONST(0.027812598009265607), | ||
2821 | FRAC_CONST(0.03108366964503869), | ||
2822 | FRAC_CONST(0.034354408399682276), | ||
2823 | FRAC_CONST(0.037624779246211978), | ||
2824 | FRAC_CONST(0.04089474716158345), | ||
2825 | FRAC_CONST(0.044164277127067358), | ||
2826 | FRAC_CONST(0.047433334128624507), | ||
2827 | FRAC_CONST(0.050701883157280733), | ||
2828 | FRAC_CONST(0.053969889209501881), | ||
2829 | FRAC_CONST(0.057237317287568618), | ||
2830 | FRAC_CONST(0.060504132399951269), | ||
2831 | FRAC_CONST(0.063770299561684493), | ||
2832 | FRAC_CONST(0.06703578379474201), | ||
2833 | FRAC_CONST(0.070300550128411174), | ||
2834 | FRAC_CONST(0.073564563599667426), | ||
2835 | FRAC_CONST(0.076827789253548759), | ||
2836 | FRAC_CONST(0.080090192143530081), | ||
2837 | FRAC_CONST(0.083351737331897449), | ||
2838 | FRAC_CONST(0.086612389890122182), | ||
2839 | FRAC_CONST(0.089872114899234967), | ||
2840 | FRAC_CONST(0.093130877450199795), | ||
2841 | FRAC_CONST(0.096388642644287828), | ||
2842 | FRAC_CONST(0.09964537559345106), | ||
2843 | FRAC_CONST(0.1029010414206961), | ||
2844 | FRAC_CONST(0.10615560526045748), | ||
2845 | FRAC_CONST(0.10940903225897117), | ||
2846 | FRAC_CONST(0.11266128757464781), | ||
2847 | FRAC_CONST(0.11591233637844581), | ||
2848 | FRAC_CONST(0.11916214385424433), | ||
2849 | FRAC_CONST(0.1224106751992162), | ||
2850 | FRAC_CONST(0.12565789562420052), | ||
2851 | FRAC_CONST(0.12890377035407541), | ||
2852 | FRAC_CONST(0.13214826462813015), | ||
2853 | FRAC_CONST(0.13539134370043773), | ||
2854 | FRAC_CONST(0.13863297284022669), | ||
2855 | FRAC_CONST(0.14187311733225325), | ||
2856 | FRAC_CONST(0.14511174247717309), | ||
2857 | FRAC_CONST(0.14834881359191271), | ||
2858 | FRAC_CONST(0.15158429601004111), | ||
2859 | FRAC_CONST(0.15481815508214106), | ||
2860 | FRAC_CONST(0.1580503561761798), | ||
2861 | FRAC_CONST(0.16128086467788047), | ||
2862 | FRAC_CONST(0.16450964599109233), | ||
2863 | FRAC_CONST(0.16773666553816149), | ||
2864 | FRAC_CONST(0.17096188876030122), | ||
2865 | FRAC_CONST(0.17418528111796186), | ||
2866 | FRAC_CONST(0.17740680809120093), | ||
2867 | FRAC_CONST(0.18062643518005275), | ||
2868 | FRAC_CONST(0.18384412790489776), | ||
2869 | FRAC_CONST(0.18705985180683199), | ||
2870 | FRAC_CONST(0.19027357244803589), | ||
2871 | FRAC_CONST(0.19348525541214331), | ||
2872 | FRAC_CONST(0.19669486630460997), | ||
2873 | FRAC_CONST(0.19990237075308173), | ||
2874 | FRAC_CONST(0.20310773440776286), | ||
2875 | FRAC_CONST(0.20631092294178383), | ||
2876 | FRAC_CONST(0.20951190205156878), | ||
2877 | FRAC_CONST(0.21271063745720317), | ||
2878 | FRAC_CONST(0.21590709490280058), | ||
2879 | FRAC_CONST(0.2191012401568698), | ||
2880 | FRAC_CONST(0.22229303901268133), | ||
2881 | FRAC_CONST(0.22548245728863364), | ||
2882 | FRAC_CONST(0.22866946082861941), | ||
2883 | FRAC_CONST(0.23185401550239115), | ||
2884 | FRAC_CONST(0.23503608720592667), | ||
2885 | FRAC_CONST(0.23821564186179459), | ||
2886 | FRAC_CONST(0.24139264541951888), | ||
2887 | FRAC_CONST(0.24456706385594387), | ||
2888 | FRAC_CONST(0.24773886317559846), | ||
2889 | FRAC_CONST(0.25090800941106001), | ||
2890 | FRAC_CONST(0.25407446862331851), | ||
2891 | FRAC_CONST(0.25723820690213967), | ||
2892 | FRAC_CONST(0.26039919036642817), | ||
2893 | FRAC_CONST(0.26355738516459076), | ||
2894 | FRAC_CONST(0.26671275747489837), | ||
2895 | FRAC_CONST(0.2698652735058486), | ||
2896 | FRAC_CONST(0.27301489949652735), | ||
2897 | FRAC_CONST(0.27616160171697068), | ||
2898 | FRAC_CONST(0.27930534646852595), | ||
2899 | FRAC_CONST(0.28244610008421245), | ||
2900 | FRAC_CONST(0.2855838289290823), | ||
2901 | FRAC_CONST(0.28871849940058025), | ||
2902 | FRAC_CONST(0.29185007792890405), | ||
2903 | FRAC_CONST(0.29497853097736348), | ||
2904 | FRAC_CONST(0.2981038250427398), | ||
2905 | FRAC_CONST(0.30122592665564446), | ||
2906 | FRAC_CONST(0.30434480238087736), | ||
2907 | FRAC_CONST(0.30746041881778519), | ||
2908 | FRAC_CONST(0.31057274260061901), | ||
2909 | FRAC_CONST(0.31368174039889146), | ||
2910 | FRAC_CONST(0.31678737891773395), | ||
2911 | FRAC_CONST(0.31988962489825296), | ||
2912 | FRAC_CONST(0.32298844511788638), | ||
2913 | FRAC_CONST(0.32608380639075912), | ||
2914 | FRAC_CONST(0.32917567556803889), | ||
2915 | FRAC_CONST(0.33226401953829071), | ||
2916 | FRAC_CONST(0.33534880522783189), | ||
2917 | FRAC_CONST(0.33842999960108583), | ||
2918 | FRAC_CONST(0.34150756966093632), | ||
2919 | FRAC_CONST(0.34458148244908043), | ||
2920 | FRAC_CONST(0.34765170504638188), | ||
2921 | FRAC_CONST(0.35071820457322322), | ||
2922 | FRAC_CONST(0.35378094818985806), | ||
2923 | FRAC_CONST(0.35683990309676283), | ||
2924 | FRAC_CONST(0.35989503653498811), | ||
2925 | FRAC_CONST(0.36294631578650921), | ||
2926 | FRAC_CONST(0.36599370817457672), | ||
2927 | FRAC_CONST(0.36903718106406647), | ||
2928 | FRAC_CONST(0.37207670186182878), | ||
2929 | FRAC_CONST(0.37511223801703802), | ||
2930 | FRAC_CONST(0.37814375702154046), | ||
2931 | FRAC_CONST(0.38117122641020335), | ||
2932 | FRAC_CONST(0.38419461376126157), | ||
2933 | FRAC_CONST(0.38721388669666562), | ||
2934 | FRAC_CONST(0.39022901288242801), | ||
2935 | FRAC_CONST(0.39323996002896966), | ||
2936 | FRAC_CONST(0.39624669589146555), | ||
2937 | FRAC_CONST(0.39924918827019029), | ||
2938 | FRAC_CONST(0.40224740501086254), | ||
2939 | FRAC_CONST(0.40524131400498986), | ||
2940 | FRAC_CONST(0.40823088319021217), | ||
2941 | FRAC_CONST(0.41121608055064529), | ||
2942 | FRAC_CONST(0.41419687411722372), | ||
2943 | FRAC_CONST(0.41717323196804335), | ||
2944 | FRAC_CONST(0.42014512222870243), | ||
2945 | FRAC_CONST(0.42311251307264408), | ||
2946 | FRAC_CONST(0.42607537272149631), | ||
2947 | FRAC_CONST(0.4290336694454126), | ||
2948 | FRAC_CONST(0.43198737156341183), | ||
2949 | FRAC_CONST(0.43493644744371707), | ||
2950 | FRAC_CONST(0.43788086550409511), | ||
2951 | FRAC_CONST(0.44082059421219388), | ||
2952 | FRAC_CONST(0.44375560208588088), | ||
2953 | FRAC_CONST(0.44668585769357955), | ||
2954 | FRAC_CONST(0.4496113296546066), | ||
2955 | FRAC_CONST(0.45253198663950756), | ||
2956 | FRAC_CONST(0.45544779737039259), | ||
2957 | FRAC_CONST(0.45835873062127125), | ||
2958 | FRAC_CONST(0.46126475521838717), | ||
2959 | FRAC_CONST(0.46416584004055156), | ||
2960 | FRAC_CONST(0.46706195401947659), | ||
2961 | FRAC_CONST(0.46995306614010829), | ||
2962 | FRAC_CONST(0.47283914544095862), | ||
2963 | FRAC_CONST(0.47572016101443682), | ||
2964 | FRAC_CONST(0.47859608200718085), | ||
2965 | FRAC_CONST(0.4814668776203872), | ||
2966 | FRAC_CONST(0.48433251711014125), | ||
2967 | FRAC_CONST(0.4871929697877464), | ||
2968 | FRAC_CONST(0.49004820502005247), | ||
2969 | FRAC_CONST(0.49289819222978404), | ||
2970 | FRAC_CONST(0.49574290089586776), | ||
2971 | FRAC_CONST(0.49858230055375902), | ||
2972 | FRAC_CONST(0.50141636079576901), | ||
2973 | FRAC_CONST(0.50424505127138919), | ||
2974 | FRAC_CONST(0.50706834168761705), | ||
2975 | FRAC_CONST(0.50988620180928057), | ||
2976 | FRAC_CONST(0.51269860145936175), | ||
2977 | FRAC_CONST(0.51550551051931948), | ||
2978 | FRAC_CONST(0.51830689892941317), | ||
2979 | FRAC_CONST(0.5211027366890234), | ||
2980 | FRAC_CONST(0.52389299385697385), | ||
2981 | FRAC_CONST(0.52667764055185196), | ||
2982 | FRAC_CONST(0.52945664695232897), | ||
2983 | FRAC_CONST(0.53222998329747884), | ||
2984 | FRAC_CONST(0.53499761988709726), | ||
2985 | FRAC_CONST(0.53775952708201991), | ||
2986 | FRAC_CONST(0.54051567530443978), | ||
2987 | FRAC_CONST(0.54326603503822357), | ||
2988 | FRAC_CONST(0.54601057682922816), | ||
2989 | FRAC_CONST(0.54874927128561579), | ||
2990 | FRAC_CONST(0.55148208907816942), | ||
2991 | FRAC_CONST(0.55420900094060566), | ||
2992 | FRAC_CONST(0.55692997766988939), | ||
2993 | FRAC_CONST(0.559644990126546), | ||
2994 | FRAC_CONST(0.56235400923497314), | ||
2995 | FRAC_CONST(0.56505700598375252), | ||
2996 | FRAC_CONST(0.56775395142596052), | ||
2997 | FRAC_CONST(0.57044481667947822), | ||
2998 | FRAC_CONST(0.57312957292730071), | ||
2999 | FRAC_CONST(0.57580819141784534), | ||
3000 | FRAC_CONST(0.57848064346525996), | ||
3001 | FRAC_CONST(0.58114690044973039), | ||
3002 | FRAC_CONST(0.58380693381778626), | ||
3003 | FRAC_CONST(0.58646071508260733), | ||
3004 | FRAC_CONST(0.58910821582432815), | ||
3005 | FRAC_CONST(0.5917494076903429), | ||
3006 | FRAC_CONST(0.5943842623956086), | ||
3007 | FRAC_CONST(0.59701275172294799), | ||
3008 | FRAC_CONST(0.59963484752335228), | ||
3009 | FRAC_CONST(0.60225052171628191), | ||
3010 | FRAC_CONST(0.60485974628996786), | ||
3011 | FRAC_CONST(0.60746249330171098), | ||
3012 | FRAC_CONST(0.61005873487818185), | ||
3013 | FRAC_CONST(0.61264844321571899), | ||
3014 | FRAC_CONST(0.61523159058062682), | ||
3015 | FRAC_CONST(0.61780814930947225), | ||
3016 | FRAC_CONST(0.62037809180938108), | ||
3017 | FRAC_CONST(0.62294139055833397), | ||
3018 | FRAC_CONST(0.6254980181054608), | ||
3019 | FRAC_CONST(0.62804794707133416), | ||
3020 | FRAC_CONST(0.63059115014826372), | ||
3021 | FRAC_CONST(0.63312760010058777), | ||
3022 | FRAC_CONST(0.63565726976496484), | ||
3023 | FRAC_CONST(0.63818013205066515), | ||
3024 | FRAC_CONST(0.64069615993986073), | ||
3025 | FRAC_CONST(0.64320532648791406), | ||
3026 | FRAC_CONST(0.64570760482366729), | ||
3027 | FRAC_CONST(0.64820296814972966), | ||
3028 | FRAC_CONST(0.65069138974276486), | ||
3029 | FRAC_CONST(0.65317284295377676), | ||
3030 | FRAC_CONST(0.65564730120839498), | ||
3031 | FRAC_CONST(0.65811473800715958), | ||
3032 | FRAC_CONST(0.660575126925805), | ||
3033 | FRAC_CONST(0.66302844161554231), | ||
3034 | FRAC_CONST(0.6654746558033422), | ||
3035 | FRAC_CONST(0.66791374329221598), | ||
3036 | FRAC_CONST(0.67034567796149647), | ||
3037 | FRAC_CONST(0.67277043376711676), | ||
3038 | FRAC_CONST(0.67518798474189046), | ||
3039 | FRAC_CONST(0.67759830499578866), | ||
3040 | FRAC_CONST(0.68000136871621808), | ||
3041 | FRAC_CONST(0.68239715016829683), | ||
3042 | FRAC_CONST(0.6847856236951303), | ||
3043 | FRAC_CONST(0.68716676371808583), | ||
3044 | FRAC_CONST(0.68954054473706683), | ||
3045 | FRAC_CONST(0.69190694133078579), | ||
3046 | FRAC_CONST(0.69426592815703603), | ||
3047 | FRAC_CONST(0.69661747995296419), | ||
3048 | FRAC_CONST(0.69896157153533944), | ||
3049 | FRAC_CONST(0.70129817780082437), | ||
3050 | FRAC_CONST(0.7036272737262429), | ||
3051 | FRAC_CONST(0.70594883436884903), | ||
3052 | FRAC_CONST(0.70826283486659336), | ||
3053 | FRAC_CONST(0.71056925043838959), | ||
3054 | FRAC_CONST(0.71286805638437978), | ||
3055 | FRAC_CONST(0.71515922808619936), | ||
3056 | FRAC_CONST(0.71744274100723993), | ||
3057 | FRAC_CONST(0.71971857069291278), | ||
3058 | FRAC_CONST(0.7219866927709101), | ||
3059 | FRAC_CONST(0.72424708295146689), | ||
3060 | FRAC_CONST(0.72649971702762028), | ||
3061 | FRAC_CONST(0.72874457087546896), | ||
3062 | FRAC_CONST(0.73098162045443171), | ||
3063 | FRAC_CONST(0.73321084180750484), | ||
3064 | FRAC_CONST(0.73543221106151868), | ||
3065 | FRAC_CONST(0.73764570442739286), | ||
3066 | FRAC_CONST(0.73985129820039208), | ||
3067 | FRAC_CONST(0.74204896876037885), | ||
3068 | FRAC_CONST(0.7442386925720671), | ||
3069 | FRAC_CONST(0.74642044618527381), | ||
3070 | FRAC_CONST(0.74859420623517081), | ||
3071 | FRAC_CONST(0.75075994944253421), | ||
3072 | FRAC_CONST(0.75291765261399446), | ||
3073 | FRAC_CONST(0.75506729264228367), | ||
3074 | FRAC_CONST(0.75720884650648446), | ||
3075 | FRAC_CONST(0.75934229127227548), | ||
3076 | FRAC_CONST(0.76146760409217706), | ||
3077 | FRAC_CONST(0.76358476220579641), | ||
3078 | FRAC_CONST(0.7656937429400712), | ||
3079 | FRAC_CONST(0.76779452370951196), | ||
3080 | FRAC_CONST(0.76988708201644451), | ||
3081 | FRAC_CONST(0.77197139545125026), | ||
3082 | FRAC_CONST(0.7740474416926072), | ||
3083 | FRAC_CONST(0.77611519850772781), | ||
3084 | FRAC_CONST(0.77817464375259782), | ||
3085 | FRAC_CONST(0.78022575537221317), | ||
3086 | FRAC_CONST(0.78226851140081632), | ||
3087 | FRAC_CONST(0.78430288996213138), | ||
3088 | FRAC_CONST(0.78632886926959822), | ||
3089 | FRAC_CONST(0.78834642762660623), | ||
3090 | FRAC_CONST(0.79035554342672631), | ||
3091 | FRAC_CONST(0.79235619515394229), | ||
3092 | FRAC_CONST(0.79434836138288134), | ||
3093 | FRAC_CONST(0.79633202077904397), | ||
3094 | FRAC_CONST(0.79830715209903147), | ||
3095 | FRAC_CONST(0.8002737341907743), | ||
3096 | FRAC_CONST(0.80223174599375802), | ||
3097 | FRAC_CONST(0.80418116653924954), | ||
3098 | FRAC_CONST(0.80612197495052085), | ||
3099 | FRAC_CONST(0.80805415044307316), | ||
3100 | FRAC_CONST(0.80997767232485907), | ||
3101 | FRAC_CONST(0.81189251999650469), | ||
3102 | FRAC_CONST(0.81379867295152986), | ||
3103 | FRAC_CONST(0.81569611077656778), | ||
3104 | FRAC_CONST(0.81758481315158371), | ||
3105 | FRAC_CONST(0.81946475985009259), | ||
3106 | FRAC_CONST(0.82133593073937561), | ||
3107 | FRAC_CONST(0.82319830578069586), | ||
3108 | FRAC_CONST(0.82505186502951278), | ||
3109 | FRAC_CONST(0.82689658863569615), | ||
3110 | FRAC_CONST(0.82873245684373809), | ||
3111 | FRAC_CONST(0.83055944999296494), | ||
3112 | FRAC_CONST(0.83237754851774781), | ||
3113 | FRAC_CONST(0.83418673294771239), | ||
3114 | FRAC_CONST(0.83598698390794668), | ||
3115 | FRAC_CONST(0.83777828211920935), | ||
3116 | FRAC_CONST(0.83956060839813562), | ||
3117 | FRAC_CONST(0.84133394365744296), | ||
3118 | FRAC_CONST(0.84309826890613537), | ||
3119 | FRAC_CONST(0.84485356524970701), | ||
3120 | FRAC_CONST(0.84659981389034411), | ||
3121 | FRAC_CONST(0.84833699612712676), | ||
3122 | FRAC_CONST(0.85006509335622882), | ||
3123 | FRAC_CONST(0.8517840870711173), | ||
3124 | FRAC_CONST(0.85349395886275037), | ||
3125 | FRAC_CONST(0.85519469041977514), | ||
3126 | FRAC_CONST(0.85688626352872277), | ||
3127 | FRAC_CONST(0.85856866007420429), | ||
3128 | FRAC_CONST(0.86024186203910447), | ||
3129 | FRAC_CONST(0.86190585150477417), | ||
3130 | FRAC_CONST(0.86356061065122347), | ||
3131 | FRAC_CONST(0.86520612175731115), | ||
3132 | FRAC_CONST(0.86684236720093533), | ||
3133 | FRAC_CONST(0.86846932945922151), | ||
3134 | FRAC_CONST(0.87008699110871135), | ||
3135 | FRAC_CONST(0.87169533482554817), | ||
3136 | FRAC_CONST(0.87329434338566281), | ||
3137 | FRAC_CONST(0.87488399966495822), | ||
3138 | FRAC_CONST(0.87646428663949283), | ||
3139 | FRAC_CONST(0.87803518738566277), | ||
3140 | FRAC_CONST(0.87959668508038291), | ||
3141 | FRAC_CONST(0.88114876300126743), | ||
3142 | FRAC_CONST(0.88269140452680916), | ||
3143 | FRAC_CONST(0.8842245931365561), | ||
3144 | FRAC_CONST(0.88574831241129048), | ||
3145 | FRAC_CONST(0.88726254603320276), | ||
3146 | FRAC_CONST(0.88876727778606746), | ||
3147 | FRAC_CONST(0.89026249155541637), | ||
3148 | FRAC_CONST(0.8917481713287112), | ||
3149 | FRAC_CONST(0.89322430119551532), | ||
3150 | FRAC_CONST(0.89469086534766362), | ||
3151 | FRAC_CONST(0.89614784807943237), | ||
3152 | FRAC_CONST(0.89759523378770689), | ||
3153 | FRAC_CONST(0.89903300697214927), | ||
3154 | FRAC_CONST(0.9004611522353636), | ||
3155 | FRAC_CONST(0.90187965428306172), | ||
3156 | FRAC_CONST(0.90328849792422594), | ||
3157 | FRAC_CONST(0.90468766807127299), | ||
3158 | FRAC_CONST(0.90607714974021469), | ||
3159 | FRAC_CONST(0.90745692805081868), | ||
3160 | FRAC_CONST(0.90882698822676755), | ||
3161 | FRAC_CONST(0.91018731559581767), | ||
3162 | FRAC_CONST(0.91153789558995579), | ||
3163 | FRAC_CONST(0.91287871374555518), | ||
3164 | FRAC_CONST(0.91420975570353069), | ||
3165 | FRAC_CONST(0.9155310072094921), | ||
3166 | FRAC_CONST(0.91684245411389753), | ||
3167 | FRAC_CONST(0.91814408237220391), | ||
3168 | FRAC_CONST(0.91943587804501858), | ||
3169 | FRAC_CONST(0.92071782729824769), | ||
3170 | FRAC_CONST(0.92198991640324446), | ||
3171 | FRAC_CONST(0.92325213173695675), | ||
3172 | FRAC_CONST(0.92450445978207241), | ||
3173 | FRAC_CONST(0.92574688712716402), | ||
3174 | FRAC_CONST(0.92697940046683291), | ||
3175 | FRAC_CONST(0.92820198660185149), | ||
3176 | FRAC_CONST(0.92941463243930444), | ||
3177 | FRAC_CONST(0.93061732499272909), | ||
3178 | FRAC_CONST(0.93181005138225426), | ||
3179 | FRAC_CONST(0.93299279883473885), | ||
3180 | FRAC_CONST(0.93416555468390772), | ||
3181 | FRAC_CONST(0.93532830637048769), | ||
3182 | FRAC_CONST(0.93648104144234268), | ||
3183 | FRAC_CONST(0.93762374755460598), | ||
3184 | FRAC_CONST(0.93875641246981323), | ||
3185 | FRAC_CONST(0.93987902405803303), | ||
3186 | FRAC_CONST(0.94099157029699743), | ||
3187 | FRAC_CONST(0.94209403927222979), | ||
3188 | FRAC_CONST(0.94318641917717327), | ||
3189 | FRAC_CONST(0.9442686983133165), | ||
3190 | FRAC_CONST(0.94534086509031956), | ||
3191 | FRAC_CONST(0.9464029080261378), | ||
3192 | FRAC_CONST(0.94745481574714419), | ||
3193 | FRAC_CONST(0.94849657698825252), | ||
3194 | FRAC_CONST(0.94952818059303667), | ||
3195 | FRAC_CONST(0.95054961551385087), | ||
3196 | FRAC_CONST(0.95156087081194762), | ||
3197 | FRAC_CONST(0.95256193565759528), | ||
3198 | FRAC_CONST(0.95355279933019343), | ||
3199 | FRAC_CONST(0.9545334512183884), | ||
3200 | FRAC_CONST(0.95550388082018611), | ||
3201 | FRAC_CONST(0.95646407774306541), | ||
3202 | FRAC_CONST(0.95741403170408834), | ||
3203 | FRAC_CONST(0.95835373253001133), | ||
3204 | FRAC_CONST(0.95928317015739362), | ||
3205 | FRAC_CONST(0.96020233463270466), | ||
3206 | FRAC_CONST(0.96111121611243155), | ||
3207 | FRAC_CONST(0.96200980486318388), | ||
3208 | FRAC_CONST(0.96289809126179782), | ||
3209 | FRAC_CONST(0.96377606579543984), | ||
3210 | FRAC_CONST(0.96464371906170809), | ||
3211 | FRAC_CONST(0.96550104176873297), | ||
3212 | FRAC_CONST(0.96634802473527726), | ||
3213 | FRAC_CONST(0.96718465889083372), | ||
3214 | FRAC_CONST(0.96801093527572268), | ||
3215 | FRAC_CONST(0.96882684504118799), | ||
3216 | FRAC_CONST(0.96963237944949143), | ||
3217 | FRAC_CONST(0.97042752987400682), | ||
3218 | FRAC_CONST(0.97121228779931179), | ||
3219 | FRAC_CONST(0.97198664482127939), | ||
3220 | FRAC_CONST(0.97275059264716823), | ||
3221 | FRAC_CONST(0.97350412309571066), | ||
3222 | FRAC_CONST(0.97424722809720088), | ||
3223 | FRAC_CONST(0.97497989969358168), | ||
3224 | FRAC_CONST(0.97570213003852857), | ||
3225 | FRAC_CONST(0.97641391139753486), | ||
3226 | FRAC_CONST(0.97711523614799412), | ||
3227 | FRAC_CONST(0.97780609677928154), | ||
3228 | FRAC_CONST(0.97848648589283505), | ||
3229 | FRAC_CONST(0.97915639620223371), | ||
3230 | FRAC_CONST(0.9798158205332762), | ||
3231 | FRAC_CONST(0.98046475182405801), | ||
3232 | FRAC_CONST(0.98110318312504607), | ||
3233 | FRAC_CONST(0.98173110759915416), | ||
3234 | FRAC_CONST(0.98234851852181571), | ||
3235 | FRAC_CONST(0.98295540928105563), | ||
3236 | FRAC_CONST(0.9835517733775615), | ||
3237 | FRAC_CONST(0.98413760442475307), | ||
3238 | FRAC_CONST(0.98471289614885038), | ||
3239 | FRAC_CONST(0.98527764238894122), | ||
3240 | FRAC_CONST(0.98583183709704714), | ||
3241 | FRAC_CONST(0.98637547433818806), | ||
3242 | FRAC_CONST(0.98690854829044583), | ||
3243 | FRAC_CONST(0.98743105324502667), | ||
3244 | FRAC_CONST(0.98794298360632238), | ||
3245 | FRAC_CONST(0.98844433389196995), | ||
3246 | FRAC_CONST(0.98893509873291074), | ||
3247 | FRAC_CONST(0.98941527287344755), | ||
3248 | FRAC_CONST(0.98988485117130098), | ||
3249 | FRAC_CONST(0.99034382859766479), | ||
3250 | FRAC_CONST(0.99079220023725967), | ||
3251 | FRAC_CONST(0.99122996128838525), | ||
3252 | FRAC_CONST(0.9916571070629725), | ||
3253 | FRAC_CONST(0.99207363298663342), | ||
3254 | FRAC_CONST(0.99247953459870997), | ||
3255 | FRAC_CONST(0.99287480755232194), | ||
3256 | FRAC_CONST(0.99325944761441354), | ||
3257 | FRAC_CONST(0.99363345066579889), | ||
3258 | FRAC_CONST(0.99399681270120555), | ||
3259 | FRAC_CONST(0.99434952982931812), | ||
3260 | FRAC_CONST(0.9946915982728195), | ||
3261 | FRAC_CONST(0.99502301436843166), | ||
3262 | FRAC_CONST(0.99534377456695422), | ||
3263 | FRAC_CONST(0.9956538754333033), | ||
3264 | FRAC_CONST(0.99595331364654771), | ||
3265 | FRAC_CONST(0.99624208599994479), | ||
3266 | FRAC_CONST(0.99652018940097464), | ||
3267 | FRAC_CONST(0.99678762087137318), | ||
3268 | FRAC_CONST(0.99704437754716424), | ||
3269 | FRAC_CONST(0.99729045667869021), | ||
3270 | FRAC_CONST(0.99752585563064111), | ||
3271 | FRAC_CONST(0.99775057188208349), | ||
3272 | FRAC_CONST(0.9979646030264866), | ||
3273 | FRAC_CONST(0.99816794677174903), | ||
3274 | FRAC_CONST(0.9983606009402225), | ||
3275 | FRAC_CONST(0.99854256346873571), | ||
3276 | FRAC_CONST(0.99871383240861611), | ||
3277 | FRAC_CONST(0.99887440592571108), | ||
3278 | FRAC_CONST(0.99902428230040718), | ||
3279 | FRAC_CONST(0.99916345992764877), | ||
3280 | FRAC_CONST(0.99929193731695531), | ||
3281 | FRAC_CONST(0.99940971309243731), | ||
3282 | FRAC_CONST(0.99951678599281069), | ||
3283 | FRAC_CONST(0.99961315487141078), | ||
3284 | FRAC_CONST(0.99969881869620425), | ||
3285 | FRAC_CONST(0.99977377654980037), | ||
3286 | FRAC_CONST(0.99983802762946083), | ||
3287 | FRAC_CONST(0.99989157124710804), | ||
3288 | FRAC_CONST(0.9999344068293331), | ||
3289 | FRAC_CONST(0.99996653391740109), | ||
3290 | FRAC_CONST(0.99998795216725689), | ||
3291 | FRAC_CONST(0.99999866134952808) | ||
3292 | }; | ||
3293 | #endif | ||
3294 | |||
3295 | static const real_t ld_mid_512[] MEM_ALIGN_ATTR = | ||
3296 | { | ||
3297 | FRAC_CONST(0), | ||
3298 | FRAC_CONST(0), | ||
3299 | FRAC_CONST(0), | ||
3300 | FRAC_CONST(0), | ||
3301 | FRAC_CONST(0), | ||
3302 | FRAC_CONST(0), | ||
3303 | FRAC_CONST(0), | ||
3304 | FRAC_CONST(0), | ||
3305 | FRAC_CONST(0), | ||
3306 | FRAC_CONST(0), | ||
3307 | FRAC_CONST(0), | ||
3308 | FRAC_CONST(0), | ||
3309 | FRAC_CONST(0), | ||
3310 | FRAC_CONST(0), | ||
3311 | FRAC_CONST(0), | ||
3312 | FRAC_CONST(0), | ||
3313 | FRAC_CONST(0), | ||
3314 | FRAC_CONST(0), | ||
3315 | FRAC_CONST(0), | ||
3316 | FRAC_CONST(0), | ||
3317 | FRAC_CONST(0), | ||
3318 | FRAC_CONST(0), | ||
3319 | FRAC_CONST(0), | ||
3320 | FRAC_CONST(0), | ||
3321 | FRAC_CONST(0), | ||
3322 | FRAC_CONST(0), | ||
3323 | FRAC_CONST(0), | ||
3324 | FRAC_CONST(0), | ||
3325 | FRAC_CONST(0), | ||
3326 | FRAC_CONST(0), | ||
3327 | FRAC_CONST(0), | ||
3328 | FRAC_CONST(0), | ||
3329 | FRAC_CONST(0), | ||
3330 | FRAC_CONST(0), | ||
3331 | FRAC_CONST(0), | ||
3332 | FRAC_CONST(0), | ||
3333 | FRAC_CONST(0), | ||
3334 | FRAC_CONST(0), | ||
3335 | FRAC_CONST(0), | ||
3336 | FRAC_CONST(0), | ||
3337 | FRAC_CONST(0), | ||
3338 | FRAC_CONST(0), | ||
3339 | FRAC_CONST(0), | ||
3340 | FRAC_CONST(0), | ||
3341 | FRAC_CONST(0), | ||
3342 | FRAC_CONST(0), | ||
3343 | FRAC_CONST(0), | ||
3344 | FRAC_CONST(0), | ||
3345 | FRAC_CONST(0), | ||
3346 | FRAC_CONST(0), | ||
3347 | FRAC_CONST(0), | ||
3348 | FRAC_CONST(0), | ||
3349 | FRAC_CONST(0), | ||
3350 | FRAC_CONST(0), | ||
3351 | FRAC_CONST(0), | ||
3352 | FRAC_CONST(0), | ||
3353 | FRAC_CONST(0), | ||
3354 | FRAC_CONST(0), | ||
3355 | FRAC_CONST(0), | ||
3356 | FRAC_CONST(0), | ||
3357 | FRAC_CONST(0), | ||
3358 | FRAC_CONST(0), | ||
3359 | FRAC_CONST(0), | ||
3360 | FRAC_CONST(0), | ||
3361 | FRAC_CONST(0), | ||
3362 | FRAC_CONST(0), | ||
3363 | FRAC_CONST(0), | ||
3364 | FRAC_CONST(0), | ||
3365 | FRAC_CONST(0), | ||
3366 | FRAC_CONST(0), | ||
3367 | FRAC_CONST(0), | ||
3368 | FRAC_CONST(0), | ||
3369 | FRAC_CONST(0), | ||
3370 | FRAC_CONST(0), | ||
3371 | FRAC_CONST(0), | ||
3372 | FRAC_CONST(0), | ||
3373 | FRAC_CONST(0), | ||
3374 | FRAC_CONST(0), | ||
3375 | FRAC_CONST(0), | ||
3376 | FRAC_CONST(0), | ||
3377 | FRAC_CONST(0), | ||
3378 | FRAC_CONST(0), | ||
3379 | FRAC_CONST(0), | ||
3380 | FRAC_CONST(0), | ||
3381 | FRAC_CONST(0), | ||
3382 | FRAC_CONST(0), | ||
3383 | FRAC_CONST(0), | ||
3384 | FRAC_CONST(0), | ||
3385 | FRAC_CONST(0), | ||
3386 | FRAC_CONST(0), | ||
3387 | FRAC_CONST(0), | ||
3388 | FRAC_CONST(0), | ||
3389 | FRAC_CONST(0), | ||
3390 | FRAC_CONST(0), | ||
3391 | FRAC_CONST(0), | ||
3392 | FRAC_CONST(0), | ||
3393 | FRAC_CONST(0), | ||
3394 | FRAC_CONST(0), | ||
3395 | FRAC_CONST(0), | ||
3396 | FRAC_CONST(0), | ||
3397 | FRAC_CONST(0), | ||
3398 | FRAC_CONST(0), | ||
3399 | FRAC_CONST(0), | ||
3400 | FRAC_CONST(0), | ||
3401 | FRAC_CONST(0), | ||
3402 | FRAC_CONST(0), | ||
3403 | FRAC_CONST(0), | ||
3404 | FRAC_CONST(0), | ||
3405 | FRAC_CONST(0), | ||
3406 | FRAC_CONST(0), | ||
3407 | FRAC_CONST(0), | ||
3408 | FRAC_CONST(0), | ||
3409 | FRAC_CONST(0), | ||
3410 | FRAC_CONST(0), | ||
3411 | FRAC_CONST(0), | ||
3412 | FRAC_CONST(0), | ||
3413 | FRAC_CONST(0), | ||
3414 | FRAC_CONST(0), | ||
3415 | FRAC_CONST(0), | ||
3416 | FRAC_CONST(0), | ||
3417 | FRAC_CONST(0), | ||
3418 | FRAC_CONST(0), | ||
3419 | FRAC_CONST(0), | ||
3420 | FRAC_CONST(0), | ||
3421 | FRAC_CONST(0), | ||
3422 | FRAC_CONST(0), | ||
3423 | FRAC_CONST(0), | ||
3424 | FRAC_CONST(0), | ||
3425 | FRAC_CONST(0), | ||
3426 | FRAC_CONST(0), | ||
3427 | FRAC_CONST(0), | ||
3428 | FRAC_CONST(0), | ||
3429 | FRAC_CONST(0), | ||
3430 | FRAC_CONST(0), | ||
3431 | FRAC_CONST(0), | ||
3432 | FRAC_CONST(0), | ||
3433 | FRAC_CONST(0), | ||
3434 | FRAC_CONST(0), | ||
3435 | FRAC_CONST(0), | ||
3436 | FRAC_CONST(0), | ||
3437 | FRAC_CONST(0), | ||
3438 | FRAC_CONST(0), | ||
3439 | FRAC_CONST(0), | ||
3440 | FRAC_CONST(0), | ||
3441 | FRAC_CONST(0), | ||
3442 | FRAC_CONST(0), | ||
3443 | FRAC_CONST(0), | ||
3444 | FRAC_CONST(0), | ||
3445 | FRAC_CONST(0), | ||
3446 | FRAC_CONST(0), | ||
3447 | FRAC_CONST(0), | ||
3448 | FRAC_CONST(0), | ||
3449 | FRAC_CONST(0), | ||
3450 | FRAC_CONST(0), | ||
3451 | FRAC_CONST(0), | ||
3452 | FRAC_CONST(0), | ||
3453 | FRAC_CONST(0), | ||
3454 | FRAC_CONST(0), | ||
3455 | FRAC_CONST(0), | ||
3456 | FRAC_CONST(0), | ||
3457 | FRAC_CONST(0), | ||
3458 | FRAC_CONST(0), | ||
3459 | FRAC_CONST(0), | ||
3460 | FRAC_CONST(0), | ||
3461 | FRAC_CONST(0), | ||
3462 | FRAC_CONST(0), | ||
3463 | FRAC_CONST(0), | ||
3464 | FRAC_CONST(0), | ||
3465 | FRAC_CONST(0), | ||
3466 | FRAC_CONST(0), | ||
3467 | FRAC_CONST(0), | ||
3468 | FRAC_CONST(0), | ||
3469 | FRAC_CONST(0), | ||
3470 | FRAC_CONST(0), | ||
3471 | FRAC_CONST(0), | ||
3472 | FRAC_CONST(0), | ||
3473 | FRAC_CONST(0), | ||
3474 | FRAC_CONST(0), | ||
3475 | FRAC_CONST(0), | ||
3476 | FRAC_CONST(0), | ||
3477 | FRAC_CONST(0), | ||
3478 | FRAC_CONST(0), | ||
3479 | FRAC_CONST(0), | ||
3480 | FRAC_CONST(0), | ||
3481 | FRAC_CONST(0), | ||
3482 | FRAC_CONST(0), | ||
3483 | FRAC_CONST(0), | ||
3484 | FRAC_CONST(0), | ||
3485 | FRAC_CONST(0), | ||
3486 | FRAC_CONST(0), | ||
3487 | FRAC_CONST(0), | ||
3488 | FRAC_CONST(0), | ||
3489 | FRAC_CONST(0.0061358846491544753), | ||
3490 | FRAC_CONST(0.01840672990580482), | ||
3491 | FRAC_CONST(0.030674803176636626), | ||
3492 | FRAC_CONST(0.04293825693494082), | ||
3493 | FRAC_CONST(0.055195244349689934), | ||
3494 | FRAC_CONST(0.067443919563664051), | ||
3495 | FRAC_CONST(0.079682437971430126), | ||
3496 | FRAC_CONST(0.091908956497132724), | ||
3497 | FRAC_CONST(0.10412163387205459), | ||
3498 | FRAC_CONST(0.11631863091190475), | ||
3499 | FRAC_CONST(0.12849811079379317), | ||
3500 | FRAC_CONST(0.14065823933284921), | ||
3501 | FRAC_CONST(0.15279718525844344), | ||
3502 | FRAC_CONST(0.16491312048996989), | ||
3503 | FRAC_CONST(0.17700422041214875), | ||
3504 | FRAC_CONST(0.18906866414980619), | ||
3505 | FRAC_CONST(0.2011046348420919), | ||
3506 | FRAC_CONST(0.21311031991609136), | ||
3507 | FRAC_CONST(0.22508391135979283), | ||
3508 | FRAC_CONST(0.2370236059943672), | ||
3509 | FRAC_CONST(0.24892760574572015), | ||
3510 | FRAC_CONST(0.26079411791527551), | ||
3511 | FRAC_CONST(0.27262135544994898), | ||
3512 | FRAC_CONST(0.28440753721127188), | ||
3513 | FRAC_CONST(0.29615088824362379), | ||
3514 | FRAC_CONST(0.30784964004153487), | ||
3515 | FRAC_CONST(0.31950203081601569), | ||
3516 | FRAC_CONST(0.33110630575987643), | ||
3517 | FRAC_CONST(0.34266071731199438), | ||
3518 | FRAC_CONST(0.35416352542049034), | ||
3519 | FRAC_CONST(0.36561299780477385), | ||
3520 | FRAC_CONST(0.37700741021641826), | ||
3521 | FRAC_CONST(0.38834504669882625), | ||
3522 | FRAC_CONST(0.39962419984564679), | ||
3523 | FRAC_CONST(0.41084317105790391), | ||
3524 | FRAC_CONST(0.42200027079979968), | ||
3525 | FRAC_CONST(0.43309381885315196), | ||
3526 | FRAC_CONST(0.4441221445704292), | ||
3527 | FRAC_CONST(0.45508358712634384), | ||
3528 | FRAC_CONST(0.46597649576796618), | ||
3529 | FRAC_CONST(0.47679923006332209), | ||
3530 | FRAC_CONST(0.487550160148436), | ||
3531 | FRAC_CONST(0.49822766697278187), | ||
3532 | FRAC_CONST(0.50883014254310699), | ||
3533 | FRAC_CONST(0.51935599016558964), | ||
3534 | FRAC_CONST(0.52980362468629461), | ||
3535 | FRAC_CONST(0.54017147272989285), | ||
3536 | FRAC_CONST(0.55045797293660481), | ||
3537 | FRAC_CONST(0.56066157619733603), | ||
3538 | FRAC_CONST(0.57078074588696726), | ||
3539 | FRAC_CONST(0.58081395809576453), | ||
3540 | FRAC_CONST(0.59075970185887416), | ||
3541 | FRAC_CONST(0.60061647938386897), | ||
3542 | FRAC_CONST(0.61038280627630948), | ||
3543 | FRAC_CONST(0.6200572117632891), | ||
3544 | FRAC_CONST(0.62963823891492698), | ||
3545 | FRAC_CONST(0.63912444486377573), | ||
3546 | FRAC_CONST(0.64851440102211244), | ||
3547 | FRAC_CONST(0.65780669329707864), | ||
3548 | FRAC_CONST(0.66699992230363747), | ||
3549 | FRAC_CONST(0.67609270357531592), | ||
3550 | FRAC_CONST(0.68508366777270036), | ||
3551 | FRAC_CONST(0.693971460889654), | ||
3552 | FRAC_CONST(0.7027547444572253), | ||
3553 | FRAC_CONST(0.71143219574521643), | ||
3554 | FRAC_CONST(0.72000250796138165), | ||
3555 | FRAC_CONST(0.7284643904482252), | ||
3556 | FRAC_CONST(0.73681656887736979), | ||
3557 | FRAC_CONST(0.74505778544146595), | ||
3558 | FRAC_CONST(0.75318679904361241), | ||
3559 | FRAC_CONST(0.76120238548426178), | ||
3560 | FRAC_CONST(0.76910333764557959), | ||
3561 | FRAC_CONST(0.77688846567323244), | ||
3562 | FRAC_CONST(0.78455659715557524), | ||
3563 | FRAC_CONST(0.79210657730021239), | ||
3564 | FRAC_CONST(0.79953726910790501), | ||
3565 | FRAC_CONST(0.80684755354379922), | ||
3566 | FRAC_CONST(0.8140363297059483), | ||
3567 | FRAC_CONST(0.82110251499110465), | ||
3568 | FRAC_CONST(0.8280450452577558), | ||
3569 | FRAC_CONST(0.83486287498638001), | ||
3570 | FRAC_CONST(0.84155497743689833), | ||
3571 | FRAC_CONST(0.84812034480329712), | ||
3572 | FRAC_CONST(0.85455798836540053), | ||
3573 | FRAC_CONST(0.86086693863776731), | ||
3574 | FRAC_CONST(0.86704624551569265), | ||
3575 | FRAC_CONST(0.87309497841829009), | ||
3576 | FRAC_CONST(0.87901222642863341), | ||
3577 | FRAC_CONST(0.88479709843093779), | ||
3578 | FRAC_CONST(0.89044872324475788), | ||
3579 | FRAC_CONST(0.89596624975618511), | ||
3580 | FRAC_CONST(0.90134884704602203), | ||
3581 | FRAC_CONST(0.90659570451491533), | ||
3582 | FRAC_CONST(0.91170603200542988), | ||
3583 | FRAC_CONST(0.9166790599210427), | ||
3584 | FRAC_CONST(0.9215140393420419), | ||
3585 | FRAC_CONST(0.92621024213831127), | ||
3586 | FRAC_CONST(0.93076696107898371), | ||
3587 | FRAC_CONST(0.9351835099389475), | ||
3588 | FRAC_CONST(0.93945922360218992), | ||
3589 | FRAC_CONST(0.94359345816196039), | ||
3590 | FRAC_CONST(0.94758559101774109), | ||
3591 | FRAC_CONST(0.95143502096900834), | ||
3592 | FRAC_CONST(0.95514116830577067), | ||
3593 | FRAC_CONST(0.9587034748958716), | ||
3594 | FRAC_CONST(0.96212140426904158), | ||
3595 | FRAC_CONST(0.9653944416976894), | ||
3596 | FRAC_CONST(0.96852209427441727), | ||
3597 | FRAC_CONST(0.97150389098625178), | ||
3598 | FRAC_CONST(0.97433938278557586), | ||
3599 | FRAC_CONST(0.97702814265775439), | ||
3600 | FRAC_CONST(0.97956976568544052), | ||
3601 | FRAC_CONST(0.98196386910955524), | ||
3602 | FRAC_CONST(0.98421009238692903), | ||
3603 | FRAC_CONST(0.98630809724459867), | ||
3604 | FRAC_CONST(0.98825756773074946), | ||
3605 | FRAC_CONST(0.99005821026229712), | ||
3606 | FRAC_CONST(0.99170975366909953), | ||
3607 | FRAC_CONST(0.9932119492347945), | ||
3608 | FRAC_CONST(0.99456457073425542), | ||
3609 | FRAC_CONST(0.99576741446765982), | ||
3610 | FRAC_CONST(0.99682029929116567), | ||
3611 | FRAC_CONST(0.99772306664419164), | ||
3612 | FRAC_CONST(0.99847558057329477), | ||
3613 | FRAC_CONST(0.99907772775264536), | ||
3614 | FRAC_CONST(0.99952941750109314), | ||
3615 | FRAC_CONST(0.9998305817958234), | ||
3616 | FRAC_CONST(0.99998117528260111), | ||
3617 | FRAC_CONST(1), | ||
3618 | FRAC_CONST(1), | ||
3619 | FRAC_CONST(1), | ||
3620 | FRAC_CONST(1), | ||
3621 | FRAC_CONST(1), | ||
3622 | FRAC_CONST(1), | ||
3623 | FRAC_CONST(1), | ||
3624 | FRAC_CONST(1), | ||
3625 | FRAC_CONST(1), | ||
3626 | FRAC_CONST(1), | ||
3627 | FRAC_CONST(1), | ||
3628 | FRAC_CONST(1), | ||
3629 | FRAC_CONST(1), | ||
3630 | FRAC_CONST(1), | ||
3631 | FRAC_CONST(1), | ||
3632 | FRAC_CONST(1), | ||
3633 | FRAC_CONST(1), | ||
3634 | FRAC_CONST(1), | ||
3635 | FRAC_CONST(1), | ||
3636 | FRAC_CONST(1), | ||
3637 | FRAC_CONST(1), | ||
3638 | FRAC_CONST(1), | ||
3639 | FRAC_CONST(1), | ||
3640 | FRAC_CONST(1), | ||
3641 | FRAC_CONST(1), | ||
3642 | FRAC_CONST(1), | ||
3643 | FRAC_CONST(1), | ||
3644 | FRAC_CONST(1), | ||
3645 | FRAC_CONST(1), | ||
3646 | FRAC_CONST(1), | ||
3647 | FRAC_CONST(1), | ||
3648 | FRAC_CONST(1), | ||
3649 | FRAC_CONST(1), | ||
3650 | FRAC_CONST(1), | ||
3651 | FRAC_CONST(1), | ||
3652 | FRAC_CONST(1), | ||
3653 | FRAC_CONST(1), | ||
3654 | FRAC_CONST(1), | ||
3655 | FRAC_CONST(1), | ||
3656 | FRAC_CONST(1), | ||
3657 | FRAC_CONST(1), | ||
3658 | FRAC_CONST(1), | ||
3659 | FRAC_CONST(1), | ||
3660 | FRAC_CONST(1), | ||
3661 | FRAC_CONST(1), | ||
3662 | FRAC_CONST(1), | ||
3663 | FRAC_CONST(1), | ||
3664 | FRAC_CONST(1), | ||
3665 | FRAC_CONST(1), | ||
3666 | FRAC_CONST(1), | ||
3667 | FRAC_CONST(1), | ||
3668 | FRAC_CONST(1), | ||
3669 | FRAC_CONST(1), | ||
3670 | FRAC_CONST(1), | ||
3671 | FRAC_CONST(1), | ||
3672 | FRAC_CONST(1), | ||
3673 | FRAC_CONST(1), | ||
3674 | FRAC_CONST(1), | ||
3675 | FRAC_CONST(1), | ||
3676 | FRAC_CONST(1), | ||
3677 | FRAC_CONST(1), | ||
3678 | FRAC_CONST(1), | ||
3679 | FRAC_CONST(1), | ||
3680 | FRAC_CONST(1), | ||
3681 | FRAC_CONST(1), | ||
3682 | FRAC_CONST(1), | ||
3683 | FRAC_CONST(1), | ||
3684 | FRAC_CONST(1), | ||
3685 | FRAC_CONST(1), | ||
3686 | FRAC_CONST(1), | ||
3687 | FRAC_CONST(1), | ||
3688 | FRAC_CONST(1), | ||
3689 | FRAC_CONST(1), | ||
3690 | FRAC_CONST(1), | ||
3691 | FRAC_CONST(1), | ||
3692 | FRAC_CONST(1), | ||
3693 | FRAC_CONST(1), | ||
3694 | FRAC_CONST(1), | ||
3695 | FRAC_CONST(1), | ||
3696 | FRAC_CONST(1), | ||
3697 | FRAC_CONST(1), | ||
3698 | FRAC_CONST(1), | ||
3699 | FRAC_CONST(1), | ||
3700 | FRAC_CONST(1), | ||
3701 | FRAC_CONST(1), | ||
3702 | FRAC_CONST(1), | ||
3703 | FRAC_CONST(1), | ||
3704 | FRAC_CONST(1), | ||
3705 | FRAC_CONST(1), | ||
3706 | FRAC_CONST(1), | ||
3707 | FRAC_CONST(1), | ||
3708 | FRAC_CONST(1), | ||
3709 | FRAC_CONST(1), | ||
3710 | FRAC_CONST(1), | ||
3711 | FRAC_CONST(1), | ||
3712 | FRAC_CONST(1), | ||
3713 | FRAC_CONST(1), | ||
3714 | FRAC_CONST(1), | ||
3715 | FRAC_CONST(1), | ||
3716 | FRAC_CONST(1), | ||
3717 | FRAC_CONST(1), | ||
3718 | FRAC_CONST(1), | ||
3719 | FRAC_CONST(1), | ||
3720 | FRAC_CONST(1), | ||
3721 | FRAC_CONST(1), | ||
3722 | FRAC_CONST(1), | ||
3723 | FRAC_CONST(1), | ||
3724 | FRAC_CONST(1), | ||
3725 | FRAC_CONST(1), | ||
3726 | FRAC_CONST(1), | ||
3727 | FRAC_CONST(1), | ||
3728 | FRAC_CONST(1), | ||
3729 | FRAC_CONST(1), | ||
3730 | FRAC_CONST(1), | ||
3731 | FRAC_CONST(1), | ||
3732 | FRAC_CONST(1), | ||
3733 | FRAC_CONST(1), | ||
3734 | FRAC_CONST(1), | ||
3735 | FRAC_CONST(1), | ||
3736 | FRAC_CONST(1), | ||
3737 | FRAC_CONST(1), | ||
3738 | FRAC_CONST(1), | ||
3739 | FRAC_CONST(1), | ||
3740 | FRAC_CONST(1), | ||
3741 | FRAC_CONST(1), | ||
3742 | FRAC_CONST(1), | ||
3743 | FRAC_CONST(1), | ||
3744 | FRAC_CONST(1), | ||
3745 | FRAC_CONST(1), | ||
3746 | FRAC_CONST(1), | ||
3747 | FRAC_CONST(1), | ||
3748 | FRAC_CONST(1), | ||
3749 | FRAC_CONST(1), | ||
3750 | FRAC_CONST(1), | ||
3751 | FRAC_CONST(1), | ||
3752 | FRAC_CONST(1), | ||
3753 | FRAC_CONST(1), | ||
3754 | FRAC_CONST(1), | ||
3755 | FRAC_CONST(1), | ||
3756 | FRAC_CONST(1), | ||
3757 | FRAC_CONST(1), | ||
3758 | FRAC_CONST(1), | ||
3759 | FRAC_CONST(1), | ||
3760 | FRAC_CONST(1), | ||
3761 | FRAC_CONST(1), | ||
3762 | FRAC_CONST(1), | ||
3763 | FRAC_CONST(1), | ||
3764 | FRAC_CONST(1), | ||
3765 | FRAC_CONST(1), | ||
3766 | FRAC_CONST(1), | ||
3767 | FRAC_CONST(1), | ||
3768 | FRAC_CONST(1), | ||
3769 | FRAC_CONST(1), | ||
3770 | FRAC_CONST(1), | ||
3771 | FRAC_CONST(1), | ||
3772 | FRAC_CONST(1), | ||
3773 | FRAC_CONST(1), | ||
3774 | FRAC_CONST(1), | ||
3775 | FRAC_CONST(1), | ||
3776 | FRAC_CONST(1), | ||
3777 | FRAC_CONST(1), | ||
3778 | FRAC_CONST(1), | ||
3779 | FRAC_CONST(1), | ||
3780 | FRAC_CONST(1), | ||
3781 | FRAC_CONST(1), | ||
3782 | FRAC_CONST(1), | ||
3783 | FRAC_CONST(1), | ||
3784 | FRAC_CONST(1), | ||
3785 | FRAC_CONST(1), | ||
3786 | FRAC_CONST(1), | ||
3787 | FRAC_CONST(1), | ||
3788 | FRAC_CONST(1), | ||
3789 | FRAC_CONST(1), | ||
3790 | FRAC_CONST(1), | ||
3791 | FRAC_CONST(1), | ||
3792 | FRAC_CONST(1), | ||
3793 | FRAC_CONST(1), | ||
3794 | FRAC_CONST(1), | ||
3795 | FRAC_CONST(1), | ||
3796 | FRAC_CONST(1), | ||
3797 | FRAC_CONST(1), | ||
3798 | FRAC_CONST(1), | ||
3799 | FRAC_CONST(1), | ||
3800 | FRAC_CONST(1), | ||
3801 | FRAC_CONST(1), | ||
3802 | FRAC_CONST(1), | ||
3803 | FRAC_CONST(1), | ||
3804 | FRAC_CONST(1), | ||
3805 | FRAC_CONST(1), | ||
3806 | FRAC_CONST(1), | ||
3807 | FRAC_CONST(1), | ||
3808 | FRAC_CONST(1) | ||
3809 | }; | ||
3810 | |||
3811 | #ifdef ALLOW_SMALL_FRAMELENGTH | ||
3812 | static const real_t ld_mid_480[] MEM_ALIGN_ATTR = | ||
3813 | { | ||
3814 | FRAC_CONST(0), | ||
3815 | FRAC_CONST(0), | ||
3816 | FRAC_CONST(0), | ||
3817 | FRAC_CONST(0), | ||
3818 | FRAC_CONST(0), | ||
3819 | FRAC_CONST(0), | ||
3820 | FRAC_CONST(0), | ||
3821 | FRAC_CONST(0), | ||
3822 | FRAC_CONST(0), | ||
3823 | FRAC_CONST(0), | ||
3824 | FRAC_CONST(0), | ||
3825 | FRAC_CONST(0), | ||
3826 | FRAC_CONST(0), | ||
3827 | FRAC_CONST(0), | ||
3828 | FRAC_CONST(0), | ||
3829 | FRAC_CONST(0), | ||
3830 | FRAC_CONST(0), | ||
3831 | FRAC_CONST(0), | ||
3832 | FRAC_CONST(0), | ||
3833 | FRAC_CONST(0), | ||
3834 | FRAC_CONST(0), | ||
3835 | FRAC_CONST(0), | ||
3836 | FRAC_CONST(0), | ||
3837 | FRAC_CONST(0), | ||
3838 | FRAC_CONST(0), | ||
3839 | FRAC_CONST(0), | ||
3840 | FRAC_CONST(0), | ||
3841 | FRAC_CONST(0), | ||
3842 | FRAC_CONST(0), | ||
3843 | FRAC_CONST(0), | ||
3844 | FRAC_CONST(0), | ||
3845 | FRAC_CONST(0), | ||
3846 | FRAC_CONST(0), | ||
3847 | FRAC_CONST(0), | ||
3848 | FRAC_CONST(0), | ||
3849 | FRAC_CONST(0), | ||
3850 | FRAC_CONST(0), | ||
3851 | FRAC_CONST(0), | ||
3852 | FRAC_CONST(0), | ||
3853 | FRAC_CONST(0), | ||
3854 | FRAC_CONST(0), | ||
3855 | FRAC_CONST(0), | ||
3856 | FRAC_CONST(0), | ||
3857 | FRAC_CONST(0), | ||
3858 | FRAC_CONST(0), | ||
3859 | FRAC_CONST(0), | ||
3860 | FRAC_CONST(0), | ||
3861 | FRAC_CONST(0), | ||
3862 | FRAC_CONST(0), | ||
3863 | FRAC_CONST(0), | ||
3864 | FRAC_CONST(0), | ||
3865 | FRAC_CONST(0), | ||
3866 | FRAC_CONST(0), | ||
3867 | FRAC_CONST(0), | ||
3868 | FRAC_CONST(0), | ||
3869 | FRAC_CONST(0), | ||
3870 | FRAC_CONST(0), | ||
3871 | FRAC_CONST(0), | ||
3872 | FRAC_CONST(0), | ||
3873 | FRAC_CONST(0), | ||
3874 | FRAC_CONST(0), | ||
3875 | FRAC_CONST(0), | ||
3876 | FRAC_CONST(0), | ||
3877 | FRAC_CONST(0), | ||
3878 | FRAC_CONST(0), | ||
3879 | FRAC_CONST(0), | ||
3880 | FRAC_CONST(0), | ||
3881 | FRAC_CONST(0), | ||
3882 | FRAC_CONST(0), | ||
3883 | FRAC_CONST(0), | ||
3884 | FRAC_CONST(0), | ||
3885 | FRAC_CONST(0), | ||
3886 | FRAC_CONST(0), | ||
3887 | FRAC_CONST(0), | ||
3888 | FRAC_CONST(0), | ||
3889 | FRAC_CONST(0), | ||
3890 | FRAC_CONST(0), | ||
3891 | FRAC_CONST(0), | ||
3892 | FRAC_CONST(0), | ||
3893 | FRAC_CONST(0), | ||
3894 | FRAC_CONST(0), | ||
3895 | FRAC_CONST(0), | ||
3896 | FRAC_CONST(0), | ||
3897 | FRAC_CONST(0), | ||
3898 | FRAC_CONST(0), | ||
3899 | FRAC_CONST(0), | ||
3900 | FRAC_CONST(0), | ||
3901 | FRAC_CONST(0), | ||
3902 | FRAC_CONST(0), | ||
3903 | FRAC_CONST(0), | ||
3904 | FRAC_CONST(0), | ||
3905 | FRAC_CONST(0), | ||
3906 | FRAC_CONST(0), | ||
3907 | FRAC_CONST(0), | ||
3908 | FRAC_CONST(0), | ||
3909 | FRAC_CONST(0), | ||
3910 | FRAC_CONST(0), | ||
3911 | FRAC_CONST(0), | ||
3912 | FRAC_CONST(0), | ||
3913 | FRAC_CONST(0), | ||
3914 | FRAC_CONST(0), | ||
3915 | FRAC_CONST(0), | ||
3916 | FRAC_CONST(0), | ||
3917 | FRAC_CONST(0), | ||
3918 | FRAC_CONST(0), | ||
3919 | FRAC_CONST(0), | ||
3920 | FRAC_CONST(0), | ||
3921 | FRAC_CONST(0), | ||
3922 | FRAC_CONST(0), | ||
3923 | FRAC_CONST(0), | ||
3924 | FRAC_CONST(0), | ||
3925 | FRAC_CONST(0), | ||
3926 | FRAC_CONST(0), | ||
3927 | FRAC_CONST(0), | ||
3928 | FRAC_CONST(0), | ||
3929 | FRAC_CONST(0), | ||
3930 | FRAC_CONST(0), | ||
3931 | FRAC_CONST(0), | ||
3932 | FRAC_CONST(0), | ||
3933 | FRAC_CONST(0), | ||
3934 | FRAC_CONST(0), | ||
3935 | FRAC_CONST(0), | ||
3936 | FRAC_CONST(0), | ||
3937 | FRAC_CONST(0), | ||
3938 | FRAC_CONST(0), | ||
3939 | FRAC_CONST(0), | ||
3940 | FRAC_CONST(0), | ||
3941 | FRAC_CONST(0), | ||
3942 | FRAC_CONST(0), | ||
3943 | FRAC_CONST(0), | ||
3944 | FRAC_CONST(0), | ||
3945 | FRAC_CONST(0), | ||
3946 | FRAC_CONST(0), | ||
3947 | FRAC_CONST(0), | ||
3948 | FRAC_CONST(0), | ||
3949 | FRAC_CONST(0), | ||
3950 | FRAC_CONST(0), | ||
3951 | FRAC_CONST(0), | ||
3952 | FRAC_CONST(0), | ||
3953 | FRAC_CONST(0), | ||
3954 | FRAC_CONST(0), | ||
3955 | FRAC_CONST(0), | ||
3956 | FRAC_CONST(0), | ||
3957 | FRAC_CONST(0), | ||
3958 | FRAC_CONST(0), | ||
3959 | FRAC_CONST(0), | ||
3960 | FRAC_CONST(0), | ||
3961 | FRAC_CONST(0), | ||
3962 | FRAC_CONST(0), | ||
3963 | FRAC_CONST(0), | ||
3964 | FRAC_CONST(0), | ||
3965 | FRAC_CONST(0), | ||
3966 | FRAC_CONST(0), | ||
3967 | FRAC_CONST(0), | ||
3968 | FRAC_CONST(0), | ||
3969 | FRAC_CONST(0), | ||
3970 | FRAC_CONST(0), | ||
3971 | FRAC_CONST(0), | ||
3972 | FRAC_CONST(0), | ||
3973 | FRAC_CONST(0), | ||
3974 | FRAC_CONST(0), | ||
3975 | FRAC_CONST(0), | ||
3976 | FRAC_CONST(0), | ||
3977 | FRAC_CONST(0), | ||
3978 | FRAC_CONST(0), | ||
3979 | FRAC_CONST(0), | ||
3980 | FRAC_CONST(0), | ||
3981 | FRAC_CONST(0), | ||
3982 | FRAC_CONST(0), | ||
3983 | FRAC_CONST(0), | ||
3984 | FRAC_CONST(0), | ||
3985 | FRAC_CONST(0), | ||
3986 | FRAC_CONST(0), | ||
3987 | FRAC_CONST(0), | ||
3988 | FRAC_CONST(0), | ||
3989 | FRAC_CONST(0), | ||
3990 | FRAC_CONST(0), | ||
3991 | FRAC_CONST(0), | ||
3992 | FRAC_CONST(0), | ||
3993 | FRAC_CONST(0), | ||
3994 | FRAC_CONST(0.0065449379673518581), | ||
3995 | FRAC_CONST(0.019633692460628301), | ||
3996 | FRAC_CONST(0.032719082821776137), | ||
3997 | FRAC_CONST(0.045798866936520771), | ||
3998 | FRAC_CONST(0.058870803651189033), | ||
3999 | FRAC_CONST(0.071932653156719387), | ||
4000 | FRAC_CONST(0.084982177372441667), | ||
4001 | FRAC_CONST(0.09801714032956059), | ||
4002 | FRAC_CONST(0.11103530855427769), | ||
4003 | FRAC_CONST(0.12403445145048532), | ||
4004 | FRAC_CONST(0.13701234168196802), | ||
4005 | FRAC_CONST(0.14996675555404498), | ||
4006 | FRAC_CONST(0.16289547339458874), | ||
4007 | FRAC_CONST(0.17579627993435451), | ||
4008 | FRAC_CONST(0.18866696468655525), | ||
4009 | FRAC_CONST(0.2015053223256171), | ||
4010 | FRAC_CONST(0.21430915306505074), | ||
4011 | FRAC_CONST(0.2270762630343732), | ||
4012 | FRAC_CONST(0.23980446465501654), | ||
4013 | FRAC_CONST(0.25249157701515795), | ||
4014 | FRAC_CONST(0.26513542624340797), | ||
4015 | FRAC_CONST(0.27773384588129219), | ||
4016 | FRAC_CONST(0.29028467725446233), | ||
4017 | FRAC_CONST(0.3027857698425746), | ||
4018 | FRAC_CONST(0.31523498164776964), | ||
4019 | FRAC_CONST(0.32763017956169349), | ||
4020 | FRAC_CONST(0.33996923973099424), | ||
4021 | FRAC_CONST(0.35225004792123354), | ||
4022 | FRAC_CONST(0.36447049987914965), | ||
4023 | FRAC_CONST(0.37662850169321077), | ||
4024 | FRAC_CONST(0.38872197015239557), | ||
4025 | FRAC_CONST(0.40074883310314097), | ||
4026 | FRAC_CONST(0.41270702980439467), | ||
4027 | FRAC_CONST(0.42459451128071307), | ||
4028 | FRAC_CONST(0.43640924067334208), | ||
4029 | FRAC_CONST(0.44814919358922256), | ||
4030 | FRAC_CONST(0.45981235844785984), | ||
4031 | FRAC_CONST(0.47139673682599764), | ||
4032 | FRAC_CONST(0.48290034380003727), | ||
4033 | FRAC_CONST(0.49432120828614462), | ||
4034 | FRAC_CONST(0.50565737337798455), | ||
4035 | FRAC_CONST(0.51690689668202761), | ||
4036 | FRAC_CONST(0.52806785065036799), | ||
4037 | FRAC_CONST(0.53913832291100017), | ||
4038 | FRAC_CONST(0.55011641659549337), | ||
4039 | FRAC_CONST(0.56100025066400983), | ||
4040 | FRAC_CONST(0.57178796022761225), | ||
4041 | FRAC_CONST(0.58247769686780215), | ||
4042 | FRAC_CONST(0.59306762895323706), | ||
4043 | FRAC_CONST(0.60355594195357143), | ||
4044 | FRAC_CONST(0.61394083875036642), | ||
4045 | FRAC_CONST(0.62422053994501758), | ||
4046 | FRAC_CONST(0.63439328416364549), | ||
4047 | FRAC_CONST(0.64445732835889735), | ||
4048 | FRAC_CONST(0.65441094810861034), | ||
4049 | FRAC_CONST(0.66425243791128175), | ||
4050 | FRAC_CONST(0.67398011147829784), | ||
4051 | FRAC_CONST(0.68359230202287125), | ||
4052 | FRAC_CONST(0.69308736254563585), | ||
4053 | FRAC_CONST(0.70246366611685174), | ||
4054 | FRAC_CONST(0.71171960615517138), | ||
4055 | FRAC_CONST(0.72085359670291882), | ||
4056 | FRAC_CONST(0.7298640726978356), | ||
4057 | FRAC_CONST(0.73874949024124625), | ||
4058 | FRAC_CONST(0.74750832686259672), | ||
4059 | FRAC_CONST(0.75613908178032285), | ||
4060 | FRAC_CONST(0.76464027615900032), | ||
4061 | FRAC_CONST(0.77301045336273699), | ||
4062 | FRAC_CONST(0.78124817920475853), | ||
4063 | FRAC_CONST(0.78935204219315003), | ||
4064 | FRAC_CONST(0.79732065377270711), | ||
4065 | FRAC_CONST(0.80515264856285829), | ||
4066 | FRAC_CONST(0.81284668459161513), | ||
4067 | FRAC_CONST(0.82040144352551359), | ||
4068 | FRAC_CONST(0.82781563089550203), | ||
4069 | FRAC_CONST(0.83508797631874299), | ||
4070 | FRAC_CONST(0.84221723371628654), | ||
4071 | FRAC_CONST(0.84920218152657889), | ||
4072 | FRAC_CONST(0.85604162291477137), | ||
4073 | FRAC_CONST(0.86273438597779184), | ||
4074 | FRAC_CONST(0.86927932394514362), | ||
4075 | FRAC_CONST(0.87567531537539967), | ||
4076 | FRAC_CONST(0.88192126434835494), | ||
4077 | FRAC_CONST(0.88801610065280734), | ||
4078 | FRAC_CONST(0.89395877996993212), | ||
4079 | FRAC_CONST(0.8997482840522214), | ||
4080 | FRAC_CONST(0.90538362089795521), | ||
4081 | FRAC_CONST(0.91086382492117568), | ||
4082 | FRAC_CONST(0.91618795711713596), | ||
4083 | FRAC_CONST(0.92135510522319242), | ||
4084 | FRAC_CONST(0.9263643838751181), | ||
4085 | FRAC_CONST(0.93121493475880346), | ||
4086 | FRAC_CONST(0.93590592675732565), | ||
4087 | FRAC_CONST(0.94043655609335486), | ||
4088 | FRAC_CONST(0.94480604646687805), | ||
4089 | FRAC_CONST(0.94901364918821385), | ||
4090 | FRAC_CONST(0.95305864330629697), | ||
4091 | FRAC_CONST(0.95694033573220882), | ||
4092 | FRAC_CONST(0.9606580613579353), | ||
4093 | FRAC_CONST(0.96421118317032928), | ||
4094 | FRAC_CONST(0.96759909236025976), | ||
4095 | FRAC_CONST(0.9708212084269281), | ||
4096 | FRAC_CONST(0.97387697927733363), | ||
4097 | FRAC_CONST(0.97676588132087239), | ||
4098 | FRAC_CONST(0.97948741955905139), | ||
4099 | FRAC_CONST(0.98204112767030394), | ||
4100 | FRAC_CONST(0.98442656808989171), | ||
4101 | FRAC_CONST(0.98664333208487898), | ||
4102 | FRAC_CONST(0.98869103982416728), | ||
4103 | FRAC_CONST(0.99056934044357725), | ||
4104 | FRAC_CONST(0.99227791210596705), | ||
4105 | FRAC_CONST(0.99381646205637808), | ||
4106 | FRAC_CONST(0.99518472667219682), | ||
4107 | FRAC_CONST(0.99638247150832537), | ||
4108 | FRAC_CONST(0.99740949133735191), | ||
4109 | FRAC_CONST(0.99826561018471593), | ||
4110 | FRAC_CONST(0.99895068135886012), | ||
4111 | FRAC_CONST(0.99946458747636568), | ||
4112 | FRAC_CONST(0.99980724048206482), | ||
4113 | FRAC_CONST(0.99997858166412923), | ||
4114 | FRAC_CONST(1), | ||
4115 | FRAC_CONST(1), | ||
4116 | FRAC_CONST(1), | ||
4117 | FRAC_CONST(1), | ||
4118 | FRAC_CONST(1), | ||
4119 | FRAC_CONST(1), | ||
4120 | FRAC_CONST(1), | ||
4121 | FRAC_CONST(1), | ||
4122 | FRAC_CONST(1), | ||
4123 | FRAC_CONST(1), | ||
4124 | FRAC_CONST(1), | ||
4125 | FRAC_CONST(1), | ||
4126 | FRAC_CONST(1), | ||
4127 | FRAC_CONST(1), | ||
4128 | FRAC_CONST(1), | ||
4129 | FRAC_CONST(1), | ||
4130 | FRAC_CONST(1), | ||
4131 | FRAC_CONST(1), | ||
4132 | FRAC_CONST(1), | ||
4133 | FRAC_CONST(1), | ||
4134 | FRAC_CONST(1), | ||
4135 | FRAC_CONST(1), | ||
4136 | FRAC_CONST(1), | ||
4137 | FRAC_CONST(1), | ||
4138 | FRAC_CONST(1), | ||
4139 | FRAC_CONST(1), | ||
4140 | FRAC_CONST(1), | ||
4141 | FRAC_CONST(1), | ||
4142 | FRAC_CONST(1), | ||
4143 | FRAC_CONST(1), | ||
4144 | FRAC_CONST(1), | ||
4145 | FRAC_CONST(1), | ||
4146 | FRAC_CONST(1), | ||
4147 | FRAC_CONST(1), | ||
4148 | FRAC_CONST(1), | ||
4149 | FRAC_CONST(1), | ||
4150 | FRAC_CONST(1), | ||
4151 | FRAC_CONST(1), | ||
4152 | FRAC_CONST(1), | ||
4153 | FRAC_CONST(1), | ||
4154 | FRAC_CONST(1), | ||
4155 | FRAC_CONST(1), | ||
4156 | FRAC_CONST(1), | ||
4157 | FRAC_CONST(1), | ||
4158 | FRAC_CONST(1), | ||
4159 | FRAC_CONST(1), | ||
4160 | FRAC_CONST(1), | ||
4161 | FRAC_CONST(1), | ||
4162 | FRAC_CONST(1), | ||
4163 | FRAC_CONST(1), | ||
4164 | FRAC_CONST(1), | ||
4165 | FRAC_CONST(1), | ||
4166 | FRAC_CONST(1), | ||
4167 | FRAC_CONST(1), | ||
4168 | FRAC_CONST(1), | ||
4169 | FRAC_CONST(1), | ||
4170 | FRAC_CONST(1), | ||
4171 | FRAC_CONST(1), | ||
4172 | FRAC_CONST(1), | ||
4173 | FRAC_CONST(1), | ||
4174 | FRAC_CONST(1), | ||
4175 | FRAC_CONST(1), | ||
4176 | FRAC_CONST(1), | ||
4177 | FRAC_CONST(1), | ||
4178 | FRAC_CONST(1), | ||
4179 | FRAC_CONST(1), | ||
4180 | FRAC_CONST(1), | ||
4181 | FRAC_CONST(1), | ||
4182 | FRAC_CONST(1), | ||
4183 | FRAC_CONST(1), | ||
4184 | FRAC_CONST(1), | ||
4185 | FRAC_CONST(1), | ||
4186 | FRAC_CONST(1), | ||
4187 | FRAC_CONST(1), | ||
4188 | FRAC_CONST(1), | ||
4189 | FRAC_CONST(1), | ||
4190 | FRAC_CONST(1), | ||
4191 | FRAC_CONST(1), | ||
4192 | FRAC_CONST(1), | ||
4193 | FRAC_CONST(1), | ||
4194 | FRAC_CONST(1), | ||
4195 | FRAC_CONST(1), | ||
4196 | FRAC_CONST(1), | ||
4197 | FRAC_CONST(1), | ||
4198 | FRAC_CONST(1), | ||
4199 | FRAC_CONST(1), | ||
4200 | FRAC_CONST(1), | ||
4201 | FRAC_CONST(1), | ||
4202 | FRAC_CONST(1), | ||
4203 | FRAC_CONST(1), | ||
4204 | FRAC_CONST(1), | ||
4205 | FRAC_CONST(1), | ||
4206 | FRAC_CONST(1), | ||
4207 | FRAC_CONST(1), | ||
4208 | FRAC_CONST(1), | ||
4209 | FRAC_CONST(1), | ||
4210 | FRAC_CONST(1), | ||
4211 | FRAC_CONST(1), | ||
4212 | FRAC_CONST(1), | ||
4213 | FRAC_CONST(1), | ||
4214 | FRAC_CONST(1), | ||
4215 | FRAC_CONST(1), | ||
4216 | FRAC_CONST(1), | ||
4217 | FRAC_CONST(1), | ||
4218 | FRAC_CONST(1), | ||
4219 | FRAC_CONST(1), | ||
4220 | FRAC_CONST(1), | ||
4221 | FRAC_CONST(1), | ||
4222 | FRAC_CONST(1), | ||
4223 | FRAC_CONST(1), | ||
4224 | FRAC_CONST(1), | ||
4225 | FRAC_CONST(1), | ||
4226 | FRAC_CONST(1), | ||
4227 | FRAC_CONST(1), | ||
4228 | FRAC_CONST(1), | ||
4229 | FRAC_CONST(1), | ||
4230 | FRAC_CONST(1), | ||
4231 | FRAC_CONST(1), | ||
4232 | FRAC_CONST(1), | ||
4233 | FRAC_CONST(1), | ||
4234 | FRAC_CONST(1), | ||
4235 | FRAC_CONST(1), | ||
4236 | FRAC_CONST(1), | ||
4237 | FRAC_CONST(1), | ||
4238 | FRAC_CONST(1), | ||
4239 | FRAC_CONST(1), | ||
4240 | FRAC_CONST(1), | ||
4241 | FRAC_CONST(1), | ||
4242 | FRAC_CONST(1), | ||
4243 | FRAC_CONST(1), | ||
4244 | FRAC_CONST(1), | ||
4245 | FRAC_CONST(1), | ||
4246 | FRAC_CONST(1), | ||
4247 | FRAC_CONST(1), | ||
4248 | FRAC_CONST(1), | ||
4249 | FRAC_CONST(1), | ||
4250 | FRAC_CONST(1), | ||
4251 | FRAC_CONST(1), | ||
4252 | FRAC_CONST(1), | ||
4253 | FRAC_CONST(1), | ||
4254 | FRAC_CONST(1), | ||
4255 | FRAC_CONST(1), | ||
4256 | FRAC_CONST(1), | ||
4257 | FRAC_CONST(1), | ||
4258 | FRAC_CONST(1), | ||
4259 | FRAC_CONST(1), | ||
4260 | FRAC_CONST(1), | ||
4261 | FRAC_CONST(1), | ||
4262 | FRAC_CONST(1), | ||
4263 | FRAC_CONST(1), | ||
4264 | FRAC_CONST(1), | ||
4265 | FRAC_CONST(1), | ||
4266 | FRAC_CONST(1), | ||
4267 | FRAC_CONST(1), | ||
4268 | FRAC_CONST(1), | ||
4269 | FRAC_CONST(1), | ||
4270 | FRAC_CONST(1), | ||
4271 | FRAC_CONST(1), | ||
4272 | FRAC_CONST(1), | ||
4273 | FRAC_CONST(1), | ||
4274 | FRAC_CONST(1), | ||
4275 | FRAC_CONST(1), | ||
4276 | FRAC_CONST(1), | ||
4277 | FRAC_CONST(1), | ||
4278 | FRAC_CONST(1), | ||
4279 | FRAC_CONST(1), | ||
4280 | FRAC_CONST(1), | ||
4281 | FRAC_CONST(1), | ||
4282 | FRAC_CONST(1), | ||
4283 | FRAC_CONST(1), | ||
4284 | FRAC_CONST(1), | ||
4285 | FRAC_CONST(1), | ||
4286 | FRAC_CONST(1), | ||
4287 | FRAC_CONST(1), | ||
4288 | FRAC_CONST(1), | ||
4289 | FRAC_CONST(1), | ||
4290 | FRAC_CONST(1), | ||
4291 | FRAC_CONST(1), | ||
4292 | FRAC_CONST(1), | ||
4293 | FRAC_CONST(1) | ||
4294 | }; | ||
4295 | #endif | ||
4296 | #endif | ||
4297 | |||
4298 | #ifdef __cplusplus | ||
4299 | } | ||
4300 | #endif | ||
4301 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/specrec.c b/lib/rbcodec/codecs/libfaad/specrec.c new file mode 100644 index 0000000000..200239bddc --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/specrec.c | |||
@@ -0,0 +1,1092 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | /* | ||
29 | Spectral reconstruction: | ||
30 | - grouping/sectioning | ||
31 | - inverse quantization | ||
32 | - applying scalefactors | ||
33 | */ | ||
34 | |||
35 | #include "common.h" | ||
36 | #include "structs.h" | ||
37 | |||
38 | #include <string.h> | ||
39 | #include <stdlib.h> | ||
40 | #include "specrec.h" | ||
41 | #include "filtbank.h" | ||
42 | #include "syntax.h" | ||
43 | #include "iq_table.h" | ||
44 | #include "ms.h" | ||
45 | #include "is.h" | ||
46 | #include "pns.h" | ||
47 | #include "tns.h" | ||
48 | #include "drc.h" | ||
49 | #include "lt_predict.h" | ||
50 | #include "ic_predict.h" | ||
51 | #ifdef SSR_DEC | ||
52 | #include "ssr.h" | ||
53 | #include "ssr_fb.h" | ||
54 | #endif | ||
55 | |||
56 | /* static function declarations */ | ||
57 | static uint8_t quant_to_spec(NeAACDecHandle hDecoder, | ||
58 | ic_stream *ics, int16_t *quant_data, | ||
59 | real_t *spec_data, uint16_t frame_len); | ||
60 | |||
61 | |||
62 | #ifdef LD_DEC | ||
63 | static const uint8_t num_swb_512_window[] = | ||
64 | { | ||
65 | 0, 0, 0, 36, 36, 37, 31, 31, 0, 0, 0, 0 | ||
66 | }; | ||
67 | static const uint8_t num_swb_480_window[] = | ||
68 | { | ||
69 | 0, 0, 0, 35, 35, 37, 30, 30, 0, 0, 0, 0 | ||
70 | }; | ||
71 | #endif | ||
72 | |||
73 | static const uint8_t num_swb_960_window[] ICONST_ATTR = | ||
74 | { | ||
75 | 40, 40, 45, 49, 49, 49, 46, 46, 42, 42, 42, 40 | ||
76 | }; | ||
77 | |||
78 | static const uint8_t num_swb_1024_window[] ICONST_ATTR = | ||
79 | { | ||
80 | 41, 41, 47, 49, 49, 51, 47, 47, 43, 43, 43, 40 | ||
81 | }; | ||
82 | |||
83 | static const uint8_t num_swb_128_window[] ICONST_ATTR = | ||
84 | { | ||
85 | 12, 12, 12, 14, 14, 14, 15, 15, 15, 15, 15, 15 | ||
86 | }; | ||
87 | |||
88 | static const uint16_t swb_offset_1024_96[] = | ||
89 | { | ||
90 | 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, | ||
91 | 64, 72, 80, 88, 96, 108, 120, 132, 144, 156, 172, 188, 212, 240, | ||
92 | 276, 320, 384, 448, 512, 576, 640, 704, 768, 832, 896, 960, 1024 | ||
93 | }; | ||
94 | |||
95 | static const uint16_t swb_offset_128_96[] = | ||
96 | { | ||
97 | 0, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 92, 128 | ||
98 | }; | ||
99 | |||
100 | static const uint16_t swb_offset_1024_64[] = | ||
101 | { | ||
102 | 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, | ||
103 | 64, 72, 80, 88, 100, 112, 124, 140, 156, 172, 192, 216, 240, 268, | ||
104 | 304, 344, 384, 424, 464, 504, 544, 584, 624, 664, 704, 744, 784, 824, | ||
105 | 864, 904, 944, 984, 1024 | ||
106 | }; | ||
107 | |||
108 | static const uint16_t swb_offset_128_64[] = | ||
109 | { | ||
110 | 0, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 92, 128 | ||
111 | }; | ||
112 | |||
113 | static const uint16_t swb_offset_1024_48[] ICONST_ATTR = | ||
114 | { | ||
115 | 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 48, 56, 64, 72, | ||
116 | 80, 88, 96, 108, 120, 132, 144, 160, 176, 196, 216, 240, 264, 292, | ||
117 | 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, | ||
118 | 768, 800, 832, 864, 896, 928, 1024 | ||
119 | }; | ||
120 | |||
121 | #ifdef LD_DEC | ||
122 | static const uint16_t swb_offset_512_48[] = | ||
123 | { | ||
124 | 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 68, 76, 84, | ||
125 | 92, 100, 112, 124, 136, 148, 164, 184, 208, 236, 268, 300, 332, 364, 396, | ||
126 | 428, 460, 512 | ||
127 | }; | ||
128 | |||
129 | static const uint16_t swb_offset_480_48[] = | ||
130 | { | ||
131 | 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 64, 72 ,80 ,88, | ||
132 | 96, 108, 120, 132, 144, 156, 172, 188, 212, 240, 272, 304, 336, 368, 400, | ||
133 | 432, 480 | ||
134 | }; | ||
135 | #endif | ||
136 | |||
137 | static const uint16_t swb_offset_128_48[] ICONST_ATTR = | ||
138 | { | ||
139 | 0, 4, 8, 12, 16, 20, 28, 36, 44, 56, 68, 80, 96, 112, 128 | ||
140 | }; | ||
141 | |||
142 | static const uint16_t swb_offset_1024_32[] ICONST_ATTR = | ||
143 | { | ||
144 | 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 48, 56, 64, 72, | ||
145 | 80, 88, 96, 108, 120, 132, 144, 160, 176, 196, 216, 240, 264, 292, | ||
146 | 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, | ||
147 | 768, 800, 832, 864, 896, 928, 960, 992, 1024 | ||
148 | }; | ||
149 | |||
150 | #ifdef LD_DEC | ||
151 | static const uint16_t swb_offset_512_32[] = | ||
152 | { | ||
153 | 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 64, 72, 80, | ||
154 | 88, 96, 108, 120, 132, 144, 160, 176, 192, 212, 236, 260, 288, 320, 352, | ||
155 | 384, 416, 448, 480, 512 | ||
156 | }; | ||
157 | |||
158 | static const uint16_t swb_offset_480_32[] = | ||
159 | { | ||
160 | 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 72, 80, | ||
161 | 88, 96, 104, 112, 124, 136, 148, 164, 180, 200, 224, 256, 288, 320, 352, | ||
162 | 384, 416, 448, 480 | ||
163 | }; | ||
164 | #endif | ||
165 | |||
166 | static const uint16_t swb_offset_1024_24[] ICONST_ATTR = | ||
167 | { | ||
168 | 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 52, 60, 68, | ||
169 | 76, 84, 92, 100, 108, 116, 124, 136, 148, 160, 172, 188, 204, 220, | ||
170 | 240, 260, 284, 308, 336, 364, 396, 432, 468, 508, 552, 600, 652, 704, | ||
171 | 768, 832, 896, 960, 1024 | ||
172 | }; | ||
173 | |||
174 | #ifdef LD_DEC | ||
175 | static const uint16_t swb_offset_512_24[] = | ||
176 | { | ||
177 | 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 52, 60, 68, | ||
178 | 80, 92, 104, 120, 140, 164, 192, 224, 256, 288, 320, 352, 384, 416, | ||
179 | 448, 480, 512 | ||
180 | }; | ||
181 | |||
182 | static const uint16_t swb_offset_480_24[] = | ||
183 | { | ||
184 | 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 52, 60, 68, 80, 92, 104, 120, | ||
185 | 140, 164, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480 | ||
186 | }; | ||
187 | #endif | ||
188 | |||
189 | static const uint16_t swb_offset_128_24[] ICONST_ATTR = | ||
190 | { | ||
191 | 0, 4, 8, 12, 16, 20, 24, 28, 36, 44, 52, 64, 76, 92, 108, 128 | ||
192 | }; | ||
193 | |||
194 | static const uint16_t swb_offset_1024_16[] ICONST_ATTR = | ||
195 | { | ||
196 | 0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 100, 112, 124, | ||
197 | 136, 148, 160, 172, 184, 196, 212, 228, 244, 260, 280, 300, 320, 344, | ||
198 | 368, 396, 424, 456, 492, 532, 572, 616, 664, 716, 772, 832, 896, 960, 1024 | ||
199 | }; | ||
200 | |||
201 | static const uint16_t swb_offset_128_16[] ICONST_ATTR = | ||
202 | { | ||
203 | 0, 4, 8, 12, 16, 20, 24, 28, 32, 40, 48, 60, 72, 88, 108, 128 | ||
204 | }; | ||
205 | |||
206 | static const uint16_t swb_offset_1024_8[] ICONST_ATTR = | ||
207 | { | ||
208 | 0, 12, 24, 36, 48, 60, 72, 84, 96, 108, 120, 132, 144, 156, 172, | ||
209 | 188, 204, 220, 236, 252, 268, 288, 308, 328, 348, 372, 396, 420, 448, | ||
210 | 476, 508, 544, 580, 620, 664, 712, 764, 820, 880, 944, 1024 | ||
211 | }; | ||
212 | |||
213 | static const uint16_t swb_offset_128_8[] ICONST_ATTR = | ||
214 | { | ||
215 | 0, 4, 8, 12, 16, 20, 24, 28, 36, 44, 52, 60, 72, 88, 108, 128 | ||
216 | }; | ||
217 | |||
218 | static const uint16_t *const swb_offset_1024_window[] ICONST_ATTR = | ||
219 | { | ||
220 | swb_offset_1024_96, /* 96000 */ | ||
221 | swb_offset_1024_96, /* 88200 */ | ||
222 | swb_offset_1024_64, /* 64000 */ | ||
223 | swb_offset_1024_48, /* 48000 */ | ||
224 | swb_offset_1024_48, /* 44100 */ | ||
225 | swb_offset_1024_32, /* 32000 */ | ||
226 | swb_offset_1024_24, /* 24000 */ | ||
227 | swb_offset_1024_24, /* 22050 */ | ||
228 | swb_offset_1024_16, /* 16000 */ | ||
229 | swb_offset_1024_16, /* 12000 */ | ||
230 | swb_offset_1024_16, /* 11025 */ | ||
231 | swb_offset_1024_8 /* 8000 */ | ||
232 | }; | ||
233 | |||
234 | #ifdef LD_DEC | ||
235 | static const uint16_t *swb_offset_512_window[] = | ||
236 | { | ||
237 | 0, /* 96000 */ | ||
238 | 0, /* 88200 */ | ||
239 | 0, /* 64000 */ | ||
240 | swb_offset_512_48, /* 48000 */ | ||
241 | swb_offset_512_48, /* 44100 */ | ||
242 | swb_offset_512_32, /* 32000 */ | ||
243 | swb_offset_512_24, /* 24000 */ | ||
244 | swb_offset_512_24, /* 22050 */ | ||
245 | 0, /* 16000 */ | ||
246 | 0, /* 12000 */ | ||
247 | 0, /* 11025 */ | ||
248 | 0 /* 8000 */ | ||
249 | }; | ||
250 | |||
251 | static const uint16_t *swb_offset_480_window[] = | ||
252 | { | ||
253 | 0, /* 96000 */ | ||
254 | 0, /* 88200 */ | ||
255 | 0, /* 64000 */ | ||
256 | swb_offset_480_48, /* 48000 */ | ||
257 | swb_offset_480_48, /* 44100 */ | ||
258 | swb_offset_480_32, /* 32000 */ | ||
259 | swb_offset_480_24, /* 24000 */ | ||
260 | swb_offset_480_24, /* 22050 */ | ||
261 | 0, /* 16000 */ | ||
262 | 0, /* 12000 */ | ||
263 | 0, /* 11025 */ | ||
264 | 0 /* 8000 */ | ||
265 | }; | ||
266 | #endif | ||
267 | |||
268 | static const uint16_t *const swb_offset_128_window[] ICONST_ATTR = | ||
269 | { | ||
270 | swb_offset_128_96, /* 96000 */ | ||
271 | swb_offset_128_96, /* 88200 */ | ||
272 | swb_offset_128_64, /* 64000 */ | ||
273 | swb_offset_128_48, /* 48000 */ | ||
274 | swb_offset_128_48, /* 44100 */ | ||
275 | swb_offset_128_48, /* 32000 */ | ||
276 | swb_offset_128_24, /* 24000 */ | ||
277 | swb_offset_128_24, /* 22050 */ | ||
278 | swb_offset_128_16, /* 16000 */ | ||
279 | swb_offset_128_16, /* 12000 */ | ||
280 | swb_offset_128_16, /* 11025 */ | ||
281 | swb_offset_128_8 /* 8000 */ | ||
282 | }; | ||
283 | |||
284 | #define bit_set(A, B) ((A) & (1<<(B))) | ||
285 | |||
286 | /* static variables */ | ||
287 | /* used by reconstruct_single_channel() and reconstruct_channel_pair() */ | ||
288 | static real_t spec_coef1[FRAME_LEN] IBSS_ATTR MEM_ALIGN_ATTR; | ||
289 | static real_t spec_coef2[FRAME_LEN] IBSS_ATTR MEM_ALIGN_ATTR; | ||
290 | |||
291 | /* 4.5.2.3.4 */ | ||
292 | /* | ||
293 | - determine the number of windows in a window_sequence named num_windows | ||
294 | - determine the number of window_groups named num_window_groups | ||
295 | - determine the number of windows in each group named window_group_length[g] | ||
296 | - determine the total number of scalefactor window bands named num_swb for | ||
297 | the actual window type | ||
298 | - determine swb_offset[swb], the offset of the first coefficient in | ||
299 | scalefactor window band named swb of the window actually used | ||
300 | - determine sect_sfb_offset[g][section],the offset of the first coefficient | ||
301 | in section named section. This offset depends on window_sequence and | ||
302 | scale_factor_grouping and is needed to decode the spectral_data(). | ||
303 | */ | ||
304 | uint8_t window_grouping_info(NeAACDecHandle hDecoder, ic_stream *ics) | ||
305 | { | ||
306 | uint8_t i, g; | ||
307 | |||
308 | uint8_t sf_index = hDecoder->sf_index; | ||
309 | |||
310 | switch (ics->window_sequence) { | ||
311 | case ONLY_LONG_SEQUENCE: | ||
312 | case LONG_START_SEQUENCE: | ||
313 | case LONG_STOP_SEQUENCE: | ||
314 | ics->num_windows = 1; | ||
315 | ics->num_window_groups = 1; | ||
316 | ics->window_group_length[ics->num_window_groups-1] = 1; | ||
317 | #ifdef LD_DEC | ||
318 | if (hDecoder->object_type == LD) | ||
319 | { | ||
320 | if (hDecoder->frameLength == 512) | ||
321 | ics->num_swb = num_swb_512_window[sf_index]; | ||
322 | else /* if (hDecoder->frameLength == 480) */ | ||
323 | ics->num_swb = num_swb_480_window[sf_index]; | ||
324 | } else { | ||
325 | #endif | ||
326 | if (hDecoder->frameLength == 1024) | ||
327 | ics->num_swb = num_swb_1024_window[sf_index]; | ||
328 | else /* if (hDecoder->frameLength == 960) */ | ||
329 | ics->num_swb = num_swb_960_window[sf_index]; | ||
330 | #ifdef LD_DEC | ||
331 | } | ||
332 | #endif | ||
333 | |||
334 | /* preparation of sect_sfb_offset for long blocks */ | ||
335 | /* also copy the last value! */ | ||
336 | #ifdef LD_DEC | ||
337 | if (hDecoder->object_type == LD) | ||
338 | { | ||
339 | if (hDecoder->frameLength == 512) | ||
340 | { | ||
341 | for (i = 0; i < ics->num_swb; i++) | ||
342 | { | ||
343 | ics->sect_sfb_offset[0][i] = swb_offset_512_window[sf_index][i]; | ||
344 | ics->swb_offset[i] = swb_offset_512_window[sf_index][i]; | ||
345 | } | ||
346 | } else /* if (hDecoder->frameLength == 480) */ { | ||
347 | for (i = 0; i < ics->num_swb; i++) | ||
348 | { | ||
349 | ics->sect_sfb_offset[0][i] = swb_offset_480_window[sf_index][i]; | ||
350 | ics->swb_offset[i] = swb_offset_480_window[sf_index][i]; | ||
351 | } | ||
352 | } | ||
353 | ics->sect_sfb_offset[0][ics->num_swb] = hDecoder->frameLength; | ||
354 | ics->swb_offset[ics->num_swb] = hDecoder->frameLength; | ||
355 | } else { | ||
356 | #endif | ||
357 | for (i = 0; i < ics->num_swb; i++) | ||
358 | { | ||
359 | ics->sect_sfb_offset[0][i] = swb_offset_1024_window[sf_index][i]; | ||
360 | ics->swb_offset[i] = swb_offset_1024_window[sf_index][i]; | ||
361 | } | ||
362 | ics->sect_sfb_offset[0][ics->num_swb] = hDecoder->frameLength; | ||
363 | ics->swb_offset[ics->num_swb] = hDecoder->frameLength; | ||
364 | #ifdef LD_DEC | ||
365 | } | ||
366 | #endif | ||
367 | return 0; | ||
368 | case EIGHT_SHORT_SEQUENCE: | ||
369 | ics->num_windows = 8; | ||
370 | ics->num_window_groups = 1; | ||
371 | ics->window_group_length[ics->num_window_groups-1] = 1; | ||
372 | ics->num_swb = num_swb_128_window[sf_index]; | ||
373 | |||
374 | for (i = 0; i < ics->num_swb; i++) | ||
375 | ics->swb_offset[i] = swb_offset_128_window[sf_index][i]; | ||
376 | ics->swb_offset[ics->num_swb] = hDecoder->frameLength/8; | ||
377 | |||
378 | for (i = 0; i < ics->num_windows-1; i++) { | ||
379 | if (bit_set(ics->scale_factor_grouping, 6-i) == 0) | ||
380 | { | ||
381 | ics->num_window_groups += 1; | ||
382 | ics->window_group_length[ics->num_window_groups-1] = 1; | ||
383 | } else { | ||
384 | ics->window_group_length[ics->num_window_groups-1] += 1; | ||
385 | } | ||
386 | } | ||
387 | |||
388 | /* preparation of sect_sfb_offset for short blocks */ | ||
389 | for (g = 0; g < ics->num_window_groups; g++) | ||
390 | { | ||
391 | uint16_t width; | ||
392 | uint8_t sect_sfb = 0; | ||
393 | uint16_t offset = 0; | ||
394 | |||
395 | for (i = 0; i < ics->num_swb; i++) | ||
396 | { | ||
397 | if (i+1 == ics->num_swb) | ||
398 | { | ||
399 | width = (hDecoder->frameLength/8) - swb_offset_128_window[sf_index][i]; | ||
400 | } else { | ||
401 | width = swb_offset_128_window[sf_index][i+1] - | ||
402 | swb_offset_128_window[sf_index][i]; | ||
403 | } | ||
404 | width *= ics->window_group_length[g]; | ||
405 | ics->sect_sfb_offset[g][sect_sfb++] = offset; | ||
406 | offset += width; | ||
407 | } | ||
408 | ics->sect_sfb_offset[g][sect_sfb] = offset; | ||
409 | } | ||
410 | return 0; | ||
411 | default: | ||
412 | return 1; | ||
413 | } | ||
414 | } | ||
415 | |||
416 | /* iquant() */ | ||
417 | /* output = sign(input)*abs(input)^(4/3) */ | ||
418 | /**/ | ||
419 | static INLINE real_t iquant(int16_t q, const real_t *tab, uint8_t *error) | ||
420 | { | ||
421 | #ifndef BIG_IQ_TABLE | ||
422 | /* For FIXED_POINT the iq_table is prescaled by 3 bits (iq_table[]/8) */ | ||
423 | /* BIG_IQ_TABLE allows you to use the full 8192 value table, if this is not | ||
424 | * defined a 1026 value table and interpolation will be used | ||
425 | */ | ||
426 | static const real_t errcorr[] = { | ||
427 | REAL_CONST(0), REAL_CONST(1.0/8.0), REAL_CONST(2.0/8.0), REAL_CONST(3.0/8.0), | ||
428 | REAL_CONST(4.0/8.0), REAL_CONST(5.0/8.0), REAL_CONST(6.0/8.0), REAL_CONST(7.0/8.0), | ||
429 | REAL_CONST(0) | ||
430 | }; | ||
431 | real_t x1, x2; | ||
432 | |||
433 | int16_t sgn = 1; | ||
434 | |||
435 | if (q < 0) | ||
436 | { | ||
437 | q = -q; | ||
438 | sgn = -1; | ||
439 | } | ||
440 | |||
441 | if (q < IQ_TABLE_SIZE) | ||
442 | { | ||
443 | //#define IQUANT_PRINT | ||
444 | #ifdef IQUANT_PRINT | ||
445 | //printf("0x%.8X\n", sgn * tab[q]); | ||
446 | printf("%d\n", sgn * tab[q]); | ||
447 | #endif | ||
448 | return sgn * tab[q]; | ||
449 | } | ||
450 | |||
451 | if (q >= 8192) | ||
452 | { | ||
453 | *error = 17; | ||
454 | return 0; | ||
455 | } | ||
456 | |||
457 | /* linear interpolation */ | ||
458 | x1 = tab[q>>3]; | ||
459 | x2 = tab[(q>>3) + 1]; | ||
460 | return sgn * 16 * (MUL_R(errcorr[q&7],(x2-x1)) + x1); | ||
461 | #else /* #ifndef BIG_IQ_TABLE */ | ||
462 | if (q < 0) | ||
463 | { | ||
464 | /* tab contains a value for all possible q [0,8192] */ | ||
465 | if (LIKELY(-q < IQ_TABLE_SIZE)) | ||
466 | return -tab[-q]; | ||
467 | |||
468 | *error = 17; | ||
469 | return 0; | ||
470 | } else { | ||
471 | /* tab contains a value for all possible q [0,8192] */ | ||
472 | if (LIKELY(q < IQ_TABLE_SIZE)) | ||
473 | return tab[q]; | ||
474 | |||
475 | *error = 17; | ||
476 | return 0; | ||
477 | } | ||
478 | #endif | ||
479 | } | ||
480 | |||
481 | #ifndef FIXED_POINT | ||
482 | static const real_t pow2sf_tab[] = { | ||
483 | 2.9802322387695313E-008, 5.9604644775390625E-008, 1.1920928955078125E-007, | ||
484 | 2.384185791015625E-007, 4.76837158203125E-007, 9.5367431640625E-007, | ||
485 | 1.9073486328125E-006, 3.814697265625E-006, 7.62939453125E-006, | ||
486 | 1.52587890625E-005, 3.0517578125E-005, 6.103515625E-005, | ||
487 | 0.0001220703125, 0.000244140625, 0.00048828125, | ||
488 | 0.0009765625, 0.001953125, 0.00390625, | ||
489 | 0.0078125, 0.015625, 0.03125, | ||
490 | 0.0625, 0.125, 0.25, | ||
491 | 0.5, 1.0, 2.0, | ||
492 | 4.0, 8.0, 16.0, 32.0, | ||
493 | 64.0, 128.0, 256.0, | ||
494 | 512.0, 1024.0, 2048.0, | ||
495 | 4096.0, 8192.0, 16384.0, | ||
496 | 32768.0, 65536.0, 131072.0, | ||
497 | 262144.0, 524288.0, 1048576.0, | ||
498 | 2097152.0, 4194304.0, 8388608.0, | ||
499 | 16777216.0, 33554432.0, 67108864.0, | ||
500 | 134217728.0, 268435456.0, 536870912.0, | ||
501 | 1073741824.0, 2147483648.0, 4294967296.0, | ||
502 | 8589934592.0, 17179869184.0, 34359738368.0, | ||
503 | 68719476736.0, 137438953472.0, 274877906944.0 | ||
504 | }; | ||
505 | #endif | ||
506 | |||
507 | /* quant_to_spec: perform dequantisation and scaling | ||
508 | * and in case of short block it also does the deinterleaving | ||
509 | */ | ||
510 | /* | ||
511 | For ONLY_LONG_SEQUENCE windows (num_window_groups = 1, | ||
512 | window_group_length[0] = 1) the spectral data is in ascending spectral | ||
513 | order. | ||
514 | For the EIGHT_SHORT_SEQUENCE window, the spectral order depends on the | ||
515 | grouping in the following manner: | ||
516 | - Groups are ordered sequentially | ||
517 | - Within a group, a scalefactor band consists of the spectral data of all | ||
518 | grouped SHORT_WINDOWs for the associated scalefactor window band. To | ||
519 | clarify via example, the length of a group is in the range of one to eight | ||
520 | SHORT_WINDOWs. | ||
521 | - If there are eight groups each with length one (num_window_groups = 8, | ||
522 | window_group_length[0..7] = 1), the result is a sequence of eight spectra, | ||
523 | each in ascending spectral order. | ||
524 | - If there is only one group with length eight (num_window_groups = 1, | ||
525 | window_group_length[0] = 8), the result is that spectral data of all eight | ||
526 | SHORT_WINDOWs is interleaved by scalefactor window bands. | ||
527 | - Within a scalefactor window band, the coefficients are in ascending | ||
528 | spectral order. | ||
529 | */ | ||
530 | static const real_t pow2_table[] ICONST_ATTR = | ||
531 | { | ||
532 | COEF_CONST(1.0), | ||
533 | COEF_CONST(1.1892071150027210667174999705605), /* 2^0.25 */ | ||
534 | COEF_CONST(1.4142135623730950488016887242097), /* 2^0.50 */ | ||
535 | COEF_CONST(1.6817928305074290860622509524664) /* 2^0.75 */ | ||
536 | }; | ||
537 | static uint8_t quant_to_spec(NeAACDecHandle hDecoder, | ||
538 | ic_stream *ics, int16_t *quant_data, | ||
539 | real_t *spec_data, uint16_t frame_len) | ||
540 | { | ||
541 | const real_t *tab = iq_table; | ||
542 | |||
543 | (void)frame_len; | ||
544 | uint8_t g, sfb, win; | ||
545 | uint16_t width, bin, k, gindex, wa, wb; | ||
546 | uint8_t error = 0; /* Init error flag */ | ||
547 | real_t scf; | ||
548 | |||
549 | k = 0; | ||
550 | gindex = 0; | ||
551 | |||
552 | for (g = 0; g < ics->num_window_groups; g++) | ||
553 | { | ||
554 | uint16_t j = 0; | ||
555 | uint16_t gincrease = 0; | ||
556 | uint16_t win_inc = ics->swb_offset[ics->num_swb]; | ||
557 | |||
558 | for (sfb = 0; sfb < ics->num_swb; sfb++) | ||
559 | { | ||
560 | int32_t exp, frac; | ||
561 | |||
562 | width = ics->swb_offset[sfb+1] - ics->swb_offset[sfb]; | ||
563 | |||
564 | /* this could be scalefactor for IS or PNS, those can be negative or bigger then 255 */ | ||
565 | /* just ignore them */ | ||
566 | if (ics->scale_factors[g][sfb] < 0 || ics->scale_factors[g][sfb] > 255) | ||
567 | { | ||
568 | exp = 0; | ||
569 | frac = 0; | ||
570 | } else { | ||
571 | /* ics->scale_factors[g][sfb] must be between 0 and 255 */ | ||
572 | exp = (ics->scale_factors[g][sfb] /* - 100 */) >> 2; | ||
573 | /* frac must always be > 0 */ | ||
574 | frac = (ics->scale_factors[g][sfb] /* - 100 */) & 3; | ||
575 | } | ||
576 | |||
577 | #ifdef FIXED_POINT | ||
578 | exp -= 25; | ||
579 | /* IMDCT pre-scaling */ | ||
580 | if (hDecoder->object_type == LD) | ||
581 | { | ||
582 | exp -= 6 /*9*/; | ||
583 | } else { | ||
584 | if (ics->window_sequence == EIGHT_SHORT_SEQUENCE) | ||
585 | exp -= 4 /*7*/; | ||
586 | else | ||
587 | exp -= 7 /*10*/; | ||
588 | } | ||
589 | #endif | ||
590 | |||
591 | wa = gindex + j; | ||
592 | |||
593 | #ifndef FIXED_POINT | ||
594 | scf = pow2sf_tab[exp/*+25*/] * pow2_table[frac]; | ||
595 | #else | ||
596 | scf = pow2_table[frac]; | ||
597 | #endif | ||
598 | |||
599 | for (win = 0; win < ics->window_group_length[g]; win++) | ||
600 | { | ||
601 | for (bin = 0; bin < width; bin += 4) | ||
602 | { | ||
603 | #ifndef FIXED_POINT | ||
604 | wb = wa + bin; | ||
605 | |||
606 | spec_data[wb+0] = iquant(quant_data[k+0], tab, &error) * scf; | ||
607 | spec_data[wb+1] = iquant(quant_data[k+1], tab, &error) * scf; | ||
608 | spec_data[wb+2] = iquant(quant_data[k+2], tab, &error) * scf; | ||
609 | spec_data[wb+3] = iquant(quant_data[k+3], tab, &error) * scf; | ||
610 | |||
611 | #else | ||
612 | wb = wa + bin; | ||
613 | |||
614 | if (exp>=0) | ||
615 | { | ||
616 | spec_data[wb+0] = MUL_C((iquant(quant_data[k+0], tab, &error)<< exp), scf); | ||
617 | spec_data[wb+1] = MUL_C((iquant(quant_data[k+1], tab, &error)<< exp), scf); | ||
618 | spec_data[wb+2] = MUL_C((iquant(quant_data[k+2], tab, &error)<< exp), scf); | ||
619 | spec_data[wb+3] = MUL_C((iquant(quant_data[k+3], tab, &error)<< exp), scf); | ||
620 | } else { | ||
621 | spec_data[wb+0] = MUL_C((iquant(quant_data[k+0], tab, &error)>>-exp), scf); | ||
622 | spec_data[wb+1] = MUL_C((iquant(quant_data[k+1], tab, &error)>>-exp), scf); | ||
623 | spec_data[wb+2] = MUL_C((iquant(quant_data[k+2], tab, &error)>>-exp), scf); | ||
624 | spec_data[wb+3] = MUL_C((iquant(quant_data[k+3], tab, &error)>>-exp), scf); | ||
625 | } | ||
626 | //#define SCFS_PRINT | ||
627 | #ifdef SCFS_PRINT | ||
628 | printf("%d\n", spec_data[gindex+(win*win_inc)+j+bin+0]); | ||
629 | printf("%d\n", spec_data[gindex+(win*win_inc)+j+bin+1]); | ||
630 | printf("%d\n", spec_data[gindex+(win*win_inc)+j+bin+2]); | ||
631 | printf("%d\n", spec_data[gindex+(win*win_inc)+j+bin+3]); | ||
632 | //printf("0x%.8X\n", spec_data[gindex+(win*win_inc)+j+bin+0]); | ||
633 | //printf("0x%.8X\n", spec_data[gindex+(win*win_inc)+j+bin+1]); | ||
634 | //printf("0x%.8X\n", spec_data[gindex+(win*win_inc)+j+bin+2]); | ||
635 | //printf("0x%.8X\n", spec_data[gindex+(win*win_inc)+j+bin+3]); | ||
636 | #endif | ||
637 | #endif | ||
638 | |||
639 | gincrease += 4; | ||
640 | k += 4; | ||
641 | } | ||
642 | wa += win_inc; | ||
643 | } | ||
644 | j += width; | ||
645 | } | ||
646 | gindex += gincrease; | ||
647 | } | ||
648 | |||
649 | return error; | ||
650 | } | ||
651 | |||
652 | static uint8_t allocate_single_channel(NeAACDecHandle hDecoder, uint8_t channel, | ||
653 | uint8_t output_channels) | ||
654 | { | ||
655 | (void)output_channels; | ||
656 | (void)hDecoder; | ||
657 | (void)channel; | ||
658 | return 0; | ||
659 | } | ||
660 | |||
661 | static uint8_t allocate_channel_pair(NeAACDecHandle hDecoder, | ||
662 | uint8_t channel, uint8_t paired_channel) | ||
663 | { | ||
664 | (void)paired_channel; | ||
665 | (void)hDecoder; | ||
666 | (void)channel; | ||
667 | return 0; | ||
668 | } | ||
669 | |||
670 | uint8_t reconstruct_single_channel(NeAACDecHandle hDecoder, ic_stream *ics, | ||
671 | element *sce, int16_t *spec_data) | ||
672 | { | ||
673 | uint8_t retval, output_channels; | ||
674 | |||
675 | #ifdef PROFILE | ||
676 | int64_t count = faad_get_ts(); | ||
677 | #endif | ||
678 | |||
679 | |||
680 | /* always allocate 2 channels, PS can always "suddenly" turn up */ | ||
681 | #if (defined(PS_DEC) || defined(DRM_PS)) | ||
682 | output_channels = 2; | ||
683 | #else | ||
684 | output_channels = 1; | ||
685 | #endif | ||
686 | |||
687 | if (hDecoder->element_output_channels[hDecoder->fr_ch_ele] == 0) | ||
688 | { | ||
689 | /* element_output_channels not set yet */ | ||
690 | hDecoder->element_output_channels[hDecoder->fr_ch_ele] = output_channels; | ||
691 | } else if (hDecoder->element_output_channels[hDecoder->fr_ch_ele] != output_channels) { | ||
692 | /* element inconsistency */ | ||
693 | return 21; | ||
694 | } | ||
695 | |||
696 | if (hDecoder->element_alloced[hDecoder->fr_ch_ele] == 0) | ||
697 | { | ||
698 | retval = allocate_single_channel(hDecoder, sce->channel, output_channels); | ||
699 | if (retval > 0) | ||
700 | return retval; | ||
701 | |||
702 | hDecoder->element_alloced[hDecoder->fr_ch_ele] = 1; | ||
703 | } | ||
704 | |||
705 | |||
706 | /* dequantisation and scaling */ | ||
707 | retval = quant_to_spec(hDecoder, ics, spec_data, spec_coef1, hDecoder->frameLength); | ||
708 | if (retval > 0) | ||
709 | return retval; | ||
710 | |||
711 | #ifdef PROFILE | ||
712 | count = faad_get_ts() - count; | ||
713 | hDecoder->requant_cycles += count; | ||
714 | #endif | ||
715 | |||
716 | |||
717 | /* pns decoding */ | ||
718 | pns_decode(ics, NULL, spec_coef1, NULL, hDecoder->frameLength, 0, hDecoder->object_type); | ||
719 | |||
720 | #ifdef MAIN_DEC | ||
721 | /* MAIN object type prediction */ | ||
722 | if (hDecoder->object_type == MAIN) | ||
723 | { | ||
724 | /* intra channel prediction */ | ||
725 | ic_prediction(ics, spec_coef1, hDecoder->pred_stat[sce->channel], hDecoder->frameLength, | ||
726 | hDecoder->sf_index); | ||
727 | |||
728 | /* In addition, for scalefactor bands coded by perceptual | ||
729 | noise substitution the predictors belonging to the | ||
730 | corresponding spectral coefficients are reset. | ||
731 | */ | ||
732 | pns_reset_pred_state(ics, hDecoder->pred_stat[sce->channel]); | ||
733 | } | ||
734 | #endif | ||
735 | |||
736 | #ifdef LTP_DEC | ||
737 | if (is_ltp_ot(hDecoder->object_type)) | ||
738 | { | ||
739 | #ifdef LD_DEC | ||
740 | if (hDecoder->object_type == LD) | ||
741 | { | ||
742 | if (ics->ltp.data_present) | ||
743 | { | ||
744 | if (ics->ltp.lag_update) | ||
745 | hDecoder->ltp_lag[sce->channel] = ics->ltp.lag; | ||
746 | } | ||
747 | ics->ltp.lag = hDecoder->ltp_lag[sce->channel]; | ||
748 | } | ||
749 | #endif | ||
750 | |||
751 | /* long term prediction */ | ||
752 | lt_prediction(ics, &(ics->ltp), spec_coef1, hDecoder->lt_pred_stat[sce->channel], hDecoder->fb, | ||
753 | ics->window_shape, hDecoder->window_shape_prev[sce->channel], | ||
754 | hDecoder->sf_index, hDecoder->object_type, hDecoder->frameLength); | ||
755 | } | ||
756 | #endif | ||
757 | |||
758 | /* tns decoding */ | ||
759 | tns_decode_frame(ics, &(ics->tns), hDecoder->sf_index, hDecoder->object_type, | ||
760 | spec_coef1, hDecoder->frameLength); | ||
761 | |||
762 | /* drc decoding */ | ||
763 | if (hDecoder->drc->present) | ||
764 | { | ||
765 | if (!hDecoder->drc->exclude_mask[sce->channel] || !hDecoder->drc->excluded_chns_present) | ||
766 | drc_decode(hDecoder->drc, spec_coef1); | ||
767 | } | ||
768 | |||
769 | /* filter bank */ | ||
770 | #ifdef SSR_DEC | ||
771 | if (hDecoder->object_type != SSR) | ||
772 | { | ||
773 | #endif | ||
774 | ifilter_bank(ics->window_sequence,ics->window_shape, | ||
775 | hDecoder->window_shape_prev[sce->channel],spec_coef1, | ||
776 | hDecoder->time_out[sce->channel], hDecoder->fb_intermed[sce->channel], | ||
777 | hDecoder->object_type, hDecoder->frameLength); | ||
778 | #ifdef SSR_DEC | ||
779 | } else { | ||
780 | ssr_decode(&(ics->ssr), hDecoder->fb, ics->window_sequence, ics->window_shape, | ||
781 | hDecoder->window_shape_prev[sce->channel], spec_coef1, hDecoder->time_out[sce->channel], | ||
782 | hDecoder->ssr_overlap[sce->channel], hDecoder->ipqf_buffer[sce->channel], hDecoder->prev_fmd[sce->channel], | ||
783 | hDecoder->frameLength); | ||
784 | } | ||
785 | #endif | ||
786 | |||
787 | /* save window shape for next frame */ | ||
788 | hDecoder->window_shape_prev[sce->channel] = ics->window_shape; | ||
789 | |||
790 | #ifdef LTP_DEC | ||
791 | if (is_ltp_ot(hDecoder->object_type)) | ||
792 | { | ||
793 | lt_update_state(hDecoder->lt_pred_stat[sce->channel], hDecoder->time_out[sce->channel], | ||
794 | hDecoder->fb_intermed[sce->channel], hDecoder->frameLength, hDecoder->object_type); | ||
795 | } | ||
796 | #endif | ||
797 | |||
798 | #ifdef SBR_DEC | ||
799 | if (((hDecoder->sbr_present_flag == 1) || (hDecoder->forceUpSampling == 1)) | ||
800 | && hDecoder->sbr_alloced[hDecoder->fr_ch_ele]) | ||
801 | { | ||
802 | uint8_t ele = hDecoder->fr_ch_ele; | ||
803 | uint8_t ch = sce->channel; | ||
804 | |||
805 | /* following case can happen when forceUpSampling == 1 */ | ||
806 | if (hDecoder->sbr[ele] == NULL) | ||
807 | { | ||
808 | hDecoder->sbr[ele] = sbrDecodeInit(hDecoder->frameLength, | ||
809 | hDecoder->element_id[ele], ele, | ||
810 | 2*get_sample_rate(hDecoder->sf_index), | ||
811 | hDecoder->downSampledSBR, 0); | ||
812 | #ifndef FAAD_STATIC_ALLOC | ||
813 | if (hDecoder->sbr[ele] == NULL) | ||
814 | { | ||
815 | /* could not allocate memory */ | ||
816 | return 28; | ||
817 | } | ||
818 | #endif | ||
819 | } | ||
820 | |||
821 | if (sce->ics1.window_sequence == EIGHT_SHORT_SEQUENCE) | ||
822 | hDecoder->sbr[ele]->maxAACLine = 8*sce->ics1.swb_offset[max(sce->ics1.max_sfb-1, 0)]; | ||
823 | else | ||
824 | hDecoder->sbr[ele]->maxAACLine = sce->ics1.swb_offset[max(sce->ics1.max_sfb-1, 0)]; | ||
825 | |||
826 | /* check if any of the PS tools is used */ | ||
827 | #if (defined(PS_DEC) || defined(DRM_PS)) | ||
828 | if (hDecoder->ps_used[ele] == 0) | ||
829 | { | ||
830 | #endif | ||
831 | retval = sbrDecodeSingleFrame(hDecoder->sbr[ele], hDecoder->time_out[ch], | ||
832 | hDecoder->postSeekResetFlag, hDecoder->downSampledSBR); | ||
833 | #if (defined(PS_DEC) || defined(DRM_PS)) | ||
834 | } else { | ||
835 | retval = sbrDecodeSingleFramePS(hDecoder->sbr[ele], hDecoder->time_out[ch], | ||
836 | hDecoder->time_out[ch+1], hDecoder->postSeekResetFlag, | ||
837 | hDecoder->downSampledSBR); | ||
838 | } | ||
839 | #endif | ||
840 | if (retval > 0) | ||
841 | return retval; | ||
842 | } else if (((hDecoder->sbr_present_flag == 1) || (hDecoder->forceUpSampling == 1)) | ||
843 | && !hDecoder->sbr_alloced[hDecoder->fr_ch_ele]) | ||
844 | { | ||
845 | return 23; | ||
846 | } | ||
847 | #endif | ||
848 | |||
849 | /* copy L to R when no PS is used */ | ||
850 | #if (defined(PS_DEC) || defined(DRM_PS)) | ||
851 | if ((hDecoder->ps_used[hDecoder->fr_ch_ele] == 0)) | ||
852 | { | ||
853 | uint8_t ele = hDecoder->fr_ch_ele; | ||
854 | uint8_t ch = sce->channel; | ||
855 | uint16_t frame_size = (hDecoder->sbr_alloced[ele]) ? 2 : 1; | ||
856 | frame_size *= hDecoder->frameLength*sizeof(real_t); | ||
857 | |||
858 | memcpy(hDecoder->time_out[ch+1], hDecoder->time_out[ch], frame_size); | ||
859 | } | ||
860 | #endif | ||
861 | |||
862 | return 0; | ||
863 | } | ||
864 | |||
865 | uint8_t reconstruct_channel_pair(NeAACDecHandle hDecoder, ic_stream *ics1, ic_stream *ics2, | ||
866 | element *cpe, int16_t *spec_data1, int16_t *spec_data2) | ||
867 | { | ||
868 | uint8_t retval; | ||
869 | |||
870 | #ifdef PROFILE | ||
871 | int64_t count = faad_get_ts(); | ||
872 | #endif | ||
873 | if (hDecoder->element_alloced[hDecoder->fr_ch_ele] == 0) | ||
874 | { | ||
875 | retval = allocate_channel_pair(hDecoder, cpe->channel, (uint8_t)cpe->paired_channel); | ||
876 | if (retval > 0) | ||
877 | return retval; | ||
878 | |||
879 | hDecoder->element_alloced[hDecoder->fr_ch_ele] = 1; | ||
880 | } | ||
881 | |||
882 | /* dequantisation and scaling */ | ||
883 | retval = quant_to_spec(hDecoder, ics1, spec_data1, spec_coef1, hDecoder->frameLength); | ||
884 | if (retval > 0) | ||
885 | return retval; | ||
886 | retval = quant_to_spec(hDecoder, ics2, spec_data2, spec_coef2, hDecoder->frameLength); | ||
887 | if (retval > 0) | ||
888 | return retval; | ||
889 | |||
890 | #ifdef PROFILE | ||
891 | count = faad_get_ts() - count; | ||
892 | hDecoder->requant_cycles += count; | ||
893 | #endif | ||
894 | |||
895 | |||
896 | /* pns decoding */ | ||
897 | if (ics1->ms_mask_present) | ||
898 | { | ||
899 | pns_decode(ics1, ics2, spec_coef1, spec_coef2, hDecoder->frameLength, 1, hDecoder->object_type); | ||
900 | } else { | ||
901 | pns_decode(ics1, NULL, spec_coef1, NULL, hDecoder->frameLength, 0, hDecoder->object_type); | ||
902 | pns_decode(ics2, NULL, spec_coef2, NULL, hDecoder->frameLength, 0, hDecoder->object_type); | ||
903 | } | ||
904 | |||
905 | /* mid/side decoding */ | ||
906 | ms_decode(ics1, ics2, spec_coef1, spec_coef2, hDecoder->frameLength); | ||
907 | |||
908 | #if 0 | ||
909 | { | ||
910 | int i; | ||
911 | for (i = 0; i < 1024; i++) | ||
912 | { | ||
913 | //printf("%d\n", spec_coef1[i]); | ||
914 | printf("0x%.8X\n", spec_coef1[i]); | ||
915 | } | ||
916 | for (i = 0; i < 1024; i++) | ||
917 | { | ||
918 | //printf("%d\n", spec_coef2[i]); | ||
919 | printf("0x%.8X\n", spec_coef2[i]); | ||
920 | } | ||
921 | } | ||
922 | #endif | ||
923 | |||
924 | /* intensity stereo decoding */ | ||
925 | is_decode(ics1, ics2, spec_coef1, spec_coef2, hDecoder->frameLength); | ||
926 | |||
927 | #if 0 | ||
928 | { | ||
929 | int i; | ||
930 | for (i = 0; i < 1024; i++) | ||
931 | { | ||
932 | printf("%d\n", spec_coef1[i]); | ||
933 | //printf("0x%.8X\n", spec_coef1[i]); | ||
934 | } | ||
935 | for (i = 0; i < 1024; i++) | ||
936 | { | ||
937 | printf("%d\n", spec_coef2[i]); | ||
938 | //printf("0x%.8X\n", spec_coef2[i]); | ||
939 | } | ||
940 | } | ||
941 | #endif | ||
942 | |||
943 | #ifdef MAIN_DEC | ||
944 | /* MAIN object type prediction */ | ||
945 | if (hDecoder->object_type == MAIN) | ||
946 | { | ||
947 | /* intra channel prediction */ | ||
948 | ic_prediction(ics1, spec_coef1, hDecoder->pred_stat[cpe->channel], hDecoder->frameLength, | ||
949 | hDecoder->sf_index); | ||
950 | ic_prediction(ics2, spec_coef2, hDecoder->pred_stat[cpe->paired_channel], hDecoder->frameLength, | ||
951 | hDecoder->sf_index); | ||
952 | |||
953 | /* In addition, for scalefactor bands coded by perceptual | ||
954 | noise substitution the predictors belonging to the | ||
955 | corresponding spectral coefficients are reset. | ||
956 | */ | ||
957 | pns_reset_pred_state(ics1, hDecoder->pred_stat[cpe->channel]); | ||
958 | pns_reset_pred_state(ics2, hDecoder->pred_stat[cpe->paired_channel]); | ||
959 | } | ||
960 | #endif | ||
961 | |||
962 | #ifdef LTP_DEC | ||
963 | if (is_ltp_ot(hDecoder->object_type)) | ||
964 | { | ||
965 | ltp_info *ltp1 = &(ics1->ltp); | ||
966 | ltp_info *ltp2 = (cpe->common_window) ? &(ics2->ltp2) : &(ics2->ltp); | ||
967 | #ifdef LD_DEC | ||
968 | if (hDecoder->object_type == LD) | ||
969 | { | ||
970 | if (ltp1->data_present) | ||
971 | { | ||
972 | if (ltp1->lag_update) | ||
973 | hDecoder->ltp_lag[cpe->channel] = ltp1->lag; | ||
974 | } | ||
975 | ltp1->lag = hDecoder->ltp_lag[cpe->channel]; | ||
976 | if (ltp2->data_present) | ||
977 | { | ||
978 | if (ltp2->lag_update) | ||
979 | hDecoder->ltp_lag[cpe->paired_channel] = ltp2->lag; | ||
980 | } | ||
981 | ltp2->lag = hDecoder->ltp_lag[cpe->paired_channel]; | ||
982 | } | ||
983 | #endif | ||
984 | |||
985 | /* long term prediction */ | ||
986 | lt_prediction(ics1, ltp1, spec_coef1, hDecoder->lt_pred_stat[cpe->channel], hDecoder->fb, | ||
987 | ics1->window_shape, hDecoder->window_shape_prev[cpe->channel], | ||
988 | hDecoder->sf_index, hDecoder->object_type, hDecoder->frameLength); | ||
989 | lt_prediction(ics2, ltp2, spec_coef2, hDecoder->lt_pred_stat[cpe->paired_channel], hDecoder->fb, | ||
990 | ics2->window_shape, hDecoder->window_shape_prev[cpe->paired_channel], | ||
991 | hDecoder->sf_index, hDecoder->object_type, hDecoder->frameLength); | ||
992 | } | ||
993 | #endif | ||
994 | |||
995 | /* tns decoding */ | ||
996 | tns_decode_frame(ics1, &(ics1->tns), hDecoder->sf_index, hDecoder->object_type, | ||
997 | spec_coef1, hDecoder->frameLength); | ||
998 | tns_decode_frame(ics2, &(ics2->tns), hDecoder->sf_index, hDecoder->object_type, | ||
999 | spec_coef2, hDecoder->frameLength); | ||
1000 | |||
1001 | /* drc decoding */ | ||
1002 | if (hDecoder->drc->present) | ||
1003 | { | ||
1004 | if (!hDecoder->drc->exclude_mask[cpe->channel] || !hDecoder->drc->excluded_chns_present) | ||
1005 | drc_decode(hDecoder->drc, spec_coef1); | ||
1006 | if (!hDecoder->drc->exclude_mask[cpe->paired_channel] || !hDecoder->drc->excluded_chns_present) | ||
1007 | drc_decode(hDecoder->drc, spec_coef2); | ||
1008 | } | ||
1009 | |||
1010 | /* filter bank */ | ||
1011 | #ifdef SSR_DEC | ||
1012 | if (hDecoder->object_type != SSR) | ||
1013 | { | ||
1014 | #endif | ||
1015 | ifilter_bank(ics1->window_sequence,ics1->window_shape, | ||
1016 | hDecoder->window_shape_prev[cpe->channel],spec_coef1, | ||
1017 | hDecoder->time_out[cpe->channel], hDecoder->fb_intermed[cpe->channel], | ||
1018 | hDecoder->object_type, hDecoder->frameLength); | ||
1019 | ifilter_bank(ics2->window_sequence,ics2->window_shape, | ||
1020 | hDecoder->window_shape_prev[cpe->paired_channel], spec_coef2, | ||
1021 | hDecoder->time_out[cpe->paired_channel], hDecoder->fb_intermed[cpe->paired_channel], | ||
1022 | hDecoder->object_type, hDecoder->frameLength); | ||
1023 | #ifdef SSR_DEC | ||
1024 | } else { | ||
1025 | ssr_decode(&(ics1->ssr), hDecoder->fb, ics1->window_sequence, ics1->window_shape, | ||
1026 | hDecoder->window_shape_prev[cpe->channel], spec_coef1, hDecoder->time_out[cpe->channel], | ||
1027 | hDecoder->ssr_overlap[cpe->channel], hDecoder->ipqf_buffer[cpe->channel], | ||
1028 | hDecoder->prev_fmd[cpe->channel], hDecoder->frameLength); | ||
1029 | ssr_decode(&(ics2->ssr), hDecoder->fb, ics2->window_sequence, ics2->window_shape, | ||
1030 | hDecoder->window_shape_prev[cpe->paired_channel], spec_coef2, hDecoder->time_out[cpe->paired_channel], | ||
1031 | hDecoder->ssr_overlap[cpe->paired_channel], hDecoder->ipqf_buffer[cpe->paired_channel], | ||
1032 | hDecoder->prev_fmd[cpe->paired_channel], hDecoder->frameLength); | ||
1033 | } | ||
1034 | #endif | ||
1035 | |||
1036 | /* save window shape for next frame */ | ||
1037 | hDecoder->window_shape_prev[cpe->channel] = ics1->window_shape; | ||
1038 | hDecoder->window_shape_prev[cpe->paired_channel] = ics2->window_shape; | ||
1039 | |||
1040 | #ifdef LTP_DEC | ||
1041 | if (is_ltp_ot(hDecoder->object_type)) | ||
1042 | { | ||
1043 | lt_update_state(hDecoder->lt_pred_stat[cpe->channel], hDecoder->time_out[cpe->channel], | ||
1044 | hDecoder->fb_intermed[cpe->channel], hDecoder->frameLength, hDecoder->object_type); | ||
1045 | lt_update_state(hDecoder->lt_pred_stat[cpe->paired_channel], hDecoder->time_out[cpe->paired_channel], | ||
1046 | hDecoder->fb_intermed[cpe->paired_channel], hDecoder->frameLength, hDecoder->object_type); | ||
1047 | } | ||
1048 | #endif | ||
1049 | |||
1050 | #ifdef SBR_DEC | ||
1051 | if (((hDecoder->sbr_present_flag == 1) || (hDecoder->forceUpSampling == 1)) | ||
1052 | && hDecoder->sbr_alloced[hDecoder->fr_ch_ele]) | ||
1053 | { | ||
1054 | uint8_t ele = hDecoder->fr_ch_ele; | ||
1055 | uint8_t ch0 = cpe->channel; | ||
1056 | uint8_t ch1 = cpe->paired_channel; | ||
1057 | |||
1058 | /* following case can happen when forceUpSampling == 1 */ | ||
1059 | if (hDecoder->sbr[ele] == NULL) | ||
1060 | { | ||
1061 | hDecoder->sbr[ele] = sbrDecodeInit(hDecoder->frameLength, | ||
1062 | hDecoder->element_id[ele], ele, | ||
1063 | 2*get_sample_rate(hDecoder->sf_index), | ||
1064 | hDecoder->downSampledSBR, 0); | ||
1065 | #ifndef FAAD_STATIC_ALLOC | ||
1066 | if (hDecoder->sbr[ele] == NULL) | ||
1067 | { | ||
1068 | /* could not allocate memory */ | ||
1069 | return 28; | ||
1070 | } | ||
1071 | #endif | ||
1072 | } | ||
1073 | |||
1074 | if (cpe->ics1.window_sequence == EIGHT_SHORT_SEQUENCE) | ||
1075 | hDecoder->sbr[ele]->maxAACLine = 8*cpe->ics1.swb_offset[max(cpe->ics1.max_sfb-1, 0)]; | ||
1076 | else | ||
1077 | hDecoder->sbr[ele]->maxAACLine = cpe->ics1.swb_offset[max(cpe->ics1.max_sfb-1, 0)]; | ||
1078 | |||
1079 | retval = sbrDecodeCoupleFrame(hDecoder->sbr[ele], | ||
1080 | hDecoder->time_out[ch0], hDecoder->time_out[ch1], | ||
1081 | hDecoder->postSeekResetFlag, hDecoder->downSampledSBR); | ||
1082 | if (retval > 0) | ||
1083 | return retval; | ||
1084 | } else if (((hDecoder->sbr_present_flag == 1) || (hDecoder->forceUpSampling == 1)) | ||
1085 | && !hDecoder->sbr_alloced[hDecoder->fr_ch_ele]) | ||
1086 | { | ||
1087 | return 23; | ||
1088 | } | ||
1089 | #endif | ||
1090 | |||
1091 | return 0; | ||
1092 | } | ||
diff --git a/lib/rbcodec/codecs/libfaad/specrec.h b/lib/rbcodec/codecs/libfaad/specrec.h new file mode 100644 index 0000000000..c3540ac973 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/specrec.h | |||
@@ -0,0 +1,46 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __SPECREC_H__ | ||
29 | #define __SPECREC_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | #include "syntax.h" | ||
36 | |||
37 | uint8_t window_grouping_info(NeAACDecHandle hDecoder, ic_stream *ics); | ||
38 | uint8_t reconstruct_channel_pair(NeAACDecHandle hDecoder, ic_stream *ics1, ic_stream *ics2, | ||
39 | element *cpe, int16_t *spec_data1, int16_t *spec_data2); | ||
40 | uint8_t reconstruct_single_channel(NeAACDecHandle hDecoder, ic_stream *ics, element *sce, | ||
41 | int16_t *spec_data); | ||
42 | |||
43 | #ifdef __cplusplus | ||
44 | } | ||
45 | #endif | ||
46 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/structs.h b/lib/rbcodec/codecs/libfaad/structs.h new file mode 100644 index 0000000000..a6114f412a --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/structs.h | |||
@@ -0,0 +1,473 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __STRUCTS_H__ | ||
29 | #define __STRUCTS_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | //#include "cfft.h" | ||
36 | #ifdef SBR_DEC | ||
37 | #include "sbr_dec.h" | ||
38 | #endif | ||
39 | |||
40 | #define MAX_CHANNELS 2 /* Was 64, but we need to limit RAM usage */ | ||
41 | #define MAX_SYNTAX_ELEMENTS 1 /* Was 48, but we need to limit RAM usage */ | ||
42 | #define MAX_WINDOW_GROUPS 8 | ||
43 | #define MAX_SFB 51 | ||
44 | #define MAX_LTP_SFB 40 | ||
45 | #define MAX_LTP_SFB_S 8 | ||
46 | #define FRAME_LEN 1024 | ||
47 | |||
48 | #define DRC_MAX_CHANNELS 64 /* Should be the same as MAX_CHANNELS, but the DRC code expects 64 */ | ||
49 | |||
50 | /* used to save the prediction state */ | ||
51 | typedef struct { | ||
52 | int16_t r[2]; | ||
53 | int16_t COR[2]; | ||
54 | int16_t VAR[2]; | ||
55 | } pred_state; | ||
56 | |||
57 | typedef struct { | ||
58 | uint16_t N; | ||
59 | //cfft_info *cfft; | ||
60 | complex_t *sincos; | ||
61 | #ifdef PROFILE | ||
62 | int64_t cycles; | ||
63 | int64_t fft_cycles; | ||
64 | #endif | ||
65 | } mdct_info; | ||
66 | |||
67 | typedef struct | ||
68 | { | ||
69 | const real_t *long_window[2]; | ||
70 | const real_t *short_window[2]; | ||
71 | #ifdef LD_DEC | ||
72 | const real_t *ld_window[2]; | ||
73 | #endif | ||
74 | |||
75 | mdct_info *mdct256; | ||
76 | #ifdef LD_DEC | ||
77 | mdct_info *mdct1024; | ||
78 | #endif | ||
79 | mdct_info *mdct2048; | ||
80 | #ifdef PROFILE | ||
81 | int64_t cycles; | ||
82 | #endif | ||
83 | } fb_info; | ||
84 | |||
85 | typedef struct | ||
86 | { | ||
87 | uint8_t present; | ||
88 | |||
89 | uint8_t num_bands; | ||
90 | uint8_t pce_instance_tag; | ||
91 | uint8_t excluded_chns_present; | ||
92 | uint8_t band_top[17]; | ||
93 | uint8_t prog_ref_level; | ||
94 | uint8_t dyn_rng_sgn[17]; | ||
95 | uint8_t dyn_rng_ctl[17]; | ||
96 | uint8_t exclude_mask[DRC_MAX_CHANNELS]; | ||
97 | uint8_t additional_excluded_chns[DRC_MAX_CHANNELS/7]; | ||
98 | |||
99 | real_t ctrl1; | ||
100 | real_t ctrl2; | ||
101 | } drc_info; | ||
102 | |||
103 | typedef struct | ||
104 | { | ||
105 | uint8_t element_instance_tag; | ||
106 | uint8_t object_type; | ||
107 | uint8_t sf_index; | ||
108 | uint8_t num_front_channel_elements; | ||
109 | uint8_t num_side_channel_elements; | ||
110 | uint8_t num_back_channel_elements; | ||
111 | uint8_t num_lfe_channel_elements; | ||
112 | uint8_t num_assoc_data_elements; | ||
113 | uint8_t num_valid_cc_elements; | ||
114 | uint8_t mono_mixdown_present; | ||
115 | uint8_t mono_mixdown_element_number; | ||
116 | uint8_t stereo_mixdown_present; | ||
117 | uint8_t stereo_mixdown_element_number; | ||
118 | uint8_t matrix_mixdown_idx_present; | ||
119 | uint8_t pseudo_surround_enable; | ||
120 | uint8_t matrix_mixdown_idx; | ||
121 | uint8_t front_element_is_cpe[16]; | ||
122 | uint8_t front_element_tag_select[16]; | ||
123 | uint8_t side_element_is_cpe[16]; | ||
124 | uint8_t side_element_tag_select[16]; | ||
125 | uint8_t back_element_is_cpe[16]; | ||
126 | uint8_t back_element_tag_select[16]; | ||
127 | uint8_t lfe_element_tag_select[16]; | ||
128 | uint8_t assoc_data_element_tag_select[16]; | ||
129 | uint8_t cc_element_is_ind_sw[16]; | ||
130 | uint8_t valid_cc_element_tag_select[16]; | ||
131 | |||
132 | uint8_t channels; | ||
133 | |||
134 | uint8_t comment_field_bytes; | ||
135 | uint8_t comment_field_data[257]; | ||
136 | |||
137 | /* extra added values */ | ||
138 | uint8_t num_front_channels; | ||
139 | uint8_t num_side_channels; | ||
140 | uint8_t num_back_channels; | ||
141 | uint8_t num_lfe_channels; | ||
142 | uint8_t sce_channel[16]; | ||
143 | uint8_t cpe_channel[16]; | ||
144 | } program_config; | ||
145 | |||
146 | typedef struct | ||
147 | { | ||
148 | uint16_t syncword; | ||
149 | uint8_t id; | ||
150 | uint8_t layer; | ||
151 | uint8_t protection_absent; | ||
152 | uint8_t profile; | ||
153 | uint8_t sf_index; | ||
154 | uint8_t private_bit; | ||
155 | uint8_t channel_configuration; | ||
156 | uint8_t original; | ||
157 | uint8_t home; | ||
158 | uint8_t emphasis; | ||
159 | uint8_t copyright_identification_bit; | ||
160 | uint8_t copyright_identification_start; | ||
161 | uint16_t aac_frame_length; | ||
162 | uint16_t adts_buffer_fullness; | ||
163 | uint8_t no_raw_data_blocks_in_frame; | ||
164 | uint16_t crc_check; | ||
165 | |||
166 | /* control param */ | ||
167 | uint8_t old_format; | ||
168 | } adts_header; | ||
169 | |||
170 | typedef struct | ||
171 | { | ||
172 | uint8_t copyright_id_present; | ||
173 | int8_t copyright_id[10]; | ||
174 | uint8_t original_copy; | ||
175 | uint8_t home; | ||
176 | uint8_t bitstream_type; | ||
177 | uint32_t bitrate; | ||
178 | uint8_t num_program_config_elements; | ||
179 | uint32_t adif_buffer_fullness; | ||
180 | |||
181 | /* maximum of 16 PCEs */ | ||
182 | program_config pce[16]; | ||
183 | } adif_header; | ||
184 | |||
185 | #ifdef LTP_DEC | ||
186 | typedef struct | ||
187 | { | ||
188 | uint8_t last_band; | ||
189 | uint8_t data_present; | ||
190 | uint16_t lag; | ||
191 | uint8_t lag_update; | ||
192 | uint8_t coef; | ||
193 | uint8_t long_used[MAX_SFB]; | ||
194 | uint8_t short_used[8]; | ||
195 | uint8_t short_lag_present[8]; | ||
196 | uint8_t short_lag[8]; | ||
197 | } ltp_info; | ||
198 | #endif | ||
199 | |||
200 | #ifdef MAIN_DEC | ||
201 | typedef struct | ||
202 | { | ||
203 | uint8_t limit; | ||
204 | uint8_t predictor_reset; | ||
205 | uint8_t predictor_reset_group_number; | ||
206 | uint8_t prediction_used[MAX_SFB]; | ||
207 | } pred_info; | ||
208 | #endif | ||
209 | |||
210 | typedef struct | ||
211 | { | ||
212 | uint8_t number_pulse; | ||
213 | uint8_t pulse_start_sfb; | ||
214 | uint8_t pulse_offset[4]; | ||
215 | uint8_t pulse_amp[4]; | ||
216 | } pulse_info; | ||
217 | |||
218 | typedef struct | ||
219 | { | ||
220 | uint8_t n_filt[8]; | ||
221 | uint8_t coef_res[8]; | ||
222 | uint8_t length[8][4]; | ||
223 | uint8_t order[8][4]; | ||
224 | uint8_t direction[8][4]; | ||
225 | uint8_t coef_compress[8][4]; | ||
226 | uint8_t coef[8][4][32]; | ||
227 | } tns_info; | ||
228 | |||
229 | #ifdef SSR_DEC | ||
230 | typedef struct | ||
231 | { | ||
232 | uint8_t max_band; | ||
233 | |||
234 | uint8_t adjust_num[4][8]; | ||
235 | uint8_t alevcode[4][8][8]; | ||
236 | uint8_t aloccode[4][8][8]; | ||
237 | } ssr_info; | ||
238 | #endif | ||
239 | |||
240 | typedef struct | ||
241 | { | ||
242 | uint8_t max_sfb; | ||
243 | |||
244 | uint8_t num_swb; | ||
245 | uint8_t num_window_groups; | ||
246 | uint8_t num_windows; | ||
247 | uint8_t window_sequence; | ||
248 | uint8_t window_group_length[8]; | ||
249 | uint8_t window_shape; | ||
250 | uint8_t scale_factor_grouping; | ||
251 | uint16_t sect_sfb_offset[8][15*8]; | ||
252 | uint16_t swb_offset[52]; | ||
253 | |||
254 | uint8_t sect_cb[8][15*8]; | ||
255 | uint16_t sect_start[8][15*8]; | ||
256 | uint16_t sect_end[8][15*8]; | ||
257 | uint8_t sfb_cb[8][8*15]; | ||
258 | uint8_t num_sec[8]; /* number of sections in a group */ | ||
259 | |||
260 | uint8_t global_gain; | ||
261 | int16_t scale_factors[8][51]; /* [0..255] */ | ||
262 | |||
263 | uint8_t ms_mask_present; | ||
264 | uint8_t ms_used[MAX_WINDOW_GROUPS][MAX_SFB]; | ||
265 | |||
266 | uint8_t noise_used; | ||
267 | |||
268 | uint8_t pulse_data_present; | ||
269 | uint8_t tns_data_present; | ||
270 | uint8_t gain_control_data_present; | ||
271 | uint8_t predictor_data_present; | ||
272 | |||
273 | pulse_info pul; | ||
274 | tns_info tns; | ||
275 | #ifdef MAIN_DEC | ||
276 | pred_info pred; | ||
277 | #endif | ||
278 | #ifdef LTP_DEC | ||
279 | ltp_info ltp; | ||
280 | ltp_info ltp2; | ||
281 | #endif | ||
282 | #ifdef SSR_DEC | ||
283 | ssr_info ssr; | ||
284 | #endif | ||
285 | |||
286 | #ifdef ERROR_RESILIENCE | ||
287 | /* ER HCR data */ | ||
288 | uint16_t length_of_reordered_spectral_data; | ||
289 | uint8_t length_of_longest_codeword; | ||
290 | /* ER RLVC data */ | ||
291 | uint8_t sf_concealment; | ||
292 | uint8_t rev_global_gain; | ||
293 | uint16_t length_of_rvlc_sf; | ||
294 | uint16_t dpcm_noise_nrg; | ||
295 | uint8_t sf_escapes_present; | ||
296 | uint8_t length_of_rvlc_escapes; | ||
297 | uint16_t dpcm_noise_last_position; | ||
298 | #endif | ||
299 | } ic_stream; /* individual channel stream */ | ||
300 | |||
301 | typedef struct | ||
302 | { | ||
303 | uint8_t channel; | ||
304 | int16_t paired_channel; | ||
305 | |||
306 | uint8_t element_instance_tag; | ||
307 | uint8_t common_window; | ||
308 | |||
309 | ic_stream ics1; | ||
310 | ic_stream ics2; | ||
311 | } element; /* syntax element (SCE, CPE, LFE) */ | ||
312 | |||
313 | typedef struct mp4AudioSpecificConfig | ||
314 | { | ||
315 | /* Audio Specific Info */ | ||
316 | /*uint8_t*/ unsigned char objectTypeIndex; | ||
317 | /*uint8_t*/ unsigned char samplingFrequencyIndex; | ||
318 | /*uint32_t*/ unsigned long samplingFrequency; | ||
319 | /*uint8_t*/ unsigned char channelsConfiguration; | ||
320 | |||
321 | /* GA Specific Info */ | ||
322 | /*uint8_t*/ unsigned char frameLengthFlag; | ||
323 | /*uint8_t*/ unsigned char dependsOnCoreCoder; | ||
324 | /*uint16_t*/ unsigned short coreCoderDelay; | ||
325 | /*uint8_t*/ unsigned char extensionFlag; | ||
326 | /*uint8_t*/ unsigned char aacSectionDataResilienceFlag; | ||
327 | /*uint8_t*/ unsigned char aacScalefactorDataResilienceFlag; | ||
328 | /*uint8_t*/ unsigned char aacSpectralDataResilienceFlag; | ||
329 | /*uint8_t*/ unsigned char epConfig; | ||
330 | |||
331 | /*uint8_t*/ signed char sbr_present_flag; | ||
332 | /*uint8_t*/ char forceUpSampling; | ||
333 | /*uint8_t*/ char downSampledSBR; | ||
334 | } mp4AudioSpecificConfig; | ||
335 | |||
336 | typedef struct NeAACDecConfiguration | ||
337 | { | ||
338 | /*uint8_t*/ unsigned char defObjectType; | ||
339 | /*uint32_t*/ unsigned long defSampleRate; | ||
340 | /*uint8_t*/ unsigned char outputFormat; | ||
341 | /*uint8_t*/ unsigned char downMatrix; | ||
342 | /*uint8_t*/ unsigned char useOldADTSFormat; | ||
343 | /*uint8_t*/ unsigned char dontUpSampleImplicitSBR; | ||
344 | } NeAACDecConfiguration, *NeAACDecConfigurationPtr; | ||
345 | |||
346 | typedef struct NeAACDecFrameInfo | ||
347 | { | ||
348 | /*uint32_t*/ unsigned long bytesconsumed; | ||
349 | /*uint32_t*/ unsigned long samples; | ||
350 | /*uint8_t*/ unsigned char channels; | ||
351 | /*uint8_t*/ unsigned char error; | ||
352 | /*uint32_t*/ unsigned long samplerate; | ||
353 | |||
354 | /* SBR: 0: off, 1: on; normal, 2: on; downsampled */ | ||
355 | /*uint8_t*/ unsigned char sbr; | ||
356 | |||
357 | /* MPEG-4 ObjectType */ | ||
358 | /*uint8_t*/ unsigned char object_type; | ||
359 | |||
360 | /* AAC header type; MP4 will be signalled as RAW also */ | ||
361 | /*uint8_t*/ unsigned char header_type; | ||
362 | |||
363 | /* multichannel configuration */ | ||
364 | /*uint8_t*/ unsigned char num_front_channels; | ||
365 | /*uint8_t*/ unsigned char num_side_channels; | ||
366 | /*uint8_t*/ unsigned char num_back_channels; | ||
367 | /*uint8_t*/ unsigned char num_lfe_channels; | ||
368 | /*uint8_t*/ unsigned char channel_position[MAX_CHANNELS]; | ||
369 | |||
370 | /* PS: 0: off, 1: on */ | ||
371 | /*uint8_t*/ unsigned char ps; | ||
372 | } NeAACDecFrameInfo; | ||
373 | |||
374 | typedef struct | ||
375 | { | ||
376 | uint8_t adts_header_present; | ||
377 | uint8_t adif_header_present; | ||
378 | uint8_t sf_index; | ||
379 | uint8_t object_type; | ||
380 | uint8_t channelConfiguration; | ||
381 | #ifdef ERROR_RESILIENCE | ||
382 | uint8_t aacSectionDataResilienceFlag; | ||
383 | uint8_t aacScalefactorDataResilienceFlag; | ||
384 | uint8_t aacSpectralDataResilienceFlag; | ||
385 | #endif | ||
386 | uint16_t frameLength; | ||
387 | uint8_t postSeekResetFlag; | ||
388 | |||
389 | uint32_t frame; | ||
390 | |||
391 | uint8_t downMatrix; | ||
392 | uint8_t upMatrix; | ||
393 | uint8_t first_syn_ele; | ||
394 | uint8_t has_lfe; | ||
395 | /* number of channels in current frame */ | ||
396 | uint8_t fr_channels; | ||
397 | /* number of elements in current frame */ | ||
398 | uint8_t fr_ch_ele; | ||
399 | |||
400 | /* element_output_channels: | ||
401 | determines the number of channels the element will output | ||
402 | */ | ||
403 | uint8_t element_output_channels[MAX_SYNTAX_ELEMENTS]; | ||
404 | /* element_alloced: | ||
405 | determines whether the data needed for the element is allocated or not | ||
406 | */ | ||
407 | uint8_t element_alloced[MAX_SYNTAX_ELEMENTS]; | ||
408 | /* alloced_channels: | ||
409 | determines the number of channels where output data is allocated for | ||
410 | */ | ||
411 | uint8_t alloced_channels; | ||
412 | |||
413 | uint8_t window_shape_prev[MAX_CHANNELS]; | ||
414 | #ifdef LTP_DEC | ||
415 | uint16_t ltp_lag[MAX_CHANNELS]; | ||
416 | #endif | ||
417 | fb_info *fb; | ||
418 | drc_info *drc; | ||
419 | |||
420 | real_t *time_out[MAX_CHANNELS]; | ||
421 | real_t *fb_intermed[MAX_CHANNELS]; | ||
422 | |||
423 | #ifdef SBR_DEC | ||
424 | int8_t sbr_present_flag; | ||
425 | int8_t forceUpSampling; | ||
426 | int8_t downSampledSBR; | ||
427 | /* determines whether SBR data is allocated for the gives element */ | ||
428 | uint8_t sbr_alloced[MAX_SYNTAX_ELEMENTS]; | ||
429 | |||
430 | sbr_info *sbr[MAX_SYNTAX_ELEMENTS]; | ||
431 | #endif | ||
432 | #if (defined(PS_DEC) || defined(DRM_PS)) | ||
433 | uint8_t ps_used[MAX_SYNTAX_ELEMENTS]; | ||
434 | uint8_t ps_used_global; | ||
435 | #endif | ||
436 | |||
437 | #ifdef SSR_DEC | ||
438 | real_t *ssr_overlap[MAX_CHANNELS]; | ||
439 | real_t *prev_fmd[MAX_CHANNELS]; | ||
440 | real_t ipqf_buffer[MAX_CHANNELS][4][96/4]; | ||
441 | #endif | ||
442 | |||
443 | #ifdef MAIN_DEC | ||
444 | pred_state *pred_stat[MAX_CHANNELS]; | ||
445 | #endif | ||
446 | #ifdef LTP_DEC | ||
447 | int16_t *lt_pred_stat[MAX_CHANNELS]; | ||
448 | #endif | ||
449 | |||
450 | /* Program Config Element */ | ||
451 | uint8_t pce_set; | ||
452 | program_config pce; | ||
453 | uint8_t element_id[MAX_CHANNELS]; | ||
454 | uint8_t internal_channel[MAX_CHANNELS]; | ||
455 | |||
456 | /* Configuration data */ | ||
457 | NeAACDecConfiguration config; | ||
458 | |||
459 | #ifdef PROFILE | ||
460 | int64_t cycles; | ||
461 | int64_t spectral_cycles; | ||
462 | int64_t output_cycles; | ||
463 | int64_t scalefac_cycles; | ||
464 | int64_t requant_cycles; | ||
465 | #endif | ||
466 | } NeAACDecStruct, *NeAACDecHandle; | ||
467 | |||
468 | |||
469 | |||
470 | #ifdef __cplusplus | ||
471 | } | ||
472 | #endif | ||
473 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/syntax.c b/lib/rbcodec/codecs/libfaad/syntax.c new file mode 100644 index 0000000000..d3d7f9e3d4 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/syntax.c | |||
@@ -0,0 +1,2368 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | /* | ||
29 | Reads the AAC bitstream as defined in 14496-3 (MPEG-4 Audio) | ||
30 | */ | ||
31 | |||
32 | #include "common.h" | ||
33 | #include "structs.h" | ||
34 | |||
35 | #include <stdlib.h> | ||
36 | #include <string.h> | ||
37 | |||
38 | #include "decoder.h" | ||
39 | #include "syntax.h" | ||
40 | #include "specrec.h" | ||
41 | #include "huffman.h" | ||
42 | #include "bits.h" | ||
43 | #include "pulse.h" | ||
44 | #include "analysis.h" | ||
45 | #include "drc.h" | ||
46 | #ifdef ERROR_RESILIENCE | ||
47 | #include "rvlc.h" | ||
48 | #endif | ||
49 | #ifdef SBR_DEC | ||
50 | #include "sbr_syntax.h" | ||
51 | #endif | ||
52 | |||
53 | |||
54 | /* static function declarations */ | ||
55 | static void decode_sce_lfe(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo, bitfile *ld, | ||
56 | uint8_t id_syn_ele); | ||
57 | static void decode_cpe(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo, bitfile *ld, | ||
58 | uint8_t id_syn_ele); | ||
59 | static uint8_t single_lfe_channel_element(NeAACDecHandle hDecoder, bitfile *ld, | ||
60 | uint8_t channel, uint8_t *tag); | ||
61 | static uint8_t channel_pair_element(NeAACDecHandle hDecoder, bitfile *ld, | ||
62 | uint8_t channel, uint8_t *tag); | ||
63 | #ifdef COUPLING_DEC | ||
64 | static uint8_t coupling_channel_element(NeAACDecHandle hDecoder, bitfile *ld); | ||
65 | #endif | ||
66 | static uint16_t data_stream_element(NeAACDecHandle hDecoder, bitfile *ld); | ||
67 | static uint8_t program_config_element(program_config *pce, bitfile *ld); | ||
68 | static uint8_t fill_element(NeAACDecHandle hDecoder, bitfile *ld, drc_info *drc | ||
69 | #ifdef SBR_DEC | ||
70 | ,uint8_t sbr_ele | ||
71 | #endif | ||
72 | ); | ||
73 | static uint8_t individual_channel_stream(NeAACDecHandle hDecoder, element *ele, | ||
74 | bitfile *ld, ic_stream *ics, uint8_t scal_flag, | ||
75 | int16_t *spec_data); | ||
76 | static uint8_t ics_info(NeAACDecHandle hDecoder, ic_stream *ics, bitfile *ld, | ||
77 | uint8_t common_window); | ||
78 | static uint8_t section_data(NeAACDecHandle hDecoder, ic_stream *ics, bitfile *ld); | ||
79 | static uint8_t scale_factor_data(NeAACDecHandle hDecoder, ic_stream *ics, bitfile *ld); | ||
80 | #ifdef SSR_DEC | ||
81 | static void gain_control_data(bitfile *ld, ic_stream *ics); | ||
82 | #endif | ||
83 | static uint8_t spectral_data(NeAACDecHandle hDecoder, ic_stream *ics, bitfile *ld, | ||
84 | int16_t *spectral_data); | ||
85 | static uint16_t extension_payload(bitfile *ld, drc_info *drc, uint16_t count); | ||
86 | static uint8_t pulse_data(ic_stream *ics, pulse_info *pul, bitfile *ld); | ||
87 | static void tns_data(ic_stream *ics, tns_info *tns, bitfile *ld); | ||
88 | #ifdef LTP_DEC | ||
89 | static uint8_t ltp_data(NeAACDecHandle hDecoder, ic_stream *ics, ltp_info *ltp, bitfile *ld); | ||
90 | #endif | ||
91 | static uint8_t adts_fixed_header(adts_header *adts, bitfile *ld); | ||
92 | static void adts_variable_header(adts_header *adts, bitfile *ld); | ||
93 | static void adts_error_check(adts_header *adts, bitfile *ld); | ||
94 | static uint8_t dynamic_range_info(bitfile *ld, drc_info *drc); | ||
95 | static uint8_t excluded_channels(bitfile *ld, drc_info *drc); | ||
96 | #ifdef SCALABLE_DEC | ||
97 | static int8_t aac_scalable_main_header(NeAACDecHandle hDecoder, ic_stream *ics1, ic_stream *ics2, | ||
98 | bitfile *ld, uint8_t this_layer_stereo); | ||
99 | #endif | ||
100 | |||
101 | |||
102 | /* Table 4.4.1 */ | ||
103 | int8_t GASpecificConfig(bitfile *ld, mp4AudioSpecificConfig *mp4ASC, | ||
104 | program_config *pce_out) | ||
105 | { | ||
106 | program_config pce; | ||
107 | |||
108 | /* 1024 or 960 */ | ||
109 | mp4ASC->frameLengthFlag = faad_get1bit(ld | ||
110 | DEBUGVAR(1,138,"GASpecificConfig(): FrameLengthFlag")); | ||
111 | #ifndef ALLOW_SMALL_FRAMELENGTH | ||
112 | if (mp4ASC->frameLengthFlag == 1) | ||
113 | return -3; | ||
114 | #endif | ||
115 | |||
116 | mp4ASC->dependsOnCoreCoder = faad_get1bit(ld | ||
117 | DEBUGVAR(1,139,"GASpecificConfig(): DependsOnCoreCoder")); | ||
118 | if (mp4ASC->dependsOnCoreCoder == 1) | ||
119 | { | ||
120 | mp4ASC->coreCoderDelay = (uint16_t)faad_getbits(ld, 14 | ||
121 | DEBUGVAR(1,140,"GASpecificConfig(): CoreCoderDelay")); | ||
122 | } | ||
123 | |||
124 | mp4ASC->extensionFlag = faad_get1bit(ld DEBUGVAR(1,141,"GASpecificConfig(): ExtensionFlag")); | ||
125 | if (mp4ASC->channelsConfiguration == 0) | ||
126 | { | ||
127 | if (program_config_element(&pce, ld)) | ||
128 | return -3; | ||
129 | //mp4ASC->channelsConfiguration = pce.channels; | ||
130 | |||
131 | if (pce_out != NULL) | ||
132 | memcpy(pce_out, &pce, sizeof(program_config)); | ||
133 | |||
134 | /* | ||
135 | if (pce.num_valid_cc_elements) | ||
136 | return -3; | ||
137 | */ | ||
138 | } | ||
139 | |||
140 | #ifdef ERROR_RESILIENCE | ||
141 | if (mp4ASC->extensionFlag == 1) | ||
142 | { | ||
143 | /* Error resilience not supported yet */ | ||
144 | if (mp4ASC->objectTypeIndex >= ER_OBJECT_START) | ||
145 | { | ||
146 | mp4ASC->aacSectionDataResilienceFlag = faad_get1bit(ld | ||
147 | DEBUGVAR(1,144,"GASpecificConfig(): aacSectionDataResilienceFlag")); | ||
148 | mp4ASC->aacScalefactorDataResilienceFlag = faad_get1bit(ld | ||
149 | DEBUGVAR(1,145,"GASpecificConfig(): aacScalefactorDataResilienceFlag")); | ||
150 | mp4ASC->aacSpectralDataResilienceFlag = faad_get1bit(ld | ||
151 | DEBUGVAR(1,146,"GASpecificConfig(): aacSpectralDataResilienceFlag")); | ||
152 | |||
153 | /* 1 bit: extensionFlag3 */ | ||
154 | } | ||
155 | } | ||
156 | #endif | ||
157 | |||
158 | return 0; | ||
159 | } | ||
160 | |||
161 | /* Table 4.4.2 */ | ||
162 | /* An MPEG-4 Audio decoder is only required to follow the Program | ||
163 | Configuration Element in GASpecificConfig(). The decoder shall ignore | ||
164 | any Program Configuration Elements that may occur in raw data blocks. | ||
165 | PCEs transmitted in raw data blocks cannot be used to convey decoder | ||
166 | configuration information. | ||
167 | */ | ||
168 | static uint8_t program_config_element(program_config *pce, bitfile *ld) | ||
169 | { | ||
170 | uint8_t i; | ||
171 | |||
172 | memset(pce, 0, sizeof(program_config)); | ||
173 | |||
174 | pce->channels = 0; | ||
175 | |||
176 | pce->element_instance_tag = (uint8_t)faad_getbits(ld, 4 | ||
177 | DEBUGVAR(1,10,"program_config_element(): element_instance_tag")); | ||
178 | |||
179 | pce->object_type = (uint8_t)faad_getbits(ld, 2 | ||
180 | DEBUGVAR(1,11,"program_config_element(): object_type")); | ||
181 | pce->sf_index = (uint8_t)faad_getbits(ld, 4 | ||
182 | DEBUGVAR(1,12,"program_config_element(): sf_index")); | ||
183 | pce->num_front_channel_elements = (uint8_t)faad_getbits(ld, 4 | ||
184 | DEBUGVAR(1,13,"program_config_element(): num_front_channel_elements")); | ||
185 | pce->num_side_channel_elements = (uint8_t)faad_getbits(ld, 4 | ||
186 | DEBUGVAR(1,14,"program_config_element(): num_side_channel_elements")); | ||
187 | pce->num_back_channel_elements = (uint8_t)faad_getbits(ld, 4 | ||
188 | DEBUGVAR(1,15,"program_config_element(): num_back_channel_elements")); | ||
189 | pce->num_lfe_channel_elements = (uint8_t)faad_getbits(ld, 2 | ||
190 | DEBUGVAR(1,16,"program_config_element(): num_lfe_channel_elements")); | ||
191 | pce->num_assoc_data_elements = (uint8_t)faad_getbits(ld, 3 | ||
192 | DEBUGVAR(1,17,"program_config_element(): num_assoc_data_elements")); | ||
193 | pce->num_valid_cc_elements = (uint8_t)faad_getbits(ld, 4 | ||
194 | DEBUGVAR(1,18,"program_config_element(): num_valid_cc_elements")); | ||
195 | |||
196 | pce->mono_mixdown_present = faad_get1bit(ld | ||
197 | DEBUGVAR(1,19,"program_config_element(): mono_mixdown_present")); | ||
198 | if (pce->mono_mixdown_present == 1) | ||
199 | { | ||
200 | pce->mono_mixdown_element_number = (uint8_t)faad_getbits(ld, 4 | ||
201 | DEBUGVAR(1,20,"program_config_element(): mono_mixdown_element_number")); | ||
202 | } | ||
203 | |||
204 | pce->stereo_mixdown_present = faad_get1bit(ld | ||
205 | DEBUGVAR(1,21,"program_config_element(): stereo_mixdown_present")); | ||
206 | if (pce->stereo_mixdown_present == 1) | ||
207 | { | ||
208 | pce->stereo_mixdown_element_number = (uint8_t)faad_getbits(ld, 4 | ||
209 | DEBUGVAR(1,22,"program_config_element(): stereo_mixdown_element_number")); | ||
210 | } | ||
211 | |||
212 | pce->matrix_mixdown_idx_present = faad_get1bit(ld | ||
213 | DEBUGVAR(1,23,"program_config_element(): matrix_mixdown_idx_present")); | ||
214 | if (pce->matrix_mixdown_idx_present == 1) | ||
215 | { | ||
216 | pce->matrix_mixdown_idx = (uint8_t)faad_getbits(ld, 2 | ||
217 | DEBUGVAR(1,24,"program_config_element(): matrix_mixdown_idx")); | ||
218 | pce->pseudo_surround_enable = faad_get1bit(ld | ||
219 | DEBUGVAR(1,25,"program_config_element(): pseudo_surround_enable")); | ||
220 | } | ||
221 | |||
222 | for (i = 0; i < pce->num_front_channel_elements; i++) | ||
223 | { | ||
224 | pce->front_element_is_cpe[i] = faad_get1bit(ld | ||
225 | DEBUGVAR(1,26,"program_config_element(): front_element_is_cpe")); | ||
226 | pce->front_element_tag_select[i] = (uint8_t)faad_getbits(ld, 4 | ||
227 | DEBUGVAR(1,27,"program_config_element(): front_element_tag_select")); | ||
228 | |||
229 | if (pce->front_element_is_cpe[i] & 1) | ||
230 | { | ||
231 | pce->cpe_channel[pce->front_element_tag_select[i]] = pce->channels; | ||
232 | pce->num_front_channels += 2; | ||
233 | pce->channels += 2; | ||
234 | } else { | ||
235 | pce->sce_channel[pce->front_element_tag_select[i]] = pce->channels; | ||
236 | pce->num_front_channels++; | ||
237 | pce->channels++; | ||
238 | } | ||
239 | } | ||
240 | |||
241 | for (i = 0; i < pce->num_side_channel_elements; i++) | ||
242 | { | ||
243 | pce->side_element_is_cpe[i] = faad_get1bit(ld | ||
244 | DEBUGVAR(1,28,"program_config_element(): side_element_is_cpe")); | ||
245 | pce->side_element_tag_select[i] = (uint8_t)faad_getbits(ld, 4 | ||
246 | DEBUGVAR(1,29,"program_config_element(): side_element_tag_select")); | ||
247 | |||
248 | if (pce->side_element_is_cpe[i] & 1) | ||
249 | { | ||
250 | pce->cpe_channel[pce->side_element_tag_select[i]] = pce->channels; | ||
251 | pce->num_side_channels += 2; | ||
252 | pce->channels += 2; | ||
253 | } else { | ||
254 | pce->sce_channel[pce->side_element_tag_select[i]] = pce->channels; | ||
255 | pce->num_side_channels++; | ||
256 | pce->channels++; | ||
257 | } | ||
258 | } | ||
259 | |||
260 | for (i = 0; i < pce->num_back_channel_elements; i++) | ||
261 | { | ||
262 | pce->back_element_is_cpe[i] = faad_get1bit(ld | ||
263 | DEBUGVAR(1,30,"program_config_element(): back_element_is_cpe")); | ||
264 | pce->back_element_tag_select[i] = (uint8_t)faad_getbits(ld, 4 | ||
265 | DEBUGVAR(1,31,"program_config_element(): back_element_tag_select")); | ||
266 | |||
267 | if (pce->back_element_is_cpe[i] & 1) | ||
268 | { | ||
269 | pce->cpe_channel[pce->back_element_tag_select[i]] = pce->channels; | ||
270 | pce->channels += 2; | ||
271 | pce->num_back_channels += 2; | ||
272 | } else { | ||
273 | pce->sce_channel[pce->back_element_tag_select[i]] = pce->channels; | ||
274 | pce->num_back_channels++; | ||
275 | pce->channels++; | ||
276 | } | ||
277 | } | ||
278 | |||
279 | for (i = 0; i < pce->num_lfe_channel_elements; i++) | ||
280 | { | ||
281 | pce->lfe_element_tag_select[i] = (uint8_t)faad_getbits(ld, 4 | ||
282 | DEBUGVAR(1,32,"program_config_element(): lfe_element_tag_select")); | ||
283 | |||
284 | pce->sce_channel[pce->lfe_element_tag_select[i]] = pce->channels; | ||
285 | pce->num_lfe_channels++; | ||
286 | pce->channels++; | ||
287 | } | ||
288 | |||
289 | for (i = 0; i < pce->num_assoc_data_elements; i++) | ||
290 | pce->assoc_data_element_tag_select[i] = (uint8_t)faad_getbits(ld, 4 | ||
291 | DEBUGVAR(1,33,"program_config_element(): assoc_data_element_tag_select")); | ||
292 | |||
293 | for (i = 0; i < pce->num_valid_cc_elements; i++) | ||
294 | { | ||
295 | pce->cc_element_is_ind_sw[i] = faad_get1bit(ld | ||
296 | DEBUGVAR(1,34,"program_config_element(): cc_element_is_ind_sw")); | ||
297 | pce->valid_cc_element_tag_select[i] = (uint8_t)faad_getbits(ld, 4 | ||
298 | DEBUGVAR(1,35,"program_config_element(): valid_cc_element_tag_select")); | ||
299 | } | ||
300 | |||
301 | faad_byte_align(ld); | ||
302 | |||
303 | pce->comment_field_bytes = (uint8_t)faad_getbits(ld, 8 | ||
304 | DEBUGVAR(1,36,"program_config_element(): comment_field_bytes")); | ||
305 | |||
306 | for (i = 0; i < pce->comment_field_bytes; i++) | ||
307 | { | ||
308 | pce->comment_field_data[i] = (uint8_t)faad_getbits(ld, 8 | ||
309 | DEBUGVAR(1,37,"program_config_element(): comment_field_data")); | ||
310 | } | ||
311 | pce->comment_field_data[i] = 0; | ||
312 | |||
313 | if (pce->channels > MAX_CHANNELS) | ||
314 | return 22; | ||
315 | |||
316 | return 0; | ||
317 | } | ||
318 | |||
319 | static void decode_sce_lfe(NeAACDecHandle hDecoder, | ||
320 | NeAACDecFrameInfo *hInfo, bitfile *ld, | ||
321 | uint8_t id_syn_ele) | ||
322 | { | ||
323 | uint8_t channels = hDecoder->fr_channels; | ||
324 | uint8_t tag = 0; | ||
325 | |||
326 | if (channels+1 > MAX_CHANNELS) | ||
327 | { | ||
328 | hInfo->error = 12; | ||
329 | return; | ||
330 | } | ||
331 | if (hDecoder->fr_ch_ele+1 > MAX_SYNTAX_ELEMENTS) | ||
332 | { | ||
333 | hInfo->error = 13; | ||
334 | return; | ||
335 | } | ||
336 | |||
337 | /* for SCE hDecoder->element_output_channels[] is not set here because this | ||
338 | can become 2 when some form of Parametric Stereo coding is used | ||
339 | */ | ||
340 | |||
341 | /* save the syntax element id */ | ||
342 | hDecoder->element_id[hDecoder->fr_ch_ele] = id_syn_ele; | ||
343 | |||
344 | /* decode the element */ | ||
345 | hInfo->error = single_lfe_channel_element(hDecoder, ld, channels, &tag); | ||
346 | |||
347 | /* map output channels position to internal data channels */ | ||
348 | if (hDecoder->element_output_channels[hDecoder->fr_ch_ele] == 2) | ||
349 | { | ||
350 | /* this might be faulty when pce_set is true */ | ||
351 | hDecoder->internal_channel[channels] = channels; | ||
352 | hDecoder->internal_channel[channels+1] = channels+1; | ||
353 | } else { | ||
354 | if (hDecoder->pce_set) | ||
355 | hDecoder->internal_channel[hDecoder->pce.sce_channel[tag]] = channels; | ||
356 | else | ||
357 | hDecoder->internal_channel[channels] = channels; | ||
358 | } | ||
359 | |||
360 | hDecoder->fr_channels += hDecoder->element_output_channels[hDecoder->fr_ch_ele]; | ||
361 | hDecoder->fr_ch_ele++; | ||
362 | } | ||
363 | |||
364 | static void decode_cpe(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo, bitfile *ld, | ||
365 | uint8_t id_syn_ele) | ||
366 | { | ||
367 | uint8_t channels = hDecoder->fr_channels; | ||
368 | uint8_t tag = 0; | ||
369 | |||
370 | if (channels+2 > MAX_CHANNELS) | ||
371 | { | ||
372 | hInfo->error = 12; | ||
373 | return; | ||
374 | } | ||
375 | if (hDecoder->fr_ch_ele+1 > MAX_SYNTAX_ELEMENTS) | ||
376 | { | ||
377 | hInfo->error = 13; | ||
378 | return; | ||
379 | } | ||
380 | |||
381 | /* for CPE the number of output channels is always 2 */ | ||
382 | if (hDecoder->element_output_channels[hDecoder->fr_ch_ele] == 0) | ||
383 | { | ||
384 | /* element_output_channels not set yet */ | ||
385 | hDecoder->element_output_channels[hDecoder->fr_ch_ele] = 2; | ||
386 | } else if (hDecoder->element_output_channels[hDecoder->fr_ch_ele] != 2) { | ||
387 | /* element inconsistency */ | ||
388 | hInfo->error = 21; | ||
389 | return; | ||
390 | } | ||
391 | |||
392 | /* save the syntax element id */ | ||
393 | hDecoder->element_id[hDecoder->fr_ch_ele] = id_syn_ele; | ||
394 | |||
395 | /* decode the element */ | ||
396 | hInfo->error = channel_pair_element(hDecoder, ld, channels, &tag); | ||
397 | |||
398 | /* map output channel position to internal data channels */ | ||
399 | if (hDecoder->pce_set) | ||
400 | { | ||
401 | hDecoder->internal_channel[hDecoder->pce.cpe_channel[tag]] = channels; | ||
402 | hDecoder->internal_channel[hDecoder->pce.cpe_channel[tag]+1] = channels+1; | ||
403 | } else { | ||
404 | hDecoder->internal_channel[channels] = channels; | ||
405 | hDecoder->internal_channel[channels+1] = channels+1; | ||
406 | } | ||
407 | |||
408 | hDecoder->fr_channels += 2; | ||
409 | hDecoder->fr_ch_ele++; | ||
410 | } | ||
411 | |||
412 | void raw_data_block(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo, | ||
413 | bitfile *ld, program_config *pce, drc_info *drc) | ||
414 | { | ||
415 | uint8_t id_syn_ele; | ||
416 | |||
417 | hDecoder->fr_channels = 0; | ||
418 | hDecoder->fr_ch_ele = 0; | ||
419 | hDecoder->first_syn_ele = 25; | ||
420 | hDecoder->has_lfe = 0; | ||
421 | |||
422 | #ifdef ERROR_RESILIENCE | ||
423 | if (hDecoder->object_type < ER_OBJECT_START) | ||
424 | { | ||
425 | #endif | ||
426 | /* Table 4.4.3: raw_data_block() */ | ||
427 | while ((id_syn_ele = (uint8_t)faad_getbits(ld, LEN_SE_ID | ||
428 | DEBUGVAR(1,4,"NeAACDecDecode(): id_syn_ele"))) != ID_END) | ||
429 | { | ||
430 | switch (id_syn_ele) { | ||
431 | case ID_SCE: | ||
432 | if (hDecoder->first_syn_ele == 25) hDecoder->first_syn_ele = id_syn_ele; | ||
433 | decode_sce_lfe(hDecoder, hInfo, ld, id_syn_ele); | ||
434 | if (hInfo->error > 0) | ||
435 | return; | ||
436 | break; | ||
437 | case ID_CPE: | ||
438 | if (hDecoder->first_syn_ele == 25) hDecoder->first_syn_ele = id_syn_ele; | ||
439 | decode_cpe(hDecoder, hInfo, ld, id_syn_ele); | ||
440 | if (hInfo->error > 0) | ||
441 | return; | ||
442 | break; | ||
443 | case ID_LFE: | ||
444 | hDecoder->has_lfe++; | ||
445 | decode_sce_lfe(hDecoder, hInfo, ld, id_syn_ele); | ||
446 | if (hInfo->error > 0) | ||
447 | return; | ||
448 | break; | ||
449 | case ID_CCE: /* not implemented yet, but skip the bits */ | ||
450 | #ifdef COUPLING_DEC | ||
451 | hInfo->error = coupling_channel_element(hDecoder, ld); | ||
452 | #else | ||
453 | hInfo->error = 6; | ||
454 | #endif | ||
455 | if (hInfo->error > 0) | ||
456 | return; | ||
457 | break; | ||
458 | case ID_DSE: | ||
459 | data_stream_element(hDecoder, ld); | ||
460 | break; | ||
461 | case ID_PCE: | ||
462 | /* 14496-4: 5.6.4.1.2.1.3: */ | ||
463 | /* program_configuration_element()'s in access units shall be ignored */ | ||
464 | program_config_element(pce, ld); | ||
465 | //if ((hInfo->error = program_config_element(pce, ld)) > 0) | ||
466 | // return; | ||
467 | //hDecoder->pce_set = 1; | ||
468 | break; | ||
469 | case ID_FIL: | ||
470 | /* one sbr_info describes a channel_element not a channel! */ | ||
471 | /* if we encounter SBR data here: error */ | ||
472 | /* SBR data will be read directly in the SCE/LFE/CPE element */ | ||
473 | if ((hInfo->error = fill_element(hDecoder, ld, drc | ||
474 | #ifdef SBR_DEC | ||
475 | , INVALID_SBR_ELEMENT | ||
476 | #endif | ||
477 | )) > 0) | ||
478 | return; | ||
479 | break; | ||
480 | } | ||
481 | } | ||
482 | #ifdef ERROR_RESILIENCE | ||
483 | } else { | ||
484 | /* Table 262: er_raw_data_block() */ | ||
485 | switch (hDecoder->channelConfiguration) | ||
486 | { | ||
487 | case 1: | ||
488 | decode_sce_lfe(hDecoder, hInfo, ld, ID_SCE); | ||
489 | if (hInfo->error > 0) | ||
490 | return; | ||
491 | break; | ||
492 | case 2: | ||
493 | decode_cpe(hDecoder, hInfo, ld, ID_CPE); | ||
494 | if (hInfo->error > 0) | ||
495 | return; | ||
496 | break; | ||
497 | case 3: | ||
498 | decode_sce_lfe(hDecoder, hInfo, ld, ID_SCE); | ||
499 | decode_cpe(hDecoder, hInfo, ld, ID_CPE); | ||
500 | if (hInfo->error > 0) | ||
501 | return; | ||
502 | break; | ||
503 | case 4: | ||
504 | decode_sce_lfe(hDecoder, hInfo, ld, ID_SCE); | ||
505 | decode_cpe(hDecoder, hInfo, ld, ID_CPE); | ||
506 | decode_sce_lfe(hDecoder, hInfo, ld, ID_SCE); | ||
507 | if (hInfo->error > 0) | ||
508 | return; | ||
509 | break; | ||
510 | case 5: | ||
511 | decode_sce_lfe(hDecoder, hInfo, ld, ID_SCE); | ||
512 | decode_cpe(hDecoder, hInfo, ld, ID_CPE); | ||
513 | decode_cpe(hDecoder, hInfo, ld, ID_CPE); | ||
514 | if (hInfo->error > 0) | ||
515 | return; | ||
516 | break; | ||
517 | case 6: | ||
518 | decode_sce_lfe(hDecoder, hInfo, ld, ID_SCE); | ||
519 | decode_cpe(hDecoder, hInfo, ld, ID_CPE); | ||
520 | decode_cpe(hDecoder, hInfo, ld, ID_CPE); | ||
521 | decode_sce_lfe(hDecoder, hInfo, ld, ID_LFE); | ||
522 | if (hInfo->error > 0) | ||
523 | return; | ||
524 | break; | ||
525 | case 7: /* 8 channels */ | ||
526 | decode_sce_lfe(hDecoder, hInfo, ld, ID_SCE); | ||
527 | decode_cpe(hDecoder, hInfo, ld, ID_CPE); | ||
528 | decode_cpe(hDecoder, hInfo, ld, ID_CPE); | ||
529 | decode_cpe(hDecoder, hInfo, ld, ID_CPE); | ||
530 | decode_sce_lfe(hDecoder, hInfo, ld, ID_LFE); | ||
531 | if (hInfo->error > 0) | ||
532 | return; | ||
533 | break; | ||
534 | default: | ||
535 | hInfo->error = 7; | ||
536 | return; | ||
537 | } | ||
538 | #if 0 | ||
539 | cnt = bits_to_decode() / 8; | ||
540 | while (cnt >= 1) | ||
541 | { | ||
542 | cnt -= extension_payload(cnt); | ||
543 | } | ||
544 | #endif | ||
545 | } | ||
546 | #endif | ||
547 | |||
548 | /* new in corrigendum 14496-3:2002 */ | ||
549 | #ifdef DRM | ||
550 | if (hDecoder->object_type != DRM_ER_LC) | ||
551 | #endif | ||
552 | { | ||
553 | faad_byte_align(ld); | ||
554 | } | ||
555 | |||
556 | return; | ||
557 | } | ||
558 | |||
559 | /* Table 4.4.4 and */ | ||
560 | /* Table 4.4.9 */ | ||
561 | int16_t spec_data[FRAME_LEN] MEM_ALIGN_ATTR = {0}; | ||
562 | element sce; | ||
563 | static uint8_t single_lfe_channel_element(NeAACDecHandle hDecoder, bitfile *ld, | ||
564 | uint8_t channel, uint8_t *tag) | ||
565 | { | ||
566 | uint8_t retval = 0; | ||
567 | ic_stream *ics = &(sce.ics1); | ||
568 | |||
569 | memset(spec_data,0,sizeof(spec_data)); | ||
570 | memset(&sce,0,sizeof(sce)); | ||
571 | sce.element_instance_tag = (uint8_t)faad_getbits(ld, LEN_TAG | ||
572 | DEBUGVAR(1,38,"single_lfe_channel_element(): element_instance_tag")); | ||
573 | |||
574 | *tag = sce.element_instance_tag; | ||
575 | sce.channel = channel; | ||
576 | sce.paired_channel = -1; | ||
577 | |||
578 | retval = individual_channel_stream(hDecoder, &sce, ld, ics, 0, spec_data); | ||
579 | if (retval > 0) | ||
580 | return retval; | ||
581 | |||
582 | #ifdef SBR_DEC | ||
583 | /* check if next bitstream element is a fill element */ | ||
584 | /* if so, read it now so SBR decoding can be done in case of a file with SBR */ | ||
585 | if (faad_showbits(ld, LEN_SE_ID) == ID_FIL) | ||
586 | { | ||
587 | faad_flushbits(ld, LEN_SE_ID); | ||
588 | |||
589 | /* one sbr_info describes a channel_element not a channel! */ | ||
590 | if ((retval = fill_element(hDecoder, ld, hDecoder->drc, hDecoder->fr_ch_ele)) > 0) | ||
591 | { | ||
592 | return retval; | ||
593 | } | ||
594 | } | ||
595 | #endif | ||
596 | |||
597 | /* noiseless coding is done, spectral reconstruction is done now */ | ||
598 | retval = reconstruct_single_channel(hDecoder, ics, &sce, spec_data); | ||
599 | if (retval > 0) | ||
600 | return retval; | ||
601 | |||
602 | return 0; | ||
603 | } | ||
604 | |||
605 | /* Table 4.4.5 */ | ||
606 | |||
607 | int16_t spec_data1[FRAME_LEN] IBSS_ATTR MEM_ALIGN_ATTR; | ||
608 | int16_t spec_data2[FRAME_LEN] IBSS_ATTR MEM_ALIGN_ATTR; | ||
609 | element cpe; | ||
610 | static uint8_t channel_pair_element(NeAACDecHandle hDecoder, bitfile *ld, | ||
611 | uint8_t channels, uint8_t *tag) | ||
612 | { | ||
613 | ic_stream *ics1 = &(cpe.ics1); | ||
614 | ic_stream *ics2 = &(cpe.ics2); | ||
615 | uint8_t result; | ||
616 | |||
617 | memset(spec_data1,0,sizeof(spec_data1)); | ||
618 | memset(spec_data2,0,sizeof(spec_data2)); | ||
619 | memset(&cpe,0,sizeof(cpe)); | ||
620 | cpe.channel = channels; | ||
621 | cpe.paired_channel = channels+1; | ||
622 | |||
623 | cpe.element_instance_tag = (uint8_t)faad_getbits(ld, LEN_TAG | ||
624 | DEBUGVAR(1,39,"channel_pair_element(): element_instance_tag")); | ||
625 | *tag = cpe.element_instance_tag; | ||
626 | |||
627 | if ((cpe.common_window = faad_get1bit(ld | ||
628 | DEBUGVAR(1,40,"channel_pair_element(): common_window"))) & 1) | ||
629 | { | ||
630 | /* both channels have common ics information */ | ||
631 | if ((result = ics_info(hDecoder, ics1, ld, cpe.common_window)) > 0) | ||
632 | return result; | ||
633 | |||
634 | ics1->ms_mask_present = (uint8_t)faad_getbits(ld, 2 | ||
635 | DEBUGVAR(1,41,"channel_pair_element(): ms_mask_present")); | ||
636 | if (ics1->ms_mask_present == 1) | ||
637 | { | ||
638 | uint8_t g, sfb; | ||
639 | for (g = 0; g < ics1->num_window_groups; g++) | ||
640 | { | ||
641 | for (sfb = 0; sfb < ics1->max_sfb; sfb++) | ||
642 | { | ||
643 | ics1->ms_used[g][sfb] = faad_get1bit(ld | ||
644 | DEBUGVAR(1,42,"channel_pair_element(): faad_get1bit")); | ||
645 | } | ||
646 | } | ||
647 | } | ||
648 | |||
649 | #ifdef ERROR_RESILIENCE | ||
650 | if ((hDecoder->object_type >= ER_OBJECT_START) && (ics1->predictor_data_present)) | ||
651 | { | ||
652 | if (( | ||
653 | #ifdef LTP_DEC | ||
654 | ics1->ltp.data_present = | ||
655 | #endif | ||
656 | faad_get1bit(ld DEBUGVAR(1,50,"channel_pair_element(): ltp.data_present"))) & 1) | ||
657 | { | ||
658 | #ifdef LTP_DEC | ||
659 | if ((result = ltp_data(hDecoder, ics1, &(ics1->ltp), ld)) > 0) | ||
660 | { | ||
661 | return result; | ||
662 | } | ||
663 | #else | ||
664 | return 26; | ||
665 | #endif | ||
666 | } | ||
667 | } | ||
668 | #endif | ||
669 | |||
670 | memcpy(ics2, ics1, sizeof(ic_stream)); | ||
671 | } else { | ||
672 | ics1->ms_mask_present = 0; | ||
673 | } | ||
674 | |||
675 | if ((result = individual_channel_stream(hDecoder, &cpe, ld, ics1, | ||
676 | 0, spec_data1)) > 0) | ||
677 | { | ||
678 | return result; | ||
679 | } | ||
680 | |||
681 | #ifdef ERROR_RESILIENCE | ||
682 | if (cpe.common_window && (hDecoder->object_type >= ER_OBJECT_START) && | ||
683 | (ics1->predictor_data_present)) | ||
684 | { | ||
685 | if (( | ||
686 | #ifdef LTP_DEC | ||
687 | ics1->ltp2.data_present = | ||
688 | #endif | ||
689 | faad_get1bit(ld DEBUGVAR(1,50,"channel_pair_element(): ltp.data_present"))) & 1) | ||
690 | { | ||
691 | #ifdef LTP_DEC | ||
692 | if ((result = ltp_data(hDecoder, ics1, &(ics1->ltp2), ld)) > 0) | ||
693 | { | ||
694 | return result; | ||
695 | } | ||
696 | #else | ||
697 | return 26; | ||
698 | #endif | ||
699 | } | ||
700 | } | ||
701 | #endif | ||
702 | |||
703 | if ((result = individual_channel_stream(hDecoder, &cpe, ld, ics2, | ||
704 | 0, spec_data2)) > 0) | ||
705 | { | ||
706 | return result; | ||
707 | } | ||
708 | |||
709 | #ifdef SBR_DEC | ||
710 | /* check if next bitstream element is a fill element */ | ||
711 | /* if so, read it now so SBR decoding can be done in case of a file with SBR */ | ||
712 | if (faad_showbits(ld, LEN_SE_ID) == ID_FIL) | ||
713 | { | ||
714 | faad_flushbits(ld, LEN_SE_ID); | ||
715 | |||
716 | /* one sbr_info describes a channel_element not a channel! */ | ||
717 | if ((result = fill_element(hDecoder, ld, hDecoder->drc, hDecoder->fr_ch_ele)) > 0) | ||
718 | { | ||
719 | return result; | ||
720 | } | ||
721 | } | ||
722 | #endif | ||
723 | |||
724 | /* noiseless coding is done, spectral reconstruction is done now */ | ||
725 | if ((result = reconstruct_channel_pair(hDecoder, ics1, ics2, &cpe, | ||
726 | spec_data1, spec_data2)) > 0) | ||
727 | { | ||
728 | return result; | ||
729 | } | ||
730 | |||
731 | return 0; | ||
732 | } | ||
733 | |||
734 | /* Table 4.4.6 */ | ||
735 | static uint8_t ics_info(NeAACDecHandle hDecoder, ic_stream *ics, bitfile *ld, | ||
736 | uint8_t common_window) | ||
737 | { | ||
738 | uint8_t retval = 0; | ||
739 | |||
740 | /* ics->ics_reserved_bit = */ faad_get1bit(ld | ||
741 | DEBUGVAR(1,43,"ics_info(): ics_reserved_bit")); | ||
742 | ics->window_sequence = (uint8_t)faad_getbits(ld, 2 | ||
743 | DEBUGVAR(1,44,"ics_info(): window_sequence")); | ||
744 | ics->window_shape = faad_get1bit(ld | ||
745 | DEBUGVAR(1,45,"ics_info(): window_shape")); | ||
746 | |||
747 | if (ics->window_sequence == EIGHT_SHORT_SEQUENCE) | ||
748 | { | ||
749 | ics->max_sfb = (uint8_t)faad_getbits(ld, 4 | ||
750 | DEBUGVAR(1,46,"ics_info(): max_sfb (short)")); | ||
751 | ics->scale_factor_grouping = (uint8_t)faad_getbits(ld, 7 | ||
752 | DEBUGVAR(1,47,"ics_info(): scale_factor_grouping")); | ||
753 | } else { | ||
754 | ics->max_sfb = (uint8_t)faad_getbits(ld, 6 | ||
755 | DEBUGVAR(1,48,"ics_info(): max_sfb (long)")); | ||
756 | } | ||
757 | |||
758 | /* get the grouping information */ | ||
759 | if ((retval = window_grouping_info(hDecoder, ics)) > 0) | ||
760 | return retval; | ||
761 | |||
762 | /* should be an error */ | ||
763 | /* check the range of max_sfb */ | ||
764 | if (ics->max_sfb > ics->num_swb) | ||
765 | return 16; | ||
766 | |||
767 | if (ics->window_sequence != EIGHT_SHORT_SEQUENCE) | ||
768 | { | ||
769 | if ((ics->predictor_data_present = faad_get1bit(ld | ||
770 | DEBUGVAR(1,49,"ics_info(): predictor_data_present"))) & 1) | ||
771 | { | ||
772 | if (hDecoder->object_type == MAIN) /* MPEG2 style AAC predictor */ | ||
773 | { | ||
774 | uint8_t sfb; | ||
775 | |||
776 | uint8_t limit = min(ics->max_sfb, max_pred_sfb(hDecoder->sf_index)); | ||
777 | #ifdef MAIN_DEC | ||
778 | ics->pred.limit = limit; | ||
779 | #endif | ||
780 | |||
781 | if (( | ||
782 | #ifdef MAIN_DEC | ||
783 | ics->pred.predictor_reset = | ||
784 | #endif | ||
785 | faad_get1bit(ld DEBUGVAR(1,53,"ics_info(): pred.predictor_reset"))) & 1) | ||
786 | { | ||
787 | #ifdef MAIN_DEC | ||
788 | ics->pred.predictor_reset_group_number = | ||
789 | (uint8_t) | ||
790 | #endif | ||
791 | faad_getbits(ld, 5 DEBUGVAR(1,54,"ics_info(): pred.predictor_reset_group_number")); | ||
792 | } | ||
793 | |||
794 | for (sfb = 0; sfb < limit; sfb++) | ||
795 | { | ||
796 | #ifdef MAIN_DEC | ||
797 | ics->pred.prediction_used[sfb] = | ||
798 | #endif | ||
799 | faad_get1bit(ld DEBUGVAR(1,55,"ics_info(): pred.prediction_used")); | ||
800 | } | ||
801 | } | ||
802 | #ifdef LTP_DEC | ||
803 | else { /* Long Term Prediction */ | ||
804 | if (hDecoder->object_type < ER_OBJECT_START) | ||
805 | { | ||
806 | if ((ics->ltp.data_present = faad_get1bit(ld | ||
807 | DEBUGVAR(1,50,"ics_info(): ltp.data_present"))) & 1) | ||
808 | { | ||
809 | if ((retval = ltp_data(hDecoder, ics, &(ics->ltp), ld)) > 0) | ||
810 | { | ||
811 | return retval; | ||
812 | } | ||
813 | } | ||
814 | if (common_window) | ||
815 | { | ||
816 | if ((ics->ltp2.data_present = faad_get1bit(ld | ||
817 | DEBUGVAR(1,51,"ics_info(): ltp2.data_present"))) & 1) | ||
818 | { | ||
819 | if ((retval = ltp_data(hDecoder, ics, &(ics->ltp2), ld)) > 0) | ||
820 | { | ||
821 | return retval; | ||
822 | } | ||
823 | } | ||
824 | } | ||
825 | } | ||
826 | #ifdef ERROR_RESILIENCE | ||
827 | if (!common_window && (hDecoder->object_type >= ER_OBJECT_START)) | ||
828 | { | ||
829 | if ((ics->ltp.data_present = faad_get1bit(ld | ||
830 | DEBUGVAR(1,50,"ics_info(): ltp.data_present"))) & 1) | ||
831 | { | ||
832 | ltp_data(hDecoder, ics, &(ics->ltp), ld); | ||
833 | } | ||
834 | } | ||
835 | #endif | ||
836 | } | ||
837 | #else | ||
838 | (void) common_window; | ||
839 | #endif | ||
840 | } | ||
841 | } | ||
842 | |||
843 | return retval; | ||
844 | } | ||
845 | |||
846 | /* Table 4.4.7 */ | ||
847 | static uint8_t pulse_data(ic_stream *ics, pulse_info *pul, bitfile *ld) | ||
848 | { | ||
849 | uint8_t i; | ||
850 | |||
851 | pul->number_pulse = (uint8_t)faad_getbits(ld, 2 | ||
852 | DEBUGVAR(1,56,"pulse_data(): number_pulse")); | ||
853 | pul->pulse_start_sfb = (uint8_t)faad_getbits(ld, 6 | ||
854 | DEBUGVAR(1,57,"pulse_data(): pulse_start_sfb")); | ||
855 | |||
856 | /* check the range of pulse_start_sfb */ | ||
857 | if (pul->pulse_start_sfb > ics->num_swb) | ||
858 | return 16; | ||
859 | |||
860 | for (i = 0; i < pul->number_pulse+1; i++) | ||
861 | { | ||
862 | pul->pulse_offset[i] = (uint8_t)faad_getbits(ld, 5 | ||
863 | DEBUGVAR(1,58,"pulse_data(): pulse_offset")); | ||
864 | #if 0 | ||
865 | printf("%d\n", pul->pulse_offset[i]); | ||
866 | #endif | ||
867 | pul->pulse_amp[i] = (uint8_t)faad_getbits(ld, 4 | ||
868 | DEBUGVAR(1,59,"pulse_data(): pulse_amp")); | ||
869 | #if 0 | ||
870 | printf("%d\n", pul->pulse_amp[i]); | ||
871 | #endif | ||
872 | } | ||
873 | |||
874 | return 0; | ||
875 | } | ||
876 | |||
877 | #ifdef COUPLING_DEC | ||
878 | /* Table 4.4.8: Currently just for skipping the bits... */ | ||
879 | static uint8_t coupling_channel_element(NeAACDecHandle hDecoder, bitfile *ld) | ||
880 | { | ||
881 | uint8_t c, result = 0; | ||
882 | uint8_t ind_sw_cce_flag = 0; | ||
883 | uint8_t num_gain_element_lists = 0; | ||
884 | uint8_t num_coupled_elements = 0; | ||
885 | |||
886 | element el_empty = {0}; | ||
887 | ic_stream ics_empty = {0}; | ||
888 | static int16_t sh_data[FRAME_LEN]; | ||
889 | |||
890 | c = faad_getbits(ld, LEN_TAG | ||
891 | DEBUGVAR(1,900,"coupling_channel_element(): element_instance_tag")); | ||
892 | |||
893 | ind_sw_cce_flag = faad_get1bit(ld | ||
894 | DEBUGVAR(1,901,"coupling_channel_element(): ind_sw_cce_flag")); | ||
895 | num_coupled_elements = faad_getbits(ld, 3 | ||
896 | DEBUGVAR(1,902,"coupling_channel_element(): num_coupled_elements")); | ||
897 | |||
898 | for (c = 0; c < num_coupled_elements + 1; c++) | ||
899 | { | ||
900 | uint8_t cc_target_is_cpe, cc_target_tag_select; | ||
901 | |||
902 | num_gain_element_lists++; | ||
903 | |||
904 | cc_target_is_cpe = faad_get1bit(ld | ||
905 | DEBUGVAR(1,903,"coupling_channel_element(): cc_target_is_cpe")); | ||
906 | cc_target_tag_select = faad_getbits(ld, 4 | ||
907 | DEBUGVAR(1,904,"coupling_channel_element(): cc_target_tag_select")); | ||
908 | |||
909 | if (cc_target_is_cpe) | ||
910 | { | ||
911 | uint8_t cc_l = faad_get1bit(ld | ||
912 | DEBUGVAR(1,905,"coupling_channel_element(): cc_l")); | ||
913 | uint8_t cc_r = faad_get1bit(ld | ||
914 | DEBUGVAR(1,906,"coupling_channel_element(): cc_r")); | ||
915 | |||
916 | if (cc_l && cc_r) | ||
917 | num_gain_element_lists++; | ||
918 | } | ||
919 | } | ||
920 | |||
921 | faad_get1bit(ld | ||
922 | DEBUGVAR(1,907,"coupling_channel_element(): cc_domain")); | ||
923 | faad_get1bit(ld | ||
924 | DEBUGVAR(1,908,"coupling_channel_element(): gain_element_sign")); | ||
925 | faad_getbits(ld, 2 | ||
926 | DEBUGVAR(1,909,"coupling_channel_element(): gain_element_scale")); | ||
927 | |||
928 | if ((result = individual_channel_stream(hDecoder, &el_empty, ld, &ics_empty, | ||
929 | 0, sh_data)) > 0) | ||
930 | { | ||
931 | return result; | ||
932 | } | ||
933 | |||
934 | for (c = 1; c < num_gain_element_lists; c++) | ||
935 | { | ||
936 | uint8_t cge; | ||
937 | |||
938 | if (ind_sw_cce_flag) | ||
939 | { | ||
940 | cge = 1; | ||
941 | } else { | ||
942 | cge = faad_get1bit(ld | ||
943 | DEBUGVAR(1,910,"coupling_channel_element(): common_gain_element_present")); | ||
944 | } | ||
945 | |||
946 | if (cge) | ||
947 | { | ||
948 | huffman_scale_factor(ld); | ||
949 | } else { | ||
950 | uint8_t g, sfb; | ||
951 | |||
952 | for (g = 0; g < ics_empty.num_window_groups; g++) | ||
953 | { | ||
954 | for (sfb = 0; sfb < ics_empty.max_sfb; sfb++) | ||
955 | { | ||
956 | if (ics_empty.sfb_cb[g][sfb] != ZERO_HCB) | ||
957 | huffman_scale_factor(ld); | ||
958 | } | ||
959 | } | ||
960 | } | ||
961 | } | ||
962 | |||
963 | return 0; | ||
964 | } | ||
965 | #endif | ||
966 | |||
967 | /* Table 4.4.10 */ | ||
968 | static uint16_t data_stream_element(NeAACDecHandle hDecoder, bitfile *ld) | ||
969 | { | ||
970 | uint8_t byte_aligned; | ||
971 | uint16_t i, count; | ||
972 | |||
973 | (void)hDecoder; | ||
974 | |||
975 | /* element_instance_tag = */ faad_getbits(ld, LEN_TAG | ||
976 | DEBUGVAR(1,60,"data_stream_element(): element_instance_tag")); | ||
977 | byte_aligned = faad_get1bit(ld | ||
978 | DEBUGVAR(1,61,"data_stream_element(): byte_aligned")); | ||
979 | count = (uint16_t)faad_getbits(ld, 8 | ||
980 | DEBUGVAR(1,62,"data_stream_element(): count")); | ||
981 | if (count == 255) | ||
982 | { | ||
983 | count += (uint16_t)faad_getbits(ld, 8 | ||
984 | DEBUGVAR(1,63,"data_stream_element(): extra count")); | ||
985 | } | ||
986 | if (byte_aligned) | ||
987 | faad_byte_align(ld); | ||
988 | |||
989 | for (i = 0; i < count; i++) | ||
990 | { | ||
991 | faad_getbits(ld, LEN_BYTE | ||
992 | DEBUGVAR(1,64,"data_stream_element(): data_stream_byte")); | ||
993 | } | ||
994 | |||
995 | return count; | ||
996 | } | ||
997 | |||
998 | /* Table 4.4.11 */ | ||
999 | static uint8_t fill_element(NeAACDecHandle hDecoder, bitfile *ld, drc_info *drc | ||
1000 | #ifdef SBR_DEC | ||
1001 | ,uint8_t sbr_ele | ||
1002 | #endif | ||
1003 | ) | ||
1004 | { | ||
1005 | uint16_t count; | ||
1006 | #ifdef SBR_DEC | ||
1007 | uint8_t bs_extension_type; | ||
1008 | #endif | ||
1009 | |||
1010 | count = (uint16_t)faad_getbits(ld, 4 | ||
1011 | DEBUGVAR(1,65,"fill_element(): count")); | ||
1012 | if (count == 15) | ||
1013 | { | ||
1014 | count += (uint16_t)faad_getbits(ld, 8 | ||
1015 | DEBUGVAR(1,66,"fill_element(): extra count")) - 1; | ||
1016 | } | ||
1017 | |||
1018 | if (count > 0) | ||
1019 | { | ||
1020 | #ifdef SBR_DEC | ||
1021 | bs_extension_type = (uint8_t)faad_showbits(ld, 4); | ||
1022 | |||
1023 | if ((bs_extension_type == EXT_SBR_DATA) || | ||
1024 | (bs_extension_type == EXT_SBR_DATA_CRC)) | ||
1025 | { | ||
1026 | if (sbr_ele == INVALID_SBR_ELEMENT) | ||
1027 | return 24; | ||
1028 | |||
1029 | if (!hDecoder->sbr[sbr_ele]) | ||
1030 | { | ||
1031 | hDecoder->sbr[sbr_ele] = sbrDecodeInit(hDecoder->frameLength, | ||
1032 | hDecoder->element_id[sbr_ele], sbr_ele, | ||
1033 | 2*get_sample_rate(hDecoder->sf_index), | ||
1034 | hDecoder->downSampledSBR, 0); | ||
1035 | #ifndef FAAD_STATIC_ALLOC | ||
1036 | if (hDecoder->sbr[sbr_ele] == NULL) | ||
1037 | { | ||
1038 | /* could not allocate memory */ | ||
1039 | return 28; | ||
1040 | } | ||
1041 | #endif | ||
1042 | } | ||
1043 | |||
1044 | hDecoder->sbr_present_flag = 1; | ||
1045 | |||
1046 | /* parse the SBR data */ | ||
1047 | hDecoder->sbr[sbr_ele]->ret = sbr_extension_data(ld, hDecoder->sbr[sbr_ele], count); | ||
1048 | |||
1049 | #if 0 | ||
1050 | if (hDecoder->sbr[sbr_ele]->ret > 0) | ||
1051 | { | ||
1052 | printf("%s\n", NeAACDecGetErrorMessage(hDecoder->sbr[sbr_ele]->ret)); | ||
1053 | } | ||
1054 | #endif | ||
1055 | |||
1056 | #if (defined(PS_DEC) || defined(DRM_PS)) | ||
1057 | if (hDecoder->sbr[sbr_ele]->ps_used) | ||
1058 | { | ||
1059 | hDecoder->ps_used[sbr_ele] = 1; | ||
1060 | |||
1061 | /* set element independent flag to 1 as well */ | ||
1062 | hDecoder->ps_used_global = 1; | ||
1063 | } | ||
1064 | #endif | ||
1065 | } else { | ||
1066 | #else | ||
1067 | (void)hDecoder; | ||
1068 | #endif | ||
1069 | while (count > 0) | ||
1070 | { | ||
1071 | count -= extension_payload(ld, drc, count); | ||
1072 | } | ||
1073 | #ifdef SBR_DEC | ||
1074 | } | ||
1075 | #endif | ||
1076 | } | ||
1077 | |||
1078 | return 0; | ||
1079 | } | ||
1080 | |||
1081 | /* Table 4.4.12 */ | ||
1082 | #ifdef SSR_DEC | ||
1083 | static void gain_control_data(bitfile *ld, ic_stream *ics) | ||
1084 | { | ||
1085 | uint8_t bd, wd, ad; | ||
1086 | ssr_info *ssr = &(ics->ssr); | ||
1087 | |||
1088 | ssr->max_band = (uint8_t)faad_getbits(ld, 2 | ||
1089 | DEBUGVAR(1,1000,"gain_control_data(): max_band")); | ||
1090 | |||
1091 | if (ics->window_sequence == ONLY_LONG_SEQUENCE) | ||
1092 | { | ||
1093 | for (bd = 1; bd <= ssr->max_band; bd++) | ||
1094 | { | ||
1095 | for (wd = 0; wd < 1; wd++) | ||
1096 | { | ||
1097 | ssr->adjust_num[bd][wd] = (uint8_t)faad_getbits(ld, 3 | ||
1098 | DEBUGVAR(1,1001,"gain_control_data(): adjust_num")); | ||
1099 | |||
1100 | for (ad = 0; ad < ssr->adjust_num[bd][wd]; ad++) | ||
1101 | { | ||
1102 | ssr->alevcode[bd][wd][ad] = (uint8_t)faad_getbits(ld, 4 | ||
1103 | DEBUGVAR(1,1002,"gain_control_data(): alevcode")); | ||
1104 | ssr->aloccode[bd][wd][ad] = (uint8_t)faad_getbits(ld, 5 | ||
1105 | DEBUGVAR(1,1003,"gain_control_data(): aloccode")); | ||
1106 | } | ||
1107 | } | ||
1108 | } | ||
1109 | } else if (ics->window_sequence == LONG_START_SEQUENCE) { | ||
1110 | for (bd = 1; bd <= ssr->max_band; bd++) | ||
1111 | { | ||
1112 | for (wd = 0; wd < 2; wd++) | ||
1113 | { | ||
1114 | ssr->adjust_num[bd][wd] = (uint8_t)faad_getbits(ld, 3 | ||
1115 | DEBUGVAR(1,1001,"gain_control_data(): adjust_num")); | ||
1116 | |||
1117 | for (ad = 0; ad < ssr->adjust_num[bd][wd]; ad++) | ||
1118 | { | ||
1119 | ssr->alevcode[bd][wd][ad] = (uint8_t)faad_getbits(ld, 4 | ||
1120 | DEBUGVAR(1,1002,"gain_control_data(): alevcode")); | ||
1121 | if (wd == 0) | ||
1122 | { | ||
1123 | ssr->aloccode[bd][wd][ad] = (uint8_t)faad_getbits(ld, 4 | ||
1124 | DEBUGVAR(1,1003,"gain_control_data(): aloccode")); | ||
1125 | } else { | ||
1126 | ssr->aloccode[bd][wd][ad] = (uint8_t)faad_getbits(ld, 2 | ||
1127 | DEBUGVAR(1,1003,"gain_control_data(): aloccode")); | ||
1128 | } | ||
1129 | } | ||
1130 | } | ||
1131 | } | ||
1132 | } else if (ics->window_sequence == EIGHT_SHORT_SEQUENCE) { | ||
1133 | for (bd = 1; bd <= ssr->max_band; bd++) | ||
1134 | { | ||
1135 | for (wd = 0; wd < 8; wd++) | ||
1136 | { | ||
1137 | ssr->adjust_num[bd][wd] = (uint8_t)faad_getbits(ld, 3 | ||
1138 | DEBUGVAR(1,1001,"gain_control_data(): adjust_num")); | ||
1139 | |||
1140 | for (ad = 0; ad < ssr->adjust_num[bd][wd]; ad++) | ||
1141 | { | ||
1142 | ssr->alevcode[bd][wd][ad] = (uint8_t)faad_getbits(ld, 4 | ||
1143 | DEBUGVAR(1,1002,"gain_control_data(): alevcode")); | ||
1144 | ssr->aloccode[bd][wd][ad] = (uint8_t)faad_getbits(ld, 2 | ||
1145 | DEBUGVAR(1,1003,"gain_control_data(): aloccode")); | ||
1146 | } | ||
1147 | } | ||
1148 | } | ||
1149 | } else if (ics->window_sequence == LONG_STOP_SEQUENCE) { | ||
1150 | for (bd = 1; bd <= ssr->max_band; bd++) | ||
1151 | { | ||
1152 | for (wd = 0; wd < 2; wd++) | ||
1153 | { | ||
1154 | ssr->adjust_num[bd][wd] = (uint8_t)faad_getbits(ld, 3 | ||
1155 | DEBUGVAR(1,1001,"gain_control_data(): adjust_num")); | ||
1156 | |||
1157 | for (ad = 0; ad < ssr->adjust_num[bd][wd]; ad++) | ||
1158 | { | ||
1159 | ssr->alevcode[bd][wd][ad] = (uint8_t)faad_getbits(ld, 4 | ||
1160 | DEBUGVAR(1,1002,"gain_control_data(): alevcode")); | ||
1161 | |||
1162 | if (wd == 0) | ||
1163 | { | ||
1164 | ssr->aloccode[bd][wd][ad] = (uint8_t)faad_getbits(ld, 4 | ||
1165 | DEBUGVAR(1,1003,"gain_control_data(): aloccode")); | ||
1166 | } else { | ||
1167 | ssr->aloccode[bd][wd][ad] = (uint8_t)faad_getbits(ld, 5 | ||
1168 | DEBUGVAR(1,1003,"gain_control_data(): aloccode")); | ||
1169 | } | ||
1170 | } | ||
1171 | } | ||
1172 | } | ||
1173 | } | ||
1174 | } | ||
1175 | #endif | ||
1176 | |||
1177 | #ifdef SCALABLE_DEC | ||
1178 | int16_t spec_data1[FRAME_LEN] MEM_ALIGN_ATTR; | ||
1179 | int16_t spec_data2[FRAME_LEN] MEM_ALIGN_ATTR; | ||
1180 | /* Table 4.4.13 ASME */ | ||
1181 | void aac_scalable_main_element(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo, | ||
1182 | bitfile *ld, program_config *pce, drc_info *drc) | ||
1183 | { | ||
1184 | uint8_t retval = 0; | ||
1185 | uint8_t channels = hDecoder->fr_channels = 0; | ||
1186 | uint8_t ch; | ||
1187 | uint8_t this_layer_stereo = (hDecoder->channelConfiguration > 1) ? 1 : 0; | ||
1188 | element cpe = {0}; | ||
1189 | ic_stream *ics1 = &(cpe.ics1); | ||
1190 | ic_stream *ics2 = &(cpe.ics2); | ||
1191 | int16_t *spec_data; | ||
1192 | |||
1193 | memset(spec_data1,0,sizeof(spec_data1)); | ||
1194 | memset(spec_data2,0,sizeof(spec_data2)); | ||
1195 | hDecoder->fr_ch_ele = 0; | ||
1196 | |||
1197 | hInfo->error = aac_scalable_main_header(hDecoder, ics1, ics2, ld, this_layer_stereo); | ||
1198 | if (hInfo->error > 0) | ||
1199 | return; | ||
1200 | |||
1201 | cpe.common_window = 1; | ||
1202 | if (this_layer_stereo) | ||
1203 | { | ||
1204 | hDecoder->element_id[0] = ID_CPE; | ||
1205 | if (hDecoder->element_output_channels[hDecoder->fr_ch_ele] == 0) | ||
1206 | hDecoder->element_output_channels[hDecoder->fr_ch_ele] = 2; | ||
1207 | } else { | ||
1208 | hDecoder->element_id[0] = ID_SCE; | ||
1209 | } | ||
1210 | |||
1211 | for (ch = 0; ch < (this_layer_stereo ? 2 : 1); ch++) | ||
1212 | { | ||
1213 | ic_stream *ics; | ||
1214 | if (ch == 0) | ||
1215 | { | ||
1216 | ics = ics1; | ||
1217 | spec_data = spec_data1; | ||
1218 | } else { | ||
1219 | ics = ics2; | ||
1220 | spec_data = spec_data2; | ||
1221 | } | ||
1222 | |||
1223 | hInfo->error = individual_channel_stream(hDecoder, &cpe, ld, ics, 1, spec_data); | ||
1224 | if (hInfo->error > 0) | ||
1225 | return; | ||
1226 | } | ||
1227 | |||
1228 | #ifdef DRM | ||
1229 | #ifdef SBR_DEC | ||
1230 | /* In case of DRM we need to read the SBR info before channel reconstruction */ | ||
1231 | if ((hDecoder->sbr_present_flag == 1) && (hDecoder->object_type == DRM_ER_LC)) | ||
1232 | { | ||
1233 | bitfile ld_sbr = {0}; | ||
1234 | uint32_t i; | ||
1235 | uint16_t count = 0; | ||
1236 | uint8_t *revbuffer; | ||
1237 | uint8_t *prevbufstart; | ||
1238 | uint8_t *pbufend; | ||
1239 | |||
1240 | /* all forward bitreading should be finished at this point */ | ||
1241 | uint32_t bitsconsumed = faad_get_processed_bits(ld); | ||
1242 | uint32_t buffer_size = faad_origbitbuffer_size(ld); | ||
1243 | uint8_t *buffer = (uint8_t*)faad_origbitbuffer(ld); | ||
1244 | |||
1245 | if (bitsconsumed + 8 > buffer_size*8) | ||
1246 | { | ||
1247 | hInfo->error = 14; | ||
1248 | return; | ||
1249 | } | ||
1250 | |||
1251 | if (!hDecoder->sbr[0]) | ||
1252 | { | ||
1253 | hDecoder->sbr[0] = sbrDecodeInit(hDecoder->frameLength, hDecoder->element_id[0], | ||
1254 | 2*get_sample_rate(hDecoder->sf_index), 0 /* ds SBR */, 1); | ||
1255 | #ifndef FAAD_STATIC_ALLOC | ||
1256 | if (hDecoder->sbr[0] == NULL) | ||
1257 | { | ||
1258 | /* could not allocate memory */ | ||
1259 | hInfo->error = 28; | ||
1260 | return; | ||
1261 | } | ||
1262 | #endif | ||
1263 | } | ||
1264 | |||
1265 | /* Reverse bit reading of SBR data in DRM audio frame */ | ||
1266 | revbuffer = (uint8_t*)faad_malloc(buffer_size*sizeof(uint8_t)); | ||
1267 | if (revbuffer == NULL) | ||
1268 | { | ||
1269 | /* could not allocate memory */ | ||
1270 | hInfo->error = 28; | ||
1271 | return; | ||
1272 | } | ||
1273 | prevbufstart = revbuffer; | ||
1274 | pbufend = &buffer[buffer_size - 1]; | ||
1275 | for (i = 0; i < buffer_size; i++) | ||
1276 | *prevbufstart++ = tabFlipbits[*pbufend--]; | ||
1277 | |||
1278 | /* Set SBR data */ | ||
1279 | /* consider 8 bits from AAC-CRC */ | ||
1280 | count = (uint16_t)bit2byte(buffer_size*8 - bitsconsumed); | ||
1281 | faad_initbits(&ld_sbr, revbuffer, count); | ||
1282 | |||
1283 | hDecoder->sbr[0]->sample_rate = get_sample_rate(hDecoder->sf_index); | ||
1284 | hDecoder->sbr[0]->sample_rate *= 2; | ||
1285 | |||
1286 | faad_getbits(&ld_sbr, 8); /* Skip 8-bit CRC */ | ||
1287 | |||
1288 | hDecoder->sbr[0]->ret = sbr_extension_data(&ld_sbr, hDecoder->sbr[0], count); | ||
1289 | #if (defined(PS_DEC) || defined(DRM_PS)) | ||
1290 | if (hDecoder->sbr[0]->ps_used) | ||
1291 | { | ||
1292 | hDecoder->ps_used[0] = 1; | ||
1293 | hDecoder->ps_used_global = 1; | ||
1294 | } | ||
1295 | #endif | ||
1296 | |||
1297 | /* check CRC */ | ||
1298 | /* no need to check it if there was already an error */ | ||
1299 | if (hDecoder->sbr[0]->ret == 0) | ||
1300 | hDecoder->sbr[0]->ret = (uint8_t)faad_check_CRC(&ld_sbr, (uint16_t)faad_get_processed_bits(&ld_sbr) - 8); | ||
1301 | |||
1302 | /* SBR data was corrupted, disable it until the next header */ | ||
1303 | if (hDecoder->sbr[0]->ret != 0) | ||
1304 | { | ||
1305 | hDecoder->sbr[0]->header_count = 0; | ||
1306 | } | ||
1307 | |||
1308 | faad_endbits(&ld_sbr); | ||
1309 | |||
1310 | if (revbuffer) | ||
1311 | faad_free(revbuffer); | ||
1312 | } | ||
1313 | #endif | ||
1314 | #endif | ||
1315 | |||
1316 | if (this_layer_stereo) | ||
1317 | { | ||
1318 | hInfo->error = reconstruct_channel_pair(hDecoder, ics1, ics2, &cpe, spec_data1, spec_data2); | ||
1319 | if (hInfo->error > 0) | ||
1320 | return; | ||
1321 | } else { | ||
1322 | hInfo->error = reconstruct_single_channel(hDecoder, ics1, &cpe, spec_data1); | ||
1323 | if (hInfo->error > 0) | ||
1324 | return; | ||
1325 | } | ||
1326 | |||
1327 | /* map output channels position to internal data channels */ | ||
1328 | if (hDecoder->element_output_channels[hDecoder->fr_ch_ele] == 2) | ||
1329 | { | ||
1330 | /* this might be faulty when pce_set is true */ | ||
1331 | hDecoder->internal_channel[channels] = channels; | ||
1332 | hDecoder->internal_channel[channels+1] = channels+1; | ||
1333 | } else { | ||
1334 | hDecoder->internal_channel[channels] = channels; | ||
1335 | } | ||
1336 | |||
1337 | hDecoder->fr_channels += hDecoder->element_output_channels[hDecoder->fr_ch_ele]; | ||
1338 | hDecoder->fr_ch_ele++; | ||
1339 | |||
1340 | return; | ||
1341 | } | ||
1342 | |||
1343 | /* Table 4.4.15 */ | ||
1344 | static int8_t aac_scalable_main_header(NeAACDecHandle hDecoder, ic_stream *ics1, ic_stream *ics2, | ||
1345 | bitfile *ld, uint8_t this_layer_stereo) | ||
1346 | { | ||
1347 | uint8_t retval = 0; | ||
1348 | uint8_t ch; | ||
1349 | ic_stream *ics; | ||
1350 | |||
1351 | /* ics1->ics_reserved_bit = */ faad_get1bit(ld | ||
1352 | DEBUGVAR(1,300,"aac_scalable_main_header(): ics_reserved_bits")); | ||
1353 | ics1->window_sequence = (uint8_t)faad_getbits(ld, 2 | ||
1354 | DEBUGVAR(1,301,"aac_scalable_main_header(): window_sequence")); | ||
1355 | ics1->window_shape = faad_get1bit(ld | ||
1356 | DEBUGVAR(1,302,"aac_scalable_main_header(): window_shape")); | ||
1357 | |||
1358 | if (ics1->window_sequence == EIGHT_SHORT_SEQUENCE) | ||
1359 | { | ||
1360 | ics1->max_sfb = (uint8_t)faad_getbits(ld, 4 | ||
1361 | DEBUGVAR(1,303,"aac_scalable_main_header(): max_sfb (short)")); | ||
1362 | ics1->scale_factor_grouping = (uint8_t)faad_getbits(ld, 7 | ||
1363 | DEBUGVAR(1,304,"aac_scalable_main_header(): scale_factor_grouping")); | ||
1364 | } else { | ||
1365 | ics1->max_sfb = (uint8_t)faad_getbits(ld, 6 | ||
1366 | DEBUGVAR(1,305,"aac_scalable_main_header(): max_sfb (long)")); | ||
1367 | } | ||
1368 | |||
1369 | /* get the grouping information */ | ||
1370 | if ((retval = window_grouping_info(hDecoder, ics1)) > 0) | ||
1371 | return retval; | ||
1372 | |||
1373 | /* should be an error */ | ||
1374 | /* check the range of max_sfb */ | ||
1375 | if (ics1->max_sfb > ics1->num_swb) | ||
1376 | return 16; | ||
1377 | |||
1378 | if (this_layer_stereo) | ||
1379 | { | ||
1380 | ics1->ms_mask_present = (uint8_t)faad_getbits(ld, 2 | ||
1381 | DEBUGVAR(1,306,"aac_scalable_main_header(): ms_mask_present")); | ||
1382 | if (ics1->ms_mask_present == 1) | ||
1383 | { | ||
1384 | uint8_t g, sfb; | ||
1385 | for (g = 0; g < ics1->num_window_groups; g++) | ||
1386 | { | ||
1387 | for (sfb = 0; sfb < ics1->max_sfb; sfb++) | ||
1388 | { | ||
1389 | ics1->ms_used[g][sfb] = faad_get1bit(ld | ||
1390 | DEBUGVAR(1,307,"aac_scalable_main_header(): faad_get1bit")); | ||
1391 | } | ||
1392 | } | ||
1393 | } | ||
1394 | |||
1395 | memcpy(ics2, ics1, sizeof(ic_stream)); | ||
1396 | } else { | ||
1397 | ics1->ms_mask_present = 0; | ||
1398 | } | ||
1399 | |||
1400 | if (0) | ||
1401 | { | ||
1402 | faad_get1bit(ld | ||
1403 | DEBUGVAR(1,308,"aac_scalable_main_header(): tns_channel_mono_layer")); | ||
1404 | } | ||
1405 | |||
1406 | for (ch = 0; ch < (this_layer_stereo ? 2 : 1); ch++) | ||
1407 | { | ||
1408 | if (ch == 0) | ||
1409 | ics = ics1; | ||
1410 | else | ||
1411 | ics = ics2; | ||
1412 | |||
1413 | if ( 1 /*!tvq_layer_pesent || (tns_aac_tvq_en[ch] == 1)*/) | ||
1414 | { | ||
1415 | if ((ics->tns_data_present = faad_get1bit(ld | ||
1416 | DEBUGVAR(1,309,"aac_scalable_main_header(): tns_data_present"))) & 1) | ||
1417 | { | ||
1418 | #ifdef DRM | ||
1419 | /* different order of data units in DRM */ | ||
1420 | if (hDecoder->object_type != DRM_ER_LC) | ||
1421 | #endif | ||
1422 | { | ||
1423 | tns_data(ics, &(ics->tns), ld); | ||
1424 | } | ||
1425 | } | ||
1426 | } | ||
1427 | #if 0 | ||
1428 | if (0 /*core_flag || tvq_layer_pesent*/) | ||
1429 | { | ||
1430 | if ((ch==0) || ((ch==1) && (core_stereo || tvq_stereo)) | ||
1431 | diff_control_data(); | ||
1432 | if (mono_stereo_flag) | ||
1433 | diff_control_data_lr(); | ||
1434 | } else { | ||
1435 | #endif | ||
1436 | if (( | ||
1437 | #ifdef LTP_DEC | ||
1438 | ics->ltp.data_present = | ||
1439 | #endif | ||
1440 | faad_get1bit(ld DEBUGVAR(1,310,"aac_scalable_main_header(): ltp.data_present"))) & 1) | ||
1441 | { | ||
1442 | #ifdef LTP_DEC | ||
1443 | if ((retval = ltp_data(hDecoder, ics, &(ics->ltp), ld)) > 0) | ||
1444 | { | ||
1445 | return retval; | ||
1446 | } | ||
1447 | #else | ||
1448 | return 26; | ||
1449 | #endif | ||
1450 | } | ||
1451 | #if 0 | ||
1452 | } | ||
1453 | #endif | ||
1454 | } | ||
1455 | |||
1456 | return 0; | ||
1457 | } | ||
1458 | #endif | ||
1459 | |||
1460 | /* Table 4.4.24 */ | ||
1461 | static uint8_t individual_channel_stream(NeAACDecHandle hDecoder, element *ele, | ||
1462 | bitfile *ld, ic_stream *ics, uint8_t scal_flag, | ||
1463 | int16_t *spec_data) | ||
1464 | { | ||
1465 | uint8_t result; | ||
1466 | |||
1467 | ics->global_gain = (uint8_t)faad_getbits(ld, 8 | ||
1468 | DEBUGVAR(1,67,"individual_channel_stream(): global_gain")); | ||
1469 | |||
1470 | if (!ele->common_window && !scal_flag) | ||
1471 | { | ||
1472 | if ((result = ics_info(hDecoder, ics, ld, ele->common_window)) > 0) | ||
1473 | return result; | ||
1474 | } | ||
1475 | |||
1476 | if ((result = section_data(hDecoder, ics, ld)) > 0) | ||
1477 | return result; | ||
1478 | |||
1479 | if ((result = scale_factor_data(hDecoder, ics, ld)) > 0) | ||
1480 | return result; | ||
1481 | |||
1482 | if (!scal_flag) | ||
1483 | { | ||
1484 | /** | ||
1485 | ** NOTE: It could be that pulse data is available in scalable AAC too, | ||
1486 | ** as said in Amendment 1, this could be only the case for ER AAC, | ||
1487 | ** though. (have to check this out later) | ||
1488 | **/ | ||
1489 | /* get pulse data */ | ||
1490 | if ((ics->pulse_data_present = faad_get1bit(ld | ||
1491 | DEBUGVAR(1,68,"individual_channel_stream(): pulse_data_present"))) & 1) | ||
1492 | { | ||
1493 | if ((result = pulse_data(ics, &(ics->pul), ld)) > 0) | ||
1494 | return result; | ||
1495 | } | ||
1496 | |||
1497 | /* get tns data */ | ||
1498 | if ((ics->tns_data_present = faad_get1bit(ld | ||
1499 | DEBUGVAR(1,69,"individual_channel_stream(): tns_data_present"))) & 1) | ||
1500 | { | ||
1501 | #ifdef ERROR_RESILIENCE | ||
1502 | if (hDecoder->object_type < ER_OBJECT_START) | ||
1503 | #endif | ||
1504 | tns_data(ics, &(ics->tns), ld); | ||
1505 | } | ||
1506 | |||
1507 | /* get gain control data */ | ||
1508 | if ((ics->gain_control_data_present = faad_get1bit(ld | ||
1509 | DEBUGVAR(1,70,"individual_channel_stream(): gain_control_data_present"))) & 1) | ||
1510 | { | ||
1511 | #ifdef SSR_DEC | ||
1512 | if (hDecoder->object_type != SSR) | ||
1513 | return 1; | ||
1514 | else | ||
1515 | gain_control_data(ld, ics); | ||
1516 | #else | ||
1517 | return 1; | ||
1518 | #endif | ||
1519 | } | ||
1520 | } | ||
1521 | |||
1522 | #ifdef ERROR_RESILIENCE | ||
1523 | if (hDecoder->aacSpectralDataResilienceFlag) | ||
1524 | { | ||
1525 | ics->length_of_reordered_spectral_data = (uint16_t)faad_getbits(ld, 14 | ||
1526 | DEBUGVAR(1,147,"individual_channel_stream(): length_of_reordered_spectral_data")); | ||
1527 | |||
1528 | if (hDecoder->channelConfiguration == 2) | ||
1529 | { | ||
1530 | if (ics->length_of_reordered_spectral_data > 6144) | ||
1531 | ics->length_of_reordered_spectral_data = 6144; | ||
1532 | } else { | ||
1533 | if (ics->length_of_reordered_spectral_data > 12288) | ||
1534 | ics->length_of_reordered_spectral_data = 12288; | ||
1535 | } | ||
1536 | |||
1537 | ics->length_of_longest_codeword = (uint8_t)faad_getbits(ld, 6 | ||
1538 | DEBUGVAR(1,148,"individual_channel_stream(): length_of_longest_codeword")); | ||
1539 | if (ics->length_of_longest_codeword >= 49) | ||
1540 | ics->length_of_longest_codeword = 49; | ||
1541 | } | ||
1542 | |||
1543 | /* RVLC spectral data is put here */ | ||
1544 | if (hDecoder->aacScalefactorDataResilienceFlag) | ||
1545 | { | ||
1546 | if ((result = rvlc_decode_scale_factors(ics, ld)) > 0) | ||
1547 | return result; | ||
1548 | } | ||
1549 | |||
1550 | if (hDecoder->object_type >= ER_OBJECT_START) | ||
1551 | { | ||
1552 | if (ics->tns_data_present) | ||
1553 | tns_data(ics, &(ics->tns), ld); | ||
1554 | } | ||
1555 | |||
1556 | #ifdef DRM | ||
1557 | /* CRC check */ | ||
1558 | if (hDecoder->object_type == DRM_ER_LC) | ||
1559 | if ((result = (uint8_t)faad_check_CRC(ld, (uint16_t)faad_get_processed_bits(ld) - 8)) > 0) | ||
1560 | return result; | ||
1561 | #endif | ||
1562 | |||
1563 | if (hDecoder->aacSpectralDataResilienceFlag) | ||
1564 | { | ||
1565 | /* error resilient spectral data decoding */ | ||
1566 | if ((result = reordered_spectral_data(hDecoder, ics, ld, spec_data)) > 0) | ||
1567 | { | ||
1568 | return result; | ||
1569 | } | ||
1570 | } else { | ||
1571 | #endif | ||
1572 | /* decode the spectral data */ | ||
1573 | if ((result = spectral_data(hDecoder, ics, ld, spec_data)) > 0) | ||
1574 | { | ||
1575 | return result; | ||
1576 | } | ||
1577 | #ifdef ERROR_RESILIENCE | ||
1578 | } | ||
1579 | #endif | ||
1580 | |||
1581 | /* pulse coding reconstruction */ | ||
1582 | if (ics->pulse_data_present) | ||
1583 | { | ||
1584 | if (ics->window_sequence != EIGHT_SHORT_SEQUENCE) | ||
1585 | { | ||
1586 | if ((result = pulse_decode(ics, spec_data, hDecoder->frameLength)) > 0) | ||
1587 | return result; | ||
1588 | } else { | ||
1589 | return 2; /* pulse coding not allowed for short blocks */ | ||
1590 | } | ||
1591 | } | ||
1592 | |||
1593 | return 0; | ||
1594 | } | ||
1595 | |||
1596 | /* Table 4.4.25 */ | ||
1597 | static uint8_t section_data(NeAACDecHandle hDecoder, ic_stream *ics, bitfile *ld) | ||
1598 | { | ||
1599 | uint8_t g; | ||
1600 | uint8_t sect_esc_val, sect_bits; | ||
1601 | |||
1602 | if (ics->window_sequence == EIGHT_SHORT_SEQUENCE) | ||
1603 | sect_bits = 3; | ||
1604 | else | ||
1605 | sect_bits = 5; | ||
1606 | sect_esc_val = (1<<sect_bits) - 1; | ||
1607 | |||
1608 | #if 0 | ||
1609 | printf("\ntotal sfb %d\n", ics->max_sfb); | ||
1610 | printf(" sect top cb\n"); | ||
1611 | #endif | ||
1612 | |||
1613 | for (g = 0; g < ics->num_window_groups; g++) | ||
1614 | { | ||
1615 | uint8_t k = 0; | ||
1616 | uint8_t i = 0; | ||
1617 | |||
1618 | while (k < ics->max_sfb) | ||
1619 | { | ||
1620 | #ifdef ERROR_RESILIENCE | ||
1621 | uint8_t vcb11 = 0; | ||
1622 | #endif | ||
1623 | uint8_t sfb; | ||
1624 | uint8_t sect_len_incr; | ||
1625 | uint16_t sect_len = 0; | ||
1626 | uint8_t sect_cb_bits = 4; | ||
1627 | |||
1628 | /* if "faad_getbits" detects error and returns "0", "k" is never | ||
1629 | incremented and we cannot leave the while loop */ | ||
1630 | if ((ld->error != 0) || (ld->no_more_reading)) | ||
1631 | return 14; | ||
1632 | |||
1633 | #ifdef ERROR_RESILIENCE | ||
1634 | if (hDecoder->aacSectionDataResilienceFlag) | ||
1635 | sect_cb_bits = 5; | ||
1636 | #else | ||
1637 | (void) hDecoder; | ||
1638 | #endif | ||
1639 | |||
1640 | ics->sect_cb[g][i] = (uint8_t)faad_getbits(ld, sect_cb_bits | ||
1641 | DEBUGVAR(1,71,"section_data(): sect_cb")); | ||
1642 | |||
1643 | #if 0 | ||
1644 | printf("%d\n", ics->sect_cb[g][i]); | ||
1645 | #endif | ||
1646 | |||
1647 | if (ics->sect_cb[g][i] == NOISE_HCB) | ||
1648 | ics->noise_used = 1; | ||
1649 | |||
1650 | #ifdef ERROR_RESILIENCE | ||
1651 | if (hDecoder->aacSectionDataResilienceFlag) | ||
1652 | { | ||
1653 | if ((ics->sect_cb[g][i] == 11) || | ||
1654 | ((ics->sect_cb[g][i] >= 16) && (ics->sect_cb[g][i] <= 32))) | ||
1655 | { | ||
1656 | vcb11 = 1; | ||
1657 | } | ||
1658 | } | ||
1659 | if (vcb11) | ||
1660 | { | ||
1661 | sect_len_incr = 1; | ||
1662 | } else { | ||
1663 | #endif | ||
1664 | sect_len_incr = (uint8_t)faad_getbits(ld, sect_bits | ||
1665 | DEBUGVAR(1,72,"section_data(): sect_len_incr")); | ||
1666 | #ifdef ERROR_RESILIENCE | ||
1667 | } | ||
1668 | #endif | ||
1669 | while ((sect_len_incr == sect_esc_val) /* && | ||
1670 | (k+sect_len < ics->max_sfb)*/) | ||
1671 | { | ||
1672 | sect_len += sect_len_incr; | ||
1673 | sect_len_incr = (uint8_t)faad_getbits(ld, sect_bits | ||
1674 | DEBUGVAR(1,72,"section_data(): sect_len_incr")); | ||
1675 | } | ||
1676 | |||
1677 | sect_len += sect_len_incr; | ||
1678 | |||
1679 | ics->sect_start[g][i] = k; | ||
1680 | ics->sect_end[g][i] = k + sect_len; | ||
1681 | |||
1682 | #if 0 | ||
1683 | printf("%d\n", ics->sect_start[g][i]); | ||
1684 | #endif | ||
1685 | #if 0 | ||
1686 | printf("%d\n", ics->sect_end[g][i]); | ||
1687 | #endif | ||
1688 | |||
1689 | if (k + sect_len >= 8*15) | ||
1690 | return 15; | ||
1691 | if (i >= 8*15) | ||
1692 | return 15; | ||
1693 | |||
1694 | for (sfb = k; sfb < k + sect_len; sfb++) | ||
1695 | { | ||
1696 | ics->sfb_cb[g][sfb] = ics->sect_cb[g][i]; | ||
1697 | #if 0 | ||
1698 | printf("%d\n", ics->sfb_cb[g][sfb]); | ||
1699 | #endif | ||
1700 | } | ||
1701 | |||
1702 | #if 0 | ||
1703 | printf(" %6d %6d %6d\n", | ||
1704 | i, | ||
1705 | ics->sect_end[g][i], | ||
1706 | ics->sect_cb[g][i]); | ||
1707 | #endif | ||
1708 | |||
1709 | k += sect_len; | ||
1710 | i++; | ||
1711 | } | ||
1712 | ics->num_sec[g] = i; | ||
1713 | #if 0 | ||
1714 | printf("%d\n", ics->num_sec[g]); | ||
1715 | #endif | ||
1716 | } | ||
1717 | |||
1718 | #if 0 | ||
1719 | printf("\n"); | ||
1720 | #endif | ||
1721 | |||
1722 | return 0; | ||
1723 | } | ||
1724 | |||
1725 | /* | ||
1726 | * decode_scale_factors() | ||
1727 | * decodes the scalefactors from the bitstream | ||
1728 | */ | ||
1729 | /* | ||
1730 | * All scalefactors (and also the stereo positions and pns energies) are | ||
1731 | * transmitted using Huffman coded DPCM relative to the previous active | ||
1732 | * scalefactor (respectively previous stereo position or previous pns energy, | ||
1733 | * see subclause 4.6.2 and 4.6.3). The first active scalefactor is | ||
1734 | * differentially coded relative to the global gain. | ||
1735 | */ | ||
1736 | static uint8_t decode_scale_factors(ic_stream *ics, bitfile *ld) | ||
1737 | { | ||
1738 | uint8_t g, sfb; | ||
1739 | int16_t t; | ||
1740 | int8_t noise_pcm_flag = 1; | ||
1741 | |||
1742 | int16_t scale_factor = ics->global_gain; | ||
1743 | int16_t is_position = 0; | ||
1744 | int16_t noise_energy = ics->global_gain - 90; | ||
1745 | |||
1746 | for (g = 0; g < ics->num_window_groups; g++) | ||
1747 | { | ||
1748 | for (sfb = 0; sfb < ics->max_sfb; sfb++) | ||
1749 | { | ||
1750 | switch (ics->sfb_cb[g][sfb]) | ||
1751 | { | ||
1752 | case ZERO_HCB: /* zero book */ | ||
1753 | ics->scale_factors[g][sfb] = 0; | ||
1754 | //#define SF_PRINT | ||
1755 | #ifdef SF_PRINT | ||
1756 | printf("%d\n", ics->scale_factors[g][sfb]); | ||
1757 | #endif | ||
1758 | break; | ||
1759 | case INTENSITY_HCB: /* intensity books */ | ||
1760 | case INTENSITY_HCB2: | ||
1761 | |||
1762 | /* decode intensity position */ | ||
1763 | t = huffman_scale_factor(ld); | ||
1764 | is_position += (t - 60); | ||
1765 | ics->scale_factors[g][sfb] = is_position; | ||
1766 | #ifdef SF_PRINT | ||
1767 | printf("%d\n", ics->scale_factors[g][sfb]); | ||
1768 | #endif | ||
1769 | |||
1770 | break; | ||
1771 | case NOISE_HCB: /* noise books */ | ||
1772 | |||
1773 | /* decode noise energy */ | ||
1774 | if (noise_pcm_flag) | ||
1775 | { | ||
1776 | noise_pcm_flag = 0; | ||
1777 | t = (int16_t)faad_getbits(ld, 9 | ||
1778 | DEBUGVAR(1,73,"scale_factor_data(): first noise")) - 256; | ||
1779 | } else { | ||
1780 | t = huffman_scale_factor(ld); | ||
1781 | t -= 60; | ||
1782 | } | ||
1783 | noise_energy += t; | ||
1784 | ics->scale_factors[g][sfb] = noise_energy; | ||
1785 | #ifdef SF_PRINT | ||
1786 | printf("%d\n", ics->scale_factors[g][sfb]); | ||
1787 | #endif | ||
1788 | |||
1789 | break; | ||
1790 | default: /* spectral books */ | ||
1791 | |||
1792 | /* ics->scale_factors[g][sfb] must be between 0 and 255 */ | ||
1793 | |||
1794 | ics->scale_factors[g][sfb] = 0; | ||
1795 | |||
1796 | /* decode scale factor */ | ||
1797 | t = huffman_scale_factor(ld); | ||
1798 | scale_factor += (t - 60); | ||
1799 | if (scale_factor < 0 || scale_factor > 255) | ||
1800 | return 4; | ||
1801 | ics->scale_factors[g][sfb] = scale_factor; | ||
1802 | #ifdef SF_PRINT | ||
1803 | printf("%d\n", ics->scale_factors[g][sfb]); | ||
1804 | #endif | ||
1805 | |||
1806 | break; | ||
1807 | } | ||
1808 | } | ||
1809 | } | ||
1810 | |||
1811 | return 0; | ||
1812 | } | ||
1813 | |||
1814 | /* Table 4.4.26 */ | ||
1815 | static uint8_t scale_factor_data(NeAACDecHandle hDecoder, ic_stream *ics, bitfile *ld) | ||
1816 | { | ||
1817 | uint8_t ret = 0; | ||
1818 | #ifdef PROFILE | ||
1819 | int64_t count = faad_get_ts(); | ||
1820 | #endif | ||
1821 | |||
1822 | #ifdef ERROR_RESILIENCE | ||
1823 | if (!hDecoder->aacScalefactorDataResilienceFlag) | ||
1824 | { | ||
1825 | #else | ||
1826 | (void) hDecoder; | ||
1827 | #endif | ||
1828 | ret = decode_scale_factors(ics, ld); | ||
1829 | #ifdef ERROR_RESILIENCE | ||
1830 | } else { | ||
1831 | /* In ER AAC the parameters for RVLC are seperated from the actual | ||
1832 | data that holds the scale_factors. | ||
1833 | Strangely enough, 2 parameters for HCR are put inbetween them. | ||
1834 | */ | ||
1835 | ret = rvlc_scale_factor_data(ics, ld); | ||
1836 | } | ||
1837 | #endif | ||
1838 | |||
1839 | #ifdef PROFILE | ||
1840 | count = faad_get_ts() - count; | ||
1841 | hDecoder->scalefac_cycles += count; | ||
1842 | #endif | ||
1843 | |||
1844 | return ret; | ||
1845 | } | ||
1846 | |||
1847 | /* Table 4.4.27 */ | ||
1848 | static void tns_data(ic_stream *ics, tns_info *tns, bitfile *ld) | ||
1849 | { | ||
1850 | uint8_t w, filt, i, start_coef_bits = 0; | ||
1851 | int8_t coef_bits; | ||
1852 | uint8_t n_filt_bits = 2; | ||
1853 | uint8_t length_bits = 6; | ||
1854 | uint8_t order_bits = 5; | ||
1855 | |||
1856 | if (ics->window_sequence == EIGHT_SHORT_SEQUENCE) | ||
1857 | { | ||
1858 | n_filt_bits = 1; | ||
1859 | length_bits = 4; | ||
1860 | order_bits = 3; | ||
1861 | } | ||
1862 | |||
1863 | for (w = 0; w < ics->num_windows; w++) | ||
1864 | { | ||
1865 | tns->n_filt[w] = (uint8_t)faad_getbits(ld, n_filt_bits | ||
1866 | DEBUGVAR(1,74,"tns_data(): n_filt")); | ||
1867 | #if 0 | ||
1868 | printf("%d\n", tns->n_filt[w]); | ||
1869 | #endif | ||
1870 | |||
1871 | if (tns->n_filt[w]) | ||
1872 | { | ||
1873 | if ((tns->coef_res[w] = faad_get1bit(ld | ||
1874 | DEBUGVAR(1,75,"tns_data(): coef_res"))) & 1) | ||
1875 | { | ||
1876 | start_coef_bits = 4; | ||
1877 | } else { | ||
1878 | start_coef_bits = 3; | ||
1879 | } | ||
1880 | #if 0 | ||
1881 | printf("%d\n", tns->coef_res[w]); | ||
1882 | #endif | ||
1883 | } | ||
1884 | |||
1885 | for (filt = 0; filt < tns->n_filt[w]; filt++) | ||
1886 | { | ||
1887 | tns->length[w][filt] = (uint8_t)faad_getbits(ld, length_bits | ||
1888 | DEBUGVAR(1,76,"tns_data(): length")); | ||
1889 | #if 0 | ||
1890 | printf("%d\n", tns->length[w][filt]); | ||
1891 | #endif | ||
1892 | tns->order[w][filt] = (uint8_t)faad_getbits(ld, order_bits | ||
1893 | DEBUGVAR(1,77,"tns_data(): order")); | ||
1894 | #if 0 | ||
1895 | printf("%d\n", tns->order[w][filt]); | ||
1896 | #endif | ||
1897 | if (tns->order[w][filt]) | ||
1898 | { | ||
1899 | tns->direction[w][filt] = faad_get1bit(ld | ||
1900 | DEBUGVAR(1,78,"tns_data(): direction")); | ||
1901 | #if 0 | ||
1902 | printf("%d\n", tns->direction[w][filt]); | ||
1903 | #endif | ||
1904 | tns->coef_compress[w][filt] = faad_get1bit(ld | ||
1905 | DEBUGVAR(1,79,"tns_data(): coef_compress")); | ||
1906 | #if 0 | ||
1907 | printf("%d\n", tns->coef_compress[w][filt]); | ||
1908 | #endif | ||
1909 | |||
1910 | coef_bits = start_coef_bits - tns->coef_compress[w][filt]; | ||
1911 | for (i = 0; i < tns->order[w][filt]; i++) | ||
1912 | { | ||
1913 | tns->coef[w][filt][i] = (uint8_t)faad_getbits(ld, coef_bits | ||
1914 | DEBUGVAR(1,80,"tns_data(): coef")); | ||
1915 | #if 0 | ||
1916 | printf("%d\n", tns->coef[w][filt][i]); | ||
1917 | #endif | ||
1918 | } | ||
1919 | } | ||
1920 | } | ||
1921 | } | ||
1922 | } | ||
1923 | |||
1924 | #ifdef LTP_DEC | ||
1925 | /* Table 4.4.28 */ | ||
1926 | static uint8_t ltp_data(NeAACDecHandle hDecoder, ic_stream *ics, ltp_info *ltp, bitfile *ld) | ||
1927 | { | ||
1928 | uint8_t sfb, w; | ||
1929 | |||
1930 | ltp->lag = 0; | ||
1931 | |||
1932 | #ifdef LD_DEC | ||
1933 | if (hDecoder->object_type == LD) | ||
1934 | { | ||
1935 | ltp->lag_update = (uint8_t)faad_getbits(ld, 1 | ||
1936 | DEBUGVAR(1,142,"ltp_data(): lag_update")); | ||
1937 | |||
1938 | if (ltp->lag_update) | ||
1939 | { | ||
1940 | ltp->lag = (uint16_t)faad_getbits(ld, 10 | ||
1941 | DEBUGVAR(1,81,"ltp_data(): lag")); | ||
1942 | } | ||
1943 | } else { | ||
1944 | #endif | ||
1945 | ltp->lag = (uint16_t)faad_getbits(ld, 11 | ||
1946 | DEBUGVAR(1,81,"ltp_data(): lag")); | ||
1947 | #ifdef LD_DEC | ||
1948 | } | ||
1949 | #endif | ||
1950 | |||
1951 | /* Check length of lag */ | ||
1952 | if (ltp->lag > (hDecoder->frameLength << 1)) | ||
1953 | return 18; | ||
1954 | |||
1955 | ltp->coef = (uint8_t)faad_getbits(ld, 3 | ||
1956 | DEBUGVAR(1,82,"ltp_data(): coef")); | ||
1957 | |||
1958 | if (ics->window_sequence == EIGHT_SHORT_SEQUENCE) | ||
1959 | { | ||
1960 | for (w = 0; w < ics->num_windows; w++) | ||
1961 | { | ||
1962 | if ((ltp->short_used[w] = faad_get1bit(ld | ||
1963 | DEBUGVAR(1,83,"ltp_data(): short_used"))) & 1) | ||
1964 | { | ||
1965 | ltp->short_lag_present[w] = faad_get1bit(ld | ||
1966 | DEBUGVAR(1,84,"ltp_data(): short_lag_present")); | ||
1967 | if (ltp->short_lag_present[w]) | ||
1968 | { | ||
1969 | ltp->short_lag[w] = (uint8_t)faad_getbits(ld, 4 | ||
1970 | DEBUGVAR(1,85,"ltp_data(): short_lag")); | ||
1971 | } | ||
1972 | } | ||
1973 | } | ||
1974 | } else { | ||
1975 | ltp->last_band = (ics->max_sfb < MAX_LTP_SFB ? ics->max_sfb : MAX_LTP_SFB); | ||
1976 | |||
1977 | for (sfb = 0; sfb < ltp->last_band; sfb++) | ||
1978 | { | ||
1979 | ltp->long_used[sfb] = faad_get1bit(ld | ||
1980 | DEBUGVAR(1,86,"ltp_data(): long_used")); | ||
1981 | } | ||
1982 | } | ||
1983 | |||
1984 | return 0; | ||
1985 | } | ||
1986 | #endif | ||
1987 | |||
1988 | /* Table 4.4.29 */ | ||
1989 | static uint8_t spectral_data(NeAACDecHandle hDecoder, ic_stream *ics, bitfile *ld, | ||
1990 | int16_t *spectral_data) | ||
1991 | { | ||
1992 | int8_t i; | ||
1993 | uint8_t g; | ||
1994 | uint16_t inc, k, p = 0; | ||
1995 | uint8_t groups = 0; | ||
1996 | uint8_t sect_cb; | ||
1997 | uint8_t result; | ||
1998 | uint16_t nshort = hDecoder->frameLength/8; | ||
1999 | |||
2000 | #ifdef PROFILE | ||
2001 | int64_t count = faad_get_ts(); | ||
2002 | #endif | ||
2003 | |||
2004 | for(g = 0; g < ics->num_window_groups; g++) | ||
2005 | { | ||
2006 | p = groups*nshort; | ||
2007 | |||
2008 | for (i = 0; i < ics->num_sec[g]; i++) | ||
2009 | { | ||
2010 | sect_cb = ics->sect_cb[g][i]; | ||
2011 | |||
2012 | inc = (sect_cb >= FIRST_PAIR_HCB) ? 2 : 4; | ||
2013 | |||
2014 | switch (sect_cb) | ||
2015 | { | ||
2016 | case ZERO_HCB: | ||
2017 | case NOISE_HCB: | ||
2018 | case INTENSITY_HCB: | ||
2019 | case INTENSITY_HCB2: | ||
2020 | //#define SD_PRINT | ||
2021 | #ifdef SD_PRINT | ||
2022 | { | ||
2023 | int j; | ||
2024 | for (j = ics->sect_sfb_offset[g][ics->sect_start[g][i]]; j < ics->sect_sfb_offset[g][ics->sect_end[g][i]]; j++) | ||
2025 | { | ||
2026 | printf("%d\n", 0); | ||
2027 | } | ||
2028 | } | ||
2029 | #endif | ||
2030 | //#define SFBO_PRINT | ||
2031 | #ifdef SFBO_PRINT | ||
2032 | printf("%d\n", ics->sect_sfb_offset[g][ics->sect_start[g][i]]); | ||
2033 | #endif | ||
2034 | p += (ics->sect_sfb_offset[g][ics->sect_end[g][i]] - | ||
2035 | ics->sect_sfb_offset[g][ics->sect_start[g][i]]); | ||
2036 | break; | ||
2037 | default: | ||
2038 | #ifdef SFBO_PRINT | ||
2039 | printf("%d\n", ics->sect_sfb_offset[g][ics->sect_start[g][i]]); | ||
2040 | #endif | ||
2041 | for (k = ics->sect_sfb_offset[g][ics->sect_start[g][i]]; | ||
2042 | k < ics->sect_sfb_offset[g][ics->sect_end[g][i]]; k += inc) | ||
2043 | { | ||
2044 | if ((result = huffman_spectral_data(sect_cb, ld, &spectral_data[p])) > 0) | ||
2045 | return result; | ||
2046 | #ifdef SD_PRINT | ||
2047 | { | ||
2048 | int j; | ||
2049 | for (j = p; j < p+inc; j++) | ||
2050 | { | ||
2051 | printf("%d\n", spectral_data[j]); | ||
2052 | } | ||
2053 | } | ||
2054 | #endif | ||
2055 | p += inc; | ||
2056 | } | ||
2057 | break; | ||
2058 | } | ||
2059 | } | ||
2060 | groups += ics->window_group_length[g]; | ||
2061 | } | ||
2062 | |||
2063 | #ifdef PROFILE | ||
2064 | count = faad_get_ts() - count; | ||
2065 | hDecoder->spectral_cycles += count; | ||
2066 | #endif | ||
2067 | |||
2068 | return 0; | ||
2069 | } | ||
2070 | |||
2071 | /* Table 4.4.30 */ | ||
2072 | static uint16_t extension_payload(bitfile *ld, drc_info *drc, uint16_t count) | ||
2073 | { | ||
2074 | uint16_t i, n, dataElementLength; | ||
2075 | uint8_t dataElementLengthPart; | ||
2076 | uint8_t align = 4, data_element_version, loopCounter; | ||
2077 | |||
2078 | uint8_t extension_type = (uint8_t)faad_getbits(ld, 4 | ||
2079 | DEBUGVAR(1,87,"extension_payload(): extension_type")); | ||
2080 | |||
2081 | switch (extension_type) | ||
2082 | { | ||
2083 | case EXT_DYNAMIC_RANGE: | ||
2084 | drc->present = 1; | ||
2085 | n = dynamic_range_info(ld, drc); | ||
2086 | return n; | ||
2087 | case EXT_FILL_DATA: | ||
2088 | /* fill_nibble = */ faad_getbits(ld, 4 | ||
2089 | DEBUGVAR(1,136,"extension_payload(): fill_nibble")); /* must be "0000" */ | ||
2090 | for (i = 0; i < count-1; i++) | ||
2091 | { | ||
2092 | /* fill_byte[i] = */ faad_getbits(ld, 8 | ||
2093 | DEBUGVAR(1,88,"extension_payload(): fill_byte")); /* must be "10100101" */ | ||
2094 | } | ||
2095 | return count; | ||
2096 | case EXT_DATA_ELEMENT: | ||
2097 | data_element_version = (uint8_t)faad_getbits(ld, 4 | ||
2098 | DEBUGVAR(1,400,"extension_payload(): data_element_version")); | ||
2099 | switch (data_element_version) | ||
2100 | { | ||
2101 | case ANC_DATA: | ||
2102 | loopCounter = 0; | ||
2103 | dataElementLength = 0; | ||
2104 | do { | ||
2105 | dataElementLengthPart = (uint8_t)faad_getbits(ld, 8 | ||
2106 | DEBUGVAR(1,401,"extension_payload(): dataElementLengthPart")); | ||
2107 | dataElementLength += dataElementLengthPart; | ||
2108 | loopCounter++; | ||
2109 | } while (dataElementLengthPart == 255); | ||
2110 | |||
2111 | for (i = 0; i < dataElementLength; i++) | ||
2112 | { | ||
2113 | /* data_element_byte[i] = */ faad_getbits(ld, 8 | ||
2114 | DEBUGVAR(1,402,"extension_payload(): data_element_byte")); | ||
2115 | return (dataElementLength+loopCounter+1); | ||
2116 | } | ||
2117 | default: | ||
2118 | align = 0; | ||
2119 | } | ||
2120 | case EXT_FIL: | ||
2121 | default: | ||
2122 | faad_getbits(ld, align | ||
2123 | DEBUGVAR(1,88,"extension_payload(): fill_nibble")); | ||
2124 | for (i = 0; i < count-1; i++) | ||
2125 | { | ||
2126 | /* other_bits[i] = */ faad_getbits(ld, 8 | ||
2127 | DEBUGVAR(1,89,"extension_payload(): fill_bit")); | ||
2128 | } | ||
2129 | return count; | ||
2130 | } | ||
2131 | } | ||
2132 | |||
2133 | /* Table 4.4.31 */ | ||
2134 | static uint8_t dynamic_range_info(bitfile *ld, drc_info *drc) | ||
2135 | { | ||
2136 | uint8_t i, n = 1; | ||
2137 | uint8_t band_incr; | ||
2138 | |||
2139 | drc->num_bands = 1; | ||
2140 | |||
2141 | if (faad_get1bit(ld | ||
2142 | DEBUGVAR(1,90,"dynamic_range_info(): has instance_tag")) & 1) | ||
2143 | { | ||
2144 | drc->pce_instance_tag = (uint8_t)faad_getbits(ld, 4 | ||
2145 | DEBUGVAR(1,91,"dynamic_range_info(): pce_instance_tag")); | ||
2146 | /* drc->drc_tag_reserved_bits = */ faad_getbits(ld, 4 | ||
2147 | DEBUGVAR(1,92,"dynamic_range_info(): drc_tag_reserved_bits")); | ||
2148 | n++; | ||
2149 | } | ||
2150 | |||
2151 | drc->excluded_chns_present = faad_get1bit(ld | ||
2152 | DEBUGVAR(1,93,"dynamic_range_info(): excluded_chns_present")); | ||
2153 | if (drc->excluded_chns_present == 1) | ||
2154 | { | ||
2155 | n += excluded_channels(ld, drc); | ||
2156 | } | ||
2157 | |||
2158 | if (faad_get1bit(ld | ||
2159 | DEBUGVAR(1,94,"dynamic_range_info(): has bands data")) & 1) | ||
2160 | { | ||
2161 | band_incr = (uint8_t)faad_getbits(ld, 4 | ||
2162 | DEBUGVAR(1,95,"dynamic_range_info(): band_incr")); | ||
2163 | /* drc->drc_bands_reserved_bits = */ faad_getbits(ld, 4 | ||
2164 | DEBUGVAR(1,96,"dynamic_range_info(): drc_bands_reserved_bits")); | ||
2165 | n++; | ||
2166 | drc->num_bands += band_incr; | ||
2167 | |||
2168 | for (i = 0; i < drc->num_bands; i++) | ||
2169 | { | ||
2170 | drc->band_top[i] = (uint8_t)faad_getbits(ld, 8 | ||
2171 | DEBUGVAR(1,97,"dynamic_range_info(): band_top")); | ||
2172 | n++; | ||
2173 | } | ||
2174 | } | ||
2175 | |||
2176 | if (faad_get1bit(ld | ||
2177 | DEBUGVAR(1,98,"dynamic_range_info(): has prog_ref_level")) & 1) | ||
2178 | { | ||
2179 | drc->prog_ref_level = (uint8_t)faad_getbits(ld, 7 | ||
2180 | DEBUGVAR(1,99,"dynamic_range_info(): prog_ref_level")); | ||
2181 | /* drc->prog_ref_level_reserved_bits = */ faad_get1bit(ld | ||
2182 | DEBUGVAR(1,100,"dynamic_range_info(): prog_ref_level_reserved_bits")); | ||
2183 | n++; | ||
2184 | } | ||
2185 | |||
2186 | for (i = 0; i < drc->num_bands; i++) | ||
2187 | { | ||
2188 | drc->dyn_rng_sgn[i] = faad_get1bit(ld | ||
2189 | DEBUGVAR(1,101,"dynamic_range_info(): dyn_rng_sgn")); | ||
2190 | drc->dyn_rng_ctl[i] = (uint8_t)faad_getbits(ld, 7 | ||
2191 | DEBUGVAR(1,102,"dynamic_range_info(): dyn_rng_ctl")); | ||
2192 | n++; | ||
2193 | } | ||
2194 | |||
2195 | return n; | ||
2196 | } | ||
2197 | |||
2198 | /* Table 4.4.32 */ | ||
2199 | static uint8_t excluded_channels(bitfile *ld, drc_info *drc) | ||
2200 | { | ||
2201 | uint8_t i, n = 0; | ||
2202 | uint8_t num_excl_chan = 7; | ||
2203 | |||
2204 | for (i = 0; i < 7; i++) | ||
2205 | { | ||
2206 | drc->exclude_mask[i] = faad_get1bit(ld | ||
2207 | DEBUGVAR(1,103,"excluded_channels(): exclude_mask")); | ||
2208 | } | ||
2209 | n++; | ||
2210 | |||
2211 | while ((drc->additional_excluded_chns[n-1] = faad_get1bit(ld | ||
2212 | DEBUGVAR(1,104,"excluded_channels(): additional_excluded_chns"))) == 1) | ||
2213 | { | ||
2214 | for (i = num_excl_chan; i < num_excl_chan+7; i++) | ||
2215 | { | ||
2216 | drc->exclude_mask[i] = faad_get1bit(ld | ||
2217 | DEBUGVAR(1,105,"excluded_channels(): exclude_mask")); | ||
2218 | } | ||
2219 | n++; | ||
2220 | num_excl_chan += 7; | ||
2221 | } | ||
2222 | |||
2223 | return n; | ||
2224 | } | ||
2225 | |||
2226 | /* Annex A: Audio Interchange Formats */ | ||
2227 | |||
2228 | /* Table 1.A.2 */ | ||
2229 | void get_adif_header(adif_header *adif, bitfile *ld) | ||
2230 | { | ||
2231 | uint8_t i; | ||
2232 | |||
2233 | /* adif_id[0] = */ faad_getbits(ld, 8 | ||
2234 | DEBUGVAR(1,106,"get_adif_header(): adif_id[0]")); | ||
2235 | /* adif_id[1] = */ faad_getbits(ld, 8 | ||
2236 | DEBUGVAR(1,107,"get_adif_header(): adif_id[1]")); | ||
2237 | /* adif_id[2] = */ faad_getbits(ld, 8 | ||
2238 | DEBUGVAR(1,108,"get_adif_header(): adif_id[2]")); | ||
2239 | /* adif_id[3] = */ faad_getbits(ld, 8 | ||
2240 | DEBUGVAR(1,109,"get_adif_header(): adif_id[3]")); | ||
2241 | adif->copyright_id_present = faad_get1bit(ld | ||
2242 | DEBUGVAR(1,110,"get_adif_header(): copyright_id_present")); | ||
2243 | if(adif->copyright_id_present) | ||
2244 | { | ||
2245 | for (i = 0; i < 72/8; i++) | ||
2246 | { | ||
2247 | adif->copyright_id[i] = (int8_t)faad_getbits(ld, 8 | ||
2248 | DEBUGVAR(1,111,"get_adif_header(): copyright_id")); | ||
2249 | } | ||
2250 | adif->copyright_id[i] = 0; | ||
2251 | } | ||
2252 | adif->original_copy = faad_get1bit(ld | ||
2253 | DEBUGVAR(1,112,"get_adif_header(): original_copy")); | ||
2254 | adif->home = faad_get1bit(ld | ||
2255 | DEBUGVAR(1,113,"get_adif_header(): home")); | ||
2256 | adif->bitstream_type = faad_get1bit(ld | ||
2257 | DEBUGVAR(1,114,"get_adif_header(): bitstream_type")); | ||
2258 | adif->bitrate = faad_getbits(ld, 23 | ||
2259 | DEBUGVAR(1,115,"get_adif_header(): bitrate")); | ||
2260 | adif->num_program_config_elements = (uint8_t)faad_getbits(ld, 4 | ||
2261 | DEBUGVAR(1,116,"get_adif_header(): num_program_config_elements")); | ||
2262 | |||
2263 | for (i = 0; i < adif->num_program_config_elements + 1; i++) | ||
2264 | { | ||
2265 | if(adif->bitstream_type == 0) | ||
2266 | { | ||
2267 | adif->adif_buffer_fullness = faad_getbits(ld, 20 | ||
2268 | DEBUGVAR(1,117,"get_adif_header(): adif_buffer_fullness")); | ||
2269 | } else { | ||
2270 | adif->adif_buffer_fullness = 0; | ||
2271 | } | ||
2272 | |||
2273 | program_config_element(&adif->pce[i], ld); | ||
2274 | } | ||
2275 | } | ||
2276 | |||
2277 | /* Table 1.A.5 */ | ||
2278 | uint8_t adts_frame(adts_header *adts, bitfile *ld) | ||
2279 | { | ||
2280 | /* faad_byte_align(ld); */ | ||
2281 | if (adts_fixed_header(adts, ld)) | ||
2282 | return 5; | ||
2283 | adts_variable_header(adts, ld); | ||
2284 | adts_error_check(adts, ld); | ||
2285 | |||
2286 | return 0; | ||
2287 | } | ||
2288 | |||
2289 | /* Table 1.A.6 */ | ||
2290 | static uint8_t adts_fixed_header(adts_header *adts, bitfile *ld) | ||
2291 | { | ||
2292 | uint16_t i; | ||
2293 | uint8_t sync_err = 1; | ||
2294 | |||
2295 | /* try to recover from sync errors */ | ||
2296 | for (i = 0; i < 768; i++) | ||
2297 | { | ||
2298 | adts->syncword = (uint16_t)faad_showbits(ld, 12); | ||
2299 | if (adts->syncword != 0xFFF) | ||
2300 | { | ||
2301 | faad_getbits(ld, 8 | ||
2302 | DEBUGVAR(0,0,"")); | ||
2303 | } else { | ||
2304 | sync_err = 0; | ||
2305 | faad_getbits(ld, 12 | ||
2306 | DEBUGVAR(1,118,"adts_fixed_header(): syncword")); | ||
2307 | break; | ||
2308 | } | ||
2309 | } | ||
2310 | if (sync_err) | ||
2311 | return 5; | ||
2312 | |||
2313 | adts->id = faad_get1bit(ld | ||
2314 | DEBUGVAR(1,119,"adts_fixed_header(): id")); | ||
2315 | adts->layer = (uint8_t)faad_getbits(ld, 2 | ||
2316 | DEBUGVAR(1,120,"adts_fixed_header(): layer")); | ||
2317 | adts->protection_absent = faad_get1bit(ld | ||
2318 | DEBUGVAR(1,121,"adts_fixed_header(): protection_absent")); | ||
2319 | adts->profile = (uint8_t)faad_getbits(ld, 2 | ||
2320 | DEBUGVAR(1,122,"adts_fixed_header(): profile")); | ||
2321 | adts->sf_index = (uint8_t)faad_getbits(ld, 4 | ||
2322 | DEBUGVAR(1,123,"adts_fixed_header(): sf_index")); | ||
2323 | adts->private_bit = faad_get1bit(ld | ||
2324 | DEBUGVAR(1,124,"adts_fixed_header(): private_bit")); | ||
2325 | adts->channel_configuration = (uint8_t)faad_getbits(ld, 3 | ||
2326 | DEBUGVAR(1,125,"adts_fixed_header(): channel_configuration")); | ||
2327 | adts->original = faad_get1bit(ld | ||
2328 | DEBUGVAR(1,126,"adts_fixed_header(): original")); | ||
2329 | adts->home = faad_get1bit(ld | ||
2330 | DEBUGVAR(1,127,"adts_fixed_header(): home")); | ||
2331 | |||
2332 | if (adts->old_format == 1) | ||
2333 | { | ||
2334 | /* Removed in corrigendum 14496-3:2002 */ | ||
2335 | if (adts->id == 0) | ||
2336 | { | ||
2337 | adts->emphasis = (uint8_t)faad_getbits(ld, 2 | ||
2338 | DEBUGVAR(1,128,"adts_fixed_header(): emphasis")); | ||
2339 | } | ||
2340 | } | ||
2341 | |||
2342 | return 0; | ||
2343 | } | ||
2344 | |||
2345 | /* Table 1.A.7 */ | ||
2346 | static void adts_variable_header(adts_header *adts, bitfile *ld) | ||
2347 | { | ||
2348 | adts->copyright_identification_bit = faad_get1bit(ld | ||
2349 | DEBUGVAR(1,129,"adts_variable_header(): copyright_identification_bit")); | ||
2350 | adts->copyright_identification_start = faad_get1bit(ld | ||
2351 | DEBUGVAR(1,130,"adts_variable_header(): copyright_identification_start")); | ||
2352 | adts->aac_frame_length = (uint16_t)faad_getbits(ld, 13 | ||
2353 | DEBUGVAR(1,131,"adts_variable_header(): aac_frame_length")); | ||
2354 | adts->adts_buffer_fullness = (uint16_t)faad_getbits(ld, 11 | ||
2355 | DEBUGVAR(1,132,"adts_variable_header(): adts_buffer_fullness")); | ||
2356 | adts->no_raw_data_blocks_in_frame = (uint8_t)faad_getbits(ld, 2 | ||
2357 | DEBUGVAR(1,133,"adts_variable_header(): no_raw_data_blocks_in_frame")); | ||
2358 | } | ||
2359 | |||
2360 | /* Table 1.A.8 */ | ||
2361 | static void adts_error_check(adts_header *adts, bitfile *ld) | ||
2362 | { | ||
2363 | if (adts->protection_absent == 0) | ||
2364 | { | ||
2365 | adts->crc_check = (uint16_t)faad_getbits(ld, 16 | ||
2366 | DEBUGVAR(1,134,"adts_error_check(): crc_check")); | ||
2367 | } | ||
2368 | } | ||
diff --git a/lib/rbcodec/codecs/libfaad/syntax.h b/lib/rbcodec/codecs/libfaad/syntax.h new file mode 100644 index 0000000000..f9efde7d9b --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/syntax.h | |||
@@ -0,0 +1,124 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __SYNTAX_H__ | ||
29 | #define __SYNTAX_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | #include "decoder.h" | ||
36 | #include "bits.h" | ||
37 | |||
38 | #define MAIN 1 | ||
39 | #define LC 2 | ||
40 | #define SSR 3 | ||
41 | #define LTP 4 | ||
42 | #define HE_AAC 5 | ||
43 | #define LD 23 | ||
44 | #define ER_LC 17 | ||
45 | #define ER_LTP 19 | ||
46 | #define DRM_ER_LC 27 /* special object type for DRM */ | ||
47 | |||
48 | /* header types */ | ||
49 | #define RAW 0 | ||
50 | #define ADIF 1 | ||
51 | #define ADTS 2 | ||
52 | |||
53 | /* SBR signalling */ | ||
54 | #define NO_SBR 0 | ||
55 | #define SBR_UPSAMPLED 1 | ||
56 | #define SBR_DOWNSAMPLED 2 | ||
57 | #define NO_SBR_UPSAMPLED 3 | ||
58 | |||
59 | /* DRM channel definitions */ | ||
60 | #define DRMCH_MONO 1 | ||
61 | #define DRMCH_STEREO 2 | ||
62 | #define DRMCH_SBR_MONO 3 | ||
63 | #define DRMCH_SBR_STEREO 4 | ||
64 | #define DRMCH_SBR_PS_STEREO 5 | ||
65 | |||
66 | |||
67 | /* First object type that has ER */ | ||
68 | #define ER_OBJECT_START 17 | ||
69 | |||
70 | |||
71 | /* Bitstream */ | ||
72 | #define LEN_SE_ID 3 | ||
73 | #define LEN_TAG 4 | ||
74 | #define LEN_BYTE 8 | ||
75 | |||
76 | #define EXT_FIL 0 | ||
77 | #define EXT_FILL_DATA 1 | ||
78 | #define EXT_DATA_ELEMENT 2 | ||
79 | #define EXT_DYNAMIC_RANGE 11 | ||
80 | #define ANC_DATA 0 | ||
81 | |||
82 | /* Syntax elements */ | ||
83 | #define ID_SCE 0x0 | ||
84 | #define ID_CPE 0x1 | ||
85 | #define ID_CCE 0x2 | ||
86 | #define ID_LFE 0x3 | ||
87 | #define ID_DSE 0x4 | ||
88 | #define ID_PCE 0x5 | ||
89 | #define ID_FIL 0x6 | ||
90 | #define ID_END 0x7 | ||
91 | |||
92 | #define ONLY_LONG_SEQUENCE 0x0 | ||
93 | #define LONG_START_SEQUENCE 0x1 | ||
94 | #define EIGHT_SHORT_SEQUENCE 0x2 | ||
95 | #define LONG_STOP_SEQUENCE 0x3 | ||
96 | |||
97 | #define ZERO_HCB 0 | ||
98 | #define FIRST_PAIR_HCB 5 | ||
99 | #define ESC_HCB 11 | ||
100 | #define QUAD_LEN 4 | ||
101 | #define PAIR_LEN 2 | ||
102 | #define NOISE_HCB 13 | ||
103 | #define INTENSITY_HCB2 14 | ||
104 | #define INTENSITY_HCB 15 | ||
105 | |||
106 | #define INVALID_SBR_ELEMENT 255 | ||
107 | |||
108 | int8_t GASpecificConfig(bitfile *ld, mp4AudioSpecificConfig *mp4ASC, | ||
109 | program_config *pce); | ||
110 | |||
111 | uint8_t adts_frame(adts_header *adts, bitfile *ld); | ||
112 | void get_adif_header(adif_header *adif, bitfile *ld); | ||
113 | void raw_data_block(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo, | ||
114 | bitfile *ld, program_config *pce, drc_info *drc); | ||
115 | uint8_t reordered_spectral_data(NeAACDecHandle hDecoder, ic_stream *ics, bitfile *ld, | ||
116 | int16_t *spectral_data); | ||
117 | void aac_scalable_main_element(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo, | ||
118 | bitfile *ld, program_config *pce, drc_info *drc); | ||
119 | |||
120 | |||
121 | #ifdef __cplusplus | ||
122 | } | ||
123 | #endif | ||
124 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/tns.c b/lib/rbcodec/codecs/libfaad/tns.c new file mode 100644 index 0000000000..a2bec86519 --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/tns.c | |||
@@ -0,0 +1,312 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #include "common.h" | ||
29 | #include "structs.h" | ||
30 | |||
31 | #include "syntax.h" | ||
32 | #include "tns.h" | ||
33 | |||
34 | |||
35 | /* static function declarations */ | ||
36 | static void tns_decode_coef(uint8_t order, uint8_t coef_res_bits, uint8_t coef_compress, | ||
37 | uint8_t *coef, real_t *a); | ||
38 | static void tns_ar_filter(real_t *spectrum, uint16_t size, int8_t inc, real_t *lpc, | ||
39 | int8_t order); | ||
40 | #ifdef LTP_DEC | ||
41 | static void tns_ma_filter(real_t *spectrum, uint16_t size, int8_t inc, real_t *lpc, | ||
42 | int8_t order); | ||
43 | #endif | ||
44 | |||
45 | |||
46 | #ifdef _MSC_VER | ||
47 | #pragma warning(disable:4305) | ||
48 | #pragma warning(disable:4244) | ||
49 | #endif | ||
50 | static real_t tns_coef_0_3[] = | ||
51 | { | ||
52 | COEF_CONST(0.0), COEF_CONST(0.4338837391), COEF_CONST(0.7818314825), COEF_CONST(0.9749279122), | ||
53 | COEF_CONST(-0.9848077530), COEF_CONST(-0.8660254038), COEF_CONST(-0.6427876097), COEF_CONST(-0.3420201433), | ||
54 | COEF_CONST(-0.4338837391), COEF_CONST(-0.7818314825), COEF_CONST(-0.9749279122), COEF_CONST(-0.9749279122), | ||
55 | COEF_CONST(-0.9848077530), COEF_CONST(-0.8660254038), COEF_CONST(-0.6427876097), COEF_CONST(-0.3420201433) | ||
56 | }; | ||
57 | static real_t tns_coef_0_4[] = | ||
58 | { | ||
59 | COEF_CONST(0.0), COEF_CONST(0.2079116908), COEF_CONST(0.4067366431), COEF_CONST(0.5877852523), | ||
60 | COEF_CONST(0.7431448255), COEF_CONST(0.8660254038), COEF_CONST(0.9510565163), COEF_CONST(0.9945218954), | ||
61 | COEF_CONST(-0.9957341763), COEF_CONST(-0.9618256432), COEF_CONST(-0.8951632914), COEF_CONST(-0.7980172273), | ||
62 | COEF_CONST(-0.6736956436), COEF_CONST(-0.5264321629), COEF_CONST(-0.3612416662), COEF_CONST(-0.1837495178) | ||
63 | }; | ||
64 | static real_t tns_coef_1_3[] = | ||
65 | { | ||
66 | COEF_CONST(0.0), COEF_CONST(0.4338837391), COEF_CONST(-0.6427876097), COEF_CONST(-0.3420201433), | ||
67 | COEF_CONST(0.9749279122), COEF_CONST(0.7818314825), COEF_CONST(-0.6427876097), COEF_CONST(-0.3420201433), | ||
68 | COEF_CONST(-0.4338837391), COEF_CONST(-0.7818314825), COEF_CONST(-0.6427876097), COEF_CONST(-0.3420201433), | ||
69 | COEF_CONST(-0.7818314825), COEF_CONST(-0.4338837391), COEF_CONST(-0.6427876097), COEF_CONST(-0.3420201433) | ||
70 | }; | ||
71 | static real_t tns_coef_1_4[] = | ||
72 | { | ||
73 | COEF_CONST(0.0), COEF_CONST(0.2079116908), COEF_CONST(0.4067366431), COEF_CONST(0.5877852523), | ||
74 | COEF_CONST(-0.6736956436), COEF_CONST(-0.5264321629), COEF_CONST(-0.3612416662), COEF_CONST(-0.1837495178), | ||
75 | COEF_CONST(0.9945218954), COEF_CONST(0.9510565163), COEF_CONST(0.8660254038), COEF_CONST(0.7431448255), | ||
76 | COEF_CONST(-0.6736956436), COEF_CONST(-0.5264321629), COEF_CONST(-0.3612416662), COEF_CONST(-0.1837495178) | ||
77 | }; | ||
78 | |||
79 | |||
80 | /* TNS decoding for one channel and frame */ | ||
81 | void tns_decode_frame(ic_stream *ics, tns_info *tns, uint8_t sr_index, | ||
82 | uint8_t object_type, real_t *spec, uint16_t frame_len) | ||
83 | { | ||
84 | uint8_t w, f, tns_order; | ||
85 | int8_t inc; | ||
86 | int16_t size; | ||
87 | uint16_t bottom, top, start, end; | ||
88 | uint16_t nshort = frame_len/8; | ||
89 | real_t lpc[TNS_MAX_ORDER+1]; | ||
90 | |||
91 | if (!ics->tns_data_present) | ||
92 | return; | ||
93 | |||
94 | for (w = 0; w < ics->num_windows; w++) | ||
95 | { | ||
96 | bottom = ics->num_swb; | ||
97 | |||
98 | for (f = 0; f < tns->n_filt[w]; f++) | ||
99 | { | ||
100 | top = bottom; | ||
101 | bottom = max(top - tns->length[w][f], 0); | ||
102 | tns_order = min(tns->order[w][f], TNS_MAX_ORDER); | ||
103 | if (!tns_order) | ||
104 | continue; | ||
105 | |||
106 | tns_decode_coef(tns_order, tns->coef_res[w]+3, | ||
107 | tns->coef_compress[w][f], tns->coef[w][f], lpc); | ||
108 | |||
109 | start = min(bottom, max_tns_sfb(sr_index, object_type, (ics->window_sequence == EIGHT_SHORT_SEQUENCE))); | ||
110 | start = min(start, ics->max_sfb); | ||
111 | start = ics->swb_offset[start]; | ||
112 | |||
113 | end = min(top, max_tns_sfb(sr_index, object_type, (ics->window_sequence == EIGHT_SHORT_SEQUENCE))); | ||
114 | end = min(end, ics->max_sfb); | ||
115 | end = ics->swb_offset[end]; | ||
116 | |||
117 | size = end - start; | ||
118 | if (size <= 0) | ||
119 | continue; | ||
120 | |||
121 | if (tns->direction[w][f]) | ||
122 | { | ||
123 | inc = -1; | ||
124 | start = end - 1; | ||
125 | } else { | ||
126 | inc = 1; | ||
127 | } | ||
128 | |||
129 | tns_ar_filter(&spec[(w*nshort)+start], size, inc, lpc, tns_order); | ||
130 | } | ||
131 | } | ||
132 | } | ||
133 | |||
134 | #ifdef LTP_DEC | ||
135 | /* TNS encoding for one channel and frame */ | ||
136 | void tns_encode_frame(ic_stream *ics, tns_info *tns, uint8_t sr_index, | ||
137 | uint8_t object_type, real_t *spec, uint16_t frame_len) | ||
138 | { | ||
139 | uint8_t w, f, tns_order; | ||
140 | int8_t inc; | ||
141 | int16_t size; | ||
142 | uint16_t bottom, top, start, end; | ||
143 | uint16_t nshort = frame_len/8; | ||
144 | real_t lpc[TNS_MAX_ORDER+1]; | ||
145 | |||
146 | if (!ics->tns_data_present) | ||
147 | return; | ||
148 | |||
149 | for (w = 0; w < ics->num_windows; w++) | ||
150 | { | ||
151 | bottom = ics->num_swb; | ||
152 | |||
153 | for (f = 0; f < tns->n_filt[w]; f++) | ||
154 | { | ||
155 | top = bottom; | ||
156 | bottom = max(top - tns->length[w][f], 0); | ||
157 | tns_order = min(tns->order[w][f], TNS_MAX_ORDER); | ||
158 | if (!tns_order) | ||
159 | continue; | ||
160 | |||
161 | tns_decode_coef(tns_order, tns->coef_res[w]+3, | ||
162 | tns->coef_compress[w][f], tns->coef[w][f], lpc); | ||
163 | |||
164 | start = min(bottom, max_tns_sfb(sr_index, object_type, (ics->window_sequence == EIGHT_SHORT_SEQUENCE))); | ||
165 | start = min(start, ics->max_sfb); | ||
166 | start = ics->swb_offset[start]; | ||
167 | |||
168 | end = min(top, max_tns_sfb(sr_index, object_type, (ics->window_sequence == EIGHT_SHORT_SEQUENCE))); | ||
169 | end = min(end, ics->max_sfb); | ||
170 | end = ics->swb_offset[end]; | ||
171 | |||
172 | size = end - start; | ||
173 | if (size <= 0) | ||
174 | continue; | ||
175 | |||
176 | if (tns->direction[w][f]) | ||
177 | { | ||
178 | inc = -1; | ||
179 | start = end - 1; | ||
180 | } else { | ||
181 | inc = 1; | ||
182 | } | ||
183 | |||
184 | tns_ma_filter(&spec[(w*nshort)+start], size, inc, lpc, tns_order); | ||
185 | } | ||
186 | } | ||
187 | } | ||
188 | #endif | ||
189 | |||
190 | /* Decoder transmitted coefficients for one TNS filter */ | ||
191 | static void tns_decode_coef(uint8_t order, uint8_t coef_res_bits, uint8_t coef_compress, | ||
192 | uint8_t *coef, real_t *a) | ||
193 | { | ||
194 | uint8_t i, m; | ||
195 | real_t tmp2[TNS_MAX_ORDER+1], b[TNS_MAX_ORDER+1]; | ||
196 | |||
197 | /* Conversion to signed integer */ | ||
198 | for (i = 0; i < order; i++) | ||
199 | { | ||
200 | if (coef_compress == 0) | ||
201 | { | ||
202 | if (coef_res_bits == 3) | ||
203 | { | ||
204 | tmp2[i] = tns_coef_0_3[coef[i]]; | ||
205 | } else { | ||
206 | tmp2[i] = tns_coef_0_4[coef[i]]; | ||
207 | } | ||
208 | } else { | ||
209 | if (coef_res_bits == 3) | ||
210 | { | ||
211 | tmp2[i] = tns_coef_1_3[coef[i]]; | ||
212 | } else { | ||
213 | tmp2[i] = tns_coef_1_4[coef[i]]; | ||
214 | } | ||
215 | } | ||
216 | } | ||
217 | |||
218 | /* Conversion to LPC coefficients */ | ||
219 | a[0] = COEF_CONST(1.0); | ||
220 | for (m = 1; m <= order; m++) | ||
221 | { | ||
222 | for (i = 1; i < m; i++) /* loop only while i<m */ | ||
223 | b[i] = a[i] + MUL_C(tmp2[m-1], a[m-i]); | ||
224 | |||
225 | for (i = 1; i < m; i++) /* loop only while i<m */ | ||
226 | a[i] = b[i]; | ||
227 | |||
228 | a[m] = tmp2[m-1]; /* changed */ | ||
229 | } | ||
230 | } | ||
231 | |||
232 | static void tns_ar_filter(real_t *spectrum, uint16_t size, int8_t inc, real_t *lpc, | ||
233 | int8_t order) | ||
234 | { | ||
235 | /* | ||
236 | - Simple all-pole filter of order "order" defined by | ||
237 | y(n) = x(n) - lpc[1]*y(n-1) - ... - lpc[order]*y(n-order) | ||
238 | - The state variables of the filter are initialized to zero every time | ||
239 | - The output data is written over the input data ("in-place operation") | ||
240 | - An input vector of "size" samples is processed and the index increment | ||
241 | to the next data sample is given by "inc" | ||
242 | */ | ||
243 | |||
244 | uint8_t j; | ||
245 | uint16_t i; | ||
246 | real_t y; | ||
247 | /* state is stored as a double ringbuffer */ | ||
248 | real_t state[2*TNS_MAX_ORDER] = {0}; | ||
249 | int8_t state_index = 0; | ||
250 | |||
251 | for (i = 0; i < size; i++) | ||
252 | { | ||
253 | y = *spectrum; | ||
254 | |||
255 | for (j = 0; j < order; j++) | ||
256 | y -= MUL_C(state[state_index+j], lpc[j+1]); | ||
257 | |||
258 | /* double ringbuffer state */ | ||
259 | state_index--; | ||
260 | if (state_index < 0) | ||
261 | state_index = order-1; | ||
262 | state[state_index] = state[state_index + order] = y; | ||
263 | |||
264 | *spectrum = y; | ||
265 | spectrum += inc; | ||
266 | |||
267 | //#define TNS_PRINT | ||
268 | #ifdef TNS_PRINT | ||
269 | //printf("%d\n", y); | ||
270 | printf("0x%.8X\n", y); | ||
271 | #endif | ||
272 | } | ||
273 | } | ||
274 | |||
275 | #ifdef LTP_DEC | ||
276 | static void tns_ma_filter(real_t *spectrum, uint16_t size, int8_t inc, real_t *lpc, | ||
277 | int8_t order) | ||
278 | { | ||
279 | /* | ||
280 | - Simple all-zero filter of order "order" defined by | ||
281 | y(n) = x(n) + a(2)*x(n-1) + ... + a(order+1)*x(n-order) | ||
282 | - The state variables of the filter are initialized to zero every time | ||
283 | - The output data is written over the input data ("in-place operation") | ||
284 | - An input vector of "size" samples is processed and the index increment | ||
285 | to the next data sample is given by "inc" | ||
286 | */ | ||
287 | |||
288 | uint8_t j; | ||
289 | uint16_t i; | ||
290 | real_t y; | ||
291 | /* state is stored as a double ringbuffer */ | ||
292 | real_t state[2*TNS_MAX_ORDER] = {0}; | ||
293 | int8_t state_index = 0; | ||
294 | |||
295 | for (i = 0; i < size; i++) | ||
296 | { | ||
297 | y = *spectrum; | ||
298 | |||
299 | for (j = 0; j < order; j++) | ||
300 | y += MUL_C(state[j], lpc[j+1]); | ||
301 | |||
302 | /* double ringbuffer state */ | ||
303 | state_index--; | ||
304 | if (state_index < 0) | ||
305 | state_index = order-1; | ||
306 | state[state_index] = state[state_index + order] = *spectrum; | ||
307 | |||
308 | *spectrum = y; | ||
309 | spectrum += inc; | ||
310 | } | ||
311 | } | ||
312 | #endif | ||
diff --git a/lib/rbcodec/codecs/libfaad/tns.h b/lib/rbcodec/codecs/libfaad/tns.h new file mode 100644 index 0000000000..dd10a61f3b --- /dev/null +++ b/lib/rbcodec/codecs/libfaad/tns.h | |||
@@ -0,0 +1,48 @@ | |||
1 | /* | ||
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding | ||
3 | ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com | ||
4 | ** | ||
5 | ** This program is free software; you can redistribute it and/or modify | ||
6 | ** it under the terms of the GNU General Public License as published by | ||
7 | ** the Free Software Foundation; either version 2 of the License, or | ||
8 | ** (at your option) any later version. | ||
9 | ** | ||
10 | ** This program is distributed in the hope that it will be useful, | ||
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | ** GNU General Public License for more details. | ||
14 | ** | ||
15 | ** You should have received a copy of the GNU General Public License | ||
16 | ** along with this program; if not, write to the Free Software | ||
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | ** | ||
19 | ** Any non-GPL usage of this software or parts of this software is strictly | ||
20 | ** forbidden. | ||
21 | ** | ||
22 | ** Commercial non-GPL licensing of this software is possible. | ||
23 | ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. | ||
24 | ** | ||
25 | ** $Id$ | ||
26 | **/ | ||
27 | |||
28 | #ifndef __TNS_H__ | ||
29 | #define __TNS_H__ | ||
30 | |||
31 | #ifdef __cplusplus | ||
32 | extern "C" { | ||
33 | #endif | ||
34 | |||
35 | |||
36 | #define TNS_MAX_ORDER 20 | ||
37 | |||
38 | |||
39 | void tns_decode_frame(ic_stream *ics, tns_info *tns, uint8_t sr_index, | ||
40 | uint8_t object_type, real_t *spec, uint16_t frame_len); | ||
41 | void tns_encode_frame(ic_stream *ics, tns_info *tns, uint8_t sr_index, | ||
42 | uint8_t object_type, real_t *spec, uint16_t frame_len); | ||
43 | |||
44 | |||
45 | #ifdef __cplusplus | ||
46 | } | ||
47 | #endif | ||
48 | #endif | ||