summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--COPYING502
-rw-r--r--Makefile17
-rw-r--r--README9
-rw-r--r--_kiss_fft_guts.h164
-rw-r--r--bpf.h106
-rw-r--r--bpfb.h105
-rw-r--r--c2wideband.h0
-rw-r--r--codebook.c245
-rw-r--r--codebookd.c433
-rw-r--r--codebookge.c279
-rw-r--r--codebookjvm.c1579
-rw-r--r--codebooklspmelvq.c247
-rw-r--r--codebookmel.c145
-rw-r--r--codebooknewamp1.c1057
-rw-r--r--codebooknewamp1_energy.c39
-rw-r--r--codebooknewamp2.c527
-rw-r--r--codebooknewamp2_energy.c35
-rw-r--r--codec2.c2721
-rw-r--r--codec2.h127
-rw-r--r--codec2_fft.c158
-rw-r--r--codec2_fft.h104
-rw-r--r--codec2_internal.h106
-rw-r--r--comp.h38
-rw-r--r--comp_prim.h141
-rw-r--r--debug_alloc.h2
-rw-r--r--defines.h125
-rw-r--r--dump.h0
-rw-r--r--interp.c331
-rw-r--r--interp.h45
-rw-r--r--kiss_fft.c408
-rw-r--r--kiss_fft.h124
-rw-r--r--kiss_fftr.c154
-rw-r--r--kiss_fftr.h46
-rw-r--r--lpc.c306
-rw-r--r--lpc.h43
-rw-r--r--lsp.c321
-rw-r--r--lsp.h37
-rw-r--r--machdep.h52
-rw-r--r--main.c34
-rw-r--r--mbest.c173
-rw-r--r--mbest.h59
-rw-r--r--newamp1.c625
-rw-r--r--newamp1.h84
-rw-r--r--newamp2.c570
-rw-r--r--newamp2.h89
-rw-r--r--nlp.c702
-rw-r--r--nlp.h38
-rw-r--r--os.h53
-rw-r--r--pack.c140
-rw-r--r--phase.c289
-rw-r--r--phase.h39
-rw-r--r--postfilter.c142
-rw-r--r--postfilter.h33
-rw-r--r--quantise.c2051
-rw-r--r--quantise.h141
-rw-r--r--sine.c689
-rw-r--r--sine.h49
-rwxr-xr-xstripdown.sh120
-rw-r--r--version.h37
59 files changed, 17035 insertions, 0 deletions
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..cc40a46
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,502 @@
1 GNU LESSER GENERAL PUBLIC LICENSE
2 Version 2.1, February 1999
3
4 Copyright (C) 1991, 1999 Free Software Foundation, Inc.
5 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
6 Everyone is permitted to copy and distribute verbatim copies
7 of this license document, but changing it is not allowed.
8
9[This is the first released version of the Lesser GPL. It also counts
10 as the successor of the GNU Library Public License, version 2, hence
11 the version number 2.1.]
12
13 Preamble
14
15 The licenses for most software are designed to take away your
16freedom to share and change it. By contrast, the GNU General Public
17Licenses are intended to guarantee your freedom to share and change
18free software--to make sure the software is free for all its users.
19
20 This license, the Lesser General Public License, applies to some
21specially designated software packages--typically libraries--of the
22Free Software Foundation and other authors who decide to use it. You
23can use it too, but we suggest you first think carefully about whether
24this license or the ordinary General Public License is the better
25strategy to use in any particular case, based on the explanations below.
26
27 When we speak of free software, we are referring to freedom of use,
28not price. Our General Public Licenses are designed to make sure that
29you have the freedom to distribute copies of free software (and charge
30for this service if you wish); that you receive source code or can get
31it if you want it; that you can change the software and use pieces of
32it in new free programs; and that you are informed that you can do
33these things.
34
35 To protect your rights, we need to make restrictions that forbid
36distributors to deny you these rights or to ask you to surrender these
37rights. These restrictions translate to certain responsibilities for
38you if you distribute copies of the library or if you modify it.
39
40 For example, if you distribute copies of the library, whether gratis
41or for a fee, you must give the recipients all the rights that we gave
42you. You must make sure that they, too, receive or can get the source
43code. If you link other code with the library, you must provide
44complete object files to the recipients, so that they can relink them
45with the library after making changes to the library and recompiling
46it. And you must show them these terms so they know their rights.
47
48 We protect your rights with a two-step method: (1) we copyright the
49library, and (2) we offer you this license, which gives you legal
50permission to copy, distribute and/or modify the library.
51
52 To protect each distributor, we want to make it very clear that
53there is no warranty for the free library. Also, if the library is
54modified by someone else and passed on, the recipients should know
55that what they have is not the original version, so that the original
56author's reputation will not be affected by problems that might be
57introduced by others.
58
59 Finally, software patents pose a constant threat to the existence of
60any free program. We wish to make sure that a company cannot
61effectively restrict the users of a free program by obtaining a
62restrictive license from a patent holder. Therefore, we insist that
63any patent license obtained for a version of the library must be
64consistent with the full freedom of use specified in this license.
65
66 Most GNU software, including some libraries, is covered by the
67ordinary GNU General Public License. This license, the GNU Lesser
68General Public License, applies to certain designated libraries, and
69is quite different from the ordinary General Public License. We use
70this license for certain libraries in order to permit linking those
71libraries into non-free programs.
72
73 When a program is linked with a library, whether statically or using
74a shared library, the combination of the two is legally speaking a
75combined work, a derivative of the original library. The ordinary
76General Public License therefore permits such linking only if the
77entire combination fits its criteria of freedom. The Lesser General
78Public License permits more lax criteria for linking other code with
79the library.
80
81 We call this license the "Lesser" General Public License because it
82does Less to protect the user's freedom than the ordinary General
83Public License. It also provides other free software developers Less
84of an advantage over competing non-free programs. These disadvantages
85are the reason we use the ordinary General Public License for many
86libraries. However, the Lesser license provides advantages in certain
87special circumstances.
88
89 For example, on rare occasions, there may be a special need to
90encourage the widest possible use of a certain library, so that it becomes
91a de-facto standard. To achieve this, non-free programs must be
92allowed to use the library. A more frequent case is that a free
93library does the same job as widely used non-free libraries. In this
94case, there is little to gain by limiting the free library to free
95software only, so we use the Lesser General Public License.
96
97 In other cases, permission to use a particular library in non-free
98programs enables a greater number of people to use a large body of
99free software. For example, permission to use the GNU C Library in
100non-free programs enables many more people to use the whole GNU
101operating system, as well as its variant, the GNU/Linux operating
102system.
103
104 Although the Lesser General Public License is Less protective of the
105users' freedom, it does ensure that the user of a program that is
106linked with the Library has the freedom and the wherewithal to run
107that program using a modified version of the Library.
108
109 The precise terms and conditions for copying, distribution and
110modification follow. Pay close attention to the difference between a
111"work based on the library" and a "work that uses the library". The
112former contains code derived from the library, whereas the latter must
113be combined with the library in order to run.
114
115 GNU LESSER GENERAL PUBLIC LICENSE
116 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
117
118 0. This License Agreement applies to any software library or other
119program which contains a notice placed by the copyright holder or
120other authorized party saying it may be distributed under the terms of
121this Lesser General Public License (also called "this License").
122Each licensee is addressed as "you".
123
124 A "library" means a collection of software functions and/or data
125prepared so as to be conveniently linked with application programs
126(which use some of those functions and data) to form executables.
127
128 The "Library", below, refers to any such software library or work
129which has been distributed under these terms. A "work based on the
130Library" means either the Library or any derivative work under
131copyright law: that is to say, a work containing the Library or a
132portion of it, either verbatim or with modifications and/or translated
133straightforwardly into another language. (Hereinafter, translation is
134included without limitation in the term "modification".)
135
136 "Source code" for a work means the preferred form of the work for
137making modifications to it. For a library, complete source code means
138all the source code for all modules it contains, plus any associated
139interface definition files, plus the scripts used to control compilation
140and installation of the library.
141
142 Activities other than copying, distribution and modification are not
143covered by this License; they are outside its scope. The act of
144running a program using the Library is not restricted, and output from
145such a program is covered only if its contents constitute a work based
146on the Library (independent of the use of the Library in a tool for
147writing it). Whether that is true depends on what the Library does
148and what the program that uses the Library does.
149
150 1. You may copy and distribute verbatim copies of the Library's
151complete source code as you receive it, in any medium, provided that
152you conspicuously and appropriately publish on each copy an
153appropriate copyright notice and disclaimer of warranty; keep intact
154all the notices that refer to this License and to the absence of any
155warranty; and distribute a copy of this License along with the
156Library.
157
158 You may charge a fee for the physical act of transferring a copy,
159and you may at your option offer warranty protection in exchange for a
160fee.
161
162 2. You may modify your copy or copies of the Library or any portion
163of it, thus forming a work based on the Library, and copy and
164distribute such modifications or work under the terms of Section 1
165above, provided that you also meet all of these conditions:
166
167 a) The modified work must itself be a software library.
168
169 b) You must cause the files modified to carry prominent notices
170 stating that you changed the files and the date of any change.
171
172 c) You must cause the whole of the work to be licensed at no
173 charge to all third parties under the terms of this License.
174
175 d) If a facility in the modified Library refers to a function or a
176 table of data to be supplied by an application program that uses
177 the facility, other than as an argument passed when the facility
178 is invoked, then you must make a good faith effort to ensure that,
179 in the event an application does not supply such function or
180 table, the facility still operates, and performs whatever part of
181 its purpose remains meaningful.
182
183 (For example, a function in a library to compute square roots has
184 a purpose that is entirely well-defined independent of the
185 application. Therefore, Subsection 2d requires that any
186 application-supplied function or table used by this function must
187 be optional: if the application does not supply it, the square
188 root function must still compute square roots.)
189
190These requirements apply to the modified work as a whole. If
191identifiable sections of that work are not derived from the Library,
192and can be reasonably considered independent and separate works in
193themselves, then this License, and its terms, do not apply to those
194sections when you distribute them as separate works. But when you
195distribute the same sections as part of a whole which is a work based
196on the Library, the distribution of the whole must be on the terms of
197this License, whose permissions for other licensees extend to the
198entire whole, and thus to each and every part regardless of who wrote
199it.
200
201Thus, it is not the intent of this section to claim rights or contest
202your rights to work written entirely by you; rather, the intent is to
203exercise the right to control the distribution of derivative or
204collective works based on the Library.
205
206In addition, mere aggregation of another work not based on the Library
207with the Library (or with a work based on the Library) on a volume of
208a storage or distribution medium does not bring the other work under
209the scope of this License.
210
211 3. You may opt to apply the terms of the ordinary GNU General Public
212License instead of this License to a given copy of the Library. To do
213this, you must alter all the notices that refer to this License, so
214that they refer to the ordinary GNU General Public License, version 2,
215instead of to this License. (If a newer version than version 2 of the
216ordinary GNU General Public License has appeared, then you can specify
217that version instead if you wish.) Do not make any other change in
218these notices.
219
220 Once this change is made in a given copy, it is irreversible for
221that copy, so the ordinary GNU General Public License applies to all
222subsequent copies and derivative works made from that copy.
223
224 This option is useful when you wish to copy part of the code of
225the Library into a program that is not a library.
226
227 4. You may copy and distribute the Library (or a portion or
228derivative of it, under Section 2) in object code or executable form
229under the terms of Sections 1 and 2 above provided that you accompany
230it with the complete corresponding machine-readable source code, which
231must be distributed under the terms of Sections 1 and 2 above on a
232medium customarily used for software interchange.
233
234 If distribution of object code is made by offering access to copy
235from a designated place, then offering equivalent access to copy the
236source code from the same place satisfies the requirement to
237distribute the source code, even though third parties are not
238compelled to copy the source along with the object code.
239
240 5. A program that contains no derivative of any portion of the
241Library, but is designed to work with the Library by being compiled or
242linked with it, is called a "work that uses the Library". Such a
243work, in isolation, is not a derivative work of the Library, and
244therefore falls outside the scope of this License.
245
246 However, linking a "work that uses the Library" with the Library
247creates an executable that is a derivative of the Library (because it
248contains portions of the Library), rather than a "work that uses the
249library". The executable is therefore covered by this License.
250Section 6 states terms for distribution of such executables.
251
252 When a "work that uses the Library" uses material from a header file
253that is part of the Library, the object code for the work may be a
254derivative work of the Library even though the source code is not.
255Whether this is true is especially significant if the work can be
256linked without the Library, or if the work is itself a library. The
257threshold for this to be true is not precisely defined by law.
258
259 If such an object file uses only numerical parameters, data
260structure layouts and accessors, and small macros and small inline
261functions (ten lines or less in length), then the use of the object
262file is unrestricted, regardless of whether it is legally a derivative
263work. (Executables containing this object code plus portions of the
264Library will still fall under Section 6.)
265
266 Otherwise, if the work is a derivative of the Library, you may
267distribute the object code for the work under the terms of Section 6.
268Any executables containing that work also fall under Section 6,
269whether or not they are linked directly with the Library itself.
270
271 6. As an exception to the Sections above, you may also combine or
272link a "work that uses the Library" with the Library to produce a
273work containing portions of the Library, and distribute that work
274under terms of your choice, provided that the terms permit
275modification of the work for the customer's own use and reverse
276engineering for debugging such modifications.
277
278 You must give prominent notice with each copy of the work that the
279Library is used in it and that the Library and its use are covered by
280this License. You must supply a copy of this License. If the work
281during execution displays copyright notices, you must include the
282copyright notice for the Library among them, as well as a reference
283directing the user to the copy of this License. Also, you must do one
284of these things:
285
286 a) Accompany the work with the complete corresponding
287 machine-readable source code for the Library including whatever
288 changes were used in the work (which must be distributed under
289 Sections 1 and 2 above); and, if the work is an executable linked
290 with the Library, with the complete machine-readable "work that
291 uses the Library", as object code and/or source code, so that the
292 user can modify the Library and then relink to produce a modified
293 executable containing the modified Library. (It is understood
294 that the user who changes the contents of definitions files in the
295 Library will not necessarily be able to recompile the application
296 to use the modified definitions.)
297
298 b) Use a suitable shared library mechanism for linking with the
299 Library. A suitable mechanism is one that (1) uses at run time a
300 copy of the library already present on the user's computer system,
301 rather than copying library functions into the executable, and (2)
302 will operate properly with a modified version of the library, if
303 the user installs one, as long as the modified version is
304 interface-compatible with the version that the work was made with.
305
306 c) Accompany the work with a written offer, valid for at
307 least three years, to give the same user the materials
308 specified in Subsection 6a, above, for a charge no more
309 than the cost of performing this distribution.
310
311 d) If distribution of the work is made by offering access to copy
312 from a designated place, offer equivalent access to copy the above
313 specified materials from the same place.
314
315 e) Verify that the user has already received a copy of these
316 materials or that you have already sent this user a copy.
317
318 For an executable, the required form of the "work that uses the
319Library" must include any data and utility programs needed for
320reproducing the executable from it. However, as a special exception,
321the materials to be distributed need not include anything that is
322normally distributed (in either source or binary form) with the major
323components (compiler, kernel, and so on) of the operating system on
324which the executable runs, unless that component itself accompanies
325the executable.
326
327 It may happen that this requirement contradicts the license
328restrictions of other proprietary libraries that do not normally
329accompany the operating system. Such a contradiction means you cannot
330use both them and the Library together in an executable that you
331distribute.
332
333 7. You may place library facilities that are a work based on the
334Library side-by-side in a single library together with other library
335facilities not covered by this License, and distribute such a combined
336library, provided that the separate distribution of the work based on
337the Library and of the other library facilities is otherwise
338permitted, and provided that you do these two things:
339
340 a) Accompany the combined library with a copy of the same work
341 based on the Library, uncombined with any other library
342 facilities. This must be distributed under the terms of the
343 Sections above.
344
345 b) Give prominent notice with the combined library of the fact
346 that part of it is a work based on the Library, and explaining
347 where to find the accompanying uncombined form of the same work.
348
349 8. You may not copy, modify, sublicense, link with, or distribute
350the Library except as expressly provided under this License. Any
351attempt otherwise to copy, modify, sublicense, link with, or
352distribute the Library is void, and will automatically terminate your
353rights under this License. However, parties who have received copies,
354or rights, from you under this License will not have their licenses
355terminated so long as such parties remain in full compliance.
356
357 9. You are not required to accept this License, since you have not
358signed it. However, nothing else grants you permission to modify or
359distribute the Library or its derivative works. These actions are
360prohibited by law if you do not accept this License. Therefore, by
361modifying or distributing the Library (or any work based on the
362Library), you indicate your acceptance of this License to do so, and
363all its terms and conditions for copying, distributing or modifying
364the Library or works based on it.
365
366 10. Each time you redistribute the Library (or any work based on the
367Library), the recipient automatically receives a license from the
368original licensor to copy, distribute, link with or modify the Library
369subject to these terms and conditions. You may not impose any further
370restrictions on the recipients' exercise of the rights granted herein.
371You are not responsible for enforcing compliance by third parties with
372this License.
373
374 11. If, as a consequence of a court judgment or allegation of patent
375infringement or for any other reason (not limited to patent issues),
376conditions are imposed on you (whether by court order, agreement or
377otherwise) that contradict the conditions of this License, they do not
378excuse you from the conditions of this License. If you cannot
379distribute so as to satisfy simultaneously your obligations under this
380License and any other pertinent obligations, then as a consequence you
381may not distribute the Library at all. For example, if a patent
382license would not permit royalty-free redistribution of the Library by
383all those who receive copies directly or indirectly through you, then
384the only way you could satisfy both it and this License would be to
385refrain entirely from distribution of the Library.
386
387If any portion of this section is held invalid or unenforceable under any
388particular circumstance, the balance of the section is intended to apply,
389and the section as a whole is intended to apply in other circumstances.
390
391It is not the purpose of this section to induce you to infringe any
392patents or other property right claims or to contest validity of any
393such claims; this section has the sole purpose of protecting the
394integrity of the free software distribution system which is
395implemented by public license practices. Many people have made
396generous contributions to the wide range of software distributed
397through that system in reliance on consistent application of that
398system; it is up to the author/donor to decide if he or she is willing
399to distribute software through any other system and a licensee cannot
400impose that choice.
401
402This section is intended to make thoroughly clear what is believed to
403be a consequence of the rest of this License.
404
405 12. If the distribution and/or use of the Library is restricted in
406certain countries either by patents or by copyrighted interfaces, the
407original copyright holder who places the Library under this License may add
408an explicit geographical distribution limitation excluding those countries,
409so that distribution is permitted only in or among countries not thus
410excluded. In such case, this License incorporates the limitation as if
411written in the body of this License.
412
413 13. The Free Software Foundation may publish revised and/or new
414versions of the Lesser General Public License from time to time.
415Such new versions will be similar in spirit to the present version,
416but may differ in detail to address new problems or concerns.
417
418Each version is given a distinguishing version number. If the Library
419specifies a version number of this License which applies to it and
420"any later version", you have the option of following the terms and
421conditions either of that version or of any later version published by
422the Free Software Foundation. If the Library does not specify a
423license version number, you may choose any version ever published by
424the Free Software Foundation.
425
426 14. If you wish to incorporate parts of the Library into other free
427programs whose distribution conditions are incompatible with these,
428write to the author to ask for permission. For software which is
429copyrighted by the Free Software Foundation, write to the Free
430Software Foundation; we sometimes make exceptions for this. Our
431decision will be guided by the two goals of preserving the free status
432of all derivatives of our free software and of promoting the sharing
433and reuse of software generally.
434
435 NO WARRANTY
436
437 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
438WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
439EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
440OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
441KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
442IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
443PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
444LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
445THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
446
447 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
448WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
449AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
450FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
451CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
452LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
453RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
454FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
455SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
456DAMAGES.
457
458 END OF TERMS AND CONDITIONS
459
460 How to Apply These Terms to Your New Libraries
461
462 If you develop a new library, and you want it to be of the greatest
463possible use to the public, we recommend making it free software that
464everyone can redistribute and change. You can do so by permitting
465redistribution under these terms (or, alternatively, under the terms of the
466ordinary General Public License).
467
468 To apply these terms, attach the following notices to the library. It is
469safest to attach them to the start of each source file to most effectively
470convey the exclusion of warranty; and each file should have at least the
471"copyright" line and a pointer to where the full notice is found.
472
473 <one line to give the library's name and a brief idea of what it does.>
474 Copyright (C) <year> <name of author>
475
476 This library is free software; you can redistribute it and/or
477 modify it under the terms of the GNU Lesser General Public
478 License as published by the Free Software Foundation; either
479 version 2.1 of the License, or (at your option) any later version.
480
481 This library is distributed in the hope that it will be useful,
482 but WITHOUT ANY WARRANTY; without even the implied warranty of
483 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
484 Lesser General Public License for more details.
485
486 You should have received a copy of the GNU Lesser General Public
487 License along with this library; if not, see
488 <http://www.gnu.org/licenses/>.
489
490Also add information on how to contact you by electronic and paper mail.
491
492You should also get your employer (if you work as a programmer) or your
493school, if any, to sign a "copyright disclaimer" for the library, if
494necessary. Here is a sample; alter the names:
495
496 Yoyodyne, Inc., hereby disclaims all copyright interest in the
497 library `Frob' (a library for tweaking knobs) written by James Random Hacker.
498
499 <signature of Ty Coon>, 1 April 1990
500 Ty Coon, President of Vice
501
502That's all there is to it!
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..a716871
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,17 @@
1CFLAGS = -Wall -Wno-strict-overflow -std=gnu11 -fPIC -g -O2 -I.
2CFLAGS += -DHORUS_L2_RX -DINTERLEAVER -DRUN_TIME_TABLES -DSCRAMBLER -Dcodec2_EXPORTS
3CFLAGS += -Wno-incompatible-pointer-types-discards-qualifiers
4
5LIBSRC=codebook.c codebookd.c codebookge.c codebookmel.c codebooklspmelvq.c codebookjvm.c \
6 codebooknewamp1.c codebooknewamp1_energy.c codebooknewamp2.c codebooknewamp2_energy.c \
7 codec2.c codec2_fft.c interp.c kiss_fft.c kiss_fftr.c lpc.c lsp.c mbest.c \
8 newamp1.c newamp2.c nlp.c pack.c phase.c postfilter.c quantise.c sine.c
9
10all: main
11
12main: main.c $(LIBSRC)
13 clang $(CFLAGS) -o $@ $^
14
15.PHONY: clean
16clean:
17 rm -f main
diff --git a/README b/README
new file mode 100644
index 0000000..85341f7
--- /dev/null
+++ b/README
@@ -0,0 +1,9 @@
1
2This project is meant to generate a subset of the amazing codec2 library containing only the actual speech codec and having no further dependencies than a C99 compiler.
3
4The generate a stripped down version of codec2 that does not need CMake etc, just copy the stripdown.sh file to your codec2 directory and run it. This will generate the directory you see here.
5
6Codec 2 is an open source (LGPL 2.1) low bit rate speech codec:
7
8http://rowetel.com/codec2.html
9
diff --git a/_kiss_fft_guts.h b/_kiss_fft_guts.h
new file mode 100644
index 0000000..1c62a34
--- /dev/null
+++ b/_kiss_fft_guts.h
@@ -0,0 +1,164 @@
1/*
2Copyright (c) 2003-2010, Mark Borgerding
3
4All rights reserved.
5
6Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
7
8 * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
9 * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
10 * Neither the author nor the names of any contributors may be used to endorse or promote products derived from this software without specific prior written permission.
11
12THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
13*/
14
15/* kiss_fft.h
16 defines kiss_fft_scalar as either short or a float type
17 and defines
18 typedef struct { kiss_fft_scalar r; kiss_fft_scalar i; }kiss_fft_cpx; */
19#include "kiss_fft.h"
20#include <limits.h>
21
22#define MAXFACTORS 32
23/* e.g. an fft of length 128 has 4 factors
24 as far as kissfft is concerned
25 4*4*4*2
26 */
27
28struct kiss_fft_state{
29 int nfft;
30 int inverse;
31 int factors[2*MAXFACTORS];
32 kiss_fft_cpx twiddles[1];
33};
34
35/*
36 Explanation of macros dealing with complex math:
37
38 C_MUL(m,a,b) : m = a*b
39 C_FIXDIV( c , div ) : if a fixed point impl., c /= div. noop otherwise
40 C_SUB( res, a,b) : res = a - b
41 C_SUBFROM( res , a) : res -= a
42 C_ADDTO( res , a) : res += a
43 * */
44#ifdef FIXED_POINT
45#if (FIXED_POINT==32)
46# define FRACBITS 31
47# define SAMPPROD int64_t
48#define SAMP_MAX 2147483647
49#else
50# define FRACBITS 15
51# define SAMPPROD int32_t
52#define SAMP_MAX 32767
53#endif
54
55#define SAMP_MIN -SAMP_MAX
56
57#if defined(CHECK_OVERFLOW)
58# define CHECK_OVERFLOW_OP(a,op,b) \
59 if ( (SAMPPROD)(a) op (SAMPPROD)(b) > SAMP_MAX || (SAMPPROD)(a) op (SAMPPROD)(b) < SAMP_MIN ) { \
60 fprintf(stderr,"WARNING:overflow @ " __FILE__ "(%d): (%d " #op" %d) = %ld\n",__LINE__,(a),(b),(SAMPPROD)(a) op (SAMPPROD)(b) ); }
61#endif
62
63
64# define smul(a,b) ( (SAMPPROD)(a)*(b) )
65# define sround( x ) (kiss_fft_scalar)( ( (x) + (1<<(FRACBITS-1)) ) >> FRACBITS )
66
67# define S_MUL(a,b) sround( smul(a,b) )
68
69# define C_MUL(m,a,b) \
70 do{ (m).r = sround( smul((a).r,(b).r) - smul((a).i,(b).i) ); \
71 (m).i = sround( smul((a).r,(b).i) + smul((a).i,(b).r) ); }while(0)
72
73# define DIVSCALAR(x,k) \
74 (x) = sround( smul( x, SAMP_MAX/k ) )
75
76# define C_FIXDIV(c,div) \
77 do { DIVSCALAR( (c).r , div); \
78 DIVSCALAR( (c).i , div); }while (0)
79
80# define C_MULBYSCALAR( c, s ) \
81 do{ (c).r = sround( smul( (c).r , s ) ) ;\
82 (c).i = sround( smul( (c).i , s ) ) ; }while(0)
83
84#else /* not FIXED_POINT*/
85
86# define S_MUL(a,b) ( (a)*(b) )
87#define C_MUL(m,a,b) \
88 do{ (m).r = (a).r*(b).r - (a).i*(b).i;\
89 (m).i = (a).r*(b).i + (a).i*(b).r; }while(0)
90# define C_FIXDIV(c,div) /* NOOP */
91# define C_MULBYSCALAR( c, s ) \
92 do{ (c).r *= (s);\
93 (c).i *= (s); }while(0)
94#endif
95
96#ifndef CHECK_OVERFLOW_OP
97# define CHECK_OVERFLOW_OP(a,op,b) /* noop */
98#endif
99
100#define C_ADD( res, a,b)\
101 do { \
102 CHECK_OVERFLOW_OP((a).r,+,(b).r)\
103 CHECK_OVERFLOW_OP((a).i,+,(b).i)\
104 (res).r=(a).r+(b).r; (res).i=(a).i+(b).i; \
105 }while(0)
106#define C_SUB( res, a,b)\
107 do { \
108 CHECK_OVERFLOW_OP((a).r,-,(b).r)\
109 CHECK_OVERFLOW_OP((a).i,-,(b).i)\
110 (res).r=(a).r-(b).r; (res).i=(a).i-(b).i; \
111 }while(0)
112#define C_ADDTO( res , a)\
113 do { \
114 CHECK_OVERFLOW_OP((res).r,+,(a).r)\
115 CHECK_OVERFLOW_OP((res).i,+,(a).i)\
116 (res).r += (a).r; (res).i += (a).i;\
117 }while(0)
118
119#define C_SUBFROM( res , a)\
120 do {\
121 CHECK_OVERFLOW_OP((res).r,-,(a).r)\
122 CHECK_OVERFLOW_OP((res).i,-,(a).i)\
123 (res).r -= (a).r; (res).i -= (a).i; \
124 }while(0)
125
126
127#ifdef FIXED_POINT
128# define KISS_FFT_COS(phase) floorf(.5+SAMP_MAX * cosf (phase))
129# define KISS_FFT_SIN(phase) floorf(.5+SAMP_MAX * sinf (phase))
130# define HALF_OF(x) ((x)>>1)
131#elif defined(USE_SIMD)
132# define KISS_FFT_COS(phase) _mm_set1_ps( cosf(phase) )
133# define KISS_FFT_SIN(phase) _mm_set1_ps( sinf(phase) )
134# define HALF_OF(x) ((x)*_mm_set1_ps(.5))
135#else
136# define KISS_FFT_COS(phase) (kiss_fft_scalar) cosf(phase)
137# define KISS_FFT_SIN(phase) (kiss_fft_scalar) sinf(phase)
138# define HALF_OF(x) ((x)*.5)
139#endif
140
141#define kf_cexp(x,phase) \
142 do{ \
143 (x)->r = KISS_FFT_COS(phase);\
144 (x)->i = KISS_FFT_SIN(phase);\
145 }while(0)
146
147
148/* a debugging function */
149#define pcpx(c)\
150 fprintf(stderr,"%g + %gi\n",(double)((c)->r),(double)((c)->i) )
151
152
153#ifdef KISS_FFT_USE_ALLOCA
154// define this to allow use of alloca instead of malloc for temporary buffers
155// Temporary buffers are used in two case:
156// 1. FFT sizes that have "bad" factors. i.e. not 2,3 and 5
157// 2. "in-place" FFTs. Notice the quotes, since kissfft does not really do an in-place transform.
158#include <alloca.h>
159#define KISS_FFT_TMP_ALLOC(nbytes) alloca(nbytes)
160#define KISS_FFT_TMP_FREE(ptr)
161#else
162#define KISS_FFT_TMP_ALLOC(nbytes) KISS_FFT_MALLOC(nbytes)
163#define KISS_FFT_TMP_FREE(ptr) KISS_FFT_FREE(ptr)
164#endif
diff --git a/bpf.h b/bpf.h
new file mode 100644
index 0000000..0b0a6e2
--- /dev/null
+++ b/bpf.h
@@ -0,0 +1,106 @@
1#define BPF_N 101
2
3float bpf[]={
4 0.002174,
5 0.003245,
6 0.002147,
7 0.001866,
8 0.002764,
9 0.000567,
10 -0.001641,
11 -0.000565,
12 -0.002415,
13 -0.005837,
14 -0.003620,
15 -0.002828,
16 -0.006268,
17 -0.002787,
18 0.001963,
19 -0.001234,
20 0.001446,
21 0.009200,
22 0.005331,
23 0.003521,
24 0.011821,
25 0.006951,
26 -0.002015,
27 0.005137,
28 0.001828,
29 -0.013390,
30 -0.007058,
31 -0.003273,
32 -0.020458,
33 -0.014321,
34 0.001751,
35 -0.012891,
36 -0.009730,
37 0.018993,
38 0.008544,
39 0.000534,
40 0.035755,
41 0.029074,
42 -0.001192,
43 0.030852,
44 0.030983,
45 -0.029834,
46 -0.009550,
47 0.011945,
48 -0.081971,
49 -0.082875,
50 0.000423,
51 -0.133526,
52 -0.211778,
53 0.182628,
54 0.514906,
55 0.182628,
56 -0.211778,
57 -0.133526,
58 0.000423,
59 -0.082875,
60 -0.081971,
61 0.011945,
62 -0.009550,
63 -0.029834,
64 0.030983,
65 0.030852,
66 -0.001192,
67 0.029074,
68 0.035755,
69 0.000534,
70 0.008544,
71 0.018993,
72 -0.009730,
73 -0.012891,
74 0.001751,
75 -0.014321,
76 -0.020458,
77 -0.003273,
78 -0.007058,
79 -0.013390,
80 0.001828,
81 0.005137,
82 -0.002015,
83 0.006951,
84 0.011821,
85 0.003521,
86 0.005331,
87 0.009200,
88 0.001446,
89 -0.001234,
90 0.001963,
91 -0.002787,
92 -0.006268,
93 -0.002828,
94 -0.003620,
95 -0.005837,
96 -0.002415,
97 -0.000565,
98 -0.001641,
99 0.000567,
100 0.002764,
101 0.001866,
102 0.002147,
103 0.003245,
104 0.002174
105};
106
diff --git a/bpfb.h b/bpfb.h
new file mode 100644
index 0000000..73b1a69
--- /dev/null
+++ b/bpfb.h
@@ -0,0 +1,105 @@
1#define BPFB_N 101
2
3float bpfb[]={
4 0.003795,
5 0.006827,
6 0.002261,
7 0.002523,
8 0.005758,
9 -0.000264,
10 -0.000674,
11 0.003113,
12 -0.004144,
13 -0.004923,
14 0.000043,
15 -0.008017,
16 -0.008711,
17 -0.001802,
18 -0.010210,
19 -0.010428,
20 -0.000899,
21 -0.009413,
22 -0.009072,
23 0.003469,
24 -0.005335,
25 -0.004828,
26 0.010724,
27 0.000941,
28 0.000708,
29 0.018957,
30 0.007084,
31 0.004825,
32 0.025418,
33 0.010147,
34 0.004452,
35 0.027434,
36 0.007550,
37 -0.002861,
38 0.023483,
39 -0.001944,
40 -0.018138,
41 0.014122,
42 -0.017583,
43 -0.040768,
44 0.002598,
45 -0.036604,
46 -0.069541,
47 -0.004273,
48 -0.054876,
49 -0.107289,
50 0.010068,
51 -0.068052,
52 -0.200119,
53 0.207287,
54 0.597150,
55 0.207287,
56 -0.200119,
57 -0.068052,
58 0.010068,
59 -0.107289,
60 -0.054876,
61 -0.004273,
62 -0.069541,
63 -0.036604,
64 0.002598,
65 -0.040768,
66 -0.017583,
67 0.014122,
68 -0.018138,
69 -0.001944,
70 0.023483,
71 -0.002861,
72 0.007550,
73 0.027434,
74 0.004452,
75 0.010147,
76 0.025418,
77 0.004825,
78 0.007084,
79 0.018957,
80 0.000708,
81 0.000941,
82 0.010724,
83 -0.004828,
84 -0.005335,
85 0.003469,
86 -0.009072,
87 -0.009413,
88 -0.000899,
89 -0.010428,
90 -0.010210,
91 -0.001802,
92 -0.008711,
93 -0.008017,
94 0.000043,
95 -0.004923,
96 -0.004144,
97 0.003113,
98 -0.000674,
99 -0.000264,
100 0.005758,
101 0.002523,
102 0.002261,
103 0.006827,
104 0.003795
105}; \ No newline at end of file
diff --git a/c2wideband.h b/c2wideband.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/c2wideband.h
diff --git a/codebook.c b/codebook.c
new file mode 100644
index 0000000..0b491ee
--- /dev/null
+++ b/codebook.c
@@ -0,0 +1,245 @@
1/* THIS IS A GENERATED FILE. Edit generate_codebook.c and its input */
2
3/*
4 * This intermediary file and the files that used to create it are under
5 * The LGPL. See the file COPYING.
6 */
7
8#include "defines.h"
9
10 /* codebook/lsp1.txt */
11static const float codes0[] = {
12 225,
13 250,
14 275,
15 300,
16 325,
17 350,
18 375,
19 400,
20 425,
21 450,
22 475,
23 500,
24 525,
25 550,
26 575,
27 600
28};
29 /* codebook/lsp2.txt */
30static const float codes1[] = {
31 325,
32 350,
33 375,
34 400,
35 425,
36 450,
37 475,
38 500,
39 525,
40 550,
41 575,
42 600,
43 625,
44 650,
45 675,
46 700
47};
48 /* codebook/lsp3.txt */
49static const float codes2[] = {
50 500,
51 550,
52 600,
53 650,
54 700,
55 750,
56 800,
57 850,
58 900,
59 950,
60 1000,
61 1050,
62 1100,
63 1150,
64 1200,
65 1250
66};
67 /* codebook/lsp4.txt */
68static const float codes3[] = {
69 700,
70 800,
71 900,
72 1000,
73 1100,
74 1200,
75 1300,
76 1400,
77 1500,
78 1600,
79 1700,
80 1800,
81 1900,
82 2000,
83 2100,
84 2200
85};
86 /* codebook/lsp5.txt */
87static const float codes4[] = {
88 950,
89 1050,
90 1150,
91 1250,
92 1350,
93 1450,
94 1550,
95 1650,
96 1750,
97 1850,
98 1950,
99 2050,
100 2150,
101 2250,
102 2350,
103 2450
104};
105 /* codebook/lsp6.txt */
106static const float codes5[] = {
107 1100,
108 1200,
109 1300,
110 1400,
111 1500,
112 1600,
113 1700,
114 1800,
115 1900,
116 2000,
117 2100,
118 2200,
119 2300,
120 2400,
121 2500,
122 2600
123};
124 /* codebook/lsp7.txt */
125static const float codes6[] = {
126 1500,
127 1600,
128 1700,
129 1800,
130 1900,
131 2000,
132 2100,
133 2200,
134 2300,
135 2400,
136 2500,
137 2600,
138 2700,
139 2800,
140 2900,
141 3000
142};
143 /* codebook/lsp8.txt */
144static const float codes7[] = {
145 2300,
146 2400,
147 2500,
148 2600,
149 2700,
150 2800,
151 2900,
152 3000
153};
154 /* codebook/lsp9.txt */
155static const float codes8[] = {
156 2500,
157 2600,
158 2700,
159 2800,
160 2900,
161 3000,
162 3100,
163 3200
164};
165 /* codebook/lsp10.txt */
166static const float codes9[] = {
167 2900,
168 3100,
169 3300,
170 3500
171};
172
173const struct lsp_codebook lsp_cb[] = {
174 /* codebook/lsp1.txt */
175 {
176 1,
177 4,
178 16,
179 codes0
180 },
181 /* codebook/lsp2.txt */
182 {
183 1,
184 4,
185 16,
186 codes1
187 },
188 /* codebook/lsp3.txt */
189 {
190 1,
191 4,
192 16,
193 codes2
194 },
195 /* codebook/lsp4.txt */
196 {
197 1,
198 4,
199 16,
200 codes3
201 },
202 /* codebook/lsp5.txt */
203 {
204 1,
205 4,
206 16,
207 codes4
208 },
209 /* codebook/lsp6.txt */
210 {
211 1,
212 4,
213 16,
214 codes5
215 },
216 /* codebook/lsp7.txt */
217 {
218 1,
219 4,
220 16,
221 codes6
222 },
223 /* codebook/lsp8.txt */
224 {
225 1,
226 3,
227 8,
228 codes7
229 },
230 /* codebook/lsp9.txt */
231 {
232 1,
233 3,
234 8,
235 codes8
236 },
237 /* codebook/lsp10.txt */
238 {
239 1,
240 2,
241 4,
242 codes9
243 },
244 { 0, 0, 0, 0 }
245};
diff --git a/codebookd.c b/codebookd.c
new file mode 100644
index 0000000..5816402
--- /dev/null
+++ b/codebookd.c
@@ -0,0 +1,433 @@
1/* THIS IS A GENERATED FILE. Edit generate_codebook.c and its input */
2
3/*
4 * This intermediary file and the files that used to create it are under
5 * The LGPL. See the file COPYING.
6 */
7
8#include "defines.h"
9
10 /* codebook/dlsp1.txt */
11static const float codes0[] = {
12 25,
13 50,
14 75,
15 100,
16 125,
17 150,
18 175,
19 200,
20 225,
21 250,
22 275,
23 300,
24 325,
25 350,
26 375,
27 400,
28 425,
29 450,
30 475,
31 500,
32 525,
33 550,
34 575,
35 600,
36 625,
37 650,
38 675,
39 700,
40 725,
41 750,
42 775,
43 800
44};
45 /* codebook/dlsp2.txt */
46static const float codes1[] = {
47 25,
48 50,
49 75,
50 100,
51 125,
52 150,
53 175,
54 200,
55 225,
56 250,
57 275,
58 300,
59 325,
60 350,
61 375,
62 400,
63 425,
64 450,
65 475,
66 500,
67 525,
68 550,
69 575,
70 600,
71 625,
72 650,
73 675,
74 700,
75 725,
76 750,
77 775,
78 800
79};
80 /* codebook/dlsp3.txt */
81static const float codes2[] = {
82 25,
83 50,
84 75,
85 100,
86 125,
87 150,
88 175,
89 200,
90 225,
91 250,
92 275,
93 300,
94 325,
95 350,
96 375,
97 400,
98 425,
99 450,
100 475,
101 500,
102 525,
103 550,
104 575,
105 600,
106 625,
107 650,
108 675,
109 700,
110 725,
111 750,
112 775,
113 800
114};
115 /* codebook/dlsp4.txt */
116static const float codes3[] = {
117 25,
118 50,
119 75,
120 100,
121 125,
122 150,
123 175,
124 200,
125 250,
126 300,
127 350,
128 400,
129 450,
130 500,
131 550,
132 600,
133 650,
134 700,
135 750,
136 800,
137 850,
138 900,
139 950,
140 1000,
141 1050,
142 1100,
143 1150,
144 1200,
145 1250,
146 1300,
147 1350,
148 1400
149};
150 /* codebook/dlsp5.txt */
151static const float codes4[] = {
152 25,
153 50,
154 75,
155 100,
156 125,
157 150,
158 175,
159 200,
160 250,
161 300,
162 350,
163 400,
164 450,
165 500,
166 550,
167 600,
168 650,
169 700,
170 750,
171 800,
172 850,
173 900,
174 950,
175 1000,
176 1050,
177 1100,
178 1150,
179 1200,
180 1250,
181 1300,
182 1350,
183 1400
184};
185 /* codebook/dlsp6.txt */
186static const float codes5[] = {
187 25,
188 50,
189 75,
190 100,
191 125,
192 150,
193 175,
194 200,
195 250,
196 300,
197 350,
198 400,
199 450,
200 500,
201 550,
202 600,
203 650,
204 700,
205 750,
206 800,
207 850,
208 900,
209 950,
210 1000,
211 1050,
212 1100,
213 1150,
214 1200,
215 1250,
216 1300,
217 1350,
218 1400
219};
220 /* codebook/dlsp7.txt */
221static const float codes6[] = {
222 25,
223 50,
224 75,
225 100,
226 125,
227 150,
228 175,
229 200,
230 225,
231 250,
232 275,
233 300,
234 325,
235 350,
236 375,
237 400,
238 425,
239 450,
240 475,
241 500,
242 525,
243 550,
244 575,
245 600,
246 625,
247 650,
248 675,
249 700,
250 725,
251 750,
252 775,
253 800
254};
255 /* codebook/dlsp8.txt */
256static const float codes7[] = {
257 25,
258 50,
259 75,
260 100,
261 125,
262 150,
263 175,
264 200,
265 225,
266 250,
267 275,
268 300,
269 325,
270 350,
271 375,
272 400,
273 425,
274 450,
275 475,
276 500,
277 525,
278 550,
279 575,
280 600,
281 625,
282 650,
283 675,
284 700,
285 725,
286 750,
287 775,
288 800
289};
290 /* codebook/dlsp9.txt */
291static const float codes8[] = {
292 25,
293 50,
294 75,
295 100,
296 125,
297 150,
298 175,
299 200,
300 225,
301 250,
302 275,
303 300,
304 325,
305 350,
306 375,
307 400,
308 425,
309 450,
310 475,
311 500,
312 525,
313 550,
314 575,
315 600,
316 625,
317 650,
318 675,
319 700,
320 725,
321 750,
322 775,
323 800
324};
325 /* codebook/dlsp10.txt */
326static const float codes9[] = {
327 25,
328 50,
329 75,
330 100,
331 125,
332 150,
333 175,
334 200,
335 225,
336 250,
337 275,
338 300,
339 325,
340 350,
341 375,
342 400,
343 425,
344 450,
345 475,
346 500,
347 525,
348 550,
349 575,
350 600,
351 625,
352 650,
353 675,
354 700,
355 725,
356 750,
357 775,
358 800
359};
360
361const struct lsp_codebook lsp_cbd[] = {
362 /* codebook/dlsp1.txt */
363 {
364 1,
365 5,
366 32,
367 codes0
368 },
369 /* codebook/dlsp2.txt */
370 {
371 1,
372 5,
373 32,
374 codes1
375 },
376 /* codebook/dlsp3.txt */
377 {
378 1,
379 5,
380 32,
381 codes2
382 },
383 /* codebook/dlsp4.txt */
384 {
385 1,
386 5,
387 32,
388 codes3
389 },
390 /* codebook/dlsp5.txt */
391 {
392 1,
393 5,
394 32,
395 codes4
396 },
397 /* codebook/dlsp6.txt */
398 {
399 1,
400 5,
401 32,
402 codes5
403 },
404 /* codebook/dlsp7.txt */
405 {
406 1,
407 5,
408 32,
409 codes6
410 },
411 /* codebook/dlsp8.txt */
412 {
413 1,
414 5,
415 32,
416 codes7
417 },
418 /* codebook/dlsp9.txt */
419 {
420 1,
421 5,
422 32,
423 codes8
424 },
425 /* codebook/dlsp10.txt */
426 {
427 1,
428 5,
429 32,
430 codes9
431 },
432 { 0, 0, 0, 0 }
433};
diff --git a/codebookge.c b/codebookge.c
new file mode 100644
index 0000000..5bcb623
--- /dev/null
+++ b/codebookge.c
@@ -0,0 +1,279 @@
1/* THIS IS A GENERATED FILE. Edit generate_codebook.c and its input */
2
3/*
4 * This intermediary file and the files that used to create it are under
5 * The LGPL. See the file COPYING.
6 */
7
8#include "defines.h"
9
10 /* codebook/gecb.txt */
11static const float codes0[] = {
12 2.71, 12.0184,
13 0.04675, -2.73881,
14 0.120993, 8.38895,
15 -1.58028, -0.892307,
16 1.19307, -1.91561,
17 0.187101, -3.27679,
18 0.332251, -7.66455,
19 -1.47944, 31.2461,
20 1.52761, 27.7095,
21 -0.524379, 5.25012,
22 0.55333, 7.4388,
23 -0.843451, -1.95299,
24 2.26389, 8.61029,
25 0.143143, 2.36549,
26 0.616506, 1.28427,
27 -1.71133, 22.0967,
28 1.00813, 17.3965,
29 -0.106718, 1.41891,
30 -0.136246, 14.2736,
31 -1.70909, -20.5319,
32 1.65787, -3.39107,
33 0.138049, -4.95785,
34 0.536729, -1.94375,
35 0.196307, 36.8519,
36 1.27248, 22.5565,
37 -0.670219, -1.90604,
38 0.382092, 6.40113,
39 -0.756911, -4.90102,
40 1.82931, 4.6138,
41 0.318794, 0.73683,
42 0.612815, -2.07505,
43 -0.410151, 24.7871,
44 1.77602, 13.1909,
45 0.106457, -0.104492,
46 0.192206, 10.1838,
47 -1.82442, -7.71565,
48 0.931346, 4.34835,
49 0.308813, -4.086,
50 0.397143, -11.8089,
51 -0.048715, 41.2273,
52 0.877342, 35.8503,
53 -0.759794, 0.476634,
54 0.978593, 7.67467,
55 -1.19506, 3.03883,
56 2.63989, -3.41106,
57 0.191127, 3.60351,
58 0.402932, 1.0843,
59 -2.15202, 18.1076,
60 1.5468, 8.32271,
61 -0.143089, -4.07592,
62 -0.150142, 5.86674,
63 -1.40844, -3.2507,
64 1.56615, -10.4132,
65 0.178171, -10.2267,
66 0.362164, -0.028556,
67 -0.070125, 24.3907,
68 0.594752, 17.4828,
69 -0.28698, -6.90407,
70 0.464818, 10.2055,
71 -1.00684, -14.3572,
72 2.32957, -3.69161,
73 0.335745, 2.40714,
74 1.01966, -3.15565,
75 -1.25945, 7.9919,
76 2.38369, 19.6806,
77 -0.094947, -2.41374,
78 0.20933, 6.66477,
79 -2.22103, 1.37986,
80 1.29239, 2.04633,
81 0.243626, -0.890741,
82 0.428773, -7.19366,
83 -1.11374, 41.3414,
84 2.6098, 31.1405,
85 -0.446468, 2.53419,
86 0.490104, 4.62757,
87 -1.11723, -3.24174,
88 1.79156, 8.41493,
89 0.156012, 0.183336,
90 0.532447, 3.15455,
91 -0.764484, 18.514,
92 0.952395, 11.7713,
93 -0.332567, 0.346987,
94 0.202165, 14.7168,
95 -2.12924, -15.559,
96 1.35358, -1.92679,
97 -0.010963, -16.3364,
98 0.399053, -2.79057,
99 0.750657, 31.1483,
100 0.655743, 24.4819,
101 -0.45321, -0.735879,
102 0.2869, 6.5467,
103 -0.715673, -12.3578,
104 1.54849, 3.87217,
105 0.271874, 0.802339,
106 0.502073, -4.85485,
107 -0.497037, 17.7619,
108 1.19116, 13.9544,
109 0.01563, 1.33157,
110 0.341867, 8.93537,
111 -2.31601, -5.39506,
112 0.75861, 1.9645,
113 0.24132, -3.23769,
114 0.267151, -11.2344,
115 -0.273126, 32.6248,
116 1.75352, 40.432,
117 -0.784011, 3.04576,
118 0.705987, 5.66118,
119 -1.3864, 1.35356,
120 2.37646, 1.67485,
121 0.242973, 4.73218,
122 0.491227, 0.354061,
123 -1.60676, 8.65895,
124 1.16711, 5.9871,
125 -0.137601, -12.0417,
126 -0.251375, 10.3972,
127 -1.43151, -8.90411,
128 0.98828, -13.209,
129 0.261484, -6.35497,
130 0.395932, -0.702529,
131 0.283704, 26.8996,
132 0.420959, 15.4418,
133 -0.355804, -13.7278,
134 0.527372, 12.3985,
135 -1.16956, -15.9985,
136 1.90669, -5.81605,
137 0.354492, 3.85157,
138 0.82576, -4.16264,
139 -0.49019, 13.0572,
140 2.25577, 13.5264,
141 -0.004956, -3.23713,
142 0.026709, 7.86645,
143 -1.81037, -0.451183,
144 1.08383, -0.18362,
145 0.135836, -2.26658,
146 0.375812, -5.51225,
147 -1.96644, 38.6829,
148 1.97799, 24.5655,
149 -0.704656, 6.35881,
150 0.480786, 7.05175,
151 -0.976417, -2.42273,
152 2.50215, 6.75935,
153 0.083588, 3.2588,
154 0.543629, 0.910013,
155 -1.23196, 23.0915,
156 0.785492, 14.807,
157 -0.213554, 1.688,
158 0.004748, 18.1718,
159 -1.54719, -16.1168,
160 1.50104, -3.28114,
161 0.080133, -4.63472,
162 0.476592, -2.18093,
163 0.44247, 40.304,
164 1.07277, 27.592,
165 -0.594738, -4.16681,
166 0.42248, 7.61609,
167 -0.927521, -7.27441,
168 1.99162, 1.29636,
169 0.291307, 2.39878,
170 0.721081, -1.95062,
171 -0.804256, 24.9295,
172 1.64839, 19.1197,
173 0.060852, -0.590639,
174 0.266085, 9.10325,
175 -1.9574, -2.88461,
176 1.11693, 2.6724,
177 0.35458, -2.74854,
178 0.330733, -14.1561,
179 -0.527851, 39.5756,
180 0.991152, 43.195,
181 -0.589619, 1.26919,
182 0.787401, 8.73071,
183 -1.0138, 1.02507,
184 2.8254, 1.89538,
185 0.24089, 2.74557,
186 0.427195, 2.54446,
187 -1.95311, 12.244,
188 1.44862, 12.0607,
189 -0.210492, -3.37906,
190 -0.056713, 10.204,
191 -1.65237, -5.10274,
192 1.29475, -12.2708,
193 0.111608, -8.67592,
194 0.326634, -1.16763,
195 0.021781, 31.1258,
196 0.455335, 21.4684,
197 -0.37544, -3.37121,
198 0.39362, 11.302,
199 -0.851456, -19.4149,
200 2.10703, -2.22886,
201 0.373233, 1.92406,
202 0.884438, -1.72058,
203 -0.975127, 9.84013,
204 2.0033, 17.3954,
205 -0.036915, -1.11137,
206 0.148456, 5.39997,
207 -1.91441, 4.77382,
208 1.44791, 0.537122,
209 0.194979, -1.03818,
210 0.495771, -9.95502,
211 -1.05899, 32.9471,
212 2.01122, 32.4544,
213 -0.30965, 4.71911,
214 0.436082, 4.63552,
215 -1.23711, -1.25428,
216 2.02274, 9.42834,
217 0.190342, 1.46077,
218 0.479017, 2.48479,
219 -1.07848, 16.2217,
220 1.20764, 9.65421,
221 -0.258087, -1.67236,
222 0.071852, 13.416,
223 -1.87723, -16.072,
224 1.28957, -4.87118,
225 0.067713, -13.4427,
226 0.435551, -4.1655,
227 0.46614, 30.5895,
228 0.904895, 21.598,
229 -0.518369, -2.53205,
230 0.337363, 5.63726,
231 -0.554975, -17.4005,
232 1.69188, 1.14574,
233 0.227934, 0.889297,
234 0.587303, -5.72973,
235 -0.262133, 18.6666,
236 1.39505, 17.0029,
237 -0.01909, 4.30838,
238 0.304235, 12.6699,
239 -2.07406, -6.46084,
240 0.920546, 1.21296,
241 0.284927, -1.78547,
242 0.209724, -16.024,
243 -0.636067, 31.5768,
244 1.34989, 34.6775,
245 -0.971625, 5.30086,
246 0.590249, 4.44971,
247 -1.56787, 3.60239,
248 2.1455, 4.51666,
249 0.296022, 4.12017,
250 0.445299, 0.868772,
251 -1.44193, 14.1284,
252 1.35575, 6.0074,
253 -0.012814, -7.49657,
254 -0.43, 8.50012,
255 -1.20469, -7.11326,
256 1.10102, -6.83682,
257 0.196463, -6.234,
258 0.436747, -1.12979,
259 0.141052, 22.8549,
260 0.290821, 18.8114,
261 -0.529536, -7.73251,
262 0.63428, 10.7898,
263 -1.33472, -20.3258,
264 1.81564, -1.90332,
265 0.394778, 3.79758,
266 0.732682, -8.18382,
267 -0.741244, 11.7683
268};
269
270const struct lsp_codebook ge_cb[] = {
271 /* codebook/gecb.txt */
272 {
273 2,
274 8,
275 256,
276 codes0
277 },
278 { 0, 0, 0, 0 }
279};
diff --git a/codebookjvm.c b/codebookjvm.c
new file mode 100644
index 0000000..86f5b83
--- /dev/null
+++ b/codebookjvm.c
@@ -0,0 +1,1579 @@
1/* THIS IS A GENERATED FILE. Edit generate_codebook.c and its input */
2
3/*
4 * This intermediary file and the files that used to create it are under
5 * The LGPL. See the file COPYING.
6 */
7
8#include "defines.h"
9
10 /* codebook/lspjvm1.txt */
11static const float codes0[] = {
12 0.435217, 0.668864, 1.0103, 1.22042, 1.50398, 1.78468, 2.13546, 2.35747, 2.61891, 2.73804,
13 0.179285, 0.33316, 0.500638, 0.79695, 1.03999, 1.23497, 1.6523, 1.84823, 2.62556, 2.80497,
14 0.268785, 0.356576, 0.595753, 1.04434, 1.24938, 1.42868, 1.68699, 1.86469, 2.33991, 2.5138,
15 0.12007, 0.165585, 0.484694, 0.95916, 1.23753, 1.52915, 1.83751, 2.10773, 2.48749, 2.76685,
16 0.150214, 0.229487, 0.62824, 0.961255, 1.33706, 1.59831, 1.91974, 2.21786, 2.53732, 2.75956,
17 0.268624, 0.34598, 0.569637, 0.754737, 0.916538, 1.50854, 1.78635, 1.95442, 2.36953, 2.50182,
18 0.246064, 0.468874, 0.662711, 0.890015, 1.14715, 1.51043, 1.78106, 2.09594, 2.65539, 2.80037,
19 0.191631, 0.280628, 0.393229, 0.611761, 1.42017, 1.70774, 1.87303, 2.10155, 2.28035, 2.49949,
20 0.361668, 0.507047, 0.789974, 1.04599, 1.50238, 1.67703, 1.90534, 2.16255, 2.43226, 2.59087,
21 0.20816, 0.294285, 0.448634, 0.694229, 0.872517, 1.07032, 1.70335, 2.16874, 2.42619, 2.60366,
22 0.316939, 0.513618, 0.705487, 0.917036, 1.17599, 1.31114, 1.6186, 2.03784, 2.45052, 2.5794,
23 0.241068, 0.377728, 0.521595, 0.717203, 1.31041, 1.53999, 1.73643, 2.09893, 2.29792, 2.58735,
24 0.234937, 0.281875, 0.780422, 1.44073, 1.60943, 1.75643, 1.97721, 2.14861, 2.60203, 2.7225,
25 0.178679, 0.242672, 0.416988, 0.708348, 0.95562, 1.17667, 1.7818, 2.05449, 2.28159, 2.44811,
26 0.345036, 0.42108, 0.740887, 1.16544, 1.32494, 1.4888, 1.76346, 1.90617, 2.39505, 2.64916,
27 0.249586, 0.357494, 0.520747, 0.847195, 1.42841, 1.59778, 1.77819, 2.1785, 2.41344, 2.56466,
28 0.295235, 0.574231, 1.2491, 1.4641, 1.72756, 1.92679, 2.09536, 2.28483, 2.56707, 2.72248,
29 0.34193, 0.427307, 0.634001, 0.804212, 0.905629, 1.33337, 1.79033, 1.89276, 2.44582, 2.60283,
30 0.363948, 0.508985, 0.667357, 0.946354, 1.43756, 1.62654, 1.81114, 2.03909, 2.29188, 2.43549,
31 0.163514, 0.277407, 0.409207, 0.902065, 1.18907, 1.33964, 1.80241, 1.96077, 2.65293, 2.81899,
32 0.302643, 0.359753, 0.651207, 1.20802, 1.4237, 1.54815, 1.88213, 2.01559, 2.26054, 2.5789,
33 0.155928, 0.216908, 0.381812, 0.654803, 1.11237, 1.58993, 1.84756, 1.97672, 2.22408, 2.72534,
34 0.274981, 0.347675, 0.572, 0.736046, 0.894248, 1.63237, 1.89139, 2.05689, 2.6029, 2.72178,
35 0.154496, 0.243461, 0.348174, 0.689505, 1.57381, 1.70031, 1.94318, 2.10158, 2.56466, 2.77317,
36 0.292612, 0.466612, 0.795936, 1.04747, 1.41369, 1.75085, 2.06289, 2.34007, 2.61361, 2.76949,
37 0.242896, 0.3615, 0.555859, 0.793597, 0.932291, 1.40947, 1.86386, 2.00953, 2.4645, 2.67749,
38 0.221646, 0.344724, 0.554564, 0.729403, 1.13657, 1.30177, 1.52918, 2.16359, 2.39582, 2.61081,
39 0.160969, 0.224467, 0.371545, 0.626879, 1.16095, 1.44423, 1.67597, 1.87978, 2.47859, 2.67202,
40 0.214172, 0.341585, 0.676575, 0.977397, 1.32543, 1.7201, 2.07259, 2.36954, 2.63528, 2.77879,
41 0.203311, 0.289438, 0.458739, 0.914153, 1.12288, 1.30292, 1.58384, 1.88683, 2.18787, 2.42704,
42 0.280383, 0.3716, 0.824827, 1.10025, 1.23623, 1.39892, 1.57804, 2.016, 2.36897, 2.50673,
43 0.170627, 0.251778, 0.393686, 0.608347, 1.2876, 1.44667, 1.79328, 2.03655, 2.31015, 2.75244,
44 0.18058, 0.288746, 0.987854, 1.43171, 1.67722, 1.91566, 2.12494, 2.28945, 2.58961, 2.75426,
45 0.176335, 0.266263, 0.445421, 0.706403, 0.875402, 1.42292, 1.75867, 1.96091, 2.41068, 2.60175,
46 0.216173, 0.287404, 0.480696, 1.00977, 1.2913, 1.47664, 1.89558, 2.06429, 2.28406, 2.48311,
47 0.176523, 0.273934, 0.403407, 0.966139, 1.30472, 1.43661, 1.94473, 2.08484, 2.54446, 2.76242,
48 0.311836, 0.550501, 0.879591, 1.09623, 1.27666, 1.47786, 1.81771, 2.15434, 2.56047, 2.77984,
49 0.179765, 0.25056, 0.455939, 1.02389, 1.22513, 1.47566, 1.73462, 1.91871, 2.14734, 2.43824,
50 0.271033, 0.457235, 0.599622, 0.821049, 0.940125, 1.20094, 1.84972, 1.98666, 2.54817, 2.75158,
51 0.179326, 0.248002, 0.426405, 0.81706, 1.28589, 1.56502, 2.11736, 2.29871, 2.5724, 2.7527,
52 0.374409, 0.535936, 0.897009, 1.18507, 1.59157, 1.7572, 1.96794, 2.17999, 2.45739, 2.62264,
53 0.185472, 0.282752, 0.409439, 0.657499, 0.856446, 1.0294, 1.87993, 2.06932, 2.34474, 2.7531,
54 0.375964, 0.578457, 0.758945, 0.929339, 1.12748, 1.25944, 1.70411, 2.12297, 2.33603, 2.4983,
55 0.225641, 0.36103, 0.501679, 0.783379, 1.31485, 1.45262, 1.71415, 1.98716, 2.2257, 2.72436,
56 0.144996, 0.252919, 0.632145, 1.22604, 1.57534, 1.90155, 2.17148, 2.39055, 2.68229, 2.80983,
57 0.172022, 0.263338, 0.448634, 0.729435, 0.984007, 1.1716, 1.75705, 1.99023, 2.32131, 2.77121,
58 0.235731, 0.351117, 0.796871, 1.05571, 1.30022, 1.59182, 1.89587, 2.12292, 2.41789, 2.59982,
59 0.254053, 0.319371, 0.455623, 1.08614, 1.66467, 1.91588, 2.05908, 2.23342, 2.45204, 2.58679,
60 0.375538, 0.742993, 1.13991, 1.33776, 1.73556, 2.01391, 2.31501, 2.48343, 2.65158, 2.75521,
61 0.247245, 0.481131, 0.710366, 0.897602, 1.12109, 1.27171, 1.78735, 2.1995, 2.42966, 2.74067,
62 0.226103, 0.311441, 0.501648, 0.844424, 1.36282, 1.53134, 1.77747, 1.98993, 2.18749, 2.3585,
63 0.195862, 0.296224, 0.609554, 0.783241, 1.24347, 1.44548, 1.63703, 2.02264, 2.48356, 2.64614,
64 0.233302, 0.299441, 0.472792, 1.24946, 1.45788, 1.60186, 1.83143, 1.99372, 2.59719, 2.75543,
65 0.168096, 0.224183, 0.3827, 0.596214, 1.06059, 1.29442, 1.60576, 1.84849, 2.3577, 2.56919,
66 0.33005, 0.445912, 0.661713, 0.874446, 1.00079, 1.45297, 1.94399, 2.07692, 2.42388, 2.61236,
67 0.226382, 0.287303, 0.517631, 0.806229, 1.30901, 1.88528, 2.16051, 2.28641, 2.52638, 2.66082,
68 0.20317, 0.499314, 0.887358, 1.23507, 1.46292, 1.69826, 1.99932, 2.22922, 2.57161, 2.76669,
69 0.307531, 0.378353, 0.573606, 0.712218, 0.850169, 1.309, 2.05909, 2.26382, 2.49794, 2.67682,
70 0.276203, 0.51025, 0.6868, 0.902844, 1.2052, 1.32798, 1.71889, 2.03895, 2.25639, 2.69715,
71 0.161948, 0.229115, 0.393619, 0.683613, 1.13781, 1.32269, 1.78372, 1.96158, 2.38907, 2.63608,
72 0.201334, 0.276773, 0.468994, 0.967017, 1.47597, 1.63242, 1.96577, 2.19728, 2.48059, 2.70155,
73 0.214587, 0.315421, 0.469498, 0.733397, 1.146, 1.27791, 1.72784, 2.22713, 2.44026, 2.68112,
74 0.255602, 0.394609, 0.743393, 0.977796, 1.19908, 1.40597, 1.91834, 2.22483, 2.47919, 2.66339,
75 0.245989, 0.352625, 0.517055, 0.80283, 1.55871, 1.79565, 1.94405, 2.13364, 2.33327, 2.47998,
76 0.337423, 0.480433, 0.869036, 1.13957, 1.63076, 1.82296, 2.07484, 2.29261, 2.47913, 2.62532,
77 0.220974, 0.35885, 0.57164, 0.752791, 0.937013, 1.15172, 1.6744, 2.06247, 2.55872, 2.78484,
78 0.267518, 0.331708, 0.541111, 1.11655, 1.41112, 1.53287, 1.79295, 1.93352, 2.24894, 2.62864,
79 0.084613, 0.105083, 0.297424, 0.916949, 1.2563, 1.56703, 1.88539, 2.18987, 2.52279, 2.7921,
80 0.205328, 0.287223, 0.724462, 1.0324, 1.45771, 1.64217, 1.92563, 2.17552, 2.42964, 2.60549,
81 0.232554, 0.338724, 0.502115, 0.859975, 1.04409, 1.24565, 1.80656, 1.99964, 2.26116, 2.45998,
82 0.291638, 0.379172, 0.626072, 0.792796, 0.959124, 1.50489, 1.73447, 1.91961, 2.61436, 2.72271,
83 0.191554, 0.263114, 0.426797, 0.610628, 1.07741, 1.82954, 2.02195, 2.21057, 2.42765, 2.61383,
84 0.389151, 0.679476, 0.915414, 1.03664, 1.25085, 1.58661, 2.04097, 2.2815, 2.56794, 2.71882,
85 0.2032, 0.30128, 0.470357, 0.668716, 0.851737, 0.980327, 1.57086, 2.03762, 2.28907, 2.69388,
86 0.304064, 0.405934, 0.710274, 0.962705, 1.12882, 1.34167, 1.63505, 1.84538, 2.07992, 2.50751,
87 0.171777, 0.240705, 0.409371, 0.786432, 1.2232, 1.37569, 1.69176, 1.86608, 2.35041, 2.49394,
88 0.231251, 0.277994, 0.557867, 1.32582, 1.66035, 1.77948, 2.00714, 2.17232, 2.44046, 2.65231,
89 0.188101, 0.259494, 0.412543, 0.624843, 0.839549, 1.0337, 1.63413, 1.93194, 2.24608, 2.42577,
90 0.361304, 0.419465, 0.795676, 1.18461, 1.2968, 1.57845, 1.84175, 1.99736, 2.54054, 2.68714,
91 0.274372, 0.338938, 0.492443, 0.963516, 1.50951, 1.70638, 1.86988, 2.07717, 2.26128, 2.44418,
92 0.41599, 0.652103, 1.03129, 1.26955, 1.57275, 1.77297, 2.00466, 2.17527, 2.43061, 2.59655,
93 0.242045, 0.370942, 0.534392, 0.763529, 1.00117, 1.12976, 1.68219, 2.14464, 2.32448, 2.7157,
94 0.377438, 0.588168, 0.765394, 0.976873, 1.35665, 1.49009, 1.73797, 2.00677, 2.21369, 2.38997,
95 0.191625, 0.284123, 0.405342, 1.01678, 1.43273, 1.54759, 1.81393, 1.95832, 2.47077, 2.64926,
96 0.272672, 0.349555, 0.633911, 1.15223, 1.30394, 1.54764, 1.9195, 2.0477, 2.56278, 2.73058,
97 0.168423, 0.23633, 0.421468, 0.831345, 1.08354, 1.55345, 1.88073, 2.0647, 2.37086, 2.63295,
98 0.219318, 0.301481, 0.513617, 0.765086, 1.02602, 1.51465, 2.0482, 2.24857, 2.49981, 2.65707,
99 0.232695, 0.347947, 0.495203, 0.71883, 1.42301, 1.72249, 1.87958, 2.16504, 2.42025, 2.58966,
100 0.270284, 0.336865, 0.684929, 1.15579, 1.69042, 1.87674, 2.02736, 2.22618, 2.44675, 2.582,
101 0.149701, 0.193747, 0.352019, 0.520123, 0.823974, 1.43475, 1.68659, 1.96115, 2.37091, 2.69307,
102 0.254818, 0.412303, 0.601514, 0.771438, 1.17545, 1.37657, 1.53903, 1.93704, 2.40858, 2.56362,
103 0.233713, 0.355886, 0.593725, 0.76288, 1.27148, 1.5639, 1.79752, 2.09469, 2.53863, 2.71173,
104 0.179028, 0.237103, 0.396818, 1.04202, 1.63354, 1.76268, 2.12393, 2.32239, 2.58819, 2.75134,
105 0.182027, 0.251039, 0.434581, 0.714302, 0.950997, 1.4379, 1.81357, 1.9691, 2.14588, 2.35397,
106 0.501538, 0.692148, 0.84886, 1.07131, 1.35054, 1.48948, 1.84164, 2.10428, 2.34154, 2.51529,
107 0.27453, 0.38147, 0.526682, 0.922143, 1.44495, 1.5736, 1.85877, 2.06675, 2.2848, 2.62682,
108 0.360617, 0.583131, 0.979491, 1.25408, 1.48835, 1.79756, 2.21952, 2.48218, 2.74237, 2.86203,
109 0.140913, 0.220301, 0.619552, 0.818307, 1.05243, 1.33997, 1.83073, 2.13395, 2.53638, 2.75113,
110 0.293514, 0.391691, 0.79008, 0.96274, 1.16032, 1.5266, 1.80549, 2.04146, 2.36162, 2.56496,
111 0.199542, 0.290571, 0.452891, 0.689515, 1.25853, 1.40988, 1.88624, 2.22813, 2.46568, 2.72665,
112 0.29692, 0.356356, 0.784287, 0.99654, 1.14618, 1.62387, 1.8155, 2.0383, 2.60063, 2.7057,
113 0.206451, 0.276025, 0.537547, 0.802572, 1.22041, 1.64206, 1.86363, 2.00198, 2.21534, 2.58538,
114 0.33365, 0.464751, 0.653772, 0.966306, 1.10387, 1.3402, 1.7847, 1.91459, 2.47017, 2.68692,
115 0.181861, 0.24487, 0.376456, 0.554383, 1.3299, 1.81044, 2.04784, 2.20232, 2.66086, 2.81706,
116 0.450565, 0.647291, 0.951172, 1.22943, 1.51964, 1.68681, 2.04911, 2.26717, 2.50128, 2.6506,
117 0.219996, 0.320591, 0.427747, 0.601183, 0.753448, 0.929578, 1.74198, 2.28579, 2.47263, 2.74957,
118 0.333848, 0.423373, 0.658791, 1.0313, 1.22263, 1.36577, 1.90189, 2.1211, 2.29031, 2.53118,
119 0.166064, 0.233902, 0.383355, 0.661806, 1.22657, 1.39968, 1.77127, 1.97454, 2.17349, 2.56634,
120 0.189286, 0.243602, 0.390584, 1.38793, 1.58872, 1.76324, 2.09112, 2.31631, 2.59353, 2.75508,
121 0.158404, 0.224878, 0.385, 0.668463, 0.942954, 1.41197, 1.70031, 1.82807, 2.0594, 2.69255,
122 0.325989, 0.461263, 0.851471, 1.04571, 1.28403, 1.5162, 1.79734, 2.08839, 2.43767, 2.62721,
123 0.223709, 0.28919, 0.632812, 0.858738, 1.5419, 1.74677, 1.93574, 2.18482, 2.40433, 2.58301,
124 0.545842, 0.95242, 1.34082, 1.51684, 1.83888, 2.01289, 2.24497, 2.40317, 2.59228, 2.69112,
125 0.238526, 0.349079, 0.494582, 0.987665, 1.17075, 1.34823, 1.46864, 2.29696, 2.64416, 2.78738,
126 0.270857, 0.442003, 0.655998, 0.881913, 1.25925, 1.42836, 1.76987, 1.99853, 2.39559, 2.65284,
127 0.154384, 0.211806, 0.489481, 0.997257, 1.24982, 1.54123, 1.77886, 1.9494, 2.31914, 2.62339,
128 0.268258, 0.312888, 0.589114, 1.25863, 1.57271, 1.67543, 1.91278, 2.07046, 2.27993, 2.56423,
129 0.170715, 0.224965, 0.374011, 0.540197, 1.16189, 1.49907, 1.92587, 2.08257, 2.24662, 2.46972,
130 0.324358, 0.391989, 0.706816, 0.833614, 1.01573, 1.56899, 1.73598, 2.12707, 2.55841, 2.65387,
131 0.178059, 0.258575, 0.374125, 0.536831, 1.33483, 1.79863, 1.98698, 2.18925, 2.43227, 2.6267,
132 0.198857, 0.420955, 0.817664, 1.17836, 1.46674, 1.8213, 2.20733, 2.47441, 2.73828, 2.85119,
133 0.188344, 0.324302, 0.470468, 0.790033, 0.934101, 1.18872, 1.88717, 2.05283, 2.44832, 2.63024,
134 0.201295, 0.365646, 0.526513, 0.758388, 1.1401, 1.26733, 1.65017, 1.87934, 2.10289, 2.60029,
135 0.135058, 0.169428, 0.307348, 0.50316, 1.01808, 1.44795, 1.81098, 2.134, 2.48028, 2.75985,
136 0.178006, 0.26661, 0.390327, 0.928681, 1.50161, 1.62133, 1.87136, 2.02586, 2.58044, 2.7708,
137 0.246182, 0.42429, 0.644023, 0.801168, 1.11488, 1.27776, 1.50332, 2.07489, 2.2957, 2.50138,
138 0.322996, 0.430355, 0.6316, 1.0477, 1.22184, 1.42673, 1.90308, 2.03222, 2.51673, 2.70845,
139 0.292994, 0.430599, 0.619178, 0.794567, 1.28303, 1.65282, 1.84084, 2.06995, 2.38538, 2.52825,
140 0.525494, 0.787797, 1.12182, 1.38748, 1.67457, 1.93622, 2.22404, 2.39062, 2.63428, 2.74323,
141 0.299504, 0.409196, 0.602235, 0.892336, 1.05643, 1.25377, 1.48914, 1.63988, 2.42748, 2.65037,
142 0.423758, 0.52048, 0.758987, 1.04126, 1.17366, 1.42368, 1.81824, 1.93641, 2.363, 2.62664,
143 0.155042, 0.247496, 0.641445, 0.954509, 1.22497, 1.46585, 1.83784, 2.09046, 2.4515, 2.71616,
144 0.251949, 0.421094, 0.706797, 0.975659, 1.25991, 1.52007, 1.81631, 2.12202, 2.47491, 2.71667,
145 0.21522, 0.302248, 0.730598, 0.896343, 1.14557, 1.37019, 1.70069, 2.02256, 2.28327, 2.48922,
146 0.28523, 0.453559, 0.66367, 0.861526, 1.0116, 1.24742, 1.65598, 1.86129, 2.57894, 2.73133,
147 0.162067, 0.219409, 0.373433, 0.544669, 1.1033, 1.59718, 1.92104, 2.1434, 2.4065, 2.66048,
148 0.342367, 0.511499, 0.93135, 1.16322, 1.39365, 1.61115, 1.97277, 2.19442, 2.47077, 2.64926,
149 0.25101, 0.364125, 0.560956, 0.746545, 1.01984, 1.17072, 1.53295, 2.28867, 2.57709, 2.72307,
150 0.315001, 0.489412, 0.720682, 0.877607, 1.09047, 1.25385, 1.44822, 1.92295, 2.25589, 2.40863,
151 0.174666, 0.235793, 0.387644, 0.554402, 1.23109, 1.45614, 1.68803, 2.12745, 2.36703, 2.59727,
152 0.215113, 0.341915, 1.04372, 1.32275, 1.49541, 1.74189, 1.96116, 2.23982, 2.5449, 2.70394,
153 0.219852, 0.30177, 0.513912, 0.705474, 0.87754, 1.2959, 1.699, 1.98706, 2.28797, 2.49697,
154 0.290638, 0.366442, 0.655155, 1.04499, 1.17215, 1.53254, 1.80079, 1.94893, 2.50968, 2.66005,
155 0.232252, 0.31377, 0.658552, 0.941977, 1.46317, 1.66549, 1.86246, 2.02784, 2.53402, 2.70124,
156 0.326539, 0.552681, 1.12173, 1.33138, 1.52007, 1.86708, 2.08286, 2.33247, 2.60604, 2.73709,
157 0.190254, 0.340428, 0.492777, 0.739738, 0.895461, 1.07937, 1.64316, 1.79529, 2.49182, 2.72938,
158 0.283586, 0.41844, 0.587306, 0.870866, 1.41855, 1.57703, 1.7995, 2.0694, 2.27448, 2.4381,
159 0.235752, 0.35765, 0.502891, 1.01243, 1.25885, 1.40779, 1.82006, 1.95583, 2.5059, 2.73433,
160 0.278412, 0.343137, 0.849977, 1.2329, 1.3505, 1.59063, 1.78752, 2.09158, 2.54136, 2.66386,
161 0.162966, 0.243159, 0.439238, 0.684821, 0.887783, 1.4629, 1.88174, 2.04425, 2.28939, 2.705,
162 0.235063, 0.371799, 0.57821, 0.752199, 1.00855, 1.47628, 1.80491, 2.2714, 2.65504, 2.78965,
163 0.154939, 0.223696, 0.344718, 0.667555, 1.49566, 1.66944, 2.06988, 2.30721, 2.62769, 2.81134,
164 0.239702, 0.335917, 0.716616, 1.1318, 1.45251, 1.63913, 2.10552, 2.27982, 2.50203, 2.66922,
165 0.226818, 0.331261, 0.472705, 0.651974, 0.781639, 1.2198, 1.8229, 2.08273, 2.43933, 2.6109,
166 0.223413, 0.359594, 0.534704, 0.741518, 1.22589, 1.38987, 1.61819, 2.00991, 2.207, 2.45984,
167 0.171308, 0.268378, 0.383799, 0.858926, 1.37629, 1.51917, 1.7806, 1.92291, 2.62309, 2.8024,
168 0.140134, 0.21232, 0.443224, 0.967457, 1.26424, 1.56215, 1.92915, 2.21739, 2.66834, 2.83075,
169 0.221323, 0.322124, 0.485563, 0.818589, 1.01184, 1.19898, 1.42362, 1.6694, 2.15752, 2.36319,
170 0.369687, 0.525655, 0.719213, 0.939654, 1.13763, 1.31222, 1.59994, 1.82681, 2.35522, 2.58068,
171 0.211975, 0.314411, 0.489148, 0.739213, 1.3778, 1.5545, 1.82437, 2.15887, 2.35299, 2.72262,
172 0.170698, 0.296368, 0.934285, 1.24313, 1.5559, 1.86654, 2.15994, 2.36344, 2.58503, 2.73853,
173 0.189263, 0.305887, 0.439912, 0.78461, 1.22726, 1.34251, 1.58765, 1.75491, 2.43989, 2.72131,
174 0.296339, 0.385169, 0.612012, 1.08132, 1.27636, 1.43718, 1.87147, 2.00172, 2.33909, 2.64022,
175 0.229588, 0.320544, 0.517278, 0.969137, 1.14256, 1.62609, 1.87792, 2.11546, 2.54674, 2.70802,
176 0.248869, 0.420193, 0.732388, 1.04902, 1.30341, 1.60146, 1.94921, 2.23946, 2.64822, 2.82261,
177 0.2076, 0.29232, 0.496539, 0.857149, 1.18229, 1.39985, 1.71416, 1.86824, 2.02794, 2.20074,
178 0.225558, 0.396897, 0.541783, 0.873366, 1.17897, 1.29958, 1.67719, 1.8496, 2.33048, 2.75272,
179 0.176821, 0.231377, 0.372767, 0.508565, 1.15282, 1.80805, 2.11268, 2.25007, 2.57134, 2.74855,
180 0.352149, 0.515765, 1.02324, 1.26022, 1.44357, 1.62207, 1.8728, 2.10018, 2.48928, 2.67104,
181 0.166138, 0.263444, 0.370151, 0.590066, 0.754819, 0.940533, 1.76187, 1.94661, 2.44501, 2.75819,
182 0.342082, 0.476411, 0.656223, 0.851774, 1.00399, 1.15337, 1.6944, 2.06562, 2.25564, 2.44015,
183 0.227237, 0.376514, 0.514329, 0.894887, 1.14167, 1.28305, 1.83138, 1.9859, 2.33447, 2.78488,
184 0.215891, 0.269548, 0.684111, 1.40566, 1.67481, 1.80093, 2.17209, 2.3394, 2.59157, 2.7301,
185 0.23624, 0.400377, 0.533684, 0.750343, 0.910405, 1.08911, 1.73773, 1.91281, 2.19252, 2.68873,
186 0.169242, 0.284879, 0.916252, 1.16977, 1.43368, 1.64438, 1.91912, 2.16162, 2.48266, 2.68259,
187 0.270731, 0.336506, 0.477594, 1.04271, 1.60584, 1.79686, 1.94591, 2.16004, 2.35491, 2.52095,
188 0.420586, 0.652563, 1.11716, 1.40601, 1.74754, 1.94742, 2.20309, 2.35997, 2.5479, 2.68217,
189 0.281552, 0.395037, 0.640181, 0.944531, 1.19396, 1.33049, 1.71866, 2.18839, 2.44459, 2.57867,
190 0.311824, 0.476892, 0.633431, 0.845825, 1.33252, 1.49166, 1.69361, 2.04108, 2.28932, 2.4394,
191 0.133945, 0.20079, 0.647237, 0.927687, 1.18888, 1.36966, 1.69956, 1.97278, 2.29526, 2.67818,
192 0.204796, 0.278215, 0.443465, 1.27048, 1.40521, 1.64092, 1.82425, 2.32709, 2.59964, 2.77253,
193 0.18397, 0.244116, 0.410594, 0.639103, 1.22159, 1.40487, 1.62836, 1.90244, 2.16863, 2.3068,
194 0.343622, 0.434735, 0.666599, 0.868069, 1.04894, 1.53278, 1.81983, 1.97188, 2.2887, 2.44875,
195 0.238017, 0.320361, 0.657255, 0.917611, 1.30331, 1.72736, 1.98891, 2.18145, 2.44297, 2.61332,
196 0.323613, 0.545056, 0.930173, 1.22606, 1.44018, 1.7723, 2.05689, 2.34781, 2.68938, 2.82062,
197 0.28893, 0.401387, 0.617124, 0.836453, 0.990306, 1.26123, 1.91328, 2.11005, 2.32458, 2.55716,
198 0.33267, 0.480804, 0.656147, 0.880536, 1.02957, 1.23049, 1.76906, 1.9323, 2.20037, 2.58521,
199 0.185551, 0.265352, 0.409432, 0.608847, 1.0347, 1.22282, 1.87697, 2.17165, 2.4035, 2.66644,
200 0.155026, 0.223348, 0.401684, 1.07914, 1.41579, 1.62002, 2.04552, 2.25851, 2.63162, 2.80229,
201 0.183461, 0.263081, 0.425694, 0.635685, 1.18866, 1.35756, 1.57499, 2.08598, 2.28872, 2.51111,
202 0.314738, 0.463011, 0.648733, 0.877651, 1.00289, 1.26581, 2.00541, 2.1981, 2.48153, 2.71418,
203 0.244411, 0.318444, 0.546578, 0.793615, 1.32615, 1.73548, 1.9456, 2.11466, 2.31535, 2.47853,
204 0.326237, 0.54354, 0.987361, 1.30441, 1.68493, 1.90215, 2.20717, 2.37427, 2.55753, 2.71622,
205 0.157795, 0.283302, 0.430398, 0.660379, 0.81106, 1.14254, 1.4793, 1.71871, 2.67026, 2.84756,
206 0.220856, 0.283872, 0.779935, 1.07494, 1.31221, 1.62633, 1.83761, 1.96888, 2.15599, 2.60238,
207 0.140763, 0.205719, 0.406561, 0.762459, 1.04127, 1.48699, 1.83831, 2.11461, 2.55281, 2.77228,
208 0.140451, 0.39592, 0.79211, 1.108, 1.40264, 1.62308, 1.94315, 2.22795, 2.54616, 2.774,
209 0.229862, 0.336462, 0.54659, 0.81015, 1.20191, 1.34679, 1.82532, 2.09293, 2.28573, 2.47336,
210 0.224913, 0.328246, 0.517269, 0.874793, 1.01259, 1.45218, 1.69578, 2.01493, 2.51145, 2.67257,
211 0.247745, 0.335741, 0.546558, 0.710177, 1.17056, 1.72779, 1.97068, 2.15853, 2.48282, 2.62891,
212 0.398252, 0.555087, 0.890367, 1.1212, 1.38153, 1.60123, 1.86665, 2.06661, 2.40516, 2.58802,
213 0.198563, 0.288867, 0.478054, 0.658477, 0.851841, 1.0271, 1.53974, 2.02111, 2.57946, 2.78418,
214 0.304271, 0.371642, 0.66159, 1.06898, 1.22425, 1.41193, 1.68052, 1.86977, 2.10007, 2.30855,
215 0.188223, 0.257939, 0.432402, 0.73505, 1.31804, 1.48553, 1.82811, 2.04644, 2.30702, 2.45724,
216 0.246723, 0.297276, 0.604475, 1.3109, 1.57044, 1.68885, 1.91366, 2.05133, 2.55601, 2.71497,
217 0.158309, 0.234509, 0.435792, 0.6679, 0.957567, 1.23592, 1.59294, 1.81816, 2.30739, 2.76897,
218 0.419843, 0.501412, 0.766892, 1.07317, 1.18937, 1.48022, 1.7666, 1.92215, 2.53794, 2.69477,
219 0.27514, 0.335563, 0.678421, 1.08152, 1.59238, 1.77263, 1.93124, 2.1407, 2.3338, 2.49086,
220 0.372056, 0.856814, 1.23954, 1.40999, 1.6903, 1.86302, 2.0727, 2.27355, 2.53266, 2.69052,
221 0.321254, 0.422981, 0.604856, 0.793437, 0.912112, 1.12845, 1.79598, 2.17323, 2.36015, 2.53614,
222 0.395214, 0.598779, 0.771997, 0.946713, 1.21378, 1.33043, 1.66033, 1.97715, 2.16506, 2.34402,
223 0.225286, 0.317828, 0.464801, 1.11233, 1.36951, 1.512, 1.92195, 2.05341, 2.59352, 2.77729,
224 0.330612, 0.407807, 0.730129, 1.25973, 1.45981, 1.60567, 1.98131, 2.13701, 2.46597, 2.67972,
225 0.213145, 0.305305, 0.507016, 0.662299, 1.05685, 1.47986, 1.6719, 2.10271, 2.36987, 2.58199,
226 0.219658, 0.296096, 0.443507, 0.610973, 0.799691, 1.67658, 1.96549, 2.15323, 2.50223, 2.693,
227 0.174947, 0.257739, 0.373547, 0.552567, 1.40532, 1.61425, 1.84892, 2.11779, 2.31788, 2.7119,
228 0.209667, 0.297529, 0.756195, 1.0953, 1.5642, 1.84477, 2.1037, 2.29266, 2.52005, 2.67949,
229 0.170138, 0.24031, 0.452247, 0.684414, 0.880102, 1.36692, 1.74165, 2.13129, 2.50573, 2.73261,
230 0.278164, 0.468635, 0.707518, 0.853693, 1.05478, 1.21046, 1.54094, 2.17456, 2.41066, 2.61214,
231 0.155738, 0.23889, 0.352836, 0.621012, 1.44144, 1.6197, 1.82517, 1.97533, 2.52537, 2.74857,
232 0.223776, 0.274424, 0.479048, 0.797871, 1.69419, 1.87813, 2.13528, 2.37373, 2.59542, 2.72979,
233 0.151088, 0.198286, 0.326558, 0.536276, 0.845893, 1.14165, 1.46056, 1.76287, 2.02585, 2.1773,
234 0.434445, 0.614208, 0.887657, 1.02845, 1.19136, 1.3922, 1.78689, 2.06248, 2.4234, 2.61936,
235 0.180755, 0.275311, 0.397787, 0.859366, 1.40976, 1.52332, 1.90885, 2.08232, 2.38972, 2.74389,
236 0.275975, 0.508416, 0.889894, 1.31893, 1.63331, 1.90473, 2.16901, 2.37466, 2.72697, 2.84767,
237 0.156239, 0.262624, 0.406657, 0.739074, 1.04449, 1.20123, 1.81089, 2.0056, 2.5817, 2.80489,
238 0.195391, 0.258771, 0.654924, 0.824371, 1.31526, 1.50073, 1.76594, 2.06399, 2.34118, 2.51366,
239 0.178034, 0.301047, 0.46302, 0.716172, 1.19887, 1.34045, 1.83456, 2.02213, 2.40075, 2.77629,
240 0.340368, 0.404236, 0.843747, 1.03924, 1.20211, 1.70805, 1.91495, 2.16951, 2.52152, 2.62335,
241 0.218465, 0.289694, 0.528045, 0.817051, 1.13234, 1.58046, 1.83889, 1.98339, 2.14749, 2.34813,
242 0.322509, 0.458058, 0.654679, 0.958976, 1.11821, 1.32157, 1.90139, 2.04641, 2.36093, 2.66422,
243 0.191821, 0.252321, 0.389176, 0.581111, 1.52967, 1.93169, 2.08361, 2.27046, 2.56685, 2.71388,
244 0.493961, 0.710827, 0.98226, 1.19627, 1.41933, 1.62091, 1.92801, 2.14565, 2.42977, 2.60197,
245 0.213148, 0.311589, 0.424636, 0.602664, 0.736895, 1.02216, 1.99228, 2.21853, 2.61163, 2.85032,
246 0.288129, 0.434441, 0.629313, 0.856153, 1.28967, 1.42452, 1.8758, 2.15024, 2.35181, 2.53684,
247 0.160031, 0.230716, 0.406654, 0.870424, 1.15652, 1.39232, 1.8041, 1.95144, 2.21048, 2.73516,
248 0.22934, 0.293962, 0.503222, 1.2421, 1.47582, 1.62465, 1.99868, 2.1445, 2.57855, 2.75327,
249 0.15877, 0.220035, 0.363386, 0.577761, 0.96309, 1.17494, 1.73817, 1.9792, 2.16244, 2.66192,
250 0.346062, 0.444816, 0.716985, 1.18072, 1.37058, 1.523, 1.89217, 2.06668, 2.3958, 2.62766,
251 0.307495, 0.38933, 0.612607, 0.969283, 1.55771, 1.83994, 1.99674, 2.17238, 2.42063, 2.5392,
252 0.437804, 0.726957, 1.29117, 1.5033, 1.76543, 1.96212, 2.16365, 2.33623, 2.57962, 2.70852,
253 0.232184, 0.333678, 0.528368, 0.706749, 1.20328, 1.37902, 1.61116, 2.15468, 2.5929, 2.75032,
254 0.272652, 0.46171, 0.625777, 0.839609, 1.34202, 1.49673, 1.71538, 2.13757, 2.37004, 2.59739,
255 0.184908, 0.302324, 0.454883, 0.880307, 1.10438, 1.29253, 1.7772, 1.94336, 2.44417, 2.62273,
256 0.265644, 0.341261, 0.553228, 1.13947, 1.42715, 1.56044, 1.93394, 2.08413, 2.39331, 2.65413,
257 0.16792, 0.207301, 0.370331, 0.525538, 1.03089, 1.36816, 1.78247, 2.0624, 2.33276, 2.5263,
258 0.343172, 0.433912, 0.717501, 0.889734, 1.05206, 1.69528, 2.05316, 2.20846, 2.60887, 2.71832,
259 0.216527, 0.305247, 0.44589, 0.729271, 1.63974, 1.90328, 2.05335, 2.22125, 2.43225, 2.56802,
260 0.110545, 0.209955, 0.844788, 1.1742, 1.4922, 1.81024, 2.17727, 2.4405, 2.69729, 2.83523,
261 0.217384, 0.337412, 0.488999, 0.761842, 0.879715, 1.20953, 1.97075, 2.1208, 2.61165, 2.79176,
262 0.190459, 0.296484, 0.469967, 0.800649, 1.10556, 1.27853, 1.51694, 1.69307, 2.11442, 2.71674,
263 0.134814, 0.175978, 0.300425, 0.496817, 1.2443, 1.48531, 1.86172, 2.13123, 2.48505, 2.77388,
264 0.210174, 0.278266, 0.435508, 0.927538, 1.60691, 1.7539, 1.95755, 2.16628, 2.39852, 2.74961,
265 0.213766, 0.3153, 0.509924, 0.70993, 0.964724, 1.10678, 1.38261, 2.00107, 2.32321, 2.56531,
266 0.400615, 0.524954, 0.798552, 1.01285, 1.13549, 1.47485, 1.98903, 2.13091, 2.50797, 2.67946,
267 0.2494, 0.377023, 0.519635, 0.754227, 1.45956, 1.64276, 1.82896, 2.07788, 2.29823, 2.46753,
268 0.473365, 0.683973, 1.05234, 1.37583, 1.54811, 1.74759, 2.1393, 2.31877, 2.60998, 2.73925,
269 0.203877, 0.341791, 0.48518, 0.884069, 1.09759, 1.26953, 1.47992, 1.75788, 2.6484, 2.82239,
270 0.273046, 0.404254, 0.555403, 0.954547, 1.29123, 1.39902, 1.72289, 1.90344, 2.17198, 2.64531,
271 0.040369, 0.117266, 0.617136, 0.892043, 1.26033, 1.54165, 1.85938, 2.1531, 2.49823, 2.76189,
272 0.132414, 0.211358, 0.742445, 1.06686, 1.33108, 1.57079, 1.86746, 2.13253, 2.47962, 2.73108,
273 0.237329, 0.326529, 0.612538, 0.790663, 0.990133, 1.41374, 1.73823, 1.93691, 2.16773, 2.45163,
274 0.27396, 0.405794, 0.57253, 0.933672, 1.05782, 1.39795, 1.85653, 1.99755, 2.59949, 2.76004,
275 0.199334, 0.29838, 0.442931, 0.628638, 1.30321, 1.64014, 1.80402, 2.11302, 2.37545, 2.54895,
276 0.350188, 0.50201, 0.821298, 1.03864, 1.36929, 1.5924, 1.91082, 2.15649, 2.46051, 2.65326,
277 0.281558, 0.399892, 0.573105, 0.753299, 0.900613, 1.05457, 1.58199, 2.17844, 2.43035, 2.61604,
278 0.344653, 0.543532, 0.703715, 0.862285, 1.19822, 1.33821, 1.57908, 2.06077, 2.30675, 2.48575,
279 0.220701, 0.326795, 0.520618, 0.755133, 1.29555, 1.45189, 1.6905, 2.20005, 2.41427, 2.61591,
280 0.279478, 0.332193, 0.801527, 1.34597, 1.48748, 1.6785, 1.9222, 2.10002, 2.58557, 2.71339,
281 0.163502, 0.212169, 0.365096, 0.525464, 0.869846, 1.20881, 1.79399, 2.04031, 2.29718, 2.4698,
282 0.285531, 0.341488, 0.754059, 1.17002, 1.30084, 1.5137, 1.69986, 1.88992, 2.58146, 2.70687,
283 0.249595, 0.366997, 0.626427, 0.945219, 1.40704, 1.56056, 1.83166, 2.23115, 2.46635, 2.65452,
284 0.271671, 0.443136, 1.15641, 1.40646, 1.67652, 1.85648, 2.06322, 2.2305, 2.47584, 2.63958,
285 0.28662, 0.427806, 0.63732, 0.803409, 0.996161, 1.26638, 1.68175, 2.00397, 2.39465, 2.58855,
286 0.314906, 0.440519, 0.612129, 0.896126, 1.47241, 1.71769, 1.88135, 2.09944, 2.36917, 2.49547,
287 0.170277, 0.25127, 0.405477, 0.915641, 1.12689, 1.43663, 1.71477, 1.8932, 2.55299, 2.73852,
288 0.27941, 0.337137, 0.734563, 1.28105, 1.4806, 1.61188, 1.85321, 1.99488, 2.41605, 2.65483,
289 0.165776, 0.226083, 0.417544, 0.744574, 1.04447, 1.53489, 1.80849, 1.94495, 2.13849, 2.60179,
290 0.264579, 0.336652, 0.542033, 0.71019, 0.913338, 1.65575, 1.81776, 2.23196, 2.52444, 2.65852,
291 0.158194, 0.235588, 0.338347, 0.541657, 1.58338, 1.76629, 2.00914, 2.24334, 2.50394, 2.77516,
292 0.332612, 0.50962, 0.822935, 1.07588, 1.45429, 1.65079, 1.97445, 2.25128, 2.53734, 2.74512,
293 0.262817, 0.359709, 0.520893, 0.707667, 0.818364, 1.43885, 1.97125, 2.08767, 2.49701, 2.64644,
294 0.2332, 0.399599, 0.612456, 0.775547, 1.19919, 1.35576, 1.6469, 2.13625, 2.34249, 2.69574,
295 0.149687, 0.238538, 0.372248, 0.63452, 1.25581, 1.43379, 1.77004, 1.92875, 2.61191, 2.82493,
296 0.137016, 0.210297, 0.591489, 1.12545, 1.37565, 1.6853, 2.08961, 2.39089, 2.70446, 2.84443,
297 0.21349, 0.341024, 0.541716, 0.750061, 1.0882, 1.24458, 1.55534, 1.96557, 2.1879, 2.38371,
298 0.300159, 0.489291, 0.825022, 1.0371, 1.19409, 1.34738, 1.68475, 2.02494, 2.46561, 2.74097,
299 0.170029, 0.255033, 0.392758, 0.727117, 1.38207, 1.57968, 1.80091, 1.95907, 2.28234, 2.7288,
300 0.175883, 0.365509, 1.11217, 1.38587, 1.72039, 1.97781, 2.2453, 2.42161, 2.62957, 2.754,
301 0.16259, 0.248164, 0.45463, 0.763209, 0.966031, 1.28234, 1.73074, 1.93805, 2.47938, 2.66756,
302 0.258043, 0.345866, 0.55652, 0.981312, 1.36153, 1.48238, 1.87224, 2.15823, 2.36227, 2.55503,
303 0.234139, 0.348843, 0.528234, 0.987884, 1.19522, 1.42215, 1.96003, 2.12737, 2.60332, 2.793,
304 0.179699, 0.559209, 0.867682, 1.08884, 1.31689, 1.5715, 1.9222, 2.19739, 2.50112, 2.72868,
305 0.216784, 0.310791, 0.487492, 0.932903, 1.20195, 1.36655, 1.8004, 1.9775, 2.17426, 2.53707,
306 0.186878, 0.400655, 0.580952, 0.846287, 1.10387, 1.26678, 1.84277, 2.01959, 2.488, 2.71722,
307 0.164641, 0.248712, 0.389358, 0.772822, 1.21256, 1.36992, 2.02587, 2.27762, 2.61752, 2.80953,
308 0.351899, 0.520326, 0.926597, 1.21965, 1.50984, 1.67684, 1.92174, 2.11125, 2.35638, 2.54593,
309 0.242182, 0.365285, 0.506156, 0.71602, 0.865221, 1.01169, 1.78692, 2.12298, 2.35088, 2.76773,
310 0.413776, 0.559566, 0.7358, 0.928997, 1.07912, 1.26718, 1.88007, 2.15249, 2.32483, 2.53986,
311 0.210597, 0.329568, 0.469735, 0.78859, 1.21549, 1.31981, 1.71146, 2.05899, 2.24544, 2.65373,
312 0.197937, 0.254148, 0.477985, 1.22709, 1.62992, 1.76743, 2.18698, 2.3851, 2.59487, 2.72554,
313 0.205489, 0.333855, 0.523915, 0.706275, 1.10215, 1.24661, 1.6489, 2.02683, 2.28169, 2.75931,
314 0.230328, 0.322431, 0.861834, 1.14561, 1.34721, 1.57611, 1.80728, 2.00482, 2.35437, 2.57225,
315 0.224898, 0.282022, 0.506636, 1.1523, 1.62656, 1.75209, 2.02818, 2.21882, 2.48896, 2.67046,
316 0.313732, 0.625469, 1.16447, 1.49908, 1.74961, 2.01853, 2.26223, 2.4296, 2.69216, 2.8225,
317 0.375623, 0.575307, 0.7912, 0.93577, 1.09694, 1.34339, 1.80799, 2.18731, 2.51972, 2.6948,
318 0.236981, 0.332412, 0.47927, 0.844461, 1.34764, 1.49073, 1.68394, 2.03914, 2.29762, 2.45843,
319 0.129047, 0.20625, 0.636751, 0.865101, 1.13689, 1.35661, 1.7048, 1.91668, 2.51836, 2.75632,
320 0.195171, 0.266517, 0.414793, 1.23956, 1.45291, 1.60836, 1.83305, 2.0478, 2.47352, 2.62199,
321 0.165853, 0.21272, 0.372757, 0.536136, 1.01394, 1.33963, 1.55512, 1.94574, 2.23628, 2.44095,
322 0.256981, 0.368868, 0.635878, 0.802543, 1.08476, 1.43912, 1.81473, 2.12052, 2.45815, 2.62146,
323 0.214382, 0.297135, 0.445091, 0.70205, 1.3651, 1.85126, 2.06703, 2.2073, 2.47073, 2.61243,
324 0.34071, 0.532103, 0.935278, 1.17102, 1.37789, 1.6386, 1.96527, 2.24616, 2.63127, 2.80634,
325 0.310524, 0.412051, 0.582478, 0.768755, 0.871594, 1.11985, 1.92635, 2.20751, 2.40709, 2.63663,
326 0.249349, 0.443517, 0.631532, 0.810096, 1.20513, 1.35721, 1.6074, 1.98416, 2.20802, 2.64511,
327 0.14309, 0.185312, 0.325214, 0.504, 1.13447, 1.32791, 1.67365, 2.0069, 2.38928, 2.74609,
328 0.226575, 0.298946, 0.453938, 0.998061, 1.3946, 1.59728, 2.06418, 2.22325, 2.42547, 2.56946,
329 0.183924, 0.255181, 0.415834, 0.624247, 1.04234, 1.20308, 1.55524, 2.12531, 2.40035, 2.66192,
330 0.27561, 0.365968, 0.654909, 0.990108, 1.1708, 1.45533, 2.07756, 2.25267, 2.50232, 2.68595,
331 0.204334, 0.287844, 0.39481, 0.761295, 1.5012, 1.78471, 1.93557, 2.15283, 2.34926, 2.54564,
332 0.342976, 0.527539, 0.917466, 1.16059, 1.49953, 1.76183, 2.09527, 2.30187, 2.54057, 2.69469,
333 0.202374, 0.333367, 0.480179, 0.708677, 0.819505, 1.10529, 1.80664, 1.95335, 2.61084, 2.7975,
334 0.307033, 0.368471, 0.602486, 1.10861, 1.41335, 1.52864, 1.79852, 1.98614, 2.16905, 2.43726,
335 0.144073, 0.196932, 0.386988, 0.819061, 1.28977, 1.62507, 1.90192, 2.13611, 2.48302, 2.70797,
336 0.17676, 0.268627, 0.662082, 1.05687, 1.54797, 1.71139, 1.97294, 2.24991, 2.54447, 2.76109,
337 0.191409, 0.292985, 0.492193, 0.800526, 1.04184, 1.27855, 1.83663, 2.02868, 2.24939, 2.62778,
338 0.324102, 0.399146, 0.687435, 0.868704, 1.02296, 1.58208, 1.85385, 1.98188, 2.55491, 2.67706,
339 0.229172, 0.302836, 0.481418, 0.704363, 0.967567, 1.82827, 2.0973, 2.25847, 2.54911, 2.70465,
340 0.467124, 0.696788, 0.9395, 1.09499, 1.27754, 1.4885, 1.89628, 2.15847, 2.47418, 2.65999,
341 0.175418, 0.234039, 0.367674, 0.513586, 0.747619, 1.0084, 1.58316, 2.05311, 2.36329, 2.68115,
342 0.410273, 0.561949, 0.736215, 0.956685, 1.13569, 1.28842, 1.75061, 1.93771, 2.15132, 2.48934,
343 0.204541, 0.277613, 0.529607, 0.722971, 1.19998, 1.44734, 1.71563, 1.92105, 2.35778, 2.50749,
344 0.253116, 0.311907, 0.696982, 1.32008, 1.57542, 1.70532, 2.00507, 2.16867, 2.46188, 2.66505,
345 0.163657, 0.237902, 0.393374, 0.60949, 0.854272, 1.08998, 1.52639, 1.84234, 2.12625, 2.67905,
346 0.448627, 0.530664, 0.812719, 1.0952, 1.20764, 1.57541, 1.88421, 2.0343, 2.55301, 2.68835,
347 0.262717, 0.338748, 0.512685, 1.00354, 1.48018, 1.62208, 1.82852, 2.14242, 2.35646, 2.51153,
348 0.417111, 0.636688, 1.03657, 1.31988, 1.67992, 1.87339, 2.07372, 2.2494, 2.50773, 2.65105,
349 0.263698, 0.461151, 0.618737, 0.830471, 1.00404, 1.15887, 1.80157, 2.02022, 2.30656, 2.74304,
350 0.387779, 0.575108, 0.729791, 0.932981, 1.36116, 1.50516, 1.75118, 2.06847, 2.33826, 2.48764,
351 0.18151, 0.265666, 0.454631, 1.08238, 1.2873, 1.5792, 1.85118, 2.09696, 2.46724, 2.64693,
352 0.277668, 0.345119, 0.602341, 1.1792, 1.37899, 1.54562, 1.81386, 1.96259, 2.4918, 2.66445,
353 0.17932, 0.24808, 0.456925, 0.722589, 1.12693, 1.57945, 1.7994, 1.95067, 2.48412, 2.70724,
354 0.314322, 0.381145, 0.608651, 0.727613, 0.890472, 1.61028, 2.13617, 2.25836, 2.59638, 2.70978,
355 0.189539, 0.266068, 0.419729, 0.651693, 1.41016, 1.64311, 1.85481, 2.27558, 2.49205, 2.72201,
356 0.254466, 0.313038, 0.594149, 1.01254, 1.68881, 1.93546, 2.11918, 2.28787, 2.53554, 2.66793,
357 0.134691, 0.171906, 0.30274, 0.492936, 0.899551, 1.22919, 1.73394, 2.01288, 2.44634, 2.74276,
358 0.231556, 0.365068, 0.680761, 0.889142, 1.11134, 1.2959, 1.54264, 1.97178, 2.42756, 2.63191,
359 0.222525, 0.305606, 0.527193, 0.687519, 1.18138, 1.67176, 1.86368, 2.07202, 2.63452, 2.77927,
360 0.17877, 0.237415, 0.37516, 0.856692, 1.67368, 1.81374, 2.01679, 2.27242, 2.5226, 2.73596,
361 0.193532, 0.268731, 0.451328, 0.753471, 0.984854, 1.28535, 1.68565, 1.88412, 2.09168, 2.24342,
362 0.476037, 0.65161, 0.801054, 1.01016, 1.24137, 1.35584, 1.77598, 2.08615, 2.27291, 2.45435,
363 0.211657, 0.308331, 0.421366, 0.865966, 1.41877, 1.55674, 1.78615, 2.02033, 2.19859, 2.63198,
364 0.203789, 0.490794, 1.01014, 1.27501, 1.47221, 1.81014, 2.17064, 2.43766, 2.66212, 2.78806,
365 0.174355, 0.252095, 0.674715, 0.842194, 1.05509, 1.278, 1.69868, 2.07056, 2.39938, 2.65743,
366 0.245109, 0.324049, 0.628822, 0.92791, 1.1236, 1.58007, 1.87864, 2.0546, 2.35872, 2.54684,
367 0.182644, 0.253804, 0.386248, 0.614056, 1.36482, 1.54588, 2.04017, 2.21883, 2.41901, 2.62461,
368 0.295605, 0.367794, 0.690701, 1.05516, 1.1866, 1.64445, 1.94415, 2.10144, 2.56212, 2.69127,
369 0.220878, 0.289573, 0.640307, 0.822072, 1.14406, 1.5678, 1.76641, 1.90811, 2.10346, 2.56049,
370 0.403453, 0.526298, 0.732204, 0.90115, 1.03587, 1.33938, 1.78399, 1.94196, 2.37103, 2.62665,
371 0.212825, 0.25857, 0.471588, 0.685549, 1.26374, 1.82105, 2.16382, 2.2884, 2.62806, 2.78816,
372 0.401181, 0.642053, 1.03247, 1.23611, 1.44445, 1.68668, 2.00672, 2.22851, 2.57211, 2.72396,
373 0.239433, 0.341091, 0.492629, 0.70763, 0.881426, 1.03082, 1.71925, 2.34406, 2.57906, 2.75694,
374 0.294093, 0.38277, 0.577412, 1.00928, 1.31304, 1.4193, 1.74467, 2.09423, 2.28904, 2.47584,
375 0.169805, 0.236922, 0.403314, 0.638995, 1.17645, 1.35214, 1.66557, 1.90976, 2.15012, 2.71624,
376 0.210447, 0.277913, 0.452474, 1.40269, 1.51343, 1.72094, 1.90394, 2.2785, 2.58376, 2.74318,
377 0.159574, 0.225382, 0.374008, 0.714137, 1.01125, 1.37171, 1.69916, 1.87159, 2.02706, 2.49119,
378 0.258602, 0.557253, 0.81972, 1.03886, 1.30147, 1.44536, 1.83061, 2.09817, 2.32081, 2.54107,
379 0.232756, 0.282242, 0.631974, 0.898694, 1.53744, 1.86922, 2.06397, 2.23446, 2.49823, 2.63352,
380 0.580133, 0.997946, 1.32096, 1.48187, 1.73161, 1.89858, 2.12071, 2.29013, 2.53009, 2.65166,
381 0.21184, 0.307093, 0.45336, 0.945579, 1.25082, 1.49029, 1.72414, 2.2811, 2.5627, 2.7526,
382 0.314276, 0.493555, 0.667782, 0.8965, 1.32301, 1.48262, 1.66749, 1.97441, 2.42735, 2.55568,
383 0.182455, 0.261592, 0.418011, 1.05093, 1.26139, 1.44337, 1.66547, 1.93903, 2.44469, 2.63845,
384 0.24157, 0.306934, 0.491293, 1.10595, 1.55483, 1.66652, 1.92392, 2.08765, 2.3676, 2.65489,
385 0.190084, 0.25485, 0.454062, 0.724519, 1.08336, 1.39389, 1.89234, 2.08886, 2.32176, 2.4843,
386 0.306497, 0.389831, 0.721793, 0.839714, 1.12475, 1.6524, 1.82292, 2.27331, 2.5692, 2.6696,
387 0.1862, 0.27346, 0.383201, 0.564758, 1.51107, 1.84502, 1.99828, 2.1941, 2.38869, 2.58792,
388 0.300722, 0.478218, 0.823364, 1.12749, 1.59114, 1.87135, 2.17472, 2.40318, 2.62478, 2.7824,
389 0.228884, 0.358342, 0.504622, 0.795874, 1.00562, 1.15261, 1.90805, 2.12479, 2.37247, 2.79758,
390 0.171885, 0.248234, 0.432842, 0.833143, 1.04089, 1.26929, 1.66164, 1.91863, 2.15896, 2.6534,
391 0.140943, 0.193684, 0.343025, 0.562303, 1.06955, 1.54333, 1.82447, 1.96164, 2.46351, 2.77054,
392 0.173053, 0.245656, 0.360656, 0.960618, 1.58953, 1.68991, 1.98414, 2.143, 2.58839, 2.7594,
393 0.24018, 0.429951, 0.63744, 0.786596, 1.06915, 1.22657, 1.47088, 1.95205, 2.19506, 2.61597,
394 0.367862, 0.471897, 0.730834, 1.08232, 1.22629, 1.46293, 1.92817, 2.05247, 2.40674, 2.66246,
395 0.247175, 0.358209, 0.535946, 0.781876, 1.3637, 1.63524, 1.80723, 1.99378, 2.45277, 2.60104,
396 0.445578, 0.687898, 1.11411, 1.30103, 1.5774, 1.88604, 2.2249, 2.43653, 2.65969, 2.76103,
397 0.214389, 0.336025, 0.487794, 0.759534, 0.970518, 1.1411, 1.45733, 1.62464, 2.30692, 2.71527,
398 0.3773, 0.466775, 0.716121, 1.08378, 1.25654, 1.41124, 1.78943, 1.93637, 2.20557, 2.56236,
399 0.148362, 0.214593, 0.545023, 0.840437, 1.19333, 1.48066, 1.79187, 2.08342, 2.41054, 2.67613,
400 0.150403, 0.278398, 0.792676, 0.97668, 1.21885, 1.40524, 1.77506, 2.16246, 2.54786, 2.74638,
401 0.236301, 0.328633, 0.630867, 0.839915, 1.04235, 1.29887, 1.62775, 1.83949, 2.29893, 2.49396,
402 0.337889, 0.49792, 0.711277, 0.85042, 0.992027, 1.24688, 1.71075, 2.08668, 2.52716, 2.70716,
403 0.172215, 0.23654, 0.372897, 0.525146, 1.18258, 1.73573, 1.92703, 2.11462, 2.31917, 2.54278,
404 0.415304, 0.624807, 0.906616, 1.11784, 1.44615, 1.66942, 1.94841, 2.17282, 2.50453, 2.67075,
405 0.265417, 0.407241, 0.613894, 0.816534, 0.980063, 1.15606, 1.75675, 2.27485, 2.49719, 2.71224,
406 0.27644, 0.468209, 0.649518, 0.816686, 1.19517, 1.35552, 1.54923, 1.93527, 2.21787, 2.42698,
407 0.188925, 0.277012, 0.412665, 0.672627, 1.35481, 1.51452, 1.69999, 2.14455, 2.38219, 2.58608,
408 0.24263, 0.352485, 0.912974, 1.34378, 1.60443, 1.80187, 2.01479, 2.19307, 2.46081, 2.632,
409 0.190903, 0.285841, 0.44907, 0.760328, 0.954285, 1.18294, 1.69264, 1.87816, 2.27684, 2.46596,
410 0.220659, 0.300374, 0.721694, 0.947306, 1.29833, 1.56298, 1.76062, 1.88825, 2.50644, 2.68968,
411 0.213168, 0.290928, 0.695227, 0.918179, 1.37819, 1.63199, 1.84789, 2.00307, 2.35836, 2.61935,
412 0.328586, 0.517244, 0.93732, 1.37624, 1.57484, 1.76435, 2.05863, 2.22433, 2.58444, 2.75665,
413 0.248486, 0.367007, 0.562147, 0.750632, 0.902785, 1.14756, 1.63742, 1.91206, 2.41399, 2.6057,
414 0.310691, 0.477895, 0.670796, 0.940507, 1.41829, 1.5635, 1.80514, 2.11408, 2.37636, 2.53516,
415 0.256555, 0.41421, 0.559427, 0.981289, 1.19165, 1.37831, 1.6784, 1.84931, 2.5767, 2.75663,
416 0.291424, 0.335003, 0.750149, 1.28965, 1.43721, 1.59999, 1.80318, 1.96741, 2.60175, 2.73376,
417 0.195254, 0.279513, 0.451755, 0.649111, 0.828694, 1.60951, 1.91491, 2.09122, 2.31959, 2.5349,
418 0.222304, 0.332624, 0.475678, 0.685205, 1.03033, 1.73722, 1.92098, 2.37829, 2.70672, 2.81773,
419 0.164833, 0.240093, 0.359862, 0.801929, 1.51368, 1.64171, 2.04052, 2.24884, 2.48866, 2.71403,
420 0.214777, 0.287322, 0.572644, 1.14507, 1.36711, 1.75269, 2.04242, 2.22207, 2.54305, 2.69789,
421 0.226099, 0.330382, 0.474439, 0.687757, 0.799187, 1.31984, 1.94457, 2.0781, 2.3678, 2.50846,
422 0.24454, 0.392163, 0.553692, 0.729765, 1.24786, 1.44838, 1.61759, 2.07464, 2.34005, 2.51806,
423 0.175381, 0.314231, 0.446023, 0.797404, 1.32846, 1.43973, 1.79335, 1.93957, 2.4688, 2.72165,
424 0.205808, 0.29367, 0.452447, 1.07427, 1.28823, 1.65563, 1.8575, 2.36469, 2.63981, 2.79814,
425 0.253926, 0.392653, 0.587584, 0.800134, 0.97631, 1.18559, 1.57069, 1.82141, 2.09089, 2.34902,
426 0.322461, 0.410912, 0.723569, 1.06064, 1.20152, 1.40036, 1.57919, 1.78876, 2.46024, 2.6166,
427 0.211266, 0.304981, 0.436011, 0.771978, 1.49062, 1.67775, 1.88623, 2.1135, 2.32635, 2.72726,
428 0.235012, 0.406911, 0.864785, 1.29148, 1.70829, 1.93855, 2.1799, 2.3524, 2.56379, 2.71145,
429 0.176814, 0.26862, 0.445837, 0.823113, 1.02978, 1.27157, 1.62339, 1.81122, 2.40214, 2.61417,
430 0.241865, 0.339268, 0.507509, 1.00368, 1.20435, 1.37256, 1.94079, 2.10137, 2.38561, 2.66998,
431 0.230878, 0.334743, 0.50037, 0.879929, 1.02189, 1.53377, 1.97079, 2.12897, 2.56726, 2.71729,
432 0.297505, 0.451574, 0.748848, 0.988527, 1.36624, 1.60667, 1.89466, 2.17448, 2.52143, 2.75917,
433 0.199265, 0.271145, 0.49816, 0.854679, 1.1721, 1.36415, 1.76208, 1.96909, 2.17354, 2.31163,
434 0.222173, 0.424864, 0.564942, 0.829809, 1.03817, 1.19405, 1.7206, 1.85809, 2.43176, 2.74146,
435 0.181961, 0.226819, 0.390513, 0.556339, 1.0566, 1.55306, 2.12835, 2.25802, 2.6025, 2.80212,
436 0.3576, 0.565047, 1.15301, 1.35031, 1.53358, 1.71854, 1.95789, 2.17535, 2.50565, 2.67849,
437 0.162257, 0.236808, 0.374039, 0.570569, 0.748034, 1.17226, 1.82339, 2.05303, 2.51377, 2.77207,
438 0.305794, 0.46587, 0.645121, 0.88265, 1.14129, 1.26686, 1.70158, 2.00288, 2.18412, 2.41125,
439 0.231652, 0.380738, 0.549642, 0.83741, 1.22527, 1.33297, 1.85158, 2.11937, 2.31508, 2.73211,
440 0.235449, 0.286771, 0.684809, 1.34666, 1.52663, 1.70348, 2.10149, 2.25455, 2.57718, 2.71899,
441 0.23387, 0.446515, 0.60508, 0.814654, 1.05496, 1.1788, 1.63316, 1.84974, 2.13938, 2.73277,
442 0.271706, 0.335152, 0.857227, 1.25374, 1.38719, 1.70217, 1.89677, 2.19111, 2.48, 2.60136,
443 0.237386, 0.314549, 0.438339, 0.912164, 1.57776, 1.87779, 2.03279, 2.19704, 2.41232, 2.53648,
444 0.361168, 0.574093, 1.02384, 1.46852, 1.69056, 1.91737, 2.18737, 2.33403, 2.6691, 2.80629,
445 0.27848, 0.398742, 0.573342, 0.839212, 1.07389, 1.22209, 1.69168, 2.16526, 2.37741, 2.53688,
446 0.286018, 0.447947, 0.61506, 0.849446, 1.31947, 1.46358, 1.76995, 2.00103, 2.18943, 2.45038,
447 0.21944, 0.301601, 0.668534, 0.861094, 1.21, 1.49867, 1.74512, 1.87777, 2.31438, 2.6196,
448 0.223591, 0.352153, 0.598841, 1.21789, 1.35908, 1.59174, 1.77109, 2.21386, 2.56154, 2.73542,
449 0.176857, 0.236601, 0.395107, 0.634632, 1.13349, 1.33512, 1.77037, 1.98131, 2.20656, 2.33972,
450 0.334735, 0.402265, 0.659168, 0.781639, 0.975228, 1.665, 1.87207, 2.04753, 2.47696, 2.57398,
451 0.215968, 0.284755, 0.524241, 0.78146, 1.33481, 1.77238, 1.95388, 2.19421, 2.57825, 2.74194,
452 0.298193, 0.489879, 0.812985, 1.18369, 1.49642, 1.67998, 2.10879, 2.31656, 2.67378, 2.85161,
453 0.312989, 0.415446, 0.618011, 0.899096, 1.08368, 1.26338, 1.8874, 2.24306, 2.41945, 2.57048,
454 0.244471, 0.431115, 0.601512, 0.813139, 1.10216, 1.22106, 1.69244, 2.03316, 2.2218, 2.61984,
455 0.150949, 0.21906, 0.349217, 0.611327, 1.07711, 1.25055, 1.91552, 2.08398, 2.45, 2.79254,
456 0.161611, 0.218964, 0.445377, 0.927863, 1.45115, 1.76846, 2.13001, 2.36672, 2.666, 2.81405,
457 0.196, 0.297256, 0.497266, 0.6919, 1.08988, 1.27368, 1.51372, 2.00647, 2.27378, 2.57222,
458 0.335268, 0.460795, 0.685187, 0.867664, 1.01381, 1.47955, 2.01199, 2.16848, 2.57264, 2.71756,
459 0.257604, 0.340872, 0.499757, 0.843052, 1.39655, 1.83169, 2.03423, 2.17033, 2.42262, 2.5405,
460 0.417663, 0.631718, 0.955424, 1.19732, 1.6598, 1.87988, 2.1688, 2.35905, 2.57809, 2.69825,
461 0.162052, 0.251583, 0.4399, 0.660911, 0.903902, 1.3203, 1.62476, 1.77858, 2.53053, 2.79971,
462 0.256861, 0.322803, 0.68537, 1.08644, 1.26328, 1.56988, 1.85165, 2.01495, 2.26471, 2.44701,
463 0.125192, 0.176171, 0.336135, 0.7816, 1.20022, 1.43997, 1.80542, 2.07752, 2.46247, 2.73819,
464 0.102286, 0.191322, 0.774556, 1.07615, 1.36946, 1.62715, 1.97301, 2.236, 2.60937, 2.81298,
465 0.173442, 0.232622, 0.491622, 0.844157, 1.09524, 1.3708, 1.69697, 2.05141, 2.31606, 2.50205,
466 0.257531, 0.343598, 0.654071, 0.838985, 1.0481, 1.48747, 1.72538, 1.89742, 2.43051, 2.586,
467 0.1979, 0.276312, 0.440283, 0.705103, 1.26734, 1.7403, 1.93448, 2.15401, 2.4002, 2.62414,
468 0.40959, 0.596785, 0.983751, 1.18177, 1.37115, 1.50238, 1.75828, 2.01857, 2.38005, 2.59215,
469 0.231819, 0.33289, 0.483514, 0.644585, 0.816808, 0.926308, 1.4033, 2.23301, 2.46786, 2.67846,
470 0.25861, 0.340064, 0.670485, 0.908467, 1.10761, 1.45624, 1.75958, 1.93218, 2.11312, 2.31013,
471 0.184377, 0.249203, 0.410806, 0.587907, 1.3025, 1.51032, 1.72443, 1.98189, 2.2829, 2.42213,
472 0.25411, 0.313328, 0.659859, 1.26582, 1.41295, 1.66593, 1.92715, 2.10198, 2.55145, 2.67303,
473 0.161592, 0.23748, 0.376535, 0.637094, 0.823028, 1.13761, 1.69642, 1.87577, 2.40363, 2.63962,
474 0.384501, 0.466812, 0.740791, 0.938093, 1.06235, 1.50928, 1.74914, 1.9178, 2.54816, 2.67151,
475 0.333872, 0.419367, 0.638994, 1.09262, 1.52055, 1.64945, 1.86662, 2.14894, 2.34672, 2.50614,
476 0.426216, 0.686997, 1.23588, 1.42885, 1.61159, 1.79286, 2.01759, 2.23372, 2.54777, 2.69661,
477 0.262949, 0.367509, 0.530429, 0.741867, 0.872474, 1.0696, 1.74557, 2.06119, 2.28384, 2.49418,
478 0.335782, 0.547236, 0.716211, 0.919077, 1.27569, 1.40844, 1.68512, 1.96739, 2.21764, 2.44668,
479 0.227629, 0.330991, 0.486068, 1.11757, 1.30498, 1.51013, 1.75726, 1.94697, 2.62556, 2.7826,
480 0.35985, 0.436633, 0.750634, 1.20151, 1.33757, 1.59484, 1.97027, 2.11384, 2.57381, 2.72996,
481 0.211871, 0.304028, 0.512758, 0.663762, 1.08635, 1.63333, 1.81802, 2.12958, 2.39108, 2.60077,
482 0.196092, 0.279726, 0.434488, 0.624802, 0.772358, 1.40438, 1.94878, 2.16092, 2.63, 2.77518,
483 0.176304, 0.262521, 0.373719, 0.581101, 1.52011, 1.73617, 1.93323, 2.14017, 2.35813, 2.75352,
484 0.254932, 0.381411, 0.806187, 1.10229, 1.53452, 1.75028, 1.9709, 2.15987, 2.45592, 2.65841,
485 0.190385, 0.288656, 0.449066, 0.678174, 0.812376, 1.44933, 1.72866, 1.96632, 2.63881, 2.78955,
486 0.251178, 0.386509, 0.609363, 0.797102, 1.02416, 1.18173, 1.45466, 2.01263, 2.49309, 2.69893,
487 0.166654, 0.266226, 0.385171, 0.71199, 1.3979, 1.53235, 1.91597, 2.088, 2.56527, 2.78953,
488 0.238453, 0.306036, 0.449309, 0.876277, 1.52144, 1.93398, 2.13442, 2.26799, 2.5376, 2.65825,
489 0.161634, 0.219919, 0.353206, 0.524346, 0.961806, 1.20771, 1.68792, 1.91694, 2.16187, 2.32066,
490 0.413612, 0.597095, 0.793763, 0.98629, 1.28179, 1.41266, 1.65246, 2.01609, 2.38416, 2.52858,
491 0.228655, 0.341562, 0.480989, 0.988605, 1.371, 1.47742, 1.86103, 2.01585, 2.33975, 2.77315,
492 0.259092, 0.597012, 0.985224, 1.32174, 1.64335, 1.95737, 2.28868, 2.49747, 2.71649, 2.84447,
493 0.185652, 0.304664, 0.446232, 0.864434, 1.09179, 1.27377, 1.94257, 2.09554, 2.52465, 2.76824,
494 0.176687, 0.256678, 0.745652, 0.934909, 1.28376, 1.44006, 1.76524, 2.12209, 2.3881, 2.59055,
495 0.189805, 0.275637, 0.440995, 0.821356, 1.25602, 1.41098, 1.92978, 2.12014, 2.39603, 2.60464,
496 0.266823, 0.337688, 0.819408, 1.13475, 1.2892, 1.77703, 1.98289, 2.22175, 2.59029, 2.6981,
497 0.205348, 0.276512, 0.527305, 0.727412, 1.02465, 1.65398, 1.90418, 2.04661, 2.21792, 2.45566,
498 0.293498, 0.424494, 0.613795, 0.95613, 1.13398, 1.3248, 1.80903, 1.95392, 2.29385, 2.57588,
499 0.18312, 0.24965, 0.376204, 0.543914, 1.35083, 1.90722, 2.09255, 2.25571, 2.51439, 2.6879,
500 0.541205, 0.789796, 1.05895, 1.26942, 1.5039, 1.70219, 1.97018, 2.17544, 2.49681, 2.65224,
501 0.229326, 0.339475, 0.451881, 0.66121, 0.795832, 1.0738, 2.0271, 2.20637, 2.4789, 2.72678,
502 0.330006, 0.506868, 0.673076, 0.887406, 1.22877, 1.34923, 1.78129, 2.08658, 2.27776, 2.48003,
503 0.138389, 0.200001, 0.396259, 0.811975, 1.09071, 1.46041, 1.74549, 1.90427, 2.34825, 2.69989,
504 0.176584, 0.242161, 0.37827, 1.17785, 1.56472, 1.67817, 1.95162, 2.12141, 2.58011, 2.73713,
505 0.145852, 0.198423, 0.335644, 0.550505, 1.01973, 1.37119, 1.79763, 1.94383, 2.20749, 2.74647,
506 0.385078, 0.503696, 0.703239, 1.06999, 1.36574, 1.47205, 1.82583, 2.15964, 2.37128, 2.52097,
507 0.28495, 0.38805, 0.507352, 0.879125, 1.52353, 1.77624, 1.9296, 2.15756, 2.44799, 2.5864,
508 0.491116, 0.756155, 1.2552, 1.52246, 1.77658, 2.02812, 2.28606, 2.42977, 2.67911, 2.77616,
509 0.252477, 0.396081, 0.713022, 0.861502, 1.15222, 1.3708, 1.61401, 2.1448, 2.57407, 2.71253,
510 0.282756, 0.438437, 0.613566, 0.847746, 1.26077, 1.37906, 1.6422, 2.13754, 2.36837, 2.52216,
511 0.203971, 0.322195, 0.479842, 0.953133, 1.21128, 1.39763, 1.80081, 1.95452, 2.40348, 2.57371,
512 0.264533, 0.358424, 0.628768, 1.11124, 1.34025, 1.50648, 1.99959, 2.19411, 2.46141, 2.66736,
513 0.17773, 0.22368, 0.394553, 0.556177, 0.947415, 1.50064, 1.73353, 1.92605, 2.26147, 2.43605,
514 0.314223, 0.363636, 0.727886, 0.85188, 1.05384, 1.79813, 1.97435, 2.1826, 2.538, 2.62968,
515 0.201778, 0.2755, 0.404891, 0.747466, 1.50005, 1.84118, 1.99884, 2.22681, 2.48199, 2.66951,
516 0.132164, 0.314955, 0.821473, 1.19604, 1.42659, 1.69993, 2.03686, 2.3235, 2.68547, 2.82896,
517 0.223374, 0.347335, 0.50773, 0.773547, 0.967916, 1.13413, 1.9914, 2.30657, 2.52136, 2.78875,
518 0.312742, 0.449784, 0.583287, 0.934234, 1.26857, 1.36506, 1.5693, 1.68705, 2.0773, 2.59502,
519 0.124286, 0.162126, 0.29073, 0.654031, 1.23166, 1.53846, 1.89307, 2.18478, 2.56264, 2.79822,
520 0.177049, 0.251654, 0.367891, 0.912504, 1.55758, 1.69305, 1.89899, 2.07214, 2.35016, 2.64604,
521 0.240517, 0.378333, 0.547809, 0.754272, 0.973321, 1.10367, 1.57442, 2.02805, 2.21113, 2.56271,
522 0.427795, 0.519003, 0.771284, 0.93724, 1.08662, 1.60988, 1.87875, 2.05279, 2.53412, 2.65715,
523 0.22437, 0.317969, 0.439666, 0.812931, 1.3985, 1.62663, 1.79418, 2.114, 2.30916, 2.49684
524};
525 /* codebook/lspjvm2.txt */
526static const float codes1[] = {
527 0.005167, -0.03731, -0.002159, 0.016849, 0.130396,
528 0.039445, 0.03168, -0.074412, -0.031499, 0.060536,
529 0.019479, -0.030564, -0.048137, -0.056279, -0.027829,
530 0.020585, -0.01127, 0.023913, -0.005706, 0.011407,
531 -0.023217, 0.107455, -0.037777, 0.00407, -0.017279,
532 -0.090444, 0.007641, 0.099001, -0.047913, -0.017199,
533 0.0227, -0.063865, 0.047213, 0.043843, -0.036225,
534 0.001312, -0.123861, -0.038988, 0.058666, 0.074541,
535 0.039508, 0.1103, 0.013954, -0.119228, -0.035807,
536 -0.047392, 0.027035, -0.004412, -0.03265, -0.03715,
537 0.002491, -0.045447, 0.15826, 0.022828, -0.030124,
538 -0.047856, 0.088744, -0.009678, 0.106688, 0.08769,
539 -0.027941, 0.044084, -0.0285, 0.018736, -0.069969,
540 -0.035358, -0.051568, -0.030459, -0.017899, 0.027632,
541 -0.018607, -0.123557, 0.019228, 0.057485, -0.028907,
542 0.019057, 0.038151, -0.08022, 0.034222, 0.023081,
543 0.021312, 0.041905, 0.112903, 0.024092, 0.093974,
544 -0.116679, 0.015344, -0.066059, -0.096437, 0.004041,
545 -0.022464, -0.11626, 0.047819, -0.003921, -0.073504,
546 0.001975, -0.025869, 0.0282, 0.12269, 0.010627,
547 -0.035672, 0.078963, -0.009686, 0.000743, -0.147582,
548 0.016932, -0.020291, -0.096896, -0.237875, -0.029121,
549 0.017376, -0.04013, -0.053865, 0.15406, -0.013215,
550 0.015215, -0.019023, -0.070604, 0.032265, 0.04034,
551 0.102365, -0.022746, 0.019895, 0.05057, 0.008845,
552 -0.034134, 0.044441, -0.049387, -0.140481, 0.07257,
553 0.013023, -0.006079, 0.037574, 0.004937, -0.081501,
554 0.003696, 0.049908, 0.007355, 0.000403, 0.026006,
555 -0.008466, 0.08068, 0.061382, -0.108985, -0.08806,
556 -0.012275, -0.081061, 0.020333, -0.079001, 0.068724,
557 -0.014081, -0.042609, 0.093365, 0.04412, 0.000303,
558 0.063391, 0.096574, -0.105424, 0.039041, 0.010412,
559 -0.054031, -0.084948, 0.080406, -0.035883, 0.137428,
560 0.063037, 0.050562, 0.02469, -0.031394, 0.13032,
561 -0.015501, -0.078884, -0.076886, -0.013864, -0.073587,
562 0.048778, 0.003814, -0.031125, 0.046897, 0.028304,
563 0.048692, 0.132795, 0.06545, 0.059487, -0.042396,
564 -0.176999, 0.056943, -0.004135, -0.049378, -0.041083,
565 -0.039445, -0.016292, -0.00455, 0.06201, -0.079613,
566 -0.054566, -0.008476, -0.01671, 0.049202, 0.025758,
567 -0.078723, 0.092091, 0.096536, -0.065079, 0.021161,
568 0.076657, 0.009203, -0.036866, -0.016559, 0.012823,
569 0.008225, -0.003006, 0.108033, 0.04312, -0.06087,
570 -0.019346, 0.02279, -0.001728, 0.062304, -0.016965,
571 -0.001302, -0.01449, -0.041803, -0.034058, -0.197066,
572 -0.033655, -0.127217, -0.108681, -0.010571, -0.004705,
573 -0.015553, -0.086069, 0.034109, -0.101379, 0.002068,
574 -0.004003, -0.044637, -0.068617, 0.052228, -0.047812,
575 -0.043307, 0.035681, 0.042207, -0.055946, 0.055944,
576 -0.026792, -0.012601, -0.05671, -0.021094, 0.105842,
577 -0.025598, -0.078858, -0.013487, 0.030728, -0.031956,
578 0.031444, 0.022763, 0.025364, 0.121366, 0.070736,
579 -0.084556, 0.098118, -0.024301, -0.058655, -0.043194,
580 -0.011752, -0.043781, 0.091051, -0.071201, -0.02098,
581 0.082904, -0.031657, -0.088247, 0.066709, -0.079182,
582 -0.012151, 0.011796, -0.010589, 0.100656, 0.094539,
583 0.035967, 0.025338, 0.071826, 0.009741, -0.040209,
584 0.006866, -0.015095, -0.168469, -0.056133, 0.060145,
585 0.04583, -0.068969, 0.034551, 0.015842, -0.092809,
586 0.054699, 0.138744, 0.001726, 0.006927, 0.005167,
587 0.016978, 0.046384, -0.060183, -0.040742, -0.072692,
588 -0.022489, -0.029728, -0.065018, -0.124741, 0.044927,
589 -0.029057, -0.037154, 0.031068, 0.060086, 0.009984,
590 0.009311, -0.006957, -0.105508, 0.059637, -0.019564,
591 -0.068154, -0.066443, 0.000799, 0.028579, 0.097063,
592 0.096936, 0.03023, -0.034623, -0.088918, 0.040334,
593 0.019439, -0.050707, -0.003294, -0.028505, -0.053599,
594 0.06246, -0.070688, -0.016465, -0.03568, 0.017378,
595 0.009363, 0.048761, 0.043374, 0.039587, -0.023232,
596 -0.067033, 0.042663, 0.05407, -0.042797, -0.089391,
597 -0.030497, -0.050249, 0.059528, 0.089089, -0.029633,
598 0.064125, -0.086614, -0.002005, 0.08062, 0.000502,
599 -0.00349, 0.097336, 0.099565, 0.015648, 0.006691,
600 0.077668, 0.016572, 0.035404, -0.046026, 0.017237,
601 -0.048631, 0.009314, 0.141479, 0.017079, 0.043796,
602 -0.106474, 0.145951, 0.05774, 0.01125, -0.059443,
603 0.027572, 0.02665, 0.008527, 0.002949, -0.03768,
604 -0.077991, -0.090617, 0.00342, -0.04601, 0.007354,
605 0.019056, -0.128651, 0.016464, 0.004584, -0.030883,
606 -0.092069, 0.038976, -0.08184, 0.066695, -0.04734,
607 0.003513, 0.040613, 0.046815, -0.023406, 0.062389,
608 0.021759, 0.024928, -0.018922, -0.048006, 0.0638,
609 -0.014416, -0.050333, 0.042628, -0.114934, -0.10145,
610 0.062139, 0.029295, -0.065908, 0.111463, 0.050781,
611 -0.022707, 0.135414, 0.003548, 0.134535, -0.048259,
612 -0.092344, -0.027727, 0.016343, -0.060786, -0.081502,
613 -0.005412, -0.026229, -0.143331, 0.052404, -0.077298,
614 -0.035919, -0.041968, -0.106108, -0.004369, 0.065028,
615 0.09637, -0.053299, 0.043317, -0.049735, 0.049815,
616 0.032324, 0.051309, -0.009607, -0.205917, 0.005023,
617 -0.054316, -0.022895, 0.099327, -0.006927, -0.076574,
618 -0.111024, 0.111026, 0.038381, -0.060368, 0.064238,
619 -0.034316, 0.026846, 0.02574, -0.076162, -0.163904,
620 0.055955, -0.056885, 0.014831, -0.120715, 0.090938,
621 0.035289, -0.036439, 0.060012, 0.080302, 0.036215,
622 0.06525, 0.08303, -0.058784, 0.104826, -0.051805,
623 -0.011099, -0.00642, 0.053042, 0.024127, 0.092534,
624 0.058569, -0.033442, 0.025186, -0.018222, 0.117744,
625 0.044345, -0.042456, -0.043767, -0.021378, -0.121965,
626 0.027371, 0.052731, -0.020316, 0.036912, 0.115357,
627 0.03115, 0.041547, 0.059267, -0.039672, -0.086918,
628 -0.162369, 0.024801, 0.031725, 0.0834, -0.034463,
629 0.000272, -0.008147, -0.002016, 0.131953, -0.092911,
630 -0.091944, -0.062864, -0.005221, 0.063647, -0.012658,
631 0.042685, 0.067952, 0.038644, -0.153221, 0.096841,
632 0.108299, 0.089446, -0.047164, 0.004196, -0.043268,
633 -0.035456, 0.050838, 0.070444, 0.084465, -0.07998,
634 -0.048916, 0.057726, 0.023894, 0.027653, 0.017775,
635 0.015461, -0.030287, -0.022245, 0.052081, -0.150947,
636 -0.002682, -0.056774, -0.123366, -0.091754, 0.006536,
637 0.006473, -0.143025, 0.05469, -0.043189, 0.03297,
638 0.027446, 0.033127, -0.132722, -0.010417, -0.080097,
639 -0.018187, 0.001858, 0.11129, -0.090749, 0.059434,
640 -0.068738, 0.090679, -0.14507, -0.065277, 0.063514,
641 -0.003982, -0.056382, -0.003673, 0.015845, -0.073396,
642 0.043688, 0.002836, 0.069211, 0.124852, -0.053313,
643 -0.040946, 0.07044, -0.107024, -0.019199, -0.033672,
644 -0.00144, 0.02168, 0.110595, -0.053452, -0.052426,
645 0.035461, -0.028179, -0.049041, 0.02258, -0.010989,
646 -0.002913, -0.051691, -0.075881, 0.037241, 0.076377,
647 0.034735, -0.031556, 0.073516, -0.001427, 0.016296,
648 -0.017537, 0.003346, -0.099774, -0.067624, -0.044257,
649 -0.018202, 0.030622, 0.012773, 0.046475, -0.121785,
650 -0.057265, 0.116179, -0.079916, 0.066396, 0.050104,
651 -0.013177, 0.057766, -0.047879, -0.109526, -0.146491,
652 0.032675, -0.049318, -0.057045, -0.080068, 0.089621,
653 -0.046564, -0.029992, 0.040828, 0.029281, -0.037369,
654 -0.009731, -0.082145, -0.117622, 0.117077, 0.037369,
655 0.00082, -0.106634, -0.007967, 0.000812, 0.140637,
656 0.03653, 0.062121, -0.065504, -0.09493, 0.121336,
657 0.01753, -0.01733, -0.040402, -0.018255, 0.010992,
658 0.019746, -0.027564, 0.033588, 0.042466, -0.003143,
659 0.013767, 0.084179, 0.033753, -0.017279, -0.009676,
660 -0.006452, 0.032645, 0.031852, -0.030975, -0.043384,
661 -0.005433, -0.015258, 0.053273, 0.054748, -0.064736,
662 0.008959, -0.141223, -0.032957, -0.015079, 0.018198,
663 -0.001681, 0.143079, 0.076, 0.001037, -0.048744,
664 0.022062, 0.02603, -0.008263, -0.050353, -0.023037,
665 -0.036477, -0.051733, 0.137823, -0.034438, -0.007573,
666 -0.004256, 0.064218, 0.075183, 0.095106, 0.026497,
667 0.02636, 0.009791, -0.058039, 0.053315, -0.077817,
668 -0.033283, -0.081151, -0.05522, 0.004268, 0.017539,
669 -0.007329, -0.1172, 0.09322, 0.037359, 0.002718,
670 0.010749, 0.018281, -0.0758, -0.024889, 0.00572,
671 0.022129, 0.035613, 0.036187, 0.032246, 0.105439,
672 -0.073766, 0.016887, -0.059934, -0.049471, 0.07352,
673 -0.024041, -0.104642, 0.023557, -0.059746, -0.043871,
674 0.022311, -0.00025, -0.074027, 0.198593, 0.102732,
675 0.024478, 0.077658, -0.060042, -0.018229, -0.149648,
676 -0.009871, -0.105822, 0.007585, -0.161459, -0.041121,
677 -0.02146, 0.00902, -0.065018, 0.111801, -0.024953,
678 0.074594, -0.026041, -0.062859, 0.009199, 0.069609,
679 0.078672, -0.033414, 0.054128, 0.005408, -0.016273,
680 0.052076, 0.10761, -0.067518, -0.0964, 0.033703,
681 -0.01435, -0.024676, 0.056254, -0.04377, -0.060847,
682 -0.004185, 0.07355, -0.05783, -0.016644, 0.029096,
683 0.005755, 0.026472, 0.040449, -0.09195, -0.048538,
684 -0.034439, -0.107938, 0.090712, -0.117001, 0.04317,
685 -0.006505, -0.035277, 0.117316, 0.127002, 0.047906,
686 -0.001441, 0.118379, -0.132165, 0.00738, 0.023823,
687 -0.02012, -0.083725, 0.047284, 0.023795, 0.074123,
688 -0.013439, 0.024994, 0.060254, -0.06912, 0.166373,
689 -0.024228, -0.06315, -0.046506, -0.077202, -0.054592,
690 -0.006571, 0.010335, -0.006568, 0.003982, 0.075837,
691 0.008643, 0.136339, -0.005502, 0.03391, -0.066379,
692 -0.127371, -0.006954, 0.03977, -0.070123, 0.060925,
693 -0.046386, -0.02642, -0.00528, 0.103509, -0.02231,
694 -0.00374, -0.014999, -0.03777, 0.080005, 0.025231,
695 -0.054995, 0.071017, 0.009442, -0.075737, 0.013441,
696 0.051947, 0.027097, -0.070351, -0.055705, -0.021115,
697 0.021387, 0.029232, 0.163331, -0.03238, 0.010008,
698 -0.011987, -0.028631, 0.002665, 0.01477, -0.009558,
699 -0.034325, 0.01583, -0.091253, -0.012677, -0.107378,
700 -0.034624, -0.047725, -0.10233, 0.042525, -0.006869,
701 0.014048, -0.043127, 0.052384, -0.047473, 0.055102,
702 0.009744, -0.033646, -0.081755, -0.001464, -0.016223,
703 -0.036697, -0.002279, 0.023279, -0.036221, 0.101478,
704 -0.058454, 0.065074, 0.003524, 0.00501, 0.097182,
705 -0.038171, -0.037943, -0.009994, -0.033355, -0.044552,
706 0.041318, 0.065041, 9.2e-05, 0.100816, 0.029007,
707 -0.031803, 0.183537, -0.009617, -0.010544, -0.028465,
708 0.0069, -0.014988, 0.09049, -0.174817, 0.027464,
709 0.063314, -0.049281, -0.001567, 0.091421, -0.078603,
710 -0.004869, -0.063266, -0.001922, 0.069338, 0.081771,
711 0.058737, 0.073195, 0.081676, -0.047808, -0.025797,
712 -0.004185, 0.033203, -0.125472, -0.108148, 0.031258,
713 0.035192, 0.029957, 0.046675, 0.047238, -0.088197,
714 0.033315, 0.114919, -0.04918, 0.025707, 0.053843,
715 0.035182, 0.140206, -0.05866, -0.025978, -0.019658,
716 -0.014847, -0.021051, -0.034385, -0.121789, 0.173406,
717 -0.112251, -0.022333, 0.071206, 0.028998, 0.046468,
718 0.067704, -0.026159, -0.158316, 0.014936, 0.040216,
719 -0.010137, -0.053492, 0.004935, -0.011277, 0.073852,
720 0.091261, 0.114794, -0.01406, -0.051545, 0.077316,
721 0.101258, -0.046137, 0.022994, -0.066767, -0.065537,
722 0.049952, -0.043582, 0.012823, 0.009313, 0.036343,
723 0.054885, 0.037796, 0.02194, 0.013211, 0.006019,
724 -0.099578, 0.058596, -0.045463, -0.015632, -0.087141,
725 -0.019273, -0.03314, 0.043796, 0.119057, -0.081813,
726 -0.021538, -0.070453, -0.052551, 0.077213, 9.4e-05,
727 0.050268, 0.092271, 0.051688, -0.025224, 0.075437,
728 0.027983, 0.069205, 0.031787, -0.099975, 0.004387,
729 -0.002747, -0.056567, 0.161394, 0.000164, 0.084189,
730 -0.124844, 0.050329, 0.009844, 0.055877, 0.055701,
731 0.030479, 0.028843, -0.001076, -0.017173, -0.10277,
732 -0.038426, -0.133841, -0.03584, -0.072046, 0.020206,
733 0.016438, -0.097885, 0.041857, 0.034601, 0.030422,
734 -0.089192, -0.014112, -0.052276, 0.012005, -0.029335,
735 -0.011331, 0.101833, 0.063827, 0.044288, 0.101597,
736 -0.034689, -0.027434, -0.017801, -0.079224, 0.067103,
737 -0.027456, -0.098034, 0.009448, -0.038986, -0.156729,
738 0.085023, 0.033136, -0.021343, 0.110701, -0.011901,
739 -0.006484, 0.082023, -0.027094, 0.091208, -0.013163,
740 -0.012223, 0.005933, 0.010653, -0.098119, -0.005304,
741 -0.021061, -0.058077, -0.073035, 0.097856, -0.102847,
742 -0.035329, -0.092754, -0.101463, -0.048671, 0.055015,
743 0.102145, 0.062017, 0.016002, 0.036489, 0.059,
744 0.042861, 0.025447, -0.019735, -0.107841, -0.033752,
745 -0.043982, -0.067059, 0.051092, 0.025235, -0.147107,
746 -0.016269, 0.123009, 0.035894, -0.020453, 0.040013,
747 0.015557, 0.015825, 0.080712, -0.06963, -0.149739,
748 0.022006, -0.008848, 0.040169, -0.095688, 0.059575,
749 -0.030641, -0.061353, 0.046302, 0.104489, 0.043372,
750 -0.001579, 0.059737, -0.104073, 0.042342, -0.048611,
751 -0.013811, -0.056255, 0.107179, 0.057433, 0.084815,
752 0.030217, 0.02236, -0.040342, -0.028775, 0.120588,
753 0.04127, -0.045775, -0.030195, -0.106859, -0.104349,
754 0.072418, -0.003603, -0.013072, 0.040728, 0.086869,
755 0.091943, 0.066517, 0.024442, -0.030929, -0.03292,
756 -0.160336, -0.010347, -0.068458, 0.017458, 0.044823,
757 0.050694, 0.067625, 0.040303, 0.113164, -0.038747,
758 -0.065558, -0.106357, -0.028352, 0.121488, 0.026548,
759 -0.00782, 0.054872, 0.094674, -0.099533, 0.005231,
760 0.118132, 0.04278, -0.065079, 0.03144, 0.043229,
761 -0.050024, 0.015943, 0.073917, 0.034049, 0.010548,
762 -0.024979, 0.022639, 0.027795, 0.049491, 0.048762,
763 -0.002738, -0.010783, -0.027637, -0.006986, -0.104141,
764 -0.066719, -0.061742, -0.067028, -0.053057, -0.003478,
765 -0.050948, -0.122196, 0.022082, 0.002595, 0.015094,
766 0.006014, 0.005784, -0.184537, -0.034872, -0.036104,
767 0.055412, 0.006886, 0.103488, -0.063001, 0.096665,
768 -0.035533, 0.009847, -0.095114, 0.008588, 0.023736,
769 -0.034278, -0.11197, -0.041172, 0.03973, -0.102952,
770 0.063775, 0.039273, 0.109863, 0.0918, 0.030306,
771 -0.082206, 0.089449, -0.058478, -0.029341, 0.038389,
772 0.061057, -0.024711, 0.111044, -0.035079, -0.027985,
773 0.01457, 0.002046, -0.031545, 0.058848, -0.0195,
774 -0.002475, -0.025589, -0.144358, 0.063478, 0.124927,
775 -0.014094, -0.01097, 0.031621, -0.040043, 0.004389,
776 0.025003, 0.052397, -0.054526, -0.073469, 0.026795,
777 -0.024697, 0.024739, 0.118299, 0.014948, -0.132109,
778 0.020192, 0.037815, -0.09027, 0.049313, 0.082764,
779 -0.022642, -0.006053, -0.038073, -0.057363, -0.107347,
780 0.033166, -0.027556, -0.019765, -0.111958, 0.027773,
781 -0.063001, -0.052998, 0.019353, -0.009646, -0.01127,
782 0.011872, -0.006508, -0.122226, 0.059824, 0.041779,
783 0.016445, -0.03189, -0.03631, 0.013085, 0.091631,
784 0.062866, 0.054501, -0.117523, -0.010907, 0.087026,
785 -0.014974, -0.03592, -0.048565, -0.019246, -0.043405,
786 -0.006959, 0.006211, 0.04237, 0.014603, -0.006435,
787 0.019149, 0.078038, -0.020556, 0.018114, -0.036521,
788 -0.054036, 0.007325, 0.056349, -0.033497, -0.02596,
789 0.050184, -0.066536, 0.091501, 0.071356, -0.049044,
790 -0.032263, -0.095268, -0.008784, 0.049033, 0.036929,
791 0.020357, 0.152151, 0.040814, -0.063159, -0.024324,
792 -0.017084, 0.011876, -0.015442, -0.019811, -0.000366,
793 -0.0027, -0.072981, 0.109288, 0.007473, -0.049442,
794 -0.05404, 0.051947, 0.019359, 0.12916, 0.021981,
795 0.002248, 0.035262, -0.023141, 0.064666, -0.078273,
796 -0.031663, -0.031343, -0.006058, -0.045421, 0.017466,
797 -0.067122, -0.130784, 0.067057, 0.05246, -0.041165,
798 -0.004411, 0.046453, -0.055461, 0.048162, -0.009687,
799 0.02153, 0.007211, 0.104764, 0.079849, 0.086248,
800 -0.072791, 0.001112, -0.027964, -0.071233, -0.013339,
801 0.007979, -0.118231, 0.076826, -0.060762, -0.084358,
802 -0.011447, 0.009765, 0.014163, 0.164784, -0.015892,
803 -0.020756, 0.152509, -0.014014, -0.041853, -0.117008,
804 -0.011755, -0.005766, -0.086896, -0.13965, -0.032342,
805 0.025651, -0.007843, -0.039073, 0.103397, -0.042591,
806 -0.005971, -0.001324, -0.053945, -0.000716, 0.048977,
807 0.130185, 0.028226, 0.061179, 0.024489, -0.021939,
808 -0.007019, 0.054336, -0.01004, -0.095411, 0.082406,
809 -0.03213, -0.015054, 0.033059, 0.002802, -0.080159,
810 -0.022452, 0.077426, -0.015314, 0.033583, 0.028479,
811 0.023293, 0.035078, 0.006442, -0.110541, -0.106244,
812 -0.034737, -0.10414, -0.03457, -0.114316, 0.079382,
813 0.006009, 0.003901, 0.080081, 0.055082, 0.012896,
814 0.064981, 0.057219, -0.112986, 0.003906, -0.028414,
815 -0.012383, -0.054541, 0.077483, 0.004267, 0.123567,
816 0.007369, 0.099856, 0.023273, -0.028194, 0.12203,
817 -0.036635, -0.126589, -0.034567, -0.028288, -0.06504,
818 0.01428, 0.011435, -0.004867, 0.043901, 0.035395,
819 0.028599, 0.075858, 0.11846, 0.070581, -0.051903,
820 -0.170905, 0.050352, 0.053514, -0.017139, 0.021748,
821 -0.09661, 0.008904, -0.001049, 0.078787, -0.101201,
822 -0.026229, -0.019757, -0.035771, 0.054142, 0.068041,
823 -0.020328, 0.099979, 0.096623, -0.046957, -0.001733,
824 0.049586, 0.052458, -0.031724, -0.028332, -0.005418,
825 0.04671, 0.014238, 0.133125, -0.005428, -0.080055,
826 -0.033226, 0.034007, 0.025272, 0.033924, -0.044662,
827 -0.03469, -0.079173, -0.160689, -0.153893, -0.228771,
828 -0.00245, -0.083966, -0.168294, 0.010694, -0.012167,
829 4e-06, -0.044377, 0.023373, -0.077437, 0.012178,
830 -0.015899, -0.010828, -0.062847, 0.029927, -0.074557,
831 -0.053306, 0.049688, 0.057017, -0.022571, 0.015337,
832 -0.046545, 0.018895, -0.024848, -0.004424, 0.165442,
833 -0.060201, -0.098629, -0.06519, 0.036582, -0.038566,
834 0.051453, 0.093478, 0.039619, 0.117535, 0.090386,
835 -0.029366, 0.108075, -0.016568, -0.093576, -0.048799,
836 -0.045599, -0.023619, 0.070072, -0.109294, 0.001548,
837 0.076285, -0.091274, -0.068829, 0.000215, -0.046519,
838 -0.022512, -0.027067, 0.014905, 0.079017, 0.140699,
839 0.061141, 0.009178, 0.097811, 0.033468, -0.006666,
840 0.007163, -0.007578, -0.124238, -0.025271, 0.017581,
841 0.042405, -0.034252, 0.06489, 0.0025, -0.139083,
842 0.009733, 0.158179, 0.014474, 0.038913, 0.05629,
843 -0.004998, 0.075401, -0.030557, -0.038595, -0.04907,
844 -0.01468, -0.076306, -0.132365, -0.177693, 0.09176,
845 -0.057238, -0.072379, 0.050877, 0.051489, 0.028125,
846 0.004991, 0.032621, -0.167359, 0.041002, -0.007072,
847 -0.086405, -0.042263, -0.019757, -0.011524, 0.066004,
848 0.08567, 0.008071, -0.013614, -0.062142, 0.08328,
849 0.000887, -0.07582, 0.008295, -0.020136, -0.016886,
850 0.089657, -0.10626, -0.051491, -0.012687, 0.054778,
851 0.011535, 0.086613, 0.053803, 0.027164, -0.023825,
852 -0.040009, 0.080987, 0.026309, -0.000334, -0.085288,
853 -0.024208, -0.08504, 0.096077, 0.120527, -0.044181,
854 0.003034, -0.091142, 0.006471, 0.115971, -0.026358,
855 0.003489, 0.083633, 0.109975, -0.029425, 0.061726,
856 0.056115, -0.006711, 0.013158, -0.062917, -0.015029,
857 0.003354, 0.031574, 0.119045, 0.022859, 0.023777,
858 -0.068292, 0.115604, 0.031617, 0.008953, 0.006943,
859 0.01442, 0.008569, -0.031547, -0.006857, -0.05169,
860 -0.086683, -0.108339, 0.005093, -0.108646, -0.03472,
861 0.054273, -0.096753, 0.050806, -0.021115, -0.025278,
862 -0.079997, 0.027008, -0.034211, 0.090949, 0.005678,
863 0.019288, 0.042083, 0.062119, 0.019301, 0.040859,
864 -0.009113, 0.022427, -0.004019, -0.06089, 0.032884,
865 -0.012373, -0.037976, 0.017625, -0.079369, -0.050788,
866 0.07972, -0.039347, -0.085324, 0.091044, 0.026653,
867 -0.063122, 0.099371, -0.024736, 0.084631, -0.100421,
868 -0.073313, 0.014317, 0.022555, -0.116051, -0.063966,
869 -0.009688, -0.063666, -0.131709, 0.016744, -0.135028,
870 -0.003708, -0.043685, -0.121631, -0.03693, 0.125776,
871 0.084333, 0.010114, 0.071231, -0.010395, 0.059391,
872 0.01776, 0.033034, -0.018996, -0.13054, 0.025758,
873 -0.018261, -0.060044, 0.127025, -0.032724, -0.107299,
874 -0.064538, 0.090073, -0.010186, -0.066127, 0.107025,
875 -0.01094, 0.003083, 0.01903, -0.023935, -0.140176,
876 0.003549, -0.042402, -0.010695, -0.185915, 0.060835,
877 0.005405, -0.013822, 0.029205, 0.079338, 0.068155,
878 0.071485, 0.030282, -0.087207, 0.07348, -0.02794,
879 0.004896, -0.033246, 0.072637, 0.018017, 0.054712,
880 0.026184, -0.005287, 0.034456, -0.036753, 0.079232,
881 0.072707, 0.004506, -0.039353, -0.01556, -0.071466,
882 0.010257, 0.067446, -0.006598, 0.047396, 0.072218,
883 0.023405, 0.082663, 0.015319, -0.035436, -0.075461,
884 -0.124036, -0.032046, 0.060837, 0.010231, -0.053024,
885 0.0228, 0.042891, -0.041549, 0.132395, -0.09533,
886 -0.077091, -0.058554, -0.070632, 0.04757, 0.031856,
887 0.000127, 0.114996, 0.05866, -0.092472, 0.064503,
888 0.09645, 0.0662, -0.001059, 0.039487, -0.032859,
889 -0.065721, 0.001601, 0.088037, 0.059828, -0.047411,
890 -0.077714, 0.010275, 0.013629, 0.003304, 0.005407,
891 0.000665, 0.012927, -0.077525, 0.069202, -0.157417,
892 0.014547, -0.095965, -0.087546, -0.067375, -0.027867,
893 0.005458, -0.095839, 0.105294, -0.044892, 0.045151,
894 -0.001349, 0.038356, -0.127152, -0.080503, -0.105423,
895 -0.018484, 0.008439, 0.104398, -0.027959, 0.082086,
896 -0.020605, 0.042785, -0.109139, -0.025958, 0.079733,
897 0.036289, -0.083773, -0.033819, 0.032566, -0.065556,
898 0.006659, 0.00209, 0.097027, 0.115715, -0.013271,
899 -0.067514, 0.128365, -0.089129, 0.02616, -0.040584,
900 -0.002443, -0.017254, 0.129204, -0.110078, -0.064943,
901 0.089215, -0.022299, -0.034959, 0.022446, -0.019254,
902 -0.0389, -0.069862, -0.07054, 0.069949, 0.111993,
903 -0.006311, -0.009057, 0.094278, -0.014932, 0.003657,
904 -0.019323, 0.026145, -0.062611, -0.073753, -0.007182,
905 0.014101, 0.015776, 0.052537, 0.064728, -0.160187,
906 -0.005122, 0.076356, -0.104763, 0.091493, 0.020225,
907 -0.000433, 0.062698, -0.060457, -0.14754, -0.066168,
908 0.007195, -0.061498, -0.037801, -0.039763, 0.059551,
909 -0.02841, -0.07451, 0.057667, 0.020584, -0.04251,
910 -0.025311, -0.037825, -0.18801, 0.077423, 0.030749,
911 -0.025465, -0.067541, 0.003073, -0.049778, 0.127789,
912 0.002786, 0.120009, -0.067812, -0.026565, 0.111272,
913 0.023219, -0.024403, -0.014507, -0.048624, 0.022163,
914 0.014596, -0.052136, 0.00158, 0.064595, 0.017963,
915 0.02133, 0.098862, -0.009253, -0.041062, 0.008903,
916 -0.013829, 0.031967, 0.076571, -0.005348, -0.04401,
917 0.031252, 0.000369, 0.036818, 0.072854, -0.038569,
918 0.004161, -0.128017, -0.053152, 0.050896, -0.015212,
919 -0.036159, 0.097995, 0.068397, -0.048472, -0.056131,
920 -0.01192, 0.059188, 0.010215, -0.061152, -0.011717,
921 -0.035949, -0.057039, 0.090859, -0.029682, 0.041466,
922 -0.025106, 0.131191, 0.059327, 0.085383, 0.021699,
923 0.04923, 0.03663, -0.077086, 0.017806, -0.08879,
924 0.00404, -0.069533, -0.026785, 0.009666, 0.014017,
925 -0.055897, -0.096299, 0.120693, 0.029995, 0.032602,
926 -0.001365, 0.034015, -0.053512, 0.001573, -0.01917,
927 0.003956, 0.006452, 0.067313, 0.028301, 0.160615,
928 -0.053111, 0.01399, -0.02706, -0.013638, 0.039376,
929 -0.054462, -0.096553, 0.079994, -0.043791, -0.025051,
930 -0.003222, 0.019418, -0.049525, 0.151136, 0.034123,
931 0.055117, 0.058918, -0.017393, 0.026169, -0.12638,
932 -0.019008, -0.028939, -0.014027, -0.173373, -0.032841,
933 -0.00337, 0.03968, -0.118311, 0.114094, -0.041869,
934 0.041121, -0.038391, -0.096074, -0.032479, 0.060222,
935 0.063968, -0.024528, 0.018158, -0.009892, -0.043882,
936 -0.005004, 0.1298, -0.025438, -0.121186, 0.04986,
937 0.010448, -0.040388, 0.061853, -0.017304, -0.035088,
938 -0.008678, 0.061476, -0.039493, -0.005055, 0.079169,
939 0.046134, 0.00977, 0.068294, -0.078965, -0.043792,
940 -0.030529, -0.053845, 0.053853, -0.140682, 0.111461,
941 0.003549, -0.014939, 0.148955, 0.072861, 0.004332,
942 0.015386, 0.062006, -0.122325, -0.032529, 0.010241,
943 -0.047982, -0.12644, 0.05584, 0.067128, 0.101189,
944 -0.00263, 0.031969, 0.046076, -0.080194, 0.10474,
945 -0.033486, -0.077818, -0.058697, -0.095258, -0.111074,
946 0.037236, 0.011711, 0.001113, -0.005664, 0.048588,
947 0.041131, 0.098257, 0.033126, 0.029317, -0.095311,
948 -0.071555, -0.039999, 0.026678, -0.072182, 0.035031,
949 -0.007997, -0.048174, -0.006796, 0.075959, -0.05206,
950 -0.007645, 0.037076, -0.035574, 0.085576, 0.034126,
951 -0.050676, 0.05143, 0.031999, -0.134308, -0.001489,
952 0.084564, -0.018394, -0.09741, -0.042931, -0.025608,
953 -0.025489, 0.041919, 0.142482, 0.004617, -0.041085,
954 -0.028816, -0.015527, -0.031005, 0.028405, -0.02224,
955 -0.067737, -0.025241, -0.052578, 0.012322, -0.120556,
956 0.016278, -0.081744, -0.09916, 0.025144, 0.025441,
957 0.003176, -0.073871, 0.031718, -0.028622, 0.029031,
958 0.01791, -0.030693, -0.104215, -0.015422, -0.065738,
959 -0.048346, -0.012847, 0.046849, -0.008621, 0.058771,
960 -0.054495, 0.031597, -0.038844, 0.043138, 0.092588,
961 -0.071371, -0.059093, -0.001197, 0.001766, -0.074762,
962 0.02947, 0.089616, 0.005009, 0.052977, 0.015899,
963 -0.045424, 0.158466, -0.038717, -0.032506, 0.028687,
964 0.011435, -0.006772, 0.047605, -0.144659, -0.031229,
965 0.073577, 0.01153, -0.008172, 0.058883, -0.088412,
966 0.033615, -0.03412, -0.030701, 0.101215, 0.096645,
967 0.027368, 0.041249, 0.081502, -0.02544, 0.007592,
968 0.059893, 0.012106, -0.112009, -0.114692, 0.016397,
969 0.087068, 0.016199, 0.051263, 0.011915, -0.085364,
970 0.026046, 0.145258, -0.047521, 0.077134, -0.000345,
971 0.034532, 0.099801, -0.087591, -0.059719, -0.058671,
972 0.022737, -0.001887, -0.107049, -0.116757, 0.134115,
973 -0.055403, 0.005157, 0.067618, 0.081074, 0.071787,
974 0.063802, -0.00343, -0.106491, 0.017543, 0.002214,
975 -0.013785, -0.032962, 0.010084, 0.024325, 0.045963,
976 0.059883, 0.072282, -0.008608, -0.015127, 0.048225,
977 0.041752, -0.068845, 0.012227, -0.090748, -0.035309,
978 0.045353, -0.078624, -0.019489, 0.035531, 0.058571,
979 0.045414, 0.039032, -0.011106, 0.048787, -0.025336,
980 -0.084893, 0.031896, 0.01085, 0.012526, -0.053205,
981 0.016952, -0.044041, 0.068766, 0.097328, -0.122229,
982 0.027016, -0.051759, -0.057246, 0.074566, 0.006201,
983 0.069904, 0.100068, 0.076124, 0.004278, 0.029466,
984 0.045229, 0.055683, 0.01879, -0.067806, 0.039373,
985 0.029179, -0.036787, 0.129921, -0.028993, 0.037711,
986 -0.105011, 0.138747, -0.00437, 0.05208, 0.050835,
987 0.025511, -0.002962, 0.007852, -0.055234, -0.075055,
988 0.00046, -0.089231, -0.030467, -0.080347, 0.007488,
989 0.06746, -0.076368, 0.084991, 0.039544, 0.033391,
990 -0.044318, 0.00639, -0.079387, -0.002909, -0.029708,
991 -0.047882, 0.06304, 0.065719, 0.021811, 0.070945,
992 -0.007571, -0.001302, -0.064119, -0.068005, 0.05104,
993 -0.017747, -0.063938, 0.018673, -0.038391, -0.099966,
994 0.057475, -0.007669, 0.009384, 0.109283, 0.012248,
995 -0.048858, 0.092498, 0.011967, 0.061525, -0.028819,
996 -0.015131, -0.02416, -0.03322, -0.101648, -0.01798,
997 -0.003342, -0.049829, -0.125096, 0.128241, -0.047377,
998 -0.028943, -0.109072, -0.066133, -0.015454, 0.098334,
999 0.053371, 0.011324, 0.042781, 0.044313, 0.06251,
1000 0.098408, 0.06541, -0.040693, -0.116351, -0.032327,
1001 -0.013634, -0.058591, 0.081507, 0.042019, -0.09977,
1002 -0.018275, 0.084624, -0.007512, -0.041113, 0.054203,
1003 0.017879, -0.029747, 0.059865, -0.048281, -0.111513,
1004 -0.022478, 0.002059, 0.022383, -0.12536, 0.058216,
1005 0.002386, -0.0816, 0.049288, 0.157428, 0.057724,
1006 0.005046, 0.102125, -0.083473, 0.044059, -0.094864,
1007 0.03912, -0.063306, 0.057341, 0.060519, 0.107383,
1008 0.007076, -0.009373, -0.012555, -0.06663, 0.117121,
1009 0.025254, -0.008796, -0.062102, -0.083164, -0.079007,
1010 0.084839, 0.042308, -0.055353, 0.036386, 0.132641,
1011 0.084464, 0.056288, -0.011636, -0.059554, -0.087748,
1012 -0.147377, -0.052414, -0.010203, -0.009159, -0.018829,
1013 0.009621, 0.061633, 0.015716, 0.086332, -0.061465,
1014 -0.011833, -0.062998, -0.021168, 0.125194, 0.045025,
1015 0.052316, 0.02572, 0.095155, -0.093252, 0.02872,
1016 0.056113, 0.063321, -0.045315, 0.025199, 0.023591,
1017 -0.070481, 0.07235, 0.092458, 0.047973, -0.025439,
1018 -0.001281, 0.021028, 0.034576, 0.084779, 0.006867,
1019 -0.010323, -0.04633, -0.009172, 0.030485, -0.117679,
1020 -0.021782, -0.034737, -0.086292, -0.045885, 0.009655,
1021 -0.037167, -0.123331, 0.017291, -0.028319, 0.071447,
1022 -0.05718, -0.032912, -0.139418, -0.025966, -0.039305,
1023 0.009411, -0.054017, 0.076307, -0.060252, 0.110087,
1024 -0.061366, 0.038897, -0.098107, 0.046119, 0.043021,
1025 -0.02913, -0.096885, 0.007623, 0.090513, -0.097416,
1026 0.053264, 0.058296, 0.054372, 0.060769, 0.015586,
1027 -0.067956, 0.059996, -0.03785, 0.005986, 0.000778,
1028 0.045873, -0.065546, 0.0779, -0.085638, 0.000698,
1029 0.027694, -0.021241, -0.002777, 0.034509, -0.048173,
1030 0.009988, 0.001008, -0.077434, 0.026002, 0.13949,
1031 0.00891, 0.007791, 0.059292, -0.057047, 0.014127,
1032 -0.022959, 0.08571, -0.068087, -0.081561, 0.005935,
1033 0.007577, 0.061544, 0.076542, 0.00166, -0.113279,
1034 0.024973, 0.08675, -0.061674, 0.095059, 0.089352,
1035 -0.024436, 0.024181, -0.016117, -0.073634, -0.067986,
1036 0.074701, -0.046868, -0.054634, -0.092485, 0.006662,
1037 -0.033256, -0.053774, 0.049001, -0.002339, 0.013545,
1038 -0.006432, -0.012089, -0.086842, 0.104105, 0.061991
1039};
1040 /* codebook/lspjvm3.txt */
1041static const float codes2[] = {
1042 0.007066, 0.075781, -0.070082, -0.092014, -0.066477,
1043 0.09051, 0.106622, 0.025911, -0.01676, 0.003724,
1044 -0.024628, 0.058332, 0.012876, 0.059557, -0.002092,
1045 -0.065092, -0.096975, -0.041837, -0.002432, 0.058918,
1046 0.014358, 0.080049, -0.008803, -0.002091, -0.097584,
1047 0.085323, -0.026053, -0.086585, -0.009541, 0.130555,
1048 0.045391, 0.037557, 0.074726, -0.050453, 0.033517,
1049 -0.035576, -0.084211, -0.08643, 0.00891, -0.072674,
1050 -0.098699, -0.02454, -0.048972, -0.066975, -0.048791,
1051 0.032184, 0.070992, -0.014416, 0.141892, -0.044249,
1052 -0.108921, -0.02045, 0.115988, 0.011287, -0.026273,
1053 0.024341, 0.138519, -0.036467, 0.020684, 0.074258,
1054 -0.053563, 0.077463, 0.072166, 0.032112, -0.079303,
1055 -0.025039, 0.079675, 0.094211, -0.115754, 0.038892,
1056 0.050897, -0.024639, 0.057826, -0.110429, 0.071184,
1057 0.015309, -0.034027, -0.055726, 0.043179, -0.063089,
1058 0.043359, -0.011698, 0.006637, 0.002751, 0.03011,
1059 -0.001261, 0.11147, 0.043277, -0.004205, -0.021599,
1060 -0.005698, 0.058842, 0.168422, 0.059313, -0.007971,
1061 -0.087599, 0.073891, -0.083238, 0.099279, -0.017364,
1062 -0.018429, 0.01404, -0.014864, -0.111512, 0.08945,
1063 -0.028498, -0.087983, -0.07732, -0.062602, 0.000328,
1064 -0.027152, -0.093796, 0.111381, -0.018603, 0.092394,
1065 -0.007256, 0.025391, 0.011454, 0.012802, -0.04168,
1066 0.008078, 0.020905, -0.105401, -0.083265, 0.027756,
1067 -0.04963, -0.044085, -0.051424, 0.104125, -0.000779,
1068 -0.063079, -0.130699, 0.0705, 0.033468, -0.019802,
1069 -0.061011, 0.094839, -0.040122, 0.118409, 0.05695,
1070 0.086391, -0.006615, 0.045337, -0.04419, -0.106474,
1071 -0.081912, 0.067557, -0.031649, -0.014437, 0.057585,
1072 -0.121755, -0.049113, 0.057109, -0.049872, 0.044104,
1073 0.064705, -0.091589, 0.037286, -0.048606, -0.045398,
1074 0.003456, 0.05723, 0.006262, -0.055206, -0.063871,
1075 -0.005249, 0.081783, 0.134969, -0.002331, 0.052643,
1076 -0.093346, 0.072093, 0.116025, -0.031453, -0.006012,
1077 -0.038574, -0.030841, 0.010288, 0.02442, 0.051657,
1078 -0.086584, 0.046381, 0.00541, 0.052622, -0.072741,
1079 0.079023, 0.078099, -0.093912, 0.005477, -0.006721,
1080 0.100232, -0.017587, 0.044819, 0.036655, 0.02158,
1081 -0.006829, -0.050076, -0.00302, 0.088246, 0.01356,
1082 -0.01569, 0.012477, -0.052595, -0.048861, -0.033688,
1083 0.055615, 0.092298, -0.066194, 0.016416, -0.066059,
1084 0.046976, 0.003023, 0.104646, 0.109136, 0.018293,
1085 -0.016507, -0.006859, 0.004326, 0.070843, 0.14075,
1086 0.025774, 0.03473, -0.07959, 0.050054, -0.10795,
1087 0.002378, 0.097498, 0.027111, -0.122953, -0.002423,
1088 -0.020539, -0.063263, -0.095493, -0.157361, -0.039183,
1089 0.025721, 0.026897, -0.0012, 0.033997, -0.001749,
1090 0.061593, -0.013053, -0.106317, -0.06819, 0.046352,
1091 -0.05606, 0.157084, -0.049365, 0.053959, -0.051065,
1092 -0.047672, 0.08157, 0.064342, -0.030705, -0.070806,
1093 -0.076503, -0.059471, 0.012419, 0.073968, -0.026179,
1094 -0.038473, 0.059013, -0.035783, -0.030057, -0.036346,
1095 -0.052692, -0.015346, -0.022687, -0.035279, 0.013314,
1096 0.068397, -0.046609, -0.009593, -0.040796, 0.157438,
1097 -0.07536, -0.110464, 0.031839, -0.029035, -0.015222,
1098 0.041013, -0.099212, -0.10892, -0.008627, 0.012095,
1099 0.020855, 0.009935, -0.086917, 0.058827, -0.006536,
1100 0.022104, -0.005013, 0.003496, 0.046663, -0.051061,
1101 -0.036803, -0.067317, -0.007075, 0.18087, -0.027434,
1102 -0.025056, -0.039341, -0.073918, -0.00318, -0.11093,
1103 -0.042711, 0.005519, -0.035005, -0.088419, 0.170942,
1104 0.001503, -0.121485, 0.066383, -0.067346, 0.005643,
1105 0.080088, -0.042562, -0.006668, -0.036538, 0.020683,
1106 0.042848, 0.027852, -0.029088, -0.156468, 0.006503,
1107 0.037716, 0.032082, 0.038416, 0.021835, -0.106963,
1108 -0.043017, 0.018166, 0.070409, -0.005426, -0.035585,
1109 -0.111071, -0.039986, 0.05043, 0.035157, 0.066902,
1110 -0.040684, 0.060527, 0.036225, 0.002527, -0.015087,
1111 0.059243, 0.021268, -0.010682, -0.018434, 0.059128,
1112 0.111314, -0.05407, 0.105744, -0.051476, -0.01297,
1113 -0.000358, -0.099249, -0.077385, 0.069924, -0.039101,
1114 -0.072139, -0.049069, -0.088018, 0.006144, 0.000712,
1115 0.08103, 0.021987, -0.046031, 0.058087, -0.00132,
1116 -0.046851, -0.011062, 0.108321, -0.001146, -0.071193,
1117 0.044973, -0.002915, -0.003323, 0.041735, 0.094566,
1118 0.05353, 0.035927, 0.100282, 0.059082, -0.054059,
1119 -0.012158, -0.035417, 0.020412, -0.073193, 0.059296,
1120 -0.040489, -0.09525, -0.003821, -0.084904, 0.053925,
1121 0.109183, -0.005862, -0.036538, 0.080962, -0.040647,
1122 0.02007, 0.057778, -0.020197, -0.079626, -0.003186,
1123 -0.050855, 0.128185, 0.034731, 0.05746, -0.035236,
1124 -0.057096, -0.001238, 0.122018, -0.071204, -0.047253,
1125 -0.051767, 0.048301, -0.052678, 0.02599, -0.017481,
1126 -0.029379, 0.030738, 0.047207, -0.047864, -0.033561,
1127 0.029884, -0.091175, -0.085446, -0.02614, 0.092628,
1128 0.067706, -0.085617, 0.081433, 0.047305, 0.031945,
1129 -0.048728, -0.040387, 0.046206, 0.010578, -0.037639,
1130 0.011328, -0.042458, -0.149597, 0.033882, -0.061869,
1131 0.0088, 0.057754, -0.095876, 0.03823, 0.096876,
1132 -0.033487, -0.141669, -0.014172, 0.028439, -0.092764,
1133 -0.053714, 0.086926, 0.034786, 0.136053, -0.005569,
1134 0.028753, 0.00963, 0.044114, -0.050365, -0.066224,
1135 0.006017, 0.014348, 0.024471, 0.000489, 0.067234,
1136 -0.021678, -0.11876, 0.036349, -0.040295, 0.076358,
1137 -0.008444, -0.086082, -0.044018, -0.025804, 0.028971,
1138 -0.009233, 0.053026, -0.035341, -0.182193, -0.102515,
1139 0.08921, 0.066812, 0.032417, 0.046882, -0.034815,
1140 -0.052293, 0.022814, 0.129622, 0.128232, -0.012105,
1141 -0.087084, 0.004762, 0.086538, 0.046566, 0.098359,
1142 -0.018713, 0.039204, -0.021707, -0.06011, -0.117527,
1143 -0.005459, 0.060994, -0.057718, -0.021783, 0.035154,
1144 0.100557, -0.01547, -0.025818, 0.00845, 0.051535,
1145 -0.001388, -0.11461, -0.057903, 0.041862, 0.061778,
1146 0.045701, -0.078563, -0.070166, -0.04845, -0.08853,
1147 0.021375, -0.004598, -0.09071, -0.009399, -0.073952,
1148 -0.035575, -0.05028, 0.11478, 0.137866, 0.065234,
1149 0.003594, -0.066802, -0.144989, 0.166201, 0.039564,
1150 -0.022457, -0.03009, 0.016187, 0.115443, -0.097331,
1151 -0.019139, 0.09944, 0.002198, -0.030953, 0.021099,
1152 -0.045399, -0.046871, 0.022533, -0.064657, 0.005776,
1153 0.049063, -0.028478, 0.019268, 0.054265, 0.028042,
1154 0.045559, -0.005541, -0.01441, -0.024165, -0.054976,
1155 -0.073258, 0.084205, 0.036077, -0.068683, 0.004708,
1156 -0.085228, 0.001234, 0.046261, -0.050496, -0.028227,
1157 -0.086828, -0.001218, 0.021865, 0.003791, -0.000568,
1158 -0.088733, -0.040041, -0.035891, -0.054915, 0.073463,
1159 -0.132031, -0.012844, -0.068544, 0.013052, 0.087335,
1160 0.038603, -0.115382, -0.010433, -0.007113, 0.095126,
1161 -0.047378, -0.081353, 0.018021, -0.021156, -0.120774,
1162 0.040038, 0.007633, -0.088728, -0.009928, 0.020142,
1163 0.052024, -0.021063, -0.118121, 0.102739, -0.055837,
1164 0.005253, -0.061924, 0.06368, -0.014512, -0.020259,
1165 0.029493, -0.013435, -0.020638, 0.089342, 0.001092,
1166 -0.046491, -0.145634, -0.083159, -0.158142, -0.279281,
1167 0.003611, 0.055863, -0.064655, -0.088773, 0.089283,
1168 -0.029619, -0.089949, 0.017197, -0.066633, -0.052347,
1169 0.090828, -0.087551, 0.000338, 0.085238, -0.005313,
1170 0.096211, 0.071381, -0.076546, -0.077927, -0.040864,
1171 0.062936, 0.041559, 0.016235, -0.017513, 0.014773,
1172 -0.025734, 0.028586, 0.070292, 0.055794, -0.026131,
1173 -0.076954, -0.082228, 0.043947, -0.035921, 0.152668,
1174 -0.04951, 0.023159, 0.008506, -0.044773, -0.160358,
1175 0.024984, -0.025587, -0.071627, -0.038376, 0.088478,
1176 0.120568, 0.046723, 0.086731, 0.000695, -0.015751,
1177 -0.027837, -0.160937, -0.095031, 0.036271, -0.009061,
1178 -0.015078, -0.036281, -0.103665, -0.058258, -0.049573,
1179 0.022021, 0.108296, -0.002586, 0.065655, -0.018584,
1180 -0.046441, -0.031018, 0.06735, 0.014328, 0.00886,
1181 -0.000245, 0.0634, -0.00181, 0.043515, 0.090344,
1182 -0.063845, 0.020485, 0.079401, 0.070558, -0.116428,
1183 0.032628, 0.068949, 0.052238, -0.04453, 0.096813,
1184 0.029911, -0.008814, 0.044352, -0.168172, 0.009604,
1185 0.055828, -0.100739, -0.026013, 0.021193, -0.051425,
1186 0.035891, -0.004085, 0.030216, -0.060801, 0.037202,
1187 0.007262, 0.120686, 0.026846, 0.058464, -0.100792,
1188 -0.009176, 0.027589, 0.123957, -0.011283, -0.025744,
1189 -0.105081, 0.118244, -0.042122, -0.025404, 0.000873,
1190 -0.012703, 0.084159, -0.067539, -0.140536, 0.041637,
1191 -0.014485, -0.043382, -0.048004, -0.075416, 0.054401,
1192 -0.018651, -0.032908, 0.164231, -0.053236, 0.033946,
1193 -0.021681, -0.012655, -0.037049, -0.001613, -0.053393,
1194 -0.014635, 0.017954, -0.116115, -0.027232, 0.034005,
1195 -0.035376, 0.026492, -0.03725, 0.070733, 0.074835,
1196 -0.021378, -0.14298, 0.123195, 0.003699, 0.025398,
1197 0.015629, 0.07737, 0.032623, 0.12158, 0.0971,
1198 0.000946, -0.056355, 0.042065, 0.008184, -0.081824,
1199 -0.101937, 0.065473, 0.00336, 0.069241, 0.073002,
1200 -0.053844, -0.044301, 0.080351, -0.091833, 0.044288,
1201 0.007447, -0.120723, -0.013806, -0.023636, -0.064616,
1202 0.030556, 0.07263, 0.074428, -0.087759, -0.02644,
1203 0.06484, 0.049162, 0.091053, 0.023891, 0.033811,
1204 -0.027746, 0.116392, 0.106126, -0.056644, -0.014781,
1205 0.036137, -0.002632, 0.055512, 0.070077, 0.067819,
1206 -0.030625, 0.053772, -0.078457, -0.021351, -0.113011,
1207 0.052797, 0.044875, -0.077269, -0.009867, 0.101493,
1208 0.073477, -0.024103, 0.049145, -0.004706, -0.025211,
1209 -0.053731, -0.049009, -0.035786, 0.05443, 0.046515,
1210 0.025154, -0.043569, -0.034789, -0.05861, 0.006931,
1211 0.012049, 0.046809, -0.129441, 0.025541, -0.030933,
1212 0.000297, -0.054058, 0.179837, 0.081515, 0.004932,
1213 -0.028445, -0.073753, 0.010629, 0.080042, 0.09871,
1214 -0.014017, 0.057597, 0.00101, 0.071658, -0.06757,
1215 0.074384, 0.110366, -0.018121, -0.108754, 0.037793,
1216 0.028041, -0.047508, -0.031359, -0.098913, -0.036486,
1217 -0.017311, -0.001279, -0.013694, 0.051968, 0.036512,
1218 0.088201, 0.031155, -0.043442, -0.065045, 0.023486,
1219 0.027, 0.104768, -0.015176, -0.038754, -0.004178,
1220 0.003732, 0.062166, 0.085438, -0.077368, -0.101645,
1221 -0.118347, 0.007589, -0.056489, 0.082268, 0.020253,
1222 -0.035623, 0.034235, -0.099354, -0.061237, -0.024285,
1223 0.005441, -0.039694, -0.025957, -0.004411, 0.049903,
1224 0.00304, 0.036243, 0.023552, -0.007334, 0.128963,
1225 -0.077727, -0.059175, -0.019437, -0.024872, 0.004339,
1226 0.084006, -0.076605, -0.102261, 0.036714, -0.035205,
1227 -0.007642, -0.005125, -0.030525, 0.09639, -0.053138,
1228 -0.002192, -0.024851, 0.050645, 0.04149, -0.043183,
1229 0.046796, -0.050894, 0.055023, 0.133834, -0.024013,
1230 0.000872, -0.057072, -0.00063, 0.04207, -0.129339,
1231 -0.064283, 0.037836, -0.066393, 0.004438, 0.125379,
1232 -0.062213, -0.067468, 0.090177, -0.046094, -0.025725,
1233 0.079101, -0.074909, -0.04373, -0.073483, 0.069672,
1234 -0.020413, -7.9e-05, -0.049725, -0.120751, -0.04698,
1235 0.039894, 0.072305, 0.009798, 0.005613, -0.045217,
1236 0.006862, 0.036285, 0.074819, -0.006747, 0.015144,
1237 -0.071562, 0.012324, -0.001082, 0.014835, 0.07996,
1238 -0.027804, 0.103358, -0.017203, 0.014914, -0.056687,
1239 0.030827, 0.028076, 0.003395, -0.073255, 0.11031,
1240 0.056498, -0.044893, 0.110122, -0.109058, -0.052302,
1241 -0.001604, -0.089977, -0.060548, 0.107808, 0.025463,
1242 -0.070203, -0.000513, -0.123913, 0.046247, -0.085392,
1243 0.096343, 0.09589, -0.06495, 0.070363, 0.034272,
1244 0.037773, -0.07695, 0.124858, -0.009008, -0.010115,
1245 0.083868, 0.051242, 0.039149, 0.015185, 0.083375,
1246 0.029773, -0.045961, 0.100395, 0.003743, -0.138294,
1247 -0.041755, 0.010806, 0.057797, -0.147374, 0.095858,
1248 -0.009929, -0.103347, -0.03231, -0.11056, 0.121377,
1249 0.145244, 0.017079, -0.080587, 0.020516, -0.044939,
1250 -0.010477, 0.038347, -0.003466, -0.001618, 0.0196,
1251 -0.021762, 0.125482, 0.011074, 0.065815, 0.040298,
1252 0.009202, -0.051686, 0.129684, -0.131135, 0.044536,
1253 0.009313, 0.102518, -0.075351, 0.054338, 0.020273,
1254 -0.045753, 0.031345, 0.000407, -0.097294, -0.000416,
1255 -0.007466, -0.044972, -0.078744, 0.042414, 0.066624,
1256 0.030318, -0.067852, 0.061416, -0.028992, 0.056606,
1257 0.004038, -0.036253, -0.014279, 0.023123, -0.007832,
1258 -0.000137, -0.027684, -0.127648, -0.007713, -0.008746,
1259 -0.0265, 0.049032, -0.183319, 0.059107, 0.0665,
1260 0.016902, -0.093331, 0.090129, 0.016648, -0.083492,
1261 -0.023669, -0.010473, 0.027614, 0.145068, 0.000681,
1262 0.044133, -0.035809, 0.005668, -0.090461, -0.090732,
1263 -0.033927, 0.042997, 0.0217, -0.046955, 0.044487,
1264 -0.026444, -0.061011, 0.01011, -0.023804, 0.030427,
1265 -0.015195, -0.155603, -0.016584, 0.021461, -0.003528,
1266 -0.059784, 0.032214, 0.000847, -0.098859, -0.07898,
1267 0.043188, 0.066433, 0.062309, 0.144507, 0.006865,
1268 -0.068953, 0.046698, 0.099369, 0.043354, -0.014309,
1269 -0.033202, -0.00295, 0.040734, 0.083454, 0.039319,
1270 0.051358, 0.006074, -0.073465, -0.090554, -0.120787,
1271 -0.040676, 0.092412, -0.085151, -0.021699, 0.005813,
1272 0.103135, 0.024964, 0.025832, -0.075982, 0.035699,
1273 -0.02731, -0.153007, 0.03642, 0.0576, 0.08163,
1274 0.001605, -0.054191, -0.033043, -0.01439, -0.071383,
1275 0.03618, 0.03586, -0.04698, 0.038541, -0.044757,
1276 -0.078032, -0.029878, 0.078183, 0.082251, 0.010549,
1277 0.053317, -0.038231, -0.06561, 0.055798, 0.037504,
1278 0.076317, -0.027605, 0.010349, 0.095361, -0.088636,
1279 0.049089, 0.113316, 0.051084, 0.038589, 0.03433,
1280 -0.055948, -0.037217, -0.015418, -0.139976, 0.036306,
1281 0.039306, -0.009889, -0.04491, 0.016559, -5e-05,
1282 0.106073, 0.01528, -0.002563, -0.109085, -0.048475,
1283 -0.035319, 0.16386, 0.032981, -0.044932, 0.003227,
1284 -0.123233, -0.010638, 0.055479, -0.003666, -0.072249,
1285 -0.111158, 0.065365, 0.010691, 0.039119, -0.001837,
1286 -0.118729, 0.06147, -0.002077, -0.033335, -0.060165,
1287 -0.026081, -0.001806, -0.079616, -7.5e-05, 0.080598,
1288 0.032908, -0.03514, -0.003136, -0.029024, 0.094622,
1289 -0.075773, -0.022898, -0.014817, 0.058393, -0.111505,
1290 0.036794, -0.01576, -0.112602, 0.030323, 0.085897,
1291 -0.020834, 0.056079, -0.103762, 0.117671, -0.041205,
1292 0.041684, -0.084336, 0.034186, 0.011973, -0.006313,
1293 0.040836, -0.035709, 0.03417, 0.122672, 0.090973,
1294 -0.053182, -0.059371, 0.091017, -0.090998, -0.116986,
1295 0.001405, 0.138364, 0.017107, -0.064076, 0.103486,
1296 -0.031142, -0.030068, 0.046547, -0.133471, -0.042055,
1297 0.140418, -0.125084, 0.035218, -0.001162, -0.02113,
1298 -0.012034, 0.097413, -0.079006, -0.03903, -0.054011,
1299 0.143887, 0.078835, -0.000601, -0.021173, -0.039895,
1300 -0.02505, 0.075865, 0.039221, 0.032458, 0.038206,
1301 -0.038873, -0.085003, -0.032736, -0.026956, 0.113525,
1302 -0.023933, 0.120794, -0.003862, -0.026459, -0.138724,
1303 0.089559, 0.029002, -0.052098, -0.085692, 0.115174,
1304 0.083497, 0.024179, 0.119021, -0.067541, 0.019047,
1305 -0.02772, -0.086083, -0.055329, 0.020087, -0.027086,
1306 -0.047858, -0.051975, -0.035205, -0.059342, -0.068582,
1307 0.058936, 0.044141, -0.080315, 0.119744, -0.046518,
1308 -0.064588, -0.027212, 0.147823, 0.032404, 0.01669,
1309 0.024302, 0.08556, -0.001525, 0.016469, 0.038891,
1310 -0.020146, 0.019943, 0.045067, 0.03807, -0.086274,
1311 -0.025769, 0.044192, 0.102141, -0.064765, 0.055849,
1312 0.048803, -0.030066, -0.00922, -0.116655, 0.068295,
1313 0.04758, -0.076138, -0.070307, 0.047582, -0.111342,
1314 0.004656, -0.004452, 0.029703, -0.004259, 0.01113,
1315 0.014446, 0.166086, 0.059565, 0.000985, -0.052607,
1316 0.013251, 0.094476, 0.106216, 0.016715, -0.025581,
1317 -0.101244, 0.072897, -0.114526, 0.024681, 0.010784,
1318 -0.051759, 0.032389, -0.050202, -0.083316, 0.052334,
1319 -0.0351, -0.116721, -0.110336, -0.053391, 0.065541,
1320 -0.02979, -0.020457, 0.135285, -0.004142, 0.111508,
1321 -0.030936, 0.018549, -0.016034, 0.018572, -0.084336,
1322 -0.048615, -0.018739, -0.096815, -0.090162, 0.01941,
1323 -0.040821, -0.009925, -0.097427, 0.091891, 0.031793,
1324 -0.024598, -0.132848, 0.078353, 0.089339, -0.068562,
1325 -0.020779, 0.040974, -0.055675, 0.169131, 0.029649,
1326 0.078165, -0.050679, -0.005881, -0.004983, -0.104324,
1327 -0.069096, 0.12796, 0.011392, -0.000769, 0.062168,
1328 -0.079842, 0.001606, 0.089284, -0.035465, 0.031075,
1329 0.029519, -0.102956, -0.010902, -0.06403, -0.019669,
1330 0.057492, 0.075802, -0.008904, -0.060743, -0.053144,
1331 0.005126, 0.06298, 0.085674, 0.019895, 0.104448,
1332 -0.086473, 0.056906, 0.056795, -0.01294, 0.036606,
1333 -0.008604, -0.04045, 0.042062, 0.04181, 0.02768,
1334 -0.092256, 0.091237, -0.0395, 0.024761, -0.088978,
1335 0.068585, 0.088295, -0.048033, -0.017808, 0.04537,
1336 0.1246, -0.03532, 0.056751, 0.092751, 0.054025,
1337 -0.015725, -0.061938, 0.036806, 0.078768, -0.016065,
1338 0.002444, -0.023887, -0.072177, -0.02979, -0.00586,
1339 0.015478, 0.129142, -0.091024, 0.071482, -0.065445,
1340 0.005867, -0.006051, 0.098646, 0.054089, 0.018713,
1341 0.033837, -0.008355, -0.051959, 0.05744, 0.160305,
1342 -0.001863, 0.016738, -0.033705, 0.062233, -0.140759,
1343 0.027342, 0.060074, 0.030362, -0.117875, 0.06102,
1344 -0.028026, -0.088238, -0.003782, -0.146288, -0.080395,
1345 0.050048, 0.036136, 0.0195, 0.066902, 0.020355,
1346 0.024817, -0.056254, -0.140918, -0.085803, 0.02054,
1347 -0.00373, 0.161411, -0.049408, 0.000219, -0.002348,
1348 -0.055021, 0.06782, 0.126483, -0.031063, -0.119299,
1349 -0.102834, 0.001133, 0.010172, 0.107707, -0.029106,
1350 -0.059813, 0.036698, -0.02172, -0.043189, -0.00227,
1351 -0.031694, 0.009605, -0.022459, -0.036417, 0.053675,
1352 0.061561, -0.012723, 0.05004, -0.02945, 0.131044,
1353 -0.124516, -0.107579, -0.012171, 0.011761, 0.002599,
1354 0.016327, -0.060854, -0.08091, 0.030875, -0.002997,
1355 -0.02097, -0.01188, -0.086096, 0.037912, 0.012421,
1356 0.055253, -0.00725, 0.04174, 0.055596, -0.02442,
1357 -0.017564, -0.079202, 0.008897, 0.180091, 0.05449,
1358 0.001772, -0.022151, -0.082048, -0.010559, -0.163377,
1359 -0.02066, -0.017827, -0.0308, -0.045856, 0.122405,
1360 -0.052946, -0.13049, 0.097383, -0.116737, 0.039855,
1361 0.056504, -0.059549, -0.059931, -0.018658, 0.034898,
1362 0.054889, 0.005373, -0.066796, -0.12736, 0.04796,
1363 0.071746, 0.02741, -0.006212, 0.024132, -0.094062,
1364 0.005369, -0.008926, 0.073085, -0.014265, -0.029204,
1365 -0.100025, -0.072076, 0.014651, 0.069368, 0.048275,
1366 -0.066823, 0.086074, 0.014921, -0.015395, -0.045138,
1367 0.026224, 0.000902, -0.038208, -0.035221, 0.057397,
1368 0.097606, -0.073195, 0.051626, -0.033488, 0.027813,
1369 0.00207, -0.09751, -0.057877, 0.12668, -0.082194,
1370 -0.072597, 0.006014, -0.093185, -0.016853, -0.02279,
1371 0.138461, 0.005394, -0.056485, 0.102778, 0.028918,
1372 -0.045604, -0.060041, 0.121251, 0.02926, -0.101404,
1373 0.061194, 0.033039, -0.016798, 0.064263, 0.065144,
1374 0.010925, 0.023151, 0.107623, 0.027977, -0.090356,
1375 -0.024863, -0.00644, 0.04787, -0.047486, 0.088211,
1376 -0.012139, -0.116121, -0.000525, -0.140961, 0.016604,
1377 0.06349, -0.022732, -0.046944, 0.06697, -0.068838,
1378 0.016143, 0.026202, -0.043344, -0.064881, 0.024877,
1379 -0.072845, 0.120531, 0.077901, 0.047272, 0.011713,
1380 -0.044646, 0.040932, 0.076164, -0.101233, -0.029615,
1381 -0.065118, 0.050966, -0.023273, 0.053517, 0.02371,
1382 -0.007489, 0.035822, 0.023439, -0.055528, -0.004033,
1383 -0.007662, -0.096546, -0.081662, 0.037141, 0.137562,
1384 0.075526, -0.097496, 0.12399, 0.013996, 0.087005,
1385 -0.019788, -0.082043, 0.020524, 0.007027, -0.021537,
1386 -0.036264, -0.090952, -0.177722, -0.009306, -0.031473,
1387 -0.009287, 0.047557, -0.090241, 0.089347, 0.056375,
1388 -0.005506, -0.112128, 0.004356, 0.064421, -0.038478,
1389 -0.035674, 0.040616, 0.007731, 0.160236, -0.054199,
1390 -0.007537, 0.012434, 0.022001, -0.021567, -0.075163,
1391 -0.026053, 0.015909, 0.041015, 0.021832, 0.034152,
1392 -0.048539, -0.086655, 0.047465, 0.000682, 0.04264,
1393 0.023697, -0.095971, -0.022874, -0.000369, 0.003413,
1394 0.046005, 0.064807, 0.010131, -0.129517, -0.092254,
1395 0.116469, 0.053796, 0.03811, 0.09447, 0.018435,
1396 -0.034803, 0.073591, 0.108348, 0.104096, 0.049884,
1397 -0.021274, 0.022097, 0.065347, 0.065555, 0.089319,
1398 0.000474, -0.004186, -0.040493, -0.065543, -0.083167,
1399 -0.017425, 0.049177, -0.044248, 0.008399, 0.06818,
1400 0.154778, 0.027549, -0.008012, 0.01495, 0.043254,
1401 0.039599, -0.136415, -0.018716, 0.0619, 0.031263,
1402 0.058118, -0.0372, -0.114692, -0.080876, -0.053238,
1403 0.077436, 0.015015, -0.092517, 0.005804, -0.065541,
1404 -0.005653, -0.073184, 0.095594, 0.08247, 0.060989,
1405 -0.000262, -0.035766, -0.083441, 0.122634, 0.088429,
1406 -0.014397, -0.055434, -0.005659, 0.069697, -0.064892,
1407 0.008824, 0.082498, 0.051866, -0.03607, 0.033403,
1408 -0.082855, -0.087376, 0.002714, -0.097121, -0.01917,
1409 0.027179, -0.06987, -0.009316, 0.04745, 0.040657,
1410 0.060527, 0.00462, -0.040264, -0.051228, -0.029023,
1411 -0.071384, 0.101421, 0.009538, -0.099185, 0.0601,
1412 -0.048395, -0.024677, 0.025125, -0.056043, -0.058045,
1413 -0.054059, 0.008107, 0.021078, 0.04529, -0.018459,
1414 -0.113359, 0.014009, -0.006826, -0.052747, 0.046922,
1415 -0.075976, 0.008538, -0.084411, -0.004369, 0.045801,
1416 0.075392, -0.06734, 0.014454, 0.032407, 0.092478,
1417 -0.061859, -0.083458, 0.051442, 0.031695, -0.080233,
1418 0.054028, 0.027, -0.073549, 0.0323, 0.036501,
1419 -0.011384, -0.02078, -0.124142, 0.093905, -0.028332,
1420 0.039139, -0.030944, 0.079952, -0.001717, 0.013976,
1421 0.038005, -0.001751, -0.044097, 0.129827, 0.014385,
1422 -0.001682, -0.063458, -0.002511, -0.07815, -0.141236,
1423 0.021955, 0.104851, -0.093246, -0.060019, 0.069998,
1424 0.004399, -0.096408, 0.059327, -0.062268, -0.074327,
1425 0.108063, -0.090534, -0.045654, 0.048119, 0.049187,
1426 0.042105, 0.043964, -0.091516, -0.047999, -0.028881,
1427 0.070471, 0.055401, -0.025605, 0.011176, 0.008475,
1428 0.022254, 0.038266, 0.048106, 0.047176, -0.017967,
1429 -0.010978, -0.088762, 0.034806, 0.019311, 0.126815,
1430 -0.010571, 0.053073, 0.032162, -0.00078, -0.1522,
1431 -0.014253, -0.021954, -0.13104, -0.061376, 0.113838,
1432 0.060725, 0.020201, 0.102533, -0.011392, -0.052046,
1433 -0.069625, -0.091011, -0.097954, 0.067847, 0.017856,
1434 -0.053461, -0.040679, -0.121664, -0.077208, -0.106919,
1435 0.057996, 0.069756, -0.012433, 0.069569, -0.055159,
1436 -0.024801, -0.060448, 0.1017, 0.014619, 0.03658,
1437 -0.004526, 0.093977, -0.028211, 0.045261, 0.149736,
1438 -0.014691, -0.007959, 0.097708, 0.107128, -0.079723,
1439 0.029157, 0.020116, 0.104828, -0.064208, 0.119172,
1440 0.039583, -0.029446, 0.006628, -0.110398, 0.004062,
1441 0.048132, -0.060601, 0.009448, 0.051777, -0.053127,
1442 0.050551, -0.001924, 0.028079, -0.050618, -0.013698,
1443 0.00192, 0.088162, 0.073078, 0.085795, -0.066788,
1444 0.014025, 0.042699, 0.176241, -0.046674, -0.034822,
1445 -0.051433, 0.121729, -0.057076, 0.023901, 0.045075,
1446 -0.057182, 0.05478, -0.01728, -0.146674, 0.00209,
1447 -0.016223, -0.044841, -0.084524, -0.152479, 0.072688,
1448 -0.006962, 0.008711, 0.127455, -0.003876, 0.053162,
1449 -0.013682, -0.025386, -0.000427, -0.024811, -0.024474,
1450 -0.056267, 0.062116, -0.121311, -0.053011, 0.065651,
1451 -0.075385, -0.00868, -0.063033, 0.083039, 0.110577,
1452 -0.000152, -0.127017, 0.055904, 0.013659, 0.005664,
1453 -0.002852, 0.047248, 0.001128, 0.100773, 0.037274,
1454 0.026368, -0.042205, 0.021887, -0.020247, -0.056678,
1455 -0.077475, 0.089799, 0.058003, 0.039741, 0.106663,
1456 -0.016853, -0.015972, 0.075741, -0.048829, 0.015374,
1457 -0.032657, -0.125677, -0.06206, -0.057409, -0.061287,
1458 0.073151, 0.050357, 0.053547, -0.059886, -0.051298,
1459 0.057954, -0.003817, 0.076028, 0.006757, 0.061109,
1460 -0.03803, 0.143209, 0.092207, -0.018493, 0.062291,
1461 0.005751, -0.036449, 0.067582, 0.031449, 0.101894,
1462 -0.080754, 0.011515, -0.049485, -0.016137, -0.087818,
1463 0.108851, 0.038222, -0.099315, -0.003117, 0.052278,
1464 0.107517, -0.036233, 0.06537, 0.040409, -0.057029,
1465 -0.033167, -0.081758, -0.019502, 0.033438, 0.013365,
1466 -0.01776, -0.025906, -0.020244, -0.078722, -0.011697,
1467 -0.028246, 0.068647, -0.106417, 0.026956, -0.064914,
1468 0.062711, -0.017857, 0.151539, 0.044613, -0.01782,
1469 0.009085, -0.032785, -0.025795, 0.07579, 0.075667,
1470 -0.040398, 0.058556, -0.042634, 0.093973, -0.099529,
1471 0.057103, 0.073562, 0.01264, -0.066141, 0.029558,
1472 0.060219, -0.083699, -0.054799, -0.120442, -0.000374,
1473 0.006521, 0.034512, -0.039558, 0.042191, 0.033865,
1474 0.103992, -0.014977, -0.077384, -0.05134, 0.001873,
1475 0.047451, 0.140612, -0.024885, -0.02142, -0.046604,
1476 0.030606, 0.10066, 0.076356, -0.019288, -0.09857,
1477 -0.114463, -0.010855, -0.034657, 0.025618, -0.003356,
1478 -0.087913, 0.064346, -0.07554, -0.091569, -0.024965,
1479 -0.021232, -0.017255, -0.056931, -0.003104, 0.030219,
1480 -0.020112, -0.012334, 0.035298, 0.001405, 0.161753,
1481 -0.064618, -0.064401, -0.007218, -0.00012, -0.047208,
1482 0.116105, -0.056464, -0.069645, -0.007032, -0.01209,
1483 -0.023237, 0.016, -0.039802, 0.074319, -0.012604,
1484 0.014863, -0.058081, 0.093219, 0.062253, -0.040302,
1485 0.027405, -0.128683, 0.039923, 0.116808, -0.011706,
1486 0.012483, -0.017698, 0.003645, -0.007588, -0.120662,
1487 -0.032868, 0.066217, -0.031343, -0.034166, 0.146334,
1488 -0.031228, -0.125921, 0.117756, -0.042686, -0.062094,
1489 0.049375, -0.112262, 0.010166, -0.073599, 0.04869,
1490 0.028292, 0.020076, -0.062865, -0.106114, -0.0253,
1491 0.066916, 0.029279, 0.028191, -0.003599, -0.040614,
1492 0.020491, 0.060238, 0.052747, -0.01039, -0.022389,
1493 -0.063358, -0.028707, 0.035907, -0.011898, 0.079703,
1494 -0.003758, 0.078051, -0.017869, 0.009045, -0.018982,
1495 0.034974, 0.069405, -0.018909, -0.038613, 0.083909,
1496 0.033935, -0.036607, 0.088891, -0.052599, -0.059839,
1497 0.052758, -0.068308, -0.063615, 0.126093, -0.00946,
1498 -0.042175, -0.011113, -0.073071, 0.052086, -0.052619,
1499 0.049226, 0.066898, -0.045666, 0.117923, 0.053656,
1500 -0.010739, -0.043962, 0.141903, 0.001792, -0.035469,
1501 0.090671, 0.043993, -0.013655, 0.018989, 0.127223,
1502 0.00103, -0.001154, 0.081839, -0.024979, -0.103704,
1503 -0.07792, 0.036083, 0.06822, -0.06221, 0.11373,
1504 -0.010501, -0.065801, 0.050885, -0.104304, 0.121937,
1505 0.11185, 0.00968, -0.011791, 0.001677, -0.035029,
1506 0.010677, 0.024572, -0.01286, -0.030323, -0.010466,
1507 0.011279, 0.167752, 0.003136, 0.109709, 0.007292,
1508 0.000987, 0.004572, 0.108706, -0.113192, -0.012431,
1509 -0.015225, 0.073653, -0.051275, 0.077928, -0.012752,
1510 -0.011708, 0.014172, 0.025162, -0.095378, 0.026382,
1511 -0.028889, -0.058569, -0.129329, 0.011087, 0.061452,
1512 0.056893, -0.058004, 0.103586, -0.060752, 0.081824,
1513 -0.042805, -0.015991, -0.024444, 0.028952, -0.013528,
1514 0.042851, 0.019988, -0.165741, -0.031012, -0.014713,
1515 -0.026059, 0.031698, -0.134343, 0.03209, 0.020828,
1516 0.051674, -0.128006, 0.050856, 0.02222, -0.073513,
1517 -0.00934, 0.013756, 0.036163, 0.098407, -0.023495,
1518 0.023858, 0.008121, 0.02222, -0.103489, -0.046663,
1519 -0.033, 0.063565, 0.029224, -0.012693, 0.084202,
1520 0.012187, -0.051, 0.026126, -0.043293, 0.008675,
1521 -0.019812, -0.16507, -0.014555, -0.047431, 0.01799,
1522 -0.040073, 0.107192, 0.022228, -0.089023, -0.066885,
1523 0.01463, 0.073186, 0.069902, 0.072634, 0.019593,
1524 -0.041539, 0.031788, 0.09231, 0.027223, 0.034027,
1525 -0.051855, 0.000391, 0.007869, 0.13191, 0.069384,
1526 0.046276, 0.04044, -0.037093, -0.031393, -0.112828,
1527 0.015709, 0.096749, -0.103205, -0.021284, 0.011405,
1528 0.158287, -0.021028, 0.042219, -0.050759, 0.069715,
1529 -0.042907, -0.11698, 0.014224, 0.094648, 0.028395,
1530 0.041535, -0.057033, -0.047607, -0.024419, -0.034905,
1531 0.010125, 0.036728, -0.052503, -0.001839, -0.033477,
1532 -0.053414, -0.070394, 0.092895, 0.1006, -0.026352,
1533 0.080574, -0.028763, -0.059548, 0.094571, 0.091787,
1534 0.041437, 0.014312, 0.045792, 0.108269, -0.081586,
1535 0.056288, 0.137447, 0.054718, -0.032474, 0.054502,
1536 -0.100144, -0.00646, 0.024739, -0.117043, -0.008919,
1537 0.070299, -0.036862, -0.014543, 0.0245, -0.015222,
1538 0.114975, -0.043705, 0.000421, -0.061872, -0.035148,
1539 -0.022797, 0.128575, -0.031798, -0.086718, -0.007172,
1540 -0.071706, -0.006833, 0.028645, -0.007011, -0.096745,
1541 -0.142269, 0.027996, 0.06521, 0.061381, 0.000741,
1542 -0.140531, 0.01748, -0.014986, -0.040893, -0.012718,
1543 -0.012494, -0.021869, -0.032923, 0.016456, 0.104475,
1544 0.010792, -0.066178, 0.019097, -0.001893, 0.067513,
1545 -0.092673, -0.059851, -0.045936, 0.052642, -0.0625,
1546 0.065013, -0.025659, -0.149301, 0.051705, 0.035692,
1547 -0.04579, -0.007482, -0.069141, 0.149365, -0.042039,
1548 0.018492, -0.081315, 0.05588, 0.058158, 0.019669,
1549 0.063836, -0.012391, 0.007057, 0.155454, 0.033854,
1550 -0.016532, -0.007661, 0.043113, -0.080283, -0.10867,
1551 -0.029344, 0.093781, -0.01584, -0.068134, 0.091804,
1552 0.004148, -0.058507, 0.059633, -0.095883, -0.004939,
1553 0.086151, -0.113571, -0.019466, -0.009167, 0.003662
1554};
1555
1556const struct lsp_codebook lsp_cbjvm[] = {
1557 /* codebook/lspjvm1.txt */
1558 {
1559 10,
1560 9,
1561 512,
1562 codes0
1563 },
1564 /* codebook/lspjvm2.txt */
1565 {
1566 5,
1567 9,
1568 512,
1569 codes1
1570 },
1571 /* codebook/lspjvm3.txt */
1572 {
1573 5,
1574 9,
1575 512,
1576 codes2
1577 },
1578 { 0, 0, 0, 0 }
1579};
diff --git a/codebooklspmelvq.c b/codebooklspmelvq.c
new file mode 100644
index 0000000..f49ff36
--- /dev/null
+++ b/codebooklspmelvq.c
@@ -0,0 +1,247 @@
1/* THIS IS A GENERATED FILE. Edit generate_codebook.c and its input */
2
3/*
4 * This intermediary file and the files that used to create it are under
5 * The LGPL. See the file COPYING.
6 */
7
8#include "defines.h"
9
10 /* /Users/erdgeist/Coding/codec2/src/codebook/lspmelvq1.txt */
11#ifdef __EMBEDDED__
12static const float codes0[] = {
13#else
14static float codes0[] = {
15#endif
16 640.185, 893.139, 1393.85, 1494.06, 1656.26, 1700.82,
17 558.516, 716.906, 1057.36, 1182.62, 1503.8, 1610.03,
18 615.108, 769.622, 1120.16, 1222.84, 1366.46, 1465.05,
19 663.458, 736.833, 964.764, 1043.54, 1623.17, 1681.29,
20 487.957, 577.723, 1017.43, 1177.04, 1552.1, 1615.69,
21 536.099, 733.407, 1292.28, 1406.09, 1577.7, 1637.49,
22 473.015, 542.559, 877.397, 1285.82, 1591.04, 1647.44,
23 525.343, 652.014, 1206.83, 1493.96, 1647.97, 1698.3,
24 510.887, 572.868, 945.226, 1445.68, 1678.17, 1705.53,
25 534.915, 721.265, 1275.92, 1415.76, 1648.5, 1695.73,
26 865.189, 1047, 1267.14, 1389.32, 1646.57, 1696.97,
27 608.033, 869.887, 1300.95, 1432.87, 1639.74, 1689.41,
28 554.972, 649.352, 866.845, 979.873, 1645.31, 1695.39,
29 696.079, 813.97, 1102.49, 1219.79, 1536.49, 1621.94,
30 553.879, 691.097, 1200.84, 1339.34, 1629.08, 1683.5,
31 778.561, 997.776, 1258.63, 1390.34, 1601.99, 1657.86,
32 713.107, 778.893, 992.875, 1051.95, 1497.45, 1650.66,
33 490.27, 598.18, 1116.02, 1244.13, 1622.26, 1672.21,
34 448.556, 512.085, 1271.7, 1448.18, 1579.37, 1642.48,
35 465.688, 535.312, 1099.19, 1535.79, 1684.29, 1710.9,
36 812.222, 1087.53, 1470.44, 1559.73, 1692.18, 1726.38,
37 428.174, 489.426, 1160.33, 1409.3, 1597.5, 1651.3,
38 712.81, 957.56, 1433.02, 1516.37, 1675.39, 1710.06,
39 717.255, 934.073, 1305.2, 1436.72, 1647.2, 1693.09,
40 492.888, 580.393, 1339.52, 1461.07, 1592, 1653.42,
41 550.467, 675.888, 990.888, 1177.44, 1615.64, 1658,
42 714.528, 801.792, 1072.94, 1146.08, 1637.06, 1706.58,
43 513.819, 590.989, 798.691, 895.755, 1557.76, 1624.56,
44 436.653, 518.413, 1281.99, 1547.08, 1685.12, 1717.76,
45 681.854, 758.354, 1046.65, 1120.92, 1412.25, 1603.42,
46 873.962, 1118.49, 1376.61, 1465.07, 1665.38, 1707.18,
47 553.529, 634.092, 1144.77, 1284.8, 1542.87, 1620.63,
48 448.532, 519.097, 1054.57, 1319.66, 1591.26, 1649.85,
49 742.267, 885.293, 1152.83, 1318.51, 1569.36, 1631.45,
50 529.03, 654.522, 1355.76, 1511.75, 1662.39, 1706.4,
51 463.794, 597.77, 1176.05, 1366.13, 1629.37, 1678.01,
52 626.936, 706.66, 1058.04, 1323.62, 1473.28, 1599.68,
53 477.322, 615.5, 1488.89, 1550.5, 1683.1, 1712.34,
54 547.442, 815.442, 1313.38, 1486.96, 1671.97, 1717.4,
55 610.671, 819.955, 1219.11, 1363.66, 1592.05, 1654.31,
56 547.414, 746.54, 1438.43, 1517.72, 1659.64, 1695.57,
57 604.823, 821.146, 1137.94, 1358.29, 1598.94, 1655.64,
58 525.935, 616.739, 1060.13, 1427.33, 1593.35, 1657.48,
59 622.5, 762.143, 1318.65, 1410.96, 1618.12, 1680.06,
60 436.917, 516.583, 1390.29, 1475.86, 1594.71, 1633.74,
61 792.487, 1031.24, 1362.62, 1472.68, 1649.26, 1697.35,
62 457.707, 526.207, 865.966, 1120.47, 1564.83, 1625.28,
63 526.39, 624.21, 1269.65, 1374.23, 1558.07, 1620.96,
64 483.768, 573.505, 1440.66, 1512.43, 1622.37, 1671.31,
65 953.061, 1194.03, 1416.67, 1515.82, 1678.82, 1718.21,
66 499.947, 627.358, 1299.94, 1394.23, 1643.17, 1685.33,
67 648.723, 838.181, 1225.5, 1383.45, 1637.46, 1691.67,
68 672.588, 1022.6, 1346.21, 1443.75, 1651.15, 1695.43,
69 581.833, 674.944, 955.167, 1020.5, 1370.5, 1503.11,
70 536.143, 652.531, 1243.84, 1315.27, 1425.1, 1505.73,
71 560.558, 786.65, 1224.66, 1373.98, 1630.06, 1682.68,
72 591.926, 783.722, 982, 1140.81, 1581.61, 1625.28,
73 548.537, 644.524, 940.451, 1048.74, 1557.89, 1609.48,
74 516.916, 723.253, 1135.95, 1309.19, 1600.08, 1669.48,
75 426.521, 506.077, 1457.73, 1535.02, 1641.35, 1678.45,
76 645.189, 776.595, 1020.78, 1240.07, 1597, 1648.7,
77 637.105, 941.474, 1242.21, 1372.49, 1646.7, 1694.8,
78 691.228, 788.141, 1202.12, 1294.89, 1626.97, 1681.77,
79 699.08, 886.655, 1300.9, 1399.28, 1579.94, 1646.79
80};
81 /* /Users/erdgeist/Coding/codec2/src/codebook/lspmelvq2.txt */
82#ifdef __EMBEDDED__
83static const float codes1[] = {
84#else
85static float codes1[] = {
86#endif
87 4.44342, 51.1708, 7.45726, -27.4373, -18.5056, -18.1989,
88 51.58, 63.3166, 57.7796, -44.1591, -18.4834, -6.93392,
89 -20.2795, -21.7454, 4.66947, 52.1569, 30.4367, 36.8582,
90 -29.1104, -5.63933, -3.45383, -63.0261, -20.4423, -19.0485,
91 2.91622, 40.8374, 16.579, -51.8461, 38.5045, 18.1728,
92 -20.6977, -11.4022, -36.6173, -16.6116, -56.8965, -24.301,
93 -20.2385, 26.6332, 33.1191, 27.6284, -36.7493, -25.6041,
94 54.9871, 0.71748, 23.0674, -22.1031, 11.6643, 10.9938,
95 -62.7215, 21.7547, 21.2907, -7.64891, -4.5533, -9.71777,
96 -9.56338, -3.85841, 25.0454, -9.45216, 6.05017, 5.35043,
97 47.3823, 56.6122, -27.0315, -24.67, 4.86343, -0.225495,
98 26.3997, 26.7857, -1.66167, 62.8366, -19.7653, -8.55169,
99 -8.77648, -9.04545, -7.88996, 28.2433, -35.0963, -21.9709,
100 14.8423, 25.4563, -56.1262, -50.2934, -22.9393, -15.8113,
101 4.94186, 27.7798, 8.34579, 10.8553, -3.12587, -3.97807,
102 12.6426, -52.2317, 37.2487, -57.2067, -14.5125, -5.54035,
103 13.485, 15.3246, -23.9644, -21.3135, 19.5779, 14.1597,
104 -55.3543, -45.2077, 10.5185, 43.0461, -24.9859, -19.3484,
105 27.7226, 32.1882, 20.0321, 24.3328, -72.8194, -51.1823,
106 -31.3818, -5.25745, -43.7806, 14.1312, 17.6392, 9.81024,
107 -48.26, -26.2973, -44.1428, -31.9001, 22.5085, -0.467938,
108 7.37202, -7.79071, -12.5732, 27.1074, 9.34052, 14.4477,
109 14.5295, 8.82597, 57.0009, -16.3234, -32.4142, -21.0224,
110 32.4616, 48.6062, 38.5452, 9.77182, 1.82856, 11.5063,
111 -43.8275, -22.6263, -29.8278, 13.6115, 9.66849, -63.5218,
112 -11.9967, 2.74308, -73.6375, -20.9809, -4.11839, 7.71405,
113 24.0162, -2.29513, -6.80983, -26.4043, -21.8529, -16.3381,
114 -16.1484, 35.9086, -3.0837, 3.83958, 42.3003, 17.5003,
115 54.1225, -48.7513, -14.8712, -38.1256, 15.2903, 7.33079,
116 53.0929, 13.9221, 10.6536, 24.345, -16.5952, -16.0365,
117 33.1415, 38.5714, -26.0251, 22.021, 15.6866, 13.2593,
118 15.7194, -49.4061, 31.4552, 10.1896, 0.219911, 1.62902,
119 4.10868, 14.2755, 58.475, -1.16668, 52.6265, 43.4938,
120 358.653, -112.587, 85.9867, 52.08, -52.88, -249.24,
121 -12.5792, -6.64039, -33.0106, 1.51449, 50.3259, 61.6091,
122 -6.81685, 14.3146, 14.1563, 53.6363, 83.6051, 38.174,
123 -18.0006, 41.3575, -46.3736, 8.47794, -10.4611, -11.3847,
124 28.7711, 31.4689, -39.5744, 1.43977, -37.7309, -30.5309,
125 -34.4692, -11.0778, 44.4681, -60.0045, -44.9729, -34.8364,
126 38.7401, 41.0529, -7.92946, 20.0279, 74.4246, 54.6498,
127 81.8008, 133.531, -5.47375, 34.4759, 75.7417, 52.6112,
128 -61.5067, -76.6328, -47.2471, -43.5928, -9.46878, 0.832598,
129 -11.544, -44.7728, -13.9257, -3.32122, 24.816, 21.9064,
130 2.83945, -45.0522, -36.8776, -14.7577, -11.9912, -8.75366,
131 -8.97657, -14.0499, 39.2628, 48.8038, -14.3789, -4.79625,
132 31.6292, 32.0168, 5.52278, -79.8411, -24.1789, -15.7597,
133 15.893, 10.4667, -43.9057, -20.4885, 80.7594, 6.8023,
134 22.3285, -69.4942, -5.16156, 48.8868, 4.01995, -3.04376,
135 31.4062, -20.0952, -55.1259, 0.505988, 20.86, 15.0816,
136 -12.9696, 37.2548, 18.1009, 51.0767, 18.2053, 19.8474,
137 -45.4855, -45.3454, -4.22795, -15.8693, -6.07272, -1.99631,
138 -9.25462, 45.0241, 70.2879, -44.4484, 2.63165, 4.15336,
139 -51.1589, -27.7586, 19.7999, -9.87882, 63.4125, 48.3124,
140 -8.94084, -13.4815, -44.9602, 52.839, -17.2582, -1.59439,
141 23.18, -3.00374, 33.162, 31.5424, 29.111, 25.9327,
142 -28.4665, -10.6868, 88.7543, -3.88024, 17.5881, 13.7336,
143 -10.6578, 7.43021, -20.945, -17.6491, -11.2815, -10.8001,
144 -35.6182, -6.90301, 3.92829, 26.9695, 2.8894, 5.01685,
145 -3.78263, -19.2095, -10.5568, -67.7468, 20.3733, 29.552,
146 53.8109, -33.8374, -27.8223, -7.73289, -31.3462, -23.5678,
147 -38.8762, -17.7679, 11.457, 28.4607, 50.7006, -19.2488,
148 -44.6024, -60.2806, 56.35, 21.7545, 5.23677, 7.66608,
149 -3.80758, -39.1425, 28.8305, -3.09285, -42.7534, -25.1803,
150 45.2559, 28.8742, 60.0723, 64.461, 3.51203, -27.883
151};
152 /* /Users/erdgeist/Coding/codec2/src/codebook/lspmelvq3.txt */
153#ifdef __EMBEDDED__
154static const float codes2[] = {
155#else
156static float codes2[] = {
157#endif
158 -9.63558, 27.5501, 15.4445, -4.34872, -1.8587, 1.27054,
159 -15.5343, 23.0515, -15.4436, -2.01887, -6.19433, -13.5085,
160 8.38867, -1.60998, -32.3903, 10.1765, 1.9467, 12.2454,
161 -3.06306, -9.55983, 14.367, -1.87159, 19.6192, -3.78366,
162 -18.495, -13.3811, -23.8928, -20.3745, -6.87856, -17.4887,
163 15.4925, 14.707, -0.0697855, 15.7541, 12.6051, -3.19768,
164 9.60466, -4.56494, 10.1616, 15.5594, 6.89224, -31.5602,
165 -11.5625, -23.0872, 34.9163, 12.3052, 7.67426, -1.26298,
166 2.5486, -3.90251, -19.1132, 7.6131, -31.0016, 12.4759,
167 2.74156, 12.4124, -39.5057, -0.325024, -22.9186, -28.5606,
168 6.30148, 15.4402, -2.6284, -20.1603, 5.22906, -12.3451,
169 -6.91862, 16.6335, -1.65064, 2.99602, -23.9479, -1.43947,
170 -14.3907, -31.417, 10.1113, 1.70013, -21.5733, 4.736,
171 -1.67171, 6.22751, -13.7187, 21.0936, -9.69243, -10.5756,
172 2.15266, 21.2198, -13.0171, -1.43135, 18.8831, 10.6664,
173 13.8913, 27.3565, 0.472838, -7.40477, -14.8705, 25.7448,
174 28.402, -2.05484, -9.32712, -17.3169, 15.643, 6.96908,
175 -15.863, -17.8482, -24.9238, 12.5574, 7.17566, 0.0161972,
176 5.99291, -41.0228, 1.95791, -6.78012, 9.20162, 4.6234,
177 -6.33629, -7.61679, 27.7318, -8.9214, -14.1931, 7.88247,
178 -12.2367, -21.245, -2.5927, 13.7776, -2.7864, -24.5072,
179 23.15, -9.93687, -2.92559, 3.88086, 11.2667, 11.1998,
180 9.67437, -9.4269, 6.2582, 36.5694, 2.88654, 1.82052,
181 15.385, -2.88243, 19.8377, -14.5111, 5.92264, -2.55757,
182 -20.9648, 3.76147, 18.5074, -13.5547, -7.84261, -19.98,
183 24.6032, 16.989, -19.1622, 1.35535, -0.0122027, 0.166227,
184 9.98886, -6.89666, -20.5111, -2.89196, 2.58467, -17.049,
185 -9.17761, -23.7209, 12.6088, -18.2654, 2.17718, -13.0865,
186 -9.73326, -12.2682, 6.80914, 20.3469, -10.2912, 4.85191,
187 -5.19406, 6.78014, 18.0099, 14.3782, -0.124328, -10.0141,
188 -4.69806, 6.71393, -19.1371, 8.19814, 23.3987, -10.3316,
189 1.02965, -4.63654, 21.9822, 11.5088, -30.9617, -20.6354,
190 -33.2824, 31.4666, -11.4837, 11.5144, -1.36834, 9.44599,
191 -37.5431, -3.16317, -2.09497, -2.62712, 40.4714, -33.0527,
192 -8.79595, -15.5174, -15.7916, 7.97003, 37.2542, 40.7063,
193 -14.7261, -12.6884, 2.42105, -10.2686, 25.9033, 14.8525,
194 22.9598, -16.6224, -3.64949, 4.44269, -22.3897, 13.6968,
195 -10.874, 4.18931, -24.2284, -3.63764, -15.1379, 40.9515,
196 28.2393, -8.63225, -12.544, 28.8282, -0.987894, -4.9824,
197 -25.0777, -0.481678, -3.37082, 5.55114, -9.89898, -8.07628,
198 23.3581, 3.12034, -8.63348, 0.63042, -18.2216, -22.1886,
199 44.9505, 19.8267, 23.7129, 8.58075, 7.80458, 1.78796,
200 -8.13112, -2.1262, -7.12776, -25.0529, -16.7287, 8.41402,
201 2.01965, 19.2579, 20.0963, 5.99199, 28.1098, 5.96128,
202 2.42493, -6.33216, -26.5858, -23.8607, 8.27049, 3.05805,
203 0.0153248, 0.446112, -4.92759, 19.0023, 22.7346, 15.5451,
204 -7.39591, 40.285, 10.8414, 25.7961, -8.81069, -13.5,
205 5.81306, 11.2384, 6.93765, -9.43067, 9.51418, 22.9709,
206 -9.17611, -16.4993, -1.56929, -2.9111, 4.17113, 10.9228,
207 10.0376, -27.4993, -8.25332, -1.715, -11.5063, -10.467,
208 23.6637, -13.8338, 14.7284, 8.00341, -2.71881, -8.80708,
209 27.101, 2.42801, 11.4599, -24.1577, -20.9901, 4.52358,
210 16.8065, 19.3315, 11.1219, 13.3391, -13.1522, 0.91428,
211 -25.2603, 6.04837, 12.1994, 21.9372, 14.8795, 6.93368,
212 -1.24639, -7.96856, 16.4064, -2.36409, -25.9093, 46.0938,
213 8.81687, 24.8004, 11.4475, -13.261, -19.8693, -28.4793,
214 15.3175, -12.5335, 24.1778, 10.5133, 22.2244, 9.93191,
215 -18.7982, 38.939, -20.0631, -35.4052, 7.5879, -0.599373,
216 -18.1388, 9.5843, 17.4375, -21.057, 8.1634, 6.31216,
217 -61.5486, -8.71159, 19.7502, -25.2365, 3.56558, -1.64973,
218 -26.9863, 0.291017, -12.5337, -10.505, 11.0614, 4.84072,
219 -0.630579, -3.87056, -0.707795, -13.1306, -19.6548, -16.2436,
220 4.87022, -5.90744, 3.46971, -40.0866, 16.8741, 10.3333,
221 -1.00985, 16.234, -0.475836, 28.3848, 1.75473, 28.2608
222};
223
224const struct lsp_codebook lspmelvq_cb[] = {
225 /* /Users/erdgeist/Coding/codec2/src/codebook/lspmelvq1.txt */
226 {
227 6,
228 6,
229 64,
230 codes0
231 },
232 /* /Users/erdgeist/Coding/codec2/src/codebook/lspmelvq2.txt */
233 {
234 6,
235 6,
236 64,
237 codes1
238 },
239 /* /Users/erdgeist/Coding/codec2/src/codebook/lspmelvq3.txt */
240 {
241 6,
242 6,
243 64,
244 codes2
245 },
246 { 0, 0, 0, 0 }
247};
diff --git a/codebookmel.c b/codebookmel.c
new file mode 100644
index 0000000..a548db5
--- /dev/null
+++ b/codebookmel.c
@@ -0,0 +1,145 @@
1/* THIS IS A GENERATED FILE. Edit generate_codebook.c and its input */
2
3/*
4 * This intermediary file and the files that used to create it are under
5 * The LGPL. See the file COPYING.
6 */
7
8#include "defines.h"
9
10 /* /Users/erdgeist/Coding/codec2/src/codebook/mel1.txt */
11#ifdef __EMBEDDED__
12static const float codes0[] = {
13#else
14static float codes0[] = {
15#endif
16 550,
17 600,
18 650,
19 700,
20 750,
21 800,
22 850,
23 900
24};
25 /* /Users/erdgeist/Coding/codec2/src/codebook/mel2.txt */
26#ifdef __EMBEDDED__
27static const float codes1[] = {
28#else
29static float codes1[] = {
30#endif
31 50,
32 100,
33 200,
34 300
35};
36 /* /Users/erdgeist/Coding/codec2/src/codebook/mel3.txt */
37#ifdef __EMBEDDED__
38static const float codes2[] = {
39#else
40static float codes2[] = {
41#endif
42 800,
43 850,
44 900,
45 950,
46 1000,
47 1050,
48 1100,
49 1150,
50 1200,
51 1250,
52 1300,
53 1350,
54 1400,
55 1450,
56 1500,
57 1650
58};
59 /* /Users/erdgeist/Coding/codec2/src/codebook/mel4.txt */
60#ifdef __EMBEDDED__
61static const float codes3[] = {
62#else
63static float codes3[] = {
64#endif
65 25,
66 50,
67 75,
68 100,
69 125,
70 150,
71 175,
72 250
73};
74 /* /Users/erdgeist/Coding/codec2/src/codebook/mel5.txt */
75#ifdef __EMBEDDED__
76static const float codes4[] = {
77#else
78static float codes4[] = {
79#endif
80 1350,
81 1400,
82 1450,
83 1500,
84 1550,
85 1600,
86 1650,
87 1700
88};
89 /* /Users/erdgeist/Coding/codec2/src/codebook/mel6.txt */
90#ifdef __EMBEDDED__
91static const float codes5[] = {
92#else
93static float codes5[] = {
94#endif
95 25,
96 50,
97 100,
98 150
99};
100
101const struct lsp_codebook mel_cb[] = {
102 /* /Users/erdgeist/Coding/codec2/src/codebook/mel1.txt */
103 {
104 1,
105 3,
106 8,
107 codes0
108 },
109 /* /Users/erdgeist/Coding/codec2/src/codebook/mel2.txt */
110 {
111 1,
112 2,
113 4,
114 codes1
115 },
116 /* /Users/erdgeist/Coding/codec2/src/codebook/mel3.txt */
117 {
118 1,
119 4,
120 16,
121 codes2
122 },
123 /* /Users/erdgeist/Coding/codec2/src/codebook/mel4.txt */
124 {
125 1,
126 3,
127 8,
128 codes3
129 },
130 /* /Users/erdgeist/Coding/codec2/src/codebook/mel5.txt */
131 {
132 1,
133 3,
134 8,
135 codes4
136 },
137 /* /Users/erdgeist/Coding/codec2/src/codebook/mel6.txt */
138 {
139 1,
140 2,
141 4,
142 codes5
143 },
144 { 0, 0, 0, 0 }
145};
diff --git a/codebooknewamp1.c b/codebooknewamp1.c
new file mode 100644
index 0000000..6de33ee
--- /dev/null
+++ b/codebooknewamp1.c
@@ -0,0 +1,1057 @@
1/* THIS IS A GENERATED FILE. Edit generate_codebook.c and its input */
2
3/*
4 * This intermediary file and the files that used to create it are under
5 * The LGPL. See the file COPYING.
6 */
7
8#include "defines.h"
9
10 /* /home/david/codec2-dev/src/codebook/train_120_1.txt */
11static const float codes0[] = {
12 6.7484, 7.6125, 6.0332, 5.2789, 1.5239, 2.2353, 2.0748, 0.5289, 0.8748, 2.5432, -2.2863, -3.191, -0.0434, -1.9857, -3.3605, 0.7069, -5.9493, -0.5672, -0.6798, -18.0977,
13 4.0503, 3.9086, 2.9225, 2.3773, 0.658, -0.4363, -0.0644, 2.4063, 1.3428, 2.4542, 0.5275, 0.982, -1.3277, 0.6811, 0.0273, -0.1838, -0.0222, -0.6478, -2.2405, -17.4152,
14 13.3284, 12.1212, 10.6531, 9.8214, 11.0388, 15.812, 19.711, 16.5488, 16.1068, 15.8771, 7.2553, 4.2486, -6.0036, -12.5476, -20.1299, -28.2803, -25.3971, -21.7907, -11.5143, -26.859,
15 21.4405, 18.4703, 17.8693, 14.9679, 11.2994, 6.4906, 4.7717, 0.1959, -0.8801, 1.8991, 1.9793, -4.9755, -7.7852, -10.0492, -8.5295, -8.2893, -4.1203, -12.4072, -16.166, -26.1817,
16 4.0023, 3.8279, 1.2681, 1.0053, 0.7002, -0.3886, 3.4465, -1.4055, -6.7846, -2.3345, -2.905, -0.1344, 3.4192, 2.4319, 10.0096, 3.9279, 0.6807, 0.322, -3.8325, -17.2565,
17 29.8276, 21.1543, 12.7853, 13.0246, 5.8164, 3.7469, 2.4198, 0.151, -4.5449, 5.2695, 11.7552, -4.8954, -6.0291, -8.978, 4.965, -10.654, -12.5363, -21.6056, -18.2985, -23.3739,
18 4.861, 5.1207, 6.5382, 9.8638, 15.4754, 18.8192, 14.8018, 10.7685, 12.4401, 14.0392, 2.92, -3.7283, -9.7213, -13.5526, -16.073, -13.7571, -5.4267, -12.2552, -14.5143, -26.6193,
19 3.0429, 3.0335, 4.4785, 5.6483, 5.3476, 5.7519, 3.5651, 4.9007, 4.9672, -0.733, -0.6458, 6.5888, 5.2957, -2.0068, -6.0189, -7.2145, 2.5545, -5.8358, -7.4936, -25.2263,
20 5.9384, 7.0203, 10.7433, 15.2477, 14.8437, 8.0949, 3.1384, -0.0014, -0.1756, 2.1601, 8.1029, 0.4123, -6.8062, -9.6038, -6.2302, 0.4409, -8.9878, -10.1638, -4.6903, -29.484,
21 7.188, 6.1134, 5.4021, 10.5427, 17.0718, 14.5658, 6.8632, 2.2257, 0.4412, 3.8257, 9.0388, -1.1212, -6.7639, -9.2412, -8.6575, -2.9951, -8.6659, -9.422, -6.6046, -29.8068,
22 9.8859, 4.3889, 3.6253, 3.2033, 4.6563, 4.5967, 1.8747, -0.0037, 3.2114, 3.8854, 3.1501, 0.8523, -5.283, -8.4603, -5.1159, -3.9157, 6.98, -1.527, -6.0421, -19.9624,
23 7.6208, 10.1888, 12.8648, 16.4838, 14.9269, 7.8064, 3.5594, -2.8048, -3.6303, -10.8596, -7.1254, -2.889, 5.4295, -2.5015, -5.5359, -2.9934, -6.598, -7.1493, -4.9387, -21.8545,
24 12.7227, 17.1387, 21.7055, 19.8068, 12.1832, 5.8645, -2.4103, -3.8445, -5.5496, -5.5608, -0.201, 5.1772, -1.4666, -6.6602, -1.2573, -3.1593, -10.7925, -14.3751, -12.0047, -27.3167,
25 7.4465, 7.8765, 9.4912, 12.2074, 12.1631, 11.478, 7.6294, 2.6922, 0.1566, -2.1903, -1.5699, -1.8031, 2.2555, -1.5591, -7.9267, -10.3612, -5.5432, -5.5673, -10.0797, -26.796,
26 0.3749, 1.9725, 2.6868, 6.3326, 8.9635, 12.8113, 13.6523, 14.0916, 11.2443, 1.2914, -1.9954, -2.9443, -4.6718, -4.3132, -3.4613, -8.1105, -7.9033, -7.0956, -6.5898, -26.3361,
27 10.3072, 10.6822, 8.8253, 4.8992, 4.3627, 8.8165, 9.7824, 3.7264, 0.4265, 0.6068, 3.0934, 2.9121, -0.6717, -5.8045, -1.7344, -9.1008, -8.8333, -6.0633, -11.2321, -25.0005,
28 10.6992, 14.806, 18.9665, 22.421, 21.871, 15.6647, 10.616, 12.1366, 14.0479, 7.0707, -3.8212, -12.177, -16.1111, -19.3389, -18.8315, -17.5346, -7.9646, -9.4592, -17.5614, -25.5,
29 9.9592, 11.7001, 14.2704, 14.1434, 7.3322, 4.2766, -0.0567, -2.7113, -5.7358, -6.739, -5.9067, -0.1939, 4.8177, -3.981, -7.2528, -3.2695, -1.5685, -7.894, -6.3355, -14.8548,
30 17.6322, 19.5153, 22.4362, 16.2943, 10.4698, 2.5066, -2.3936, -5.377, -7.9766, -9.8004, -12.964, -13.1015, -9.8076, -5.7565, 1.8732, 0.4843, 3.3621, -1.0048, -4.8377, -21.5543,
31 9.9491, 17.4987, 23.2236, 17.3142, 6.8072, 6.6873, 1.9421, 1.1415, 2.9409, 6.847, 2.4633, -7.2869, -8.9792, -3.3155, -0.1918, -11.8037, -18.6298, -12.6475, -9.762, -24.1984,
32 9.208, 9.9971, 12.5064, 20.0609, 20.9647, 10.9574, 7.436, 4.4943, 4.8454, 11.0636, 1.8176, -7.3479, -12.5617, -15.3912, -11.5022, -5.0309, -14.7556, -15.4294, -6.415, -24.9176,
33 7.7917, 9.3291, 11.8185, 15.3501, 19.3235, 20.6869, 19.816, 14.6028, 10.2893, 9.9407, 9.8534, 3.6182, 2.7695, -5.2735, -19.7962, -24.6834, -27.0316, -25.6805, -24.9149, -27.8096,
34 0.1108, 3.1261, 6.8163, 12.4528, 16.9192, 10.8153, 2.6109, -0.2652, -4.8897, -6.1056, -7.3218, -4.4594, 4.3004, 3.7728, -2.8276, -0.0458, 1.0104, -6.4884, -6.486, -23.0456,
35 12.9442, 10.3059, 3.1303, 2.1611, 1.4795, 2.758, 6.9527, 8.4487, 7.1533, 1.4465, -0.9113, -3.9971, -4.909, -5.3881, -3.1011, -0.4922, -1.1819, -5.3279, -8.2374, -23.2345,
36 25.0945, 17.8572, 8.95, 2.704, 0.2187, 1.4115, 0.7421, 0.5831, -0.3096, 0.9334, -2.9667, -4.0352, -2.8473, -4.8594, -4.5863, -4.4311, -2.8466, -4.4808, -5.1669, -21.9645,
37 14.6124, 19.7986, 21.2066, 15.762, 8.7509, 3.7653, -0.5239, -3.8894, -6.8522, -8.4979, -8.1879, -5.8438, 0.5485, 6.7415, 0.4745, 2.675, -10.3676, -15.0245, -12.2357, -22.9125,
38 11.9959, 12.9771, 17.1177, 21.531, 16.8892, 10.8731, 9.7276, 8.5106, 12.9569, 2.2512, -6.9324, -13.2124, -16.538, -18.0518, -16.6252, -9.7038, -6.122, -8.7542, -6.8998, -21.9905,
39 12.8107, 14.567, 13.4289, 7.1693, 3.4265, 3.1397, 2.5457, -1.2214, -0.3887, 2.4506, 3.9777, 0.9056, -6.9195, -7.3811, -3.2619, -0.3714, 2.6266, -6.3479, -12.2319, -28.9244,
40 2.6437, 2.2575, 3.8643, 6.0625, 10.9091, 16.9554, 21.5045, 12.7233, 9.3579, 9.4439, 12.8585, 4.4528, -2.4283, -4.733, -2.2502, -11.3098, -18.5273, -22.457, -23.1304, -28.1976,
41 10.5757, 10.9392, 14.0126, 18.2101, 14.3745, 8.6896, 4.908, 1.0411, 2.3482, 7.2221, 4.544, -5.0353, -11.2852, -13.0882, -10.96, -3.0288, -9.5005, -10.2217, -6.6739, -27.0717,
42 14.6172, 4.5412, 13.3824, 9.2916, 19.2818, 13.6563, 14.4089, 10.126, 1.6926, 3.9361, -0.6461, -5.1244, -9.3641, -13.9807, -11.4128, -11.8597, -0.8237, -20.3149, -12.3561, -19.0515,
43 4.0591, 4.6177, 7.7662, 6.8737, 9.4052, 10.1099, 12.8714, 8.1202, 6.6015, 7.9224, 1.7548, -1.6325, -4.8379, -5.0955, -2.1947, -8.422, -11.8799, -10.7107, -12.0066, -23.3222,
44 -3.3385, -1.1297, 3.0554, 4.9769, 3.8625, 8.6998, 8.0974, -0.5519, -1.0699, -5.4771, -4.7235, -4.8192, 7.1236, -0.4895, -2.0107, 0.1838, 3.518, 3.2804, 3.1904, -22.3779,
45 10.9362, 15.2821, 18.1297, 12.4682, 2.6895, -1.2007, -1.7676, -6.1681, -6.0524, -5.8064, -3.1002, 4.3237, 2.0263, -5.5109, 1.0348, -0.476, -4.6274, 1.4107, -7.5329, -26.0586,
46 27.0648, 22.2199, 14.8908, 7.7845, 2.8689, -0.0364, 0.0683, -0.1186, -1.6323, -2.4217, -4.0112, -2.3476, -5.4442, -5.8509, -6.4386, -6.2558, -6.7739, -5.9348, -7.0916, -20.5398,
47 4.3156, -0.2499, 1.1824, 2.8225, 8.191, 5.2798, 2.2597, -3.0043, -5.0382, -5.2727, -4.0013, 2.6952, 8.1245, -1.1517, -1.8957, 2.4603, 3.0897, -1.0817, -0.1353, -18.5898,
48 17.5894, 22.9315, 26.4862, 22.162, 13.7474, 13.5177, 15.2005, 16.3224, 4.9523, -4.2419, -8.3503, -12.4022, -12.6698, -6.7159, -16.2122, -20.1926, -20.5969, -16.0749, -12.5173, -22.9353,
49 6.5871, 8.0443, 8.4339, 11.3345, 17.3665, 13.4455, 6.9211, 2.0512, -0.7348, -1.2898, 1.0076, 8.4862, -0.336, -6.4714, -5.9432, -4.1602, -12.1155, -12.4645, -10.9269, -29.2355,
50 19.0066, 20.3716, 18.0417, 9.4806, 4.8058, 0.3359, -4.1091, -8.193, -8.9962, -9.7495, -13.2924, -8.6275, -4.9424, 6.0502, -6.8142, -7.1166, -3.0922, 8.8016, 5.6937, -17.6547,
51 4.7309, -6.5949, 4.9914, 7.3489, 9.0188, 4.1567, 7.1949, 0.4917, 5.0462, 7.5219, 1.5314, -15.3803, 5.313, -0.0983, -7.0327, -1.2671, -0.4646, -1.6442, -0.7446, -24.119,
52 13.7639, 5.1424, 5.3193, 3.8945, 3.9574, 1.4034, 0.1896, -4.0608, -2.5264, -4.9434, 2.8459, 2.6311, -2.7915, -3.7842, -0.3711, 0.5487, 5.3766, -4.3496, -3.2801, -18.9656,
53 12.6752, 14.7799, 16.2157, 18.6944, 14.139, 7.0937, 3.8206, -2.4778, -3.9766, -4.4531, -2.8711, 3.2148, 0.68, -9.1748, -10.16, -6.0557, -0.8581, -9.2828, -14.0109, -27.9924,
54 15.0025, 18.2042, 22.4086, 21.6195, 14.2308, 10.5772, 6.7291, 6.0463, 11.7877, 8.4162, -3.4731, -11.2708, -15.6923, -17.5613, -14.5235, -4.5248, -17.8954, -18.3529, -10.3105, -21.4173,
55 2.5368, 2.8687, 8.7229, 5.2089, 8.9671, 2.8847, -1.3535, -4.4273, -4.906, -7.8939, -15.475, -10.4797, -4.4811, 6.5892, 9.9939, 12.9078, 3.2705, 1.3246, 3.7883, -20.0468,
56 8.5207, 11.8364, 16.4466, 19.9166, 16.0662, 8.4129, 4.329, -0.8928, -3.7592, -5.4071, -4.287, 0.4615, 9.9611, 5.819, 1.7969, -7.7765, -17.3073, -19.5235, -17.7924, -26.8211,
57 3.0595, 10.0158, 11.1623, 5.9413, 3.1988, -2.1129, 0.3528, -3.0158, -2.3599, -1.3347, -1.0479, 3.9189, 7.8019, 3.0538, -1.6139, 0.8043, -4.929, -6.9959, -7.2918, -18.6077,
58 17.8476, 19.4332, 25.4614, 19.1508, 12.2748, 9.4543, 6.1101, 3.6929, 2.9336, 5.5407, -9.2238, -17.0071, -20.8856, -22.9308, -21.1711, -15.0234, 4.8627, 2.2867, -2.1943, -20.6125,
59 9.6165, 8.8018, 11.1694, 14.6183, 18.4154, 13.4481, 7.158, 4.165, 1.8242, 0.9521, 5.1356, 4.027, -5.9523, -12.0202, -14.3055, -10.5893, -2.8308, -12.2805, -13.3723, -27.9806,
60 13.4166, 16.7617, 20.6572, 22.0976, 15.9129, 10.641, 5.4061, 3.157, -0.7256, 1.2303, 5.9463, 5.1273, 3.4864, 1.6884, -10.9215, -19.5567, -22.8693, -20.4758, -24.042, -26.9379,
61 8.0404, 15.9476, 21.0441, 15.082, 8.2842, 3.1036, -0.2419, -4.2559, -6.0751, -7.4529, -5.5847, 1.552, 8.3483, 3.3751, -1.0503, -10.4691, -11.936, -5.5738, -6.8713, -25.2662,
62 19.995, 20.2102, 18.7443, 12.722, 5.8592, 3.8088, 0.4504, -1.5876, -0.0425, -3.0873, 5.5382, -0.1499, -5.85, -7.9372, -6.2374, -0.2643, -15.0702, -16.9914, -9.3644, -20.7458,
63 -2.6024, -7.495, -1.2522, 3.5119, 3.9726, 3.4991, 2.4457, 3.2158, -0.183, -1.7087, -7.3996, -6.8962, -5.2421, -7.5762, -9.1433, 6.6126, 10.5297, 10.4556, 18.2991, -13.0433,
64 0.8317, 2.2343, 3.6899, 5.6335, 5.8479, 6.433, 6.0022, 5.363, 2.3387, -0.5344, -1.0716, 0.6509, -0.7175, -4.0229, -6.0631, -4.7546, -1.97, -4.6226, 0.0933, -15.3616,
65 -9.366, -6.9175, -4.9307, -3.1828, -1.6587, -1.4971, -0.1586, 0.6208, 0.5169, 2.4709, 4.6017, 5.3127, 4.5449, 3.269, 3.759, 3.4511, 3.826, 3.9369, 4.8805, -13.479,
66 -1.183, 0.5095, 1.1754, 2.3109, 2.2722, 1.3243, 1.6529, -0.1799, -0.2874, -1.2863, -2.2761, -1.5668, -1.2037, -2.4367, -3.9243, -2.1186, 2.3502, 1.4312, 9.5827, -6.1467,
67 9.2349, 10.765, 18.1608, 20.6655, 13.5769, 5.4902, 3.0323, -1.0259, -0.501, 1.7689, 10.381, 12.0253, 9.1922, -4.9615, -15.0315, -19.9651, -21.4377, -17.68, -6.4577, -27.2328,
68 10.6391, 10.7983, 11.4949, 16.5329, 19.2664, 13.6129, 6.1846, 2.4573, -3.1501, -7.1814, -7.9387, -2.6238, 4.6419, -5.9113, -9.351, -7.0591, -3.2275, -10.282, -10.5308, -28.3726,
69 18.6364, 19.3874, 19.593, 14.3075, 9.4402, 3.6045, -1.9801, -5.5352, -9.0094, -10.9308, -12.7345, -14.0779, -10.9593, -3.8674, 6.3753, 9.5959, -1.4018, -7.4988, -6.1435, -16.8015,
70 9.4969, 11.3591, 11.5468, 7.8918, 4.7217, 3.0266, 4.2145, 2.2878, 1.2224, 5.6903, 10.6919, 4.2718, 0.7184, -3.7583, -6.7954, -8.0558, -7.9668, -10.2861, -12.5018, -27.7759,
71 1.9805, 4.9512, 7.016, 7.8284, 8.7891, 8.0863, 7.7994, 7.9865, 8.6027, 13.1944, 14.7771, 11.0643, 2.1716, -5.7171, -10.9834, -8.7615, -16.8907, -14.3039, -17.4732, -30.1175,
72 7.4683, 9.4924, 11.1231, 14.049, 15.3387, 7.9538, 5.2116, -0.0275, -3.0014, 0.105, 0.6547, 7.966, -2.3476, -7.0894, -4.6113, -2.0949, -15.972, -16.2041, -7.4758, -20.5386,
73 4.8388, 4.2032, 3.5738, 6.4994, 10.8701, 16.7006, 14.8672, 6.7149, 3.1448, 0.6167, 2.5321, 7.5899, 1.6456, -3.0073, -4.4465, -2.3406, -11.2907, -15.6965, -17.0827, -29.9328,
74 9.8208, 5.5733, 3.2835, 2.3197, 5.4502, 9.1113, 10.3794, 8.6442, 6.0107, 6.4897, 4.2548, 1.1709, -4.1757, -9.6942, -10.5243, -11.8609, -10.0641, -3.4488, -2.2532, -20.4873,
75 5.8783, 5.8851, 7.6595, 5.2009, 5.1, 1.982, 2.2615, 1.4023, -1.1079, 1.1247, 3.7199, 2.8362, -0.5182, 1.4421, 1.5607, -8.4521, -3.7106, -1.6008, -5.275, -25.3888,
76 13.8298, 17.3228, 17.9494, 18.8765, 12.6415, 7.5326, 5.2828, 1.03, -1.0231, -5.4994, -6.6194, -2.5155, 4.6895, -3.4515, -7.2113, -4.1051, -13.7542, -14.3604, -11.8611, -28.7541,
77 -8.8559, -3.0649, 2.2249, 4.9828, 6.417, 6.9906, 9.9342, 12.0149, 12.2463, 14.3103, 18.4345, 6.3234, 4.2404, -2.7341, -6.9396, -10.7644, -10.1668, -12.3674, -16.3891, -26.8371,
78 10.9983, 13.5279, 16.2801, 19.6892, 16.9475, 11.0028, 3.9633, 1.1799, -2.0078, -0.985, 2.7247, -0.1311, -6.6215, -8.589, -4.3971, -11.9543, -15.4358, -13.3278, -4.8427, -28.0217,
79 7.2013, 9.1028, 13.1142, 19.8377, 22.536, 16.6528, 11.833, 10.3141, 12.9885, 15.8372, 9.0995, 8.4627, 1.1838, -14.4656, -21.4397, -23.6775, -22.5547, -24.8595, -24.4974, -26.6692,
80 -8.4073, -6.6779, -3.958, -1.6241, -2.147, -2.2867, -2.2534, -3.0205, -4.5931, -2.5545, -2.135, -1.3098, 1.1053, -1.1397, 1.217, 6.2234, 3.6093, 9.8015, 23.5766, -3.426,
81 9.6955, 11.4467, 15.0851, 15.4765, 9.8267, 3.549, -0.5777, -2.7726, -5.1878, -5.7225, -4.4558, 0.4969, 9.2914, 5.8917, 6.4235, -4.2514, -11.0149, -9.4893, -13.0444, -30.6665,
82 2.9943, 1.4307, 0.8714, 2.2925, 2.1145, 2.9148, 2.4003, 1.9382, 1.6662, -2.3476, -2.0877, -1.9322, 3.3342, 1.7171, -0.9114, 3.2785, 1.7852, 1.4651, -1.3549, -21.5695,
83 7.7138, 9.34, 11.7519, 14.3217, 14.9762, 11.0903, 9.904, 9.3599, 10.4611, 6.3795, -3.9927, -7.6734, -12.4888, -12.1729, -5.7999, -5.5417, -9.569, -9.5926, -7.6846, -30.7825,
84 4.4498, 9.229, 15.0677, 17.9679, 11.2745, 2.673, -0.9888, -5.6255, -7.5349, -8.4589, -8.451, -5.5027, 1.7669, 4.3143, -4.8629, -2.0721, 4.6797, -5.0125, -4.4213, -18.4923,
85 11.1829, 12.4396, 12.7925, 12.6901, 8.015, 3.4089, 1.7847, -0.2306, -2.0077, -1.0178, 2.2167, -0.4542, -8.4111, -8.9029, -8.0861, -3.9439, -6.2512, -2.2635, -2.1307, -20.8306,
86 -0.0237, 3.59, 4.5144, 3.8794, 5.7527, 11.0182, 8.9091, 7.1863, 7.0702, 7.1782, 4.7799, 0.6784, -4.3508, -5.3991, -6.5953, -5.6132, -9.5378, -5.6903, -1.3834, -25.9632,
87 -2.7117, -1.4799, 1.2116, 2.3262, 3.7406, 3.7668, 1.2697, 0.2086, 0.7399, -1.3479, -2.2145, -3.7982, 4.9747, -0.4583, -1.7465, -0.9161, 7.2119, 0.8965, -0.2723, -11.4012,
88 7.6123, 10.5335, 16.3125, 23.5319, 21.6117, 16.329, 18.2001, 16.9715, 0.9425, -7.0707, -12.7338, -16.0871, -18.4761, -17.8994, -14.8763, -4.844, -8.9433, -6.8294, -0.8772, -23.408,
89 9.1763, 3.0851, 4.6724, 8.0499, 14.6517, 16.8559, 10.4532, 11.9797, 13.2732, 7.6578, -1.4245, -7.0469, -11.9925, -15.0269, -14.7577, -15.9057, -2.4494, -8.2002, -4.4694, -18.5819,
90 -0.3793, 0.7119, 0.4558, 1.7011, 3.1548, 7.4097, 8.6888, 7.5902, 9.102, 7.3493, 9.7346, 15.2626, 6.8726, -0.7975, 0.8553, -9.6815, -9.3426, -14.3122, -13.9791, -30.3963,
91 5.2988, 6.3406, 1.2009, 3.3308, 2.029, 2.8107, 1.003, 0.4513, -1.4458, 3.0391, 1.2595, -9.2407, 1.3164, 1.9175, 0.7738, 1.8301, 0.5948, -0.9497, -2.7482, -18.8117,
92 23.5623, 25.058, 25.0568, 22.4174, 16.4713, 14.4026, 11.1159, 5.025, -1.0266, -8.5971, -10.1924, -9.612, -11.8638, -13.7028, -4.2, -6.01, -12.7481, -18.5497, -22.5946, -24.012,
93 -5.0424, -4.212, -3.2703, -0.4028, 1.8335, 3.2012, 2.3768, 2.0802, 0.6396, 0.2079, 0.1418, -0.1844, 2.5056, -0.2078, -1.3169, -0.2911, 0.814, 1.7717, 5.2809, -5.9255,
94 7.633, 9.9835, 15.1303, 18.9128, 13.0001, 5.9224, 1.3978, -3.1674, -6.4703, -8.3713, -7.747, -5.2412, 1.6661, 5.3754, 0.9111, 2.2634, -7.6214, -11.2828, -5.6474, -26.647,
95 15.3965, 19.4488, 18.3928, 11.4564, 4.0261, 0.4604, -4.6326, -9.8409, -11.0926, -12.7123, -13.1035, -12.3357, -8.4063, 1.3638, 7.8807, 5.5655, 3.421, 0.7205, 5.4867, -21.4953,
96 4.0267, 4.8087, 7.0895, 9.6094, 12.6372, 17.6545, 19.7244, 17.4364, 13.7517, 13.9367, 6.0059, -4.5448, -9.4075, -13.3403, -13.662, -10.1856, -10.5214, -17.1512, -19.3146, -28.5537,
97 26.5287, 22.7007, 21.6748, 17.6005, 11.9372, 12.6653, 5.4749, -6.1299, -8.9419, -6.962, -5.7222, -5.6209, -8.635, -10.0876, -8.1562, -7.7238, -5.4233, -10.0839, -13.1237, -21.9717,
98 3.974, 4.1572, 5.7242, 12.448, 17.3522, 11.6512, 5.2405, 1.2103, 0.5569, 2.7329, 9.6369, -0.5073, -5.1263, -2.7956, -0.7621, -3.7186, -1.7764, -8.4788, -18.8985, -32.6208,
99 6.8442, 11.6517, 15.0164, 13.0383, 3.5465, 0.5949, -3.0134, -7.5262, -8.2082, -8.6101, -7.2813, -1.2345, 9.272, 5.1011, 6.0543, -0.9163, -4.5878, 3.4588, -4.8078, -28.3926,
100 7.8637, 4.0004, -2.938, 2.0521, 2.2442, -0.4633, 1.8855, 1.9277, -0.6295, 1.3834, 1.2896, 1.0703, -0.4938, 1.5669, 0.0079, -1.5584, -2.007, 0.9263, -0.4846, -17.6435,
101 5.8623, 7.6023, 7.9357, 8.1933, 9.8252, 14.3094, 18.598, 17.631, 14.1029, 11.3791, 8.9224, 4.7903, -4.573, -11.3683, -17.8078, -14.2065, -11.2294, -16.2936, -23.1509, -30.5225,
102 -1.7942, -0.0063, 1.995, 3.6026, 3.2262, 0.8396, 2.3621, 2.373, 0.2704, 0.4107, 0.3605, 1.3362, -2.3048, -2.1177, -2.8566, 0.0808, -2.4432, 2.0828, 10.0173, -17.4341,
103 16.0587, 21.303, 20.2092, 12.229, 4.0091, 1.0523, -3.6402, -8.1002, -8.5006, -10.1681, -9.7303, -7.7995, -1.2107, 8.9891, 5.5157, 1.2399, -8.3907, -7.4334, -1.1958, -24.4366,
104 15.8248, 21.2415, 22.3705, 19.6523, 12.6511, 4.98, 2.0524, 1.2562, -2.0002, -7.0989, -8.4866, -8.1644, -3.6111, 2.9801, -6.3159, -7.3905, -2.5939, -11.1587, -18.1433, -28.0453,
105 11.4701, 14.8919, 19.2495, 17.1766, 9.1256, 4.6224, 0.3569, -3.6692, -6.2969, -8.7664, -7.4764, -1.7487, 3.4354, -4.0219, -5.5797, 1.1971, -7.0079, -5.6899, -4.914, -26.3546,
106 4.0502, 6.3561, 7.7528, 13.2425, 22.1071, 16.8285, 10.8539, 9.9555, 11.6373, 14.4871, 1.0686, -6.014, -8.7291, -9.9474, -5.242, -14.0196, -19.62, -16.4317, -13.2116, -25.1241,
107 14.0747, 12.9823, 14.7396, 18.358, 20.8024, 21.6686, 20.4893, 18.2777, 14.8271, 4.2101, -4.6228, -5.0852, -8.9555, -9.9704, -14.4886, -22.2364, -24.8924, -24.6202, -19.9776, -25.5806,
108 6.5756, 6.5342, 9.0959, 14.5314, 20.6452, 22.1123, 17.0555, 14.5823, 18.4626, 9.7441, 0.1482, -4.4759, -4.9624, -0.2271, -12.9306, -21.6336, -23.8195, -22.7039, -21.8165, -26.9179,
109 -2.413, -0.2375, 2.8918, 5.5011, 6.7427, 5.7418, 5.0778, 5.1858, 4.3188, 3.4462, 4.3416, 1.8899, 2.3449, -0.9372, -1.2877, -2.8414, -4.0969, -5.4193, -7.2573, -22.992,
110 18.6934, 11.3904, 9.2311, 9.3832, 5.4199, 3.6295, -0.1793, 0.6487, -3.5589, -4.0062, -6.2031, 0.6797, 0.8497, -5.8255, -3.0197, -0.8407, 3.412, -4.6925, -10.2551, -24.7566,
111 -1.1447, 1.564, 1.4686, 1.7604, 1.7234, 2.3262, 4.7312, 2.6246, 3.8383, 6.5465, 3.383, 1.7225, -1.7619, -1.0275, -1.1491, 1.9434, -4.9663, -2.3871, -2.8449, -18.3507,
112 14.1023, 13.565, 10.151, 8.7911, 7.7313, 7.648, 9.2651, 8.0399, 4.9244, 6.1141, 5.5459, -0.9256, -6.155, -7.0836, -8.6484, -9.0926, -9.2649, -13.5303, -12.0852, -29.0925,
113 9.8451, 13.4743, 16.9269, 13.4623, 5.8133, 1.7553, -0.7487, -3.9831, -8.1249, -9.5689, -8.7611, -6.3983, -0.6612, 10.9895, 12.8583, 0.3283, -8.6023, -10.4136, -5.9048, -22.2865,
114 19.2227, 18.1307, 15.9732, 13.2757, 8.9377, 4.0318, 2.7371, 2.4204, 4.8079, 5.9436, -1.6587, -5.6682, -8.2354, -8.6156, -5.7373, -5.9194, -13.5825, -11.1928, -9.7272, -25.1435,
115 9.7172, 12.7596, 17.788, 19.5982, 13.1714, 6.9756, 4.2961, 1.3629, -0.4383, 4.963, 8.784, 0.9395, -2.9094, 0.87, -9.7739, -17.6442, -19.7626, -14.0983, -10.0576, -26.5411,
116 19.7847, 26.9921, 27.0885, 20.9467, 13.4352, 6.9927, 3.8926, 5.5073, 6.395, 3.641, -3.526, -9.9366, -12.2833, -15.4366, -15.2739, -13.403, -13.6697, -14.5223, -14.0162, -22.6082,
117 -4.745, -2.3439, -1.2527, 0.2681, 2.5169, 3.0271, 3.2731, 1.1854, -1.4898, -2.2085, 0.9214, 6.1154, 5.0556, 7.1405, 5.3972, 1.8235, -0.1874, -0.9732, -2.7856, -20.7382,
118 2.7354, 2.9846, 4.5226, 11.0075, 16.9767, 9.7039, 5.0497, 0.2367, -2.2382, -2.2319, 3.3972, 5.8953, -3.5572, -7.9222, -5.1006, 4.0687, -6.798, -6.9512, -1.5062, -30.2728,
119 1.8923, 1.9933, 1.7272, 1.4697, 2.1029, 2.7198, 2.2271, 0.4083, 1.489, 2.3633, 0.0136, -3.1335, -1.8351, -3.4645, -2.5082, 0.1244, -0.6305, -0.2515, 2.667, -9.3744,
120 7.3147, 10.8559, 16.3202, 21.3322, 15.5047, 5.7917, 2.0324, -0.5787, -3.8385, -3.1611, 4.7722, 6.9085, -0.8153, 0.2585, 0.5455, -11.9753, -19.4608, -19.4821, -11.0006, -21.3242,
121 -4.8271, -2.3317, -0.8263, -0.6913, 0.0284, 2.1785, 4.853, 2.4866, 0.5257, 1.0973, 0.9581, 2.0508, -0.085, -0.324, -2.1544, -3.6769, 8.253, 1.6818, 2.7619, -11.9586,
122 28.0344, 21.3292, 26.7011, 15.9009, 17.4755, 11.8357, 5.06, 6.5559, -4.3031, -3.5802, -8.7494, -8.4692, -7.5683, -2.5689, -10.7488, -16.5549, -18.6071, -16.7713, -13.4451, -21.5263,
123 11.4465, 12.5754, 14.651, 12.0835, 5.352, 1.6789, 2.3021, -2.4719, -2.0905, -0.5169, -2.1754, -2.9241, -2.7917, 2.0815, 1.0635, -3.6587, -4.768, -6.8125, -8.2348, -26.7899,
124 11.1007, 8.9165, 11.8079, 11.0313, 1.9749, -0.9229, -2.467, -6.7769, -9.1537, -10.4373, -8.8596, -6.3617, 0.2425, 8.333, 2.9722, 9.5504, -3.2943, -3.168, 4.4488, -18.9367,
125 12.7055, 18.2073, 17.6143, 9.1957, 1.5762, -1.0952, -4.9687, -6.129, -7.3791, -7.2053, -4.3066, 3.6014, 9.8467, 10.7313, -1.8676, -11.4282, -13.9225, -8.1802, 2.6837, -19.6797,
126 0.8368, -1.761, 0.4628, 2.3612, 5.116, 7.7374, 9.4921, 4.3865, 6.1712, 5.6238, 6.3738, 5.3491, 2.7348, 5.4859, 4.6651, -8.4273, -10.9892, -8.675, -10.7619, -26.1822,
127 12.9582, 16.0251, 19.0637, 18.9347, 12.6765, 7.8161, 3.8112, 0.9397, 6.1611, 7.4639, -2.5194, -7.1391, -10.2242, -10.1934, -4.1747, -5.7525, -14.4868, -8.2946, -13.9643, -29.1013,
128 29.3165, 26.9707, 19.9517, 12.4469, 7.3647, 2.8794, 1.4068, -2.4963, -5.4012, -4.1083, -5.2153, -6.4891, -5.9548, -6.4872, -6.651, -6.7351, -9.9422, -8.4833, -11.8558, -20.5171,
129 7.6646, 7.8496, 5.346, 3.4574, 6.3183, 1.1408, 3.1494, 5.1045, 0.2373, 1.0847, -0.432, -0.3662, -0.3503, -0.5473, -8.1949, -0.9695, -1.7599, -3.3828, -3.0248, -22.3253,
130 7.0587, 8.6157, 9.7452, 14.4294, 20.8498, 17.0788, 7.0614, 2.4228, -0.5017, -1.0215, 3.1054, 5.3564, -3.4904, -7.3987, -7.4398, -7.0656, -8.8032, -12.863, -18.8666, -28.2731,
131 5.767, -2.6937, 9.6459, -0.7839, 10.7523, 2.796, -2.6113, -3.2915, -6.2928, -7.6167, -12.6729, -5.4796, 5.0447, 13.7582, 10.305, 4.5191, -1.3433, 5.4917, -1.7375, -23.5567,
132 -11.2311, -7.9712, -5.4028, -3.3542, -3.1975, -4.2245, -3.9952, -5.3576, -5.3493, -4.8108, -5.4962, -2.9288, 2.5785, 4.7736, 13.8058, 17.8731, 9.8332, 14.95, 11.022, -11.5171,
133 2.8142, 1.3603, 4.2714, 4.8975, 4.3374, -3.4231, 3.1881, 5.0714, 3.9705, 6.2234, 3.7268, 5.279, 1.3825, -7.6582, -2.9268, 2.0075, -4.057, -5.6086, 1.2855, -26.1418,
134 4.9776, 6.4457, 7.7463, 9.3687, 9.5559, 9.1954, 6.3666, 4.9237, 2.1719, 1.7788, 1.4634, -0.3859, -6.1409, -5.3778, -2.6336, -2.5068, -8.3667, -7.0441, -11.2867, -20.2514,
135 10.0472, 11.9967, 16.4907, 19.9334, 16.2325, 9.2915, 4.313, 0.7097, -4.0959, -8.1186, -10.5064, -10.3134, -5.2102, 1.0801, -1.5982, -3.8949, 1.2501, -7.5248, -12.9333, -27.1495,
136 17.0433, 19.1713, 22.6813, 17.1064, 8.7516, 4.3917, -0.7236, -5.3026, -7.9288, -8.3773, -7.4784, -3.7859, -2.5186, 0.02, -1.5465, 0.1954, -10.783, -12.0301, -3.0579, -25.8283,
137 18.6591, 22.3501, 23.5831, 19.0252, 13.9063, 13.3289, 9.0463, -3.2346, 1.2718, 1.4619, -4.3706, -7.4089, -10.771, -11.8151, -0.8947, -8.7094, -22.3259, -8.0672, -18.5235, -26.5118,
138 3.2886, 3.8514, 1.5062, 4.9096, 3.9001, 3.8964, -0.6349, -1.5534, -1.3119, -2.313, -1.8455, -3.5666, -2.6094, 3.4411, -1.0089, -3.0556, 4.525, 3.3979, 1.1349, -15.952,
139 -5.6652, -3.8931, -1.8885, 1.6299, 2.3371, 2.0746, 2.1285, 0.4372, 0.0031, 4.2521, 5.201, 3.3227, 2.8933, 1.9467, 2.1449, 0.9405, 2.168, 2.3807, -1.3113, -21.1022,
140 21.727, 24.2953, 23.2112, 13.4917, 7.3423, 1.4843, -3.1924, -4.8355, -10.3896, -11.396, -12.8133, -11.6304, -9.9774, -2.6034, 3.7943, 3.526, -4.2988, -6.0579, 0.3494, -22.0269,
141 7.1102, 6.3521, 11.665, 18.7864, 16.7459, 8.3216, 5.8454, 4.3436, 9.4868, 7.7601, -3.1382, -10.3196, -14.1642, -15.1634, -11.6972, -1.82, -7.1959, -8.5258, -1.8553, -22.5374,
142 14.2212, 17.8028, 21.4842, 24.9383, 24.9854, 22.3982, 21.377, 20.9687, 13.4315, 0.0683, -9.1695, -13.1215, -13.8982, -14.9798, -18.1636, -20.5802, -22.0396, -23.026, -22.3178, -24.3795,
143 8.9039, 9.7955, 9.3225, 11.7206, 17.8844, 21.1802, 19.2262, 17.3421, 13.9029, 7.386, -2.6995, -8.3297, -10.1319, -8.7756, -6.059, -8.7597, -15.4747, -24.0243, -25.5723, -26.8375,
144 3.8554, 4.2234, 6.2441, 12.5445, 18.1461, 14.0699, 5.9992, 2.722, 1.0526, 2.1813, 9.5825, 3.3502, -4.3618, -5.0291, 0.561, -10.3142, -15.3449, -12.7063, -7.6401, -29.1358,
145 -8.9085, -6.1917, -3.8341, 0.0473, -0.3559, -1.0455, 0.4343, 0.7424, 0.1788, -2.4081, -1.5815, 0.7755, 2.7896, -0.3538, 0.5914, 4.753, 5.3039, 5.5717, 8.461, -4.9697,
146 6.0177, 9.1902, 12.54, 17.665, 18.0833, 11.1113, 3.6376, -0.9348, -2.434, -3.3221, -2.487, 5.475, 6.1443, -3.6923, -2.5169, -0.6902, -11.0083, -16.8129, -17.3554, -28.6106,
147 12.6629, 16.5188, 17.012, 11.3763, 2.7817, -0.7077, -5.5288, -8.1972, -9.1883, -10.5072, -9.3239, -6.2042, 2.0877, 8.3448, 2.7802, 8.4635, -5.0126, -9.023, -5.59, -12.7449,
148 26.6077, 25.1133, 19.7421, 13.7493, 7.5294, 4.8418, 5.8235, 5.9404, 3.3399, 4.8147, -1.6758, -4.4299, -7.1722, -6.547, -9.6023, -9.9251, -17.0327, -19.5694, -18.7525, -22.7953,
149 9.3391, 15.4719, 19.7226, 13.6838, 5.7655, 2.9423, -0.2309, -3.0447, -5.0071, -3.643, 3.6089, 8.1171, -1.0555, -2.536, 2.0952, -6.4482, -11.0547, -9.9411, -11.5931, -26.1921,
150 6.7164, 12.9088, 8.1465, 2.9974, -1.5306, 3.7966, 4.6355, 0.1956, -4.4054, 2.5643, -3.5126, -0.4027, 0.5107, -1.6406, 0.9829, -5.6846, -0.0083, -4.8894, -3.3272, -18.0535,
151 1.8584, 3.5453, 10.7864, 10.3313, 8.8364, 11.3153, 12.655, 8.0839, 10.2072, 14.1247, 0.1105, 4.9955, 5.9811, 7.9709, 7.5141, -6.0319, -21.0185, -23.4977, -32.6987, -35.0693,
152 13.1044, 15.4062, 17.5958, 18.0756, 11.3524, 4.367, 2.6428, 0.8781, 0.0399, 6.6751, 8.2361, -2.6757, -10.1776, -9.8299, -3.1506, -9.5151, -14.3971, -6.2859, -13.5883, -28.7532,
153 0.0688, 2.2921, 6.5965, 8.3598, 8.2327, 8.6486, 7.1471, 7.1631, 4.4823, 3.4067, 11.3001, 9.5567, 0.6574, -2.5849, -6.7404, -8.6614, -8.6399, -12.0189, -13.1958, -26.0705,
154 9.5134, 11.1944, 14.6379, 21.3303, 20.9351, 12.8622, 5.9234, 3.0673, 0.5662, 2.8569, 7.4992, -0.6339, -9.8527, -12.4761, -11.2573, -4.7464, -13.594, -18.0638, -14.8928, -24.8691,
155 5.5904, 5.1588, 4.7053, 4.3271, 5.8271, 9.5093, 8.411, 1.6453, -2.2667, -2.6767, -1.4248, -1.126, 2.4114, -1.8009, -4.819, -8.2201, -2.9355, -0.2567, -0.3488, -21.7105,
156 0.4175, 1.2148, 5.1829, 9.3743, 9.7458, 5.9476, 5.0377, 2.5369, -2.7391, -8.896, -11.0818, -7.065, -7.4393, -1.4335, 10.1963, 9.6385, 5.0133, -4.2894, -3.8725, -17.489,
157 8.8274, 9.1037, 13.6965, 18.9331, 20.496, 15.7102, 9.1227, 5.5813, 1.7546, 1.3849, 6.9672, 6.4807, 5.2247, 4.2668, -9.8256, -18.2374, -24.2455, -24.1902, -22.7864, -28.2649,
158 -10.4296, -11.2348, -7.6061, -8.6646, -7.9499, -6.125, -4.3918, -6.8877, -5.4461, -2.2579, -1.3507, 2.298, 4.8244, 12.7426, 12.4434, 14.4927, 14.8125, 12.9871, 9.6224, -11.879,
159 8.889, 12.0408, 17.2338, 23.3492, 22.1801, 17.325, 16.4611, 18.6109, 12.0359, -2.1102, -7.5218, -11.7288, -11.4854, -7.679, -11.7033, -21.2349, -23.6258, -19.3358, -7.8566, -23.8442,
160 -7.7648, -7.6325, -5.9874, -5.7763, -5.5038, -4.9788, -3.5524, -3.9264, -4.7269, -2.6727, -1.6911, -0.4884, 1.8633, 1.5449, 3.1375, 9.0909, 11.6855, 13.422, 16.9117, -2.9544,
161 17.5979, 21.004, 20.369, 15.7264, 13.3239, 13.0722, 13.4678, 1.7577, -6.0904, -6.9925, -8.3415, -10.6335, -9.5482, -1.5234, 3.987, -6.9271, -17.4878, -18.4739, -8.9267, -25.3608,
162 6.1805, 4.1462, 3.501, 2.723, 3.9708, 8.1302, 9.491, 3.6927, 2.979, 2.0598, -0.61, -1.6298, -2.5238, -2.5441, -3.9959, -2.7189, -3.9403, -3.9477, -4.9568, -20.0067,
163 7.7322, 4.4707, 5.232, 7.8782, 9.1005, 5.4418, 6.0577, 3.7093, 0.1939, -0.2785, 1.1984, -2.6011, 0.6595, 2.7395, -0.9452, -4.5096, -8.4529, -6.4501, -6.8768, -24.2995,
164 -6.4169, -3.8203, -3.3676, -1.3384, 0.0068, -0.0917, -0.654, -1.1092, -2.2062, -2.8976, -3.0409, -2.6706, 2.975, 6.3064, 7.4779, 12.0806, 5.7715, 5.5715, 0.9432, -13.5194,
165 7.6067, 9.3813, 13.4849, 19.9139, 22.7781, 18.435, 15.914, 18.9134, 10.1002, -4.3291, -8.2178, -13.6741, -15.704, -16.5313, -14.1193, -3.7115, -13.7922, -12.8183, -7.7992, -25.8309,
166 4.7167, 3.8923, 5.7519, 8.0369, 12.8563, 16.738, 15.0698, 9.7568, 7.4623, 7.4165, 7.755, 1.1797, -6.3964, -6.5897, -1.5093, -9.7231, -17.0341, -15.7607, -12.6623, -30.9568,
167 9.6098, 13.4286, 18.728, 18.1791, 9.8536, 3.5779, 1.4841, 0.4639, -0.5329, 2.6536, 9.8742, -3.2808, -8.9269, -11.0817, -6.3122, -2.5681, -15.3236, -12.3977, -1.9946, -25.4341,
168 3.899, 7.6431, 13.4623, 16.8504, 10.0821, 3.4259, -0.1709, -4.7791, -8.1809, -9.2214, -8.3021, -5.9798, 2.0125, 6.9915, 1.4712, 6.5493, -3.7836, -4.9571, 1.3613, -28.3737,
169 13.9079, 16.7984, 20.6342, 24.6533, 24.3507, 19.3643, 17.9172, 18.392, 11.702, 0.001, -10.1043, -14.9084, -18.2285, -20.4094, -21.5267, -19.7383, -13.5385, -9.5045, -16.6159, -23.1465,
170 7.1797, 11.3922, 15.749, 19.3949, 17.3819, 10.7478, 7.3006, 6.1472, 9.1598, 11.0073, 4.7816, -2.4892, -3.7349, -3.7521, -1.7971, -9.8976, -22.2914, -25.755, -23.0236, -27.501,
171 5.66, 8.46, 10.4652, 12.1954, 14.9914, 18.5645, 17.0459, 10.3163, 4.813, 2.322, 0.5889, 4.1108, 1.2082, -9.395, -13.7061, -13.109, -10.106, -11.3113, -21.8744, -31.2396,
172 -1.8886, -0.7563, 0.4909, 4.9127, 6.9239, 5.1456, 6.2254, 6.4299, 5.1768, 9.199, 13.2223, 5.4194, -3.0538, -4.7242, -5.1855, -3.7939, -7.3421, -6.1816, -4.3871, -25.8328,
173 11.3455, 9.9507, 8.1659, 6.0877, 1.4526, 0.9704, 4.7975, 4.0208, -0.5941, 2.5357, 1.534, -4.3306, -1.6103, -4.4373, -0.0323, -2.6725, -2.0195, -3.5278, -6.3697, -25.2666,
174 -0.8009, 5.6194, 7.0974, 6.1331, 7.2063, 7.4038, 4.5741, 8.4379, 4.2968, 7.9137, 13.0725, 2.3362, 0.6963, -2.4917, -4.9374, -7.2728, -8.216, -9.6329, -14.4558, -26.98,
175 9.4449, 12.499, 15.8206, 17.3018, 10.9373, 5.5366, 0.8716, -1.2105, -2.477, -3.4484, 1.0611, 6.1591, -1.7466, -7.5929, -6.9295, -2.1338, -8.9361, -10.3674, -6.3554, -28.4344,
176 11.5326, 10.9047, 16.3163, 21.0845, 11.9757, 7.0511, 0.8356, -4.987, -6.945, -9.2309, -9.7748, -8.2038, -2.2957, 5.5139, -5.4119, -2.741, 2.4166, -7.4497, -6.0628, -24.5286,
177 9.3064, 9.3678, 11.2235, 13.9991, 14.4345, 11.1982, 6.3282, 1.4131, -2.6884, -7.1825, -11.0075, -12.3749, -9.2573, -6.0414, 2.3206, 4.6097, 3.567, -3.2208, -9.5445, -26.4507,
178 -6.7163, -6.0323, -3.7943, 0.882, 3.6629, 4.3198, 4.7402, 4.0799, 4.8854, 5.8718, 8.3927, 9.6825, 10.5717, 3.8917, 0.9125, -1.2807, -3.7018, -5.757, -8.2525, -26.3582,
179 10.2748, 11.6455, 16.3809, 20.149, 18.2488, 12.7899, 10.3972, 8.0106, -0.6794, -6.4024, -9.7054, -13.5667, -14.6497, -16.1902, -6.9531, 0.2117, -0.7067, -1.2331, -10.6728, -27.3488,
180 13.3782, 16.35, 15.3612, 8.9247, 3.489, -0.7729, -2.6106, -7.5432, -8.0129, -7.614, -7.8535, -2.4356, 6.505, -4.5887, -3.2816, 5.8982, -1.3889, 0.3111, 0.3606, -24.4762,
181 10.0811, 14.1057, 20.3635, 24.0314, 20.369, 17.0236, 16.446, 19.2548, 6.0111, -3.4365, -9.9143, -13.0905, -15.015, -11.4726, -6.6405, -10.0976, -14.6658, -19.9459, -19.48, -23.9274,
182 -7.1817, -5.5458, -1.6137, 0.8007, 1.9284, 2.5116, 0.3432, 3.3359, 0.2833, -1.3305, -2.496, -1.6366, -2.6968, 3.6695, 6.8225, 4.4926, 6.194, 6.7541, 2.2072, -16.8418,
183 9.6326, 11.3478, 14.3982, 20.7665, 19.7772, 12.3406, 6.1933, 1.0438, -1.1521, -1.586, 1.844, 7.8419, -1.5328, -9.8703, -10.1973, -2.244, -12.0413, -18.5948, -20.6014, -27.366,
184 1.5056, 1.688, 4.2152, 9.5291, 17.0514, 16.2096, 8.5432, 4.2111, 4.4898, 11.7231, 5.577, -4.8191, -7.502, -5.9733, -0.7664, -10.2798, -14.8967, -9.8638, -3.1062, -27.5357,
185 15.2115, 17.9992, 21.5012, 24.9136, 19.176, 15.8798, 16.4094, 17.804, 5.9025, -3.3769, -10.4408, -15.3738, -18.5882, -19.7882, -17.7007, -14.2386, -13.9566, -13.8247, -5.8162, -21.6922,
186 12.1911, 17.2966, 17.4896, 10.6943, 3.5061, -0.1018, -2.5405, -6.3143, -7.6095, -8.5828, -7.4501, -2.2275, 8.4004, 0.023, -1.6734, 2.8727, -8.2243, -7.2548, -0.595, -19.8998,
187 -0.4264, 0.0708, 1.9133, 6.0904, 12.781, 17.8469, 12.0313, 4.9753, 4.279, 6.9401, 10.3052, 0.2003, -6.7328, -10.0168, -10.0292, -2.7869, -5.6536, -9.3242, -6.0818, -26.3818,
188 7.8387, 12.9821, 20.1116, 21.8527, 15.0291, 10.4182, 9.9996, 12.5177, 11.6815, -0.1048, -5.5624, -6.4577, -2.0918, -6.3498, -17.7376, -20.9015, -21.1073, -13.6752, -3.7477, -24.6953,
189 18.0184, 21.7405, 20.202, 16.4376, 12.3859, 12.2417, 12.1975, 6.3324, -4.4281, -11.4734, -5.9353, -8.8421, -10.328, -4.7973, 3.4477, 1.4017, -15.9637, -17.1346, -16.9459, -28.5571,
190 8.9922, 8.4069, 10.2569, 10.5303, 10.1285, 4.9362, 1.8698, -0.0537, -5.3906, -5.9983, -4.6797, 1.6021, -1.9697, -5.3874, -2.3336, -0.9265, -2.7071, -2.3523, -3.3933, -21.5307,
191 0.1643, -2.21, -0.9888, -3.4801, -0.5275, -1.468, -0.5683, -1.5514, -0.4216, 0.5034, -0.8521, -2.7835, 0.5014, -1.2182, -0.7495, 5.2974, 5.8643, 8.2766, 6.0259, -9.8143,
192 7.672, 8.0788, 9.1059, 14.2217, 21.6149, 24.6272, 15.4198, 12.7487, 14.5686, 14.3925, 0.6524, -7.7122, -12.314, -13.4374, -8.0366, -14.9387, -21.7305, -22.0625, -19.3233, -23.5474,
193 2.2815, 1.7578, -0.6674, 1.7705, 0.4755, 0.4978, -1.3799, -2.1107, -2.6075, -3.5652, -2.8715, -6.8295, -1.7109, 2.8096, -0.7449, 2.5543, 8.6739, -0.5359, 6.8846, -4.6821,
194 18.2027, 16.9209, 12.1191, 7.6862, 3.0545, 0.5751, -1.6156, -1.2378, -3.1289, -4.2377, -5.6464, -5.0994, -5.0515, -1.2417, 1.1802, 1.1938, 0.3821, -6.3202, -6.4152, -21.3203,
195 3.5023, 4.9407, 6.5095, 8.9494, 13.2647, 15.1725, 11.9431, 6.2423, 1.1652, -1.6313, -2.9929, -1.9072, 3.4422, 2.8306, -3.2309, -5.3351, -2.3238, -10.7536, -17.8375, -31.9502,
196 4.7778, 10.318, 13.9538, 16.0868, 9.138, 2.9991, -0.6627, -4.2067, -5.6625, -4.9839, -1.2287, 7.7334, 9.3244, 7.4153, -4.1228, -11.6166, -8.7569, -5.6012, -5.8002, -29.1044,
197 -3.8341, -1.3838, -0.9472, -0.4209, 1.7906, 4.2155, 2.2324, 4.3091, 1.1357, 8.4456, 9.7973, 6.3722, 2.6068, 0.3293, 0.1016, -0.3203, -4.2313, -3.6986, -3.9405, -22.5593,
198 7.9933, 10.952, 14.6109, 19.7867, 15.1983, 6.5296, 4.9056, 0.7415, -0.5271, -0.1092, 6.9036, 12.3792, 7.7901, 2.0866, -9.1117, -12.3605, -5.7793, -23.1437, -29.0076, -29.8384,
199 25.899, 23.1895, 19.6721, 15.4616, 9.3167, 5.4831, 6.1546, 7.4477, 4.2279, -1.3757, -8.0309, -11.4646, -10.4795, -7.5543, -4.2227, -6.0439, -16.4547, -16.3865, -13.0397, -21.7998,
200 5.9702, 6.6918, 8.5551, 14.7594, 15.5278, 10.2403, 6.0423, 1.7099, -0.1415, 0.4245, 5.8906, 10.2752, 2.9571, 1.0304, -7.5844, -15.493, -16.0321, -8.3602, -12.0263, -30.437,
201 0.2377, 1.249, 0.9118, 1.8024, 3.7548, 4.8963, 5.1515, 4.2684, 0.3786, 0.5058, 0.4839, -0.9914, 1.4073, 1.1727, -2.9065, -4.4307, -6.9456, -0.2385, 0.3969, -11.1044,
202 4.9017, 3.2442, -1.2482, -1.2472, -2.0773, -5.4371, 0.3708, 4.1825, 12.1289, 1.295, -2.3136, -3.1723, -0.4429, -1.6571, -9.7455, 6.5626, 13.4075, 7.0987, -2.0865, -23.7642,
203 26.5958, 8.4474, 11.9082, 11.6976, 1.401, -0.25, 3.9848, 3.6429, -6.0468, 2.5341, -5.2699, -11.5085, 3.8103, -6.3108, -2.4679, 2.153, -6.3876, -7.178, -8.406, -22.3496,
204 2.2962, 0.8041, 0.8352, 6.615, 14.5461, 15.0856, 3.2964, 0.5549, -1.6557, -2.0236, 2.8955, 7.5016, -1.2031, -5.6899, -4.7833, 1.2942, -7.3403, -8.3771, -4.0417, -20.61,
205 -3.152, -0.4969, 6.6485, 7.8768, 5.5605, 6.5283, 5.6337, 4.1543, 13.9779, 2.7762, 6.1398, -3.707, -1.7982, -2.8944, -6.0041, -6.5265, -11.4873, -1.5122, 6.058, -27.7754,
206 -8.002, -4.6131, -0.7821, 3.316, 4.4465, 4.7754, 2.8155, 1.0612, 4.806, 6.0492, 5.939, 3.1446, 2.8568, -0.6657, -2.6961, -2.15, -0.9756, -0.2816, -1.9847, -17.0594,
207 12.4378, 17.8157, 22.2857, 21.4926, 15.3987, 11.6565, 8.461, -5.9608, -14.7466, -15.8101, -21.885, -17.3295, -13.0545, -3.3503, 5.7314, 1.5346, 1.1396, -7.594, -1.8366, -16.3862,
208 0.8964, 0.1937, 0.1104, 1.6479, 5.6517, 12.189, 10.2771, 4.4234, 1.0502, -0.5311, 1.2594, 6.8796, 5.2931, -3.9156, -6.05, -0.9098, -4.2858, -6.9837, -7.0958, -20.1002,
209 19.8439, 13.428, 9.6622, 10.665, 8.095, 5.5066, 1.7572, -1.0429, -0.8012, -2.8142, -0.4934, 1.3117, 0.5243, -6.173, -8.129, -6.3324, -1.5063, -10.0417, -9.139, -24.3207,
210 -2.7279, -1.7097, -1.1534, 1.6639, 5.7537, 6.7942, 10.6044, 12.5105, 10.6069, 10.0936, 6.6639, 5.768, -0.0784, -3.9348, -2.0808, -2.5423, -7.773, -12.2311, -11.4054, -24.8224,
211 10.1275, 12.1619, 16.2723, 20.8127, 20.974, 14.8019, 10.1842, 6.5306, 4.4543, 7.4531, 12.2713, 6.962, 6.8204, -5.0668, -18.1362, -24.0479, -25.9037, -25.4208, -24.389, -26.8618,
212 -9.9466, -6.5695, -9.8093, -1.7391, 0.058, 3.2073, 7.0375, 2.3619, -1.1764, -5.8692, 0.305, -4.2033, 11.2777, -0.3904, 7.8268, 9.8649, 4.7504, 6.9825, 7.6743, -21.6424,
213 14.0137, 16.9699, 19.0697, 15.0058, 7.0268, 5.9083, 2.9474, 2.1595, 3.8159, 7.2602, 11.3975, 7.5965, 1.66, -6.7074, -13.8401, -15.7435, -16.6488, -16.4066, -16.4466, -29.0384,
214 6.2399, 3.2858, -0.2213, -1.4923, 1.3132, 3.933, 3.5221, 2.8631, 1.3615, -0.079, -1.0125, -1.0737, -0.3033, -0.848, -0.4749, -1.1495, 0.1031, -0.209, -1.3002, -14.458,
215 14.6593, 20.5101, 23.6344, 20.8409, 12.562, 6.6891, 3.7103, -0.8534, -3.6042, -5.9363, -7.011, -3.7764, 1.6775, -5.6072, -12.2281, -10.8044, -4.3275, -11.1148, -14.7836, -24.2367,
216 17.5445, 22.4817, 15.1353, 12.588, 5.1049, 1.9643, 5.3928, -3.5987, -0.475, 11.7373, 12.9388, -3.8264, -3.5752, -8.3127, 9.4226, -10.0441, -20.2747, -19.0638, -21.801, -23.3385,
217 11.5639, 14.1176, 19.178, 24.7909, 18.2344, 11.0457, 8.2594, 6.6617, 7.5852, 14.184, 12.1883, 7.8148, -0.4947, -16.4472, -21.5615, -22.7378, -21.8493, -21.9703, -24.981, -25.582,
218 7.3833, 6.5793, 5.7205, 10.2722, 16.6567, 15.1599, 9.5922, 5.5668, 5.0234, 9.3817, 5.3741, -5.1082, -9.8091, -12.3432, -12.5495, -6.2366, -5.9929, -8.3697, -6.8581, -29.4426,
219 0.3726, -5.6285, -3.2253, 2.1557, 3.8332, 12.1538, 14.6059, 12.3634, 15.7294, 17.0679, 4.8054, -1.6834, -7.5585, -11.9417, -12.8749, -9.7037, -1.2933, -5.8852, -6.0304, -17.2623,
220 12.4589, 17.5375, 23.1698, 18.7129, 9.0574, 6.8369, 3.3366, -0.7668, -3.5028, -5.8079, -2.0422, 3.5413, -5.492, -15.4559, -14.9601, -7.186, -2.1139, -10.3945, -4.5301, -22.3991,
221 7.7831, 5.9803, 3.3957, 1.1363, 0.6624, -0.3876, -1.227, 0.535, 0.3563, 5.2276, 9.1991, 8.9238, 2.632, -1.9335, -4.212, -2.5342, -1.0999, -4.9168, -4.9485, -24.572,
222 12.7865, 11.7808, 12.0132, 12.7418, 11.7725, 11.2618, 10.9064, 7.0094, 3.3808, -2.3233, -4.5714, -6.7413, -8.0255, -8.7048, -10.995, -7.0616, -9.371, -7.6597, -4.91, -23.2897,
223 7.4583, 10.3954, 16.3813, 20.381, 16.5656, 9.1371, 4.5296, 4.0559, 6.8658, 9.8043, 0.1187, -6.6202, -8.4161, -2.4957, -9.4787, -16.3418, -17.6122, -13.1639, -7.5007, -24.0638,
224 10.5778, 12.5102, 15.45, 16.251, 14.1076, 12.4513, 11.9259, 10.4537, 6.3771, 1.6824, -3.8825, -5.5239, -8.8633, -8.0708, -4.646, -3.2386, -13.9943, -17.4761, -15.8823, -30.2093,
225 16.545, 21.4563, 20.013, 10.542, 0.7521, -0.1817, -5.7313, -0.269, -4.1817, -0.5968, 6.2079, 4.1626, -0.4622, 5.1095, -10.2058, -16.0783, -19.9597, -11.663, 4.3789, -19.838,
226 0.6538, 1.9228, 2.293, 5.2351, 12.5744, 11.0394, 7.485, 0.8228, -3.4564, -5.0324, -2.9456, 4.4755, 9.605, 1.6136, 0.0025, -0.9954, -6.7769, -7.886, -2.933, -27.6973,
227 14.1315, 17.7109, 22.9482, 25.5022, 19.8506, 12.4355, 10.8121, 14.0608, 12.2635, -2.6541, -11.3457, -15.5204, -18.073, -18.739, -15.772, -7.2576, -9.9721, -9.7355, -17.106, -23.54,
228 -5.7314, -4.059, 1.0581, 0.9805, 1.3616, 2.7093, 6.3692, 11.6381, 12.018, 9.1818, 6.8001, 1.9409, 3.0785, -2.5335, -5.799, -0.6774, 0.8325, -4.7436, -7.1073, -27.3175,
229 -1.064, 0.7851, 2.716, 6.1021, 12.1198, 15.4431, 10.3026, 4.0089, 1.9648, -0.0384, 2.4993, 9.2599, 1.9572, -4.2838, -3.1953, -1.1928, -7.8283, -8.5999, -10.0789, -30.8773,
230 -5.6296, -4.3307, -2.3209, -0.8933, 0.2894, -1.9304, -2.0575, -2.778, -6.2185, -5.9192, -6.6197, -5.5076, 1.7, -2.2417, 6.734, 9.7221, 5.4135, 15.423, 16.2356, -9.0706,
231 21.8983, 23.2393, 21.5176, 17.3026, 15.6381, 10.7095, -4.6739, -9.4131, -7.3736, -9.636, -10.3893, -7.6173, -3.694, 2.4229, 12.3234, -14.8401, -14.2133, -12.879, -4.4302, -25.8921,
232 11.8056, 15.656, 20.2939, 16.8416, 9.1858, 2.5617, 2.6711, -1.0207, -1.45, -0.2437, 6.6714, 6.5193, -0.4136, -1.1308, -3.7531, -13.8441, -14.3531, -10.4897, -18.0817, -27.4259,
233 55.7273, 39.936, 26.2526, 15.0127, 6.4718, 0.7391, -2.3157, -3.1939, -2.9475, -3.3569, -5.3235, -7.9446, -10.6626, -13.1662, -14.21, -14.4691, -14.4121, -13.8376, -15.6433, -22.6564,
234 3.7665, 2.9173, 4.2496, 1.847, 7.9023, 14.8241, 11.0448, 3.454, 2.7173, -3.8368, 2.5626, 4.5604, 2.9217, -9.5401, -8.3622, -8.8234, -1.4224, -0.0449, -2.7094, -28.0285,
235 -9.3983, -8.0419, -4.4832, 1.9754, -0.3749, 4.6985, 6.4445, 3.4462, 1.2139, 4.153, -6.0488, 0.4383, 7.0647, 3.8491, 2.7818, -2.689, 2.0052, 6.3893, 4.3086, -17.7324,
236 10.6303, 13.7716, 17.1718, 20.1678, 12.2486, 3.36, 2.4058, -2.5934, -4.8765, -6.0115, -4.6562, -0.7932, 8.0003, -2.284, -3.8243, 0.1863, -9.1648, -14.9839, -14.094, -24.6607,
237 16.6586, 21.6444, 20.8223, 12.8954, 8.1955, 4.1214, 1.5648, -2.8573, -5.5724, -6.5555, -5.8004, -2.3591, 4.833, -0.2831, 0.7092, -9.8961, -15.4807, -12.0228, -6.1807, -24.4365,
238 6.2715, 7.1856, 9.0377, 12.3924, 19.0793, 22.2584, 18.7678, 12.6682, 9.6569, 13.2645, 2.9549, -2.9501, -4.4734, -4.244, -12.7065, -19.5653, -21.3156, -21.7041, -19.8037, -26.7746,
239 6.6118, 7.9766, 9.5899, 16.7112, 22.8331, 15.9736, 8.1328, 4.9522, 3.0471, 7.2666, 11.8402, -1.4154, -4.2808, -5.2523, -8.9476, -17.0691, -18.3281, -12.6216, -21.0003, -26.0198,
240 17.3127, 17.4868, 17.7344, 12.4834, 5.8856, 4.6009, 1.073, -2.7678, -2.0723, -0.4628, -3.7999, -5.837, -8.6148, -7.6108, -6.5104, -2.5688, -1.6184, -6.1466, -7.5013, -21.0659,
241 3.4054, 5.0769, 7.0766, 9.8006, 20.025, 22.5645, 11.5478, 6.2329, 4.4723, 6.4844, 10.6573, 0.2331, -6.2477, -11.087, -10.3507, -4.2484, -15.1989, -19.0756, -16.4193, -24.9492,
242 4.7627, -2.1833, -2.2828, -3.7716, 2.8453, 7.51, 11.3439, 6.188, 0.3611, -1.2837, -10.299, -7.9318, -4.0985, 1.3582, 6.4088, 6.3304, 9.4372, -0.3781, -7.0962, -17.2205,
243 0.0639, 1.7461, 3.2578, 7.1373, 14.2936, 21.0383, 16.8137, 10.1108, 14.304, 14.1399, 0.3676, -6.3231, -10.5295, -12.7919, -9.1838, -2.4821, -12.1068, -13.6518, -9.174, -27.0298,
244 6.2012, 6.2177, 8.6617, 15.7008, 20.0807, 16.3263, 9.7644, 7.667, 11.6809, 8.6315, -2.6559, -7.4948, -10.0457, -10.1131, -6.9875, -12.9972, -15.776, -10.0148, -6.4425, -28.4048,
245 8.4071, 5.8192, 3.5662, 1.9627, 2.4472, 1.8597, -0.737, 2.3814, 0.1779, 1.4958, 2.9385, -6.0143, -2.3152, 0.3049, -1.7145, 0.7158, -1.3399, -5.1439, 2.0438, -16.8555,
246 7.4409, 3.3788, 6.5115, 14.5248, 13.0646, 4.0268, -1.1894, -5.0999, -7.691, -8.4282, -7.9356, -3.3516, 6.9774, 0.9806, -1.3988, 5.5785, -3.1694, -5.2282, 1.6484, -20.6401,
247 11.6728, 5.2904, 7.2713, 8.1521, 8.6202, 4.839, 1.9077, -2.7604, -4.5028, -8.9428, -12.4662, -11.0383, -4.7642, 4.2903, 3.3702, 1.0547, 5.8752, 0.7203, -0.1952, -18.3942,
248 1.7662, 2.1132, 0.6823, 0.5069, -0.7694, -0.573, -0.6749, 0.4539, -2.385, -0.8937, 3.2905, 1.9366, 4.8907, 8.891, 3.4773, 1.6832, -0.385, -1.0325, -5.4486, -17.5299,
249 11.1327, 8.1369, 5.9398, 7.2387, 9.0755, 13.7563, 15.6715, 10.9671, 4.3603, 6.5521, 8.2784, 8.2998, -3.5109, -8.8874, -13.5723, -11.9565, -11.2912, -14.9059, -15.3573, -29.9274,
250 17.2359, 18.8517, 18.1626, 16.5245, 13.3466, 10.8703, 8.4673, 4.7337, 2.635, 0.0183, 1.1954, 4.7388, -2.9359, -6.0731, -7.4347, -16.3769, -19.935, -20.0072, -15.2078, -28.8095,
251 15.9881, 16.1253, 11.9372, 8.7157, 5.3883, 4.3873, 5.5095, 5.6589, 0.5361, -1.1208, -4.817, -4.8077, -4.2337, -3.8897, -5.7866, -5.1486, -6.6937, -4.6271, -8.1104, -25.0113,
252 10.5287, 10.4645, 11.0189, 12.4921, 10.2092, 2.1803, 0.6775, -1.9607, -7.8737, -8.5232, -10.8456, -10.0601, -9.5234, -5.7091, 4.1283, 1.9979, 4.9082, 2.3842, -1.6831, -14.8109,
253 6.8712, 7.1195, 7.8478, 9.0102, 7.5469, 4.9121, 6.0618, 3.0705, 0.6628, 1.7728, 2.714, 6.3541, 3.1029, -4.2377, -6.3687, -2.2545, -6.3865, -11.4164, -9.6711, -26.7119,
254 16.6601, 22.046, 20.3084, 13.4923, 8.0021, 8.7024, 10.126, 10.4026, 4.1888, -3.7328, -6.171, -10.8693, -16.0494, -7.8483, 0.2833, 3.3381, -13.0116, -16.9474, -14.2501, -28.6704,
255 -1.6472, -1.5329, -0.7265, -0.859, 1.55, 3.3445, 6.06, 5.7678, 2.9402, 4.2316, 1.8384, -2.4116, 1.7488, -1.1846, 0.2843, -0.4495, 1.5215, -2.2191, -1.2847, -16.9723,
256 5.4499, 9.2168, 13.6525, 18.6245, 21.2266, 16.3225, 10.2029, 13.7648, 16.3433, 7.8345, -0.8506, -3.0654, 0.8282, -4.7895, -14.3191, -13.6263, -16.5382, -25.7242, -26.3799, -28.1733,
257 5.4928, 7.273, 11.4735, 16.9546, 13.9651, 4.9178, 1.4991, -1.5005, -3.3689, -4.2367, 1.4622, 8.4912, 0.6337, -0.2593, 0.3732, -7.8143, -10.1871, -7.5615, -7.0778, -30.5301,
258 6.6781, 5.8903, 6.7632, 9.181, 8.8397, 9.7239, 8.7155, 7.797, 6.3227, 3.4228, 0.2514, 0.111, -1.6716, -5.4364, -5.9387, -8.2352, -7.5149, -7.0855, -8.8552, -28.9591,
259 11.8209, 17.497, 19.5821, 14.6674, 8.781, 10.5929, 17.1599, 11.1304, -1.5934, -2.4291, -7.104, -7.2023, -9.3009, -11.7782, -8.5498, -11.3872, -9.756, -0.1211, -12.0128, -29.997,
260 10.1575, 12.1948, 14.9933, 16.4447, 14.1842, 8.2787, 4.1829, 1.5996, -0.4007, 2.6686, 4.592, 3.807, -0.5362, -2.8498, -6.0317, -8.0974, -11.2561, -15.969, -16.7096, -31.2528,
261 17.3728, 16.5602, 12.158, 2.2953, -0.7338, -2.2088, -3.006, -3.495, -5.7703, -1.8968, -4.1417, -2.255, -0.4691, -0.6536, -2.4783, -1.3584, 1.113, -1.5486, -2.18, -17.3041,
262 10.9509, 14.6912, 20.9171, 20.7445, 13.3882, 9.0276, 8.481, 10.448, 11.1634, -1.3107, -8.8976, -12.455, -14.1419, -12.2168, -8.1653, -9.184, -14.6536, -10.7798, -3.349, -24.6582,
263 -4.2511, -4.318, -6.4235, -4.0719, -2.3887, -3.1485, -4.2032, -3.5194, -7.501, -5.4107, -2.3368, 0.6165, -2.548, -6.5746, 5.71, 1.8165, 14.8553, 24.383, 15.8024, -6.4884,
264 6.8815, 10.8626, 15.3667, 14.4704, 2.5878, 0.6962, -3.7687, -7.2033, -9.3334, -10.5308, -9.619, -8.2135, -3.3921, 8.1225, 8.7748, 9.4979, -0.1825, -3.9609, 2.5378, -23.5939,
265 10.7457, 13.4613, 16.3838, 18.1633, 11.9764, 6.2322, 2.2046, -1.6815, -5.4025, -5.3261, -1.9194, 5.785, 7.0183, 8.8506, -7.0398, -15.809, -17.0181, -9.4482, -9.5562, -27.6203,
266 4.4895, 6.7459, 11.3127, 18.7251, 18.1351, 6.5502, 1.1677, -1.0341, -3.9953, -2.3382, 3.5745, 11.8555, 2.9192, 6.0596, -4.8984, -13.0118, -16.247, -15.0252, -10.6982, -24.2871,
267 10.1449, 10.3471, 14.749, 16.1718, 16.9528, 11.3815, 6.8749, 1.4265, -2.7864, -6.1956, -8.0139, -7.8556, -2.8591, 4.0596, 5.4548, 3.3633, -10.2166, -16.2406, -18.8135, -27.945,
268 9.5266, 9.8619, 11.6564, 16.1435, 22.5856, 19.0228, 9.5649, 5.1013, 3.9082, 6.9523, 9.4453, -4.8784, -10.6008, -16.0258, -16.6123, -14.774, -6.6639, -13.8342, -16.3927, -23.9867,
269 -2.8166, -0.2578, 2.8925, 4.4555, 5.6756, 4.6914, 3.4417, 3.4041, 1.889, 1.8575, -0.5242, 1.9867, 0.9536, -0.9744, -1.401, -2.1961, -1.2827, -2.3186, -2.1481, -17.3281,
270 6.5757, 10.4876, 15.8653, 20.5177, 18.3749, 8.4114, 4.7411, 0.5009, -2.9659, -4.1461, -4.5681, -0.6566, 5.8038, -2.3737, -8.5532, -6.5787, -2.8561, -13.7548, -17.8769, -26.9485,
271 7.1295, 8.3469, 8.9916, 14.7649, 20.5, 15.5149, 7.3359, 0.6792, -1.5195, -5.0373, 0.9468, 7.0372, -4.0339, -9.7787, -8.9444, -0.8558, -12.0386, -13.0157, -7.1764, -28.8465,
272 -6.3643, -3.56, -0.9853, 1.3808, 3.5164, 4.4752, 4.2783, 4.1699, 0.4058, -0.8097, -0.9913, 3.1386, 9.3653, -1.1057, -1.2662, 0.7587, 1.7985, -2.7481, 1.1071, -16.5641,
273 10.8441, 6.1056, 4.5464, 11.5523, 11.5304, 4.8593, 1.2036, 0.6177, -6.5224, -11.5032, -13.3278, -7.1852, -1.6717, 9.2735, 6.7578, -0.905, -7.2789, -6.0827, 3.0089, -15.8228,
274 2.43, 2.4475, 8.1825, 8.1925, 2.2974, 10.8311, 15.569, 1.4027, 0.329, -0.4366, 6.3648, 1.0487, -0.9166, -8.1367, -8.1915, -9.569, -3.4184, 0.0616, -4.9205, -23.5675,
275 18.5545, 22.239, 21.2685, 17.01, 9.6982, 4.732, 4.3296, 7.5541, 8.1889, 7.8498, 0.4258, -3.7349, -6.3446, -8.3581, -11.0931, -16.2715, -16.4055, -15.8123, -17.441, -26.3892,
276 5.3049, 3.9686, 5.5462, 12.1792, 19.9309, 17.032, 8.3644, 7.8784, 10.6383, 15.3943, 3.6647, -0.1421, 3.0499, -3.2605, -15.9284, -20.0685, -19.5084, -15.1548, -11.4151, -27.474,
277 -4.1173, -2.8993, -1.1226, 2.7523, 4.1168, 4.2377, 1.6192, 1.4859, 2.7141, 0.481, 0.9555, -0.9423, 1.2205, 0.597, 0.3948, 0.467, 2.1347, 1.5199, 1.6806, -17.2954,
278 15.7137, 20.9924, 24.3419, 24.5468, 20.7453, 18.1011, 19.1224, 15.9122, 12.9399, 8.1629, -8.2323, -12.3399, -17.0242, -22.3729, -23.1787, -23.2286, -17.6989, -10.8077, -20.3082, -25.3873,
279 -1.2634, 1.8562, 5.1481, 8.605, 8.7868, 9.5351, 6.6634, 3.816, -0.1296, -4.656, -0.5036, -0.2003, 1.6621, -1.6607, -2.8913, -4.8208, 0.3233, -5.1066, -6.1044, -19.0592,
280 10.6986, 11.8307, 11.5659, 12.449, 11.188, 6.9008, 2.6629, 3.0301, 3.4569, 5.3227, 2.5092, -1.0853, -3.8118, -7.084, -4.9747, -7.3629, -11.0099, -5.9887, -11.0008, -29.2965,
281 13.6712, 17.1821, 19.2431, 13.3261, 5.9589, 0.4984, 0.367, -2.3834, -3.2315, -2.1198, 4.8356, 0.4745, -8.1763, -11.1278, -9.8688, -0.1733, -8.1227, -9.3563, -5.3546, -15.6426,
282 -5.7735, -2.5076, -1.5044, -1.1663, 0.0004, 2.3285, 2.2748, 3.5509, 0.5101, -3.3403, 0.8431, 1.7502, 3.2945, -0.4888, 1.3903, 4.0779, 1.6571, 2.3564, 6.2297, -15.4829,
283 9.1796, 11.0931, 14.7746, 19.7918, 17.0503, 10.0451, 7.8355, 5.3063, 5.9805, 11.7545, 10.2992, 6.2216, 2.6489, -6.8542, -15.2068, -16.6927, -14.099, -23.4163, -26.3767, -29.3354,
284 4.4691, 6.369, 7.7808, 12.847, 20.5705, 17.7665, 9.4381, 6.2778, 2.4431, 5.0549, 9.9596, 3.2883, -2.2059, 2.04, -4.0438, -15.0151, -19.7303, -18.2469, -20.2388, -28.8235,
285 25.3208, 24.3974, 22.6154, 19.5733, 14.8131, 10.5701, 9.4361, 4.3748, -1.5593, -4.3511, -14.7283, -17.6258, -0.952, -8.5196, -7.3624, -3.251, -9.9332, -17.3271, -21.4343, -24.057,
286 22.3042, 16.1278, 12.0077, 14.7975, 10.7206, 8.3648, 8.061, 10.1267, 7.5498, 1.8723, -3.9201, -8.2481, -10.1623, -11.376, -12.7367, -5.005, -3.3744, -11.9178, -17.47, -27.722,
287 4.0018, 3.5852, 3.3315, 5.3461, 4.3656, 2.8461, -0.0206, -2.5696, 0.1895, 5.1002, 3.3534, 0.2158, 1.3297, -0.9671, -0.5937, -1.9855, -1.7054, -1.7064, -4.2453, -19.8713,
288 -0.182, 0.3377, 2.3741, 5.1705, 4.8793, 2.2995, 4.3309, 2.2662, 0.4173, -0.8843, 6.0098, 9.0178, 2.964, -0.8977, -1.5385, -6.1656, -4.1289, -4.7989, -1.1105, -20.3607,
289 7.6526, 7.4466, 4.8852, 0.6442, 1.5298, 0.3141, 2.6136, 0.1768, 0.3184, 1.5717, 0.2364, -0.4716, -4.0283, -1.7854, 1.1771, -1.1242, 0.5833, -0.2901, -4.6526, -16.7979,
290 19.3739, 25.1966, 25.2676, 19.4367, 10.1976, 2.4144, -1.1928, -4.0638, -8.7478, -10.523, -11.0799, -12.5634, -10.0392, -5.3666, 3.7592, 3.344, 0.1212, -8.8586, -13.7562, -22.9202,
291 9.6043, 10.541, 12.3377, 19.7574, 26.3167, 19.8022, 16.1636, 16.4176, 17.5852, 2.8061, -5.6826, -11.1198, -15.0897, -15.5002, -11.1047, -14.2676, -20.4525, -20.5783, -15.3843, -22.1521,
292 12.9015, 20.6704, 27.9257, 24.9274, 19.2594, 24.215, 19.1475, 0.5334, -3.3152, -12.4822, -15.0498, -16.9033, -19.2802, -17.1972, -9.8015, -9.8416, -13.7988, -8.2071, -2.2124, -21.4912,
293 14.4389, 13.4012, 16.1103, 14.9288, 9.7959, 11.0171, 12.0893, -1.4171, -9.8704, -8.5713, -15.4225, -18.6377, -16.5003, -13.9403, 1.0172, 8.7826, 2.1557, -0.7217, -0.1613, -18.4945,
294 3.2298, 2.2245, 4.4788, 6.2407, 6.6193, 4.0854, 3.5648, 2.2977, 2.4361, 0.5689, -4.6553, -1.2701, -2.8888, -2.1474, -1.0212, -1.5878, -0.7381, 0.5436, -4.6923, -17.2887,
295 12.1886, 11.0008, 17.9358, 24.301, 22.2969, 15.0778, 12.8771, 17.0838, 11.2261, -0.0847, -7.9648, -13.0993, -17.1559, -19.7583, -18.6302, -14.9903, -5.4184, -14.9564, -12.137, -19.7926,
296 18.1628, 19.7982, 21.7942, 23.1496, 22.2974, 18.3029, 13.8973, 12.5987, 14.0955, 8.3018, -1.2018, -2.7097, -5.1243, -15.5625, -20.9814, -25.9011, -25.5502, -25.1062, -24.3739, -25.8874,
297 5.12, 2.6682, 2.7787, 5.122, 7.7683, 7.6609, 0.3239, -0.5597, -2.1976, -4.2025, -2.3433, 5.4581, 3.3195, -4.6819, -7.7339, -5.9433, 6.7709, -3.0093, -0.4617, -15.857,
298 3.1474, 3.9068, 4.6743, 6.198, 3.9172, 5.5703, 3.756, 5.3815, 6.4792, 7.4263, 4.0188, -0.9053, -2.9276, -4.264, -3.8751, -2.5664, -3.8921, -5.7279, -7.3914, -22.9261,
299 7.7606, 7.9634, 9.259, 13.4058, 20.913, 19.2571, 11.4285, 9.1142, 10.4227, 12.6605, 1.394, -7.8667, -12.9049, -16.1586, -15.3321, -7.7158, -10.1835, -11.8246, -14.2319, -27.3607,
300 9.9378, 9.7046, 10.1765, 13.167, 9.5151, 2.2155, -0.0456, 0.0357, -0.3521, -1.264, 0.0667, 3.9496, -0.7853, 0.9935, 1.7327, -2.1738, -2.4763, -8.9075, -14.5354, -30.9548,
301 9.4566, 14.4761, 17.5184, 16.5421, 10.8319, 4.8634, 3.7958, 1.0301, -0.7413, -4.7772, 0.1278, 10.6261, 1.7256, -4.7562, -1.8151, -1.2979, -10.9708, -19.1139, -21.0656, -26.4558,
302 4.1609, 4.3674, 5.163, 10.4393, 19.9966, 22.0365, 15.0772, 16.7404, 13.2009, 0.0579, -7.2967, -13.1855, -16.4671, -16.2778, -13.5417, -3.6468, -7.6575, -10.0591, -0.8708, -22.2374,
303 9.2619, 9.285, 10.6963, 10.0411, 5.3819, 1.803, 1.0922, -0.366, -0.8976, -3.181, -0.6819, -3.8642, -8.4569, -8.9974, -5.5095, -1.9498, -5.7587, -2.8793, 9.9987, -15.0177,
304 16.0944, 15.0736, 17.429, 17.1266, 16.3425, 13.9152, -0.3124, -3.4633, -3.3349, -5.5676, 1.022, 7.3152, 5.0978, 0.8308, -5.9027, -14.3898, -14.2461, -12.232, -23.5828, -27.2154,
305 2.0137, 5.7764, 10.2219, 14.9245, 16.5703, 10.5235, 3.0729, -1.4882, -7.205, -6.2506, -5.1311, 1.5065, 6.9953, -1.443, 1.824, -1.5831, -9.7701, -7.7954, -0.2269, -32.5358,
306 0.8118, 3.1428, 4.1975, 8.8492, 17.1316, 16.9999, 8.6244, -0.0326, -4.953, -5.2292, -0.1353, 6.3691, -2.1837, -2.6835, 3.8299, -6.3313, -4.714, -0.206, -11.6261, -31.8615,
307 16.0656, 15.8566, 16.266, 14.0919, 7.2745, 1.1478, 0.5592, -3.1884, -2.7528, -3.9872, -1.52, -5.6031, -7.1936, -11.6082, -9.9024, -5.9648, -1.2652, -4.4434, -0.5317, -13.3008,
308 6.0546, 7.8172, 12.5175, 18.974, 18.6314, 12.5099, 8.6741, 7.3229, 9.6232, 16.1584, 9.3568, 6.3688, 5.3827, -10.1648, -19.1392, -25.0842, -25.6307, -21.0082, -12.2957, -26.0685,
309 8.7645, 5.7385, 7.3877, 9.4659, 8.7034, 6.7927, 2.2815, 1.642, 0.5587, -0.7987, 1.2054, 8.0228, 11.5479, 4.5805, -6.4932, -9.4841, -11.6576, -7.6077, -9.5897, -31.0604,
310 13.5337, 13.1762, 15.6646, 19.9549, 24.347, 21.3479, 19.5471, 19.3675, 13.3653, -0.5856, -8.6584, -13.2572, -16.9863, -17.9847, -20.7708, -15.4798, -11.0509, -15.4702, -16.1382, -23.9221,
311 9.4656, 10.0639, 11.4433, 14.668, 18.7771, 15.2024, 9.3195, 5.137, 1.9578, 0.3561, 3.767, 8.6933, 1.32, -4.9956, -10.6736, -14.332, -17.7829, -18.0592, -14.314, -30.0137,
312 1.5799, 4.3053, 2.3818, 2.891, -1.2059, -0.83, -0.1903, -0.1292, 1.0233, 3.9206, 3.9828, 2.2978, 3.232, -2.5703, -2.6923, -1.3776, 2.9213, 0.1727, -0.511, -19.2019,
313 6.8519, 4.8647, 1.9844, 2.2401, 3.7555, 1.5005, -1.3694, 0.5704, 2.1485, 0.76, 0.6917, -1.0898, 1.8295, -1.7615, 0.1607, -2.4085, 0.4928, -1.2003, -0.2145, -19.8066,
314 26.8652, 27.9313, 22.2964, 13.2728, 4.9234, 4.975, 10.5105, 12.7213, 4.9587, -6.5278, -2.0124, -3.4059, -5.9594, -7.3378, -10.2568, -18.1183, -18.7465, -15.1523, -18.6899, -22.2476,
315 11.7015, 12.5524, 16.8036, 20.5917, 17.3325, 11.6535, 7.9132, 3.4464, 6.4909, 8.4604, 0.112, -8.677, -13.3036, -17.0534, -16.5775, -11.3553, -3.454, -9.9071, -10.954, -25.776,
316 20.0026, 21.9415, 20.1743, 15.7692, 9.6829, 6.6171, 12.1877, 15.1379, 6.9729, -2.6223, -11.926, -8.003, -5.4775, -7.9242, -14.3282, -6.4602, -11.9823, -18.5276, -14.5214, -26.7133,
317 8.4727, 10.313, 16.1554, 22.5237, 20.4885, 15.1245, 10.9192, 10.3785, 14.0959, 8.6752, -2.6735, -8.1503, -8.9174, -2.4684, -9.1899, -21.2524, -22.7439, -18.1241, -17.6618, -25.965,
318 16.4001, 11.079, 6.5408, 3.9922, 0.9638, 0.6155, 0.1321, -0.0033, -1.5205, -0.5347, 0.0838, -0.8675, -0.2837, -1.6297, -1.6342, -2.753, -2.7291, -3.0597, -3.9086, -20.8833,
319 12.8347, 13.993, 15.6832, 15.4917, 10.9362, 11.4157, 15.6476, 4.371, -10.872, 4.3584, -2.6363, -7.3238, -10.3423, -4.3725, 0.4684, 7.2994, -11.0045, -18.8176, -14.2499, -32.8805,
320 12.3323, 15.8058, 21.8399, 24.3008, 14.4087, 10.993, 7.8357, 8.0265, 12.8222, 14.2335, 5.8155, 6.0731, -6.0593, -17.6762, -22.1263, -23.2555, -24.2165, -21.7123, -15.9183, -23.5226,
321 5.7344, 5.3389, 3.8374, 3.419, 2.8812, 1.7219, 0.1439, 1.858, -0.5349, 2.0653, -5.3722, 2.7017, 1.0724, -0.8636, -1.4371, 0.4192, -0.6553, -2.1126, -0.737, -19.4805,
322 8.7871, 8.8914, 10.508, 13.7939, 18.1053, 18.3809, 13.6037, 9.9123, 6.2489, 7.8891, 6.4768, -2.8713, -8.9109, -11.1699, -11.8847, -5.8137, -11.8112, -19.3777, -21.5409, -29.2171,
323 21.2487, 22.5877, 21.7624, 19.0832, 14.4498, 8.3623, 6.4664, 3.1545, -0.286, -1.9696, -3.9389, -1.8288, -3.7243, -9.6176, -13.7865, -15.0846, -11.3343, -12.9399, -16.9243, -25.6805,
324 15.5067, 16.3749, 16.311, 12.8646, 5.4498, 2.4274, -1.0299, -3.27, -3.2357, -0.0252, 7.5399, -0.6948, -6.2588, -9.1664, -6.8883, 0.76, -11.6902, -9.982, -1.1495, -23.8436,
325 15.5548, 17.3265, 20.2482, 21.9118, 17.7825, 12.4436, 8.5947, 8.3626, 10.7582, 6.8704, -2.615, -7.1451, -11.7102, -15.2112, -16.7335, -10.8661, -12.143, -16.7183, -19.7849, -26.926,
326 9.7348, 18.6985, 22.2, 9.7733, 3.5414, -0.989, -5.4561, -5.4928, -8.476, -6.8757, -4.1569, 6.8951, 2.1633, -1.2892, 3.0483, -7.4717, -12.0842, -7.7317, 1.0735, -17.105,
327 6.6628, 6.9628, 9.289, 7.3292, 2.0881, -0.1054, -1.5163, -4.7058, -4.4988, -5.4883, -6.5025, -2.6194, 5.9468, -1.1287, -0.4851, 5.3144, -1.644, -1.6601, 4.2795, -17.5182,
328 11.7595, 13.0074, 13.6551, 14.3417, 13.9024, 11.589, 9.9365, 4.195, -1.2916, -2.3847, -1.5414, -3.1381, -5.4213, -4.9864, 0.0096, 0.2286, -7.594, -13.3606, -21.1287, -31.778,
329 16.556, 21.1528, 18.2294, 14.8217, 11.7211, 5.8948, 0.1128, -5.7142, 0.4819, 3.4296, -7.6731, -15.2596, -14.091, -4.345, 4.2359, -1.261, -8.7829, -14.4366, -8.1323, -16.9402,
330 -9.6162, -5.892, -0.4336, -0.0688, 3.9825, 0.71, -1.9156, -3.0982, -4.8027, -4.2612, -2.6264, 1.0431, 5.5418, 11.1806, 9.5552, 5.0905, 3.5862, 4.3463, 5.867, -18.1885,
331 9.2493, 12.521, 14.8487, 20.3042, 16.9267, 10.5281, 5.4085, -1.4152, -5.3054, -5.325, -4.1371, 2.4443, 0.8006, -8.09, -7.9314, -5.9206, -13.5877, -13.0043, -4.8031, -23.5116,
332 5.9148, 6.0122, 7.7679, 11.9347, 14.3202, 11.188, 5.7941, 0.6362, -0.9006, -3.7616, -1.0465, 6.3361, 0.5894, -7.7629, -9.2778, -6.0898, -0.474, -7.4253, -3.178, -30.5771,
333 9.047, 12.9059, 18.1346, 24.2631, 23.6353, 19.2579, 20.8877, 17.0355, 3.1774, -5.2773, -10.0473, -14.9178, -17.5773, -16.4551, -11.9394, -9.6664, -11.9143, -7.0063, -19.2353, -24.308,
334 11.6229, 13.7686, 16.3077, 18.973, 21.2077, 21.177, 18.6717, 15.526, 14.4577, 10.9286, -2.0523, -9.7658, -14.147, -18.3895, -20.2191, -19.9491, -14.1791, -17.4745, -18.9708, -27.4939,
335 -1.2854, -2.7859, 2.0352, 3.8729, 2.5634, 1.1875, 2.9803, 3.4105, 0.6928, -0.5396, -6.4408, -2.1739, 4.1284, -0.7168, -3.4324, -5.3047, 2.106, 6.1169, 6.17, -12.5844,
336 3.6719, 5.1933, 3.433, 2.0915, 1.709, 4.9193, 7.5225, 11.4575, 7.7921, 1.1072, -1.3846, 0.672, -0.8916, -0.5196, -2.8857, -5.7085, -3.7344, -4.4707, -6.4364, -23.5377,
337 5.0076, 6.0603, 5.6858, 5.8716, 4.9796, 4.351, 3.2343, -0.0278, -1.6006, -3.6879, -3.6306, -0.3994, -2.7867, -5.8602, -4.3815, -4.1661, 1.9375, 0.0251, 1.7605, -12.3723,
338 1.5611, 2.5677, 6.9184, 12.7642, 12.9002, 7.6294, 1.5737, -0.4407, -4.6258, -3.3019, -0.3274, 9.4821, 8.3473, 7.1185, 0.9099, -4.2945, -2.0947, -5.5952, -16.6889, -34.4035,
339 -10.077, -9.2074, -7.5499, -5.3349, -2.0639, 0.7289, 3.3239, 5.0911, 7.8838, 10.9963, 10.2149, 9.1756, 7.3923, 3.8453, -0.9308, -1.4293, -1.7749, -2.4954, -0.635, -17.1538,
340 11.6964, 15.7897, 21.5631, 25.0743, 21.2867, 19.0704, 20.7015, 14.1826, 0.0839, -7.4606, -11.2687, -14.0743, -15.6804, -14.7951, -10.801, -12.5161, -17.6133, -13.8075, -7.4286, -24.0031,
341 -6.9283, -6.6188, -5.8684, -5.5056, -3.6164, -2.5751, -3.3395, -0.3521, -3.7955, -8.6077, -6.1256, -4.7755, -5.6371, 1.9017, 5.4236, 6.9088, 17.0056, 9.6477, 17.8081, 5.05,
342 1.04, 4.3584, 5.7473, 5.9965, 7.1951, 11.1543, 16.3999, 17.9219, 13.7898, 8.5105, 6.6032, 8.3888, 3.1208, -8.4853, -12.1692, -10.3091, -9.406, -16.3383, -22.0676, -31.451,
343 4.0785, 3.7601, 3.2477, 4.5535, 2.8617, 2.8959, 4.0341, 3.3572, -6.7255, 5.4042, 2.4187, 1.223, 0.1581, -3.0654, -1.9472, 0.8423, -1.1312, 1.2092, -3.2861, -23.8888,
344 7.3239, 6.915, 9.3764, 18.0744, 16.9415, 9.605, 5.2932, 1.9763, 2.0297, 6.284, 11.8379, 10.9565, 8.5711, -5.0433, -15.8094, -21.0356, -22.5868, -18.9436, -8.4281, -23.3379,
345 -1.7885, -4.8321, -3.3241, 0.9574, -0.7694, -4.0018, -4.5674, -4.526, -2.6221, 4.0186, 7.6808, 10.9687, 1.1618, 6.5552, 7.2914, 5.9801, 0.8194, -0.4241, 1.0077, -19.5855,
346 2.5382, 2.7665, 6.6332, 9.6977, 12.0223, 5.6888, 5.2502, -0.0648, 0.179, 1.7261, 3.6718, 4.6019, -4.2546, -5.2838, -8.6175, -3.503, -2.89, -5.1451, -3.1562, -21.8607,
347 -1.7959, -1.641, -1.3048, -1.9856, -1.1093, -0.5878, -1.7759, -0.7425, -2.7139, -3.3222, -3.9402, -1.9787, -4.1788, -1.9573, -0.0518, 0.6181, 5.7386, 8.4544, 14.2974, -0.0227,
348 1.9227, 3.4879, 4.9261, 5.1627, 4.2257, 4.6417, 3.0455, -0.455, -1.933, -4.6665, -6.5225, -3.7829, -5.2713, -1.4162, 3.7054, 5.6573, 7.046, 2.7847, -1.9201, -20.6381,
349 5.4951, 4.1184, 5.0794, 4.1307, 2.3794, 0.0327, -0.8237, -1.5895, -3.7505, -6.6385, -6.0766, -2.2466, -0.408, -4.9327, -5.84, -1.6035, 0.3752, 6.5602, 12.3259, -6.5875,
350 6.8048, 2.6542, 8.2117, 4.3594, 9.5824, 4.9978, 9.2805, 5.4616, 0.1801, 2.8218, 4.8979, 8.0336, 1.3602, -0.8584, 3.0641, -6.3167, -11.4947, -13.9096, -9.3665, -29.7643,
351 20.4394, 23.8508, 19.9523, 13.4804, 4.7063, -0.881, 2.3157, 4.3508, 4.6054, 2.6117, -2.816, -5.7052, -5.0189, -10.4846, -14.5942, -12.8055, -6.1098, -12.0585, -7.7055, -18.1337,
352 9.9351, 14.3502, 19.553, 16.3727, 7.0796, 2.9949, -1.1604, -3.2246, -3.9592, -2.8637, 3.6007, 8.3194, 1.5624, 4.008, -6.2282, -13.296, -15.2078, -10.4525, -5.9946, -25.3891,
353 5.5354, 4.2644, 3.4234, 3.565, 3.9406, 1.8276, 0.2709, 0.3493, -0.002, -0.7304, 1.8692, 2.1692, -1.3779, -0.9234, -5.0911, 0.1335, -1.1518, -0.8308, -1.2357, -16.0052,
354 14.718, 8.4248, 6.7389, 6.9731, 8.7963, 12.7964, 14.6589, 10.3137, 3.2909, -3.7235, -5.8542, -6.9864, -6.8348, -4.2701, -4.4326, -5.4747, 0.7281, -9.3904, -11.2298, -29.2424,
355 9.1842, 9.7851, 10.8472, 12.9244, 10.6955, 6.8423, 4.6037, 0.765, -2.0301, -2.7855, 1.3686, 5.5053, -1.4464, -8.6948, -6.8949, -4.4565, -9.3587, -11.9106, -7.0277, -17.9162,
356 9.5187, 11.0469, 10.8992, 10.5477, 12.4336, 17.931, 22.0092, 22.1029, 21.2249, 17.7472, 4.1368, -3.9142, -11.6583, -18.8125, -22.4708, -24.5855, -14.9292, -12.6855, -22.7109, -27.8313,
357 12.0341, 16.6419, 15.8489, 10.0396, 3.3655, -1.8695, -5.2143, -9.4106, -10.9745, -12.0991, -12.045, -11.1231, -7.2635, 0.0306, 12.4231, 12.6061, 4.1888, -1.9085, 0.6831, -15.9537,
358 -1.3674, -0.5228, -4.0775, -3.81, -1.0761, 13.75, 19.2044, 15.7231, 9.5615, 7.9996, 6.5298, 3.6199, 0.5658, -1.3324, -7.5527, -6.3571, -7.0946, -6.2162, -8.1181, -29.4293,
359 7.3145, 11.1318, 15.8219, 21.2414, 19.7326, 13.4391, 10.1286, 13.1458, 13.522, 4.5818, -4.9865, -10.4663, -12.4137, -8.4915, -7.5278, -14.5074, -14.9519, -10.6855, -18.9716, -27.0572,
360 -2.6938, -1.0116, 0.5434, -0.5197, 1.251, 2.781, -3.1452, 2.3461, 1.3093, 1.0916, 0.2998, 1.6109, 9.4326, 9.1761, -2.9635, -1.3175, -1.3459, -2.3687, -0.4622, -14.0137,
361 -0.6799, -0.1341, 0.7366, 1.5016, 2.3553, 1.9877, 1.8684, -1.1687, -1.7388, -0.3259, 3.2899, 3.7096, 2.8005, -0.4016, 0.0798, 0.8146, 0.249, -0.5574, 0.0812, -14.4681,
362 -4.5962, -1.7335, 2.2323, 4.9758, 4.1965, 6.112, 6.3004, -0.242, -0.4268, -3.4101, -1.9343, 1.8578, -0.3352, -3.5061, -2.9167, 0.7871, 0.7063, -1.6356, 3.3878, -9.8196,
363 13.1227, 13.7568, 12.075, 11.2378, 13.9543, 15.7037, 14.8582, 9.5334, 0.1292, -3.0889, -7.7565, -10.9896, -5.4579, -2.1373, 0.1387, -11.7169, -13.0933, -7.4977, -12.364, -30.4077,
364 29.3087, 22.8979, 20.4744, 14.9176, 7.8398, 2.3822, -3.7671, 1.0563, -3.5131, 2.1709, 4.106, -2.4865, -7.3802, -9.3667, -9.8213, -8.8247, -9.4073, -14.9259, -16.153, -19.5079,
365 8.2477, 12.7093, 19.458, 20.8257, 15.6422, 8.6762, 4.5782, 4.1335, 5.6439, 14.7051, 12.4104, 11.4909, -6.3291, -17.1032, -20.7835, -24.4558, -22.5241, -14.5649, -5.2278, -27.5328,
366 0.7217, 4.0954, 5.2473, 1.527, 1.7119, 3.5822, -1.4614, 0.872, -1.3606, -1.4757, -0.4869, 1.0336, -0.7433, 2.0743, 0.6152, -7.1442, 0.592, 6.3583, 2.8714, -18.6301,
367 20.3582, 21.7378, 21.8475, 15.5031, 8.5323, 5.5254, -0.6584, -4.0833, -5.5901, -5.8466, -2.2597, 3.0499, -4.1864, -7.3615, -5.3521, -8.6549, -8.7165, -10.8646, -9.6599, -23.3202,
368 7.9037, 5.3843, 2.5963, 1.7924, -4.1648, 1.1119, 1.0025, 0.4959, -1.4533, -3.0047, 0.7379, 1.8636, 2.4329, 0.95, -0.1706, -0.3177, 0.7889, 1.1735, -0.473, -18.6499,
369 -1.9942, -2.2404, 1.0361, 1.1275, 2.4246, 0.9687, -0.7731, -0.435, 2.7773, 4.6081, 2.2666, 5.9874, 1.4863, -4.3135, -1.0943, 3.1059, -4.9201, 3.6382, 1.5522, -15.2082,
370 15.5189, 17.894, 20.2047, 21.1613, 16.5719, 9.883, 6.2072, 1.5961, -2.8649, -4.235, -1.2109, 1.6294, -0.3114, -6.289, -6.647, -6.6461, -16.7097, -18.4834, -19.5782, -27.6908,
371 4.5707, 9.9453, 16.9194, 16.3836, 7.5074, 1.7185, -1.6704, -4.647, -7.171, -7.5216, -6.2372, -1.4728, 9.199, 4.5872, 4.2446, -3.1203, -10.1462, -8.9093, -2.0237, -22.1562,
372 10.2043, 6.2265, 8.048, 6.0822, 2.9673, -0.2686, -0.4905, -3.3479, -4.2925, -4.0224, -2.6407, -3.8742, 0.6899, 3.7007, 5.8631, 8.848, -1.0855, -6.5692, -4.1304, -21.9079,
373 12.9155, 18.0966, 19.8262, 14.0767, 6.9947, 1.6106, -0.8791, -6.2102, -7.3162, -10.2835, -10.9883, -8.3441, -1.6557, 0.008, -5.7847, 1.4192, -5.5022, -4.2471, 3.9784, -17.7147,
374 5.1637, 8.0679, 12.5738, 17.5701, 14.9252, 4.1592, 0.9276, -0.3161, 0.0005, 3.6819, 10.2605, 3.1026, -2.7955, -2.8307, -1.1861, -9.2862, -11.7976, -5.3295, -15.7634, -31.1274,
375 6.9673, 6.7974, 6.1367, 10.4782, 15.9809, 13.2295, 4.9742, 0.4813, -4.131, -5.6911, -5.9712, -1.2511, 7.3306, 2.6442, 0.3224, -0.8372, -7.4799, -9.3018, -8.5882, -32.0913,
376 13.1396, 12.9563, 12.3478, 9.0857, 2.3849, -0.849, -1.4825, -4.2362, -7.2804, -7.4639, -6.8853, -6.4479, -4.2443, -8.2231, -3.9022, 0.4289, 0.1896, 3.7001, 6.9697, -10.1879,
377 15.333, 18.1603, 22.1112, 21.6848, 13.1886, 10.5333, 8.8464, 9.6626, 12.4137, 13.9577, 10.142, -0.2864, -11.4409, -16.9791, -19.7494, -15.6645, -19.7643, -22.5, -23.5283, -26.1208,
378 6.8457, -6.8649, 5.4271, 5.2712, -1.3685, 5.0072, 1.5557, 0.4655, -8.6121, 0.8133, -3.3697, -1.5367, 2.2231, 2.7614, 0.6905, -0.9517, 3.9757, 2.5271, 6.8378, -21.6975,
379 4.0198, 5.3861, 1.469, -2.5892, -0.7717, 2.5302, 1.6444, 0.6228, 0.0646, 3.2916, 3.8112, -0.6089, 2.1623, 0.1459, 0.1339, 0.1325, -1.6768, -0.5331, -0.5013, -18.7335,
380 -7.1586, -2.6175, 0.5796, 4.1833, -1.3849, 0.3608, -8.9238, -4.4835, -1.6026, -5.1856, -8.3891, -1.473, 9.5706, -8.3291, 11.6042, 11.148, -0.2734, 4.8182, 12.1074, -4.5509,
381 12.6166, 14.8923, 16.2633, 17.1269, 18.2744, 19.287, 16.5858, 10.4162, 6.9131, 6.3384, 2.9142, -1.3754, -10.9051, -16.4865, -19.5016, -17.7616, -6.9047, -16.5161, -23.1066, -29.0706,
382 10.8009, 12.8094, 14.6516, 18.7246, 16.6285, 12.1161, 8.7229, 6.4887, 7.8806, 10.133, 4.172, -4.3839, -6.8368, -8.8011, -8.4415, -14.6175, -16.9291, -13.3638, -20.2402, -29.5143,
383 6.219, 6.4291, 6.1608, 8.0273, 9.8018, 9.8514, 6.5431, 7.0773, 5.8326, 5.6116, 8.215, 7.4679, -0.2957, -6.5386, -7.9, -7.1888, -10.2895, -12.2362, -14.0338, -28.7541,
384 8.0266, 9.6417, 12.2059, 15.4655, 15.3945, 10.4886, 6.7757, 2.33, 3.3664, 6.5551, 2.3159, -4.1967, -9.2962, -11.8145, -9.9788, 0.04, -6.7484, -6.4088, -11.3916, -32.771,
385 -6.0361, -3.7035, -0.2831, 1.4674, 0.7756, 0.3247, -0.7445, -0.5024, -2.1341, 2.7813, -0.1459, -3.5635, -3.9893, -4.293, -0.5948, 5.6527, 2.1314, 14.0267, 12.5554, -13.7247,
386 -14.2301, -11.8469, -5.4438, -2.2899, 3.4911, 0.4713, 0.7187, -2.7114, -1.5588, -2.821, -0.0887, 1.506, 2.8286, 9.35, 12.2742, 8.0817, 12.1298, 7.7574, 3.4239, -21.0423,
387 10.2809, 9.4545, 10.3039, 12.6386, 19.498, 22.5798, 19.2258, 15.3342, 18.162, 10.8305, -3.6184, -11.2472, -16.1533, -19.0561, -21.3742, -19.1215, -7.0133, -13.0322, -12.3255, -25.3663,
388 -7.1992, -4.095, -0.4752, -0.0397, -1.2923, 1.268, 2.102, -2.0159, 0.5678, -4.1475, -2.286, 1.2468, 2.916, 3.7433, -3.5078, 6.2645, 5.1466, 3.3947, 11.0482, -12.6391,
389 -1.4558, 2.635, 2.5261, -0.4261, 7.9067, 7.3761, 10.505, 2.1413, -4.1382, -2.8818, 6.9021, 5.4317, 4.9534, 4.5363, -2.8372, -3.4508, -1.0165, -1.6706, -9.0235, -28.0132,
390 5.4483, 7.0338, 8.8713, 13.9617, 19.3432, 16.574, 12.5536, 13.7232, 15.1487, 4.1979, -4.0767, -8.9863, -10.9482, -13.1722, -11.3412, -7.4945, -4.4916, -3.5707, -22.8865, -29.8879,
391 12.0309, 14.2862, 17.8716, 18.2606, 13.3426, 8.9006, 1.3455, -9.418, -11.1012, -15.4444, -17.4768, -17.9985, -12.4515, -5.2431, 8.8612, 5.5913, 6.3114, -1.1018, 0.2013, -16.7679,
392 16.8689, 16.8256, 18.5632, 14.4683, 8.2457, 2.7262, 1.7491, 0.4673, -4.4682, -6.2835, -4.328, 2.1966, -4.4856, -9.6447, -7.5807, 2.0175, -9.6747, -9.7002, -3.665, -24.2978,
393 10.3443, 9.5624, 9.5859, 9.3945, 7.7097, 5.9502, 5.4955, 7.0578, 3.897, 1.8002, 2.9026, 0.83, -0.8072, -3.4283, -8.7861, -9.4681, -7.6897, -10.0581, -8.5829, -25.7097,
394 8.4589, 13.906, 18.357, 21.8577, 20.8363, 13.5168, 7.0018, 3.5585, 0.2984, -4.3657, -7.6435, -5.4526, -6.4991, -0.0823, -10.9834, -14.489, -9.9873, -4.5713, -15.9935, -27.7237,
395 -2.7942, -1.0695, -0.1214, 2.5877, 1.5098, 1.0893, 1.5717, 3.2131, 6.2989, 10.9335, 9.8682, 8.6743, 4.8838, 1.8707, -1.0579, -3.7852, -5.7917, -7.6708, -7.9578, -22.2525,
396 25.1784, 20.8581, 17.0052, 12.9557, 7.7424, 3.9815, 6.0072, 3.4663, -1.9041, -8.1079, -11.4077, -11.8642, -8.7727, 4.7601, 2.8284, -7.3135, -15.0133, -13.8178, -7.5999, -18.9821,
397 13.6088, 10.9215, 11.1892, 11.7633, 13.2294, 6.3264, 1.9267, -1.7303, -3.3278, -4.4979, -7.2855, -3.9683, 5.3311, -1.6679, -8.5378, -6.9275, 2.8396, -8.2151, -5.8206, -25.1573,
398 20.0774, 19.5893, 17.125, 15.9021, 10.2327, 5.8537, 4.1551, 8.7468, 6.2824, -1.6643, -0.8142, -5.7458, -5.8553, -6.7971, -4.8129, 0.1863, -14.4064, -22.1846, -19.7857, -26.0848,
399 1.9579, 3.5459, 5.6047, 9.8227, 17.151, 16.9383, 8.2371, 2.3829, -0.9137, -2.6491, -2.1733, 3.0262, 6.5399, -2.8952, -2.9389, -0.9532, -9.2242, -11.9604, -12.7131, -28.7857,
400 2.7147, 5.0851, 5.901, 8.2492, 9.0379, 12.5344, 15.7585, 7.9343, 2.8699, -7.6515, -7.5935, -7.0792, -7.0329, -0.2973, -4.1153, 0.8146, 0.8342, -8.0293, -6.0641, -23.8708,
401 -1.8671, 0.2021, 1.1744, 3.3514, 3.8114, 4.6535, 6.4708, 5.5903, 4.6873, 6.12, 7.1503, 10.882, 10.1467, 5.0564, -4.0471, -7.0223, -5.8028, -7.0328, -13.2761, -30.2485,
402 14.4582, 17.2732, 16.2772, 7.1332, 0.6525, -4.4947, -7.791, -9.8395, -12.5801, -10.7856, -8.8712, -4.2717, 7.2719, 0.7198, 1.5521, 3.5804, -2.9845, 0.1717, 6.3548, -13.8266,
403 28.6852, 25.8888, 20.5479, 11.1546, 4.6177, 1.8681, 3.9247, 1.295, -2.924, 4.305, 4.3461, -5.4196, -7.8904, -10.2821, -8.2802, -13.991, -11.2895, -12.538, -13.7725, -20.2458,
404 6.9489, 8.2782, 12.9177, 18.1269, 10.1196, 2.5932, -1.2838, -5.9588, -9.0612, -10.7381, -10.6395, -8.4104, -4.0818, 7.0965, 0.3344, 2.1418, 2.2817, -3.7137, 1.6102, -18.5618,
405 6.2919, 7.1483, 7.7499, 10.3266, 12.7585, 21.8234, 21.7899, 13.6697, 7.2737, 9.3185, 13.4418, -0.153, -6.4198, -9.4554, -7.4143, -12.4542, -21.2295, -24.5545, -24.4585, -25.4529,
406 3.2078, 1.1604, 2.382, 7.1676, 15.6309, 19.6735, 9.8897, 7.8474, 10.1305, 10.405, -1.822, -9.0708, -12.7476, -14.298, -11.7869, -3.2366, -4.1439, -6.6114, -0.0121, -23.7655,
407 4.9484, 5.9562, 10.0092, 16.2669, 12.926, 3.9525, 0.492, -2.9838, -4.7825, -5.0706, -3.0972, 4.4166, 5.1484, -3.0885, -2.2935, 1.8467, -6.6209, -8.5405, -3.2672, -26.218,
408 9.119, 11.7308, 15.3181, 20.5759, 15.7183, 7.69, 3.7341, -3.2723, -6.7161, -9.0437, -8.0703, -0.593, 6.4087, 3.5269, 3.0413, -8.4178, -14.7425, -12.7049, -6.9905, -26.3121,
409 1.4852, -0.6829, -1.569, -0.2848, 5.5052, 12.8631, 6.4129, 0.4626, -3.55, -5.4162, -3.9006, -1.4888, 7.5205, 5.649, 1.1393, 5.5204, -1.2344, -6.2194, -3.0728, -19.139,
410 11.9158, 15.3244, 18.2371, 17.8689, 12.9861, 8.5734, 2.6935, -0.462, -0.3115, 4.3187, 1.8359, -6.5328, -11.3944, -12.3343, -10.2127, -3.2123, -10.7404, -11.6243, -6.0915, -20.8377,
411 -1.1406, 4.4681, 1.0243, 1.7567, 0.8452, 1.0568, 1.7113, 1.4304, 8.2151, 0.5703, 1.2053, -5.7909, -4.3638, 0.9165, -4.5872, 3.4354, 6.9859, 3.9875, -3.5121, -18.2142,
412 18.8171, 22.5033, 16.7157, 10.3549, 3.9514, 1.6962, -0.6346, -5.9992, -6.8816, -7.3001, -7.9076, -4.3326, 4.9348, 4.6458, 0.9437, -3.5521, -9.364, -2.4386, -11.4118, -24.7409,
413 -0.9409, 0.5904, 2.2794, 4.9547, 5.8743, 8.7846, 11.0088, 11.1838, 11.6958, 14.1355, 8.9116, 2.5256, -1.8779, -5.6262, -5.5753, -9.1754, -9.0981, -12.4659, -11.4699, -25.7149,
414 0.4141, 2.8215, 2.0838, 3.1886, 4.2216, 1.7188, 4.6179, 2.9704, 1.6545, -2.846, -0.9511, 2.6537, -1.8008, 0.9825, 1.2384, 1.5282, -0.7271, -3.094, -0.809, -19.8659,
415 6.043, 4.6516, 4.3017, 7.7179, 6.7963, 6.291, 8.7476, 8.7592, 7.7014, 12.1586, 8.0227, -1.3414, -6.0075, -8.1097, -6.8511, -6.6141, -5.8068, -8.7086, -9.3302, -28.4218,
416 7.1395, 6.4611, 6.477, 6.5752, 5.736, 5.6174, 3.8338, -0.3402, -1.9803, -2.2319, -4.1316, -3.2411, -2.2252, 4.195, 1.9636, -1.7425, 0.5431, -3.5115, -6.8529, -22.2844,
417 17.8843, 21.4402, 20.6904, 15.9517, 9.7051, 2.5656, -1.5516, -7.4554, -8.8729, -10.2263, -8.6781, -5.1896, -0.7045, -6.768, -8.2898, -6.9326, 1.3954, -3.2208, -6.0504, -15.6928,
418 10.6767, 10.3544, 18.1231, 11.2879, 6.1413, -0.361, -2.4504, -5.1076, -4.9943, -4.9704, -2.3126, 5.9757, 0.9523, -4.2427, -2.5152, 4.9197, -8.3019, -9.0057, 0.3384, -24.5078,
419 9.9161, 11.8977, 18.2327, 24.4645, 22.2618, 14.5543, 11.0874, 11.6473, 16.7269, 16.7802, 10.9221, 4.3259, -12.8739, -20.0422, -22.5408, -24.1296, -20.9142, -22.6765, -24.3668, -25.2731,
420 9.4023, 7.3715, 11.9062, 12.512, 7.0268, 13.6459, 7.2747, 2.8388, 14.6515, 22.1573, 24.2647, 6.5863, -1.1334, -12.1075, -18.8356, -21.0343, -18.7149, -21.3705, -23.1378, -23.304,
421 6.1154, 6.8878, 8.0486, 2.083, 11.4555, 24.4875, 10.2548, 8.5452, 8.1934, -4.1865, 11.8854, 1.3485, 1.9895, -14.5678, -11.0286, -3.4615, 1.3428, -19.7548, -24.2069, -25.4313,
422 10.357, 12.8522, 17.3265, 22.8368, 16.6859, 10.9743, 8.2198, 6.8557, 9.3432, 12.2609, 5.1561, 1.541, 1.3448, -11.6896, -19.8579, -22.4891, -19.3409, -16.0157, -19.9891, -26.372,
423 -2.2958, -3.0198, 2.5524, 6.5326, 5.0549, 2.8939, 1.6085, 1.4431, -0.1701, -2.0055, 1.1867, -1.3016, -2.2987, 6.124, 3.0188, -0.9646, 2.6135, 4.0735, 0.2584, -25.3041,
424 3.3425, -4.9398, 1.7857, 0.981, 8.2974, 13.876, 7.3422, 4.3951, 4.0317, 8.9378, 9.1371, -1.7588, -9.1168, -12.4667, -12.0238, -9.0772, 4.3501, -0.6556, 4.4305, -20.8684,
425 2.6724, 2.4627, -2.5441, -3.3045, -4.2917, -1.4508, 1.5865, -1.0572, -2.1109, 1.487, -1.0006, 3.5002, 3.7107, 1.3794, -1.6261, 0.0378, 2.0162, 0.3261, 3.2452, -5.0385,
426 3.1268, 4.8784, 8.6218, 13.5865, 14.1019, 7.249, 1.4764, 0.4142, -1.444, -0.1256, 6.7242, 13.6333, 7.9001, 5.1808, -8.7618, -15.9427, -17.574, -13.2732, -3.9031, -25.8689,
427 8.7515, 17.2518, 23.5164, 15.769, 8.1574, 4.9814, 0.5026, -0.4621, -1.5217, 2.4458, 11.1982, 12.8925, 8.2107, -10.1894, -18.8969, -20.9839, -19.6436, -9.2705, -7.3159, -25.3934,
428 11.798, 12.1448, 14.6065, 20.2682, 20.5368, 14.0544, 8.9695, 7.1447, 9.3182, 10.2279, -1.3945, -9.863, -14.231, -14.26, -11.294, -5.3186, -14.6453, -16.0278, -14.7441, -27.2906,
429 8.3692, 9.6882, 12.8542, 17.3005, 21.134, 18.5917, 11.2777, 5.5517, 0.547, -2.3437, -2.3633, -0.2054, 0.7833, -4.4844, -5.7547, -6.4185, -15.2118, -20.989, -20.6002, -27.7265,
430 3.254, 3.5495, 5.6572, 11.4443, 18.6822, 14.2818, 7.9623, 5.8581, 7.6636, 11.238, 10.4719, -0.3434, -0.9127, 0.3323, -9.6682, -12.3368, -7.0303, -17.504, -22.5944, -30.0053,
431 10.5668, 4.7765, 4.8789, 5.9385, 13.1029, 20.5979, 14.5257, 8.6496, 2.4271, -1.164, 1.2029, 9.4957, -0.02, -12.573, -14.8513, -9.422, -4.4288, -12.9535, -14.372, -26.3782,
432 3.6092, 2.1429, -0.2581, 2.1516, 6.0252, 4.4742, 4.352, 2.9527, 3.6102, 2.6901, -0.0942, 2.2564, 1.3309, -0.5758, -1.109, 0.1191, -0.118, -0.1015, -5.5503, -27.9075,
433 8.4206, 12.653, 18.9633, 23.9855, 21.254, 9.7237, 1.5121, -0.7361, 0.7545, -1.5581, 2.4158, 9.9186, 6.7278, 3.6705, -12.4971, -19.8574, -23.2581, -23.72, -10.9203, -27.4525,
434 22.1951, 16.4633, 13.2055, 7.497, 2.228, -2.4528, 8.773, 10.687, 4.9929, 1.1178, -5.3802, -8.2471, -5.7256, -8.8078, -8.354, 1.5835, 1.5054, -11.6521, -13.9564, -25.6726,
435 -7.9053, -6.584, -6.0103, -4.8986, -4.2425, -4.7462, -6.7261, -8.5401, -8.6906, -8.8402, -5.6306, -0.7673, 8.6501, 5.08, 13.9798, 11.4953, 10.0314, 17.429, 14.9683, -8.0522,
436 11.9359, 8.4098, 2.8637, 0.1621, 4.2653, 2.699, 1.2433, -1.9101, -2.5608, -4.4372, -0.737, 5.0345, 2.4512, -1.2451, -4.6924, -2.0267, 0.3932, -0.7445, -1.8229, -19.2813,
437 -1.3202, 3.8184, 7.4609, 11.6391, 16.2849, 25.4929, 15.8707, 1.4126, 12.3759, 21.2527, 8.1587, -3.8943, -14.786, -10.693, -17.9239, -16.3824, -1.7644, -13.0054, -19.3451, -24.6522,
438 9.8443, 9.9627, 12.5201, 13.7261, 10.3992, 6.629, 2.9281, -0.7644, -3.9695, -5.3737, -8.3704, -7.5382, -1.7207, 5.7599, 1.941, -0.8146, 0.5436, -5.6632, -12.2155, -27.8236,
439 6.429, 4.7082, 3.9317, 3.1702, -1.6353, -3.6078, -6.315, -9.1986, -10.3233, -9.8065, -5.8063, -1.3404, -0.7673, -2.2448, -1.2797, 7.1795, 3.2561, 15.5273, 14.8629, -6.7401,
440 23.9506, 22.1558, 17.7456, 14.435, 8.3329, 3.1023, 4.3134, 8.6024, 3.8015, -3.9642, -10.78, -9.6229, -10.886, -10.6376, -8.0083, 4.7524, -6.4851, -13.7226, -12.4871, -24.598,
441 9.576, 11.4366, 12.9012, 14.4846, 16.8425, 19.5473, 19.7042, 15.2736, 12.0272, 11.0446, 7.4677, 1.1314, -9.0848, -18.3215, -23.8214, -23.171, -19.9932, -10.2715, -17.3599, -29.4137,
442 -3.4431, -3.1613, -1.9102, -0.6935, 1.387, 1.2966, -1.0892, -2.4642, -3.0407, -4.4927, -5.4209, -4.2773, -0.5358, 0.409, 1.2794, 5.899, 14.3402, 3.7638, 11.1512, -8.9972,
443 15.2464, 18.8014, 25.3166, 19.5775, 11.0313, 6.5896, 5.6381, 2.9552, 5.1185, 13.254, 13.6736, 8.5584, -8.3365, -15.9401, -20.3756, -21.2859, -21.2275, -19.3217, -15.1325, -24.1407,
444 3.1035, 6.1792, 5.0462, 3.5926, 7.0741, 6.4046, 9.9419, 7.7684, 4.2113, 3.6277, 6.5092, 5.59, -1.7178, -6.4492, -7.8871, -6.9582, -5.1379, -8.3058, -10.5436, -22.049,
445 -0.728, 0.5704, 3.9717, 5.9469, 6.078, 4.077, 1.2426, -1.3458, -3.2314, -4.6819, -6.2378, -5.0198, -1.208, 10.5808, 2.6382, 3.7712, 3.8446, -1.7555, -1.1558, -17.3572,
446 5.3326, 5.4267, 9.824, 16.2001, 13.6887, 6.951, 1.1917, -1.6723, -2.5788, -2.7648, 2.6931, 5.4843, -4.2095, -9.6143, -6.2919, 3.6211, -3.8754, -6.5263, -5.2823, -27.5977,
447 2.5771, 3.4727, 5.4467, 8.8349, 9.887, 12.1341, 12.0826, 7.7444, 4.5255, 0.7889, -2.0382, -4.7604, -5.7542, -4.6241, -2.4718, -4.0958, -6.2797, -4.6267, -9.5398, -23.3031,
448 14.7846, 16.0256, 18.44, 18.7731, 12.4129, 9.2087, 4.9463, 5.2837, 7.9434, 9.1983, 5.6775, 1.0431, -7.1678, -12.3799, -13.9635, -9.429, -13.5075, -18.2553, -21.2672, -27.767,
449 14.086, 12.616, 17.7362, 22.848, 13.2766, 7.4189, 5.7487, 1.8704, 2.3287, 6.7312, 16.704, 13.9396, 0.1199, -14.272, -18.2397, -22.3862, -24.8172, -19.6941, -10.4326, -25.5823,
450 1.2702, -1.274, -3.71, -0.5628, -4.5219, -4.458, -7.71, -8.3547, -7.0524, -3.3805, -3.0927, 1.978, 6.7217, 16.8392, 12.2288, 6.1018, 4.3647, 3.7046, 7.0648, -16.1569,
451 -1.5691, -0.6625, 0.8145, 2.7114, 4.5683, 6.3808, 5.3169, 3.3697, 3.7409, -1.1329, 1.3502, 1.4333, 7.1092, 8.0819, 7.414, -0.3489, -3.5222, -5.2023, -8.9373, -30.9159,
452 8.8791, 11.5486, 17.4354, 21.959, 18.7721, 13.0614, 12.3597, 15.8383, 7.9901, -4.7504, -11.1404, -17.0402, -20.1418, -20.5768, -16.8543, -10.271, 3.5082, 1.5897, -6.0317, -26.1349,
453 1.4924, 2.3041, 3.6995, 3.9735, 2.9478, 1.4182, -0.1153, -0.7081, -1.6935, -4.7155, -3.8966, -1.0552, 4.3924, 3.5582, 4.7903, 3.4573, 4.4498, 3.7588, -4.9783, -23.08,
454 19.7104, 23.5312, 26.4663, 21.1276, 13.4352, 11.0142, 11.5216, 12.6431, 11.662, 1.8352, -2.6313, -2.1531, -10.9044, -16.4683, -19.1821, -21.4207, -21.6631, -20.6795, -14.544, -23.3003,
455 -7.3825, -5.1236, -2.0803, -0.3985, -2.1515, -3.3191, -2.5398, -3.6553, -4.6673, 0.245, -1.138, 0.4163, -5.0235, -3.1123, 1.6781, 0.5456, 9.2542, 19.9831, 16.2303, -7.7611,
456 2.5108, 2.1845, 2.6268, 3.2213, 4.7277, 4.9151, 4.4068, 2.5115, -1.2667, -1.047, -0.584, 3.198, 11.3786, 3.1343, -1.5396, -0.779, -4.2909, -5.9553, -4.0558, -25.2973,
457 1.3099, 3.8149, 5.9305, 6.029, 6.2561, 6.5634, 6.5483, 2.2558, 2.8164, 5.8479, 6.7553, 3.8567, 2.7371, -0.0626, -3.8527, -5.1436, -5.5124, -7.3236, -9.2045, -29.6219,
458 6.9414, 7.8896, 11.9174, 19.4391, 22.8159, 17.513, 12.8967, 11.7403, 13.3801, 0.6255, -8.6365, -13.1338, -15.0777, -14.1269, -8.2615, -12.9862, -16.1846, -10.2908, -1.8314, -24.6297,
459 13.6675, 18.7539, 23.7644, 23.5665, 14.5584, 8.2788, 5.9566, 3.8037, 5.8231, 9.3954, 3.8096, -3.7071, -3.0809, -2.7965, -15.391, -22.2338, -22.7083, -19.7578, -17.2327, -24.4698,
460 6.8878, 4.6215, 4.083, 1.7534, 6.3161, 9.303, 9.1793, 1.8539, -3.8953, -6.2684, -7.283, -6.1167, 0.8013, 5.3564, -0.9241, -2.6976, 1.7576, -1.1627, -4.9125, -18.6528,
461 11.5366, 9.1379, 9.1023, 13.3107, 15.2931, 8.4262, 2.0019, -1.8545, -5.347, -10.498, -13.165, -8.7617, -2.8037, 6.5213, -2.9746, -1.1653, 2.895, -3.9002, -0.4074, -27.3478,
462 8.1149, 5.2054, 4.7193, 10.9119, 14.2393, 9.7159, 2.7743, 0.0628, -0.9042, 2.5046, 6.2675, 4.5297, -1.7121, -2.7212, -6.4591, -8.2032, -12.1525, -9.796, -4.5542, -22.5432,
463 10.427, 10.1489, 7.8411, 6.9092, 5.2675, 3.1553, 3.186, 0.3063, 0.4719, -0.871, -0.6868, -1.1505, -4.6137, -2.9984, -2.9661, -2.854, -3.0302, -2.2057, -5.9823, -20.3547,
464 16.5991, 18.818, 20.4139, 16.0812, 15.2582, 13.6, 9.773, 4.82, 7.267, 0.5444, -5.1929, -8.9752, -12.2178, -15.2451, -9.0857, -9.6324, -11.9042, -7.0554, -15.8485, -28.0175,
465 6.9984, 7.5807, 9.7172, 14.2935, 21.1422, 18.8026, 13.0729, 13.6068, 15.6061, 5.7873, -4.4176, -10.663, -14.9625, -15.276, -12.1485, -4.9859, -13.8661, -15.0801, -8.9505, -26.2577,
466 4.8529, 5.9107, 5.9519, 3.1046, -0.7986, -3.8, -3.3218, -6.5949, -9.5964, -7.6925, -7.0336, -3.5031, 2.4411, -0.1901, 9.1699, 13.0532, 0.4243, 10.947, 3.0406, -16.3654,
467 2.3975, 0.4924, 3.8005, 6.146, 0.9043, 2.1381, -0.0106, 2.9239, -11.7677, -3.8359, -3.4925, 0.8716, 3.474, -2.8287, -3.8786, 1.2858, 6.8931, -2.1701, 3.3894, -6.7326,
468 -3.5428, -1.39, 0.9285, 2.4806, 2.9675, 0.798, 0.9612, 0.2854, -2.0562, -1.3222, -1.9025, -0.0059, 8.6474, 4.6327, 1.6964, 0.3984, 0.9512, 1.7069, 1.4812, -17.7159,
469 17.4798, 18.9995, 21.9699, 20.6967, 14.4015, 9.2408, 9.2963, 4.6834, -0.5765, -2.0466, -4.687, -8.134, -10.84, -6.9387, -4.9129, -2.3346, -9.5282, -16.6374, -22.862, -27.27,
470 30.2051, 29.0816, 22.701, 15.9702, 13.2347, 12.3034, 7.9736, 1.711, -2.905, -5.822, -9.0457, -11.4933, -10.9824, -10.7128, -9.7198, -11.447, -12.1083, -14.372, -14.3489, -20.2236,
471 4.3667, 5.6948, 7.6382, 9.1345, 7.9965, 5.9946, 4.8983, 4.5838, 1.3099, -1.1182, -2.4032, -2.5986, -0.3123, -3.8248, -3.3874, -4.6492, -2.5381, -4.101, -4.4278, -22.2567,
472 13.3799, 15.9919, 18.2801, 18.5738, 14.5051, 15.061, 12.6361, 1.8684, -4.4789, -7.5763, -7.3687, -5.7285, -8.7693, -10.097, -1.0795, 0.7696, -6.5956, -14.5402, -16.2583, -28.5735,
473 1.2989, -0.2985, -0.1264, 2.2528, 6.1919, 9.085, 11.5888, 9.6084, 6.4565, 4.6999, 3.8291, -3.1433, -2.0178, -5.4377, -3.5892, -2.4088, -3.4525, -6.5279, -6.8848, -21.1245,
474 6.699, 6.9952, 6.99, 10.6461, 18.176, 23.4925, 20.7738, 19.3068, 14.5258, 4.1679, -5.0313, -10.5967, -15.7569, -18.7535, -19.3572, -18.4953, -9.1098, -8.3084, -3.508, -22.8561,
475 0.3614, -3.0919, -2.2049, 0.2924, 3.5194, 12.3203, 10.5339, 6.5081, 2.9888, 3.7587, 9.6208, 6.5139, -3.3458, -8.5883, -8.7468, -4.73, 1.1707, -5.5824, -3.0982, -18.2001,
476 3.6833, 5.1669, 7.0034, 5.1138, 6.2451, 5.1324, 2.9024, -0.2756, 0.6913, 0.7688, 2.7471, -3.0081, -4.2841, -1.679, 0.6913, -2.2915, -1.1739, -2.5591, -2.7007, -22.1738,
477 11.4726, 11.0663, 10.8078, 10.4446, 10.6033, 12.3965, 13.0646, 7.6243, 1.8855, -2.1733, -3.8981, -0.7658, 2.9887, -2.4982, -10.215, -14.2533, -12.1696, -5.433, -8.34, -32.608,
478 -6.7179, -4.6131, -3.1636, 0.0876, 0.6888, 1.0614, 0.5541, -3.503, -3.5922, -2.2597, -0.8136, 6.0096, 11.8925, 2.9252, -1.145, -0.4619, -0.0294, 2.9522, 6.4894, -6.3616,
479 5.3482, 3.731, 5.0957, 3.1029, 1.678, 3.1184, 0.5161, -3.5018, -4.5034, -6.3519, -7.8639, -5.658, -5.1767, -2.3928, 0.1325, 3.3098, 7.821, 11.9881, 4.419, -14.8118,
480 8.2697, 5.8835, 6.0215, 10.4427, 12.0342, 7.5709, 3.5443, -1.0166, -4.1313, -6.5619, -5.066, -0.8575, 7.1102, -0.6052, -4.0956, 0.6756, 0.8926, -4.2551, -6.4788, -29.3772,
481 2.0192, 3.9566, 4.9448, 8.089, 14.6263, 15.3545, 12.2775, 10.3302, 7.2993, 12.5826, 7.7803, -2.3944, -7.4949, -10.2984, -9.7837, -7.3581, -7.2692, -6.1954, -16.7366, -31.7295,
482 12.8428, 15.92, 16.2497, 11.854, 3.8, -1.0057, -2.5059, -6.532, -8.39, -9.9165, -9.6596, -6.0113, 1.0447, 13.8469, 7.3566, -4.1906, -11.0801, -8.0052, 3.2361, -18.8537,
483 17.202, 18.636, 23.3502, 20.5862, 15.5823, 12.7495, 6.4445, -6.6661, -9.171, -15.5663, -21.8272, -18.4838, -16.7082, -14.2582, 2.8891, 3.6115, -0.4823, -0.0577, 2.5754, -20.4057,
484 11.2405, 16.2045, 19.5245, 19.0279, 10.816, 4.2621, 0.0074, -4.8018, -7.7494, -9.5065, -10.8518, -10.4718, -6.2617, 1.5892, 9.5055, 4.0459, -4.23, -9.8946, -9.4119, -23.0441,
485 21.5981, 16.6548, 9.2131, 4.2901, -2.7752, -6.0814, -5.7172, -6.8518, -5.3057, -3.6255, 1.9348, 7.8994, -1.326, -8.0365, -10.6481, -6.5275, -3.0468, 3.5257, 5.6627, -10.8371,
486 2.3529, 1.9098, 1.1705, -1.0129, 0.2322, -2.1724, -2.7849, -0.3004, 1.1108, 2.9625, 0.3261, -2.0946, 1.0272, 3.4696, 1.9753, 1.1513, 2.4885, 2.1442, 0.7739, -14.7298,
487 -1.7003, -2.4848, -2.4346, 4.7038, 24.9669, 27.0962, 7.9463, 4.7152, 0.192, -0.8991, -0.8489, 9.9068, -2.48, -9.4907, -11.9321, -1.857, -6.2441, -11.0862, -11.2891, -16.7804,
488 14.9206, 17.922, 23.4494, 28.4771, 23.9338, 22.5858, 21.7793, 9.3991, -3.6346, -10.2702, -14.3748, -16.3264, -19.3026, -18.4585, -17.3134, -12.271, -10.593, -10.9994, -7.9141, -21.0092,
489 10.8472, 9.9985, 8.1012, 5.6373, 0.7372, 0.0745, -0.8638, -1.7933, -2.9142, -3.015, -2.2427, -0.7782, -2.5201, -6.2197, -5.1933, 0.2777, -5.0155, 0.2927, 4.1108, -9.5213,
490 11.2774, 17.5024, 20.7927, 14.9512, 8.8893, 5.3831, 1.1126, -0.5407, -1.8226, -0.7548, 3.8991, 14.1917, 11.4189, -2.2812, -13.1711, -17.2396, -15.8893, -13.7806, -15.9376, -28.0009,
491 -1.8142, -1.3801, -0.2831, 1.382, 1.7722, 1.4623, -1.2023, -3.2113, -5.2345, -6.7523, -4.9565, -2.8637, 4.0779, -2.6764, 0.8821, 14.4958, 8.5614, 4.5439, 7.906, -14.7091,
492 10.5077, 13.8832, 19.5676, 20.853, 17.7078, 12.7109, 11.5269, 8.0218, 2.2318, -5.7244, -10.1683, -12.812, -14.923, -10.7023, -2.0109, -8.3963, -10.2008, -5.4032, -10.7793, -25.8902,
493 -0.2509, 1.3469, 0.6421, 2.6377, 6.0659, 4.3721, 5.352, 3.9824, -1.7069, -2.0895, -5.2191, -1.537, -3.3737, 1.3384, 4.0383, 10.2321, 1.6548, -3.2413, -5.147, -19.0973,
494 6.4953, 9.3365, 14.1057, 20.6271, 16.1168, 7.358, 1.4929, -2.7587, -4.0681, -3.9748, 1.3672, 8.9105, -0.92, -5.3133, 0.3345, -6.1299, -12.7503, -9.3229, -13.4612, -27.4454,
495 0.6201, 2.4328, 4.976, 9.2545, 15.4025, 12.2971, 5.768, 5.0077, 4.0499, 4.2155, 9.706, 7.7493, 5.8274, 0.3852, -5.9984, -11.5236, -7.305, -10.3504, -20.7971, -31.7176,
496 -3.7294, -1.4413, -3.7524, -4.5904, -3.2743, 0.736, -3.2763, -4.8007, -0.6213, 4.903, 10.4614, 11.0474, 17.3494, -0.7763, 5.4732, 0.7769, 1.2498, -0.7639, -2.107, -22.8638,
497 6.7163, 9.2255, 12.3187, 17.6924, 17.6404, 11.894, 7.0991, 4.2645, 4.3021, 9.9874, 5.8382, -3.4579, -6.9519, -4.809, -2.1538, -14.0697, -18.7474, -17.332, -11.2745, -28.1824,
498 14.7156, 19.4663, 14.7897, 6.5422, 1.1728, -2.3524, -4.9286, -7.8168, -8.8525, -9.4747, -10.7274, -8.5129, -4.4565, 7.8312, 0.0283, 4.0451, 1.6338, -1.3894, 4.4306, -16.1441,
499 19.068, 22.0875, 24.611, 22.0341, 17.3706, 15.8785, 14.1658, 11.9508, 4.4308, -1.1373, -6.4223, -10.3244, -11.8572, -13.5064, -14.4779, -15.1004, -15.5216, -16.8251, -22.0101, -24.4145,
500 9.0336, 19.0176, 24.4867, 24.6758, 18.9461, 11.7838, 7.6427, 4.775, 1.2864, 0.4513, 1.8155, -1.2592, -9.2086, -14.2929, -15.7555, -13.6408, -7.7748, -14.5157, -21.5902, -25.877,
501 1.4827, 0.2805, -0.381, 1.4732, 8.234, 8.1707, 10.06, 8.3087, 4.1212, 2.7249, 3.5821, 7.9718, 3.7426, -2.6511, -5.3909, -4.4519, -4.5293, -6.7232, -8.9602, -27.0648,
502 10.5705, 10.67, 11.7791, 12.1925, 10.0236, 6.6964, 5.1163, 2.6148, 4.7648, 2.5521, -3.9125, -7.4628, -9.6721, -9.3307, -9.9466, -8.0895, 1.1968, -3.82, -3.4846, -22.458,
503 7.5905, 8.3863, 11.5587, 16.2565, 22.0088, 23.0422, 17.8049, 13.1018, 17.1694, 13.5769, -0.2381, -1.8062, 1.5806, -10.3901, -20.8106, -24.7914, -25.0524, -24.3552, -19.3769, -25.2554,
504 7.3275, 11.616, 16.6781, 15.5131, 8.1538, 4.8147, -1.7134, -2.9599, -6.5688, -7.0695, -0.9248, 5.3367, -4.508, -7.1758, -3.427, -3.5021, -8.7907, -5.2842, 1.7479, -19.2635,
505 8.6994, 13.7488, 20.2706, 15.6056, 8.03, 2.7906, -2.4915, -6.3762, -9.0577, -10.4892, -11.7811, -10.7422, -7.7494, -0.3422, 10.0858, 3.8928, 3.968, -2.0796, -2.0561, -23.9265,
506 -1.8066, -1.3696, 1.0493, 1.3711, 1.9691, 1.1999, -1.8646, -1.9643, -1.7749, -1.339, -3.3717, 3.1526, 1.2109, 0.799, 0.4966, 2.5531, 3.3704, 2.3429, 4.9229, -10.9469,
507 4.0689, 7.4175, 12.694, 18.06, 16.5869, 9.3259, 4.5282, 2.8636, 1.6428, 4.7328, 12.4121, 9.1212, 6.2302, 0.0152, -12.5596, -17.7355, -18.6999, -12.797, -17.6503, -30.2571,
508 0.8292, 2.6495, 1.8804, 4.1439, 5.6667, 5.7021, 4.9475, 6.8868, 6.795, 8.0289, 10.5666, 8.6874, 1.8534, -2.2297, -6.3646, -6.79, -8.1505, -9.3082, -10.0423, -25.7522,
509 7.1022, 3.8236, 1.8946, 4.423, 4.784, 4.6315, 5.8219, 2.7914, 1.6501, 0.4344, 2.2205, 4.0071, 0.0326, -2.6285, -2.5436, -3.5874, -3.6688, -4.2155, -7.0087, -19.9643,
510 0.1242, 12.2019, 4.3084, 4.2478, 1.9093, 0.6288, 1.1102, 1.5269, 2.2918, 5.1362, 2.1955, -5.7687, 1.1936, -1.4469, 0.2971, -4.6605, 0.8522, 1.2017, -3.9848, -23.3647,
511 -5.1159, -1.2775, 2.526, 4.1265, 3.4097, -1.7194, -0.8844, -1.4795, -5.4958, -6.8537, -1.5398, 0.9661, -2.324, -4.8943, 8.2925, 3.4432, -1.7853, 6.31, 13.441, -9.1454,
512 3.9898, 4.3777, 4.2357, 3.0453, 3.7447, 2.5019, 1.1011, -0.478, -2.4003, -0.6497, 0.8291, 0.2117, 0.0985, -0.2133, 0.383, -1.785, -1.0322, -2.1328, -1.6069, -14.2203,
513 11.3622, 14.7416, 16.8859, 15.0883, 9.9488, 8.7692, 4.3995, -2.0242, -2.6878, -1.0092, 0.7764, -2.2298, -4.084, -8.1165, -6.2525, -5.2064, -7.0092, -6.7164, -9.2528, -27.3833,
514 3.6579, 2.8996, 4.0461, 8.3701, 17.0082, 23.3625, 16.2578, 7.1955, 17.3887, 6.3999, -4.2883, -9.9015, -12.7556, -12.3388, -5.468, -10.3674, -10.9476, -10.1432, -6.0175, -24.3585,
515 7.5312, 5.8939, 4.3265, 4.0014, 2.9087, 1.6542, 2.9601, 3.9087, 1.37, -2.9778, -0.8059, -0.8752, -0.992, -0.8125, -0.8336, -0.0306, -2.6451, -2.7999, -4.2986, -17.4834,
516 15.3876, 20.0855, 22.6771, 20.6277, 15.1509, 8.8202, 3.6289, -2.1904, -8.5688, -13.1818, -15.2549, -15.0083, -12.7233, -8.7307, 0.5974, 4.3829, -2.277, -0.0304, -7.8902, -25.5026,
517 23.6589, 23.2539, 20.352, 15.1761, 11.4144, 5.8059, 5.4712, 1.316, 0.0827, -2.4308, -7.0613, -6.1765, -1.8534, 5.6004, -1.4387, -15.4564, -17.387, -18.868, -17.3832, -24.0763,
518 11.6709, 14.1123, 21.1753, 25.8068, 20.7082, 14.063, 14.1588, 17.922, 14.6153, 4.8179, 3.3194, 0.469, -11.4997, -19.1991, -21.5666, -21.4213, -21.1902, -22.3547, -22.1566, -23.4508,
519 4.6799, 3.0606, 1.6539, 6.2007, -2.0201, 3.0954, 0.5569, 3.2707, 1.3312, 0.0725, 1.8286, -5.9667, 2.657, -0.0978, -1.2174, -2.2597, 0.2234, 1.4765, -4.2077, -14.3379,
520 9.3104, 11.8578, 14.9832, 13.1906, 8.5578, 4.2616, -0.4942, -3.0677, -3.2171, -5.1322, -1.7298, 6.6384, -0.8475, -8.0712, -9.5863, -5.8386, 2.661, -8.3104, -6.0285, -19.1373,
521 2.2896, 3.8587, 4.9224, 8.6357, 13.9236, 17.8222, 15.7427, 11.5211, 7.5272, 9.1679, 9.7247, 5.7451, 0.5275, 0.3504, -6.2281, -12.9212, -14.0843, -20.5964, -26.6432, -31.2855,
522 18.9039, 18.0327, 13.6297, 9.7561, 7.4319, 5.3744, 2.9646, 1.7415, 0.6716, 0.6859, 2.7446, 0.5342, -4.3187, -6.1877, -6.9311, -9.8734, -11.9041, -9.1281, -8.9591, -25.169,
523 6.4513, 6.7843, 9.4438, 12.9549, 16.4801, 14.9093, 8.2954, 1.6877, -2.5193, -4.4922, -6.7348, -6.9853, -4.6783, 0.7181, 1.0483, -5.1128, -1.1161, -7.5305, -12.398, -27.2058
524};
525 /* /home/david/codec2-dev/src/codebook/train_120_2.txt */
526static const float codes1[] = {
527 -1.2668, -1.2477, -0.0681, 3.8419, -0.0693, -1.7919, -1.5943, 0.8402, 0.155, -3.1526, -3.0204, 0.7337, -0.2603, 1.659, 0.023, 5.5893, -2.4959, 1.9604, -0.6348, 0.7999,
528 2.6673, 1.4923, 1.1408, -0.7478, -1.0755, -1.3421, -0.4884, 0.2535, 0.2951, 1.5088, 1.9447, -2.662, 2.3751, 1.5298, 4.1357, -6.563, -2.1766, -2.7535, -0.7706, 1.2362,
529 -0.6415, -0.4348, -1.2178, -0.987, -1.1057, -2.1421, -2.3594, -0.4977, -4.1484, -4.712, 5.5425, 3.0695, 3.661, 2.9729, 2.4379, -1.6136, -1.3052, 2.1342, 1.9164, -0.5692,
530 1.593, -1.1175, -1.2476, 1.6203, 2.5315, 2.3427, -0.5223, -3.1063, -2.1739, -1.4774, -2.6108, -3.5842, -0.3828, -0.1511, 0.8929, 2.5717, -1.7657, 1.8954, 6.0193, -1.3272,
531 -0.2102, -0.3681, -1.2724, -1.152, -0.3715, -0.5633, -2.5238, -1.768, 4.7356, 5.6452, 0.862, 0.875, -0.8932, -1.5918, -1.4047, -0.072, -0.608, -0.7876, 1.3972, 0.0717,
532 5.1178, -1.5391, -4.2881, -1.9745, 1.3515, 2.4014, 0.9329, 3.4647, -2.4062, -0.4224, 2.8708, -1.6053, -3.1492, -2.6783, -2.6937, -4.4645, 1.8599, -0.5456, 3.891, 3.877,
533 -1.7119, -1.0101, -0.5002, -1.7849, -0.4884, 0.2279, -0.8335, -1.0083, -1.2819, 0.1129, -1.3674, -1.3338, 0.929, 3.0765, 2.6339, 3.5627, -2.2713, 0.6565, -1.2099, 3.6022,
534 -1.5938, -1.3264, 0.9856, 2.8765, 2.37, 1.2528, 1.2586, -1.2453, -1.3974, -1.4988, -1.6309, -1.2183, -0.1625, -0.869, 0.003, -2.0081, 1.358, 2.9585, 3.3396, -3.452,
535 -1.368, -0.6304, -2.5755, -1.2397, 4.9487, 2.7251, 1.4675, -0.1832, -0.3932, 1.4723, 1.741, 0.6216, -1.0849, -0.7112, -0.3751, -1.7539, 0.1222, 1.9858, -0.5248, -4.2444,
536 -1.2786, -0.2384, 0.6718, 2.9763, -1.6959, 6.4607, -3.9459, -2.056, -2.7306, -0.2583, 0.0389, -3.6271, -4.0721, 0.826, 0.8112, 2.8769, 2.24, 0.5444, 0.3571, 2.0995,
537 2.5196, 2.3359, 1.662, 0.625, -1.0528, -0.9133, 1.8668, 1.2853, 1.4368, 1.4676, 1.1301, 1.3664, 1.1076, -3.2853, -0.453, 0.4467, -4.7302, -3.8149, -3.9866, 0.9865,
538 0.1738, 1.294, 1.3514, -0.3684, -0.7078, -0.2329, 1.3467, -1.0678, -0.0262, 0.2448, -0.8418, -0.391, 2.7415, 2.9948, -4.5965, -0.1192, 0.2496, 0.4684, 0.0669, -2.5805,
539 0.2482, -1.3236, -1.481, 0.9433, 3.4287, 2.2233, 8.9344, -1.1138, 0.4585, -3.747, 3.0416, -2.7394, 2.288, 1.6598, -3.6439, 0.0633, -2.7363, -1.2617, -3.1924, -2.05,
540 1.4672, -1.3248, -0.5511, 1.4512, -0.471, -1.2381, 2.9453, -2.3244, 2.3249, -2.1969, 0.9414, -1.9926, 0.5254, 0.0792, -3.2076, -2.414, 3.5291, 3.5738, -0.0613, -1.0556,
541 1.556, 0.0091, 0.077, 2.8542, -1.4594, -2.0102, 0.544, 2.8119, -0.2925, -0.7111, 0.9589, -1.6923, -1.8606, 1.104, -1.6733, -0.0895, 3.6894, 2.7628, -6.9922, 0.4138,
542 -1.5539, 0.682, 1.4458, 0.4297, -0.4115, -1.3266, 0.5024, -0.6975, -0.382, 1.284, 0.9597, -1.0561, 2.2198, 0.1292, 1.4343, 3.0313, -3.9845, 0.6776, 0.338, -3.7217,
543 -2.0283, -1.5216, 1.0103, 4.8788, 3.7028, 4.4, -0.3076, 2.4853, 2.2296, -1.5213, 0.436, -5.9903, -2.6578, -2.3985, -2.0127, 1.3737, -3.795, 2.3105, -0.2099, -0.3839,
544 -1.7339, -0.9861, -0.2078, -1.2579, 2.5808, -0.9255, 3.2388, 1.0999, 3.6754, 4.6424, 1.9111, 1.4716, 2.7531, -0.2725, -0.3573, -0.5392, -4.2109, -6.4662, -2.3713, -2.0442,
545 0.7177, 1.4094, 0.7205, 6.8683, 1.7836, 7.1562, -2.9368, 3.4036, -0.6064, 2.3377, 2.8714, -7.0408, -9.7129, 4.1278, -3.4444, -5.9919, 5.5073, -0.8996, -7.5142, 1.2434,
546 0.8042, 1.5886, 0.8754, -0.4378, 0.2336, 0.0424, -0.1245, 0.0847, 0.6402, 2.6508, 1.6375, -3.2393, -2.2823, -2.1435, -1.5628, 0.4271, 2.2571, 2.5048, -1.5933, -2.3629,
547 0.6292, 1.1956, 0.8357, -0.8634, -0.1796, 1.8589, 0.694, 2.8309, 2.5569, -0.4253, 0.2913, 0.7772, 1.418, 3.421, -1.9468, 4.2236, -7.3361, -3.7802, -3.598, -2.6029,
548 1.9034, -0.7126, -2.3343, 0.2344, 3.6545, 3.9405, 3.0203, 0.1937, -1.1906, -1.9012, -0.6667, -1.259, -1.1021, -2.665, 0.14, -1.4183, -1.2342, 0.0547, 0.1519, 1.1906,
549 -3.6125, -2.2485, -1.082, -1.9912, -1.1521, -2.2527, -2.5383, 0.932, 1.1572, 2.023, 1.6579, 1.3763, 6.4432, 2.1652, -2.0259, 1.9724, 3.2824, -0.4615, -1.1909, -2.4539,
550 -1.153, -2.179, -0.7355, -2.0941, 0.6246, 1.7502, -3.3266, -3.4374, -2.6486, -2.2938, 0.9286, 1.3396, -2.1323, 0.2739, 1.2664, 4.4111, 1.3864, 3.905, 2.8286, 1.2861,
551 -1.9752, 0.7423, 2.4137, 1.8854, -1.1393, -2.5802, -2.9355, -3.674, -1.8244, 0.3099, 6.1403, 4.6215, -2.0636, -3.7172, -0.94, 1.424, -0.3669, 2.0205, 0.6217, 1.0369,
552 -0.1561, 3.9621, -1.3649, 0.2912, 3.5366, 0.8537, -0.9376, -3.7333, -6.5447, -1.2107, 3.3183, 2.5758, 1.9693, -4.869, 0.6212, 0.0985, 1.5746, 0.2433, -2.6173, 2.389,
553 0.6849, -1.1521, -2.0382, -0.8953, 0.8771, 1.1996, -0.9704, -1.3679, -1.146, 0.0582, 0.2636, -1.9785, 0.5235, 1.6427, 0.6362, 0.7411, 5.6052, -0.3533, 0.6579, -2.9883,
554 0.5989, -3.9928, -2.1937, 3.8742, 2.0056, 2.3132, -0.4478, -2.0855, -4.3607, -2.126, 5.3544, 1.9827, 5.3407, -0.8346, -2.4624, 1.1729, -4.3825, 0.7623, -1.9429, 1.424,
555 -3.3103, 0.0394, 2.0113, 2.6733, 1.2484, -0.2186, 0.1156, -0.4856, 2.4501, 0.8179, -1.1164, -2.1952, -0.9719, 2.0728, 0.4002, 1.1891, 1.7518, -1.2571, -3.3136, -1.9012,
556 1.886, 6.9767, 2.4311, -2.0414, 3.91, 5.5378, -1.7478, -0.8304, 2.8523, -1.4075, 0.1309, 1.8232, -2.8868, -7.5003, -3.4867, -3.2756, -2.8584, 6.2611, -7.4682, 1.694,
557 3.5074, 1.3392, 1.0862, 2.9814, 0.8158, -2.616, -2.3837, -0.8255, -0.1595, 2.0087, -2.8876, -2.4727, -1.3574, -1.2864, -1.5711, -1.0772, 0.4648, 2.7262, 2.1044, -0.397,
558 -0.143, -0.9788, -2.1195, -0.7774, 4.0804, 3.7123, 1.5082, 0.2869, -2.5968, -2.0127, 1.5147, 3.7486, 3.2447, 0.6959, 0.3308, -2.4516, -3.4598, -4.1669, -0.687, 0.2709,
559 0.0724, 0.3235, -1.9536, -2.7454, -3.3392, -1.9023, -1.015, 0.7511, -0.0539, -2.8386, 5.2737, 5.1053, 1.4372, 1.4046, 1.4504, 2.4912, -2.6526, -0.6188, -0.653, -0.5369,
560 -6.955, 1.3233, 4.3542, 2.9502, 0.9929, -0.1186, -0.8657, -2.3452, 3.5061, 2.8348, -4.1741, -4.1264, 4.697, 3.0117, -0.2849, -8.0081, 3.4452, 0.7819, -2.7443, 1.7251,
561 -4.0878, -0.8849, -4.7521, 5.0067, -3.351, -4.8233, -6.6328, 4.8752, -0.7474, 3.8614, 2.6271, 0.9119, 1.0371, 2.2968, 4.316, -3.7042, 0.99, 0.496, 4.7952, -2.23,
562 0.5901, 2.0654, 1.7824, -0.557, 0.4874, 2.7659, 0.8232, -0.1306, -0.6795, -1.3143, -1.248, 0.9969, 2.0563, 0.1625, 0.7346, 0.0223, -1.6836, -2.9087, -4.1058, 0.1406,
563 -0.5074, -0.8373, -0.8579, -0.046, -0.0854, -1.4221, -0.6935, 2.5302, 2.2014, 2.2225, 0.5896, 1.2715, -0.7624, -2.7997, -5.3296, 4.0372, 3.2176, -1.4146, -1.3705, 0.0565,
564 -3.819, -1.1051, 1.5169, -0.5542, -1.5591, 0.2921, -2.1144, 1.6664, 2.8275, 0.7745, 2.6977, 4.4021, -0.201, 0.0685, 1.3158, -0.8045, -5.9834, 1.7874, -2.1592, 0.9509,
565 0.6749, -0.0635, 0.3751, 0.6561, 0.4718, -2.3144, -4.9191, -3.0907, 0.5499, -0.3498, 1.237, 2.6699, 1.5353, 1.6809, 1.2117, -1.3733, 0.0977, 1.361, 0.0102, -0.4207,
566 0.8139, -2.9454, -1.1694, 1.1826, 3.5742, 4.3331, 1.4143, 1.7017, -1.2428, 4.8459, -4.4642, -0.0684, -1.7273, -0.1932, -2.6041, -1.4272, 0.2873, -0.9676, -0.1422, -1.2013,
567 -1.869, 1.2475, -2.8884, -0.3842, -0.3588, 2.7759, -2.006, -2.2023, -2.6599, -2.5791, -3.1221, 3.2645, 1.8131, 2.863, 6.3144, -4.2619, 0.7589, -0.7608, 4.8657, -0.8104,
568 2.3449, 0.3057, -2.2411, -1.3084, 0.6572, -0.379, 0.2674, 0.5337, 0.4996, 0.8832, 2.3616, 3.9339, 4.7846, -2.7473, -0.5167, -0.0864, 0.9288, -4.3018, -4.0903, -1.8294,
569 2.9658, 2.7467, -1.9276, -4.0009, -0.7257, -0.6616, -2.0255, -1.2898, 0.3022, 1.581, 3.0521, 2.579, -3.2369, -0.4791, 0.4455, 0.1138, 1.1032, 0.9003, -1.5708, 0.1285,
570 5.2204, -2.819, 0.8203, 0.5992, -1.3205, -2.1549, 5.0256, -1.605, 0.5506, -2.8092, -0.2831, -1.6376, -1.8233, -0.0177, 2.5319, 2.0586, 0.9166, -1.5417, -0.3071, -1.4039,
571 0.109, -0.1359, -0.4821, -0.506, -1.1903, -0.1205, 1.301, 0.0989, 0.228, 1.3298, 1.4648, 0.728, 0.0076, -1.4837, -0.1633, 1.2525, 0.9437, -0.0019, -3.9783, 0.5988,
572 -4.0941, -3.422, 0.4966, -5.4678, 6.0636, 1.1749, -0.183, 3.3518, 3.548, 1.4243, 2.5791, -5.9065, -1.8723, -1.6703, 1.399, 6.8845, 1.8643, -1.2344, -3.7475, -1.188,
573 3.5819, 1.2282, -0.2187, -0.8194, -0.0683, 0.6784, 0.9405, -0.1871, -1.0635, -2.3089, -1.7476, -2.3377, -1.8039, -0.2123, 0.7402, 0.881, 0.7063, -3.8015, 4.2698, 1.5426,
574 -0.7508, -2.5319, -1.4606, 1.0638, -3.8848, 1.206, 2.6878, -1.2315, -0.1629, -2.273, -3.3361, -1.6208, 1.9855, 3.4308, -0.212, -1.4559, -0.3738, 2.3568, 2.3629, 4.2004,
575 1.5564, 1.6137, 1.4225, 1.6668, 1.3266, 0.046, 0.1831, -0.3664, -1.4348, 2.569, 2.2918, 1.6955, 1.668, -1.3807, -1.0884, -1.098, -0.5844, -1.0295, -3.6955, -5.3616,
576 1.7128, -1.8066, -4.0653, -3.8214, -0.9531, 3.4797, 0.7961, -2.4955, -2.7851, 0.0025, 0.7872, 1.0652, 1.5456, -0.4352, 1.9173, 4.6258, 0.3691, -0.1501, -0.2351, 0.4458,
577 -1.6777, -3.1299, -1.6947, -1.1535, -2.1999, -3.2226, -0.9846, -2.1533, -0.6467, 2.0938, 2.1307, 2.9065, 1.5181, 3.0875, 0.0486, -0.2157, 1.3461, 0.7741, 2.732, 0.4413,
578 -2.0098, -0.0651, -1.1313, -3.1454, -1.8173, 0.4664, 2.3278, 3.1806, -3.0726, -1.5969, 3.6994, 0.6478, -0.6833, 1.0635, 1.1405, 6.7102, -4.8934, -4.2029, 3.4752, -0.0933,
579 3.0911, 3.132, 3.6764, 1.2247, 2.0977, -0.4399, -3.947, 1.4276, -0.2596, 0.5511, -6.4999, -0.9385, 3.2215, 1.7397, -2.0786, -2.616, -3.015, -2.0586, 1.9218, -0.2304,
580 0.5955, -0.9572, -3.8115, -1.2133, 0.96, 3.0247, 8.636, 5.7851, 6.1244, 0.7094, -2.441, -1.1712, -1.7901, -3.5399, -2.8318, -2.5468, -4.9596, -0.6022, 0.6141, -0.5845,
581 12.5835, 1.8094, 0.1352, 1.7718, 0.9427, -1.369, 7.1277, 0.0421, -2.3404, -4.665, 1.4653, -2.488, 2.6056, -10.3828, -8.1067, 4.1108, -1.2481, -1.833, -2.7827, 2.6214,
582 2.9658, -0.2617, 0.2806, -0.2164, 2.855, 1.9755, -3.5301, -1.235, 0.9311, 0.8713, -2.2265, -0.6005, 2.6386, 2.7666, -2.3603, -2.5163, 1.6854, 1.0161, -7.8883, 2.8489,
583 -0.9445, 0.6006, -1.3214, -5.0651, -2.1702, -0.0289, 0.1003, 2.2883, 0.0424, 3.4686, 2.0494, 1.6327, -1.6152, 0.122, -2.8666, -2.2261, 4.9579, -2.2581, -2.7323, 5.9663,
584 -1.3666, -0.2364, -0.3999, -0.9988, -2.0227, -0.061, -0.5411, -2.2113, -0.2283, -1.715, 1.0239, 4.276, 1.9603, -3.0526, -2.5894, 0.8611, 5.2528, 3.4951, -2.2336, 0.7875,
585 4.7609, 3.7023, 0.7955, -3.1291, -1.3671, 0.8798, -0.9947, 0.2668, 0.5762, -0.9479, -4.5541, -0.6922, 0.0699, -5.8412, 4.2302, 5.0652, 1.3544, -2.4661, -0.6224, -1.0865,
586 -2.6815, -0.9958, 1.6109, -1.7618, -2.5561, 1.0357, -1.5863, -2.2811, 3.4491, 1.1806, -0.2855, -0.138, -0.0202, 5.6861, 0.8289, -1.0913, 0.5986, -1.1493, 3.2455, -3.0884,
587 1.7353, 3.1908, 5.0898, -0.4602, 0.0751, -2.1427, -5.091, -3.1667, -3.3291, 1.9531, 0.4802, -4.8101, 2.2518, 2.438, 0.6439, -7.3548, -0.0689, 1.8997, 5.717, 0.9491,
588 -1.1588, -3.1119, -3.4525, 0.2538, 1.3345, -1.05, -0.387, -0.0472, 0.1522, 4.0806, 2.8886, 3.8741, -1.9507, -2.9183, -0.3828, -0.0805, 0.4136, 1.1466, -3.1863, 3.5818,
589 -4.1654, -5.7362, -5.0041, -0.9889, 4.1884, 4.8135, 1.5658, -2.3781, 0.8425, 7.5151, 7.3977, 3.9243, 0.6283, 0.9194, -5.0741, -1.9566, 0.21, -4.9786, 0.876, -2.5989,
590 -5.3114, 2.2992, -1.9803, 1.215, 9.1545, -2.196, -2.8749, 9.6686, 0.5512, -4.17, -1.1338, -4.1549, 1.6645, -3.1643, -1.78, 4.9896, 0.339, -0.0421, -1.0391, -2.0347,
591 1.074, 2.184, 0.9247, 2.0617, -2.1994, -4.0653, -1.5118, -0.9397, 1.3781, 2.9104, -0.8864, 8.5382, 0.5495, -3.5922, -0.2482, -0.5485, -0.9604, -1.8453, -3.1808, 0.3575,
592 3.5141, 2.7621, 1.2101, -0.3665, -1.1827, -0.5351, 0.4822, 0.7598, 0.8241, 1.4976, -0.8943, -2.8067, -2.3512, -2.0448, 0.3706, -0.9201, -3.9192, 1.1431, 0.4761, 1.9809,
593 -1.7817, 1.1939, -1.2195, 1.7524, -4.7374, 1.152, 0.0973, 1.5475, 2.2848, -7.787, 2.0346, 0.5213, 2.8861, 3.1077, 1.1974, 2.3936, -1.4248, -0.2888, -1.4706, -1.4588,
594 -0.7677, -2.0426, -2.9918, -1.8722, -1.4336, 0.4207, 1.4107, 1.0509, -0.1714, 0.2221, 1.3054, 0.5884, 3.1454, 1.8747, 0.151, -0.5701, 0.5457, 2.7058, -0.0854, -3.4859,
595 1.6593, 1.0024, 0.3202, 1.0267, -0.2368, 0.1208, -0.7272, -1.0487, 0.2686, -1.0197, -1.3131, 4.1829, 1.0297, 1.7779, -3.0898, -0.7777, -4.5532, 2.1765, -0.31, -0.4886,
596 2.9341, -0.2895, -2.421, 0.9438, 2.949, 1.2447, -0.4279, -0.4133, -0.2487, 0.6464, 0.1859, -0.8613, 0.069, -2.0024, -3.5783, -0.9123, -2.3469, 0.3089, 5.3909, -1.171,
597 13.8818, 0.6217, -0.6459, -3.4218, 0.8331, 0.8918, 2.2009, 4.0596, -3.038, -7.3862, -3.2105, -2.2108, 4.7972, -5.3735, 3.887, -1.819, -0.5123, 0.9752, -3.6921, -0.8383,
598 0.2536, -11.0226, 4.4625, -7.9396, 8.6657, 2.6088, -1.0215, 0.4492, -5.0641, 2.7194, 1.1735, 2.207, 3.3733, -0.2605, 5.5319, 3.5989, 0.2759, -3.6185, -2.9338, -3.4591,
599 -0.2533, -1.2245, -1.1924, -0.1962, 0.6099, -2.1289, -2.0002, -2.039, -1.5592, 0.7879, 0.1165, -0.9325, -1.5485, 0.4552, 0.3883, 1.9054, 2.3495, 3.9138, 2.3594, 0.1886,
600 0.175, 3.7528, 1.6899, -4.327, -5.0437, -3.141, -4.7768, -1.9628, -4.5893, 5.9435, -9.6773, -0.4601, 3.0571, 1.2797, 0.1161, 3.5574, 3.7157, -2.0222, 5.9308, 6.7823,
601 -0.6999, -2.9933, -3.6606, -0.6207, -1.4032, -1.1364, 0.253, -0.9004, -2.7685, -4.3142, -0.7561, 0.8142, -0.4715, 0.8444, 2.0053, 0.5983, 3.3363, 4.4913, 6.9146, 0.4673,
602 1.0959, -0.0886, 0.2379, 3.2725, 1.2016, -1.1581, -1.364, -0.6268, -0.3678, 0.9051, 0.7593, -2.2902, -1.4578, 0.6349, 0.5115, -4.4984, 2.2315, 2.2535, -2.7867, 1.5345,
603 3.6055, 3.8842, 2.1794, -0.7568, -1.05, -2.1686, -0.6731, -2.0718, 0.8001, -0.6819, 1.1112, 0.5707, -2.4862, 3.1489, 2.6767, 2.5134, -1.9147, -4.1519, -2.4548, -2.0802,
604 -1.9388, -0.7447, -0.8349, 0.1123, 0.1251, -1.3476, -2.6413, -0.477, 5.6864, -1.8563, -3.3514, -0.5309, -1.6295, -1.3453, -0.4664, 4.593, 1.1909, 2.9264, 0.9356, 1.5944,
605 0.5951, -0.4177, -0.1304, 0.5462, -1.3265, 1.4534, 1.6425, 0.973, 0.8946, 2.1586, 4.2557, 0.8968, -5.0524, -1.9576, 2.6089, 0.6571, 0.7918, -2.2504, -4.5907, -1.748,
606 -1.6456, -2.0706, -2.4462, -2.5983, -2.5056, 2.0863, -0.9159, -0.8806, -0.8052, -0.7776, 1.0285, 0.4522, 1.5131, 3.453, 4.933, -2.7752, 1.775, 2.1982, -0.0181, -0.0006,
607 2.2117, 0.6658, -0.1647, -0.7769, -0.3291, -0.0686, 3.183, 1.8603, 1.0488, -0.7866, -1.0352, 1.6465, 0.2395, 0.3989, -1.2496, -1.9498, -2.6996, -7.5216, 1.332, 3.9951,
608 1.0405, 1.3681, 2.7153, 3.0279, 2.8206, 1.9933, -1.5434, -2.0223, -1.049, -1.2756, -0.1434, 0.2554, 0.8858, 1.3178, 0.3714, 3.567, -3.1912, -1.0147, -3.0243, -6.0993,
609 -0.8348, -2.4017, -3.6731, -2.0399, -0.2474, -1.064, -1.1488, 1.3352, 2.8367, 5.1498, -0.0673, 1.7148, 2.0672, 0.78, -2.8302, 2.8981, -0.7525, 1.3119, -2.4119, -0.6222,
610 3.0927, 2.0509, 2.4548, -1.3001, -3.9942, -0.7486, 2.8523, 0.1569, -4.3404, -10.5627, 4.2087, 4.2968, 2.7013, -1.1646, 0.2008, -2.4272, 1.8708, 0.5192, -2.3092, 2.4416,
611 0.6449, -3.5216, -3.8362, 2.1329, -1.2999, 0.6434, -2.5079, 3.1409, -0.943, 2.1409, -0.9005, 2.6639, 5.842, 2.2508, -0.1834, -3.5407, -2.0329, -1.9827, -0.2675, 1.5565,
612 5.1512, 4.1361, 0.9497, -3.1897, -6.0608, -4.8346, -0.7128, -2.1849, -2.1809, 0.1265, 0.3295, 0.2665, 1.1233, -0.4722, 2.7945, 1.1909, 0.4093, 1.9529, 0.638, 0.5674,
613 -2.0255, 1.8944, 3.261, -0.6543, -0.1603, 1.6419, 1.8339, -4.1284, -1.6495, -7.4417, 2.7611, 3.0349, -5.4696, 5.3754, 0.2729, 5.17, 0.7296, -0.1265, -1.6533, -2.6659,
614 -7.1882, -6.8851, -0.9549, 2.6573, 1.6288, -0.3149, -2.2361, 1.6706, 4.0565, 3.2723, -2.0478, -0.6505, 2.7769, 4.9536, 1.831, -4.1026, -0.854, 2.2409, 0.8671, -0.7209,
615 0.8703, 1.1461, 2.9551, 0.5102, 0.4539, 9.1307, -3.4339, -1.5513, -2.2902, -4.1038, -6.058, -0.8757, 3.583, 2.5081, -1.9449, 0.3605, 0.8645, 0.6768, -0.2206, -2.5809,
616 -4.5091, -1.0618, 1.6342, 0.589, 1.0199, 0.707, -0.4636, -0.7393, -2.0902, -4.3948, -1.8491, 2.8967, 1.9263, 0.6394, 4.9955, 3.9485, -0.2145, -1.3652, -1.4955, -0.1736,
617 -1.2527, -0.6868, 0.0359, 0.5854, 0.7286, -0.5988, -1.0892, -1.2358, -0.5524, -1.8766, -4.8554, 1.3154, 3.0969, 1.2141, 0.4785, 0.5435, 0.966, 0.9526, 2.5969, -0.3662,
618 -3.4429, -2.5359, -0.7902, 1.6794, 1.395, 0.9304, 0.5281, 2.0451, -0.282, -0.762, -2.3113, -2.5279, -1.2407, -4.6199, 3.9276, -1.3637, 2.0692, 2.0266, 2.415, 2.8601,
619 -0.0841, -1.4504, -2.5295, -2.1914, 0.016, -1.5806, -3.8581, -1.8751, 1.241, 1.4792, -0.0268, -3.0304, 1.1672, 3.1034, -0.0043, -1.775, 1.0722, 5.8103, 3.7335, 0.783,
620 -1.2601, -0.9248, -0.9753, -1.158, -0.4657, 0.9286, 0.4457, -0.7164, 2.9298, 6.0232, 1.1288, -9.2201, -2.6002, 1.0866, 3.5907, -0.3994, -0.8783, -0.4493, 3.0463, -0.132,
621 -2.6865, -1.7683, 0.5719, 4.2697, 0.4434, 0.9403, -0.1787, -3.9995, -1.4954, -2.9666, 0.5871, 0.7458, -0.5643, -3.3758, 2.4009, 1.363, 3.2345, 2.9305, 0.6423, -1.0943,
622 0.2605, -0.1269, 0.1894, 0.8801, 5.6065, 4.4842, -0.336, 1.6337, -1.008, 2.2349, -1.3371, -3.4195, -1.5849, 3.4658, -2.7632, -2.8878, 0.2535, -1.0857, -3.4858, -0.9736,
623 0.5903, -1.1309, -3.8731, -2.8181, 0.6957, -2.193, -3.7976, -0.1684, 0.3131, 0.8609, 0.0568, -0.1356, 5.9915, 2.3704, 3.984, 0.584, -1.9366, -2.6479, 0.4937, 2.7608,
624 -1.4917, 0.6707, -1.8279, 0.4736, -4.3226, 7.6508, -0.677, -1.0388, 1.6577, 3.4357, 2.121, -1.6783, -1.9394, -0.4857, 0.0446, -2.1769, -1.5641, 1.5895, 1.475, -1.9161,
625 -2.4617, -1.4865, 0.9268, 3.7356, 1.9298, -1.0879, -0.9003, -0.6573, -0.4536, 1.1463, 2.5279, -0.9025, -2.1547, 0.5579, -1.4546, -2.5618, -1.102, 1.7633, 4.9058, -2.2707,
626 3.2436, 2.0698, 1.3674, -1.4618, -0.4269, 1.2764, 0.316, 1.2237, 0.7208, 1.5117, 1.4584, -0.5527, -0.7757, -2.7217, -4.0792, 1.8261, 2.7197, -3.9546, -1.7508, -2.0101,
627 0.2659, 1.9357, 0.5705, -1.8509, -5.0017, -3.7512, -2.7574, 0.2996, -1.125, 0.6895, 2.7521, 3.709, 3.4556, 6.5334, -3.5389, -3.897, -2.9436, 0.765, 1.5177, 2.3717,
628 -1.2532, -0.7651, -0.7634, -1.69, -2.3167, -1.0574, 0.9291, -0.7963, -1.477, -1.6646, 0.5558, 0.7009, 3.4059, 9.2719, 1.4172, 2.4588, -0.7901, -3.7873, -1.0613, -1.3173,
629 3.2264, 0.6063, -2.4159, -3.8529, -1.9936, 2.6889, 2.5115, 0.8341, 0.8209, 1.2008, 0.7255, -2.1489, -1.1543, -0.6443, 2.0479, -0.7011, -0.5619, -0.082, 0.5538, -1.6613,
630 0.89, 0.2673, 1.2328, -0.1459, 2.5186, 2.3429, -0.5461, -0.5497, 1.9452, 5.1637, 1.5156, -3.9805, -1.5621, -1.5331, -2.7711, -2.2357, 0.7958, -1.6083, -2.3152, 0.5758,
631 4.0233, 3.7838, 3.0862, 2.468, -0.8644, -2.4804, -0.9694, -1.9035, -3.4966, -3.959, -3.9724, -1.208, -1.6237, 0.7915, 0.4354, 0.8419, 1.1287, 1.8538, 2.3476, -0.2827,
632 -0.5315, 1.6742, 2.6296, -0.5391, -1.8812, 2.7171, 6.8646, 3.9934, -2.0577, -0.8537, -4.3316, -2.4473, -2.8864, -0.3456, -1.9169, -1.4494, 0.4578, 1.9608, -0.1673, -0.8898,
633 -2.1559, -2.48, -1.5001, 1.3457, 3.3362, 2.6367, 1.4331, 2.3397, 3.7557, 3.4063, 1.6588, 1.2723, -0.3658, 0.5614, -2.5827, -5.6096, -3.4952, -4.1966, -1.5564, 2.1965,
634 0.1567, -1.6324, -1.8735, -2.1011, 0.8687, 2.8596, 1.0227, 5.0782, -3.8186, -0.4012, -1.0627, -1.0858, 2.3105, 2.5822, -1.0014, -0.6915, 1.2628, 0.1273, -4.312, 1.7113,
635 0.5493, 0.1877, -0.3065, 0.0805, 0.17, -0.4682, -0.7192, 0.7521, 1.1935, -1.2445, 0.5061, 3.0407, 3.3122, 2.9044, 2.0613, -2.6946, -2.8479, -1.4855, -3.4536, -1.5377,
636 1.2611, 1.2112, -0.4954, 1.5849, 2.8817, 0.5597, -3.2189, -1.8993, -2.3996, 0.0235, -0.927, -1.1263, -1.6443, -3.5163, -1.2543, 1.841, 4.5628, 1.0754, -0.1607, 1.6406,
637 -0.8759, -1.6975, 0.2532, 6.4042, -3.4246, -2.9858, 1.9661, -3.2513, -4.0109, -0.5134, 2.5545, -3.0437, -2.1093, -3.6915, 4.1398, 6.0036, -1.3456, 1.3628, -1.0285, 5.294,
638 8.8405, -7.236, 2.8239, 7.1563, -1.4248, -8.041, -1.9196, 1.8187, -0.932, -3.1134, 1.9133, 4.5783, 5.5866, -1.744, -0.1615, -9.2039, 4.4457, -2.5424, 2.5822, -3.4268,
639 -1.9594, -0.144, -0.0014, -0.5248, -1.274, 1.9184, 0.2637, 0.9658, 3.9879, -1.7646, 0.8739, 3.6824, -1.4748, -0.5493, 4.194, -0.5892, 0.9704, -2.3393, -5.2036, -1.0319,
640 -1.8153, -0.8777, -1.3975, -2.8688, -1.315, 0.6005, 2.0795, 2.0158, -0.0187, 2.3273, 5.2446, 3.191, 0.542, -1.0394, 1.3294, -4.655, -1.5318, -1.6999, 0.2573, -0.3684,
641 4.3069, 1.2137, -1.8464, -3.0026, -0.9539, 3.1554, 3.4215, 2.0922, 0.4828, 1.6102, 1.1857, 1.5577, -1.8593, -2.9907, -3.064, -4.6355, -1.6614, 1.3592, 1.5116, -1.8833,
642 0.6407, 1.1519, 1.5429, -0.7369, -1.7269, -1.6671, -0.129, -0.7049, 0.8116, -1.2198, -4.0157, -5.1437, -3.1965, 2.3418, 0.7111, 2.6992, 0.5585, 1.9829, 4.9644, 1.1355,
643 0.6364, 2.1072, 0.987, -5.1572, -4.3363, -1.0839, -1.3521, 1.8709, 0.8132, -0.2938, -0.2079, -2.5242, -0.8999, 2.3401, 0.7392, 3.1549, 3.0568, -1.1375, 0.0963, 1.1908,
644 -0.0136, -2.4241, -0.4209, 1.6339, 3.4114, 3.5889, -1.41, -3.5651, 3.1831, 2.0426, 0.5548, -2.0177, 1.6429, -3.2634, 1.578, -4.1305, -0.9389, 0.1651, 0.4588, -0.0751,
645 2.0687, 0.8544, -0.3821, -0.1978, 1.0057, 2.3289, 3.0174, -0.333, 2.0178, -0.6679, -0.1993, -1.917, 1.6018, -0.3834, 0.6526, 1.9588, 0.3355, -2.0462, -4.1767, -5.5379,
646 2.7809, 0.2282, 0.482, 1.9051, -1.735, -3.4716, -3.3685, -1.3005, 0.1251, -1.5366, -1.9516, -2.1469, 1.2541, 3.7123, 3.039, 0.8154, 2.3154, 2.5014, 0.0685, -3.7166,
647 -2.7442, -0.5589, 1.8753, 0.2528, -1.7122, -1.5279, 0.3471, 1.3429, -0.0809, -1.0979, -0.5556, 2.8899, 0.2864, 2.18, 1.7006, -3.4442, -2.6681, 2.9174, 1.9107, -1.3132,
648 1.1471, -0.3191, -2.5131, -2.6788, 2.7236, 4.0318, 2.942, 3.1336, 1.5351, 0.48, -0.0086, -1.0945, -1.1975, -0.4758, 0.1588, -0.497, -0.2437, -3.5219, -3.3061, -0.2958,
649 -0.6947, -3.5085, -2.7613, 0.0475, 0.2365, -2.4104, -0.4597, -0.9262, -0.2261, 1.8983, 0.9162, 0.3544, -1.0767, 2.3229, 2.3748, -1.6417, 3.4712, -3.6716, 0.1472, 5.6077,
650 -1.7531, -0.9915, -0.4352, 0.4089, 0.189, -1.7111, -0.6401, -0.9353, -0.5743, 0.3365, -0.6869, 0.9392, 0.8776, -0.2201, 0.7815, -1.7487, -0.2509, 3.0732, 0.2971, 3.0442,
651 -6.4696, -1.5332, 1.3136, 7.9582, 4.7035, 0.4178, -1.4784, -2.4577, -0.6662, -2.4183, -3.1348, -2.0591, -4.3423, -0.208, 1.5975, -2.6953, 0.1211, 4.7779, 4.5315, 2.0419,
652 0.8642, 3.0824, 1.7461, -0.8529, 0.9231, -0.3502, -2.7586, -2.7081, -1.4853, 1.1577, 2.4953, -2.0279, 3.1643, -1.1352, 0.2786, -0.165, 2.423, -0.5282, -0.4006, -3.7227,
653 -3.9091, 0.2639, -0.0395, -5.0339, 1.4635, 7.9381, -1.8279, -7.5321, 1.8947, 0.9696, -7.1991, 7.7502, 4.8838, -5.2722, 5.2271, 6.4012, -8.2785, -5.8271, 0.4487, 7.6786,
654 -0.4051, 0.3015, -0.5211, -1.1563, -1.5548, -0.8506, -1.7742, -0.6679, 0.3853, 3.9695, 3.145, -3.5632, -0.3392, -3.3757, 1.3514, 4.4934, -1.2754, -0.4248, 1.0022, 1.2601,
655 -3.0667, 3.2388, 3.6288, -0.3263, -3.6989, -4.3941, -3.0073, -2.9882, -2.7834, -3.8873, 2.3701, 6.1068, 1.0432, -2.8444, 0.146, -2.5272, 1.8208, 2.6818, 7.7176, 0.7699,
656 -0.8674, 0.6588, -0.0766, 1.935, 3.3452, 2.7012, 0.4707, -0.8282, -0.7703, -3.8252, -2.8814, -0.2389, -1.3895, -0.9376, 0.2572, -3.4418, -2.3763, -1.8695, 7.4789, 2.6558,
657 0.8567, 1.9741, 0.6363, 2.1993, 1.9072, 2.2211, 3.7376, -0.0455, 1.3289, -1.0736, -4.8817, -4.0284, 2.4624, 1.0596, -3.8101, -3.8498, 0.8895, -0.5176, -2.3743, 1.3083,
658 3.7465, 3.5865, 0.1979, 0.4072, -1.1714, -1.4598, -2.1688, -1.4971, -1.1953, -2.8028, -1.8515, 1.1483, 3.7654, -2.6485, 1.2635, -2.4929, -1.4965, 0.6356, 3.3756, 0.6583,
659 -1.7286, -0.6675, 0.3769, 1.1159, 0.0587, 1.4828, 1.214, 6.0165, 1.2212, -3.4526, -2.4321, -0.8616, -2.2663, -0.0017, -0.0046, 0.2615, 0.0517, -0.8546, 0.5801, -0.1095,
660 3.4455, 1.4668, -0.0851, -2.9245, 0.0932, 1.2861, 1.125, -0.6317, -4.0005, -4.4206, -1.5097, 1.3643, -0.1238, -0.8046, -2.45, 4.2293, 2.9297, 3.2594, -3.0122, 0.7633,
661 2.2354, -0.6334, -2.7256, -1.7876, -1.8603, 0.6549, 0.1244, -1.81, -1.7636, -2.7665, 1.0419, 3.6034, 2.7187, -5.8124, -0.9848, 2.8478, -0.3193, 3.4835, 2.5353, 1.2184,
662 3.0602, 4.3425, 2.426, -0.5623, -0.8919, -0.273, 1.3901, 0.4772, -0.5219, -1.3754, 0.4815, 2.4087, -5.0472, -5.6009, -2.8901, -2.4607, 1.8809, 3.5997, 3.9232, -4.3669,
663 -0.0346, -0.2122, -0.229, -0.9365, -0.4221, -1.93, -2.3572, -2.9919, -2.2394, 3.2115, 2.4104, 2.4249, -0.5682, 1.5001, -1.3857, 2.614, -1.8866, -5.618, 7.3368, 1.3135,
664 -0.4484, -1.1107, -1.9143, -1.2992, -0.5392, -1.0181, -0.6562, 0.5186, -0.7919, -1.4379, -4.0959, 2.4107, 1.5417, 0.0557, 3.4844, 1.7096, -0.8275, 1.7994, 2.0983, 0.5209,
665 -0.4549, 0.183, 0.2262, -2.2572, -1.5931, -0.7026, 2.6431, 2.6098, 4.0381, -0.4805, -2.9134, -3.5443, -0.6536, -2.1551, 2.0956, 1.2393, 0.2979, 0.9155, -2.0621, 2.5682,
666 -0.1092, -1.2889, -2.5682, -2.3378, -1.7259, -0.5628, -0.6114, -2.8295, -2.569, -3.3678, -2.2669, 0.6023, 0.3823, 5.9006, 5.7607, 1.9871, 0.6942, 1.2471, 3.2445, 0.4186,
667 0.6515, 1.8638, -0.3444, -2.0169, -0.6995, -2.9879, -2.4596, -1.0847, -0.8686, -2.3776, 2.0331, 4.8909, 4.1694, 1.269, 1.4079, 1.9289, 1.882, -0.9986, -3.0198, -3.239,
668 1.7936, 1.2201, -1.9231, -2.6761, 1.6107, 7.0585, 8.8031, 2.9894, -2.3291, -6.5825, -1.5641, 3.0126, -4.0096, -4.0332, -0.6223, -0.5985, -0.8359, 1.2689, 0.3585, -2.941,
669 -1.2384, -0.3295, 2.3565, 3.0657, 3.2204, 1.089, -0.5456, 0.1283, 2.9904, -0.097, -5.2104, -1.5801, -2.5751, -2.3243, -0.3014, 2.6881, 0.5623, -1.5424, -1.9388, 1.5825,
670 -2.6631, -2.8705, -3.6445, -0.1511, 1.0369, 4.6018, 2.7993, -0.5794, -0.1152, 0.9196, 4.1279, -0.7083, -3.1505, -2.187, -2.5145, -0.8667, 1.9629, 3.781, 1.8562, -1.6347,
671 -3.7832, -0.9972, 1.0298, 0.8253, -2.4369, -3.3827, -2.6892, -0.8231, -1.082, -0.0375, -0.7937, -1.8433, -0.5302, 3.8146, 2.3123, 1.6122, 4.1004, 5.6672, -1.045, 0.0824,
672 -0.1, -2.02, -0.5383, 2.2917, 0.8366, -2.2105, -0.8495, 2.1052, 3.4989, -0.0827, -0.3031, -1.7154, 1.3463, 5.4572, -3.0939, -0.0935, -1.1704, -5.241, 2.43, -0.5476,
673 -3.7789, -1.9485, 1.8338, 2.9833, 0.6807, 1.8337, 5.1432, -0.4532, 0.5973, -0.6042, 0.8753, -1.5014, 0.4292, -2.2709, -1.2993, -0.1667, -1.6955, 1.1932, -6.0865, 4.2353,
674 -0.492, 0.0568, -2.6837, -3.2294, -0.292, -0.679, 2.7843, 3.0219, 1.7934, -2.2037, -3.0967, 1.8829, 0.5782, -1.6334, 1.9235, 4.5606, -4.2261, -0.0121, 2.2982, -0.3517,
675 -0.6429, 2.5139, 2.3667, 2.2, -1.8905, -1.3195, -0.0575, -0.672, 2.8832, 0.3828, 0.9744, 2.9334, -0.6053, 3.2595, 2.5269, 0.0016, -5.8119, -0.9627, -4.8744, -3.2058,
676 0.8584, 0.9302, 0.363, -0.3058, -0.919, -1.1142, -3.3748, -2.621, 0.9921, -0.044, -0.2277, 0.806, 1.7478, 2.0581, 0.39, 4.4187, 5.843, -6.6138, -3.1191, -0.068,
677 0.3281, -0.0986, -1.1173, -1.9481, -2.4515, -1.0863, -1.3545, 1.1448, 2.8412, 3.7501, 2.6741, 2.7224, 1.8554, 1.4018, -3.7195, -2.9142, -1.2068, -4.2062, 2.968, 0.417,
678 0.2181, -1.3017, -1.3715, -0.9326, -1.1639, -0.6082, 2.2905, 2.1838, 3.153, 3.3746, 2.0088, -0.8055, -1.0486, 0.7007, -1.796, -0.3898, -2.4327, -2.4057, -2.1793, 2.506,
679 -2.4912, -0.4925, 1.9418, -0.632, -1.0125, 1.8048, -1.536, -1.7457, -0.3001, 0.5912, 0.4548, -1.4661, -1.5177, -0.5917, 5.6377, -3.6558, 1.8798, 3.7139, 3.0715, -3.6543,
680 -1.077, 1.7774, 3.6503, 0.2492, -2.5625, -1.2989, 0.3077, -1.4511, -0.7454, -1.0293, 0.9281, -0.097, -1.418, 0.5544, 2.007, 3.1415, 2.3666, -0.7117, -2.8143, -1.777,
681 -1.8815, -2.2795, -1.158, 1.0865, -0.0453, 1.6476, 0.0859, -1.8231, -0.7599, -1.0013, 0.0173, -0.6116, 0.011, 0.6057, 0.1048, 0.392, 2.8241, -0.4223, -0.292, 3.4995,
682 0.0544, 2.8654, 4.0202, 1.6845, -1.8534, -2.9185, -1.4228, -3.6388, -2.021, -2.4342, -3.4254, -1.7961, 2.7218, 6.6019, 2.278, -0.0758, -2.1727, 1.0645, -0.3083, 0.7762,
683 -4.2733, -4.7209, -2.5347, -4.1434, -2.3709, 0.1195, 0.9517, -1.8672, 1.5567, 3.4133, 0.9511, 6.1534, 5.0591, 3.3617, 4.3448, -0.8335, 0.0697, -1.2096, -2.2085, -1.8188,
684 0.0539, 1.0537, 0.6965, 0.7551, -2.3328, -4.4085, -1.7944, 4.6582, -1.8228, -0.38, 0.4342, 0.9079, 1.1727, -0.2538, -0.9787, 1.6403, 0.3758, 0.2889, -1.0679, 1.0017,
685 0.9075, 0.5642, -0.6092, -2.8652, -3.3111, -1.2627, 1.6981, 0.5866, 2.5675, 2.8589, 1.6024, 2.0917, 0.4354, 1.0342, 1.2054, -2.7817, -0.5893, 0.0883, -2.8199, -1.401,
686 0.898, -0.3869, -0.4833, 2.6033, -0.0884, -0.3699, 7.2953, 1.6809, 0.8531, 1.6498, -4.4993, 0.0072, -1.9421, -1.8001, -2.5825, -3.6475, -2.3221, 0.6178, 0.3128, 2.204,
687 -6.0307, -1.3653, -0.3786, 0.0247, 0.6616, 0.7676, 3.3234, 3.0965, 0.7765, -0.6097, 1.0441, -0.9142, 1.6186, -9.2158, -4.2017, 2.5866, 2.2875, 2.0945, 2.8697, 1.5646,
688 -0.3542, -0.028, 4.1718, 2.5282, 6.0404, 2.9659, -1.0269, -1.4497, -5.6815, -3.9178, -3.928, -6.4467, -2.5804, -4.6703, -1.3963, 3.1437, 4.398, -0.5477, 2.7035, 6.0758,
689 -1.5432, 3.8376, 1.421, -1.1449, 0.4892, 1.3172, -2.0383, -2.2564, -2.1791, 3.0272, -4.0284, -1.3615, -1.9716, -4.988, 3.88, 2.5715, -2.8049, 5.2429, -2.0992, 4.629,
690 1.9112, 0.2401, 1.209, 1.9221, -0.5051, 2.0731, -0.8317, -1.4381, 1.1319, 0.2604, 4.857, -4.2486, -4.2343, -0.1445, 2.6106, 1.1135, -3.459, -1.7688, 1.2613, -1.96,
691 -4.6396, -2.9689, 0.9238, 0.7657, 0.5574, -0.365, -3.7022, -4.0756, -5.0362, 0.3243, 3.188, 1.727, -0.7319, 2.9308, 3.7592, 2.6099, -0.3181, 4.3233, 1.9146, -1.1863,
692 0.198, -2.2883, 0.933, 3.8033, -3.0797, 0.0635, -1.8773, -1.7344, -1.0161, 0.156, -0.1661, -3.8927, -0.3658, 0.3316, 1.1226, 1.9542, -1.049, -2.2906, 3.6658, 5.5322,
693 -0.8058, -0.987, 1.9765, 0.8081, -0.8891, 1.6549, -1.7178, -0.2062, -0.6134, 3.7968, 2.8384, 4.3753, 1.2045, -6.0029, -1.5145, -3.5656, 0.8785, -0.8278, 0.9419, -1.3448,
694 -1.9513, 2.4604, 2.9573, 3.3043, 2.2986, 1.0394, -0.4185, -0.089, -0.2841, 2.2073, 1.6514, 0.3367, -1.0792, -1.4676, -0.885, 1.7747, 0.0695, -7.9932, -5.3486, 1.4171,
695 -2.8766, -0.2007, 0.3439, 0.7801, -0.0362, -1.8832, 1.2162, 3.7611, 1.5511, -0.2914, 4.4891, 2.4265, 0.517, 1.2791, -3.0822, -4.3172, 2.155, -1.7349, -2.5924, -1.5044,
696 -1.3853, -0.5001, 0.6365, -1.9167, -1.9693, -1.6932, -2.5123, -3.1209, -1.5363, 3.8772, 1.7176, 4.5613, 2.2969, -1.7507, -0.4549, 2.7398, -2.2572, -0.1132, 1.3625, 2.0183,
697 -0.2587, 0.7517, 0.0083, -1.5665, -2.9108, -3.8211, -5.3272, -2.2879, -3.3006, 3.201, 3.9688, 4.6713, 3.8047, 3.4665, 0.6502, 0.9612, 0.0958, -1.5002, 1.1994, -1.8059,
698 -0.0767, -2.8888, -3.8572, -1.6523, 2.8392, 3.7128, 0.7093, -0.0657, 0.9823, -1.6073, -2.181, -1.5064, -0.6392, 2.2679, 1.7322, -1.1001, 1.0422, 1.4078, 2.4192, -1.5382,
699 2.1069, 1.6101, -0.6015, -1.1106, -0.0731, 0.3657, 2.1738, 0.6411, -3.2826, -4.2217, 0.0005, 4.1333, 2.9287, 4.0221, -1.0117, -7.1186, -0.37, 1.5812, 0.1654, -1.9391,
700 -3.3989, -5.4211, -3.3823, 0.1417, -0.209, -2.9282, 3.8367, 5.4395, 2.1603, -1.6658, -0.0286, 3.8151, -1.6236, -0.4057, -0.8473, 2.3634, 0.3434, 0.0424, -0.3374, 2.1055,
701 3.8095, -5.8994, -4.2159, -2.8701, 5.179, -4.6791, -5.6257, 0.4437, 3.5907, 6.0531, -2.4206, -0.619, 2.0474, 3.5867, 7.1475, -4.6633, 4.1906, 1.2868, -11.1492, 4.8074,
702 -5.2857, -2.3511, 1.887, -1.8753, -2.8109, 0.3363, -1.9008, -0.409, 0.8741, -0.4525, -6.3796, 0.4485, 2.7092, 2.5765, 4.4129, 4.7975, -0.3228, 3.7712, 2.7353, -2.7608,
703 -3.9913, -5.9775, -2.6898, 8.0565, 3.5971, 1.2374, 3.459, 0.3338, 0.6958, -1.1912, -2.2406, -2.0748, 0.0857, 3.9701, 1.1276, 1.2332, 0.6559, -3.8152, 0.9255, -3.3971,
704 -2.4876, -2.515, -2.0296, -1.0642, 1.008, 0.6973, -1.7376, -1.5703, 1.5923, -0.7283, -0.1226, -1.7315, 2.4167, -0.4425, -1.5075, 3.8846, 0.5544, 0.8966, 4.627, 0.26,
705 2.8767, 0.9007, 0.0796, -2.1662, -1.5086, 1.0148, -1.337, 0.8661, 0.0749, 1.4614, 3.18, 2.1743, -1.6449, -2.7523, -2.7644, 2.2901, -1.91, -4.8716, -2.0883, 6.1248,
706 3.6336, 2.1044, 0.4628, -0.6805, -0.0353, -2.3281, 1.0902, 3.0334, -1.907, -2.0882, -2.9673, 0.1514, 0.3556, -1.0151, -5.4063, 2.3884, 2.5624, -3.2553, 3.9458, -0.0449,
707 -1.3869, -1.5992, 1.4579, 1.4992, 1.7691, 0.8878, 0.9518, 0.7305, -1.505, -1.6287, -1.6402, -0.3868, 2.7983, -2.2046, -0.5051, 0.1956, 7.1623, 2.4667, -5.9139, -3.1488,
708 -3.5734, -7.3577, -7.1566, -1.3669, 4.32, 2.1415, 0.4237, -0.1707, 3.4434, 2.6751, 2.2337, 0.4895, 2.5968, 1.0123, -0.9145, -1.1189, 0.9048, 2.1474, 0.4312, -1.1607,
709 -5.2465, -1.6283, -2.7428, -3.2948, -2.2122, 4.3049, 4.7808, 4.7619, 0.2262, -0.6089, 1.1643, 3.359, -2.1676, 0.2134, -1.1502, 1.4193, 1.4168, 0.3538, -2.8694, -0.0796,
710 -3.4905, 1.2508, 2.0451, 0.449, 3.13, 4.3899, 0.1675, -1.3519, -0.0668, 0.4245, -1.7121, 0.2301, -2.207, 0.3069, 3.1491, -7.5721, 2.7986, 3.8554, -4.1493, -1.6472,
711 1.5232, 1.53, -1.0621, -1.4488, -0.8044, -0.39, 1.3086, -2.5549, -4.3776, 0.5264, 2.2421, -0.5299, -2.7363, 4.9582, 1.0929, 1.1601, 2.8351, 1.9896, -4.9813, -0.2808,
712 6.5366, -2.5283, -5.5972, -3.4516, -0.2385, 1.8382, -1.6024, 0.2804, 8.8284, 4.4416, -6.1238, 3.7728, 3.4763, 2.9323, -2.3678, -5.511, -4.9901, -0.1283, 0.0084, 0.4242,
713 1.9342, 1.566, 2.2346, 1.0331, -0.6035, -0.4461, 0.0271, 0.7571, 1.1796, 0.2963, -0.9807, -0.5607, -1.4711, -2.5426, -4.1871, 2.4178, 0.203, -1.7949, -3.6655, 4.6035,
714 2.2188, 0.9702, -1.9037, -2.3323, -0.927, -0.7473, 0.4463, 4.0069, 3.238, 1.6378, 1.585, -1.9473, -1.213, -2.1935, -1.9102, -3.3249, 2.6456, 1.082, -1.3884, 0.057,
715 1.8633, 1.2717, 1.6148, 0.3758, 2.9711, -0.8914, -1.2864, 1.1672, 2.0355, 1.2245, -3.703, 3.72, -3.0675, -1.925, 2.2356, -0.7355, 0.5128, -4.4528, -2.9595, 0.0288,
716 -2.2984, -0.5209, 0.3609, 2.6675, -3.691, -0.3519, 6.3822, 3.0237, -0.1277, -2.2553, 1.0403, 0.997, -1.3107, -1.9745, -0.1646, 4.8839, 0.1333, -1.3256, -3.424, -2.0441,
717 -2.319, 2.2812, 1.2138, -1.1727, -3.334, -5.2226, 3.639, 2.5124, -1.5642, 3.4166, 0.533, 1.8016, -0.3986, -2.9233, -3.7394, 0.9982, -0.006, -1.6833, 4.3443, 1.6231,
718 -2.2576, -2.6516, -1.1317, -1.2013, 0.7393, 0.1827, -1.2343, -3.2192, 2.3728, 2.7817, 1.6779, 0.8901, 0.532, 1.4647, 3.7014, 7.0412, -2.6912, -2.5104, -1.2474, -3.2389,
719 -1.769, -1.9167, -2.8243, 0.8559, 1.6454, 0.6817, 0.5231, -1.2522, -2.6542, -3.2288, -0.2864, 0.0091, 0.5513, -0.6182, -3.9328, 4.4973, 6.4951, 0.4313, 1.6808, 1.1116,
720 -0.2744, -1.578, -1.8323, -1.2019, -0.362, 1.2906, -0.2832, -1.9105, -0.8966, 0.8634, -0.4648, -2.3172, -1.9676, -1.7065, 0.8232, -2.4736, 3.5667, 5.3037, 4.3018, 1.1191,
721 -0.4003, -1.4016, -2.6548, -3.2373, -2.1471, -0.9075, -1.1057, 1.1084, 0.0584, 0.6994, -2.2697, 0.1501, -0.0187, -0.2177, -1.1214, 2.5501, 5.4533, 5.8815, -0.4561, 0.0366,
722 2.4755, 2.6766, 3.381, 2.8797, -1.3067, -1.2604, 0.4792, -1.5575, -2.0569, -1.156, -1.3594, -0.7176, 0.2831, 1.2557, -0.1965, -2.5773, 0.8488, 0.4905, -3.0053, 0.4234,
723 -0.5334, -1.6405, -1.4903, -1.2901, -2.0368, -2.4054, -2.0422, -1.2649, -0.3204, 2.3946, 2.8987, 2.5774, -1.9494, -5.6321, 2.8212, 3.655, 3.985, 1.2152, 1.3991, -0.3406,
724 -1.8395, -0.9841, -0.1468, -2.7046, 0.5709, -0.0486, 2.3079, -3.1973, 5.7249, -2.0537, -0.8947, -0.5513, -1.5588, -0.066, 1.7712, 1.4939, 0.7539, 0.8995, 0.7376, -0.2144,
725 -2.1136, -6.496, 4.0091, -2.7287, -2.852, 0.0889, 4.2865, 1.1559, 1.4489, 2.3747, -0.2811, -1.6675, -2.1043, 2.4825, 1.5983, 3.0151, 1.4924, 1.4598, 1.4466, -6.6156,
726 0.3044, 0.5145, 0.8314, -0.5726, -1.4732, 0.5522, 1.0454, 0.7132, -0.3595, 0.4703, 4.9451, 2.9593, 3.4319, -1.7835, -2.7963, -3.6604, -2.7125, 1.2113, -5.0055, 1.3846,
727 2.3458, 3.264, 1.811, 0.4827, -1.6195, 1.9882, 1.8256, 3.5857, 4.1301, 1.6235, -5.1588, -3.8052, -1.7214, -1.0231, 1.3522, -0.3858, -5.6155, -1.3895, -1.6421, -0.048,
728 3.7883, 2.2512, 0.5915, 3.6595, 3.6582, 1.2917, -2.0747, 3.0623, -4.8462, -9.6783, -4.7828, -4.1622, -5.2776, -1.2559, 2.3471, 0.9386, 6.0401, 4.8334, -1.7435, 1.3593,
729 -0.5609, -1.1658, -2.4817, -6.555, -4.61, -0.2509, 0.7628, -0.8368, 3.8495, 3.922, 3.0356, 2.0951, 1.5781, 3.7313, 2.8834, -1.2291, -3.427, 1.5639, 1.6072, -3.9116,
730 -1.4268, 0.2383, 2.3216, 0.1248, 2.0796, 1.5987, 0.8138, -0.2165, -2.9254, -1.2364, 4.4075, -3.3005, -5.5475, 2.3771, 2.6523, 1.5551, 2.538, 1.7514, -3.2529, -4.552,
731 -0.7746, 0.9904, 0.2665, 0.8152, 1.7416, -1.7222, -3.8193, 0.6115, 3.8698, -1.5065, -1.1919, -1.259, -0.954, 1.8722, -0.152, -4.1283, -0.551, 0.1951, 0.742, 4.9546,
732 -4.9471, -2.6326, -0.7296, -2.9661, 3.2611, 5.2949, 1.3584, -0.3484, 0.0238, -0.5367, 1.037, -2.4283, -1.4686, 5.4446, 2.1704, -0.2969, -1.9436, 4.7301, 0.0591, -5.0816,
733 0.8281, -1.2416, -3.3762, -3.932, -1.3993, -3.0591, -0.9292, 2.5927, 2.1047, 2.4478, 0.5704, 1.2666, 0.5289, -0.2372, 1.2696, 3.8278, 3.1348, 1.0903, -4.3525, -1.1346,
734 -0.743, -0.748, -1.261, -0.7625, 1.0816, 1.6556, 1.2019, 2.2812, 3.2082, 1.5688, -1.3094, -2.0639, -2.5822, -2.2528, -1.34, -1.6246, 0.6375, 2.89, 1.4778, -1.315,
735 0.8081, -1.3233, 1.3342, -0.4629, 2.2543, -1.7177, 1.7285, 2.2425, -4.4738, 0.6367, 1.5497, -1.2988, 0.3335, -1.159, 0.1744, -4.2648, 5.1183, 0.3072, -2.6556, 0.8684,
736 4.0404, 1.9094, -0.2474, -1.16, -0.9167, -2.2516, 3.93, 2.7965, 0.9719, -0.3105, 2.6858, -1.8089, -6.0898, -5.0707, 2.0812, -0.0971, -1.5043, 0.0458, -1.0273, 2.0234,
737 0.1375, 0.239, 1.2366, 1.5253, 1.5536, 1.1452, -3.3801, -3.1595, -2.7411, 1.0175, 6.4814, 1.4661, -1.2521, -3.3744, -3.5432, -5.427, -1.3071, 4.3703, 3.6696, 1.3422,
738 -0.0191, 0.4401, -0.0551, 1.261, 4.9915, 1.8859, 4.2946, 2.2533, 1.246, -0.3261, -1.8245, 0.5397, -0.962, -2.4208, -1.3984, 1.3654, -2.31, -4.0785, -1.5595, -3.3235,
739 -4.1713, -3.8609, -3.6233, -2.2953, 0.459, -0.2721, -0.1506, -1.7078, 0.0356, 1.5074, 1.0712, 0.7854, 0.7858, 0.0168, -0.816, 0.081, 0.5445, 4.5197, 7.1653, -0.0742,
740 -2.9674, -1.465, 1.0679, 3.2208, 3.0814, -0.6959, -0.9252, 1.0871, 0.168, -0.9317, -0.6966, -1.1041, 2.3656, 1.0874, -0.7021, -0.5843, -5.954, -1.0591, 4.3651, 0.6421,
741 -2.3881, -1.1722, -0.2878, -1.31, 0.1054, 2.7187, 3.1286, 1.395, 2.5138, 0.8551, -1.0485, -2.7991, -1.7081, -1.9009, -0.2092, -1.1297, 5.4416, 0.9634, -4.8359, 1.6679,
742 0.3475, 0.6761, -0.916, -3.3303, -2.5114, -1.3053, -2.4606, -1.5909, -0.1066, 1.2867, 0.1087, 0.6627, -0.938, -2.1561, -4.1442, 0.553, 3.6775, 4.3771, 4.5604, 3.2095,
743 1.8172, 1.9142, 1.3748, -1.2576, -1.3958, 0.406, -0.4725, -1.2643, 0.8079, -0.6725, -3.4257, -3.2969, 2.8901, -0.0329, 4.2131, 0.839, -2.3538, -2.2196, 3.3371, -1.2078,
744 1.9496, 3.6573, 4.2326, 1.1863, 1.8389, -0.7982, -0.8176, 0.9762, -2.1796, -2.4082, 0.46, -2.1099, -0.13, 5.8933, -3.2271, 1.4122, -3.0287, -5.0286, 0.1022, -1.9807,
745 0.7977, 0.4131, 0.7926, 0.7439, -2.715, -3.186, -1.6061, -0.5456, 3.5797, 0.0724, -0.4993, 0.4656, -0.7994, -0.5991, 0.0862, 3.6997, -0.5342, -0.3047, 0.9064, -0.7678,
746 1.0025, 0.1292, 1.8299, -0.2181, -0.3367, 2.6298, -1.6812, -0.7903, 1.0473, -0.5336, -4.1833, 2.6382, 0.948, -0.3031, -1.3062, -0.6706, 1.4954, 1.107, -3.9483, 1.1443,
747 -2.822, -2.9373, -1.7368, -1.1113, 0.7976, 1.021, 2.2881, 1.7823, -1.6829, -2.1388, -0.0636, 0.6047, 1.3691, 0.5354, -2.8472, 1.99, -0.2414, -1.8409, 2.3664, 4.6674,
748 0.81, 0.5306, 3.2216, 2.7904, 2.3222, -0.094, -1.2977, 0.6699, -0.3153, -2.0729, -0.4524, 0.1611, 0.0422, -0.9458, -1.6284, -1.059, 0.4113, -0.2203, -0.7025, -2.1711,
749 0.6469, 2.9521, -0.5269, -2.8396, -2.829, -0.4167, -2.6035, -1.8694, -1.271, -1.195, -0.6111, -1.1719, -0.0843, 4.1129, 3.9912, -0.9572, -5.8704, 3.6319, 4.0418, 2.869,
750 -1.7675, 0.6361, 2.5132, 2.083, 1.8929, -1.5061, -3.5844, -4.2969, -2.8299, -0.687, 0.8308, 1.3968, 0.3529, 4.0998, -1.6161, 1.3306, 0.56, -0.5129, -1.6573, 2.7621,
751 -4.0964, -1.5173, 1.2551, 0.2978, 1.5682, 0.3497, -1.4315, -2.0554, -0.5756, 2.5392, 0.79, 3.4286, -2.9558, -1.7034, -0.8459, 1.0513, 5.1871, -2.5294, 1.2695, -0.0257,
752 0.0328, -1.2155, -1.2836, -0.9363, -1.2229, -1.693, -1.8595, 0.3399, -1.5276, -1.0107, 6.404, -1.9072, 0.7733, 0.6079, 2.8719, 3.0211, 2.307, -3.5448, 0.3434, -0.5002,
753 -6.6638, -3.5679, 2.7288, 3.1465, -1.8044, -3.2026, 0.3954, 1.5738, 0.684, -0.5029, 1.1915, -2.4277, -2.892, -0.4612, 0.5352, 2.0495, 4.9107, 0.7993, 0.1809, 3.327,
754 -7.7693, -2.7271, -0.5302, -1.6862, -2.675, -4.1941, 6.2224, 4.1406, 1.2187, -0.8566, 3.217, 2.7593, 3.3324, -2.3093, -1.4924, 1.2643, -2.9807, 2.3328, 4.673, -1.9398,
755 -0.3214, 0.7654, 1.4453, 1.0347, 0.7854, -0.0281, 0.6653, 2.1756, 2.5539, 2.4886, 2.8291, -2.3264, -5.6113, -4.1472, -2.1955, -0.1794, -0.8897, -2.9162, 2.0658, 1.8062,
756 0.0689, -0.0814, 0.5156, -0.9104, 1.9645, 1.489, -0.7622, -1.4287, 1.4489, 2.2731, 1.0561, 3.0605, 2.5928, -3.3062, -2.8865, -3.6767, -3.9506, -2.1727, -0.4806, 5.1867,
757 -2.7262, -0.408, -7.2353, 0.2532, -1.7494, 4.8406, 2.4161, -8.2402, -0.3311, 1.0612, 3.376, -0.5373, 3.2052, 3.7144, -2.9286, 10.7765, 4.9188, -8.1638, -0.8809, -1.3612,
758 3.8706, 1.5102, 0.378, -7.459, -0.9006, 2.4899, 2.468, -2.4184, -1.4186, 0.2908, 2.1056, 2.4328, 4.226, -3.9887, -6.7913, -1.0651, 2.4289, 0.5874, 4.8024, -3.5488,
759 -1.2691, -4.1749, -2.7407, 1.493, 1.4665, -0.9212, -1.463, -5.1747, -2.2251, 0.8474, 0.854, 6.6525, 0.1651, -0.5706, -0.3287, 3.1547, -1.46, 0.8291, 2.5923, 2.2733,
760 3.8347, 2.4921, 1.8361, 2.4264, 0.2839, -2.7167, 0.2831, -0.5469, -0.6398, 0.3108, 1.0194, -2.1389, -0.8456, -4.7666, -2.5049, 1.2075, -5.6326, 1.3761, 3.1197, 1.602,
761 -3.7739, -1.8529, 0.6063, -0.8541, -1.637, 3.6233, 0.8975, 1.9643, 3.5106, -0.3623, -2.4744, -0.7625, -0.7853, -1.5705, 0.2237, -0.6207, 0.0761, -0.4742, 1.5632, 2.7029,
762 1.157, 0.8704, 1.6827, 1.2654, -0.5848, -2.69, -2.6615, -0.9589, -1.6641, -2.7103, -1.4381, -0.4901, 1.8045, -1.5216, -1.1394, 5.0021, 4.1235, 1.555, -3.7877, 2.1859,
763 2.542, 1.6423, 0.7395, 0.8846, 0.9016, 2.7752, 3.3824, 2.5574, 0.4625, -2.0442, -1.8686, -0.186, -1.7933, -5.0038, -3.5773, -1.2917, -2.0519, -1.8556, 1.0146, 2.7701,
764 -4.4081, -3.4569, -0.8021, 0.2773, 2.5574, 2.3862, 1.3118, 0.1408, 0.6688, 1.9053, -1.5497, -0.5855, 1.2457, -0.5521, 0.963, -2.247, -2.8924, -3.743, 6.1844, 2.5961,
765 0.4138, -4.3685, -4.3743, 3.3166, 1.9814, -1.9703, -1.1246, -1.8788, 1.8555, 2.5293, -0.6354, 0.3032, 3.9855, 0.4439, -1.3412, -2.6733, 1.5434, 2.8406, -1.39, 0.543,
766 -0.9949, 0.7752, 0.5153, -0.3382, 0.759, -0.3806, 0.6362, -0.0446, 0.6992, -2.3407, -2.218, -0.8794, 1.9075, 1.9883, 2.6403, 1.4665, 1.1384, 1.9497, -0.4373, -6.842,
767 -0.369, 1.5979, 3.652, 2.5947, 0.9915, -0.4587, -1.5761, -1.3889, -0.8595, -0.0002, 0.3336, 2.0392, 1.9215, -1.5962, -2.1409, -2.1868, -2.0225, -6.9604, 4.1862, 2.2427,
768 0.7081, 1.2472, 1.2274, -0.7827, -1.3963, 0.1531, 1.0164, 1.122, 1.4236, 4.7449, 4.197, -1.6566, 1.4602, -0.4324, -5.0812, -4.6776, -3.2034, 0.202, -0.8325, 0.5609,
769 -0.8996, -1.1981, -0.4982, -3.3678, -3.1656, -0.484, -1.6889, 1.4162, 1.8691, 1.8944, 0.6984, 2.1971, 0.7659, -0.3399, -1.054, -1.9648, 4.8986, 2.2357, -0.435, -0.8795,
770 -3.0303, -1.1024, -3.6351, 1.8563, 2.2581, 0.9526, -1.318, 1.052, 0.9676, 1.4472, -0.2536, 1.6459, 0.5539, 2.7964, -2.3045, 3.1405, -0.8848, -0.5008, -4.0553, 0.4143,
771 -2.0566, 0.3509, 1.5804, -0.1468, -1.2009, -5.1236, -1.6316, -0.6083, -0.2262, -3.8727, -1.4106, 4.1461, 2.8353, 5.5841, 2.0344, -1.3445, -0.2669, 1.6597, 0.4425, -0.7448,
772 0.4237, 5.5027, 3.4466, -0.9733, 1.1101, 0.3187, 0.4016, -0.8934, -4.1773, 1.2529, -1.0141, 1.7716, -1.4207, 2.0071, -6.7629, -1.426, -0.8769, -1.9766, 2.062, 1.2241,
773 0.525, 0.4342, -1.3517, -2.8754, -3.0586, 0.6098, 2.2679, 1.4929, 1.4608, 3.1011, 1.506, -4.8013, -7.5268, -0.6504, -0.503, 2.778, 2.8557, 1.0462, 3.4571, -0.7675,
774 3.573, 1.8714, -0.1581, -1.7722, -0.3433, -2.7056, -3.0806, -1.91, -3.1355, 1.0548, -1.9906, 0.4699, 0.0873, 2.5566, -0.1726, -0.8702, 2.1464, 4.3968, 5.0995, -5.1171,
775 -0.6968, -1.4896, -0.0495, 0.8149, 1.4216, -0.0327, -1.7535, -2.2313, -0.321, 1.9568, 4.8784, -1.9324, -1.8058, -2.6431, -3.7316, 0.3685, 1.1306, 4.9893, -0.2577, 1.3848,
776 -1.4341, -1.1497, -1.8056, 0.1413, 2.571, 2.939, 0.7055, -0.4196, -0.2614, 0.1608, -0.6195, -0.3637, 4.1643, 0.3576, 0.0984, 2.2749, 0.4728, -7.315, -0.1921, -0.3248,
777 -4.2895, -7.0396, -4.8802, -1.5844, 1.4442, 1.8886, 0.5829, 0.1608, -2.6352, -1.0632, 0.4985, 3.2097, 6.327, 9.0622, 8.0546, -0.4311, 2.12, -2.0642, -2.9293, -6.4319,
778 -2.8918, -0.9105, -1.1049, -1.3358, 0.0333, -0.4429, 1.114, 3.2177, -0.2479, -0.9423, 2.0518, -3.4204, -3.3752, -1.508, 4.5184, 3.5104, 0.837, 0.3279, 4.1906, -3.6215,
779 1.1012, 2.83, 4.9338, 4.9135, -1.4413, -4.6933, -2.9852, -2.2104, -2.0709, -0.2446, -1.7323, 0.446, -0.3491, 0.7293, 1.2549, 1.552, -1.6591, -0.0263, -1.3091, 0.9607,
780 -3.8105, -2.2705, -0.4801, 0.003, -1.0835, -0.8967, -1.848, 4.3428, 2.2775, 1.1261, 1.5948, 4.4091, 3.5564, -2.1928, -2.8051, -1.2385, -1.6399, -0.9968, 0.5731, 1.3796,
781 4.5581, 4.2833, 0.3675, -0.5438, 1.94, 3.0816, 0.3261, -0.8096, -2.6679, -2.1086, -0.8131, -4.9186, -3.634, 5.7405, 0.0185, 0.6308, 2.5276, -4.0355, -1.8846, -2.0583,
782 -1.2863, -0.264, -0.1222, 1.8197, -0.8215, -1.4173, 6.3047, -1.3136, 2.0735, -0.1627, 3.0262, 1.5599, -2.3044, -2.9292, -2.1284, -0.006, -0.2974, -0.4468, 0.2977, -1.5818,
783 -0.3043, -4.9833, -4.4641, 1.6692, 5.7638, 4.6547, 3.7525, -0.961, -3.955, -2.2488, 0.7885, 4.2621, 3.6322, 2.1375, -6.9698, 1.9153, 2.5541, -3.4886, -0.8469, -2.9081,
784 1.6869, -2.2603, -5.3537, -1.924, -2.3796, 2.8412, 5.8922, -3.3838, 0.7866, 3.3273, 0.722, 4.1493, -2.8075, 1.2195, -4.122, 2.7912, 5.5751, -0.9361, -3.796, -2.0281,
785 1.8743, 1.5687, 0.9347, -0.0119, 5.1974, -0.9505, -1.5819, -0.0387, -0.2355, 2.4835, -2.718, -2.1816, -1.0347, -1.5606, -1.4552, 0.4355, -1.6713, -3.1551, -0.2146, 4.3156,
786 -0.5064, 0.6473, 1.6157, 0.4031, -0.7786, 0.4664, 2.3609, -0.8533, -2.7426, 0.0584, 3.6047, -1.3728, 0.0256, -2.0089, 0.7575, -3.1106, -1.7839, 0.971, 1.5709, 0.6757,
787 -0.1854, -0.4792, 0.2327, 0.5721, 1.3762, 0.9344, 1.6367, 0.2158, 0.6455, 0.9744, -3.1471, -5.2734, -4.3577, 3.1646, 3.1365, 2.2803, 1.2303, -1.996, -1.5643, 0.6037,
788 1.554, 2.1016, 2.3825, 0.8004, -2.0847, -2.7548, -1.5073, 0.1971, -0.2707, -0.769, -1.8324, -0.6385, -4.5361, -6.8801, 5.4599, 2.666, 1.1252, 2.285, 1.3862, 1.3159,
789 -2.3092, 8.5984, 0.5061, -0.6741, -2.467, 3.2934, -0.668, 2.0327, 0.6889, -1.8602, -0.9325, -1.2001, -4.3458, -2.5628, 0.6948, -1.1889, 0.4479, 2.595, 1.2931, -1.9416,
790 0.8421, 1.5717, 0.5751, 0.5951, 0.4783, -2.2142, 0.3553, 6.0828, 3.0287, -2.3343, -3.2264, -0.7759, -2.009, -0.3873, -2.4778, 0.6768, -3.499, -0.8957, 4.2903, -0.6766,
791 -0.6942, 8.6603, -5.4134, -0.8727, -0.3504, -3.3092, -0.5586, -0.2913, 2.8905, -3.0583, -2.9724, -1.747, 3.325, -1.1022, -4.4193, 7.6704, 0.5149, -0.7173, -3.6, 6.0453,
792 0.6802, 1.0947, 1.2451, 3.8611, 4.5266, 1.8951, 0.7625, 6.226, 2.5223, 4.8966, 1.838, -0.3753, 1.3861, -7.5361, -6.881, -3.7307, -4.9193, -2.5727, -4.5778, -0.3414,
793 -1.4648, -1.9631, -1.4302, 3.2813, 2.7021, -1.3306, -3.5822, -3.4123, -2.6251, -2.554, -2.983, 1.7868, 1.1612, 1.7944, 0.6471, 3.7619, 3.5844, -0.436, 2.9666, 0.0957,
794 -2.6065, -0.4815, 3.7667, 3.2609, 1.4317, 5.8806, 0.0973, -3.3441, -3.2874, -4.9485, -1.6589, 0.7537, 0.3424, 0.9215, 3.8135, -4.2041, -1.8751, -0.8917, 1.0067, 2.0227,
795 4.0705, -1.6316, -3.7042, -1.3612, 1.3654, 1.6949, -0.0461, -0.428, 2.9316, 0.2615, -3.3312, 0.4341, 1.2323, -0.8543, -0.862, -4.8579, -6.1758, 3.1382, 4.934, 3.1899,
796 -4.1097, -4.1313, -2.7947, -1.2657, -0.6757, 0.0158, -0.2664, -0.7288, -2.8256, -1.9407, 0.4965, 2.0938, 4.2596, 1.7443, 2.092, 3.1468, 3.6217, 1.9383, 0.0884, -0.7586,
797 -0.5474, 3.7117, 4.4423, -1.1991, -3.2034, 0.2008, -1.1999, -0.3645, -0.3658, -1.5068, 4.3945, -0.5362, -1.4209, -0.9138, -0.075, -0.959, 3.3133, 2.7513, -7.0608, 0.5385,
798 -0.2792, 1.018, 0.1758, 4.6409, 0.999, 0.8572, -2.2212, -4.3593, 1.021, 5.0992, 3.1964, 1.4429, -1.7425, -0.9214, -2.3245, -1.3975, -6.8773, 2.8027, -1.1862, 0.056,
799 1.7064, 0.3215, -0.2518, 0.0527, -2.5377, -4.4163, -3.0416, -0.1822, -1.1887, -2.941, 0.6761, 3.4948, 1.6101, 1.2626, 0.2612, 5.622, -3.9114, -1.0915, 4.1888, 0.3661,
800 -1.7866, -1.1389, -0.0309, -0.9349, 0.3853, 1.9195, 0.2339, 0.3886, 0.9745, 1.4208, 2.5313, 4.3943, -4.636, -2.5445, -2.1898, -2.533, -0.3527, 4.7621, 0.5928, -1.4558,
801 7.8057, -3.8468, 0.8827, 0.8768, -4.7631, -5.1731, 0.0664, 5.3199, -1.789, -4.3428, 1.9966, 2.9221, -4.5512, 5.176, 0.582, -0.2561, -0.2887, 0.6505, -0.8654, -0.4024,
802 -2.578, -0.0834, 0.144, -1.6096, -4.137, -4.824, -1.6968, 2.0832, 4.4015, 2.3414, 0.0326, -1.7738, 3.0088, 2.5338, 2.2405, 0.7822, -3.427, 2.3235, 0.3274, -0.0892,
803 2.1843, 2.593, 1.3745, 1.7373, 2.8715, 2.7285, -1.1274, -0.1783, 0.9497, 1.0004, -0.2974, -0.2919, 0.6463, 0.2228, -1.5085, -5.8708, -3.691, -0.8536, -2.5539, 0.0647,
804 -1.6643, -0.8616, 0.2098, 2.2486, 4.6647, 3.854, 2.3834, 1.3656, -0.2611, -0.7523, -0.2703, 2.863, 1.157, -1.6263, -4.3844, -3.5346, -0.0484, -0.8649, -4.9645, 0.4867,
805 0.6824, 1.0939, 0.6691, 0.3291, -0.2396, -0.9714, -0.9487, 0.4056, -0.8422, -1.0662, -0.8121, -1.8756, 1.8363, 1.0681, 3.7568, 2.7493, -2.279, 1.4171, -4.9986, 0.0258,
806 -2.0461, -1.9677, -1.8134, -2.6831, -3.0621, -1.6874, 2.2873, 0.6491, 1.7878, 1.1808, 1.5028, -1.154, -1.2923, -0.0603, -3.5107, 6.4917, 4.0814, 1.4288, 0.0396, -0.1721,
807 1.7926, 0.64, 0.0107, -3.4114, 12.2384, -4.2391, -4.1672, -5.5139, -1.6966, 5.3015, -0.9447, -4.0014, 3.1093, 5.2076, 5.6201, 2.3962, -5.3615, -1.8057, -0.2628, -4.9121,
808 1.2301, -0.2653, 0.0535, -2.1294, -3.7763, -2.5405, -1.3165, 1.3892, 1.1754, 1.8095, 2.3931, -0.531, -0.8291, 0.5926, -0.2725, -7.2218, 1.8619, 3.8534, 3.4226, 1.1011,
809 -4.1789, -3.5276, -0.8324, -0.4176, -2.4, 0.0369, 0.9853, 5.4189, -1.8625, 4.5416, -0.0534, -2.2531, -1.839, 3.0263, 1.3992, -0.9141, -0.2291, 0.6856, 2.4454, -0.0313,
810 -6.4975, -4.6128, -3.3675, -4.8986, -0.8354, 2.3584, -0.6088, 4.1352, 0.6068, 0.7211, 0.275, -2.0557, 0.4476, 2.7831, 4.6078, -0.4014, 5.9849, 2.1061, 1.2312, -1.9795,
811 1.323, 1.1384, 1.2773, 1.715, -0.7509, -3.8269, -1.129, -0.1851, -3.0673, 2.4551, -1.8006, -0.5768, 2.5367, -0.4358, 1.0236, 2.8956, 4.5161, -0.4242, -3.2309, -3.4534,
812 -0.3567, 2.4123, 4.0459, 3.3988, 2.0862, -2.1774, -5.126, -1.093, -2.2588, -0.1938, 0.5021, -0.2723, 1.0175, -2.6722, 0.0196, -1.3546, -1.6702, 0.808, 0.6509, 2.2336,
813 -3.1316, -2.5501, -0.7668, 1.9764, 1.8647, -0.0801, 0.9053, 0.9563, -1.0947, 0.3992, -1.9982, 2.2428, 2.0122, -5.4193, -2.6261, -0.7274, 0.7121, 1.7109, 3.9486, 1.666,
814 -7.9949, 4.0953, 3.7255, -1.4546, 8.0933, 1.7853, -4.2627, 4.4208, 9.6075, -2.0281, -0.5418, -3.566, -1.9219, -6.8006, -1.4426, -1.872, 6.0536, -6.8174, 0.7937, 0.1276,
815 -1.9787, -1.0115, 0.4548, -0.6009, 1.0489, -0.3883, -3.8168, 3.5539, 1.8044, -0.802, 2.2377, 4.013, 2.5264, 2.9341, 2.9402, 3.194, -12.1756, -4.5827, 0.714, -0.0649,
816 -2.6937, -0.9969, 0.6136, -0.2092, 0.1112, 0.1733, 0.0276, 0.6804, -4.181, 0.4835, 3.1126, -0.8365, -1.6005, 3.1133, -1.3297, -0.4657, 2.8302, 2.713, -2.7204, 1.175,
817 -4.2305, -1.0868, 0.5304, -0.1415, -1.2124, -0.8981, -0.879, -0.8763, -0.9777, 1.0148, 4.1145, 2.1714, 1.231, -1.6938, -1.4429, 1.2355, 6.6877, 0.2382, -3.2655, -0.5189,
818 -2.1503, -3.4325, -3.4567, -1.0918, 0.5993, 0.3527, 0.3437, 0.2288, 0.7821, 1.0173, 2.2607, -0.9887, -0.3595, 4.4457, 3.707, 1.5475, -3.7173, 0.7682, -0.5101, -0.3462,
819 -3.7019, -3.2897, -0.3993, 1.1225, 4.7873, 3.25, -1.8347, -2.0699, 0.0727, 1.2966, -0.1512, 1.4478, -2.4263, -0.3987, -2.4159, -3.3225, 2.8445, 0.7735, 0.8954, 3.5197,
820 0.0807, -1.1966, -2.9464, 0.8465, 1.6234, 1.1215, 1.2824, 3.7187, 2.3234, -3.7329, -7.3924, -3.2192, -4.4371, -4.8564, 3.1927, 2.3654, 4.5154, -1.033, 4.4531, 3.291,
821 0.0329, 2.1961, 1.8627, 0.509, -2.3566, -3.1635, -1.4865, -3.4766, -3.4834, -4.5095, -2.404, -5.545, 7.4389, 3.1752, 2.6905, 4.3345, 1.8695, -0.0444, -0.0458, 2.4056,
822 -4.2525, -4.2615, -2.8448, -1.4174, -1.4188, -1.0941, 0.0321, 2.7304, 1.6246, 3.7714, 3.6887, 2.3979, 1.9374, 0.7696, -7.0469, 0.1811, 3.9202, 4.8839, -3.2038, -0.3977,
823 -0.4109, -0.9615, -1.1887, -1.3425, -1.0669, -2.7829, -2.9395, 1.289, 1.6984, -0.5601, 1.6775, -0.5469, -0.8102, -0.2298, -0.7565, 0.3451, 3.1792, 2.2226, 4.5535, -1.3689,
824 -5.7264, -3.6531, -1.3521, 0.1463, 1.711, 3.189, 0.7838, -1.0176, -0.2195, 1.4384, 0.0207, -0.4968, -1.0491, 0.1749, 1.0739, 2.0378, 1.358, 1.236, 0.4429, -0.098,
825 0.7773, -0.8979, -1.2165, -1.9337, -2.9157, -4.0101, -0.3148, -4.646, -4.2945, 4.177, 5.5969, 1.4549, 3.5448, 1.4079, -0.8343, -3.2017, 5.5239, 2.2268, -0.3838, -0.0607,
826 -0.6985, -0.6307, 2.4635, -0.5381, -0.2883, 3.4018, 2.1088, 2.918, -0.5123, -0.9613, 0.0579, -4.3385, -3.8027, 1.0743, 5.0578, -1.828, -2.2439, -4.7171, 0.9386, 2.5388,
827 -4.5218, 0.1558, 2.838, 2.3948, -1.9436, 0.6339, -0.7954, 1.9788, 1.5836, 1.1696, -4.5526, -0.564, 1.4447, 7.0584, -6.8023, -4.5393, -6.0449, -0.5031, 6.1354, 4.8739,
828 0.3624, -1.2047, -2.0776, -1.5816, -0.7523, -0.4259, 1.9866, -0.1702, -0.471, -1.9514, -1.5113, -0.2099, 2.707, 3.8409, 4.1635, -1.6517, 0.8031, 3.118, -4.9637, -0.01,
829 3.3248, 2.1375, 1.3785, 0.2103, 3.0519, 1.4244, 0.2968, -0.3016, -1.2728, 0.9142, 0.2763, 0.9396, 2.3345, -1.6742, -3.9431, -3.4421, -2.5066, -1.7463, 1.1359, -2.5381,
830 7.3832, 7.8862, -6.4414, -8.9767, 0.1372, -3.3099, 3.3247, -2.2516, -2.6663, 1.5419, 7.2572, -0.6762, -1.4552, 3.0048, 6.921, -8.5959, -2.6649, 2.5301, -0.7893, -2.1588,
831 1.3303, 0.1631, -2.4438, -1.2379, 0.9953, 2.7203, 1.9038, 1.2786, 0.3887, 2.8669, 0.368, -0.1846, 5.6338, 2.1238, -1.0482, -5.2051, -1.0787, -7.2281, -1.5184, 0.1722,
832 0.1645, -0.9895, -2.0311, -3.1149, -3.298, -2.1249, 2.0221, 2.1048, -0.3058, -1.0676, -2.5289, -1.4215, -1.7517, 2.914, 4.1244, -0.6494, 2.6877, 3.2611, 2.5839, -0.5792,
833 -0.4639, -1.9119, -0.6903, 1.0816, 1.798, 1.1866, 0.422, 1.5316, 0.8944, -2.981, 5.6782, 3.5367, -0.9955, 2.4778, -1.9477, -3.1693, -0.034, -1.9442, -1.8186, -2.6506,
834 -3.9601, -3.1838, -1.3333, -0.9936, 0.4708, 1.864, 0.2776, -3.5639, -1.8523, 3.8979, 6.3274, 1.9935, 2.4867, -0.2835, -0.1329, -0.9778, 1.4936, 2.4315, 0.5084, -5.4702,
835 -1.9007, -8.9624, 0.7258, -2.6244, 1.8683, 0.7413, 8.169, -2.357, -4.2143, -5.3821, 5.3979, -0.3396, -0.0209, 2.4866, -1.7903, 8.5769, -2.6396, -4.5135, 0.4288, 6.3503,
836 2.3682, 1.2735, 1.0581, 0.7198, -1.3884, -1.1783, 2.7862, -0.315, -4.4216, 1.0457, 0.802, 0.2322, -1.8255, 0.9933, 1.5522, 4.2681, -3.4105, -1.8681, -3.1691, 0.4773,
837 0.1022, 3.5273, 4.7298, 1.5753, -3.6041, -2.406, 0.8414, 1.2204, 1.0785, 1.4517, 0.9533, 1.0682, -0.0095, -1.2482, -3.715, -1.4924, 0.0586, 0.2151, -3.5086, -0.8381,
838 2.6097, 1.3046, 0.1797, -0.8433, -0.8002, -0.6737, -0.7817, -0.0181, -1.8564, -0.0021, 1.7429, 2.1363, 2.4019, 0.852, -1.2013, -2.3776, 0.1614, -1.6535, 0.2922, -1.473,
839 -1.1555, -1.9989, -3.7971, -3.5419, -1.7702, 5.6208, 1.6756, -3.4769, -2.2174, -0.5921, -2.9465, 2.4449, 3.2181, 2.5732, 0.5741, 1.4008, -1.6104, 2.6683, 4.0017, -1.0706,
840 2.6808, 2.4971, 2.2595, 2.6039, 2.5012, 2.7248, 0.3061, -0.5761, -0.0415, -2.4607, -1.2162, -0.08, -2.7145, -3.3777, 0.3468, 1.3821, -2.901, -0.5334, -2.3262, -1.075,
841 -1.4573, -0.7869, 0.2356, -0.1795, -1.7997, -2.4756, -0.7083, -1.2917, -0.2409, 1.8121, 2.3854, -0.078, -2.6742, 0.8926, 3.1169, 2.4329, -3.2335, 1.5184, 1.6752, 0.8566,
842 1.3578, 1.5299, 1.0786, -1.596, -3.3648, -1.6673, 1.3592, 5.7139, -0.3364, -0.8154, -1.0911, 0.3285, 1.2167, -6.5169, 3.5759, 0.3841, -3.4189, 2.252, -0.3564, 0.3665,
843 -3.9427, -4.1692, -3.9599, -2.7914, -2.7852, 0.8501, 2.1268, 3.1929, 2.9997, 0.9798, 3.7115, 2.7044, 0.8023, -1.3597, -0.1213, 1.8505, 0.8537, 2.357, 0.4425, -3.7419,
844 1.1259, 1.7278, 1.7181, 1.0824, 0.9378, 2.2855, -0.4426, -2.0998, 0.2868, -2.3258, -2.4774, -3.503, -2.192, -0.0403, 0.0689, -2.1823, -1.7516, 0.3348, 2.6371, 4.8097,
845 2.6282, 3.1949, 1.4763, -1.8168, -2.3026, -0.1157, -0.0177, 1.6877, 0.85, 0.1002, -0.5211, 1.2286, 1.5164, -0.6411, -0.9348, -3.1872, 0.1863, -3.1762, -3.7899, 3.6345,
846 0.6239, 1.6179, 1.2014, 0.2608, -1.992, 4.7736, 2.9884, -1.6687, -1.57, -3.2904, 2.3265, 0.1217, -0.6529, 1.1537, -1.343, -3.266, -0.7427, -0.3946, -0.8553, 0.7078,
847 -2.5785, 3.3274, 0.7827, -1.1641, 0.3099, 2.093, -3.8923, -2.1233, -0.2174, -1.0352, 2.3827, 3.2008, -1.3061, -1.3553, 2.0138, -4.8137, 2.2926, -0.4492, 0.2262, 2.3061,
848 0.703, -0.6796, 0.6702, 1.233, 0.3286, -1.1249, -0.2281, 0.9008, -0.4257, 1.5252, 0.1413, 3.8708, -2.7125, -0.1048, -1.3046, -2.6469, -1.7645, -0.4236, 2.6448, -0.6022,
849 -2.0396, 0.9147, 3.7884, 2.4844, -0.2561, -2.4529, 1.8969, -0.1479, 0.695, -1.2549, -4.9008, -1.2459, 0.9313, 0.6906, 5.2636, -1.1277, -0.2394, -2.2895, -2.5856, 1.8753,
850 1.678, -1.6532, -2.7599, -2.245, 0.5197, -1.6003, 4.4426, 1.0934, -0.3109, 0.9191, -3.4242, 1.3304, -1.5208, -0.9853, -0.2434, 3.9418, 0.4425, -2.2543, 4.6335, -2.0037,
851 2.2658, -0.6139, -1.3935, -0.0563, -2.955, -1.9056, 3.4601, -0.3817, -1.6475, -0.291, -0.5503, 1.7727, 0.0114, 2.6384, 2.8574, 0.5346, -5.4829, -2.6161, 0.958, 3.3952,
852 -2.9553, 0.0039, 3.9564, 2.2087, -0.9348, -1.5953, -1.378, 0.1552, -2.1548, 0.7917, 1.8242, 1.6997, -1.8826, -0.8677, -0.7876, -0.2152, 2.3842, 2.1467, 1.7116, -4.111,
853 0.7023, 1.9303, 1.0064, 0.0165, 5.4286, -1.1464, -1.0459, -2.0088, -1.2634, -2.1806, -0.6159, 0.3372, 3.405, -1.1188, -2.8596, -2.391, -0.555, 5.4226, -1.0697, -1.9937,
854 -0.8683, 0.0341, 1.1306, -1.3868, -1.9833, 2.9612, -0.7025, 0.9705, -3.1777, 4.1388, 0.7353, 0.3664, 2.0843, 0.2998, -0.405, -1.1895, 3.2137, -5.0324, 1.1351, -2.3244,
855 -1.0092, 0.5101, 2.307, 2.1852, 1.5304, -1.7001, 1.6095, -1.457, -3.9762, -1.6422, -0.2532, 1.3474, 0.8974, 0.9819, -2.2295, 4.7058, -2.038, 3.1038, -2.542, -2.3311,
856 1.9713, 1.0803, -1.0686, -1.2321, 0.3041, -0.5899, -1.6032, -0.6543, -2.1903, -2.1676, 0.3844, 0.2905, -0.5787, -1.1285, -3.3703, -0.5637, 0.3705, 2.2696, 8.3763, 0.1004,
857 -2.3313, 3.6108, -3.7738, 2.3534, -6.3897, 3.9802, 2.8098, 6.2413, 2.517, 5.126, 2.4541, -1.7202, -4.9921, -5.7179, -3.3204, 5.3271, 2.0124, -5.7657, 0.7907, -3.2116,
858 0.323, 1.0311, 1.366, 0.9706, 2.0785, 2.0724, -0.0151, -0.8301, -1.1195, -2.8044, -0.9819, 0.0417, 0.0944, -1.2077, -2.2323, 4.1593, 1.4207, -2.7654, -0.5102, -1.0909,
859 1.0182, 0.5812, 0.3232, 1.704, 1.6371, 0.0882, 0.7883, 2.0623, -2.4549, -1.7632, -0.0828, 0.1245, -1.0882, -0.0487, -2.0254, -0.8118, -5.9132, 2.5533, 0.488, 2.8199,
860 -2.1755, -1.411, 0.7926, 3.1903, 3.2045, 1.4005, 2.2246, 0.4995, 1.4795, 1.0003, 1.4155, -1.8108, -1.7649, -2.0289, -4.9177, 1.9399, 0.4644, -0.6846, -2.6827, -0.1356,
861 -2.3372, -0.8774, 1.8295, 2.5713, 0.4237, -1.62, 0.725, 1.2049, -2.5557, -1.7837, -2.0535, 1.8608, 2.0142, 1.1559, 0.414, -2.2055, 2.6316, -1.0207, -0.4407, 0.0634,
862 -6.476, 2.3566, 6.2881, 1.178, 2.2768, 0.5492, 3.6691, 1.5956, 1.5393, 0.8045, -2.4474, -1.1396, -3.0192, -2.8013, 2.1788, 0.9584, -4.0593, -1.3318, -0.6033, -1.5164,
863 -0.2224, 3.1469, 4.1918, -1.5853, -2.9401, 2.4424, -2.0556, -1.6902, 1.4657, -1.4987, -4.5783, -3.9175, 1.8499, 2.5001, -2.9926, -3.1367, 4.3814, 2.8761, -0.3135, 2.0766,
864 0.2838, 0.7448, 1.5373, 1.7127, 1.9184, 1.9954, 1.4552, 0.6636, -0.0775, -1.4076, -2.7023, -2.4765, -6.0615, -4.2297, -2.8214, 4.4402, 0.5975, 1.2302, 2.2798, 0.9178,
865 0.1873, 0.8058, 1.4948, 0.4584, -0.6762, -2.1053, -0.4098, -0.951, -0.4347, -0.3909, -1.0508, -2.5837, -1.0389, -4.2899, -4.0647, 3.8453, 2.2675, 2.8481, 4.595, 1.4936,
866 6.4165, 4.769, 2.1643, -0.5306, -1.7418, -1.1821, 0.4655, 2.4797, -1.0005, -2.7835, 0.6462, 1.054, 0.1648, -0.2195, -1.2133, -1.6876, -0.2896, -1.1843, -4.2375, -2.0895,
867 0.6591, -2.4247, -3.5305, -2.0684, 0.7993, 0.5286, -1.0223, -0.9537, 0.6266, 1.4075, 1.462, 1.6652, 1.3324, -0.3799, 1.6047, -0.403, -1.4183, -0.7574, 3.5079, -0.6351,
868 -0.7402, -0.5022, -0.0104, -0.1501, 0.0126, -0.8303, -0.6338, 0.0643, 0.7573, 4.3586, 2.2234, -0.7379, 3.8453, 0.8151, 2.8221, -1.4249, -1.4011, -3.5524, -6.4818, 1.5666,
869 1.297, 2.6835, 1.2613, -1.8292, -0.939, -1.6773, -1.9287, 1.2477, 1.3854, -1.9138, -1.0744, 1.6338, -4.8418, -0.558, -1.29, 5.2745, -2.7458, 2.6939, -0.9625, 2.2835,
870 1.8861, 3.1363, 4.0321, 1.7435, 0.5233, -0.7855, 2.0137, 0.8065, 1.2174, -4.0074, 0.586, -1.0339, -6.4815, -6.1251, 1.1641, -3.9644, -6.3895, 7.8222, 2.0846, 1.7715,
871 3.9399, 2.2907, 1.6049, 0.7588, -0.5727, -0.4203, 1.1669, 0.6185, -0.3417, 1.2484, 1.5946, 1.7091, -1.8086, -4.7596, -2.8399, -3.9325, -2.0296, -0.678, -0.7509, 3.2019,
872 -0.3222, 0.619, 2.2698, 6.3269, 5.8198, 2.6992, 0.0601, -0.5335, -1.7361, -3.6667, 0.2231, -2.3194, -2.0166, 2.496, 0.142, -3.4765, -2.9842, -0.3195, -1.1974, -2.084,
873 1.2403, -2.3646, -2.0313, 0.7252, 3.2474, 2.8194, 3.1981, 0.9009, 1.1286, -0.917, -2.4531, -2.402, 1.6229, 2.3317, -1.4971, 0.7586, -3.2903, -2.1223, -1.2864, 0.3911,
874 2.1547, -0.4814, -1.6208, -0.2568, 3.766, 2.5927, -0.5335, 0.5221, 2.1027, -1.7193, -2.1878, -1.5973, 0.4487, -3.0208, -3.0695, -0.2839, 1.21, -4.2182, 4.88, 1.3123,
875 -0.8216, 0.0172, 1.0117, 1.8195, 2.2767, 0.0322, -4.7072, -3.7244, 0.2876, 1.2946, -1.1268, -2.0514, -0.3229, 1.5642, 2.8282, 1.4525, -0.2405, 0.3745, -0.8299, 0.8658,
876 -0.5885, -0.7711, -0.1566, 0.2456, -1.1305, -2.14, -1.5832, -2.7023, 2.6573, 2.8982, -1.9439, -1.4435, 3.2616, 3.0544, -1.0646, -0.2393, 0.2808, -0.6774, -3.3509, 5.3938,
877 -2.1609, 4.7541, 2.6519, 2.9104, -0.9771, -3.4464, 1.3102, 4.9024, 3.0997, 0.1198, -0.6878, -5.0516, -2.6241, -0.139, 0.326, -3.7625, -4.6033, 5.7644, -2.7192, 0.333,
878 -0.0774, 0.0212, 1.7356, 2.6966, 3.8703, -1.264, -2.204, -3.8688, -2.8745, -0.383, -1.2433, 2.7247, 1.1808, 0.5913, 3.3839, -2.9426, 0.1962, -0.6047, -3.1975, 2.2593,
879 -1.7694, -0.8337, -1.4857, 1.6357, 3.0084, 1.4757, 0.7496, 0.4982, -0.8638, 1.0294, 3.8151, 2.548, -0.4944, -5.1598, -4.1575, 1.6819, -0.9028, -3.0629, 2.9081, -0.6201,
880 -4.1737, -1.1372, 0.4218, -0.398, -0.2873, -2.0904, -1.4241, 1.1799, 4.8192, 5.5695, 2.124, -1.9634, -0.1503, -0.2208, -2.6623, -1.214, 1.5287, 0.1773, -0.4832, 0.3844,
881 1.1759, 3.6352, 3.0816, -1.1382, -0.8341, -1.2549, 1.7627, -0.261, -1.7582, -4.6767, -1.9887, 0.8806, -0.2903, -2.9331, -3.3697, 0.3291, -2.5313, 6.3991, 2.6926, 1.0793,
882 3.1054, 0.5446, -2.7707, -3.1154, -2.4354, -2.1091, -1.9215, 1.5263, -0.5089, -2.1954, -3.0602, -1.7502, 2.0283, 3.094, 3.1639, 6.0315, 0.1168, -2.3219, 2.2755, 0.3024,
883 1.4017, 0.2037, -0.1188, 0.363, -1.7809, 1.2589, -0.0416, 0.1426, -0.29, -0.0669, -0.9365, -1.7637, -4.6543, 4.5857, 0.7173, -1.2893, 0.7992, 1.8632, 0.4734, -0.8667,
884 -0.6645, 0.3054, -0.1583, 0.39, 0.1223, 1.1996, 4.2148, 1.7843, 2.7706, 0.9297, -1.0663, 1.2711, -0.1675, -0.5861, -2.5452, -2.9107, 1.264, 0.2394, -4.6672, -1.7254,
885 1.3908, 0.5115, -0.8577, 0.3878, 0.771, 1.2838, -1.2112, -1.293, -1.9359, -2.3893, -2.5796, 1.2692, 3.1933, -0.2748, 0.2489, 3.4206, -5.3967, -3.2312, 2.6326, 4.06,
886 -3.1151, -2.4768, -1.4409, 0.082, -0.065, 0.8542, 2.7545, 0.8481, 2.7775, 3.2925, -1.1392, -0.56, 5.6459, -1.5505, 0.7937, -0.2372, -3.8294, -1.7699, -1.1681, 0.3038,
887 -1.4631, -1.5744, -1.0602, 1.2727, 5.2755, 0.7411, 2.6424, 0.9111, -1.5443, -0.8217, -2.458, -1.9627, -0.3229, -0.7005, -0.1842, 1.441, 1.119, -0.0388, -1.7254, 0.4532,
888 2.6735, -0.132, -2.0731, -1.2667, -0.0059, 0.4063, 1.1045, -0.65, 0.2919, -0.2343, -0.1432, 0.5161, -1.3203, -1.9223, -1.8439, -0.3541, 2.5902, 0.7807, 0.9691, 0.6136,
889 -2.576, -2.1039, 3.3039, 7.5737, 4.851, -1.928, 1.3509, -0.0624, 1.3149, 2.3856, -2.8836, 1.6777, 1.6919, -0.2315, 2.0672, -1.6292, -7.7877, -7.8864, -2.423, 3.2949,
890 0.1825, 1.4326, 1.8802, -0.76, -3.5028, -2.0654, -2.5905, -1.978, -1.3931, -2.0377, 2.0912, -0.7666, -1.6801, 0.1901, 1.3312, -0.8245, -0.8221, 9.1933, 2.6121, -0.4925,
891 0.6596, 0.5183, 0.0656, 0.6099, 0.217, -0.2483, 0.3752, 0.0528, -1.355, -1.959, -3.0746, -2.7901, 1.748, 0.0667, -1.3253, 1.8365, 1.2016, 0.6331, 1.5502, 1.2179,
892 1.518, -2.8697, -3.0225, 1.1901, 1.2949, 1.2425, -0.2655, -1.0124, 0.1504, 0.9476, 0.8294, 0.498, -4.6214, -0.4714, 2.314, 0.5042, 0.0042, 0.6173, 0.025, 1.1274,
893 5.2946, 0.9166, -1.6961, 2.6183, 3.7503, -0.5464, -0.4536, -2.5804, 0.7239, -3.0443, -0.9745, -0.5296, -1.2153, 0.2578, -4.9483, 0.2574, 1.6442, -1.7218, -1.0182, 3.2654,
894 -0.3113, 0.1627, 0.201, -0.6825, 0.4894, 0.3705, 0.5406, -0.5307, 2.3413, 3.1334, -0.2531, 0.7289, 0.0127, 0.8411, -0.5394, -1.5751, -4.4648, 3.3442, -1.3619, -2.4473,
895 0.7892, 1.6007, 2.2451, -0.0142, -1.8268, 1.0211, 1.1632, -0.431, 0.4809, 0.7681, -0.3119, -3.184, 1.8621, 0.7982, 3.9396, 5.5125, -9.0182, -7.2338, 1.472, 0.3673,
896 4.5691, 3.1984, 0.4848, -1.6299, -1.5279, -0.4613, -0.394, -0.7641, -0.774, -1.4705, -2.0718, -3.7739, -3.8204, -2.0882, 0.9538, 2.3794, 3.3309, 2.1292, 0.9829, 0.7475,
897 -1.7639, -2.13, 1.8133, 5.4637, 4.9096, 0.44, -0.2077, -3.2872, -2.801, -3.3973, 1.4612, -0.7884, -0.4468, 0.3167, 3.033, 3.6546, 1.5554, -2.1172, -5.0158, -0.6924,
898 -0.9691, 2.1549, 0.9464, -1.8955, -2.483, 0.5229, 1.0573, -0.1544, -2.7731, -1.7762, -1.2133, 0.4997, -0.404, 0.0598, 2.1564, 0.9676, 0.1749, -0.3066, 1.3334, 2.102,
899 0.1735, -0.6351, -2.2851, 0.3979, 2.1071, 0.8723, -1.4327, 2.7248, 2.2122, -3.8366, -6.8693, 2.9956, 2.234, 0.2392, 4.5854, 0.8064, -0.4877, -1.9451, 0.1604, -2.0173,
900 -3.0467, -2.6229, -0.6828, -1.5402, -4.5504, -0.6274, -1.5654, -1.1048, -5.0244, 1.2208, 4.3959, 1.7152, 0.8404, 2.3104, 3.911, 1.3725, 3.6004, -1.5868, -0.0242, 3.0095,
901 4.6972, -2.0723, 3.7478, -0.0539, -1.3604, -1.6975, -5.1051, 4.5477, 7.491, 0.8111, -1.5236, -2.0035, -2.3201, -1.9156, -1.8399, 2.7039, 1.1102, 2.7618, 0.1987, -8.1775,
902 4.2697, 2.1482, 1.1807, -0.8188, -0.0158, -0.9415, -3.1934, -7.6652, -5.2761, -0.4096, 0.8289, -0.6591, -0.1321, -2.2645, 2.689, 3.5308, -0.186, 2.2844, 2.1691, 2.4613,
903 -2.6176, -1.9646, -0.3365, 0.449, 1.789, 3.0096, 1.2687, 0.1913, 0.7099, 3.1055, 2.4376, 1.5156, 0.2027, -3.2954, -0.8316, 0.625, 2.5125, -1.9645, -4.736, -2.0703,
904 0.9801, -1.159, -1.1869, -1.8206, -2.6697, -2.2474, -1.9247, 1.339, 0.7955, 3.2786, 2.1796, 1.2439, 3.831, 0.9791, -3.7027, -2.0691, -3.3297, 3.47, 4.0219, -2.0091,
905 -1.9305, 1.1296, 2.7892, 3.5086, -0.4192, 1.8621, -2.4767, -4.562, -1.3151, -0.4855, 0.213, 4.0896, -0.2763, 2.9118, 1.5789, -0.3477, -0.82, 5.6054, -7.8822, -3.173,
906 3.5183, 4.1815, 1.9981, -0.8261, -1.4369, -0.3881, 1.0213, -3.8793, -3.6636, 2.2621, 1.1803, 1.7727, -0.7985, -1.2902, -5.0777, -1.2307, 0.3381, 4.4122, -1.4815, -0.612,
907 4.0477, 1.4256, -1.6604, -3.5999, -1.9136, -0.3445, 0.3946, 1.6694, 1.2905, 0.9828, 0.5724, -0.1289, 1.3498, 1.3379, 0.2067, 0.3656, 0.2492, -1.2128, -3.2905, -1.7416,
908 -2.0178, -2.6699, -1.3526, 0.2496, 0.4148, -0.8854, 1.0823, -0.6203, 1.2579, 0.4148, -2.2346, -0.4015, 1.4157, 4.8809, 6.623, -3.5608, -1.8735, -4.5603, 3.5038, 0.334,
909 1.4937, -1.542, -2.385, 3.1706, 1.4707, 0.1938, 0.5057, 3.8806, -0.0936, 0.3334, 0.4606, 1.4472, -0.903, -1.4318, 3.5118, -5.2689, -1.4235, -1.2997, 0.0053, -2.1257,
910 -3.6561, 0.1855, 0.3705, 1.1645, 0.2341, -0.8092, 2.398, -0.3274, -0.4576, -1.1851, -3.8496, 2.0281, -3.3309, 0.9466, -0.078, 1.0318, 4.0737, 2.619, -0.3495, -1.0083,
911 -0.1238, -0.3756, -0.3626, -1.1974, -3.028, -3.3983, -3.5184, -2.8303, -0.2464, -1.0525, 0.7469, 1.1667, 1.9967, 2.0536, 5.8842, 4.672, 0.6593, -0.227, -1.2558, 0.4368,
912 1.4898, -0.0036, 2.1872, 4.7731, 5.3388, 2.1104, 0.861, -1.9286, -4.4764, -2.9139, -5.8875, 0.1502, 2.3687, -3.3444, 1.8016, 2.0118, 0.348, 1.5855, -1.0664, -5.4053,
913 -0.2559, -0.097, 0.6606, -3.0637, -4.0503, -2.5522, 0.2345, 0.1786, -0.3244, -2.5706, 1.7286, 2.2086, 1.6927, 2.74, 1.934, -0.1619, 5.414, 3.6846, -5.1534, -2.2469,
914 0.7337, 0.6464, -0.7291, -0.8337, -0.3024, 0.3377, 1.5178, 1.0116, 2.585, 0.9759, -1.397, -3.2182, -3.6906, -0.0798, 3.4993, -1.9939, -5.3046, 1.4115, 4.7666, 0.0639,
915 -2.9601, -0.9321, -1.3007, -4.5012, -0.6859, 1.6271, 0.8938, 1.8188, 2.7147, 2.4868, 2.4402, 0.6577, 1.204, 2.0247, 0.2523, 1.3499, 1.0757, -5.3086, -0.2223, -2.6347,
916 1.2887, 2.2547, 3.3766, 1.8575, -1.791, -1.7548, 1.5265, 2.7964, 1.224, 1.972, 0.2687, 1.81, 3.1328, -2.586, -2.7821, -3.9778, -2.4086, -2.0066, -0.0746, -4.1265,
917 0.8108, -0.0118, 0.351, 0.2469, -0.3564, -0.0688, 2.2772, 2.9983, 0.022, -0.8672, -4.831, -2.0824, 0.0877, 2.2501, 0.0661, -8.6456, -1.6422, 4.8643, 2.3157, 2.2152,
918 -2.3502, 1.9923, 1.6641, -2.2786, 3.4633, 2.605, -3.0058, 1.5172, -5.319, -0.9994, -2.4221, 0.2495, 3.8898, -2.058, 1.1705, 0.4058, -1.2798, 2.5712, -0.5349, 0.7192,
919 5.2963, 2.758, 0.0542, -1.8363, 0.6217, 3.1975, 0.8761, 0.6926, 0.1889, -2.2049, -2.6639, -2.3949, -0.455, 0.9028, 0.9417, -2.32, -1.6049, 2.2215, -3.0876, -1.184,
920 0.0332, 0.6867, -0.5444, -2.656, -2.3272, -1.9975, 2.7492, 3.4613, 1.2531, 2.297, 0.6826, 1.6161, 0.8081, -2.8567, -0.251, 3.1363, -4.7699, -0.8591, 1.4746, -1.9362,
921 0.1179, 0.1304, -0.0905, -0.0885, 0.5876, 2.0857, -0.3875, -1.3306, -0.8957, -0.1982, 0.8458, -0.0513, -2.2349, -5.5634, 7.5385, 3.9965, -1.063, -1.5645, -2.102, 0.268,
922 1.5416, 0.4773, -0.0338, 0.6704, 0.3091, -0.0982, -0.8312, -1.8586, -2.1668, -3.0698, -3.6621, -2.8717, -0.1465, 2.9749, 3.0473, 2.3156, -0.0362, 0.7605, 1.1471, 1.5312,
923 -1.4651, -1.1492, -0.67, -0.6012, -0.1247, 1.155, -0.2106, -1.2695, -0.4411, 1.1446, 4.1491, 2.66, 1.3124, 1.6069, 0.6316, -0.4851, -2.5715, -4.3867, -1.004, 1.7189,
924 0.2437, 0.6555, 0.3411, 0.8466, -1.7425, -0.1636, 6.1311, 0.6211, -2.703, -1.5009, -0.1744, 0.866, 1.3589, 1.249, 1.1273, -2.7402, -0.0949, -1.544, -1.861, -0.9159,
925 4.3927, 3.3672, 0.9009, -1.2521, 0.623, -0.5206, 0.8245, -0.9087, -1.8374, 0.0097, -3.1469, -2.4307, -3.0482, 0.2541, 1.948, 5.7092, -3.3716, -3.2953, 2.6836, -0.9014,
926 2.2171, 0.1913, -1.6779, -0.9585, -1.3241, 0.2292, 1.4881, 2.7969, 0.2756, -3.8207, -2.4695, -0.3208, 2.3024, 2.5414, -0.1815, -0.2933, 2.0837, 0.9892, -1.0861, -2.9823,
927 0.1186, 0.1645, -0.3865, -0.8001, -0.3047, -2.3398, -0.6229, -0.0641, 0.8491, 1.7026, -1.1341, -2.0704, -0.3123, 0.1814, 3.882, 1.2943, 0.4627, -0.5672, 0.5181, -0.5712,
928 -0.1015, -2.3234, -2.352, 0.9949, 2.2704, 0.9946, 0.356, 0.9113, 0.1017, -0.453, 0.852, -1.0302, 0.8806, 0.3674, -2.6615, -4.89, -2.9475, 1.9045, 2.6392, 4.4864,
929 2.3941, 1.701, 1.9067, 0.4931, -1.4348, -2.6074, -1.1597, -1.0504, -3.046, -2.8157, -0.6597, -0.592, -0.3406, -1.123, -0.8586, 4.9381, 2.8734, 1.4518, 2.5923, -2.6625,
930 -0.8669, 1.9301, 3.2551, 6.1577, 2.0399, 2.6785, 0.738, -0.3115, 4.7391, 1.4868, -6.0175, -7.4317, -4.5623, -0.859, 3.8966, -0.1349, -2.5476, -0.008, -1.4441, -2.7383,
931 -1.8064, 0.5147, 0.58, -2.6271, -3.9359, -2.9321, -2.4785, 0.6104, -1.7343, -0.3653, -0.3024, 0.235, 2.3057, 1.9998, 2.2392, 1.9124, 3.0438, -0.2241, 5.1672, -2.202,
932 1.858, 3.3342, 3.04, 1.067, 0.2251, 0.548, 1.7906, 0.7871, 1.285, -0.3795, -2.015, -2.3713, 0.5611, 0.5214, -0.8547, 0.0171, -1.8463, -2.7006, -1.7828, -3.0844,
933 1.4841, -0.81, -2.4242, -1.8509, -0.9746, -1.0553, 4.8924, 1.3818, -1.8605, -4.3708, -2.0142, 6.4457, 0.9506, -0.5924, 0.1104, 2.4175, -0.6754, -0.8459, -0.1554, -0.053,
934 -0.0877, -0.9877, -1.7358, 0.3853, 1.1022, 1.2975, 4.3189, -1.9877, -3.1833, 1.0392, 0.1796, 4.1158, 1.465, -1.6177, 1.6123, -4.1615, -3.2584, 1.2187, -4.3136, 4.5989,
935 0.4487, -0.1107, -2.0381, -0.2337, 2.5745, 2.8339, -0.0417, 1.4413, -1.4483, -1.1675, -6.2515, -6.936, -3.2717, 4.8492, 0.9246, -0.975, 4.1724, 1.7821, 1.382, 2.0655,
936 0.1081, -0.6949, 0.1665, 0.6685, 0.879, 0.7273, 0.1766, -0.0005, -0.2218, -0.4294, 0.4489, -0.4843, 0.2008, 2.1975, 4.5024, -1.0296, -1.2026, -2.5547, -1.0944, -2.3636,
937 2.3396, 2.1543, 2.2429, 4.7578, 0.839, -0.8895, 4.6297, 0.4985, -2.3653, 2.1787, -1.0612, -0.8953, -6.2919, 0.5546, -0.4272, -0.967, -1.9781, -0.4692, -5.5295, 0.6795,
938 0.153, -2.1926, 2.1973, 4.5005, -1.3453, 1.3286, -2.031, 1.0783, -1.351, -0.7983, 0.6783, -3.4857, 5.3977, -3.6561, -3.5986, 6.0882, 0.1428, -0.9697, 3.0219, -5.1583,
939 -2.6086, -0.0766, 2.7222, 2.0552, 2.4096, 3.0319, 1.0596, -0.1283, -0.8104, -0.2732, -1.4259, -4.0229, -1.4469, -1.6716, -1.1861, -0.9216, 0.678, -0.0004, 2.0118, 0.6041,
940 1.8333, 3.1078, -1.8097, 1.1817, 3.7643, 0.5185, 1.9828, -0.3454, 1.2321, -1.0494, -6.2996, 3.9399, -4.6043, 2.7296, -2.2906, -1.7821, -0.5503, -0.1687, 1.5615, -2.9514,
941 -1.9822, -1.787, -2.0807, -0.6471, 1.7376, -0.7108, -0.9897, 0.1273, -1.5435, -3.408, 1.1979, 3.2003, 1.0189, -0.9731, -1.079, -1.9655, 3.5511, 1.2692, 3.4593, 1.6049,
942 1.8097, 0.7952, 2.3044, 2.0422, 0.0385, -1.489, -2.6817, -2.4115, -2.0814, -4.7349, 1.3168, 5.2099, 2.0691, 0.2209, -0.3967, -1.391, -0.0825, -1.397, -1.3074, 2.1664,
943 -0.6317, -0.6961, -1.7818, 1.7212, 1.8896, 0.7627, 6.4133, 0.0239, -2.0812, -0.634, -0.8745, -0.8436, -3.5167, -3.0992, -0.4403, -5.0217, 5.7819, 4.7221, -2.9383, 1.2443,
944 -0.8542, -4.8873, -5.4381, -4.263, -4.129, 0.7749, 4.7768, 0.2842, 0.3115, -0.282, 0.2149, -0.1804, 0.6193, 5.7873, 5.1866, -1.3257, -3.0389, -1.9693, 8.9711, -0.5589,
945 -1.7203, 0.3016, 0.2697, 0.0913, 0.2499, 2.9554, 0.332, 0.0927, -3.0516, 1.3578, -0.8456, 1.2764, 0.1248, 3.9102, 2.8147, -2.3847, -6.7532, -2.2614, 1.9868, 1.2535,
946 2.3588, 1.8978, 1.0798, 1.0217, 0.8258, -0.3312, 0.8967, -0.1754, -0.3981, 1.015, -0.3879, -0.8493, -1.269, -1.1797, 1.5079, -0.1598, -2.3607, 1.1269, 2.648, -7.2674,
947 1.1746, 4.6165, 5.494, 3.4461, -3.9021, -1.605, -0.1323, -0.938, -0.4156, -1.9, -0.2856, -1.2349, -3.6515, -2.9147, 0.053, 1.1469, 0.2371, -1.3253, 3.8834, -1.7466,
948 -2.2758, 1.8844, 4.6711, 2.2076, -1.3597, -0.4741, 0.4627, -0.0358, -0.0017, -1.0258, -0.6957, -1.027, 1.1372, -2.604, -3.0616, -4.3523, 1.6973, 1.9314, 1.1807, 1.741,
949 1.9665, 1.3206, -0.1069, 0.8467, 1.1209, 2.6581, 1.0313, -0.7646, -0.9327, -0.4666, 1.3979, -1.1019, -2.4235, -8.2049, 1.1737, 4.931, 0.7484, 0.2664, -6.0708, 2.6104,
950 1.1852, -1.5416, -3.6491, 4.4048, -6.7437, 4.6469, 1.6802, 1.291, 2.2789, 2.761, 1.3944, -0.7732, -5.8136, 4.4421, -2.2039, 0.8414, -5.8722, -4.6747, -3.6578, 10.0038,
951 -3.9689, -0.5502, 1.1683, -2.1974, -1.9082, 0.1416, 1.6772, 0.326, 3.7162, 2.4168, 2.6207, -1.7735, 1.5236, 0.348, -0.3569, 4.1471, 1.4471, -0.6226, -8.1997, 0.0448,
952 0.6532, 1.491, 1.2058, 1.7096, 2.395, 1.7319, -1.5483, -1.8447, -2.2888, 0.7634, 3.2796, 1.6709, -4.9985, -3.0829, -1.1211, 1.2229, -0.2209, -1.194, 1.9569, -1.7811,
953 -1.9523, -4.3005, -4.5837, 1.0346, 1.2567, 1.0099, 3.2344, 2.8332, 1.1895, -1.5164, -2.2052, -1.2334, -1.4331, 2.1022, 2.3179, 5.6712, 2.1958, -2.0504, -2.5243, -1.046,
954 -1.1815, -1.53, -0.6842, -0.5633, -2.6867, -1.4016, 0.6359, -2.017, -1.297, -1.6432, -1.0489, -1.3764, -1.1731, -0.5962, 3.5229, 5.3595, 3.1187, 3.4061, 0.3009, 0.855,
955 -3.1382, -0.628, -0.8774, -0.9941, 0.9435, 0.9619, 0.852, -3.3796, -3.2423, -1.3758, 3.304, 2.2194, 1.0056, 2.5348, -0.2996, 0.9762, -3.7819, -0.3936, 5.7234, -0.4105,
956 -3.2428, -5.3967, -1.5226, 4.3711, 2.0836, 2.1112, 0.7032, -4.0183, -12.6551, -15.4852, 0.9361, 9.2253, 10.5424, 3.4081, 3.4337, -0.7556, 1.6657, 0.8127, 4.5992, -0.816,
957 1.8248, 0.0419, 0.5248, 1.8646, -1.2814, -2.6618, -0.0669, 0.1817, 2.2151, -0.8152, 5.1179, 2.3104, 3.6555, -8.7128, -2.079, 1.0629, -0.0963, -1.5473, 0.4756, -2.0146,
958 -0.1111, 0.3482, -0.0235, -0.7175, -0.1449, -0.3857, -0.8724, 0.4592, 0.498, 0.2237, 0.3924, 0.2623, -0.5426, 0.937, -0.6701, 0.16, 0.1978, 1.4707, -0.454, -1.0274,
959 -0.9442, -0.4989, -0.2375, -0.5991, -1.2414, -0.4327, -0.2055, -0.5191, 2.6955, 3.9938, -2.7275, 1.8004, 1.9744, 1.7067, -0.5541, -5.7033, 0.6046, -1.4009, -1.3782, 3.6669,
960 -0.8575, 0.6722, 1.8197, 2.2695, 1.4265, -1.5445, -1.743, -1.5937, 2.047, -0.1126, 0.3473, 1.4243, 0.9317, -1.3895, -1.064, 0.4664, -0.0706, -3.0958, -1.0532, 1.1198,
961 0.9735, -3.1553, -4.9524, -1.8534, 0.7715, 2.4911, 5.1271, 0.432, -4.1146, 1.1236, 2.7184, 2.0135, 1.9444, 1.7813, 1.8232, -2.6267, -5.6361, 0.3774, 1.0979, -0.3363,
962 1.9497, 1.0413, -1.2191, -0.8636, 0.0511, -0.3375, -0.5315, -1.0284, 2.1218, -5.0828, 1.0827, -2.2172, -1.3936, 0.4537, 3.3006, 0.9962, -1.2147, 0.093, -2.8723, 5.6705,
963 -3.0064, -0.669, 1.9882, 3.1451, 0.5101, 1.4897, 6.0735, 3.0322, 0.7197, 2.5823, 0.9024, -1.3595, -0.6102, -4.4164, -5.2345, 0.5038, -1.7243, -1.0135, 0.3868, -3.2999,
964 -1.3127, -0.5603, -0.4395, -0.5779, -1.3273, -0.7737, 1.1446, 2.1363, 0.5709, -0.9646, 0.1742, -0.3429, 0.7079, -1.3617, -0.1807, 0.8278, 4.5177, -3.6128, 1.9484, -0.5738,
965 4.9592, 5.5662, -1.4308, 2.4625, -1.3728, 0.3179, 2.5142, -3.1176, -3.0793, 2.5866, -6.0767, -3.0209, -1.0428, 3.7946, 3.4423, -3.9407, 3.868, -5.8781, -3.2612, 2.7097,
966 1.8752, 4.6096, 2.6992, 0.0622, 1.9683, -1.5159, -0.2846, 2.0429, 5.1916, 0.0415, 0.4228, 0.2499, -1.8859, -1.2282, -1.8414, -3.2239, -2.8594, -2.2718, -1.947, -2.105,
967 -0.4172, -0.066, -0.7815, -1.3234, 1.6425, 1.596, 0.1952, 2.8005, 1.8348, -0.0556, -1.7528, -0.333, 2.5351, 3.2175, -0.0237, -2.6102, -2.3993, -0.4569, 0.2104, -3.8124,
968 0.534, -7.1325, 7.3739, -7.1474, 5.0035, 4.0837, 1.7481, 0.6285, 2.147, 3.3649, 3.4871, -4.6213, 5.3643, -0.8361, 2.3067, -0.6517, -4.1528, -4.1599, -0.0969, -7.2432,
969 6.4977, -1.8922, 6.0123, 2.6649, 3.9019, -2.9401, -5.9544, 6.5995, -3.7727, -1.3909, -4.1986, 0.3151, 1.1248, 0.2299, 1.4836, -7.4381, 0.2549, 4.7727, -2.9947, -3.2755,
970 0.0546, 0.0075, 0.5596, 0.2523, -2.3268, -4.5642, -3.6799, -0.8395, 2.7336, 3.7088, 2.7486, 2.6118, 1.5065, 0.0463, 0.417, -0.5592, 1.5006, -0.4534, -1.6715, -2.0529,
971 2.9815, 2.4495, 1.7545, 3.2822, 2.8844, 2.5666, 0.0398, 1.6192, 2.6128, 3.3153, -4.7284, -2.6356, -1.7561, -4.3333, -3.6328, -2.9815, -0.9212, -0.8755, -0.3601, -1.2811,
972 -0.8024, 1.2002, 3.222, -0.7626, -2.1102, -1.0525, -1.8044, 0.6518, -0.3024, 1.2038, 0.2348, 0.2257, -2.8991, -1.661, 1.3306, -0.9177, -2.5629, -0.6077, 5.6868, 1.7272,
973 -0.1833, -0.3751, 0.5635, 0.1503, -0.2949, -0.6821, 1.4873, -1.2805, -1.3007, -0.6803, 0.0098, 0.9789, 1.7868, 3.5914, 0.8184, 1.0857, 6.4677, -3.3457, -6.706, -2.0913,
974 4.2126, 1.0339, -0.8906, 0.9053, 2.8206, 3.1913, 0.4808, 1.7342, 1.1617, 0.7387, 3.7928, -0.7288, -6.1883, -1.6937, -4.9005, -3.6291, -0.7611, -1.4035, -0.2407, 0.3643,
975 -8.3754, -2.2519, 1.308, 1.8062, 0.885, 1.6497, 2.088, 2.7261, 0.2633, -0.5998, 0.5979, 0.7034, 0.996, 2.9711, 0.165, 0.8745, -0.1614, -0.6875, -1.3556, -3.6024,
976 1.4188, 1.0202, 1.5256, 1.662, 0.7476, -1.439, -3.4051, -1.878, 0.4521, -3.9741, 0.7867, -0.3719, -2.3721, -1.0437, 0.6801, -0.2011, -3.0818, 2.9062, 4.2361, 2.3315,
977 0.1054, -2.6122, -4.3807, -5.3145, -0.2846, 4.3842, 3.017, 3.8061, 0.711, -1.0498, -0.2574, -0.9802, 0.3402, 1.2503, 2.5457, -7.8042, -0.1469, 2.8259, 3.0062, 0.8386,
978 5.2058, 7.108, 4.9534, -1.243, -6.6855, -3.7117, -6.1961, -2.1515, -0.5576, -1.6169, 5.7678, 7.778, -3.9195, 1.0323, -4.8749, 2.1979, -6.6948, 5.7018, -1.1809, -0.9126,
979 5.0054, 3.2246, 2.722, 2.5774, 0.3515, -0.4988, -0.6659, -1.1531, -0.3512, -0.2899, -1.1677, 0.8076, -0.071, -1.3279, -1.882, -2.0262, -1.5275, -2.277, -2.2582, 0.808,
980 -0.3421, -2.1542, -1.9404, 1.9715, 2.0717, 1.269, -0.59, 2.8831, 2.5295, -0.0718, 1.0132, -2.1895, 0.9449, 0.2787, 2.8471, 3.2171, -2.0622, -4.9892, -4.8142, 0.1278,
981 -3.5648, -4.522, -3.8219, -0.0484, 2.559, 3.3348, 4.6892, 3.089, 3.1738, 2.4402, -0.3648, -2.0478, -1.8476, 0.1171, -0.1749, -2.2364, 0.1988, -2.2378, 0.6726, 0.592,
982 -2.5566, -0.841, -0.428, -0.4406, -0.5726, -0.3279, -1.871, -2.483, 2.814, 4.1548, -1.1877, -1.2228, 1.1741, 0.7041, -4.1128, 0.8974, 1.646, 2.7315, 1.4956, 0.4265,
983 0.6395, 0.6244, 0.2175, 0.2548, -0.6436, -1.4509, -1.2471, -1.8889, -1.6984, 0.63, -0.0902, -1.4274, 1.6267, 2.2897, -1.4907, -1.0863, -0.599, -0.3234, 4.5402, 1.1229,
984 -3.0281, -3.4576, 0.2465, 1.1848, -0.3128, -1.4112, -1.7883, -2.4368, -3.6604, 0.2309, 4.1432, 0.2306, 3.9874, 1.3414, -2.9661, 0.2318, 1.3943, 2.8996, 1.0512, 2.1197,
985 -6.4523, -0.8108, 3.0394, 2.9265, 1.7276, -0.6852, -1.3401, -1.2086, 0.2339, 0.6323, 0.9584, -0.4322, -0.4865, 1.1438, 3.9792, -0.5978, -3.3409, -0.0134, 0.1557, 0.5712,
986 0.8836, 0.6632, -0.5682, 1.0909, 1.02, 0.2143, 1.7898, 0.4314, -1.2105, -1.6888, -2.8939, 1.5904, 1.4323, 5.0287, -2.409, -2.6282, -1.2927, -1.8499, -3.8726, 4.2691,
987 2.7571, 0.5054, 0.5914, -0.4593, -1.9535, -2.8534, -5.1043, -5.0146, 0.3167, 1.921, 1.992, 1.2596, 1.2329, -1.0134, -2.2148, -0.9619, 3.3405, 0.4893, 1.9185, 3.2509,
988 -7.8257, -8.0514, -2.2922, 4.6049, 1.7841, 0.2877, 2.46, 0.2299, 0.3961, 0.7952, 4.9841, 0.5914, -3.3601, 1.4043, 5.5671, 2.2508, 0.0018, 1.51, -2.0511, -3.2867,
989 1.5686, 1.2169, -0.6391, -2.6751, -3.0325, -3.9104, -2.5516, -0.9763, 6.3909, -1.3255, 1.3817, 1.7409, 2.2064, 2.8908, 0.3118, 0.3554, 0.3092, -0.0695, -2.5566, -0.6363,
990 1.1784, 0.7886, 1.7506, 3.8841, 0.1097, -3.4846, -1.1668, -0.2517, -0.3004, -0.0493, 2.027, 0.2092, 1.544, 3.4255, 0.2943, -0.8517, -1.6072, -4.0976, -5.8976, 2.4958,
991 0.9988, 2.8848, 3.2891, 3.3681, 1.4676, 3.2906, 1.3735, 1.197, 0.4611, -0.5875, 1.7464, 0.9583, 0.5681, -1.4825, -4.2976, -3.2226, -2.3712, -7.0782, -2.8558, 0.2917,
992 -0.2746, -0.1545, -0.1213, -1.7658, -0.9647, -0.899, -2.2776, -1.6043, 2.1487, 5.2377, -7.3002, -1.2976, 0.8951, 2.6087, 1.9104, 0.8944, 4.2107, 2.4289, -0.6124, -3.0624,
993 4.5993, 2.8908, 2.6348, 2.5753, 3.5423, -1.3467, -3.634, -1.3719, -1.5896, -1.7807, 0.4182, -0.4869, -0.0081, -1.7322, -5.0302, -4.0281, 3.2297, 0.1854, 0.7317, 0.2006,
994 -3.2143, -2.4079, 2.3832, -1.4835, -2.9589, -4.3471, -9.4701, -8.698, 2.2131, 11.9939, 3.4222, 5.6731, 1.0493, 0.9347, 3.177, 3.6996, -0.0115, 2.2951, -2.8928, -1.3571,
995 2.2986, 0.5686, -2.7234, 0.0628, 3.3595, 3.0322, 1.2528, 0.1697, 0.2877, -3.1109, -4.5198, 4.2898, 4.5477, -0.5365, -2.9437, -1.776, -3.4896, -0.4971, 0.5506, -0.823,
996 0.0226, -1.9088, -4.1034, -3.5139, 1.8311, 6.6465, 1.9042, -0.2585, 0.4811, -1.3603, -0.8669, -2.6469, -2.4021, -2.3699, -1.0708, 1.8059, 0.3697, 0.3642, 3.4726, 3.6036,
997 1.8666, 0.3455, -0.4415, 1.453, 2.1752, 0.4141, 0.9988, 0.9339, 2.0369, 0.0808, -1.3138, -1.2683, 0.1032, 0.3074, 0.3794, -2.248, -4.4451, -2.7006, 1.2456, 0.077,
998 -0.9714, 0.8948, -0.5528, -1.5023, -2.1884, -1.619, -2.6643, 0.3765, 5.2588, 1.9474, 4.7336, 6.0668, 0.9206, -6.1173, 0.2687, 4.2344, -2.7801, 4.7836, -5.9468, -5.1428,
999 -3.5447, -2.6492, -1.1225, 1.1104, -0.6763, -0.3734, 0.7874, 2.9348, 3.7914, 3.3802, -3.0687, -1.7645, -1.7552, 0.4322, 1.5566, 3.1434, -2.9717, 0.2913, 0.3294, 0.1693,
1000 2.3099, -0.6833, -2.4051, -0.87, -0.1793, -0.7055, -1.1773, 0.0766, -2.2742, -3.5734, -2.1986, 0.6775, 0.1605, 0.0083, 4.2284, 1.3025, 3.7892, -0.0746, -0.9582, 2.5465,
1001 0.9486, 0.1048, 1.8316, 3.4918, 2.1758, 1.1342, 1.0848, 2.4632, 0.0993, -1.9453, -1.1703, -1.6274, -2.0353, 0.8991, 0.4736, -4.0911, -2.9565, -2.3552, -2.1133, 3.5874,
1002 0.6208, 3.4997, 6.2697, 4.2107, 1.2652, 2.1894, 1.1355, -2.5271, -2.9525, 0.0535, 0.3829, -2.5199, -2.9063, -2.7287, -1.9607, 1.46, 1.2748, 0.44, -4.8467, -2.3602,
1003 0.5243, 2.9289, 2.2684, 0.4191, -2.1542, -0.2881, -0.2706, 0.6758, 5.4475, 1.1883, -2.5477, -6.5024, -4.1506, 0.6656, 0.9576, -1.2352, 1.0736, -4.8441, 2.5699, 3.2741,
1004 -0.7794, 1.1463, 3.5016, 1.112, 0.8485, -1.0628, -0.8132, 3.8405, -0.3344, 1.2653, 0.4357, 0.5494, -2.5741, -2.4964, -3.4166, -4.9706, 4.8271, -4.7341, 1.1838, 2.4711,
1005 1.8447, 1.0979, -1.7573, 0.3863, -0.5133, -3.1578, 0.0583, -0.5417, 4.1974, -4.603, 0.1241, -3.2329, 4.6242, -4.6647, -2.461, 0.5959, 3.2183, -1.2626, 5.6612, 0.3859,
1006 -2.3894, -1.0328, 1.7896, 5.5648, 5.222, 1.8869, 1.0956, -0.1977, 3.2983, 0.9466, -2.0813, -0.1679, -0.5816, -0.1714, -2.751, 1.1951, 1.5496, 1.64, -5.0073, -9.808,
1007 0.7738, -1.7298, -3.2257, -0.3183, 1.9284, 1.7227, 0.8166, 0.9095, 0.5332, -0.5016, -1.266, -1.9608, 2.0035, -2.6922, 3.7039, 0.8905, -0.7247, 2.7531, -3.0591, -0.5571,
1008 -0.0748, -0.507, -0.2516, 1.7723, 1.4041, 4.352, 1.7022, 1.099, -1.4641, -2.362, 3.1174, 0.5476, 1.5192, -1.9294, -4.9678, 0.2919, -3.1451, 1.3976, -0.5997, -1.9017,
1009 -0.3043, -4.5751, -6.4864, -2.8079, 2.8553, 1.4264, -0.629, 0.8259, 1.1617, -0.8255, -1.1913, -0.9336, -0.8179, -0.6841, 2.7254, 1.919, 4.4832, 2.4919, 2.0452, -0.6788,
1010 2.9368, 3.5644, 3.7164, 3.7726, 0.3148, -2.5071, -1.0177, 0.4365, 0.4818, -2.1099, -3.0728, -1.1823, -1.8323, -2.546, -3.2217, -2.5081, 0.1068, -0.334, 2.0018, 3.0001,
1011 2.0122, -0.8437, -0.0894, -3.5669, 0.2151, 1.3672, -1.1852, 2.2748, 0.2674, 2.1266, -4.5961, -3.5181, 1.641, 4.2095, -4.0873, 0.0362, 3.5548, -2.6567, 1.8468, 0.9915,
1012 -2.9528, 1.3693, 1.3737, 3.6447, 4.6399, 3.0004, -0.4081, -0.5069, -2.0885, -2.1563, 0.7639, 0.479, -2.4821, 1.6495, 0.828, -0.4457, -4.8607, 3.5285, 3.1896, -8.5655,
1013 -4.4449, -2.6584, -0.3396, 2.7055, 3.1313, 2.6691, -0.1405, -2.692, 1.138, 5.9263, 0.1508, -2.5031, -2.5963, -2.2339, -0.4387, 2.7348, 0.1166, -2.0958, -0.1884, 1.7591,
1014 -0.4506, -2.2585, -2.0183, -1.2141, 2.3804, 5.1371, -0.1012, 0.7185, -1.9558, -5.5843, 1.7274, 2.5676, 1.3295, -2.3148, 3.4722, 0.9168, 0.3809, -1.2468, -0.6805, -0.8055,
1015 -0.5741, -1.3187, -1.6054, -1.8387, -3.0009, -2.2631, 1.6411, 1.0542, 0.863, 1.3059, 0.666, 0.5171, -0.9355, -1.8837, 0.8703, 0.385, -0.0855, 0.2754, 4.4605, 1.4674,
1016 4.0853, 2.9178, 0.0251, -1.7053, -2.9819, -2.0918, -1.9947, -0.8293, -0.6373, 0.5052, 2.1796, 2.6733, -1.7046, -0.6344, 1.362, -0.4864, -2.0884, -1.6708, 1.5012, 1.5754,
1017 -1.5635, 2.8252, -0.9149, -3.0463, -4.7327, 2.7084, 1.1209, 0.7968, 0.7865, -1.2527, -0.1248, 2.6941, 2.7972, 2.2336, -0.0652, -0.4532, -2.9265, -0.056, -0.4324, -0.3945,
1018 2.462, 0.7164, -1.5674, -3.1513, -1.6402, 2.4149, 2.901, 2.5761, 3.2262, 0.0749, -4.5314, -3.4112, 0.2922, 1.0743, 0.0408, -1.5976, -0.5032, 0.6577, 0.7598, -0.794,
1019 1.971, 1.173, -0.6838, -2.2094, -1.9356, 1.4952, -2.0825, -0.2927, 0.7657, -1.8337, 4.4472, -3.8324, 0.7557, 0.0732, -3.6271, -1.9071, 4.314, 2.4552, -0.0317, 0.9857,
1020 3.7325, 2.7934, 1.0157, -1.7096, -2.8454, -1.8953, -0.7562, 0.3146, -0.3781, -1.002, -1.6158, -0.3984, -0.0573, 0.9972, 1.0112, -1.0599, 0.037, 3.6124, 1.1087, -2.9047,
1021 -1.4832, -1.9899, -0.8731, -0.933, -2.9066, 2.382, -0.1603, -0.717, -1.1285, -0.9274, 2.1578, 6.4011, -1.6535, 2.3099, -1.6654, 3.7268, 0.0883, -1.8527, -0.5184, -0.2568,
1022 0.6353, 1.3687, 1.8257, 0.3226, -0.8766, 1, 1.0853, 1.2934, 0.8779, 1.7553, 1.1543, -2.0442, -1.6763, -0.4593, 0.9294, -1.2072, -2.2593, -0.6144, -2.8074, -0.3032,
1023 -1.207, -1.3475, -1.8312, -1.7806, -2.9611, -3.1818, 2.9332, -0.124, 0.1906, 2.9202, -1.8371, 1.0525, -2.0319, 2.7074, -2.1979, -1.3072, -0.5591, 3.0013, 2.66, 4.9011,
1024 -5.1303, 3.387, -3.7967, -1.9466, -5.3864, -1.1368, -0.5684, 3.7351, -0.5755, -3.2378, -4.425, 2.035, 3.9372, 5.4701, -2.7768, 5.9464, 6.6849, -3.7875, 1.9948, -0.423,
1025 -1.3037, -1.9678, -3.152, -1.4018, 0.2092, 2.801, 2.076, -0.3324, 1.0911, 0.905, 1.7187, 3.4255, 1.0022, 3.5722, -3.5224, -4.7658, -1.0745, 0.2766, 1.2898, -0.8471,
1026 1.9772, -2.9635, -3.024, -2.2547, 0.1703, 1.7771, -1.6073, -3.1859, 1.541, 1.4356, 0.9203, 3.9297, 4.2495, 5.7007, -4.0193, -0.8612, 1.6423, 0.8844, -5.1605, -1.1517,
1027 2.9132, 0.8992, -1.0688, -1.5448, -0.9185, 0.4003, -1.77, -2.7768, -1.4639, 0.2261, 0.7139, 1.7997, 3.0514, 3.3204, 0.6803, 0.9792, -0.2717, -2.645, -0.2252, -2.2988,
1028 -2.9741, -2.4804, -3.0116, -3.1521, 0.1074, 1.3714, 0.6662, 2.0637, 1.7849, -0.4611, -0.772, -1.6172, 0.8203, 3.4203, 0.8069, 2.2581, 3.2451, 0.5915, -2.2429, -0.4245,
1029 -0.8028, -0.229, 0.2137, -0.4319, 0.558, 0.2543, 0.9172, 0.8892, -0.4807, -1.2827, 0.9202, 1.1454, -1.6931, -3.6479, 0.4568, 3.9049, 1.2435, 2.6145, 0.7928, -5.3425,
1030 2.619, 1.9162, 0.9769, -0.1078, -0.429, -0.365, -2.8284, -4.4494, -5.991, -4.8405, 0.711, -0.4595, 0.2195, 3.3942, 0.9527, -1.8867, 3.8742, 3.7699, 1.215, 1.7087,
1031 1.8829, 0.7201, 0.6607, -0.0626, -1.194, -1.4411, -0.0944, 0.1172, -0.7491, -0.3712, -2.5287, -2.1899, -1.228, -1.4906, -0.5689, -1.4885, 2.7842, 4.0586, -1.1367, 4.32,
1032 4.671, 0.9897, -0.6156, -0.6851, -1.412, 4.1532, 4.4321, 1.1339, -1.0985, 0.5736, 1.4085, -4.6356, -3.3117, -1.5968, -3.4345, -0.7293, -0.0528, -0.3096, -3.6684, 4.188,
1033 -2.5398, -1.383, 0.0979, 1.9654, 3.5192, -0.0522, -3.287, -3.8507, 0.6356, -0.985, -3.0198, -3.7269, -0.831, 1.9829, 1.8339, -0.8073, 0.2152, 2.0459, 6.118, 2.0688,
1034 0.4962, 3.2227, 3.5953, 1.3395, -3.4218, -4.9933, -1.9981, 0.9513, -1.0998, -2.7535, 1.3298, -0.6976, 0.0716, 0.7392, 5.8854, -4.3047, 2.189, 1.9699, -2.4444, -0.0765,
1035 -5.8327, 1.1129, 0.8081, 5.6003, 5.5684, 4.702, 2.8089, 0.4347, 1.1649, -4.9188, -11.4465, -1.3196, 0.4225, -2.4705, 0.3286, -0.0113, 8.734, -2.122, -2.1264, -1.4373,
1036 -1.6231, -1.3969, -2.0111, -1.262, 4.3084, -1.2012, 1.2341, 0.1866, 0.0635, -2.6548, 2.3896, 1.8088, 0.029, -4.3105, 3.9166, -0.0331, -0.3748, -2.471, 1.0435, 2.3583,
1037 0.631, 1.3989, 1.5277, 0.7608, 1.0894, 1.7235, 2.0681, 2.3537, 0.9918, 1.2164, -0.3325, -2.2666, 0.1756, 0.1615, 0.5196, -2.673, -7.1201, -2.9272, -5.4551, 6.1563,
1038 7.8768, 5.4153, -2.5369, 0.0405, 4.1259, -0.2108, -4.6599, -0.9803, -1.3472, -5.5873, 0.0334, -6.0975, -0.7915, 0.7551, -0.1575, 2.8766, -3.5702, -0.2561, 4.01, 1.0615
1039};
1040
1041const struct lsp_codebook newamp1vq_cb[] = {
1042 /* /home/david/codec2-dev/src/codebook/train_120_1.txt */
1043 {
1044 20,
1045 9,
1046 512,
1047 codes0
1048 },
1049 /* /home/david/codec2-dev/src/codebook/train_120_2.txt */
1050 {
1051 20,
1052 9,
1053 512,
1054 codes1
1055 },
1056 { 0, 0, 0, 0 }
1057};
diff --git a/codebooknewamp1_energy.c b/codebooknewamp1_energy.c
new file mode 100644
index 0000000..6ecdd7c
--- /dev/null
+++ b/codebooknewamp1_energy.c
@@ -0,0 +1,39 @@
1/* THIS IS A GENERATED FILE. Edit generate_codebook.c and its input */
2
3/*
4 * This intermediary file and the files that used to create it are under
5 * The LGPL. See the file COPYING.
6 */
7
8#include "defines.h"
9
10 /* /home/david/codec2-dev/src/codebook/newamp1_energy_q.txt */
11static const float codes0[] = {
12 10,
13 12.5,
14 15,
15 17.5,
16 20,
17 22.5,
18 25,
19 27.5,
20 30,
21 32.5,
22 35,
23 37.5,
24 40,
25 42.5,
26 45,
27 47.5
28};
29
30const struct lsp_codebook newamp1_energy_cb[] = {
31 /* /home/david/codec2-dev/src/codebook/newamp1_energy_q.txt */
32 {
33 1,
34 4,
35 16,
36 codes0
37 },
38 { 0, 0, 0, 0 }
39};
diff --git a/codebooknewamp2.c b/codebooknewamp2.c
new file mode 100644
index 0000000..c8389b0
--- /dev/null
+++ b/codebooknewamp2.c
@@ -0,0 +1,527 @@
1/* THIS IS A GENERATED FILE. Edit generate_codebook.c and its input */
2
3/*
4 * This intermediary file and the files that used to create it are under
5 * The LGPL. See the file COPYING.
6 */
7
8#include "defines.h"
9
10 /* /Users/erdgeist/Coding/codec2/src/codebook/codes_450.txt */
11#ifdef __EMBEDDED__
12static const float codes0[] = {
13#else
14static float codes0[] = {
15#endif
16 11.9178, 14.1558, 15.0079, 16.3077, 17.3822, 18.2611, 17.4655, 14.7258, 9.9322, 5.5523, 2.3108, -0.5449, -3.1948, -5.2578, -6.672, -7.0718, -6.2242, -3.5271, -0.4724, -0.6426, -5.5883, -11.069, -13.9474, -14.1999, -11.6213, -9.2487, -10.7685, -15.1688, -17.7995, 4.747, 5.3362, 4.5288, 2.041, -0.2507, -1.4078, -1.9789, -2.0773, -2.8836, -2.6876, -5.367, -21.5899,
17 20.9429, 19.2708, 15.6619, 12.7137, 9.1871, 6.4196, 3.1467, 1.6784, 0.8989, 1.2827, 1.4966, 0.1254, -2.5426, -4.515, -6.1876, -6.3874, -6.0478, -5.9793, -6.4367, -5.2532, -2.2523, -0.5109, 1.6273, 0.3551, -4.439, -9.5465, -11.7875, -11.3329, -11.5883, 4.4211, 3.0334, 0.1707, -1.8877, -1.6176, -0.7003, 0.0063, 0.8933, -0.3305, -0.5297, -3.459, -17.2335,
18 10.3698, 10.9179, 12.2827, 14.2252, 13.1924, 8.1149, 3.4397, 0.4163, -0.6468, -1.2093, -1.7787, -2.1501, -2.3738, -2.1698, -1.6602, -2.0012, -2.2206, -2.6679, -2.9048, -4.0924, -3.9533, -4.6653, -3.4648, -4.1545, -4.7802, -5.9292, -6.6217, -6.2599, -7.2545, -1.4487, -2.0915, -2.0764, -2.524, -2.8369, -1.7282, 0.3818, 1.6462, 2.6312, 4.3951, 3.6513, -6.604,
19 10.7001, 9.9813, 8.3287, 7.1242, 6.507, 6.5092, 5.9516, 5.2985, 4.9376, 4.9107, 3.3698, 2.148, 1.7415, 1.8271, 2.9065, 1.7503, 1.1809, -0.5973, -2.5964, -4.1194, -4.3826, -4.2663, -6.1171, -8.2455, -10.0389, -10.0722, -11.1753, -11.2765, -12.2855, 0.8221, 0.8933, 0.0873, 0.1278, -0.2444, -0.1326, 0.4115, -0.088, 0.3496, 0.6766, -2.9033, -13.4861,
20 14.8732, 12.7779, 9.6261, 7.1258, 5.1364, 5.1173, 4.4647, 4.316, 3.755, 3.9126, 3.6316, 2.8536, 1.993, -1.1494, -2.4465, -3.4951, -3.8807, -4.2782, -4.514, -4.6567, -4.7573, -4.9527, -5.3524, -6.1002, -6.5648, -6.24, -6.7782, -6.9091, -7.5078, -0.7325, -1.047, -1.1322, -1.23, -1.1725, -0.7847, -0.074, 0.3234, 1.3703, 2.8077, 1.6715, -7.7106,
21 13.0634, 13.058, 11.8762, 10.3012, 8.7287, 8.2751, 6.914, 5.6997, 4.4786, 3.7849, 4.1201, 2.8106, 0.712, -1.419, -2.0942, -2.3582, -0.5397, 1.516, 0.4684, -2.9378, -7.1601, -10.1338, -10.8807, -10.0235, -7.7214, -7.4752, -9.9005, -11.5702, -11.5927, 4.263, 3.6157, 2.2639, 2.6715, 3.2976, 2.2826, 0.9481, -1.7723, -4.4187, -3.5441, -9.6074, -17.0075,
22 17.4365, 16.75, 15.4119, 14.0262, 11.9105, 8.764, 5.0192, 1.9276, 0.0772, -0.8006, -1.8916, -2.6101, -3.2178, -2.5671, -1.7974, -0.9511, -1.6296, -2.8438, -5.2983, -6.939, -8.1364, -7.5562, -6.4223, -7.1565, -8.562, -8.8653, -6.302, -4.6173, -3.1589, 0.3453, 2.406, 5.1191, 5.4688, 4.3371, 3.0997, 0.6091, -2.3128, -3.0561, -3.3297, -12.6865, -6.0911,
23 13.0911, 12.7368, 12.4903, 13.0944, 13.0545, 12.0753, 8.9618, 6.1436, 4.1205, 3.004, 2.5067, 2.1012, 1.7892, 1.0194, -0.5009, -2.7054, -4.3792, -5.7855, -7.3332, -7.6356, -6.8161, -6.3032, -6.7524, -8.6805, -9.1565, -8.9761, -9.6991, -10.228, -11.2374, -0.8915, -1.3351, -1.3279, -0.8507, -1.1734, -0.5889, -0.2953, 0.9333, 1.7331, 2.7464, 1.0499, -11.7092,
24 20.5201, 20.0295, 17.9227, 15.1345, 11.8697, 8.3087, 5.1766, 3.006, 1.254, 0.4174, -0.172, -0.8532, -1.8929, -2.4981, -2.7278, -3.1121, -3.4982, -3.7976, -4.7868, -5.4073, -5.4391, -5.9033, -7.2898, -8.3095, -8.7395, -9.6577, -9.6812, -9.1534, -10.7197, -2.0265, -2.4422, -3.2898, -3.0803, -2.9851, -1.2856, 0.1567, 1.891, 3.3083, 5.0377, 4.7157, -9.9218,
25 8.7254, 11.0045, 12.0666, 13.2121, 13.3296, 12.8324, 10.851, 7.8774, 5.4319, 2.5287, -0.0029, -1.8774, -3.6195, -5.042, -5.6921, -5.2354, -4.487, -3.3016, -2.0527, -2.1409, -3.9671, -5.5705, -6.5599, -6.6471, -6.1324, -6.7689, -8.5096, -9.9894, -10.2634, 3.4359, 2.7738, 2.8295, 2.9482, 1.6625, 0.8956, -0.0514, -1.5848, -1.4749, -2.2921, -9.1424, -14.2391,
26 23.9657, 22.7269, 19.7344, 15.7159, 12.2183, 10.6582, 8.5153, 6.8034, 5.1757, 2.7658, 0.5046, -1.3116, -2.041, -1.6635, 0.4261, 3.7125, 3.3282, 0.1068, -4.3151, -7.4691, -8.1547, -7.8283, -7.2057, -10.8214, -15.3903, -17.5933, -17.6434, -16.8095, -18.1107, 1.5132, 0.3244, 0.0189, -0.7294, -1.1966, -0.6245, -0.5177, 0.2092, 1.03, 0.8494, -0.877, -19.8535,
27 16.628, 15.7442, 12.731, 10.1009, 8.2897, 8.5577, 8.8444, 10.056, 10.305, 9.1696, 6.7854, 3.8917, 0.3608, -3.0307, -5.8666, -7.1637, -6.5677, -5.6155, -5.1575, -4.9714, -6.5135, -7.7608, -7.9326, -8.4341, -8.5905, -8.717, -10.2926, -12.2908, -12.5593, 4.2267, 2.1595, 0.5102, -1.382, -1.1131, -0.0305, -0.5306, -0.0216, -0.2857, -0.0746, -3.4583, -17.0769,
28 13.6209, 12.7507, 12.8553, 14.2468, 15.9471, 14.0699, 8.8461, 3.2261, -1.1845, -3.9187, -5.7488, -7.4173, -8.8555, -9.2473, -8.9917, -6.5605, -1.7283, 2.9838, 3.3778, -0.7316, -2.7883, -0.8816, 0.0532, -4.9902, -8.7894, -10.3247, -7.5806, -5.9415, -6.2971, 14.656, 9.593, 3.1821, -1.9796, -0.7713, -2.07, -4.1354, -3.8071, -3.636, -4.5115, -6.5203, -23.1275,
29 23.4988, 25.5182, 26.1443, 25.6216, 23.429, 19.3707, 13.905, 7.5166, 1.8256, -2.4154, -5.4517, -7.7013, -9.8647, -11.2215, -12.6184, -14.4069, -15.4023, -15.6232, -14.8399, -14.567, -14.519, -13.7907, -10.6309, -3.489, 1.4794, 1.635, -2.2134, -1.66, 0.471, 10.9708, 10.5205, 11.2036, 9.2796, 5.4146, -1.1911, -4.4466, -8.0856, -10.7515, -10.9044, -12.0101, -11.4961,
30 -0.5898, -1.0967, -1.1205, -1.0443, -1.2431, -3.0645, -6.3248, -9.1338, -11.1628, -12.4243, -13.5982, -14.0819, -13.6551, -13.9519, -12.0462, -9.7393, -6.5133, -1.4737, 1.3159, 2.742, 3.1032, 9.2423, 13.5689, 17.8419, 17.0272, 18.0312, 18.1676, 16.34, 14.8841, 4.5894, 3.407, 3.1758, 1.7888, 1.6163, 0.3158, 0.2364, -0.4657, -1.0093, -2.6399, -11.0146, 8.1604,
31 13.0299, 12.0907, 11.0575, 11.898, 14.1078, 15.4469, 13.8192, 9.6452, 5.0678, 1.5872, -1.0858, -3.3552, -4.4488, -5.1355, -3.8141, 0.5493, 5.0898, 4.4313, -0.414, -3.7603, -4.7684, -3.669, -4.362, -10.8698, -15.5016, -18.468, -18.1605, -12.2966, -7.7111, 13.7174, 7.2067, 0.5178, -3.0887, -2.4521, -1.3997, -1.4244, -0.6539, -2.051, -3.7269, -6.6452, -24.084,
32 20.2958, 22.7253, 24.1108, 25.8434, 27.1854, 26.7629, 24.301, 22.1308, 21.1525, 19.6181, 13.7675, 5.3826, -2.8225, -8.7282, -12.7146, -14.6989, -16.2675, -17.4195, -18.1391, -18.1287, -17.6301, -15.6767, -15.3188, -16.1464, -16.5053, -15.5852, -16.0162, -15.5577, -15.9205, 1.1396, 0.2956, 0.2622, -0.146, -0.2889, 0.0275, 0.0598, -0.0862, -0.0115, -0.3351, -0.9169, -18.8932,
33 21.5882, 22.6633, 22.5911, 21.7567, 19.8871, 16.4681, 11.6127, 6.5703, 2.578, -0.4539, -2.9597, -5.4269, -8.0935, -10.3291, -11.8474, -12.0219, -10.4753, -7.1877, -2.9765, -0.5555, -2.4316, -6.5984, -7.4329, -5.2211, -3.7364, -8.4581, -13.117, -14.2101, -12.1825, 9.2042, 6.8442, 4.1847, 1.6315, -1.3411, -3.276, -3.4037, -3.4563, -3.6074, -2.1629, -4.6172, -19.8953,
34 10.6094, 9.956, 8.4942, 8.0886, 9.3761, 11.3323, 13.7662, 16.0947, 16.8139, 12.1179, 6.8094, 2.767, 1.8054, 3.1768, 7.3289, 5.1766, -2.2376, -6.9741, -8.5553, -10.5642, -11.2643, -7.7672, -9.8975, -14.2107, -19.646, -19.4783, -14.0319, -7.9045, -11.1818, -5.2324, -8.464, 2.9045, 12.886, 11.9777, 10.5541, 7.9613, -4.2589, -8.3955, -8.1996, -11.7332, -19.6994,
35 5.5041, 5.3222, 5.1942, 5.546, 6.9576, 8.9054, 10.4828, 11.034, 9.8032, 6.8135, 3.3656, -0.1277, -3.596, -5.7793, -6.2939, -4.2863, -0.0268, 4.572, 4.4361, 0.4802, -3.4351, -5.2809, -4.4513, -2.2637, -4.765, -9.6486, -13.3377, -14.7275, -10.3971, 17.8073, 13.8296, 10.4356, 9.0219, 2.4512, -5.9813, -10.1712, -10.716, -9.7016, -7.6983, -9.2773, -25.0775,
36 16.3656, 18.4878, 18.9993, 18.9918, 18.4816, 16.9653, 13.5777, 9.3381, 5.1691, 1.7384, -1.9039, -5.4804, -8.83, -11.9448, -15.0434, -16.8969, -17.167, -15.0995, -10.9516, -5.3056, 1.0232, 3.6264, 1.1957, 1.1028, 1.6644, -3.8335, -10.3741, -12.278, -11.6184, 10.0963, 5.3648, 2.5424, 2.471, -0.7901, -3.2113, -3.7043, -3.1, -2.4933, -1.9709, -5.2046, -20.9631,
37 17.8837, 18.4715, 18.4874, 18.4556, 18.3711, 17.499, 15.0865, 11.4049, 7.8551, 5.655, 5.2257, 5.9267, 6.7868, 6.4202, 3.6161, -0.83, -5.6377, -9.6817, -12.6005, -14.4203, -15.5246, -15.5077, -13.4622, -11.2201, -12.0997, -15.712, -18.3392, -17.8512, -14.2586, 8.3898, 6.8733, 5.8658, 4.5307, 0.2802, -3.1226, -4.8018, -4.8634, -4.4593, -3.4916, -5.2013, -22.21,
38 -3.1319, -2.9567, -3.5158, -3.6542, -3.9792, -4.569, -4.2861, -2.5541, -2.2464, -1.9153, -2.4682, -3.1479, -3.0568, -4.8839, -4.5795, -5.39, -5.0456, -3.5545, -1.3265, 0.8505, 3.0174, 4.7498, 6.6168, 8.1567, 6.6236, 7.6792, 9.3003, 9.8713, 9.3959, -10.5735, -12.5116, -14.0639, -7.5471, -1.304, 2.4789, 5.3713, 7.7962, 9.4623, 10.2101, 10.6812, 18.1437,
39 21.9881, 22.0268, 21.418, 21.0501, 19.7092, 16.8902, 12.8939, 9.2408, 6.1523, 3.8245, 2.5628, 1.6418, 0.828, 0.3977, 0.2944, 0.9841, 0.5033, -2.6922, -7.8516, -11.9595, -14.1961, -14.2907, -11.4202, -8.4658, -10.2796, -16.2385, -20.8415, -22.5979, -21.5723, 2.4756, 1.959, 0.8663, 0.5639, -0.3186, -0.6196, -0.7514, -0.8893, -0.926, -0.411, -1.9489, -22.2015,
40 13.6868, 14.9404, 15.1, 15.5585, 16.0353, 14.4054, 10.2425, 6.216, 2.6004, 0.014, -1.093, -1.9058, -2.2147, -3.1008, -3.0478, -1.9164, -0.2033, 1.1951, -1.7083, -5.1393, -7.0402, -8.4745, -8.2053, -8.7459, -9.3367, -10.365, -11.228, -12.609, -13.6605, -1.5164, -1.7406, -1.1213, -1.2392, -0.3054, 0.1166, 1.2891, 0.806, 2.8591, 2.2703, -1.4183, -13.8822,
41 24.2507, 21.6076, 17.0141, 11.8925, 7.3451, 3.9013, 1.1114, -0.6837, -1.7199, -1.9483, -2.6719, -3.0002, -3.6624, -4.0397, -4.0608, -4.1225, -3.981, -4.1129, -4.5653, -4.8917, -4.8071, -4.8794, -4.6353, -4.2726, -4.735, -4.9508, -5.2264, -5.1675, -4.9885, -5.7398, -5.9757, -5.9417, -4.9603, -3.1354, -0.5548, 2.3754, 4.4296, 5.8362, 7.1375, 6.5291, -0.9148,
42 17.2631, 17.8371, 17.1292, 16.2736, 14.9354, 14.1976, 13.0153, 12.0657, 10.4316, 7.4938, 4.2444, 1.4828, -0.6872, -3.7746, -5.5994, -5.3343, -3.0025, -0.6389, -0.055, -2.7128, -6.5932, -9.9814, -10.8426, -10.0857, -9.6056, -13.2586, -18.8699, -22.5792, -22.7486, -0.7483, -1.0121, -2.2299, -2.0299, -0.7415, -0.0212, 1.8597, 2.903, 2.7112, 2.3661, -3.0572, -22.3309,
43 -11.1995, -10.693, -9.1942, -8.1742, -7.6079, -6.5119, -6.9193, -7.1422, -7.9717, -7.7574, -7.1013, -6.4983, -6.0445, -5.1389, -3.0175, -0.5052, 2.9571, 5.6253, 7.3169, 6.5738, 7.6017, 10.0073, 10.6429, 11.476, 11.4863, 10.6648, 9.4863, 8.0975, 9.5413, 3.3127, 3.2227, 3.8144, 3.7156, 4.3089, 2.3578, 0.7872, -1.2526, -2.7715, -4.3321, -13.1631, 5.2507,
44 17.1783, 16.8887, 14.7421, 11.8348, 8.0205, 3.2499, -1.9129, -6.6225, -10.9397, -13.6517, -14.723, -16.1104, -18.1604, -17.7193, -17.2055, -15.5458, -13.1652, -9.9983, -5.1836, -1.0331, 1.9889, 4.4501, 8.5649, 11.1613, 14.3782, 14.8611, 11.2164, 10.3416, 13.0949, 7.1449, 3.2853, 6.0619, 4.3926, 2.9056, -0.2214, -2.0011, -1.6095, -2.237, -3.8553, -13.8661, 1.4609,
45 10.6486, 10.4669, 9.1585, 9.0007, 10.2209, 13.1112, 15.2667, 14.3795, 11.1262, 6.6047, 3.1822, -0.1678, -2.0727, -1.3024, 2.42, 5.9038, 2.7803, -3.182, -6.2303, -8.685, -9.4777, -6.1465, -4.6662, -9.5877, -14.2877, -18.3825, -17.6042, -13.824, -8.6536, 4.3381, -2.0474, -4.0413, 0.7437, 4.3435, 8.027, 4.8604, 0.4728, -3.1556, -4.1581, -9.3831, -21.0994,
46 4.5339, 3.018, 1.159, -1.8077, -3.7376, -3.2592, -4.8664, -9.0451, -10.5616, -11.0424, -11.0656, -11.1375, -9.1571, -8.9187, -5.487, -3.7659, -1.1875, -3.3535, 6.862, 12.8048, 15.213, 16.4198, 9.1571, 6.4605, 6.304, 10.6463, -0.7014, -3.2795, 9.7951, 11.6354, 5.742, 6.8106, 9.3406, 9.2914, 6.7851, 13.375, 12.321, -24.4316, -25.4838, -25.3856, -1.3255,
47 6.4369, 5.6614, 4.5505, 3.277, 2.0132, 1.6324, -0.2278, -1.7054, -2.5408, -2.944, -2.5595, -3.6388, -4.3998, -3.8497, -2.46, -0.6672, 0.4797, -0.4954, -0.1361, -0.3178, -0.0794, 0.9249, 1.391, 0.569, 0.3416, 1.0916, 0.5145, 1.1248, -3.9866, 15.2047, 12.434, 6.7379, -7.0628, -9.2462, -7.3526, -5.253, -3.4204, -1.8366, -0.0754, -0.1298, -20.8819,
48 13.5404, 15.5222, 16.2893, 16.887, 17.0524, 17.1327, 14.7572, 10.872, 6.784, 2.54, -0.5888, -3.3697, -5.4657, -6.7879, -7.7962, -7.6553, -7.4342, -6.9197, -6.9455, -6.3541, -6.7461, -7.4159, -7.7579, -8.3178, -7.4289, -7.3424, -8.2132, -8.9949, -9.843, 0.3453, -0.2701, -0.5525, 0.0397, 0.0597, 0.2448, 0.8902, 1.5587, 1.2101, 0.8399, -4.3658, -12.2454,
49 24.5559, 23.413, 20.6408, 17.3808, 14.416, 11.8493, 9.6532, 8.6801, 7.2117, 5.4621, 3.0668, 0.223, -2.112, -4.3454, -5.0915, -4.2332, -0.9253, -0.0786, -2.2834, -6.2673, -9.6185, -12.226, -14.2603, -13.3716, -11.5386, -12.2997, -15.1963, -16.5699, -16.1351, 4.5303, 3.2491, 1.5538, 0.2521, -0.8115, -1.5855, -1.5263, -1.3266, -0.9651, -0.7138, -2.6565, -20.2257,
50 8.1022, 9.7899, 9.7931, 9.7477, 9.2987, 8.7666, 6.9904, 5.329, 3.0336, 1.6204, 0.386, -1.2415, -2.468, -4.1707, -5.1485, -6.7003, -7.657, -8.3503, -8.5552, -8.8991, -9.0059, -8.7857, -7.078, -4.545, -2.6069, 0.6288, 2.8467, 3.7676, 5.1114, 3.4695, 4.5378, 3.2083, 2.5145, 1.3409, -1.3752, -0.8674, -0.472, -1.0186, -1.5059, -9.8318, 0.0727,
51 14.4586, 14.2733, 13.1879, 11.9606, 10.2045, 9.3636, 9.6651, 11.0114, 12.1122, 12.3036, 11.028, 8.7772, 5.9733, 2.4672, 0.3102, 0.0747, 1.2366, 0.9815, -2.8016, -7.9803, -12.3829, -14.765, -15.7924, -13.6058, -11.0614, -13.0621, -17.8806, -20.1354, -19.922, 5.074, 2.9263, -0.3365, -1.5294, -1.0384, -0.437, -0.2758, -0.3204, -0.0653, -0.0869, -3.9105, -24.588,
52 16.8931, 17.8847, 18.3283, 18.5232, 18.199, 16.7506, 13.533, 8.8264, 3.6715, -0.1991, -2.2432, -3.329, -3.3054, -2.6748, -0.669, 2.7103, 4.8565, 3.5571, -0.4645, -5.0037, -8.7773, -10.0343, -10.0215, -10.2618, -11.9582, -16.0391, -19.8259, -20.4865, -18.4405, 4.2237, 7.7521, 9.4271, 7.7776, 3.2089, -1.3047, -4.371, -6.1258, -6.624, -6.4665, -7.4973, -21.6119,
53 26.2407, 26.8595, 25.5084, 23.5987, 20.6139, 16.2421, 10.9416, 5.9994, 2.3434, -0.3767, -2.7912, -5.3898, -7.9202, -9.5689, -11.3407, -12.1566, -12.5654, -12.0723, -10.0537, -6.9972, -3.0971, -1.8157, -4.5501, -5.7844, -5.5235, -7.2936, -10.9909, -13.4932, -14.5663, 2.1561, 1.5321, 0.2818, -0.1633, -0.3426, -0.3136, 0.0161, -0.3898, 0.0287, -0.0952, -2.7103, -16.2994,
54 18.3705, 19.3592, 20.1123, 19.1051, 15.6286, 9.5321, 3.0603, -1.6458, -4.5598, -6.3273, -7.5713, -8.4739, -9.3282, -10.3168, -10.7509, -9.103, -6.7703, -2.574, 3.3208, 6.7538, 4.2453, 2.974, 1.108, -3.3077, -7.0808, -9.7837, -9.6571, -8.2866, -8.0329, 10.1201, 5.6162, 1.7587, -0.9681, -1.7807, -2.3958, -2.4286, -1.6485, -1.8262, -1.9033, -4.544, -20.3964,
55 13.2741, 15.4244, 17.0234, 18.2818, 19.5432, 18.9691, 14.9962, 9.1156, 3.6419, -0.2906, -3.157, -6.1768, -7.9818, -9.3506, -9.4656, -9.2507, -8.4602, -6.2085, -1.8201, 1.5162, 1.249, -0.0059, -1.8007, -4.5282, -8.6837, -12.6709, -15.3611, -15.4209, -12.4015, 7.815, 3.1728, 1.5432, 0.795, -0.5318, -1.2456, -1.5988, -1.7996, -2.1907, -2.0052, -3.9542, -22.2556,
56 15.9184, 17.3622, 17.4678, 16.8842, 14.6841, 11.8317, 7.6477, 2.3173, -1.3712, -4.0441, -5.5323, -6.8296, -7.7101, -8.4121, -8.4766, -8.2702, -8.0827, -7.3742, -7.9359, -7.9155, -8.0671, -7.6939, -7.0166, -5.7862, -3.8811, -1.0122, 2.4703, 3.9838, 4.8441, 2.9188, 2.7328, 3.6011, 4.033, 4.2894, 1.6661, -1.5176, -1.7944, -2.1907, -2.2625, -11.4761, -0.6248,
57 27.6543, 28.3344, 28.0974, 27.8652, 25.881, 21.2395, 14.9679, 8.7442, 3.5965, -1.0986, -5.8391, -9.7803, -12.4065, -13.0919, -11.4339, -7.2826, -2.4552, -0.6713, -3.1822, -8.1469, -9.6767, -9.4577, -8.9612, -11.2661, -13.6229, -15.3616, -15.2642, -14.0444, -13.3373, 2.3229, 0.95, 0.5581, 0.0389, -0.1161, 0.3407, -0.3396, -0.7413, -0.8075, -0.6566, -1.5496, -16.0531,
58 14.7743, 15.871, 16.5584, 17.4275, 18.6438, 19.6359, 19.7934, 19.0788, 17.9177, 16.9057, 15.9073, 14.4531, 10.2026, 3.0567, -4.1665, -9.7579, -13.4361, -15.9678, -18.1928, -19.8105, -20.3101, -20.0861, -19.2226, -16.1803, -12.5817, -12.1735, -14.1311, -13.5138, -10.6954, 7.7639, 2.5429, 2.6941, 2.9367, 0.5893, -1.929, -2.8709, -3.1704, -3.0337, -2.2216, -3.3012, -22.819,
59 12.7199, 12.8622, 12.1185, 10.3818, 7.6754, 5.4729, 4.0902, 2.5106, 1.3459, -0.1508, -1.059, -0.9743, -1.2979, -1.7207, -2.0981, -3.4023, -3.6088, -3.7334, -2.9611, -2.7071, -3.2507, -3.7314, -4.9032, -4.9793, -5.4541, -5.3634, -5.5199, -5.9327, -6.3294, 0.5719, 0.7629, 0.4111, 0.3851, 0.5406, 0.361, -0.6901, -0.4405, 0.2987, 0.0781, -2.2788, -7.7046,
60 17.0925, 17.268, 16.3588, 15.6578, 15.5233, 15.868, 16.0037, 14.7721, 12.292, 8.7258, 4.3618, 0.2688, -3.5171, -6.9208, -9.2849, -8.9305, -6.2881, -2.6008, 0.0832, -0.7819, -3.3713, -5.1713, -4.904, -6.2218, -11.397, -17.6896, -21.9017, -23.4215, -21.8734, 3.1762, 2.3323, 1.1259, -0.1136, -0.6656, -1.1934, -1.1198, -0.332, -0.0039, -0.1887, -3.0174, -24.2388,
61 17.2297, 15.6739, 13.0707, 10.1587, 7.8155, 7.3743, 6.0217, 4.4665, 3.0535, 2.6239, 2.2641, 1.967, 1.5434, 0.6206, -1.2673, -3.0579, -4.7912, -5.9248, -5.918, -6.122, -5.8687, -6.3517, -6.5968, -7.5677, -7.4916, -7.9499, -8.0977, -8.4791, -8.399, 1.8899, 2.2808, 2.6284, 2.1186, 1.2552, 0.2046, -0.3591, -0.6669, -1.5091, -1.4378, -6.4047, -11.8263,
62 4.5933, 4.7596, 4.4438, 5.2453, 6.6446, 8.2821, 6.9832, 4.381, 1.1278, -1.5253, -1.8904, -2.1516, -3.4268, -5.4133, -6.8772, -7.1547, -5.3998, -2.6582, 1.2751, 2.0882, -0.7302, -4.1881, -5.1819, -2.1264, 0.8208, 0.5532, -1.8235, -1.5249, 0.8743, 5.3771, 4.5451, 4.0828, 5.1397, 3.7744, 0.358, -1.2512, -0.7183, -2.7542, -4.1142, -14.4391, -6.0204,
63 -2.2799, -1.768, -3.2413, -3.927, -2.7062, -1.0703, -1.335, -1.9824, -2.4957, -1.3919, -2.1103, -4.0545, -4.3911, -5.7784, -7.9812, -7.7496, -7.5943, -5.8788, -3.7846, -2.676, 2.8977, 4.842, 8.2162, 4.4328, 10.2839, 10.4092, 11.3489, 11.1069, 10.659, -9.8885, -12.0674, -13.7764, -6.7026, -2.8416, 2.6527, 5.34, 7.6116, 8.5217, 10.1675, 10.983, 18.5816,
64 8.679, 8.1241, 7.9956, 9.001, 10.6051, 11.9336, 12.07, 10.4828, 7.604, 4.4092, 1.4213, -0.5435, -1.807, -2.2849, -1.1776, 2.4297, 6.7853, 8.4364, 6.3991, 4.5951, 1.7264, -5.9987, -12.0781, -16.538, -18.7068, -19.2937, -18.0295, -14.918, -11.3219, 9.6625, 7.9093, 9.1967, 5.7578, -1.0641, -5.1134, -6.0886, -5.4946, -5.3822, -2.7102, -6.6734, -25.9833,
65 10.3657, 10.3631, 9.7058, 9.4298, 9.0617, 7.9822, 5.9655, 2.6688, -0.5238, -2.6855, -3.0614, -3.3624, -4.7739, -5.3797, -4.5954, -3.2382, -1.5077, -1.7236, -2.7671, -2.9653, -4.5764, -6.3959, -5.0542, -3.3922, -3.4383, -5.4556, -2.3727, -2.0655, 3.7923, -5.226, -22.0236, -1.5093, 6.4261, 7.5104, 7.6639, 4.2871, 1.2994, 0.5479, 5.7985, -4.7744, 7.7899,
66 10.4446, 10.4588, 9.0587, 7.0901, 3.1501, -0.3318, -2.706, -4.6185, -5.7165, -6.2274, -5.5457, -6.1342, -6.9016, -7.4068, -6.2107, -3.8982, -1.1383, -1.7125, -3.1209, -2.5081, -2.3909, 0.2919, 4.6445, 2.6432, 2.6694, 4.3011, 3.5911, 6.8931, 1.3315, 21.797, 18.1696, 11.3834, -3.1623, -8.4098, -8.5693, -7.6899, -7.0385, -5.9998, -5.4794, -5.0009, -22.6316,
67 17.2287, 17.7616, 17.8929, 19.2677, 20.817, 21.4764, 18.7667, 14.2036, 10.5122, 8.1941, 7.842, 9.4381, 10.7037, 7.2143, -0.2794, -6.1524, -10.8365, -13.8587, -16.1691, -17.3352, -17.228, -14.8106, -11.1914, -12.304, -16.0739, -18.1082, -16.4868, -14.5719, -15.9127, 2.3379, 0.5208, 0.3528, -0.1779, -0.65, -0.5172, -0.1244, -0.1086, 0.2128, -0.1577, -1.6885, -22.6503,
68 18.5355, 20.4972, 20.185, 18.5749, 15.6167, 12.2745, 7.9486, 3.0171, -0.8357, -2.7695, -4.9, -6.7903, -8.0533, -9.4775, -9.7203, -10.0951, -9.496, -9.2581, -9.1995, -6.3741, -2.3905, 0.456, 1.0899, -0.4465, -1.4521, -2.6965, -6.3247, -8.5287, -9.3872, 0.7079, 0.5683, -0.4043, -0.7092, -0.1113, 1.5441, 2.4584, 1.8607, 0.7709, -0.1603, -6.5252, -13.3875,
69 15.7485, 14.5502, 12.3547, 10.1884, 8.6909, 8.0435, 6.3074, 4.6065, 2.2122, -0.193, -1.2413, -2.4859, -3.7253, -4.0244, -2.8733, -1.95, -1.0559, -2.6557, -3.6275, -3.0937, -3.1904, -3.242, -3.8325, -6.0485, -6.6724, -6.1617, -7.5456, -8.3219, -10.7613, 9.0819, 5.6131, 0.9836, -3.3767, -5.113, -4.5161, -2.5844, -1.0875, -0.3335, 0.8807, 0.4519, -18.486,
70 13.0658, 12.0977, 9.3051, 6.8101, 5.9796, 6.1211, 5.3037, 4.3634, 4.1469, 2.3546, 0.6265, -1.0456, -1.8168, -2.1623, -1.4037, -2.0812, -2.8168, -3.454, -4.9104, -5.6641, -6.1702, -5.2274, -3.5942, -3.4678, -3.4265, -4.9099, -5.1651, -6.2588, -6.5997, 3.1896, 2.3931, 3.5929, 2.5385, 1.8123, 0.7336, -0.3261, -0.9462, -1.535, -2.552, -8.9007, -9.6432,
71 6.9128, 6.7304, 6.9243, 6.4631, 5.6472, 3.9796, 1.7898, -0.2489, -2.4436, -2.6508, -2.547, -2.8932, -3.7418, -4.0472, -3.7409, -4.1721, -4.5045, -2.5398, -1.2681, -2.2512, -4.0819, -2.5504, -0.5617, -0.8125, -6.3247, -16.4522, 5.3598, 10.4107, 13.6148, 2.9041, 3.9937, 4.1878, 3.1505, 2.3718, 2.0861, -0.7564, -2.898, -3.01, -1.1906, -10.8392, 7.899,
72 15.3717, 14.4646, 14.0665, 15.2685, 17.889, 16.6173, 10.8299, 5.4591, 1.3248, -1.5112, -3.5105, -5.0396, -4.7139, -3.2327, 0.4893, 6.608, 9.2663, 7.1616, 4.6529, 0.9359, -6.9866, -12.7386, -15.0655, -16.3268, -15.5303, -12.5805, -11.4429, -13.9588, -17.7676, 4.4548, 2.5041, -0.5574, -1.9092, -1.6954, -0.798, -0.8178, 0.6929, 0.2455, 0.1742, -2.2936, -23.5972,
73 15.1415, 17.2129, 18.5276, 20.2576, 22.0435, 22.941, 21.3301, 18.4906, 16.7921, 16.6351, 16.5489, 13.5214, 7.0026, -0.4264, -6.3907, -10.2154, -12.0432, -13.8717, -14.814, -14.5501, -12.6863, -11.2906, -14.4502, -19.325, -21.0242, -20.2029, -17.6079, -17.4052, -20.1409, -0.1152, 0.2933, 0.6422, 0.8539, 0.5304, -0.1244, -0.6918, -0.3401, -0.1677, 0.0292, -0.9099, -22.1229,
74 16.3527, 16.4358, 14.5529, 11.7515, 8.0259, 5.7593, 4.7947, 5.2455, 6.9418, 9.3793, 10.6924, 9.9655, 9.0457, 8.3252, 8.4762, 6.3689, 3.4623, -0.5745, -4.6846, -8.568, -10.9887, -12.4636, -14.764, -14.5242, -15.3129, -17.5422, -18.4522, -18.6412, -19.0596, 4.6132, 1.4513, -0.0514, -0.1917, -0.3334, -0.137, -0.0439, -0.2954, -0.2393, -0.9118, -3.8606, -24.6234,
75 3.0149, 3.3679, 2.0858, 1.6705, 1.6501, 2.5867, 1.6237, 0.5766, -1.332, -2.3047, -2.927, -3.0607, -3.6274, -5.2376, -5.7845, -5.3526, -3.5342, -1.1532, 1.814, 2.9895, 2.7465, 1.9285, 1.7068, 1.7703, 2.22, 1.9728, 0.2297, -1.0946, 1.4544, -2.0981, -1.6916, 0.235, 2.2065, 3.1538, 2.2516, 2.893, 1.2452, 0.2641, 0.7151, -9.1746, 0.1743,
76 33.1383, 31.0792, 25.7434, 19.1612, 13.837, 10.1403, 5.0657, -0.9848, -4.0125, -3.8049, -1.4317, 2.9301, 4.0459, 0.1222, -5.3168, -8.1684, -10.0826, -10.8448, -10.2597, -10.3317, -9.4719, -5.7311, -3.3677, -4.7251, -6.396, -9.1268, -12.2844, -14.42, -14.5022, 2.606, 2.2289, 1.6967, 0.1399, -0.9831, -0.9608, -0.851, -1.0292, -0.7889, -0.5855, -1.473, -15.7149,
77 27.2923, 26.1076, 23.8786, 21.313, 19.0418, 17.172, 15.5267, 14.4631, 14.0462, 13.507, 12.4676, 9.9142, 5.6853, 0.598, -4.4056, -8.3465, -10.4675, -12.5667, -14.3166, -15.5842, -15.4689, -15.0589, -15.5652, -16.495, -16.8464, -17.9497, -19.4354, -19.6539, -18.853, 1.2956, 0.1647, -0.0666, -0.5622, -1.0818, -1.0177, -0.6516, 0.0389, 0.9296, 1.4023, -0.4513, -20.2788,
78 26.6766, 26.7374, 25.7566, 24.028, 20.4779, 14.6637, 7.833, 1.9621, -2.07, -4.7989, -7.3077, -9.0786, -9.622, -7.7331, -4.741, 0.1848, 4.407, 2.7266, -2.1973, -5.5028, -7.5677, -8.3692, -9.3827, -11.2185, -12.6814, -12.9582, -12.5667, -13.3838, -14.2742, 2.1312, 0.7483, 0.4117, -0.1309, -0.2886, -0.2604, -0.4816, 0.0583, -0.0383, -0.2744, -1.8754, -17.9569,
79 3.3978, 4.4684, 4.2593, 3.9748, 2.4838, 0.6609, -2.0182, -4.4753, -6.9532, -7.4489, -7.9821, -8.8126, -7.7701, -6.4035, -3.2114, -0.1726, 4.0273, 6.9857, 8.4846, 6.351, 4.9727, 4.647, 4.6414, 3.6916, 1.9176, 0.3255, -2.6101, -3.475, -3.9565, 1.7533, 1.1049, 0.647, -0.2625, -0.1699, -0.7934, -1.0459, -1.6085, 0.7985, 2.6353, -3.0588, -6.3429,
80 10.0599, 9.5448, 6.901, 4.3178, 2.5886, 1.5303, 0.1509, -1.0275, -2.6254, -2.8291, -3.0667, -3.4775, -4.4368, -5.1122, -6.2497, -6.7213, -5.2797, -3.88, -2.4109, -1.6128, -3.0693, -4.8056, -5.1575, -1.7918, 2.5625, 3.7623, 3.5521, 7.7141, 10.8696, 8.0651, 6.4772, 6.6051, 3.56, 1.8517, -0.5246, -1.7934, -2.7395, -3.6923, -4.3495, -13.4599, 0.6565,
81 25.7569, 24.1232, 20.4182, 16.1881, 12.4409, 10.9425, 10.5212, 10.6127, 10.069, 8.9583, 6.8593, 5.3047, 4.2774, 2.9654, 1.7215, -0.5266, -3.2445, -6.9442, -10.3293, -12.7061, -14.021, -14.2363, -13.7968, -14.0351, -15.0354, -15.6847, -16.5621, -16.6992, -17.3378, 1.2536, 0.3575, 0.1415, -0.1561, -0.1699, -0.6288, -0.437, 0.0255, 0.2138, 0.5498, -1.1499, -20.2166,
82 0.0231, -0.9014, -1.8167, -1.2335, -0.9356, 0.1659, 0.0099, -0.3194, -1.2785, -1.6159, -0.9934, -0.9581, -1.828, -2.2803, -1.6717, -0.1281, -0.6227, 0.0211, -0.2651, -0.5372, -0.9352, -1.0325, 0.2653, -0.4461, 0.6598, 1.585, 4.5525, 6.2731, 6.2437, 6.2289, 7.1906, 6.8806, 4.1911, 2.5668, 0.0429, -1.5955, -2.8462, -4.6688, -4.0492, -13.9413, -0.0713,
83 7.9284, 9.1572, 9.8203, 10.6262, 11.7687, 13.2204, 14.0222, 13.2111, 10.5107, 6.8116, 3.6111, 0.4955, -2.3899, -5.1121, -6.5572, -6.6556, -5.2199, -2.9231, -0.5211, -0.857, -4.748, -9.1464, -11.8191, -10.7137, -6.0224, -4.822, -8.063, -12.3598, -13.2532, 13.1773, 12.7484, 9.6243, 5.0688, -0.9409, -6.7845, -7.3453, -6.4726, -6.1985, -4.8683, -8.0086, -24.4428,
84 20.659, 19.3955, 16.2834, 13.6379, 12.4445, 12.1295, 10.9807, 10.1646, 10.4918, 11.3802, 11.3612, 11.2354, 10.6339, 6.7227, 1.1138, -3.7021, -6.4288, -7.959, -9.976, -11.0475, -13.1574, -15.9863, -18.1733, -17.6149, -16.1809, -16.3342, -15.4709, -13.2473, -13.3553, 6.4606, 2.2334, 0.0904, -1.0983, -1.1535, -1.871, -1.3953, -0.4539, -0.1442, 0.1951, -2.8632, -21.9027,
85 11.5076, 12.066, 12.717, 14.7721, 15.3221, 13.0928, 8.0689, 3.5812, 1.5428, 1.239, 0.9197, -0.0146, -2.1654, -5.8495, -7.9985, -6.4957, -1.4612, 4.6035, 5.2013, 1.9497, -2.2153, -5.558, -2.2714, -3.5929, -8.3748, -16.9482, -17.692, -14.1565, -11.7896, -0.1089, 2.8427, 6.389, 4.636, 3.9712, 2.8762, -3.4553, 0.8911, -3.1126, -3.8817, -11.0478, -18.2605,
86 9.1012, 8.2983, 7.709, 8.2796, 9.717, 11.3893, 12.9622, 12.4812, 9.4717, 5.4783, 2.6937, 2.0314, 2.3476, 3.7201, 7.2459, 7.9823, 4.2063, -1.0767, -4.4784, -6.7559, -4.5456, -4.6976, -8.2963, -18.7549, -25.0006, -24.3482, -13.5441, -8.7468, -4.87, 9.4162, -0.0518, -5.6394, -1.8175, 2.846, 5.7461, 4.9827, 2.5039, -4.5892, -5.3372, -8.0598, -24.0108,
87 25.3914, 22.4719, 18.4847, 14.1484, 9.8827, 6.3827, 3.7424, 2.3869, 2.0026, 2.1806, 2.2067, 2.4594, 2.5334, 2.7925, 2.7285, 2.5917, 0.9336, -1.3314, -3.7507, -6.3146, -9.9633, -12.2523, -11.7329, -10.5539, -10.5613, -12.897, -14.8061, -16.0931, -13.0635, 9.4907, 8.6133, 6.9669, 5.2967, 0.8483, -2.8965, -3.7224, -5.4526, -6.1034, -5.5404, -7.5006, -19.2567,
88 14.7633, 21.0347, 26.5178, 28.8557, 23.366, 14.8939, 7.8472, 4.1479, 1.6451, 0.194, -1.0241, -1.71, -2.7839, -5.4888, -5.8766, -6.7065, -6.5101, -6.3172, -7.4748, -8.1349, -8.6673, -9.2054, -8.7696, -9.2949, -9.5243, -9.8586, -10.6206, -12.3755, -12.9225, 0.5464, 0.3011, -0.4717, -0.8221, -0.5981, -0.7596, -0.1787, 0.0888, 0.268, 1.7014, -0.0756, -13.4143,
89 14.5722, 15.9781, 17.0264, 17.6175, 17.4232, 16.5459, 14.6151, 11.6122, 8.3872, 5.7241, 3.1297, 0.7916, -1.8948, -4.6319, -7.4829, -9.0432, -9.8372, -10.2623, -9.8461, -8.3463, -7.1311, -7.5141, -8.8925, -9.9645, -10.0906, -8.0182, -7.1753, -10.4665, -12.8258, 7.5756, 9.5196, 10.3723, 8.1609, 3.493, -3.1717, -6.1605, -6.9929, -7.1805, -6.8863, -8.7297, -20.7652,
90 37.2037, 35.8111, 32.3205, 28.0474, 23.2802, 17.7045, 11.6084, 5.8427, 0.267, -3.7432, -6.2669, -8.1167, -9.3928, -10.1312, -10.3467, -10.0877, -9.5979, -9.7744, -10.3207, -10.6331, -9.9469, -8.6203, -8.3585, -9.6074, -10.8446, -11.5167, -11.7789, -11.6363, -11.3647, 0.3839, 0.1181, -0.0142, -0.2099, -0.2835, 0.155, -0.034, 0.1033, 0.0295, 0.1568, -0.4049, -11.8075,
91 25.2715, 25.9731, 25.5019, 24.4387, 22.0168, 17.9875, 12.8839, 8.1186, 4.0883, 0.9493, -1.832, -4.9719, -7.8984, -10.8034, -12.5203, -12.4959, -10.7116, -8.3345, -4.1201, -0.1578, 0.1929, 0.1873, -2.8273, -8.7555, -14.7009, -17.595, -18.3997, -17.0685, -14.4171, 1.9066, 0.3797, 0.2936, 0.7746, -0.4377, -0.094, 0.1464, -0.0351, 0.2602, -0.8075, -2.3869, -18.3683,
92 -1.7829, -2.9115, -3.3197, -3.0219, -3.0103, -2.1963, -1.8274, -1.5453, -1.3834, -0.5971, -0.1822, -0.0707, -0.4004, -0.4751, 0.5738, 0.6319, 1.4145, 1.0927, 1.3496, 1.6238, 1.3746, 1.5109, 1.6452, 1.4227, 2.6607, 1.9921, 2.0933, 1.3984, 1.9401, -5.1733, -5.1451, -4.0887, -4.3334, -2.3485, -1.275, 1.8849, 3.8802, 5.4984, 6.3884, 4.712, 5.8699,
93 3.0884, 3.6195, 4.4987, 5.4241, 5.9234, 4.3151, 1.2318, -2.0672, -4.856, -6.7176, -7.7263, -9.2051, -9.8093, -9.8027, -9.8649, -7.58, -3.5471, 1.2395, 3.8333, 2.452, -0.138, -0.1169, 2.7696, 4.2835, 3.0029, 2.8349, 6.1975, 8.555, 8.1619, 3.4262, 3.7255, 2.9723, 1.5679, 0.6856, 0.7789, 0.0324, -0.04, -1.093, -1.5814, -10.4745, 2.5083,
94 7.7805, 8.5455, 8.0969, 7.418, 6.0322, 4.2643, 0.7072, -3.9008, -6.6106, -8.5279, -9.9913, -12.2197, -13.9875, -14.6194, -13.4585, -8.5866, -0.141, 5.8556, 2.7328, -4.3868, -7.6497, 1.0307, 6.7604, 2.0849, -2.0565, 4.3945, 7.6154, 14.5442, 18.2732, 15.9793, 12.4675, 8.6361, 9.3177, 7.162, -0.437, -7.8068, -13.596, -11.2218, -10.5975, -9.9034, -5.2521,
95 15.1743, 16.3078, 16.6845, 19.2037, 24.9642, 26.0482, 22.2299, 20.1754, 18.1609, 11.9813, 3.3906, -4.1269, -9.8102, -12.4054, -13.1972, -14.9771, -15.2101, -17.035, -17.5402, -17.273, -16.8388, -14.0848, -9.7661, -6.4551, -6.0572, -3.5105, -0.1292, -3.2831, -12.6212, 2.675, 0.5089, 0.394, -0.3851, -0.0012, -0.1207, -0.3792, 0.6121, -0.3176, -1.0554, -1.9307, -19.7041,
96 31.556, 30.0892, 27.2291, 23.5683, 19.0546, 13.2491, 7.4257, 2.9756, 1.0209, 1.0243, 1.37, 0.6757, -1.0362, -3.4535, -5.1118, -5.5508, -4.6428, -3.9233, -3.2906, -5.2994, -8.4124, -11.6578, -14.3387, -15.5177, -14.9184, -14.036, -14.9127, -16.4768, -16.6595, 1.6433, 1.397, 1.0165, 0.631, -0.0752, -0.3736, -0.503, -0.708, -0.7791, -0.4687, -1.7802, -17.0148,
97 10.1749, 8.8485, 5.1795, 4.5617, 6.0171, 6.4829, 4.3672, 1.6019, -1.645, -2.9876, -3.6524, -3.2008, -2.3296, -2.1644, -0.9768, 0.4251, 1.9391, 3.4981, 4.6467, 4.5048, 2.1218, -0.3094, -2.3029, -5.762, -6.5009, -7.7314, -8.789, -8.6982, -7.319, -8.3023, -3.9045, 0.7597, 3.5083, 5.647, 8.438, 8.927, 8.157, 4.5045, 0.2453, -27.9802, 0.6878,
98 -2.6861, 19.2221, 33.978, 25.1761, 5.3276, 0.9553, 6.0941, 10.8857, -5.1659, -6.6908, 10.287, 5.5719, -7.7825, 0.7662, -3.2785, -9.7089, 2.1449, -8.495, -0.8482, -8.2638, -3.5649, -9.0557, -5.193, -8.2034, -6.3047, -4.3602, -8.0851, -11.0228, -11.6996, 3.2339, 2.5869, 1.5692, 0.5614, -0.4616, -0.6459, -1.3729, -1.3736, -1.2425, -0.6779, -2.177, -11.9897,
99 7.7287, 10.4343, 12.3692, 13.9892, 14.6808, 14.5459, 13.0629, 9.866, 5.8851, 1.8545, -0.9409, -3.2758, -5.5305, -7.8527, -9.4747, -10.4586, -10.7336, -9.8759, -8.2611, -5.1685, -1.7008, 0.1176, -2.2902, -4.5858, -4.0962, -2.2, -2.3668, -6.9728, -8.7495, 13.3085, 14.0301, 12.5973, 11.0446, 6.5436, -2.6637, -9.4551, -11.0645, -11.2845, -10.7446, -12.3117, -20.4326,
100 10.736, 10.3386, 8.2768, 6.4632, 4.7302, 3.0267, 0.5796, 0.112, 1.9363, 5.0018, 8.3004, 9.8879, 8.2713, 4.5555, 2.8097, 1.8606, 2.8946, 3.7421, 5.297, 1.2683, -4.7378, -8.7201, -12.8564, -12.496, -9.6753, -7.5251, -10.0781, -16.3686, -17.6314, 11.3379, 8.1471, 4.3411, 2.5211, 1.4007, -1.3607, -3.3014, -4.3151, -5.9538, -5.2614, -7.5554, -24.6877,
101 15.8329, 15.515, 15.4055, 16.5837, 18.1854, 17.6604, 13.6126, 8.4914, 4.4891, 2.4328, 0.8814, 0.778, 2.695, 5.3091, 6.6587, 3.8545, -1.3529, -6.1324, -10.5147, -12.4571, -13.5735, -11.0746, -7.2535, -11.2844, -17.2383, -20.4683, -17.4107, -10.9397, -8.6853, 6.2333, 2.1814, 0.232, -2.1897, -2.6025, -1.7475, 0.3359, 2.9117, 0.0927, -0.1075, -5.3398, -21.1984,
102 7.6562, 6.587, 4.6968, 5.126, 9.8218, 14.9709, 16.085, 11.5684, 4.7265, -0.2176, -2.9979, -6.0694, -8.2544, -9.495, -8.0755, -5.7955, -0.4807, 4.7296, 3.3026, -0.0914, -2.8102, -1.2809, -0.3393, -3.3149, -5.6215, -8.5469, -6.678, -7.897, -11.3047, 12.3298, 6.3356, 1.6165, -2.5162, -1.6392, -1.6454, -1.7173, -2.3908, -2.4175, -3.1101, -4.8454, -23.7397,
103 4.9452, 5.0593, 3.8655, 4.302, 7.6977, 11.2424, 13.0502, 11.2196, 6.9219, 2.6857, 0.2056, -1.5076, -2.7845, -3.1104, -0.8091, 1.9648, 6.1634, 5.4049, 1.224, 0.3494, -1.5074, -1.8246, -3.5432, -4.5137, -4.3268, -8.6129, -12.2904, -18.8599, -22.6111, 7.0748, 5.7565, 2.9123, -0.3591, -1.5206, -1.728, -1.8572, -1.6318, -2.3011, -2.3197, -4.0261, -26.4685,
104 6.064, 7.2189, 7.3048, 8.3637, 9.316, 10.4746, 10.1941, 8.3124, 5.0444, 1.9281, -0.2645, -1.4345, -2.125, -2.621, -3.0015, -2.7992, -2.6148, -2.9666, -3.0696, -3.8743, -4.5941, -4.898, -5.682, -5.7978, -5.5722, -5.1973, -5.4147, -6.4176, -5.8765, -6.4521, -7.2215, -4.2413, -2.7669, -0.8266, 1.9295, 3.3149, 5.244, 5.9014, 6.7572, -1.6387, -0.2567,
105 5.2371, 4.8863, 3.31, 2.1337, 3.1492, 5.6939, 8.7998, 11.5679, 12.8023, 11.4528, 9.0298, 8.9298, 10.6661, 11.0071, 6.4326, 0.2441, -4.1637, -7.7062, -9.8518, -10.2264, -9.582, -9.1951, -8.6992, -10.3299, -13.3858, -12.1048, -8.3569, -6.0495, -5.6913, 14.1502, 9.0286, 4.54, -1.001, -2.1523, -1.3098, -3.6803, -4.2446, -3.9915, -4.5409, -6.7984, -22.3276,
106 1.1749, 2.9147, 3.84, 5.6634, 7.4575, 9.0125, 7.3532, 4.8392, 2.719, 0.871, -1.4481, -2.7601, -4.4452, -5.2662, -3.9827, -3.4617, -3.6219, -3.1639, 0.2716, 3.4947, 2.5863, 2.0483, 0.3695, -1.8223, -3.055, -5.56, -5.1761, -5.3683, -5.4841, 2.7668, 2.1577, 3.0912, 2.4351, 2.4455, 2.9457, 1.449, -1.5314, -2.866, -2.9647, -9.929, -9.9768,
107 25.7146, 25.3619, 23.9564, 22.3568, 19.1718, 13.1052, 5.5763, -0.1008, -2.7575, -4.2993, -6.3232, -7.4184, -9.0999, -12.1658, -14.7424, -14.2269, -13.0082, -10.2417, -6.6055, -0.914, 1.6308, -1.8199, -3.8874, -1.8765, -3.1164, -7.7016, -9.3481, -4.282, -2.9383, 8.4368, 1.7117, -0.7722, -1.4926, -2.2285, -1.9674, -1.046, -0.6567, 0.1437, 0.9502, -3.079, -15.7527,
108 10.7572, 9.4885, 7.7426, 6.5423, 6.0951, 6.6895, 8.5238, 11.1515, 12.9326, 13.0679, 11.3687, 8.6878, 5.8071, 4.2486, 4.2979, 5.1375, 3.6691, -0.4487, -5.794, -9.6188, -11.6687, -12.0791, -10.1837, -7.1986, -9.3267, -15.4942, -18.3956, -19.0668, -16.9329, 10.8057, 6.4011, 3.369, 1.5029, -0.9587, -2.8947, -3.7517, -3.2931, -2.8022, -2.8052, -5.5731, -27.3774,
109 30.7504, 28.4951, 25.5185, 22.1742, 18.1099, 13.036, 7.7976, 3.5112, 0.1176, -2.6569, -5.1898, -7.4966, -10.1459, -13.1401, -15.8245, -17.097, -17.1868, -16.6198, -16.0292, -14.4009, -11.3257, -6.937, 0.011, 2.6766, 1.9106, 1.9904, 0.8448, -1.2215, -1.6723, 13.9837, 12.0732, 6.7883, 4.2122, -0.6419, -6.1564, -6.879, -7.3232, -5.7545, -3.2248, -7.0778, -13.8733,
110 5.5235, 4.9142, 3.2141, 2.659, 2.9961, 4.2989, 2.3547, 0.5028, -0.826, -1.5841, -2.8526, -2.4476, -1.183, 1.5505, 2.5932, 1.4615, -0.955, -2.6992, -1.462, 0.7531, 3.9055, 4.2326, 1.8576, -1.8966, -2.2755, -5.1995, -7.0773, -7.5304, -4.8283, 8.7008, 8.7053, 7.0759, 3.5239, 0.2213, -0.4716, -2.9649, -4.4365, -3.897, -5.646, -10.8111, -11.0662,
111 10.0683, 11.2576, 9.125, 5.5609, 2.1927, 2.3916, 0.5672, -0.6821, -1.7701, -2.4144, -2.1229, -2.5051, -3.0931, -3.4474, -3.5498, -4.6568, -4.0419, -2.9786, -1.6058, 0.2043, 0.2119, -0.9338, -2.1449, -1.59, -1.2476, -0.0367, -0.7467, -1.0002, -1.0118, -12.1871, -7.6015, -6.026, -2.6153, 1.8019, 5.1419, 7.0075, 7.4839, 6.3084, 5.7281, -5.0417, 11.1839,
112 19.0914, 19.5418, 18.555, 17.3149, 15.8219, 14.6893, 12.7457, 11.1878, 8.8607, 6.1729, 3.1425, -0.6029, -5.0284, -9.2811, -12.4294, -13.9531, -12.8183, -10.2445, -6.0419, -0.7352, 0.9087, -2.2874, -5.6745, -5.3857, -4.8993, -8.6787, -14.4653, -17.3889, -18.1181, 2.0079, 2.3051, 0.155, -1.9709, -2.1518, -1.0518, -0.2981, 0.922, 1.4828, 1.7198, -3.1202, -19.8209,
113 7.5768, 6.693, 5.4155, 4.9157, 5.4796, 5.747, 5.5734, 5.4561, 5.0927, 4.7098, 4.4827, 3.6618, 2.9817, 3.26, 4.2867, 6.6922, 8.7811, 7.7587, 3.8523, -0.1532, -4.4933, -6.9881, -8.1454, -8.949, -9.5267, -13.8968, -17.7691, -17.7758, -14.7195, 9.4196, 10.2634, 10.4478, 8.8124, 5.1507, 1.4872, -4.9411, -9.3928, -9.8991, -10.009, -11.3391, -24.4463,
114 6.3112, 6.1145, 5.3668, 4.5313, 3.6954, 4.7877, 6.2658, 8.3789, 10.2936, 11.7688, 11.4084, 9.532, 6.981, 5.0657, 4.7615, 5.5904, 6.1808, 3.6441, -0.8606, -5.0517, -7.7101, -8.0207, -7.3867, -7.998, -11.4209, -15.6623, -18.321, -19.2583, -18.9878, 1.9218, -1.0898, -2.1315, -2.6064, -0.329, 1.3612, 2.7055, 3.4481, 2.127, 0.3937, -5.8006, -23.891,
115 4.7133, 7.0828, 7.4451, 6.1536, 5.1026, 6.1735, 5.562, 4.7204, 2.3449, 0.0662, -0.0552, -1.4746, -1.3028, -2.0833, -2.3742, -3.0032, -1.8959, -3.1532, -2.7407, -2.7522, -3.1457, -4.1303, -3.0723, -3.0359, -3.2114, -2.1394, -2.2842, -3.9496, -3.5601, -9.5458, -8.5225, -2.1447, -3.0135, -13.5275, -8.701, 7.2088, 11.6588, 11.789, 11.7226, 3.0758, 6.7721,
116 14.9989, 17.5318, 17.0021, 15.1799, 12.5029, 9.0797, 3.8559, 0.1428, -2.0371, -1.8983, 1.178, 2.723, 2.0463, 1.0309, 1.6621, 0.5141, -1.5732, -3.0527, -4.0016, -5.2671, -5.7073, -7.6154, -8.5918, -8.8827, -8.7941, -6.7438, -5.5924, -13.4525, -16.2384, -1.004, -2.5012, -0.5919, 1.0505, 3.9201, 5.2244, 4.5335, 2.9522, -3.9239, 1.3432, -11.0028, -13.759,
117 23.3831, 23.986, 23.9088, 23.9899, 24.5442, 24.7231, 23.4676, 20.9361, 19.0352, 18.1315, 16.6484, 13.2407, 6.9323, -0.853, -7.8736, -12.542, -15.8304, -18.1801, -19.7679, -20.6937, -20.6499, -19.866, -18.7929, -17.4798, -16.8484, -17.7541, -18.9554, -19.1779, -17.6622, 2.2274, 0.2658, 0.2329, 0.5563, -0.2993, -0.6411, -0.8349, -0.8217, -0.3946, 0.3529, -0.6438, -20.4737,
118 27.1582, 28.3012, 27.2357, 25.1547, 21.7324, 15.2318, 7.9956, 2.0196, -1.2674, -2.1412, -2.5552, -3.818, -5.536, -7.5787, -8.8477, -9.9856, -10.6186, -10.6812, -11.5427, -13.058, -14.018, -14.2114, -12.3911, -5.9856, -0.0551, 2.4393, -1.0062, -8.7488, -13.2219, 8.5421, 8.1274, 3.1062, 1.0714, -1.1957, -2.6079, -3.1237, -3.4444, -3.3713, -3.1296, -3.9745, -17.2997,
119 0.2274, 1.5742, 0.903, -0.0755, -0.9929, -0.001, 0.9686, 1.1448, 0.4783, -0.3525, -0.1336, -0.1913, -1.6241, -4.5094, -5.8249, -5.384, -4.269, -0.9607, 3.2627, 5.8265, 5.0034, 2.6931, 1.4156, 0.6324, 1.3181, 1.5226, -0.7562, -0.2634, -1.6323, 10.1447, 8.1369, 6.9278, 1.8273, -2.8348, -3.1502, -3.8258, -3.2103, -3.0403, -2.8386, -8.1368, -10.7452,
120 2.203, 2.3567, 2.277, 1.9391, 1.4807, 2.4535, 3.7369, 4.5955, 4.8497, 4.7689, 3.9314, 2.906, 0.5571, -2.275, -3.2233, -2.8254, -1.7099, 0.781, 3.0014, 3.5591, 0.5135, -3.7594, -6.0245, -4.9397, -2.1317, -1.108, -3.4783, -7.2902, -7.145, 17.4214, 15.9833, 12.556, 11.8901, 6.7955, -3.1206, -12.2737, -12.4585, -12.5086, -11.3448, -12.94, -23.4673,
121 1.7001, 2.1276, 3.1509, 3.8711, 3.445, 3.9578, 3.9916, 2.2726, 1.586, 2.9582, 1.5039, -0.3172, -1.6934, 0.048, 1.7637, 5.8108, 12.7325, 15.4092, 10.2323, 1.637, -5.9209, -8.2841, -8.8154, -8.6341, -8.8994, -8.7332, -8.858, -9.426, -8.6166, 1.0902, -0.3804, -1.838, -2.1594, -2.0188, -0.5336, -0.2356, 0.9072, 1.9988, 2.4507, 0.7188, -11.1533,
122 3.347, 4.2651, 3.1581, 1.5899, 1.3593, 5.4416, 9.6912, 10.3789, 8.2781, 5.7621, 2.3516, -1.6093, -4.6703, -4.3014, -2.0948, 1.2895, 4.5826, 5.8867, 2.758, -0.5921, -1.6254, -0.3408, -0.8297, -4.7115, -8.7548, -10.195, -9.4023, -10.1017, -10.9107, 5.4257, 1.3752, -1.6808, -1.6847, 0.0776, 4.2441, 3.7807, 1.7086, -1.1629, -3.5093, -8.5743, -19.3479,
123 16.0698, 16.0234, 16.6242, 18.4265, 19.5793, 17.7359, 12.2454, 6.7061, 2.9279, 1.0254, 1.3081, 3.1537, 6.2322, 6.7809, 1.2833, -4.6315, -8.4988, -10.9702, -12.9812, -12.8617, -10.8763, -6.7933, -7.5585, -12.211, -13.1807, -11.6979, -8.6529, -10.8315, -14.3767, 3.5106, 2.2779, 0.8347, -0.4316, 0.4812, -0.3548, -0.958, -0.3001, -0.9639, -1.0077, -3.0884, -21.7124,
124 14.8614, 14.3243, 13.2597, 11.9042, 11.3617, 12.9241, 16.0023, 18.6135, 19.9112, 18.7801, 18.0215, 16.7944, 15.059, 9.5509, 2.2373, -3.7737, -7.9433, -11.6438, -15.8775, -19.0534, -20.0063, -19.8849, -17.4072, -14.6677, -14.9214, -15.6185, -17.3399, -17.4032, -18.065, 0.4331, -1.3874, -1.3387, -1.2657, 0.1397, 0.9913, 1.3715, 1.5636, 0.9626, 0.3031, -1.7729, -22.491,
125 24.4358, 25.1322, 25.6771, 26.9458, 25.4271, 20.1741, 13.1848, 7.1606, 2.9511, -1.5207, -6.2228, -9.1615, -10.2139, -7.9615, -3.5511, 0.8947, -0.064, -5.6909, -11.888, -15.0418, -13.4238, -8.6724, -10.1392, -15.6141, -16.4146, -15.3775, -9.3359, -5.8457, -5.844, 5.367, 0.7714, -1.2803, -0.3316, 0.0917, 1.3247, -0.3166, -0.6629, -0.4726, -0.9886, -3.5022, -15.8979,
126 11.2574, 14.5322, 17.177, 19.437, 21.2176, 22.024, 20.3915, 16.7178, 12.6022, 9.4053, 7.3741, 6.1361, 6.443, 7.2023, 6.6378, 2.8391, -3.5908, -9.035, -12.7524, -16.0348, -18.3668, -20.0831, -20.1715, -19.0743, -16.0476, -13.945, -16.7267, -18.3902, -17.1759, 6.7669, 3.5601, 1.4726, 1.2131, 0.8001, -1.0515, -1.7968, -2.1212, -2.4567, -2.6039, -3.7828, -21.2313,
127 9.8296, 10.9668, 11.4657, 12.4379, 13.8874, 14.6363, 14.3342, 12.4038, 8.9235, 5.049, 2.1177, -0.5223, -2.7832, -4.1482, -4.6107, -3.0828, -0.2052, 2.3942, 2.4641, -1.9911, -6.8813, -9.3285, -9.5593, -6.0838, -4.8651, -9.6703, -15.7893, -21.0597, -20.3293, 7.8335, 9.3572, 8.2255, 6.2992, 3.6571, -1.3039, -4.8523, -6.7448, -6.9973, -6.7242, -8.7501, -23.8675,
128 10.0961, 10.4449, 9.9127, 8.5711, 6.218, 4.5618, 2.4521, 1.111, -0.1627, -0.3653, 0.8918, 1.6279, 1.8907, 0.7438, -0.7728, -1.2107, -1.2055, -1.5566, -3.2793, -4.1807, -4.1312, -5.1981, -4.9412, -5.1286, -4.9138, -5.1042, -5.2876, -6.4396, -4.6442, -4.2766, -4.5588, -1.6946, -0.6815, 1.6923, 2.6384, 3.794, 3.9827, 3.1253, 3.8234, -7.8447, -3.7539,
129 0.0757, -0.0653, -0.5789, 0.6712, 3.3974, 5.2272, 3.8057, 1.3204, -0.9531, -1.2566, -1.6955, -1.1717, -0.9735, 0.2237, 1.1803, 4.3319, 6.8301, 9.0463, 9.4433, 7.5902, 3.7433, 0.0327, -1.4644, -4.7154, -6.0059, -7.2747, -9.9821, -10.6151, -10.1672, 1.8545, 3.4334, 6.1661, 5.8556, 3.1158, 1.3495, -0.3375, -1.2855, -2.2198, -4.5273, -13.4049, -11.7714,
130 18.832, 19.0344, 19.1952, 19.544, 18.8449, 14.8697, 8.6867, 2.7879, -1.6869, -4.7635, -7.1363, -8.878, -9.6594, -9.0777, -6.9523, -1.8282, 3.5267, 4.4511, -1.5807, -5.656, -7.8512, -4.0511, 0.2367, -5.4146, -11.328, -13.9141, -12.866, -9.0793, -8.286, 7.2253, 2.308, 0.9914, -1.0476, -1.1123, -1.0979, 0.2181, 0.5772, -1.1907, -1.879, -4.9926, -19.5991,
131 6.9436, 25.3648, 31.2509, 23.4659, 7.6212, 8.5476, 13.4044, 12.1024, 6.331, 6.4395, 11.2808, 6.4453, 3.3798, -0.4108, -2.6193, -4.1535, -5.4353, -7.8115, -9.9117, -10.8599, -12.3626, -13.5397, -13.0447, -13.134, -12.5666, -12.9922, -14.205, -14.7731, -14.7573, 0.6782, 0.293, 1.1419, 0.5868, -0.3036, -0.7149, -0.2401, 0.2321, -0.6483, 0.2892, -1.3142, -13.0829,
132 8.063, 8.593, 8.9037, 9.6389, 9.9192, 8.643, 5.1562, 1.1687, -2.685, -5.3768, -7.2472, -8.6966, -9.7539, -8.277, -7.3009, -4.7332, -2.5381, -2.7034, -3.2364, -4.1264, -4.6546, -3.984, -4.4745, -3.1865, -2.7693, 0.2429, 6.0573, 8.4087, 10.949, 1.5828, 2.2857, 2.4626, 4.2564, 3.1914, 1.9048, -0.4814, -1.9794, -1.6878, -0.6562, -10.8788, 6.9006,
133 15.3121, 14.0216, 12.315, 10.8984, 9.8481, 9.486, 9.9555, 11.2336, 12.1475, 11.5421, 9.508, 6.1797, 2.1804, -1.5586, -4.1037, -3.8925, -2.2145, -0.574, -2.0726, -5.8999, -9.587, -12.3986, -13.2888, -11.0931, -8.695, -10.6144, -15.3843, -17.4751, -15.7759, 11.6735, 8.2281, 4.7038, 3.1666, 1.7515, -3.5926, -5.6951, -5.7508, -5.1915, -3.439, -5.8544, -26.0008,
134 10.5147, 10.1953, 9.3949, 9.1051, 8.3007, 7.6855, 5.3821, 2.1136, -0.5365, -2.3955, -3.8024, -5.3725, -5.6568, -4.8775, -2.4291, 0.2566, 4.4555, 7.9385, 8.4324, 6.4827, 2.9059, 0.5262, -2.9536, -6.313, -9.2242, -10.021, -12.3911, -13.793, -13.9236, -1.0018, -1.0252, -1.9659, -2.6464, -2.974, -1.2967, 0.3806, 1.637, 3.3651, 4.3609, 1.1664, -14.6511,
135 17.246, 16.9637, 17.1204, 18.874, 20.7478, 19.3865, 13.9822, 8.1265, 3.288, 0.778, -0.2592, -1.0141, 0.0742, 3.2639, 4.6036, 2.5181, -3.1653, -6.8864, -8.0795, -7.3818, -6.3471, -6.8628, -11.5495, -14.8984, -15.4665, -15.712, -14.8453, -15.6943, -18.8106, 1.498, 1.4377, 1.0081, 0.1939, -0.3867, 0.3736, -0.2884, -0.4032, -0.4237, -0.7102, -2.299, -21.4765,
136 29.1324, 27.4472, 23.9346, 19.8815, 15.3348, 10.3288, 4.4524, -0.1346, -3.0576, -4.7063, -5.5439, -5.9222, -5.9328, -6.6024, -6.7197, -6.0365, -5.2696, -5.1176, -6.4818, -7.5705, -8.4454, -8.5007, -8.4654, -7.9097, -7.0136, -8.1875, -7.3437, -4.302, -1.2484, 4.1307, 4.9307, 5.3321, 3.9185, 2.3886, 0.5401, -1.5333, -2.6429, -3.4176, -4.0077, -9.6393, -7.8398,
137 26.1063, 27.1257, 26.4958, 24.5623, 21.0909, 16.0392, 10.3606, 5.2224, 1.283, -1.7057, -5.2899, -8.7872, -11.5471, -13.8485, -15.6146, -16.5388, -16.6318, -15.7526, -14.3061, -11.8594, -6.9641, 0.2736, 3.2894, 2.3319, 2.1876, -0.1464, -6.9487, -10.5477, -9.8802, 8.0155, 5.1637, 1.2918, -0.1585, -1.6768, -2.1876, -2.1575, -2.3734, -1.4901, -0.3422, -4.085, -16.2781,
138 -2.8938, 0.5854, 4.9032, 19.8896, 33.0777, 27.8431, 5.8284, -0.8777, -0.4212, 7.5419, 14.4523, 0.5889, -7.2843, -5.7721, 2.2765, -3.867, -7.0376, -2.4089, -1.923, -6.9736, -5.054, -6.8128, -9.1282, -7.6378, -9.9538, -8.0762, -10.1133, -10.3156, -10.4365, 1.79, 1.293, 1.2513, 1.1649, -0.0523, -0.1935, -1.3719, -0.6466, -0.7256, -0.6226, -1.8868, -11.7248,
139 5.0511, 7.2825, 7.4756, 7.6284, 6.3099, 6.5711, 6.0062, 5.2464, 4.1337, 3.5789, 2.7344, 1.9171, -0.0947, -4.7055, -6.3175, -6.726, -8.3754, -7.5699, -4.4289, -0.5061, 0.5491, -0.6121, -1.663, -2.5886, -1.0683, -1.0286, -4.3484, -7.2928, -7.1586, 2.8359, 1.6298, 0.9777, 0.2594, 0.2894, -0.2649, -0.2767, 0.5984, -0.0902, -0.5417, -5.4171, -8.5849,
140 26.8109, 26.2612, 24.6562, 22.4444, 19.7975, 16.2207, 11.9006, 7.5618, 4.2432, 1.162, -1.9686, -4.6999, -7.0035, -8.7711, -9.4863, -9.0559, -7.8923, -6.8802, -7.012, -8.4837, -11.2123, -13.1769, -13.1832, -11.7848, -8.9173, -7.9697, -7.9495, -8.0762, -7.535, 6.9413, 5.9114, 4.4559, 1.9045, -0.222, -1.5629, -2.1181, -2.9624, -3.1458, -3.1496, -6.0522, -15.8707,
141 15.4221, 13.9665, 11.5956, 9.4217, 7.3471, 4.9825, 2.5822, 1.1306, -0.4479, -0.0543, 0.4224, 2.6264, 2.4323, 2.9777, 3.9679, 4.5466, 4.0757, 2.5862, 0.7066, -2.3566, -5.4206, -6.8028, -9.1716, -8.9333, -8.9478, -9.7023, -11.2057, -13.2026, -14.5445, 4.5118, 3.2465, 1.4635, 1.0112, 0.8257, -0.5633, -0.8311, -1.4185, -1.8127, -1.1914, -5.2417, -16.4127,
142 28.007, 28.9811, 29.1691, 29.0099, 27.2163, 23.1256, 18.5752, 16.0256, 16.0772, 16.0792, 13.4415, 7.1002, -1.0509, -7.6202, -12.1978, -14.61, -16.035, -16.8734, -17.1512, -17.3461, -17.2821, -16.7355, -16.3289, -16.1605, -16.3294, -16.8373, -17.0316, -17.0117, -16.2062, 0.8143, -0.0316, 0.0425, -0.0469, -0.56, -0.2604, -0.2934, -0.0397, 0.1815, 0.6487, -0.4551, -17.2928,
143 21.3473, 20.28, 18.5835, 16.4034, 13.0771, 9.2891, 7.0954, 6.8063, 9.6682, 13.1023, 14.6281, 13.8935, 12.0583, 11.5472, 11.1879, 7.7716, 2.5072, -3.2634, -8.4595, -14.0714, -18.2085, -21.2308, -24.2103, -24.5753, -21.1428, -16.8159, -16.8684, -20.7499, -19.65, 7.8883, 2.8059, -0.2509, 0.2746, 0.577, -0.7075, -1.0613, -1.6761, -2.152, -2.4962, -3.2017, -23.7494,
144 16.7277, 16.51, 14.9737, 13.3864, 11.3764, 9.4606, 7.4445, 4.9221, 3.5715, 2.4337, 1.9778, 1.0209, 0.1128, -1.6904, -3.3639, -3.2615, -1.5944, -0.2581, -0.903, -2.3174, -4.1698, -4.9533, -4.5665, -6.1912, -10.0495, -13.234, -15.5995, -16.5459, -15.2199, 5.3973, 5.3767, 6.35, 5.5996, 2.0913, -2.3482, -4.267, -3.6648, -4.0077, -3.9263, -6.601, -20.6386,
145 3.6641, 3.072, 2.139, 1.3959, 0.5821, 0.1856, -0.7457, -1.801, -2.5799, -2.9996, -3.1922, -3.7936, -4.3073, -4.4608, -3.725, -2.3583, -1.9204, -1.2606, -2.2907, -2.819, -3.6214, -3.1415, -2.0045, 0.0938, 2.4493, 4.0398, 6.5627, 10.1038, 12.7333, -5.2898, -3.8412, -0.6529, 0.7502, 1.5439, 2.507, 2.6854, 3.8159, 2.2321, 3.0585, -6.8092, 14.5213,
146 7.5981, 6.7937, 5.2222, 4.6535, 5.7305, 7.9847, 10.01, 10.9988, 9.0694, 6.0491, 3.4695, 2.202, 3.1237, 4.5225, 7.5338, 7.066, 2.89, -1.4622, -5.4401, -6.1963, -7.3166, -5.9799, -7.7791, -10.5609, -13.5413, -13.8804, -12.9467, -9.4679, -10.3461, 11.6866, 9.3826, 4.4701, -2.9772, -5.447, -4.9307, -2.727, -0.1581, -1.4072, -1.6802, -6.2119, -24.8632,
147 5.8372, 5.4933, 4.4445, 3.1566, 1.2701, 1.1435, -1.1096, -2.4243, -3.5109, -2.2282, 0.6573, 2.1785, 1.1141, 0.6038, -0.927, -0.101, 0.3438, 0.9773, 1.8036, -0.1658, -2.1507, -2.6201, -1.5194, -0.3072, 1.7488, -3.1481, -4.7553, -3.5314, -2.2733, 1.5456, 3.9136, 6.0524, 4.791, 5.6839, 4.8261, 0.4655, -3.9096, -15.7692, 1.863, -9.4624, -9.489,
148 4.6026, 4.2957, 4.0221, 3.8863, 4.8775, 7.7799, 11.9268, 15.6438, 16.1838, 13.0359, 8.2259, 3.9397, 1.1633, -0.5844, -0.4453, 1.672, 3.9861, 4.4822, 0.7429, -4.6835, -8.2254, -8.6845, -8.8455, -9.205, -9.3625, -12.115, -14.9115, -16.6057, -16.7984, 9.4268, 8.2301, 5.436, 2.2444, -2.802, -3.6865, -3.4374, -3.621, -3.4624, -3.4351, -4.8928, -25.4465,
149 31.7873, 30.4727, 26.1023, 20.2575, 14.3546, 8.305, 2.5479, -2.7242, -6.2652, -7.8786, -9.5076, -10.7253, -11.9221, -12.5796, -13.002, -12.411, -11.3787, -10.5858, -9.2885, -7.2279, -5.6862, -4.5481, -3.8155, -3.181, -0.2688, 1.7479, 2.4086, 2.6005, 2.4118, 6.0159, 2.6937, 1.8092, 1.2143, 0.6228, -0.1962, -1.5166, -0.7925, -1.1563, -2.0509, -6.6433, -6.4991,
150 18.8196, 18.806, 19.0012, 19.7425, 18.9386, 15.192, 9.3626, 3.8042, -0.7101, -2.8913, -4.5793, -4.8562, -4.2855, -1.5235, 2.8079, 3.9527, -0.682, -6.1064, -9.0907, -10.7715, -10.2261, -6.853, -5.4028, -9.0538, -11.2966, -11.9744, -10.3023, -9.0454, -10.7763, 4.8079, 2.0464, 0.5831, -0.5085, -0.7115, -0.6171, -0.2759, -0.3213, -0.227, -0.8577, -3.9185, -18.4439,
151 29.8848, 29.1207, 27.5698, 25.5473, 23.0863, 20.0333, 16.4515, 12.7057, 8.6525, 4.4123, 0.1328, -3.7662, -7.0685, -9.2222, -10.1967, -10.3862, -9.4399, -7.5052, -6.1986, -7.052, -9.653, -11.7447, -12.817, -13.2994, -13.4411, -14.5193, -16.0619, -17.4467, -17.7785, 0.6444, 0.915, 1.0957, 0.6198, -0.2661, -0.3037, -0.4308, -0.4697, -0.3863, -0.3182, -1.1, -17.5027,
152 18.4803, 19.3278, 19.3456, 18.5446, 16.5534, 13.5838, 10.0057, 6.5241, 3.2399, 0.544, -2.4922, -5.5969, -8.475, -10.0774, -10.9952, -10.9028, -10.6525, -9.9639, -8.7708, -5.9295, -0.9987, 2.2097, -2.2176, -6.2966, -4.0572, -2.0702, -5.9921, -9.8384, -13.0318, 9.7202, 8.7919, 5.85, 1.2627, -3.1473, -4.0847, -3.9814, -3.8063, -3.2668, -2.9485, -4.3897, -21.4605,
153 10.8936, 10.0376, 8.9233, 8.3835, 9.1909, 11.1956, 12.7625, 12.831, 11.2547, 8.6892, 5.7674, 5.0532, 5.1919, 6.4652, 5.5698, 1.2762, -3.6991, -7.9057, -10.9535, -12.3006, -13.0325, -12.0668, -10.2756, -8.9081, -9.5586, -12.4845, -12.5292, -10.6874, -9.0841, 6.7548, 4.3777, 7.2866, 11.0895, 5.9012, -3.2191, -7.2773, -7.4247, -5.9063, -4.6316, -6.951, -23.662,
154 14.1801, 13.6094, 10.246, 6.2621, 3.2304, 0.492, -3.3704, -5.1542, -6.4379, -7.1331, -6.8071, -6.701, -7.0994, -6.7923, -5.4284, -4.1081, -2.2588, -0.3405, 0.3901, -0.1306, 0.2111, 1.2777, 2.612, 2.4542, 2.4177, 2.7283, 1.9381, 0.6674, -0.9548, 1.3373, 0.4195, 0.2246, -0.2612, -0.578, -0.3401, 0.2289, 0.3082, 1.5502, 2.1823, -5.0717, -1.9154,
155 7.4197, 7.6107, 5.1248, 2.8926, 2.5158, 5.2747, 7.9445, 9.5554, 9.8134, 10.8602, 11.2127, 10.8181, 10.8451, 8.6337, 3.4818, -1.7126, -6.6143, -9.2501, -11.755, -13.8987, -14.1553, -13.7199, -12.4906, -7.978, -7.1759, -5.4179, -4.3134, -2.3617, -3.1596, 3.7397, 0.2684, -0.7543, 2.0473, 3.1074, 3.1748, 0.6925, 0.1021, -1.9327, -0.9979, -9.4471, -15.9473,
156 5.0374, 7.8743, 10.506, 13.2551, 15.8405, 18.1863, 17.687, 15.2297, 11.9245, 8.8446, 6.8821, 5.5715, 2.9277, -1.1968, -4.6014, -6.2302, -7.5567, -8.8097, -8.9946, -8.6106, -9.0917, -8.5223, -8.8031, -10.3066, -10.5465, -10.512, -10.3576, -11.9252, -13.702, 3.764, 1.872, 2.0488, 1.2415, 0.9134, -0.5949, -1.6362, -1.3248, -1.6433, -1.0179, -3.6227, -18.8186,
157 19.2311, 20.9055, 21.1816, 19.8035, 16.764, 10.9316, 4.3014, -1.2152, -6.3082, -9.8229, -12.4158, -14.601, -15.196, -13.5529, -10.486, -6.001, -0.0077, 5.5394, 4.4883, 0.8609, -0.7114, -0.5882, -2.0714, -4.1988, -3.5305, -2.7385, -3.9119, -6.6059, -10.044, 6.8589, 1.6709, -0.4277, -0.8756, -0.7567, -0.4132, -0.3654, -0.2776, -1.2933, -1.0276, -3.0928, -19.711,
158 24.3921, 23.8657, 21.7178, 19.5721, 17.2483, 13.0391, 8.278, 4.5096, 2.1017, 1.4583, 0.4028, -1.6986, -2.5413, -2.4202, -3.3681, -6.3081, -8.4179, -8.6508, -8.3994, -5.6233, -2.8768, -2.4582, -4.6987, -11.026, -15.7297, -17.5495, -16.498, -11.2445, -7.0765, 10.9683, 8.5482, 1.624, -0.8116, -2.3291, -2.0794, -2.7065, -3.3384, -2.8326, -2.6102, -4.4326, -18.4205,
159 21.6293, 21.2629, 20.0435, 18.0462, 14.0665, 8.5047, 3.1435, -1.3209, -4.4014, -5.7444, -6.244, -6.5178, -6.8764, -6.1381, -3.8131, -1.3478, -0.7585, -3.8085, -6.8211, -8.0966, -7.589, -5.2013, -2.5966, -3.9678, -5.8322, -4.8627, -3.8164, -4.4574, -6.4845, 7.4192, 3.5944, 0.8769, -1.2773, -0.8711, -1.2539, -1.2063, -1.1651, -0.7991, -1.1807, -4.1369, -15.4669,
160 25.3218, 25.2194, 24.6132, 23.8034, 22.1467, 19.2686, 16.007, 12.6244, 9.8907, 7.3439, 4.6106, 2.0173, -0.23, -3.1887, -6.2778, -8.9287, -10.75, -12.4083, -13.6221, -14.5295, -14.0216, -11.6668, -8.29, -7.178, -8.6454, -13.0929, -18.1357, -20.6369, -21.2645, 0.649, 1.5279, 1.4976, 1.2259, -0.2509, -0.5437, -1.0645, -0.9697, -0.4026, 0.0229, -1.6919, -19.5268,
161 -1.2546, -1.5446, -0.9486, 0.9829, 1.7405, 1.8511, 2.612, 4.5582, 4.2836, 3.2383, 1.925, 1.5674, 0.4781, -1.1296, -1.5011, -0.3895, 1.2177, 2.8828, 3.7419, 3.9893, 0.6886, -1.304, -2.837, -5.679, -3.6007, -1.063, -1.5598, -5.1076, -7.8381, 10.2277, 6.2474, 2.9832, -0.8736, -8.4082, -6.4397, -4.2854, -1.8654, 0.4359, 0.954, 1.0241, -18.8314,
162 -3.652, -0.9802, 0.633, 3.0142, 3.7152, 4.2246, 3.065, 2.2808, 0.7668, -0.9696, -2.1283, -3.4617, -5.696, -9.1999, -10.9932, -10.595, -8.8872, -8.3491, -3.9024, 3.8951, 4.5732, 4.1833, 4.4267, 5.3015, 7.163, 6.8136, 3.6, 4.1437, 7.0149, 8.8113, 4.5339, 4.332, 3.8462, 2.4702, 0.0061, -1.7359, -2.2461, -3.3967, -3.6881, -12.9329, -0.9921,
163 24.1276, 23.4144, 21.9515, 19.2491, 15.3233, 10.6683, 5.7075, 1.4491, -1.9622, -3.4974, -4.3346, -5.264, -5.4783, -4.5424, -2.5563, 1.0471, 2.9749, 1.0585, -4.2112, -7.704, -8.5161, -8.5574, -7.1906, -8.4892, -11.7312, -13.8838, -13.1386, -9.4367, -6.477, -5.2323, -4.7057, -2.176, 0.8632, 2.4803, 4.6972, 3.2524, 3.1237, 0.8651, 3.0078, -6.1758, -9.0277,
164 9.207, 8.6269, 7.9993, 9.2567, 10.6048, 10.9179, 8.2726, 5.4801, 2.9587, 1.4349, 1.6895, 0.8687, -0.1341, -1.4667, -2.2954, -2.9979, -3.1146, -3.5248, -3.6823, -3.9108, -4.704, -5.0502, -5.2411, -6.0582, -6.2892, -7.1229, -6.8496, -7.8359, -7.0393, 1.0164, 0.3126, 0.256, 0.1094, 0.1566, -0.0117, -0.2184, 0.266, 0.0029, 0.5627, -2.4525, -9.3388,
165 19.0542, 19.7864, 20.4414, 20.8883, 19.4828, 14.6899, 8.0652, 2.5866, -1.961, -4.2899, -5.3264, -5.8141, -5.3969, -2.8814, 0.6767, 3.6783, 2.8172, -1.1754, -3.8287, -4.3496, -4.1271, -2.7566, -3.4552, -6.5139, -9.4384, -14.1688, -17.1871, -19.0448, -20.4515, 1.8392, 0.8553, 0.2154, -0.0271, -0.4104, -0.2449, -0.1708, 0.0249, -0.0369, -0.2525, -1.7922, -22.7099,
166 22.2875, 23.2966, 21.0875, 19.4172, 19.4631, 20.2489, 19.086, 14.7884, 9.6247, 4.7618, -1.1341, -7.8711, -13.4709, -16.4039, -17.9473, -16.0183, -8.7161, -0.3674, 4.2198, 1.897, -0.6141, -0.3383, 1.4297, -1.9778, -12.253, -18.9367, -22.1657, -22.0094, -21.384, 0.0857, -0.3388, -0.3844, -0.6424, -0.7435, -0.5609, -0.1067, 0.1511, 0.7988, 1.0267, 0.7142, -22.3449,
167 1.5997, 0.7952, 0.5771, -0.1086, -0.9165, -0.4936, -0.5385, -1.1104, -2.3027, -2.7303, -1.7093, -1.2741, -1.2559, 0.1339, 2.1512, 4.2566, 4.4113, 3.294, 1.9275, 1.166, 0.9857, 0.1003, -0.1015, -0.9056, -0.5391, -0.5752, -1.0655, -2.5147, -3.257, 1.4399, 1.6942, 1.2365, 0.6457, -0.0065, 0.5875, 0.3795, -0.0796, 0.4453, 1.0116, -7.354, -5.9661,
168 17.6306, 19.8446, 20.6406, 20.9119, 20.8696, 19.9715, 17.0436, 12.6644, 7.8356, 3.7315, 0.0618, -2.5156, -4.0666, -3.6383, -2.3405, -0.6112, -0.7237, -3.4603, -8.5171, -12.2394, -14.9608, -15.8437, -14.9681, -12.615, -11.0775, -11.0437, -12.1047, -15.2272, -15.2522, 3.8383, 2.7442, 1.4004, 0.6138, -0.4141, -0.6861, -1.0225, -0.8449, -0.9118, -0.8189, -3.8984, -19.7618,
169 4.0159, 4.7341, 5.0428, 5.4476, 5.5823, 5.0017, 4.7364, 5.0152, 5.4244, 7.2281, 10.0426, 12.1892, 12.5133, 10.8886, 9.4587, 9.9271, 9.6594, 6.2877, 1.1672, -4.8743, -9.8309, -10.9887, -10.4195, -8.8449, -10.0345, -14.288, -19.4282, -23.5124, -22.141, 9.6326, 8.1547, 3.0154, -1.3662, -1.9025, -0.9827, -0.5431, -2.6536, -3.4587, -4.054, -5.842, -26.6165,
170 1.3951, 2.3341, 2.7846, 3.6043, 3.9813, 5.2605, 5.5279, 4.846, 3.2475, 2.3327, 1.8366, 1.4325, 0.6121, -0.4539, -1.6285, -2.8274, -4.2077, -4.6993, -5.0706, -4.2874, -4.4071, -3.4175, -3.0547, -3.3504, -1.7471, -0.7879, -0.0749, -0.117, 0.9361, 4.5093, 3.2132, 3.2053, 2.7775, 1.5517, -0.0446, -1.3922, -2.0535, -0.9648, -1.7751, -9.0269, -4.586,
171 28.2916, 29.7152, 29.0955, 27.1159, 23.3768, 18.1997, 11.9697, 5.6704, 0.9205, -2.5625, -6.9213, -11.486, -15.0627, -16.3635, -16.7915, -16.8262, -16.229, -14.5129, -11.0684, -5.6647, 2.9493, 7.145, 4.8374, 2.6581, -2.8551, -9.629, -15.306, -15.9776, -14.6886, 0.7674, -0.5757, -1.0994, -0.2628, -0.333, 0.2608, 0.1505, 0.3201, 0.6736, 0.6525, -0.5539, -15.2205,
172 21.3574, 19.0821, 16.0689, 13.5763, 11.7756, 9.8197, 7.1626, 5.6591, 4.1988, 2.6866, 1.2839, 0.297, -0.7392, -2.1025, -2.9588, -3.9692, -4.2266, -4.5449, -5.2046, -5.5074, -6.5396, -7.8927, -8.7128, -9.14, -9.3002, -10.003, -10.319, -10.7968, -11.0108, 1.2272, 0.8607, 0.9681, 0.0462, -0.4903, -0.1304, -0.4412, -0.146, 0.3281, 0.933, -3.1554, -13.2931,
173 -11.9427, -9.0347, -8.1854, 0.5355, 16.2351, 30.0772, 15.6863, -0.5026, -5.1802, -3.4273, 8.1185, 14.303, 3.9959, -5.7275, -2.8537, 5.8633, 2.1444, -4.9037, -1.6011, 1.0216, -1.4938, -3.6235, -5.0675, -4.7195, -2.6927, -4.8393, -5.4537, -9.4932, -7.2387, 4.1282, 1.8786, 1.9953, 0.5488, -0.3819, -1.3723, -1.0026, 0.0804, -1.6472, -0.9937, -3.2335, -11.7554,
174 18.449, 17.8582, 16.6014, 15.4593, 14.0319, 12.3568, 10.0803, 7.8236, 5.707, 4.5343, 3.607, 3.4959, 2.7669, 0.5453, -0.986, -2.0713, -2.6104, -3.5225, -5.566, -7.1856, -8.5038, -9.9136, -10.8379, -12.1072, -13.2841, -13.7883, -13.6681, -14.0513, -15.221, 1.9454, 1.7954, 1.7868, 0.9124, 0.3779, -0.2762, -0.6521, -0.9212, -0.7314, -0.0795, -4.1574, -18.4931,
175 11.8976, 17.951, 18.5286, 15.1944, 9.4977, 6.4581, 3.3668, -0.2268, -3.9011, -5.4058, -5.9886, -7.2383, -7.8525, -10.3087, -12.8063, -12.1794, -11.0999, -8.8156, -8.1165, -6.1532, -4.2252, -4.0395, -1.3151, 0.5738, 3.955, 8.7131, 6.7113, 1.7138, 5.1116, 0.9965, 1.4759, 3.0237, 2.9344, 5.1266, 4.6639, 2.7831, 2.9561, 0.3334, -5.8448, -18.4487, 1.1692,
176 0.9487, 1.413, 0.9479, -0.0826, 0.2145, 3.217, 4.0687, 3.2987, 3.5035, 4.5743, 4.0544, 3.4101, 4.0914, 4.5664, 4.8132, 6.4401, 9.3451, 8.9607, 6.079, 2.7728, 0.8498, -0.8017, -2.4432, -4.7032, -9.3198, -12.6235, -15.1492, -15.7996, -16.6466, -0.8633, -0.9141, -0.0119, -0.337, -0.1759, 0.0244, 0.0238, 0.6518, 1.091, 1.8672, -1.356, -15.2177,
177 34.1302, 32.0599, 27.8887, 23.7603, 19.3256, 13.9648, 7.8176, 2.2845, -0.8316, -2.8468, -4.8687, -6.8758, -8.2507, -10.028, -11.0038, -9.9438, -7.5333, -4.6451, -2.1804, -2.2669, -3.7303, -5.3382, -6.9605, -9.3264, -11.3621, -13.0806, -13.5868, -13.1789, -13.393, 0.4195, 0.2121, 0.0329, 0.2371, 0.0989, 0.178, 0.0464, 0.0275, 0.3526, 0.0885, -1.6936, -14.6518,
178 15.6422, 15.2859, 14.7754, 15.3593, 17.2032, 19.1105, 18.2304, 15.0687, 12.08, 11.4521, 13.3209, 14.1182, 10.1435, 2.4651, -4.8883, -9.38, -12.5864, -13.8568, -15.1276, -15.6378, -14.1885, -9.7248, -6.9518, -9.9796, -12.4385, -13.0782, -14.0208, -19.5089, -22.8872, 0.499, 0.8082, 1.3862, 0.4212, 0.1198, -0.3486, -1.0547, -0.403, 0.3854, -0.1208, -1.6927, -24.4489,
179 31.6974, 29.478, 26.629, 23.262, 19.3188, 14.1307, 8.2731, 2.81, -1.094, -3.2472, -4.229, -4.829, -5.3248, -6.1539, -6.7558, -5.9669, -4.6964, -4.4401, -6.192, -8.0753, -8.1121, -6.2825, -6.0789, -5.7147, -3.3695, -8.9378, -16.7789, -19.5464, -19.7736, 3.0519, 6.0787, 1.0322, -0.6589, -1.6175, -2.1104, -1.9403, -1.7062, -0.9516, 0.481, -1.659, -17.7143,
180 6.6516, 7.1945, 6.2582, 4.9369, 3.5619, 3.6748, 2.077, 0.4189, -2.1975, -3.886, -3.9613, -3.8644, -5.3511, -7.2609, -7.6175, -7.1661, -5.7976, -4.5218, -1.9308, 1.448, 5.0915, 4.7364, 4.6719, 3.6113, 3.3328, 2.0626, -1.533, -2.8815, -1.7589, 6.4246, 5.9081, 6.0283, 5.5237, 2.9559, -0.7124, -3.2659, -4.6501, -4.6857, -3.8757, -9.6509, -8.7268,
181 12.9326, 13.6158, 13.6027, 13.5734, 13.4039, 13.8175, 13.8659, 12.7258, 9.7632, 6.3103, 2.7321, -0.5733, -3.8746, -7.086, -9.645, -10.7832, -10.3935, -8.3777, -4.8027, -1.1394, -0.1906, -2.9954, -5.6539, -5.3461, -4.393, -8.2738, -13.2039, -15.2593, -14.3519, 12.0896, 7.9934, 4.3314, 2.9333, -0.2922, -3.974, -5.2453, -5.1292, -4.2466, -2.5427, -5.9177, -24.1706,
182 3.3111, 5.7192, 7.6731, 8.6538, 8.7816, 9.2367, 10.2956, 10.7802, 8.7371, 5.9609, 4.1644, 2.5137, 0.7897, -0.7157, -1.6711, -1.2978, -0.9879, -0.5737, -1.7029, -3.8746, -6.212, -6.9054, -7.5755, -8.5853, -8.663, -8.4875, -9.3126, -9.4585, -10.5934, 1.9845, 0.8889, 0.2842, -0.9179, -1.4593, -0.6826, -0.6777, -0.0392, 0.8979, 1.4414, -1.7202, -13.5455,
183 14.2205, 14.4641, 13.7854, 13.0598, 13.2991, 14.8419, 16.1502, 16.5712, 15.2079, 11.8669, 7.9213, 4.5068, 2.1444, 1.2542, 2.5468, 4.6558, 4.3109, 0.6255, -5.187, -9.7699, -11.4109, -10.1544, -8.4757, -11.5168, -17.9764, -22.4698, -24.8959, -25.1837, -24.3922, 1.4299, 0.413, 0.0191, -0.2559, 0.4822, -0.2917, -0.0644, 0.3763, 0.0596, -0.3088, -1.8594, -27.0927,
184 -2.8758, 15.2556, 21.0124, 15.289, 2.1565, 2.6722, 2.923, 4.3949, 0.446, -0.9254, 1.7753, 1.364, 0.4328, -3.9146, -4.3331, -4.1112, -3.8881, -5.2841, -2.7539, -1.9759, -0.4884, -4.8231, -3.5586, -3.51, -2.3689, -4.3495, -5.1658, -7.1944, -6.2007, -2.475, -1.0212, 2.7562, 1.1019, 2.0472, 2.2292, 2.3273, 2.8928, -1.1663, -0.0381, -8.6541, -3.0398,
185 18.8285, 20.4979, 21.7173, 23.1703, 24.2063, 23.5814, 21.0896, 17.9453, 15.643, 14.4782, 13.143, 9.6223, 4.1452, -1.1378, -5.0589, -7.8909, -10.5229, -13.0157, -15.3961, -16.7612, -17.5151, -17.5485, -17.4267, -17.8018, -18.7396, -19.9281, -20.0342, -16.863, -12.4276, 8.6336, 4.4955, 1.3996, -0.2307, -1.5565, -2.0497, -2.323, -2.1696, -2.165, -1.6041, -2.43, -20.8387,
186 16.1197, 16.1677, 13.0422, 10.1574, 7.482, 4.6731, 0.9828, -1.4519, -2.9998, -3.7625, -4.0148, -4.3809, -5.3027, -6.4756, -7.1149, -7.3309, -7.7257, -6.9484, -6.1237, -4.9958, -3.5063, -1.5803, 0.7658, 1.786, 3.3939, 3.3871, 0.1351, -1.5829, -2.7956, 3.7721, 2.8811, 2.698, 2.1046, 1.6496, 1.643, 0.3146, -1.1205, -1.2974, -2.3187, -10.3263, -6.3444,
187 33.2222, 30.5262, 25.0634, 19.0582, 13.7573, 9.6221, 5.3575, 1.773, -0.2567, -0.9304, -1.7632, -2.8645, -3.748, -4.1938, -4.1659, -4.0416, -4.7502, -6.0605, -7.9728, -8.5077, -8.1116, -7.8726, -8.1931, -9.0767, -10.5826, -11.3078, -11.2136, -11.3407, -11.426, 0.8122, 0.488, 0.3714, -0.1432, -0.1971, -0.2624, -0.2558, -0.0613, 0.088, 0.0913, -0.931, -13.399,
188 23.3644, 24.0993, 25.3117, 28.071, 27.1967, 22.1136, 17.5071, 15.1758, 14.335, 11.14, 4.3238, -3.0833, -8.0197, -10.4359, -12.1778, -13.4366, -14.3352, -15.1818, -14.9458, -14.461, -13.872, -11.3742, -10.2486, -10.0143, -11.6705, -10.3545, -10.901, -13.4149, -14.7113, -0.0476, -0.0526, 0.7467, 1.6512, 0.2779, 1.1979, -0.1397, -0.0153, -0.2711, -0.9085, -2.4389, -16.2622,
189 14.4881, 12.3355, 8.8723, 6.0773, 3.3394, 2.1115, 0.8125, 0.2147, 0.056, -0.0137, -0.2214, -0.6427, -0.7267, -1.5641, -2.3561, -2.2954, -2.4665, -2.8622, -3.0085, -3.0425, -3.2164, -3.541, -3.2388, -3.283, -3.0079, -3.0781, -3.2229, -3.1753, -3.3443, 0.6505, 0.0498, -0.1331, -1.126, -0.6639, -0.2628, -0.209, 0.4291, 0.7281, 1.5146, -0.9773, -5.3512,
190 2.0621, 1.412, 0.1443, -0.6564, 0.5194, 4.127, 7.3667, 9.7238, 11.5833, 11.3655, 7.7646, 4.2923, 2.5041, 4.7009, 7.5418, 8.5568, 4.4916, -1.2294, -4.3559, -5.7809, -5.5627, -3.7357, -4.6814, -7.6996, -10.083, -11.5284, -10.0528, -10.0753, -12.7146, 1.7722, -0.0816, -0.3269, 0.6524, 2.3093, 3.6584, 1.5222, 0.4498, -1.3345, -1.6645, -6.9568, -19.683,
191 25.4648, 24.2073, 21.4183, 18.0385, 14.5373, 11.3133, 7.9671, 5.3323, 3.4067, 2.4589, 2.3509, 1.9998, 0.7508, -0.6518, -2.8305, -5.4658, -7.9173, -10.2576, -11.4401, -11.9089, -12.2924, -10.4402, -8.9248, -9.352, -7.9692, -5.3374, -6.585, -12.1411, -15.7319, 4.8043, 4.3614, 2.147, 0.1372, -1.2225, -1.5199, -1.617, -1.646, -1.4994, -1.0956, -2.8494, -19.563,
192 10.4477, 9.9103, 9.3167, 9.9753, 13.0396, 16.4188, 16.2006, 11.2422, 5.492, 2.0198, -0.5193, -2.2228, -3.7621, -2.3955, 0.6073, 4.9323, 5.7164, 1.908, -3.853, -5.3428, -5.1549, -4.4637, -8.4757, -12.2439, -13.8905, -14.278, -11.6814, -12.1684, -16.7752, 0.6951, -0.414, -0.215, -0.4177, -0.1652, 2.0344, 0.4827, 0.3849, 0.6488, 0.2765, -3.3105, -20.973,
193 11.6894, 11.5653, 11.7767, 13.6634, 16.8841, 16.8356, 11.607, 5.3075, 0.2573, -3.0445, -5.5117, -6.5939, -7.5658, -6.4151, -2.9369, 2.581, 5.6008, 0.1628, -5.9773, -6.9647, -6.5125, -3.3783, -4.0081, -8.2854, -9.9143, -9.2857, -6.2357, -5.9007, -9.4002, 10.4552, 5.0807, 0.6307, -1.3477, -0.5399, -0.5873, -1.8383, -1.7997, -2.057, -2.8514, -5.1454, -22.0833,
194 21.2161, 21.5655, 20.7743, 20.2657, 20.4741, 20.8267, 19.9547, 17.4467, 13.8013, 9.3303, 4.0053, -0.5555, -4.305, -6.2844, -5.9649, -3.292, -0.3039, -0.5084, -4.2075, -9.2735, -12.3913, -12.0554, -11.2851, -13.2289, -17.6674, -21.0646, -22.6765, -22.3615, -22.2348, 0.6227, 0.2943, 0.3156, -0.0153, -0.3658, -0.4357, -0.0101, 0.1177, 0.2549, 0.3115, -1.0897, -21.8725,
195 -5.8017, -5.8902, -5.5846, -4.762, -4.4881, -3.9174, -4.283, -5.1666, -6.3677, -6.8882, -6.9995, -6.8752, -7.3225, -8.7191, -9.5016, -8.754, -7.1882, -3.8658, -0.5597, 2.3798, 1.4716, 2.7987, 5.8548, 11.0383, 14.5525, 16.8697, 19.0261, 18.9539, 19.9898, 7.1234, 3.7053, 2.7491, 2.3946, 1.8894, -0.2885, -0.8988, -0.3606, -0.2356, -2.8434, -13.235, 10.7649,
196 29.8544, 29.8362, 28.5318, 26.532, 23.6452, 19.329, 14.5539, 10.284, 6.4573, 3.11, 0.1941, -2.1012, -5.6884, -9.9636, -12.852, -13.5951, -13.0431, -13.2967, -13.3194, -12.2195, -9.3679, -5.0767, -1.3008, -4.8112, -12.0561, -15.7608, -16.8756, -16.0321, -14.9678, 2.1806, 0.2835, -0.2562, -0.386, -0.657, -0.1415, -0.217, -0.2013, 0.4029, 0.2038, -1.2117, -16.045,
197 8.0644, 8.0499, 7.1416, 6.5893, 5.5981, 4.3993, 3.4826, 2.7143, 2.8318, 2.358, 2.4915, 1.9093, -0.3049, -1.4506, -1.2401, -2.3404, -1.2673, -2.2808, -2.4575, -3.4995, -3.9318, -5.0149, -5.3296, -3.8867, -4.4533, -4.5744, -4.0511, -4.8087, -4.7385, -9.0466, -10.6663, -9.9253, -6.6473, -2.6332, 0.9689, 4.1205, 6.334, 8.2517, 9.8032, 9.4405, 1.9804,
198 9.5207, 9.0443, 7.8069, 7.3329, 7.3094, 8.0083, 9.9299, 12.4518, 13.0618, 11.3574, 7.8442, 3.8017, -0.1018, -3.9012, -6.5018, -7.0985, -5.6241, -2.4385, 1.2347, 1.1544, -2.3784, -5.3165, -6.5624, -5.5597, -5.2937, -9.9992, -14.6755, -17.3896, -17.0176, 9.0473, 5.4785, 3.0998, 0.8918, -1.3974, -3.6623, -3.5233, -2.5034, -1.0502, -1.2373, -5.1436, -25.0416,
199 -5.0642, -5.1796, -4.6005, -5.1034, -4.7822, -2.6885, -1.4531, -1.7854, -2.0629, -2.7192, -4.452, -3.929, -3.4335, -4.7675, -6.1288, -7.0944, -6.633, -5.1475, -3.279, 1.153, 2.3119, 6.3456, 6.1984, 9.1249, 10.9774, 11.5921, 12.7428, 11.4754, 8.3823, -9.7326, -13.5256, -14.6472, -7.0881, -1.2233, -0.9864, 6.1958, 7.2048, 10.0661, 12.3652, 11.3714, 19.005,
200 6.7705, 6.0726, 4.7668, 4.7287, 5.5025, 5.2104, 3.6077, 1.7454, 0.3953, -0.348, -0.7236, -1.1397, -2.5075, -2.4282, -2.0351, -1.5354, -0.9783, -1.1816, -2.7792, -3.3855, -3.4229, -4.1416, -3.3236, -3.6243, -3.9451, -2.9592, -1.2582, 1.2767, 1.6406, 9.6325, 11.3324, 9.8681, 5.5229, 2.3829, -0.2309, -2.8115, -5.0973, -6.3038, -7.6243, -16.6711, -7.8822,
201 18.7275, 18.7602, 15.1086, 10.7098, 6.9559, 5.0306, 2.7456, 0.2771, -1.9055, -2.8108, -2.7768, -3.7007, -4.2089, -5.7436, -6.2204, -5.8236, -4.9148, -3.2075, -2.8848, -3.121, -2.7428, -4.5923, -3.8926, -3.7191, -2.9927, -3.2069, -3.9982, -3.813, -2.0396, -6.3039, -3.8256, -2.1569, 0.2409, 3.3218, 4.6289, 5.0475, 3.5987, 1.8219, 1.8959, -8.2692, 2.9296,
202 19.0392, 17.4654, 14.9352, 12.2077, 10.497, 11.1852, 10.4778, 8.4045, 4.8902, 1.7924, -0.876, -4.1317, -6.0495, -6.1897, -5.015, -1.439, 2.3264, 1.7138, -1.0924, -3.4019, -4.302, -3.5935, -2.4494, -6.411, -11.384, -13.3423, -14.0158, -14.8337, -16.408, 5.217, 2.0001, 0.7957, -0.6171, -0.8902, -1.2003, -1.1541, -0.6336, -0.6395, -0.6616, -2.2164, -21.367,
203 10.4791, 9.9395, 9.0805, 9.1584, 10.6784, 12.7374, 14.6952, 15.0752, 12.809, 9.8648, 7.835, 7.5607, 9.0798, 10.1615, 7.6961, 2.2376, -2.6758, -6.5418, -9.4708, -10.5541, -11.1366, -10.0882, -12.2916, -15.8392, -17.7528, -18.3635, -16.7645, -14.5122, -13.097, 9.0915, 6.6105, 3.9354, -0.3391, -3.1013, -3.4367, -2.504, -2.1417, -1.8401, -1.7766, -4.4978, -24.3538,
204 2.0821, 3.1287, 4.0753, 5.4302, 5.7802, 6.6537, 7.213, 6.6951, 4.596, 2.8045, 2.4487, 1.8103, 0.4415, -1.7609, -3.0165, -2.8462, 0.1898, 3.3827, 4.319, 1.6896, -2.8185, -5.5524, -7.0484, -7.5484, -6.109, -5.9753, -4.7225, -7.1165, -8.2257, 3.668, 2.9008, 1.3962, 0.7099, 1.6828, 1.2318, -0.5067, -1.7458, -1.5988, -1.6313, -6.1069, -11.5601,
205 1.1497, 1.32, 1.2707, 2.0082, 2.0004, 1.8044, 1.127, -0.2158, -1.8933, -2.4634, -3.4218, -4.7937, -4.71, -4.6869, -4.1693, -4.4056, -4.91, -4.6525, -4.3514, -5.3638, -6.5281, -5.1288, -3.6008, -0.1517, 2.6878, 7.224, 11.7457, 15.7449, 17.364, 6.9238, 4.8734, 3.1279, 0.9919, 0.1466, -0.3872, -0.1158, -0.4139, -1.8167, -1.7305, -11.5996, 8.8903,
206 9.7978, 8.0725, 4.8934, 3.5284, 2.7083, 3.7014, 4.0313, 4.6282, 3.9292, 3.2742, 2.0518, 0.7154, -1.2921, -1.9667, -1.5639, -1.3033, -0.5627, -0.4778, -0.7607, -2.2442, -3.8987, -4.4781, -4.252, -4.6421, -4.1577, -4.5224, -4.4218, -5.2138, -5.574, 0.7391, -0.0616, -0.3222, 0.1802, -0.1541, -0.5544, -0.09, 0.4549, 0.453, 0.6154, -1.2603, -6.8376,
207 11.0218, 10.5069, 8.2672, 5.9543, 3.9578, 3.9631, 2.6698, 1.5498, 0.3926, 0.318, 0.1925, 0.7238, -0.6282, -2.8873, -3.5603, -4.0488, -2.8863, 0.6168, 3.2951, 2.8007, -0.0448, -2.6501, -4.7672, -5.2381, -5.1827, -6.3352, -6.8157, -6.003, -5.1825, 5.7059, 6.0081, 5.5317, 5.2309, 1.9392, -0.7052, -2.995, -3.4059, -4.2816, -4.2198, -8.8083, -12.1555,
208 30.722, 30.4352, 28.7635, 26.8276, 23.0072, 17.1944, 10.8428, 5.1151, 0.6042, -2.9361, -6.0945, -8.6787, -10.4457, -11.4951, -12.7062, -13.0113, -13.2579, -13.2793, -13.0584, -12.0898, -10.8056, -8.6431, -7.2774, -8.7256, -10.1911, -7.2394, -2.5936, -0.3436, -0.6396, 5.5942, 2.8807, 1.9726, 1.6097, 0.9653, 0.3476, -0.8863, -1.5202, -2.194, -2.7497, -6.0197, -9.7496,
209 11.0431, 11.2874, 10.754, 9.9197, 8.6647, 8.6958, 8.6183, 9.9875, 10.047, 8.3112, 7.2898, 5.9718, 4.5865, 2.1034, -0.7735, -2.4122, -3.3246, -3.2844, -4.4966, -6.4114, -8.1119, -10.1936, -10.6919, -10.5371, -10.9794, -10.4475, -10.1218, -12.43, -13.0643, -8.4396, -8.4986, -5.5124, -3.9624, -1.092, -0.4675, 2.3907, 5.5877, 7.2456, 8.023, 4.7255, -8.4177,
210 12.7397, 11.0783, 9.2586, 6.5612, 4.1628, 2.3704, 1.9316, 1.0515, -1.035, -1.2451, -1.9616, -3.0021, -4.2825, -5.4905, -5.6435, -5.621, -6.6154, -6.2022, -5.0535, -4.7672, -3.5637, -2.1688, -1.0431, 0.1656, 0.9547, 1.642, 2.0989, 1.7796, 1.9001, -9.9315, -12.1933, -12.6352, -7.0282, -1.8872, 1.8245, 4.5894, 7.3621, 9.3193, 10.4805, 10.0998, 9.3097,
211 15.1389, 17.4197, 18.3393, 18.5836, 17.5461, 15.0277, 11.1098, 6.8515, 2.5234, -0.3132, -2.9049, -4.0328, -5.4435, -6.6072, -7.1258, -7.1761, -6.4666, -4.533, -0.7343, 1.2614, -1.3012, -6.3734, -11.7238, -12.6667, -10.4556, -6.4641, -7.1625, -10.7517, -11.5648, 8.7437, 7.862, 8.4762, 9.1692, 5.7736, -1.6953, -4.9554, -7.2071, -8.1718, -8.3657, -9.6294, -20.1832,
212 18.735, 18.8415, 17.7238, 16.779, 16.8597, 17.9978, 19.1477, 18.5999, 16.1427, 12.4936, 8.6595, 5.9831, 4.9948, 5.7667, 5.588, 1.9462, -3.6217, -9.0782, -13.3577, -15.7337, -14.0069, -9.9754, -8.9549, -15.6483, -21.552, -23.5522, -23.683, -23.3131, -23.7818, 0.3454, -0.042, -0.0575, 0.3156, 0.1128, -0.3066, -0.4222, -0.0008, 0.1796, 0.4486, -0.5731, -24.7214,
213 16.6836, 16.0011, 14.2761, 12.3355, 8.6965, 4.5639, -0.4844, -4.198, -4.765, -4.1296, -4.0155, -2.9656, -1.797, 0.468, 1.9673, 2.9994, 4.5, 3.5757, 1.1168, -0.5475, -1.7944, -2.5137, -4.8674, -5.5801, -7.1945, -9.0212, -11.1995, -10.8822, -11.2279, 0.2823, -1.5628, -3.0013, -1.8679, -2.2856, -1.4908, 0.7971, 1.9446, 3.1469, 4.5357, -0.4981, -12.2633,
214 19.0033, 19.2025, 17.7777, 15.3002, 12.665, 9.5501, 5.6575, 1.8616, -1.6276, -3.6035, -5.2976, -7.4545, -9.9218, -11.055, -12.1614, -12.333, -11.7581, -10.8363, -9.3486, -5.9142, -0.9878, 3.2625, 3.7572, 3.2186, 3.6513, 0.3807, -3.4386, -5.0746, -4.4758, 13.3555, 8.9978, 5.4532, 3.6182, -1.0628, -3.2096, -4.4349, -5.7492, -5.1348, -3.5353, -8.2981, -16.823,
215 18.4297, 15.9331, 11.2397, 7.8129, 5.538, 4.6599, 3.1356, 2.3935, 1.0751, 1.097, 0.648, -0.216, -2.0789, -2.6802, -3.0441, -2.3536, -0.3163, 1.8936, 2.7495, 0.5565, -3.1908, -5.3708, -7.0075, -7.5402, -7.2433, -8.2848, -9.2167, -9.4201, -9.1988, 2.6256, 2.051, 1.3148, 0.5355, 0.063, -0.6332, -0.4758, -0.6747, -0.4639, -0.1424, -4.2, -12.3908,
216 7.3097, 7.7813, 7.8527, 7.8546, 8.1128, 8.9506, 10.6384, 12.8363, 14.6251, 15.4901, 15.1366, 13.4976, 11.9988, 11.7295, 11.3616, 8.4914, 2.9159, -3.6536, -9.48, -13.735, -17.1927, -18.7882, -17.6248, -13.8464, -10.5674, -13.8181, -18.1434, -20.8743, -18.8591, 11.3245, 8.7172, 3.5788, -0.9416, -1.5672, -2.3545, -2.3414, -3.3449, -3.961, -3.8438, -5.2662, -25.7869,
217 -1.6196, -1.5619, -1.3693, -0.0041, 0.6985, 1.0211, -0.2712, -1.1631, -2.5701, -3.8567, -4.4749, -4.1959, -4.6373, -5.4392, -6.632, -6.8724, -5.3058, -4.2328, -1.9447, -0.2533, 0.7399, 0.5052, 2.5635, 6.5244, 9.7417, 10.9027, 8.3775, 5.7836, 9.5462, -0.9205, 1.3066, 3.5975, 5.1438, 4.6369, 2.962, -0.2142, 1.2689, -0.0412, -3.1056, -14.6343, 6.0567,
218 14.2155, 14.8572, 14.6396, 15.6515, 18.4554, 21.3207, 21.295, 16.587, 10.7997, 7.0073, 4.3743, 2.985, 1.5061, 3.2006, -0.1576, -6.6249, -11.7054, -14.9389, -16.7542, -15.9586, -13.4133, -9.9384, -8.4859, -12.4268, -14.9176, -16.0461, -14.1275, -6.4255, -4.9741, 5.5063, 0.3654, 3.5212, 7.9053, 3.8839, -1.5841, -4.1647, -4.5145, -3.545, -1.9892, -5.3846, -20.3075,
219 9.1018, 8.8735, 7.5282, 6.865, 7.5449, 8.2635, 6.4844, 3.4564, 0.6817, -1.5163, -2.2174, -2.8199, -3.288, -2.4514, -0.1202, 2.7625, 4.3459, 5.3239, 3.3628, -0.1718, -3.0498, -4.4866, -5.5655, -6.7973, -7.4857, -9.1801, -9.3929, -8.469, -7.5827, 4.3844, 4.6419, 5.2823, 3.5134, 1.9965, 0.2705, -0.4359, -2.5064, -3.1275, -3.8266, -10.1926, -14.0516,
220 22.6352, 23.6582, 24.5865, 26.389, 26.4341, 23.2091, 17.7722, 13.535, 11.1208, 9.98, 8.2759, 4.0348, -1.7705, -7.8105, -12.5187, -14.9802, -16.3623, -17.382, -17.7578, -17.649, -15.5778, -12.8018, -11.4459, -14.3128, -16.352, -15.2082, -10.9596, -5.2865, -3.4553, 7.6752, 3.5999, 2.0739, 1.1336, -0.6895, -1.5345, -2.458, -2.0781, -1.8815, -2.5118, -3.3292, -17.5176,
221 1.875, 1.8662, 1.4311, 0.9127, -0.1302, -0.376, -0.5434, -0.222, 1.2349, 3.6442, 6.7696, 8.9037, 8.5438, 6.152, 3.7222, 3.0903, 4.4232, 5.4581, 6.2833, 3.7218, -0.7522, -4.4112, -6.2164, -5.4842, -3.9166, -5.963, -10.1542, -15.3434, -14.5193, 13.3682, 11.1151, 8.2449, 5.7945, 3.1501, -1.3709, -6.5216, -8.303, -8.2964, -7.6878, -9.493, -25.2906,
222 23.8996, 24.1043, 23.8658, 23.668, 21.5342, 15.4333, 6.3905, -1.1158, -4.6322, -5.8867, -6.7301, -7.6112, -8.9183, -10.1939, -10.8837, -8.9691, -3.9727, 3.1911, 5.9335, 0.9841, -5.6662, -8.2167, -5.1918, -3.2488, -11.7754, -15.7999, -16.0905, -9.046, -5.0555, 9.193, 1.3362, -0.8279, -1.4971, -1.9949, -1.9954, -1.0397, -0.8391, 0.6715, 0.815, -3.8216, -17.2628,
223 2.1343, 3.1072, 3.1035, 2.4651, 1.077, 2.5793, 2.6348, 1.2152, -0.5649, -2.3867, -0.692, 0.8781, 1.3547, -0.8951, -2.8053, -3.6858, -2.1707, 1.958, 5.8746, 8.3664, 5.4534, -0.2992, -2.5199, -5.0547, -5.4956, -3.579, -4.0494, -3.2599, -4.7435, 6.3175, 4.364, 4.2936, 4.0751, 4.2436, 2.1309, -2.1883, -4.5757, -4.9307, -4.577, -9.1531, -11.6403,
224 24.1543, 25.338, 25.2642, 24.289, 21.5268, 15.8776, 8.7349, 1.8963, -3.3513, -6.9022, -9.3648, -10.8355, -12.1831, -12.5211, -12.8565, -12.9812, -11.8854, -11.1641, -9.286, -5.4976, -0.9263, 3.4028, 4.724, 3.7754, 2.3125, -4.4255, -11.3777, -13.5943, -12.1432, 6.6341, 8.4368, 8.7627, 5.8486, 0.7153, -3.2965, -5.0124, -5.0678, -5.2114, -4.9009, -6.9086, -15.732,
225 33.3595, 30.8257, 27.394, 23.1538, 18.548, 12.9357, 7.6481, 4.1721, 3.2632, 3.436, 3.9739, 4.0188, 3.3042, 2.799, 2.1257, 0.5313, -1.9459, -5.6161, -9.5935, -12.9587, -14.8978, -16.0532, -16.3206, -16.6767, -16.1054, -16.6153, -17.9698, -18.6045, -18.1317, 1.5134, 0.826, -0.0981, -0.1095, -0.5148, -0.5502, -0.3922, -0.2658, -0.1093, 0.4252, -0.7246, -17.8748,
226 1.6216, 0.9985, 0.7656, 2.7126, 3.5846, 4.9869, 4.3162, 4.0409, 2.9716, 0.7825, 0.4168, 0.2302, -0.1647, -1.1633, -1.3128, -0.8806, -0.1106, -0.3406, -2.2081, -3.7852, -4.1417, -2.9134, -2.1959, -1.8077, -1.5502, -2.2082, -1.4934, -0.695, -0.4569, -7.0535, -3.1321, 1.0676, 0.9741, 1.5466, 3.3522, 3.6041, 3.9392, 1.3441, 1.8148, -7.4571, 2.7151,
227 15.5981, 19.5861, 21.1052, 20.7702, 17.9972, 13.4362, 8.4295, 3.6958, -0.0748, -3.8419, -6.8494, -8.7952, -9.5977, -10.9677, -13.2231, -11.6825, -9.656, -6.9659, -3.1059, 0.6508, -2.2959, -4.9921, -6.595, -5.9531, -3.291, -4.7702, -3.987, -1.794, -2.8308, -2.5, -4.6538, -0.7258, 4.733, 8.3235, 5.3781, -0.4169, -0.0664, 0.8379, -2.0639, -8.8455, -9.7704,
228 23.7863, 25.9404, 25.3891, 21.9998, 16.2579, 9.6322, 3.4737, -1.7621, -6.1163, -9.2774, -11.9071, -13.8355, -14.8079, -15.2219, -15.496, -14.785, -13.1085, -11.2726, -7.3218, -0.9826, 6.1996, 7.861, 5.9579, 4.5346, 0.9527, -4.262, -5.857, -3.1595, -2.8119, 8.3142, 3.663, 2.1376, 0.017, -1.3069, -1.1574, -2.2597, -2.0274, -1.1056, -1.2385, -5.0363, -15.6945,
229 20.3765, 22.4983, 23.2522, 22.4935, 18.6192, 11.9388, 4.7215, -2.2228, -6.9248, -8.7614, -9.4361, -10.4167, -12.0447, -14.3511, -15.7581, -15.0919, -13.4051, -11.6659, -8.9412, -4.6688, 1.6099, 5.0989, 2.6335, 0.0407, 0.1956, 0.6445, -1.3875, -1.9917, 2.9449, 22.4551, 18.5214, 5.2727, 6.1503, -0.1446, -8.9143, -8.7222, -9.1792, -9.3487, -7.5459, -8.5445, -16.1222,
230 11.1076, 12.0485, 11.055, 10.5716, 11.0874, 11.6622, 9.9206, 4.9761, 0.3715, -2.6436, -4.8249, -9.221, -10.4786, -11.6233, -11.899, -10.3869, -9.3054, -5.4126, -0.0922, 1.7786, 1.9733, 2.3237, 2.4041, 2.1518, -0.8245, -3.1849, -3.9744, -5.1713, -4.3894, 1.391, -2.4885, -4.1076, -3.8565, -1.6768, 1.3241, 2.8087, 3.8092, 4.3728, 3.2455, -4.8218, -10.0894,
231 -0.2633, -1.4544, -2.4182, -3.0882, -3.5531, -4.3925, -6.6002, -8.5372, -9.6704, -9.8444, -10.3936, -9.9956, -8.9278, -7.5639, -5.9124, -1.9933, 2.8919, 6.3172, 5.944, 4.7295, 5.0606, 5.2459, 8.2338, 8.7234, 10.0863, 10.2509, 9.9392, 9.0613, 8.1243, 1.1238, 0.9922, 1.1101, 1.8146, 2.6706, 2.2247, 1.2363, 1.1432, -0.1842, -0.9655, -11.166, 5.3441,
232 6.9294, 5.0117, 2.6132, 2.2629, 4.5422, 9.5764, 14.7837, 15.8748, 11.9468, 7.4679, 4.5656, 4.3597, 5.8184, 8.6426, 5.8541, -0.7924, -5.2311, -8.036, -9.7347, -8.9, -8.2834, -6.3029, -5.072, -7.3093, -8.1284, -8.3417, -7.7152, -10.4763, -15.926, 4.7158, 2.3141, 1.3121, 1.3526, 1.5962, -0.3417, -1.386, -1.6767, -1.776, -1.6516, -4.4588, -23.6471,
233 20.5611, 21.499, 21.6805, 21.4105, 19.9564, 16.4129, 11.009, 4.5495, -0.7043, -3.4671, -4.6121, -5.3523, -6.5924, -7.7881, -8.2287, -7.0226, -4.0117, -0.4161, 1.788, 1.3595, -1.3403, -3.8721, -3.965, -4.9622, -8.7031, -14.8711, -18.9891, -20.1269, -15.2011, 9.5765, 9.609, 6.3797, 4.6167, -0.3327, -3.7082, -4.7974, -5.1837, -5.3397, -4.8761, -5.9441, -20.3305,
234 28.9011, 29.1365, 27.4009, 24.4914, 20.2583, 14.7607, 8.7681, 4.0956, 2.2405, 2.3157, 3.7552, 5.6036, 6.0319, 3.0401, -2.3373, -6.5825, -9.1181, -11.519, -13.0607, -13.4398, -13.0287, -11.6613, -11.3947, -12.1649, -13.2592, -14.7276, -15.9052, -16.4327, -16.1678, 0.805, 0.5113, 0.4244, -0.0076, -0.2346, -0.4785, -0.2332, -0.0629, -0.0095, 0.3865, -1.101, -17.2993,
235 14.0295, 13.9502, 13.6228, 13.9615, 14.5159, 15.7344, 16.5458, 16.6583, 15.876, 14.9767, 14.5095, 14.6169, 14.1664, 10.4532, 3.0906, -3.2947, -6.9042, -10.1425, -12.3464, -13.3132, -12.9262, -11.8067, -11.4974, -15.4253, -20.2544, -22.9691, -22.5572, -21.639, -21.6312, 2.018, 1.7654, 2.894, 1.2851, 1.2694, -0.7044, -1.7554, -1.1719, -1.4637, -0.7534, -3.3831, -24.9877,
236 14.3136, 12.8038, 10.76, 9.9164, 8.0164, 4.8641, 0.3656, -1.398, -2.3438, -1.8387, -0.9641, -0.4343, -1.8428, -3.9974, -5.5735, -6.9534, -5.2614, -1.8837, -0.6653, -2.2186, -4.1385, -7.9205, -4.8743, -0.0041, -1.6958, -8.8891, -5.9515, 2.5199, 5.289, -0.4214, 3.3144, 7.7656, 5.2578, 2.3868, 4.6757, -4.9484, 1.0462, -11.2993, 2.2105, -9.9881, -1.011,
237 15.2498, 16.8589, 17.4454, 17.3595, 15.7318, 12.0402, 6.8196, 1.9584, -1.895, -4.1206, -5.7554, -6.5663, -7.4096, -8.0543, -8.0905, -5.7704, -1.8905, 1.4927, 2.8765, 0.693, -2.5985, -3.9517, -2.8026, -3.1264, -6.0718, -8.7896, -10.874, -11.1991, -9.5592, 1.025, 2.5513, 3.7885, 4.2634, 3.9729, 3.4142, 0.3627, -0.0631, -2.7607, -5.0823, -11.4719, -15.3324,
238 19.7099, 20.3722, 20.4412, 20.5912, 20.9609, 21.5266, 21.3284, 19.9806, 17.9191, 15.7219, 13.9555, 12.9719, 11.7125, 7.8879, 1.8651, -4.0484, -8.384, -12.3338, -16.2678, -19.1476, -20.5188, -20.7942, -19.7332, -19.5087, -20.0131, -21.1706, -22.0267, -21.828, -21.17, 2.6261, 1.4238, 0.5675, 0.1586, -0.3335, -0.753, -0.695, -0.815, -0.6504, -0.3559, -1.1732, -23.1129,
239 1.8825, 1.5975, 0.765, 0.8382, 1.097, 2.3121, 1.7334, 1.3645, 1.6653, 2.5832, 3.6249, 3.8831, 3.7892, 3.6596, 2.8817, 2.2713, 1.6918, 1.3161, 0.6652, 0.0342, -2.3559, -3.5644, -4.4403, -3.4709, -4.1781, -4.9507, -5.6105, -5.7659, -5.319, -4.6785, -6.2814, -4.417, -3.7355, -2.9146, -0.606, 2.7131, 5.1159, 5.7786, 5.8363, 3.1891, -2.7682,
240 20.9204, 18.3266, 13.9646, 10.345, 7.1213, 4.7949, 2.3975, 0.3252, -0.8377, -1.2032, -1.3516, -1.2322, -1.3903, -2.0806, -3.2115, -3.8099, -3.7972, -3.8008, -4.4221, -4.5737, -4.8822, -4.8118, -5.0104, -5.0121, -4.8009, -5.1006, -5.4825, -5.7785, -5.6058, 0.0304, 0.0212, -0.8099, -1.099, -0.8995, -1.1798, -0.0605, 0.4825, 1.2857, 1.8683, 0.3606, -7.2005,
241 5.2951, 4.6853, 3.2703, 1.4395, -0.0679, -1.5464, -4.0205, -5.271, -6.2684, -7.4709, -7.5305, -6.6769, -5.9752, -5.0052, -2.1987, 1.0365, 4.3659, 5.4876, 4.1372, 2.9011, 2.0765, 1.4275, 2.262, 2.497, 2.1857, 1.8463, 1.4213, 2.718, 2.9788, 2.6542, 4.1837, 4.7936, 4.0109, 4.2119, 2.0348, 0.3166, -0.4254, -3.181, -4.8204, -13.7789, -1.2474,
242 10.5896, 10.0518, 9.5208, 11.5878, 14.9277, 14.1122, 8.4894, 2.1708, -2.5335, -5.3221, -7.6712, -9.9945, -11.5742, -11.8957, -12.0296, -10.9304, -8.1129, -3.4826, 2.2855, 6.7275, 2.7163, 2.8417, 3.8437, 1.4929, -1.9462, -3.7791, -2.6804, -3.2326, -6.1727, 14.4024, 9.7441, 3.2594, -2.4965, -1.6315, -2.624, -3.3409, -3.9874, -3.0303, -4.0633, -6.2319, -23.1513,
243 12.3877, 13.4337, 14.0526, 15.3719, 16.723, 17.0301, 15.6932, 13.1714, 10.9923, 10.12, 9.9867, 8.1477, 4.6596, 0.522, -3.1428, -6.2242, -8.4106, -10.536, -11.526, -13.2012, -11.1252, -8.8838, -9.7283, -14.6481, -19.0045, -16.0374, -8.1446, -9.6615, -12.0177, -3.6514, -5.1768, -3.3816, -0.8285, 1.8774, 4.0666, 6.6919, 6.7739, 0.8553, -0.399, -6.8277, -19.582,
244 7.513, 6.3917, 4.409, 3.2713, 2.4681, 1.4505, -0.7914, -2.2729, -2.7937, -1.4184, 0.5941, 1.7683, 1.7245, 2.1691, 0.8665, 0.4093, 0.8033, 3.3147, 3.5683, -0.9897, -3.9384, -5.0587, -4.1462, -2.0529, -1.2512, -5.3164, -7.9226, -1.6494, -1.1198, 3.1545, 4.178, 6.4164, 4.4137, 1.438, 1.5613, -8.5713, -1.5266, -2.1776, 0.8939, -9.7803, -10.1082,
245 -0.4172, 3.9814, -2.5335, 4.7982, 6.2404, 9.5386, 1.728, -2.6347, 7.9832, -10.0263, -1.023, 2.1623, 7.0028, 7.7748, 15.0971, 5.6506, 5.2734, 4.3666, -5.3182, -6.5883, -8.8498, 1.1908, 5.523, -1.1525, -3.9009, -23.1871, 0.2212, -1.9086, -20.9924, 7.1776, 8.9477, 9.4213, 0.6845, 6.7206, 6.8189, 0.9603, -10.6166, 0.5146, -13.1811, -17.4476, -7.6137,
246 23.378, 25.0892, 26.2191, 26.9457, 24.6201, 18.5566, 11.6556, 4.9788, 0.6249, -3.74, -8.5904, -12.3926, -14.727, -15.9297, -15.762, -14.5514, -11.9079, -8.2268, -0.1798, 5.9532, 4.5772, 3.1484, 0.2938, -5.5237, -12.1896, -14.8172, -14.8798, -12.4827, -10.1404, 3.2764, -1.6281, -2.1589, -1.373, -0.4182, 0.5715, -0.2811, 1.7069, 1.5263, 1.5414, -2.7632, -16.8809,
247 26.2968, 26.9773, 27.1574, 27.9417, 26.5696, 21.5857, 14.8761, 8.6361, 4.1683, 0.7533, -1.9295, -2.5208, -0.0812, 2.225, 0.9523, -3.4957, -8.2811, -11.7647, -14.3663, -15.2907, -14.5936, -12.5687, -12.9612, -14.8338, -16.5565, -16.2573, -15.0745, -13.883, -13.6813, 1.4448, -0.0533, -0.092, -0.0314, -0.2973, 0.5069, -0.2172, -0.1011, -0.0306, -0.0946, -1.0343, -16.8789,
248 15.2599, 15.8558, 16.5112, 17.1923, 16.9184, 12.7155, 6.7767, 1.6437, -3.4349, -7.8714, -10.5492, -12.4016, -14.2321, -14.946, -15.0099, -14.2604, -12.3944, -9.913, -6.0566, 3.4214, 4.0393, 0.985, 0.9812, 5.2322, 5.1852, 2.0753, 2.8816, 0.5603, -7.1654, 13.9261, 10.8083, 1.8284, -2.6412, -3.5133, -2.9693, -2.93, -3.3031, -3.3193, -3.2617, -4.6248, -21.7463,
249 17.6998, 15.3407, 11.6586, 7.2522, 2.903, 1.127, 0.287, 0.3993, 0.1515, 0.9131, 1.2039, 0.835, 0.617, -0.2241, -0.4502, -0.7194, -0.2872, -1.3096, -2.7798, -3.9323, -4.0148, -5.4557, -5.6772, -5.5259, -5.6333, -6.0967, -5.8797, -6.4353, -5.9666, -4.2226, -4.1479, -4.5146, -4.3292, -2.7654, -0.8517, 1.0845, 2.937, 4.9613, 6.0166, 5.832, -4.0046,
250 6.7958, 6.618, 6.8562, 7.7048, 9.32, 10.2947, 9.2183, 6.4762, 2.7485, -0.8988, -3.443, -4.619, -6.3031, -8.1363, -8.6511, -7.2066, -4.4822, -1.4434, 2.6598, 5.1827, 2.6866, -0.9832, -2.3089, -1.3324, -0.7075, -3.4975, -7.3602, -8.3172, -6.8713, 15.6013, 14.5952, 12.4864, 10.1694, 6.7654, -5.1118, -14.7309, -11.9476, -9.2847, -6.6284, -11.9143, -21.6331,
251 14.4296, 12.7223, 10.1123, 8.5522, 7.7405, 6.5977, 2.6762, -1.5488, -4.129, -3.7931, -3.089, -3.1619, -4.0464, -5.1734, -7.7679, -6.3552, -4.2463, 2.5055, 5.5392, 0.2036, -3.7031, -5.8323, -6.0258, -1.1405, -6.8812, -8.2643, -6.4325, 2.2624, 8.249, -1.6654, -1.1619, -3.519, -1.9517, -1.3057, -0.412, 0.2731, 3.0941, 3.3892, 6.7202, -3.4609, 4.9976,
252 16.2171, 16.8083, 17.6167, 19.1924, 18.7528, 14.2594, 8.5818, 3.6957, -0.9158, -4.4517, -7.0958, -9.391, -11.6987, -13.394, -14.5794, -13.1362, -10.8013, -7.497, -2.2178, 3.955, 3.3524, 1.1405, 1.732, 1.1123, -4.7613, -8.88, -8.5945, -6.1985, -2.8033, 13.6191, 7.9112, 3.4818, -0.7153, -0.3308, -2.3878, -3.9144, -3.8872, -3.3753, -4.2532, -6.1481, -19.8313,
253 6.8744, 6.6595, 5.9608, 5.627, 4.3932, 3.6619, 1.6033, 0.6207, 0.2849, 0.0399, 0.6193, -0.4371, -1.6617, -0.9777, 1.0971, 4.1974, 5.9086, 2.26, -0.0342, 1.3932, -0.7669, -2.8459, -3.327, -4.4869, -4.5589, -4.9693, -7.563, -7.8037, -11.7691, 6.8143, 4.0009, -0.8944, -7.1111, -6.4611, -4.2217, -1.7229, 0.436, 2.1972, 3.2561, 3.7068, -18.5017,
254 18.3619, 17.7217, 16.1766, 13.4866, 10.6915, 10.2793, 11.8384, 14.1579, 15.8226, 15.6994, 14.1178, 12.1825, 10.7237, 10.1085, 8.7558, 5.2488, -0.0978, -5.2425, -10.2876, -14.5133, -15.8759, -16.5173, -16.7647, -16.0517, -18.5506, -21.537, -23.2401, -23.8593, -22.8353, 1.5487, 0.0279, -0.5628, -0.2643, 0.4887, -0.1023, -0.4874, 0.2721, 0.8224, -0.165, -1.5779, -24.7124,
255 31.7198, 31.7692, 29.2043, 25.0452, 19.3123, 12.8393, 5.9234, 0.3241, -2.4789, -4.4056, -7.0192, -8.8068, -10.3571, -11.5877, -12.2897, -12.495, -12.4338, -12.1031, -11.1686, -9.2498, -5.8575, -2.3369, -1.375, -2.0352, -2.1517, -3.404, -5.9186, -8.2233, -10.44, -0.0554, -0.5312, 0.1527, 0.4184, 0.6585, 0.9224, 0.6649, 0.9519, 0.5466, -0.5067, -3.222, -11.4604,
256 20.9886, 21.1123, 20.4027, 20.0167, 19.1884, 16.5783, 12.5867, 8.3317, 4.5773, 1.2778, -1.2341, -2.6474, -2.9142, -1.9783, -0.0434, 0.4668, -1.7813, -4.6738, -7.2502, -9.3057, -10.6229, -10.4876, -10.2177, -11.841, -13.179, -14.6712, -15.1393, -14.287, -13.2531, -3.396, -1.5619, 2.3074, 5.7136, 6.3342, 5.5398, 2.4437, 0.2877, -1.8718, -4.5073, -11.2895, -13.3591,
257 19.3924, 20.6124, 21.6255, 22.8929, 23.6118, 22.1117, 17.5653, 12.1779, 8.8663, 7.6147, 7.1982, 7.2343, 9.0939, 9.9573, 8.6027, 6.9323, 4.6278, -0.1742, -9.4767, -17.6803, -21.359, -22.4801, -22.5914, -22.5224, -22.4181, -22.3005, -22.8483, -23.1612, -23.1052, 0.6133, 0.2252, -0.4348, -0.4131, -0.5289, -0.397, -0.218, 0.1438, 0.5713, 0.4924, -0.0541, -22.3321,
258 -5.4361, -5.853, -6.336, -5.5397, -4.6575, -4.7263, -5.3668, -5.7909, -7.2619, -6.2038, -4.8838, -2.3553, -0.0793, 2.8083, 6.1069, 7.9082, 8.9577, 8.4116, 6.9427, 5.3831, 4.8464, 3.2166, 2.969, 3.6037, 2.4221, 1.8058, 0.2551, -0.2588, -0.888, 1.1827, 1.8083, 1.5989, 1.9336, 1.4331, 1.415, 1.02, 0.1423, -1.1623, -0.54, -8.8315, -3.2727,
259 15.8074, 16.7591, 16.8279, 14.8127, 12.3398, 10.0795, 6.3564, 1.5357, -1.2393, -3.3949, -5.2006, -6.9275, -7.1545, -7.4402, -8.2594, -9.4265, -11.1999, -12.9999, -8.0859, -4.8163, -2.9284, 1.356, 0.0774, -2.3044, -1.8591, 0.1665, -4.2809, -4.0953, 5.4946, 9.8215, 5.0171, 7.0888, 8.4199, 6.4234, 3.6409, 10.6458, 9.4642, -18.581, -21.0542, -20.8865, -9.8207,
260 16.5885, 17.1406, 17.0874, 16.5509, 14.5628, 11.8287, 11.686, 12.5074, 11.7212, 10.7081, 10.1468, 9.1212, 8.375, 5.9474, 2.4174, 0.3172, -1.3076, -2.387, -7.4556, -13.1264, -14.3324, -15.1303, -14.9156, -14.1134, -15.0136, -16.5819, -19.31, -21.7927, -21.2401, -7.0652, -6.6847, -6.5388, -5.2451, -2.6953, 0.0429, 2.8899, 5.3552, 6.884, 7.0718, 5.9852, -18.2709,
261 5.7159, 5.5464, 5.7456, 6.9034, 7.0731, 7.8586, 8.0236, 8.6981, 9.1036, 9.353, 10.1684, 9.7683, 7.9546, 5.4206, 1.7391, -0.2107, -1.2165, -2.1493, -3.9988, -5.8835, -7.1432, -9.2187, -9.9765, -11.168, -10.8259, -10.9835, -11.5153, -12.5521, -12.2304, 0.1902, 0.2673, 0.6601, -0.0091, -0.1874, -0.6461, -0.5035, -1.0433, 0.8599, 2.7028, -2.2908, -14.5718,
262 17.6557, 17.3889, 17.6615, 17.9794, 16.5379, 12.1975, 5.9007, 0.5883, -3.1335, -4.8335, -5.4254, -6.2659, -6.3932, -5.9023, -4.4098, -0.6232, 2.7006, 4.3695, 3.8488, 2.2808, 0.7423, -2.7461, -8.2729, -11.5807, -12.4732, -11.8352, -10.1651, -11.6722, -14.1196, 8.4864, 3.3593, 0.136, -1.6129, -1.5632, -1.3569, -1.625, -0.1613, -1.1646, -1.4389, -3.0589, -22.3338,
263 -10.394, -11.3059, -10.7072, -9.0929, -7.9625, -7.9528, -9.4227, -10.3318, -10.941, -11.1389, -11.6416, -11.7743, -11.8888, -11.1901, -10.5924, -9.486, -5.0151, 0.7991, 6.1915, 8.4506, 7.592, 12.1623, 17.6583, 20.5566, 20.2652, 20.369, 19.7694, 19.3174, 17.7068, 3.6441, 3.32, 3.1784, 2.3126, 2.6626, 2.7456, 1.7616, 0.1272, -1.6565, -3.6722, -14.4236, 11.3192,
264 -5.28, -6.7018, -5.8538, -2.9829, -0.9541, -0.9051, -2.3575, -3.5615, -3.7286, -3.675, -3.1606, -4.9611, -3.9368, -5.758, -6.751, -8.289, -7.8523, -5.0164, -1.2817, -1.0886, 3.4595, 6.5066, 6.9768, 10.1455, 9.1411, 11.6105, 10.998, 12.7941, 12.4636, -8.2776, -14.0532, -15.1503, -7.3901, -2.1067, 2.8745, 5.7677, 7.7844, 9.1465, 10.3125, 11.0923, 19.6399,
265 29.3262, 30.3667, 30.846, 31.0752, 29.3541, 25.4538, 21.7947, 19.7689, 18.2651, 13.3813, 5.5283, -2.7838, -9.2904, -12.5752, -14.327, -15.2147, -15.6347, -15.958, -16.2781, -16.2588, -15.7969, -15.4712, -15.0026, -15.2417, -15.4496, -14.8024, -15.4856, -15.3255, -14.2641, 0.8519, 0.0729, -0.0994, -0.0081, -0.3526, -0.2653, 0.2798, -0.1248, -0.0021, 0.1016, -0.4538, -15.6262,
266 15.4867, 33.4494, 31.067, 16.7893, 6.4957, 16.0571, 16.9999, 3.5875, -1.1144, 4.8625, -0.6863, -3.8211, -1.9744, -8.9072, -8.5418, -10.0978, -9.2052, -7.2961, -7.0614, -7.4703, -6.4488, -9.4828, -7.1526, -6.4892, -6.7913, -8.1872, -9.9015, -12.0879, -12.078, 0.2229, 0.6948, 1.138, 0.0739, -0.1888, -0.1421, 0.1878, 0.2524, -0.6463, 0.3346, -1.9272, -10.914,
267 5.6609, 8.4186, 9.2335, 8.5627, 6.3863, 5.2965, 4.7202, 4.121, 2.247, 0.4513, -1.5117, -3.6436, -5.3381, -8.3221, -7.4711, -7.9576, -7.8478, -7.1587, -4.1684, -2.5146, -2.1257, -2.2843, -1.1957, -1.5497, 0.8946, 0.9399, 1.4159, 1.7779, 2.9627, -5.4497, -6.1886, -3.2681, -2.133, -0.0404, 3.3281, 4.7853, 6.276, 5.5714, 2.7564, -5.6374, 7.7525,
268 8.2746, 28.7187, 36.6976, 28.2924, 10.6085, 7.9432, 11.522, 11.0743, -0.8646, -3.5525, 2.5564, -2.1952, -6.5887, -4.6155, -7.3323, -7.9392, -7.8581, -8.4524, -7.5176, -8.1708, -7.7429, -8.5235, -8.284, -8.3037, -8.0554, -8.4741, -9.7485, -10.9377, -10.531, 0.614, 0.5808, 0.566, -0.0413, 0.0489, -0.0922, -0.0506, -0.0413, -0.202, -0.1189, -1.2632, -9.9199,
269 11.0404, 11.4527, 12.0166, 13.1928, 15.2678, 14.9233, 9.1277, 2.3164, -2.7085, -5.3527, -7.7675, -9.0506, -9.7011, -10.3636, -8.8246, -5.5374, -1.0381, 4.5069, 6.0732, 3.0152, -2.7476, -2.7839, 0.0922, -1.8194, -6.8672, -9.4573, -9.4575, -5.7898, -3.7583, 10.8326, 2.8363, 2.0266, -5.3026, -6.6996, -2.9341, 1.7162, 6.9334, 1.7529, -2.8185, -8.3432, -20.4214,
270 12.4387, 12.5027, 11.9274, 11.7982, 12.5741, 13.7391, 15.0701, 16.2946, 15.8718, 14.4312, 13.1234, 12.3489, 12.0782, 10.4253, 5.1065, -2.4414, -7.7163, -11.2866, -14.5564, -17.0603, -18.3751, -18.6502, -16.8442, -12.5688, -10.3598, -13.7062, -17.0023, -16.5492, -12.6137, 10.1763, 4.1712, 1.7946, 2.0076, 0.9052, -2.1595, -3.3835, -3.6172, -3.1645, -2.457, -4.273, -25.1913,
271 23.6574, 23.796, 23.2767, 22.058, 20.0235, 16.6036, 11.9504, 7.3306, 3.6864, 1.7264, 0.9711, 0.7044, 1.071, 2.2585, 2.9655, 1.1649, -2.95, -7.6177, -11.4979, -13.5632, -15.3135, -16.4809, -16.207, -14.4023, -12.2974, -13.2762, -14.7359, -14.053, -10.8494, 8.8738, 6.6767, 4.8152, 2.7736, 0.0848, -2.4935, -3.4294, -4.0796, -4.0216, -3.7791, -5.4208, -19.2524,
272 24.5799, 26.6882, 26.121, 23.6936, 19.3829, 13.8994, 6.2899, -0.2105, -4.0678, -6.8423, -8.5308, -9.6576, -10.9976, -12.5439, -13.932, -14.634, -14.8621, -14.4895, -13.6415, -12.6341, -10.1213, -4.554, 2.381, 5.5155, 4.5043, 4.6729, 1.554, -3.0055, -4.5582, 9.0263, 7.4732, 2.8612, 0.7241, -2.0536, -2.7733, -3.2059, -2.7189, -1.5532, -1.3601, -6.4198, -12.7575,
273 7.6213, 8.4172, 8.9876, 10.4827, 12.2597, 15.2393, 17.4791, 18.0965, 15.0336, 10.0484, 5.7655, 2.6712, 0.2945, -1.4627, -1.971, -1.066, 1.16, 3.098, 1.1433, -4.1444, -8.297, -10.7541, -12.9877, -13.8031, -13.3996, -14.1617, -17.1393, -19.3636, -19.2476, 6.5354, 4.7648, 2.4269, 0.5232, -1.4945, -1.8813, -1.964, -1.7311, -1.653, -1.7955, -3.7308, -24.6643,
274 13.5087, 13.5242, 12.7722, 11.8179, 11.1371, 10.7172, 10.5263, 11.1693, 11.9327, 11.741, 11.0557, 10.1108, 9.3715, 8.9355, 7.6249, 5.0772, 0.6107, -4.7883, -10.1816, -14.0801, -16.86, -18.9941, -20.5775, -19.3418, -15.1559, -10.7533, -12.0838, -14.9402, -13.8764, 11.0621, 7.6386, 4.9345, 4.3245, 3.4049, 0.2756, -3.5276, -6.3143, -7.1008, -6.6692, -8.0282, -24.5342,
275 5.8438, 4.0764, 2.213, 1.0693, 0.2917, 0.2268, 0.3178, 0.0571, -0.122, -0.3299, -0.5484, -0.7221, -0.5026, -0.6535, -0.827, -0.8342, -1.183, -1.478, -1.3638, -1.1982, -1.1886, -1.0489, -0.664, -0.3974, -0.3609, -0.2538, 0.0154, -0.0545, -0.3807, -6.2176, -6.9549, -7.1781, -6.1296, -3.0722, 0.1331, 2.5736, 4.6982, 6.3374, 7.5607, 8.2495, 4.9755,
276 0.8084, -0.3755, -1.4286, -0.3083, 0.4094, 0.3217, -1.3855, -3.3308, -4.9621, -6.0578, -7.2055, -8.3467, -8.9662, -9.8798, -8.8811, -7.5773, -5.2881, -2.3523, -0.7359, -2.064, -3.5321, 3.1588, 7.1883, 8.4965, 6.8253, 10.082, 14.4185, 16.1906, 14.7782, 2.7472, 3.178, 3.1134, 1.3703, 0.638, 0.5841, -0.0788, -0.4106, -0.5281, -1.2372, -9.3762, 9.7708,
277 6.0347, 7.9306, 7.3087, 7.586, 8.0389, 6.2727, 1.7726, -1.951, -5.1723, -6.4728, -8.8919, -11.0154, -12.2556, -12.0671, -11.6595, -10.0395, -9.5655, -7.4114, -6.337, -7.0881, -7.2175, -0.9489, 2.422, 5.6816, 9.0238, 12.3465, 14.645, 14.7417, 14.2888, 2.3315, 1.6729, 1.0736, 1.3455, 0.9342, 1.8468, 0.4757, 0.6854, 0.1631, -0.4447, -10.0841, 9.3461,
278 46.3168, 40.1857, 32.991, 25.4126, 18.0879, 11.1478, 4.737, -0.5137, -4.1524, -5.9367, -6.6956, -7.3488, -7.7462, -7.7468, -7.367, -6.8462, -6.4988, -7.1096, -8.3038, -9.1796, -8.8798, -8.2279, -8.5672, -9.495, -9.9228, -10.8964, -12.033, -12.6718, -12.7395, 0.0319, 0.3618, 0.0496, -0.3085, -0.3788, -0.2193, -0.1354, 0.1832, 0.4305, 0.6666, -0.6818, -13.371,
279 11.6554, 10.6537, 9.3283, 9.0008, 10.6684, 13.7237, 16.302, 16.4883, 14.7382, 14.1678, 15.6614, 15.7353, 11.5669, 3.2738, -3.5965, -7.5962, -9.386, -11.3905, -12.5797, -12.1046, -11.4132, -10.6087, -9.1391, -12.6739, -14.9908, -15.8921, -11.8803, -12.2627, -17.4496, 3.468, 2.416, 1.3256, -0.8144, 0.1187, -0.6282, -0.9031, -0.1242, -0.905, -0.7535, -3.1999, -23.5324,
280 12.1675, 12.7254, 13.2135, 14.1985, 15.5137, 16.9806, 16.3379, 13.0366, 8.366, 4.1955, 1.8866, 0.9609, 0.6094, 1.9753, 4.6385, 5.7596, 1.8347, -3.2804, -8.2098, -10.9983, -11.7998, -9.9732, -7.5792, -9.7338, -14.223, -17.7555, -18.8744, -17.4527, -14.5201, 8.5409, 5.7667, 4.956, 3.2564, 0.0271, -3.4128, -3.9385, -3.7737, -3.3325, -3.1328, -4.9568, -24.6241,
281 9.112, 9.5643, 6.4962, 4.5254, 2.7757, 3.3307, 2.9999, 2.2174, 0.0229, -1.1179, 0.0764, 1.8616, 1.8079, -0.7101, -2.7389, -1.9102, -1.6224, -0.6549, 0.4717, -1.0044, -2.57, -7.5968, -14.5192, -14.0727, -5.93, 1.9148, 1.1204, 1.1277, 5.0226, -1.2631, 1.5663, 1.1958, 1.8714, 2.7703, 3.0917, 1.6973, 0.4038, -0.8317, -0.0474, -10.4545, 2.316,
282 17.413, 18.4485, 19.823, 21.9391, 23.4308, 21.8507, 17.8532, 15.0747, 14.5401, 16.0453, 15.3416, 9.4703, 1.3616, -5.8986, -10.9098, -13.9034, -16.0964, -17.8246, -18.9143, -19.3551, -18.7588, -15.8862, -10.9884, -9.6544, -11.1991, -11.1716, -7.9982, -9.7072, -14.3257, 2.4025, 0.4919, 0.6628, -0.0126, 0.21, -0.6177, -0.6937, -0.1321, -0.2311, -0.0316, -2.0484, -21.0953,
283 23.3464, 23.7587, 23.3198, 22.6359, 21.2675, 18.808, 15.3692, 11.2959, 7.5849, 4.5951, 2.3321, 0.6206, 0.1406, 1.2537, 2.7028, 2.3454, -1.0568, -5.4629, -9.1807, -11.1211, -11.633, -11.0576, -12.1808, -16.0691, -19.9208, -21.7935, -21.7452, -20.5008, -19.6545, 1.7728, 0.6055, 0.3687, 0.2898, 0.001, -0.3228, -0.5114, -0.4052, -0.3988, -0.136, -1.2637, -21.53,
284 -3.6391, -1.828, -2.2141, -2.8117, -2.3529, -0.6648, 0.7132, 2.6314, 3.0327, 3.8765, 4.7159, 6.0331, 6.984, 8.0909, 8.2184, 7.4433, 5.1418, 1.2303, -2.8864, -5.9181, -7.2732, -6.6797, -6.8357, -5.8669, -3.4482, -1.6078, -1.4231, -1.7328, -0.9288, 5.0214, 2.8439, 1.2445, 2.6452, 1.4416, 1.0353, -0.6548, -1.6658, 0.1662, -1.8989, -10.1785, -9.4487,
285 28.59, 28.4485, 26.4597, 24.2982, 20.1833, 14.5406, 9.8101, 7.1801, 4.6176, 2.4138, 0.7001, -2.5862, -4.1909, -6.9729, -9.1018, -9.6205, -10.881, -11.6812, -10.5387, -10.434, -10.1742, -2.9512, -0.769, -7.7471, -11.9011, -14.8085, -14.9057, -14.9118, -13.0663, -2.8812, -2.2219, 3.1021, 7.3299, 4.0256, 5.0339, 1.4276, -2.9978, -1.6788, -3.5104, -7.6288, -12.833,
286 17.2116, 17.2987, 16.9789, 18.3176, 20.751, 21.2753, 16.7522, 10.5133, 5.1142, 1.071, -1.6324, -4.2824, -5.9266, -7.1525, -5.1415, -0.8661, 3.3622, 1.3492, -3.6601, -7.4519, -9.7242, -8.3497, -5.386, -9.2331, -14.7369, -17.544, -17.6867, -15.904, -15.3169, 3.1075, 0.5173, 0.2992, -0.3406, -0.3, 0.1907, 0.194, 0.147, -0.5, -0.5615, -2.7535, -21.0709,
287 -3.1988, -4.0916, -5.2881, -5.3666, -5.4604, -5.669, -4.5675, -2.8244, -2.3646, -2.2769, -2.5378, -3.9469, -5.3482, -6.8601, -7.9884, -9.9236, -10.036, -5.5943, -1.7619, 2.5871, 4.2247, 6.6177, 8.6593, 10.3741, 10.0072, 13.2806, 13.3423, 12.7747, 13.2373, -10.5369, -13.7286, -14.4672, -7.5571, -1.4016, 2.5948, 5.6055, 7.446, 9.7262, 10.9589, 11.36, 20.0322,
288 6.7783, 7.2343, 7.5331, 7.7761, 7.5074, 7.6964, 8.5725, 10.1613, 11.2545, 11.2432, 10.164, 8.2217, 5.7244, 3.0761, 1.5943, 2.29, 3.8412, 4.4389, 2.8003, -1.0955, -5.1726, -8.1891, -9.0934, -10.2132, -12.0854, -15.5298, -19.4471, -23.4981, -23.5838, 4.8567, 5.6416, 5.2432, 4.8449, 4.3077, 1.0329, -3.6054, -4.753, -5.3304, -4.6545, -7.5837, -26.896,
289 8.4973, 9.579, 10.3958, 11.0142, 10.3482, 7.3892, 3.2338, 0.0093, -2.226, -2.9444, -3.5594, -3.3833, -3.1035, -3.2915, -3.1816, -1.7272, -1.5694, -1.309, -0.9698, -1.6827, -1.8826, -2.4935, -2.7299, -3.3411, -3.5987, -3.5349, -4.0664, -5.515, -4.3567, 3.6788, 2.2969, 2.2073, 2.205, 0.4179, -0.5426, -0.2219, -1.2268, -0.5609, -0.3836, -7.8702, -9.1107,
290 17.6231, 17.9262, 18.5472, 20.0216, 20.3023, 17.2887, 12.1996, 7.3566, 4.7274, 3.6547, 4.0756, 5.881, 5.504, 1.8555, -4.482, -8.8437, -12.2983, -14.1074, -15.701, -15.7749, -15.0957, -12.7982, -7.9092, -8.3535, -11.5389, -11.4704, -7.3965, -5.1788, -6.015, 7.6735, 4.3849, 2.0779, 0.2256, -0.3031, -1.8488, -2.2661, -1.6177, -1.6092, -1.8719, -4.8451, -18.7476,
291 12.8205, 14.2684, 15.5868, 16.7831, 17.8071, 18.5983, 18.8925, 18.18, 16.6295, 15.0296, 14.4114, 15.1384, 15.0538, 11.9286, 6.3973, 0.5192, -5.4829, -11.2613, -15.915, -19.5693, -22.3818, -23.8883, -24.2652, -24.1324, -21.657, -17.7761, -13.9964, -14.512, -13.2068, 12.3627, 9.0753, 5.2809, 2.4178, 1.3885, -1.6252, -3.9036, -5.7988, -6.3917, -5.9659, -6.8402, -21.2728,
292 20.5006, 19.7859, 17.9876, 15.5578, 13.4254, 11.0431, 7.8434, 4.6796, 1.3542, -1.1988, -3.1242, -4.8289, -6.6124, -8.2071, -8.4241, -6.4513, -2.471, 0.8654, 0.4899, -3.0973, -6.3396, -7.6626, -7.3643, -5.6214, -3.7466, -5.6286, -8.3519, -11.4399, -12.9632, 6.3044, 6.3906, 3.8753, 0.4819, -1.9504, -2.646, -2.8098, -2.5547, -2.1552, -0.9715, -3.9646, -18.7636,
293 4.95, 4.5607, 3.172, 2.1209, 0.349, -1.0626, -3.5132, -4.7851, -6.2971, -7.3286, -6.8625, -6.4027, -6.8983, -8.1437, -7.2159, -6.5081, -6.243, -5.2328, -3.1319, -1.8582, -0.2079, -0.4158, 1.4593, 6.3046, 10.2618, 11.6043, 10.489, 12.3236, 14.512, 7.5422, 7.3893, 6.7744, 4.7439, 3.7082, 1.4685, -2.1681, -2.4628, -6.2634, -5.1931, -15.539, 4.5238,
294 -7.141, -6.5576, -5.8532, -3.8568, -2.3391, -0.1389, -0.2988, -0.6152, -1.3909, -2.2598, -3.3096, -3.1888, -4.0487, -5.2444, -3.1046, -1.246, -0.3725, 1.6801, 1.7857, 1.4104, 0.4592, 2.1738, 4.1615, 5.0013, 6.4493, 6.5541, 6.132, 7.0552, 8.1032, 1.4568, 1.3024, 1.2345, 0.1461, -0.9716, 0.5343, 1.2784, 1.2357, -0.0481, 1.4818, -7.6504, 7.6553,
295 2.7066, 2.4471, 1.1636, -0.0118, -0.1417, -0.8857, -3.1245, -4.8414, -6.9143, -7.764, -7.8038, -8.175, -9.1533, -9.9253, -10.0476, -7.9885, -5.4758, -0.6781, 2.4938, 3.5356, 5.3377, 10.4949, 13.4549, 12.5233, 9.2737, 7.1566, 5.3825, 4.3104, 2.6502, 1.7997, 1.0976, 0.5063, 0.9888, -0.0215, 0.8543, 0.3799, 1.5785, 0.4497, 0.6056, -8.2389, 0.7587,
296 15.6038, 13.7257, 10.761, 8.3191, 6.7695, 6.1252, 5.5801, 6.3511, 7.5592, 7.0879, 5.0425, 2.3556, -0.6287, -2.0902, -1.8476, 1.1771, 5.218, 6.2633, 2.3465, -3.3395, -7.6295, -9.3311, -8.2251, -8.2814, -12.4973, -15.3911, -16.5987, -12.5111, -11.9141, 6.9187, 2.666, -0.5025, -2.5042, -3.4261, -3.1605, -1.1635, 1.6816, 1.5678, 1.5285, -3.6059, -21.5346,
297 17.6619, 19.2955, 19.3999, 18.1758, 14.7064, 10.338, 5.4051, 0.8448, -2.7673, -5.8069, -8.5749, -10.4074, -11.7428, -13.3545, -14.7279, -15.0946, -14.9717, -14.1635, -12.0366, -9.1704, -5.5296, 1.7983, 8.7621, 10.6721, 9.0083, 6.252, 0.4593, -2.8951, -1.5362, 17.6102, 14.966, 11.8151, 6.0356, -2.6221, -10.0292, -11.4635, -9.0063, -4.3623, -3.1041, -9.8395, -15.6595,
298 15.5037, 19.5752, 20.4189, 20.0547, 19.078, 16.8051, 14.6828, 13.1886, 10.1566, 3.7762, -1.134, -2.4739, -2.6979, -3.0349, -2.9212, -1.9641, -2.139, -4.2528, -5.4908, -5.4648, -2.3822, 1.3316, 0.1433, -8.8993, -18.5802, -23.4001, -24.1794, -22.3013, -23.3986, -0.5049, 2.4704, -2.1518, 0.1889, 8.8275, 7.0883, -1.7491, -2.8957, -3.5389, -3.58, -4.1549, -22.0424,
299 22.2571, 23.2194, 23.3933, 23.2954, 22.5841, 20.0392, 15.7479, 11.5849, 8.77, 7.9103, 8.1392, 8.4163, 7.8831, 4.6926, -0.6859, -6.5062, -11.4228, -14.857, -17.9311, -19.2012, -19.8667, -20.3831, -19.2002, -15.1301, -11.0896, -11.7977, -14.413, -13.8987, -11.5493, 6.2481, 3.7903, 3.5761, 3.3013, -0.8054, -2.9745, -3.092, -3.5267, -2.491, -0.8625, -3.1636, -20.4183,
300 9.8965, 9.6623, 8.329, 7.4658, 5.9247, 5.2895, 3.6738, 3.1009, 1.1973, -0.2394, 0.0744, -0.2488, -1.7673, -2.8794, -4.7879, -4.3784, -4.5885, -3.9967, -2.8591, -1.8656, -2.4063, -3.7709, -4.0771, -4.7175, -3.4331, -2.4372, -2.8219, -1.4458, -1.8932, 10.2458, 7.5639, 2.768, -9.9537, -3.5803, -1.8907, 0.2144, 0.7131, -0.3057, 0.1415, -5.9163, -11.5491,
301 15.2412, 13.6648, 11.746, 11.4262, 12.464, 13.7257, 13.2285, 9.7944, 4.8606, 1.4831, -0.3682, -1.5802, -2.2343, -0.4399, 3.1592, 4.1899, -0.2603, -4.7397, -7.1446, -6.9457, -6.2341, -4.9071, -5.6164, -9.2612, -10.3548, -11.0953, -11.7433, -14.5977, -17.4609, 6.0283, 4.4046, 1.6269, -0.9371, -1.3835, -1.4248, -1.2533, -0.8106, -1.1426, -1.5174, -3.5905, -22.8504,
302 10.9657, 10.2369, 8.6562, 6.5066, 5.4153, 4.3801, 3.7307, 2.9701, 3.0231, 3.962, 5.6227, 6.8354, 6.8607, 7.7333, 9.3711, 9.9052, 7.3966, 2.1887, -3.3161, -8.0311, -11.2107, -14.2345, -15.6874, -15.1299, -12.3738, -7.8431, -8.18, -10.637, -9.1168, 12.4941, 8.2803, 6.3797, 5.8238, 4.5394, 1.5368, -3.0238, -7.3749, -9.2127, -8.2187, -11.2239, -21.6561,
303 -1.8184, 2.4357, 5.5586, 6.9268, 6.9316, 6.6729, 5.8397, 5.6316, 4.9978, 3.5427, 2.8029, 2.1519, 1.5431, 0.6158, 0.3469, -0.516, -0.7873, -1.1647, -1.4196, -2.0573, -2.9471, -3.3866, -4.0651, -4.9043, -5.5018, -6.2789, -6.6909, -6.974, -7.4862, 0.3871, 0.0109, -0.4655, -0.7491, -0.9646, -0.7984, -0.5764, -0.2825, 0.8617, 1.8001, 0.7766, -8.6084,
304 26.9824, 24.7422, 20.3883, 16.4687, 12.785, 8.7194, 4.1423, 1.1187, 0.4923, 1.295, 1.3167, -1.4325, -5.9855, -8.8959, -10.4619, -7.317, -2.2777, -2.0173, -3.2424, -2.3419, 0.2272, 1.3235, 1.3113, -5.1772, -12.0604, -15.3385, -15.4975, -15.3067, -13.9604, 3.9044, 0.9553, -0.105, -0.6867, -0.6467, -0.6666, -0.6241, -0.2928, -0.2046, -0.3915, -1.2419, -18.1483,
305 17.4264, 17.8739, 18.0003, 19.1004, 20.7794, 20.0129, 15.2235, 9.3432, 5.1301, 3.7231, 2.3327, 1.2995, 1.8338, 4.1579, 7.7891, 10.5489, 10.0894, 9.6396, 4.8572, -4.9005, -15.2998, -20.5168, -23.2742, -23.953, -23.553, -22.129, -20.9638, -20.9315, -23.6395, 0.5658, 0.703, -0.1044, -0.6743, -0.6856, -0.735, -0.3973, 0.2942, 0.8749, 0.8195, -0.6608, -23.7592,
306 11.0645, 10.901, 10.3455, 9.1551, 8.2401, 8.4773, 10.1716, 11.9195, 13.3973, 14.303, 14.0566, 13.0477, 11.7356, 9.5219, 7.83, 6.8087, 4.1182, -0.0372, -5.3649, -10.0547, -11.7439, -11.6649, -9.2813, -10.9454, -17.6273, -22.3121, -25.1873, -26.7049, -24.1694, 1.5313, -0.0939, -0.8118, -1.4436, 1.2266, 2.0907, 1.6972, 1.5907, -0.0005, -1.5372, -4.2496, -26.64,
307 7.2201, 8.5015, 11.5206, 11.9242, 7.928, 3.2514, 0.5668, 0.7646, 1.2768, 1.9716, 3.4275, 3.9772, 2.0908, -0.4764, -2.4307, -1.9307, -0.2561, 1.3364, 0.1271, -2.1785, -4.4197, -5.1263, -6.374, -7.1163, -6.5611, -6.9173, -7.2567, -7.3864, -7.4542, 4.2215, 2.477, 1.4908, 0.9538, 0.278, -2.2207, -1.8537, -1.0888, -0.2235, 0.301, -4.3353, -11.8723,
308 9.0358, 8.4259, 6.9459, 5.289, 4.7496, 6.3098, 9.2991, 13.3013, 15.9079, 15.539, 12.4964, 10.644, 9.7104, 9.7273, 8.5423, 3.6988, -2.7453, -8.0067, -11.5004, -13.3609, -14.6771, -13.2598, -11.305, -7.8208, -9.6607, -12.4588, -13.3476, -14.2784, -17.201, 1.6164, -1.2748, -1.3834, -0.4721, 0.9792, 1.3035, 2.0628, 2.1638, 0.6958, -0.7525, -4.9387, -23.7718,
309 9.9565, 8.4628, 5.9625, 4.33, 2.9878, 3.3325, 3.411, 2.9855, 3.4264, 4.1032, 5.0697, 5.2769, 4.9009, 3.1001, 1.4373, -0.264, -1.896, -3.0143, -3.5656, -4.3939, -4.4464, -4.68, -5.3044, -6.0923, -5.6495, -6.5418, -7.2604, -8.5353, -7.0993, 1.0313, 1.1537, 1.5169, 0.9291, 0.7698, 0.3306, -0.6705, -0.6783, -0.1746, -0.1455, -4.0627, -9.9902,
310 8.8206, 8.3311, 7.6969, 7.4773, 8.8832, 10.4436, 11.5039, 11.592, 9.4044, 5.3729, 2.7965, 1.9244, 0.844, 0.9343, 3.0627, 6.0994, 4.9989, -0.1279, -4.374, -6.7306, -7.8914, -6.9026, -5.4598, -8.4881, -12.8495, -16.5109, -17.0277, -14.2238, -9.5997, 15.6704, 10.6049, 9.844, 7.9028, 1.2354, -5.4491, -8.2374, -7.873, -7.9121, -7.2858, -8.5, -25.1681,
311 28.034, 39.0868, 27.1887, 10.6361, 11.9455, 17.4394, 5.1212, 0.4727, 0.9604, -3.2583, -4.9003, -4.7245, -5.4538, -5.8998, -6.9947, -8.1227, -7.9559, -7.4467, -7.2961, -8.3144, -8.2615, -7.493, -6.2339, -6.9302, -6.771, -7.9933, -8.7878, -9.0802, -8.9666, 0.2832, 0.1164, 0.0146, 0.0499, -0.3417, -0.2028, 0.0292, -0.0176, 0.3328, 0.3092, -0.5731, -8.1546,
312 13.2856, 13.6736, 13.8385, 14.28, 16.0154, 17.101, 16.3952, 13.2274, 9.9508, 8.9754, 9.0915, 10.0588, 8.791, 4.7013, -0.6836, -5.8039, -9.0189, -11.2256, -12.734, -12.444, -11.1395, -8.86, -7.8172, -12.7618, -18.4517, -20.0185, -18.1437, -12.9371, -7.3458, 15.2491, 9.0836, 7.8889, 2.1805, -3.0815, -5.2994, -5.5285, -5.1346, -5.1469, -4.4882, -5.723, -22.9727,
313 13.2791, 36.046, 37.8677, 20.5156, 1.8115, 5.3912, 6.3369, -1.8419, -4.5104, -2.1483, -1.6031, -4.4187, -2.3622, -5.5552, -5.8859, -5.4153, -6.3869, -5.0848, -6.7256, -6.3113, -6.6644, -6.7067, -6.3379, -7.1113, -6.5094, -6.6908, -7.2644, -7.5701, -8.1431, 0.0788, -0.2498, 0.1241, -0.2112, 0.0855, -0.0675, 0.3132, 0.2893, 0.0553, 0.4068, -0.8245, -8.0347,
314 7.9344, 6.5125, 3.7957, 3.5965, 6.7588, 12.694, 16.5097, 15.1028, 8.0593, 1.9598, -1.2146, -2.5926, -3.3772, -1.3486, 3.1728, 5.8914, 1.9225, -4.7654, -9.1401, -9.7051, -8.8318, -4.5607, -2.0376, -6.245, -8.0736, -8.0805, -5.2827, -6.9369, -11.718, 7.2258, 3.3652, 1.3586, -1.1046, 0.1664, -0.3445, -1.186, -1.2597, -1.3364, -2.1233, -4.7616, -22.1072,
315 21.0378, 20.1437, 17.5203, 14.9435, 12.2481, 9.7639, 5.599, 1.4969, -1.3751, -3.1146, -3.919, -4.7517, -4.5423, -4.8816, -3.7907, -3.156, -2.1567, -0.7505, 0.1795, -0.4587, -2.1088, -3.6718, -5.6034, -7.3929, -8.2906, -9.552, -10.5896, -12.2849, -10.5415, -10.7549, -8.4301, -5.8121, -1.4994, 2.1408, 6.5891, 7.6924, 9.5764, 7.2596, 6.0779, -12.8398, -1.9629,
316 10.7156, 9.5865, 7.6225, 6.9649, 7.0204, 6.9685, 5.2279, 3.7124, 2.4551, 1.6576, 1.9988, 3.6736, 4.0688, 1.8389, -1.2786, -2.3368, -0.4395, 1.0954, 3.9267, 3.5576, -1.4334, -6.6048, -9.776, -10.9008, -10.7709, -9.343, -10.2106, -9.759, -9.2378, 2.5943, 0.3766, -1.2329, -1.3523, -0.5254, -0.1927, -0.3463, -0.4383, 0.4702, 1.6846, -1.0379, -12.5558,
317 24.058, 24.4379, 23.9745, 23.0444, 20.8465, 16.8979, 11.813, 7.1514, 3.368, 0.5959, -1.6053, -3.718, -5.6992, -7.0693, -6.5902, -3.1806, 1.0957, 2.1175, -1.3667, -5.8106, -7.7326, -6.3061, -6.7167, -11.4328, -17.2877, -19.9514, -19.4929, -18.2702, -17.1703, 1.8172, -0.1844, -0.2118, -0.1481, -0.6409, -0.6132, -0.3659, 0.2614, 0.3884, 0.5934, -0.896, -20.2332,
318 19.4765, 20.139, 19.4603, 17.8222, 14.3397, 10.2003, 4.8581, -0.7364, -4.1646, -6.0966, -7.2789, -8.6454, -10.5389, -11.5302, -9.4624, -7.2408, -3.9524, -2.2222, -4.3879, -6.9029, -9.6078, -8.5139, -4.7196, -4.0072, -5.4425, -3.2306, 1.5193, 5.03, 5.8358, 16.6913, 13.78, 8.079, 4.9477, 0.9965, -4.7924, -7.0379, -7.8346, -6.8472, -7.4504, -10.5321, -11.1317,
319 18.8135, 17.0829, 14.0965, 11.2672, 7.9285, 3.6326, 1.0246, 1.6274, 5.2441, 9.5096, 12.7855, 11.9891, 9.99, 8.1345, 7.9624, 7.3196, 8.1668, 7.4695, 3.3884, -5.5692, -13.6276, -18.3033, -22.2152, -22.3568, -16.4382, -9.9941, -12.6602, -22.2049, -24.0632, 8.03, 3.8659, 0.487, 0.5409, 0.8745, -0.3373, -1.1358, -2.3213, -3.1408, -3.2458, -3.6172, -26.2789,
320 -3.1846, -2.1461, -1.3884, -2.1168, -3.4536, -2.2068, -1.9328, -3.2837, -4.0724, -3.4451, -3.7064, -3.449, -5.5867, -7.8526, -8.9224, -10.9618, -10.414, -7.1444, -2.693, 1.689, 4.0196, 6.33, 6.7767, 10.2897, 10.6153, 11.6584, 13.3164, 12.9788, 10.2869, -8.7628, -13.5736, -14.7094, -7.7628, -1.0738, 2.3985, 3.7455, 7.9153, 9.1097, 10.9709, 11.7425, 19.7352,
321 7.2036, 10.7988, 12.0301, 12.67, 13.909, 16.0294, 17.1742, 15.7924, 13.0556, 11.3737, 9.8981, 9.758, 10.055, 8.6757, 4.393, 0.9731, -2.5467, -5.8685, -7.3935, -7.9704, -6.2553, -7.4006, -13.7008, -21.8328, -25.5284, -24.9555, -17.274, -13.6475, -19.4157, -0.8046, -1.7221, 0.6106, 5.7975, 8.4089, 4.3333, -1.5262, -3.211, -3.4206, -4.0492, -4.4166, -25.3279,
322 15.5255, 15.8281, 15.8649, 15.5717, 15.2512, 14.5946, 13.3549, 11.766, 10.2176, 8.4641, 7.0906, 6.0253, 5.1563, 4.7439, 4.4714, 3.6019, 0.9681, -2.7655, -6.2281, -9.0931, -11.2485, -13.4855, -15.2719, -16.2999, -17.251, -18.5206, -20.9106, -20.3915, -17.03, 7.378, 8.0307, 7.885, 7.6236, 5.1345, 1.2557, -3.7418, -6.8045, -8.6459, -8.6051, -9.5101, -22.9827,
323 26.7348, 25.8552, 24.2536, 22.168, 19.2892, 15.067, 11.8818, 10.349, 10.6841, 11.6366, 12.5339, 12.4939, 11.6206, 9.1288, 4.6195, -0.5596, -5.8142, -10.4221, -14.3446, -17.6431, -19.9802, -21.2101, -22.1807, -21.9, -20.1487, -18.1387, -18.1454, -19.6347, -18.1941, 5.5041, 1.739, -0.1498, 0.3482, -0.1172, -0.967, -1.1456, -1.3452, -1.2394, -1.1363, -1.491, -21.2326,
324 16.937, 16.4331, 14.8117, 13.584, 11.6269, 10.1575, 7.6822, 5.8162, 3.2955, 0.7078, -0.94, -2.4858, -3.3054, -4.9715, -5.404, -5.2105, -5.0578, -4.9223, -4.7159, -4.8903, -5.6388, -6.4062, -6.4586, -6.1964, -6.2205, -6.7543, -6.8166, -7.3223, -7.3349, -2.386, -1.5474, -0.5275, -0.2007, 0.87, 2.1354, 2.2672, 1.9194, 1.3885, 1.7931, -5.712, -7.0233,
325 18.1837, 17.9105, 17.8502, 18.6001, 17.6649, 14.2299, 8.9135, 3.9793, 0.2595, -2.5341, -4.9127, -7.3705, -8.608, -10.0958, -9.6568, -8.5105, -6.6859, -1.7349, 3.3029, 3.1008, 0.1928, -0.6889, -2.6251, -6.034, -10.08, -12.4257, -10.0527, -7.9815, -14.1909, -0.8841, -2.2545, -2.1948, -0.1934, 1.8452, 1.587, 0.0467, 0.886, 1.7017, 2.0046, -2.5444, -18.3771,
326 8.7179, 7.6147, 4.8975, 2.3828, 0.6009, 0.0492, 0.7007, 3.0024, 5.6126, 8.3164, 9.7108, 8.5643, 5.5842, 2.4437, 0.8618, 1.4883, 2.2665, 4.0837, 2.0839, -2.0359, -5.2412, -7.0937, -7.9286, -7.0963, -7.3007, -8.8955, -10.5985, -11.5307, -11.2613, 4.1091, 1.9827, 0.6908, -1.0075, -0.1945, -0.4742, -0.465, 0.2047, 0.0728, -0.1453, -4.7735, -16.8928,
327 26.5577, 26.0733, 24.6549, 22.5723, 19.6449, 15.1079, 9.6936, 5.0965, 2.0343, 0.4929, -0.51, -0.7852, -0.6639, -1.6495, -4.5761, -7.3418, -9.5136, -10.9969, -12.3139, -12.694, -11.8566, -8.9787, -3.5622, 1.2887, 1.2102, -6.9904, -16.4084, -22.1027, -23.4832, -1.8879, 0.4885, 2.0094, -0.3326, -2.5347, -2.2882, -2.5729, -1.0909, 0.4876, 5.9716, 1.75, -19.5897,
328 35.3242, 34.3711, 32.268, 29.4806, 25.8876, 21.5217, 17.0469, 12.7325, 8.2745, 3.717, -0.9461, -5.4939, -9.1998, -10.9322, -11.5916, -11.7605, -11.9938, -12.5431, -13.0923, -13.2971, -13.3947, -13.1377, -12.6123, -12.5003, -13.0962, -13.2815, -13.653, -14.1174, -13.9808, 0.5697, 0.0342, -0.0298, -0.0559, -0.1023, 0.0891, -0.0151, -0.1749, -0.0061, 0.0508, -0.3598, -13.8339,
329 10.0703, 9.7251, 9.1433, 8.8944, 8.618, 8.9798, 8.7995, 7.6156, 6.5867, 6.0265, 5.9165, 4.8201, 3.4139, 2.636, 2.763, 3.8113, 3.0665, -0.158, -4.1852, -6.9646, -8.5002, -7.9262, -6.4833, -8.3135, -11.7801, -15.4185, -14.2921, -13.7284, -13.1365, 1.2932, 3.3955, 6.0907, 4.2778, 4.2667, 1.2855, -2.6003, -1.0796, -3.6746, -1.8634, -11.3916, -19.3656,
330 23.3051, 24.1993, 23.9215, 23.6862, 23.1858, 21.5213, 18.1183, 13.5369, 8.5586, 3.3648, -2.7305, -8.4197, -12.7332, -14.9501, -15.7545, -16.1289, -14.8115, -12.7042, -10.1815, -6.8723, -4.1455, -3.1746, -3.2618, -1.9552, -2.0348, -7.0796, -14.1032, -17.0807, -15.2758, 6.0612, 4.0067, 0.6827, -0.7321, -1.3626, -1.3544, -1.3699, -1.2448, -1.0738, -0.8706, -2.7423, -19.3798,
331 15.2674, 16.9866, 17.1277, 16.7099, 15.7308, 13.2318, 9.297, 4.9391, 0.8073, -2.3215, -4.1763, -5.419, -5.9209, -6.5426, -6.5178, -6.1109, -5.5659, -5.2001, -5.0134, -5.0517, -5.0368, -5.4231, -5.5314, -6.1976, -6.3703, -6.2889, -5.3624, -6.1367, -5.9099, -8.075, -7.3361, -4.4931, -3.1183, -2.2693, -0.445, 2.6648, 5.708, 7.3558, 8.7204, 1.2878, -1.4334,
332 16.2521, 17.5727, 18.3716, 19.7318, 20.2218, 17.5895, 11.4595, 3.5824, -4.4163, -9.7646, -11.0944, -11.4598, -11.7153, -11.2087, -10.3436, -9.499, -7.9409, -5.7447, -1.7839, 3.2246, 5.5449, 5.2691, 3.5281, 1.4077, -0.7885, -7.8706, -13.4426, -14.7741, -11.9087, 8.1501, 11.0831, 13.4143, 10.3995, 2.9803, -3.3969, -7.2017, -8.5882, -8.4386, -8.7227, -9.6791, -18.788,
333 13.3298, 15.6004, 16.9495, 17.9742, 18.6413, 18.0052, 15.3407, 10.8188, 5.7704, 1.6139, -1.5541, -4.5241, -6.85, -8.6887, -10.0915, -10.3456, -9.1067, -7.2349, -3.6908, -0.4604, -0.7272, -4.5894, -7.5233, -6.1277, -2.5212, -4.8361, -11.8782, -16.9767, -16.3176, 9.514, 11.6129, 9.6344, 6.8283, 1.8214, -5.0008, -6.9907, -7.4822, -6.786, -5.353, -7.7983, -21.5097,
334 5.8509, 5.0121, 4.1809, 3.1146, 2.3783, 3.1729, 5.0219, 8.3707, 10.9759, 11.227, 8.3063, 4.3902, 0.4943, -2.3167, -1.645, 1.9935, 5.6473, 4.3761, -0.8021, -4.8923, -7.3829, -8.9257, -7.0734, -4.5608, -5.6127, -9.9029, -12.5815, -12.1258, -6.6911, 19.4769, 13.9666, 10.8452, 9.4207, 4.267, -4.7851, -10.4839, -11.6782, -11.7512, -9.0329, -10.245, -24.1213,
335 21.8999, 23.2973, 23.7997, 23.4635, 22.0363, 18.0109, 11.7586, 5.0662, 0.6662, -2.2727, -5.6763, -8.5064, -10.4473, -10.5884, -9.8688, -7.3515, -1.6565, 4.9891, 8.0386, 5.1463, 1.6954, -0.6651, -6.4585, -12.0333, -17.064, -19.1042, -20.056, -19.6043, -18.5148, 1.3036, -0.0062, -0.2979, -0.3133, -0.533, -0.7489, -0.3368, 0.3007, 0.2781, 0.7521, -0.3986, -20.6963,
336 -10.8987, -3.8431, 0.8023, 3.7818, 5.0658, 6.8699, 5.8536, 5.2186, 3.8311, 2.242, 1.7635, 0.0185, -1.2264, -1.7443, -3.2128, -1.6985, -0.4682, -0.6943, 1.3731, 2.1612, 2.0833, 0.947, -0.8848, -2.3964, -2.7117, -2.4339, -2.8978, -3.2996, -3.6012, 2.7097, 2.9692, 3.1594, 3.0175, 3.5504, 2.5518, -0.2289, -2.095, -2.3143, -3.331, -9.9888, -7.1246,
337 24.4808, 26.3759, 27.594, 28.3806, 27.5669, 22.5831, 15.7417, 10.5723, 9.0486, 9.8475, 11.5983, 11.3131, 7.1102, 0.2086, -7.1702, -11.973, -14.3609, -16.1449, -17.3317, -17.8091, -17.4066, -16.0482, -15.0664, -15.2895, -16.4422, -17.0076, -17.0725, -17.2911, -16.0079, 1.3349, -0.0323, -0.0023, -0.0696, -0.4582, -0.2103, -0.2903, -0.1486, -0.0517, 0.5839, -0.6555, -18.4443,
338 17.9414, 16.0904, 14.3699, 13.3391, 11.1223, 8.3964, 4.984, 2.4988, 0.7921, 0.1608, -0.231, 0.1816, -0.4705, -2.1166, -2.9171, -3.7835, -3.0302, -2.2559, -1.96, -0.9583, -1.2307, -3.4055, -6.3253, -8.4085, -9.7194, -10.3891, -10.6675, -10.8207, -11.1873, 1.0986, 0.4777, -0.0911, -0.085, -0.2734, 0.014, -0.2098, 0.7129, 0.898, 1.8977, -4.4395, -12.1029,
339 12.4723, 14.3737, 15.7331, 17.5345, 18.5865, 17.4102, 13.1675, 8.1222, 3.7914, 0.4168, -2.7856, -5.0694, -6.1658, -6.8186, -6.5122, -3.9192, 0.1995, 5.0703, 4.8669, 1.2909, -0.9029, -1.6452, -6.8885, -13.7427, -17.9265, -18.6395, -13.8409, -11.8927, -16.286, 1.0018, -0.413, 0.2921, 0.9706, 3.0372, 2.3311, -1.1419, -1.468, -0.837, -1.0945, -2.6785, -23.0503,
340 16.1352, 15.6199, 13.6322, 10.9321, 8.0808, 7.3912, 8.2284, 10.3433, 11.9724, 11.5988, 9.3631, 5.6849, 2.7468, -0.1363, -1.7113, -0.5317, 2.3026, 3.9081, 0.3916, -4.3635, -7.2068, -8.5384, -8.455, -8.954, -13.2029, -18.1608, -21.6849, -22.2538, -23.132, 1.1059, 0.2225, -0.9789, -1.0458, -0.6792, -0.6786, -0.0893, 1.8547, 2.2928, 0.8548, -2.8591, -24.9911,
341 28.0419, 26.8927, 23.9676, 20.3423, 17.0949, 14.1432, 11.117, 8.5048, 5.9497, 3.7523, 1.8284, -1.1682, -4.22, -7.3805, -9.6413, -9.8772, -7.8838, -5.3446, -3.541, -3.9253, -6.0372, -7.8179, -8.639, -8.2594, -11.0251, -14.9594, -17.1292, -17.6345, -17.1513, 2.0146, 1.0165, 0.2708, -0.3124, -0.5924, -0.7003, -0.5256, -0.1176, 0.1111, -0.074, -1.0907, -18.2597,
342 30.4937, 29.9533, 27.013, 23.2537, 19.3056, 15.2225, 11.4303, 9.6244, 9.1658, 8.8058, 7.5946, 3.9214, -0.3706, -4.6724, -8.3883, -10.6272, -11.6333, -12.3129, -12.9451, -13.0994, -12.8851, -12.729, -13.3639, -13.9071, -13.6304, -13.0095, -13.0398, -14.2416, -14.9284, 0.6244, 0.4573, 0.2518, -0.4563, -0.2954, -0.1108, -0.0098, 0.1405, 0.0912, 0.3156, -1.0087, -16.5521,
343 23.7058, 24.6386, 24.654, 23.9896, 22.7528, 20.4522, 16.9148, 13.0348, 9.6982, 7.0016, 4.5976, 2.122, -0.6149, -3.6746, -5.8863, -5.9902, -4.5281, -3.6266, -4.892, -9.1128, -13.5269, -16.4106, -17.2411, -16.4096, -15.1425, -15.8149, -18.5726, -21.0323, -21.086, 0.97, 2.5909, 2.5737, 1.8731, 0.5116, -0.3889, -0.5545, -1.3812, -1.8817, -1.7258, -2.5873, -20.1722,
344 22.205, 22.3808, 20.3781, 16.4796, 12.6684, 8.8562, 3.8726, -0.891, -3.6288, -4.2849, -3.4387, -1.6917, 0.1253, 1.9297, 2.5614, 1.1487, -1.7631, -3.8451, -4.6916, -4.6895, -4.3072, -5.2689, -7.0584, -8.3927, -8.7357, -10.2762, -11.8104, -13.7994, -14.0324, 5.754, 5.5094, 3.1104, 0.8059, 0.0318, -1.6334, -2.2746, -2.0707, -2.1335, -1.8766, -5.2228, -18.1315,
345 17.6753, 18.8195, 20.1357, 22.2056, 22.9569, 20.8704, 15.5249, 10.2701, 6.9749, 6.5302, 7.5814, 7.0271, 2.6959, -1.7891, -4.8427, -7.5373, -9.7567, -11.089, -11.6891, -11.88, -12.2196, -11.3183, -11.2853, -12.8185, -14.2184, -14.2772, -13.2856, -15.1315, -16.1298, 1.6839, 0.9589, 0.5363, 0.356, 0.0003, -0.3851, -0.4445, -0.1741, -0.4978, -0.0434, -1.9906, -19.7528,
346 16.983, 17.0052, 16.9926, 18.4021, 19.9925, 19.1283, 15.4081, 10.3401, 5.5724, 1.5019, -1.4332, -3.0065, -3.3422, -1.3956, 2.0439, 4.2794, 1.1281, -3.7178, -7.4632, -8.5376, -7.6364, -6.3039, -11.6545, -18.3967, -21.4453, -20.788, -16.5366, -10.0359, -7.0843, 11.0713, 4.6537, 0.5072, -0.3393, -0.6602, 0.5953, -2.0626, -2.4851, -3.0603, -3.5773, -4.6428, -20.8691,
347 17.7707, 19.5364, 20.6287, 20.9849, 20.093, 17.6674, 14.5484, 11.0817, 6.902, 2.2545, -2.3356, -5.7371, -8.9898, -12.8304, -15.5822, -17.0433, -18.8124, -19.7104, -19.4116, -18.1842, -15.3531, -8.7155, -0.1993, 4.7176, 5.4518, 4.7364, 1.7967, -2.2008, -3.0647, 15.041, 12.3154, 5.6659, 1.3689, -3.8672, -5.9083, -6.0931, -4.9235, -3.3736, -2.9423, -7.2832, -16.8582,
348 9.1549, 8.6933, 7.899, 7.7096, 7.5098, 8.0171, 9.241, 10.6919, 12.1971, 13.4831, 13.6508, 14.1654, 13.7371, 10.9089, 4.6506, -2.3217, -5.6454, -8.0201, -9.9057, -10.0159, -10.6042, -10.3898, -8.1978, -9.743, -12.7378, -17.4512, -17.2848, -13.59, -15.8022, 0.6882, 4.3643, 6.04, 2.5052, 2.9297, 1.4706, -1.9898, -0.8867, -4.2772, -3.045, -7.7994, -22.2645,
349 -7.8843, -6.8506, -6.0261, -4.4439, -3.8369, -1.9649, 0.3352, 2.3185, 3.0465, 3.3257, 3.554, 4.668, 3.7349, 2.5291, 2.4128, 3.779, 4.5682, 5.6219, 5.4149, 4.7479, 2.2185, -0.8515, -1.7161, -2.4559, -2.0632, -2.2051, -3.7165, -3.1032, -5.1569, 8.135, 6.3528, 5.3232, 1.0605, 1.2735, 0.2509, -2.2104, -2.9957, -3.4893, -2.5108, -11.1898, -12.1806,
350 19.3396, 19.941, 20.3727, 21.0809, 21.0327, 19.1352, 15.1028, 10.7594, 7.8609, 7.5499, 8.5005, 9.706, 9.1824, 5.3617, -1.3028, -5.6212, -8.2717, -9.5373, -9.7484, -8.8869, -7.1221, -9.045, -14.6697, -18.5948, -20.2891, -20.4076, -19.813, -20.1946, -21.4218, 1.2915, 0.6782, 0.3569, -0.0683, -0.483, -0.2926, -0.3937, 0.261, 0.1608, 0.1333, -1.644, -22.5256,
351 2.7246, 2.5148, 1.4831, 1.8238, 1.6121, 2.4035, 2.7381, 2.9387, 2.1358, 2.0826, 2.3275, 2.3406, 1.9098, 0.1135, -0.7424, -0.9928, -0.9805, -0.2098, 0.5803, 0.3688, 0.0187, -1.6561, -1.4168, -1.4577, -1.3632, -2.614, -4.7663, -7.0691, -6.8479, 2.3665, 2.3301, 1.9626, 1.0968, 1.9491, 1.1267, -0.1355, -0.0256, -1.2772, -1.4379, -7.9556, -8.3907,
352 4.529, 1.5249, 0.3659, 0.0056, 0.863, 3.3152, 1.1307, -3.3632, -4.3601, -3.7553, -5.0257, -5.6659, -5.3754, -4.9885, -4.3119, -4.9927, -6.0531, -10.2279, -4.3307, 2.1887, 3.8591, 8.8378, 4.5088, 3.9006, 4.9936, 11.1237, 3.014, -1.5171, 9.8068, 13.2445, 7.3306, 5.9252, 9.0687, 7.7216, 4.0675, 11.9777, 11.311, -23.2633, -23.8643, -23.5193, -4.4759,
353 22.151, 23.1727, 23.3097, 23.0639, 21.6223, 18.4164, 13.8969, 8.9695, 4.5053, 1.2957, -1.3036, -3.3247, -5.1402, -7.1172, -8.6948, -7.8753, -4.6461, -1.4461, -1.0227, -4.3094, -8.8842, -11.9962, -11.9234, -9.0257, -6.5369, -10.3321, -16.4292, -19.9706, -20.425, 2.3851, 5.8201, 6.5059, 3.9876, 0.333, -2.1429, -2.898, -3.4857, -3.4682, -2.4183, -4.6186, -20.078,
354 11.7456, 12.7989, 13.3162, 13.8312, 14.7779, 15.3799, 14.0233, 10.9089, 7.3194, 4.1768, 1.7992, 0.0512, -0.9458, -0.5202, 1.3786, 3.486, 2.0668, -2.392, -7.4022, -10.759, -12.9261, -14.3064, -12.7761, -8.6791, -8.3015, -10.8632, -13.2729, -14.2798, -9.6355, 15.8594, 13.6933, 9.1741, 8.4349, 3.8782, -4.9728, -8.7226, -9.3197, -9.3643, -8.7767, -9.8839, -22.469,
355 22.5139, 20.9546, 19.1373, 16.905, 14.6133, 12.3135, 10.2395, 8.4844, 6.951, 5.0069, 2.4662, -0.438, -3.5684, -7.0424, -9.9771, -11.1936, -9.88, -6.3251, -3.0189, -1.9735, -4.9442, -9.7372, -12.9352, -11.8709, -6.8801, -5.688, -9.6188, -12.4995, -11.9948, 12.0588, 11.2938, 8.1711, 2.396, -3.1587, -5.3733, -5.898, -5.622, -4.8347, -3.2857, -5.7474, -21.5935,
356 26.6734, 23.862, 18.347, 12.7193, 8.0473, 4.8602, 2.4155, 1.4627, 1.0558, 0.6193, 0.2671, -0.5986, -1.6798, -2.4678, -2.2065, -2.936, -2.8372, -4.0092, -4.438, -5.3046, -5.8491, -6.4148, -7.4157, -7.9456, -8.4776, -9.0352, -9.1998, -9.5061, -10.0078, 1.63, 1.341, 0.6385, 0.2013, -0.3629, -0.2927, -0.3661, -0.3133, -0.063, 0.4392, -2.852, -12.0787,
357 9.0155, 7.9133, 6.4106, 6.4968, 8.6477, 11.6576, 14.8601, 16.0323, 14.2529, 11.8653, 10.9041, 9.9373, 7.2309, 2.3059, -4.1636, -8.0163, -9.7982, -12.7129, -15.1421, -15.4797, -14.8005, -12.834, -10.4715, -5.856, -5.3611, -5.0344, -3.584, -5.3517, -8.924, 11.043, 4.7986, 3.1188, -0.3636, -1.4561, -1.9319, -2.5464, -2.3041, -2.3666, -3.0258, -4.9659, -22.6702,
358 9.0489, 10.4274, 10.5425, 10.8125, 12.0032, 13.7184, 13.0711, 9.6959, 5.4837, 1.6077, -1.9964, -4.4495, -7.8808, -10.2103, -11.6407, -11.4255, -9.7241, -7.5467, -3.5478, 1.8951, 3.5718, 1.5955, -0.5403, 0.5662, 0.2415, -4.3154, -9.5295, -11.0052, -10.4693, 11.1024, 7.2333, 6.1462, 4.3929, 0.7029, -2.0309, -3.7294, -5.1402, -4.8388, -4.6151, -9.2233, -21.2734,
359 11.5593, 10.342, 8.917, 7.7962, 6.0867, 5.9638, 3.8519, 0.4188, -0.7715, -1.3184, -1.5894, -1.6173, -0.5956, 0.0397, 0.998, 0.672, -0.2103, -4.0838, 0.9485, 2.7667, 1.7723, -0.8231, -4.4419, -7.1686, -8.5571, -4.2281, -12.0695, -12.5608, -2.0974, 7.0256, 2.5786, 2.8194, 7.2989, 5.3493, 3.5256, 11.6032, 11.1767, -16.6084, -17.8153, -16.9535, -14.6567,
360 24.2288, 25.1078, 25.3408, 25.2954, 24.689, 22.7229, 18.9908, 14.5853, 10.6023, 7.4918, 5.2132, 4.666, 5.1836, 5.0476, 2.8795, -1.3269, -6.117, -10.7585, -14.7563, -17.5071, -18.3274, -18.4398, -17.9983, -17.57, -18.5575, -19.775, -20.4184, -20.5476, -19.9453, 1.4677, 0.899, 0.5256, 0.5195, -0.193, -0.5086, -0.7678, -0.6113, -0.2499, -0.1187, -0.9625, -20.088,
361 1.3606, 0.3524, -0.4981, -3.0376, -5.4591, -5.1861, -5.3381, -7.9395, -4.6276, -1.6746, -2.1073, -1.772, 2.3082, 5.262, 5.3649, 4.6501, 3.6803, -1.4394, 4.494, 9.4882, 7.6591, 6.7428, -0.6196, -2.1749, -1.2855, 2.9511, -4.6673, -9.5251, 3.038, 18.0806, 14.1151, 9.121, 5.7949, 2.4151, -7.5054, 6.895, -0.4827, -16.5385, -16.07, -15.8252, -15.5778,
362 21.5243, 22.4067, 22.6543, 21.9383, 19.0581, 14.0232, 8.4188, 2.8494, -1.1924, -2.9917, -3.8222, -4.1823, -4.8633, -4.9565, -2.8338, 0.9516, 2.0941, -1.6445, -6.8552, -9.959, -11.1205, -11.0602, -8.6668, -7.9525, -10.6286, -14.095, -13.9349, -10.3116, -4.8478, 13.9994, 11.9398, 8.001, 4.2542, -0.6981, -4.9047, -6.1557, -6.5212, -6.7797, -5.8456, -7.2894, -17.9998,
363 13.8275, 13.6751, 13.2793, 13.1536, 13.5104, 14.6497, 15.6909, 16.1684, 15.2109, 12.8857, 9.6156, 6.423, 4.2876, 3.2525, 3.1015, 2.9273, 0.8232, -3.76, -9.4442, -13.3046, -15.6203, -16.1398, -14.4329, -11.4384, -11.9914, -16.0394, -20.1422, -21.4553, -18.7137, 9.9896, 6.0754, 2.5716, 1.2147, -0.1252, -2.8394, -3.5768, -3.1998, -3.2277, -2.5626, -4.3197, -26.1243,
364 1.0072, 1.0349, 0.4547, 2.0233, 3.1568, 3.6248, 2.6871, 2.1595, 0.3986, -1.1817, -0.8372, -0.4964, -1.131, -1.353, -1.2089, 0.5624, 1.6332, 2.6953, 2.6143, 2.1661, 1.0687, -0.5002, -1.863, -2.0422, -1.929, -2.0051, -4.7328, -5.7009, -2.3057, -9.2017, -9.126, -10.3545, -1.5749, 2.8548, 5.5584, 7.3199, 8.4704, 7.1113, 6.4743, -7.532, 8.8174,
365 22.3237, 20.1229, 16.3186, 14.9885, 15.806, 14.2422, 9.0206, 4.5767, 2.3692, 1.2439, -0.3609, -2.4418, -4.3713, -8.0945, -10.811, -9.9282, -5.6299, 1.8658, 5.9594, 1.6554, -4.8836, -8.0129, -7.8686, -4.1518, -10.8846, -16.3956, -17.6436, -10.8807, -8.1336, 8.1699, 0.1374, -2.1155, -2.7808, -2.5717, -2.5099, -1.4743, 0.402, 2.8792, 2.7754, -2.9117, -19.9846,
366 14.9448, 13.3235, 11.069, 7.797, 3.6467, 1.2905, -0.1418, 0.0865, 0.0848, 0.1249, -0.0042, -0.4006, -0.5457, -2.0216, -2.4005, -2.6631, -2.7574, -3.493, -3.6341, -4.853, -3.8008, -4.5467, -3.9983, -3.1834, -3.3005, -2.257, -2.3485, -2.8054, -3.2121, -8.3072, -10.2892, -11.0655, -7.2025, -2.5835, 1.3158, 3.9103, 6.1494, 8.7822, 9.4411, 9.849, 4.1623,
367 17.4109, 16.3957, 12.7323, 9.0568, 6.0296, 4.0628, 1.3809, -1.0636, -2.5917, -3.1282, -2.4806, -2.6332, -2.6331, -3.0197, -3.1246, -3.2078, -3.2369, -3.3087, -3.5259, -3.6952, -3.2777, -3.5126, -3.3483, -4.6082, -4.5229, -3.9702, -2.8815, -2.2298, -1.0686, 10.2492, 8.7238, 6.5287, 4.1319, 1.3909, -1.3457, -3.1912, -4.083, -5.8573, -5.7467, -10.8007, -10.7504,
368 3.681, 4.8086, 4.9739, 5.5677, 4.9032, 4.1256, 1.8122, 0.1556, -1.1456, -2.1369, -2.2315, -2.0785, -3.1848, -4.0677, -5.2026, -5.8769, -6.5043, -6.1685, -5.6023, -5.9105, -4.2511, -1.3453, 1.8335, 3.4033, 5.1448, 5.5509, 4.8678, 3.4921, 1.3864, 4.5899, 3.1561, 2.1086, 1.0104, -0.3847, -0.6586, -0.6429, -0.112, -0.4119, -0.3363, -8.3185, -3.2346,
369 3.1333, 2.2434, 0.566, -0.1689, 0.6551, 3.137, 6.4778, 9.1712, 8.4572, 6.33, 4.6298, 2.8657, 0.1787, -1.1319, -0.2827, 2.3196, 5.5007, 6.1676, 2.4317, -1.1696, -3.2988, -3.3141, -2.9589, -3.536, -5.2348, -8.6527, -10.1506, -11.6535, -12.7119, 12.8762, 10.2239, 6.7637, 2.0074, -1.9484, -4.8866, -5.3018, -4.5051, -4.3255, -3.6989, -7.2049, -23.9005,
370 8.622, 10.8825, 12.2872, 13.3601, 14.228, 15.3604, 14.9416, 12.814, 8.4375, 3.9118, -0.1235, -3.3572, -6.8491, -10.5514, -12.6045, -13.2373, -13.4285, -13.2888, -12.4858, -9.8652, -5.1267, 0.837, 1.7581, 3.1241, 4.135, -0.4102, -5.4532, -8.806, -9.1118, 14.9701, 12.4418, 7.1314, 0.5687, -6.407, -6.8941, -5.5568, -3.3084, -2.3663, -1.6449, -8.9346, -21.6106,
371 19.1182, 16.6713, 12.8335, 8.8739, 6.1759, 6.223, 7.5297, 9.2506, 9.4142, 7.8053, 5.9066, 4.3378, 3.9155, 4.5696, 4.9822, 3.2409, -0.8415, -5.8082, -9.1525, -11.0999, -12.9425, -14.8404, -14.6104, -11.5397, -8.3035, -9.3615, -9.7422, -9.9642, -12.6415, 4.2777, 1.5675, 1.0684, 0.6135, 0.0628, -0.5807, -1.1085, -1.0788, -0.8209, -0.6136, -3.3875, -20.5875,
372 0.8644, 0.924, 0.5001, 1.9751, 3.9631, 6.3687, 6.1077, 3.622, 0.7094, -1.0962, -1.8495, -2.7933, -4.0125, -4.8808, -2.1854, 1.6422, 4.3506, 5.1936, 3.1952, -0.0683, -2.2673, -2.2756, -2.5661, -3.5305, -3.3037, -2.7368, -2.4517, -1.7145, -1.6839, 4.7659, 4.9768, 3.8161, 1.7084, 0.2338, 0.0457, -0.5947, -0.8458, -1.4961, -2.2835, -10.3266, -8.0604,
373 22.8493, 23.0279, 22.4564, 21.783, 19.763, 14.2941, 7.4867, 2.4477, 1.1542, 1.702, 2.145, 2.1381, 2.9526, 3.5821, 3.514, 2.5293, 1.8263, 1.6906, -0.1177, -4.358, -9.4178, -13.6122, -17.0109, -18.1586, -18.2289, -17.0887, -18.0638, -20.2393, -21.0462, 1.905, 0.4924, 0.1429, -0.1603, -0.2972, -0.2106, -0.5323, -0.0051, -0.0488, 0.0713, -1.3573, -21.7449,
374 -5.0691, 5.7916, 20.3977, 33.7608, 20.5478, 6.3862, -0.6167, 2.4285, 7.7738, 0.648, -5.4985, -5.1477, -2.1058, -9.1202, -9.7561, -5.6897, -8.4994, -6.6489, -4.049, -6.39, -1.1222, -4.7105, -1.2435, -3.1404, -0.467, -1.2691, -3.2353, -6.3597, -7.5957, 2.6335, 2.9453, 2.3526, 1.7483, 0.5793, -0.6841, -0.692, -0.588, -1.6805, -2.0348, -4.5797, -8.0873,
375 27.8982, 26.1875, 22.3314, 17.8436, 13.657, 9.3782, 4.5001, 1.0587, -0.1319, 0.5334, 2.2176, 3.9007, 4.3904, 2.8784, -0.5056, -2.7187, -4.2442, -4.9618, -6.1501, -6.656, -6.3475, -6.6372, -7.4694, -9.822, -14.653, -16.2989, -16.6133, -16.9745, -16.5912, 1.5751, 0.2732, 0.392, -0.1605, -0.6644, -0.5397, -0.03, -0.1057, -0.0387, 0.4893, -1.1907, -17.7674,
376 4.0687, 5.1941, 6.0984, 7.7169, 8.4142, 8.8229, 7.325, 5.7734, 4.1436, 2.4793, 2.4633, 2.0981, 1.079, 0.0726, -0.0934, -1.1969, -2.7251, -3.5007, -3.7768, -4.1983, -4.436, -4.9365, -5.3239, -6.0842, -6.5913, -6.0399, -5.6196, -5.4516, -5.7753, 2.3864, 4.1318, 4.1698, 4.0758, 2.9462, 1.5278, 0.0907, -0.4889, -3.3101, -2.5223, -13.0073, -9.7421,
377 -2.5217, 6.6906, 18.938, 32.5385, 26.0727, 10.4378, 1.8923, 3.892, 11.1274, 10.8157, 0.2901, -2.1358, 1.8304, 0.111, -6.1198, -3.9839, -1.5639, -5.813, -5.0685, -6.2978, -9.356, -8.6952, -9.9906, -9.6668, -9.281, -8.9004, -9.6041, -12.9599, -12.678, 1.0846, 1.273, 0.8512, 0.3292, 0.2685, 0.1416, -0.4299, -0.2512, -0.6945, -0.7869, -1.7857, -11.2964,
378 9.0608, 8.3549, 5.9106, 3.0223, 1.5989, 1.4872, 0.5967, -0.7899, -2.0584, -2.6475, -1.994, -0.9341, -0.2649, 0.8782, 0.819, 0.7941, 0.2218, -0.275, -0.3771, -0.9402, -2.1665, -2.7001, -2.978, -2.6056, -1.981, -2.2466, -2.1946, -2.6591, -2.9316, 2.9882, 2.9231, 2.3934, 1.2468, 1.7808, 1.5958, 0.9538, 0.0307, -1.6679, -1.9384, -10.3063, -6.9292,
379 25.3209, 26.4747, 25.0162, 21.0118, 15.7497, 9.7187, 3.2049, -2.7534, -7.5484, -11.3498, -13.8939, -15.3292, -16.7275, -17.7766, -18.3047, -18.0188, -16.5419, -14.814, -11.1748, -6.2506, 1.1228, 5.4465, 3.3274, 4.0262, 6.8686, 6.7842, 4.545, 4.7788, 7.0872, 14.4073, 8.6959, 4.9137, 0.7333, -0.0689, -3.2729, -3.9427, -4.6901, -3.7843, -4.7606, -8.2309, -11.1556,
380 39.324, 35.158, 30.1649, 24.8807, 19.4559, 14.1503, 9.3376, 5.7395, 2.9171, 0.8743, -0.16, -1.561, -3.3663, -5.479, -7.0899, -8.1039, -8.6121, -9.3362, -10.6742, -11.7063, -11.8889, -11.631, -11.7325, -11.7388, -11.4894, -12.8703, -14.4784, -15.0647, -15.0195, 0.4215, 0.7196, 0.4543, 0.0332, -0.2347, -0.2869, -0.3136, -0.1185, -0.0711, 0.1485, -0.7523, -15.3163,
381 4.1198, 2.4046, -0.9207, -3.0537, -4.9411, -4.5132, -4.0855, -3.8951, -3.8661, -1.0021, 0.5493, 0.6922, -0.1138, -0.3066, 0.1108, -0.0251, 0.8424, 2.6646, 9.217, 6.3754, 2.4274, 3.211, 3.9376, 2.5394, 1.3314, 0.0248, -3.5589, -5.2404, -4.9255, -3.5255, -3.1009, -3.7604, -3.47, -2.8733, -1.9992, 0.5113, 3.0512, 5.1249, 4.8231, 5.219, -1.6532,
382 3.662, 2.9859, 3.004, 3.0506, 2.2625, 2.4007, 2.1773, 2.2676, 1.7231, 1.4288, 1.216, 0.5069, -0.1552, -0.1104, -0.1481, -0.3494, -0.2743, -0.5949, -0.9982, -1.2915, -1.7757, -1.8432, -2.05, -2.8592, -2.5411, -2.0302, -1.9641, -2.8754, -4.8244, 7.6823, 3.2328, -2.8255, -7.4261, -7.6683, -4.0922, -1.2719, 1.1834, 2.9852, 4.1242, 4.0762, -14.2392,
383 12.2682, 12.4958, 10.637, 8.6802, 6.1895, 3.3521, 0.012, -3.1196, -5.8915, -7.9346, -8.4726, -9.2365, -10.2529, -11.6156, -12.3872, -11.4245, -9.0191, -6.8545, -3.2918, -0.0972, 1.404, 0.7813, 2.7012, 7.4433, 10.4513, 8.1526, 4.822, 3.6293, 6.5779, 3.5887, 2.5442, 4.8598, 3.9894, 2.1825, 1.899, -1.1549, -1.3419, -2.5535, -1.8075, -12.206, 0.8433,
384 15.4243, 14.3712, 10.5979, 6.0053, 3.6236, 3.166, 2.6457, 3.0378, 3.3307, 2.9774, 1.6056, 0.6289, -1.2252, -2.5293, -2.5259, -3.3644, -3.2999, -2.9968, -4.1243, -3.1379, -4.5943, -5.1946, -6.5332, -5.4258, -4.3474, -2.458, -3.2897, -3.9496, -8.4184, 12.5953, 13.0978, 8.0807, 2.08, -3.4741, -5.6039, -6.0827, -5.2556, -5.1645, -4.3359, -5.937, -19.1939,
385 12.6031, 11.514, 9.5918, 8.9721, 11.2278, 16.3861, 18.3055, 15.2493, 9.3533, 5.1262, 3.409, 2.8449, 4.219, 7.3448, 7.1824, 2.1285, -4.7265, -9.0679, -11.7653, -12.9187, -12.377, -9.886, -9.0188, -10.4117, -12.4113, -14.1603, -11.834, -11.7956, -15.0847, 1.6333, -0.1749, -0.124, -0.2004, 0.4426, 1.4656, 0.2738, 0.7777, -0.0047, -0.2122, -3.8769, -21.6008,
386 15.7554, 16.8394, 17.1615, 17.2884, 17.403, 17.2657, 15.8921, 13.5652, 10.3715, 6.8406, 3.5351, 0.5517, -2.1632, -4.146, -4.2553, -2.4789, 0.2986, 0.953, -2.3858, -7.5703, -11.2229, -12.115, -10.5591, -8.6344, -11.4398, -17.0807, -20.6444, -20.9882, -18.0373, 8.3336, 5.5551, 2.471, 1.8701, 0.0297, -2.8652, -3.472, -2.9808, -2.8086, -2.1702, -3.9628, -24.3752,
387 27.9412, 27.2421, 22.9503, 16.5254, 9.6885, 4.5967, 0.6997, -3.4665, -6.6867, -7.8148, -9.1495, -10.061, -11.4055, -11.7392, -11.8813, -11.3038, -9.8795, -7.5418, -2.587, 4.6153, 3.8429, 0.5688, -2.8955, -0.2237, 1.9886, 1.7001, 1.8074, -3.1272, -14.4038, -3.8881, -2.8329, -1.6443, 1.8671, 3.1413, 1.8729, 0.1398, 2.8367, 0.3757, 1.7313, -3.5996, -13.385,
388 9.1831, 9.4128, 8.6344, 9.5797, 10.1063, 10.3011, 8.2263, 4.5395, 1.0974, -1.7556, -3.6105, -4.8265, -5.4684, -5.8802, -4.5931, -3.1888, -0.4075, 0.3805, -0.9063, -3.405, -4.9101, -5.9677, -5.8009, -5.0301, -5.4306, -6.4969, -3.081, -2.1162, 1.4143, -5.1355, -2.3496, -0.042, 3.9648, 4.8248, 5.4912, 2.045, -0.1732, 0.0828, 0.7502, -9.4585, 1.8224,
389 4.4588, 4.2389, 3.3197, 3.133, 4.0702, 5.7759, 7.7099, 9.0876, 11.1245, 12.651, 12.5527, 11.9764, 10.9501, 11.0837, 11.4805, 9.3639, 4.7521, -0.5944, -4.4402, -7.1309, -8.3207, -8.3043, -9.481, -12.7554, -15.5784, -17.8883, -18.8492, -17.9501, -16.4359, 5.8124, 3.4155, 3.383, 3.3147, 1.6832, -0.537, -2.7626, -3.1367, -2.1515, -2.797, -6.2238, -24.3008,
390 11.3859, 11.294, 10.4575, 10.5198, 11.2222, 12.7124, 13.5178, 13.4129, 10.5164, 5.9792, 2.3897, -0.1138, -1.9321, -3.1972, -3.142, -0.7773, 2.4075, 3.1154, -1.3266, -7.1228, -10.5939, -11.1307, -9.876, -7.3492, -6.6029, -10.8829, -13.8968, -15.3987, -15.5878, 8.9895, 6.7302, 4.3952, 0.2012, -4.6771, -5.1924, -3.7684, -1.4949, -0.4984, -0.067, -4.6178, -24.6307,
391 18.9158, 19.7886, 19.7526, 19.1358, 18.1177, 16.4664, 14.0122, 10.8818, 7.5481, 4.5462, 1.5367, -0.9445, -2.7129, -3.9653, -5.5016, -7.5102, -9.0864, -9.0742, -9.0767, -10.2313, -9.4105, -5.3027, -1.9268, -1.391, -3.5726, -10.4635, -17.0711, -22.1873, -21.273, 5.4315, 7.4977, 3.9877, 0.2418, -1.1556, -2.9339, -2.8218, -3.2557, -2.2125, -0.425, -4.3542, -22.8328,
392 28.1526, 28.1117, 24.7174, 18.3759, 10.6219, 2.4804, -4.1378, -7.4788, -9.3437, -10.849, -12.5556, -14.1384, -15.1322, -15.0182, -14.614, -14.5304, -14.2862, -13.9234, -11.7259, -8.2717, -1.7653, 6.2167, 7.1311, 7.8239, 8.7319, 8.2789, 7.6074, 7.1853, 2.3358, 3.7971, -0.5557, -1.9296, -2.2395, -1.0081, 1.6256, 1.1217, 0.2632, 1.4311, 1.1466, -3.6525, -7.2238,
393 -1.9896, -1.5846, -1.1882, -1.5851, -4.5749, -6.7021, -4.694, -3.5898, -2.8275, -4.0926, -5.1006, -4.1183, -4.9559, -5.2145, -6.9309, -7.9964, -7.8043, -5.1453, -1.8211, -0.6339, 3.5622, 6.5139, 7.8184, 9.0948, 11.5264, 11.4601, 10.4022, 10.4535, 11.7185, -9.6611, -13.7925, -13.7882, -6.6479, -2.4133, 2.1029, 4.5429, 8.2581, 9.4338, 9.8315, 12.1338, 18.9608,
394 29.0162, 27.1449, 23.5731, 20.2452, 17.511, 14.7918, 12.0251, 9.1599, 6.0664, 3.8158, 0.8485, -1.4407, -3.2916, -4.0983, -4.397, -4.3435, -5.263, -7.1322, -9.5766, -10.6471, -11.1044, -11.3079, -11.3508, -11.6324, -11.9889, -12.9298, -13.9392, -14.6929, -15.0614, 0.4975, 0.3394, -0.0827, -0.4799, -0.4676, -0.3009, 0.0384, 0.1607, 0.4964, 0.5891, -0.7905, -17.1701,
395 8.4713, 7.5563, 6.3767, 6.1947, 6.0689, 6.3779, 4.9213, 3.5036, 2.5255, 3.0901, 4.1254, 6.3043, 8.3238, 9.4464, 9.317, 6.566, 2.2721, -0.8163, -4.484, -7.0774, -8.1734, -9.5687, -10.5231, -10.5767, -10.2078, -10.4331, -9.7161, -9.9741, -9.8905, 3.2535, 1.2694, 0.1807, -0.6651, -1.0284, -0.5802, 0.6037, 0.3968, 0.3279, 1.2972, -5.0555, -13.8489,
396 8.3726, 8.7329, 8.5586, 8.5134, 8.7002, 9.8765, 11.6676, 13.2674, 13.5452, 12.0942, 10.0691, 7.6401, 4.866, 2.868, 2.7547, 3.9563, 4.9074, 3.0494, -2.0753, -8.4742, -13.384, -15.824, -17.8178, -16.4808, -10.6391, -9.9987, -14.2994, -17.06, -17.3864, 10.6631, 9.4847, 5.5492, 1.305, -3.107, -4.8971, -4.8382, -4.5691, -2.3532, -2.1714, -5.066, -26.2617,
397 19.0595, 18.3832, 15.9029, 12.653, 10.0486, 8.156, 6.2927, 4.3924, 2.8935, 2.2985, 1.7559, 0.7258, -0.7293, -3.1142, -3.953, -4.8127, -4.7935, -5.2925, -6.6673, -7.3117, -8.4213, -8.8278, -9.24, -8.0623, -7.4252, -7.1006, -5.9527, -5.3881, -5.4699, 10.5325, 9.0445, 4.9973, 0.1331, -3.2907, -4.1662, -4.1984, -3.1495, -2.7117, -2.1058, -5.085, -17.2009,
398 52.2372, 44.3578, 36.5608, 28.9176, 21.5115, 14.4397, 7.8187, 1.8482, -3.252, -7.1355, -9.4888, -11.6207, -13.4063, -14.7098, -15.4667, -15.9341, -16.1369, -16.0366, -15.3538, -13.7588, -10.6277, -7.7814, -6.1144, -5.0819, -4.0409, -3.936, -4.9781, -5.9562, -6.8747, 3.7022, 1.466, 0.4111, 0.137, -0.3542, -0.1182, -0.112, -0.5566, -0.7197, -0.2876, -3.568, -11.6568,
399 18.5298, 18.5912, 18.1337, 17.486, 16.8943, 16.3587, 16.0594, 15.4122, 13.4402, 10.4256, 7.3367, 4.652, 2.5497, 1.6836, 2.6521, 4.205, 4.7439, 1.2637, -5.1624, -11.963, -16.836, -19.069, -18.8984, -17.4618, -16.1587, -17.2824, -20.6892, -23.3973, -23.4997, 3.2388, 3.5069, 1.9919, 0.0447, -0.5876, -0.7419, -0.9096, -1.1897, -1.237, -1.2266, -2.8899, -24.3059,
400 14.2216, 15.1107, 15.4424, 14.9543, 12.7476, 8.8407, 3.8349, -1.225, -5.2339, -7.6335, -9.5259, -10.5663, -11.348, -10.711, -9.3182, -6.6849, -3.0625, 0.0032, 2.0229, 0.5151, -0.5651, -0.4048, 0.5255, -0.7083, -2.6478, -3.1557, -2.5836, -2.0039, -0.8405, 3.7139, 1.8811, 2.0645, 2.2576, 1.8972, 2.7893, 0.9195, -0.0976, -1.1232, -2.5385, -11.7639, -9.8006,
401 27.6767, 26.3073, 23.1657, 18.9402, 14.2694, 9.6933, 4.9155, 1.3429, -1.0736, -2.1647, -2.4791, -3.7245, -5.2366, -7.8495, -9.6757, -10.3534, -9.9166, -8.3142, -6.6376, -3.953, -4.0753, -4.3093, -3.5187, -3.901, -5.2935, -7.7755, -9.0692, -8.273, -8.7168, 5.8445, 3.8687, 2.4179, 0.0649, -0.8031, -1.3677, -1.4763, -1.6757, -1.5716, -1.57, -3.7316, -15.598,
402 7.4225, 6.3812, 4.2676, 2.9128, 1.8225, 2.633, 3.2026, 3.4899, 4.3798, 5.0782, 4.0849, 3.8689, 3.6113, 4.5683, 5.8542, 4.5947, 0.2532, -3.2821, -6.4774, -7.465, -7.9861, -7.4196, -6.0622, -5.4357, -5.0398, -5.4225, -4.6902, -3.4197, -5.7249, 10.3884, 8.1074, 7.3911, 3.6782, 0.8704, -2.0339, -3.8319, -4.9728, -4.3725, -5.2689, -9.9555, -15.7366,
403 17.5213, 20.443, 21.919, 22.2701, 21.3171, 18.9687, 14.6306, 9.0767, 3.5198, -0.8778, -4.3458, -6.9865, -9.548, -11.142, -12.3506, -13.4175, -13.6194, -14.0717, -13.7947, -12.3999, -9.1656, -3.9176, -0.2193, -1.5457, -4.1719, -2.7467, -2.4932, -5.3995, -7.4528, 7.1434, 7.0238, 7.2627, 6.798, 5.2527, 1.0139, -3.4114, -6.523, -7.8521, -6.8412, -9.8668, -15.3691,
404 23.8876, 22.5517, 20.2028, 18.0102, 15.3733, 12.6542, 9.101, 5.3097, 1.3988, -1.1554, -2.5833, -3.9593, -5.0937, -4.9268, -4.3385, -4.0356, -4.4731, -5.2411, -5.8573, -6.0798, -6.4837, -6.6593, -7.293, -7.7787, -8.422, -9.5983, -10.7066, -11.6689, -12.1349, 1.8395, 1.5059, 0.7809, 0.7822, 0.3229, 0.0573, -0.1778, 0.0288, -0.5032, -0.4347, -4.2018, -15.0448,
405 13.9062, 13.1904, 12.429, 13.6194, 15.2333, 15.2034, 12.0474, 7.3708, 3.009, -0.0473, -1.0773, -1.4032, 0.0264, 2.8347, 3.5334, 0.2574, -4.8606, -8.499, -10.3461, -10.2062, -9.1724, -6.5298, -5.6943, -9.5272, -11.1766, -10.7021, -7.7752, -7.2838, -8.3598, 9.0389, 8.3462, 5.7086, 0.2994, -0.2224, -1.6621, -3.2697, -3.1981, -3.4783, -4.1342, -7.4282, -20.6505,
406 -0.1956, 12.8891, 25.959, 29.2372, 11.9659, 3.6545, 1.9759, 11.5615, 8.2666, -2.4823, 2.1238, 10.6975, 3.0083, -5.1305, 2.5407, -3.5456, -5.3431, 1.0377, -4.8653, -4.1095, -8.9872, -10.0069, -10.663, -10.8153, -10.0788, -9.9282, -11.0117, -13.4387, -14.316, 0.9647, 0.5126, 1.4038, 0.7744, 0.0988, -0.4577, -0.1039, -0.1823, -0.4661, -0.3208, -2.2235, -13.2318,
407 25.9629, 27.1177, 27.848, 28.135, 27.2179, 24.6308, 20.83, 16.5838, 12.6784, 8.6134, 4.1825, 0.4406, -2.7846, -5.2345, -6.7282, -7.9739, -9.5601, -11.2902, -13.5857, -15.5917, -16.3027, -16.6819, -16.4912, -15.9456, -15.775, -16.835, -17.5886, -18.0613, -17.8109, 1.0702, 0.8294, 0.1689, 0.5813, -0.0091, 0.1284, -0.3058, -0.7039, -0.552, -0.2521, -0.9553, -17.8347,
408 28.3817, 26.3242, 22.4988, 18.1016, 13.8114, 9.4292, 5.2503, 1.4133, -1.6541, -2.4802, -2.4725, -3.0842, -3.4601, -3.8401, -3.4525, -2.3946, -2.6693, -1.6244, -0.8581, 0.9642, 0.0547, -3.6789, -8.6927, -12.3146, -14.172, -14.6132, -14.5422, -14.6064, -15.6195, 1.2358, -0.1021, -0.4812, -0.1634, -0.1968, 0.6015, -0.1027, -0.0844, -0.0133, 0.251, -0.9445, -16.6483,
409 14.8559, 14.2769, 13.3144, 13.4636, 14.521, 15.1971, 13.3361, 10.1599, 6.7908, 5.5468, 6.0091, 7.5005, 8.7471, 7.3385, 1.8761, -2.5391, -5.4603, -7.6289, -8.7381, -8.1046, -7.0789, -6.1772, -7.8795, -11.4586, -14.0732, -15.6269, -16.7078, -19.9955, -21.4649, 1.8161, 1.8568, 0.796, 0.3224, 0.4841, -0.7227, -0.9581, 0.3734, -0.1277, -0.0325, -3.8078, -24.4035,
410 5.4535, 4.296, 0.7585, -1.6071, -2.7931, -2.2472, -2.8178, -3.1626, -2.5628, -1.3912, -0.366, 1.6795, 4.203, 6.4164, 7.0674, 7.5227, 7.0796, 4.9076, 4.3543, 2.9287, -0.1541, -2.4266, -4.0876, -4.9944, -4.2282, -4.2178, -6.484, -7.8159, -5.3111, 9.2246, 8.2902, 7.184, 5.6544, 4.317, 2.1934, 1.5215, -2.4633, -8.8855, -12.3322, -14.7039, -13.9292,
411 9.098, 9.2332, 9.0227, 7.89, 7.2001, 9.306, 12.746, 15.4304, 15.0788, 11.5632, 8.2993, 7.2707, 8.2449, 10.9986, 9.5064, 3.6569, -2.3332, -7.1688, -8.9599, -9.8137, -8.1433, -4.6312, -6.5469, -11.9994, -16.1445, -17.53, -16.182, -19.8515, -25.2405, 0.4708, -0.3092, 0.2379, 1.4804, -0.1717, -0.9282, -1.5045, 0.4378, 1.4582, 0.6172, -1.7888, -27.118,
412 30.5921, 29.7607, 27.5057, 24.3076, 20.267, 15.1816, 9.3486, 3.1611, -1.4937, -4.0966, -4.8189, -4.992, -5.0548, -3.9493, -2.766, -2.8294, -4.1521, -6.8587, -8.9405, -9.3227, -7.2576, -3.2574, -2.6669, -7.8789, -12.9388, -16.4992, -17.2553, -16.5402, -16.5552, 0.5625, 0.3502, 0.0083, -0.184, -0.6199, -0.4748, -0.2997, -0.1545, 0.4846, 0.8919, -0.5646, -16.4454,
413 14.8981, 14.8814, 13.6043, 11.5145, 9.5013, 6.6072, 1.92, -2.184, -4.25, -5.6701, -6.3798, -6.5602, -7.0938, -7.2697, -4.0665, -0.3509, 2.6024, 2.4125, -0.1554, -3.0971, -4.9214, -6.2652, -5.4681, -4.3507, -3.9793, -4.8021, -2.3819, -1.6978, 3.0025, 2.862, 3.2617, 6.8021, 5.2352, 3.3376, 0.5084, -1.9352, -2.2484, -1.4495, -1.6734, -14.7006, -2.2554,
414 19.3171, 19.5822, 19.1016, 18.4606, 17.7886, 17.3421, 16.7071, 15.2413, 12.1252, 7.557, 2.4543, -2.6968, -6.6532, -9.4513, -11.1611, -10.7979, -8.4551, -5.851, -3.975, -5.4484, -8.6775, -10.2725, -9.6723, -8.111, -6.9238, -9.5412, -14.0157, -16.8585, -17.1147, 6.4595, 5.2042, 2.6176, 0.4543, -1.5212, -2.1299, -2.1223, -2.0336, -1.9001, -1.436, -3.5925, -21.8904,
415 10.0554, 11.4918, 12.0024, 11.9869, 11.4982, 10.7952, 8.7236, 5.9738, 2.4552, -0.5185, -1.8366, -4.1108, -5.5111, -6.6353, -6.8364, -7.097, -6.1121, -5.4311, -4.4856, -3.253, -4.1916, -5.5562, -5.6815, -5.4794, -4.5844, -3.0317, -1.607, -1.6034, -1.4198, 6.0457, 6.4584, 6.3816, 6.2004, 3.9293, 1.7377, -2.4799, -5.0585, -4.1685, -5.2278, -13.8183, -8.6957,
416 5.1528, 4.1179, 3.0625, 2.9843, 1.9679, 0.9714, 1.4744, 4.4833, 5.5293, 4.703, 3.5767, 3.8031, 1.7543, -1.0533, -1.2774, 0.957, 5.1278, 5.59, 4.5922, 0.5748, -5.0484, -6.9525, -6.3139, -9.2098, -9.0484, -9.2166, -5.0713, -4.7295, -2.5016, 10.5692, 7.5278, 2.2517, 0.6253, 2.9159, 0.5499, -2.4843, -3.578, -4.6422, -4.8638, -8.8714, -13.879,
417 18.7418, 15.9185, 12.8438, 10.204, 7.5183, 6.1018, 4.7206, 3.9908, 3.3693, 2.4047, 1.441, 0.1504, -0.1335, -0.4013, 0.1702, -0.4796, -1.4923, -3.1582, -4.6899, -4.8726, -5.5428, -6.5059, -7.1643, -7.5192, -7.9222, -8.7815, -9.429, -9.6309, -9.8521, -0.4363, -0.6716, -0.6321, -1.0615, -1.3192, -0.9262, 0.103, 0.7901, 1.5962, 2.2939, 0.2637, -10.2983,
418 35.3923, 32.3026, 26.5029, 19.6975, 12.6365, 5.9222, 0.137, -3.8927, -5.9336, -6.6867, -6.9777, -6.7865, -6.2733, -4.3479, -3.5674, -3.6341, -3.7323, -5.0584, -6.319, -6.1046, -4.6307, -4.8921, -3.7741, -3.8037, -7.6419, -9.4026, -9.7867, -9.3143, -10.0304, -0.3209, -0.8025, -0.7882, -0.9161, -0.6206, -0.3729, 0.2723, 0.9229, 1.0626, 1.2478, 0.3157, -11.3279,
419 15.1154, 17.2376, 18.5113, 18.6287, 17.8606, 16.0374, 12.387, 7.3049, 2.2274, -1.2547, -3.4619, -4.9984, -7.5019, -10.3433, -11.986, -13.4479, -13.9092, -13.7812, -13.8196, -12.9157, -11.1559, -7.187, -2.1572, 1.9368, 1.9384, 1.8602, 1.894, -1.4092, -3.6107, 13.969, 15.4855, 13.978, 10.9462, 5.3217, -5.087, -10.7886, -11.2651, -11.1873, -9.5973, -11.775, -16.726,
420 18.2228, 18.4615, 17.4249, 17.1396, 16.6125, 14.4185, 10.8568, 8.6164, 6.3579, 5.237, 3.856, 1.9252, -0.6359, -4.275, -5.1889, -6.7505, -7.9919, -9.0778, -10.1, -9.9142, -8.7383, -6.1658, -3.7111, -6.176, -9.8971, -12.5047, -12.7338, -12.8872, -12.3808, -0.813, 0.6976, 0.3804, 0.6457, 1.5482, 2.4749, 3.0413, 2.8395, -0.4708, -2.7284, -7.6154, -15.6555,
421 6.0325, 10.0051, 11.3341, 12.3589, 13.89, 16.1481, 16.3116, 12.7566, 8.9105, 7.2557, 4.4785, 2.2316, 0.9797, -0.6614, 0.5661, 4.8341, 6.5458, 3.6213, -1.1381, -4.3272, -5.4198, -6.5113, -7.7865, -12.3725, -19.933, -25.0176, -17.8042, -15.8364, -21.4525, -3.1483, -3.2143, -0.2635, 8.5907, 13.2637, 6.6922, -2.8514, -3.6166, -4.6591, -4.9686, -5.8249, -25.4194,
422 17.3207, 17.7695, 17.5402, 17.0035, 16.5266, 15.9285, 14.7115, 13.0615, 10.7412, 7.7296, 4.597, 1.7062, -1.0815, -3.0472, -3.6756, -2.2649, -0.4084, -0.9339, -5.2361, -10.6763, -14.8835, -17.2271, -17.8907, -15.6384, -10.4668, -8.4525, -11.8808, -15.4044, -15.4675, 8.8476, 9.5703, 6.9625, 3.109, -0.1253, -3.622, -4.8452, -5.4253, -5.054, -3.4938, -5.9236, -22.7477,
423 18.232, 19.5978, 19.719, 18.7548, 16.3427, 13.615, 10.6951, 8.6087, 5.9251, 3.1428, 1.8336, 0.1222, -0.3161, -1.8892, -3.4565, -4.4788, -4.1025, -3.7501, -4.9649, -7.4742, -8.6908, -9.9373, -10.883, -11.3028, -11.4257, -11.5192, -12.7474, -14.6156, -15.0348, -8.1772, -8.1988, -6.2878, -4.971, -3.0389, -0.0545, 3.6911, 6.8598, 7.3721, 8.3424, 4.4628, -8.8778,
424 13.8589, 12.2371, 9.8247, 7.6249, 6.1891, 5.8925, 4.1202, 1.8072, 0.1905, -0.9244, -0.4689, 0.1547, 0.5703, 1.3955, 2.047, 2.6142, 1.4776, -0.3379, -2.6582, -5.2107, -5.8303, -6.1283, -6.7972, -7.3151, -7.5206, -7.3966, -7.0187, -6.1092, -6.2882, 2.8357, 1.3808, 1.5156, 0.8705, -0.2752, -0.1447, -0.1738, -1.0712, -0.4308, -0.502, -4.005, -11.046,
425 25.9341, 27.732, 28.2232, 27.7876, 25.5774, 21.4281, 15.8329, 10.0447, 4.4219, -0.7932, -4.9567, -7.948, -9.7086, -10.7951, -11.8434, -13.0235, -13.3873, -13.9249, -14.4275, -14.4362, -13.1477, -10.3022, -6.8516, -4.3801, -3.0535, -2.9543, -6.5274, -11.658, -12.8631, 5.4748, 4.2973, 2.0928, 0.3859, -0.05, -1.0781, -1.5335, -2.0293, -2.087, -2.0482, -3.4246, -15.9155,
426 12.5611, 14.6864, 16.3579, 17.9048, 19.1559, 20.0003, 19.3273, 16.6175, 11.9366, 7.1513, 3.6125, 1.1772, -0.676, -2.6536, -3.6769, -3.9465, -1.4534, 2.8613, 3.1405, -2.9573, -11.3536, -17.9162, -20.1933, -20.5787, -18.1872, -12.946, -11.7495, -17.2172, -20.9852, 3.0886, 4.0379, 3.6614, 1.7858, 1.8672, 1.0455, -1.0249, -2.3716, -3.3037, -4.0002, -4.786, -22.6731,
427 6.3873, 6.0538, 5.2554, 4.7605, 3.7352, 4.0478, 3.0878, 1.1603, -0.41, -0.4842, 0.3498, 0.7144, -0.2324, -1.6604, -3.0147, -3.2036, -2.2852, 0.45, 5.1996, 6.1851, 1.9002, -1.2909, -2.8734, -4.709, -4.8637, -4.9906, -6.0915, -6.1561, -7.0214, -0.4395, -0.6291, -0.8046, -1.1373, -1.0367, -1.1976, -0.5358, 0.8614, 1.5251, 2.7259, 0.6681, -8.1549,
428 6.4678, 24.1453, 28.3564, 16.3768, 0.9487, 6.1492, 9.9337, 5.7837, 0.7687, 2.7379, 7.4627, 2.6615, 2.1447, -1.7243, -4.9079, -3.6716, -5.126, -1.3976, -1.3562, -1.3187, -5.1578, -9.3517, -9.8801, -10.0344, -8.5754, -9.5176, -12.9621, -14.5277, -14.4277, 2.6144, 2.0177, 2.0939, -0.3296, 0.2968, -0.6507, -0.6394, 0.0217, -1.9957, -0.1306, -3.2985, -14.8655,
429 12.551, 12.4285, 11.8955, 12.7578, 16.9371, 21.2938, 20.7903, 16.7803, 12.6688, 11.7788, 11.63, 7.3846, 0.3301, -5.6353, -9.1568, -12.4924, -14.5919, -16.295, -17.9481, -16.1853, -15.7323, -12.4489, -10.0349, -7.7045, -8.7699, -6.9254, -3.1598, -3.0985, -9.0472, 7.8424, 3.8265, 0.9376, -0.6967, -1.1188, -1.5694, -1.9503, -0.6167, -1.4541, -2.2369, -2.9635, -21.8681,
430 15.6754, 16.7432, 16.5153, 12.3311, 4.2455, 0.205, -0.6894, 2.1431, 4.3595, 7.572, 9.8733, 9.2508, 5.8913, 2.6955, 1.6669, 2.5024, 2.1823, 0.5005, -4.3623, -8.712, -8.4826, -7.8486, -12.0698, -13.3968, -11.9915, -10.9867, -12.2995, -11.0273, -12.4867, -2.7836, -4.412, -5.1131, -4.1277, -2.4732, -0.972, 1.3438, 3.6062, 4.7125, 5.6821, 4.537, -11.9,
431 22.3286, 23.0046, 23.0498, 23.5807, 23.1994, 18.4599, 10.9563, 4.0795, 0.4966, -1.421, -3.5925, -5.4787, -5.7217, -4.6302, -2.1947, 3.6628, 9.53, 10.8217, 9.1886, 2.5031, -8.0477, -14.9331, -18.4387, -19.9305, -20.4501, -20.2597, -19.9758, -19.4479, -20.3392, 1.1842, 0.4014, 0.0219, -0.1675, -0.5484, -0.3769, -0.3371, -0.0928, -0.0308, 0.3091, -0.3631, -21.5338,
432 21.9984, 23.9238, 25.3357, 26.4343, 26.0313, 22.5182, 16.6027, 9.8676, 5.2339, 2.4325, -0.1466, -2.8415, -2.8856, -0.9913, 3.1553, 6.9975, 6.7848, 4.8021, -2.7887, -13.1318, -18.6046, -20.0234, -20.0047, -19.9587, -19.6763, -19.9132, -20.3439, -20.4619, -20.3457, 1.2714, 0.3555, 0.0928, -0.1438, -0.1909, -0.1061, -0.2499, -0.3508, -0.1985, -0.175, -0.3048, -19.6659,
433 -0.2567, -0.2113, -0.8684, 0.4465, 3.3786, 5.2759, 2.6214, -1.2665, -3.2281, -4.9538, -5.9464, -5.0624, -5.8449, -5.2078, -4.5607, -2.446, -0.3193, 2.4345, 5.491, 8.175, 9.787, 9.0613, 6.6768, 1.8115, -0.9513, -2.1611, -3.707, -3.7433, -4.4246, 0.1631, 2.1256, 4.6102, 5.3221, 6.3935, 4.7668, 3.6937, 3.2175, -0.8613, -8.2952, -21.136, -6.1298,
434 3.8793, 4.4914, 2.0392, 1.3477, -1.0271, -0.6639, 0.1117, -1.7816, -3.233, -2.324, -1.7798, -3.8111, -6.4867, -7.2086, -6.2062, -8.1286, -2.5, 3.355, 12.4119, 16.8546, 9.9403, 10.7928, 11.849, 6.7929, -4.703, -7.2697, -8.7835, -9.4026, -8.5564, -1.174, -2.4092, -2.9332, -3.4178, -3.5228, -2.2895, -0.328, 1.5973, 4.164, 4.8094, 5.5038, -5.9517,
435 55.6246, 47.8318, 40.1222, 32.5666, 25.2478, 18.2625, 11.7233, 5.7654, 0.6757, -2.9249, -4.9251, -6.7338, -8.2843, -9.4091, -10.0166, -10.5275, -11.0842, -11.8508, -12.6565, -13.2845, -13.4392, -13.4505, -13.5945, -14.13, -14.9588, -15.832, -16.5919, -17.0696, -17.0561, -0.1692, -0.1054, -0.1641, -0.3548, -0.4054, -0.2499, -0.1197, 0.3574, 0.6137, 0.729, -0.1316, -16.1029,
436 28.348, 28.4457, 26.9174, 24.2222, 20.0737, 14.3497, 7.6659, 1.6711, -2.293, -4.4091, -5.0514, -3.9119, -1.1398, 2.5446, 4.7855, 3.9543, 0.0941, -4.3143, -7.576, -9.0354, -10.4294, -11.217, -12.2003, -12.8513, -13.7072, -15.19, -16.7728, -16.6535, -16.3197, 1.689, 1.2293, 1.498, 1.02, -0.3583, -0.7205, -0.7464, -0.7978, -0.7991, -0.4289, -1.5854, -17.0352,
437 7.1738, 5.876, 3.417, 2.3215, 1.3711, 0.544, -1.4461, -3.1488, -4.5999, -4.7859, -4.3101, -4.0022, -3.9658, -3.1268, -2.0884, -1.4297, -0.0002, 0.9577, 1.567, 1.5085, 1.0721, 0.3227, 0.511, 0.7323, 0.8496, 1.7441, 0.7228, 0.7656, 1.447, -8.6193, -7.2247, -5.3667, -3.5827, -1.8357, 0.6166, 4.1585, 4.9638, 7.0248, 8.8447, 1.0209, 8.4769,
438 -0.7467, 0.3554, 1.8709, 0.8731, -1.4638, -3.343, -6.6672, -9.5951, -10.4012, -10.6421, -11.0116, -11.8429, -12.2455, -11.7931, -7.9381, -3.6179, 4.3015, 10.3005, 10.2729, 5.6096, 4.179, 4.6704, 9.5416, 5.1426, 3.2307, 6.6932, 7.397, 11.6314, 15.2383, 14.9214, 12.3993, 10.3175, 9.4781, 6.529, 0.7143, -6.7843, -12.1011, -12.5497, -11.0634, -11.8611, -4.9295,
439 8.9473, 8.9587, 8.3247, 7.7486, 7.2645, 6.8446, 6.7225, 7.4361, 8.0756, 8.3721, 7.8521, 5.8385, 3.2013, -0.0003, -2.2581, -3.0372, -2.3326, -0.4339, 2.2803, 1.7881, -3.0603, -8.5789, -12.0665, -11.7987, -9.2546, -6.5489, -9.3084, -14.6968, -16.2796, 11.5926, 10.477, 8.8581, 8.3385, 5.311, -2.0531, -7.544, -8.5312, -8.7087, -8.2386, -9.5016, -25.9443,
440 17.7853, 20.4425, 22.0494, 22.6794, 21.5241, 17.2874, 10.6686, 4.0415, -0.8452, -3.3573, -4.8317, -6.2098, -8.0414, -10.4109, -12.4433, -13.6668, -13.5852, -12.5998, -10.4309, -6.2165, -0.7444, 0.8686, -2.2118, -2.8842, -0.1978, -1.0432, -7.6768, -11.1308, -8.8188, 14.1142, 12.1567, 7.0646, 6.3108, 1.5813, -5.6339, -6.7414, -7.8081, -7.7366, -5.6857, -7.6219, -18.4403,
441 10.4095, 10.1666, 9.2271, 8.086, 6.4145, 4.2188, 0.0306, -2.2509, -4.0464, -2.5048, 0.7199, 3.4238, 3.2446, 1.8968, 2.3554, 2.4242, 1.5237, 2.3494, 4.0741, 2.8937, -1.4622, -5.2927, -9.7781, -9.2472, -7.305, -3.6229, -4.1228, -9.1846, -14.6411, 8.1502, 5.2313, 1.058, 1.4879, 3.7251, 2.9439, -0.5626, -1.1335, -5.4441, -3.6896, -11.7665, -16.0896,
442 16.3683, 15.7368, 14.0789, 11.8221, 8.6363, 4.8193, 0.7944, -2.5033, -4.2969, -5.1383, -5.1385, -5.8567, -6.7831, -7.2715, -6.194, -4.4484, -2.8402, -2.2612, -2.0718, -1.0756, 0.0928, 1.1543, 1.4991, -0.3, 0.0566, -0.6778, -3.4172, -5.3252, -9.4588, 11.6386, 8.1885, 3.6288, -1.2989, -3.6855, -3.9476, -4.1335, -3.4808, -2.6249, -1.8682, -2.4166, -19.6188,
443 9.9289, 9.2679, 7.9267, 8.7379, 10.9513, 13.7239, 14.8623, 12.3233, 7.4753, 3.3088, 0.9949, -1.1257, -2.9647, -3.3198, -1.5514, 1.8208, 1.1498, -4.6271, -7.9003, -10.0749, -11.1748, -10.0605, -6.3035, -5.8941, -7.6734, -10.1071, -9.5489, -6.0056, -4.14, 9.5365, 2.656, 3.6743, 6.2251, 4.9344, -1.5821, -4.9354, -4.9959, -4.249, -3.3389, -7.9251, -19.9895,
444 15.7601, 15.5371, 14.5879, 13.6852, 13.7329, 14.2619, 14.5602, 14.105, 11.9855, 9.0424, 5.9338, 2.9248, 1.1175, -0.2175, -0.4564, -0.8056, -2.8269, -5.9252, -9.3719, -12.1962, -12.8615, -12.521, -10.3147, -10.3071, -11.7171, -13.5357, -14.5158, -14.3799, -15.2819, 0.2685, -1.1025, -1.4893, -1.4317, -1.3748, -0.8857, -0.0388, 0.9292, 2.3295, 3.5114, -0.7158, -18.7537,
445 10.0771, 10.8307, 10.8465, 11.7532, 13.7152, 14.8042, 13.3142, 9.3177, 4.2443, -0.137, -2.8245, -4.9084, -6.2428, -7.4346, -7.1199, -4.5048, -0.3499, 3.4684, 5.2923, 2.9229, -0.3932, -2.4266, -2.9696, -4.8989, -8.2386, -13.2276, -16.6579, -16.3335, -11.9188, 12.1564, 11.5591, 10.1368, 8.7589, 4.6074, -3.2222, -8.3162, -9.1139, -8.8367, -7.9752, -9.7544, -23.1025,
446 11.5053, 11.7027, 11.7371, 13.2093, 15.2251, 15.5948, 12.9282, 8.237, 4.0626, 1.5654, 0.2206, -0.6203, 0.1854, 2.0975, 5.0249, 6.2795, 5.603, 2.918, 1.3161, -0.0224, -2.9425, -5.8601, -7.8659, -9.4742, -11.962, -17.3077, -22.0414, -24.853, -26.4631, 0.6245, 0.843, 0.7564, -0.0344, 0.186, 0.2573, 0.0022, 0.3483, -0.0033, -0.3539, -2.626, -27.0235,
447 5.1441, 5.4989, 4.5886, 4.889, 4.4149, 4.7882, 4.1037, 2.1106, -0.5897, -1.6882, -2.0231, -2.3075, -4.0395, -5.998, -7.0714, -7.2239, -6.85, -6.2178, -5.879, -4.2255, -3.0049, -0.9642, 0.5881, 1.855, 5.0224, 5.6412, 5.331, 2.5657, 1.5411, 13.0414, 12.1678, 10.8758, 8.35, 3.9695, -1.2713, -6.6778, -7.5357, -8.1366, -9.815, -14.9679, -9.097,
448 5.6158, 4.9839, 2.6123, 0.8571, -0.5963, -0.3233, -0.2214, -0.3194, -0.137, 0.4421, 0.3275, 0.0835, -0.517, -0.8713, -0.8569, -0.8339, -0.8554, -0.5354, -0.0395, -0.0558, -0.9263, -0.8835, -0.8978, -0.6944, -0.6268, -0.8091, -1.0483, -1.4194, -1.4539, -1.4149, -1.4513, -1.7313, -2.1794, -1.7446, -0.9286, 0.2594, 1.3903, 2.1796, 3.3663, 2.2545, -1.2043,
449 10.708, 10.7135, 9.5629, 8.5444, 8.8788, 10.1398, 10.5302, 9.9131, 6.6128, 3.5565, 2.0899, 1.1039, 0.3794, 0.6277, -0.198, -1.3526, -2.7157, -4.4999, -6.1998, -7.9255, -8.1415, -9.2812, -8.2556, -8.1488, -8.8083, -9.3952, -7.3216, -6.7527, -4.3647, -4.2821, -3.0286, 0.3702, 1.9504, 4.267, 4.98, 3.4858, 0.8969, -0.2219, 0.7569, -9.1747, -5.7376,
450 15.6199, 17.2444, 17.3338, 14.6899, 10.1694, 6.6473, 3.7155, 2.2358, 1.5381, 1.6499, 1.6341, 0.4488, 0.1506, -1.4323, -2.951, -3.5813, -3.4819, -3.2311, -4.3442, -6.2089, -6.4666, -6.7538, -7.4724, -7.2719, -7.5336, -7.1999, -7.6644, -8.4572, -9.0267, -8.4693, -10.5727, -9.758, -6.2924, -2.3994, 1.2587, 4.0421, 6.4837, 8.0877, 9.5585, 8.0612, -1.6481,
451 19.7459, 20.2278, 18.163, 15.009, 12.1531, 9.979, 6.226, 3.3367, 0.8576, -0.7079, -0.8905, -2.1529, -4.1404, -5.6658, -7.062, -8.838, -8.6505, -8.0785, -6.8102, -4.7097, -3.3992, -4.6255, -5.7732, -5.7892, -3.5462, -3.1831, -5.7363, -8.6675, -7.2716, 4.1141, 4.3678, 4.3289, 4.1542, 4.0907, 1.7285, -0.9643, -1.7912, -4.9181, -4.5913, -10.5192, -12.1315,
452 6.1392, 7.2498, 8.1626, 7.685, 6.4337, 6.4811, 6.2044, 4.4007, 3.1418, 2.4995, 0.929, 0.1185, -0.7668, 1.7199, 1.8949, 2.0578, 0.9328, -0.211, -2.8546, -2.7195, -3.0066, -5.4613, -5.4714, -6.1331, -7.3092, -7.381, -7.7191, -8.5523, -8.4648, -2.487, -2.6525, -3.0263, -3.5473, -2.5564, -1.093, 0.1556, 2.3664, 3.5226, 4.7554, 4.5624, -7.591,
453 9.311, 9.9536, 9.2138, 10.0448, 12.2215, 15.3929, 16.8943, 15.4237, 10.3171, 4.7547, 1.0177, -2.1707, -4.9877, -7.5219, -7.9593, -6.9345, -4.8837, -0.9854, 3.2044, 2.3045, -0.4463, -2.4338, -5.1476, -7.89, -10.631, -12.6634, -14.4919, -15.1208, -15.7863, 5.6159, 2.3509, 0.9141, -0.354, -1.9709, -1.3207, -0.835, -0.2962, -0.1715, -0.2711, -3.6616, -23.6214,
454 23.3043, 22.9242, 21.5293, 19.5762, 16.1241, 10.4648, 6.0084, 4.4333, 5.1608, 6.7668, 7.1607, 5.7544, 1.6077, -1.1787, -4.1636, -7.1966, -8.5322, -8.3418, -7.6815, -6.4004, -5.6492, -7.9013, -12.6029, -15.0772, -12.4774, -7.5784, -9.0924, -17.5597, -19.3815, 3.7144, 2.6198, 1.4796, 0.442, -0.5744, -0.9102, -0.6355, -1.0076, -1.4038, -1.1279, -2.5963, -20.6144,
455 11.2061, 12.3118, 12.8295, 13.0523, 13.1146, 12.3645, 9.9362, 5.7743, 1.7043, -1.8769, -4.8871, -7.3022, -10.0064, -12.5843, -14.2598, -13.6895, -11.6784, -9.5138, -6.1691, -0.5296, 5.2373, 5.2179, 3.438, 3.0836, 2.2733, -1.6391, -6.1888, -7.6374, -3.5815, 20.8484, 18.6436, 8.9742, 10.0179, 3.879, -7.4403, -11.3642, -12.3105, -11.5853, -8.933, -10.7298, -20.8771,
456 16.8529, 17.4255, 16.4102, 15.5784, 15.8674, 17.495, 18.1947, 15.9349, 11.712, 7.2655, 2.7249, -1.9527, -5.0648, -6.5508, -5.6015, -1.523, 3.8782, 6.4704, 3.5684, -1.2082, -2.4831, -2.6718, -6.1617, -14.2995, -21.6998, -24.5766, -25.7294, -25.4801, -24.3755, 1.7078, 0.3442, -0.186, -0.3639, -0.6031, -0.7615, -0.5273, -0.1524, 0.161, 0.3883, -0.0071, -25.9432,
457 3.6247, 4.1362, 4.7304, 5.4643, 6.0686, 6.7599, 7.37, 7.9086, 8.2045, 8.2007, 8.305, 7.9346, 6.506, 5.2072, 4.901, 4.7326, 5.1044, 4.6386, 2.5145, -2.675, -8.8497, -12.8927, -16.3752, -16.1979, -12.4272, -9.0385, -10.4849, -12.3511, -11.0196, 16.8771, 16.0363, 12.4221, 5.0921, -2.2734, -6.9441, -6.2634, -7.9111, -8.604, -8.3171, -10.1145, -25.1507,
458 20.4102, 22.2333, 21.4536, 19.4223, 16.2855, 13.0015, 8.6431, 4.0577, 0.1512, -3.055, -6.8588, -9.9672, -11.6652, -13.5703, -15.4009, -14.9881, -14.1899, -13.0588, -12.144, -10.7868, -7.9129, -2.9873, -1.111, -1.0826, 1.2318, 4.7844, 4.0367, 1.8708, 1.1966, 1.4837, -0.6523, -2.7877, -2.3545, -1.2604, 3.0293, 4.438, 2.6853, 3.182, 0.1563, -7.9197, -4.8422,
459 24.4801, 24.0824, 22.4438, 19.5938, 14.694, 8.679, 3.7523, 0.8565, -0.9075, -1.514, -0.7636, 1.4427, 4.6338, 4.78, -0.4807, -5.3801, -6.6867, -7.1351, -7.2085, -6.89, -7.0642, -5.4063, 1.9414, 1.1193, -8.061, -17.439, -17.6573, -19.7125, -20.1924, -1.8469, 0.7851, 2.9495, 5.7461, 5.1153, 0.0343, 1.2368, -1.4044, -2.4151, -4.0039, -6.1967, -17.9837,
460 34.238, 33.5242, 31.1201, 27.6874, 23.0098, 16.3994, 8.7955, 1.8365, -2.8561, -4.7762, -4.6828, -3.5969, -2.7477, -3.7154, -5.8733, -6.7781, -7.1404, -9.1196, -11.1436, -11.7088, -11.204, -10.1729, -10.8046, -9.7894, -7.4004, -10.6648, -13.8125, -14.2674, -14.356, 0.7706, 1.2161, 0.201, -0.2054, -0.41, -0.3813, -0.4077, -0.2383, -0.1037, 0.0286, -0.4699, -14.1437,
461 28.8775, 29.5132, 28.5106, 26.2574, 21.3404, 14.0753, 6.0344, -0.6419, -5.0399, -7.8669, -10.5378, -12.6348, -13.9599, -14.7351, -14.0154, -11.1568, -6.4165, -1.6004, -0.2199, -4.6568, -7.7877, -4.327, -3.6815, -7.3611, -9.9812, -9.0522, -3.7854, -1.0622, -4.0886, 4.5036, 0.0436, -1.262, 0.1566, 0.7061, 0.993, -0.1034, -0.8841, -0.1473, -0.6208, -3.3851, -11.7638,
462 23.7811, 23.4799, 22.5985, 21.1811, 19.295, 16.9827, 14.153, 11.0015, 7.6758, 4.3321, 1.377, -1.2257, -4.1809, -8.056, -12.0663, -14.7575, -16.2562, -16.8262, -16.6031, -14.6213, -10.859, -6.2555, -3.6846, -3.645, -3.7342, -4.0353, -7.6132, -10.866, -10.5716, 9.6447, 7.8023, 3.9088, 0.9709, -1.2963, -2.9548, -3.6717, -3.5325, -2.8548, -2.7867, -5.23, -17.9213,
463 7.3168, 7.9817, 8.1669, 8.3682, 8.5119, 8.7999, 8.5177, 8.224, 7.976, 7.1004, 4.9797, 2.844, -0.2787, -2.8393, -5.1812, -6.501, -7.8099, -7.3824, -4.9246, -1.2066, 1.0202, -1.2524, -5.5773, -6.6635, -6.2109, -4.9615, -7.0357, -10.7105, -11.2719, 12.8705, 11.8805, 10.2523, 9.3642, 5.4904, -1.6627, -6.1562, -9.1055, -10.2004, -10.6557, -12.0775, -23.3035,
464 29.5404, 29.4681, 28.4882, 26.7591, 23.995, 19.9029, 14.9906, 9.9884, 4.9431, 0.7201, -2.7182, -4.9295, -5.8329, -5.2835, -3.1411, -1.0337, -1.2994, -4.6551, -9.294, -12.6166, -14.4507, -14.7304, -13.5533, -12.6574, -13.3765, -15.4995, -17.3894, -18.253, -18.0815, 0.4964, 0.5507, 1.1546, 0.737, -0.0255, -0.3498, -0.5226, -0.4656, -0.4711, -0.2868, -0.8174, -17.811,
465 -1.0744, 14.9003, 33.1596, 35.0523, 13.0736, 2.0052, -0.7661, 8.7597, 2.7166, -6.495, -4.261, 3.772, -4.3426, -8.7782, -3.2656, -7.4382, -8.4893, -4.5093, -7.9161, -3.7247, -7.052, -3.6709, -6.265, -4.496, -4.0238, -4.7559, -5.1416, -7.861, -9.1128, 0.6813, 1.7272, 1.1217, 0.4323, -0.0682, -0.265, -0.1787, -0.4185, -0.8065, -0.2104, -2.0153, -10.3544,
466 17.3596, 17.5673, 15.0858, 11.4644, 7.3814, 4.0226, -0.141, -3.3849, -5.6204, -6.9233, -7.1105, -7.9534, -8.3396, -9.0384, -9.3087, -9.0779, -7.7416, -7.4684, -7.3969, -6.6548, -5.2109, -4.5759, -2.5217, -0.3381, 2.765, 6.1586, 8.7075, 9.567, 8.7272, 5.4636, 3.5914, 3.5111, 3.4034, 3.2185, 1.4996, -0.7001, -2.2097, -2.6342, -2.6685, -12.4751, 1.7656,
467 9.2805, 8.3218, 6.4144, 5.5901, 4.5122, 4.117, 2.0243, 0.4668, -1.3946, -1.908, -1.6016, -2.3054, -3.2805, -3.6877, -3.6998, -3.136, -2.3723, -2.0691, -2.5325, -3.5697, -3.7685, -3.6638, -2.437, -2.4841, -1.3748, -1.3849, -0.1182, 1.3637, 4.6978, -2.5191, 0.6452, 3.8178, 5.9716, 6.9002, 5.0344, 1.4694, -0.9067, -2.4853, -4.2997, -13.628, 3.6107,
468 14.3113, 15.3825, 16.0172, 17.0841, 17.9406, 17.4527, 13.8237, 9.1622, 4.4761, 0.4333, -1.8491, -4.1973, -6.2352, -7.3255, -6.6956, -3.8665, 0.4871, 1.8452, -1.9049, -6.4158, -9.6692, -9.9954, -8.3868, -6.3274, -7.5276, -11.6979, -13.095, -12.8586, -10.3679, 12.6405, 9.43, 6.8308, 1.9954, -1.8154, -4.05, -4.6445, -4.94, -4.6161, -4.141, -6.6897, -21.7106,
469 15.9574, 13.5685, 10.9183, 9.2647, 7.9607, 6.5007, 4.5878, 3.5591, 3.2169, 1.2933, -0.051, -0.9224, -2.2752, -2.6282, -3.7623, -4.7934, -4.9449, -4.3779, -4.6931, -3.1458, -4.4724, -5.0318, -4.9908, -4.4859, -5.058, -5.3554, -5.0038, -5.0901, -5.7451, -5.4116, -5.6692, -5.7576, -5.1885, -3.0995, -0.5277, 2.1995, 4.1437, 5.6134, 6.876, 6.8216, -1.5471,
470 19.4303, 18.5843, 17.0128, 17.0462, 18.3032, 19.023, 17.0309, 14.9915, 13.9671, 13.7472, 10.8472, 5.3475, -0.7858, -5.0732, -8.3887, -9.9459, -10.5501, -11.5448, -12.079, -11.0765, -11.334, -10.813, -12.3197, -14.8319, -14.5526, -12.6243, -11.2782, -13.0457, -15.0877, 2.8732, 1.857, 1.3694, -0.0267, -0.8287, -0.4903, -0.4684, -0.4454, -0.2649, -0.5119, -3.0635, -20.4302,
471 12.4117, 13.0466, 13.2331, 13.485, 13.9028, 13.3369, 10.6679, 6.6169, 2.3362, -0.7175, -3.1184, -5.0629, -7.1577, -9.3769, -10.526, -9.6526, -5.9526, -0.9724, 3.2956, 3.3183, -0.2154, -2.7832, -2.1155, -2.0009, -5.4287, -9.8635, -12.0371, -11.731, -6.9389, 19.8935, 17.5132, 8.1204, 5.9513, -0.9114, -7.8096, -9.0959, -8.7765, -8.7232, -7.8238, -8.3381, -22.9941,
472 5.4465, 6.1545, 6.596, 7.3692, 6.5453, 5.6331, 3.5394, 2.3607, 0.8659, 0.0509, -0.6899, -0.6602, -0.8114, -0.9871, -2.062, -2.1051, -2.1293, -2.4346, -2.8842, -2.7862, -2.7031, -2.7005, -2.3058, -2.4182, -2.9614, -3.3012, -3.625, -3.4399, -3.5562, 1.1375, 0.955, 0.1967, 0.2876, -0.3489, -0.1347, -0.2618, -0.2052, 0.1031, 0.1921, -1.9213, -5.8132,
473 19.3219, 18.607, 17.2268, 15.7037, 13.2112, 9.2621, 6.1735, 5.2932, 6.8689, 8.1175, 8.5297, 6.2006, 2.9639, 0.2106, -1.5424, -3.0741, -3.6228, -1.7612, 1.1881, 0.4888, -4.7011, -12.4521, -18.8925, -20.1895, -15.2633, -7.7586, -8.4595, -18.6161, -23.0341, 7.2675, 6.3572, 1.7187, 0.3913, 0.3928, -0.3109, -1.9821, -2.8777, -3.2372, -3.3101, -4.4095, -25.201,
474 8.4541, 8.1779, 7.1194, 5.4725, 2.9601, 1.1998, -0.3538, -1.2461, -1.9054, -1.1532, -0.8697, -0.7216, -1.4868, -2.8361, -3.9114, -3.9948, -3.2868, -2.9321, -1.6346, 0.6941, 1.5767, 0.1133, -0.6901, -1.9526, -1.704, -0.6393, -1.7853, -2.0227, -0.6415, 6.3775, 3.5011, 1.7742, 0.8521, -0.8807, -2.4262, -1.9793, -2.713, -1.0301, -0.2906, -3.185, -7.4694,
475 10.0438, 9.573, 9.4079, 10.5993, 13.6404, 15.4525, 14.499, 10.5598, 6.2936, 3.7658, 1.8182, 2.4916, 3.9516, 5.8549, 9.0644, 9.6627, 6.8173, 4.3977, 1.349, -4.2076, -12.0535, -17.0808, -19.6338, -19.7015, -18.7275, -16.8855, -13.8529, -11.6701, -15.4293, 6.271, 4.5162, 0.1386, -2.0908, -1.7858, -2.0793, -1.8138, 0.2844, 0.7409, 0.2032, -4.3846, -24.8049,
476 25.0551, 24.1141, 20.9653, 16.3108, 10.8527, 5.3678, 0.7364, -2.8219, -5.0859, -5.765, -6.1499, -6.6367, -7.4276, -7.5696, -8.0119, -6.4695, -2.7893, 0.4057, 2.0532, 0.861, -1.2343, -2.5971, -2.0921, -3.1259, -5.4032, -7.7358, -7.6535, -8.064, -10.089, 1.7165, 0.5619, 0.1133, -0.0994, -0.1364, -0.266, -0.4353, 0.5041, 0.4384, 0.8615, -3.2587, -14.5713,
477 -0.2824, -1.2002, -1.1857, -0.7688, -0.8143, -0.7172, -1.5304, -2.1288, -3.0516, -3.6018, -4.8378, -6.1535, -7.732, -6.8121, -6.1824, -3.6103, -1.4311, 0.9978, 1.1937, 0.8415, 2.4841, 6.3803, 8.8835, 7.0925, 6.7752, 9.2623, 5.7944, 2.8315, -0.4967, 18.7297, 14.2388, 10.8799, 4.2826, -6.9342, -8.6376, -8.3976, -6.7575, -6.0459, -5.4581, -5.9001, -18.8293,
478 10.1128, 8.8893, 7.3473, 6.5214, 7.293, 10.3397, 14.0197, 15.8841, 13.7146, 8.7127, 4.4971, 1.7567, 0.2355, 0.565, 2.536, 6.4325, 6.1884, 1.5759, -3.2537, -5.8565, -5.4444, -3.863, -6.5876, -12.9364, -16.8492, -18.9964, -18.8056, -16.0076, -18.0217, 3.9553, 2.3698, 1.9291, -0.0877, -0.9652, -0.9019, -0.4445, -0.6487, -0.2555, -1.3366, -3.614, -25.1871,
479 12.2726, 11.228, 9.4632, 7.3787, 5.2189, 3.66, 2.1581, 1.8973, 1.7208, 1.1692, 2.6675, 2.148, 0.1934, -0.9062, -0.5766, -0.7741, -0.2722, -1.4842, -1.6982, -2.2141, -2.7162, -2.8899, -3.2527, -3.3476, -3.8185, -5.7582, -8.5254, -9.5927, -13.3491, 2.9336, -0.0614, -5.1792, -7.8262, -5.8818, -2.4979, 0.281, 2.5842, 4.2687, 5.4567, 5.9224, -16.9053,
480 37.2172, 34.3913, 31.2113, 27.7111, 23.6697, 19.0839, 14.6521, 10.8663, 7.8437, 5.4886, 3.9602, 2.5869, 0.56, -1.9033, -4.6862, -7.319, -10.071, -12.7038, -14.768, -15.8511, -16.1191, -16.1652, -16.2159, -15.9004, -15.8958, -16.8057, -17.9478, -18.494, -18.3957, 0.4419, 0.2835, -0.0357, -0.2713, -0.3987, -0.3334, -0.2999, -0.1625, 0.2757, 0.674, -0.1736, -16.8775,
481 11.3753, 13.7268, 15.9469, 19.24, 21.6371, 21.2732, 16.6665, 10.0971, 4.1118, -0.3896, -3.6531, -5.5614, -8.0681, -10.2817, -11.6723, -11.5104, -10.0734, -10.1816, -8.5685, -7.1045, -6.4138, -4.8696, -3.9548, -5.7824, -5.0034, -4.9254, -6.3935, -5.3682, -4.2986, 12.8596, 6.0788, 2.4099, 2.8908, 0.0595, -2.3723, -2.9619, -4.0883, -4.5273, -4.0164, -6.3324, -17.4382,
482 26.4179, 26.6038, 25.6315, 22.7118, 17.4654, 11.2374, 4.563, -0.6721, -3.649, -5.1965, -6.8885, -8.5149, -9.9685, -10.5303, -10.6988, -9.8426, -8.6196, -5.7793, -0.9658, 3.2322, 2.5498, 0.5196, -0.4196, -3.4101, -7.4205, -10.7757, -11.9107, -12.1132, -13.5565, 2.4448, 1.027, 0.2616, -0.2763, -0.6725, -0.5323, -0.4687, -0.3345, 0.1168, 0.1296, -1.6954, -17.0871,
483 18.4471, 16.7466, 13.9277, 10.8916, 8.7857, 7.1932, 5.5568, 4.1778, 3.8018, 3.6509, 4.1995, 4.5197, 3.7143, 2.0835, 1.0146, 0.3919, -0.3931, -1.7518, -3.7102, -5.6106, -7.0424, -8.2355, -8.7436, -9.9803, -10.8971, -12.1221, -12.4526, -14.0451, -14.1182, 1.5911, 1.3311, 0.9816, 0.2592, 0.5671, -0.15, -0.6917, -0.071, -0.0271, 0.0589, -3.8492, -16.0146,
484 5.9232, 5.3337, 3.8014, 2.9697, 3.4359, 4.2543, 3.4648, 1.7717, 0.1194, -0.0269, 0.7474, 1.7656, 2.2681, 3.3777, 5.535, 7.6925, 7.117, 5.0594, 1.6134, -2.884, -4.6636, -5.6498, -6.726, -7.6581, -7.7482, -7.0077, -8.1003, -8.2149, -7.5709, 2.7271, 3.2452, 3.0964, 1.8085, 1.2978, 0.1047, -1.3807, -1.5844, -0.8243, -0.5104, -7.9799, -12.0827,
485 12.4719, 12.1361, 10.1546, 7.9843, 6.3039, 5.8891, 4.6571, 2.6181, -0.1657, -1.9369, -2.8607, -3.3105, -4.8578, -7.0042, -7.1916, -5.9866, -4.1997, -1.7831, 1.5238, 4.3316, 3.2165, 1.1019, 0.2627, -0.7887, -2.3974, -4.1659, -7.7383, -8.8914, -9.3732, 3.3631, 2.173, 1.7422, 1.8227, 1.4558, 0.1916, -0.0971, -0.1883, -1.5408, -1.1423, -7.7797, -11.8474,
486 11.3451, 10.9, 8.9585, 6.1028, 3.1858, -1.1621, -5.3836, -9.5575, -11.5639, -12.6129, -13.2817, -13.1921, -12.6233, -11.4537, -9.9063, -7.2485, -2.9323, -0.1679, 2.3451, 3.4644, 4.1413, 6.5832, 8.0312, 9.6, 9.3866, 8.339, 7.0332, 6.2115, 5.4582, 2.4819, 2.4952, 2.5332, 1.3146, 1.284, 1.1744, 1.4075, 1.6533, -0.791, -1.1435, -12.4097, 1.0916,
487 23.6029, 24.2878, 23.193, 21.6752, 20.1647, 17.8825, 13.5147, 9.0959, 4.9067, 0.9398, -2.2819, -4.7976, -6.5405, -7.8935, -8.5957, -8.1319, -5.7029, -2.901, -1.4003, -3.8107, -7.7146, -10.9603, -11.9185, -11.3097, -10.0262, -10.8911, -13.0763, -15.2199, -16.0905, -4.3614, -2.5556, -2.1777, -1.8997, -0.5988, 1.0869, 2.5785, 3.4868, 4.0967, 3.3192, -2.9749, -12.6358,
488 4.1481, 24.8058, 32.005, 24.107, 7.9048, 5.1844, 9.4865, 6.993, -4.1867, -5.3105, -0.1042, -5.3429, -7.948, -8.834, -11.8488, -10.9382, -11.6153, -10.8429, -8.8763, -8.2063, -5.9086, -4.678, -0.7362, 0.9339, 1.6189, 1.242, -2.165, -5.4458, -5.4417, 3.8026, 4.9367, 2.9396, 1.2003, 0.8096, -0.4055, -1.2653, -1.7631, -2.913, -1.4945, -5.8474, -8.5756,
489 23.7954, 23.1921, 21.7016, 20.0766, 17.1113, 13.7019, 10.3999, 7.0724, 4.4505, 3.2062, 3.6711, 5.104, 6.2303, 4.8847, -0.1659, -4.8929, -7.3427, -9.3139, -10.945, -11.4728, -10.0337, -7.5622, -3.5203, -5.8211, -14.2213, -19.1068, -19.3958, -20.2365, -20.5672, -0.5258, 0.0632, 2.1808, 3.9092, 2.4964, -0.3407, -0.519, -0.8656, -0.9771, -1.7973, -3.6241, -20.0182,
490 -3.736, -3.6185, -3.3879, -2.0035, -2.0453, -3.0452, -2.1024, -2.2759, -2.6516, -4.3569, -3.6456, -2.3824, -3.7115, -5.0829, -6.2136, -7.0765, -6.8802, -6.4042, -2.6943, 1.3032, 2.8085, -2.4198, 6.8476, 8.522, 10.8666, 10.9764, 11.8694, 11.688, 10.8525, -10.1854, -14.3979, -14.1885, -6.1104, -2.3069, 3.0598, 3.2787, 7.7402, 9.9334, 10.5862, 12.5907, 18.9431,
491 13.3492, 12.8348, 12.1001, 10.6097, 8.9141, 7.8597, 5.9391, 3.8673, 2.6411, 2.3479, 2.7602, 2.8027, 2.2779, 0.4287, -1.3226, -2.0315, -2.1676, -1.5551, -1.2222, -2.1197, -4.0818, -6.1594, -8.1874, -9.3177, -9.4499, -9.7874, -10.1789, -10.6801, -10.4712, -3.7681, -4.8313, -5.1537, -4.2661, -3.2035, -1.4351, 1.4217, 3.2157, 5.2602, 6.9893, 5.7708, -7.9426,
492 23.1558, 23.5472, 22.1677, 18.7915, 13.0187, 6.0783, -0.4803, -4.5728, -6.1861, -7.0011, -7.3578, -8.089, -10.0377, -12.234, -12.8288, -11.4502, -9.5173, -6.4728, -2.1175, 2.0048, 1.357, -2.9595, -2.6436, 1.518, 3.0406, -2.5769, -4.8065, -2.5134, -0.8343, 3.1119, 3.3528, 5.9276, 3.6737, 2.5908, 1.6925, -3.4674, -1.5813, -3.2207, -2.1812, -9.8987, -8.8538,
493 26.492, 27.5278, 23.5895, 18.4003, 14.4396, 11.3628, 6.6147, 2.4341, -0.2444, -2.4075, -4.2073, -6.4485, -7.8162, -9.2259, -9.5571, -9.3064, -9.091, -7.0174, -7.1701, -7.0279, -7.651, -7.5329, -8.2698, -7.2504, -4.4537, -4.4137, -4.3225, -4.9571, -2.4902, -7.3866, -6.0243, -3.8745, 0.0041, 2.702, 4.9257, 5.6046, 5.2905, 3.4738, 1.697, -6.4124, 2.1053,
494 20.0311, 32.4089, 21.4065, 3.874, 5.863, 17.0357, 3.7543, 2.9904, 15.6577, 4.2113, -0.9665, 3.2682, -4.9242, 0.9109, -5.5297, -0.979, -5.0003, -0.7131, -5.5269, -8.0296, -9.9403, -10.8809, -10.2649, -9.9965, -9.6956, -10.6759, -12.5982, -13.0794, -12.6109, 0.8915, 0.0604, -0.2305, -0.0021, -0.6053, -0.3414, -0.0731, 0.4824, 0.7549, -0.1062, -0.8306, -13.4365,
495 16.7766, 17.5169, 16.4982, 14.0891, 10.0932, 5.3461, 0.6341, -3.6859, -5.9242, -6.3128, -5.935, -5.7548, -6.0307, -6.0498, -6.4996, -6.5626, -4.8816, -3.2502, -3.2922, -4.2819, -4.8479, -5.5791, -4.7813, -3.1384, -3.49, -2.8954, 0.2902, 4.4573, 7.4915, -5.5534, -4.1269, -1.5355, 0.4168, 0.9124, 3.0599, 2.1241, 2.4262, 2.5, 4.5034, -4.7272, 8.0549,
496 14.2987, 14.8926, 15.4168, 16.0974, 16.7877, 16.0424, 12.971, 8.0251, 2.909, -0.5642, -2.964, -4.5656, -6.3342, -5.7781, -3.4597, 0.3272, 2.7738, -0.3574, -4.8087, -8.1398, -9.6152, -7.9303, -6.227, -7.0986, -10.3018, -13.1453, -11.2961, -9.1627, -8.7927, 1.0994, 1.8123, 2.8974, 2.905, 4.6509, 3.4505, -0.601, -1.4758, -2.7795, -2.4745, -9.4847, -15.4782,
497 19.5896, 21.6796, 21.9059, 19.1821, 14.0268, 8.5044, 2.2676, -4.7266, -10.645, -13.046, -14.086, -14.5335, -14.9498, -14.787, -14.0697, -11.4549, -8.2147, -4.026, 0.3628, 4.9113, 3.4988, 0.578, 1.9943, 2.981, 0.8573, -1.3207, -0.074, 2.1207, 1.474, 10.3387, 1.2319, -0.4911, -1.8207, -1.07, -0.8286, 0.3764, 0.204, -0.829, -1.6698, -5.4418, -14.7994,
498 7.6904, 8.5944, 9.5072, 9.882, 10.2276, 10.5222, 10.3373, 9.3607, 7.6459, 4.8852, 2.1707, -0.1575, -1.8433, -2.7877, -2.2526, -0.5664, 2.3824, 4.3345, 3.544, -0.6514, -5.2439, -9.2918, -11.7988, -14.1092, -12.7385, -9.1451, -9.6551, -10.7736, -10.0695, 11.9243, 11.2262, 10.3898, 9.8282, 8.0787, 3.3521, -3.2649, -10.5053, -13.2404, -13.3007, -14.4881, -21.2847,
499 30.307, 29.5477, 26.4796, 21.7752, 16.6251, 11.7301, 7.3299, 3.8872, 0.729, -1.2037, -2.4737, -3.5896, -4.8044, -5.4589, -6.3339, -6.5407, -6.0748, -6.4957, -7.6726, -8.7065, -8.7749, -8.8999, -9.3481, -9.1891, -9.9612, -10.0486, -10.55, -11.2845, -11, -6.1498, -6.3059, -5.5965, -4.5595, -2.8356, 0.0899, 2.711, 4.5977, 5.7639, 7.0861, 5.1987, -6.4033,
500 12.2542, 12.1227, 12.1295, 13.7252, 16.2506, 16.1281, 10.9394, 4.8988, -0.4731, -3.6819, -5.4021, -7.4944, -8.2715, -8.0576, -6.1477, -3.0306, 1.9117, 4.056, 2.1482, 0.8098, 0.1207, 0.0058, -2.3034, -4.0466, -3.922, -6.4147, -11.2118, -17.1187, -19.9247, 6.0099, 3.6952, 1.2907, -0.5044, -0.8291, -1.0627, -1.1957, -1.1416, -1.4267, -1.5418, -3.2939, -24.486,
501 9.7234, 8.7897, 6.536, 5.5091, 6.6941, 8.8748, 9.0238, 7.6482, 4.3129, 1.4757, -0.7289, -2.4072, -4.4322, -5.3461, -3.7806, -1.1393, 2.9797, 3.5166, -1.5034, -4.0711, -4.3945, -4.4639, -5.1951, -6.0761, -6.0336, -6.996, -6.516, -4.952, -7.048, 14.6458, 13.1436, 9.144, 2.7564, -0.8129, -3.8913, -6.65, -6.1267, -6.0986, -6.7696, -9.3407, -21.2384,
502 8.5519, 7.5224, 5.9151, 4.8177, 3.503, 2.2565, 1.1622, 0.1988, -0.5493, -0.385, -0.1928, -0.4114, -0.8801, -1.0153, -1.0764, -1.4171, -1.4905, -1.3971, -1.0636, -1.1738, -0.9725, -1.888, -2.3866, -2.7467, -2.5988, -2.5326, -3.1114, -3.2783, -3.3604, -3.8082, -3.8849, -4.0621, -3.5801, -2.8055, -1.5136, 0.9076, 2.835, 4.3455, 5.8838, 5.6825, -0.4474,
503 7.7224, 9.4298, 7.9025, 6.4102, 5.0524, 7.1733, 6.8444, 5.1985, 1.7514, 0.1644, 0.4222, 1.0885, -0.3101, -2.4745, -2.9872, -2.3617, -3.5889, -3.7306, -1.5428, -0.5556, -0.6425, -2.7366, -1.5405, -2.2119, -3.2504, -3.1003, -4.4891, -10.0519, -13.5853, -15.9446, -3.2508, 0.2918, -0.9236, 3.57, 5.1357, 5.1789, 6.0048, 3.6122, 3.0229, -6.6974, 0.466,
504 12.4572, 13.576, 13.8205, 13.8979, 14.7964, 17.0228, 18.4159, 17.4577, 14.0275, 10.4467, 7.5633, 5.822, 5.5014, 6.0819, 6.428, 5.7453, 2.9483, 0.4368, -2.0706, -3.5909, -6.3177, -11.4245, -17.9894, -23.7008, -25.5017, -25.0724, -24.5956, -23.3443, -22.8376, 1.8005, 0.405, -0.0309, -0.4072, -0.7903, -0.7639, -0.633, 0.2496, 0.9862, 0.2958, -1.1118, -25.7677,
505 4.7942, 4.1637, 3.1217, 3.4886, 5.7426, 8.4586, 9.4051, 8.4408, 4.0573, -0.0847, -2.6488, -4.2622, -6.8882, -7.9882, -8.0785, -6.5745, -3.6736, 0.0836, 3.7506, 4.295, 1.443, 1.7647, 2.5945, 0.5096, -1.403, -2.4095, -4.2409, -7.3362, -10.5254, 14.3716, 9.9001, 5.5613, -0.4343, -4.0106, -4.4911, -4.7396, -4.3992, -3.5933, -3.3021, -4.8629, -20.9215,
506 21.6217, 21.5816, 19.9361, 17.4078, 14.6925, 11.478, 7.736, 4.5567, 2.3261, 1.3757, 0.8699, 1.0465, 1.101, -0.3579, -2.1883, -4.1422, -5.522, -7.4591, -9.7124, -11.0673, -12.8828, -14.8063, -14.5786, -12.2038, -9.6561, -7.6717, -6.6862, -4.494, -2.3008, -2.8294, -2.2589, -0.7299, 1.858, 3.4539, 3.4053, 2.7591, 1.9997, 0.5308, 0.5471, -8.7356, -3.9438,
507 1.0482, 0.882, 0.312, -0.0147, 0.1548, 1.1642, 2.5065, 4.2829, 6.8793, 9.8376, 11.4462, 10.6004, 8.7525, 7.4364, 7.3679, 8.2254, 7.9411, 4.8316, -0.5361, -4.6026, -6.7708, -7.8326, -7.7624, -5.3939, -6.4851, -9.7433, -13.7435, -16.3579, -14.4263, 10.9932, 7.619, 5.9532, 4.7231, 0.1759, -2.5109, -4.5002, -5.8815, -4.2941, -4.7897, -7.4879, -24.0798,
508 8.4638, 7.6638, 6.7405, 6.7849, 9.6108, 11.6513, 11.2989, 8.3544, 3.044, -0.8467, -3.9303, -4.9339, -3.7358, -4.1317, -2.0585, 2.7514, 7.6579, 7.9793, 2.3491, -1.2307, -6.1104, -5.2397, -3.7933, -5.5972, -9.8841, -12.1146, -11.4629, -8.7974, -10.4828, 8.1529, 4.6235, 5.0235, -3.915, -7.5503, -5.3361, -1.2531, 6.4683, 2.2949, -0.055, -8.4536, -22.5498,
509 9.8543, 8.7085, 6.2122, 3.2566, 2.0932, 1.8184, 0.621, -1.4796, -2.3312, -2.6373, -4.0537, -4.6289, -4.6135, -3.7432, -2.1216, 0.8603, 3.6326, 5.0735, 3.4051, 1.8301, 1.3556, -1.1657, -2.6873, -3.258, -2.3407, -3.5712, -3.7082, -3.8659, -2.5155, -3.0106, -3.6582, 1.1257, 3.5876, 5.1138, 3.862, 1.9732, 0.5329, 1.0253, -0.8077, -9.7439, -1.3313,
510 -2.9689, -3.6925, -3.2882, -2.1408, -0.3207, 1.4181, 2.0372, 0.1628, -1.5615, -1.1744, -1.1748, -2.3007, -3.8174, -4.8189, -4.0221, -1.3971, 3.2927, 7.6888, 9.8326, 7.1859, 3.6459, 2.2387, 1.1579, 1.6876, 0.0249, -1.1344, -3.2237, -2.0378, -1.2991, 8.2053, 7.6257, 7.4526, 5.2692, 0.6619, -2.5875, -5.5343, -3.5316, -3.8077, -4.5073, -9.2463, -10.5134,
511 9.7903, 6.5524, 4.2187, 2.8629, 1.5301, 2.609, 2.8671, -0.4058, 0.1443, 2.1025, 2.2641, 2.254, 2.8227, 4.2305, 2.6246, 0.1011, -0.5037, -2.5281, 5.9816, 8.8018, 3.5902, -2.1055, -8.2336, -7.5542, -8.3988, -6.77, -12.1221, -12.6274, -4.0986, 15.9214, 10.1934, 4.0555, -0.7395, -4.485, -5.0408, 1.8975, -3.7215, -6.1218, -5.7613, -6.198, -17.642,
512 29.2898, 29.127, 27.9887, 26.035, 22.788, 18.9325, 14.8741, 10.7353, 6.3361, 1.5435, -3.4721, -8.0918, -11.5471, -14.2024, -15.543, -16.5237, -17.5387, -18.0503, -18.3862, -18.0321, -17.2039, -14.4258, -7.6289, -2.1492, -0.8256, -0.4858, 0.7007, -0.7217, -3.5225, 7.7486, 6.5879, 3.6481, 0.1102, -1.4486, -1.4917, -1.7642, -2.4587, -2.7189, -2.3171, -5.8956, -12.2398,
513 4.4923, 5.9961, 3.5313, -0.1456, -2.9561, -3.9972, -5.5178, -6.5495, -8.2904, -9.4007, -9.5368, -9.2154, -10.6132, -12.2389, -12.145, -11.3212, -9.2653, -6.1867, -0.5047, 2.8376, -1.5645, 1.0645, 6.8296, 12.903, 17.1169, 16.2097, 16.8799, 17.2979, 14.2904, 3.6672, 1.4385, 0.6939, -0.7824, -1.0548, 0.7585, 1.5905, 1.4809, 1.2351, 0.7042, -9.7316, 9.0007,
514 17.1014, 20.3617, 22.1941, 23.6186, 23.8203, 21.498, 16.0993, 10.2193, 4.4688, 0.3152, -2.6232, -4.4565, -5.7629, -7.4399, -7.9702, -8.7398, -8.6156, -7.5758, -5.6113, -3.8507, -4.771, -7.9311, -11.5008, -12.9375, -11.7921, -9.1891, -8.8722, -13.4431, -16.6139, 2.6455, 3.2595, 3.634, 3.0753, 1.5772, -0.5994, -1.7486, -1.896, -2.7589, -2.489, -4.6996, -18.2534,
515 -6.795, -4.3945, -2.1814, -0.0391, 1.0243, 2.1577, 2.4659, 2.7954, 2.9978, 2.3847, 1.7726, 1.1096, -0.1514, -3.1834, -4.1688, -4.9229, -4.741, -4.3919, -0.8572, 1.4319, 1.2097, 1.1996, -0.6138, 0.0932, 1.9431, 3.2864, 3.0149, 3.03, 4.5238, -4.4471, -6.9731, -3.2184, -0.9733, 0.9643, 1.9409, 2.7291, 5.1726, 4.8981, 5.2725, -5.3657, 7.6481
516};
517
518const struct lsp_codebook newamp2vq_cb[] = {
519 /* /Users/erdgeist/Coding/codec2/src/codebook/codes_450.txt */
520 {
521 41,
522 8.96578,
523 500,
524 codes0
525 },
526 { 0, 0, 0, 0 }
527};
diff --git a/codebooknewamp2_energy.c b/codebooknewamp2_energy.c
new file mode 100644
index 0000000..2c9ecb9
--- /dev/null
+++ b/codebooknewamp2_energy.c
@@ -0,0 +1,35 @@
1/* THIS IS A GENERATED FILE. Edit generate_codebook.c and its input */
2
3/*
4 * This intermediary file and the files that used to create it are under
5 * The LGPL. See the file COPYING.
6 */
7
8#include "defines.h"
9
10 /* /Users/erdgeist/Coding/codec2/src/codebook/newamp2_energy_q.txt */
11#ifdef __EMBEDDED__
12static const float codes0[] = {
13#else
14static float codes0[] = {
15#endif
16 0.1,
17 5,
18 10,
19 15,
20 20,
21 30,
22 37.5,
23 42.5
24};
25
26const struct lsp_codebook newamp2_energy_cb[] = {
27 /* /Users/erdgeist/Coding/codec2/src/codebook/newamp2_energy_q.txt */
28 {
29 1,
30 3,
31 8,
32 codes0
33 },
34 { 0, 0, 0, 0 }
35};
diff --git a/codec2.c b/codec2.c
new file mode 100644
index 0000000..840fe21
--- /dev/null
+++ b/codec2.c
@@ -0,0 +1,2721 @@
1/*---------------------------------------------------------------------------*\
2
3 FILE........: codec2.c
4 AUTHOR......: David Rowe
5 DATE CREATED: 21/8/2010
6
7 Codec2 fully quantised encoder and decoder functions. If you want use
8 codec2, the codec2_xxx functions are for you.
9
10\*---------------------------------------------------------------------------*/
11
12/*
13 Copyright (C) 2010 David Rowe
14
15 All rights reserved.
16
17 This program is free software; you can redistribute it and/or modify
18 it under the terms of the GNU Lesser General Public License version 2.1, as
19 published by the Free Software Foundation. This program is
20 distributed in the hope that it will be useful, but WITHOUT ANY
21 WARRANTY; without even the implied warranty of MERCHANTABILITY or
22 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
23 License for more details.
24
25 You should have received a copy of the GNU Lesser General Public License
26 along with this program; if not, see <http://www.gnu.org/licenses/>.
27*/
28
29#include <assert.h>
30#include <stdio.h>
31#include <stdlib.h>
32#include <string.h>
33#include <math.h>
34
35#include "defines.h"
36#include "codec2_fft.h"
37#include "sine.h"
38#include "nlp.h"
39#include "dump.h"
40#include "lpc.h"
41#include "quantise.h"
42#include "phase.h"
43#include "interp.h"
44#include "postfilter.h"
45#include "codec2.h"
46#include "lsp.h"
47#include "newamp2.h"
48#include "codec2_internal.h"
49#include "machdep.h"
50#include "bpf.h"
51#include "bpfb.h"
52#include "c2wideband.h"
53
54#include "debug_alloc.h"
55
56/*---------------------------------------------------------------------------* \
57
58 FUNCTION HEADERS
59
60\*---------------------------------------------------------------------------*/
61
62void analyse_one_frame(struct CODEC2 *c2, MODEL *model, short speech[]);
63void synthesise_one_frame(struct CODEC2 *c2, short speech[], MODEL *model,
64 COMP Aw[], float gain);
65void codec2_encode_3200(struct CODEC2 *c2, unsigned char * bits, short speech[]);
66void codec2_decode_3200(struct CODEC2 *c2, short speech[], const unsigned char * bits);
67void codec2_encode_2400(struct CODEC2 *c2, unsigned char * bits, short speech[]);
68void codec2_decode_2400(struct CODEC2 *c2, short speech[], const unsigned char * bits);
69void codec2_encode_1600(struct CODEC2 *c2, unsigned char * bits, short speech[]);
70void codec2_decode_1600(struct CODEC2 *c2, short speech[], const unsigned char * bits);
71void codec2_encode_1400(struct CODEC2 *c2, unsigned char * bits, short speech[]);
72void codec2_decode_1400(struct CODEC2 *c2, short speech[], const unsigned char * bits);
73void codec2_encode_1300(struct CODEC2 *c2, unsigned char * bits, short speech[]);
74void codec2_decode_1300(struct CODEC2 *c2, short speech[], const unsigned char * bits, float ber_est);
75void codec2_encode_1200(struct CODEC2 *c2, unsigned char * bits, short speech[]);
76void codec2_decode_1200(struct CODEC2 *c2, short speech[], const unsigned char * bits);
77void codec2_encode_700(struct CODEC2 *c2, unsigned char * bits, short speech[]);
78void codec2_decode_700(struct CODEC2 *c2, short speech[], const unsigned char * bits);
79void codec2_encode_700b(struct CODEC2 *c2, unsigned char * bits, short speech[]);
80void codec2_decode_700b(struct CODEC2 *c2, short speech[], const unsigned char * bits);
81void codec2_encode_700c(struct CODEC2 *c2, unsigned char * bits, short speech[]);
82void codec2_decode_700c(struct CODEC2 *c2, short speech[], const unsigned char * bits);
83void codec2_encode_450(struct CODEC2 *c2, unsigned char * bits, short speech[]);
84void codec2_decode_450(struct CODEC2 *c2, short speech[], const unsigned char * bits);
85void codec2_decode_450pwb(struct CODEC2 *c2, short speech[], const unsigned char * bits);
86static void ear_protection(float in_out[], int n);
87
88
89
90/*---------------------------------------------------------------------------*\
91
92 FUNCTIONS
93
94\*---------------------------------------------------------------------------*/
95
96/*---------------------------------------------------------------------------*\
97
98 FUNCTION....: codec2_create
99 AUTHOR......: David Rowe
100 DATE CREATED: 21/8/2010
101
102 Create and initialise an instance of the codec. Returns a pointer
103 to the codec states or NULL on failure. One set of states is
104 sufficient for a full duuplex codec (i.e. an encoder and decoder).
105 You don't need separate states for encoders and decoders. See
106 c2enc.c and c2dec.c for examples.
107
108\*---------------------------------------------------------------------------*/
109
110
111//Don't create CODEC2_MODE_450PWB for Encoding as it has undefined behavior !
112struct CODEC2 * codec2_create(int mode)
113{
114 struct CODEC2 *c2;
115 int i,l;
116
117#ifndef CORTEX_M4
118 if (( CODEC2_MODE_ACTIVE(CODEC2_MODE_450, mode)) ||
119 ( CODEC2_MODE_ACTIVE(CODEC2_MODE_450PWB, mode)) ) {
120 return NULL;
121 }
122#endif
123
124 c2 = (struct CODEC2*)MALLOC(sizeof(struct CODEC2));
125 if (c2 == NULL)
126 return NULL;
127
128 c2->mode = mode;
129
130 /* store constants in a few places for convenience */
131
132 if( CODEC2_MODE_ACTIVE(CODEC2_MODE_450PWB, mode) == 0){
133 c2->c2const = c2const_create(8000, N_S);
134 }else{
135 c2->c2const = c2const_create(16000, N_S);
136 }
137 c2->Fs = c2->c2const.Fs;
138 int n_samp = c2->n_samp = c2->c2const.n_samp;
139 int m_pitch = c2->m_pitch = c2->c2const.m_pitch;
140
141 c2->Pn = (float*)MALLOC(2*n_samp*sizeof(float));
142 if (c2->Pn == NULL) {
143 return NULL;
144 }
145 c2->Sn_ = (float*)MALLOC(2*n_samp*sizeof(float));
146 if (c2->Sn_ == NULL) {
147 FREE(c2->Pn);
148 return NULL;
149 }
150 c2->w = (float*)MALLOC(m_pitch*sizeof(float));
151 if (c2->w == NULL) {
152 FREE(c2->Pn);
153 FREE(c2->Sn_);
154 return NULL;
155 }
156 c2->Sn = (float*)MALLOC(m_pitch*sizeof(float));
157 if (c2->Sn == NULL) {
158 FREE(c2->Pn);
159 FREE(c2->Sn_);
160 FREE(c2->w);
161 return NULL;
162 }
163
164 for(i=0; i<m_pitch; i++)
165 c2->Sn[i] = 1.0;
166 c2->hpf_states[0] = c2->hpf_states[1] = 0.0;
167 for(i=0; i<2*n_samp; i++)
168 c2->Sn_[i] = 0;
169 c2->fft_fwd_cfg = codec2_fft_alloc(FFT_ENC, 0, NULL, NULL);
170 c2->fftr_fwd_cfg = codec2_fftr_alloc(FFT_ENC, 0, NULL, NULL);
171 make_analysis_window(&c2->c2const, c2->fft_fwd_cfg, c2->w,c2->W);
172 make_synthesis_window(&c2->c2const, c2->Pn);
173 c2->fftr_inv_cfg = codec2_fftr_alloc(FFT_DEC, 1, NULL, NULL);
174 quantise_init();
175 c2->prev_f0_enc = 1/P_MAX_S;
176 c2->bg_est = 0.0;
177 c2->ex_phase = 0.0;
178
179 for(l=1; l<=MAX_AMP; l++)
180 c2->prev_model_dec.A[l] = 0.0;
181 c2->prev_model_dec.Wo = TWO_PI/c2->c2const.p_max;
182 c2->prev_model_dec.L = PI/c2->prev_model_dec.Wo;
183 c2->prev_model_dec.voiced = 0;
184
185 for(i=0; i<LPC_ORD; i++) {
186 c2->prev_lsps_dec[i] = i*PI/(LPC_ORD+1);
187 }
188 c2->prev_e_dec = 1;
189
190 c2->nlp = nlp_create(&c2->c2const);
191 if (c2->nlp == NULL) {
192 return NULL;
193 }
194
195 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700B, mode))
196 c2->gray = 0; // natural binary better for trellis decoding (hopefully added later)
197 else
198 c2->gray = 1;
199
200 c2->lpc_pf = 1; c2->bass_boost = 1; c2->beta = LPCPF_BETA; c2->gamma = LPCPF_GAMMA;
201
202 c2->xq_enc[0] = c2->xq_enc[1] = 0.0;
203 c2->xq_dec[0] = c2->xq_dec[1] = 0.0;
204
205 c2->smoothing = 0;
206 c2->se = 0.0; c2->nse = 0;
207 c2->user_rate_K_vec_no_mean_ = NULL;
208 c2->post_filter_en = 1;
209
210 c2->bpf_buf = (float*)MALLOC(sizeof(float)*(BPF_N+4*c2->n_samp));
211 assert(c2->bpf_buf != NULL);
212 for(i=0; i<BPF_N+4*c2->n_samp; i++)
213 c2->bpf_buf[i] = 0.0;
214
215 c2->softdec = NULL;
216
217 /* newamp1 initialisation */
218
219 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700C, c2->mode)) {
220 mel_sample_freqs_kHz(c2->rate_K_sample_freqs_kHz, NEWAMP1_K, ftomel(200.0), ftomel(3700.0) );
221 int k;
222 for(k=0; k<NEWAMP1_K; k++) {
223 c2->prev_rate_K_vec_[k] = 0.0;
224 }
225 c2->Wo_left = 0.0;
226 c2->voicing_left = 0;;
227 c2->phase_fft_fwd_cfg = codec2_fft_alloc(NEWAMP1_PHASE_NFFT, 0, NULL, NULL);
228 c2->phase_fft_inv_cfg = codec2_fft_alloc(NEWAMP1_PHASE_NFFT, 1, NULL, NULL);
229 }
230
231#ifndef CORTEX_M4
232 /* newamp2 initialisation */
233
234 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_450, c2->mode)) {
235 n2_mel_sample_freqs_kHz(c2->n2_rate_K_sample_freqs_kHz, NEWAMP2_K);
236 int k;
237 for(k=0; k<NEWAMP2_K; k++) {
238 c2->n2_prev_rate_K_vec_[k] = 0.0;
239 }
240 c2->Wo_left = 0.0;
241 c2->voicing_left = 0;;
242 c2->phase_fft_fwd_cfg = codec2_fft_alloc(NEWAMP2_PHASE_NFFT, 0, NULL, NULL);
243 c2->phase_fft_inv_cfg = codec2_fft_alloc(NEWAMP2_PHASE_NFFT, 1, NULL, NULL);
244 }
245 /* newamp2 PWB initialisation */
246
247 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_450PWB, c2->mode)) {
248 n2_mel_sample_freqs_kHz(c2->n2_pwb_rate_K_sample_freqs_kHz, NEWAMP2_16K_K);
249 int k;
250 for(k=0; k<NEWAMP2_16K_K; k++) {
251 c2->n2_pwb_prev_rate_K_vec_[k] = 0.0;
252 }
253 c2->Wo_left = 0.0;
254 c2->voicing_left = 0;;
255 c2->phase_fft_fwd_cfg = codec2_fft_alloc(NEWAMP2_PHASE_NFFT, 0, NULL, NULL);
256 c2->phase_fft_inv_cfg = codec2_fft_alloc(NEWAMP2_PHASE_NFFT, 1, NULL, NULL);
257 }
258#endif
259
260 c2->fmlfeat = NULL;
261
262 // make sure that one of the two decode function pointers is empty
263 // for the encode function pointer this is not required since we always set it
264 // to a meaningful value
265
266 c2->decode = NULL;
267 c2->decode_ber = NULL;
268
269 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_3200, c2->mode))
270 {
271 c2->encode = codec2_encode_3200;
272 c2->decode = codec2_decode_3200;
273 }
274
275 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_2400, c2->mode))
276 {
277 c2->encode = codec2_encode_2400;
278 c2->decode = codec2_decode_2400;
279 }
280
281 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1600, c2->mode))
282 {
283 c2->encode = codec2_encode_1600;
284 c2->decode = codec2_decode_1600;
285 }
286
287 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1400, c2->mode))
288 {
289 c2->encode = codec2_encode_1400;
290 c2->decode = codec2_decode_1400;
291 }
292
293 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1300, c2->mode))
294 {
295 c2->encode = codec2_encode_1300;
296 c2->decode_ber = codec2_decode_1300;
297 }
298
299 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1200, c2->mode))
300 {
301 c2->encode = codec2_encode_1200;
302 c2->decode = codec2_decode_1200;
303 }
304
305#ifndef CORTEX_M4
306 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700, c2->mode))
307 {
308 c2->encode = codec2_encode_700;
309 c2->decode = codec2_decode_700;
310 }
311
312 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700B, c2->mode))
313 {
314 c2->encode = codec2_encode_700b;
315 c2->decode = codec2_decode_700b;
316 }
317#endif
318 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700C, c2->mode))
319 {
320 c2->encode = codec2_encode_700c;
321 c2->decode = codec2_decode_700c;
322 }
323#ifndef CORTEX_M4
324 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_450, c2->mode))
325 {
326 c2->encode = codec2_encode_450;
327 c2->decode = codec2_decode_450;
328 }
329
330 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_450PWB, c2->mode))
331 {
332 //Encode PWB doesnt make sense
333 c2->encode = codec2_encode_450;
334 c2->decode = codec2_decode_450pwb;
335 }
336
337#endif
338
339 return c2;
340}
341
342/*---------------------------------------------------------------------------*\
343
344 FUNCTION....: codec2_destroy
345 AUTHOR......: David Rowe
346 DATE CREATED: 21/8/2010
347
348 Destroy an instance of the codec.
349
350\*---------------------------------------------------------------------------*/
351
352void codec2_destroy(struct CODEC2 *c2)
353{
354 assert(c2 != NULL);
355 FREE(c2->bpf_buf);
356 nlp_destroy(c2->nlp);
357 codec2_fft_free(c2->fft_fwd_cfg);
358 codec2_fftr_free(c2->fftr_fwd_cfg);
359 codec2_fftr_free(c2->fftr_inv_cfg);
360 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700C, c2->mode)) {
361 codec2_fft_free(c2->phase_fft_fwd_cfg);
362 codec2_fft_free(c2->phase_fft_inv_cfg);
363 }
364 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_450, c2->mode)) {
365 codec2_fft_free(c2->phase_fft_fwd_cfg);
366 codec2_fft_free(c2->phase_fft_inv_cfg);
367 }
368 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_450PWB, c2->mode)) {
369 codec2_fft_free(c2->phase_fft_fwd_cfg);
370 codec2_fft_free(c2->phase_fft_inv_cfg);
371 }
372 FREE(c2->Pn);
373 FREE(c2->Sn);
374 FREE(c2->w);
375 FREE(c2->Sn_);
376 FREE(c2);
377}
378
379/*---------------------------------------------------------------------------*\
380
381 FUNCTION....: codec2_bits_per_frame
382 AUTHOR......: David Rowe
383 DATE CREATED: Nov 14 2011
384
385 Returns the number of bits per frame.
386
387\*---------------------------------------------------------------------------*/
388
389int codec2_bits_per_frame(struct CODEC2 *c2) {
390 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_3200, c2->mode))
391 return 64;
392 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_2400, c2->mode))
393 return 48;
394 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1600, c2->mode))
395 return 64;
396 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1400, c2->mode))
397 return 56;
398 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1300, c2->mode))
399 return 52;
400 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1200, c2->mode))
401 return 48;
402 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700, c2->mode))
403 return 28;
404 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700B, c2->mode))
405 return 28;
406 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700C, c2->mode))
407 return 28;
408 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_450, c2->mode))
409 return 18;
410 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_450PWB, c2->mode))
411 return 18;
412
413 return 0; /* shouldn't get here */
414}
415
416
417/*---------------------------------------------------------------------------*\
418
419 FUNCTION....: codec2_samples_per_frame
420 AUTHOR......: David Rowe
421 DATE CREATED: Nov 14 2011
422
423 Returns the number of speech samples per frame.
424
425\*---------------------------------------------------------------------------*/
426
427int codec2_samples_per_frame(struct CODEC2 *c2) {
428 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_3200, c2->mode))
429 return 160;
430 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_2400, c2->mode))
431 return 160;
432 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1600, c2->mode))
433 return 320;
434 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1400, c2->mode))
435 return 320;
436 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1300, c2->mode))
437 return 320;
438 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1200, c2->mode))
439 return 320;
440 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700, c2->mode))
441 return 320;
442 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700B, c2->mode))
443 return 320;
444 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700C, c2->mode))
445 return 320;
446 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_450, c2->mode))
447 return 320;
448 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_450PWB, c2->mode))
449 return 640;
450 return 0; /* shouldnt get here */
451}
452
453void codec2_encode(struct CODEC2 *c2, unsigned char *bits, short speech[])
454{
455 assert(c2 != NULL);
456 assert(c2->encode != NULL);
457
458 c2->encode(c2, bits, speech);
459
460}
461
462void codec2_decode(struct CODEC2 *c2, short speech[], const unsigned char *bits)
463{
464 codec2_decode_ber(c2, speech, bits, 0.0);
465}
466
467void codec2_decode_ber(struct CODEC2 *c2, short speech[], const unsigned char *bits, float ber_est)
468{
469 assert(c2 != NULL);
470 assert(c2->decode != NULL || c2->decode_ber != NULL);
471
472 if (c2->decode != NULL)
473 {
474 c2->decode(c2, speech, bits);
475 }
476 else
477 {
478 c2->decode_ber(c2, speech, bits, ber_est);
479 }
480}
481
482
483/*---------------------------------------------------------------------------*\
484
485 FUNCTION....: codec2_encode_3200
486 AUTHOR......: David Rowe
487 DATE CREATED: 13 Sep 2012
488
489 Encodes 160 speech samples (20ms of speech) into 64 bits.
490
491 The codec2 algorithm actually operates internally on 10ms (80
492 sample) frames, so we run the encoding algorithm twice. On the
493 first frame we just send the voicing bits. On the second frame we
494 send all model parameters. Compared to 2400 we use a larger number
495 of bits for the LSPs and non-VQ pitch and energy.
496
497 The bit allocation is:
498
499 Parameter bits/frame
500 --------------------------------------
501 Harmonic magnitudes (LSPs) 50
502 Pitch (Wo) 7
503 Energy 5
504 Voicing (10ms update) 2
505 TOTAL 64
506
507\*---------------------------------------------------------------------------*/
508
509void codec2_encode_3200(struct CODEC2 *c2, unsigned char * bits, short speech[])
510{
511 MODEL model;
512 float ak[LPC_ORD+1];
513 float lsps[LPC_ORD];
514 float e;
515 int Wo_index, e_index;
516 int lspd_indexes[LPC_ORD];
517 int i;
518 unsigned int nbit = 0;
519
520 assert(c2 != NULL);
521
522 memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8));
523
524 /* first 10ms analysis frame - we just want voicing */
525
526 analyse_one_frame(c2, &model, speech);
527 pack(bits, &nbit, model.voiced, 1);
528
529 /* second 10ms analysis frame */
530
531 analyse_one_frame(c2, &model, &speech[c2->n_samp]);
532 pack(bits, &nbit, model.voiced, 1);
533 Wo_index = encode_Wo(&c2->c2const, model.Wo, WO_BITS);
534 pack(bits, &nbit, Wo_index, WO_BITS);
535
536 e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, c2->m_pitch, LPC_ORD);
537 e_index = encode_energy(e, E_BITS);
538 pack(bits, &nbit, e_index, E_BITS);
539
540 encode_lspds_scalar(lspd_indexes, lsps, LPC_ORD);
541 for(i=0; i<LSPD_SCALAR_INDEXES; i++) {
542 pack(bits, &nbit, lspd_indexes[i], lspd_bits(i));
543 }
544 assert(nbit == (unsigned)codec2_bits_per_frame(c2));
545}
546
547
548/*---------------------------------------------------------------------------*\
549
550 FUNCTION....: codec2_decode_3200
551 AUTHOR......: David Rowe
552 DATE CREATED: 13 Sep 2012
553
554 Decodes a frame of 64 bits into 160 samples (20ms) of speech.
555
556\*---------------------------------------------------------------------------*/
557
558void codec2_decode_3200(struct CODEC2 *c2, short speech[], const unsigned char * bits)
559{
560 MODEL model[2];
561 int lspd_indexes[LPC_ORD];
562 float lsps[2][LPC_ORD];
563 int Wo_index, e_index;
564 float e[2];
565 float snr;
566 float ak[2][LPC_ORD+1];
567 int i,j;
568 unsigned int nbit = 0;
569 COMP Aw[FFT_ENC];
570
571 assert(c2 != NULL);
572
573 /* only need to zero these out due to (unused) snr calculation */
574
575 for(i=0; i<2; i++)
576 for(j=1; j<=MAX_AMP; j++)
577 model[i].A[j] = 0.0;
578
579 /* unpack bits from channel ------------------------------------*/
580
581 /* this will partially fill the model params for the 2 x 10ms
582 frames */
583
584 model[0].voiced = unpack(bits, &nbit, 1);
585 model[1].voiced = unpack(bits, &nbit, 1);
586
587 Wo_index = unpack(bits, &nbit, WO_BITS);
588 model[1].Wo = decode_Wo(&c2->c2const, Wo_index, WO_BITS);
589 model[1].L = PI/model[1].Wo;
590
591 e_index = unpack(bits, &nbit, E_BITS);
592 e[1] = decode_energy(e_index, E_BITS);
593
594 for(i=0; i<LSPD_SCALAR_INDEXES; i++) {
595 lspd_indexes[i] = unpack(bits, &nbit, lspd_bits(i));
596 }
597 decode_lspds_scalar(&lsps[1][0], lspd_indexes, LPC_ORD);
598
599 /* interpolate ------------------------------------------------*/
600
601 /* Wo and energy are sampled every 20ms, so we interpolate just 1
602 10ms frame between 20ms samples */
603
604 interp_Wo(&model[0], &c2->prev_model_dec, &model[1], c2->c2const.Wo_min);
605 e[0] = interp_energy(c2->prev_e_dec, e[1]);
606
607 /* LSPs are sampled every 20ms so we interpolate the frame in
608 between, then recover spectral amplitudes */
609
610 interpolate_lsp_ver2(&lsps[0][0], c2->prev_lsps_dec, &lsps[1][0], 0.5, LPC_ORD);
611
612 for(i=0; i<2; i++) {
613 lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD);
614 aks_to_M2(c2->fftr_fwd_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr, 0, 0,
615 c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma, Aw);
616 apply_lpc_correction(&model[i]);
617 synthesise_one_frame(c2, &speech[c2->n_samp*i], &model[i], Aw, 1.0);
618 }
619
620 /* update memories for next frame ----------------------------*/
621
622 c2->prev_model_dec = model[1];
623 c2->prev_e_dec = e[1];
624 for(i=0; i<LPC_ORD; i++)
625 c2->prev_lsps_dec[i] = lsps[1][i];
626}
627
628
629/*---------------------------------------------------------------------------*\
630
631 FUNCTION....: codec2_encode_2400
632 AUTHOR......: David Rowe
633 DATE CREATED: 21/8/2010
634
635 Encodes 160 speech samples (20ms of speech) into 48 bits.
636
637 The codec2 algorithm actually operates internally on 10ms (80
638 sample) frames, so we run the encoding algorithm twice. On the
639 first frame we just send the voicing bit. On the second frame we
640 send all model parameters.
641
642 The bit allocation is:
643
644 Parameter bits/frame
645 --------------------------------------
646 Harmonic magnitudes (LSPs) 36
647 Joint VQ of Energy and Wo 8
648 Voicing (10ms update) 2
649 Spare 2
650 TOTAL 48
651
652\*---------------------------------------------------------------------------*/
653
654void codec2_encode_2400(struct CODEC2 *c2, unsigned char * bits, short speech[])
655{
656 MODEL model;
657 float ak[LPC_ORD+1];
658 float lsps[LPC_ORD];
659 float e;
660 int WoE_index;
661 int lsp_indexes[LPC_ORD];
662 int i;
663 int spare = 0;
664 unsigned int nbit = 0;
665
666 assert(c2 != NULL);
667
668 memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8));
669
670 /* first 10ms analysis frame - we just want voicing */
671
672 analyse_one_frame(c2, &model, speech);
673 pack(bits, &nbit, model.voiced, 1);
674
675 /* second 10ms analysis frame */
676
677 analyse_one_frame(c2, &model, &speech[c2->n_samp]);
678 pack(bits, &nbit, model.voiced, 1);
679
680 e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, c2->m_pitch, LPC_ORD);
681 WoE_index = encode_WoE(&model, e, c2->xq_enc);
682 pack(bits, &nbit, WoE_index, WO_E_BITS);
683
684 encode_lsps_scalar(lsp_indexes, lsps, LPC_ORD);
685 for(i=0; i<LSP_SCALAR_INDEXES; i++) {
686 pack(bits, &nbit, lsp_indexes[i], lsp_bits(i));
687 }
688 pack(bits, &nbit, spare, 2);
689
690 assert(nbit == (unsigned)codec2_bits_per_frame(c2));
691}
692
693
694/*---------------------------------------------------------------------------*\
695
696 FUNCTION....: codec2_decode_2400
697 AUTHOR......: David Rowe
698 DATE CREATED: 21/8/2010
699
700 Decodes frames of 48 bits into 160 samples (20ms) of speech.
701
702\*---------------------------------------------------------------------------*/
703
704void codec2_decode_2400(struct CODEC2 *c2, short speech[], const unsigned char * bits)
705{
706 MODEL model[2];
707 int lsp_indexes[LPC_ORD];
708 float lsps[2][LPC_ORD];
709 int WoE_index;
710 float e[2];
711 float snr;
712 float ak[2][LPC_ORD+1];
713 int i,j;
714 unsigned int nbit = 0;
715 COMP Aw[FFT_ENC];
716
717 assert(c2 != NULL);
718
719 /* only need to zero these out due to (unused) snr calculation */
720
721 for(i=0; i<2; i++)
722 for(j=1; j<=MAX_AMP; j++)
723 model[i].A[j] = 0.0;
724
725 /* unpack bits from channel ------------------------------------*/
726
727 /* this will partially fill the model params for the 2 x 10ms
728 frames */
729
730 model[0].voiced = unpack(bits, &nbit, 1);
731
732 model[1].voiced = unpack(bits, &nbit, 1);
733 WoE_index = unpack(bits, &nbit, WO_E_BITS);
734 decode_WoE(&c2->c2const, &model[1], &e[1], c2->xq_dec, WoE_index);
735
736 for(i=0; i<LSP_SCALAR_INDEXES; i++) {
737 lsp_indexes[i] = unpack(bits, &nbit, lsp_bits(i));
738 }
739 decode_lsps_scalar(&lsps[1][0], lsp_indexes, LPC_ORD);
740 check_lsp_order(&lsps[1][0], LPC_ORD);
741 bw_expand_lsps(&lsps[1][0], LPC_ORD, 50.0, 100.0);
742
743 /* interpolate ------------------------------------------------*/
744
745 /* Wo and energy are sampled every 20ms, so we interpolate just 1
746 10ms frame between 20ms samples */
747
748 interp_Wo(&model[0], &c2->prev_model_dec, &model[1], c2->c2const.Wo_min);
749 e[0] = interp_energy(c2->prev_e_dec, e[1]);
750
751 /* LSPs are sampled every 20ms so we interpolate the frame in
752 between, then recover spectral amplitudes */
753
754 interpolate_lsp_ver2(&lsps[0][0], c2->prev_lsps_dec, &lsps[1][0], 0.5, LPC_ORD);
755 for(i=0; i<2; i++) {
756 lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD);
757 aks_to_M2(c2->fftr_fwd_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr, 0, 0,
758 c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma, Aw);
759 apply_lpc_correction(&model[i]);
760 synthesise_one_frame(c2, &speech[c2->n_samp*i], &model[i], Aw, 1.0);
761
762 /* dump parameters for deep learning experiments */
763
764 if (c2->fmlfeat != NULL) {
765 /* 10 LSPs - energy - Wo - voicing flag - 10 LPCs */
766 fwrite(&lsps[i][0], LPC_ORD, sizeof(float), c2->fmlfeat);
767 fwrite(&e[i], 1, sizeof(float), c2->fmlfeat);
768 fwrite(&model[i].Wo, 1, sizeof(float), c2->fmlfeat);
769 float voiced_float = model[i].voiced;
770 fwrite(&voiced_float, 1, sizeof(float), c2->fmlfeat);
771 fwrite(&ak[i][1], LPC_ORD, sizeof(float), c2->fmlfeat);
772 }
773 }
774
775 /* update memories for next frame ----------------------------*/
776
777 c2->prev_model_dec = model[1];
778 c2->prev_e_dec = e[1];
779 for(i=0; i<LPC_ORD; i++)
780 c2->prev_lsps_dec[i] = lsps[1][i];
781}
782
783
784/*---------------------------------------------------------------------------*\
785
786 FUNCTION....: codec2_encode_1600
787 AUTHOR......: David Rowe
788 DATE CREATED: Feb 28 2013
789
790 Encodes 320 speech samples (40ms of speech) into 64 bits.
791
792 The codec2 algorithm actually operates internally on 10ms (80
793 sample) frames, so we run the encoding algorithm 4 times:
794
795 frame 0: voicing bit
796 frame 1: voicing bit, Wo and E
797 frame 2: voicing bit
798 frame 3: voicing bit, Wo and E, scalar LSPs
799
800 The bit allocation is:
801
802 Parameter frame 2 frame 4 Total
803 -------------------------------------------------------
804 Harmonic magnitudes (LSPs) 0 36 36
805 Pitch (Wo) 7 7 14
806 Energy 5 5 10
807 Voicing (10ms update) 2 2 4
808 TOTAL 14 50 64
809
810\*---------------------------------------------------------------------------*/
811
812void codec2_encode_1600(struct CODEC2 *c2, unsigned char * bits, short speech[])
813{
814 MODEL model;
815 float lsps[LPC_ORD];
816 float ak[LPC_ORD+1];
817 float e;
818 int lsp_indexes[LPC_ORD];
819 int Wo_index, e_index;
820 int i;
821 unsigned int nbit = 0;
822
823 assert(c2 != NULL);
824
825 memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8));
826
827 /* frame 1: - voicing ---------------------------------------------*/
828
829 analyse_one_frame(c2, &model, speech);
830 pack(bits, &nbit, model.voiced, 1);
831
832 /* frame 2: - voicing, scalar Wo & E -------------------------------*/
833
834 analyse_one_frame(c2, &model, &speech[c2->n_samp]);
835 pack(bits, &nbit, model.voiced, 1);
836
837 Wo_index = encode_Wo(&c2->c2const, model.Wo, WO_BITS);
838 pack(bits, &nbit, Wo_index, WO_BITS);
839
840 /* need to run this just to get LPC energy */
841 e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, c2->m_pitch, LPC_ORD);
842 e_index = encode_energy(e, E_BITS);
843 pack(bits, &nbit, e_index, E_BITS);
844
845 /* frame 3: - voicing ---------------------------------------------*/
846
847 analyse_one_frame(c2, &model, &speech[2*c2->n_samp]);
848 pack(bits, &nbit, model.voiced, 1);
849
850 /* frame 4: - voicing, scalar Wo & E, scalar LSPs ------------------*/
851
852 analyse_one_frame(c2, &model, &speech[3*c2->n_samp]);
853 pack(bits, &nbit, model.voiced, 1);
854
855 Wo_index = encode_Wo(&c2->c2const, model.Wo, WO_BITS);
856 pack(bits, &nbit, Wo_index, WO_BITS);
857
858 e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, c2->m_pitch, LPC_ORD);
859 e_index = encode_energy(e, E_BITS);
860 pack(bits, &nbit, e_index, E_BITS);
861
862 encode_lsps_scalar(lsp_indexes, lsps, LPC_ORD);
863 for(i=0; i<LSP_SCALAR_INDEXES; i++) {
864 pack(bits, &nbit, lsp_indexes[i], lsp_bits(i));
865 }
866
867 assert(nbit == (unsigned)codec2_bits_per_frame(c2));
868}
869
870
871/*---------------------------------------------------------------------------*\
872
873 FUNCTION....: codec2_decode_1600
874 AUTHOR......: David Rowe
875 DATE CREATED: 11 May 2012
876
877 Decodes frames of 64 bits into 320 samples (40ms) of speech.
878
879\*---------------------------------------------------------------------------*/
880
881void codec2_decode_1600(struct CODEC2 *c2, short speech[], const unsigned char * bits)
882{
883 MODEL model[4];
884 int lsp_indexes[LPC_ORD];
885 float lsps[4][LPC_ORD];
886 int Wo_index, e_index;
887 float e[4];
888 float snr;
889 float ak[4][LPC_ORD+1];
890 int i,j;
891 unsigned int nbit = 0;
892 float weight;
893 COMP Aw[FFT_ENC];
894
895 assert(c2 != NULL);
896
897 /* only need to zero these out due to (unused) snr calculation */
898
899 for(i=0; i<4; i++)
900 for(j=1; j<=MAX_AMP; j++)
901 model[i].A[j] = 0.0;
902
903 /* unpack bits from channel ------------------------------------*/
904
905 /* this will partially fill the model params for the 4 x 10ms
906 frames */
907
908 model[0].voiced = unpack(bits, &nbit, 1);
909
910 model[1].voiced = unpack(bits, &nbit, 1);
911 Wo_index = unpack(bits, &nbit, WO_BITS);
912 model[1].Wo = decode_Wo(&c2->c2const, Wo_index, WO_BITS);
913 model[1].L = PI/model[1].Wo;
914
915 e_index = unpack(bits, &nbit, E_BITS);
916 e[1] = decode_energy(e_index, E_BITS);
917
918 model[2].voiced = unpack(bits, &nbit, 1);
919
920 model[3].voiced = unpack(bits, &nbit, 1);
921 Wo_index = unpack(bits, &nbit, WO_BITS);
922 model[3].Wo = decode_Wo(&c2->c2const, Wo_index, WO_BITS);
923 model[3].L = PI/model[3].Wo;
924
925 e_index = unpack(bits, &nbit, E_BITS);
926 e[3] = decode_energy(e_index, E_BITS);
927
928 for(i=0; i<LSP_SCALAR_INDEXES; i++) {
929 lsp_indexes[i] = unpack(bits, &nbit, lsp_bits(i));
930 }
931 decode_lsps_scalar(&lsps[3][0], lsp_indexes, LPC_ORD);
932 check_lsp_order(&lsps[3][0], LPC_ORD);
933 bw_expand_lsps(&lsps[3][0], LPC_ORD, 50.0, 100.0);
934
935 /* interpolate ------------------------------------------------*/
936
937 /* Wo and energy are sampled every 20ms, so we interpolate just 1
938 10ms frame between 20ms samples */
939
940 interp_Wo(&model[0], &c2->prev_model_dec, &model[1], c2->c2const.Wo_min);
941 e[0] = interp_energy(c2->prev_e_dec, e[1]);
942 interp_Wo(&model[2], &model[1], &model[3], c2->c2const.Wo_min);
943 e[2] = interp_energy(e[1], e[3]);
944
945 /* LSPs are sampled every 40ms so we interpolate the 3 frames in
946 between, then recover spectral amplitudes */
947
948 for(i=0, weight=0.25; i<3; i++, weight += 0.25) {
949 interpolate_lsp_ver2(&lsps[i][0], c2->prev_lsps_dec, &lsps[3][0], weight, LPC_ORD);
950 }
951 for(i=0; i<4; i++) {
952 lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD);
953 aks_to_M2(c2->fftr_fwd_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr, 0, 0,
954 c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma, Aw);
955 apply_lpc_correction(&model[i]);
956 synthesise_one_frame(c2, &speech[c2->n_samp*i], &model[i], Aw, 1.0);
957 }
958
959 /* update memories for next frame ----------------------------*/
960
961 c2->prev_model_dec = model[3];
962 c2->prev_e_dec = e[3];
963 for(i=0; i<LPC_ORD; i++)
964 c2->prev_lsps_dec[i] = lsps[3][i];
965
966}
967
968/*---------------------------------------------------------------------------*\
969
970 FUNCTION....: codec2_encode_1400
971 AUTHOR......: David Rowe
972 DATE CREATED: May 11 2012
973
974 Encodes 320 speech samples (40ms of speech) into 56 bits.
975
976 The codec2 algorithm actually operates internally on 10ms (80
977 sample) frames, so we run the encoding algorithm 4 times:
978
979 frame 0: voicing bit
980 frame 1: voicing bit, joint VQ of Wo and E
981 frame 2: voicing bit
982 frame 3: voicing bit, joint VQ of Wo and E, scalar LSPs
983
984 The bit allocation is:
985
986 Parameter frame 2 frame 4 Total
987 -------------------------------------------------------
988 Harmonic magnitudes (LSPs) 0 36 36
989 Energy+Wo 8 8 16
990 Voicing (10ms update) 2 2 4
991 TOTAL 10 46 56
992
993\*---------------------------------------------------------------------------*/
994
995void codec2_encode_1400(struct CODEC2 *c2, unsigned char * bits, short speech[])
996{
997 MODEL model;
998 float lsps[LPC_ORD];
999 float ak[LPC_ORD+1];
1000 float e;
1001 int lsp_indexes[LPC_ORD];
1002 int WoE_index;
1003 int i;
1004 unsigned int nbit = 0;
1005
1006 assert(c2 != NULL);
1007
1008 memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8));
1009
1010 /* frame 1: - voicing ---------------------------------------------*/
1011
1012 analyse_one_frame(c2, &model, speech);
1013 pack(bits, &nbit, model.voiced, 1);
1014
1015 /* frame 2: - voicing, joint Wo & E -------------------------------*/
1016
1017 analyse_one_frame(c2, &model, &speech[c2->n_samp]);
1018 pack(bits, &nbit, model.voiced, 1);
1019
1020 /* need to run this just to get LPC energy */
1021 e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, c2->m_pitch, LPC_ORD);
1022
1023 WoE_index = encode_WoE(&model, e, c2->xq_enc);
1024 pack(bits, &nbit, WoE_index, WO_E_BITS);
1025
1026 /* frame 3: - voicing ---------------------------------------------*/
1027
1028 analyse_one_frame(c2, &model, &speech[2*c2->n_samp]);
1029 pack(bits, &nbit, model.voiced, 1);
1030
1031 /* frame 4: - voicing, joint Wo & E, scalar LSPs ------------------*/
1032
1033 analyse_one_frame(c2, &model, &speech[3*c2->n_samp]);
1034 pack(bits, &nbit, model.voiced, 1);
1035
1036 e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, c2->m_pitch, LPC_ORD);
1037 WoE_index = encode_WoE(&model, e, c2->xq_enc);
1038 pack(bits, &nbit, WoE_index, WO_E_BITS);
1039
1040 encode_lsps_scalar(lsp_indexes, lsps, LPC_ORD);
1041 for(i=0; i<LSP_SCALAR_INDEXES; i++) {
1042 pack(bits, &nbit, lsp_indexes[i], lsp_bits(i));
1043 }
1044
1045 assert(nbit == (unsigned)codec2_bits_per_frame(c2));
1046}
1047
1048
1049/*---------------------------------------------------------------------------*\
1050
1051 FUNCTION....: codec2_decode_1400
1052 AUTHOR......: David Rowe
1053 DATE CREATED: 11 May 2012
1054
1055 Decodes frames of 56 bits into 320 samples (40ms) of speech.
1056
1057\*---------------------------------------------------------------------------*/
1058
1059void codec2_decode_1400(struct CODEC2 *c2, short speech[], const unsigned char * bits)
1060{
1061 MODEL model[4];
1062 int lsp_indexes[LPC_ORD];
1063 float lsps[4][LPC_ORD];
1064 int WoE_index;
1065 float e[4];
1066 float snr;
1067 float ak[4][LPC_ORD+1];
1068 int i,j;
1069 unsigned int nbit = 0;
1070 float weight;
1071 COMP Aw[FFT_ENC];
1072
1073 assert(c2 != NULL);
1074
1075 /* only need to zero these out due to (unused) snr calculation */
1076
1077 for(i=0; i<4; i++)
1078 for(j=1; j<=MAX_AMP; j++)
1079 model[i].A[j] = 0.0;
1080
1081 /* unpack bits from channel ------------------------------------*/
1082
1083 /* this will partially fill the model params for the 4 x 10ms
1084 frames */
1085
1086 model[0].voiced = unpack(bits, &nbit, 1);
1087
1088 model[1].voiced = unpack(bits, &nbit, 1);
1089 WoE_index = unpack(bits, &nbit, WO_E_BITS);
1090 decode_WoE(&c2->c2const, &model[1], &e[1], c2->xq_dec, WoE_index);
1091
1092 model[2].voiced = unpack(bits, &nbit, 1);
1093
1094 model[3].voiced = unpack(bits, &nbit, 1);
1095 WoE_index = unpack(bits, &nbit, WO_E_BITS);
1096 decode_WoE(&c2->c2const, &model[3], &e[3], c2->xq_dec, WoE_index);
1097
1098 for(i=0; i<LSP_SCALAR_INDEXES; i++) {
1099 lsp_indexes[i] = unpack(bits, &nbit, lsp_bits(i));
1100 }
1101 decode_lsps_scalar(&lsps[3][0], lsp_indexes, LPC_ORD);
1102 check_lsp_order(&lsps[3][0], LPC_ORD);
1103 bw_expand_lsps(&lsps[3][0], LPC_ORD, 50.0, 100.0);
1104
1105 /* interpolate ------------------------------------------------*/
1106
1107 /* Wo and energy are sampled every 20ms, so we interpolate just 1
1108 10ms frame between 20ms samples */
1109
1110 interp_Wo(&model[0], &c2->prev_model_dec, &model[1], c2->c2const.Wo_min);
1111 e[0] = interp_energy(c2->prev_e_dec, e[1]);
1112 interp_Wo(&model[2], &model[1], &model[3], c2->c2const.Wo_min);
1113 e[2] = interp_energy(e[1], e[3]);
1114
1115 /* LSPs are sampled every 40ms so we interpolate the 3 frames in
1116 between, then recover spectral amplitudes */
1117
1118 for(i=0, weight=0.25; i<3; i++, weight += 0.25) {
1119 interpolate_lsp_ver2(&lsps[i][0], c2->prev_lsps_dec, &lsps[3][0], weight, LPC_ORD);
1120 }
1121 for(i=0; i<4; i++) {
1122 lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD);
1123 aks_to_M2(c2->fftr_fwd_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr, 0, 0,
1124 c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma, Aw);
1125 apply_lpc_correction(&model[i]);
1126 synthesise_one_frame(c2, &speech[c2->n_samp*i], &model[i], Aw, 1.0);
1127 }
1128
1129 /* update memories for next frame ----------------------------*/
1130
1131 c2->prev_model_dec = model[3];
1132 c2->prev_e_dec = e[3];
1133 for(i=0; i<LPC_ORD; i++)
1134 c2->prev_lsps_dec[i] = lsps[3][i];
1135
1136}
1137
1138/*---------------------------------------------------------------------------*\
1139
1140 FUNCTION....: codec2_encode_1300
1141 AUTHOR......: David Rowe
1142 DATE CREATED: March 14 2013
1143
1144 Encodes 320 speech samples (40ms of speech) into 52 bits.
1145
1146 The codec2 algorithm actually operates internally on 10ms (80
1147 sample) frames, so we run the encoding algorithm 4 times:
1148
1149 frame 0: voicing bit
1150 frame 1: voicing bit,
1151 frame 2: voicing bit
1152 frame 3: voicing bit, Wo and E, scalar LSPs
1153
1154 The bit allocation is:
1155
1156 Parameter frame 2 frame 4 Total
1157 -------------------------------------------------------
1158 Harmonic magnitudes (LSPs) 0 36 36
1159 Pitch (Wo) 0 7 7
1160 Energy 0 5 5
1161 Voicing (10ms update) 2 2 4
1162 TOTAL 2 50 52
1163
1164\*---------------------------------------------------------------------------*/
1165
1166void codec2_encode_1300(struct CODEC2 *c2, unsigned char * bits, short speech[])
1167{
1168 MODEL model;
1169 float lsps[LPC_ORD];
1170 float ak[LPC_ORD+1];
1171 float e;
1172 int lsp_indexes[LPC_ORD];
1173 int Wo_index, e_index;
1174 int i;
1175 unsigned int nbit = 0;
1176 //#ifdef PROFILE
1177 //unsigned int quant_start;
1178 //#endif
1179
1180 assert(c2 != NULL);
1181
1182 memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8));
1183
1184 /* frame 1: - voicing ---------------------------------------------*/
1185
1186 analyse_one_frame(c2, &model, speech);
1187 pack_natural_or_gray(bits, &nbit, model.voiced, 1, c2->gray);
1188
1189 /* frame 2: - voicing ---------------------------------------------*/
1190
1191 analyse_one_frame(c2, &model, &speech[c2->n_samp]);
1192 pack_natural_or_gray(bits, &nbit, model.voiced, 1, c2->gray);
1193
1194 /* frame 3: - voicing ---------------------------------------------*/
1195
1196 analyse_one_frame(c2, &model, &speech[2*c2->n_samp]);
1197 pack_natural_or_gray(bits, &nbit, model.voiced, 1, c2->gray);
1198
1199 /* frame 4: - voicing, scalar Wo & E, scalar LSPs ------------------*/
1200
1201 analyse_one_frame(c2, &model, &speech[3*c2->n_samp]);
1202 pack_natural_or_gray(bits, &nbit, model.voiced, 1, c2->gray);
1203
1204 Wo_index = encode_Wo(&c2->c2const, model.Wo, WO_BITS);
1205 pack_natural_or_gray(bits, &nbit, Wo_index, WO_BITS, c2->gray);
1206
1207 //#ifdef PROFILE
1208 //quant_start = machdep_profile_sample();
1209 //#endif
1210 e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, c2->m_pitch, LPC_ORD);
1211 e_index = encode_energy(e, E_BITS);
1212 pack_natural_or_gray(bits, &nbit, e_index, E_BITS, c2->gray);
1213
1214 encode_lsps_scalar(lsp_indexes, lsps, LPC_ORD);
1215 for(i=0; i<LSP_SCALAR_INDEXES; i++) {
1216 pack_natural_or_gray(bits, &nbit, lsp_indexes[i], lsp_bits(i), c2->gray);
1217 }
1218 //#ifdef PROFILE
1219 //machdep_profile_sample_and_log(quant_start, " quant/packing");
1220 //#endif
1221
1222 assert(nbit == (unsigned)codec2_bits_per_frame(c2));
1223}
1224
1225
1226/*---------------------------------------------------------------------------*\
1227
1228 FUNCTION....: codec2_decode_1300
1229 AUTHOR......: David Rowe
1230 DATE CREATED: 11 May 2012
1231
1232 Decodes frames of 52 bits into 320 samples (40ms) of speech.
1233
1234\*---------------------------------------------------------------------------*/
1235static int frames;
1236void codec2_decode_1300(struct CODEC2 *c2, short speech[], const unsigned char * bits, float ber_est)
1237{
1238 MODEL model[4];
1239 int lsp_indexes[LPC_ORD];
1240 float lsps[4][LPC_ORD];
1241 int Wo_index, e_index;
1242 float e[4];
1243 float snr;
1244 float ak[4][LPC_ORD+1];
1245 int i,j;
1246 unsigned int nbit = 0;
1247 float weight;
1248 COMP Aw[FFT_ENC];
1249 //PROFILE_VAR(recover_start);
1250
1251 assert(c2 != NULL);
1252 frames+= 4;
1253 /* only need to zero these out due to (unused) snr calculation */
1254
1255 for(i=0; i<4; i++)
1256 for(j=1; j<=MAX_AMP; j++)
1257 model[i].A[j] = 0.0;
1258
1259 /* unpack bits from channel ------------------------------------*/
1260
1261 /* this will partially fill the model params for the 4 x 10ms
1262 frames */
1263
1264 model[0].voiced = unpack_natural_or_gray(bits, &nbit, 1, c2->gray);
1265 model[1].voiced = unpack_natural_or_gray(bits, &nbit, 1, c2->gray);
1266 model[2].voiced = unpack_natural_or_gray(bits, &nbit, 1, c2->gray);
1267 model[3].voiced = unpack_natural_or_gray(bits, &nbit, 1, c2->gray);
1268
1269 Wo_index = unpack_natural_or_gray(bits, &nbit, WO_BITS, c2->gray);
1270 model[3].Wo = decode_Wo(&c2->c2const, Wo_index, WO_BITS);
1271 model[3].L = PI/model[3].Wo;
1272
1273 e_index = unpack_natural_or_gray(bits, &nbit, E_BITS, c2->gray);
1274 e[3] = decode_energy(e_index, E_BITS);
1275 //fprintf(stderr, "%d %f\n", e_index, e[3]);
1276
1277 for(i=0; i<LSP_SCALAR_INDEXES; i++) {
1278 lsp_indexes[i] = unpack_natural_or_gray(bits, &nbit, lsp_bits(i), c2->gray);
1279 }
1280 decode_lsps_scalar(&lsps[3][0], lsp_indexes, LPC_ORD);
1281 check_lsp_order(&lsps[3][0], LPC_ORD);
1282 bw_expand_lsps(&lsps[3][0], LPC_ORD, 50.0, 100.0);
1283
1284 if (ber_est > 0.15) {
1285 model[0].voiced = model[1].voiced = model[2].voiced = model[3].voiced = 0;
1286 e[3] = decode_energy(10, E_BITS);
1287 bw_expand_lsps(&lsps[3][0], LPC_ORD, 200.0, 200.0);
1288 //fprintf(stderr, "soft mute\n");
1289 }
1290
1291 /* interpolate ------------------------------------------------*/
1292
1293 /* Wo, energy, and LSPs are sampled every 40ms so we interpolate
1294 the 3 frames in between */
1295
1296 //PROFILE_SAMPLE(recover_start);
1297 for(i=0, weight=0.25; i<3; i++, weight += 0.25) {
1298 interpolate_lsp_ver2(&lsps[i][0], c2->prev_lsps_dec, &lsps[3][0], weight, LPC_ORD);
1299 interp_Wo2(&model[i], &c2->prev_model_dec, &model[3], weight, c2->c2const.Wo_min);
1300 e[i] = interp_energy2(c2->prev_e_dec, e[3],weight);
1301 }
1302
1303 /* then recover spectral amplitudes */
1304
1305 for(i=0; i<4; i++) {
1306 lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD);
1307 aks_to_M2(c2->fftr_fwd_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr, 0, 0,
1308 c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma, Aw);
1309 apply_lpc_correction(&model[i]);
1310 synthesise_one_frame(c2, &speech[c2->n_samp*i], &model[i], Aw, 1.0);
1311
1312 /* dump parameters for deep learning experiments */
1313
1314 if (c2->fmlfeat != NULL) {
1315 /* 10 LSPs - energy - Wo - voicing flag - 10 LPCs */
1316 fwrite(&lsps[i][0], LPC_ORD, sizeof(float), c2->fmlfeat);
1317 fwrite(&e[i], 1, sizeof(float), c2->fmlfeat);
1318 fwrite(&model[i].Wo, 1, sizeof(float), c2->fmlfeat);
1319 float voiced_float = model[i].voiced;
1320 fwrite(&voiced_float, 1, sizeof(float), c2->fmlfeat);
1321 fwrite(&ak[i][1], LPC_ORD, sizeof(float), c2->fmlfeat);
1322 }
1323 }
1324 /*
1325 for(i=0; i<4; i++) {
1326 printf("%d Wo: %f L: %d v: %d\n", frames, model[i].Wo, model[i].L, model[i].voiced);
1327 }
1328 if (frames == 4*50)
1329 exit(0);
1330 */
1331 //PROFILE_SAMPLE_AND_LOG2(recover_start, " recover");
1332 #ifdef DUMP
1333 dump_lsp_(&lsps[3][0]);
1334 dump_ak_(&ak[3][0], LPC_ORD);
1335 #endif
1336
1337 /* update memories for next frame ----------------------------*/
1338
1339 c2->prev_model_dec = model[3];
1340 c2->prev_e_dec = e[3];
1341 for(i=0; i<LPC_ORD; i++)
1342 c2->prev_lsps_dec[i] = lsps[3][i];
1343
1344}
1345
1346
1347/*---------------------------------------------------------------------------*\
1348
1349 FUNCTION....: codec2_encode_1200
1350 AUTHOR......: David Rowe
1351 DATE CREATED: Nov 14 2011
1352
1353 Encodes 320 speech samples (40ms of speech) into 48 bits.
1354
1355 The codec2 algorithm actually operates internally on 10ms (80
1356 sample) frames, so we run the encoding algorithm four times:
1357
1358 frame 0: voicing bit
1359 frame 1: voicing bit, joint VQ of Wo and E
1360 frame 2: voicing bit
1361 frame 3: voicing bit, joint VQ of Wo and E, VQ LSPs
1362
1363 The bit allocation is:
1364
1365 Parameter frame 2 frame 4 Total
1366 -------------------------------------------------------
1367 Harmonic magnitudes (LSPs) 0 27 27
1368 Energy+Wo 8 8 16
1369 Voicing (10ms update) 2 2 4
1370 Spare 0 1 1
1371 TOTAL 10 38 48
1372
1373\*---------------------------------------------------------------------------*/
1374
1375void codec2_encode_1200(struct CODEC2 *c2, unsigned char * bits, short speech[])
1376{
1377 MODEL model;
1378 float lsps[LPC_ORD];
1379 float lsps_[LPC_ORD];
1380 float ak[LPC_ORD+1];
1381 float e;
1382 int lsp_indexes[LPC_ORD];
1383 int WoE_index;
1384 int i;
1385 int spare = 0;
1386 unsigned int nbit = 0;
1387
1388 assert(c2 != NULL);
1389
1390 memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8));
1391
1392 /* frame 1: - voicing ---------------------------------------------*/
1393
1394 analyse_one_frame(c2, &model, speech);
1395 pack(bits, &nbit, model.voiced, 1);
1396
1397 /* frame 2: - voicing, joint Wo & E -------------------------------*/
1398
1399 analyse_one_frame(c2, &model, &speech[c2->n_samp]);
1400 pack(bits, &nbit, model.voiced, 1);
1401
1402 /* need to run this just to get LPC energy */
1403 e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, c2->m_pitch, LPC_ORD);
1404
1405 WoE_index = encode_WoE(&model, e, c2->xq_enc);
1406 pack(bits, &nbit, WoE_index, WO_E_BITS);
1407
1408 /* frame 3: - voicing ---------------------------------------------*/
1409
1410 analyse_one_frame(c2, &model, &speech[2*c2->n_samp]);
1411 pack(bits, &nbit, model.voiced, 1);
1412
1413 /* frame 4: - voicing, joint Wo & E, scalar LSPs ------------------*/
1414
1415 analyse_one_frame(c2, &model, &speech[3*c2->n_samp]);
1416 pack(bits, &nbit, model.voiced, 1);
1417
1418 e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, c2->m_pitch, LPC_ORD);
1419 WoE_index = encode_WoE(&model, e, c2->xq_enc);
1420 pack(bits, &nbit, WoE_index, WO_E_BITS);
1421
1422 encode_lsps_vq(lsp_indexes, lsps, lsps_, LPC_ORD);
1423 for(i=0; i<LSP_PRED_VQ_INDEXES; i++) {
1424 pack(bits, &nbit, lsp_indexes[i], lsp_pred_vq_bits(i));
1425 }
1426 pack(bits, &nbit, spare, 1);
1427
1428 assert(nbit == (unsigned)codec2_bits_per_frame(c2));
1429}
1430
1431
1432/*---------------------------------------------------------------------------*\
1433
1434 FUNCTION....: codec2_decode_1200
1435 AUTHOR......: David Rowe
1436 DATE CREATED: 14 Feb 2012
1437
1438 Decodes frames of 48 bits into 320 samples (40ms) of speech.
1439
1440\*---------------------------------------------------------------------------*/
1441
1442void codec2_decode_1200(struct CODEC2 *c2, short speech[], const unsigned char * bits)
1443{
1444 MODEL model[4];
1445 int lsp_indexes[LPC_ORD];
1446 float lsps[4][LPC_ORD];
1447 int WoE_index;
1448 float e[4];
1449 float snr;
1450 float ak[4][LPC_ORD+1];
1451 int i,j;
1452 unsigned int nbit = 0;
1453 float weight;
1454 COMP Aw[FFT_ENC];
1455
1456 assert(c2 != NULL);
1457
1458 /* only need to zero these out due to (unused) snr calculation */
1459
1460 for(i=0; i<4; i++)
1461 for(j=1; j<=MAX_AMP; j++)
1462 model[i].A[j] = 0.0;
1463
1464 /* unpack bits from channel ------------------------------------*/
1465
1466 /* this will partially fill the model params for the 4 x 10ms
1467 frames */
1468
1469 model[0].voiced = unpack(bits, &nbit, 1);
1470
1471 model[1].voiced = unpack(bits, &nbit, 1);
1472 WoE_index = unpack(bits, &nbit, WO_E_BITS);
1473 decode_WoE(&c2->c2const, &model[1], &e[1], c2->xq_dec, WoE_index);
1474
1475 model[2].voiced = unpack(bits, &nbit, 1);
1476
1477 model[3].voiced = unpack(bits, &nbit, 1);
1478 WoE_index = unpack(bits, &nbit, WO_E_BITS);
1479 decode_WoE(&c2->c2const, &model[3], &e[3], c2->xq_dec, WoE_index);
1480
1481 for(i=0; i<LSP_PRED_VQ_INDEXES; i++) {
1482 lsp_indexes[i] = unpack(bits, &nbit, lsp_pred_vq_bits(i));
1483 }
1484 decode_lsps_vq(lsp_indexes, &lsps[3][0], LPC_ORD , 0);
1485 check_lsp_order(&lsps[3][0], LPC_ORD);
1486 bw_expand_lsps(&lsps[3][0], LPC_ORD, 50.0, 100.0);
1487
1488 /* interpolate ------------------------------------------------*/
1489
1490 /* Wo and energy are sampled every 20ms, so we interpolate just 1
1491 10ms frame between 20ms samples */
1492
1493 interp_Wo(&model[0], &c2->prev_model_dec, &model[1], c2->c2const.Wo_min);
1494 e[0] = interp_energy(c2->prev_e_dec, e[1]);
1495 interp_Wo(&model[2], &model[1], &model[3], c2->c2const.Wo_min);
1496 e[2] = interp_energy(e[1], e[3]);
1497
1498 /* LSPs are sampled every 40ms so we interpolate the 3 frames in
1499 between, then recover spectral amplitudes */
1500
1501 for(i=0, weight=0.25; i<3; i++, weight += 0.25) {
1502 interpolate_lsp_ver2(&lsps[i][0], c2->prev_lsps_dec, &lsps[3][0], weight, LPC_ORD);
1503 }
1504 for(i=0; i<4; i++) {
1505 lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD);
1506 aks_to_M2(c2->fftr_fwd_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr, 0, 0,
1507 c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma, Aw);
1508 apply_lpc_correction(&model[i]);
1509 synthesise_one_frame(c2, &speech[c2->n_samp*i], &model[i], Aw, 1.0);
1510 }
1511
1512 /* update memories for next frame ----------------------------*/
1513
1514 c2->prev_model_dec = model[3];
1515 c2->prev_e_dec = e[3];
1516 for(i=0; i<LPC_ORD; i++)
1517 c2->prev_lsps_dec[i] = lsps[3][i];
1518}
1519
1520
1521#ifndef CORTEX_M4
1522/*---------------------------------------------------------------------------*\
1523
1524 FUNCTION....: codec2_encode_700
1525 AUTHOR......: David Rowe
1526 DATE CREATED: April 2015
1527
1528 Encodes 320 speech samples (40ms of speech) into 28 bits.
1529
1530 The codec2 algorithm actually operates internally on 10ms (80
1531 sample) frames, so we run the encoding algorithm four times:
1532
1533 frame 0: nothing
1534 frame 1: nothing
1535 frame 2: nothing
1536 frame 3: voicing bit, scalar Wo and E, 17 bit LSP MEL scalar, 2 spare
1537
1538 The bit allocation is:
1539
1540 Parameter frames 1-3 frame 4 Total
1541 -----------------------------------------------------------
1542 Harmonic magnitudes (LSPs) 0 17 17
1543 Energy 0 3 3
1544 log Wo 0 5 5
1545 Voicing 0 1 1
1546 spare 0 2 2
1547 TOTAL 0 28 28
1548
1549\*---------------------------------------------------------------------------*/
1550
1551void codec2_encode_700(struct CODEC2 *c2, unsigned char * bits, short speech[])
1552{
1553 MODEL model;
1554 float lsps[LPC_ORD_LOW];
1555 float mel[LPC_ORD_LOW];
1556 float ak[LPC_ORD_LOW+1];
1557 float e, f;
1558 int indexes[LPC_ORD_LOW];
1559 int Wo_index, e_index, i;
1560 unsigned int nbit = 0;
1561 float bpf_out[4*c2->n_samp];
1562 short bpf_speech[4*c2->n_samp];
1563 int spare = 0;
1564
1565 assert(c2 != NULL);
1566
1567 memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8));
1568
1569 /* band pass filter */
1570
1571 for(i=0; i<BPF_N; i++)
1572 c2->bpf_buf[i] = c2->bpf_buf[4*c2->n_samp+i];
1573 for(i=0; i<4*c2->n_samp; i++)
1574 c2->bpf_buf[BPF_N+i] = speech[i];
1575 inverse_filter(&c2->bpf_buf[BPF_N], bpf, 4*c2->n_samp, bpf_out, BPF_N-1);
1576 for(i=0; i<4*c2->n_samp; i++)
1577 bpf_speech[i] = bpf_out[i];
1578
1579 /* frame 1 --------------------------------------------------------*/
1580
1581 analyse_one_frame(c2, &model, bpf_speech);
1582
1583 /* frame 2 --------------------------------------------------------*/
1584
1585 analyse_one_frame(c2, &model, &bpf_speech[c2->n_samp]);
1586
1587 /* frame 3 --------------------------------------------------------*/
1588
1589 analyse_one_frame(c2, &model, &bpf_speech[2*c2->n_samp]);
1590
1591 /* frame 4: - voicing, scalar Wo & E, scalar LSPs -----------------*/
1592
1593 analyse_one_frame(c2, &model, &bpf_speech[3*c2->n_samp]);
1594 pack(bits, &nbit, model.voiced, 1);
1595 Wo_index = encode_log_Wo(&c2->c2const, model.Wo, 5);
1596 pack_natural_or_gray(bits, &nbit, Wo_index, 5, c2->gray);
1597
1598 e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, c2->m_pitch, LPC_ORD_LOW);
1599 e_index = encode_energy(e, 3);
1600 pack_natural_or_gray(bits, &nbit, e_index, 3, c2->gray);
1601
1602 for(i=0; i<LPC_ORD_LOW; i++) {
1603 f = (4000.0/PI)*lsps[i];
1604 mel[i] = floor(2595.0*log10(1.0 + f/700.0) + 0.5);
1605 }
1606 encode_mels_scalar(indexes, mel, LPC_ORD_LOW);
1607
1608 for(i=0; i<LPC_ORD_LOW; i++) {
1609 pack_natural_or_gray(bits, &nbit, indexes[i], mel_bits(i), c2->gray);
1610 }
1611
1612 pack_natural_or_gray(bits, &nbit, spare, 2, c2->gray);
1613
1614 assert(nbit == (unsigned)codec2_bits_per_frame(c2));
1615}
1616
1617
1618/*---------------------------------------------------------------------------*\
1619
1620 FUNCTION....: codec2_decode_700
1621 AUTHOR......: David Rowe
1622 DATE CREATED: April 2015
1623
1624 Decodes frames of 28 bits into 320 samples (40ms) of speech.
1625
1626\*---------------------------------------------------------------------------*/
1627
1628void codec2_decode_700(struct CODEC2 *c2, short speech[], const unsigned char * bits)
1629{
1630 MODEL model[4];
1631 int indexes[LPC_ORD_LOW];
1632 float mel[LPC_ORD_LOW];
1633 float lsps[4][LPC_ORD_LOW];
1634 int Wo_index, e_index;
1635 float e[4];
1636 float snr, f_;
1637 float ak[4][LPC_ORD_LOW+1];
1638 int i,j;
1639 unsigned int nbit = 0;
1640 float weight;
1641 COMP Aw[FFT_ENC];
1642
1643 assert(c2 != NULL);
1644
1645 /* only need to zero these out due to (unused) snr calculation */
1646
1647 for(i=0; i<4; i++)
1648 for(j=1; j<=MAX_AMP; j++)
1649 model[i].A[j] = 0.0;
1650
1651 /* unpack bits from channel ------------------------------------*/
1652
1653 model[3].voiced = unpack(bits, &nbit, 1);
1654 model[0].voiced = model[1].voiced = model[2].voiced = model[3].voiced;
1655
1656 Wo_index = unpack_natural_or_gray(bits, &nbit, 5, c2->gray);
1657 model[3].Wo = decode_log_Wo(&c2->c2const, Wo_index, 5);
1658 model[3].L = PI/model[3].Wo;
1659
1660 e_index = unpack_natural_or_gray(bits, &nbit, 3, c2->gray);
1661 e[3] = decode_energy(e_index, 3);
1662
1663 for(i=0; i<LPC_ORD_LOW; i++) {
1664 indexes[i] = unpack_natural_or_gray(bits, &nbit, mel_bits(i), c2->gray);
1665 }
1666
1667 decode_mels_scalar(mel, indexes, LPC_ORD_LOW);
1668 for(i=0; i<LPC_ORD_LOW; i++) {
1669 f_ = 700.0*( pow(10.0, (float)mel[i]/2595.0) - 1.0);
1670 lsps[3][i] = f_*(PI/4000.0);
1671 //printf("lsps[3][%d] %f\n", i, lsps[3][i]);
1672 }
1673
1674 check_lsp_order(&lsps[3][0], LPC_ORD_LOW);
1675 bw_expand_lsps(&lsps[3][0], LPC_ORD_LOW, 50.0, 100.0);
1676
1677 #ifdef MASK_NOT_FOR_NOW
1678 /* first pass at soft decn error masking, needs further work */
1679 /* If soft dec info available expand further for low power frames */
1680
1681 if (c2->softdec) {
1682 float e = 0.0;
1683 for(i=9; i<9+17; i++)
1684 e += c2->softdec[i]*c2->softdec[i];
1685 e /= 6.0;
1686 //fprintf(stderr, "e: %f\n", e);
1687 //if (e < 0.3)
1688 // bw_expand_lsps(&lsps[3][0], LPC_ORD_LOW, 150.0, 300.0);
1689 }
1690 #endif
1691
1692 /* interpolate ------------------------------------------------*/
1693
1694 /* LSPs, Wo, and energy are sampled every 40ms so we interpolate
1695 the 3 frames in between, then recover spectral amplitudes */
1696
1697 for(i=0, weight=0.25; i<3; i++, weight += 0.25) {
1698 interpolate_lsp_ver2(&lsps[i][0], c2->prev_lsps_dec, &lsps[3][0], weight, LPC_ORD_LOW);
1699 interp_Wo2(&model[i], &c2->prev_model_dec, &model[3], weight, c2->c2const.Wo_min);
1700 e[i] = interp_energy2(c2->prev_e_dec, e[3],weight);
1701 }
1702 for(i=0; i<4; i++) {
1703 lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD_LOW);
1704 aks_to_M2(c2->fftr_fwd_cfg, &ak[i][0], LPC_ORD_LOW, &model[i], e[i], &snr, 0, 0,
1705 c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma, Aw);
1706 apply_lpc_correction(&model[i]);
1707 synthesise_one_frame(c2, &speech[c2->n_samp*i], &model[i], Aw, 1.0);
1708 }
1709
1710 #ifdef DUMP
1711 dump_lsp_(&lsps[3][0]);
1712 dump_ak_(&ak[3][0], LPC_ORD_LOW);
1713 dump_model(&model[3]);
1714 if (c2->softdec)
1715 dump_softdec(c2->softdec, nbit);
1716 #endif
1717
1718 /* update memories for next frame ----------------------------*/
1719
1720 c2->prev_model_dec = model[3];
1721 c2->prev_e_dec = e[3];
1722 for(i=0; i<LPC_ORD_LOW; i++)
1723 c2->prev_lsps_dec[i] = lsps[3][i];
1724}
1725
1726
1727/*---------------------------------------------------------------------------*\
1728
1729 FUNCTION....: codec2_encode_700b
1730 AUTHOR......: David Rowe
1731 DATE CREATED: August 2015
1732
1733 Version b of 700 bit/s codec. After some experiments over the air I
1734 wanted was unhappy with the rate 700 codec so spent a few weeks
1735 trying to improve the speech quality. This version uses a wider BPF
1736 and vector quantised mel-lsps.
1737
1738 Encodes 320 speech samples (40ms of speech) into 28 bits.
1739
1740 The codec2 algorithm actually operates internally on 10ms (80
1741 sample) frames, so we run the encoding algorithm four times:
1742
1743 frame 0: nothing
1744 frame 1: nothing
1745 frame 2: nothing
1746 frame 3: voicing bit, 5 bit scalar Wo and 3 bit E, 18 bit LSP MEL VQ,
1747 1 spare
1748
1749 The bit allocation is:
1750
1751 Parameter frames 1-3 frame 4 Total
1752 -----------------------------------------------------------
1753 Harmonic magnitudes (LSPs) 0 18 18
1754 Energy 0 3 3
1755 log Wo 0 5 5
1756 Voicing 0 1 1
1757 spare 0 1 1
1758 TOTAL 0 28 28
1759
1760\*---------------------------------------------------------------------------*/
1761
1762void codec2_encode_700b(struct CODEC2 *c2, unsigned char * bits, short speech[])
1763{
1764 MODEL model;
1765 float lsps[LPC_ORD_LOW];
1766 float mel[LPC_ORD_LOW];
1767 float mel_[LPC_ORD_LOW];
1768 float ak[LPC_ORD_LOW+1];
1769 float e, f;
1770 int indexes[3];
1771 int Wo_index, e_index, i;
1772 unsigned int nbit = 0;
1773 float bpf_out[4*c2->n_samp];
1774 short bpf_speech[4*c2->n_samp];
1775 int spare = 0;
1776
1777 assert(c2 != NULL);
1778
1779 memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8));
1780
1781 /* band pass filter */
1782
1783 for(i=0; i<BPF_N; i++)
1784 c2->bpf_buf[i] = c2->bpf_buf[4*c2->n_samp+i];
1785 for(i=0; i<4*c2->n_samp; i++)
1786 c2->bpf_buf[BPF_N+i] = speech[i];
1787 inverse_filter(&c2->bpf_buf[BPF_N], bpfb, 4*c2->n_samp, bpf_out, BPF_N-1);
1788 for(i=0; i<4*c2->n_samp; i++)
1789 bpf_speech[i] = bpf_out[i];
1790
1791 /* frame 1 --------------------------------------------------------*/
1792
1793 analyse_one_frame(c2, &model, bpf_speech);
1794
1795 /* frame 2 --------------------------------------------------------*/
1796
1797 analyse_one_frame(c2, &model, &bpf_speech[c2->n_samp]);
1798
1799 /* frame 3 --------------------------------------------------------*/
1800
1801 analyse_one_frame(c2, &model, &bpf_speech[2*c2->n_samp]);
1802
1803 /* frame 4: - voicing, scalar Wo & E, VQ mel LSPs -----------------*/
1804
1805 analyse_one_frame(c2, &model, &bpf_speech[3*c2->n_samp]);
1806 pack(bits, &nbit, model.voiced, 1);
1807 Wo_index = encode_log_Wo(&c2->c2const, model.Wo, 5);
1808 pack_natural_or_gray(bits, &nbit, Wo_index, 5, c2->gray);
1809
1810 e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, c2->m_pitch, LPC_ORD_LOW);
1811 e_index = encode_energy(e, 3);
1812 pack_natural_or_gray(bits, &nbit, e_index, 3, c2->gray);
1813
1814 for(i=0; i<LPC_ORD_LOW; i++) {
1815 f = (4000.0/PI)*lsps[i];
1816 mel[i] = floor(2595.0*log10(1.0 + f/700.0) + 0.5);
1817 }
1818 lspmelvq_mbest_encode(indexes, mel, mel_, LPC_ORD_LOW, 5);
1819
1820 for(i=0; i<3; i++) {
1821 pack_natural_or_gray(bits, &nbit, indexes[i], lspmelvq_cb_bits(i), c2->gray);
1822 }
1823
1824 pack_natural_or_gray(bits, &nbit, spare, 1, c2->gray);
1825
1826 assert(nbit == (unsigned)codec2_bits_per_frame(c2));
1827}
1828
1829
1830/*---------------------------------------------------------------------------*\
1831
1832 FUNCTION....: codec2_decode_700b
1833 AUTHOR......: David Rowe
1834 DATE CREATED: August 2015
1835
1836 Decodes frames of 28 bits into 320 samples (40ms) of speech.
1837
1838\*---------------------------------------------------------------------------*/
1839
1840void codec2_decode_700b(struct CODEC2 *c2, short speech[], const unsigned char * bits)
1841{
1842 MODEL model[4];
1843 int indexes[3];
1844 float mel[LPC_ORD_LOW];
1845 float lsps[4][LPC_ORD_LOW];
1846 int Wo_index, e_index;
1847 float e[4];
1848 float snr, f_;
1849 float ak[4][LPC_ORD_LOW+1];
1850 int i,j;
1851 unsigned int nbit = 0;
1852 float weight;
1853 COMP Aw[FFT_ENC];
1854
1855 assert(c2 != NULL);
1856
1857 /* only need to zero these out due to (unused) snr calculation */
1858
1859 for(i=0; i<4; i++)
1860 for(j=1; j<=MAX_AMP; j++)
1861 model[i].A[j] = 0.0;
1862
1863 /* unpack bits from channel ------------------------------------*/
1864
1865 model[3].voiced = unpack(bits, &nbit, 1);
1866 model[0].voiced = model[1].voiced = model[2].voiced = model[3].voiced;
1867
1868 Wo_index = unpack_natural_or_gray(bits, &nbit, 5, c2->gray);
1869 model[3].Wo = decode_log_Wo(&c2->c2const, Wo_index, 5);
1870 model[3].L = PI/model[3].Wo;
1871
1872 e_index = unpack_natural_or_gray(bits, &nbit, 3, c2->gray);
1873 e[3] = decode_energy(e_index, 3);
1874
1875 for(i=0; i<3; i++) {
1876 indexes[i] = unpack_natural_or_gray(bits, &nbit, lspmelvq_cb_bits(i), c2->gray);
1877 }
1878
1879 lspmelvq_decode(indexes, mel, LPC_ORD_LOW);
1880
1881 #define MEL_ROUND 10
1882 for(i=1; i<LPC_ORD_LOW; i++) {
1883 if (mel[i] <= mel[i-1]+MEL_ROUND) {
1884 mel[i]+=MEL_ROUND/2;
1885 mel[i-1]-=MEL_ROUND/2;
1886 i = 1;
1887 }
1888 }
1889
1890 for(i=0; i<LPC_ORD_LOW; i++) {
1891 f_ = 700.0*( pow(10.0, (float)mel[i]/2595.0) - 1.0);
1892 lsps[3][i] = f_*(PI/4000.0);
1893 //printf("lsps[3][%d] %f\n", i, lsps[3][i]);
1894 }
1895
1896 /* interpolate ------------------------------------------------*/
1897
1898 /* LSPs, Wo, and energy are sampled every 40ms so we interpolate
1899 the 3 frames in between, then recover spectral amplitudes */
1900
1901 for(i=0, weight=0.25; i<3; i++, weight += 0.25) {
1902 interpolate_lsp_ver2(&lsps[i][0], c2->prev_lsps_dec, &lsps[3][0], weight, LPC_ORD_LOW);
1903 interp_Wo2(&model[i], &c2->prev_model_dec, &model[3], weight, c2->c2const.Wo_min);
1904 e[i] = interp_energy2(c2->prev_e_dec, e[3],weight);
1905 }
1906 for(i=0; i<4; i++) {
1907 lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD_LOW);
1908 aks_to_M2(c2->fftr_fwd_cfg, &ak[i][0], LPC_ORD_LOW, &model[i], e[i], &snr, 0, 0,
1909 c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma, Aw);
1910 apply_lpc_correction(&model[i]);
1911 synthesise_one_frame(c2, &speech[c2->n_samp*i], &model[i], Aw, 1.0);
1912 }
1913
1914 #ifdef DUMP
1915 dump_lsp_(&lsps[3][0]);
1916 dump_ak_(&ak[3][0], LPC_ORD_LOW);
1917 dump_model(&model[3]);
1918 if (c2->softdec)
1919 dump_softdec(c2->softdec, nbit);
1920 #endif
1921
1922 /* update memories for next frame ----------------------------*/
1923
1924 c2->prev_model_dec = model[3];
1925 c2->prev_e_dec = e[3];
1926 for(i=0; i<LPC_ORD_LOW; i++)
1927 c2->prev_lsps_dec[i] = lsps[3][i];
1928}
1929#endif
1930
1931
1932/*---------------------------------------------------------------------------*\
1933
1934 FUNCTION....: codec2_encode_700c
1935 AUTHOR......: David Rowe
1936 DATE CREATED: Jan 2017
1937
1938 Version c of 700 bit/s codec that uses newamp1 fixed rate VQ of amplitudes.
1939
1940 Encodes 320 speech samples (40ms of speech) into 28 bits.
1941
1942 The codec2 algorithm actually operates internally on 10ms (80
1943 sample) frames, so we run the encoding algorithm four times:
1944
1945 frame 0: nothing
1946 frame 1: nothing
1947 frame 2: nothing
1948 frame 3: 18 bit 2 stage VQ (9 bits/stage), 4 bits energy,
1949 6 bit scalar Wo/voicing. No spare bits.
1950
1951 Voicing is encoded using the 0 index of the Wo quantiser.
1952
1953 The bit allocation is:
1954
1955 Parameter frames 1-3 frame 4 Total
1956 -----------------------------------------------------------
1957 Harmonic magnitudes (rate k VQ) 0 18 18
1958 Energy 0 4 4
1959 log Wo/voicing 0 6 6
1960 TOTAL 0 28 28
1961
1962\*---------------------------------------------------------------------------*/
1963
1964void codec2_encode_700c(struct CODEC2 *c2, unsigned char * bits, short speech[])
1965{
1966 MODEL model;
1967 int indexes[4], i, M=4;
1968 unsigned int nbit = 0;
1969
1970 assert(c2 != NULL);
1971
1972 memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8));
1973
1974 for(i=0; i<M; i++) {
1975 analyse_one_frame(c2, &model, &speech[i*c2->n_samp]);
1976 }
1977
1978 int K = 20;
1979 float rate_K_vec[K], mean;
1980 float rate_K_vec_no_mean[K], rate_K_vec_no_mean_[K];
1981
1982 newamp1_model_to_indexes(&c2->c2const,
1983 indexes,
1984 &model,
1985 rate_K_vec,
1986 c2->rate_K_sample_freqs_kHz,
1987 K,
1988 &mean,
1989 rate_K_vec_no_mean,
1990 rate_K_vec_no_mean_, &c2->se);
1991 c2->nse += K;
1992
1993#ifndef CORTEX_M4
1994 /* dump features for deep learning experiments */
1995 if (c2->fmlfeat != NULL) {
1996 fwrite(&mean, 1, sizeof(float), c2->fmlfeat);
1997 fwrite(rate_K_vec_no_mean, K, sizeof(float), c2->fmlfeat);
1998 fwrite(rate_K_vec_no_mean_, K, sizeof(float), c2->fmlfeat);
1999 }
2000#endif
2001
2002 pack_natural_or_gray(bits, &nbit, indexes[0], 9, 0);
2003 pack_natural_or_gray(bits, &nbit, indexes[1], 9, 0);
2004 pack_natural_or_gray(bits, &nbit, indexes[2], 4, 0);
2005 pack_natural_or_gray(bits, &nbit, indexes[3], 6, 0);
2006
2007 assert(nbit == (unsigned)codec2_bits_per_frame(c2));
2008}
2009
2010
2011/*---------------------------------------------------------------------------*\
2012
2013 FUNCTION....: codec2_decode_700c
2014 AUTHOR......: David Rowe
2015 DATE CREATED: August 2015
2016
2017 Decodes frames of 28 bits into 320 samples (40ms) of speech.
2018
2019\*---------------------------------------------------------------------------*/
2020
2021void codec2_decode_700c(struct CODEC2 *c2, short speech[], const unsigned char * bits)
2022{
2023 MODEL model[4];
2024 int indexes[4];
2025 int i;
2026 unsigned int nbit = 0;
2027
2028 assert(c2 != NULL);
2029
2030 /* unpack bits from channel ------------------------------------*/
2031
2032 indexes[0] = unpack_natural_or_gray(bits, &nbit, 9, 0);
2033 indexes[1] = unpack_natural_or_gray(bits, &nbit, 9, 0);
2034 indexes[2] = unpack_natural_or_gray(bits, &nbit, 4, 0);
2035 indexes[3] = unpack_natural_or_gray(bits, &nbit, 6, 0);
2036
2037 int M = 4;
2038 COMP HH[M][MAX_AMP+1];
2039 float interpolated_surface_[M][NEWAMP1_K];
2040
2041 newamp1_indexes_to_model(&c2->c2const,
2042 model,
2043 (COMP*)HH,
2044 (float*)interpolated_surface_,
2045 c2->prev_rate_K_vec_,
2046 &c2->Wo_left,
2047 &c2->voicing_left,
2048 c2->rate_K_sample_freqs_kHz,
2049 NEWAMP1_K,
2050 c2->phase_fft_fwd_cfg,
2051 c2->phase_fft_inv_cfg,
2052 indexes,
2053 c2->user_rate_K_vec_no_mean_,
2054 c2->post_filter_en);
2055
2056
2057 for(i=0; i<M; i++) {
2058 /* 700C is a little quiter so lets apply some experimentally derived audio gain */
2059 synthesise_one_frame(c2, &speech[c2->n_samp*i], &model[i], &HH[i][0], 1.5);
2060 }
2061}
2062
2063/*---------------------------------------------------------------------------*\
2064
2065 FUNCTION....: codec2_energy_700c
2066 AUTHOR......: Jeroen Vreeken
2067 DATE CREATED: Jan 2017
2068
2069 Decodes energy value from encoded bits.
2070
2071\*---------------------------------------------------------------------------*/
2072
2073float codec2_energy_700c(struct CODEC2 *c2, const unsigned char * bits)
2074{
2075 int indexes[4];
2076 unsigned int nbit = 0;
2077
2078 assert(c2 != NULL);
2079
2080 /* unpack bits from channel ------------------------------------*/
2081
2082 indexes[0] = unpack_natural_or_gray(bits, &nbit, 9, 0);
2083 indexes[1] = unpack_natural_or_gray(bits, &nbit, 9, 0);
2084 indexes[2] = unpack_natural_or_gray(bits, &nbit, 4, 0);
2085 indexes[3] = unpack_natural_or_gray(bits, &nbit, 6, 0);
2086
2087 float mean = newamp1_energy_cb[0].cb[indexes[2]];
2088 mean -= 10;
2089 if (indexes[3] == 0)
2090 mean -= 10;
2091
2092 return POW10F(mean/10.0);
2093}
2094
2095#ifndef CORTEX_M4
2096float codec2_energy_450(struct CODEC2 *c2, const unsigned char * bits)
2097{
2098 int indexes[4];
2099 unsigned int nbit = 0;
2100
2101 assert(c2 != NULL);
2102
2103 /* unpack bits from channel ------------------------------------*/
2104
2105 indexes[0] = unpack_natural_or_gray(bits, &nbit, 9, 0);
2106 //indexes[1] = unpack_natural_or_gray(bits, &nbit, 9, 0);
2107 indexes[2] = unpack_natural_or_gray(bits, &nbit, 3, 0);
2108 indexes[3] = unpack_natural_or_gray(bits, &nbit, 6, 0);
2109
2110 float mean = newamp2_energy_cb[0].cb[indexes[2]];
2111 mean -= 10;
2112 if (indexes[3] == 0)
2113 mean -= 10;
2114
2115 return POW10F(mean/10.0);
2116}
2117
2118/*---------------------------------------------------------------------------*\
2119
2120 FUNCTION....: codec2_get_energy()
2121 AUTHOR......: Jeroen Vreeken
2122 DATE CREATED: 08/03/2016
2123
2124 Extract energy value from an encoded frame.
2125
2126\*---------------------------------------------------------------------------*/
2127
2128float codec2_get_energy(struct CODEC2 *c2, const unsigned char *bits)
2129{
2130 assert(c2 != NULL);
2131 assert(
2132 ( CODEC2_MODE_ACTIVE(CODEC2_MODE_3200, c2->mode)) ||
2133 ( CODEC2_MODE_ACTIVE(CODEC2_MODE_2400, c2->mode)) ||
2134 ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1600, c2->mode)) ||
2135 ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1400, c2->mode)) ||
2136 ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1300, c2->mode)) ||
2137 ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1200, c2->mode)) ||
2138 ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700, c2->mode)) ||
2139 ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700B, c2->mode)) ||
2140 ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700C, c2->mode)) ||
2141 ( CODEC2_MODE_ACTIVE(CODEC2_MODE_450, c2->mode)) ||
2142 ( CODEC2_MODE_ACTIVE(CODEC2_MODE_450PWB, c2->mode))
2143 );
2144 MODEL model;
2145 float xq_dec[2] = {};
2146 int e_index, WoE_index;
2147 float e;
2148 unsigned int nbit;
2149
2150 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_3200, c2->mode)) {
2151 nbit = 1 + 1 + WO_BITS;
2152 e_index = unpack(bits, &nbit, E_BITS);
2153 e = decode_energy(e_index, E_BITS);
2154 }
2155 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_2400, c2->mode)) {
2156 nbit = 1 + 1;
2157 WoE_index = unpack(bits, &nbit, WO_E_BITS);
2158 decode_WoE(&c2->c2const, &model, &e, xq_dec, WoE_index);
2159 }
2160 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1600, c2->mode)) {
2161 nbit = 1 + 1 + WO_BITS;
2162 e_index = unpack(bits, &nbit, E_BITS);
2163 e = decode_energy(e_index, E_BITS);
2164 }
2165 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1400, c2->mode)) {
2166 nbit = 1 + 1;
2167 WoE_index = unpack(bits, &nbit, WO_E_BITS);
2168 decode_WoE(&c2->c2const, &model, &e, xq_dec, WoE_index);
2169 }
2170 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1300, c2->mode)) {
2171 nbit = 1 + 1 + 1 + 1 + WO_BITS;
2172 e_index = unpack_natural_or_gray(bits, &nbit, E_BITS, c2->gray);
2173 e = decode_energy(e_index, E_BITS);
2174 }
2175 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1200, c2->mode)) {
2176 nbit = 1 + 1;
2177 WoE_index = unpack(bits, &nbit, WO_E_BITS);
2178 decode_WoE(&c2->c2const, &model, &e, xq_dec, WoE_index);
2179 }
2180 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700, c2->mode)) {
2181 nbit = 1 + 5;
2182 e_index = unpack_natural_or_gray(bits, &nbit, 3, c2->gray);
2183 e = decode_energy(e_index, 3);
2184 }
2185 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700B, c2->mode)) {
2186 nbit = 1 + 5;
2187 e_index = unpack_natural_or_gray(bits, &nbit, 3, c2->gray);
2188 e = decode_energy(e_index, 3);
2189 }
2190 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700C, c2->mode)) {
2191 e = codec2_energy_700c(c2, bits);
2192 }
2193 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_450, c2->mode) || CODEC2_MODE_ACTIVE(CODEC2_MODE_450PWB, c2->mode)) {
2194 e = codec2_energy_450(c2, bits);
2195 }
2196
2197 return e;
2198}
2199
2200
2201/*---------------------------------------------------------------------------*\
2202
2203 FUNCTION....: codec2_encode_450
2204 AUTHOR......: Thomas Kurin and Stefan Erhardt
2205 INSTITUTE...: Institute for Electronics Engineering, University of Erlangen-Nuremberg
2206 DATE CREATED: July 2018
2207
2208 450 bit/s codec that uses newamp2 fixed rate VQ of amplitudes.
2209
2210 Encodes 320 speech samples (40ms of speech) into 28 bits.
2211
2212 The codec2 algorithm actually operates internally on 10ms (80
2213 sample) frames, so we run the encoding algorithm four times:
2214
2215 frame 0: nothing
2216 frame 1: nothing
2217 frame 2: nothing
2218 frame 3: 9 bit 1 stage VQ, 3 bits energy,
2219 6 bit scalar Wo/voicing/plosive. No spare bits.
2220
2221 If a plosive is detected the frame at the energy-step is encoded.
2222
2223 Voicing is encoded using the 000000 index of the Wo quantiser.
2224 Plosive is encoded using the 111111 index of the Wo quantiser.
2225
2226 The bit allocation is:
2227
2228 Parameter frames 1-3 frame 4 Total
2229 -----------------------------------------------------------
2230 Harmonic magnitudes (rate k VQ) 0 9 9
2231 Energy 0 3 3
2232 log Wo/voicing/plosive 0 6 6
2233 TOTAL 0 18 18
2234
2235
2236\*---------------------------------------------------------------------------*/
2237
2238void codec2_encode_450(struct CODEC2 *c2, unsigned char * bits, short speech[])
2239{
2240 MODEL model;
2241 int indexes[4], i,h, M=4;
2242 unsigned int nbit = 0;
2243 int plosiv = 0;
2244 float energydelta[M];
2245 int spectralCounter;
2246
2247 assert(c2 != NULL);
2248
2249 memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8));
2250 for(i=0; i<M; i++){
2251 analyse_one_frame(c2, &model, &speech[i*c2->n_samp]);
2252 energydelta[i] = 0;
2253 spectralCounter = 0;
2254 for(h = 0;h<(model.L);h++){
2255 //only detect above 300 Hz
2256 if(h*model.Wo*(c2->c2const.Fs/2000.0)/M_PI > 0.3){
2257 energydelta[i] = energydelta[i] + 20.0*log10(model.A[10]+1E-16);
2258 spectralCounter = spectralCounter+1;
2259 }
2260
2261 }
2262 energydelta[i] = energydelta[i] / spectralCounter ;
2263 }
2264 //Constants for plosive Detection tdB = threshold; minPwr = from below this level plosives have to rise
2265 float tdB = 15; //not fixed can be changed
2266 float minPwr = 15; //not fixed can be changed
2267 if((c2->energy_prev)<minPwr && energydelta[0]>((c2->energy_prev)+tdB)){
2268
2269 plosiv = 1;
2270 }
2271 if(energydelta[0]<minPwr && energydelta[1]>(energydelta[0]+tdB)){
2272
2273 plosiv = 2;
2274 }
2275 if(energydelta[1]<minPwr &&energydelta[2]>(energydelta[1]+tdB)){
2276
2277 plosiv = 3;
2278 }
2279 if(energydelta[2]<minPwr &&energydelta[3]>(energydelta[2]+tdB)){
2280
2281 plosiv = 4;
2282 }
2283 if(plosiv != 0 && plosiv != 4){
2284 analyse_one_frame(c2, &model, &speech[(plosiv-1)*c2->n_samp]);
2285 }
2286
2287 c2->energy_prev = energydelta[3];
2288
2289
2290 int K = 29;
2291 float rate_K_vec[K], mean;
2292 float rate_K_vec_no_mean[K], rate_K_vec_no_mean_[K];
2293 if(plosiv > 0){
2294 plosiv = 1;
2295 }
2296 newamp2_model_to_indexes(&c2->c2const,
2297 indexes,
2298 &model,
2299 rate_K_vec,
2300 c2->n2_rate_K_sample_freqs_kHz,
2301 K,
2302 &mean,
2303 rate_K_vec_no_mean,
2304 rate_K_vec_no_mean_,
2305 plosiv);
2306
2307
2308 pack_natural_or_gray(bits, &nbit, indexes[0], 9, 0);
2309 //pack_natural_or_gray(bits, &nbit, indexes[1], 9, 0);
2310 pack_natural_or_gray(bits, &nbit, indexes[2], 3, 0);
2311 pack_natural_or_gray(bits, &nbit, indexes[3], 6, 0);
2312
2313 assert(nbit == (unsigned)codec2_bits_per_frame(c2));
2314}
2315
2316
2317/*---------------------------------------------------------------------------*\
2318
2319 FUNCTION....: codec2_decode_450
2320 AUTHOR......: Thomas Kurin and Stefan Erhardt
2321 INSTITUTE...: Institute for Electronics Engineering, University of Erlangen-Nuremberg
2322 DATE CREATED: July 2018
2323
2324\*---------------------------------------------------------------------------*/
2325
2326void codec2_decode_450(struct CODEC2 *c2, short speech[], const unsigned char * bits)
2327{
2328 MODEL model[4];
2329 int indexes[4];
2330 int i;
2331 unsigned int nbit = 0;
2332
2333 assert(c2 != NULL);
2334
2335 /* unpack bits from channel ------------------------------------*/
2336
2337 indexes[0] = unpack_natural_or_gray(bits, &nbit, 9, 0);
2338 //indexes[1] = unpack_natural_or_gray(bits, &nbit, 9, 0);
2339 indexes[2] = unpack_natural_or_gray(bits, &nbit, 3, 0);
2340 indexes[3] = unpack_natural_or_gray(bits, &nbit, 6, 0);
2341
2342 int M = 4;
2343 COMP HH[M][MAX_AMP+1];
2344 float interpolated_surface_[M][NEWAMP2_K];
2345 int pwbFlag = 0;
2346
2347 newamp2_indexes_to_model(&c2->c2const,
2348 model,
2349 (COMP*)HH,
2350 (float*)interpolated_surface_,
2351 c2->n2_prev_rate_K_vec_,
2352 &c2->Wo_left,
2353 &c2->voicing_left,
2354 c2->n2_rate_K_sample_freqs_kHz,
2355 NEWAMP2_K,
2356 c2->phase_fft_fwd_cfg,
2357 c2->phase_fft_inv_cfg,
2358 indexes,
2359 1.5,
2360 pwbFlag);
2361
2362
2363 for(i=0; i<M; i++) {
2364 synthesise_one_frame(c2, &speech[c2->n_samp*i], &model[i], &HH[i][0], 1.5);
2365 }
2366}
2367
2368/*---------------------------------------------------------------------------*\
2369
2370 FUNCTION....: codec2_decode_450pwb
2371 AUTHOR......: Thomas Kurin and Stefan Erhardt
2372 INSTITUTE...: Institute for Electronics Engineering, University of Erlangen-Nuremberg
2373 DATE CREATED: July 2018
2374
2375 Decodes the 450 codec data in pseudo wideband at 16kHz samplerate.
2376
2377\*---------------------------------------------------------------------------*/
2378
2379void codec2_decode_450pwb(struct CODEC2 *c2, short speech[], const unsigned char * bits)
2380{
2381 MODEL model[4];
2382 int indexes[4];
2383 int i;
2384 unsigned int nbit = 0;
2385
2386 assert(c2 != NULL);
2387
2388 /* unpack bits from channel ------------------------------------*/
2389
2390 indexes[0] = unpack_natural_or_gray(bits, &nbit, 9, 0);
2391 //indexes[1] = unpack_natural_or_gray(bits, &nbit, 9, 0);
2392 indexes[2] = unpack_natural_or_gray(bits, &nbit, 3, 0);
2393 indexes[3] = unpack_natural_or_gray(bits, &nbit, 6, 0);
2394
2395 int M = 4;
2396 COMP HH[M][MAX_AMP+1];
2397 float interpolated_surface_[M][NEWAMP2_16K_K];
2398 int pwbFlag = 1;
2399
2400 newamp2_indexes_to_model(&c2->c2const,
2401 model,
2402 (COMP*)HH,
2403 (float*)interpolated_surface_,
2404 c2->n2_pwb_prev_rate_K_vec_,
2405 &c2->Wo_left,
2406 &c2->voicing_left,
2407 c2->n2_pwb_rate_K_sample_freqs_kHz,
2408 NEWAMP2_16K_K,
2409 c2->phase_fft_fwd_cfg,
2410 c2->phase_fft_inv_cfg,
2411 indexes,
2412 1.5,
2413 pwbFlag);
2414
2415
2416 for(i=0; i<M; i++) {
2417 synthesise_one_frame(c2, &speech[c2->n_samp*i], &model[i], &HH[i][0], 1.5);
2418 }
2419}
2420
2421#endif
2422
2423/*---------------------------------------------------------------------------* \
2424
2425 FUNCTION....: synthesise_one_frame()
2426 AUTHOR......: David Rowe
2427 DATE CREATED: 23/8/2010
2428
2429 Synthesise 80 speech samples (10ms) from model parameters.
2430
2431\*---------------------------------------------------------------------------*/
2432
2433void synthesise_one_frame(struct CODEC2 *c2, short speech[], MODEL *model, COMP Aw[], float gain)
2434{
2435 int i;
2436 //PROFILE_VAR(phase_start, pf_start, synth_start);
2437
2438 //#ifdef DUMP
2439 //dump_quantised_model(model);
2440 //#endif
2441
2442 //PROFILE_SAMPLE(phase_start);
2443
2444 if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700C, c2->mode) || CODEC2_MODE_ACTIVE(CODEC2_MODE_450, c2->mode) || CODEC2_MODE_ACTIVE(CODEC2_MODE_450PWB, c2->mode) ) {
2445 /* newamp1/2, we've already worked out rate L phase */
2446 COMP *H = Aw;
2447 phase_synth_zero_order(c2->n_samp, model, &c2->ex_phase, H);
2448 } else {
2449 /* LPC based phase synthesis */
2450 COMP H[MAX_AMP+1];
2451 sample_phase(model, H, Aw);
2452 phase_synth_zero_order(c2->n_samp, model, &c2->ex_phase, H);
2453 }
2454
2455 //PROFILE_SAMPLE_AND_LOG(pf_start, phase_start, " phase_synth");
2456
2457 postfilter(model, &c2->bg_est);
2458
2459 //PROFILE_SAMPLE_AND_LOG(synth_start, pf_start, " postfilter");
2460
2461 synthesise(c2->n_samp, c2->fftr_inv_cfg, c2->Sn_, model, c2->Pn, 1);
2462
2463 for(i=0; i<c2->n_samp; i++) {
2464 c2->Sn_[i] *= gain;
2465 }
2466
2467 //PROFILE_SAMPLE_AND_LOG2(synth_start, " synth");
2468
2469 ear_protection(c2->Sn_, c2->n_samp);
2470
2471 for(i=0; i<c2->n_samp; i++) {
2472 if (c2->Sn_[i] > 32767.0)
2473 speech[i] = 32767;
2474 else if (c2->Sn_[i] < -32767.0)
2475 speech[i] = -32767;
2476 else
2477 speech[i] = c2->Sn_[i];
2478 }
2479
2480}
2481
2482/*---------------------------------------------------------------------------*\
2483
2484 FUNCTION....: analyse_one_frame()
2485 AUTHOR......: David Rowe
2486 DATE CREATED: 23/8/2010
2487
2488 Extract sinusoidal model parameters from 80 speech samples (10ms of
2489 speech).
2490
2491\*---------------------------------------------------------------------------*/
2492
2493void analyse_one_frame(struct CODEC2 *c2, MODEL *model, short speech[])
2494{
2495 COMP Sw[FFT_ENC];
2496 float pitch;
2497 int i;
2498 //PROFILE_VAR(dft_start, nlp_start, model_start, two_stage, estamps);
2499 int n_samp = c2->n_samp;
2500 int m_pitch = c2->m_pitch;
2501
2502 /* Read input speech */
2503
2504 for(i=0; i<m_pitch-n_samp; i++)
2505 c2->Sn[i] = c2->Sn[i+n_samp];
2506 for(i=0; i<n_samp; i++)
2507 c2->Sn[i+m_pitch-n_samp] = speech[i];
2508
2509 //PROFILE_SAMPLE(dft_start);
2510 dft_speech(&c2->c2const, c2->fft_fwd_cfg, Sw, c2->Sn, c2->w);
2511 //PROFILE_SAMPLE_AND_LOG(nlp_start, dft_start, " dft_speech");
2512
2513 /* Estimate pitch */
2514
2515 nlp(c2->nlp, c2->Sn, n_samp, &pitch, Sw, c2->W, &c2->prev_f0_enc);
2516 //PROFILE_SAMPLE_AND_LOG(model_start, nlp_start, " nlp");
2517
2518 model->Wo = TWO_PI/pitch;
2519 model->L = PI/model->Wo;
2520
2521 /* estimate model parameters */
2522
2523 two_stage_pitch_refinement(&c2->c2const, model, Sw);
2524 //PROFILE_SAMPLE_AND_LOG(two_stage, model_start, " two_stage");
2525 estimate_amplitudes(model, Sw, c2->W, 0);
2526 //PROFILE_SAMPLE_AND_LOG(estamps, two_stage, " est_amps");
2527 est_voicing_mbe(&c2->c2const, model, Sw, c2->W);
2528 //PROFILE_SAMPLE_AND_LOG2(estamps, " est_voicing");
2529 #ifdef DUMP
2530 dump_model(model);
2531 #endif
2532}
2533
2534/*---------------------------------------------------------------------------*\
2535
2536 FUNCTION....: ear_protection()
2537 AUTHOR......: David Rowe
2538 DATE CREATED: Nov 7 2012
2539
2540 Limits output level to protect ears when there are bit errors or the input
2541 is overdriven. This doesn't correct or mask bit errors, just reduces the
2542 worst of their damage.
2543
2544\*---------------------------------------------------------------------------*/
2545
2546static void ear_protection(float in_out[], int n) {
2547 float max_sample, over, gain;
2548 int i;
2549
2550 /* find maximum sample in frame */
2551
2552 max_sample = 0.0;
2553 for(i=0; i<n; i++)
2554 if (in_out[i] > max_sample)
2555 max_sample = in_out[i];
2556
2557 /* determine how far above set point */
2558
2559 over = max_sample/30000.0;
2560
2561 /* If we are x dB over set point we reduce level by 2x dB, this
2562 attenuates major excursions in amplitude (likely to be caused
2563 by bit errors) more than smaller ones */
2564
2565 if (over > 1.0) {
2566 gain = 1.0/(over*over);
2567 //fprintf(stderr, "gain: %f\n", gain);
2568 for(i=0; i<n; i++)
2569 in_out[i] *= gain;
2570 }
2571}
2572
2573void codec2_set_lpc_post_filter(struct CODEC2 *c2, int enable, int bass_boost, float beta, float gamma)
2574{
2575 assert((beta >= 0.0) && (beta <= 1.0));
2576 assert((gamma >= 0.0) && (gamma <= 1.0));
2577 c2->lpc_pf = enable;
2578 c2->bass_boost = bass_boost;
2579 c2->beta = beta;
2580 c2->gamma = gamma;
2581}
2582
2583/*
2584 Allows optional stealing of one of the voicing bits for use as a
2585 spare bit, only 1300 & 1400 & 1600 bit/s supported for now.
2586 Experimental method of sending voice/data frames for FreeDV.
2587*/
2588
2589int codec2_get_spare_bit_index(struct CODEC2 *c2)
2590{
2591 assert(c2 != NULL);
2592
2593 switch(c2->mode) {
2594 case CODEC2_MODE_1300:
2595 return 2; // bit 2 (3th bit) is v2 (third voicing bit)
2596 break;
2597 case CODEC2_MODE_1400:
2598 return 10; // bit 10 (11th bit) is v2 (third voicing bit)
2599 break;
2600 case CODEC2_MODE_1600:
2601 return 15; // bit 15 (16th bit) is v2 (third voicing bit)
2602 break;
2603 case CODEC2_MODE_700:
2604 return 26; // bits 26 and 27 are spare
2605 break;
2606 case CODEC2_MODE_700B:
2607 return 27; // bit 27 is spare
2608 break;
2609 }
2610
2611 return -1;
2612}
2613
2614/*
2615 Reconstructs the spare voicing bit. Note works on unpacked bits
2616 for convenience.
2617*/
2618
2619int codec2_rebuild_spare_bit(struct CODEC2 *c2, int unpacked_bits[])
2620{
2621 int v1,v3;
2622
2623 assert(c2 != NULL);
2624
2625 v1 = unpacked_bits[1];
2626
2627 switch(c2->mode) {
2628 case CODEC2_MODE_1300:
2629
2630 v3 = unpacked_bits[1+1+1];
2631
2632 /* if either adjacent frame is voiced, make this one voiced */
2633
2634 unpacked_bits[2] = (v1 || v3);
2635
2636 return 0;
2637
2638 break;
2639
2640 case CODEC2_MODE_1400:
2641
2642 v3 = unpacked_bits[1+1+8+1];
2643
2644 /* if either adjacent frame is voiced, make this one voiced */
2645
2646 unpacked_bits[10] = (v1 || v3);
2647
2648 return 0;
2649
2650 break;
2651
2652 case CODEC2_MODE_1600:
2653 v3 = unpacked_bits[1+1+8+5+1];
2654
2655 /* if either adjacent frame is voiced, make this one voiced */
2656
2657 unpacked_bits[15] = (v1 || v3);
2658
2659 return 0;
2660
2661 break;
2662 }
2663
2664 return -1;
2665}
2666
2667void codec2_set_natural_or_gray(struct CODEC2 *c2, int gray)
2668{
2669 assert(c2 != NULL);
2670 c2->gray = gray;
2671}
2672
2673void codec2_set_softdec(struct CODEC2 *c2, float *softdec)
2674{
2675 assert(c2 != NULL);
2676 c2->softdec = softdec;
2677}
2678
2679void codec2_open_mlfeat(struct CODEC2 *codec2_state, char *filename) {
2680 if ((codec2_state->fmlfeat = fopen(filename, "wb")) == NULL) {
2681 fprintf(stderr, "error opening machine learning feature file: %s\n", filename);
2682 exit(1);
2683 }
2684}
2685
2686#ifndef __EMBEDDED__
2687void codec2_load_codebook(struct CODEC2 *codec2_state, int num, char *filename) {
2688 FILE *f;
2689
2690 if ((f = fopen(filename, "rb")) == NULL) {
2691 fprintf(stderr, "error opening codebook file: %s\n", filename);
2692 exit(1);
2693 }
2694 //fprintf(stderr, "reading newamp1vq_cb[%d] k=%d m=%d\n", num, newamp1vq_cb[num].k, newamp1vq_cb[num].m);
2695 float tmp[newamp1vq_cb[num].k*newamp1vq_cb[num].m];
2696 int nread = fread(tmp, sizeof(float), newamp1vq_cb[num].k*newamp1vq_cb[num].m, f);
2697 float *p = (float*)newamp1vq_cb[num].cb;
2698 for(int i=0; i<newamp1vq_cb[num].k*newamp1vq_cb[num].m; i++)
2699 p[i] = tmp[i];
2700 // fprintf(stderr, "nread = %d %f %f\n", nread, newamp1vq_cb[num].cb[0], newamp1vq_cb[num].cb[1]);
2701 assert(nread == newamp1vq_cb[num].k*newamp1vq_cb[num].m);
2702 fclose(f);
2703}
2704#endif
2705
2706float codec2_get_var(struct CODEC2 *codec2_state) {
2707 if (codec2_state->nse)
2708 return codec2_state->se/codec2_state->nse;
2709 else
2710 return 0;
2711}
2712
2713float *codec2_enable_user_ratek(struct CODEC2 *codec2_state, int *K) {
2714 codec2_state->user_rate_K_vec_no_mean_ = (float*)malloc(sizeof(float)*NEWAMP1_K);
2715 *K = NEWAMP1_K;
2716 return codec2_state->user_rate_K_vec_no_mean_;
2717}
2718
2719void codec2_700c_post_filter(struct CODEC2 *codec2_state, int en) {
2720 codec2_state->post_filter_en = en;
2721}
diff --git a/codec2.h b/codec2.h
new file mode 100644
index 0000000..60532ca
--- /dev/null
+++ b/codec2.h
@@ -0,0 +1,127 @@
1/*---------------------------------------------------------------------------*\
2
3 FILE........: codec2.h
4 AUTHOR......: David Rowe
5 DATE CREATED: 21 August 2010
6
7 Codec 2 fully quantised encoder and decoder functions. If you want use
8 Codec 2, these are the functions you need to call.
9
10\*---------------------------------------------------------------------------*/
11
12/*
13 Copyright (C) 2010 David Rowe
14
15 All rights reserved.
16
17 This program is free software; you can redistribute it and/or modify
18 it under the terms of the GNU Lesser General Public License version 2.1, as
19 published by the Free Software Foundation. This program is
20 distributed in the hope that it will be useful, but WITHOUT ANY
21 WARRANTY; without even the implied warranty of MERCHANTABILITY or
22 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
23 License for more details.
24
25 You should have received a copy of the GNU Lesser General Public License
26 along with this program; if not, see <http://www.gnu.org/licenses/>.
27*/
28
29#ifdef __cplusplus
30 extern "C" {
31#endif
32
33#ifndef __CODEC2__
34#define __CODEC2__
35
36#include <version.h>
37
38#define CODEC2_MODE_3200 0
39#define CODEC2_MODE_2400 1
40#define CODEC2_MODE_1600 2
41#define CODEC2_MODE_1400 3
42#define CODEC2_MODE_1300 4
43#define CODEC2_MODE_1200 5
44#define CODEC2_MODE_700 6
45#define CODEC2_MODE_700B 7
46#define CODEC2_MODE_700C 8
47#define CODEC2_MODE_450 10
48#define CODEC2_MODE_450PWB 11
49
50#ifndef CODEC2_MODE_EN_DEFAULT
51#define CODEC2_MODE_EN_DEFAULT 1
52#endif
53
54// by default we enable all modes
55// disable during compile time with -DCODEC2_MODE_1600_EN=0
56// all but CODEC2 1600 are enabled then
57
58//or the other way round
59// -DCODEC2_MODE_EN_DEFAULT=0 -DCODEC2_MODE_1600_EN=1
60// only CODEC2 Mode 1600
61
62#if !defined(CODEC2_MODE_3200_EN)
63 #define CODEC2_MODE_3200_EN CODEC2_MODE_EN_DEFAULT
64#endif
65#if !defined(CODEC2_MODE_2400_EN)
66 #define CODEC2_MODE_2400_EN CODEC2_MODE_EN_DEFAULT
67#endif
68#if !defined(CODEC2_MODE_1600_EN)
69 #define CODEC2_MODE_1600_EN CODEC2_MODE_EN_DEFAULT
70#endif
71#if !defined(CODEC2_MODE_1400_EN)
72 #define CODEC2_MODE_1400_EN CODEC2_MODE_EN_DEFAULT
73#endif
74#if !defined(CODEC2_MODE_1300_EN)
75 #define CODEC2_MODE_1300_EN CODEC2_MODE_EN_DEFAULT
76#endif
77#if !defined(CODEC2_MODE_1200_EN)
78 #define CODEC2_MODE_1200_EN CODEC2_MODE_EN_DEFAULT
79#endif
80#if !defined(CODEC2_MODE_700_EN)
81 #define CODEC2_MODE_700_EN CODEC2_MODE_EN_DEFAULT
82#endif
83#if !defined(CODEC2_MODE_700B_EN)
84 #define CODEC2_MODE_700B_EN CODEC2_MODE_EN_DEFAULT
85#endif
86#if !defined(CODEC2_MODE_700C_EN)
87 #define CODEC2_MODE_700C_EN CODEC2_MODE_EN_DEFAULT
88#endif
89#if !defined(CODEC2_MODE_450_EN)
90 #define CODEC2_MODE_450_EN CODEC2_MODE_EN_DEFAULT
91#endif
92#if !defined(CODEC2_MODE_450PWB_EN)
93 #define CODEC2_MODE_450PWB_EN CODEC2_MODE_EN_DEFAULT
94#endif
95
96#define CODEC2_MODE_ACTIVE(mode_name, var) ((mode_name##_EN) == 0 ? 0: (var) == mode_name)
97
98struct CODEC2;
99
100struct CODEC2 * codec2_create(int mode);
101void codec2_destroy(struct CODEC2 *codec2_state);
102void codec2_encode(struct CODEC2 *codec2_state, unsigned char * bits, short speech_in[]);
103void codec2_decode(struct CODEC2 *codec2_state, short speech_out[], const unsigned char *bits);
104void codec2_decode_ber(struct CODEC2 *codec2_state, short speech_out[], const unsigned char *bits, float ber_est);
105int codec2_samples_per_frame(struct CODEC2 *codec2_state);
106int codec2_bits_per_frame(struct CODEC2 *codec2_state);
107
108void codec2_set_lpc_post_filter(struct CODEC2 *codec2_state, int enable, int bass_boost, float beta, float gamma);
109int codec2_get_spare_bit_index(struct CODEC2 *codec2_state);
110int codec2_rebuild_spare_bit(struct CODEC2 *codec2_state, int unpacked_bits[]);
111void codec2_set_natural_or_gray(struct CODEC2 *codec2_state, int gray);
112void codec2_set_softdec(struct CODEC2 *c2, float *softdec);
113float codec2_get_energy(struct CODEC2 *codec2_state, const unsigned char *bits);
114
115// support for ML and VQ experiments
116void codec2_open_mlfeat(struct CODEC2 *codec2_state, char *filename);
117void codec2_load_codebook(struct CODEC2 *codec2_state, int num, char *filename);
118float codec2_get_var(struct CODEC2 *codec2_state);
119float *codec2_enable_user_ratek(struct CODEC2 *codec2_state, int *K);
120void codec2_700c_post_filter(struct CODEC2 *codec2_state, int en);
121
122#endif
123
124#ifdef __cplusplus
125}
126#endif
127
diff --git a/codec2_fft.c b/codec2_fft.c
new file mode 100644
index 0000000..14b8670
--- /dev/null
+++ b/codec2_fft.c
@@ -0,0 +1,158 @@
1/*
2 * codec2_fft.c
3 *
4 * Created on: 24.09.2016
5 * Author: danilo
6 */
7
8#include "codec2_fft.h"
9
10#include "debug_alloc.h"
11
12#ifdef USE_KISS_FFT
13#include "_kiss_fft_guts.h"
14
15#else
16#if 0
17// caching constants in RAM did not seem to have an effect on performance
18// TODO: Decide what to with this code
19#define FFT_INIT_CACHE_SIZE 4
20const arm_cfft_instance_f32* fft_init_cache[FFT_INIT_CACHE_SIZE];
21
22static const arm_cfft_instance_f32* arm_fft_instance2ram(const arm_cfft_instance_f32* in)
23{
24
25 arm_cfft_instance_f32* out = malloc(sizeof(arm_cfft_instance_f32));
26
27 if (out) {
28 memcpy(out,in,sizeof(arm_cfft_instance_f32));
29 out->pBitRevTable = malloc(out->bitRevLength * sizeof(uint16_t));
30 out->pTwiddle = malloc(out->fftLen * sizeof(float32_t));
31 memcpy((void*)out->pBitRevTable,in->pBitRevTable,out->bitRevLength * sizeof(uint16_t));
32 memcpy((void*)out->pTwiddle,in->pTwiddle,out->fftLen * sizeof(float32_t));
33 }
34 return out;
35}
36
37
38static const arm_cfft_instance_f32* arm_fft_cache_get(const arm_cfft_instance_f32* romfft)
39{
40 const arm_cfft_instance_f32* retval = NULL;
41 static int used = 0;
42 for (int i = 0; fft_init_cache[i] != NULL && i < used; i++)
43 {
44 if (romfft->fftLen == fft_init_cache[i]->fftLen)
45 {
46 retval = fft_init_cache[i];
47 break;
48 }
49 }
50 if (retval == NULL && used < FFT_INIT_CACHE_SIZE)
51 {
52 retval = arm_fft_instance2ram(romfft);
53 fft_init_cache[used++] = retval;
54 }
55 if (retval == NULL)
56 {
57 retval = romfft;
58 }
59 return retval;
60}
61#endif
62#endif
63
64void codec2_fft_free(codec2_fft_cfg cfg)
65{
66#ifdef USE_KISS_FFT
67 KISS_FFT_FREE(cfg);
68#else
69 FREE(cfg);
70#endif
71}
72
73codec2_fft_cfg codec2_fft_alloc(int nfft, int inverse_fft, void* mem, size_t* lenmem)
74{
75 codec2_fft_cfg retval;
76#ifdef USE_KISS_FFT
77 retval = kiss_fft_alloc(nfft, inverse_fft, mem, lenmem);
78#else
79 retval = MALLOC(sizeof(codec2_fft_struct));
80 retval->inverse = inverse_fft;
81 switch(nfft)
82 {
83 case 128:
84 retval->instance = &arm_cfft_sR_f32_len128;
85 break;
86 case 256:
87 retval->instance = &arm_cfft_sR_f32_len256;
88 break;
89 case 512:
90 retval->instance = &arm_cfft_sR_f32_len512;
91 break;
92// case 1024:
93// retval->instance = &arm_cfft_sR_f32_len1024;
94// break;
95 default:
96 abort();
97 }
98 // retval->instance = arm_fft_cache_get(retval->instance);
99#endif
100 return retval;
101}
102
103codec2_fftr_cfg codec2_fftr_alloc(int nfft, int inverse_fft, void* mem, size_t* lenmem)
104{
105 codec2_fftr_cfg retval;
106#ifdef USE_KISS_FFT
107 retval = kiss_fftr_alloc(nfft, inverse_fft, mem, lenmem);
108#else
109 retval = MALLOC(sizeof(codec2_fftr_struct));
110 retval->inverse = inverse_fft;
111 retval->instance = MALLOC(sizeof(arm_rfft_fast_instance_f32));
112 arm_rfft_fast_init_f32(retval->instance,nfft);
113 // memcpy(&retval->instance->Sint,arm_fft_cache_get(&retval->instance->Sint),sizeof(arm_cfft_instance_f32));
114#endif
115 return retval;
116}
117void codec2_fftr_free(codec2_fftr_cfg cfg)
118{
119#ifdef USE_KISS_FFT
120 KISS_FFT_FREE(cfg);
121#else
122 FREE(cfg->instance);
123 FREE(cfg);
124#endif
125}
126
127// there is a little overhead for inplace kiss_fft but this is
128// on the powerful platforms like the Raspberry or even x86 PC based ones
129// not noticeable
130// the reduced usage of RAM and increased performance on STM32 platforms
131// should be worth it.
132void codec2_fft_inplace(codec2_fft_cfg cfg, codec2_fft_cpx* inout)
133{
134
135#ifdef USE_KISS_FFT
136 kiss_fft_cpx in[512];
137 // decide whether to use the local stack based buffer for in
138 // or to allow kiss_fft to allocate RAM
139 // second part is just to play safe since first method
140 // is much faster and uses less RAM
141 if (cfg->nfft <= 512)
142 {
143 memcpy(in,inout,cfg->nfft*sizeof(kiss_fft_cpx));
144 kiss_fft(cfg, in, (kiss_fft_cpx*)inout);
145 }
146 else
147 {
148 kiss_fft(cfg, (kiss_fft_cpx*)inout, (kiss_fft_cpx*)inout);
149 }
150#else
151 arm_cfft_f32(cfg->instance,(float*)inout,cfg->inverse,1);
152 if (cfg->inverse)
153 {
154 arm_scale_f32((float*)inout,cfg->instance->fftLen,(float*)inout,cfg->instance->fftLen*2);
155 }
156
157#endif
158}
diff --git a/codec2_fft.h b/codec2_fft.h
new file mode 100644
index 0000000..c741202
--- /dev/null
+++ b/codec2_fft.h
@@ -0,0 +1,104 @@
1/*
2 * codec2_fft.h
3 *
4 * Created on: 17.09.2016
5 * Author: danilo
6 */
7
8#ifndef DRIVERS_FREEDV_CODEC2_FFT_H_
9#define DRIVERS_FREEDV_CODEC2_FFT_H_
10
11#include <assert.h>
12#include <stdlib.h>
13#include <stdio.h>
14#include <string.h>
15#include <math.h>
16
17#ifdef FDV_ARM_MATH
18 #include "fdv_arm_math.h"
19#else
20 #define USE_KISS_FFT
21#endif
22
23#include "defines.h"
24#include "comp.h"
25
26
27typedef COMP codec2_fft_cpx;
28#include "kiss_fftr.h"
29
30#ifdef USE_KISS_FFT
31 #include "kiss_fft.h"
32 typedef kiss_fftr_cfg codec2_fftr_cfg;
33 typedef kiss_fft_cfg codec2_fft_cfg;
34 typedef kiss_fft_scalar codec2_fft_scalar;
35#else
36 typedef float32_t codec2_fft_scalar;
37 typedef struct {
38 arm_rfft_fast_instance_f32* instance;
39 int inverse;
40 } codec2_fftr_struct;
41
42 typedef codec2_fftr_struct* codec2_fftr_cfg;
43
44 typedef struct {
45 const arm_cfft_instance_f32* instance;
46 int inverse;
47 } codec2_fft_struct;
48 typedef codec2_fft_struct* codec2_fft_cfg;
49#endif
50
51
52
53static inline void codec2_fftr(codec2_fftr_cfg cfg, codec2_fft_scalar* in, codec2_fft_cpx* out)
54{
55
56#ifdef USE_KISS_FFT
57 kiss_fftr(cfg, in, (kiss_fft_cpx*)out);
58#else
59 arm_rfft_fast_f32(cfg->instance,in,(float*)out,cfg->inverse);
60 out->imag = 0; // remove out[FFT_ENC/2]->real stored in out[0].imag
61#endif
62}
63
64static inline void codec2_fftri(codec2_fftr_cfg cfg, codec2_fft_cpx* in, codec2_fft_scalar* out)
65{
66#ifdef USE_KISS_FFT
67 kiss_fftri(cfg, (kiss_fft_cpx*)in, out);
68#else
69 arm_rfft_fast_f32(cfg->instance,(float*)in,out,cfg->inverse);
70 // arm_scale_f32(out,cfg->instance->fftLenRFFT,out,cfg->instance->fftLenRFFT);
71#endif
72
73}
74
75codec2_fft_cfg codec2_fft_alloc(int nfft, int inverse_fft, void* mem, size_t* lenmem);
76codec2_fftr_cfg codec2_fftr_alloc(int nfft, int inverse_fft, void* mem, size_t* lenmem);
77void codec2_fft_free(codec2_fft_cfg cfg);
78void codec2_fftr_free(codec2_fftr_cfg cfg);
79
80
81static inline void codec2_fft(codec2_fft_cfg cfg, codec2_fft_cpx* in, codec2_fft_cpx* out)
82{
83
84#ifdef USE_KISS_FFT
85 kiss_fft(cfg, (kiss_fft_cpx*)in, (kiss_fft_cpx*)out);
86#else
87 memcpy(out,in,cfg->instance->fftLen*2*sizeof(float));
88 arm_cfft_f32(cfg->instance,(float*)out,cfg->inverse, 1);
89 // TODO: this is not nice, but for now required to keep changes minimal
90 // however, since main goal is to reduce the memory usage
91 // we should convert to an in place interface
92 // on PC like platforms the overhead of using the "inplace" kiss_fft calls
93 // is neglectable compared to the gain in memory usage on STM32 platforms
94 if (cfg->inverse)
95 {
96 arm_scale_f32((float*)out,cfg->instance->fftLen,(float*)out,cfg->instance->fftLen*2);
97 }
98#endif
99}
100
101void codec2_fft_inplace(codec2_fft_cfg cfg, codec2_fft_cpx* inout);
102
103
104#endif
diff --git a/codec2_internal.h b/codec2_internal.h
new file mode 100644
index 0000000..498a6c4
--- /dev/null
+++ b/codec2_internal.h
@@ -0,0 +1,106 @@
1/*---------------------------------------------------------------------------*\
2
3 FILE........: codec2_internal.h
4 AUTHOR......: David Rowe
5 DATE CREATED: April 16 2012
6
7 Header file for Codec2 internal states, exposed via this header
8 file to assist in testing.
9
10\*---------------------------------------------------------------------------*/
11
12/*
13 Copyright (C) 2012 David Rowe
14
15 All rights reserved.
16
17 This program is free software; you can redistribute it and/or modify
18 it under the terms of the GNU Lesser General Public License version 2.1, as
19 published by the Free Software Foundation. This program is
20 distributed in the hope that it will be useful, but WITHOUT ANY
21 WARRANTY; without even the implied warranty of MERCHANTABILITY or
22 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
23 License for more details.
24
25 You should have received a copy of the GNU Lesser General Public License
26 along with this program; if not, see <http://www.gnu.org/licenses/>.
27*/
28
29#ifndef __CODEC2_INTERNAL__
30#define __CODEC2_INTERNAL__
31
32#include "codec2_fft.h"
33#include "newamp1.h"
34#include "newamp2.h"
35
36struct CODEC2 {
37 int mode;
38 C2CONST c2const;
39 int Fs;
40 int n_samp;
41 int m_pitch;
42 codec2_fft_cfg fft_fwd_cfg; /* forward FFT config */
43 codec2_fftr_cfg fftr_fwd_cfg; /* forward real FFT config */
44 float *w; /* [m_pitch] time domain hamming window */
45 COMP W[FFT_ENC]; /* DFT of w[] */
46 float *Pn; /* [2*n_samp] trapezoidal synthesis window */
47 float *bpf_buf; /* buffer for band pass filter */
48 float *Sn; /* [m_pitch] input speech */
49 float hpf_states[2]; /* high pass filter states */
50 void *nlp; /* pitch predictor states */
51 int gray; /* non-zero for gray encoding */
52
53 codec2_fftr_cfg fftr_inv_cfg; /* inverse FFT config */
54 float *Sn_; /* [2*n_samp] synthesised output speech */
55 float ex_phase; /* excitation model phase track */
56 float bg_est; /* background noise estimate for post filter */
57 float prev_f0_enc; /* previous frame's f0 estimate */
58 MODEL prev_model_dec; /* previous frame's model parameters */
59 float prev_lsps_dec[LPC_ORD]; /* previous frame's LSPs */
60 float prev_e_dec; /* previous frame's LPC energy */
61
62 int lpc_pf; /* LPC post filter on */
63 int bass_boost; /* LPC post filter bass boost */
64 float beta; /* LPC post filter parameters */
65 float gamma;
66
67 float xq_enc[2]; /* joint pitch and energy VQ states */
68 float xq_dec[2];
69
70 int smoothing; /* enable smoothing for channels with errors */
71 float *softdec; /* optional soft decn bits from demod */
72
73 /* newamp1 states */
74
75 float rate_K_sample_freqs_kHz[NEWAMP1_K];
76 float prev_rate_K_vec_[NEWAMP1_K];
77 float Wo_left;
78 int voicing_left;
79 codec2_fft_cfg phase_fft_fwd_cfg;
80 codec2_fft_cfg phase_fft_inv_cfg;
81 float se; /* running sum of squared error */
82 unsigned int nse; /* number of terms in sum */
83 float *user_rate_K_vec_no_mean_; /* optional, user supplied vector for quantisation experiments */
84 int post_filter_en;
85
86 /*newamp2 states (also uses newamp1 states )*/
87 float energy_prev;
88 float n2_rate_K_sample_freqs_kHz[NEWAMP2_K];
89 float n2_prev_rate_K_vec_[NEWAMP2_K];
90 float n2_pwb_rate_K_sample_freqs_kHz[NEWAMP2_16K_K];
91 float n2_pwb_prev_rate_K_vec_[NEWAMP2_16K_K];
92
93 /* used to dump features for deep learning experiments */
94 FILE *fmlfeat;
95
96 /* encode/decode function pointers for the selected mode */
97 void (*encode)(struct CODEC2 *c2, unsigned char * bits, short speech[]);
98 void (*decode)(struct CODEC2 *c2, short speech[], const unsigned char * bits);
99 void (*decode_ber)(struct CODEC2 *c2, short speech[], const unsigned char * bits, float ber_est);
100};
101
102// test and debug
103void analyse_one_frame(struct CODEC2 *c2, MODEL *model, short speech[]);
104void synthesise_one_frame(struct CODEC2 *c2, short speech[], MODEL *model,
105 COMP Aw[], float gain);
106#endif
diff --git a/comp.h b/comp.h
new file mode 100644
index 0000000..ffc20c1
--- /dev/null
+++ b/comp.h
@@ -0,0 +1,38 @@
1/*---------------------------------------------------------------------------*\
2
3 FILE........: comp.h
4 AUTHOR......: David Rowe
5 DATE CREATED: 24/08/09
6
7 Complex number definition.
8
9\*---------------------------------------------------------------------------*/
10
11/*
12 Copyright (C) 2009 David Rowe
13
14 All rights reserved.
15
16 This program is free software; you can redistribute it and/or modify
17 it under the terms of the GNU Lesser General Public License version 2.1, as
18 published by the Free Software Foundation. This program is
19 distributed in the hope that it will be useful, but WITHOUT ANY
20 WARRANTY; without even the implied warranty of MERCHANTABILITY or
21 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
22 License for more details.
23
24 You should have received a copy of the GNU Lesser General Public License
25 along with this program; if not, see <http://www.gnu.org/licenses/>.
26*/
27
28#ifndef __COMP__
29#define __COMP__
30
31/* Complex number */
32
33typedef struct {
34 float real;
35 float imag;
36} COMP;
37
38#endif
diff --git a/comp_prim.h b/comp_prim.h
new file mode 100644
index 0000000..d0f070a
--- /dev/null
+++ b/comp_prim.h
@@ -0,0 +1,141 @@
1/*---------------------------------------------------------------------------*\
2
3 FILE........: comp_prim.h
4 AUTHOR......: David Rowe
5 DATE CREATED: Marh 2015
6
7 Complex number maths primitives.
8
9\*---------------------------------------------------------------------------*/
10
11/*
12 Copyright (C) 2015 David Rowe
13
14 All rights reserved.
15
16 This program is free software; you can redistribute it and/or modify
17 it under the terms of the GNU Lesser General Public License version 2.1, as
18 published by the Free Software Foundation. This program is
19 distributed in the hope that it will be useful, but WITHOUT ANY
20 WARRANTY; without even the implied warranty of MERCHANTABILITY or
21 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
22 License for more details.
23
24 You should have received a copy of the GNU Lesser General Public License
25 along with this program; if not, see <http://www.gnu.org/licenses/>.
26*/
27
28#ifndef __COMP_PRIM__
29#define __COMP_PRIM__
30
31/*---------------------------------------------------------------------------*\
32
33 FUNCTIONS
34
35\*---------------------------------------------------------------------------*/
36
37inline static COMP cneg(COMP a)
38{
39 COMP res;
40
41 res.real = -a.real;
42 res.imag = -a.imag;
43
44 return res;
45}
46
47inline static COMP cconj(COMP a)
48{
49 COMP res;
50
51 res.real = a.real;
52 res.imag = -a.imag;
53
54 return res;
55}
56
57inline static COMP cmult(COMP a, COMP b)
58{
59 COMP res;
60
61 res.real = a.real*b.real - a.imag*b.imag;
62 res.imag = a.real*b.imag + a.imag*b.real;
63
64 return res;
65}
66
67inline static COMP fcmult(float a, COMP b)
68{
69 COMP res;
70
71 res.real = a*b.real;
72 res.imag = a*b.imag;
73
74 return res;
75}
76
77inline static COMP cadd(COMP a, COMP b)
78{
79 COMP res;
80
81 res.real = a.real + b.real;
82 res.imag = a.imag + b.imag;
83
84 return res;
85}
86
87inline static float cabsolute(COMP a)
88{
89 return sqrtf((a.real * a.real) + (a.imag * a.imag) );
90}
91
92/*
93 * Euler's formula in a new convenient function
94 */
95inline static COMP comp_exp_j(float phi){
96 COMP res;
97 res.real = cosf(phi);
98 res.imag = sinf(phi);
99 return res;
100}
101
102/*
103 * Quick and easy complex 0
104 */
105inline static COMP comp0(){
106 COMP res;
107 res.real = 0;
108 res.imag = 0;
109 return res;
110}
111
112/*
113 * Quick and easy complex subtract
114 */
115inline static COMP csub(COMP a, COMP b){
116 COMP res;
117 res.real = a.real-b.real;
118 res.imag = a.imag-b.imag;
119 return res;
120}
121
122/*
123 * Compare the magnitude of a and b. if |a|>|b|, return true, otw false.
124 * This needs no square roots
125 */
126inline static int comp_mag_gt(COMP a,COMP b){
127 return ((a.real*a.real)+(a.imag*a.imag)) > ((b.real*b.real)+(b.imag*b.imag));
128}
129
130/*
131 * Normalize a complex number's magnitude to 1
132 */
133inline static COMP comp_normalize(COMP a){
134 COMP b;
135 float av = cabsolute(a);
136 b.real = a.real/av;
137 b.imag = a.imag/av;
138 return b;
139}
140
141#endif
diff --git a/debug_alloc.h b/debug_alloc.h
new file mode 100644
index 0000000..65ce9bd
--- /dev/null
+++ b/debug_alloc.h
@@ -0,0 +1,2 @@
1#define FREE free
2#define MALLOC malloc
diff --git a/defines.h b/defines.h
new file mode 100644
index 0000000..dcd1841
--- /dev/null
+++ b/defines.h
@@ -0,0 +1,125 @@
1/*---------------------------------------------------------------------------*\
2
3 FILE........: defines.h
4 AUTHOR......: David Rowe
5 DATE CREATED: 23/4/93
6
7 Defines and structures used throughout the codec.
8
9\*---------------------------------------------------------------------------*/
10
11/*
12 Copyright (C) 2009 David Rowe
13
14 All rights reserved.
15
16 This program is free software; you can redistribute it and/or modify
17 it under the terms of the GNU Lesser General Public License version 2.1, as
18 published by the Free Software Foundation. This program is
19 distributed in the hope that it will be useful, but WITHOUT ANY
20 WARRANTY; without even the implied warranty of MERCHANTABILITY or
21 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
22 License for more details.
23
24 You should have received a copy of the GNU Lesser General Public License
25 along with this program; if not, see <http://www.gnu.org/licenses/>.
26*/
27
28#ifndef __DEFINES__
29#define __DEFINES__
30
31/*---------------------------------------------------------------------------*\
32
33 DEFINES
34
35\*---------------------------------------------------------------------------*/
36
37/* General defines */
38
39#define N_S 0.01 /* internal proc frame length in secs */
40#define TW_S 0.005 /* trapezoidal synth window overlap */
41#define MAX_AMP 160 /* maximum number of harmonics */
42#ifndef PI
43#define PI 3.141592654 /* mathematical constant */
44#endif
45#define TWO_PI 6.283185307 /* mathematical constant */
46#define MAX_STR 2048 /* maximum string size */
47
48#define FFT_ENC 512 /* size of FFT used for encoder */
49#define FFT_DEC 512 /* size of FFT used in decoder */
50#define V_THRESH 6.0 /* voicing threshold in dB */
51#define LPC_ORD 10 /* LPC order */
52#define LPC_ORD_LOW 6 /* LPC order for lower rates */
53
54/* Pitch estimation defines */
55
56#define M_PITCH_S 0.0400 /* pitch analysis window in s */
57#define P_MIN_S 0.0025 /* minimum pitch period in s */
58#define P_MAX_S 0.0200 /* maximum pitch period in s */
59
60/*---------------------------------------------------------------------------*\
61
62 TYPEDEFS
63
64\*---------------------------------------------------------------------------*/
65
66/* Structure to hold constants calculated at run time based on sample rate */
67
68typedef struct {
69 int Fs; /* sample rate of this instance */
70 int n_samp; /* number of samples per 10ms frame at Fs */
71 int max_amp; /* maximum number of harmonics */
72 int m_pitch; /* pitch estimation window size in samples */
73 int p_min; /* minimum pitch period in samples */
74 int p_max; /* maximum pitch period in samples */
75 float Wo_min;
76 float Wo_max;
77 int nw; /* analysis window size in samples */
78 int tw; /* trapezoidal synthesis window overlap */
79} C2CONST;
80
81/* Structure to hold model parameters for one frame */
82
83typedef struct {
84 float Wo; /* fundamental frequency estimate in radians */
85 int L; /* number of harmonics */
86 float A[MAX_AMP+1]; /* amplitiude of each harmonic */
87 float phi[MAX_AMP+1]; /* phase of each harmonic */
88 int voiced; /* non-zero if this frame is voiced */
89} MODEL;
90
91/* describes each codebook */
92
93struct lsp_codebook {
94 int k; /* dimension of vector */
95 int log2m; /* number of bits in m */
96 int m; /* elements in codebook */
97#ifdef __EMBEDDED /* make sure stored in flash */
98 const float *cb; /* The elements */
99#else
100 float *cb; /* The elements */
101#endif
102};
103
104extern const struct lsp_codebook lsp_cb[];
105extern const struct lsp_codebook lsp_cbd[];
106extern const struct lsp_codebook lsp_cbvq[];
107extern const struct lsp_codebook lsp_cbjnd[];
108extern const struct lsp_codebook lsp_cbdt[];
109extern const struct lsp_codebook lsp_cbjvm[];
110extern const struct lsp_codebook lsp_cbvqanssi[];
111extern const struct lsp_codebook mel_cb[];
112extern const struct lsp_codebook ge_cb[];
113extern const struct lsp_codebook lspmelvq_cb[];
114extern const struct lsp_codebook newamp1vq_cb[];
115extern const struct lsp_codebook newamp1_energy_cb[];
116extern const struct lsp_codebook newamp2vq_cb[];
117extern const struct lsp_codebook newamp2_energy_cb[];
118
119#ifdef _GNU_SOURCE
120 #define POW10F(x) exp10f((x))
121#else
122 #define POW10F(x) expf(2.302585092994046f*(x))
123#endif
124
125#endif
diff --git a/dump.h b/dump.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dump.h
diff --git a/interp.c b/interp.c
new file mode 100644
index 0000000..2109acb
--- /dev/null
+++ b/interp.c
@@ -0,0 +1,331 @@
1/*---------------------------------------------------------------------------*\
2
3 FILE........: interp.c
4 AUTHOR......: David Rowe
5 DATE CREATED: 9/10/09
6
7 Interpolation of 20ms frames to 10ms frames.
8
9\*---------------------------------------------------------------------------*/
10
11/*
12 Copyright (C) 2009 David Rowe
13
14 All rights reserved.
15
16 This program is free software; you can redistribute it and/or modify
17 it under the terms of the GNU Lesser General Public License version 2.1, as
18 published by the Free Software Foundation. This program is
19 distributed in the hope that it will be useful, but WITHOUT ANY
20 WARRANTY; without even the implied warranty of MERCHANTABILITY or
21 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
22 License for more details.
23
24 You should have received a copy of the GNU Lesser General Public License
25 along with this program; if not, see <http://www.gnu.org/licenses/>.
26*/
27
28#include <assert.h>
29#include <math.h>
30#include <string.h>
31#include <stdio.h>
32
33#include "defines.h"
34#include "interp.h"
35#include "lsp.h"
36#include "quantise.h"
37
38float sample_log_amp(MODEL *model, float w);
39
40#if 0
41/*---------------------------------------------------------------------------*\
42
43 FUNCTION....: interp()
44 AUTHOR......: David Rowe
45 DATE CREATED: 22/8/10
46
47 Given two frames decribed by model parameters 20ms apart, determines
48 the model parameters of the 10ms frame between them. Assumes
49 voicing is available for middle (interpolated) frame. Outputs are
50 amplitudes and Wo for the interpolated frame.
51
52 This version can interpolate the amplitudes between two frames of
53 different Wo and L.
54
55 This version works by log linear interpolation, but listening tests
56 showed it creates problems in background noise, e.g. hts2a and mmt1.
57 When this function is used (--dec mode) bg noise appears to be
58 amplitude modulated, and gets louder. The interp_lsp() function
59 below seems to do a better job.
60
61\*---------------------------------------------------------------------------*/
62
63void interpolate(
64 MODEL *interp, /* interpolated model params */
65 MODEL *prev, /* previous frames model params */
66 MODEL *next, /* next frames model params */
67 float Wo_min
68)
69{
70 int l;
71 float w,log_amp;
72
73 /* Wo depends on voicing of this and adjacent frames */
74
75 if (interp->voiced) {
76 if (prev->voiced && next->voiced)
77 interp->Wo = (prev->Wo + next->Wo)/2.0;
78 if (!prev->voiced && next->voiced)
79 interp->Wo = next->Wo;
80 if (prev->voiced && !next->voiced)
81 interp->Wo = prev->Wo;
82 }
83 else {
84 interp->Wo = Wo_min;
85 }
86 interp->L = PI/interp->Wo;
87
88 /* Interpolate amplitudes using linear interpolation in log domain */
89
90 for(l=1; l<=interp->L; l++) {
91 w = l*interp->Wo;
92 log_amp = (sample_log_amp(prev, w) + sample_log_amp(next, w))/2.0;
93 interp->A[l] = powf(10.0, log_amp);
94 }
95}
96#endif
97
98/*---------------------------------------------------------------------------*\
99
100 FUNCTION....: sample_log_amp()
101 AUTHOR......: David Rowe
102 DATE CREATED: 22/8/10
103
104 Samples the amplitude envelope at an arbitrary frequency w. Uses
105 linear interpolation in the log domain to sample between harmonic
106 amplitudes.
107
108\*---------------------------------------------------------------------------*/
109
110float sample_log_amp(MODEL *model, float w)
111{
112 int m;
113 float f, log_amp;
114
115 assert(w > 0.0); assert (w <= PI);
116
117 m = floorf(w/model->Wo + 0.5);
118 f = (w - m*model->Wo)/w;
119 assert(f <= 1.0);
120
121 if (m < 1) {
122 log_amp = f*log10f(model->A[1] + 1E-6);
123 }
124 else if ((m+1) > model->L) {
125 log_amp = (1.0-f)*log10f(model->A[model->L] + 1E-6);
126 }
127 else {
128 log_amp = (1.0-f)*log10f(model->A[m] + 1E-6) +
129 f*log10f(model->A[m+1] + 1E-6);
130 }
131
132 return log_amp;
133}
134
135#ifdef NOT_NEEDED
136
137/*---------------------------------------------------------------------------*\
138
139 FUNCTION....: interp_lsp()
140 AUTHOR......: David Rowe
141 DATE CREATED: 10 Nov 2010
142
143 Given two frames decribed by model parameters 20ms apart, determines
144 the model parameters of the 10ms frame between them. Assumes
145 voicing is available for middle (interpolated) frame. Outputs are
146 amplitudes and Wo for the interpolated frame.
147
148 This version uses interpolation of LSPs, seems to do a better job
149 with bg noise.
150
151\*---------------------------------------------------------------------------*/
152
153void interpolate_lsp(
154 codec2_fft_cfg fft_fwd_cfg,
155 MODEL *interp, /* interpolated model params */
156 MODEL *prev, /* previous frames model params */
157 MODEL *next, /* next frames model params */
158 float *prev_lsps, /* previous frames LSPs */
159 float prev_e, /* previous frames LPC energy */
160 float *next_lsps, /* next frames LSPs */
161 float next_e, /* next frames LPC energy */
162 float *ak_interp, /* interpolated aks for this frame */
163 float *lsps_interp, /* interpolated lsps for this frame */
164 float Wo_min
165)
166{
167 int i;
168 float e;
169 float snr;
170
171 /* trap corner case where V est is probably wrong */
172
173 if (interp->voiced && !prev->voiced && !next->voiced) {
174 interp->voiced = 0;
175 }
176
177 /* Wo depends on voicing of this and adjacent frames */
178
179 if (interp->voiced) {
180 if (prev->voiced && next->voiced)
181 interp->Wo = (prev->Wo + next->Wo)/2.0;
182 if (!prev->voiced && next->voiced)
183 interp->Wo = next->Wo;
184 if (prev->voiced && !next->voiced)
185 interp->Wo = prev->Wo;
186 }
187 else {
188 interp->Wo = Wo_min;
189 }
190 interp->L = PI/interp->Wo;
191
192 //printf(" interp: prev_v: %d next_v: %d prev_Wo: %f next_Wo: %f\n",
193 // prev->voiced, next->voiced, prev->Wo, next->Wo);
194 //printf(" interp: Wo: %1.5f L: %d\n", interp->Wo, interp->L);
195
196 /* interpolate LSPs */
197
198 for(i=0; i<LPC_ORD; i++) {
199 lsps_interp[i] = (prev_lsps[i] + next_lsps[i])/2.0;
200 }
201
202 /* Interpolate LPC energy in log domain */
203
204 e = powf(10.0, (log10f(prev_e) + log10f(next_e))/2.0);
205 //printf(" interp: e: %f\n", e);
206
207 /* convert back to amplitudes */
208
209 lsp_to_lpc(lsps_interp, ak_interp, LPC_ORD);
210 aks_to_M2(fft_fwd_cfg, ak_interp, LPC_ORD, interp, e, &snr, 0, 0, 1, 1, LPCPF_BETA, LPCPF_GAMMA);
211 //printf(" interp: ak[1]: %f A[1] %f\n", ak_interp[1], interp->A[1]);
212}
213#endif
214
215/*---------------------------------------------------------------------------*\
216
217 FUNCTION....: interp_Wo()
218 AUTHOR......: David Rowe
219 DATE CREATED: 22 May 2012
220
221 Interpolates centre 10ms sample of Wo and L samples given two
222 samples 20ms apart. Assumes voicing is available for centre
223 (interpolated) frame.
224
225\*---------------------------------------------------------------------------*/
226
227void interp_Wo(
228 MODEL *interp, /* interpolated model params */
229 MODEL *prev, /* previous frames model params */
230 MODEL *next, /* next frames model params */
231 float Wo_min
232 )
233{
234 interp_Wo2(interp, prev, next, 0.5, Wo_min);
235}
236
237/*---------------------------------------------------------------------------*\
238
239 FUNCTION....: interp_Wo2()
240 AUTHOR......: David Rowe
241 DATE CREATED: 22 May 2012
242
243 Weighted interpolation of two Wo samples.
244
245\*---------------------------------------------------------------------------*/
246
247void interp_Wo2(
248 MODEL *interp, /* interpolated model params */
249 MODEL *prev, /* previous frames model params */
250 MODEL *next, /* next frames model params */
251 float weight,
252 float Wo_min
253)
254{
255 /* trap corner case where voicing est is probably wrong */
256
257 if (interp->voiced && !prev->voiced && !next->voiced) {
258 interp->voiced = 0;
259 }
260
261 /* Wo depends on voicing of this and adjacent frames */
262
263 if (interp->voiced) {
264 if (prev->voiced && next->voiced)
265 interp->Wo = (1.0 - weight)*prev->Wo + weight*next->Wo;
266 if (!prev->voiced && next->voiced)
267 interp->Wo = next->Wo;
268 if (prev->voiced && !next->voiced)
269 interp->Wo = prev->Wo;
270 }
271 else {
272 interp->Wo = Wo_min;
273 }
274 interp->L = PI/interp->Wo;
275}
276
277
278/*---------------------------------------------------------------------------*\
279
280 FUNCTION....: interp_energy()
281 AUTHOR......: David Rowe
282 DATE CREATED: 22 May 2012
283
284 Interpolates centre 10ms sample of energy given two samples 20ms
285 apart.
286
287\*---------------------------------------------------------------------------*/
288
289float interp_energy(float prev_e, float next_e)
290{
291 //return powf(10.0, (log10f(prev_e) + log10f(next_e))/2.0);
292 return sqrtf(prev_e * next_e); //looks better is math. identical and faster math
293}
294
295
296/*---------------------------------------------------------------------------*\
297
298 FUNCTION....: interp_energy2()
299 AUTHOR......: David Rowe
300 DATE CREATED: 22 May 2012
301
302 Interpolates centre 10ms sample of energy given two samples 20ms
303 apart.
304
305\*---------------------------------------------------------------------------*/
306
307float interp_energy2(float prev_e, float next_e, float weight)
308{
309 return POW10F((1.0 - weight)*log10f(prev_e) + weight*log10f(next_e));
310
311}
312
313
314/*---------------------------------------------------------------------------*\
315
316 FUNCTION....: interpolate_lsp_ver2()
317 AUTHOR......: David Rowe
318 DATE CREATED: 22 May 2012
319
320 Weighted interpolation of LSPs.
321
322\*---------------------------------------------------------------------------*/
323
324void interpolate_lsp_ver2(float interp[], float prev[], float next[], float weight, int order)
325{
326 int i;
327
328 for(i=0; i<order; i++)
329 interp[i] = (1.0 - weight)*prev[i] + weight*next[i];
330}
331
diff --git a/interp.h b/interp.h
new file mode 100644
index 0000000..1247b7e
--- /dev/null
+++ b/interp.h
@@ -0,0 +1,45 @@
1/*---------------------------------------------------------------------------*\
2
3 FILE........: interp.h
4 AUTHOR......: David Rowe
5 DATE CREATED: 9/10/09
6
7 Interpolation of 20ms frames to 10ms frames.
8
9\*---------------------------------------------------------------------------*/
10
11/*
12 Copyright (C) 2009 David Rowe
13
14 All rights reserved.
15
16 This program is free software; you can redistribute it and/or modify
17 it under the terms of the GNU Lesser General Public License version 2.1, as
18 published by the Free Software Foundation. This program is
19 distributed in the hope that it will be useful, but WITHOUT ANY
20 WARRANTY; without even the implied warranty of MERCHANTABILITY or
21 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
22 License for more details.
23
24 You should have received a copy of the GNU Lesser General Public License
25 along with this program; if not, see <http://www.gnu.org/licenses/>.
26*/
27
28#ifndef __INTERP__
29#define __INTERP__
30
31#include "kiss_fft.h"
32
33void interpolate(MODEL *interp, MODEL *prev, MODEL *next);
34void interpolate_lsp(kiss_fft_cfg fft_dec_cfg,
35 MODEL *interp, MODEL *prev, MODEL *next,
36 float *prev_lsps, float prev_e,
37 float *next_lsps, float next_e,
38 float *ak_interp, float *lsps_interp, float Wo_min);
39void interp_Wo(MODEL *interp, MODEL *prev, MODEL *next, float Wo_min);
40void interp_Wo2(MODEL *interp, MODEL *prev, MODEL *next, float weight, float Wo_min);
41float interp_energy(float prev, float next);
42float interp_energy2(float prev, float next, float weight);
43void interpolate_lsp_ver2(float interp[], float prev[], float next[], float weight, int order);
44
45#endif
diff --git a/kiss_fft.c b/kiss_fft.c
new file mode 100644
index 0000000..05f7f27
--- /dev/null
+++ b/kiss_fft.c
@@ -0,0 +1,408 @@
1/*
2Copyright (c) 2003-2010, Mark Borgerding
3
4All rights reserved.
5
6Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
7
8 * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
9 * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
10 * Neither the author nor the names of any contributors may be used to endorse or promote products derived from this software without specific prior written permission.
11
12THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
13*/
14
15
16#include "_kiss_fft_guts.h"
17/* The guts header contains all the multiplication and addition macros that are defined for
18 fixed or floating point complex numbers. It also delares the kf_ internal functions.
19 */
20
21static void kf_bfly2(
22 kiss_fft_cpx * Fout,
23 const size_t fstride,
24 const kiss_fft_cfg st,
25 int m
26 )
27{
28 kiss_fft_cpx * Fout2;
29 kiss_fft_cpx * tw1 = st->twiddles;
30 kiss_fft_cpx t;
31 Fout2 = Fout + m;
32 do{
33 C_FIXDIV(*Fout,2); C_FIXDIV(*Fout2,2);
34
35 C_MUL (t, *Fout2 , *tw1);
36 tw1 += fstride;
37 C_SUB( *Fout2 , *Fout , t );
38 C_ADDTO( *Fout , t );
39 ++Fout2;
40 ++Fout;
41 }while (--m);
42}
43
44static void kf_bfly4(
45 kiss_fft_cpx * Fout,
46 const size_t fstride,
47 const kiss_fft_cfg st,
48 const size_t m
49 )
50{
51 kiss_fft_cpx *tw1,*tw2,*tw3;
52 kiss_fft_cpx scratch[6];
53 size_t k=m;
54 const size_t m2=2*m;
55 const size_t m3=3*m;
56
57
58 tw3 = tw2 = tw1 = st->twiddles;
59
60 do {
61 C_FIXDIV(*Fout,4); C_FIXDIV(Fout[m],4); C_FIXDIV(Fout[m2],4); C_FIXDIV(Fout[m3],4);
62
63 C_MUL(scratch[0],Fout[m] , *tw1 );
64 C_MUL(scratch[1],Fout[m2] , *tw2 );
65 C_MUL(scratch[2],Fout[m3] , *tw3 );
66
67 C_SUB( scratch[5] , *Fout, scratch[1] );
68 C_ADDTO(*Fout, scratch[1]);
69 C_ADD( scratch[3] , scratch[0] , scratch[2] );
70 C_SUB( scratch[4] , scratch[0] , scratch[2] );
71 C_SUB( Fout[m2], *Fout, scratch[3] );
72 tw1 += fstride;
73 tw2 += fstride*2;
74 tw3 += fstride*3;
75 C_ADDTO( *Fout , scratch[3] );
76
77 if(st->inverse) {
78 Fout[m].r = scratch[5].r - scratch[4].i;
79 Fout[m].i = scratch[5].i + scratch[4].r;
80 Fout[m3].r = scratch[5].r + scratch[4].i;
81 Fout[m3].i = scratch[5].i - scratch[4].r;
82 }else{
83 Fout[m].r = scratch[5].r + scratch[4].i;
84 Fout[m].i = scratch[5].i - scratch[4].r;
85 Fout[m3].r = scratch[5].r - scratch[4].i;
86 Fout[m3].i = scratch[5].i + scratch[4].r;
87 }
88 ++Fout;
89 }while(--k);
90}
91
92static void kf_bfly3(
93 kiss_fft_cpx * Fout,
94 const size_t fstride,
95 const kiss_fft_cfg st,
96 size_t m
97 )
98{
99 size_t k=m;
100 const size_t m2 = 2*m;
101 kiss_fft_cpx *tw1,*tw2;
102 kiss_fft_cpx scratch[5];
103 kiss_fft_cpx epi3;
104 epi3 = st->twiddles[fstride*m];
105
106 tw1=tw2=st->twiddles;
107
108 do{
109 C_FIXDIV(*Fout,3); C_FIXDIV(Fout[m],3); C_FIXDIV(Fout[m2],3);
110
111 C_MUL(scratch[1],Fout[m] , *tw1);
112 C_MUL(scratch[2],Fout[m2] , *tw2);
113
114 C_ADD(scratch[3],scratch[1],scratch[2]);
115 C_SUB(scratch[0],scratch[1],scratch[2]);
116 tw1 += fstride;
117 tw2 += fstride*2;
118
119 Fout[m].r = Fout->r - HALF_OF(scratch[3].r);
120 Fout[m].i = Fout->i - HALF_OF(scratch[3].i);
121
122 C_MULBYSCALAR( scratch[0] , epi3.i );
123
124 C_ADDTO(*Fout,scratch[3]);
125
126 Fout[m2].r = Fout[m].r + scratch[0].i;
127 Fout[m2].i = Fout[m].i - scratch[0].r;
128
129 Fout[m].r -= scratch[0].i;
130 Fout[m].i += scratch[0].r;
131
132 ++Fout;
133 }while(--k);
134}
135
136static void kf_bfly5(
137 kiss_fft_cpx * Fout,
138 const size_t fstride,
139 const kiss_fft_cfg st,
140 int m
141 )
142{
143 kiss_fft_cpx *Fout0,*Fout1,*Fout2,*Fout3,*Fout4;
144 int u;
145 kiss_fft_cpx scratch[13];
146 kiss_fft_cpx * twiddles = st->twiddles;
147 kiss_fft_cpx *tw;
148 kiss_fft_cpx ya,yb;
149 ya = twiddles[fstride*m];
150 yb = twiddles[fstride*2*m];
151
152 Fout0=Fout;
153 Fout1=Fout0+m;
154 Fout2=Fout0+2*m;
155 Fout3=Fout0+3*m;
156 Fout4=Fout0+4*m;
157
158 tw=st->twiddles;
159 for ( u=0; u<m; ++u ) {
160 C_FIXDIV( *Fout0,5); C_FIXDIV( *Fout1,5); C_FIXDIV( *Fout2,5); C_FIXDIV( *Fout3,5); C_FIXDIV( *Fout4,5);
161 scratch[0] = *Fout0;
162
163 C_MUL(scratch[1] ,*Fout1, tw[u*fstride]);
164 C_MUL(scratch[2] ,*Fout2, tw[2*u*fstride]);
165 C_MUL(scratch[3] ,*Fout3, tw[3*u*fstride]);
166 C_MUL(scratch[4] ,*Fout4, tw[4*u*fstride]);
167
168 C_ADD( scratch[7],scratch[1],scratch[4]);
169 C_SUB( scratch[10],scratch[1],scratch[4]);
170 C_ADD( scratch[8],scratch[2],scratch[3]);
171 C_SUB( scratch[9],scratch[2],scratch[3]);
172
173 Fout0->r += scratch[7].r + scratch[8].r;
174 Fout0->i += scratch[7].i + scratch[8].i;
175
176 scratch[5].r = scratch[0].r + S_MUL(scratch[7].r,ya.r) + S_MUL(scratch[8].r,yb.r);
177 scratch[5].i = scratch[0].i + S_MUL(scratch[7].i,ya.r) + S_MUL(scratch[8].i,yb.r);
178
179 scratch[6].r = S_MUL(scratch[10].i,ya.i) + S_MUL(scratch[9].i,yb.i);
180 scratch[6].i = -S_MUL(scratch[10].r,ya.i) - S_MUL(scratch[9].r,yb.i);
181
182 C_SUB(*Fout1,scratch[5],scratch[6]);
183 C_ADD(*Fout4,scratch[5],scratch[6]);
184
185 scratch[11].r = scratch[0].r + S_MUL(scratch[7].r,yb.r) + S_MUL(scratch[8].r,ya.r);
186 scratch[11].i = scratch[0].i + S_MUL(scratch[7].i,yb.r) + S_MUL(scratch[8].i,ya.r);
187 scratch[12].r = - S_MUL(scratch[10].i,yb.i) + S_MUL(scratch[9].i,ya.i);
188 scratch[12].i = S_MUL(scratch[10].r,yb.i) - S_MUL(scratch[9].r,ya.i);
189
190 C_ADD(*Fout2,scratch[11],scratch[12]);
191 C_SUB(*Fout3,scratch[11],scratch[12]);
192
193 ++Fout0;++Fout1;++Fout2;++Fout3;++Fout4;
194 }
195}
196
197/* perform the butterfly for one stage of a mixed radix FFT */
198static void kf_bfly_generic(
199 kiss_fft_cpx * Fout,
200 const size_t fstride,
201 const kiss_fft_cfg st,
202 int m,
203 int p
204 )
205{
206 int u,k,q1,q;
207 kiss_fft_cpx * twiddles = st->twiddles;
208 kiss_fft_cpx t;
209 int Norig = st->nfft;
210
211 kiss_fft_cpx * scratch = (kiss_fft_cpx*)KISS_FFT_TMP_ALLOC(sizeof(kiss_fft_cpx)*p);
212
213 for ( u=0; u<m; ++u ) {
214 k=u;
215 for ( q1=0 ; q1<p ; ++q1 ) {
216 scratch[q1] = Fout[ k ];
217 C_FIXDIV(scratch[q1],p);
218 k += m;
219 }
220
221 k=u;
222 for ( q1=0 ; q1<p ; ++q1 ) {
223 int twidx=0;
224 Fout[ k ] = scratch[0];
225 for (q=1;q<p;++q ) {
226 twidx += fstride * k;
227 if (twidx>=Norig) twidx-=Norig;
228 C_MUL(t,scratch[q] , twiddles[twidx] );
229 C_ADDTO( Fout[ k ] ,t);
230 }
231 k += m;
232 }
233 }
234 KISS_FFT_TMP_FREE(scratch);
235}
236
237static
238void kf_work(
239 kiss_fft_cpx * Fout,
240 const kiss_fft_cpx * f,
241 const size_t fstride,
242 int in_stride,
243 int * factors,
244 const kiss_fft_cfg st
245 )
246{
247 kiss_fft_cpx * Fout_beg=Fout;
248 const int p=*factors++; /* the radix */
249 const int m=*factors++; /* stage's fft length/p */
250 const kiss_fft_cpx * Fout_end = Fout + p*m;
251
252#ifdef _OPENMP
253 // use openmp extensions at the
254 // top-level (not recursive)
255 if (fstride==1 && p<=5)
256 {
257 int k;
258
259 // execute the p different work units in different threads
260# pragma omp parallel for
261 for (k=0;k<p;++k)
262 kf_work( Fout +k*m, f+ fstride*in_stride*k,fstride*p,in_stride,factors,st);
263 // all threads have joined by this point
264
265 switch (p) {
266 case 2: kf_bfly2(Fout,fstride,st,m); break;
267 case 3: kf_bfly3(Fout,fstride,st,m); break;
268 case 4: kf_bfly4(Fout,fstride,st,m); break;
269 case 5: kf_bfly5(Fout,fstride,st,m); break;
270 default: kf_bfly_generic(Fout,fstride,st,m,p); break;
271 }
272 return;
273 }
274#endif
275
276 if (m==1) {
277 do{
278 *Fout = *f;
279 f += fstride*in_stride;
280 }while(++Fout != Fout_end );
281 }else{
282 do{
283 // recursive call:
284 // DFT of size m*p performed by doing
285 // p instances of smaller DFTs of size m,
286 // each one takes a decimated version of the input
287 kf_work( Fout , f, fstride*p, in_stride, factors,st);
288 f += fstride*in_stride;
289 }while( (Fout += m) != Fout_end );
290 }
291
292 Fout=Fout_beg;
293
294 // recombine the p smaller DFTs
295 switch (p) {
296 case 2: kf_bfly2(Fout,fstride,st,m); break;
297 case 3: kf_bfly3(Fout,fstride,st,m); break;
298 case 4: kf_bfly4(Fout,fstride,st,m); break;
299 case 5: kf_bfly5(Fout,fstride,st,m); break;
300 default: kf_bfly_generic(Fout,fstride,st,m,p); break;
301 }
302}
303
304/* facbuf is populated by p1,m1,p2,m2, ...
305 where
306 p[i] * m[i] = m[i-1]
307 m0 = n */
308static
309void kf_factor(int n,int * facbuf)
310{
311 int p=4;
312 double floor_sqrt;
313 floor_sqrt = floorf( sqrtf((double)n) );
314
315 /*factor out powers of 4, powers of 2, then any remaining primes */
316 do {
317 while (n % p) {
318 switch (p) {
319 case 4: p = 2; break;
320 case 2: p = 3; break;
321 default: p += 2; break;
322 }
323 if (p > floor_sqrt)
324 p = n; /* no more factors, skip to end */
325 }
326 n /= p;
327 *facbuf++ = p;
328 *facbuf++ = n;
329 } while (n > 1);
330}
331
332/*
333 *
334 * User-callable function to allocate all necessary storage space for the fft.
335 *
336 * The return value is a contiguous block of memory, allocated with malloc. As such,
337 * It can be freed with free(), rather than a kiss_fft-specific function.
338 * */
339kiss_fft_cfg kiss_fft_alloc(int nfft,int inverse_fft,void * mem,size_t * lenmem )
340{
341 kiss_fft_cfg st=NULL;
342 size_t memneeded = sizeof(struct kiss_fft_state)
343 + sizeof(kiss_fft_cpx)*(nfft-1); /* twiddle factors*/
344
345 if ( lenmem==NULL ) {
346 st = ( kiss_fft_cfg)KISS_FFT_MALLOC( memneeded );
347 }else{
348 if (mem != NULL && *lenmem >= memneeded)
349 st = (kiss_fft_cfg)mem;
350 *lenmem = memneeded;
351 }
352 if (st) {
353 int i;
354 st->nfft=nfft;
355 st->inverse = inverse_fft;
356
357 for (i=0;i<nfft;++i) {
358 const double pi=3.141592653589793238462643383279502884197169399375105820974944;
359 double phase = -2*pi*i / nfft;
360 if (st->inverse)
361 phase *= -1;
362 kf_cexp(st->twiddles+i, phase );
363 }
364
365 kf_factor(nfft,st->factors);
366 }
367 return st;
368}
369
370
371void kiss_fft_stride(kiss_fft_cfg st,const kiss_fft_cpx *fin,kiss_fft_cpx *fout,int in_stride)
372{
373 if (fin == fout) {
374 //NOTE: this is not really an in-place FFT algorithm.
375 //It just performs an out-of-place FFT into a temp buffer
376 kiss_fft_cpx * tmpbuf = (kiss_fft_cpx*)KISS_FFT_TMP_ALLOC( sizeof(kiss_fft_cpx)*st->nfft);
377 kf_work(tmpbuf,fin,1,in_stride, st->factors,st);
378 memcpy(fout,tmpbuf,sizeof(kiss_fft_cpx)*st->nfft);
379 KISS_FFT_TMP_FREE(tmpbuf);
380 }else{
381 kf_work( fout, fin, 1,in_stride, st->factors,st );
382 }
383}
384
385void kiss_fft(kiss_fft_cfg cfg,const kiss_fft_cpx *fin,kiss_fft_cpx *fout)
386{
387 kiss_fft_stride(cfg,fin,fout,1);
388}
389
390
391void kiss_fft_cleanup(void)
392{
393 // nothing needed any more
394}
395
396int kiss_fft_next_fast_size(int n)
397{
398 while(1) {
399 int m=n;
400 while ( (m%2) == 0 ) m/=2;
401 while ( (m%3) == 0 ) m/=3;
402 while ( (m%5) == 0 ) m/=5;
403 if (m<=1)
404 break; /* n is completely factorable by twos, threes, and fives */
405 n++;
406 }
407 return n;
408}
diff --git a/kiss_fft.h b/kiss_fft.h
new file mode 100644
index 0000000..c01722c
--- /dev/null
+++ b/kiss_fft.h
@@ -0,0 +1,124 @@
1#ifndef KISS_FFT_H
2#define KISS_FFT_H
3
4#include <stdlib.h>
5#include <stdio.h>
6#include <math.h>
7#include <string.h>
8
9#ifdef __cplusplus
10extern "C" {
11#endif
12
13/*
14 ATTENTION!
15 If you would like a :
16 -- a utility that will handle the caching of fft objects
17 -- real-only (no imaginary time component ) FFT
18 -- a multi-dimensional FFT
19 -- a command-line utility to perform ffts
20 -- a command-line utility to perform fast-convolution filtering
21
22 Then see kfc.h kiss_fftr.h kiss_fftnd.h fftutil.c kiss_fastfir.c
23 in the tools/ directory.
24*/
25
26#ifdef USE_SIMD
27# include <xmmintrin.h>
28# define kiss_fft_scalar __m128
29#define KISS_FFT_MALLOC(nbytes) _mm_malloc(nbytes,16)
30#define KISS_FFT_FREE _mm_free
31#else
32#define KISS_FFT_MALLOC malloc
33#define KISS_FFT_FREE free
34#endif
35
36
37#ifdef FIXED_POINT
38#include <sys/types.h>
39# if (FIXED_POINT == 32)
40# define kiss_fft_scalar int32_t
41# else
42# define kiss_fft_scalar int16_t
43# endif
44#else
45# ifndef kiss_fft_scalar
46/* default is float */
47# define kiss_fft_scalar float
48# endif
49#endif
50
51typedef struct {
52 kiss_fft_scalar r;
53 kiss_fft_scalar i;
54}kiss_fft_cpx;
55
56typedef struct kiss_fft_state* kiss_fft_cfg;
57
58/*
59 * kiss_fft_alloc
60 *
61 * Initialize a FFT (or IFFT) algorithm's cfg/state buffer.
62 *
63 * typical usage: kiss_fft_cfg mycfg=kiss_fft_alloc(1024,0,NULL,NULL);
64 *
65 * The return value from fft_alloc is a cfg buffer used internally
66 * by the fft routine or NULL.
67 *
68 * If lenmem is NULL, then kiss_fft_alloc will allocate a cfg buffer using malloc.
69 * The returned value should be free()d when done to avoid memory leaks.
70 *
71 * The state can be placed in a user supplied buffer 'mem':
72 * If lenmem is not NULL and mem is not NULL and *lenmem is large enough,
73 * then the function places the cfg in mem and the size used in *lenmem
74 * and returns mem.
75 *
76 * If lenmem is not NULL and ( mem is NULL or *lenmem is not large enough),
77 * then the function returns NULL and places the minimum cfg
78 * buffer size in *lenmem.
79 * */
80
81kiss_fft_cfg kiss_fft_alloc(int nfft,int inverse_fft,void * mem,size_t * lenmem);
82
83/*
84 * kiss_fft(cfg,in_out_buf)
85 *
86 * Perform an FFT on a complex input buffer.
87 * for a forward FFT,
88 * fin should be f[0] , f[1] , ... ,f[nfft-1]
89 * fout will be F[0] , F[1] , ... ,F[nfft-1]
90 * Note that each element is complex and can be accessed like
91 f[k].r and f[k].i
92 * */
93void kiss_fft(kiss_fft_cfg cfg,const kiss_fft_cpx *fin,kiss_fft_cpx *fout);
94
95/*
96 A more generic version of the above function. It reads its input from every Nth sample.
97 * */
98void kiss_fft_stride(kiss_fft_cfg cfg,const kiss_fft_cpx *fin,kiss_fft_cpx *fout,int fin_stride);
99
100/* If kiss_fft_alloc allocated a buffer, it is one contiguous
101 buffer and can be simply free()d when no longer needed*/
102#define kiss_fft_free free
103
104/*
105 Cleans up some memory that gets managed internally. Not necessary to call, but it might clean up
106 your compiler output to call this before you exit.
107*/
108void kiss_fft_cleanup(void);
109
110
111/*
112 * Returns the smallest integer k, such that k>=n and k has only "fast" factors (2,3,5)
113 */
114int kiss_fft_next_fast_size(int n);
115
116/* for real ffts, we need an even size */
117#define kiss_fftr_next_fast_size_real(n) \
118 (kiss_fft_next_fast_size( ((n)+1)>>1)<<1)
119
120#ifdef __cplusplus
121}
122#endif
123
124#endif
diff --git a/kiss_fftr.c b/kiss_fftr.c
new file mode 100644
index 0000000..7cc0286
--- /dev/null
+++ b/kiss_fftr.c
@@ -0,0 +1,154 @@
1/*
2Copyright (c) 2003-2004, Mark Borgerding
3
4All rights reserved.
5
6Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
7
8 * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
9 * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
10 * Neither the author nor the names of any contributors may be used to endorse or promote products derived from this software without specific prior written permission.
11
12THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
13*/
14
15#include "kiss_fftr.h"
16#include "_kiss_fft_guts.h"
17#include "assert.h"
18
19struct kiss_fftr_state{
20 kiss_fft_cfg substate;
21 kiss_fft_cpx * tmpbuf;
22 kiss_fft_cpx * super_twiddles;
23#ifdef USE_SIMD
24 void * pad;
25#endif
26};
27
28kiss_fftr_cfg kiss_fftr_alloc(int nfft,int inverse_fft,void * mem,size_t * lenmem)
29{
30 int i;
31 kiss_fftr_cfg st = NULL;
32 size_t subsize, memneeded;
33
34 if (nfft & 1) {
35 fprintf(stderr,"Real FFT optimization must be even.\n");
36 return NULL;
37 }
38 nfft >>= 1;
39
40 kiss_fft_alloc (nfft, inverse_fft, NULL, &subsize);
41 memneeded = sizeof(struct kiss_fftr_state) + subsize + sizeof(kiss_fft_cpx) * ( nfft * 3 / 2);
42
43 if (lenmem == NULL) {
44 st = (kiss_fftr_cfg) KISS_FFT_MALLOC (memneeded);
45 } else {
46 if (*lenmem >= memneeded)
47 st = (kiss_fftr_cfg) mem;
48 *lenmem = memneeded;
49 }
50 if (!st)
51 return NULL;
52
53 st->substate = (kiss_fft_cfg) (st + 1); /*just beyond kiss_fftr_state struct */
54 st->tmpbuf = (kiss_fft_cpx *) (((char *) st->substate) + subsize);
55 st->super_twiddles = st->tmpbuf + nfft;
56 kiss_fft_alloc(nfft, inverse_fft, st->substate, &subsize);
57
58 for (i = 0; i < nfft/2; ++i) {
59 float phase =
60 -3.14159265358979323846264338327 * ((float) (i+1) / nfft + .5);
61 if (inverse_fft)
62 phase *= -1;
63 kf_cexp (st->super_twiddles+i,phase);
64 }
65 return st;
66}
67
68void kiss_fftr(kiss_fftr_cfg st,const kiss_fft_scalar *timedata,kiss_fft_cpx *freqdata)
69{
70 /* input buffer timedata is stored row-wise */
71 int k,ncfft;
72 kiss_fft_cpx fpnk,fpk,f1k,f2k,tw,tdc;
73
74 assert(st->substate->inverse==0);
75
76 ncfft = st->substate->nfft;
77
78 /*perform the parallel fft of two real signals packed in real,imag*/
79 kiss_fft( st->substate , (const kiss_fft_cpx*)timedata, st->tmpbuf );
80 /* The real part of the DC element of the frequency spectrum in st->tmpbuf
81 * contains the sum of the even-numbered elements of the input time sequence
82 * The imag part is the sum of the odd-numbered elements
83 *
84 * The sum of tdc.r and tdc.i is the sum of the input time sequence.
85 * yielding DC of input time sequence
86 * The difference of tdc.r - tdc.i is the sum of the input (dot product) [1,-1,1,-1...
87 * yielding Nyquist bin of input time sequence
88 */
89
90 tdc.r = st->tmpbuf[0].r;
91 tdc.i = st->tmpbuf[0].i;
92 C_FIXDIV(tdc,2);
93 CHECK_OVERFLOW_OP(tdc.r ,+, tdc.i);
94 CHECK_OVERFLOW_OP(tdc.r ,-, tdc.i);
95 freqdata[0].r = tdc.r + tdc.i;
96 freqdata[ncfft].r = tdc.r - tdc.i;
97#ifdef USE_SIMD
98 freqdata[ncfft].i = freqdata[0].i = _mm_set1_ps(0);
99#else
100 freqdata[ncfft].i = freqdata[0].i = 0;
101#endif
102
103 for ( k=1;k <= ncfft/2 ; ++k ) {
104 fpk = st->tmpbuf[k];
105 fpnk.r = st->tmpbuf[ncfft-k].r;
106 fpnk.i = - st->tmpbuf[ncfft-k].i;
107 C_FIXDIV(fpk,2);
108 C_FIXDIV(fpnk,2);
109
110 C_ADD( f1k, fpk , fpnk );
111 C_SUB( f2k, fpk , fpnk );
112 C_MUL( tw , f2k , st->super_twiddles[k-1]);
113
114 freqdata[k].r = HALF_OF(f1k.r + tw.r);
115 freqdata[k].i = HALF_OF(f1k.i + tw.i);
116 freqdata[ncfft-k].r = HALF_OF(f1k.r - tw.r);
117 freqdata[ncfft-k].i = HALF_OF(tw.i - f1k.i);
118 }
119}
120
121void kiss_fftri(kiss_fftr_cfg st,const kiss_fft_cpx *freqdata,kiss_fft_scalar *timedata)
122{
123 /* input buffer timedata is stored row-wise */
124 int k, ncfft;
125
126 assert(st->substate->inverse == 1);
127
128 ncfft = st->substate->nfft;
129
130 st->tmpbuf[0].r = freqdata[0].r + freqdata[ncfft].r;
131 st->tmpbuf[0].i = freqdata[0].r - freqdata[ncfft].r;
132 C_FIXDIV(st->tmpbuf[0],2);
133
134 for (k = 1; k <= ncfft / 2; ++k) {
135 kiss_fft_cpx fk, fnkc, fek, fok, tmp;
136 fk = freqdata[k];
137 fnkc.r = freqdata[ncfft - k].r;
138 fnkc.i = -freqdata[ncfft - k].i;
139 C_FIXDIV( fk , 2 );
140 C_FIXDIV( fnkc , 2 );
141
142 C_ADD (fek, fk, fnkc);
143 C_SUB (tmp, fk, fnkc);
144 C_MUL (fok, tmp, st->super_twiddles[k-1]);
145 C_ADD (st->tmpbuf[k], fek, fok);
146 C_SUB (st->tmpbuf[ncfft - k], fek, fok);
147#ifdef USE_SIMD
148 st->tmpbuf[ncfft - k].i *= _mm_set1_ps(-1.0);
149#else
150 st->tmpbuf[ncfft - k].i *= -1;
151#endif
152 }
153 kiss_fft (st->substate, st->tmpbuf, (kiss_fft_cpx *) timedata);
154}
diff --git a/kiss_fftr.h b/kiss_fftr.h
new file mode 100644
index 0000000..72e5a57
--- /dev/null
+++ b/kiss_fftr.h
@@ -0,0 +1,46 @@
1#ifndef KISS_FTR_H
2#define KISS_FTR_H
3
4#include "kiss_fft.h"
5#ifdef __cplusplus
6extern "C" {
7#endif
8
9
10/*
11
12 Real optimized version can save about 45% cpu time vs. complex fft of a real seq.
13
14
15
16 */
17
18typedef struct kiss_fftr_state *kiss_fftr_cfg;
19
20
21kiss_fftr_cfg kiss_fftr_alloc(int nfft,int inverse_fft,void * mem, size_t * lenmem);
22/*
23 nfft must be even
24
25 If you don't care to allocate space, use mem = lenmem = NULL
26*/
27
28
29void kiss_fftr(kiss_fftr_cfg cfg,const kiss_fft_scalar *timedata,kiss_fft_cpx *freqdata);
30/*
31 input timedata has nfft scalar points
32 output freqdata has nfft/2+1 complex points
33*/
34
35void kiss_fftri(kiss_fftr_cfg cfg,const kiss_fft_cpx *freqdata,kiss_fft_scalar *timedata);
36/*
37 input freqdata has nfft/2+1 complex points
38 output timedata has nfft scalar points
39*/
40
41#define kiss_fftr_free free
42
43#ifdef __cplusplus
44}
45#endif
46#endif
diff --git a/lpc.c b/lpc.c
new file mode 100644
index 0000000..31442cd
--- /dev/null
+++ b/lpc.c
@@ -0,0 +1,306 @@
1/*---------------------------------------------------------------------------*\
2
3 FILE........: lpc.c
4 AUTHOR......: David Rowe
5 DATE CREATED: 30 Sep 1990 (!)
6
7 Linear Prediction functions written in C.
8
9\*---------------------------------------------------------------------------*/
10
11/*
12 Copyright (C) 2009-2012 David Rowe
13
14 All rights reserved.
15
16 This program is free software; you can redistribute it and/or modify
17 it under the terms of the GNU Lesser General Public License version 2.1, as
18 published by the Free Software Foundation. This program is
19 distributed in the hope that it will be useful, but WITHOUT ANY
20 WARRANTY; without even the implied warranty of MERCHANTABILITY or
21 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
22 License for more details.
23
24 You should have received a copy of the GNU Lesser General Public License
25 along with this program; if not, see <http://www.gnu.org/licenses/>.
26*/
27
28#define LPC_MAX_N 512 /* maximum no. of samples in frame */
29#define PI 3.141592654 /* mathematical constant */
30
31#define ALPHA 1.0
32#define BETA 0.94
33
34#include <assert.h>
35#include <math.h>
36#include "defines.h"
37#include "lpc.h"
38
39/*---------------------------------------------------------------------------*\
40
41 pre_emp()
42
43 Pre-emphasise (high pass filter with zero close to 0 Hz) a frame of
44 speech samples. Helps reduce dynamic range of LPC spectrum, giving
45 greater weight and hense a better match to low energy formants.
46
47 Should be balanced by de-emphasis of the output speech.
48
49\*---------------------------------------------------------------------------*/
50
51void pre_emp(
52 float Sn_pre[], /* output frame of speech samples */
53 float Sn[], /* input frame of speech samples */
54 float *mem, /* Sn[-1]single sample memory */
55 int Nsam /* number of speech samples to use */
56)
57{
58 int i;
59
60 for(i=0; i<Nsam; i++) {
61 Sn_pre[i] = Sn[i] - ALPHA * mem[0];
62 mem[0] = Sn[i];
63 }
64
65}
66
67
68/*---------------------------------------------------------------------------*\
69
70 de_emp()
71
72 De-emphasis filter (low pass filter with a pole close to 0 Hz).
73
74\*---------------------------------------------------------------------------*/
75
76void de_emp(
77 float Sn_de[], /* output frame of speech samples */
78 float Sn[], /* input frame of speech samples */
79 float *mem, /* Sn[-1]single sample memory */
80 int Nsam /* number of speech samples to use */
81)
82{
83 int i;
84
85 for(i=0; i<Nsam; i++) {
86 Sn_de[i] = Sn[i] + BETA * mem[0];
87 mem[0] = Sn_de[i];
88 }
89
90}
91
92
93/*---------------------------------------------------------------------------*\
94
95 hanning_window()
96
97 Hanning windows a frame of speech samples.
98
99\*---------------------------------------------------------------------------*/
100
101void hanning_window(
102 float Sn[], /* input frame of speech samples */
103 float Wn[], /* output frame of windowed samples */
104 int Nsam /* number of samples */
105)
106{
107 int i; /* loop variable */
108
109 for(i=0; i<Nsam; i++)
110 Wn[i] = Sn[i]*(0.5 - 0.5*cosf(2*PI*(float)i/(Nsam-1)));
111}
112
113/*---------------------------------------------------------------------------*\
114
115 autocorrelate()
116
117 Finds the first P autocorrelation values of an array of windowed speech
118 samples Sn[].
119
120\*---------------------------------------------------------------------------*/
121
122void autocorrelate(
123 float Sn[], /* frame of Nsam windowed speech samples */
124 float Rn[], /* array of P+1 autocorrelation coefficients */
125 int Nsam, /* number of windowed samples to use */
126 int order /* order of LPC analysis */
127)
128{
129 int i,j; /* loop variables */
130
131 for(j=0; j<order+1; j++) {
132 Rn[j] = 0.0;
133 for(i=0; i<Nsam-j; i++)
134 Rn[j] += Sn[i]*Sn[i+j];
135 }
136}
137
138/*---------------------------------------------------------------------------*\
139
140 levinson_durbin()
141
142 Given P+1 autocorrelation coefficients, finds P Linear Prediction Coeff.
143 (LPCs) where P is the order of the LPC all-pole model. The Levinson-Durbin
144 algorithm is used, and is described in:
145
146 J. Makhoul
147 "Linear prediction, a tutorial review"
148 Proceedings of the IEEE
149 Vol-63, No. 4, April 1975
150
151\*---------------------------------------------------------------------------*/
152
153void levinson_durbin(
154 float R[], /* order+1 autocorrelation coeff */
155 float lpcs[], /* order+1 LPC's */
156 int order /* order of the LPC analysis */
157)
158{
159 float a[order+1][order+1];
160 float sum, e, k;
161 int i,j; /* loop variables */
162
163 e = R[0]; /* Equation 38a, Makhoul */
164
165 for(i=1; i<=order; i++) {
166 sum = 0.0;
167 for(j=1; j<=i-1; j++)
168 sum += a[i-1][j]*R[i-j];
169 k = -1.0*(R[i] + sum)/e; /* Equation 38b, Makhoul */
170 if (fabsf(k) > 1.0)
171 k = 0.0;
172
173 a[i][i] = k;
174
175 for(j=1; j<=i-1; j++)
176 a[i][j] = a[i-1][j] + k*a[i-1][i-j]; /* Equation 38c, Makhoul */
177
178 e *= (1-k*k); /* Equation 38d, Makhoul */
179 }
180
181 for(i=1; i<=order; i++)
182 lpcs[i] = a[order][i];
183 lpcs[0] = 1.0;
184}
185
186/*---------------------------------------------------------------------------*\
187
188 inverse_filter()
189
190 Inverse Filter, A(z). Produces an array of residual samples from an array
191 of input samples and linear prediction coefficients.
192
193 The filter memory is stored in the first order samples of the input array.
194
195\*---------------------------------------------------------------------------*/
196
197void inverse_filter(
198 float Sn[], /* Nsam input samples */
199 float a[], /* LPCs for this frame of samples */
200 int Nsam, /* number of samples */
201 float res[], /* Nsam residual samples */
202 int order /* order of LPC */
203)
204{
205 int i,j; /* loop variables */
206
207 for(i=0; i<Nsam; i++) {
208 res[i] = 0.0;
209 for(j=0; j<=order; j++)
210 res[i] += Sn[i-j]*a[j];
211 }
212}
213
214/*---------------------------------------------------------------------------*\
215
216 synthesis_filter()
217
218 C version of the Speech Synthesis Filter, 1/A(z). Given an array of
219 residual or excitation samples, and the the LP filter coefficients, this
220 function will produce an array of speech samples. This filter structure is
221 IIR.
222
223 The synthesis filter has memory as well, this is treated in the same way
224 as the memory for the inverse filter (see inverse_filter() notes above).
225 The difference is that the memory for the synthesis filter is stored in
226 the output array, wheras the memory of the inverse filter is stored in the
227 input array.
228
229 Note: the calling function must update the filter memory.
230
231\*---------------------------------------------------------------------------*/
232
233void synthesis_filter(
234 float res[], /* Nsam input residual (excitation) samples */
235 float a[], /* LPCs for this frame of speech samples */
236 int Nsam, /* number of speech samples */
237 int order, /* LPC order */
238 float Sn_[] /* Nsam output synthesised speech samples */
239)
240{
241 int i,j; /* loop variables */
242
243 /* Filter Nsam samples */
244
245 for(i=0; i<Nsam; i++) {
246 Sn_[i] = res[i]*a[0];
247 for(j=1; j<=order; j++)
248 Sn_[i] -= Sn_[i-j]*a[j];
249 }
250}
251
252/*---------------------------------------------------------------------------*\
253
254 find_aks()
255
256 This function takes a frame of samples, and determines the linear
257 prediction coefficients for that frame of samples.
258
259\*---------------------------------------------------------------------------*/
260
261void find_aks(
262 float Sn[], /* Nsam samples with order sample memory */
263 float a[], /* order+1 LPCs with first coeff 1.0 */
264 int Nsam, /* number of input speech samples */
265 int order, /* order of the LPC analysis */
266 float *E /* residual energy */
267)
268{
269 float Wn[LPC_MAX_N]; /* windowed frame of Nsam speech samples */
270 float R[order+1]; /* order+1 autocorrelation values of Sn[] */
271 int i;
272
273 assert(Nsam < LPC_MAX_N);
274
275 hanning_window(Sn,Wn,Nsam);
276 autocorrelate(Wn,R,Nsam,order);
277 levinson_durbin(R,a,order);
278
279 *E = 0.0;
280 for(i=0; i<=order; i++)
281 *E += a[i]*R[i];
282 if (*E < 0.0)
283 *E = 1E-12;
284}
285
286/*---------------------------------------------------------------------------*\
287
288 weight()
289
290 Weights a vector of LPCs.
291
292\*---------------------------------------------------------------------------*/
293
294void weight(
295 float ak[], /* vector of order+1 LPCs */
296 float gamma, /* weighting factor */
297 int order, /* num LPCs (excluding leading 1.0) */
298 float akw[] /* weighted vector of order+1 LPCs */
299)
300{
301 int i;
302
303 for(i=1; i<=order; i++)
304 akw[i] = ak[i]*powf(gamma,(float)i);
305}
306
diff --git a/lpc.h b/lpc.h
new file mode 100644
index 0000000..482aa1f
--- /dev/null
+++ b/lpc.h
@@ -0,0 +1,43 @@
1/*---------------------------------------------------------------------------*\
2
3 FILE........: lpc.h
4 AUTHOR......: David Rowe
5 DATE CREATED: 24/8/09
6
7 Linear Prediction functions written in C.
8
9\*---------------------------------------------------------------------------*/
10
11/*
12 Copyright (C) 2009-2012 David Rowe
13
14 All rights reserved.
15
16 This program is free software; you can redistribute it and/or modify
17 it under the terms of the GNU Lesser General Public License version 2.1, as
18 published by the Free Software Foundation. This program is
19 distributed in the hope that it will be useful, but WITHOUT ANY
20 WARRANTY; without even the implied warranty of MERCHANTABILITY or
21 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
22 License for more details.
23
24 You should have received a copy of the GNU Lesser General Public License
25 along with this program; if not, see <http://www.gnu.org/licenses/>.
26*/
27
28#ifndef __LPC__
29#define __LPC__
30
31#define LPC_MAX_ORDER 20
32
33void pre_emp(float Sn_pre[], float Sn[], float *mem, int Nsam);
34void de_emp(float Sn_se[], float Sn[], float *mem, int Nsam);
35void hanning_window(float Sn[], float Wn[], int Nsam);
36void autocorrelate(float Sn[], float Rn[], int Nsam, int order);
37void levinson_durbin(float R[], float lpcs[], int order);
38void inverse_filter(float Sn[], float a[], int Nsam, float res[], int order);
39void synthesis_filter(float res[], float a[], int Nsam, int order, float Sn_[]);
40void find_aks(float Sn[], float a[], int Nsam, int order, float *E);
41void weight(float ak[], float gamma, int order, float akw[]);
42
43#endif
diff --git a/lsp.c b/lsp.c
new file mode 100644
index 0000000..05d190e
--- /dev/null
+++ b/lsp.c
@@ -0,0 +1,321 @@
1/*---------------------------------------------------------------------------*\
2
3 FILE........: lsp.c
4 AUTHOR......: David Rowe
5 DATE CREATED: 24/2/93
6
7
8 This file contains functions for LPC to LSP conversion and LSP to
9 LPC conversion. Note that the LSP coefficients are not in radians
10 format but in the x domain of the unit circle.
11
12\*---------------------------------------------------------------------------*/
13
14/*
15 Copyright (C) 2009 David Rowe
16
17 All rights reserved.
18
19 This program is free software; you can redistribute it and/or modify
20 it under the terms of the GNU Lesser General Public License version 2.1, as
21 published by the Free Software Foundation. This program is
22 distributed in the hope that it will be useful, but WITHOUT ANY
23 WARRANTY; without even the implied warranty of MERCHANTABILITY or
24 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
25 License for more details.
26
27 You should have received a copy of the GNU Lesser General Public License
28 along with this program; if not, see <http://www.gnu.org/licenses/>.
29*/
30
31#include "defines.h"
32#include "lsp.h"
33#include <math.h>
34#include <stdio.h>
35#include <stdlib.h>
36
37/*---------------------------------------------------------------------------*\
38
39 Introduction to Line Spectrum Pairs (LSPs)
40 ------------------------------------------
41
42 LSPs are used to encode the LPC filter coefficients {ak} for
43 transmission over the channel. LSPs have several properties (like
44 less sensitivity to quantisation noise) that make them superior to
45 direct quantisation of {ak}.
46
47 A(z) is a polynomial of order lpcrdr with {ak} as the coefficients.
48
49 A(z) is transformed to P(z) and Q(z) (using a substitution and some
50 algebra), to obtain something like:
51
52 A(z) = 0.5[P(z)(z+z^-1) + Q(z)(z-z^-1)] (1)
53
54 As you can imagine A(z) has complex zeros all over the z-plane. P(z)
55 and Q(z) have the very neat property of only having zeros _on_ the
56 unit circle. So to find them we take a test point z=exp(jw) and
57 evaluate P (exp(jw)) and Q(exp(jw)) using a grid of points between 0
58 and pi.
59
60 The zeros (roots) of P(z) also happen to alternate, which is why we
61 swap coefficients as we find roots. So the process of finding the
62 LSP frequencies is basically finding the roots of 5th order
63 polynomials.
64
65 The root so P(z) and Q(z) occur in symmetrical pairs at +/-w, hence
66 the name Line Spectrum Pairs (LSPs).
67
68 To convert back to ak we just evaluate (1), "clocking" an impulse
69 thru it lpcrdr times gives us the impulse response of A(z) which is
70 {ak}.
71
72\*---------------------------------------------------------------------------*/
73
74/*---------------------------------------------------------------------------*\
75
76 FUNCTION....: cheb_poly_eva()
77 AUTHOR......: David Rowe
78 DATE CREATED: 24/2/93
79
80 This function evalutes a series of chebyshev polynomials
81
82 FIXME: performing memory allocation at run time is very inefficient,
83 replace with stack variables of MAX_P size.
84
85\*---------------------------------------------------------------------------*/
86
87
88static float
89cheb_poly_eva(float *coef,float x,int order)
90/* float coef[] coefficients of the polynomial to be evaluated */
91/* float x the point where polynomial is to be evaluated */
92/* int order order of the polynomial */
93{
94 int i;
95 float *t,*u,*v,sum;
96 float T[(order / 2) + 1];
97
98 /* Initialise pointers */
99
100 t = T; /* T[i-2] */
101 *t++ = 1.0;
102 u = t--; /* T[i-1] */
103 *u++ = x;
104 v = u--; /* T[i] */
105
106 /* Evaluate chebyshev series formulation using iterative approach */
107
108 for(i=2;i<=order/2;i++)
109 *v++ = (2*x)*(*u++) - *t++; /* T[i] = 2*x*T[i-1] - T[i-2] */
110
111 sum=0.0; /* initialise sum to zero */
112 t = T; /* reset pointer */
113
114 /* Evaluate polynomial and return value also free memory space */
115
116 for(i=0;i<=order/2;i++)
117 sum+=coef[(order/2)-i]**t++;
118
119 return sum;
120}
121
122
123/*---------------------------------------------------------------------------*\
124
125 FUNCTION....: lpc_to_lsp()
126 AUTHOR......: David Rowe
127 DATE CREATED: 24/2/93
128
129 This function converts LPC coefficients to LSP coefficients.
130
131\*---------------------------------------------------------------------------*/
132
133int lpc_to_lsp (float *a, int order, float *freq, int nb, float delta)
134/* float *a lpc coefficients */
135/* int order order of LPC coefficients (10) */
136/* float *freq LSP frequencies in radians */
137/* int nb number of sub-intervals (4) */
138/* float delta grid spacing interval (0.02) */
139{
140 float psuml,psumr,psumm,temp_xr,xl,xr,xm = 0;
141 float temp_psumr;
142 int i,j,m,flag,k;
143 float *px; /* ptrs of respective P'(z) & Q'(z) */
144 float *qx;
145 float *p;
146 float *q;
147 float *pt; /* ptr used for cheb_poly_eval()
148 whether P' or Q' */
149 int roots=0; /* number of roots found */
150 float Q[order + 1];
151 float P[order + 1];
152
153 flag = 1;
154 m = order/2; /* order of P'(z) & Q'(z) polynimials */
155
156 /* Allocate memory space for polynomials */
157
158 /* determine P'(z)'s and Q'(z)'s coefficients where
159 P'(z) = P(z)/(1 + z^(-1)) and Q'(z) = Q(z)/(1-z^(-1)) */
160
161 px = P; /* initilaise ptrs */
162 qx = Q;
163 p = px;
164 q = qx;
165 *px++ = 1.0;
166 *qx++ = 1.0;
167 for(i=1;i<=m;i++){
168 *px++ = a[i]+a[order+1-i]-*p++;
169 *qx++ = a[i]-a[order+1-i]+*q++;
170 }
171 px = P;
172 qx = Q;
173 for(i=0;i<m;i++){
174 *px = 2**px;
175 *qx = 2**qx;
176 px++;
177 qx++;
178 }
179 px = P; /* re-initialise ptrs */
180 qx = Q;
181
182 /* Search for a zero in P'(z) polynomial first and then alternate to Q'(z).
183 Keep alternating between the two polynomials as each zero is found */
184
185 xr = 0; /* initialise xr to zero */
186 xl = 1.0; /* start at point xl = 1 */
187
188
189 for(j=0;j<order;j++){
190 if(j%2) /* determines whether P' or Q' is eval. */
191 pt = qx;
192 else
193 pt = px;
194
195 psuml = cheb_poly_eva(pt,xl,order); /* evals poly. at xl */
196 flag = 1;
197 while(flag && (xr >= -1.0)){
198 xr = xl - delta ; /* interval spacing */
199 psumr = cheb_poly_eva(pt,xr,order);/* poly(xl-delta_x) */
200 temp_psumr = psumr;
201 temp_xr = xr;
202
203 /* if no sign change increment xr and re-evaluate
204 poly(xr). Repeat til sign change. if a sign change has
205 occurred the interval is bisected and then checked again
206 for a sign change which determines in which interval the
207 zero lies in. If there is no sign change between poly(xm)
208 and poly(xl) set interval between xm and xr else set
209 interval between xl and xr and repeat till root is located
210 within the specified limits */
211
212 if(((psumr*psuml)<0.0) || (psumr == 0.0)){
213 roots++;
214
215 psumm=psuml;
216 for(k=0;k<=nb;k++){
217 xm = (xl+xr)/2; /* bisect the interval */
218 psumm=cheb_poly_eva(pt,xm,order);
219 if(psumm*psuml>0.){
220 psuml=psumm;
221 xl=xm;
222 }
223 else{
224 psumr=psumm;
225 xr=xm;
226 }
227 }
228
229 /* once zero is found, reset initial interval to xr */
230 freq[j] = (xm);
231 xl = xm;
232 flag = 0; /* reset flag for next search */
233 }
234 else{
235 psuml=temp_psumr;
236 xl=temp_xr;
237 }
238 }
239 }
240
241 /* convert from x domain to radians */
242
243 for(i=0; i<order; i++) {
244 freq[i] = acosf(freq[i]);
245 }
246
247 return(roots);
248}
249
250/*---------------------------------------------------------------------------*\
251
252 FUNCTION....: lsp_to_lpc()
253 AUTHOR......: David Rowe
254 DATE CREATED: 24/2/93
255
256 This function converts LSP coefficients to LPC coefficients. In the
257 Speex code we worked out a way to simplify this significantly.
258
259\*---------------------------------------------------------------------------*/
260
261void lsp_to_lpc(float *lsp, float *ak, int order)
262/* float *freq array of LSP frequencies in radians */
263/* float *ak array of LPC coefficients */
264/* int order order of LPC coefficients */
265
266
267{
268 int i,j;
269 float xout1,xout2,xin1,xin2;
270 float *pw,*n1,*n2,*n3,*n4 = 0;
271 float freq[order];
272 float Wp[(order * 4) + 2];
273
274 /* convert from radians to the x=cos(w) domain */
275
276 for(i=0; i<order; i++)
277 freq[i] = cosf(lsp[i]);
278
279 pw = Wp;
280
281 /* initialise contents of array */
282
283 for(i=0;i<=4*(order/2)+1;i++){ /* set contents of buffer to 0 */
284 *pw++ = 0.0;
285 }
286
287 /* Set pointers up */
288
289 pw = Wp;
290 xin1 = 1.0;
291 xin2 = 1.0;
292
293 /* reconstruct P(z) and Q(z) by cascading second order polynomials
294 in form 1 - 2xz(-1) +z(-2), where x is the LSP coefficient */
295
296 for(j=0;j<=order;j++){
297 for(i=0;i<(order/2);i++){
298 n1 = pw+(i*4);
299 n2 = n1 + 1;
300 n3 = n2 + 1;
301 n4 = n3 + 1;
302 xout1 = xin1 - 2*(freq[2*i]) * *n1 + *n2;
303 xout2 = xin2 - 2*(freq[2*i+1]) * *n3 + *n4;
304 *n2 = *n1;
305 *n4 = *n3;
306 *n1 = xin1;
307 *n3 = xin2;
308 xin1 = xout1;
309 xin2 = xout2;
310 }
311 xout1 = xin1 + *(n4+1);
312 xout2 = xin2 - *(n4+2);
313 ak[j] = (xout1 + xout2)*0.5;
314 *(n4+1) = xin1;
315 *(n4+2) = xin2;
316
317 xin1 = 0.0;
318 xin2 = 0.0;
319 }
320}
321
diff --git a/lsp.h b/lsp.h
new file mode 100644
index 0000000..5acef01
--- /dev/null
+++ b/lsp.h
@@ -0,0 +1,37 @@
1/*---------------------------------------------------------------------------*\
2
3 FILE........: lsp.c
4 AUTHOR......: David Rowe
5 DATE CREATED: 24/2/93
6
7
8 This file contains functions for LPC to LSP conversion and LSP to
9 LPC conversion. Note that the LSP coefficients are not in radians
10 format but in the x domain of the unit circle.
11
12\*---------------------------------------------------------------------------*/
13
14/*
15 Copyright (C) 2009 David Rowe
16
17 All rights reserved.
18
19 This program is free software; you can redistribute it and/or modify
20 it under the terms of the GNU Lesser General Public License version 2.1, as
21 published by the Free Software Foundation. This program is
22 distributed in the hope that it will be useful, but WITHOUT ANY
23 WARRANTY; without even the implied warranty of MERCHANTABILITY or
24 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
25 License for more details.
26
27 You should have received a copy of the GNU Lesser General Public License
28 along with this program; if not, see <http://www.gnu.org/licenses/>.
29*/
30
31#ifndef __LSP__
32#define __LSP__
33
34int lpc_to_lsp (float *a, int lpcrdr, float *freq, int nb, float delta);
35void lsp_to_lpc(float *freq, float *ak, int lpcrdr);
36
37#endif
diff --git a/machdep.h b/machdep.h
new file mode 100644
index 0000000..4dff9ba
--- /dev/null
+++ b/machdep.h
@@ -0,0 +1,52 @@
1/*---------------------------------------------------------------------------*\
2
3 FILE........: machdep.h
4 AUTHOR......: David Rowe
5 DATE CREATED: May 2 2013
6
7 Machine dependant functions, e.g. profiling that requires access to a clock
8 counter register.
9
10\*---------------------------------------------------------------------------*/
11
12/*
13 Copyright (C) 2013 David Rowe
14
15 All rights reserved.
16
17 This program is free software; you can redistribute it and/or modify
18 it under the terms of the GNU Lesser General Public License version 2.1, as
19 published by the Free Software Foundation. This program is
20 distributed in the hope that it will be useful, but WITHOUT ANY
21 WARRANTY; without even the implied warranty of MERCHANTABILITY or
22 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
23 License for more details.
24
25 You should have received a copy of the GNU Lesser General Public License
26 along with this program; if not, see <http://www.gnu.org/licenses/>.
27*/
28
29#ifndef __MACHDEP__
30#define __MACHDEP__
31
32#ifdef PROFILE
33#define PROFILE_VAR(...) unsigned int __VA_ARGS__
34#define PROFILE_SAMPLE(timestamp) timestamp = machdep_profile_sample()
35#define PROFILE_SAMPLE_AND_LOG(timestamp, prev_timestamp, label) \
36 timestamp = machdep_profile_sample_and_log(prev_timestamp, label)
37#define PROFILE_SAMPLE_AND_LOG2(prev_timestamp, label) \
38 machdep_profile_sample_and_log(prev_timestamp, label)
39#else
40#define PROFILE_VAR(...)
41#define PROFILE_SAMPLE(timestamp)
42#define PROFILE_SAMPLE_AND_LOG(timestamp, prev_timestamp, label)
43#define PROFILE_SAMPLE_AND_LOG2(prev_timestamp, label)
44#endif
45
46void machdep_profile_init(void);
47void machdep_profile_reset(void);
48unsigned int machdep_profile_sample(void);
49unsigned int machdep_profile_sample_and_log(unsigned int start, char s[]);
50void machdep_profile_print_logged_samples(void);
51
52#endif
diff --git a/main.c b/main.c
new file mode 100644
index 0000000..10a0818
--- /dev/null
+++ b/main.c
@@ -0,0 +1,34 @@
1#include <time.h>
2#include <stdio.h>
3
4#include "codec2.h"
5
6int main() {
7 struct timespec tstart={0,0}, tend={0,0};
8 short input[976692];
9 FILE * recoded = fopen("count-recoded.raw", "w+");
10 FILE * f = fopen("count.raw", "r");
11 void * codec2 = codec2_create(CODEC2_MODE_700C);
12 int nsam = codec2_samples_per_frame(codec2);
13 int nbit = codec2_bits_per_frame(codec2);
14 int off = 0;
15 unsigned char bits[128];
16
17 fread(input, 976692, 1, f);
18 fclose(f);
19
20 clock_gettime(CLOCK_MONOTONIC, &tstart);
21
22 while (off < 976692 / 2) {
23 codec2_encode(codec2, bits, input + off);
24 codec2_decode(codec2, input + off, bits);
25 off += 320;
26 }
27
28 clock_gettime(CLOCK_MONOTONIC, &tend);
29 printf("%lf\n", ((double)tend.tv_sec + 1.0e-9*tend.tv_nsec) - ((double)tstart.tv_sec + 1.0e-9*tstart.tv_nsec));
30
31 fwrite(input, 976692, 1, recoded);
32
33 codec2_destroy(codec2);
34}
diff --git a/mbest.c b/mbest.c
new file mode 100644
index 0000000..6216b77
--- /dev/null
+++ b/mbest.c
@@ -0,0 +1,173 @@
1/*---------------------------------------------------------------------------*\
2
3 FILE........: mbest.c
4 AUTHOR......: David Rowe
5 DATE CREATED: Jan 2017
6
7 Multistage vector quantiser search algorithm that keeps multiple
8 candidates from each stage.
9
10\*---------------------------------------------------------------------------*/
11
12/*
13 Copyright David Rowe 2017
14
15 All rights reserved.
16
17 This program is free software; you can redistribute it and/or modify
18 it under the terms of the GNU Lesser General Public License version 2.1, as
19 published by the Free Software Foundation. This program is
20 distributed in the hope that it will be useful, but WITHOUT ANY
21 WARRANTY; without even the implied warranty of MERCHANTABILITY or
22 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
23 License for more details.
24
25 You should have received a copy of the GNU Lesser General Public License
26 along with this program; if not, see <http://www.gnu.org/licenses/>.
27
28*/
29
30#include <assert.h>
31#include <math.h>
32#include <stdio.h>
33#include <stdlib.h>
34#include <string.h>
35
36#include "mbest.h"
37
38struct MBEST *mbest_create(int entries) {
39 int i,j;
40 struct MBEST *mbest;
41
42 assert(entries > 0);
43 mbest = (struct MBEST *)malloc(sizeof(struct MBEST));
44 assert(mbest != NULL);
45
46 mbest->entries = entries;
47 mbest->list = (struct MBEST_LIST *)malloc(entries*sizeof(struct MBEST_LIST));
48 assert(mbest->list != NULL);
49
50 for(i=0; i<mbest->entries; i++) {
51 for(j=0; j<MBEST_STAGES; j++)
52 mbest->list[i].index[j] = 0;
53 mbest->list[i].error = 1E32;
54 }
55
56 return mbest;
57}
58
59
60void mbest_destroy(struct MBEST *mbest) {
61 assert(mbest != NULL);
62 free(mbest->list);
63 free(mbest);
64}
65
66
67/*---------------------------------------------------------------------------*\
68
69 mbest_insert
70
71 Insert the results of a vector to codebook entry comparison. The
72 list is ordered in order of error, so those entries with the
73 smallest error will be first on the list.
74
75\*---------------------------------------------------------------------------*/
76
77void mbest_insert(struct MBEST *mbest, int index[], float error) {
78 int i, j, found;
79 struct MBEST_LIST *list = mbest->list;
80 int entries = mbest->entries;
81
82 found = 0;
83 for(i=0; i<entries && !found; i++)
84 if (error < list[i].error) {
85 found = 1;
86 for(j=entries-1; j>i; j--)
87 list[j] = list[j-1];
88 for(j=0; j<MBEST_STAGES; j++)
89 list[i].index[j] = index[j];
90 list[i].error = error;
91 }
92}
93
94
95#ifdef MBEST_PRINT_OUT
96static void mbest_print(char title[], struct MBEST *mbest) {
97 int i,j;
98
99 fprintf(stderr, "%s\n", title);
100 for(i=0; i<mbest->entries; i++) {
101 for(j=0; j<MBEST_STAGES; j++)
102 fprintf(stderr, " %4d ", mbest->list[i].index[j]);
103 fprintf(stderr, " %f\n", mbest->list[i].error);
104 }
105}
106#endif
107
108
109/*---------------------------------------------------------------------------*\
110
111 mbest_search
112
113 Searches vec[] to a codebbook of vectors, and maintains a list of the mbest
114 closest matches.
115
116\*---------------------------------------------------------------------------*/
117
118void mbest_search(
119 const float *cb, /* VQ codebook to search */
120 float vec[], /* target vector */
121 float w[], /* weighting vector */
122 int k, /* dimension of vector */
123 int m, /* number on entries in codebook */
124 struct MBEST *mbest, /* list of closest matches */
125 int index[] /* indexes that lead us here */
126)
127{
128 float e;
129 int i,j;
130 float diff;
131
132 for(j=0; j<m; j++) {
133 e = 0.0;
134 for(i=0; i<k; i++) {
135 diff = cb[j*k+i]-vec[i];
136 e += diff*w[i]*diff*w[i];
137 }
138 index[0] = j;
139 mbest_insert(mbest, index, e);
140 }
141}
142
143
144/*---------------------------------------------------------------------------*\
145
146 mbest_search450
147
148 Searches vec[] to a codebbook of vectors, and maintains a list of the mbest
149 closest matches. Only searches the first NewAmp2_K Vectors
150
151 \*---------------------------------------------------------------------------*/
152
153void mbest_search450(const float *cb, float vec[], float w[], int k,int shorterK, int m, struct MBEST *mbest, int index[])
154
155{
156 float e;
157 int i,j;
158 float diff;
159
160 for(j=0; j<m; j++) {
161 e = 0.0;
162 for(i=0; i<k; i++) {
163 //Only search first NEWAMP2_K Vectors
164 if(i<shorterK){
165 diff = cb[j*k+i]-vec[i];
166 e += diff*w[i] * diff*w[i];
167 }
168 }
169 index[0] = j;
170 mbest_insert(mbest, index, e);
171 }
172}
173
diff --git a/mbest.h b/mbest.h
new file mode 100644
index 0000000..fb7664f
--- /dev/null
+++ b/mbest.h
@@ -0,0 +1,59 @@
1/*---------------------------------------------------------------------------*\
2
3 FILE........: mbest.h
4 AUTHOR......: David Rowe
5 DATE CREATED: Jan 2017
6
7 Multistage vector quantiser search algorithm that keeps multiple
8 candidates from each stage.
9
10\*---------------------------------------------------------------------------*/
11
12/*
13 Copyright David Rowe 2017
14
15 All rights reserved.
16
17 This program is free software; you can redistribute it and/or modify
18 it under the terms of the GNU Lesser General Public License version 2.1, as
19 published by the Free Software Foundation. This program is
20 distributed in the hope that it will be useful, but WITHOUT ANY
21 WARRANTY; without even the implied warranty of MERCHANTABILITY or
22 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
23 License for more details.
24
25 You should have received a copy of the GNU Lesser General Public License
26 along with this program; if not, see <http://www.gnu.org/licenses/>.
27
28*/
29
30#ifndef __MBEST__
31#define __MBEST__
32
33#define MBEST_STAGES 4
34
35struct MBEST_LIST {
36 int index[MBEST_STAGES]; /* index of each stage that lead us to this error */
37 float error;
38};
39
40struct MBEST {
41 int entries; /* number of entries in mbest list */
42 struct MBEST_LIST *list;
43};
44
45struct MBEST *mbest_create(int entries);
46void mbest_destroy(struct MBEST *mbest);
47void mbest_insert(struct MBEST *mbest, int index[], float error);
48void mbest_search(const float *cb, float vec[], float w[], int k, int m, struct MBEST *mbest, int index[]);
49void mbest_search450(const float *cb, float vec[], float w[], int k,int shorterK, int m, struct MBEST *mbest, int index[]);
50
51// #define MBEST_PRINT_OUT
52#ifdef MBEST_PRINT_OUT
53 #define MBEST_PRINT(a,b) mbest_print((a),(b))
54#else
55 #define MBEST_PRINT(a,b)
56#endif
57
58
59#endif
diff --git a/newamp1.c b/newamp1.c
new file mode 100644
index 0000000..575620a
--- /dev/null
+++ b/newamp1.c
@@ -0,0 +1,625 @@
1/*---------------------------------------------------------------------------*\
2
3 FILE........: newamp1.c
4 AUTHOR......: David Rowe
5 DATE CREATED: Jan 2017
6
7 Quantisation functions for the sinusoidal coder, using "newamp1"
8 algorithm that resamples variable rate L [Am} to a fixed rate K then
9 VQs.
10
11\*---------------------------------------------------------------------------*/
12
13/*
14 Copyright David Rowe 2017
15
16 All rights reserved.
17
18 This program is free software; you can redistribute it and/or modify
19 it under the terms of the GNU Lesser General Public License version 2.1, as
20 published by the Free Software Foundation. This program is
21 distributed in the hope that it will be useful, but WITHOUT ANY
22 WARRANTY; without even the implied warranty of MERCHANTABILITY or
23 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
24 License for more details.
25
26 You should have received a copy of the GNU Lesser General Public License
27 along with this program; if not, see <http://www.gnu.org/licenses/>.
28
29*/
30
31#include <assert.h>
32#include <stdio.h>
33#include <stdlib.h>
34#include <string.h>
35#include <math.h>
36
37#include "defines.h"
38#include "phase.h"
39#include "quantise.h"
40#include "mbest.h"
41#include "newamp1.h"
42
43#define NEWAMP1_VQ_MBEST_DEPTH 5 /* how many candidates we keep for each stage of mbest search */
44
45/*---------------------------------------------------------------------------*\
46
47 FUNCTION....: interp_para()
48 AUTHOR......: David Rowe
49 DATE CREATED: Jan 2017
50
51 General 2nd order parabolic interpolator. Used splines orginally,
52 but this is much simpler and we don't need much accuracy. Given two
53 vectors of points xp and yp, find interpolated values y at points x.
54
55\*---------------------------------------------------------------------------*/
56
57void interp_para(float y[], float xp[], float yp[], int np, float x[], int n)
58{
59 assert(np >= 3);
60
61 int k,i;
62 float xi, x1, y1, x2, y2, x3, y3, a, b;
63
64 k = 0;
65 for (i=0; i<n; i++) {
66 xi = x[i];
67
68 /* k is index into xp of where we start 3 points used to form parabola */
69
70 while ((xp[k+1] < xi) && (k < (np-3)))
71 k++;
72
73 x1 = xp[k]; y1 = yp[k]; x2 = xp[k+1]; y2 = yp[k+1]; x3 = xp[k+2]; y3 = yp[k+2];
74
75 //printf("k: %d np: %d i: %d xi: %f x1: %f y1: %f\n", k, np, i, xi, x1, y1);
76
77 a = ((y3-y2)/(x3-x2)-(y2-y1)/(x2-x1))/(x3-x1);
78 b = ((y3-y2)/(x3-x2)*(x2-x1)+(y2-y1)/(x2-x1)*(x3-x2))/(x3-x1);
79
80 y[i] = a*(xi-x2)*(xi-x2) + b*(xi-x2) + y2;
81 }
82}
83
84
85/*---------------------------------------------------------------------------*\
86
87 FUNCTION....: ftomel()
88 AUTHOR......: David Rowe
89 DATE CREATED: Jan 2017
90
91 Non linear sampling of frequency axis, reducing the "rate" is a
92 first step before VQ
93
94\*---------------------------------------------------------------------------*/
95
96float ftomel(float fHz) {
97 float mel = floorf(2595.0*log10f(1.0 + fHz/700.0)+0.5);
98 return mel;
99}
100
101void mel_sample_freqs_kHz(float rate_K_sample_freqs_kHz[], int K, float mel_start, float mel_end)
102{
103 float step = (mel_end-mel_start)/(K-1);
104 float mel;
105 int k;
106
107 mel = mel_start;
108 for (k=0; k<K; k++) {
109 rate_K_sample_freqs_kHz[k] = 0.7*(POW10F(mel/2595.0) - 1.0);
110 mel += step;
111 }
112}
113
114
115/*---------------------------------------------------------------------------*\
116
117 FUNCTION....: resample_const_rate_f()
118 AUTHOR......: David Rowe
119 DATE CREATED: Jan 2017
120
121 Resample Am from time-varying rate L=floor(pi/Wo) to fixed rate K.
122
123\*---------------------------------------------------------------------------*/
124
125void resample_const_rate_f(C2CONST *c2const, MODEL *model, float rate_K_vec[], float rate_K_sample_freqs_kHz[], int K)
126{
127 int m;
128 float AmdB[MAX_AMP+1], rate_L_sample_freqs_kHz[MAX_AMP+1], AmdB_peak;
129
130 /* convert rate L=pi/Wo amplitude samples to fixed rate K */
131
132 AmdB_peak = -100.0;
133 for(m=1; m<=model->L; m++) {
134 AmdB[m] = 20.0*log10f(model->A[m]+1E-16);
135 if (AmdB[m] > AmdB_peak) {
136 AmdB_peak = AmdB[m];
137 }
138 rate_L_sample_freqs_kHz[m] = m*model->Wo*(c2const->Fs/2000.0)/M_PI;
139 //printf("m: %d AmdB: %f AmdB_peak: %f sf: %f\n", m, AmdB[m], AmdB_peak, rate_L_sample_freqs_kHz[m]);
140 }
141
142 /* clip between peak and peak -50dB, to reduce dynamic range */
143
144 for(m=1; m<=model->L; m++) {
145 if (AmdB[m] < (AmdB_peak-50.0)) {
146 AmdB[m] = AmdB_peak-50.0;
147 }
148 }
149
150 interp_para(rate_K_vec, &rate_L_sample_freqs_kHz[1], &AmdB[1], model->L, rate_K_sample_freqs_kHz, K);
151}
152
153
154/*---------------------------------------------------------------------------*\
155
156 FUNCTION....: rate_K_mbest_encode
157 AUTHOR......: David Rowe
158 DATE CREATED: Jan 2017
159
160 Two stage rate K newamp1 VQ quantiser using mbest search.
161
162\*---------------------------------------------------------------------------*/
163
164float rate_K_mbest_encode(int *indexes, float *x, float *xq, int ndim, int mbest_entries)
165{
166 int i, j, n1, n2;
167 const float *codebook1 = newamp1vq_cb[0].cb;
168 const float *codebook2 = newamp1vq_cb[1].cb;
169 struct MBEST *mbest_stage1, *mbest_stage2;
170 float target[ndim];
171 float w[ndim];
172 int index[MBEST_STAGES];
173 float mse, tmp;
174
175 /* codebook is compiled for a fixed K */
176
177 assert(ndim == newamp1vq_cb[0].k);
178
179 /* equal weights, could be argued mel freq axis gives freq dep weighting */
180
181 for(i=0; i<ndim; i++)
182 w[i] = 1.0;
183
184 mbest_stage1 = mbest_create(mbest_entries);
185 mbest_stage2 = mbest_create(mbest_entries);
186 for(i=0; i<MBEST_STAGES; i++)
187 index[i] = 0;
188
189 /* Stage 1 */
190
191 mbest_search(codebook1, x, w, ndim, newamp1vq_cb[0].m, mbest_stage1, index);
192 MBEST_PRINT("Stage 1:", mbest_stage1);
193
194 /* Stage 2 */
195
196 for (j=0; j<mbest_entries; j++) {
197 index[1] = n1 = mbest_stage1->list[j].index[0];
198 for(i=0; i<ndim; i++)
199 target[i] = x[i] - codebook1[ndim*n1+i];
200 mbest_search(codebook2, target, w, ndim, newamp1vq_cb[1].m, mbest_stage2, index);
201 }
202 MBEST_PRINT("Stage 2:", mbest_stage2);
203
204 n1 = mbest_stage2->list[0].index[1];
205 n2 = mbest_stage2->list[0].index[0];
206 mse = 0.0;
207 for (i=0;i<ndim;i++) {
208 tmp = codebook1[ndim*n1+i] + codebook2[ndim*n2+i];
209 mse += (x[i]-tmp)*(x[i]-tmp);
210 xq[i] = tmp;
211 }
212
213 mbest_destroy(mbest_stage1);
214 mbest_destroy(mbest_stage2);
215
216 indexes[0] = n1; indexes[1] = n2;
217
218 return mse;
219}
220
221
222/*---------------------------------------------------------------------------*\
223
224 FUNCTION....: post_filter
225 AUTHOR......: David Rowe
226 DATE CREATED: Jan 2017
227
228 Post Filter, has a big impact on speech quality after VQ. When used
229 on a mean removed rate K vector, it raises formants, and supresses
230 anti-formants. As it manipulates amplitudes, we normalise energy to
231 prevent clipping or large level variations. pf_gain of 1.2 to 1.5
232 (dB) seems to work OK. Good area for further investigations and
233 improvements in speech quality.
234
235\*---------------------------------------------------------------------------*/
236
237void post_filter_newamp1(float vec[], float sample_freq_kHz[], int K, float pf_gain)
238{
239 int k;
240
241 /*
242 vec is rate K vector describing spectrum of current frame lets
243 pre-emp before applying PF. 20dB/dec over 300Hz. Postfilter
244 affects energy of frame so we measure energy before and after
245 and normalise. Plenty of room for experiment here as well.
246 */
247
248 float pre[K];
249 float e_before = 0.0;
250 float e_after = 0.0;
251 for(k=0; k<K; k++) {
252 pre[k] = 20.0*log10f(sample_freq_kHz[k]/0.3);
253 vec[k] += pre[k];
254 e_before += POW10F(vec[k]/10.0);
255 vec[k] *= pf_gain;
256 e_after += POW10F(vec[k]/10.0);
257 }
258
259 float gain = e_after/e_before;
260 float gaindB = 10*log10f(gain);
261
262 for(k=0; k<K; k++) {
263 vec[k] -= gaindB;
264 vec[k] -= pre[k];
265 }
266}
267
268
269/*---------------------------------------------------------------------------*\
270
271 FUNCTION....: interp_Wo_v
272 AUTHOR......: David Rowe
273 DATE CREATED: Jan 2017
274
275 Decoder side interpolation of Wo and voicing, to go from 25 Hz
276 sample rate used over channle to 100Hz internal sample rate of Codec 2.
277
278\*---------------------------------------------------------------------------*/
279
280void interp_Wo_v(float Wo_[], int L_[], int voicing_[], float Wo1, float Wo2, int voicing1, int voicing2)
281{
282 int i;
283 int M = 4; /* interpolation rate */
284
285 for(i=0; i<M; i++)
286 voicing_[i] = 0;
287
288 if (!voicing1 && !voicing2) {
289 for(i=0; i<M; i++)
290 Wo_[i] = 2.0*M_PI/100.0;
291 }
292
293 if (voicing1 && !voicing2) {
294 Wo_[0] = Wo_[1] = Wo1;
295 Wo_[2] = Wo_[3] = 2.0*M_PI/100.0;
296 voicing_[0] = voicing_[1] = 1;
297 }
298
299 if (!voicing1 && voicing2) {
300 Wo_[0] = Wo_[1] = 2.0*M_PI/100.0;
301 Wo_[2] = Wo_[3] = Wo2;
302 voicing_[2] = voicing_[3] = 1;
303 }
304
305 if (voicing1 && voicing2) {
306 float c;
307 for(i=0,c=1.0; i<M; i++,c-=1.0/M) {
308 Wo_[i] = Wo1*c + Wo2*(1.0-c);
309 voicing_[i] = 1;
310 }
311 }
312
313 for(i=0; i<M; i++) {
314 L_[i] = floorf(M_PI/Wo_[i]);
315 }
316}
317
318
319/*---------------------------------------------------------------------------*\
320
321 FUNCTION....: resample_rate_L
322 AUTHOR......: David Rowe
323 DATE CREATED: Jan 2017
324
325 Decoder side conversion of rate K vector back to rate L.
326
327\*---------------------------------------------------------------------------*/
328
329void resample_rate_L(C2CONST *c2const, MODEL *model, float rate_K_vec[], float rate_K_sample_freqs_kHz[], int K)
330{
331 float rate_K_vec_term[K+2], rate_K_sample_freqs_kHz_term[K+2];
332 float AmdB[MAX_AMP+1], rate_L_sample_freqs_kHz[MAX_AMP+1];
333 int m,k;
334
335 /* terminate either end of the rate K vecs with 0dB points */
336
337 rate_K_vec_term[0] = rate_K_vec_term[K+1] = 0.0;
338 rate_K_sample_freqs_kHz_term[0] = 0.0;
339 rate_K_sample_freqs_kHz_term[K+1] = 4.0;
340
341 for(k=0; k<K; k++) {
342 rate_K_vec_term[k+1] = rate_K_vec[k];
343 rate_K_sample_freqs_kHz_term[k+1] = rate_K_sample_freqs_kHz[k];
344
345 //printf("k: %d f: %f rate_K: %f\n", k, rate_K_sample_freqs_kHz[k], rate_K_vec[k]);
346 }
347
348 for(m=1; m<=model->L; m++) {
349 rate_L_sample_freqs_kHz[m] = m*model->Wo*(c2const->Fs/2000.0)/M_PI;
350 }
351
352 interp_para(&AmdB[1], rate_K_sample_freqs_kHz_term, rate_K_vec_term, K+2, &rate_L_sample_freqs_kHz[1], model->L);
353 for(m=1; m<=model->L; m++) {
354 model->A[m] = POW10F(AmdB[m]/20.0);
355 // printf("m: %d f: %f AdB: %f A: %f\n", m, rate_L_sample_freqs_kHz[m], AmdB[m], model->A[m]);
356 }
357}
358
359
360/*---------------------------------------------------------------------------*\
361
362 FUNCTION....: determine_phase
363 AUTHOR......: David Rowe
364 DATE CREATED: Jan 2017
365
366 Given a magnitude spectrum determine a phase spectrum, used for
367 phase synthesis with newamp1.
368
369\*---------------------------------------------------------------------------*/
370
371void determine_phase(C2CONST *c2const, COMP H[], MODEL *model, int Nfft, codec2_fft_cfg fwd_cfg, codec2_fft_cfg inv_cfg)
372{
373 int i,m,b;
374 int Ns = Nfft/2+1;
375 float Gdbfk[Ns], sample_freqs_kHz[Ns], phase[Ns];
376 float AmdB[MAX_AMP+1], rate_L_sample_freqs_kHz[MAX_AMP+1];
377
378 for(m=1; m<=model->L; m++) {
379 assert(model->A[m] != 0.0);
380 AmdB[m] = 20.0*log10f(model->A[m]);
381 rate_L_sample_freqs_kHz[m] = (float)m*model->Wo*(c2const->Fs/2000.0)/M_PI;
382 }
383
384 for(i=0; i<Ns; i++) {
385 sample_freqs_kHz[i] = (c2const->Fs/1000.0)*(float)i/Nfft;
386 }
387
388 interp_para(Gdbfk, &rate_L_sample_freqs_kHz[1], &AmdB[1], model->L, sample_freqs_kHz, Ns);
389 mag_to_phase(phase, Gdbfk, Nfft, fwd_cfg, inv_cfg);
390
391 for(m=1; m<=model->L; m++) {
392 b = floorf(0.5+m*model->Wo*Nfft/(2.0*M_PI));
393 H[m].real = cosf(phase[b]); H[m].imag = sinf(phase[b]);
394 }
395}
396
397
398/*---------------------------------------------------------------------------*\
399
400 FUNCTION....: newamp1_model_to_indexes
401 AUTHOR......: David Rowe
402 DATE CREATED: Jan 2017
403
404 newamp1 encoder for amplitdues {Am}. Given the rate L model
405 parameters, outputs VQ and energy quantiser indexes.
406
407\*---------------------------------------------------------------------------*/
408
409void newamp1_model_to_indexes(C2CONST *c2const,
410 int indexes[],
411 MODEL *model,
412 float rate_K_vec[],
413 float rate_K_sample_freqs_kHz[],
414 int K,
415 float *mean,
416 float rate_K_vec_no_mean[],
417 float rate_K_vec_no_mean_[],
418 float *se
419 )
420{
421 int k;
422
423 /* convert variable rate L to fixed rate K */
424
425 resample_const_rate_f(c2const, model, rate_K_vec, rate_K_sample_freqs_kHz, K);
426
427 /* remove mean and two stage VQ */
428
429 float sum = 0.0;
430 for(k=0; k<K; k++)
431 sum += rate_K_vec[k];
432 *mean = sum/K;;
433 for(k=0; k<K; k++)
434 rate_K_vec_no_mean[k] = rate_K_vec[k] - *mean;
435 rate_K_mbest_encode(indexes, rate_K_vec_no_mean, rate_K_vec_no_mean_, K, NEWAMP1_VQ_MBEST_DEPTH);
436
437 /* running sum of squared error for variance calculation */
438 for(k=0; k<K; k++)
439 *se += pow(rate_K_vec_no_mean[k]-rate_K_vec_no_mean_[k],2.0);
440
441 /* scalar quantise mean (effectively the frame energy) */
442
443 float w[1] = {1.0};
444 float se_mean;
445 indexes[2] = quantise(newamp1_energy_cb[0].cb,
446 mean,
447 w,
448 newamp1_energy_cb[0].k,
449 newamp1_energy_cb[0].m,
450 &se_mean);
451
452 /* scalar quantise Wo. We steal the smallest Wo index to signal
453 an unvoiced frame */
454
455 if (model->voiced) {
456 int index = encode_log_Wo(c2const, model->Wo, 6);
457 if (index == 0) {
458 index = 1;
459 }
460 indexes[3] = index;
461 }
462 else {
463 indexes[3] = 0;
464 }
465
466 }
467
468
469/*---------------------------------------------------------------------------*\
470
471 FUNCTION....: newamp1_interpolate
472 AUTHOR......: David Rowe
473 DATE CREATED: Jan 2017
474
475\*---------------------------------------------------------------------------*/
476
477void newamp1_interpolate(float interpolated_surface_[], float left_vec[], float right_vec[], int K)
478{
479 int i, k;
480 int M = 4;
481 float c;
482
483 /* (linearly) interpolate 25Hz amplitude vectors back to 100Hz */
484
485 for(i=0,c=1.0; i<M; i++,c-=1.0/M) {
486 for(k=0; k<K; k++) {
487 interpolated_surface_[i*K+k] = left_vec[k]*c + right_vec[k]*(1.0-c);
488 }
489 }
490}
491
492
493/*---------------------------------------------------------------------------*\
494
495 FUNCTION....: newamp1_indexes_to_rate_K_vec
496 AUTHOR......: David Rowe
497 DATE CREATED: Jan 2017
498
499 newamp1 decoder for amplitudes {Am}. Given the rate K VQ and energy
500 indexes, outputs rate K vector.
501
502\*---------------------------------------------------------------------------*/
503
504void newamp1_indexes_to_rate_K_vec(float rate_K_vec_[],
505 float rate_K_vec_no_mean_[],
506 float rate_K_sample_freqs_kHz[],
507 int K,
508 float *mean_,
509 int indexes[],
510 float user_rate_K_vec_no_mean_[],
511 int post_filter_en)
512{
513 int k;
514 const float *codebook1 = newamp1vq_cb[0].cb;
515 const float *codebook2 = newamp1vq_cb[1].cb;
516 int n1 = indexes[0];
517 int n2 = indexes[1];
518
519 if (user_rate_K_vec_no_mean_ == NULL) {
520 /* normal operation */
521 for(k=0; k<K; k++) {
522 rate_K_vec_no_mean_[k] = codebook1[K*n1+k] + codebook2[K*n2+k];
523 }
524 } else {
525 /* for development we can optionally inject the quantised rate K vector here */
526 for(k=0; k<K; k++)
527 rate_K_vec_no_mean_[k] = user_rate_K_vec_no_mean_[k];
528 }
529
530 if (post_filter_en)
531 post_filter_newamp1(rate_K_vec_no_mean_, rate_K_sample_freqs_kHz, K, 1.5);
532
533 *mean_ = newamp1_energy_cb[0].cb[indexes[2]];
534
535 for(k=0; k<K; k++) {
536 rate_K_vec_[k] = rate_K_vec_no_mean_[k] + *mean_;
537 }
538}
539
540
541/*---------------------------------------------------------------------------*\
542
543 FUNCTION....: newamp1_indexes_to_model
544 AUTHOR......: David Rowe
545 DATE CREATED: Jan 2017
546
547 newamp1 decoder.
548
549\*---------------------------------------------------------------------------*/
550
551void newamp1_indexes_to_model(C2CONST *c2const,
552 MODEL model_[],
553 COMP H[],
554 float *interpolated_surface_,
555 float prev_rate_K_vec_[],
556 float *Wo_left,
557 int *voicing_left,
558 float rate_K_sample_freqs_kHz[],
559 int K,
560 codec2_fft_cfg fwd_cfg,
561 codec2_fft_cfg inv_cfg,
562 int indexes[],
563 float user_rate_K_vec_no_mean_[],
564 int post_filter_en)
565{
566 float rate_K_vec_[K], rate_K_vec_no_mean_[K], mean_, Wo_right;
567 int voicing_right, k;
568 int M = 4;
569
570 /* extract latest rate K vector */
571
572 newamp1_indexes_to_rate_K_vec(rate_K_vec_,
573 rate_K_vec_no_mean_,
574 rate_K_sample_freqs_kHz,
575 K,
576 &mean_,
577 indexes,
578 user_rate_K_vec_no_mean_,
579 post_filter_en);
580
581 /* decode latest Wo and voicing */
582
583 if (indexes[3]) {
584 Wo_right = decode_log_Wo(c2const, indexes[3], 6);
585 voicing_right = 1;
586 }
587 else {
588 Wo_right = 2.0*M_PI/100.0;
589 voicing_right = 0;
590 }
591
592 /* interpolate 25Hz rate K vec back to 100Hz */
593
594 float *left_vec = prev_rate_K_vec_;
595 float *right_vec = rate_K_vec_;
596 newamp1_interpolate(interpolated_surface_, left_vec, right_vec, K);
597
598 /* interpolate 25Hz v and Wo back to 100Hz */
599
600 float aWo_[M];
601 int avoicing_[M], aL_[M], i;
602
603 interp_Wo_v(aWo_, aL_, avoicing_, *Wo_left, Wo_right, *voicing_left, voicing_right);
604
605 /* back to rate L amplitudes, synthesis phase for each frame */
606
607 for(i=0; i<M; i++) {
608 model_[i].Wo = aWo_[i];
609 model_[i].L = aL_[i];
610 model_[i].voiced = avoicing_[i];
611
612 resample_rate_L(c2const, &model_[i], &interpolated_surface_[K*i], rate_K_sample_freqs_kHz, K);
613 determine_phase(c2const, &H[(MAX_AMP+1)*i], &model_[i], NEWAMP1_PHASE_NFFT, fwd_cfg, inv_cfg);
614 }
615
616 /* update memories for next time */
617
618 for(k=0; k<K; k++) {
619 prev_rate_K_vec_[k] = rate_K_vec_[k];
620 }
621 *Wo_left = Wo_right;
622 *voicing_left = voicing_right;
623
624}
625
diff --git a/newamp1.h b/newamp1.h
new file mode 100644
index 0000000..7783abc
--- /dev/null
+++ b/newamp1.h
@@ -0,0 +1,84 @@
1/*---------------------------------------------------------------------------*\
2
3 FILE........: newamp1.h
4 AUTHOR......: David Rowe
5 DATE CREATED: Jan 2017
6
7 Quantisation functions for the sinusoidal coder, using "newamp1"
8 algorithm that resamples variable rate L [Am} to a fixed rate K then
9 VQs.
10
11\*---------------------------------------------------------------------------*/
12
13/*
14 Copyright David Rowe 2017
15
16 All rights reserved.
17
18 This program is free software; you can redistribute it and/or modify
19 it under the terms of the GNU Lesser General Public License version 2.1, as
20 published by the Free Software Foundation. This program is
21 distributed in the hope that it will be useful, but WITHOUT ANY
22 WARRANTY; without even the implied warranty of MERCHANTABILITY or
23 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
24 License for more details.
25
26 You should have received a copy of the GNU Lesser General Public License
27 along with this program; if not, see <http://www.gnu.org/licenses/>.
28*/
29
30#ifndef __NEWAMP1__
31#define __NEWAMP1__
32
33#define NEWAMP1_N_INDEXES 4 /* Number of indexes to pack: vq1, vq2, energy, Wo */
34#define NEWAMP1_PHASE_NFFT 128 /* size of FFT used for phase synthesis */
35#define NEWAMP1_K 20 /* rate K vector length */
36
37#include "codec2_fft.h"
38#include "comp.h"
39
40void interp_para(float y[], float xp[], float yp[], int np, float x[], int n);
41float ftomel(float fHz);
42void mel_sample_freqs_kHz(float rate_K_sample_freqs_kHz[], int K, float mel_start, float mel_end);
43void resample_const_rate_f(C2CONST *c2const, MODEL *model, float rate_K_vec[], float rate_K_sample_freqs_kHz[], int K);
44float rate_K_mbest_encode(int *indexes, float *x, float *xq, int ndim, int mbest_entries);
45void post_filter_newamp1(float vec[], float sample_freq_kHz[], int K, float pf_gain);
46void interp_Wo_v(float Wo_[], int L_[], int voicing_[], float Wo1, float Wo2, int voicing1, int voicing2);
47void resample_rate_L(C2CONST *c2const, MODEL *model, float rate_K_vec[], float rate_K_sample_freqs_kHz[], int K);
48void determine_phase(C2CONST *c2const, COMP H[], MODEL *model, int Nfft, codec2_fft_cfg fwd_cfg, codec2_fft_cfg inv_cfg);
49void newamp1_model_to_indexes(C2CONST *c2const,
50 int indexes[],
51 MODEL *model,
52 float rate_K_vec[],
53 float rate_K_sample_freqs_kHz[],
54 int K,
55 float *mean,
56 float rate_K_vec_no_mean[],
57 float rate_K_vec_no_mean_[],
58 float *se);
59void newamp1_indexes_to_rate_K_vec(float rate_K_vec_[],
60 float rate_K_vec_no_mean_[],
61 float rate_K_sample_freqs_kHz[],
62 int K,
63 float *mean_,
64 int indexes[],
65 float user_rate_K_vec_no_mean_[],
66 int post_filter_en);
67void newamp1_interpolate(float interpolated_surface_[], float left_vec[], float right_vec[], int K);
68
69void newamp1_indexes_to_model(C2CONST *c2const,
70 MODEL model_[],
71 COMP H[],
72 float interpolated_surface_[],
73 float prev_rate_K_vec_[],
74 float *Wo_left,
75 int *voicing_left,
76 float rate_K_sample_freqs_kHz[],
77 int K,
78 codec2_fft_cfg fwd_cfg,
79 codec2_fft_cfg inv_cfg,
80 int indexes[],
81 float user_rate_K_vec_no_mean_[],
82 int post_filter_en);
83
84#endif
diff --git a/newamp2.c b/newamp2.c
new file mode 100644
index 0000000..6550557
--- /dev/null
+++ b/newamp2.c
@@ -0,0 +1,570 @@
1/*---------------------------------------------------------------------------*\
2
3 FILE........: newamp2.c
4 AUTHOR......: Thomas Kurin and Stefan Erhardt
5 INSTITUTE...: Institute for Electronics Engineering, University of Erlangen-Nuremberg
6 DATE CREATED: July 2018
7 BASED ON....: "newamp1" by David Rowe
8
9 Quantisation functions for the sinusoidal coder, using "newamp1"
10 algorithm that resamples variable rate L [Am} to a fixed rate K then
11 VQs.
12
13\*---------------------------------------------------------------------------*/
14
15/*
16 Copyright David Rowe 2017
17
18 All rights reserved.
19
20 This program is free software; you can redistribute it and/or modify
21 it under the terms of the GNU Lesser General Public License version 2.1, as
22 published by the Free Software Foundation. This program is
23 distributed in the hope that it will be useful, but WITHOUT ANY
24 WARRANTY; without even the implied warranty of MERCHANTABILITY or
25 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
26 License for more details.
27
28 You should have received a copy of the GNU Lesser General Public License
29 along with this program; if not, see <http://www.gnu.org/licenses/>.
30
31*/
32
33#include <assert.h>
34#include <stdio.h>
35#include <stdlib.h>
36#include <string.h>
37#include <math.h>
38
39#include "defines.h"
40#include "phase.h"
41#include "quantise.h"
42#include "mbest.h"
43#include "newamp1.h"
44#include "newamp2.h"
45
46/*---------------------------------------------------------------------------*\
47
48 FUNCTION....: n2_mel_sample_freqs_kHz()
49 AUTHOR......: Thomas Kurin and Stefan Erhardt
50 INSTITUTE...: Institute for Electronics Engineering, University of Erlangen-Nuremberg
51 DATE CREATED: July 2018
52
53 Outputs fixed frequencies for the K-Vectors to be able to work with both 8k and 16k mode.
54
55\*---------------------------------------------------------------------------*/
56
57void n2_mel_sample_freqs_kHz(float rate_K_sample_freqs_kHz[], int K)
58{
59 float freq[] = {0.199816, 0.252849, 0.309008, 0.368476, 0.431449, 0.498134, 0.568749, 0.643526, 0.722710, 0.806561, 0.895354, 0.989380,
60 1.088948, 1.194384, 1.306034, 1.424264, 1.549463, 1.682041, 1.822432, 1.971098, 2.128525, 2.295232, 2.471763, 2.658699,
61 2.856652, 3.066272, 3.288246, 3.523303, 3.772214, 4.035795, 4.314912, 4.610478, 4.923465, 5.254899, 5.605865, 5.977518,
62 6.371075, 6.787827, 7.229141, 7.696465};
63 int k;
64 //printf("\n\n");
65 for (k=0; k<K; k++) {
66 rate_K_sample_freqs_kHz[k] = freq[k];
67 // printf("%f ",mel);
68 // printf("%f \n",rate_K_sample_freqs_kHz[k]);
69 }
70
71}
72
73
74/*---------------------------------------------------------------------------*\
75
76 FUNCTION....: n2_resample_const_rate_f() still equal to resample_const_rate_f()
77 AUTHOR......: David Rowe
78 DATE CREATED: Jan 2017
79
80 Resample Am from time-varying rate L=floor(pi/Wo) to fixed rate K.
81
82\*---------------------------------------------------------------------------*/
83
84void n2_resample_const_rate_f(C2CONST *c2const, MODEL *model, float rate_K_vec[], float rate_K_sample_freqs_kHz[], int K)
85{
86 int m;
87 float AmdB[MAX_AMP+1], rate_L_sample_freqs_kHz[MAX_AMP+1], AmdB_peak;
88
89 /* convert rate L=pi/Wo amplitude samples to fixed rate K */
90
91 AmdB_peak = -100.0;
92 for(m=1; m<=model->L; m++) {
93 AmdB[m] = 20.0*log10(model->A[m]+1E-16);
94 if (AmdB[m] > AmdB_peak) {
95 AmdB_peak = AmdB[m];
96 }
97 rate_L_sample_freqs_kHz[m] = m*model->Wo*(c2const->Fs/2000.0)/M_PI;
98 //printf("m: %d AmdB: %f AmdB_peak: %f sf: %f\n", m, AmdB[m], AmdB_peak, rate_L_sample_freqs_kHz[m]);
99 }
100
101 /* clip between peak and peak -50dB, to reduce dynamic range */
102
103 for(m=1; m<=model->L; m++) {
104 if (AmdB[m] < (AmdB_peak-50.0)) {
105 AmdB[m] = AmdB_peak-50.0;
106 }
107 }
108
109 interp_para(rate_K_vec, &rate_L_sample_freqs_kHz[1], &AmdB[1], model->L, rate_K_sample_freqs_kHz, K);
110}
111
112
113/*---------------------------------------------------------------------------*\
114
115 FUNCTION....: n2_rate_K_mbest_encode
116 AUTHOR......: Thomas Kurin and Stefan Erhardt
117 INSTITUTE...: Institute for Electronics Engineering, University of Erlangen-Nuremberg
118 DATE CREATED: July 2018
119
120 One stage rate K newamp2 VQ quantiser using mbest search.
121
122\*---------------------------------------------------------------------------*/
123
124void n2_rate_K_mbest_encode(int *indexes, float *x, float *xq, int ndim)
125{
126 int i, n1;
127 const float *codebook1 = newamp2vq_cb[0].cb;
128 struct MBEST *mbest_stage1;
129 float w[ndim];
130 int index[1];
131
132 /* codebook is compiled for a fixed K */
133
134 //assert(ndim == newamp2vq_cb[0].k);
135
136 /* equal weights, could be argued mel freq axis gives freq dep weighting */
137
138 for(i=0; i<ndim; i++)
139 w[i] = 1.0;
140
141 mbest_stage1 = mbest_create(1);
142
143 index[0] = 0;
144
145 /* Stage 1 */
146
147 mbest_search450(codebook1, x, w, ndim,NEWAMP2_K, newamp2vq_cb[0].m, mbest_stage1, index);
148 MBEST_PRINT("Stage 1:", mbest_stage1);
149 n1 = mbest_stage1->list[0].index[0];
150
151 mbest_destroy(mbest_stage1);
152
153 //indexes[1]: legacy from newamp1
154 indexes[0] = n1; indexes[1] = n1;
155
156}
157
158
159/*---------------------------------------------------------------------------*\
160
161 FUNCTION....: n2_resample_rate_L
162 AUTHOR......: Thomas Kurin and Stefan Erhardt
163 INSTITUTE...: Institute for Electronics Engineering, University of Erlangen-Nuremberg
164 DATE CREATED: July 2018
165
166 Decoder side conversion of rate K vector back to rate L.
167 Plosives are set to zero for the first 2 of 4 frames.
168
169\*---------------------------------------------------------------------------*/
170
171void n2_resample_rate_L(C2CONST *c2const, MODEL *model, float rate_K_vec[], float rate_K_sample_freqs_kHz[], int K,int plosive_flag)
172{
173 float rate_K_vec_term[K+2], rate_K_sample_freqs_kHz_term[K+2];
174 float AmdB[MAX_AMP+1], rate_L_sample_freqs_kHz[MAX_AMP+1];
175 int m,k;
176
177 /* terminate either end of the rate K vecs with 0dB points */
178
179 rate_K_vec_term[0] = rate_K_vec_term[K+1] = 0.0;
180 rate_K_sample_freqs_kHz_term[0] = 0.0;
181 rate_K_sample_freqs_kHz_term[K+1] = 4.0;
182
183 for(k=0; k<K; k++) {
184 rate_K_vec_term[k+1] = rate_K_vec[k];
185 rate_K_sample_freqs_kHz_term[k+1] = rate_K_sample_freqs_kHz[k];
186
187 //printf("k: %d f: %f rate_K: %f\n", k, rate_K_sample_freqs_kHz[k], rate_K_vec[k]);
188 }
189
190 for(m=1; m<=model->L; m++) {
191 rate_L_sample_freqs_kHz[m] = m*model->Wo*(c2const->Fs/2000.0)/M_PI;
192 }
193
194 interp_para(&AmdB[1], rate_K_sample_freqs_kHz_term, rate_K_vec_term, K+2, &rate_L_sample_freqs_kHz[1], model->L);
195 for(m=1; m<=model->L; m++) {
196 if(plosive_flag==0){
197 model->A[m] = pow(10.0, AmdB[m]/20.0);
198 }else{
199 model->A[m] = 0.1;
200 }
201 // printf("m: %d f: %f AdB: %f A: %f\n", m, rate_L_sample_freqs_kHz[m], AmdB[m], model->A[m]);
202 }
203}
204
205/*---------------------------------------------------------------------------*\
206
207 FUNCTION....: n2_post_filter_newamp2
208 AUTHOR......: Thomas Kurin and Stefan Erhardt
209 INSTITUTE...: Institute for Electronics Engineering, University of Erlangen-Nuremberg
210 DATE CREATED: July 2018
211
212 Postfilter for the pseudo wideband mode. Still has to be adapted!
213
214\*---------------------------------------------------------------------------*/
215
216void n2_post_filter_newamp2(float vec[], float sample_freq_kHz[], int K, float pf_gain)
217{
218 int k;
219
220 /*
221 vec is rate K vector describing spectrum of current frame lets
222 pre-emp before applying PF. 20dB/dec over 300Hz. Postfilter
223 affects energy of frame so we measure energy before and after
224 and normalise. Plenty of room for experiment here as well.
225 */
226
227 float pre[K];
228 float e_before = 0.0;
229 float e_after = 0.0;
230 for(k=0; k<K; k++) {
231 pre[k] = 20.0*log10f(sample_freq_kHz[k]/0.3);
232 vec[k] += pre[k];
233 e_before += POW10F(vec[k]/10.0);
234 vec[k] *= pf_gain;
235 e_after += POW10F(vec[k]/10.0);
236 }
237
238 float gain = e_after/e_before;
239 float gaindB = 10*log10f(gain);
240
241 for(k=0; k<K; k++) {
242 vec[k] -= gaindB;
243 vec[k] -= pre[k];
244 }
245}
246
247
248/*---------------------------------------------------------------------------*\
249
250 FUNCTION....: newamp2_model_to_indexes
251 AUTHOR......: Thomas Kurin and Stefan Erhardt
252 INSTITUTE...: Institute for Electronics Engineering, University of Erlangen-Nuremberg
253 DATE CREATED: July 2018
254
255 newamp2 encoder: Encodes the 8k sampled samples using mbest search (one stage)
256
257\*---------------------------------------------------------------------------*/
258
259void newamp2_model_to_indexes(C2CONST *c2const,
260 int indexes[],
261 MODEL *model,
262 float rate_K_vec[],
263 float rate_K_sample_freqs_kHz[],
264 int K,
265 float *mean,
266 float rate_K_vec_no_mean[],
267 float rate_K_vec_no_mean_[],
268 int plosive
269 )
270{
271 int k;
272
273 /* convert variable rate L to fixed rate K */
274
275 resample_const_rate_f(c2const, model, rate_K_vec, rate_K_sample_freqs_kHz, K);
276
277 /* remove mean and two stage VQ */
278
279 float sum = 0.0;
280 for(k=0; k<K; k++)
281 sum += rate_K_vec[k];
282 *mean = sum/K;
283 for(k=0; k<K; k++)
284 {
285 rate_K_vec_no_mean[k] = rate_K_vec[k] - *mean;
286 }
287 //NEWAMP2_16K_K+1 because the last vector is not a vector for VQ (and not included in the constant)
288 //but a calculated medium mean value
289 n2_rate_K_mbest_encode(indexes, rate_K_vec_no_mean, rate_K_vec_no_mean_, NEWAMP2_16K_K+1);
290
291 /* scalar quantise mean (effectively the frame energy) */
292
293 float w[1] = {1.0};
294 float se;
295 indexes[2] = quantise(newamp2_energy_cb[0].cb,
296 mean,
297 w,
298 newamp2_energy_cb[0].k,
299 newamp2_energy_cb[0].m,
300 &se);
301
302 /* scalar quantise Wo. We steal the smallest Wo index to signal
303 an unvoiced frame */
304
305 if (model->voiced) {
306 int index = encode_log_Wo(c2const, model->Wo, 6);
307 if (index == 0) {
308 index = 1;
309 }
310 if (index == 63) {
311 index = 62;
312 }
313 indexes[3] = index;
314 }
315 else {
316 indexes[3] = 0;
317 }
318 if(plosive != 0){
319 indexes[3] = 63;
320 }
321 }
322
323
324/*---------------------------------------------------------------------------*\
325
326 FUNCTION....: newamp2_indexes_to_rate_K_vec
327 AUTHOR......: Thomas Kurin and Stefan Erhardt
328 INSTITUTE...: Institute for Electronics Engineering, University of Erlangen-Nuremberg
329 DATE CREATED: July 2018
330
331 newamp2 decoder for amplitudes {Am}. Given the rate K VQ and energy
332 indexes, outputs rate K vector. Equal to newamp1 but using only one stage VQ.
333
334\*---------------------------------------------------------------------------*/
335
336void newamp2_indexes_to_rate_K_vec(float rate_K_vec_[],
337 float rate_K_vec_no_mean_[],
338 float rate_K_sample_freqs_kHz[],
339 int K,
340 float *mean_,
341 int indexes[],
342 float pf_gain)
343{
344 int k;
345 const float *codebook1 = newamp2vq_cb[0].cb;
346 int n1 = indexes[0];
347
348 for(k=0; k<K; k++) {
349 rate_K_vec_no_mean_[k] = codebook1[(NEWAMP2_16K_K+1)*n1+k];
350 }
351
352 post_filter_newamp1(rate_K_vec_no_mean_, rate_K_sample_freqs_kHz, K, pf_gain);
353
354 *mean_ = newamp2_energy_cb[0].cb[indexes[2]];
355
356 for(k=0; k<K; k++) {
357 rate_K_vec_[k] = rate_K_vec_no_mean_[k] + *mean_;
358 }
359}
360
361/*---------------------------------------------------------------------------*\
362
363 FUNCTION....: newamp2_16k_indexes_to_rate_K_vec
364 AUTHOR......: Thomas Kurin and Stefan Erhardt
365 INSTITUTE...: Institute for Electronics Engineering, University of Erlangen-Nuremberg
366 DATE CREATED: July 2018
367
368 newamp2 decoder for amplitudes {Am}. Given the rate K VQ and energy
369 indexes, outputs rate K vector. Extends the sample rate by looking up the corresponding
370 higher frequency values with their energy difference to the base energy (=>mean2)
371
372\*---------------------------------------------------------------------------*/
373
374void newamp2_16k_indexes_to_rate_K_vec(float rate_K_vec_[],
375 float rate_K_vec_no_mean_[],
376 float rate_K_sample_freqs_kHz[],
377 int K,
378 float *mean_,
379 int indexes[],
380 float pf_gain)
381{
382 int k;
383 const float *codebook1 = newamp2vq_cb[0].cb;
384 float mean2 = 0;
385 int n1 = indexes[0];
386
387 for(k=0; k<K; k++) {
388 rate_K_vec_no_mean_[k] = codebook1[(K+1)*n1+k];
389 }
390
391 n2_post_filter_newamp2(rate_K_vec_no_mean_, rate_K_sample_freqs_kHz, K, pf_gain);
392
393 *mean_ = newamp2_energy_cb[0].cb[indexes[2]];
394 mean2 = *mean_ + codebook1[(K+1)*n1+K] -10;
395
396 //HF ear Protection
397 if(mean2>50){
398 mean2 = 50;
399 }
400
401 for(k=0; k<K; k++) {
402 if(k<NEWAMP2_K){
403 rate_K_vec_[k] = rate_K_vec_no_mean_[k] + *mean_;
404 }
405 else{
406 //Amplify or Reduce ??
407 rate_K_vec_[k] = rate_K_vec_no_mean_[k] + mean2;
408 }
409 }
410}
411/*---------------------------------------------------------------------------*\
412
413 FUNCTION....: newamp2_interpolate
414 AUTHOR......: Thomas Kurin and Stefan Erhardt
415 INSTITUTE...: Institute for Electronics Engineering, University of Erlangen-Nuremberg
416 DATE CREATED: July 2018
417
418 Interpolates to the 4 10ms Frames and leaves the forst 2 empty for plosives
419
420\*---------------------------------------------------------------------------*/
421
422void newamp2_interpolate(float interpolated_surface_[], float left_vec[], float right_vec[], int K, int plosive_flag)
423{
424 int i, k;
425 int M = 4;
426 float c;
427
428 /* (linearly) interpolate 25Hz amplitude vectors back to 100Hz */
429
430 if(plosive_flag == 0){
431 for(i=0,c=1.0; i<M; i++,c-=1.0/M) {
432 for(k=0; k<K; k++) {
433 interpolated_surface_[i*K+k] = left_vec[k]*c + right_vec[k]*(1.0-c);
434 }
435 }
436 }
437 else{
438 for(i=0,c=1.0; i<M; i++,c-=1.0/M) {
439 for(k=0; k<K; k++) {
440 if(i<2){
441 interpolated_surface_[i*K+k] = 0;
442 }
443 else{
444 //perhaps add some dB ?
445 interpolated_surface_[i*K+k] = right_vec[k];
446 }
447 }
448 }
449
450 }
451}
452
453
454/*---------------------------------------------------------------------------*\
455
456 FUNCTION....: newamp2_indexes_to_model
457 AUTHOR......: Thomas Kurin and Stefan Erhardt
458 INSTITUTE...: Institute for Electronics Engineering, University of Erlangen-Nuremberg
459 DATE CREATED: July 2018
460
461 newamp2 decoder. Chooses whether to decode to 16k mode or to 8k mode
462
463\*---------------------------------------------------------------------------*/
464
465void newamp2_indexes_to_model(C2CONST *c2const,
466 MODEL model_[],
467 COMP H[],
468 float *interpolated_surface_,
469 float prev_rate_K_vec_[],
470 float *Wo_left,
471 int *voicing_left,
472 float rate_K_sample_freqs_kHz[],
473 int K,
474 codec2_fft_cfg fwd_cfg,
475 codec2_fft_cfg inv_cfg,
476 int indexes[],
477 float pf_gain,
478 int flag16k)
479{
480 float rate_K_vec_[K], rate_K_vec_no_mean_[K], mean_, Wo_right;
481 int voicing_right, k;
482 int M = 4;
483
484 /* extract latest rate K vector */
485
486 if(flag16k == 0){
487 newamp2_indexes_to_rate_K_vec(rate_K_vec_,
488 rate_K_vec_no_mean_,
489 rate_K_sample_freqs_kHz,
490 K,
491 &mean_,
492 indexes,
493 pf_gain);
494 }else{
495 newamp2_16k_indexes_to_rate_K_vec(rate_K_vec_,
496 rate_K_vec_no_mean_,
497 rate_K_sample_freqs_kHz,
498 K,
499 &mean_,
500 indexes,
501 pf_gain);
502 }
503
504
505 /* decode latest Wo and voicing and plosive */
506 int plosive_flag = 0;
507
508 //Voiced with Wo
509 if (indexes[3]>0 && indexes[3]<63) {
510 Wo_right = decode_log_Wo(c2const, indexes[3], 6);
511 voicing_right = 1;
512 }
513 //Unvoiced
514 else if(indexes[3] == 0){
515 Wo_right = 2.0*M_PI/100.0;
516 voicing_right = 0;
517 }
518 //indexes[3]=63 (= Plosive) and unvoiced
519 else {
520 Wo_right = 2.0*M_PI/100.0;
521 voicing_right = 0;
522 plosive_flag = 1;
523 }
524
525 /* interpolate 25Hz rate K vec back to 100Hz */
526
527 float *left_vec = prev_rate_K_vec_;
528 float *right_vec = rate_K_vec_;
529 newamp2_interpolate(interpolated_surface_, left_vec, right_vec, K,plosive_flag);
530
531 /* interpolate 25Hz v and Wo back to 100Hz */
532
533 float aWo_[M];
534 int avoicing_[M], aL_[M], i;
535
536 interp_Wo_v(aWo_, aL_, avoicing_, *Wo_left, Wo_right, *voicing_left, voicing_right);
537
538 /* back to rate L amplitudes, synthesis phase for each frame */
539
540 for(i=0; i<M; i++) {
541 model_[i].Wo = aWo_[i];
542 model_[i].L = aL_[i];
543 model_[i].voiced = avoicing_[i];
544 //Plosive Detected
545 if(plosive_flag>0){
546 //First two frames are set to zero
547 if (i<2){
548 n2_resample_rate_L(c2const, &model_[i], &interpolated_surface_[K*i], rate_K_sample_freqs_kHz, K,1);
549 }
550 else{
551 n2_resample_rate_L(c2const, &model_[i], &interpolated_surface_[K*i], rate_K_sample_freqs_kHz, K,0);
552 }
553 }
554 //No Plosive, standard resample
555 else{
556 n2_resample_rate_L(c2const, &model_[i], &interpolated_surface_[K*i], rate_K_sample_freqs_kHz, K,0);
557 }
558 determine_phase(c2const, &H[(MAX_AMP+1)*i], &model_[i], NEWAMP2_PHASE_NFFT, fwd_cfg, inv_cfg);
559 }
560
561 /* update memories for next time */
562
563 for(k=0; k<K; k++) {
564 prev_rate_K_vec_[k] = rate_K_vec_[k];
565 }
566 *Wo_left = Wo_right;
567 *voicing_left = voicing_right;
568
569}
570
diff --git a/newamp2.h b/newamp2.h
new file mode 100644
index 0000000..ec14566
--- /dev/null
+++ b/newamp2.h
@@ -0,0 +1,89 @@
1/*---------------------------------------------------------------------------*\
2
3 FILE........: newamp2.h
4 AUTHOR......: Thomas Kurin and Stefan Erhardt
5 INSTITUTE...: Institute for Electronics Engineering, University of Erlangen-Nuremberg
6 DATE CREATED: July 2018
7 BASED ON....: "newamp1.h" by David Rowe
8
9 Quantisation functions for the sinusoidal coder, using "newamp1"
10 algorithm that resamples variable rate L [Am} to a fixed rate K then
11 VQs.
12
13\*---------------------------------------------------------------------------*/
14
15/*
16 Copyright Thomas Kurin and Stefan Erhardt 2018
17
18 All rights reserved.
19
20 This program is free software; you can redistribute it and/or modify
21 it under the terms of the GNU Lesser General Public License version 2.1, as
22 published by the Free Software Foundation. This program is
23 distributed in the hope that it will be useful, but WITHOUT ANY
24 WARRANTY; without even the implied warranty of MERCHANTABILITY or
25 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
26 License for more details.
27
28 You should have received a copy of the GNU Lesser General Public License
29 along with this program; if not, see <http://www.gnu.org/licenses/>.
30*/
31
32#ifndef __NEWAMP2__
33#define __NEWAMP2__
34
35#define NEWAMP2_N_INDEXES 4 /* Number of indexes to pack: vq1, vq2, energy, Wo */
36#define NEWAMP2_PHASE_NFFT 128 /* size of FFT used for phase synthesis */
37#define NEWAMP2_K 29 /* rate K vector length */
38#define NEWAMP2_16K_K 40 /* rate K vector length for 16k Mode */
39
40#include "codec2_fft.h"
41#include "comp.h"
42
43void n2_mel_sample_freqs_kHz(float rate_K_sample_freqs_kHz[], int K);
44void n2_resample_const_rate_f(C2CONST *c2const, MODEL *model, float rate_K_vec[], float rate_K_sample_freqs_kHz[], int K);
45void n2_rate_K_mbest_encode(int *indexes, float *x, float *xq, int ndim);
46void n2_resample_rate_L(C2CONST *c2const, MODEL *model, float rate_K_vec[], float rate_K_sample_freqs_kHz[], int K,int plosive_flag);
47void n2_post_filter_newamp2(float vec[], float sample_freq_kHz[], int K, float pf_gain);
48void newamp2_interpolate(float interpolated_surface_[], float left_vec[], float right_vec[], int K,int plosive_flag);
49void newamp2_model_to_indexes(C2CONST *c2const,
50 int indexes[],
51 MODEL *model,
52 float rate_K_vec[],
53 float rate_K_sample_freqs_kHz[],
54 int K,
55 float *mean,
56 float rate_K_vec_no_mean[],
57 float rate_K_vec_no_mean_[],
58 int plosiv
59 );
60void newamp2_indexes_to_rate_K_vec(float rate_K_vec_[],
61 float rate_K_vec_no_mean_[],
62 float rate_K_sample_freqs_kHz[],
63 int K,
64 float *mean_,
65 int indexes[],
66 float pf_gain);
67void newamp2_16k_indexes_to_rate_K_vec(float rate_K_vec_[],
68 float rate_K_vec_no_mean_[],
69 float rate_K_sample_freqs_kHz[],
70 int K,
71 float *mean_,
72 int indexes[],
73 float pf_gain);
74void newamp2_indexes_to_model(C2CONST *c2const,
75 MODEL model_[],
76 COMP H[],
77 float interpolated_surface_[],
78 float prev_rate_K_vec_[],
79 float *Wo_left,
80 int *voicing_left,
81 float rate_K_sample_freqs_kHz[],
82 int K,
83 codec2_fft_cfg fwd_cfg,
84 codec2_fft_cfg inv_cfg,
85 int indexes[],
86 float pf_gain,
87 int flag16k);
88
89#endif
diff --git a/nlp.c b/nlp.c
new file mode 100644
index 0000000..8c8d5f1
--- /dev/null
+++ b/nlp.c
@@ -0,0 +1,702 @@
1/*---------------------------------------------------------------------------*\
2
3 FILE........: nlp.c
4 AUTHOR......: David Rowe
5 DATE CREATED: 23/3/93
6
7 Non Linear Pitch (NLP) estimation functions.
8
9\*---------------------------------------------------------------------------*/
10
11/*
12 Copyright (C) 2009 David Rowe
13
14 All rights reserved.
15
16 This program is free software; you can redistribute it and/or modify
17 it under the terms of the GNU Lesser General Public License version 2.1, as
18 published by the Free Software Foundation. This program is
19 distributed in the hope that it will be useful, but WITHOUT ANY
20 WARRANTY; without even the implied warranty of MERCHANTABILITY or
21 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
22 License for more details.
23
24 You should have received a copy of the GNU Lesser General Public License
25 along with this program; if not, see <http://www.gnu.org/licenses/>.
26*/
27
28#include "defines.h"
29#include "nlp.h"
30#include "dump.h"
31#include "codec2_fft.h"
32#undef PROFILE
33#include "machdep.h"
34#include "os.h"
35
36#include <assert.h>
37#include <math.h>
38#include <stdlib.h>
39
40/*---------------------------------------------------------------------------*\
41
42 DEFINES
43
44\*---------------------------------------------------------------------------*/
45
46#define PMAX_M 320 /* maximum NLP analysis window size */
47#define COEFF 0.95 /* notch filter parameter */
48#define PE_FFT_SIZE 512 /* DFT size for pitch estimation */
49#define DEC 5 /* decimation factor */
50#define SAMPLE_RATE 8000
51#define PI 3.141592654 /* mathematical constant */
52#define T 0.1 /* threshold for local minima candidate */
53#define F0_MAX 500
54#define CNLP 0.3 /* post processor constant */
55#define NLP_NTAP 48 /* Decimation LPF order */
56#undef POST_PROCESS_MBE /* choose post processor */
57
58/* 8 to 16 kHz sample rate conversion */
59
60#define FDMDV_OS 2 /* oversampling rate */
61#define FDMDV_OS_TAPS_16K 48 /* number of OS filter taps at 16kHz */
62#define FDMDV_OS_TAPS_8K (FDMDV_OS_TAPS_16K/FDMDV_OS) /* number of OS filter taps at 8kHz */
63
64/*---------------------------------------------------------------------------*\
65
66 GLOBALS
67
68\*---------------------------------------------------------------------------*/
69
70/* 48 tap 600Hz low pass FIR filter coefficients */
71
72const float nlp_fir[] = {
73 -1.0818124e-03,
74 -1.1008344e-03,
75 -9.2768838e-04,
76 -4.2289438e-04,
77 5.5034190e-04,
78 2.0029849e-03,
79 3.7058509e-03,
80 5.1449415e-03,
81 5.5924666e-03,
82 4.3036754e-03,
83 8.0284511e-04,
84 -4.8204610e-03,
85 -1.1705810e-02,
86 -1.8199275e-02,
87 -2.2065282e-02,
88 -2.0920610e-02,
89 -1.2808831e-02,
90 3.2204775e-03,
91 2.6683811e-02,
92 5.5520624e-02,
93 8.6305944e-02,
94 1.1480192e-01,
95 1.3674206e-01,
96 1.4867556e-01,
97 1.4867556e-01,
98 1.3674206e-01,
99 1.1480192e-01,
100 8.6305944e-02,
101 5.5520624e-02,
102 2.6683811e-02,
103 3.2204775e-03,
104 -1.2808831e-02,
105 -2.0920610e-02,
106 -2.2065282e-02,
107 -1.8199275e-02,
108 -1.1705810e-02,
109 -4.8204610e-03,
110 8.0284511e-04,
111 4.3036754e-03,
112 5.5924666e-03,
113 5.1449415e-03,
114 3.7058509e-03,
115 2.0029849e-03,
116 5.5034190e-04,
117 -4.2289438e-04,
118 -9.2768838e-04,
119 -1.1008344e-03,
120 -1.0818124e-03
121};
122
123typedef struct {
124 int Fs; /* sample rate in Hz */
125 int m;
126 float w[PMAX_M/DEC]; /* DFT window */
127 float sq[PMAX_M]; /* squared speech samples */
128 float mem_x,mem_y; /* memory for notch filter */
129 float mem_fir[NLP_NTAP]; /* decimation FIR filter memory */
130 codec2_fft_cfg fft_cfg; /* kiss FFT config */
131 float *Sn16k; /* Fs=16kHz input speech vector */
132 FILE *f;
133} NLP;
134
135#ifdef POST_PROCESS_MBE
136float test_candidate_mbe(COMP Sw[], COMP W[], float f0);
137float post_process_mbe(COMP Fw[], int pmin, int pmax, float gmax, COMP Sw[], COMP W[], float *prev_Wo);
138#endif
139float post_process_sub_multiples(COMP Fw[],
140 int pmin, int pmax, float gmax, int gmax_bin,
141 float *prev_f0);
142static void fdmdv_16_to_8(float out8k[], float in16k[], int n);
143
144/*---------------------------------------------------------------------------*\
145
146 nlp_create()
147
148 Initialisation function for NLP pitch estimator.
149
150\*---------------------------------------------------------------------------*/
151
152void *nlp_create(C2CONST *c2const)
153{
154 NLP *nlp;
155 int i;
156 int m = c2const->m_pitch;
157 int Fs = c2const->Fs;
158
159 nlp = (NLP*)malloc(sizeof(NLP));
160 if (nlp == NULL)
161 return NULL;
162
163 assert((Fs == 8000) || (Fs == 16000));
164 nlp->Fs = Fs;
165
166 nlp->m = m;
167
168 /* if running at 16kHz allocate storage for decimating filter memory */
169
170 if (Fs == 16000) {
171 nlp->Sn16k = (float*)malloc(sizeof(float)*(FDMDV_OS_TAPS_16K + c2const->n_samp));
172 for(i=0; i<FDMDV_OS_TAPS_16K; i++) {
173 nlp->Sn16k[i] = 0.0;
174 }
175 if (nlp->Sn16k == NULL) {
176 free(nlp);
177 return NULL;
178 }
179
180 /* most processing occurs at 8 kHz sample rate so halve m */
181
182 m /= 2;
183 }
184
185 assert(m <= PMAX_M);
186
187 for(i=0; i<m/DEC; i++) {
188 nlp->w[i] = 0.5 - 0.5*cosf(2*PI*i/(m/DEC-1));
189 }
190
191 for(i=0; i<PMAX_M; i++)
192 nlp->sq[i] = 0.0;
193 nlp->mem_x = 0.0;
194 nlp->mem_y = 0.0;
195 for(i=0; i<NLP_NTAP; i++)
196 nlp->mem_fir[i] = 0.0;
197
198 nlp->fft_cfg = codec2_fft_alloc (PE_FFT_SIZE, 0, NULL, NULL);
199 assert(nlp->fft_cfg != NULL);
200
201 return (void*)nlp;
202}
203
204/*---------------------------------------------------------------------------*\
205
206 nlp_destroy()
207
208 Shut down function for NLP pitch estimator.
209
210\*---------------------------------------------------------------------------*/
211
212void nlp_destroy(void *nlp_state)
213{
214 NLP *nlp;
215 assert(nlp_state != NULL);
216 nlp = (NLP*)nlp_state;
217
218 codec2_fft_free(nlp->fft_cfg);
219 if (nlp->Fs == 16000) {
220 free(nlp->Sn16k);
221 }
222 free(nlp_state);
223}
224
225/*---------------------------------------------------------------------------*\
226
227 nlp()
228
229 Determines the pitch in samples using the Non Linear Pitch (NLP)
230 algorithm [1]. Returns the fundamental in Hz. Note that the actual
231 pitch estimate is for the centre of the M sample Sn[] vector, not
232 the current N sample input vector. This is (I think) a delay of 2.5
233 frames with N=80 samples. You should align further analysis using
234 this pitch estimate to be centred on the middle of Sn[].
235
236 Two post processors have been tried, the MBE version (as discussed
237 in [1]), and a post processor that checks sub-multiples. Both
238 suffer occasional gross pitch errors (i.e. neither are perfect). In
239 the presence of background noise the sub-multiple algorithm tends
240 towards low F0 which leads to better sounding background noise than
241 the MBE post processor.
242
243 A good way to test and develop the NLP pitch estimator is using the
244 tnlp (codec2/unittest) and the codec2/octave/plnlp.m Octave script.
245
246 A pitch tracker searching a few frames forward and backward in time
247 would be a useful addition.
248
249 References:
250
251 [1] http://rowetel.com/downloads/1997_rowe_phd_thesis.pdf Chapter 4
252
253\*---------------------------------------------------------------------------*/
254
255float nlp(
256 void *nlp_state,
257 float Sn[], /* input speech vector */
258 int n, /* frames shift (no. new samples in Sn[]) */
259 float *pitch, /* estimated pitch period in samples at current Fs */
260 COMP Sw[], /* Freq domain version of Sn[] */
261 COMP W[], /* Freq domain window */
262 float *prev_f0 /* previous pitch f0 in Hz, memory for pitch tracking */
263)
264{
265 NLP *nlp;
266 float notch; /* current notch filter output */
267 COMP Fw[PE_FFT_SIZE]; /* DFT of squared signal (input/output) */
268 float gmax;
269 int gmax_bin;
270 int m, i, j;
271 float best_f0;
272 PROFILE_VAR(start, tnotch, filter, peakpick, window, fft, magsq, shiftmem);
273
274 assert(nlp_state != NULL);
275 nlp = (NLP*)nlp_state;
276 m = nlp->m;
277
278 /* Square, notch filter at DC, and LP filter vector */
279
280 /* If running at 16 kHz decimate to 8 kHz, as NLP ws designed for
281 Fs = 8kHz. The decimating filter introduces about 3ms of delay,
282 that shouldn't be a problem as pitch changes slowly. */
283
284 if (nlp->Fs == 8000) {
285 /* Square latest input samples */
286
287 for(i=m-n; i<m; i++) {
288 nlp->sq[i] = Sn[i]*Sn[i];
289 }
290 }
291 else {
292 assert(nlp->Fs == 16000);
293
294 /* re-sample at 8 KHz */
295
296 for(i=0; i<n; i++) {
297 nlp->Sn16k[FDMDV_OS_TAPS_16K+i] = Sn[m-n+i];
298 }
299
300 m /= 2; n /= 2;
301
302 float Sn8k[n];
303 fdmdv_16_to_8(Sn8k, &nlp->Sn16k[FDMDV_OS_TAPS_16K], n);
304
305 /* Square latest input samples */
306
307 for(i=m-n, j=0; i<m; i++, j++) {
308 nlp->sq[i] = Sn8k[j]*Sn8k[j];
309 }
310 assert(j <= n);
311 }
312 //fprintf(stderr, "n: %d m: %d\n", n, m);
313
314 PROFILE_SAMPLE(start);
315
316 for(i=m-n; i<m; i++) { /* notch filter at DC */
317 notch = nlp->sq[i] - nlp->mem_x;
318 notch += COEFF*nlp->mem_y;
319 nlp->mem_x = nlp->sq[i];
320 nlp->mem_y = notch;
321 nlp->sq[i] = notch + 1.0; /* With 0 input vectors to codec,
322 kiss_fft() would take a long
323 time to execute when running in
324 real time. Problem was traced
325 to kiss_fft function call in
326 this function. Adding this small
327 constant fixed problem. Not
328 exactly sure why. */
329 }
330
331 PROFILE_SAMPLE_AND_LOG(tnotch, start, " square and notch");
332
333 for(i=m-n; i<m; i++) { /* FIR filter vector */
334
335 for(j=0; j<NLP_NTAP-1; j++)
336 nlp->mem_fir[j] = nlp->mem_fir[j+1];
337 nlp->mem_fir[NLP_NTAP-1] = nlp->sq[i];
338
339 nlp->sq[i] = 0.0;
340 for(j=0; j<NLP_NTAP; j++)
341 nlp->sq[i] += nlp->mem_fir[j]*nlp_fir[j];
342 }
343
344 PROFILE_SAMPLE_AND_LOG(filter, tnotch, " filter");
345
346 /* Decimate and DFT */
347
348 for(i=0; i<PE_FFT_SIZE; i++) {
349 Fw[i].real = 0.0;
350 Fw[i].imag = 0.0;
351 }
352 for(i=0; i<m/DEC; i++) {
353 Fw[i].real = nlp->sq[i*DEC]*nlp->w[i];
354 }
355 PROFILE_SAMPLE_AND_LOG(window, filter, " window");
356 #ifdef DUMP
357 dump_dec(Fw);
358 #endif
359
360 // FIXME: check if this can be converted to a real fft
361 // since all imag inputs are 0
362 codec2_fft_inplace(nlp->fft_cfg, Fw);
363 PROFILE_SAMPLE_AND_LOG(fft, window, " fft");
364
365 for(i=0; i<PE_FFT_SIZE; i++)
366 Fw[i].real = Fw[i].real*Fw[i].real + Fw[i].imag*Fw[i].imag;
367
368 PROFILE_SAMPLE_AND_LOG(magsq, fft, " mag sq");
369 #ifdef DUMP
370 dump_sq(m, nlp->sq);
371 dump_Fw(Fw);
372 #endif
373
374 /* todo: express everything in f0, as pitch in samples is dep on Fs */
375
376 int pmin = floor(SAMPLE_RATE*P_MIN_S);
377 int pmax = floor(SAMPLE_RATE*P_MAX_S);
378
379 /* find global peak */
380
381 gmax = 0.0;
382 gmax_bin = PE_FFT_SIZE*DEC/pmax;
383 for(i=PE_FFT_SIZE*DEC/pmax; i<=PE_FFT_SIZE*DEC/pmin; i++) {
384 if (Fw[i].real > gmax) {
385 gmax = Fw[i].real;
386 gmax_bin = i;
387 }
388 }
389
390 PROFILE_SAMPLE_AND_LOG(peakpick, magsq, " peak pick");
391
392 #ifdef POST_PROCESS_MBE
393 best_f0 = post_process_mbe(Fw, pmin, pmax, gmax, Sw, W, prev_f0);
394 #else
395 best_f0 = post_process_sub_multiples(Fw, pmin, pmax, gmax, gmax_bin, prev_f0);
396 #endif
397
398 PROFILE_SAMPLE_AND_LOG(shiftmem, peakpick, " post process");
399
400 /* Shift samples in buffer to make room for new samples */
401
402 for(i=0; i<m-n; i++)
403 nlp->sq[i] = nlp->sq[i+n];
404
405 /* return pitch period in samples and F0 estimate */
406
407 *pitch = (float)nlp->Fs/best_f0;
408
409 PROFILE_SAMPLE_AND_LOG2(shiftmem, " shift mem");
410
411 PROFILE_SAMPLE_AND_LOG2(start, " nlp int");
412
413 *prev_f0 = best_f0;
414
415 return(best_f0);
416}
417
418/*---------------------------------------------------------------------------*\
419
420 post_process_sub_multiples()
421
422 Given the global maximma of Fw[] we search integer submultiples for
423 local maxima. If local maxima exist and they are above an
424 experimentally derived threshold (OK a magic number I pulled out of
425 the air) we choose the submultiple as the F0 estimate.
426
427 The rational for this is that the lowest frequency peak of Fw[]
428 should be F0, as Fw[] can be considered the autocorrelation function
429 of Sw[] (the speech spectrum). However sometimes due to phase
430 effects the lowest frequency maxima may not be the global maxima.
431
432 This works OK in practice and favours low F0 values in the presence
433 of background noise which means the sinusoidal codec does an OK job
434 of synthesising the background noise. High F0 in background noise
435 tends to sound more periodic introducing annoying artifacts.
436
437\*---------------------------------------------------------------------------*/
438
439float post_process_sub_multiples(COMP Fw[],
440 int pmin, int pmax, float gmax, int gmax_bin,
441 float *prev_f0)
442{
443 int min_bin, cmax_bin;
444 int mult;
445 float thresh, best_f0;
446 int b, bmin, bmax, lmax_bin;
447 float lmax;
448 int prev_f0_bin;
449
450 /* post process estimate by searching submultiples */
451
452 mult = 2;
453 min_bin = PE_FFT_SIZE*DEC/pmax;
454 cmax_bin = gmax_bin;
455 prev_f0_bin = *prev_f0*(PE_FFT_SIZE*DEC)/SAMPLE_RATE;
456
457 while(gmax_bin/mult >= min_bin) {
458
459 b = gmax_bin/mult; /* determine search interval */
460 bmin = 0.8*b;
461 bmax = 1.2*b;
462 if (bmin < min_bin)
463 bmin = min_bin;
464
465 /* lower threshold to favour previous frames pitch estimate,
466 this is a form of pitch tracking */
467
468 if ((prev_f0_bin > bmin) && (prev_f0_bin < bmax))
469 thresh = CNLP*0.5*gmax;
470 else
471 thresh = CNLP*gmax;
472
473 lmax = 0;
474 lmax_bin = bmin;
475 for (b=bmin; b<=bmax; b++) /* look for maximum in interval */
476 if (Fw[b].real > lmax) {
477 lmax = Fw[b].real;
478 lmax_bin = b;
479 }
480
481 if (lmax > thresh)
482 if ((lmax > Fw[lmax_bin-1].real) && (lmax > Fw[lmax_bin+1].real)) {
483 cmax_bin = lmax_bin;
484 }
485
486 mult++;
487 }
488
489 best_f0 = (float)cmax_bin*SAMPLE_RATE/(PE_FFT_SIZE*DEC);
490
491 return best_f0;
492}
493
494#ifdef POST_PROCESS_MBE
495
496/*---------------------------------------------------------------------------*\
497
498 post_process_mbe()
499
500 Use the MBE pitch estimation algorithm to evaluate pitch candidates. This
501 works OK but the accuracy at low F0 is affected by NW, the analysis window
502 size used for the DFT of the input speech Sw[]. Also favours high F0 in
503 the presence of background noise which causes periodic artifacts in the
504 synthesised speech.
505
506\*---------------------------------------------------------------------------*/
507
508float post_process_mbe(COMP Fw[], int pmin, int pmax, float gmax, COMP Sw[], COMP W[], float *prev_Wo)
509{
510 float candidate_f0;
511 float f0,best_f0; /* fundamental frequency */
512 float e,e_min; /* MBE cost function */
513 int i;
514 #ifdef DUMP
515 float e_hz[F0_MAX];
516 #endif
517 #if !defined(NDEBUG) || defined(DUMP)
518 int bin;
519 #endif
520 float f0_min, f0_max;
521 float f0_start, f0_end;
522
523 f0_min = (float)SAMPLE_RATE/pmax;
524 f0_max = (float)SAMPLE_RATE/pmin;
525
526 /* Now look for local maxima. Each local maxima is a candidate
527 that we test using the MBE pitch estimation algotithm */
528
529 #ifdef DUMP
530 for(i=0; i<F0_MAX; i++)
531 e_hz[i] = -1;
532 #endif
533 e_min = 1E32;
534 best_f0 = 50;
535 for(i=PE_FFT_SIZE*DEC/pmax; i<=PE_FFT_SIZE*DEC/pmin; i++) {
536 if ((Fw[i].real > Fw[i-1].real) && (Fw[i].real > Fw[i+1].real)) {
537
538 /* local maxima found, lets test if it's big enough */
539
540 if (Fw[i].real > T*gmax) {
541
542 /* OK, sample MBE cost function over +/- 10Hz range in 2.5Hz steps */
543
544 candidate_f0 = (float)i*SAMPLE_RATE/(PE_FFT_SIZE*DEC);
545 f0_start = candidate_f0-20;
546 f0_end = candidate_f0+20;
547 if (f0_start < f0_min) f0_start = f0_min;
548 if (f0_end > f0_max) f0_end = f0_max;
549
550 for(f0=f0_start; f0<=f0_end; f0+= 2.5) {
551 e = test_candidate_mbe(Sw, W, f0);
552 #if !defined(NDEBUG) || defined(DUMP)
553 bin = floorf(f0); assert((bin > 0) && (bin < F0_MAX));
554 #endif
555 #ifdef DUMP
556 e_hz[bin] = e;
557 #endif
558 if (e < e_min) {
559 e_min = e;
560 best_f0 = f0;
561 }
562 }
563
564 }
565 }
566 }
567
568 /* finally sample MBE cost function around previous pitch estimate
569 (form of pitch tracking) */
570
571 candidate_f0 = *prev_Wo * SAMPLE_RATE/TWO_PI;
572 f0_start = candidate_f0-20;
573 f0_end = candidate_f0+20;
574 if (f0_start < f0_min) f0_start = f0_min;
575 if (f0_end > f0_max) f0_end = f0_max;
576
577 for(f0=f0_start; f0<=f0_end; f0+= 2.5) {
578 e = test_candidate_mbe(Sw, W, f0);
579 #if !defined(NDEBUG) || defined(DUMP)
580 bin = floorf(f0); assert((bin > 0) && (bin < F0_MAX));
581 #endif
582 #ifdef DUMP
583 e_hz[bin] = e;
584 #endif
585 if (e < e_min) {
586 e_min = e;
587 best_f0 = f0;
588 }
589 }
590
591 #ifdef DUMP
592 dump_e(e_hz);
593 #endif
594
595 return best_f0;
596}
597
598/*---------------------------------------------------------------------------*\
599
600 test_candidate_mbe()
601
602 Returns the error of the MBE cost function for the input f0.
603
604 Note: I think a lot of the operations below can be simplified as
605 W[].imag = 0 and has been normalised such that den always equals 1.
606
607\*---------------------------------------------------------------------------*/
608
609float test_candidate_mbe(
610 COMP Sw[],
611 COMP W[],
612 float f0
613)
614{
615 COMP Sw_[FFT_ENC]; /* DFT of all voiced synthesised signal */
616 int l,al,bl,m; /* loop variables */
617 COMP Am; /* amplitude sample for this band */
618 int offset; /* centers Hw[] about current harmonic */
619 float den; /* denominator of Am expression */
620 float error; /* accumulated error between originl and synthesised */
621 float Wo; /* current "test" fundamental freq. */
622 int L;
623
624 L = floorf((SAMPLE_RATE/2.0)/f0);
625 Wo = f0*(2*PI/SAMPLE_RATE);
626
627 error = 0.0;
628
629 /* Just test across the harmonics in the first 1000 Hz (L/4) */
630
631 for(l=1; l<L/4; l++) {
632 Am.real = 0.0;
633 Am.imag = 0.0;
634 den = 0.0;
635 al = ceilf((l - 0.5)*Wo*FFT_ENC/TWO_PI);
636 bl = ceilf((l + 0.5)*Wo*FFT_ENC/TWO_PI);
637
638 /* Estimate amplitude of harmonic assuming harmonic is totally voiced */
639
640 for(m=al; m<bl; m++) {
641 offset = FFT_ENC/2 + m - l*Wo*FFT_ENC/TWO_PI + 0.5;
642 Am.real += Sw[m].real*W[offset].real + Sw[m].imag*W[offset].imag;
643 Am.imag += Sw[m].imag*W[offset].real - Sw[m].real*W[offset].imag;
644 den += W[offset].real*W[offset].real + W[offset].imag*W[offset].imag;
645 }
646
647 Am.real = Am.real/den;
648 Am.imag = Am.imag/den;
649
650 /* Determine error between estimated harmonic and original */
651
652 for(m=al; m<bl; m++) {
653 offset = FFT_ENC/2 + m - l*Wo*FFT_ENC/TWO_PI + 0.5;
654 Sw_[m].real = Am.real*W[offset].real - Am.imag*W[offset].imag;
655 Sw_[m].imag = Am.real*W[offset].imag + Am.imag*W[offset].real;
656 error += (Sw[m].real - Sw_[m].real)*(Sw[m].real - Sw_[m].real);
657 error += (Sw[m].imag - Sw_[m].imag)*(Sw[m].imag - Sw_[m].imag);
658 }
659 }
660
661 return error;
662}
663
664#endif
665
666/*---------------------------------------------------------------------------*\
667
668 FUNCTION....: fdmdv_16_to_8()
669 AUTHOR......: David Rowe
670 DATE CREATED: 9 May 2012
671
672 Changes the sample rate of a signal from 16 to 8 kHz.
673
674 n is the number of samples at the 8 kHz rate, there are FDMDV_OS*n
675 samples at the 48 kHz rate. As above however a memory of
676 FDMDV_OS_TAPS samples is reqd for in16k[] (see t16_8.c unit test as example).
677
678 Low pass filter the 16 kHz signal at 4 kHz using the same filter as
679 the upsampler, then just output every FDMDV_OS-th filtered sample.
680
681 Note: this function copied from fdmdv.c, included in nlp.c as a convenience
682 to avoid linking with another source file.
683
684\*---------------------------------------------------------------------------*/
685
686static void fdmdv_16_to_8(float out8k[], float in16k[], int n)
687{
688 float acc;
689 int i,j,k;
690
691 for(i=0, k=0; k<n; i+=FDMDV_OS, k++) {
692 acc = 0.0;
693 for(j=0; j<FDMDV_OS_TAPS_16K; j++)
694 acc += fdmdv_os_filter[j]*in16k[i-j];
695 out8k[k] = acc;
696 }
697
698 /* update filter memory */
699
700 for(i=-FDMDV_OS_TAPS_16K; i<0; i++)
701 in16k[i] = in16k[i + n*FDMDV_OS];
702}
diff --git a/nlp.h b/nlp.h
new file mode 100644
index 0000000..28a59c3
--- /dev/null
+++ b/nlp.h
@@ -0,0 +1,38 @@
1/*---------------------------------------------------------------------------*\
2
3 FILE........: nlp.c
4 AUTHOR......: David Rowe
5 DATE CREATED: 23/3/93
6
7 Non Linear Pitch (NLP) estimation functions.
8
9\*---------------------------------------------------------------------------*/
10
11/*
12 Copyright (C) 2009 David Rowe
13
14 All rights reserved.
15
16 This program is free software; you can redistribute it and/or modify
17 it under the terms of the GNU Lesser General Public License version 2.1, as
18 published by the Free Software Foundation. This program is
19 distributed in the hope that it will be useful, but WITHOUT ANY
20 WARRANTY; without even the implied warranty of MERCHANTABILITY or
21 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
22 License for more details.
23
24 You should have received a copy of the GNU Lesser General Public License
25 along with this program; if not, see <http://www.gnu.org/licenses/>.
26*/
27
28#ifndef __NLP__
29#define __NLP__
30
31#include "comp.h"
32
33void *nlp_create(C2CONST *c2const);
34void nlp_destroy(void *nlp_state);
35float nlp(void *nlp_state, float Sn[], int n,
36 float *pitch_samples, COMP Sw[], COMP W[], float *prev_f0);
37
38#endif
diff --git a/os.h b/os.h
new file mode 100644
index 0000000..14b4713
--- /dev/null
+++ b/os.h
@@ -0,0 +1,53 @@
1/* Generate using fir1(47,1/2) in Octave */
2
3static const float fdmdv_os_filter[]= {
4 -0.0008215855034550382,
5 -0.0007833023901802921,
6 0.001075563790768233,
7 0.001199092367787555,
8 -0.001765309502928316,
9 -0.002055372115328064,
10 0.002986877604154257,
11 0.003462567920638414,
12 -0.004856570111126334,
13 -0.005563143845031497,
14 0.007533613299748122,
15 0.008563932468880897,
16 -0.01126857129039911,
17 -0.01280782411693687,
18 0.01651443896361847,
19 0.01894875110322284,
20 -0.02421604439474981,
21 -0.02845107338464062,
22 0.03672973563400258,
23 0.04542046150312214,
24 -0.06189165826716491,
25 -0.08721876380763803,
26 0.1496157094199961,
27 0.4497962274137046,
28 0.4497962274137046,
29 0.1496157094199961,
30 -0.08721876380763803,
31 -0.0618916582671649,
32 0.04542046150312216,
33 0.03672973563400257,
34 -0.02845107338464062,
35 -0.02421604439474984,
36 0.01894875110322284,
37 0.01651443896361848,
38 -0.01280782411693687,
39 -0.0112685712903991,
40 0.008563932468880899,
41 0.007533613299748123,
42 -0.005563143845031501,
43 -0.004856570111126346,
44 0.003462567920638419,
45 0.002986877604154259,
46 -0.002055372115328063,
47 -0.001765309502928318,
48 0.001199092367787557,
49 0.001075563790768233,
50 -0.0007833023901802925,
51 -0.0008215855034550383
52};
53
diff --git a/pack.c b/pack.c
new file mode 100644
index 0000000..1c07230
--- /dev/null
+++ b/pack.c
@@ -0,0 +1,140 @@
1/*
2 Copyright (C) 2010 Perens LLC <bruce@perens.com>
3
4 All rights reserved.
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU Lesser General Public License version 2.1, as
8 published by the Free Software Foundation. This program is
9 distributed in the hope that it will be useful, but WITHOUT ANY
10 WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
12 License for more details.
13
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program; if not, see <http://www.gnu.org/licenses/>.
16*/
17
18#include "defines.h"
19#include "quantise.h"
20#include <stdio.h>
21
22/* Compile-time constants */
23/* Size of unsigned char in bits. Assumes 8 bits-per-char. */
24static const unsigned int WordSize = 8;
25
26/* Mask to pick the bit component out of bitIndex. */
27static const unsigned int IndexMask = 0x7;
28
29/* Used to pick the word component out of bitIndex. */
30static const unsigned int ShiftRight = 3;
31
32/** Pack a bit field into a bit string, encoding the field in Gray code.
33 *
34 * The output is an array of unsigned char data. The fields are efficiently
35 * packed into the bit string. The Gray coding is a naive attempt to reduce
36 * the effect of single-bit errors, we expect to do a better job as the
37 * codec develops.
38 *
39 * This code would be simpler if it just set one bit at a time in the string,
40 * but would hit the same cache line more often. I'm not sure the complexity
41 * gains us anything here.
42 *
43 * Although field is currently of int type rather than unsigned for
44 * compatibility with the rest of the code, indices are always expected to
45 * be >= 0.
46 */
47void
48pack(
49 unsigned char * bitArray, /* The output bit string. */
50 unsigned int * bitIndex, /* Index into the string in BITS, not bytes.*/
51 int field, /* The bit field to be packed. */
52 unsigned int fieldWidth/* Width of the field in BITS, not bytes. */
53 )
54{
55 pack_natural_or_gray(bitArray, bitIndex, field, fieldWidth, 1);
56}
57
58void
59pack_natural_or_gray(
60 unsigned char * bitArray, /* The output bit string. */
61 unsigned int * bitIndex, /* Index into the string in BITS, not bytes.*/
62 int field, /* The bit field to be packed. */
63 unsigned int fieldWidth,/* Width of the field in BITS, not bytes. */
64 unsigned int gray /* non-zero for gray coding */
65 )
66{
67 if (gray) {
68 /* Convert the field to Gray code */
69 field = (field >> 1) ^ field;
70 }
71
72 do {
73 unsigned int bI = *bitIndex;
74 unsigned int bitsLeft = WordSize - (bI & IndexMask);
75 unsigned int sliceWidth =
76 bitsLeft < fieldWidth ? bitsLeft : fieldWidth;
77 unsigned int wordIndex = bI >> ShiftRight;
78
79 bitArray[wordIndex] |=
80 ((unsigned char)((field >> (fieldWidth - sliceWidth))
81 << (bitsLeft - sliceWidth)));
82
83 *bitIndex = bI + sliceWidth;
84 fieldWidth -= sliceWidth;
85 } while ( fieldWidth != 0 );
86}
87
88/** Unpack a field from a bit string, converting from Gray code to binary.
89 *
90 */
91int
92unpack(
93 const unsigned char * bitArray, /* The input bit string. */
94 unsigned int * bitIndex, /* Index into the string in BITS, not bytes.*/
95 unsigned int fieldWidth/* Width of the field in BITS, not bytes. */
96 )
97{
98 return unpack_natural_or_gray(bitArray, bitIndex, fieldWidth, 1);
99}
100
101/** Unpack a field from a bit string, to binary, optionally using
102 * natural or Gray code.
103 *
104 */
105int
106unpack_natural_or_gray(
107 const unsigned char * bitArray, /* The input bit string. */
108 unsigned int * bitIndex, /* Index into the string in BITS, not bytes.*/
109 unsigned int fieldWidth,/* Width of the field in BITS, not bytes. */
110 unsigned int gray /* non-zero for Gray coding */
111 )
112{
113 unsigned int field = 0;
114 unsigned int t;
115
116 do {
117 unsigned int bI = *bitIndex;
118 unsigned int bitsLeft = WordSize - (bI & IndexMask);
119 unsigned int sliceWidth =
120 bitsLeft < fieldWidth ? bitsLeft : fieldWidth;
121
122 field |= (((bitArray[bI >> ShiftRight] >> (bitsLeft - sliceWidth)) & ((1 << sliceWidth) - 1)) << (fieldWidth - sliceWidth));
123
124 *bitIndex = bI + sliceWidth;
125 fieldWidth -= sliceWidth;
126 } while ( fieldWidth != 0 );
127
128 if (gray) {
129 /* Convert from Gray code to binary. Works for maximum 8-bit fields. */
130 t = field ^ (field >> 8);
131 t ^= (t >> 4);
132 t ^= (t >> 2);
133 t ^= (t >> 1);
134 }
135 else {
136 t = field;
137 }
138
139 return t;
140}
diff --git a/phase.c b/phase.c
new file mode 100644
index 0000000..e486613
--- /dev/null
+++ b/phase.c
@@ -0,0 +1,289 @@
1/*---------------------------------------------------------------------------*\
2
3 FILE........: phase.c
4 AUTHOR......: David Rowe
5 DATE CREATED: 1/2/09
6
7 Functions for modelling and synthesising phase.
8
9\*---------------------------------------------------------------------------*/
10
11/*
12 Copyright (C) 2009 David Rowe
13
14 All rights reserved.
15
16 This program is free software; you can redistribute it and/or modify
17 it under the terms of the GNU Lesser General Public License version 2.1, as
18 published by the Free Software Foundation. This program is
19 distributed in the hope that it will be useful, but WITHOUT ANY
20 WARRANTY; without even the implied warranty of MERCHANTABILITY or
21 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
22 License for more details.
23
24 You should have received a copy of the GNU Lesser General Public License
25 along with this program; if not,see <http://www.gnu.org/licenses/>.
26*/
27
28#include "defines.h"
29#include "phase.h"
30#include "kiss_fft.h"
31#include "comp.h"
32#include "comp_prim.h"
33#include "sine.h"
34
35#include <assert.h>
36#include <ctype.h>
37#include <math.h>
38#include <string.h>
39#include <stdlib.h>
40
41/*---------------------------------------------------------------------------*\
42
43 sample_phase()
44
45 Samples phase at centre of each harmonic from and array of FFT_ENC
46 DFT samples.
47
48\*---------------------------------------------------------------------------*/
49
50void sample_phase(MODEL *model,
51 COMP H[],
52 COMP A[] /* LPC analysis filter in freq domain */
53 )
54{
55 int m, b;
56 float r;
57
58 r = TWO_PI/(FFT_ENC);
59
60 /* Sample phase at harmonics */
61
62 for(m=1; m<=model->L; m++) {
63 b = (int)(m*model->Wo/r + 0.5);
64 H[m] = cconj(A[b]); /* synth filter 1/A is opposite phase to analysis filter */
65 }
66}
67
68
69/*---------------------------------------------------------------------------*\
70
71 phase_synth_zero_order()
72
73 Synthesises phases based on SNR and a rule based approach. No phase
74 parameters are required apart from the SNR (which can be reduced to a
75 1 bit V/UV decision per frame).
76
77 The phase of each harmonic is modelled as the phase of a synthesis
78 filter excited by an impulse. In many Codec 2 modes the synthesis
79 filter is a LPC filter. Unlike the first order model the position
80 of the impulse is not transmitted, so we create an excitation pulse
81 train using a rule based approach.
82
83 Consider a pulse train with a pulse starting time n=0, with pulses
84 repeated at a rate of Wo, the fundamental frequency. A pulse train
85 in the time domain is equivalent to harmonics in the frequency
86 domain. We can make an excitation pulse train using a sum of
87 sinsusoids:
88
89 for(m=1; m<=L; m++)
90 ex[n] = cos(m*Wo*n)
91
92 Note: the Octave script ../octave/phase.m is an example of this if
93 you would like to try making a pulse train.
94
95 The phase of each excitation harmonic is:
96
97 arg(E[m]) = mWo
98
99 where E[m] are the complex excitation (freq domain) samples,
100 arg(x), just returns the phase of a complex sample x.
101
102 As we don't transmit the pulse position for this model, we need to
103 synthesise it. Now the excitation pulses occur at a rate of Wo.
104 This means the phase of the first harmonic advances by N_SAMP samples
105 over a synthesis frame of N_SAMP samples. For example if Wo is pi/20
106 (200 Hz), then over a 10ms frame (N_SAMP=80 samples), the phase of the
107 first harmonic would advance (pi/20)*80 = 4*pi or two complete
108 cycles.
109
110 We generate the excitation phase of the fundamental (first
111 harmonic):
112
113 arg[E[1]] = Wo*N_SAMP;
114
115 We then relate the phase of the m-th excitation harmonic to the
116 phase of the fundamental as:
117
118 arg(E[m]) = m*arg(E[1])
119
120 This E[m] then gets passed through the LPC synthesis filter to
121 determine the final harmonic phase.
122
123 Comparing to speech synthesised using original phases:
124
125 - Through headphones speech synthesised with this model is not as
126 good. Through a loudspeaker it is very close to original phases.
127
128 - If there are voicing errors, the speech can sound clicky or
129 staticy. If V speech is mistakenly declared UV, this model tends to
130 synthesise impulses or clicks, as there is usually very little shift or
131 dispersion through the LPC synthesis filter.
132
133 - When combined with LPC amplitude modelling there is an additional
134 drop in quality. I am not sure why, theory is interformant energy
135 is raised making any phase errors more obvious.
136
137 NOTES:
138
139 1/ This synthesis model is effectively the same as a simple LPC-10
140 vocoders, and yet sounds much better. Why? Conventional wisdom
141 (AMBE, MELP) says mixed voicing is required for high quality
142 speech.
143
144 2/ I am pretty sure the Lincoln Lab sinusoidal coding guys (like xMBE
145 also from MIT) first described this zero phase model, I need to look
146 up the paper.
147
148 3/ Note that this approach could cause some discontinuities in
149 the phase at the edge of synthesis frames, as no attempt is made
150 to make sure that the phase tracks are continuous (the excitation
151 phases are continuous, but not the final phases after filtering
152 by the LPC spectra). Technically this is a bad thing. However
153 this may actually be a good thing, disturbing the phase tracks a
154 bit. More research needed, e.g. test a synthesis model that adds
155 a small delta-W to make phase tracks line up for voiced
156 harmonics.
157
158\*---------------------------------------------------------------------------*/
159
160void phase_synth_zero_order(
161 int n_samp,
162 MODEL *model,
163 float *ex_phase, /* excitation phase of fundamental */
164 COMP H[] /* L synthesis filter freq domain samples */
165
166)
167{
168 int m;
169 float new_phi;
170 COMP Ex[MAX_AMP+1]; /* excitation samples */
171 COMP A_[MAX_AMP+1]; /* synthesised harmonic samples */
172
173 /*
174 Update excitation fundamental phase track, this sets the position
175 of each pitch pulse during voiced speech. After much experiment
176 I found that using just this frame's Wo improved quality for UV
177 sounds compared to interpolating two frames Wo like this:
178
179 ex_phase[0] += (*prev_Wo+model->Wo)*N_SAMP/2;
180 */
181
182 ex_phase[0] += (model->Wo)*n_samp;
183 ex_phase[0] -= TWO_PI*floorf(ex_phase[0]/TWO_PI + 0.5);
184
185 for(m=1; m<=model->L; m++) {
186
187 /* generate excitation */
188
189 if (model->voiced) {
190
191 Ex[m].real = cosf(ex_phase[0]*m);
192 Ex[m].imag = sinf(ex_phase[0]*m);
193 }
194 else {
195
196 /* When a few samples were tested I found that LPC filter
197 phase is not needed in the unvoiced case, but no harm in
198 keeping it.
199 */
200 float phi = TWO_PI*(float)codec2_rand()/CODEC2_RAND_MAX;
201 Ex[m].real = cosf(phi);
202 Ex[m].imag = sinf(phi);
203 }
204
205 /* filter using LPC filter */
206
207 A_[m].real = H[m].real*Ex[m].real - H[m].imag*Ex[m].imag;
208 A_[m].imag = H[m].imag*Ex[m].real + H[m].real*Ex[m].imag;
209
210 /* modify sinusoidal phase */
211
212 new_phi = atan2f(A_[m].imag, A_[m].real+1E-12);
213 model->phi[m] = new_phi;
214 }
215
216}
217
218
219/*---------------------------------------------------------------------------*\
220
221 FUNCTION....: mag_to_phase
222 AUTHOR......: David Rowe
223 DATE CREATED: Jan 2017
224
225 Algorithm for http://www.dsprelated.com/showcode/20.php ported to C. See
226 also Octave function mag_to_phase.m
227
228 Given a magnitude spectrum in dB, returns a minimum-phase phase
229 spectra.
230
231\*---------------------------------------------------------------------------*/
232
233void mag_to_phase(float phase[], /* Nfft/2+1 output phase samples in radians */
234 float Gdbfk[], /* Nfft/2+1 postive freq amplitudes samples in dB */
235 int Nfft,
236 codec2_fft_cfg fft_fwd_cfg,
237 codec2_fft_cfg fft_inv_cfg
238 )
239{
240 COMP Sdb[Nfft], c[Nfft], cf[Nfft], Cf[Nfft];
241 int Ns = Nfft/2+1;
242 int i;
243
244 /* install negative frequency components, 1/Nfft takes into
245 account kiss fft lack of scaling on ifft */
246
247 Sdb[0].real = Gdbfk[0];
248 Sdb[0].imag = 0.0;
249 for(i=1; i<Ns; i++) {
250 Sdb[i].real = Sdb[Nfft-i].real = Gdbfk[i];
251 Sdb[i].imag = Sdb[Nfft-i].imag = 0.0;
252 }
253
254 /* compute real cepstrum from log magnitude spectrum */
255
256 codec2_fft(fft_inv_cfg, Sdb, c);
257 for(i=0; i<Nfft; i++) {
258 c[i].real /= (float)Nfft;
259 c[i].imag /= (float)Nfft;
260 }
261
262 /* Fold cepstrum to reflect non-min-phase zeros inside unit circle */
263
264 cf[0] = c[0];
265 for(i=1; i<Ns-1; i++) {
266 cf[i] = cadd(c[i],c[Nfft-i]);
267 }
268 cf[Ns-1] = c[Ns-1];
269 for(i=Ns; i<Nfft; i++) {
270 cf[i].real = 0.0;
271 cf[i].imag = 0.0;
272 }
273
274 /* Cf = dB_magnitude + j * minimum_phase */
275
276 codec2_fft(fft_fwd_cfg, cf, Cf);
277
278 /* The maths says we are meant to be using log(x), not 20*log10(x),
279 so we need to scale the phase to account for this:
280 log(x) = 20*log10(x)/scale */
281
282 float scale = (20.0/logf(10.0));
283
284 for(i=0; i<Ns; i++) {
285 phase[i] = Cf[i].imag/scale;
286 }
287
288
289}
diff --git a/phase.h b/phase.h
new file mode 100644
index 0000000..92909f0
--- /dev/null
+++ b/phase.h
@@ -0,0 +1,39 @@
1/*---------------------------------------------------------------------------*\
2
3 FILE........: phase.h
4 AUTHOR......: David Rowe
5 DATE CREATED: 1/2/09
6
7 Functions for modelling phase.
8
9\*---------------------------------------------------------------------------*/
10
11/*
12 Copyright (C) 2009 David Rowe
13
14 All rights reserved.
15
16 This program is free software; you can redistribute it and/or modify
17 it under the terms of the GNU Lesser General Public License version 2.1, as
18 published by the Free Software Foundation. This program is
19 distributed in the hope that it will be useful, but WITHOUT ANY
20 WARRANTY; without even the implied warranty of MERCHANTABILITY or
21 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
22 License for more details.
23
24 You should have received a copy of the GNU Lesser General Public License
25 along with this program; if not, see <http://www.gnu.org/licenses/>.
26*/
27
28#ifndef __PHASE__
29#define __PHASE__
30
31#include "codec2_fft.h"
32#include "comp.h"
33
34void sample_phase(MODEL *model, COMP filter_phase[], COMP A[]);
35void phase_synth_zero_order(int n_samp, MODEL *model, float *ex_phase, COMP filter_phase[]);
36
37void mag_to_phase(float phase[], float Gdbfk[], int Nfft, codec2_fft_cfg fwd_cfg, codec2_fft_cfg inv_cfg);
38
39#endif
diff --git a/postfilter.c b/postfilter.c
new file mode 100644
index 0000000..6542c7c
--- /dev/null
+++ b/postfilter.c
@@ -0,0 +1,142 @@
1/*---------------------------------------------------------------------------*\
2
3 FILE........: postfilter.c
4 AUTHOR......: David Rowe
5 DATE CREATED: 13/09/09
6
7 Postfilter to improve sound quality for speech with high levels of
8 background noise. Unlike mixed-excitation models requires no bits
9 to be transmitted to handle background noise.
10
11\*---------------------------------------------------------------------------*/
12
13/*
14 Copyright (C) 2009 David Rowe
15
16 All rights reserved.
17
18 This program is free software; you can redistribute it and/or modify
19 it under the terms of the GNU Lesser General Public License version 2.1, as
20 published by the Free Software Foundation. This program is
21 distributed in the hope that it will be useful, but WITHOUT ANY
22 WARRANTY; without even the implied warranty of MERCHANTABILITY or
23 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
24 License for more details.
25
26 You should have received a copy of the GNU Lesser General Public License
27 along with this program; if not, see <http://www.gnu.org/licenses/>.
28*/
29
30#include <assert.h>
31#include <stdlib.h>
32#include <stdio.h>
33#include <math.h>
34
35#include "defines.h"
36#include "comp.h"
37#include "dump.h"
38#include "sine.h"
39#include "postfilter.h"
40
41/*---------------------------------------------------------------------------*\
42
43 DEFINES
44
45\*---------------------------------------------------------------------------*/
46
47#define BG_THRESH 40.0 /* only consider low levels signals for bg_est */
48#define BG_BETA 0.1 /* averaging filter constant */
49#define BG_MARGIN 6.0 /* harmonics this far above BG noise are
50 randomised. Helped make bg noise less
51 spikey (impulsive) for mmt1, but speech was
52 perhaps a little rougher.
53 */
54
55/*---------------------------------------------------------------------------*\
56
57 postfilter()
58
59 The post filter is designed to help with speech corrupted by
60 background noise. The zero phase model tends to make speech with
61 background noise sound "clicky". With high levels of background
62 noise the low level inter-formant parts of the spectrum will contain
63 noise rather than speech harmonics, so modelling them as voiced
64 (i.e. a continuous, non-random phase track) is inaccurate.
65
66 Some codecs (like MBE) have a mixed voicing model that breaks the
67 spectrum into voiced and unvoiced regions. Several bits/frame
68 (5-12) are required to transmit the frequency selective voicing
69 information. Mixed excitation also requires accurate voicing
70 estimation (parameter estimators always break occasionally under
71 exceptional conditions).
72
73 In our case we use a post filter approach which requires no
74 additional bits to be transmitted. The decoder measures the average
75 level of the background noise during unvoiced frames. If a harmonic
76 is less than this level it is made unvoiced by randomising it's
77 phases.
78
79 This idea is rather experimental. Some potential problems that may
80 happen:
81
82 1/ If someone says "aaaaaaaahhhhhhhhh" will background estimator track
83 up to speech level? This would be a bad thing.
84
85 2/ If background noise suddenly dissapears from the source speech does
86 estimate drop quickly? What is noise suddenly re-appears?
87
88 3/ Background noise with a non-flat sepctrum. Current algorithm just
89 comsiders scpetrum as a whole, but this could be broken up into
90 bands, each with their own estimator.
91
92 4/ Males and females with the same level of background noise. Check
93 performance the same. Changing Wo affects width of each band, may
94 affect bg energy estimates.
95
96 5/ Not sure what happens during long periods of voiced speech
97 e.g. "sshhhhhhh"
98
99\*---------------------------------------------------------------------------*/
100
101void postfilter(
102 MODEL *model,
103 float *bg_est
104)
105{
106 int m, uv;
107 float e, thresh;
108
109 /* determine average energy across spectrum */
110
111 e = 1E-12;
112 for(m=1; m<=model->L; m++)
113 e += model->A[m]*model->A[m];
114
115 assert(e > 0.0);
116 e = 10.0*log10f(e/model->L);
117
118 /* If beneath threhold, update bg estimate. The idea
119 of the threshold is to prevent updating during high level
120 speech. */
121
122 if ((e < BG_THRESH) && !model->voiced)
123 *bg_est = *bg_est*(1.0 - BG_BETA) + e*BG_BETA;
124
125 /* now mess with phases during voiced frames to make any harmonics
126 less then our background estimate unvoiced.
127 */
128
129 uv = 0;
130 thresh = POW10F((*bg_est + BG_MARGIN)/20.0);
131 if (model->voiced)
132 for(m=1; m<=model->L; m++)
133 if (model->A[m] < thresh) {
134 model->phi[m] = (TWO_PI/CODEC2_RAND_MAX)*(float)codec2_rand();
135 uv++;
136 }
137
138#ifdef DUMP
139 dump_bg(e, *bg_est, 100.0*uv/model->L);
140#endif
141
142}
diff --git a/postfilter.h b/postfilter.h
new file mode 100644
index 0000000..156714e
--- /dev/null
+++ b/postfilter.h
@@ -0,0 +1,33 @@
1/*---------------------------------------------------------------------------*\
2
3 FILE........: postfilter.h
4 AUTHOR......: David Rowe
5 DATE CREATED: 13/09/09
6
7 Postfilter header file.
8
9\*---------------------------------------------------------------------------*/
10
11/*
12 Copyright (C) 2009 David Rowe
13
14 All rights reserved.
15
16 This program is free software; you can redistribute it and/or modify
17 it under the terms of the GNU Lesser General Public License version 2.1, as
18 published by the Free Software Foundation. This program is
19 distributed in the hope that it will be useful, but WITHOUT ANY
20 WARRANTY; without even the implied warranty of MERCHANTABILITY or
21 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
22 License for more details.
23
24 You should have received a copy of the GNU Lesser General Public License
25 along with this program; if not, see <http://www.gnu.org/licenses/>.
26*/
27
28#ifndef __POSTFILTER__
29#define __POSTFILTER__
30
31void postfilter(MODEL *model, float *bg_est);
32
33#endif
diff --git a/quantise.c b/quantise.c
new file mode 100644
index 0000000..37bf8be
--- /dev/null
+++ b/quantise.c
@@ -0,0 +1,2051 @@
1/*---------------------------------------------------------------------------*\
2
3 FILE........: quantise.c
4 AUTHOR......: David Rowe
5 DATE CREATED: 31/5/92
6
7 Quantisation functions for the sinusoidal coder.
8
9\*---------------------------------------------------------------------------*/
10
11/*
12 All rights reserved.
13
14 This program is free software; you can redistribute it and/or modify
15 it under the terms of the GNU Lesser General Public License version 2.1, as
16 published by the Free Software Foundation. This program is
17 distributed in the hope that it will be useful, but WITHOUT ANY
18 WARRANTY; without even the implied warranty of MERCHANTABILITY or
19 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
20 License for more details.
21
22 You should have received a copy of the GNU Lesser General Public License
23 along with this program; if not, see <http://www.gnu.org/licenses/>.
24
25*/
26
27#include <assert.h>
28#include <ctype.h>
29#include <stdio.h>
30#include <stdlib.h>
31#include <string.h>
32#include <math.h>
33
34#include "defines.h"
35#include "dump.h"
36#include "quantise.h"
37#include "lpc.h"
38#include "lsp.h"
39#include "codec2_fft.h"
40#include "phase.h"
41#include "mbest.h"
42
43#undef PROFILE
44#include "machdep.h"
45
46#define LSP_DELTA1 0.01 /* grid spacing for LSP root searches */
47
48/*---------------------------------------------------------------------------*\
49
50 FUNCTION HEADERS
51
52\*---------------------------------------------------------------------------*/
53
54float speech_to_uq_lsps(float lsp[], float ak[], float Sn[], float w[],
55 int m_pitch, int order);
56
57/*---------------------------------------------------------------------------*\
58
59 FUNCTIONS
60
61\*---------------------------------------------------------------------------*/
62
63int lsp_bits(int i) {
64 return lsp_cb[i].log2m;
65}
66
67int lspd_bits(int i) {
68 return lsp_cbd[i].log2m;
69}
70
71#ifndef CORTEX_M4
72int mel_bits(int i) {
73 return mel_cb[i].log2m;
74}
75
76int lspmelvq_cb_bits(int i) {
77 return lspmelvq_cb[i].log2m;
78}
79#endif
80
81#ifdef __EXPERIMENTAL__
82int lspdt_bits(int i) {
83 return lsp_cbdt[i].log2m;
84}
85#endif
86
87int lsp_pred_vq_bits(int i) {
88 return lsp_cbjvm[i].log2m;
89}
90
91/*---------------------------------------------------------------------------*\
92
93 quantise_init
94
95 Loads the entire LSP quantiser comprised of several vector quantisers
96 (codebooks).
97
98\*---------------------------------------------------------------------------*/
99
100void quantise_init()
101{
102}
103
104/*---------------------------------------------------------------------------*\
105
106 quantise
107
108 Quantises vec by choosing the nearest vector in codebook cb, and
109 returns the vector index. The squared error of the quantised vector
110 is added to se.
111
112\*---------------------------------------------------------------------------*/
113
114long quantise(const float * cb, float vec[], float w[], int k, int m, float *se)
115/* float cb[][K]; current VQ codebook */
116/* float vec[]; vector to quantise */
117/* float w[]; weighting vector */
118/* int k; dimension of vectors */
119/* int m; size of codebook */
120/* float *se; accumulated squared error */
121{
122 float e; /* current error */
123 long besti; /* best index so far */
124 float beste; /* best error so far */
125 long j;
126 int i;
127 float diff;
128
129 besti = 0;
130 beste = 1E32;
131 for(j=0; j<m; j++) {
132 e = 0.0;
133 for(i=0; i<k; i++) {
134 diff = cb[j*k+i]-vec[i];
135 e += (diff*w[i] * diff*w[i]);
136 }
137 if (e < beste) {
138 beste = e;
139 besti = j;
140 }
141 }
142
143 *se += beste;
144
145 return(besti);
146}
147
148
149
150/*---------------------------------------------------------------------------*\
151
152 encode_lspds_scalar()
153
154 Scalar/VQ LSP difference quantiser.
155
156\*---------------------------------------------------------------------------*/
157
158void encode_lspds_scalar(
159 int indexes[],
160 float lsp[],
161 int order
162)
163{
164 int i,k,m;
165 float lsp_hz[order];
166 float lsp__hz[order];
167 float dlsp[order];
168 float dlsp_[order];
169 float wt[order];
170 const float *cb;
171 float se;
172
173 for(i=0; i<order; i++) {
174 wt[i] = 1.0;
175 }
176
177 /* convert from radians to Hz so we can use human readable
178 frequencies */
179
180 for(i=0; i<order; i++)
181 lsp_hz[i] = (4000.0/PI)*lsp[i];
182
183 //printf("\n");
184
185 wt[0] = 1.0;
186 for(i=0; i<order; i++) {
187
188 /* find difference from previous qunatised lsp */
189
190 if (i)
191 dlsp[i] = lsp_hz[i] - lsp__hz[i-1];
192 else
193 dlsp[0] = lsp_hz[0];
194
195 k = lsp_cbd[i].k;
196 m = lsp_cbd[i].m;
197 cb = lsp_cbd[i].cb;
198 indexes[i] = quantise(cb, &dlsp[i], wt, k, m, &se);
199 dlsp_[i] = cb[indexes[i]*k];
200
201
202 if (i)
203 lsp__hz[i] = lsp__hz[i-1] + dlsp_[i];
204 else
205 lsp__hz[0] = dlsp_[0];
206
207 //printf("%d lsp %3.2f dlsp %3.2f dlsp_ %3.2f lsp_ %3.2f\n", i, lsp_hz[i], dlsp[i], dlsp_[i], lsp__hz[i]);
208 }
209
210}
211
212
213void decode_lspds_scalar(
214 float lsp_[],
215 int indexes[],
216 int order
217)
218{
219 int i,k;
220 float lsp__hz[order];
221 float dlsp_[order];
222 const float *cb;
223
224 for(i=0; i<order; i++) {
225
226 k = lsp_cbd[i].k;
227 cb = lsp_cbd[i].cb;
228 dlsp_[i] = cb[indexes[i]*k];
229
230 if (i)
231 lsp__hz[i] = lsp__hz[i-1] + dlsp_[i];
232 else
233 lsp__hz[0] = dlsp_[0];
234
235 lsp_[i] = (PI/4000.0)*lsp__hz[i];
236
237 //printf("%d dlsp_ %3.2f lsp_ %3.2f\n", i, dlsp_[i], lsp__hz[i]);
238 }
239
240}
241
242#ifdef __EXPERIMENTAL__
243/*---------------------------------------------------------------------------*\
244
245 lspvq_quantise
246
247 Vector LSP quantiser.
248
249\*---------------------------------------------------------------------------*/
250
251void lspvq_quantise(
252 float lsp[],
253 float lsp_[],
254 int order
255)
256{
257 int i,k,m,ncb, nlsp;
258 float wt[order], lsp_hz[order];
259 const float *cb;
260 float se;
261 int index;
262
263 for(i=0; i<order; i++) {
264 wt[i] = 1.0;
265 lsp_hz[i] = 4000.0*lsp[i]/PI;
266 }
267
268 /* scalar quantise LSPs 1,2,3,4 */
269
270 /* simple uniform scalar quantisers */
271
272 for(i=0; i<4; i++) {
273 k = lsp_cb[i].k;
274 m = lsp_cb[i].m;
275 cb = lsp_cb[i].cb;
276 index = quantise(cb, &lsp_hz[i], wt, k, m, &se);
277 lsp_[i] = cb[index*k]*PI/4000.0;
278 }
279
280 //#define WGHT
281#ifdef WGHT
282 for(i=4; i<9; i++) {
283 wt[i] = 1.0/(lsp[i]-lsp[i-1]) + 1.0/(lsp[i+1]-lsp[i]);
284 //printf("wt[%d] = %f\n", i, wt[i]);
285 }
286 wt[9] = 1.0/(lsp[i]-lsp[i-1]);
287#endif
288
289 /* VQ LSPs 5,6,7,8,9,10 */
290
291 ncb = 4;
292 nlsp = 4;
293 k = lsp_cbjnd[ncb].k;
294 m = lsp_cbjnd[ncb].m;
295 cb = lsp_cbjnd[ncb].cb;
296 index = quantise(cb, &lsp_hz[nlsp], &wt[nlsp], k, m, &se);
297 for(i=4; i<order; i++) {
298 lsp_[i] = cb[index*k+i-4]*(PI/4000.0);
299 //printf("%4.f (%4.f) ", lsp_hz[i], cb[index*k+i-4]);
300 }
301}
302
303/*---------------------------------------------------------------------------*\
304
305 lspjnd_quantise
306
307 Experimental JND LSP quantiser.
308
309\*---------------------------------------------------------------------------*/
310
311void lspjnd_quantise(float lsps[], float lsps_[], int order)
312{
313 int i,k,m;
314 float wt[order], lsps_hz[order];
315 const float *cb;
316 float se = 0.0;
317 int index;
318
319 for(i=0; i<order; i++) {
320 wt[i] = 1.0;
321 }
322
323 /* convert to Hz */
324
325 for(i=0; i<order; i++) {
326 lsps_hz[i] = lsps[i]*(4000.0/PI);
327 lsps_[i] = lsps[i];
328 }
329
330 /* simple uniform scalar quantisers */
331
332 for(i=0; i<4; i++) {
333 k = lsp_cbjnd[i].k;
334 m = lsp_cbjnd[i].m;
335 cb = lsp_cbjnd[i].cb;
336 index = quantise(cb, &lsps_hz[i], wt, k, m, &se);
337 lsps_[i] = cb[index*k]*(PI/4000.0);
338 }
339
340 /* VQ LSPs 5,6,7,8,9,10 */
341
342 k = lsp_cbjnd[4].k;
343 m = lsp_cbjnd[4].m;
344 cb = lsp_cbjnd[4].cb;
345 index = quantise(cb, &lsps_hz[4], &wt[4], k, m, &se);
346 //printf("k = %d m = %d c[0] %f cb[k] %f\n", k,m,cb[0],cb[k]);
347 //printf("index = %4d: ", index);
348 for(i=4; i<order; i++) {
349 lsps_[i] = cb[index*k+i-4]*(PI/4000.0);
350 //printf("%4.f (%4.f) ", lsps_hz[i], cb[index*k+i-4]);
351 }
352 //printf("\n");
353}
354
355void compute_weights(const float *x, float *w, int ndim);
356
357/*---------------------------------------------------------------------------*\
358
359 lspdt_quantise
360
361 LSP difference in time quantiser. Split VQ, encoding LSPs 1-4 with
362 one VQ, and LSPs 5-10 with a second. Update of previous lsp memory
363 is done outside of this function to handle dT between 10 or 20ms
364 frames.
365
366 mode action
367 ------------------
368
369 LSPDT_ALL VQ LSPs 1-4 and 5-10
370 LSPDT_LOW Just VQ LSPs 1-4, for LSPs 5-10 just copy previous
371 LSPDT_HIGH Just VQ LSPs 5-10, for LSPs 1-4 just copy previous
372
373\*---------------------------------------------------------------------------*/
374
375void lspdt_quantise(float lsps[], float lsps_[], float lsps__prev[], int mode)
376{
377 int i;
378 float wt[LPC_ORD];
379 float lsps_dt[LPC_ORD];
380#ifdef TRY_LSPDT_VQ
381 int k,m;
382 int index;
383 const float *cb;
384 float se = 0.0;
385#endif // TRY_LSPDT_VQ
386
387 //compute_weights(lsps, wt, LPC_ORD);
388 for(i=0; i<LPC_ORD; i++) {
389 wt[i] = 1.0;
390 }
391
392 //compute_weights(lsps, wt, LPC_ORD );
393
394 for(i=0; i<LPC_ORD; i++) {
395 lsps_dt[i] = lsps[i] - lsps__prev[i];
396 lsps_[i] = lsps__prev[i];
397 }
398
399 //#define TRY_LSPDT_VQ
400#ifdef TRY_LSPDT_VQ
401 /* this actually improves speech a bit, but 40ms updates works surprsingly well.... */
402 k = lsp_cbdt[0].k;
403 m = lsp_cbdt[0].m;
404 cb = lsp_cbdt[0].cb;
405 index = quantise(cb, lsps_dt, wt, k, m, &se);
406 for(i=0; i<LPC_ORD; i++) {
407 lsps_[i] += cb[index*k + i];
408 }
409#endif
410
411}
412#endif
413
414#define MIN(a,b) ((a)<(b)?(a):(b))
415#define MAX_ENTRIES 16384
416
417void compute_weights(const float *x, float *w, int ndim)
418{
419 int i;
420 w[0] = MIN(x[0], x[1]-x[0]);
421 for (i=1;i<ndim-1;i++)
422 w[i] = MIN(x[i]-x[i-1], x[i+1]-x[i]);
423 w[ndim-1] = MIN(x[ndim-1]-x[ndim-2], PI-x[ndim-1]);
424
425 for (i=0;i<ndim;i++)
426 w[i] = 1./(.01+w[i]);
427 //w[0]*=3;
428 //w[1]*=2;
429}
430
431#ifdef __EXPERIMENTAL__
432/* LSP weight calculation ported from m-file function kindly submitted
433 by Anssi, OH3GDD */
434
435void compute_weights_anssi_mode2(const float *x, float *w, int ndim)
436{
437 int i;
438 float d[LPC_ORD];
439
440 assert(ndim == LPC_ORD);
441
442 for(i=0; i<LPC_ORD; i++)
443 d[i] = 1.0;
444
445 d[0] = x[1];
446 for (i=1; i<LPC_ORD-1; i++)
447 d[i] = x[i+1] - x[i-1];
448 d[LPC_ORD-1] = PI - x[8];
449 for (i=0; i<LPC_ORD; i++) {
450 if (x[i]<((400.0/4000.0)*PI))
451 w[i]=5.0/(0.01+d[i]);
452 else if (x[i]<((700.0/4000.0)*PI))
453 w[i]=4.0/(0.01+d[i]);
454 else if (x[i]<((1200.0/4000.0)*PI))
455 w[i]=3.0/(0.01+d[i]);
456 else if (x[i]<((2000.0/4000.0)*PI))
457 w[i]=2.0/(0.01+d[i]);
458 else
459 w[i]=1.0/(0.01+d[i]);
460
461 w[i]=powf(w[i]+0.3, 0.66);
462 }
463}
464#endif
465
466int find_nearest(const float *codebook, int nb_entries, float *x, int ndim)
467{
468 int i, j;
469 float min_dist = 1e15;
470 int nearest = 0;
471
472 for (i=0;i<nb_entries;i++)
473 {
474 float dist=0;
475 for (j=0;j<ndim;j++)
476 dist += (x[j]-codebook[i*ndim+j])*(x[j]-codebook[i*ndim+j]);
477 if (dist<min_dist)
478 {
479 min_dist = dist;
480 nearest = i;
481 }
482 }
483 return nearest;
484}
485
486int find_nearest_weighted(const float *codebook, int nb_entries, float *x, const float *w, int ndim)
487{
488 int i, j;
489 float min_dist = 1e15;
490 int nearest = 0;
491
492 for (i=0;i<nb_entries;i++)
493 {
494 float dist=0;
495 for (j=0;j<ndim;j++)
496 dist += w[j]*(x[j]-codebook[i*ndim+j])*(x[j]-codebook[i*ndim+j]);
497 if (dist<min_dist)
498 {
499 min_dist = dist;
500 nearest = i;
501 }
502 }
503 return nearest;
504}
505
506void lspjvm_quantise(float *x, float *xq, int order)
507{
508 int i, n1, n2, n3;
509 float err[order], err2[order], err3[order];
510 float w[order], w2[order], w3[order];
511 const float *codebook1 = lsp_cbjvm[0].cb;
512 const float *codebook2 = lsp_cbjvm[1].cb;
513 const float *codebook3 = lsp_cbjvm[2].cb;
514
515 w[0] = MIN(x[0], x[1]-x[0]);
516 for (i=1;i<order-1;i++)
517 w[i] = MIN(x[i]-x[i-1], x[i+1]-x[i]);
518 w[order-1] = MIN(x[order-1]-x[order-2], PI-x[order-1]);
519
520 compute_weights(x, w, order);
521
522 n1 = find_nearest(codebook1, lsp_cbjvm[0].m, x, order);
523
524 for (i=0;i<order;i++)
525 {
526 xq[i] = codebook1[order*n1+i];
527 err[i] = x[i] - xq[i];
528 }
529 for (i=0;i<order/2;i++)
530 {
531 err2[i] = err[2*i];
532 err3[i] = err[2*i+1];
533 w2[i] = w[2*i];
534 w3[i] = w[2*i+1];
535 }
536 n2 = find_nearest_weighted(codebook2, lsp_cbjvm[1].m, err2, w2, order/2);
537 n3 = find_nearest_weighted(codebook3, lsp_cbjvm[2].m, err3, w3, order/2);
538
539 for (i=0;i<order/2;i++)
540 {
541 xq[2*i] += codebook2[order*n2/2+i];
542 xq[2*i+1] += codebook3[order*n3/2+i];
543 }
544}
545
546
547#ifndef CORTEX_M4
548/* simple (non mbest) 6th order LSP MEL VQ quantiser. Returns MSE of result */
549
550float lspmelvq_quantise(float *x, float *xq, int order)
551{
552 int i, n1, n2, n3;
553 float err[order];
554 const float *codebook1 = lspmelvq_cb[0].cb;
555 const float *codebook2 = lspmelvq_cb[1].cb;
556 const float *codebook3 = lspmelvq_cb[2].cb;
557 float tmp[order];
558 float mse;
559
560 assert(order == lspmelvq_cb[0].k);
561
562 n1 = find_nearest(codebook1, lspmelvq_cb[0].m, x, order);
563
564 for (i=0; i<order; i++) {
565 tmp[i] = codebook1[order*n1+i];
566 err[i] = x[i] - tmp[i];
567 }
568
569 n2 = find_nearest(codebook2, lspmelvq_cb[1].m, err, order);
570
571 for (i=0; i<order; i++) {
572 tmp[i] += codebook2[order*n2+i];
573 err[i] = x[i] - tmp[i];
574 }
575
576 n3 = find_nearest(codebook3, lspmelvq_cb[2].m, err, order);
577
578 mse = 0.0;
579 for (i=0; i<order; i++) {
580 tmp[i] += codebook3[order*n3+i];
581 err[i] = x[i] - tmp[i];
582 mse += err[i]*err[i];
583 }
584
585 for (i=0; i<order; i++) {
586 xq[i] = tmp[i];
587 }
588
589 return mse;
590}
591
592/* 3 stage VQ LSP quantiser useing mbest search. Design and guidance kindly submitted by Anssi, OH3GDD */
593
594float lspmelvq_mbest_encode(int *indexes, float *x, float *xq, int ndim, int mbest_entries)
595{
596 int i, j, n1, n2, n3;
597 const float *codebook1 = lspmelvq_cb[0].cb;
598 const float *codebook2 = lspmelvq_cb[1].cb;
599 const float *codebook3 = lspmelvq_cb[2].cb;
600 struct MBEST *mbest_stage1, *mbest_stage2, *mbest_stage3;
601 float target[ndim];
602 float w[ndim];
603 int index[MBEST_STAGES];
604 float mse, tmp;
605
606 for(i=0; i<ndim; i++)
607 w[i] = 1.0;
608
609 mbest_stage1 = mbest_create(mbest_entries);
610 mbest_stage2 = mbest_create(mbest_entries);
611 mbest_stage3 = mbest_create(mbest_entries);
612 for(i=0; i<MBEST_STAGES; i++)
613 index[i] = 0;
614
615 /* Stage 1 */
616
617 mbest_search(codebook1, x, w, ndim, lspmelvq_cb[0].m, mbest_stage1, index);
618 MBEST_PRINT("Stage 1:", mbest_stage1);
619
620 /* Stage 2 */
621
622 for (j=0; j<mbest_entries; j++) {
623 index[1] = n1 = mbest_stage1->list[j].index[0];
624 for(i=0; i<ndim; i++)
625 target[i] = x[i] - codebook1[ndim*n1+i];
626 mbest_search(codebook2, target, w, ndim, lspmelvq_cb[1].m, mbest_stage2, index);
627 }
628 MBEST_PRINT("Stage 2:", mbest_stage2);
629
630 /* Stage 3 */
631
632 for (j=0; j<mbest_entries; j++) {
633 index[2] = n1 = mbest_stage2->list[j].index[1];
634 index[1] = n2 = mbest_stage2->list[j].index[0];
635 for(i=0; i<ndim; i++)
636 target[i] = x[i] - codebook1[ndim*n1+i] - codebook2[ndim*n2+i];
637 mbest_search(codebook3, target, w, ndim, lspmelvq_cb[2].m, mbest_stage3, index);
638 }
639 MBEST_PRINT("Stage 3:", mbest_stage3);
640
641 n1 = mbest_stage3->list[0].index[2];
642 n2 = mbest_stage3->list[0].index[1];
643 n3 = mbest_stage3->list[0].index[0];
644 mse = 0.0;
645 for (i=0;i<ndim;i++) {
646 tmp = codebook1[ndim*n1+i] + codebook2[ndim*n2+i] + codebook3[ndim*n3+i];
647 mse += (x[i]-tmp)*(x[i]-tmp);
648 xq[i] = tmp;
649 }
650
651 mbest_destroy(mbest_stage1);
652 mbest_destroy(mbest_stage2);
653 mbest_destroy(mbest_stage3);
654
655 indexes[0] = n1; indexes[1] = n2; indexes[2] = n3;
656
657 return mse;
658}
659
660
661void lspmelvq_decode(int *indexes, float *xq, int ndim)
662{
663 int i, n1, n2, n3;
664 const float *codebook1 = lspmelvq_cb[0].cb;
665 const float *codebook2 = lspmelvq_cb[1].cb;
666 const float *codebook3 = lspmelvq_cb[2].cb;
667
668 n1 = indexes[0]; n2 = indexes[1]; n3 = indexes[2];
669 for (i=0;i<ndim;i++) {
670 xq[i] = codebook1[ndim*n1+i] + codebook2[ndim*n2+i] + codebook3[ndim*n3+i];
671 }
672}
673#endif
674
675
676int check_lsp_order(float lsp[], int order)
677{
678 int i;
679 float tmp;
680 int swaps = 0;
681
682 for(i=1; i<order; i++)
683 if (lsp[i] < lsp[i-1]) {
684 //fprintf(stderr, "swap %d\n",i);
685 swaps++;
686 tmp = lsp[i-1];
687 lsp[i-1] = lsp[i]-0.1;
688 lsp[i] = tmp+0.1;
689 i = 1; /* start check again, as swap may have caused out of order */
690 }
691
692 return swaps;
693}
694
695void force_min_lsp_dist(float lsp[], int order)
696{
697 int i;
698
699 for(i=1; i<order; i++)
700 if ((lsp[i]-lsp[i-1]) < 0.01) {
701 lsp[i] += 0.01;
702 }
703}
704
705
706/*---------------------------------------------------------------------------*\
707
708 lpc_post_filter()
709
710 Applies a post filter to the LPC synthesis filter power spectrum
711 Pw, which supresses the inter-formant energy.
712
713 The algorithm is from p267 (Section 8.6) of "Digital Speech",
714 edited by A.M. Kondoz, 1994 published by Wiley and Sons. Chapter 8
715 of this text is on the MBE vocoder, and this is a freq domain
716 adaptation of post filtering commonly used in CELP.
717
718 I used the Octave simulation lpcpf.m to get an understanding of the
719 algorithm.
720
721 Requires two more FFTs which is significantly more MIPs. However
722 it should be possible to implement this more efficiently in the
723 time domain. Just not sure how to handle relative time delays
724 between the synthesis stage and updating these coeffs. A smaller
725 FFT size might also be accetable to save CPU.
726
727 TODO:
728 [ ] sync var names between Octave and C version
729 [ ] doc gain normalisation
730 [ ] I think the first FFT is not rqd as we do the same
731 thing in aks_to_M2().
732
733\*---------------------------------------------------------------------------*/
734
735void lpc_post_filter(codec2_fftr_cfg fftr_fwd_cfg, float Pw[], float ak[],
736 int order, int dump, float beta, float gamma, int bass_boost, float E)
737{
738 int i;
739 float x[FFT_ENC]; /* input to FFTs */
740 COMP Ww[FFT_ENC/2+1]; /* weighting spectrum */
741 float Rw[FFT_ENC/2+1]; /* R = WA */
742 float e_before, e_after, gain;
743 float Pfw;
744 float max_Rw, min_Rw;
745 float coeff;
746 PROFILE_VAR(tstart, tfft1, taw, tfft2, tww, tr);
747
748 PROFILE_SAMPLE(tstart);
749
750 /* Determine weighting filter spectrum W(exp(jw)) ---------------*/
751
752 for(i=0; i<FFT_ENC; i++) {
753 x[i] = 0.0;
754 }
755
756 x[0] = ak[0];
757 coeff = gamma;
758 for(i=1; i<=order; i++) {
759 x[i] = ak[i] * coeff;
760 coeff *= gamma;
761 }
762 codec2_fftr(fftr_fwd_cfg, x, Ww);
763
764 PROFILE_SAMPLE_AND_LOG(tfft2, taw, " fft2");
765
766 for(i=0; i<FFT_ENC/2; i++) {
767 Ww[i].real = Ww[i].real*Ww[i].real + Ww[i].imag*Ww[i].imag;
768 }
769
770 PROFILE_SAMPLE_AND_LOG(tww, tfft2, " Ww");
771
772 /* Determined combined filter R = WA ---------------------------*/
773
774 max_Rw = 0.0; min_Rw = 1E32;
775 for(i=0; i<FFT_ENC/2; i++) {
776 Rw[i] = sqrtf(Ww[i].real * Pw[i]);
777 if (Rw[i] > max_Rw)
778 max_Rw = Rw[i];
779 if (Rw[i] < min_Rw)
780 min_Rw = Rw[i];
781
782 }
783
784 PROFILE_SAMPLE_AND_LOG(tr, tww, " R");
785
786 #ifdef DUMP
787 if (dump)
788 dump_Rw(Rw);
789 #endif
790
791 /* create post filter mag spectrum and apply ------------------*/
792
793 /* measure energy before post filtering */
794
795 e_before = 1E-4;
796 for(i=0; i<FFT_ENC/2; i++)
797 e_before += Pw[i];
798
799 /* apply post filter and measure energy */
800
801 #ifdef DUMP
802 if (dump)
803 dump_Pwb(Pw);
804 #endif
805
806
807 e_after = 1E-4;
808 for(i=0; i<FFT_ENC/2; i++) {
809 Pfw = powf(Rw[i], beta);
810 Pw[i] *= Pfw * Pfw;
811 e_after += Pw[i];
812 }
813 gain = e_before/e_after;
814
815 /* apply gain factor to normalise energy, and LPC Energy */
816
817 gain *= E;
818 for(i=0; i<FFT_ENC/2; i++) {
819 Pw[i] *= gain;
820 }
821
822 if (bass_boost) {
823 /* add 3dB to first 1 kHz to account for LP effect of PF */
824
825 for(i=0; i<FFT_ENC/8; i++) {
826 Pw[i] *= 1.4*1.4;
827 }
828 }
829
830 PROFILE_SAMPLE_AND_LOG2(tr, " filt");
831}
832
833
834/*---------------------------------------------------------------------------*\
835
836 aks_to_M2()
837
838 Transforms the linear prediction coefficients to spectral amplitude
839 samples. This function determines A(m) from the average energy per
840 band using an FFT.
841
842\*---------------------------------------------------------------------------*/
843
844void aks_to_M2(
845 codec2_fftr_cfg fftr_fwd_cfg,
846 float ak[], /* LPC's */
847 int order,
848 MODEL *model, /* sinusoidal model parameters for this frame */
849 float E, /* energy term */
850 float *snr, /* signal to noise ratio for this frame in dB */
851 int dump, /* true to dump sample to dump file */
852 int sim_pf, /* true to simulate a post filter */
853 int pf, /* true to enable actual LPC post filter */
854 int bass_boost, /* enable LPC filter 0-1kHz 3dB boost */
855 float beta,
856 float gamma, /* LPC post filter parameters */
857 COMP Aw[] /* output power spectrum */
858)
859{
860 int i,m; /* loop variables */
861 int am,bm; /* limits of current band */
862 float r; /* no. rads/bin */
863 float Em; /* energy in band */
864 float Am; /* spectral amplitude sample */
865 float signal, noise;
866 PROFILE_VAR(tstart, tfft, tpw, tpf);
867
868 PROFILE_SAMPLE(tstart);
869
870 r = TWO_PI/(FFT_ENC);
871
872 /* Determine DFT of A(exp(jw)) --------------------------------------------*/
873 {
874 float a[FFT_ENC]; /* input to FFT for power spectrum */
875
876 for(i=0; i<FFT_ENC; i++) {
877 a[i] = 0.0;
878 }
879
880 for(i=0; i<=order; i++)
881 a[i] = ak[i];
882 codec2_fftr(fftr_fwd_cfg, a, Aw);
883 }
884 PROFILE_SAMPLE_AND_LOG(tfft, tstart, " fft");
885
886 /* Determine power spectrum P(w) = E/(A(exp(jw))^2 ------------------------*/
887
888 float Pw[FFT_ENC/2];
889
890#ifndef FDV_ARM_MATH
891 for(i=0; i<FFT_ENC/2; i++) {
892 Pw[i] = 1.0/(Aw[i].real*Aw[i].real + Aw[i].imag*Aw[i].imag + 1E-6);
893 }
894#else
895 // this difference may seem strange, but the gcc for STM32F4 generates almost 5 times
896 // faster code with the two loops: 1120 ms -> 242 ms
897 // so please leave it as is or improve further
898 // since this code is called 4 times it results in almost 4ms gain (21ms -> 17ms per audio frame decode @ 1300 )
899
900 for(i=0; i<FFT_ENC/2; i++)
901 {
902 Pw[i] = Aw[i].real * Aw[i].real + Aw[i].imag * Aw[i].imag + 1E-6;
903 }
904 for(i=0; i<FFT_ENC/2; i++) {
905 Pw[i] = 1.0/(Pw[i]);
906 }
907#endif
908
909 PROFILE_SAMPLE_AND_LOG(tpw, tfft, " Pw");
910
911 if (pf)
912 lpc_post_filter(fftr_fwd_cfg, Pw, ak, order, dump, beta, gamma, bass_boost, E);
913 else {
914 for(i=0; i<FFT_ENC/2; i++) {
915 Pw[i] *= E;
916 }
917 }
918
919 PROFILE_SAMPLE_AND_LOG(tpf, tpw, " LPC post filter");
920
921 #ifdef DUMP
922 if (dump)
923 dump_Pw(Pw);
924 #endif
925
926 /* Determine magnitudes from P(w) ----------------------------------------*/
927
928 /* when used just by decoder {A} might be all zeroes so init signal
929 and noise to prevent log(0) errors */
930
931 signal = 1E-30; noise = 1E-32;
932
933 for(m=1; m<=model->L; m++) {
934 am = (int)((m - 0.5)*model->Wo/r + 0.5);
935 bm = (int)((m + 0.5)*model->Wo/r + 0.5);
936
937 // FIXME: With arm_rfft_fast_f32 we have to use this
938 // otherwise sometimes a to high bm is calculated
939 // which causes trouble later in the calculation
940 // chain
941 // it seems for some reason model->Wo is calculated somewhat too high
942 if (bm>FFT_ENC/2)
943 {
944 bm = FFT_ENC/2;
945 }
946 Em = 0.0;
947
948 for(i=am; i<bm; i++)
949 Em += Pw[i];
950 Am = sqrtf(Em);
951
952 signal += model->A[m]*model->A[m];
953 noise += (model->A[m] - Am)*(model->A[m] - Am);
954
955 /* This code significantly improves perf of LPC model, in
956 particular when combined with phase0. The LPC spectrum tends
957 to track just under the peaks of the spectral envelope, and
958 just above nulls. This algorithm does the reverse to
959 compensate - raising the amplitudes of spectral peaks, while
960 attenuating the null. This enhances the formants, and
961 supresses the energy between formants. */
962
963 if (sim_pf) {
964 if (Am > model->A[m])
965 Am *= 0.7;
966 if (Am < model->A[m])
967 Am *= 1.4;
968 }
969 model->A[m] = Am;
970 }
971 *snr = 10.0*log10f(signal/noise);
972
973 PROFILE_SAMPLE_AND_LOG2(tpf, " rec");
974}
975
976/*---------------------------------------------------------------------------*\
977
978 FUNCTION....: encode_Wo()
979 AUTHOR......: David Rowe
980 DATE CREATED: 22/8/2010
981
982 Encodes Wo using a WO_LEVELS quantiser.
983
984\*---------------------------------------------------------------------------*/
985
986int encode_Wo(C2CONST *c2const, float Wo, int bits)
987{
988 int index, Wo_levels = 1<<bits;
989 float Wo_min = c2const->Wo_min;
990 float Wo_max = c2const->Wo_max;
991 float norm;
992
993 norm = (Wo - Wo_min)/(Wo_max - Wo_min);
994 index = floorf(Wo_levels * norm + 0.5);
995 if (index < 0 ) index = 0;
996 if (index > (Wo_levels-1)) index = Wo_levels-1;
997
998 return index;
999}
1000
1001/*---------------------------------------------------------------------------*\
1002
1003 FUNCTION....: decode_Wo()
1004 AUTHOR......: David Rowe
1005 DATE CREATED: 22/8/2010
1006
1007 Decodes Wo using a WO_LEVELS quantiser.
1008
1009\*---------------------------------------------------------------------------*/
1010
1011float decode_Wo(C2CONST *c2const, int index, int bits)
1012{
1013 float Wo_min = c2const->Wo_min;
1014 float Wo_max = c2const->Wo_max;
1015 float step;
1016 float Wo;
1017 int Wo_levels = 1<<bits;
1018
1019 step = (Wo_max - Wo_min)/Wo_levels;
1020 Wo = Wo_min + step*(index);
1021
1022 return Wo;
1023}
1024
1025/*---------------------------------------------------------------------------*\
1026
1027 FUNCTION....: encode_log_Wo()
1028 AUTHOR......: David Rowe
1029 DATE CREATED: 22/8/2010
1030
1031 Encodes Wo in the log domain using a WO_LEVELS quantiser.
1032
1033\*---------------------------------------------------------------------------*/
1034
1035int encode_log_Wo(C2CONST *c2const, float Wo, int bits)
1036{
1037 int index, Wo_levels = 1<<bits;
1038 float Wo_min = c2const->Wo_min;
1039 float Wo_max = c2const->Wo_max;
1040 float norm;
1041
1042 norm = (log10f(Wo) - log10f(Wo_min))/(log10f(Wo_max) - log10f(Wo_min));
1043 index = floorf(Wo_levels * norm + 0.5);
1044 if (index < 0 ) index = 0;
1045 if (index > (Wo_levels-1)) index = Wo_levels-1;
1046
1047 return index;
1048}
1049
1050/*---------------------------------------------------------------------------*\
1051
1052 FUNCTION....: decode_log_Wo()
1053 AUTHOR......: David Rowe
1054 DATE CREATED: 22/8/2010
1055
1056 Decodes Wo using a WO_LEVELS quantiser in the log domain.
1057
1058\*---------------------------------------------------------------------------*/
1059
1060float decode_log_Wo(C2CONST *c2const, int index, int bits)
1061{
1062 float Wo_min = c2const->Wo_min;
1063 float Wo_max = c2const->Wo_max;
1064 float step;
1065 float Wo;
1066 int Wo_levels = 1<<bits;
1067
1068 step = (log10f(Wo_max) - log10f(Wo_min))/Wo_levels;
1069 Wo = log10f(Wo_min) + step*(index);
1070
1071 return POW10F(Wo);
1072}
1073
1074#if 0
1075/*---------------------------------------------------------------------------*\
1076
1077 FUNCTION....: encode_Wo_dt()
1078 AUTHOR......: David Rowe
1079 DATE CREATED: 6 Nov 2011
1080
1081 Encodes Wo difference from last frame.
1082
1083\*---------------------------------------------------------------------------*/
1084
1085int encode_Wo_dt(C2CONST *c2const, float Wo, float prev_Wo)
1086{
1087 int index, mask, max_index, min_index;
1088 float Wo_min = c2const->Wo_min;
1089 float Wo_max = c2const->Wo_max;
1090 float norm;
1091
1092 norm = (Wo - prev_Wo)/(Wo_max - Wo_min);
1093 index = floorf(WO_LEVELS * norm + 0.5);
1094 //printf("ENC index: %d ", index);
1095
1096 /* hard limit */
1097
1098 max_index = (1 << (WO_DT_BITS-1)) - 1;
1099 min_index = - (max_index+1);
1100 if (index > max_index) index = max_index;
1101 if (index < min_index) index = min_index;
1102 //printf("max_index: %d min_index: %d hard index: %d ",
1103 // max_index, min_index, index);
1104
1105 /* mask so that only LSB WO_DT_BITS remain, bit WO_DT_BITS is the sign bit */
1106
1107 mask = ((1 << WO_DT_BITS) - 1);
1108 index &= mask;
1109 //printf("mask: 0x%x index: 0x%x\n", mask, index);
1110
1111 return index;
1112}
1113
1114/*---------------------------------------------------------------------------*\
1115
1116 FUNCTION....: decode_Wo_dt()
1117 AUTHOR......: David Rowe
1118 DATE CREATED: 6 Nov 2011
1119
1120 Decodes Wo using WO_DT_BITS difference from last frame.
1121
1122\*---------------------------------------------------------------------------*/
1123
1124float decode_Wo_dt(C2CONST *c2const, int index, float prev_Wo)
1125{
1126 float Wo_min = c2const->Wo_min;
1127 float Wo_max = c2const->Wo_max;
1128 float step;
1129 float Wo;
1130 int mask;
1131
1132 /* sign extend index */
1133
1134 //printf("DEC index: %d ");
1135 if (index & (1 << (WO_DT_BITS-1))) {
1136 mask = ~((1 << WO_DT_BITS) - 1);
1137 index |= mask;
1138 }
1139 //printf("DEC mask: 0x%x index: %d \n", mask, index);
1140
1141 step = (Wo_max - Wo_min)/WO_LEVELS;
1142 Wo = prev_Wo + step*(index);
1143
1144 /* bit errors can make us go out of range leading to all sorts of
1145 probs like seg faults */
1146
1147 if (Wo > Wo_max) Wo = Wo_max;
1148 if (Wo < Wo_min) Wo = Wo_min;
1149
1150 return Wo;
1151}
1152#endif
1153
1154/*---------------------------------------------------------------------------*\
1155
1156 FUNCTION....: speech_to_uq_lsps()
1157 AUTHOR......: David Rowe
1158 DATE CREATED: 22/8/2010
1159
1160 Analyse a windowed frame of time domain speech to determine LPCs
1161 which are the converted to LSPs for quantisation and transmission
1162 over the channel.
1163
1164\*---------------------------------------------------------------------------*/
1165
1166float speech_to_uq_lsps(float lsp[],
1167 float ak[],
1168 float Sn[],
1169 float w[],
1170 int m_pitch,
1171 int order
1172)
1173{
1174 int i, roots;
1175 float Wn[m_pitch];
1176 float R[order+1];
1177 float e, E;
1178
1179 e = 0.0;
1180 for(i=0; i<m_pitch; i++) {
1181 Wn[i] = Sn[i]*w[i];
1182 e += Wn[i]*Wn[i];
1183 }
1184
1185 /* trap 0 energy case as LPC analysis will fail */
1186
1187 if (e == 0.0) {
1188 for(i=0; i<order; i++)
1189 lsp[i] = (PI/order)*(float)i;
1190 return 0.0;
1191 }
1192
1193 autocorrelate(Wn, R, m_pitch, order);
1194 levinson_durbin(R, ak, order);
1195
1196 E = 0.0;
1197 for(i=0; i<=order; i++)
1198 E += ak[i]*R[i];
1199
1200 /* 15 Hz BW expansion as I can't hear the difference and it may help
1201 help occasional fails in the LSP root finding. Important to do this
1202 after energy calculation to avoid -ve energy values.
1203 */
1204
1205 for(i=0; i<=order; i++)
1206 ak[i] *= powf(0.994,(float)i);
1207
1208 roots = lpc_to_lsp(ak, order, lsp, 5, LSP_DELTA1);
1209 if (roots != order) {
1210 /* if root finding fails use some benign LSP values instead */
1211 for(i=0; i<order; i++)
1212 lsp[i] = (PI/order)*(float)i;
1213 }
1214
1215 return E;
1216}
1217
1218/*---------------------------------------------------------------------------*\
1219
1220 FUNCTION....: encode_lsps_scalar()
1221 AUTHOR......: David Rowe
1222 DATE CREATED: 22/8/2010
1223
1224 Thirty-six bit sclar LSP quantiser. From a vector of unquantised
1225 (floating point) LSPs finds the quantised LSP indexes.
1226
1227\*---------------------------------------------------------------------------*/
1228
1229void encode_lsps_scalar(int indexes[], float lsp[], int order)
1230{
1231 int i,k,m;
1232 float wt[1];
1233 float lsp_hz[order];
1234 const float * cb;
1235 float se;
1236
1237 /* convert from radians to Hz so we can use human readable
1238 frequencies */
1239
1240 for(i=0; i<order; i++)
1241 lsp_hz[i] = (4000.0/PI)*lsp[i];
1242
1243 /* scalar quantisers */
1244
1245 wt[0] = 1.0;
1246 for(i=0; i<order; i++) {
1247 k = lsp_cb[i].k;
1248 m = lsp_cb[i].m;
1249 cb = lsp_cb[i].cb;
1250 indexes[i] = quantise(cb, &lsp_hz[i], wt, k, m, &se);
1251 }
1252}
1253
1254/*---------------------------------------------------------------------------*\
1255
1256 FUNCTION....: decode_lsps_scalar()
1257 AUTHOR......: David Rowe
1258 DATE CREATED: 22/8/2010
1259
1260 From a vector of quantised LSP indexes, returns the quantised
1261 (floating point) LSPs.
1262
1263\*---------------------------------------------------------------------------*/
1264
1265void decode_lsps_scalar(float lsp[], int indexes[], int order)
1266{
1267 int i,k;
1268 float lsp_hz[order];
1269 const float * cb;
1270
1271 for(i=0; i<order; i++) {
1272 k = lsp_cb[i].k;
1273 cb = lsp_cb[i].cb;
1274 lsp_hz[i] = cb[indexes[i]*k];
1275 }
1276
1277 /* convert back to radians */
1278
1279 for(i=0; i<order; i++)
1280 lsp[i] = (PI/4000.0)*lsp_hz[i];
1281}
1282
1283
1284/*---------------------------------------------------------------------------*\
1285
1286 FUNCTION....: encode_mels_scalar()
1287 AUTHOR......: David Rowe
1288 DATE CREATED: April 2015
1289
1290 Low bit rate mel coeff encoder.
1291
1292\*---------------------------------------------------------------------------*/
1293
1294void encode_mels_scalar(int indexes[], float mels[], int order)
1295{
1296 int i,m;
1297 float wt[1];
1298 const float * cb;
1299 float se, mel_, dmel;
1300
1301 /* scalar quantisers */
1302
1303 wt[0] = 1.0;
1304 for(i=0; i<order; i++) {
1305 m = mel_cb[i].m;
1306 cb = mel_cb[i].cb;
1307 if (i%2) {
1308 /* on odd mels quantise difference */
1309 mel_ = mel_cb[i-1].cb[indexes[i-1]];
1310 dmel = mels[i] - mel_;
1311 indexes[i] = quantise(cb, &dmel, wt, 1, m, &se);
1312 //printf("%d mel: %f mel_: %f dmel: %f index: %d\n", i, mels[i], mel_, dmel, indexes[i]);
1313 }
1314 else {
1315 indexes[i] = quantise(cb, &mels[i], wt, 1, m, &se);
1316 //printf("%d mel: %f dmel: %f index: %d\n", i, mels[i], 0.0, indexes[i]);
1317 }
1318
1319 }
1320}
1321
1322
1323/*---------------------------------------------------------------------------*\
1324
1325 FUNCTION....: decode_mels_scalar()
1326 AUTHOR......: David Rowe
1327 DATE CREATED: April 2015
1328
1329 From a vector of quantised mel indexes, returns the quantised
1330 (floating point) mels.
1331
1332\*---------------------------------------------------------------------------*/
1333
1334void decode_mels_scalar(float mels[], int indexes[], int order)
1335{
1336 int i;
1337 const float * cb;
1338
1339 for(i=0; i<order; i++) {
1340 cb = mel_cb[i].cb;
1341 if (i%2) {
1342 /* on odd mels quantise difference */
1343 mels[i] = mels[i-1] + cb[indexes[i]];
1344 }
1345 else
1346 mels[i] = cb[indexes[i]];
1347 }
1348
1349}
1350
1351
1352#ifdef __EXPERIMENTAL__
1353
1354/*---------------------------------------------------------------------------*\
1355
1356 FUNCTION....: encode_lsps_diff_freq_vq()
1357 AUTHOR......: David Rowe
1358 DATE CREATED: 15 November 2011
1359
1360 Twenty-five bit LSP quantiser. LSPs 1-4 are quantised with scalar
1361 LSP differences (in frequency, i.e difference from the previous
1362 LSP). LSPs 5-10 are quantised with a VQ trained generated using
1363 vqtrainjnd.c
1364
1365\*---------------------------------------------------------------------------*/
1366
1367void encode_lsps_diff_freq_vq(int indexes[], float lsp[], int order)
1368{
1369 int i,k,m;
1370 float lsp_hz[order];
1371 float lsp__hz[order];
1372 float dlsp[order];
1373 float dlsp_[order];
1374 float wt[order];
1375 const float * cb;
1376 float se;
1377
1378 for(i=0; i<order; i++) {
1379 wt[i] = 1.0;
1380 }
1381
1382 /* convert from radians to Hz so we can use human readable
1383 frequencies */
1384
1385 for(i=0; i<order; i++)
1386 lsp_hz[i] = (4000.0/PI)*lsp[i];
1387
1388 /* scalar quantisers for LSP differences 1..4 */
1389
1390 wt[0] = 1.0;
1391 for(i=0; i<4; i++) {
1392 if (i)
1393 dlsp[i] = lsp_hz[i] - lsp__hz[i-1];
1394 else
1395 dlsp[0] = lsp_hz[0];
1396
1397 k = lsp_cbd[i].k;
1398 m = lsp_cbd[i].m;
1399 cb = lsp_cbd[i].cb;
1400 indexes[i] = quantise(cb, &dlsp[i], wt, k, m, &se);
1401 dlsp_[i] = cb[indexes[i]*k];
1402
1403 if (i)
1404 lsp__hz[i] = lsp__hz[i-1] + dlsp_[i];
1405 else
1406 lsp__hz[0] = dlsp_[0];
1407 }
1408
1409 /* VQ LSPs 5,6,7,8,9,10 */
1410
1411 k = lsp_cbjnd[4].k;
1412 m = lsp_cbjnd[4].m;
1413 cb = lsp_cbjnd[4].cb;
1414 indexes[4] = quantise(cb, &lsp_hz[4], &wt[4], k, m, &se);
1415}
1416
1417
1418/*---------------------------------------------------------------------------*\
1419
1420 FUNCTION....: decode_lsps_diff_freq_vq()
1421 AUTHOR......: David Rowe
1422 DATE CREATED: 15 Nov 2011
1423
1424 From a vector of quantised LSP indexes, returns the quantised
1425 (floating point) LSPs.
1426
1427\*---------------------------------------------------------------------------*/
1428
1429void decode_lsps_diff_freq_vq(float lsp_[], int indexes[], int order)
1430{
1431 int i,k,m;
1432 float dlsp_[order];
1433 float lsp__hz[order];
1434 const float * cb;
1435
1436 /* scalar LSP differences */
1437
1438 for(i=0; i<4; i++) {
1439 cb = lsp_cbd[i].cb;
1440 dlsp_[i] = cb[indexes[i]];
1441 if (i)
1442 lsp__hz[i] = lsp__hz[i-1] + dlsp_[i];
1443 else
1444 lsp__hz[0] = dlsp_[0];
1445 }
1446
1447 /* VQ */
1448
1449 k = lsp_cbjnd[4].k;
1450 m = lsp_cbjnd[4].m;
1451 cb = lsp_cbjnd[4].cb;
1452 for(i=4; i<order; i++)
1453 lsp__hz[i] = cb[indexes[4]*k+i-4];
1454
1455 /* convert back to radians */
1456
1457 for(i=0; i<order; i++)
1458 lsp_[i] = (PI/4000.0)*lsp__hz[i];
1459}
1460
1461
1462/*---------------------------------------------------------------------------*\
1463
1464 FUNCTION....: encode_lsps_diff_time()
1465 AUTHOR......: David Rowe
1466 DATE CREATED: 12 Sep 2012
1467
1468 Encode difference from preious frames's LSPs using
1469 3,3,2,2,2,2,1,1,1,1 scalar quantisers (18 bits total).
1470
1471\*---------------------------------------------------------------------------*/
1472
1473void encode_lsps_diff_time(int indexes[],
1474 float lsps[],
1475 float lsps__prev[],
1476 int order)
1477{
1478 int i,k,m;
1479 float lsps_dt[order];
1480 float wt[LPC_MAX];
1481 const float * cb;
1482 float se;
1483
1484 /* Determine difference in time and convert from radians to Hz so
1485 we can use human readable frequencies */
1486
1487 for(i=0; i<order; i++) {
1488 lsps_dt[i] = (4000/PI)*(lsps[i] - lsps__prev[i]);
1489 }
1490
1491 /* scalar quantisers */
1492
1493 wt[0] = 1.0;
1494 for(i=0; i<order; i++) {
1495 k = lsp_cbdt[i].k;
1496 m = lsp_cbdt[i].m;
1497 cb = lsp_cbdt[i].cb;
1498 indexes[i] = quantise(cb, &lsps_dt[i], wt, k, m, &se);
1499 }
1500
1501}
1502
1503
1504/*---------------------------------------------------------------------------*\
1505
1506 FUNCTION....: decode_lsps_diff_time()
1507 AUTHOR......: David Rowe
1508 DATE CREATED: 15 Nov 2011
1509
1510 From a quantised LSP indexes, returns the quantised
1511 (floating point) LSPs.
1512
1513\*---------------------------------------------------------------------------*/
1514
1515void decode_lsps_diff_time(
1516 float lsps_[],
1517 int indexes[],
1518 float lsps__prev[],
1519 int order)
1520{
1521 int i,k,m;
1522 const float * cb;
1523
1524 for(i=0; i<order; i++)
1525 lsps_[i] = lsps__prev[i];
1526
1527 for(i=0; i<order; i++) {
1528 k = lsp_cbdt[i].k;
1529 cb = lsp_cbdt[i].cb;
1530 lsps_[i] += (PI/4000.0)*cb[indexes[i]*k];
1531 }
1532
1533}
1534#endif
1535
1536/*---------------------------------------------------------------------------*\
1537
1538 FUNCTION....: encode_lsps_vq()
1539 AUTHOR......: David Rowe
1540 DATE CREATED: 15 Feb 2012
1541
1542 Multi-stage VQ LSP quantiser developed by Jean-Marc Valin.
1543
1544\*---------------------------------------------------------------------------*/
1545
1546void encode_lsps_vq(int *indexes, float *x, float *xq, int order)
1547{
1548 int i, n1, n2, n3;
1549 float err[order], err2[order], err3[order];
1550 float w[order], w2[order], w3[order];
1551 const float *codebook1 = lsp_cbjvm[0].cb;
1552 const float *codebook2 = lsp_cbjvm[1].cb;
1553 const float *codebook3 = lsp_cbjvm[2].cb;
1554
1555 w[0] = MIN(x[0], x[1]-x[0]);
1556 for (i=1;i<order-1;i++)
1557 w[i] = MIN(x[i]-x[i-1], x[i+1]-x[i]);
1558 w[order-1] = MIN(x[order-1]-x[order-2], PI-x[order-1]);
1559
1560 compute_weights(x, w, order);
1561
1562 n1 = find_nearest(codebook1, lsp_cbjvm[0].m, x, order);
1563
1564 for (i=0;i<order;i++)
1565 {
1566 xq[i] = codebook1[order*n1+i];
1567 err[i] = x[i] - xq[i];
1568 }
1569 for (i=0;i<order/2;i++)
1570 {
1571 err2[i] = err[2*i];
1572 err3[i] = err[2*i+1];
1573 w2[i] = w[2*i];
1574 w3[i] = w[2*i+1];
1575 }
1576 n2 = find_nearest_weighted(codebook2, lsp_cbjvm[1].m, err2, w2, order/2);
1577 n3 = find_nearest_weighted(codebook3, lsp_cbjvm[2].m, err3, w3, order/2);
1578
1579 indexes[0] = n1;
1580 indexes[1] = n2;
1581 indexes[2] = n3;
1582}
1583
1584
1585/*---------------------------------------------------------------------------*\
1586
1587 FUNCTION....: decode_lsps_vq()
1588 AUTHOR......: David Rowe
1589 DATE CREATED: 15 Feb 2012
1590
1591\*---------------------------------------------------------------------------*/
1592
1593void decode_lsps_vq(int *indexes, float *xq, int order, int stages)
1594{
1595 int i, n1, n2, n3;
1596 const float *codebook1 = lsp_cbjvm[0].cb;
1597 const float *codebook2 = lsp_cbjvm[1].cb;
1598 const float *codebook3 = lsp_cbjvm[2].cb;
1599
1600 n1 = indexes[0];
1601 n2 = indexes[1];
1602 n3 = indexes[2];
1603
1604 for (i=0;i<order;i++) {
1605 xq[i] = codebook1[order*n1+i];
1606 }
1607
1608 if (stages != 1) {
1609 for (i=0;i<order/2;i++) {
1610 xq[2*i] += codebook2[order*n2/2+i];
1611 xq[2*i+1] += codebook3[order*n3/2+i];
1612 }
1613 }
1614
1615}
1616
1617
1618/*---------------------------------------------------------------------------*\
1619
1620 FUNCTION....: bw_expand_lsps()
1621 AUTHOR......: David Rowe
1622 DATE CREATED: 22/8/2010
1623
1624 Applies Bandwidth Expansion (BW) to a vector of LSPs. Prevents any
1625 two LSPs getting too close together after quantisation. We know
1626 from experiment that LSP quantisation errors < 12.5Hz (25Hz step
1627 size) are inaudible so we use that as the minimum LSP separation.
1628
1629\*---------------------------------------------------------------------------*/
1630
1631void bw_expand_lsps(float lsp[], int order, float min_sep_low, float min_sep_high)
1632{
1633 int i;
1634
1635 for(i=1; i<4; i++) {
1636
1637 if ((lsp[i] - lsp[i-1]) < min_sep_low*(PI/4000.0))
1638 lsp[i] = lsp[i-1] + min_sep_low*(PI/4000.0);
1639
1640 }
1641
1642 /* As quantiser gaps increased, larger BW expansion was required
1643 to prevent twinkly noises. This may need more experiment for
1644 different quanstisers.
1645 */
1646
1647 for(i=4; i<order; i++) {
1648 if (lsp[i] - lsp[i-1] < min_sep_high*(PI/4000.0))
1649 lsp[i] = lsp[i-1] + min_sep_high*(PI/4000.0);
1650 }
1651}
1652
1653void bw_expand_lsps2(float lsp[],
1654 int order
1655)
1656{
1657 int i;
1658
1659 for(i=1; i<4; i++) {
1660
1661 if ((lsp[i] - lsp[i-1]) < 100.0*(PI/4000.0))
1662 lsp[i] = lsp[i-1] + 100.0*(PI/4000.0);
1663
1664 }
1665
1666 /* As quantiser gaps increased, larger BW expansion was required
1667 to prevent twinkly noises. This may need more experiment for
1668 different quanstisers.
1669 */
1670
1671 for(i=4; i<order; i++) {
1672 if (lsp[i] - lsp[i-1] < 200.0*(PI/4000.0))
1673 lsp[i] = lsp[i-1] + 200.0*(PI/4000.0);
1674 }
1675}
1676
1677/*---------------------------------------------------------------------------*\
1678
1679 FUNCTION....: locate_lsps_jnd_steps()
1680 AUTHOR......: David Rowe
1681 DATE CREATED: 27/10/2011
1682
1683 Applies a form of Bandwidth Expansion (BW) to a vector of LSPs.
1684 Listening tests have determined that "quantising" the position of
1685 each LSP to the non-linear steps below introduces a "just noticable
1686 difference" in the synthesised speech.
1687
1688 This operation can be used before quantisation to limit the input
1689 data to the quantiser to a number of discrete steps.
1690
1691 This operation can also be used during quantisation as a form of
1692 hysteresis in the calculation of quantiser error. For example if
1693 the quantiser target of lsp1 is 500 Hz, candidate vectors with lsp1
1694 of 515 and 495 Hz sound effectively the same.
1695
1696\*---------------------------------------------------------------------------*/
1697
1698void locate_lsps_jnd_steps(float lsps[], int order)
1699{
1700 int i;
1701 float lsp_hz, step;
1702
1703 assert(order == 10);
1704
1705 /* quantise to 25Hz steps */
1706
1707 step = 25;
1708 for(i=0; i<2; i++) {
1709 lsp_hz = lsps[i]*4000.0/PI;
1710 lsp_hz = floorf(lsp_hz/step + 0.5)*step;
1711 lsps[i] = lsp_hz*PI/4000.0;
1712 if (i) {
1713 if (lsps[i] == lsps[i-1])
1714 lsps[i] += step*PI/4000.0;
1715
1716 }
1717 }
1718
1719 /* quantise to 50Hz steps */
1720
1721 step = 50;
1722 for(i=2; i<4; i++) {
1723 lsp_hz = lsps[i]*4000.0/PI;
1724 lsp_hz = floorf(lsp_hz/step + 0.5)*step;
1725 lsps[i] = lsp_hz*PI/4000.0;
1726 if (i) {
1727 if (lsps[i] == lsps[i-1])
1728 lsps[i] += step*PI/4000.0;
1729
1730 }
1731 }
1732
1733 /* quantise to 100Hz steps */
1734
1735 step = 100;
1736 for(i=4; i<10; i++) {
1737 lsp_hz = lsps[i]*4000.0/PI;
1738 lsp_hz = floorf(lsp_hz/step + 0.5)*step;
1739 lsps[i] = lsp_hz*PI/4000.0;
1740 if (i) {
1741 if (lsps[i] == lsps[i-1])
1742 lsps[i] += step*PI/4000.0;
1743
1744 }
1745 }
1746}
1747
1748
1749/*---------------------------------------------------------------------------*\
1750
1751 FUNCTION....: apply_lpc_correction()
1752 AUTHOR......: David Rowe
1753 DATE CREATED: 22/8/2010
1754
1755 Apply first harmonic LPC correction at decoder. This helps improve
1756 low pitch males after LPC modelling, like hts1a and morig.
1757
1758\*---------------------------------------------------------------------------*/
1759
1760void apply_lpc_correction(MODEL *model)
1761{
1762 if (model->Wo < (PI*150.0/4000)) {
1763 model->A[1] *= 0.032;
1764 }
1765}
1766
1767/*---------------------------------------------------------------------------*\
1768
1769 FUNCTION....: encode_energy()
1770 AUTHOR......: David Rowe
1771 DATE CREATED: 22/8/2010
1772
1773 Encodes LPC energy using an E_LEVELS quantiser.
1774
1775\*---------------------------------------------------------------------------*/
1776
1777int encode_energy(float e, int bits)
1778{
1779 int index, e_levels = 1<<bits;
1780 float e_min = E_MIN_DB;
1781 float e_max = E_MAX_DB;
1782 float norm;
1783
1784 e = 10.0*log10f(e);
1785 norm = (e - e_min)/(e_max - e_min);
1786 index = floorf(e_levels * norm + 0.5);
1787 if (index < 0 ) index = 0;
1788 if (index > (e_levels-1)) index = e_levels-1;
1789
1790 return index;
1791}
1792
1793/*---------------------------------------------------------------------------*\
1794
1795 FUNCTION....: decode_energy()
1796 AUTHOR......: David Rowe
1797 DATE CREATED: 22/8/2010
1798
1799 Decodes energy using a E_LEVELS quantiser.
1800
1801\*---------------------------------------------------------------------------*/
1802
1803float decode_energy(int index, int bits)
1804{
1805 float e_min = E_MIN_DB;
1806 float e_max = E_MAX_DB;
1807 float step;
1808 float e;
1809 int e_levels = 1<<bits;
1810
1811 step = (e_max - e_min)/e_levels;
1812 e = e_min + step*(index);
1813 e = POW10F(e/10.0);
1814
1815 return e;
1816}
1817
1818#ifdef NOT_USED
1819/*---------------------------------------------------------------------------*\
1820
1821 FUNCTION....: decode_amplitudes()
1822 AUTHOR......: David Rowe
1823 DATE CREATED: 22/8/2010
1824
1825 Given the amplitude quantiser indexes recovers the harmonic
1826 amplitudes.
1827
1828\*---------------------------------------------------------------------------*/
1829
1830float decode_amplitudes(codec2_fft_cfg fft_fwd_cfg,
1831 MODEL *model,
1832 float ak[],
1833 int lsp_indexes[],
1834 int energy_index,
1835 float lsps[],
1836 float *e
1837)
1838{
1839 float snr;
1840
1841 decode_lsps_scalar(lsps, lsp_indexes, LPC_ORD);
1842 bw_expand_lsps(lsps, LPC_ORD);
1843 lsp_to_lpc(lsps, ak, LPC_ORD);
1844 *e = decode_energy(energy_index);
1845 aks_to_M2(ak, LPC_ORD, model, *e, &snr, 1, 0, 0, 1);
1846 apply_lpc_correction(model);
1847
1848 return snr;
1849}
1850#endif
1851
1852static float ge_coeff[2] = {0.8, 0.9};
1853
1854void compute_weights2(const float *x, const float *xp, float *w)
1855{
1856 w[0] = 30;
1857 w[1] = 1;
1858 if (x[1]<0)
1859 {
1860 w[0] *= .6;
1861 w[1] *= .3;
1862 }
1863 if (x[1]<-10)
1864 {
1865 w[0] *= .3;
1866 w[1] *= .3;
1867 }
1868 /* Higher weight if pitch is stable */
1869 if (fabsf(x[0]-xp[0])<.2)
1870 {
1871 w[0] *= 2;
1872 w[1] *= 1.5;
1873 } else if (fabsf(x[0]-xp[0])>.5) /* Lower if not stable */
1874 {
1875 w[0] *= .5;
1876 }
1877
1878 /* Lower weight for low energy */
1879 if (x[1] < xp[1]-10)
1880 {
1881 w[1] *= .5;
1882 }
1883 if (x[1] < xp[1]-20)
1884 {
1885 w[1] *= .5;
1886 }
1887
1888 //w[0] = 30;
1889 //w[1] = 1;
1890
1891 /* Square the weights because it's applied on the squared error */
1892 w[0] *= w[0];
1893 w[1] *= w[1];
1894
1895}
1896
1897/*---------------------------------------------------------------------------*\
1898
1899 FUNCTION....: quantise_WoE()
1900 AUTHOR......: Jean-Marc Valin & David Rowe
1901 DATE CREATED: 29 Feb 2012
1902
1903 Experimental joint Wo and LPC energy vector quantiser developed by
1904 Jean-Marc Valin. Exploits correlations between the difference in
1905 the log pitch and log energy from frame to frame. For example
1906 both the pitch and energy tend to only change by small amounts
1907 during voiced speech, however it is important that these changes be
1908 coded carefully. During unvoiced speech they both change a lot but
1909 the ear is less sensitve to errors so coarser quantisation is OK.
1910
1911 The ear is sensitive to log energy and loq pitch so we quantise in
1912 these domains. That way the error measure used to quantise the
1913 values is close to way the ear senses errors.
1914
1915 See http://jmspeex.livejournal.com/10446.html
1916
1917\*---------------------------------------------------------------------------*/
1918
1919void quantise_WoE(C2CONST *c2const, MODEL *model, float *e, float xq[])
1920{
1921 int i, n1;
1922 float x[2];
1923 float err[2];
1924 float w[2];
1925 const float *codebook1 = ge_cb[0].cb;
1926 int nb_entries = ge_cb[0].m;
1927 int ndim = ge_cb[0].k;
1928 float Wo_min = c2const->Wo_min;
1929 float Wo_max = c2const->Wo_max;
1930 float Fs = c2const->Fs;
1931
1932 /* VQ is only trained for Fs = 8000 Hz */
1933
1934 assert(Fs == 8000);
1935
1936 x[0] = log10f((model->Wo/PI)*4000.0/50.0)/log10f(2);
1937 x[1] = 10.0*log10f(1e-4 + *e);
1938
1939 compute_weights2(x, xq, w);
1940 for (i=0;i<ndim;i++)
1941 err[i] = x[i]-ge_coeff[i]*xq[i];
1942 n1 = find_nearest_weighted(codebook1, nb_entries, err, w, ndim);
1943
1944 for (i=0;i<ndim;i++)
1945 {
1946 xq[i] = ge_coeff[i]*xq[i] + codebook1[ndim*n1+i];
1947 err[i] -= codebook1[ndim*n1+i];
1948 }
1949
1950 /*
1951 x = log2(4000*Wo/(PI*50));
1952 2^x = 4000*Wo/(PI*50)
1953 Wo = (2^x)*(PI*50)/4000;
1954 */
1955
1956 model->Wo = powf(2.0, xq[0])*(PI*50.0)/4000.0;
1957
1958 /* bit errors can make us go out of range leading to all sorts of
1959 probs like seg faults */
1960
1961 if (model->Wo > Wo_max) model->Wo = Wo_max;
1962 if (model->Wo < Wo_min) model->Wo = Wo_min;
1963
1964 model->L = PI/model->Wo; /* if we quantise Wo re-compute L */
1965
1966 *e = POW10F(xq[1]/10.0);
1967}
1968
1969/*---------------------------------------------------------------------------*\
1970
1971 FUNCTION....: encode_WoE()
1972 AUTHOR......: Jean-Marc Valin & David Rowe
1973 DATE CREATED: 11 May 2012
1974
1975 Joint Wo and LPC energy vector quantiser developed my Jean-Marc
1976 Valin. Returns index, and updated states xq[].
1977
1978\*---------------------------------------------------------------------------*/
1979
1980int encode_WoE(MODEL *model, float e, float xq[])
1981{
1982 int i, n1;
1983 float x[2];
1984 float err[2];
1985 float w[2];
1986 const float *codebook1 = ge_cb[0].cb;
1987 int nb_entries = ge_cb[0].m;
1988 int ndim = ge_cb[0].k;
1989
1990 assert((1<<WO_E_BITS) == nb_entries);
1991
1992 if (e < 0.0) e = 0; /* occasional small negative energies due LPC round off I guess */
1993
1994 x[0] = log10f((model->Wo/PI)*4000.0/50.0)/log10f(2);
1995 x[1] = 10.0*log10f(1e-4 + e);
1996
1997 compute_weights2(x, xq, w);
1998 for (i=0;i<ndim;i++)
1999 err[i] = x[i]-ge_coeff[i]*xq[i];
2000 n1 = find_nearest_weighted(codebook1, nb_entries, err, w, ndim);
2001
2002 for (i=0;i<ndim;i++)
2003 {
2004 xq[i] = ge_coeff[i]*xq[i] + codebook1[ndim*n1+i];
2005 err[i] -= codebook1[ndim*n1+i];
2006 }
2007
2008 //printf("enc: %f %f (%f)(%f) \n", xq[0], xq[1], e, 10.0*log10(1e-4 + e));
2009 return n1;
2010}
2011
2012
2013/*---------------------------------------------------------------------------*\
2014
2015 FUNCTION....: decode_WoE()
2016 AUTHOR......: Jean-Marc Valin & David Rowe
2017 DATE CREATED: 11 May 2012
2018
2019 Joint Wo and LPC energy vector quantiser developed my Jean-Marc
2020 Valin. Given index and states xq[], returns Wo & E, and updates
2021 states xq[].
2022
2023\*---------------------------------------------------------------------------*/
2024
2025void decode_WoE(C2CONST *c2const, MODEL *model, float *e, float xq[], int n1)
2026{
2027 int i;
2028 const float *codebook1 = ge_cb[0].cb;
2029 int ndim = ge_cb[0].k;
2030 float Wo_min = c2const->Wo_min;
2031 float Wo_max = c2const->Wo_max;
2032
2033 for (i=0;i<ndim;i++)
2034 {
2035 xq[i] = ge_coeff[i]*xq[i] + codebook1[ndim*n1+i];
2036 }
2037
2038 //printf("dec: %f %f\n", xq[0], xq[1]);
2039 model->Wo = powf(2.0, xq[0])*(PI*50.0)/4000.0;
2040
2041 /* bit errors can make us go out of range leading to all sorts of
2042 probs like seg faults */
2043
2044 if (model->Wo > Wo_max) model->Wo = Wo_max;
2045 if (model->Wo < Wo_min) model->Wo = Wo_min;
2046
2047 model->L = PI/model->Wo; /* if we quantise Wo re-compute L */
2048
2049 *e = POW10F(xq[1]/10.0);
2050}
2051
diff --git a/quantise.h b/quantise.h
new file mode 100644
index 0000000..4baa87c
--- /dev/null
+++ b/quantise.h
@@ -0,0 +1,141 @@
1/*---------------------------------------------------------------------------*\
2
3 FILE........: quantise.h
4 AUTHOR......: David Rowe
5 DATE CREATED: 31/5/92
6
7 Quantisation functions for the sinusoidal coder.
8
9\*---------------------------------------------------------------------------*/
10
11/*
12 All rights reserved.
13
14 This program is free software; you can redistribute it and/or modify
15 it under the terms of the GNU Lesser General Public License version 2.1, as
16 published by the Free Software Foundation. This program is
17 distributed in the hope that it will be useful, but WITHOUT ANY
18 WARRANTY; without even the implied warranty of MERCHANTABILITY or
19 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
20 License for more details.
21
22 You should have received a copy of the GNU Lesser General Public License
23 along with this program; if not, see <http://www.gnu.org/licenses/>.
24*/
25
26#ifndef __QUANTISE__
27#define __QUANTISE__
28
29#include "codec2_fft.h"
30#include "comp.h"
31
32#define WO_BITS 7
33#define WO_LEVELS (1<<WO_BITS)
34#define WO_DT_BITS 3
35
36#define E_BITS 5
37#define E_LEVELS (1<<E_BITS)
38#define E_MIN_DB -10.0
39#define E_MAX_DB 40.0
40
41#define LSP_SCALAR_INDEXES 10
42#define LSPD_SCALAR_INDEXES 10
43#define LSP_PRED_VQ_INDEXES 3
44#define LSP_DIFF_FREQ_INDEXES 5
45#define LSP_DIFF_TIME_BITS 7
46
47#define LSPDT_ALL 0
48#define LSPDT_LOW 1
49#define LSPDT_HIGH 2
50
51#define WO_E_BITS 8
52
53#define LPCPF_GAMMA 0.5
54#define LPCPF_BETA 0.2
55
56void quantise_init();
57float lpc_model_amplitudes(float Sn[], float w[], MODEL *model, int order,
58 int lsp,float ak[]);
59void aks_to_M2(codec2_fftr_cfg fftr_fwd_cfg, float ak[], int order, MODEL *model,
60 float E, float *snr, int dump, int sim_pf,
61 int pf, int bass_boost, float beta, float gamma, COMP Aw[]);
62
63int encode_Wo(C2CONST *c2const, float Wo, int bits);
64float decode_Wo(C2CONST *c2const, int index, int bits);
65int encode_log_Wo(C2CONST *c2const, float Wo, int bits);
66float decode_log_Wo(C2CONST *c2const, int index, int bits);
67#if 0
68int encode_Wo_dt(C2CONST *c2const, float Wo, float prev_Wo);
69float decode_Wo_dt(C2CONST *c2const, int index, float prev_Wo);
70#endif
71void encode_lsps_scalar(int indexes[], float lsp[], int order);
72void decode_lsps_scalar(float lsp[], int indexes[], int order);
73void encode_lspds_scalar(int indexes[], float lsp[], int order);
74void decode_lspds_scalar(float lsp[], int indexes[], int order);
75void encode_lsps_diff_freq_vq(int indexes[], float lsp[], int order);
76void decode_lsps_diff_freq_vq(float lsp_[], int indexes[], int order);
77void encode_lsps_diff_time(int indexes[],
78 float lsp[],
79 float lsp__prev[],
80 int order);
81void decode_lsps_diff_time(float lsp_[],
82 int indexes[],
83 float lsp__prev[],
84 int order);
85
86void encode_lsps_vq(int *indexes, float *x, float *xq, int order);
87void decode_lsps_vq(int *indexes, float *xq, int order, int stages);
88
89long quantise(const float * cb, float vec[], float w[], int k, int m, float *se);
90void lspvq_quantise(float lsp[], float lsp_[], int order);
91void lspjnd_quantise(float lsp[], float lsp_[], int order);
92void lspdt_quantise(float lsps[], float lsps_[], float lsps__prev[], int mode);
93void lspjvm_quantise(float lsps[], float lsps_[], int order);
94void lspanssi_quantise(float lsps[], float lsps_[], int order, int mbest_entries);
95float lspmelvq_quantise(float *x, float *xq, int order);
96
97float lspmelvq_mbest_encode(int *indexes, float *x, float *xq, int ndim, int mbest_entries);
98void lspmelvq_decode(int *indexes, float *xq, int ndim);
99
100void encode_mels_scalar(int mel_indexes[], float mels[], int order);
101void decode_mels_scalar(float mels[], int mel_indexes[], int order);
102
103void quantise_WoE(C2CONST *c2const, MODEL *model, float *e, float xq[]);
104int encode_WoE(MODEL *model, float e, float xq[]);
105void decode_WoE(C2CONST *c2const, MODEL *model, float *e, float xq[], int n1);
106
107int encode_energy(float e, int bits);
108float decode_energy(int index, int bits);
109
110void pack(unsigned char * bits, unsigned int *nbit, int index, unsigned int index_bits);
111void pack_natural_or_gray(unsigned char * bits, unsigned int *nbit, int index, unsigned int index_bits, unsigned int gray);
112int unpack(const unsigned char * bits, unsigned int *nbit, unsigned int index_bits);
113int unpack_natural_or_gray(const unsigned char * bits, unsigned int *nbit, unsigned int index_bits, unsigned int gray);
114
115int lsp_bits(int i);
116int lspd_bits(int i);
117int lspdt_bits(int i);
118int lsp_pred_vq_bits(int i);
119int mel_bits(int i);
120int lspmelvq_cb_bits(int i);
121
122void apply_lpc_correction(MODEL *model);
123float speech_to_uq_lsps(float lsp[],
124 float ak[],
125 float Sn[],
126 float w[],
127 int m_pitch,
128 int order
129 );
130int check_lsp_order(float lsp[], int lpc_order);
131void bw_expand_lsps(float lsp[], int order, float min_sep_low, float min_sep_high);
132void bw_expand_lsps2(float lsp[], int order);
133void locate_lsps_jnd_steps(float lsp[], int order);
134float decode_amplitudes(MODEL *model,
135 float ak[],
136 int lsp_indexes[],
137 int energy_index,
138 float lsps[],
139 float *e);
140
141#endif
diff --git a/sine.c b/sine.c
new file mode 100644
index 0000000..4e31f37
--- /dev/null
+++ b/sine.c
@@ -0,0 +1,689 @@
1/*---------------------------------------------------------------------------*\
2
3 FILE........: sine.c
4 AUTHOR......: David Rowe
5 DATE CREATED: 19/8/2010
6
7 Sinusoidal analysis and synthesis functions.
8
9\*---------------------------------------------------------------------------*/
10
11/*
12 Copyright (C) 1990-2010 David Rowe
13
14 All rights reserved.
15
16 This program is free software; you can redistribute it and/or modify
17 it under the terms of the GNU Lesser General Public License version 2.1, as
18 published by the Free Software Foundation. This program is
19 distributed in the hope that it will be useful, but WITHOUT ANY
20 WARRANTY; without even the implied warranty of MERCHANTABILITY or
21 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
22 License for more details.
23
24 You should have received a copy of the GNU Lesser General Public License
25 along with this program; if not, see <http://www.gnu.org/licenses/>.
26*/
27
28/*---------------------------------------------------------------------------*\
29
30 INCLUDES
31
32\*---------------------------------------------------------------------------*/
33
34#include <stdlib.h>
35#include <stdio.h>
36#include <math.h>
37
38#include "defines.h"
39#include "sine.h"
40#include "kiss_fft.h"
41
42#define HPF_BETA 0.125
43
44/*---------------------------------------------------------------------------*\
45
46 HEADERS
47
48\*---------------------------------------------------------------------------*/
49
50void hs_pitch_refinement(MODEL *model, COMP Sw[], float pmin, float pmax,
51 float pstep);
52
53/*---------------------------------------------------------------------------*\
54
55 FUNCTIONS
56
57\*---------------------------------------------------------------------------*/
58
59C2CONST c2const_create(int Fs, float framelength_s) {
60 C2CONST c2const;
61
62 assert((Fs == 8000) || (Fs = 16000));
63 c2const.Fs = Fs;
64 c2const.n_samp = round(Fs*framelength_s);
65 c2const.max_amp = floor(Fs*P_MIN_S/2);
66 c2const.p_min = floor(Fs*P_MIN_S);
67 c2const.p_max = floor(Fs*P_MAX_S);
68 c2const.m_pitch = floor(Fs*M_PITCH_S);
69 c2const.Wo_min = TWO_PI/c2const.p_max;
70 c2const.Wo_max = TWO_PI/c2const.p_min;
71
72 if (Fs == 8000) {
73 c2const.nw = 279;
74 } else {
75 c2const.nw = 511; /* actually a bit shorter in time but lets us maintain constant FFT size */
76 }
77
78 c2const.tw = Fs*TW_S;
79
80 /*
81 fprintf(stderr, "max_amp: %d m_pitch: %d\n", c2const.n_samp, c2const.m_pitch);
82 fprintf(stderr, "p_min: %d p_max: %d\n", c2const.p_min, c2const.p_max);
83 fprintf(stderr, "Wo_min: %f Wo_max: %f\n", c2const.Wo_min, c2const.Wo_max);
84 fprintf(stderr, "nw: %d tw: %d\n", c2const.nw, c2const.tw);
85 */
86
87 return c2const;
88}
89
90/*---------------------------------------------------------------------------*\
91
92 FUNCTION....: make_analysis_window
93 AUTHOR......: David Rowe
94 DATE CREATED: 11/5/94
95
96 Init function that generates the time domain analysis window and it's DFT.
97
98\*---------------------------------------------------------------------------*/
99
100void make_analysis_window(C2CONST *c2const, codec2_fft_cfg fft_fwd_cfg, float w[], COMP W[])
101{
102 float m;
103 COMP wshift[FFT_ENC];
104 COMP temp;
105 int i,j;
106 int m_pitch = c2const->m_pitch;
107 int nw = c2const->nw;
108
109 /*
110 Generate Hamming window centered on M-sample pitch analysis window
111
112 0 M/2 M-1
113 |-------------|-------------|
114 |-------|-------|
115 nw samples
116
117 All our analysis/synthsis is centred on the M/2 sample.
118 */
119
120 m = 0.0;
121 for(i=0; i<m_pitch/2-nw/2; i++)
122 w[i] = 0.0;
123 for(i=m_pitch/2-nw/2,j=0; i<m_pitch/2+nw/2; i++,j++) {
124 w[i] = 0.5 - 0.5*cosf(TWO_PI*j/(nw-1));
125 m += w[i]*w[i];
126 }
127 for(i=m_pitch/2+nw/2; i<m_pitch; i++)
128 w[i] = 0.0;
129
130 /* Normalise - makes freq domain amplitude estimation straight
131 forward */
132
133 m = 1.0/sqrtf(m*FFT_ENC);
134 for(i=0; i<m_pitch; i++) {
135 w[i] *= m;
136 }
137
138 /*
139 Generate DFT of analysis window, used for later processing. Note
140 we modulo FFT_ENC shift the time domain window w[], this makes the
141 imaginary part of the DFT W[] equal to zero as the shifted w[] is
142 even about the n=0 time axis if nw is odd. Having the imag part
143 of the DFT W[] makes computation easier.
144
145 0 FFT_ENC-1
146 |-------------------------|
147
148 ----\ /----
149 \ /
150 \ / <- shifted version of window w[n]
151 \ /
152 \ /
153 -------
154
155 |---------| |---------|
156 nw/2 nw/2
157 */
158
159 for(i=0; i<FFT_ENC; i++) {
160 wshift[i].real = 0.0;
161 wshift[i].imag = 0.0;
162 }
163 for(i=0; i<nw/2; i++)
164 wshift[i].real = w[i+m_pitch/2];
165 for(i=FFT_ENC-nw/2,j=m_pitch/2-nw/2; i<FFT_ENC; i++,j++)
166 wshift[i].real = w[j];
167
168 codec2_fft(fft_fwd_cfg, wshift, W);
169
170 /*
171 Re-arrange W[] to be symmetrical about FFT_ENC/2. Makes later
172 analysis convenient.
173
174 Before:
175
176
177 0 FFT_ENC-1
178 |----------|---------|
179 __ _
180 \ /
181 \_______________/
182
183 After:
184
185 0 FFT_ENC-1
186 |----------|---------|
187 ___
188 / \
189 ________/ \_______
190
191 */
192
193
194 for(i=0; i<FFT_ENC/2; i++) {
195 temp.real = W[i].real;
196 temp.imag = W[i].imag;
197 W[i].real = W[i+FFT_ENC/2].real;
198 W[i].imag = W[i+FFT_ENC/2].imag;
199 W[i+FFT_ENC/2].real = temp.real;
200 W[i+FFT_ENC/2].imag = temp.imag;
201 }
202
203}
204
205/*---------------------------------------------------------------------------*\
206
207 FUNCTION....: hpf
208 AUTHOR......: David Rowe
209 DATE CREATED: 16 Nov 2010
210
211 High pass filter with a -3dB point of about 160Hz.
212
213 y(n) = -HPF_BETA*y(n-1) + x(n) - x(n-1)
214
215\*---------------------------------------------------------------------------*/
216
217float hpf(float x, float states[])
218{
219 states[0] = -HPF_BETA*states[0] + x - states[1];
220 states[1] = x;
221
222 return states[0];
223}
224
225/*---------------------------------------------------------------------------*\
226
227 FUNCTION....: dft_speech
228 AUTHOR......: David Rowe
229 DATE CREATED: 27/5/94
230
231 Finds the DFT of the current speech input speech frame.
232
233\*---------------------------------------------------------------------------*/
234
235// TODO: we can either go for a faster FFT using fftr and some stack usage
236// or we can reduce stack usage to almost zero on STM32 by switching to fft_inplace
237#if 1
238void dft_speech(C2CONST *c2const, codec2_fft_cfg fft_fwd_cfg, COMP Sw[], float Sn[], float w[])
239{
240 int i;
241 int m_pitch = c2const->m_pitch;
242 int nw = c2const->nw;
243
244 for(i=0; i<FFT_ENC; i++) {
245 Sw[i].real = 0.0;
246 Sw[i].imag = 0.0;
247 }
248
249 /* Centre analysis window on time axis, we need to arrange input
250 to FFT this way to make FFT phases correct */
251
252 /* move 2nd half to start of FFT input vector */
253
254 for(i=0; i<nw/2; i++)
255 Sw[i].real = Sn[i+m_pitch/2]*w[i+m_pitch/2];
256
257 /* move 1st half to end of FFT input vector */
258
259 for(i=0; i<nw/2; i++)
260 Sw[FFT_ENC-nw/2+i].real = Sn[i+m_pitch/2-nw/2]*w[i+m_pitch/2-nw/2];
261
262 codec2_fft_inplace(fft_fwd_cfg, Sw);
263}
264#else
265void dft_speech(codec2_fftr_cfg fftr_fwd_cfg, COMP Sw[], float Sn[], float w[])
266{
267 int i;
268 float sw[FFT_ENC];
269
270 for(i=0; i<FFT_ENC; i++) {
271 sw[i] = 0.0;
272 }
273
274 /* Centre analysis window on time axis, we need to arrange input
275 to FFT this way to make FFT phases correct */
276
277 /* move 2nd half to start of FFT input vector */
278
279 for(i=0; i<nw/2; i++)
280 sw[i] = Sn[i+m_pitch/2]*w[i+m_pitch/2];
281
282 /* move 1st half to end of FFT input vector */
283
284 for(i=0; i<nw/2; i++)
285 sw[FFT_ENC-nw/2+i] = Sn[i+m_pitch/2-nw/2]*w[i+m_pitch/2-nw/2];
286
287 codec2_fftr(fftr_fwd_cfg, sw, Sw);
288}
289#endif
290
291
292/*---------------------------------------------------------------------------*\
293
294 FUNCTION....: two_stage_pitch_refinement
295 AUTHOR......: David Rowe
296 DATE CREATED: 27/5/94
297
298 Refines the current pitch estimate using the harmonic sum pitch
299 estimation technique.
300
301\*---------------------------------------------------------------------------*/
302
303void two_stage_pitch_refinement(C2CONST *c2const, MODEL *model, COMP Sw[])
304{
305 float pmin,pmax,pstep; /* pitch refinment minimum, maximum and step */
306
307 /* Coarse refinement */
308
309 pmax = TWO_PI/model->Wo + 5;
310 pmin = TWO_PI/model->Wo - 5;
311 pstep = 1.0;
312 hs_pitch_refinement(model,Sw,pmin,pmax,pstep);
313
314 /* Fine refinement */
315
316 pmax = TWO_PI/model->Wo + 1;
317 pmin = TWO_PI/model->Wo - 1;
318 pstep = 0.25;
319 hs_pitch_refinement(model,Sw,pmin,pmax,pstep);
320
321 /* Limit range */
322
323 if (model->Wo < TWO_PI/c2const->p_max)
324 model->Wo = TWO_PI/c2const->p_max;
325 if (model->Wo > TWO_PI/c2const->p_min)
326 model->Wo = TWO_PI/c2const->p_min;
327
328 model->L = floorf(PI/model->Wo);
329
330 /* trap occasional round off issues with floorf() */
331 if (model->Wo*model->L >= 0.95*PI) {
332 model->L--;
333 }
334 assert(model->Wo*model->L < PI);
335}
336
337/*---------------------------------------------------------------------------*\
338
339 FUNCTION....: hs_pitch_refinement
340 AUTHOR......: David Rowe
341 DATE CREATED: 27/5/94
342
343 Harmonic sum pitch refinement function.
344
345 pmin pitch search range minimum
346 pmax pitch search range maximum
347 step pitch search step size
348 model current pitch estimate in model.Wo
349
350 model refined pitch estimate in model.Wo
351
352\*---------------------------------------------------------------------------*/
353
354void hs_pitch_refinement(MODEL *model, COMP Sw[], float pmin, float pmax, float pstep)
355{
356 int m; /* loop variable */
357 int b; /* bin for current harmonic centre */
358 float E; /* energy for current pitch*/
359 float Wo; /* current "test" fundamental freq. */
360 float Wom; /* Wo that maximises E */
361 float Em; /* mamimum energy */
362 float r, one_on_r; /* number of rads/bin */
363 float p; /* current pitch */
364
365 /* Initialisation */
366
367 model->L = PI/model->Wo; /* use initial pitch est. for L */
368 Wom = model->Wo;
369 Em = 0.0;
370 r = TWO_PI/FFT_ENC;
371 one_on_r = 1.0/r;
372
373 /* Determine harmonic sum for a range of Wo values */
374
375 for(p=pmin; p<=pmax; p+=pstep) {
376 E = 0.0;
377 Wo = TWO_PI/p;
378
379 /* Sum harmonic magnitudes */
380 for(m=1; m<=model->L; m++) {
381 b = (int)(m*Wo*one_on_r + 0.5);
382 E += Sw[b].real*Sw[b].real + Sw[b].imag*Sw[b].imag;
383 }
384 /* Compare to see if this is a maximum */
385
386 if (E > Em) {
387 Em = E;
388 Wom = Wo;
389 }
390 }
391
392 model->Wo = Wom;
393}
394
395/*---------------------------------------------------------------------------*\
396
397 FUNCTION....: estimate_amplitudes
398 AUTHOR......: David Rowe
399 DATE CREATED: 27/5/94
400
401 Estimates the complex amplitudes of the harmonics.
402
403\*---------------------------------------------------------------------------*/
404
405void estimate_amplitudes(MODEL *model, COMP Sw[], COMP W[], int est_phase)
406{
407 int i,m; /* loop variables */
408 int am,bm; /* bounds of current harmonic */
409 int b; /* DFT bin of centre of current harmonic */
410 float den; /* denominator of amplitude expression */
411 float r, one_on_r; /* number of rads/bin */
412 int offset;
413 COMP Am;
414
415 r = TWO_PI/FFT_ENC;
416 one_on_r = 1.0/r;
417
418 for(m=1; m<=model->L; m++) {
419 den = 0.0;
420 am = (int)((m - 0.5)*model->Wo*one_on_r + 0.5);
421 bm = (int)((m + 0.5)*model->Wo*one_on_r + 0.5);
422 b = (int)(m*model->Wo/r + 0.5);
423
424 /* Estimate ampltude of harmonic */
425
426 den = 0.0;
427 Am.real = Am.imag = 0.0;
428 offset = FFT_ENC/2 - (int)(m*model->Wo*one_on_r + 0.5);
429 for(i=am; i<bm; i++) {
430 den += Sw[i].real*Sw[i].real + Sw[i].imag*Sw[i].imag;
431 Am.real += Sw[i].real*W[i + offset].real;
432 Am.imag += Sw[i].imag*W[i + offset].real;
433 }
434
435 model->A[m] = sqrtf(den);
436
437 if (est_phase) {
438
439 /* Estimate phase of harmonic, this is expensive in CPU for
440 embedded devicesso we make it an option */
441
442 model->phi[m] = atan2f(Sw[b].imag,Sw[b].real);
443 }
444 }
445}
446
447/*---------------------------------------------------------------------------*\
448
449 est_voicing_mbe()
450
451 Returns the error of the MBE cost function for a fiven F0.
452
453 Note: I think a lot of the operations below can be simplified as
454 W[].imag = 0 and has been normalised such that den always equals 1.
455
456\*---------------------------------------------------------------------------*/
457
458float est_voicing_mbe(
459 C2CONST *c2const,
460 MODEL *model,
461 COMP Sw[],
462 COMP W[]
463 )
464{
465 int l,al,bl,m; /* loop variables */
466 COMP Am; /* amplitude sample for this band */
467 int offset; /* centers Hw[] about current harmonic */
468 float den; /* denominator of Am expression */
469 float error; /* accumulated error between original and synthesised */
470 float Wo;
471 float sig, snr;
472 float elow, ehigh, eratio;
473 float sixty;
474 COMP Ew;
475 Ew.real = 0;
476 Ew.imag = 0;
477
478 int l_1000hz = model->L*1000.0/(c2const->Fs/2);
479 sig = 1E-4;
480 for(l=1; l<=l_1000hz; l++) {
481 sig += model->A[l]*model->A[l];
482 }
483
484 Wo = model->Wo;
485 error = 1E-4;
486
487 /* Just test across the harmonics in the first 1000 Hz */
488
489 for(l=1; l<=l_1000hz; l++) {
490 Am.real = 0.0;
491 Am.imag = 0.0;
492 den = 0.0;
493 al = ceilf((l - 0.5)*Wo*FFT_ENC/TWO_PI);
494 bl = ceilf((l + 0.5)*Wo*FFT_ENC/TWO_PI);
495
496 /* Estimate amplitude of harmonic assuming harmonic is totally voiced */
497
498 offset = FFT_ENC/2 - l*Wo*FFT_ENC/TWO_PI + 0.5;
499 for(m=al; m<bl; m++) {
500 Am.real += Sw[m].real*W[offset+m].real;
501 Am.imag += Sw[m].imag*W[offset+m].real;
502 den += W[offset+m].real*W[offset+m].real;
503 }
504
505 Am.real = Am.real/den;
506 Am.imag = Am.imag/den;
507
508 /* Determine error between estimated harmonic and original */
509
510// Redundant! offset = FFT_ENC/2 - l*Wo*FFT_ENC/TWO_PI + 0.5;
511 for(m=al; m<bl; m++) {
512 Ew.real = Sw[m].real - Am.real*W[offset+m].real;
513 Ew.imag = Sw[m].imag - Am.imag*W[offset+m].real;
514 error += Ew.real*Ew.real;
515 error += Ew.imag*Ew.imag;
516 }
517 }
518
519 snr = 10.0*log10f(sig/error);
520 if (snr > V_THRESH)
521 model->voiced = 1;
522 else
523 model->voiced = 0;
524
525 /* post processing, helps clean up some voicing errors ------------------*/
526
527 /*
528 Determine the ratio of low freqency to high frequency energy,
529 voiced speech tends to be dominated by low frequency energy,
530 unvoiced by high frequency. This measure can be used to
531 determine if we have made any gross errors.
532 */
533
534 int l_2000hz = model->L*2000.0/(c2const->Fs/2);
535 int l_4000hz = model->L*4000.0/(c2const->Fs/2);
536 elow = ehigh = 1E-4;
537 for(l=1; l<=l_2000hz; l++) {
538 elow += model->A[l]*model->A[l];
539 }
540 for(l=l_2000hz; l<=l_4000hz; l++) {
541 ehigh += model->A[l]*model->A[l];
542 }
543 eratio = 10.0*log10f(elow/ehigh);
544
545 /* Look for Type 1 errors, strongly V speech that has been
546 accidentally declared UV */
547
548 if (model->voiced == 0)
549 if (eratio > 10.0)
550 model->voiced = 1;
551
552 /* Look for Type 2 errors, strongly UV speech that has been
553 accidentally declared V */
554
555 if (model->voiced == 1) {
556 if (eratio < -10.0)
557 model->voiced = 0;
558
559 /* A common source of Type 2 errors is the pitch estimator
560 gives a low (50Hz) estimate for UV speech, which gives a
561 good match with noise due to the close harmoonic spacing.
562 These errors are much more common than people with 50Hz3
563 pitch, so we have just a small eratio threshold. */
564
565 sixty = 60.0*TWO_PI/c2const->Fs;
566 if ((eratio < -4.0) && (model->Wo <= sixty))
567 model->voiced = 0;
568 }
569 //printf(" v: %d snr: %f eratio: %3.2f %f\n",model->voiced,snr,eratio,dF0);
570
571 return snr;
572}
573
574/*---------------------------------------------------------------------------*\
575
576 FUNCTION....: make_synthesis_window
577 AUTHOR......: David Rowe
578 DATE CREATED: 11/5/94
579
580 Init function that generates the trapezoidal (Parzen) sythesis window.
581
582\*---------------------------------------------------------------------------*/
583
584void make_synthesis_window(C2CONST *c2const, float Pn[])
585{
586 int i;
587 float win;
588 int n_samp = c2const->n_samp;
589 int tw = c2const->tw;
590
591 /* Generate Parzen window in time domain */
592
593 win = 0.0;
594 for(i=0; i<n_samp/2-tw; i++)
595 Pn[i] = 0.0;
596 win = 0.0;
597 for(i=n_samp/2-tw; i<n_samp/2+tw; win+=1.0/(2*tw), i++ )
598 Pn[i] = win;
599 for(i=n_samp/2+tw; i<3*n_samp/2-tw; i++)
600 Pn[i] = 1.0;
601 win = 1.0;
602 for(i=3*n_samp/2-tw; i<3*n_samp/2+tw; win-=1.0/(2*tw), i++)
603 Pn[i] = win;
604 for(i=3*n_samp/2+tw; i<2*n_samp; i++)
605 Pn[i] = 0.0;
606}
607
608/*---------------------------------------------------------------------------*\
609
610 FUNCTION....: synthesise
611 AUTHOR......: David Rowe
612 DATE CREATED: 20/2/95
613
614 Synthesise a speech signal in the frequency domain from the
615 sinusodal model parameters. Uses overlap-add with a trapezoidal
616 window to smoothly interpolate betwen frames.
617
618\*---------------------------------------------------------------------------*/
619
620void synthesise(
621 int n_samp,
622 codec2_fftr_cfg fftr_inv_cfg,
623 float Sn_[], /* time domain synthesised signal */
624 MODEL *model, /* ptr to model parameters for this frame */
625 float Pn[], /* time domain Parzen window */
626 int shift /* flag used to handle transition frames */
627)
628{
629 int i,l,j,b; /* loop variables */
630 COMP Sw_[FFT_DEC/2+1]; /* DFT of synthesised signal */
631 float sw_[FFT_DEC]; /* synthesised signal */
632
633 if (shift) {
634 /* Update memories */
635 for(i=0; i<n_samp-1; i++) {
636 Sn_[i] = Sn_[i+n_samp];
637 }
638 Sn_[n_samp-1] = 0.0;
639 }
640
641 for(i=0; i<FFT_DEC/2+1; i++) {
642 Sw_[i].real = 0.0;
643 Sw_[i].imag = 0.0;
644 }
645
646 /* Now set up frequency domain synthesised speech */
647
648 for(l=1; l<=model->L; l++) {
649 b = (int)(l*model->Wo*FFT_DEC/TWO_PI + 0.5);
650 if (b > ((FFT_DEC/2)-1)) {
651 b = (FFT_DEC/2)-1;
652 }
653 Sw_[b].real = model->A[l]*cosf(model->phi[l]);
654 Sw_[b].imag = model->A[l]*sinf(model->phi[l]);
655 }
656
657 /* Perform inverse DFT */
658
659 codec2_fftri(fftr_inv_cfg, Sw_,sw_);
660
661 /* Overlap add to previous samples */
662
663 #ifdef USE_KISS_FFT
664 #define FFTI_FACTOR ((float)1.0)
665 #else
666 #define FFTI_FACTOR ((float32_t)FFT_DEC)
667 #endif
668
669 for(i=0; i<n_samp-1; i++) {
670 Sn_[i] += sw_[FFT_DEC-n_samp+1+i]*Pn[i] * FFTI_FACTOR;
671 }
672
673 if (shift)
674 for(i=n_samp-1,j=0; i<2*n_samp; i++,j++)
675 Sn_[i] = sw_[j]*Pn[i] * FFTI_FACTOR;
676 else
677 for(i=n_samp-1,j=0; i<2*n_samp; i++,j++)
678 Sn_[i] += sw_[j]*Pn[i] * FFTI_FACTOR;
679}
680
681
682/* todo: this should probably be in some states rather than a static */
683static unsigned long next = 1;
684
685int codec2_rand(void) {
686 next = next * 1103515245 + 12345;
687 return((unsigned)(next/65536) % 32768);
688}
689
diff --git a/sine.h b/sine.h
new file mode 100644
index 0000000..5c7455c
--- /dev/null
+++ b/sine.h
@@ -0,0 +1,49 @@
1/*---------------------------------------------------------------------------*\
2
3 FILE........: sine.h
4 AUTHOR......: David Rowe
5 DATE CREATED: 1/11/94
6
7 Header file for sinusoidal analysis and synthesis functions.
8
9\*---------------------------------------------------------------------------*/
10
11/*
12 Copyright (C) 2009 David Rowe
13
14 All rights reserved.
15
16 This program is free software; you can redistribute it and/or modify
17 it under the terms of the GNU Lesser General Public License version 2.1, as
18 published by the Free Software Foundation. This program is
19 distributed in the hope that it will be useful, but WITHOUT ANY
20 WARRANTY; without even the implied warranty of MERCHANTABILITY or
21 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
22 License for more details.
23
24 You should have received a copy of the GNU Lesser General Public License
25 along with this program; if not, see <http://www.gnu.org/licenses/>.
26*/
27
28#ifndef __SINE__
29#define __SINE__
30
31#include "defines.h"
32#include "comp.h"
33#include "codec2_fft.h"
34
35C2CONST c2const_create(int Fs, float framelength_ms);
36
37void make_analysis_window(C2CONST *c2const, codec2_fft_cfg fft_fwd_cfg, float w[], COMP W[]);
38float hpf(float x, float states[]);
39void dft_speech(C2CONST *c2const, codec2_fft_cfg fft_fwd_cfg, COMP Sw[], float Sn[], float w[]);
40void two_stage_pitch_refinement(C2CONST *c2const, MODEL *model, COMP Sw[]);
41void estimate_amplitudes(MODEL *model, COMP Sw[], COMP W[], int est_phase);
42float est_voicing_mbe(C2CONST *c2const, MODEL *model, COMP Sw[], COMP W[]);
43void make_synthesis_window(C2CONST *c2const, float Pn[]);
44void synthesise(int n_samp, codec2_fftr_cfg fftr_inv_cfg, float Sn_[], MODEL *model, float Pn[], int shift);
45
46#define CODEC2_RAND_MAX 32767
47int codec2_rand(void);
48
49#endif
diff --git a/stripdown.sh b/stripdown.sh
new file mode 100755
index 0000000..2e4466e
--- /dev/null
+++ b/stripdown.sh
@@ -0,0 +1,120 @@
1#!/bin/sh
2
3BUILDDIR=build_stripped
4DESTDIR=codec2lite
5
6LIBSRC="codebook.c codebookd.c codebookge.c codebookjvm.c codebooknewamp1.c codebooknewamp1_energy.c codec2.c codec2_fft.c interp.c kiss_fft.c kiss_fftr.c lpc.c lsp.c mbest.c newamp1.c newamp2.c nlp.c pack.c phase.c postfilter.c quantise.c sine.c"
7LIBGENSRC="codebooklspmelvq.c codebookmel.c codebooknewamp2.c codebooknewamp2_energy.c"
8
9LIBINC="_kiss_fft_guts.h comp_prim.h lpc.h os.h bpf.h lsp.h phase.h bpfb.h defines.h machdep.h postfilter.h mbest.h quantise.h codec2_fft.h interp.h newamp1.h sine.h codec2_internal.h kiss_fft.h newamp2.h comp.h kiss_fftr.h nlp.h"
10LIBGENINC="version.h"
11
12EMPTYINC="c2wideband.h dump.h"
13
14rm -rf "${BUILDDIR}" "${DESTDIR}"
15mkdir "${BUILDDIR}" "${DESTDIR}"
16
17# copy LICENSE
18cp COPYING "${DESTDIR}"/
19
20# copy static sources
21for file in ${LIBSRC} ${LIBINC}; do
22 cp src/"${file}" "${DESTDIR}"/
23done
24
25# fixup one include
26sed s:codec2/version.h:version.h: src/codec2.h > "${DESTDIR}"/codec2.h
27
28cat > "${DESTDIR}"/debug_alloc.h <<'EOF'
29#define FREE free
30#define MALLOC malloc
31EOF
32
33for file in ${EMPTYINC}; do
34 touch "${DESTDIR}"/"${file}"
35done
36
37cd ${BUILDDIR}
38cmake ..
39make tnewamp1
40
41# copy generated files
42for file in ${LIBGENSRC}; do
43 cp src/"${file}" ../"${DESTDIR}"/
44done
45
46for file in ${LIBGENINC}; do
47 cp codec2/"${file}" ../"${DESTDIR}"/
48done
49
50cd ..
51rm -r "${BUILDDIR}"
52
53cat > "${DESTDIR}"/Makefile <<'EOF'
54CFLAGS = -Wall -Wno-strict-overflow -std=gnu11 -fPIC -g -O2 -I.
55CFLAGS += -DHORUS_L2_RX -DINTERLEAVER -DRUN_TIME_TABLES -DSCRAMBLER -Dcodec2_EXPORTS
56CFLAGS += -Wno-incompatible-pointer-types-discards-qualifiers
57
58LIBSRC=codebook.c codebookd.c codebookge.c codebookmel.c codebooklspmelvq.c codebookjvm.c \
59 codebooknewamp1.c codebooknewamp1_energy.c codebooknewamp2.c codebooknewamp2_energy.c \
60 codec2.c codec2_fft.c interp.c kiss_fft.c kiss_fftr.c lpc.c lsp.c mbest.c \
61 newamp1.c newamp2.c nlp.c pack.c phase.c postfilter.c quantise.c sine.c
62
63all: main
64
65main: main.c $(LIBSRC)
66 clang $(CFLAGS) -o $@ $^
67
68.PHONY: clean
69clean:
70 rm -f main
71EOF
72
73cat > "${DESTDIR}"/main.c <<'EOF'
74#include <time.h>
75#include <stdio.h>
76
77#include "codec2.h"
78
79int main() {
80 struct timespec tstart={0,0}, tend={0,0};
81 short input[976692];
82 FILE * recoded = fopen("count-recoded.raw", "w+");
83 FILE * f = fopen("count.raw", "r");
84 void * codec2 = codec2_create(CODEC2_MODE_700C);
85 int nsam = codec2_samples_per_frame(codec2);
86 int nbit = codec2_bits_per_frame(codec2);
87 int off = 0;
88 unsigned char bits[128];
89
90 fread(input, 976692, 1, f);
91 fclose(f);
92
93 clock_gettime(CLOCK_MONOTONIC, &tstart);
94
95 while (off < 976692 / 2) {
96 codec2_encode(codec2, bits, input + off);
97 codec2_decode(codec2, input + off, bits);
98 off += 320;
99 }
100
101 clock_gettime(CLOCK_MONOTONIC, &tend);
102 printf("%lf\n", ((double)tend.tv_sec + 1.0e-9*tend.tv_nsec) - ((double)tstart.tv_sec + 1.0e-9*tstart.tv_nsec));
103
104 fwrite(input, 976692, 1, recoded);
105
106 codec2_destroy(codec2);
107}
108EOF
109
110cat > ${DESTDIR}/README <<'EOF'
111
112This project is meant to generate a subset of the amazing codec2 library containing only the actual speech codec and having no further dependencies than a C99 compiler.
113
114The generate a stripped down version of codec2 that does not need CMake etc, just copy the stripdown.sh file to your codec2 directory and run it. This will generate the directory you see here.
115
116Codec 2 is an open source (LGPL 2.1) low bit rate speech codec:
117
118http://rowetel.com/codec2.html
119
120EOF
diff --git a/version.h b/version.h
new file mode 100644
index 0000000..fc9891d
--- /dev/null
+++ b/version.h
@@ -0,0 +1,37 @@
1/*---------------------------------------------------------------------------*\
2
3 FILE........: version.h
4 AUTHOR......: Tomas Härdin
5 DATE CREATED: 03 November 2017
6
7 Codec 2 VERSION #defines
8
9\*---------------------------------------------------------------------------*/
10
11/*
12 Copyright (C) 2017 Tomas Härdin
13
14 All rights reserved.
15
16 This program is free software; you can redistribute it and/or modify
17 it under the terms of the GNU Lesser General Public License version 2.1, as
18 published by the Free Software Foundation. This program is
19 distributed in the hope that it will be useful, but WITHOUT ANY
20 WARRANTY; without even the implied warranty of MERCHANTABILITY or
21 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
22 License for more details.
23
24 You should have received a copy of the GNU Lesser General Public License
25 along with this program; if not, see <http://www.gnu.org/licenses/>.
26*/
27
28//this functions both as an include guard and your typical HAVE macro
29#ifndef CODEC2_HAVE_VERSION
30#define CODEC2_HAVE_VERSION
31
32#define CODEC2_VERSION_MAJOR 0
33#define CODEC2_VERSION_MINOR 9
34/* #undef CODEC2_VERSION_PATCH */
35#define CODEC2_VERSION "0.9"
36
37#endif //CODEC2_HAVE_VERSION