ref: dea62248dc147184c47d922e9a449d5e6440eee0
parent: b7b44ef77e27b65b020abe45eb92f159a3901d84
author: menno <menno>
date: Sun Sep 8 14:14:37 EDT 2002
Some small bugfixes (linux compilation) Lot's of fixed point stuff
--- a/common/mp4v2/atoms.h
+++ b/common/mp4v2/atoms.h
@@ -22,6 +22,13 @@
#ifndef __MP4_ATOMS_INCLUDED__
#define __MP4_ATOMS_INCLUDED__
+// declare all the atom subclasses
+// i.e. spare us atom_xxxx.h for all the atoms
+//
+// The majority of atoms just need their own constructor declared
+// Some atoms have a few special needs
+// A small minority of atoms need lots of special handling
+
class MP4RootAtom : public MP4Atom {
public:
MP4RootAtom();
--- a/common/mp4v2/mp4.h
+++ b/common/mp4v2/mp4.h
@@ -136,6 +136,8 @@
#define MP4_PCM16_AUDIO_TYPE 0xE0 /* a private definition */
#define MP4_VORBIS_AUDIO_TYPE 0xE1 /* a private definition */
#define MP4_AC3_AUDIO_TYPE 0xE2 /* a private definition */
+#define MP4_ALAW_AUDIO_TYPE 0xE3 /* a private definition */
+#define MP4_ULAW_AUDIO_TYPE 0xE4 /* a private definition */
/* MP4 MPEG-4 Audio types from 14496-3 Table 1.5.1 */
#define MP4_MPEG4_INVALID_AUDIO_TYPE 0
@@ -183,8 +185,9 @@
#define MP4_JPEG_VIDEO_TYPE 0x6C
#define MP4_PRIVATE_VIDEO_TYPE 0xD0
#define MP4_YUV12_VIDEO_TYPE 0xF0 /* a private definition */
-#define MP4_H26L_VIDEO_TYPE 0xF1 /* a private definition */
+#define MP4_H264_VIDEO_TYPE 0xF1 /* a private definition */
#define MP4_H263_VIDEO_TYPE 0xF2 /* a private definition */
+#define MP4_H261_VIDEO_TYPE 0xF3 /* a private definition */
/* MP4 Video type utilities */
#define MP4_IS_MPEG1_VIDEO_TYPE(type) \
--- a/common/mp4v2/mp4common.h
+++ b/common/mp4v2/mp4common.h
@@ -22,6 +22,10 @@
#ifndef __MP4_COMMON_INCLUDED__
#define __MP4_COMMON_INCLUDED__
+// common includes for everything
+// with an internal view of the library
+// i.e. all the .cpp's just #include "mp4common.h"
+
#include "mpeg4ip.h"
#include "mp4.h"
--- a/common/mp4v2/mp4info.cpp
+++ b/common/mp4v2/mp4info.cpp
@@ -49,8 +49,10 @@
MP4_MPEG2_AAC_SSR_AUDIO_TYPE, // 0x68
MP4_MPEG2_AUDIO_TYPE, // 0x69
MP4_MPEG1_AUDIO_TYPE, // 0x6B
- MP4_PCM16_AUDIO_TYPE,
- MP4_VORBIS_AUDIO_TYPE,
+ MP4_PCM16_AUDIO_TYPE,
+ MP4_VORBIS_AUDIO_TYPE,
+ MP4_ALAW_AUDIO_TYPE,
+ MP4_ULAW_AUDIO_TYPE,
};
static const char* mpegAudioNames[] = {
"MPEG-2 AAC Main",
@@ -60,6 +62,8 @@
"MPEG-1 (MP3)",
"PCM16",
"OGG VORBIS",
+ "G.711 aLaw",
+ "G.711 uLaw",
};
static u_int8_t numMpegAudioTypes =
sizeof(mpegAudioTypes) / sizeof(u_int8_t);
@@ -148,7 +152,9 @@
MP4_MPEG1_VIDEO_TYPE, // 0x6A
MP4_JPEG_VIDEO_TYPE, // 0x6C
MP4_YUV12_VIDEO_TYPE,
- MP4_H26L_VIDEO_TYPE
+ MP4_H264_VIDEO_TYPE,
+ MP4_H263_VIDEO_TYPE,
+ MP4_H261_VIDEO_TYPE,
};
static const char* mpegVideoNames[] = {
"MPEG-2 Simple",
@@ -160,7 +166,9 @@
"MPEG-1",
"JPEG",
"YUV12",
- "H26L"
+ "H.264",
+ "H.263",
+ "H.261",
};
static u_int8_t numMpegVideoTypes =
sizeof(mpegVideoTypes) / sizeof(u_int8_t);
--- a/common/mp4v2/mp4track.cpp
+++ b/common/mp4v2/mp4track.cpp
@@ -514,8 +514,15 @@
{
// for first sample
if (sampleId == 1) {
- // presume sample size is fixed
- m_pStszFixedSampleSizeProperty->SetValue(numBytes);
+ if (numBytes > 0) {
+ // presume sample size is fixed
+ m_pStszFixedSampleSizeProperty->SetValue(numBytes);
+ } else {
+ // special case of first sample is zero bytes in length
+ // leave m_pStszFixedSampleSizeProperty at 0
+ // start recording variable sample sizes
+ m_pStszSampleSizeProperty->AddValue(0);
+ }
} else { // sampleId > 1
u_int32_t fixedSampleSize =
--- a/frontend/audio.h
+++ b/frontend/audio.h
@@ -16,7 +16,7 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
-** $Id: audio.h,v 1.4 2002/08/21 16:23:15 menno Exp $
+** $Id: audio.h,v 1.5 2002/09/08 18:14:36 menno Exp $
**/
#ifndef AUDIO_H_INCLUDED
@@ -28,10 +28,8 @@
#define MAXWAVESIZE 4294967040LU
-enum {
- OUTPUT_WAV = 1,
- OUTPUT_RAW
-} output_format;
+#define OUTPUT_WAV 1
+#define OUTPUT_RAW 2
typedef struct
{
--- a/libfaad/Makefile.am
+++ b/libfaad/Makefile.am
@@ -3,7 +3,8 @@
VPATH = @srcdir@:codebook:
-libfaad_la_SOURCES = bits.c cfft.c data.c decoder.c drc.c error.c filtbank.c \
+libfaad_la_SOURCES = bits.c cfft.c data.c decoder.c dither.c drc.c \
+error.c filtbank.c \
ic_predict.c is.c lt_predict.c mdct.c mp4.c ms.c output.c pns.c \
pulse.c specrec.c syntax.c tns.c reordered_spectral_data.c \
rvlc_scale_factors.c \
@@ -10,7 +11,8 @@
hcb_1.c hcb_2.c hcb_3.c hcb_4.c hcb_5.c hcb_6.c hcb_7.c hcb_8.c \
hcb_9.c hcb_10.c hcb_11.c hcb_sf.c
-libfaad_la_INCLUDES = analysis.h bits.h cfft.h data.h decoder.h drc.h error.h \
+libfaad_la_INCLUDES = analysis.h bits.h cfft.h data.h decoder.h dither.h \
+drc.h error.h \
filtbank.h huffman.h ic_predict.h is.h kbd_win.h lt_predict.h mdct.h mp4.h \
ms.h output.h pns.h pulse.h rvlc_scale_factors.h \
specrec.h syntax.h tns.h codebook/hcb.h
--- a/libfaad/cfft.h
+++ b/libfaad/cfft.h
@@ -16,7 +16,7 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
-** $Id: cfft.h,v 1.2 2002/08/17 10:03:11 menno Exp $
+** $Id: cfft.h,v 1.3 2002/09/08 18:14:37 menno Exp $
**/
#ifndef __CFFT_H__
@@ -34,9 +34,9 @@
uint16_t n;
} cfft_info;
-void cfftf(cfft_info *cfft, real_t *c); // complex transform
-void cfftb(cfft_info *cfft, real_t *c); // its inverse
-cfft_info *cffti(uint16_t n); // initializer of the above routine pair
+void cfftf(cfft_info *cfft, real_t *c);
+void cfftb(cfft_info *cfft, real_t *c);
+cfft_info *cffti(uint16_t n);
void cfftu(cfft_info *cfft);
--- a/libfaad/common.h
+++ b/libfaad/common.h
@@ -16,7 +16,7 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
-** $Id: common.h,v 1.19 2002/08/27 18:16:12 menno Exp $
+** $Id: common.h,v 1.20 2002/09/08 18:14:37 menno Exp $
**/
#ifndef __COMMON_H__
@@ -44,19 +44,9 @@
#define min(a, b) (((a) < (b)) ? (a) : (b))
#endif
-#ifndef LN2
-#define LN2 0.6931471805599453
-#endif
-#ifndef LN05
-#define LN05 -LN2
-#endif
-
/* COMPILE TIME DEFINITIONS */
-/* use the somewhat faster, but a lot larger FFTW library */
-//#define USE_FFTW
-
/* use double precision */
/* #define USE_DOUBLE_PRECISION */
/* use fixed point reals */
@@ -121,7 +111,6 @@
#else /* Some other OS */
-
#include <inttypes.h>
#endif
@@ -129,7 +118,6 @@
/* FIXED_POINT doesn't work with FFTW */
#ifdef FIXED_POINT
#undef MAIN_DEC
- #undef USE_FFTW
#endif
@@ -148,9 +136,7 @@
#define MUL(A,B) ((A)*(B))
#define MUL_C_C(A,B) ((A)*(B))
#define MUL_R_C(A,B) ((A)*(B))
- #define MUL_R_1(A,B) ((A)*(B))
- #define COEF_CONST_1(A) ((real_t)A)
#define REAL_CONST(A) ((real_t)A)
#define COEF_CONST(A) ((real_t)A)
@@ -161,9 +147,7 @@
#define MUL(A,B) ((A)*(B))
#define MUL_C_C(A,B) ((A)*(B))
#define MUL_R_C(A,B) ((A)*(B))
- #define MUL_R_1(A,B) ((A)*(B))
- #define COEF_CONST_1(A) ((real_t)A)
#define REAL_CONST(A) ((real_t)A)
#define COEF_CONST(A) ((real_t)A)
@@ -174,7 +158,6 @@
#define sin sinf
#define cos cosf
#define log logf
- #define exp expf
#define floor floorf
#define ceil ceilf
#define sqrt sqrtf
--- a/libfaad/decoder.c
+++ b/libfaad/decoder.c
@@ -16,7 +16,7 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
-** $Id: decoder.c,v 1.31 2002/09/05 20:10:53 menno Exp $
+** $Id: decoder.c,v 1.32 2002/09/08 18:14:37 menno Exp $
**/
#include <stdlib.h>
@@ -85,14 +85,9 @@
hDecoder->drc = drc_init(REAL_CONST(1.0), REAL_CONST(1.0));
- hDecoder->iq_table = (real_t*)malloc(IQ_TABLE_SIZE*sizeof(real_t));
-
- /* build table for inverse quantization */
-#if IQ_TABLE_SIZE && POW_TABLE_SIZE
+#if POW_TABLE_SIZE
hDecoder->pow2_table = (real_t*)malloc(POW_TABLE_SIZE*sizeof(real_t));
- build_tables(hDecoder->iq_table, hDecoder->pow2_table);
-#elif !POW_TABLE_SIZE
- build_tables(hDecoder->iq_table, NULL);
+ build_tables(hDecoder->pow2_table);
#endif
return hDecoder;
@@ -328,10 +323,11 @@
drc_end(hDecoder->drc);
- if (hDecoder->iq_table) free(hDecoder->iq_table);
+#ifndef FIXED_POINT
#if POW_TABLE_SIZE
if (hDecoder->pow2_table) free(hDecoder->pow2_table);
#endif
+#endif
if (hDecoder->sample_buffer) free(hDecoder->sample_buffer);
@@ -456,12 +452,13 @@
#ifdef LTP_DEC
real_t **lt_pred_stat = hDecoder->lt_pred_stat;
#endif
- real_t *iq_table = hDecoder->iq_table;
+#ifndef FIXED_POINT
#if POW_TABLE_SIZE
real_t *pow2_table = hDecoder->pow2_table;
#else
real_t *pow2_table = NULL;
-#endif
+#endif
+#endif
uint8_t *window_shape_prev = hDecoder->window_shape_prev;
real_t **time_out = hDecoder->time_out;
fb_info *fb = hDecoder->fb;
@@ -646,11 +643,14 @@
}
/* inverse quantization */
- inverse_quantization(spec_coef[ch], spec_data[ch], iq_table,
- frame_len);
+ inverse_quantization(spec_coef[ch], spec_data[ch], frame_len);
/* apply scalefactors */
+#ifdef FIXED_POINT
+ apply_scalefactors(ics, spec_coef[ch], frame_len);
+#else
apply_scalefactors(ics, spec_coef[ch], pow2_table, frame_len);
+#endif
/* deinterleave short block grouping */
if (ics->window_sequence == EIGHT_SHORT_SEQUENCE)
@@ -761,7 +761,6 @@
tns_decode_frame(ics, &(ics->tns), sf_index, object_type,
spec_coef[ch], frame_len);
-#ifndef FIXED_POINT
/* drc decoding */
if (drc->present)
{
@@ -768,7 +767,6 @@
if (!drc->exclude_mask[ch] || !drc->excluded_chns_present)
drc_decode(drc, spec_coef[ch]);
}
-#endif
if (time_out[ch] == NULL)
{
--- a/libfaad/decoder.h
+++ b/libfaad/decoder.h
@@ -16,7 +16,7 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
-** $Id: decoder.h,v 1.14 2002/08/30 19:03:48 menno Exp $
+** $Id: decoder.h,v 1.15 2002/09/08 18:14:37 menno Exp $
**/
#ifndef __DECODER_H__
@@ -100,13 +100,11 @@
real_t *lt_pred_stat[MAX_CHANNELS];
#endif
- real_t exp_table[256];
- real_t mnt_table[128];
-
- real_t *iq_table;
+#ifndef FIXED_POINT
#if POW_TABLE_SIZE
real_t *pow2_table;
-#endif
+#endif
+#endif
/* Configuration data */
faacDecConfiguration config;
--- a/libfaad/dither.h
+++ b/libfaad/dither.h
@@ -40,5 +40,4 @@
}
#endif
-#endif __RAND_T_H
-
+#endif
--- a/libfaad/drc.c
+++ b/libfaad/drc.c
@@ -16,7 +16,7 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
-** $Id: drc.c,v 1.9 2002/08/27 10:24:55 menno Exp $
+** $Id: drc.c,v 1.10 2002/09/08 18:14:37 menno Exp $
**/
#include "common.h"
@@ -47,11 +47,67 @@
if (drc) free(drc);
}
-#ifndef FIXED_POINT
+#ifdef FIXED_POINT
+static real_t drc_pow2_table[] =
+{
+ COEF_CONST(0.5146511183),
+ COEF_CONST(0.5297315472),
+ COEF_CONST(0.5452538663),
+ COEF_CONST(0.5612310242),
+ COEF_CONST(0.5776763484),
+ COEF_CONST(0.5946035575),
+ COEF_CONST(0.6120267717),
+ COEF_CONST(0.6299605249),
+ COEF_CONST(0.6484197773),
+ COEF_CONST(0.6674199271),
+ COEF_CONST(0.6869768237),
+ COEF_CONST(0.7071067812),
+ COEF_CONST(0.7278265914),
+ COEF_CONST(0.7491535384),
+ COEF_CONST(0.7711054127),
+ COEF_CONST(0.7937005260),
+ COEF_CONST(0.8169577266),
+ COEF_CONST(0.8408964153),
+ COEF_CONST(0.8655365610),
+ COEF_CONST(0.8908987181),
+ COEF_CONST(0.9170040432),
+ COEF_CONST(0.9438743127),
+ COEF_CONST(0.9715319412),
+ COEF_CONST(1.0000000000),
+ COEF_CONST(1.0293022366),
+ COEF_CONST(1.0594630944),
+ COEF_CONST(1.0905077327),
+ COEF_CONST(1.1224620483),
+ COEF_CONST(1.1553526969),
+ COEF_CONST(1.1892071150),
+ COEF_CONST(1.2240535433),
+ COEF_CONST(1.2599210499),
+ COEF_CONST(1.2968395547),
+ COEF_CONST(1.3348398542),
+ COEF_CONST(1.3739536475),
+ COEF_CONST(1.4142135624),
+ COEF_CONST(1.4556531828),
+ COEF_CONST(1.4983070769),
+ COEF_CONST(1.5422108254),
+ COEF_CONST(1.5874010520),
+ COEF_CONST(1.6339154532),
+ COEF_CONST(1.6817928305),
+ COEF_CONST(1.7310731220),
+ COEF_CONST(1.7817974363),
+ COEF_CONST(1.8340080864),
+ COEF_CONST(1.8877486254),
+ COEF_CONST(1.9430638823)
+};
+#endif
+
void drc_decode(drc_info *drc, real_t *spec)
{
uint16_t i, bd, top;
- real_t factor;
+#ifdef FIXED_POINT
+ int32_t exp, frac;
+#else
+ real_t factor, exp;
+#endif
uint16_t bottom = 0;
if (drc->num_bands == 1)
@@ -61,28 +117,47 @@
{
top = 4 * (drc->band_top[bd] + 1);
+#ifndef FIXED_POINT
/* Decode DRC gain factor */
if (drc->dyn_rng_sgn[bd]) /* compress */
- factor = REAL_CONST(exp(LN2 * (-drc->ctrl1 * drc->dyn_rng_ctl[bd]/24.0)));
+ exp = -drc->ctrl1 * (drc->dyn_rng_ctl[bd] - (DRC_REF_LEVEL - drc->prog_ref_level))/24.0;
else /* boost */
- factor = REAL_CONST(exp(LN2 * (drc->ctrl2 * drc->dyn_rng_ctl[bd]/24.0)));
+ exp = drc->ctrl2 * (drc->dyn_rng_ctl[bd] - (DRC_REF_LEVEL - drc->prog_ref_level))/24.0;
+ factor = REAL_CONST(pow(2.0, exp));
- /* Level alignment between different programs (if desired) */
- /* If program reference normalization is done in the digital domain,
- modify factor to perform normalization.
- prog_ref_level can alternatively be passed to the system for
- modification of the level in the analog domain. Analog level
- modification avoids problems with reduced DAC SNR (if signal is
- attenuated) or clipping (if signal is boosted)
- */
- factor = MUL(factor,
- REAL_CONST(exp(LN05 * ((DRC_REF_LEVEL - drc->prog_ref_level)/24.0))));
-
/* Apply gain factor */
for (i = bottom; i < top; i++)
spec[i] = MUL(spec[i], factor);
+#else
+ /* Decode DRC gain factor */
+ if (drc->dyn_rng_sgn[bd]) /* compress */
+ {
+ exp = -1 * (drc->dyn_rng_ctl[bd] - (DRC_REF_LEVEL - drc->prog_ref_level))/ 24;
+ frac = -1 * (drc->dyn_rng_ctl[bd] - (DRC_REF_LEVEL - drc->prog_ref_level)) % 24;
+ } else { /* boost */
+ exp = (drc->dyn_rng_ctl[bd] - (DRC_REF_LEVEL - drc->prog_ref_level))/ 24;
+ frac = (drc->dyn_rng_ctl[bd] - (DRC_REF_LEVEL - drc->prog_ref_level)) % 24;
+ }
+ /* Apply gain factor */
+ if (exp < 0)
+ {
+ for (i = bottom; i < top; i++)
+ {
+ spec[i] >>= -exp;
+ if (frac)
+ spec[i] = MUL(spec[i],drc_pow2_table[frac+23]);
+ }
+ } else {
+ for (i = bottom; i < top; i++)
+ {
+ spec[i] <<= exp;
+ if (frac)
+ spec[i] = MUL(spec[i],drc_pow2_table[frac+23]);
+ }
+ }
+#endif
+
bottom = top;
}
}
-#endif
--- a/libfaad/drc.h
+++ b/libfaad/drc.h
@@ -16,7 +16,7 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
-** $Id: drc.h,v 1.4 2002/08/17 12:27:33 menno Exp $
+** $Id: drc.h,v 1.5 2002/09/08 18:14:37 menno Exp $
**/
#ifndef __DRC_H__
@@ -26,7 +26,7 @@
extern "C" {
#endif
-#define DRC_REF_LEVEL 20.0*4.0 /* -20 dB */
+#define DRC_REF_LEVEL 20*4 /* -20 dB */
drc_info *drc_init(real_t cut, real_t boost);
void drc_end(drc_info *drc);
--- a/libfaad/filtbank.c
+++ b/libfaad/filtbank.c
@@ -16,7 +16,7 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
-** $Id: filtbank.c,v 1.18 2002/08/30 12:10:57 menno Exp $
+** $Id: filtbank.c,v 1.19 2002/09/08 18:14:37 menno Exp $
**/
#include "common.h"
@@ -27,12 +27,12 @@
#include "filtbank.h"
#include "syntax.h"
#include "kbd_win.h"
+#include "sine_win.h"
#include "mdct.h"
fb_info *filter_bank_init(uint16_t frame_len)
{
- uint16_t i;
uint16_t nshort = frame_len/8;
#ifdef LD_DEC
uint16_t frame_len_ld = frame_len/2;
@@ -44,47 +44,31 @@
/* normal */
fb->mdct256 = faad_mdct_init(2*nshort);
fb->mdct2048 = faad_mdct_init(2*frame_len);
-
- fb->long_window[0] = (real_t*)malloc(frame_len*sizeof(real_t));
- fb->short_window[0] = (real_t*)malloc(nshort*sizeof(real_t));
-#ifndef FIXED_POINT
- fb->long_window[1] = kbd_long;
- fb->short_window[1] = kbd_short;
-#else
- fb->long_window[1] = (real_t*)malloc(frame_len*sizeof(real_t));
- fb->short_window[1] = (real_t*)malloc(nshort*sizeof(real_t));
-
- for (i = 0; i < frame_len; i++)
- fb->long_window[1][i] = COEF_CONST(kbd_long[i]);
- for (i = 0; i < nshort; i++)
- fb->short_window[1][i] = COEF_CONST(kbd_short[i]);
-#endif
-
- /* calculate the sine windows */
- for (i = 0; i < frame_len; i++)
- fb->long_window[0][i] = COEF_CONST(sin(M_PI / (2.0 * (float32_t)frame_len) * ((float32_t)i + 0.5)));
- for (i = 0; i < nshort; i++)
- fb->short_window[0][i] = COEF_CONST(sin(M_PI / (2.0 * (float32_t)nshort) * ((float32_t)i + 0.5)));
-
#ifdef LD_DEC
/* LD */
- fb->mdct1024 = faad_mdct_init(frame_len_ld);
+ fb->mdct1024 = faad_mdct_init(2*frame_len_ld);
+#endif
- fb->ld_window[0] = (real_t*)malloc(frame_len_ld*sizeof(real_t));
- fb->ld_window[1] = (real_t*)malloc(frame_len_ld*sizeof(real_t));
-
- /* calculate the sine windows */
- for (i = 0; i < frame_len_ld; i++)
- fb->ld_window[0][i] = COEF_CONST(sin(M_PI / (2.0 * frame_len_ld) * (i + 0.5)));
-
- /* low overlap window */
- for (i = 0; i < 3*(frame_len_ld>>3); i++)
- fb->ld_window[1][i] = COEF_CONST(0.0);
- for (; i < 5*(frame_len_ld>>3); i++)
- fb->ld_window[1][i] = COEF_CONST(sin((i-3*(frame_len_ld>>3)+0.5) * M_PI / (real_t)(frame_len_ld>>1)));
- for (; i < frame_len_ld; i++)
- fb->ld_window[1][i] = COEF_CONST(1.0);
+ if (frame_len == 1024)
+ {
+ fb->long_window[0] = sine_long_1024;
+ fb->short_window[0] = sine_short_128;
+ fb->long_window[1] = kbd_long_1024;
+ fb->short_window[1] = kbd_short_128;
+#ifdef LD_DEC
+ fb->ld_window[0] = sine_mid_512;
+ fb->ld_window[1] = ld_mid_512;
#endif
+ } else /* (frame_len == 960) */ {
+ fb->long_window[0] = sine_long_960;
+ fb->short_window[0] = sine_short_120;
+ fb->long_window[1] = kbd_long_960;
+ fb->short_window[1] = kbd_short_120;
+#ifdef LD_DEC
+ fb->ld_window[0] = sine_mid_480;
+ fb->ld_window[1] = ld_mid_480;
+#endif
+ }
return fb;
}
@@ -93,19 +77,8 @@
{
faad_mdct_end(fb->mdct256);
faad_mdct_end(fb->mdct2048);
-
- if (fb->long_window[0]) free(fb->long_window[0]);
- if (fb->short_window[0]) free(fb->short_window[0]);
-#ifdef FIXED_POINT
- if (fb->long_window[1]) free(fb->long_window[1]);
- if (fb->short_window[1]) free(fb->short_window[1]);
-#endif
-
#ifdef LD_DEC
faad_mdct_end(fb->mdct1024);
-
- if (fb->ld_window[0]) free(fb->ld_window[0]);
- if (fb->ld_window[1]) free(fb->ld_window[1]);
#endif
if (fb) free(fb);
@@ -268,7 +241,7 @@
}
#ifdef LTP_DEC
-/* only works for LTP -> no overlapping no short blocks */
+/* only works for LTP -> no overlapping, no short blocks */
void filter_bank_ltp(fb_info *fb, uint8_t window_sequence, uint8_t window_shape,
uint8_t window_shape_prev, real_t *in_data, real_t *out_mdct,
uint8_t object_type, uint16_t frame_len)
--- a/libfaad/fixed.h
+++ b/libfaad/fixed.h
@@ -16,7 +16,7 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
-** $Id: fixed.h,v 1.2 2002/08/27 10:24:55 menno Exp $
+** $Id: fixed.h,v 1.3 2002/09/08 18:14:37 menno Exp $
**/
#ifndef __FIXED_H__
@@ -27,8 +27,6 @@
#endif
-#define COEF_1_BITS 31
-#define COEF_1_PRECISION (1 << COEF_1_BITS)
#define COEF_BITS 28
#define COEF_PRECISION (1 << COEF_BITS)
#define REAL_BITS 7
@@ -38,7 +36,6 @@
typedef int32_t real_t;
-#define COEF_CONST_1(A) ((real_t)(A*(COEF_1_PRECISION)))
#define REAL_CONST(A) ((real_t)(A*(REAL_PRECISION)))
#define COEF_CONST(A) ((real_t)(A*(COEF_PRECISION)))
@@ -74,16 +71,6 @@
}
}
-/* multiply real with coef_1 */
-static INLINE MUL_R_1(real_t A, real_t B)
-{
- _asm {
- mov eax,A
- imul B
- shrd eax,edx,COEF_1_BITS
- }
-}
-
#else
/* multiply real with real */
@@ -92,8 +79,6 @@
#define MUL_C_C(A,B) (real_t)(((int64_t)(A)*(int64_t)(B)+(1 << (COEF_BITS-1))) >> COEF_BITS)
/* multiply real with coef */
#define MUL_R_C(A,B) (real_t)(((int64_t)(A)*(int64_t)(B)+(1 << (COEF_BITS-1))) >> COEF_BITS)
- /* multiply real with coef_1 */
- #define MUL_R_1(A,B) (real_t)(((int64_t)(A)*(int64_t)(B)+(1 << (COEF_1_BITS-1))) >> COEF_1_BITS)
#endif
--- a/libfaad/ic_predict.c
+++ b/libfaad/ic_predict.c
@@ -16,7 +16,7 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
-** $Id: ic_predict.c,v 1.8 2002/08/17 12:27:33 menno Exp $
+** $Id: ic_predict.c,v 1.9 2002/09/08 18:14:37 menno Exp $
**/
#include "common.h"
@@ -27,28 +27,6 @@
#include "ic_predict.h"
#include "pns.h"
-static void flt_round_inf(real_t *pf)
-{
- int32_t flg;
- uint32_t tmp;
- real_t *pt = (real_t *)&tmp;
-
- *pt = *pf;
- flg = tmp & (uint32_t)0x00008000;
- tmp &= (uint32_t)0xffff0000;
- *pf = *pt;
-
- /* round 1/2 lsb toward infinity */
- if (flg)
- {
- tmp &= (uint32_t)0xff800000; /* extract exponent and sign */
- tmp |= (uint32_t)0x00010000; /* insert 1 lsb */
- *pf += *pt; /* add 1 lsb and elided one */
- tmp &= (uint32_t)0xff800000; /* extract exponent and sign */
- *pf -= *pt; /* subtract elided one */
- }
-}
-
static void ic_predict(pred_state *state, real_t input, real_t *output, uint8_t pred)
{
real_t dr1, predictedvalue;
@@ -77,7 +55,6 @@
k2 = KOR[1]/VAR[1]*B;
predictedvalue = MUL(k1, r[0]) + MUL(k2, r[1]);
- flt_round_inf(&predictedvalue);
*output = input + predictedvalue;
} else {
--- /dev/null
+++ b/libfaad/iq_table.h
@@ -1,0 +1,2106 @@
+/*
+** FAAD - Freeware Advanced Audio Decoder
+** Copyright (C) 2002 M. Bakker
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+**
+** $Id: iq_table.h,v 1.1 2002/09/08 18:14:37 menno Exp $
+**/
+
+#ifndef IQ_TABLE_H__
+#define IQ_TABLE_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* !!!DON'T CHANGE IQ_TABLE_SIZE!!! */
+#define IQ_TABLE_SIZE 1026
+
+#ifndef FIXED_POINT
+
+#ifdef _MSC_VER
+#pragma warning(disable:4305)
+#pragma warning(disable:4244)
+#endif
+
+static real_t iq_table[] =
+{
+ 0.0000000000,
+ 1.0000000000,
+ 2.5198420998,
+ 4.3267487109,
+ 6.3496042079,
+ 8.5498797334,
+ 10.9027235570,
+ 13.3905182794,
+ 16.0000000000,
+ 18.7207544075,
+ 21.5443469003,
+ 24.4637809963,
+ 27.4731418213,
+ 30.5673509404,
+ 33.7419916985,
+ 36.9931811150,
+ 40.3174735966,
+ 43.7117870412,
+ 47.1733450958,
+ 50.6996313257,
+ 54.2883523319,
+ 57.9374077040,
+ 61.6448652744,
+ 65.4089405366,
+ 69.2279793748,
+ 73.1004434553,
+ 77.0248977786,
+ 81.0000000000,
+ 85.0244912125,
+ 89.0971879449,
+ 93.2169751786,
+ 97.3828002241,
+ 101.5936673260,
+ 105.8486328899,
+ 110.1468012434,
+ 114.4873208566,
+ 118.8693809602,
+ 123.2922085109,
+ 127.7550654584,
+ 132.2572462776,
+ 136.7980757341,
+ 141.3769068557,
+ 145.9931190852,
+ 150.6461165966,
+ 155.3353267543,
+ 160.0601987021,
+ 164.8202020667,
+ 169.6148257665,
+ 174.4435769119,
+ 179.3059797911,
+ 184.2015749320,
+ 189.1299182326,
+ 194.0905801545,
+ 199.0831449737,
+ 204.1072100830,
+ 209.1623853419,
+ 214.2482924705,
+ 219.3645644828,
+ 224.5108451564,
+ 229.6867885365,
+ 234.8920584701,
+ 240.1263281692,
+ 245.3892798002,
+ 250.6806040975,
+ 256.0000000000,
+ 261.3471743083,
+ 266.7218413611,
+ 272.1237227299,
+ 277.5525469304,
+ 283.0080491495,
+ 288.4899709866,
+ 293.9980602090,
+ 299.5320705195,
+ 305.0917613358,
+ 310.6768975818,
+ 316.2872494882,
+ 321.9225924034,
+ 327.5827066139,
+ 333.2673771724,
+ 338.9763937351,
+ 344.7095504051,
+ 350.4666455847,
+ 356.2474818330,
+ 362.0518657308,
+ 367.8796077506,
+ 373.7305221334,
+ 379.6044267700,
+ 385.5011430873,
+ 391.4204959402,
+ 397.3623135070,
+ 403.3264271901,
+ 409.3126715201,
+ 415.3208840636,
+ 421.3509053358,
+ 427.4025787150,
+ 433.4757503618,
+ 439.5702691405,
+ 445.6859865441,
+ 451.8227566217,
+ 457.9804359091,
+ 464.1588833613,
+ 470.3579602882,
+ 476.5775302922,
+ 482.8174592083,
+ 489.0776150459,
+ 495.3578679332,
+ 501.6580900633,
+ 507.9781556420,
+ 514.3179408377,
+ 520.6773237328,
+ 527.0561842769,
+ 533.4544042413,
+ 539.8718671753,
+ 546.3084583636,
+ 552.7640647857,
+ 559.2385750758,
+ 565.7318794845,
+ 572.2438698415,
+ 578.7744395198,
+ 585.3234834006,
+ 591.8908978393,
+ 598.4765806331,
+ 605.0804309888,
+ 611.7023494920,
+ 618.3422380776,
+ 625.0000000000,
+ 631.6755398055,
+ 638.3687633048,
+ 645.0795775462,
+ 651.8078907899,
+ 658.5536124831,
+ 665.3166532354,
+ 672.0969247951,
+ 678.8943400262,
+ 685.7088128862,
+ 692.5402584041,
+ 699.3885926590,
+ 706.2537327602,
+ 713.1355968262,
+ 720.0341039659,
+ 726.9491742592,
+ 733.8807287386,
+ 740.8286893712,
+ 747.7929790411,
+ 754.7735215322,
+ 761.7702415115,
+ 768.7830645130,
+ 775.8119169219,
+ 782.8567259587,
+ 789.9174196648,
+ 796.9939268870,
+ 804.0861772639,
+ 811.1941012115,
+ 818.3176299096,
+ 825.4566952887,
+ 832.6112300164,
+ 839.7811674856,
+ 846.9664418012,
+ 854.1669877685,
+ 861.3827408814,
+ 868.6136373104,
+ 875.8596138918,
+ 883.1206081164,
+ 890.3965581189,
+ 897.6874026669,
+ 904.9930811514,
+ 912.3135335758,
+ 919.6487005467,
+ 926.9985232641,
+ 934.3629435117,
+ 941.7419036483,
+ 949.1353465979,
+ 956.5432158417,
+ 963.9654554089,
+ 971.4020098686,
+ 978.8528243212,
+ 986.3178443907,
+ 993.7970162163,
+ 1001.2902864449,
+ 1008.7976022234,
+ 1016.3189111915,
+ 1023.8541614739,
+ 1031.4033016737,
+ 1038.9662808647,
+ 1046.5430485854,
+ 1054.1335548314,
+ 1061.7377500496,
+ 1069.3555851309,
+ 1076.9870114047,
+ 1084.6319806319,
+ 1092.2904449995,
+ 1099.9623571140,
+ 1107.6476699961,
+ 1115.3463370744,
+ 1123.0583121801,
+ 1130.7835495416,
+ 1138.5220037785,
+ 1146.2736298969,
+ 1154.0383832838,
+ 1161.8162197020,
+ 1169.6070952851,
+ 1177.4109665328,
+ 1185.2277903054,
+ 1193.0575238198,
+ 1200.9001246442,
+ 1208.7555506939,
+ 1216.6237602266,
+ 1224.5047118380,
+ 1232.3983644575,
+ 1240.3046773436,
+ 1248.2236100803,
+ 1256.1551225723,
+ 1264.0991750417,
+ 1272.0557280230,
+ 1280.0247423603,
+ 1288.0061792024,
+ 1296.0000000000,
+ 1304.0061665011,
+ 1312.0246407478,
+ 1320.0553850728,
+ 1328.0983620955,
+ 1336.1535347188,
+ 1344.2208661255,
+ 1352.3003197751,
+ 1360.3918594003,
+ 1368.4954490040,
+ 1376.6110528559,
+ 1384.7386354892,
+ 1392.8781616980,
+ 1401.0295965338,
+ 1409.1929053025,
+ 1417.3680535619,
+ 1425.5550071182,
+ 1433.7537320236,
+ 1441.9641945733,
+ 1450.1863613025,
+ 1458.4201989843,
+ 1466.6656746263,
+ 1474.9227554684,
+ 1483.1914089801,
+ 1491.4716028579,
+ 1499.7633050227,
+ 1508.0664836175,
+ 1516.3811070048,
+ 1524.7071437644,
+ 1533.0445626906,
+ 1541.3933327903,
+ 1549.7534232806,
+ 1558.1248035861,
+ 1566.5074433375,
+ 1574.9013123686,
+ 1583.3063807145,
+ 1591.7226186094,
+ 1600.1499964846,
+ 1608.5884849662,
+ 1617.0380548732,
+ 1625.4986772154,
+ 1633.9703231917,
+ 1642.4529641876,
+ 1650.9465717736,
+ 1659.4511177036,
+ 1667.9665739122,
+ 1676.4929125137,
+ 1685.0301057998,
+ 1693.5781262378,
+ 1702.1369464690,
+ 1710.7065393070,
+ 1719.2868777356,
+ 1727.8779349075,
+ 1736.4796841426,
+ 1745.0920989258,
+ 1753.7151529063,
+ 1762.3488198950,
+ 1770.9930738636,
+ 1779.6478889428,
+ 1788.3132394207,
+ 1796.9890997413,
+ 1805.6754445031,
+ 1814.3722484576,
+ 1823.0794865074,
+ 1831.7971337056,
+ 1840.5251652535,
+ 1849.2635564999,
+ 1858.0122829390,
+ 1866.7713202096,
+ 1875.5406440938,
+ 1884.3202305150,
+ 1893.1100555371,
+ 1901.9100953633,
+ 1910.7203263343,
+ 1919.5407249276,
+ 1928.3712677557,
+ 1937.2119315653,
+ 1946.0626932359,
+ 1954.9235297784,
+ 1963.7944183344,
+ 1972.6753361744,
+ 1981.5662606973,
+ 1990.4671694285,
+ 1999.3780400196,
+ 2008.2988502465,
+ 2017.2295780088,
+ 2026.1702013285,
+ 2035.1206983489,
+ 2044.0810473338,
+ 2053.0512266659,
+ 2062.0312148464,
+ 2071.0209904936,
+ 2080.0205323417,
+ 2089.0298192403,
+ 2098.0488301532,
+ 2107.0775441570,
+ 2116.1159404408,
+ 2125.1639983049,
+ 2134.2216971598,
+ 2143.2890165253,
+ 2152.3659360297,
+ 2161.4524354089,
+ 2170.5484945052,
+ 2179.6540932666,
+ 2188.7692117462,
+ 2197.8938301007,
+ 2207.0279285901,
+ 2216.1714875766,
+ 2225.3244875237,
+ 2234.4869089955,
+ 2243.6587326558,
+ 2252.8399392674,
+ 2262.0305096911,
+ 2271.2304248850,
+ 2280.4396659037,
+ 2289.6582138977,
+ 2298.8860501122,
+ 2308.1231558868,
+ 2317.3695126545,
+ 2326.6251019409,
+ 2335.8899053637,
+ 2345.1639046317,
+ 2354.4470815443,
+ 2363.7394179907,
+ 2373.0408959490,
+ 2382.3514974860,
+ 2391.6712047559,
+ 2401.0000000000,
+ 2410.3378655461,
+ 2419.6847838074,
+ 2429.0407372823,
+ 2438.4057085534,
+ 2447.7796802872,
+ 2457.1626352330,
+ 2466.5545562227,
+ 2475.9554261700,
+ 2485.3652280695,
+ 2494.7839449968,
+ 2504.2115601072,
+ 2513.6480566352,
+ 2523.0934178943,
+ 2532.5476272760,
+ 2542.0106682495,
+ 2551.4825243609,
+ 2560.9631792328,
+ 2570.4526165636,
+ 2579.9508201270,
+ 2589.4577737714,
+ 2598.9734614194,
+ 2608.4978670675,
+ 2618.0309747849,
+ 2627.5727687136,
+ 2637.1232330677,
+ 2646.6823521328,
+ 2656.2501102653,
+ 2665.8264918923,
+ 2675.4114815110,
+ 2685.0050636878,
+ 2694.6072230582,
+ 2704.2179443264,
+ 2713.8372122643,
+ 2723.4650117115,
+ 2733.1013275747,
+ 2742.7461448270,
+ 2752.3994485079,
+ 2762.0612237221,
+ 2771.7314556399,
+ 2781.4101294962,
+ 2791.0972305902,
+ 2800.7927442847,
+ 2810.4966560063,
+ 2820.2089512442,
+ 2829.9296155502,
+ 2839.6586345385,
+ 2849.3959938845,
+ 2859.1416793251,
+ 2868.8956766580,
+ 2878.6579717413,
+ 2888.4285504930,
+ 2898.2073988909,
+ 2907.9945029718,
+ 2917.7898488313,
+ 2927.5934226236,
+ 2937.4052105607,
+ 2947.2251989123,
+ 2957.0533740053,
+ 2966.8897222234,
+ 2976.7342300070,
+ 2986.5868838523,
+ 2996.4476703115,
+ 3006.3165759920,
+ 3016.1935875562,
+ 3026.0786917212,
+ 3035.9718752584,
+ 3045.8731249931,
+ 3055.7824278041,
+ 3065.6997706236,
+ 3075.6251404365,
+ 3085.5585242804,
+ 3095.4999092450,
+ 3105.4492824719,
+ 3115.4066311543,
+ 3125.3719425365,
+ 3135.3452039137,
+ 3145.3264026318,
+ 3155.3155260867,
+ 3165.3125617243,
+ 3175.3174970403,
+ 3185.3303195795,
+ 3195.3510169356,
+ 3205.3795767511,
+ 3215.4159867169,
+ 3225.4602345719,
+ 3235.5123081028,
+ 3245.5721951437,
+ 3255.6398835758,
+ 3265.7153613275,
+ 3275.7986163735,
+ 3285.8896367348,
+ 3295.9884104787,
+ 3306.0949257178,
+ 3316.2091706107,
+ 3326.3311333606,
+ 3336.4608022160,
+ 3346.5981654700,
+ 3356.7432114599,
+ 3366.8959285672,
+ 3377.0563052172,
+ 3387.2243298788,
+ 3397.3999910641,
+ 3407.5832773283,
+ 3417.7741772695,
+ 3427.9726795281,
+ 3438.1787727870,
+ 3448.3924457710,
+ 3458.6136872466,
+ 3468.8424860221,
+ 3479.0788309468,
+ 3489.3227109112,
+ 3499.5741148464,
+ 3509.8330317244,
+ 3520.0994505573,
+ 3530.3733603973,
+ 3540.6547503364,
+ 3550.9436095064,
+ 3561.2399270783,
+ 3571.5436922624,
+ 3581.8548943078,
+ 3592.1735225026,
+ 3602.4995661730,
+ 3612.8330146838,
+ 3623.1738574377,
+ 3633.5220838752,
+ 3643.8776834744,
+ 3654.2406457510,
+ 3664.6109602577,
+ 3674.9886165844,
+ 3685.3736043574,
+ 3695.7659132398,
+ 3706.1655329312,
+ 3716.5724531671,
+ 3726.9866637191,
+ 3737.4081543945,
+ 3747.8369150361,
+ 3758.2729355221,
+ 3768.7162057659,
+ 3779.1667157159,
+ 3789.6244553551,
+ 3800.0894147012,
+ 3810.5615838063,
+ 3821.0409527566,
+ 3831.5275116724,
+ 3842.0212507077,
+ 3852.5221600504,
+ 3863.0302299216,
+ 3873.5454505757,
+ 3884.0678123003,
+ 3894.5973054159,
+ 3905.1339202756,
+ 3915.6776472653,
+ 3926.2284768030,
+ 3936.7863993390,
+ 3947.3514053559,
+ 3957.9234853677,
+ 3968.5026299205,
+ 3979.0888295917,
+ 3989.6820749901,
+ 4000.2823567557,
+ 4010.8896655596,
+ 4021.5039921036,
+ 4032.1253271203,
+ 4042.7536613729,
+ 4053.3889856548,
+ 4064.0312907898,
+ 4074.6805676315,
+ 4085.3368070638,
+ 4096.0000000000,
+ 4106.6701373831,
+ 4117.3472101855,
+ 4128.0312094089,
+ 4138.7221260843,
+ 4149.4199512713,
+ 4160.1246760588,
+ 4170.8362915639,
+ 4181.5547889326,
+ 4192.2801593392,
+ 4203.0123939861,
+ 4213.7514841039,
+ 4224.4974209512,
+ 4235.2501958144,
+ 4246.0098000075,
+ 4256.7762248721,
+ 4267.5494617770,
+ 4278.3295021186,
+ 4289.1163373202,
+ 4299.9099588321,
+ 4310.7103581313,
+ 4321.5175267219,
+ 4332.3314561342,
+ 4343.1521379251,
+ 4353.9795636778,
+ 4364.8137250016,
+ 4375.6546135320,
+ 4386.5022209304,
+ 4397.3565388837,
+ 4408.2175591050,
+ 4419.0852733324,
+ 4429.9596733298,
+ 4440.8407508861,
+ 4451.7284978156,
+ 4462.6229059575,
+ 4473.5239671759,
+ 4484.4316733599,
+ 4495.3460164231,
+ 4506.2669883035,
+ 4517.1945809640,
+ 4528.1287863914,
+ 4539.0695965968,
+ 4550.0170036156,
+ 4560.9709995068,
+ 4571.9315763535,
+ 4582.8987262626,
+ 4593.8724413645,
+ 4604.8527138130,
+ 4615.8395357856,
+ 4626.8328994828,
+ 4637.8327971284,
+ 4648.8392209693,
+ 4659.8521632753,
+ 4670.8716163390,
+ 4681.8975724760,
+ 4692.9300240243,
+ 4703.9689633444,
+ 4715.0143828193,
+ 4726.0662748543,
+ 4737.1246318771,
+ 4748.1894463371,
+ 4759.2607107062,
+ 4770.3384174777,
+ 4781.4225591672,
+ 4792.5131283116,
+ 4803.6101174696,
+ 4814.7135192213,
+ 4825.8233261683,
+ 4836.9395309335,
+ 4848.0621261609,
+ 4859.1911045158,
+ 4870.3264586842,
+ 4881.4681813733,
+ 4892.6162653110,
+ 4903.7707032459,
+ 4914.9314879474,
+ 4926.0986122052,
+ 4937.2720688295,
+ 4948.4518506510,
+ 4959.6379505206,
+ 4970.8303613092,
+ 4982.0290759079,
+ 4993.2340872279,
+ 5004.4453882001,
+ 5015.6629717753,
+ 5026.8868309241,
+ 5038.1169586365,
+ 5049.3533479223,
+ 5060.5959918105,
+ 5071.8448833497,
+ 5083.1000156077,
+ 5094.3613816714,
+ 5105.6289746470,
+ 5116.9027876595,
+ 5128.1828138531,
+ 5139.4690463907,
+ 5150.7614784539,
+ 5162.0601032433,
+ 5173.3649139777,
+ 5184.6759038949,
+ 5195.9930662506,
+ 5207.3163943194,
+ 5218.6458813939,
+ 5229.9815207850,
+ 5241.3233058217,
+ 5252.6712298510,
+ 5264.0252862380,
+ 5275.3854683656,
+ 5286.7517696346,
+ 5298.1241834635,
+ 5309.5027032884,
+ 5320.8873225631,
+ 5332.2780347590,
+ 5343.6748333647,
+ 5355.0777118863,
+ 5366.4866638472,
+ 5377.9016827880,
+ 5389.3227622665,
+ 5400.7498958574,
+ 5412.1830771527,
+ 5423.6222997611,
+ 5435.0675573082,
+ 5446.5188434364,
+ 5457.9761518049,
+ 5469.4394760894,
+ 5480.9088099822,
+ 5492.3841471923,
+ 5503.8654814448,
+ 5515.3528064816,
+ 5526.8461160606,
+ 5538.3454039558,
+ 5549.8506639579,
+ 5561.3618898731,
+ 5572.8790755240,
+ 5584.4022147491,
+ 5595.9313014028,
+ 5607.4663293552,
+ 5619.0072924923,
+ 5630.5541847159,
+ 5642.1069999431,
+ 5653.6657321070,
+ 5665.2303751559,
+ 5676.8009230538,
+ 5688.3773697797,
+ 5699.9597093284,
+ 5711.5479357096,
+ 5723.1420429485,
+ 5734.7420250850,
+ 5746.3478761746,
+ 5757.9595902874,
+ 5769.5771615087,
+ 5781.2005839386,
+ 5792.8298516920,
+ 5804.4649588987,
+ 5816.1058997031,
+ 5827.7526682643,
+ 5839.4052587560,
+ 5851.0636653664,
+ 5862.7278822983,
+ 5874.3979037688,
+ 5886.0737240093,
+ 5897.7553372658,
+ 5909.4427377983,
+ 5921.1359198811,
+ 5932.8348778025,
+ 5944.5396058651,
+ 5956.2500983854,
+ 5967.9663496940,
+ 5979.6883541351,
+ 5991.4161060672,
+ 6003.1495998623,
+ 6014.8888299063,
+ 6026.6337905987,
+ 6038.3844763527,
+ 6050.1408815952,
+ 6061.9030007664,
+ 6073.6708283203,
+ 6085.4443587241,
+ 6097.2235864585,
+ 6109.0085060174,
+ 6120.7991119082,
+ 6132.5953986513,
+ 6144.3973607806,
+ 6156.2049928426,
+ 6168.0182893975,
+ 6179.8372450182,
+ 6191.6618542904,
+ 6203.4921118132,
+ 6215.3280121982,
+ 6227.1695500700,
+ 6239.0167200659,
+ 6250.8695168361,
+ 6262.7279350432,
+ 6274.5919693627,
+ 6286.4616144826,
+ 6298.3368651034,
+ 6310.2177159382,
+ 6322.1041617124,
+ 6333.9961971640,
+ 6345.8938170431,
+ 6357.7970161124,
+ 6369.7057891466,
+ 6381.6201309327,
+ 6393.5400362700,
+ 6405.4654999698,
+ 6417.3965168555,
+ 6429.3330817625,
+ 6441.2751895383,
+ 6453.2228350423,
+ 6465.1760131457,
+ 6477.1347187317,
+ 6489.0989466952,
+ 6501.0686919430,
+ 6513.0439493936,
+ 6525.0247139769,
+ 6537.0109806350,
+ 6549.0027443210,
+ 6561.0000000000,
+ 6573.0027426484,
+ 6585.0109672541,
+ 6597.0246688165,
+ 6609.0438423464,
+ 6621.0684828657,
+ 6633.0985854079,
+ 6645.1341450177,
+ 6657.1751567510,
+ 6669.2216156747,
+ 6681.2735168671,
+ 6693.3308554176,
+ 6705.3936264265,
+ 6717.4618250051,
+ 6729.5354462759,
+ 6741.6144853722,
+ 6753.6989374383,
+ 6765.7887976291,
+ 6777.8840611107,
+ 6789.9847230597,
+ 6802.0907786636,
+ 6814.2022231205,
+ 6826.3190516394,
+ 6838.4412594396,
+ 6850.5688417513,
+ 6862.7017938151,
+ 6874.8401108821,
+ 6886.9837882140,
+ 6899.1328210829,
+ 6911.2872047712,
+ 6923.4469345719,
+ 6935.6120057882,
+ 6947.7824137335,
+ 6959.9581537318,
+ 6972.1392211169,
+ 6984.3256112330,
+ 6996.5173194347,
+ 7008.7143410863,
+ 7020.9166715624,
+ 7033.1243062477,
+ 7045.3372405367,
+ 7057.5554698343,
+ 7069.7789895548,
+ 7082.0077951229,
+ 7094.2418819728,
+ 7106.4812455489,
+ 7118.7258813051,
+ 7130.9757847053,
+ 7143.2309512230,
+ 7155.4913763416,
+ 7167.7570555538,
+ 7180.0279843624,
+ 7192.3041582795,
+ 7204.5855728270,
+ 7216.8722235361,
+ 7229.1641059476,
+ 7241.4612156120,
+ 7253.7635480891,
+ 7266.0710989478,
+ 7278.3838637670,
+ 7290.7018381344,
+ 7303.0250176474,
+ 7315.3533979125,
+ 7327.6869745455,
+ 7340.0257431713,
+ 7352.3696994244,
+ 7364.7188389480,
+ 7377.0731573946,
+ 7389.4326504259,
+ 7401.7973137127,
+ 7414.1671429346,
+ 7426.5421337804,
+ 7438.9222819480,
+ 7451.3075831438,
+ 7463.6980330837,
+ 7476.0936274921,
+ 7488.4943621024,
+ 7500.9002326569,
+ 7513.3112349065,
+ 7525.7273646110,
+ 7538.1486175390,
+ 7550.5749894679,
+ 7563.0064761834,
+ 7575.4430734804,
+ 7587.8847771619,
+ 7600.3315830400,
+ 7612.7834869349,
+ 7625.2404846758,
+ 7637.7025721001,
+ 7650.1697450538,
+ 7662.6419993914,
+ 7675.1193309757,
+ 7687.6017356782,
+ 7700.0892093785,
+ 7712.5817479647,
+ 7725.0793473331,
+ 7737.5820033885,
+ 7750.0897120437,
+ 7762.6024692201,
+ 7775.1202708469,
+ 7787.6431128620,
+ 7800.1709912110,
+ 7812.7039018478,
+ 7825.2418407347,
+ 7837.7848038416,
+ 7850.3327871468,
+ 7862.8857866366,
+ 7875.4437983052,
+ 7888.0068181548,
+ 7900.5748421957,
+ 7913.1478664460,
+ 7925.7258869318,
+ 7938.3088996870,
+ 7950.8969007534,
+ 7963.4898861807,
+ 7976.0878520263,
+ 7988.6907943555,
+ 8001.2987092412,
+ 8013.9115927643,
+ 8026.5294410131,
+ 8039.1522500838,
+ 8051.7800160802,
+ 8064.4127351138,
+ 8077.0504033037,
+ 8089.6930167764,
+ 8102.3405716663,
+ 8114.9930641151,
+ 8127.6504902721,
+ 8140.3128462940,
+ 8152.9801283453,
+ 8165.6523325976,
+ 8178.3294552300,
+ 8191.0114924292,
+ 8203.6984403890,
+ 8216.3902953107,
+ 8229.0870534031,
+ 8241.7887108821,
+ 8254.4952639709,
+ 8267.2067089000,
+ 8279.9230419073,
+ 8292.6442592376,
+ 8305.3703571432,
+ 8318.1013318835,
+ 8330.8371797251,
+ 8343.5778969415,
+ 8356.3234798136,
+ 8369.0739246292,
+ 8381.8292276834,
+ 8394.5893852780,
+ 8407.3543937222,
+ 8420.1242493321,
+ 8432.8989484305,
+ 8445.6784873475,
+ 8458.4628624202,
+ 8471.2520699922,
+ 8484.0461064144,
+ 8496.8449680444,
+ 8509.6486512468,
+ 8522.4571523928,
+ 8535.2704678607,
+ 8548.0885940353,
+ 8560.9115273086,
+ 8573.7392640788,
+ 8586.5718007514,
+ 8599.4091337382,
+ 8612.2512594579,
+ 8625.0981743359,
+ 8637.9498748040,
+ 8650.8063573010,
+ 8663.6676182722,
+ 8676.5336541692,
+ 8689.4044614507,
+ 8702.2800365815,
+ 8715.1603760331,
+ 8728.0454762838,
+ 8740.9353338178,
+ 8753.8299451264,
+ 8766.7293067070,
+ 8779.6334150636,
+ 8792.5422667064,
+ 8805.4558581523,
+ 8818.3741859245,
+ 8831.2972465524,
+ 8844.2250365719,
+ 8857.1575525253,
+ 8870.0947909611,
+ 8883.0367484340,
+ 8895.9834215053,
+ 8908.9348067421,
+ 8921.8909007182,
+ 8934.8517000133,
+ 8947.8172012135,
+ 8960.7874009109,
+ 8973.7622957040,
+ 8986.7418821972,
+ 8999.7261570012,
+ 9012.7151167328,
+ 9025.7087580148,
+ 9038.7070774762,
+ 9051.7100717521,
+ 9064.7177374833,
+ 9077.7300713171,
+ 9090.7470699065,
+ 9103.7687299106,
+ 9116.7950479945,
+ 9129.8260208291,
+ 9142.8616450914,
+ 9155.9019174644,
+ 9168.9468346367,
+ 9181.9963933031,
+ 9195.0505901642,
+ 9208.1094219263,
+ 9221.1728853017,
+ 9234.2409770084,
+ 9247.3136937704,
+ 9260.3910323173,
+ 9273.4729893846,
+ 9286.5595617135,
+ 9299.6507460510,
+ 9312.7465391496,
+ 9325.8469377679,
+ 9338.9519386698,
+ 9352.0615386252,
+ 9365.1757344094,
+ 9378.2945228036,
+ 9391.4179005944,
+ 9404.5458645741,
+ 9417.6784115407,
+ 9430.8155382977,
+ 9443.9572416540,
+ 9457.1035184244,
+ 9470.2543654290,
+ 9483.4097794934,
+ 9496.5697574489,
+ 9509.7342961321,
+ 9522.9033923851,
+ 9536.0770430556,
+ 9549.2552449966,
+ 9562.4379950666,
+ 9575.6252901295,
+ 9588.8171270546,
+ 9602.0135027165,
+ 9615.2144139955,
+ 9628.4198577767,
+ 9641.6298309511,
+ 9654.8443304146,
+ 9668.0633530688,
+ 9681.2868958202,
+ 9694.5149555808,
+ 9707.7475292679,
+ 9720.9846138040,
+ 9734.2262061168,
+ 9747.4723031393,
+ 9760.7229018097,
+ 9773.9779990712,
+ 9787.2375918726,
+ 9800.5016771674,
+ 9813.7702519147,
+ 9827.0433130783,
+ 9840.3208576275,
+ 9853.6028825365,
+ 9866.8893847847,
+ 9880.1803613565,
+ 9893.4758092415,
+ 9906.7757254342,
+ 9920.0801069342,
+ 9933.3889507462,
+ 9946.7022538799,
+ 9960.0200133500,
+ 9973.3422261761,
+ 9986.6688893829,
+ 10000.0000000000,
+ 10013.3355550619,
+ 10026.6755516082,
+ 10040.0199866833,
+ 10053.3688573365,
+ 10066.7221606221,
+ 10080.0798935991,
+ 10093.4420533317,
+ 10106.8086368886,
+ 10120.1796413436,
+ 10133.5550637751,
+ 10146.9349012666,
+ 10160.3191509062,
+ 10173.7078097869,
+ 10187.1008750065,
+ 10200.4983436674,
+ 10213.9002128770,
+ 10227.3064797472,
+ 10240.7171413949,
+ 10254.1321949415,
+ 10267.5516375131,
+ 10280.9754662408,
+ 10294.4036782600,
+ 10307.8362707111,
+ 10321.2732407388,
+ 10334.7145854928
+};
+
+#else
+
+static real_t iq_table[] =
+{
+ 0x0,
+ 0x80,
+ 0x142,
+ 0x229,
+ 0x32C,
+ 0x446,
+ 0x573,
+ 0x6B1,
+ 0x7FF,
+ 0x95C,
+ 0xAC5,
+ 0xC3B,
+ 0xDBC,
+ 0xF48,
+ 0x10DE,
+ 0x127F,
+ 0x1428,
+ 0x15DB,
+ 0x1796,
+ 0x1959,
+ 0x1B24,
+ 0x1CF7,
+ 0x1ED2,
+ 0x20B4,
+ 0x229D,
+ 0x248C,
+ 0x2683,
+ 0x287F,
+ 0x2A83,
+ 0x2C8C,
+ 0x2E9B,
+ 0x30B0,
+ 0x32CB,
+ 0x34EC,
+ 0x3712,
+ 0x393E,
+ 0x3B6F,
+ 0x3DA5,
+ 0x3FE0,
+ 0x4220,
+ 0x4466,
+ 0x46B0,
+ 0x48FF,
+ 0x4B52,
+ 0x4DAA,
+ 0x5007,
+ 0x5268,
+ 0x54CE,
+ 0x5738,
+ 0x59A7,
+ 0x5C19,
+ 0x5E90,
+ 0x610B,
+ 0x638A,
+ 0x660D,
+ 0x6894,
+ 0x6B1F,
+ 0x6DAE,
+ 0x7041,
+ 0x72D7,
+ 0x7572,
+ 0x7810,
+ 0x7AB1,
+ 0x7D57,
+ 0x7FFF,
+ 0x82AC,
+ 0x855C,
+ 0x880F,
+ 0x8AC6,
+ 0x8D81,
+ 0x903E,
+ 0x92FF,
+ 0x95C4,
+ 0x988B,
+ 0x9B56,
+ 0x9E24,
+ 0xA0F6,
+ 0xA3CA,
+ 0xA6A2,
+ 0xA97C,
+ 0xAC5A,
+ 0xAF3B,
+ 0xB21F,
+ 0xB506,
+ 0xB7F0,
+ 0xBADD,
+ 0xBDCD,
+ 0xC0C0,
+ 0xC3B5,
+ 0xC6AE,
+ 0xC9A9,
+ 0xCCA8,
+ 0xCFA9,
+ 0xD2AC,
+ 0xD5B3,
+ 0xD8BC,
+ 0xDBC8,
+ 0xDED7,
+ 0xE1E9,
+ 0xE4FD,
+ 0xE814,
+ 0xEB2D,
+ 0xEE49,
+ 0xF168,
+ 0xF489,
+ 0xF7AD,
+ 0xFAD4,
+ 0xFDFD,
+ 0x10128,
+ 0x10456,
+ 0x10787,
+ 0x10ABA,
+ 0x10DEF,
+ 0x11127,
+ 0x11461,
+ 0x1179E,
+ 0x11ADD,
+ 0x11E1F,
+ 0x12163,
+ 0x124A9,
+ 0x127F2,
+ 0x12B3D,
+ 0x12E8A,
+ 0x131D9,
+ 0x1352B,
+ 0x1387F,
+ 0x13BD6,
+ 0x13F2F,
+ 0x1428A,
+ 0x145E7,
+ 0x14946,
+ 0x14CA8,
+ 0x1500C,
+ 0x15372,
+ 0x156DA,
+ 0x15A45,
+ 0x15DB1,
+ 0x16120,
+ 0x16491,
+ 0x16804,
+ 0x16B79,
+ 0x16EF0,
+ 0x1726A,
+ 0x175E5,
+ 0x17963,
+ 0x17CE2,
+ 0x18064,
+ 0x183E7,
+ 0x1876D,
+ 0x18AF5,
+ 0x18E7F,
+ 0x1920B,
+ 0x19598,
+ 0x19928,
+ 0x19CBA,
+ 0x1A04E,
+ 0x1A3E3,
+ 0x1A77B,
+ 0x1AB15,
+ 0x1AEB0,
+ 0x1B24E,
+ 0x1B5EE,
+ 0x1B98F,
+ 0x1BD32,
+ 0x1C0D7,
+ 0x1C47F,
+ 0x1C828,
+ 0x1CBD3,
+ 0x1CF7F,
+ 0x1D32E,
+ 0x1D6DE,
+ 0x1DA91,
+ 0x1DE45,
+ 0x1E1FB,
+ 0x1E5B3,
+ 0x1E96D,
+ 0x1ED28,
+ 0x1F0E6,
+ 0x1F4A5,
+ 0x1F866,
+ 0x1FC28,
+ 0x1FFED,
+ 0x203B3,
+ 0x2077B,
+ 0x20B45,
+ 0x20F11,
+ 0x212DE,
+ 0x216AD,
+ 0x21A7E,
+ 0x21E50,
+ 0x22225,
+ 0x225FB,
+ 0x229D2,
+ 0x22DAC,
+ 0x23187,
+ 0x23564,
+ 0x23942,
+ 0x23D23,
+ 0x24104,
+ 0x244E8,
+ 0x248CD,
+ 0x24CB4,
+ 0x2509D,
+ 0x25487,
+ 0x25873,
+ 0x25C60,
+ 0x2604F,
+ 0x26440,
+ 0x26832,
+ 0x26C26,
+ 0x2701C,
+ 0x27413,
+ 0x2780C,
+ 0x27C07,
+ 0x28003,
+ 0x28400,
+ 0x287FF,
+ 0x28C00,
+ 0x29003,
+ 0x29407,
+ 0x2980C,
+ 0x29C13,
+ 0x2A01C,
+ 0x2A426,
+ 0x2A832,
+ 0x2AC3F,
+ 0x2B04E,
+ 0x2B45E,
+ 0x2B870,
+ 0x2BC83,
+ 0x2C098,
+ 0x2C4AF,
+ 0x2C8C7,
+ 0x2CCE0,
+ 0x2D0FB,
+ 0x2D517,
+ 0x2D935,
+ 0x2DD55,
+ 0x2E176,
+ 0x2E598,
+ 0x2E9BC,
+ 0x2EDE1,
+ 0x2F208,
+ 0x2F630,
+ 0x2FA5A,
+ 0x2FE85,
+ 0x302B2,
+ 0x306E0,
+ 0x30B0F,
+ 0x30F40,
+ 0x31373,
+ 0x317A7,
+ 0x31BDC,
+ 0x32013,
+ 0x3244B,
+ 0x32884,
+ 0x32CBF,
+ 0x330FC,
+ 0x33539,
+ 0x33979,
+ 0x33DB9,
+ 0x341FB,
+ 0x3463F,
+ 0x34A83,
+ 0x34ECA,
+ 0x35311,
+ 0x3575A,
+ 0x35BA4,
+ 0x35FF0,
+ 0x3643D,
+ 0x3688B,
+ 0x36CDB,
+ 0x3712C,
+ 0x3757F,
+ 0x379D2,
+ 0x37E28,
+ 0x3827E,
+ 0x386D6,
+ 0x38B2F,
+ 0x38F8A,
+ 0x393E6,
+ 0x39843,
+ 0x39CA1,
+ 0x3A101,
+ 0x3A562,
+ 0x3A9C5,
+ 0x3AE28,
+ 0x3B28E,
+ 0x3B6F4,
+ 0x3BB5C,
+ 0x3BFC5,
+ 0x3C42F,
+ 0x3C89B,
+ 0x3CD08,
+ 0x3D176,
+ 0x3D5E5,
+ 0x3DA56,
+ 0x3DEC8,
+ 0x3E33B,
+ 0x3E7B0,
+ 0x3EC26,
+ 0x3F09D,
+ 0x3F515,
+ 0x3F98F,
+ 0x3FE0A,
+ 0x40286,
+ 0x40703,
+ 0x40B82,
+ 0x41002,
+ 0x41483,
+ 0x41906,
+ 0x41D89,
+ 0x4220E,
+ 0x42694,
+ 0x42B1C,
+ 0x42FA4,
+ 0x4342E,
+ 0x438B9,
+ 0x43D46,
+ 0x441D3,
+ 0x44662,
+ 0x44AF2,
+ 0x44F83,
+ 0x45415,
+ 0x458A9,
+ 0x45D3E,
+ 0x461D4,
+ 0x4666B,
+ 0x46B03,
+ 0x46F9D,
+ 0x47438,
+ 0x478D4,
+ 0x47D71,
+ 0x4820F,
+ 0x486AF,
+ 0x48B50,
+ 0x48FF1,
+ 0x49494,
+ 0x49939,
+ 0x49DDE,
+ 0x4A285,
+ 0x4A72C,
+ 0x4ABD5,
+ 0x4B07F,
+ 0x4B52B,
+ 0x4B9D7,
+ 0x4BE85,
+ 0x4C333,
+ 0x4C7E3,
+ 0x4CC94,
+ 0x4D146,
+ 0x4D5FA,
+ 0x4DAAE,
+ 0x4DF64,
+ 0x4E41B,
+ 0x4E8D2,
+ 0x4ED8B,
+ 0x4F246,
+ 0x4F701,
+ 0x4FBBD,
+ 0x5007B,
+ 0x50539,
+ 0x509F9,
+ 0x50EBA,
+ 0x5137C,
+ 0x5183F,
+ 0x51D03,
+ 0x521C9,
+ 0x5268F,
+ 0x52B57,
+ 0x53020,
+ 0x534E9,
+ 0x539B4,
+ 0x53E80,
+ 0x5434D,
+ 0x5481B,
+ 0x54CEB,
+ 0x551BB,
+ 0x5568C,
+ 0x55B5F,
+ 0x56033,
+ 0x56507,
+ 0x569DD,
+ 0x56EB4,
+ 0x5738C,
+ 0x57865,
+ 0x57D3F,
+ 0x5821A,
+ 0x586F6,
+ 0x58BD4,
+ 0x590B2,
+ 0x59592,
+ 0x59A72,
+ 0x59F54,
+ 0x5A436,
+ 0x5A91A,
+ 0x5ADFF,
+ 0x5B2E5,
+ 0x5B7CB,
+ 0x5BCB3,
+ 0x5C19C,
+ 0x5C686,
+ 0x5CB71,
+ 0x5D05D,
+ 0x5D54B,
+ 0x5DA39,
+ 0x5DF28,
+ 0x5E418,
+ 0x5E90A,
+ 0x5EDFC,
+ 0x5F2EF,
+ 0x5F7E4,
+ 0x5FCD9,
+ 0x601D0,
+ 0x606C7,
+ 0x60BBF,
+ 0x610B9,
+ 0x615B4,
+ 0x61AAF,
+ 0x61FAC,
+ 0x624A9,
+ 0x629A8,
+ 0x62EA8,
+ 0x633A8,
+ 0x638AA,
+ 0x63DAC,
+ 0x642B0,
+ 0x647B5,
+ 0x64CBA,
+ 0x651C1,
+ 0x656C9,
+ 0x65BD1,
+ 0x660DB,
+ 0x665E6,
+ 0x66AF1,
+ 0x66FFE,
+ 0x6750C,
+ 0x67A1A,
+ 0x67F2A,
+ 0x6843A,
+ 0x6894C,
+ 0x68E5F,
+ 0x69372,
+ 0x69887,
+ 0x69D9C,
+ 0x6A2B3,
+ 0x6A7CA,
+ 0x6ACE3,
+ 0x6B1FC,
+ 0x6B716,
+ 0x6BC32,
+ 0x6C14E,
+ 0x6C66B,
+ 0x6CB8A,
+ 0x6D0A9,
+ 0x6D5C9,
+ 0x6DAEA,
+ 0x6E00C,
+ 0x6E52F,
+ 0x6EA53,
+ 0x6EF78,
+ 0x6F49E,
+ 0x6F9C5,
+ 0x6FEED,
+ 0x70416,
+ 0x7093F,
+ 0x70E6A,
+ 0x71396,
+ 0x718C2,
+ 0x71DF0,
+ 0x7231E,
+ 0x7284E,
+ 0x72D7E,
+ 0x732AF,
+ 0x737E2,
+ 0x73D15,
+ 0x74249,
+ 0x7477E,
+ 0x74CB4,
+ 0x751EB,
+ 0x75722,
+ 0x75C5B,
+ 0x76195,
+ 0x766CF,
+ 0x76C0B,
+ 0x77147,
+ 0x77685,
+ 0x77BC3,
+ 0x78102,
+ 0x78642,
+ 0x78B83,
+ 0x790C5,
+ 0x79608,
+ 0x79B4C,
+ 0x7A091,
+ 0x7A5D6,
+ 0x7AB1D,
+ 0x7B064,
+ 0x7B5AC,
+ 0x7BAF6,
+ 0x7C040,
+ 0x7C58B,
+ 0x7CAD7,
+ 0x7D024,
+ 0x7D571,
+ 0x7DAC0,
+ 0x7E010,
+ 0x7E560,
+ 0x7EAB1,
+ 0x7F004,
+ 0x7F557,
+ 0x7FAAB,
+ 0x7FFFF,
+ 0x80555,
+ 0x80AAC,
+ 0x81003,
+ 0x8155C,
+ 0x81AB5,
+ 0x8200F,
+ 0x8256B,
+ 0x82AC7,
+ 0x83023,
+ 0x83581,
+ 0x83AE0,
+ 0x8403F,
+ 0x845A0,
+ 0x84B01,
+ 0x85063,
+ 0x855C6,
+ 0x85B2A,
+ 0x8608E,
+ 0x865F4,
+ 0x86B5A,
+ 0x870C2,
+ 0x8762A,
+ 0x87B93,
+ 0x880FD,
+ 0x88668,
+ 0x88BD3,
+ 0x89140,
+ 0x896AD,
+ 0x89C1B,
+ 0x8A18A,
+ 0x8A6FA,
+ 0x8AC6B,
+ 0x8B1DD,
+ 0x8B74F,
+ 0x8BCC3,
+ 0x8C237,
+ 0x8C7AC,
+ 0x8CD22,
+ 0x8D298,
+ 0x8D810,
+ 0x8DD88,
+ 0x8E302,
+ 0x8E87C,
+ 0x8EDF7,
+ 0x8F373,
+ 0x8F8EF,
+ 0x8FE6D,
+ 0x903EB,
+ 0x9096A,
+ 0x90EEA,
+ 0x9146B,
+ 0x919ED,
+ 0x91F6F,
+ 0x924F2,
+ 0x92A77,
+ 0x92FFC,
+ 0x93581,
+ 0x93B08,
+ 0x9408F,
+ 0x94618,
+ 0x94BA1,
+ 0x9512B,
+ 0x956B6,
+ 0x95C41,
+ 0x961CE,
+ 0x9675B,
+ 0x96CE9,
+ 0x97278,
+ 0x97807,
+ 0x97D98,
+ 0x98329,
+ 0x988BB,
+ 0x98E4E,
+ 0x993E2,
+ 0x99977,
+ 0x99F0C,
+ 0x9A4A2,
+ 0x9AA39,
+ 0x9AFD1,
+ 0x9B56A,
+ 0x9BB03,
+ 0x9C09D,
+ 0x9C639,
+ 0x9CBD4,
+ 0x9D171,
+ 0x9D70E,
+ 0x9DCAD,
+ 0x9E24C,
+ 0x9E7EC,
+ 0x9ED8C,
+ 0x9F32E,
+ 0x9F8D0,
+ 0x9FE73,
+ 0xA0417,
+ 0xA09BC,
+ 0xA0F61,
+ 0xA1507,
+ 0xA1AAE,
+ 0xA2056,
+ 0xA25FF,
+ 0xA2BA8,
+ 0xA3152,
+ 0xA36FD,
+ 0xA3CA9,
+ 0xA4255,
+ 0xA4803,
+ 0xA4DB1,
+ 0xA5360,
+ 0xA590F,
+ 0xA5EC0,
+ 0xA6471,
+ 0xA6A23,
+ 0xA6FD6,
+ 0xA7589,
+ 0xA7B3E,
+ 0xA80F3,
+ 0xA86A9,
+ 0xA8C5F,
+ 0xA9217,
+ 0xA97CF,
+ 0xA9D88,
+ 0xAA342,
+ 0xAA8FC,
+ 0xAAEB8,
+ 0xAB474,
+ 0xABA31,
+ 0xABFEE,
+ 0xAC5AD,
+ 0xACB6C,
+ 0xAD12C,
+ 0xAD6EC,
+ 0xADCAE,
+ 0xAE270,
+ 0xAE833,
+ 0xAEDF7,
+ 0xAF3BB,
+ 0xAF980,
+ 0xAFF46,
+ 0xB050D,
+ 0xB0AD5,
+ 0xB109D,
+ 0xB1666,
+ 0xB1C30,
+ 0xB21FA,
+ 0xB27C6,
+ 0xB2D92,
+ 0xB335E,
+ 0xB392C,
+ 0xB3EFA,
+ 0xB44C9,
+ 0xB4A99,
+ 0xB506A,
+ 0xB563B,
+ 0xB5C0D,
+ 0xB61E0,
+ 0xB67B3,
+ 0xB6D88,
+ 0xB735D,
+ 0xB7932,
+ 0xB7F09,
+ 0xB84E0,
+ 0xB8AB8,
+ 0xB9091,
+ 0xB966A,
+ 0xB9C45,
+ 0xBA220,
+ 0xBA7FB,
+ 0xBADD8,
+ 0xBB3B5,
+ 0xBB993,
+ 0xBBF71,
+ 0xBC551,
+ 0xBCB31,
+ 0xBD112,
+ 0xBD6F3,
+ 0xBDCD5,
+ 0xBE2B8,
+ 0xBE89C,
+ 0xBEE81,
+ 0xBF466,
+ 0xBFA4C,
+ 0xC0032,
+ 0xC061A,
+ 0xC0C02,
+ 0xC11EB,
+ 0xC17D4,
+ 0xC1DBE,
+ 0xC23A9,
+ 0xC2995,
+ 0xC2F82,
+ 0xC356F,
+ 0xC3B5D,
+ 0xC414B,
+ 0xC473B,
+ 0xC4D2B,
+ 0xC531B,
+ 0xC590D,
+ 0xC5EFF,
+ 0xC64F2,
+ 0xC6AE6,
+ 0xC70DA,
+ 0xC76CF,
+ 0xC7CC5,
+ 0xC82BB,
+ 0xC88B2,
+ 0xC8EAA,
+ 0xC94A3,
+ 0xC9A9C,
+ 0xCA096,
+ 0xCA691,
+ 0xCAC8C,
+ 0xCB288,
+ 0xCB885,
+ 0xCBE83,
+ 0xCC481,
+ 0xCCA80,
+ 0xCD07F,
+ 0xCD680,
+ 0xCDC81,
+ 0xCE283,
+ 0xCE885,
+ 0xCEE88,
+ 0xCF48C,
+ 0xCFA91,
+ 0xD0096,
+ 0xD069C,
+ 0xD0CA3,
+ 0xD12AA,
+ 0xD18B2,
+ 0xD1EBB,
+ 0xD24C4,
+ 0xD2ACE,
+ 0xD30D9,
+ 0xD36E4,
+ 0xD3CF1,
+ 0xD42FE,
+ 0xD490B,
+ 0xD4F19,
+ 0xD5528,
+ 0xD5B38,
+ 0xD6148,
+ 0xD6759,
+ 0xD6D6B,
+ 0xD737D,
+ 0xD7991,
+ 0xD7FA4,
+ 0xD85B9,
+ 0xD8BCE,
+ 0xD91E4,
+ 0xD97FA,
+ 0xD9E11,
+ 0xDA429,
+ 0xDAA42,
+ 0xDB05B,
+ 0xDB675,
+ 0xDBC8F,
+ 0xDC2AB,
+ 0xDC8C7,
+ 0xDCEE3,
+ 0xDD500,
+ 0xDDB1E,
+ 0xDE13D,
+ 0xDE75C,
+ 0xDED7C,
+ 0xDF39D,
+ 0xDF9BE,
+ 0xDFFE0,
+ 0xE0603,
+ 0xE0C26,
+ 0xE124A,
+ 0xE186F,
+ 0xE1E95,
+ 0xE24BB,
+ 0xE2AE1,
+ 0xE3109,
+ 0xE3731,
+ 0xE3D59,
+ 0xE4383,
+ 0xE49AD,
+ 0xE4FD7,
+ 0xE5603,
+ 0xE5C2F,
+ 0xE625C,
+ 0xE6889,
+ 0xE6EB7,
+ 0xE74E6,
+ 0xE7B15,
+ 0xE8145,
+ 0xE8776,
+ 0xE8DA7,
+ 0xE93D9,
+ 0xE9A0B,
+ 0xEA03F,
+ 0xEA673,
+ 0xEACA7,
+ 0xEB2DD,
+ 0xEB913,
+ 0xEBF49,
+ 0xEC580,
+ 0xECBB8,
+ 0xED1F1,
+ 0xED82A,
+ 0xEDE64,
+ 0xEE49E,
+ 0xEEAD9,
+ 0xEF115,
+ 0xEF752,
+ 0xEFD8F,
+ 0xF03CD,
+ 0xF0A0B,
+ 0xF104A,
+ 0xF168A,
+ 0xF1CCA,
+ 0xF230B,
+ 0xF294D,
+ 0xF2F8F,
+ 0xF35D2,
+ 0xF3C15,
+ 0xF425A,
+ 0xF489E,
+ 0xF4EE4,
+ 0xF552A,
+ 0xF5B71,
+ 0xF61B8,
+ 0xF6800,
+ 0xF6E49,
+ 0xF7492,
+ 0xF7ADC,
+ 0xF8127,
+ 0xF8772,
+ 0xF8DBE,
+ 0xF940B,
+ 0xF9A58,
+ 0xFA0A6,
+ 0xFA6F4,
+ 0xFAD43,
+ 0xFB393,
+ 0xFB9E3,
+ 0xFC034,
+ 0xFC686,
+ 0xFCCD8,
+ 0xFD32B,
+ 0xFD97F,
+ 0xFDFD3,
+ 0xFE628,
+ 0xFEC7D,
+ 0xFF2D3,
+ 0xFF92A,
+ 0xFFF81,
+ 0x1005D9,
+ 0x100C31,
+ 0x10128B,
+ 0x1018E4,
+ 0x101F3F,
+ 0x10259A,
+ 0x102BF6,
+ 0x103252,
+ 0x1038AF,
+ 0x103F0C,
+ 0x10456B,
+ 0x104BC9,
+ 0x105229,
+ 0x105889,
+ 0x105EEA,
+ 0x10654B,
+ 0x106BAD,
+ 0x10720F,
+ 0x107873,
+ 0x107ED6,
+ 0x10853B,
+ 0x108BA0,
+ 0x109205,
+ 0x10986C,
+ 0x109ED3,
+ 0x10A53A,
+ 0x10ABA2,
+ 0x10B20B,
+ 0x10B874,
+ 0x10BEDE,
+ 0x10C549,
+ 0x10CBB4,
+ 0x10D220,
+ 0x10D88C,
+ 0x10DEF9,
+ 0x10E567,
+ 0x10EBD5,
+ 0x10F244,
+ 0x10F8B3,
+ 0x10FF23,
+ 0x110594,
+ 0x110C05,
+ 0x111277,
+ 0x1118EA,
+ 0x111F5D,
+ 0x1125D1,
+ 0x112C45,
+ 0x1132BA,
+ 0x11392F,
+ 0x113FA6,
+ 0x11461C,
+ 0x114C94,
+ 0x11530C,
+ 0x115984,
+ 0x115FFD,
+ 0x116677,
+ 0x116CF2,
+ 0x11736D,
+ 0x1179E8,
+ 0x118064,
+ 0x1186E1,
+ 0x118D5E,
+ 0x1193DC,
+ 0x119A5B,
+ 0x11A0DA,
+ 0x11A75A,
+ 0x11ADDA,
+ 0x11B45B,
+ 0x11BADD,
+ 0x11C15F,
+ 0x11C7E2,
+ 0x11CE65,
+ 0x11D4E9,
+ 0x11DB6E,
+ 0x11E1F3,
+ 0x11E879,
+ 0x11EEFF,
+ 0x11F586,
+ 0x11FC0E,
+ 0x120296,
+ 0x12091E,
+ 0x120FA8,
+ 0x121632,
+ 0x121CBC,
+ 0x122347,
+ 0x1229D3,
+ 0x12305F,
+ 0x1236EC,
+ 0x123D79,
+ 0x124407,
+ 0x124A96,
+ 0x125125,
+ 0x1257B5,
+ 0x125E45,
+ 0x1264D6,
+ 0x126B68,
+ 0x1271FA,
+ 0x12788D,
+ 0x127F20,
+ 0x1285B4,
+ 0x128C48,
+ 0x1292DD,
+ 0x129973,
+ 0x12A009,
+ 0x12A6A0,
+ 0x12AD38,
+ 0x12B3D0,
+ 0x12BA68,
+ 0x12C101,
+ 0x12C79B,
+ 0x12CE35,
+ 0x12D4D0,
+ 0x12DB6C,
+ 0x12E208,
+ 0x12E8A4,
+ 0x12EF41,
+ 0x12F5DF,
+ 0x12FC7E,
+ 0x13031C,
+ 0x1309BC,
+ 0x13105C,
+ 0x1316FD,
+ 0x131D9E,
+ 0x132440,
+ 0x132AE2,
+ 0x133185,
+ 0x133829,
+ 0x133ECD,
+ 0x134571,
+ 0x134C17,
+ 0x1352BC,
+ 0x135963,
+ 0x13600A,
+ 0x1366B1,
+ 0x136D59,
+ 0x137402,
+ 0x137AAB,
+ 0x138155,
+ 0x1387FF,
+ 0x138EAA,
+ 0x139556,
+ 0x139C02,
+ 0x13A2AF,
+ 0x13A95C,
+ 0x13B00A,
+ 0x13B6B8,
+ 0x13BD67,
+ 0x13C416,
+ 0x13CAC7,
+ 0x13D177,
+ 0x13D828,
+ 0x13DEDA,
+ 0x13E58C,
+ 0x13EC3F,
+ 0x13F2F3,
+ 0x13F9A7,
+ 0x14005B,
+ 0x140710,
+ 0x140DC6,
+ 0x14147C,
+ 0x141B33,
+ 0x1421EB,
+ 0x1428A2,
+ 0x142F5B
+};
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--- a/libfaad/is.c
+++ b/libfaad/is.c
@@ -16,7 +16,7 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
-** $Id: is.c,v 1.8 2002/08/26 18:41:47 menno Exp $
+** $Id: is.c,v 1.9 2002/09/08 18:14:37 menno Exp $
**/
#include "common.h"
@@ -25,89 +25,27 @@
#include "is.h"
#ifdef FIXED_POINT
-
-static real_t pow05_table[4] = {
- COEF_CONST(1.0),
- COEF_CONST(0.8408964), /* pow(2,-.25) */
- COEF_CONST(0.7071068), /* pow(2,-.5) */
- COEF_CONST(0.5946036) /* pow(2,-.75) */
+static real_t pow05_table[] = {
+ COEF_CONST(1.68179283050743), /* 0.5^(-3/4) */
+ COEF_CONST(1.41421356237310), /* 0.5^(-2/4) */
+ COEF_CONST(1.18920711500272), /* 0.5^(-1/4) */
+ COEF_CONST(1.0), /* 0.5^( 0/4) */
+ COEF_CONST(0.84089641525371), /* 0.5^(+1/4) */
+ COEF_CONST(0.70710678118655), /* 0.5^(+2/4) */
+ COEF_CONST(0.59460355750136) /* 0.5^(+3/4) */
};
-
-void is_decode(ic_stream *ics, ic_stream *icsr, real_t *l_spec, real_t *r_spec,
- uint16_t frame_len)
-{
- uint8_t g, sfb, b;
- uint16_t i, k;
-
- uint16_t nshort = frame_len/8;
- uint8_t group = 0;
-
- for (g = 0; g < icsr->num_window_groups; g++)
- {
- // Do intensity stereo decoding
- for (b = 0; b < icsr->window_group_length[g]; b++)
- {
- for (sfb = 0; sfb < icsr->max_sfb; sfb++)
- {
- if (is_intensity(icsr, g, sfb))
- {
- real_t frac;
-
- // For scalefactor bands coded in intensity stereo the
- // corresponding predictors in the right channel are
- // switched to "off".
- ics->pred.prediction_used[sfb] = 0;
- icsr->pred.prediction_used[sfb] = 0;
-
- frac = pow05_table[icsr->scale_factors[g][sfb] & 3];
-
- if (is_intensity(icsr, g, sfb) != invert_intensity(ics, g, sfb))
- frac = -frac;
-#if 0
- float32_t scale = is_intensity(icsr, g, sfb) *
- invert_intensity(ics, g, sfb) *
- (real_t)exp(LN05 * (0.25*icsr->scale_factors[g][sfb]));
#endif
- if (icsr->scale_factors[g][sfb] > 0)
- {
- int32_t shift = icsr->scale_factors[g][sfb] >> 2;
-
- if (shift > 31)
- shift = 31;
- for (i = icsr->swb_offset[sfb]; i < icsr->swb_offset[sfb+1]; i++)
- {
- k = (group*nshort) + i;
- r_spec[k] = l_spec[k];
- r_spec[k] >>= shift;
- r_spec[k] = MUL_R_C(r_spec[k],frac);
- }
- } else {
- int32_t shift = -(icsr->scale_factors[g][sfb] >> 2);
-
- for (i = icsr->swb_offset[sfb]; i < icsr->swb_offset[sfb+1]; i++)
- {
- k = (group*nshort)+i;
- r_spec[k] = l_spec[k];
- r_spec[k] <<= shift;
- r_spec[k] = MUL_R_C(r_spec[k],frac);
- }
- }
- }
- }
- group++;
- }
- }
-}
-
-#else
-
void is_decode(ic_stream *ics, ic_stream *icsr, real_t *l_spec, real_t *r_spec,
uint16_t frame_len)
{
uint8_t g, sfb, b;
uint16_t i, k;
+#ifndef FIXED_POINT
real_t scale;
+#else
+ int32_t exp, frac;
+#endif
uint16_t nshort = frame_len/8;
uint8_t group = 0;
@@ -128,9 +66,12 @@
ics->pred.prediction_used[sfb] = 0;
icsr->pred.prediction_used[sfb] = 0;
- scale = is_intensity(icsr, g, sfb) *
- invert_intensity(ics, g, sfb) *
- exp(LN05 * (0.25*icsr->scale_factors[g][sfb]));
+#ifndef FIXED_POINT
+ scale = (real_t)pow(0.5, (0.25*icsr->scale_factors[g][sfb]));
+#else
+ exp = icsr->scale_factors[g][sfb] / 4;
+ frac = icsr->scale_factors[g][sfb] % 4;
+#endif
/* Scale from left to right channel,
do not touch left channel */
@@ -137,7 +78,17 @@
for (i = icsr->swb_offset[sfb]; i < icsr->swb_offset[sfb+1]; i++)
{
k = (group*nshort)+i;
+#ifndef FIXED_POINT
r_spec[k] = MUL(l_spec[k], scale);
+#else
+ if (exp < 0)
+ r_spec[k] = l_spec[k] << -exp;
+ else
+ r_spec[k] = l_spec[k] >> exp;
+ r_spec[k] = MUL_R_C(r_spec[k], pow05_table[frac + 3]);
+#endif
+ if (is_intensity(icsr, g, sfb) != invert_intensity(ics, g, sfb))
+ r_spec[k] = -r_spec[k];
}
}
}
@@ -145,5 +96,3 @@
}
}
}
-
-#endif
--- a/libfaad/kbd_win.h
+++ b/libfaad/kbd_win.h
@@ -16,7 +16,7 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
-** $Id: kbd_win.h,v 1.3 2002/08/26 18:41:47 menno Exp $
+** $Id: kbd_win.h,v 1.4 2002/09/08 18:14:37 menno Exp $
**/
#ifndef __KBD_WIN_H__
@@ -26,12 +26,14 @@
extern "C" {
#endif
+#ifndef FIXED_POINT
+
#ifdef _MSC_VER
#pragma warning(disable:4305)
#pragma warning(disable:4244)
#endif
-float32_t kbd_long[] =
+real_t kbd_long_1024[] =
{
0.00029256153896361,
0.00042998567353047,
@@ -1059,8 +1061,970 @@
0.99999995720387
};
-
-float32_t kbd_short[] =
+real_t kbd_long_960[] = {
+ 0.0003021562530949,
+ 0.0004452267024786,
+ 0.0005674947527496,
+ 0.0006812465553466,
+ 0.0007910496776387,
+ 0.0008991655033895,
+ 0.0010068978259384,
+ 0.0011150758515751,
+ 0.0012242653193642,
+ 0.0013348735658205,
+ 0.0014472068670273,
+ 0.0015615039850448,
+ 0.0016779568885263,
+ 0.0017967241232412,
+ 0.0019179397560955,
+ 0.0020417195415393,
+ 0.0021681652836642,
+ 0.0022973679910599,
+ 0.0024294102029937,
+ 0.0025643677339078,
+ 0.0027023110014772,
+ 0.0028433060512612,
+ 0.0029874153568025,
+ 0.0031346984511728,
+ 0.0032852124303662,
+ 0.0034390123581190,
+ 0.0035961515940931,
+ 0.0037566820618961,
+ 0.0039206544694386,
+ 0.0040881184912194,
+ 0.0042591229199617,
+ 0.0044337157933972,
+ 0.0046119445007641,
+ 0.0047938558726415,
+ 0.0049794962570131,
+ 0.0051689115838900,
+ 0.0053621474203763,
+ 0.0055592490177131,
+ 0.0057602613515573,
+ 0.0059652291565289,
+ 0.0061741969558843,
+ 0.0063872090870253,
+ 0.0066043097234387,
+ 0.0068255428935640,
+ 0.0070509524970088,
+ 0.0072805823184660,
+ 0.0075144760396340,
+ 0.0077526772493942,
+ 0.0079952294524673,
+ 0.0082421760767325,
+ 0.0084935604793733,
+ 0.0087494259519870,
+ 0.0090098157247792,
+ 0.0092747729699467,
+ 0.0095443408043399,
+ 0.0098185622914832,
+ 0.0100974804430226,
+ 0.0103811382196612,
+ 0.0106695785316351,
+ 0.0109628442387771,
+ 0.0112609781502091,
+ 0.0115640230236993,
+ 0.0118720215647169,
+ 0.0121850164252137,
+ 0.0125030502021561,
+ 0.0128261654358321,
+ 0.0131544046079532,
+ 0.0134878101395681,
+ 0.0138264243888068,
+ 0.0141702896484671,
+ 0.0145194481434592,
+ 0.0148739420281182,
+ 0.0152338133833959,
+ 0.0155991042139432,
+ 0.0159698564450882,
+ 0.0163461119197227,
+ 0.0167279123950996,
+ 0.0171152995395520,
+ 0.0175083149291368,
+ 0.0179070000442104,
+ 0.0183113962659409,
+ 0.0187215448727609,
+ 0.0191374870367659,
+ 0.0195592638200623,
+ 0.0199869161710679,
+ 0.0204204849207691,
+ 0.0208600107789370,
+ 0.0213055343303066,
+ 0.0217570960307201,
+ 0.0222147362032386,
+ 0.0226784950342228,
+ 0.0231484125693867,
+ 0.0236245287098244,
+ 0.0241068832080138,
+ 0.0245955156637973,
+ 0.0250904655203431,
+ 0.0255917720600868,
+ 0.0260994744006559,
+ 0.0266136114907790,
+ 0.0271342221061795,
+ 0.0276613448454576,
+ 0.0281950181259587,
+ 0.0287352801796329,
+ 0.0292821690488833,
+ 0.0298357225824074,
+ 0.0303959784310299,
+ 0.0309629740435296,
+ 0.0315367466624615,
+ 0.0321173333199732,
+ 0.0327047708336193,
+ 0.0332990958021720,
+ 0.0339003446014307,
+ 0.0345085533800302,
+ 0.0351237580552491,
+ 0.0357459943088193,
+ 0.0363752975827358,
+ 0.0370117030750704,
+ 0.0376552457357870,
+ 0.0383059602625614,
+ 0.0389638810966056,
+ 0.0396290424184964,
+ 0.0403014781440112,
+ 0.0409812219199691,
+ 0.0416683071200799,
+ 0.0423627668408009,
+ 0.0430646338972016,
+ 0.0437739408188385,
+ 0.0444907198456388,
+ 0.0452150029237951,
+ 0.0459468217016708,
+ 0.0466862075257170,
+ 0.0474331914364021,
+ 0.0481878041641539,
+ 0.0489500761253148,
+ 0.0497200374181119,
+ 0.0504977178186404,
+ 0.0512831467768636,
+ 0.0520763534126273,
+ 0.0528773665116913,
+ 0.0536862145217772,
+ 0.0545029255486345,
+ 0.0553275273521232,
+ 0.0561600473423164,
+ 0.0570005125756209,
+ 0.0578489497509179,
+ 0.0587053852057233,
+ 0.0595698449123695,
+ 0.0604423544742077,
+ 0.0613229391218317,
+ 0.0622116237093247,
+ 0.0631084327105284,
+ 0.0640133902153352,
+ 0.0649265199260043,
+ 0.0658478451535027,
+ 0.0667773888138695,
+ 0.0677151734246072,
+ 0.0686612211010977,
+ 0.0696155535530446,
+ 0.0705781920809429,
+ 0.0715491575725758,
+ 0.0725284704995383,
+ 0.0735161509137906,
+ 0.0745122184442388,
+ 0.0755166922933461,
+ 0.0765295912337720,
+ 0.0775509336050437,
+ 0.0785807373102561,
+ 0.0796190198128044,
+ 0.0806657981331473,
+ 0.0817210888456026,
+ 0.0827849080751753,
+ 0.0838572714944183,
+ 0.0849381943203265,
+ 0.0860276913112652,
+ 0.0871257767639319,
+ 0.0882324645103534,
+ 0.0893477679149177,
+ 0.0904716998714418,
+ 0.0916042728002747,
+ 0.0927454986454381,
+ 0.0938953888718020,
+ 0.0950539544622996,
+ 0.0962212059151784,
+ 0.0973971532412897,
+ 0.0985818059614169,
+ 0.0997751731036425,
+ 0.1009772632007537,
+ 0.1021880842876888,
+ 0.1034076438990227,
+ 0.1046359490664932,
+ 0.1058730063165681,
+ 0.1071188216680533,
+ 0.1083734006297428,
+ 0.1096367481981100,
+ 0.1109088688550422,
+ 0.1121897665656167,
+ 0.1134794447759207,
+ 0.1147779064109143,
+ 0.1160851538723372,
+ 0.1174011890366591,
+ 0.1187260132530751,
+ 0.1200596273415457,
+ 0.1214020315908810,
+ 0.1227532257568719,
+ 0.1241132090604651,
+ 0.1254819801859856,
+ 0.1268595372794049,
+ 0.1282458779466558,
+ 0.1296409992519942,
+ 0.1310448977164081,
+ 0.1324575693160745,
+ 0.1338790094808633,
+ 0.1353092130928902,
+ 0.1367481744851168,
+ 0.1381958874400010,
+ 0.1396523451881945,
+ 0.1411175404072910,
+ 0.1425914652206223,
+ 0.1440741111961058,
+ 0.1455654693451402,
+ 0.1470655301215526,
+ 0.1485742834205956,
+ 0.1500917185779945,
+ 0.1516178243690463,
+ 0.1531525890077689,
+ 0.1546960001461024,
+ 0.1562480448731608,
+ 0.1578087097145364,
+ 0.1593779806316558,
+ 0.1609558430211876,
+ 0.1625422817145027,
+ 0.1641372809771871,
+ 0.1657408245086070,
+ 0.1673528954415270,
+ 0.1689734763417811,
+ 0.1706025492079969,
+ 0.1722400954713725,
+ 0.1738860959955082,
+ 0.1755405310762898,
+ 0.1772033804418275,
+ 0.1788746232524467,
+ 0.1805542381007349,
+ 0.1822422030116404,
+ 0.1839384954426268,
+ 0.1856430922838810,
+ 0.1873559698585756,
+ 0.1890771039231862,
+ 0.1908064696678625,
+ 0.1925440417168546,
+ 0.1942897941289937,
+ 0.1960437003982277,
+ 0.1978057334542116,
+ 0.1995758656629525,
+ 0.2013540688275098,
+ 0.2031403141887507,
+ 0.2049345724261595,
+ 0.2067368136587033,
+ 0.2085470074457521,
+ 0.2103651227880538,
+ 0.2121911281287646,
+ 0.2140249913545346,
+ 0.2158666797966480,
+ 0.2177161602322188,
+ 0.2195733988854414,
+ 0.2214383614288963,
+ 0.2233110129849106,
+ 0.2251913181269740,
+ 0.2270792408812093,
+ 0.2289747447278976,
+ 0.2308777926030592,
+ 0.2327883469000885,
+ 0.2347063694714437,
+ 0.2366318216303919,
+ 0.2385646641528076,
+ 0.2405048572790267,
+ 0.2424523607157545,
+ 0.2444071336380283,
+ 0.2463691346912334,
+ 0.2483383219931741,
+ 0.2503146531361985,
+ 0.2522980851893767,
+ 0.2542885747007335,
+ 0.2562860776995335,
+ 0.2582905496986215,
+ 0.2603019456968142,
+ 0.2623202201813464,
+ 0.2643453271303700,
+ 0.2663772200155053,
+ 0.2684158518044454,
+ 0.2704611749636135,
+ 0.2725131414608710,
+ 0.2745717027682799,
+ 0.2766368098649151,
+ 0.2787084132397296,
+ 0.2807864628944707,
+ 0.2828709083466482,
+ 0.2849616986325523,
+ 0.2870587823103237,
+ 0.2891621074630737,
+ 0.2912716217020546,
+ 0.2933872721698803,
+ 0.2955090055437973,
+ 0.2976367680390041,
+ 0.2997705054120213,
+ 0.3019101629641097,
+ 0.3040556855447379,
+ 0.3062070175550981,
+ 0.3083641029516701,
+ 0.3105268852498334,
+ 0.3126953075275265,
+ 0.3148693124289546,
+ 0.3170488421683428,
+ 0.3192338385337370,
+ 0.3214242428908514,
+ 0.3236199961869606,
+ 0.3258210389548392,
+ 0.3280273113167459,
+ 0.3302387529884521,
+ 0.3324553032833160,
+ 0.3346769011164010,
+ 0.3369034850086373,
+ 0.3391349930910280,
+ 0.3413713631088974,
+ 0.3436125324261830,
+ 0.3458584380297697,
+ 0.3481090165338656,
+ 0.3503642041844199,
+ 0.3526239368635820,
+ 0.3548881500942010,
+ 0.3571567790443668,
+ 0.3594297585319891,
+ 0.3617070230294185,
+ 0.3639885066681048,
+ 0.3662741432432950,
+ 0.3685638662187693,
+ 0.3708576087316147,
+ 0.3731553035970366,
+ 0.3754568833132069,
+ 0.3777622800661488,
+ 0.3800714257346570,
+ 0.3823842518952546,
+ 0.3847006898271841,
+ 0.3870206705174334,
+ 0.3893441246657958,
+ 0.3916709826899639,
+ 0.3940011747306560,
+ 0.3963346306567764,
+ 0.3986712800706062,
+ 0.4010110523130271,
+ 0.4033538764687756,
+ 0.4056996813717284,
+ 0.4080483956102172,
+ 0.4103999475323736,
+ 0.4127542652515031,
+ 0.4151112766514873,
+ 0.4174709093922143,
+ 0.4198330909150365,
+ 0.4221977484482556,
+ 0.4245648090126334,
+ 0.4269341994269293,
+ 0.4293058463134616,
+ 0.4316796761036958,
+ 0.4340556150438547,
+ 0.4364335892005536,
+ 0.4388135244664580,
+ 0.4411953465659639,
+ 0.4435789810609000,
+ 0.4459643533562509,
+ 0.4483513887059016,
+ 0.4507400122184019,
+ 0.4531301488627497,
+ 0.4555217234741947,
+ 0.4579146607600593,
+ 0.4603088853055777,
+ 0.4627043215797521,
+ 0.4651008939412254,
+ 0.4674985266441709,
+ 0.4698971438441951,
+ 0.4722966696042580,
+ 0.4746970279006055,
+ 0.4770981426287164,
+ 0.4794999376092619,
+ 0.4819023365940778,
+ 0.4843052632721476,
+ 0.4867086412755978,
+ 0.4891123941857028,
+ 0.4915164455388997,
+ 0.4939207188328126,
+ 0.4963251375322855,
+ 0.4987296250754225,
+ 0.5011341048796359,
+ 0.5035385003477012,
+ 0.5059427348738168,
+ 0.5083467318496706,
+ 0.5107504146705106,
+ 0.5131537067412193,
+ 0.5155565314823923,
+ 0.5179588123364193,
+ 0.5203604727735667,
+ 0.5227614362980630,
+ 0.5251616264541841,
+ 0.5275609668323384,
+ 0.5299593810751532,
+ 0.5323567928835578,
+ 0.5347531260228663,
+ 0.5371483043288580,
+ 0.5395422517138538,
+ 0.5419348921727899,
+ 0.5443261497892862,
+ 0.5467159487417104,
+ 0.5491042133092364,
+ 0.5514908678778958,
+ 0.5538758369466227,
+ 0.5562590451332913,
+ 0.5586404171807443,
+ 0.5610198779628133,
+ 0.5633973524903286,
+ 0.5657727659171199,
+ 0.5681460435460047,
+ 0.5705171108347663,
+ 0.5728858934021188,
+ 0.5752523170336598,
+ 0.5776163076878088,
+ 0.5799777915017323,
+ 0.5823366947972535,
+ 0.5846929440867458,
+ 0.5870464660790119,
+ 0.5893971876851449,
+ 0.5917450360243719,
+ 0.5940899384298793,
+ 0.5964318224546208,
+ 0.5987706158771039,
+ 0.6011062467071583,
+ 0.6034386431916822,
+ 0.6057677338203681,
+ 0.6080934473314057,
+ 0.6104157127171639,
+ 0.6127344592298474,
+ 0.6150496163871310,
+ 0.6173611139777690,
+ 0.6196688820671789,
+ 0.6219728510029997,
+ 0.6242729514206247,
+ 0.6265691142487051,
+ 0.6288612707146283,
+ 0.6311493523499663,
+ 0.6334332909958958,
+ 0.6357130188085891,
+ 0.6379884682645743,
+ 0.6402595721660647,
+ 0.6425262636462578,
+ 0.6447884761746012,
+ 0.6470461435620266,
+ 0.6492991999661505,
+ 0.6515475798964411,
+ 0.6537912182193508,
+ 0.6560300501634142,
+ 0.6582640113243098,
+ 0.6604930376698862,
+ 0.6627170655451516,
+ 0.6649360316772256,
+ 0.6671498731802533,
+ 0.6693585275602818,
+ 0.6715619327200959,
+ 0.6737600269640164,
+ 0.6759527490026566,
+ 0.6781400379576392,
+ 0.6803218333662715,
+ 0.6824980751861787,
+ 0.6846687037998949,
+ 0.6868336600194123,
+ 0.6889928850906855,
+ 0.6911463206980928,
+ 0.6932939089688525,
+ 0.6954355924773949,
+ 0.6975713142496884,
+ 0.6997010177675195,
+ 0.7018246469727265,
+ 0.7039421462713862,
+ 0.7060534605379528,
+ 0.7081585351193496,
+ 0.7102573158390105,
+ 0.7123497490008750,
+ 0.7144357813933307,
+ 0.7165153602931092,
+ 0.7185884334691287,
+ 0.7206549491862871,
+ 0.7227148562092042,
+ 0.7247681038059106,
+ 0.7268146417514855,
+ 0.7288544203316418,
+ 0.7308873903462577,
+ 0.7329135031128549,
+ 0.7349327104700221,
+ 0.7369449647807855,
+ 0.7389502189359237,
+ 0.7409484263572271,
+ 0.7429395410007016,
+ 0.7449235173597176,
+ 0.7469003104681008,
+ 0.7488698759031670,
+ 0.7508321697887005,
+ 0.7527871487978728,
+ 0.7547347701561059,
+ 0.7566749916438754,
+ 0.7586077715994560,
+ 0.7605330689216074,
+ 0.7624508430722016,
+ 0.7643610540787891,
+ 0.7662636625371070,
+ 0.7681586296135255,
+ 0.7700459170474343,
+ 0.7719254871535672,
+ 0.7737973028242671,
+ 0.7756613275316875,
+ 0.7775175253299340,
+ 0.7793658608571425,
+ 0.7812062993374951,
+ 0.7830388065831744,
+ 0.7848633489962533,
+ 0.7866798935705233,
+ 0.7884884078932579,
+ 0.7902888601469138,
+ 0.7920812191107668,
+ 0.7938654541624850,
+ 0.7956415352796368,
+ 0.7974094330411343,
+ 0.7991691186286133,
+ 0.8009205638277465,
+ 0.8026637410294932,
+ 0.8043986232312831,
+ 0.8061251840381346,
+ 0.8078433976637077,
+ 0.8095532389312917,
+ 0.8112546832747255,
+ 0.8129477067392539,
+ 0.8146322859823164,
+ 0.8163083982742698,
+ 0.8179760214990457,
+ 0.8196351341547393,
+ 0.8212857153541345,
+ 0.8229277448251595,
+ 0.8245612029112778,
+ 0.8261860705718113,
+ 0.8278023293821971,
+ 0.8294099615341773,
+ 0.8310089498359212,
+ 0.8325992777120815,
+ 0.8341809292037831,
+ 0.8357538889685445,
+ 0.8373181422801330,
+ 0.8388736750283521,
+ 0.8404204737187619,
+ 0.8419585254723335,
+ 0.8434878180250348,
+ 0.8450083397273509,
+ 0.8465200795437368,
+ 0.8480230270520029,
+ 0.8495171724426350,
+ 0.8510025065180464,
+ 0.8524790206917633,
+ 0.8539467069875448,
+ 0.8554055580384357,
+ 0.8568555670857525,
+ 0.8582967279780043,
+ 0.8597290351697464,
+ 0.8611524837203691,
+ 0.8625670692928198,
+ 0.8639727881522599,
+ 0.8653696371646555,
+ 0.8667576137953045,
+ 0.8681367161072958,
+ 0.8695069427599065,
+ 0.8708682930069319,
+ 0.8722207666949527,
+ 0.8735643642615368,
+ 0.8748990867333771,
+ 0.8762249357243662,
+ 0.8775419134336067,
+ 0.8788500226433579,
+ 0.8801492667169208,
+ 0.8814396495964587,
+ 0.8827211758007560,
+ 0.8839938504229149,
+ 0.8852576791279895,
+ 0.8865126681505587,
+ 0.8877588242922386,
+ 0.8889961549191320,
+ 0.8902246679592184,
+ 0.8914443718996848,
+ 0.8926552757841945,
+ 0.8938573892100969,
+ 0.8950507223255798,
+ 0.8962352858267605,
+ 0.8974110909547198,
+ 0.8985781494924783,
+ 0.8997364737619142,
+ 0.9008860766206249,
+ 0.9020269714587307,
+ 0.9031591721956235,
+ 0.9042826932766591,
+ 0.9053975496697941,
+ 0.9065037568621681,
+ 0.9076013308566311,
+ 0.9086902881682180,
+ 0.9097706458205682,
+ 0.9108424213422940,
+ 0.9119056327632955,
+ 0.9129602986110235,
+ 0.9140064379066919,
+ 0.9150440701614393,
+ 0.9160732153724396,
+ 0.9170938940189634,
+ 0.9181061270583908,
+ 0.9191099359221748,
+ 0.9201053425117579,
+ 0.9210923691944400,
+ 0.9220710387992010,
+ 0.9230413746124764,
+ 0.9240034003738882,
+ 0.9249571402719298,
+ 0.9259026189396085,
+ 0.9268398614500427,
+ 0.9277688933120170,
+ 0.9286897404654957,
+ 0.9296024292770939,
+ 0.9305069865355076,
+ 0.9314034394469048,
+ 0.9322918156302762,
+ 0.9331721431127471,
+ 0.9340444503248519,
+ 0.9349087660957711,
+ 0.9357651196485313,
+ 0.9366135405951697,
+ 0.9374540589318637,
+ 0.9382867050340261,
+ 0.9391115096513655,
+ 0.9399285039029165,
+ 0.9407377192720349,
+ 0.9415391876013639,
+ 0.9423329410877687,
+ 0.9431190122772415,
+ 0.9438974340597782,
+ 0.9446682396642262,
+ 0.9454314626531054,
+ 0.9461871369174033,
+ 0.9469352966713429,
+ 0.9476759764471278,
+ 0.9484092110896616,
+ 0.9491350357512457,
+ 0.9498534858862532,
+ 0.9505645972457831,
+ 0.9512684058722927,
+ 0.9519649480942105,
+ 0.9526542605205314,
+ 0.9533363800353921,
+ 0.9540113437926313,
+ 0.9546791892103320,
+ 0.9553399539653500,
+ 0.9559936759878265,
+ 0.9566403934556893,
+ 0.9572801447891388,
+ 0.9579129686451244,
+ 0.9585389039118085,
+ 0.9591579897030224,
+ 0.9597702653527108,
+ 0.9603757704093711,
+ 0.9609745446304828,
+ 0.9615666279769324,
+ 0.9621520606074324,
+ 0.9627308828729358,
+ 0.9633031353110477,
+ 0.9638688586404335,
+ 0.9644280937552258,
+ 0.9649808817194311,
+ 0.9655272637613366,
+ 0.9660672812679171,
+ 0.9666009757792454,
+ 0.9671283889829055,
+ 0.9676495627084089,
+ 0.9681645389216160,
+ 0.9686733597191652,
+ 0.9691760673229058,
+ 0.9696727040743406,
+ 0.9701633124290767,
+ 0.9706479349512860,
+ 0.9711266143081750,
+ 0.9715993932644684,
+ 0.9720663146769026,
+ 0.9725274214887337,
+ 0.9729827567242596,
+ 0.9734323634833574,
+ 0.9738762849360358,
+ 0.9743145643170059,
+ 0.9747472449202687,
+ 0.9751743700937215,
+ 0.9755959832337850,
+ 0.9760121277800496,
+ 0.9764228472099433,
+ 0.9768281850334235,
+ 0.9772281847876897,
+ 0.9776228900319223,
+ 0.9780123443420448,
+ 0.9783965913055132,
+ 0.9787756745161313,
+ 0.9791496375688939,
+ 0.9795185240548578,
+ 0.9798823775560431,
+ 0.9802412416403639,
+ 0.9805951598565897,
+ 0.9809441757293399,
+ 0.9812883327541090,
+ 0.9816276743923267,
+ 0.9819622440664515,
+ 0.9822920851550995,
+ 0.9826172409882086,
+ 0.9829377548422400,
+ 0.9832536699354163,
+ 0.9835650294229984,
+ 0.9838718763926001,
+ 0.9841742538595437,
+ 0.9844722047622547,
+ 0.9847657719576983,
+ 0.9850549982168574,
+ 0.9853399262202529,
+ 0.9856205985535073,
+ 0.9858970577029519,
+ 0.9861693460512790,
+ 0.9864375058732389,
+ 0.9867015793313820,
+ 0.9869616084718489,
+ 0.9872176352202061,
+ 0.9874697013773301,
+ 0.9877178486153397,
+ 0.9879621184735767,
+ 0.9882025523546365,
+ 0.9884391915204485,
+ 0.9886720770884069,
+ 0.9889012500275530,
+ 0.9891267511548089,
+ 0.9893486211312621,
+ 0.9895669004585049,
+ 0.9897816294750255,
+ 0.9899928483526520,
+ 0.9902005970930525,
+ 0.9904049155242876,
+ 0.9906058432974180,
+ 0.9908034198831690,
+ 0.9909976845686489,
+ 0.9911886764541239,
+ 0.9913764344498495,
+ 0.9915609972729590,
+ 0.9917424034444086,
+ 0.9919206912859797,
+ 0.9920958989173397,
+ 0.9922680642531603,
+ 0.9924372250002933,
+ 0.9926034186550070,
+ 0.9927666825002789,
+ 0.9929270536031491,
+ 0.9930845688121325,
+ 0.9932392647546895,
+ 0.9933911778347579,
+ 0.9935403442303433,
+ 0.9936867998911693,
+ 0.9938305805363887,
+ 0.9939717216523539,
+ 0.9941102584904481,
+ 0.9942462260649764,
+ 0.9943796591511174,
+ 0.9945105922829353,
+ 0.9946390597514524,
+ 0.9947650956027824,
+ 0.9948887336363228,
+ 0.9950100074030103,
+ 0.9951289502036336,
+ 0.9952455950872091,
+ 0.9953599748494155,
+ 0.9954721220310890,
+ 0.9955820689167787,
+ 0.9956898475333619,
+ 0.9957954896487196,
+ 0.9958990267704713,
+ 0.9960004901447701,
+ 0.9960999107551559,
+ 0.9961973193214694,
+ 0.9962927462988245,
+ 0.9963862218766388,
+ 0.9964777759777242,
+ 0.9965674382574342,
+ 0.9966552381028704,
+ 0.9967412046321465,
+ 0.9968253666937095,
+ 0.9969077528657186,
+ 0.9969883914554805,
+ 0.9970673104989413,
+ 0.9971445377602348,
+ 0.9972201007312871,
+ 0.9972940266314749,
+ 0.9973663424073412,
+ 0.9974370747323638,
+ 0.9975062500067785,
+ 0.9975738943574574,
+ 0.9976400336378379,
+ 0.9977046934279079,
+ 0.9977678990342401,
+ 0.9978296754900812,
+ 0.9978900475554902,
+ 0.9979490397175296,
+ 0.9980066761905056,
+ 0.9980629809162593,
+ 0.9981179775645063,
+ 0.9981716895332257,
+ 0.9982241399490979,
+ 0.9982753516679893,
+ 0.9983253472754841,
+ 0.9983741490874634,
+ 0.9984217791507299,
+ 0.9984682592436778,
+ 0.9985136108770075,
+ 0.9985578552944850,
+ 0.9986010134737439,
+ 0.9986431061271304,
+ 0.9986841537025921,
+ 0.9987241763846056,
+ 0.9987631940951476,
+ 0.9988012264947044,
+ 0.9988382929833222,
+ 0.9988744127016956,
+ 0.9989096045322947,
+ 0.9989438871005292,
+ 0.9989772787759494,
+ 0.9990097976734847,
+ 0.9990414616547146,
+ 0.9990722883291779,
+ 0.9991022950557125,
+ 0.9991314989438310,
+ 0.9991599168551279,
+ 0.9991875654047181,
+ 0.9992144609627068,
+ 0.9992406196556911,
+ 0.9992660573682882,
+ 0.9992907897446957,
+ 0.9993148321902777,
+ 0.9993381998731797,
+ 0.9993609077259696,
+ 0.9993829704473038,
+ 0.9994044025036201,
+ 0.9994252181308537,
+ 0.9994454313361775,
+ 0.9994650558997651,
+ 0.9994841053765757,
+ 0.9995025930981609,
+ 0.9995205321744921,
+ 0.9995379354958073,
+ 0.9995548157344778,
+ 0.9995711853468930,
+ 0.9995870565753632,
+ 0.9996024414500382,
+ 0.9996173517908444,
+ 0.9996317992094352,
+ 0.9996457951111574,
+ 0.9996593506970310,
+ 0.9996724769657434,
+ 0.9996851847156547,
+ 0.9996974845468164,
+ 0.9997093868630000,
+ 0.9997209018737374,
+ 0.9997320395963699,
+ 0.9997428098581069,
+ 0.9997532222980933,
+ 0.9997632863694836,
+ 0.9997730113415246,
+ 0.9997824063016426,
+ 0.9997914801575380,
+ 0.9998002416392840,
+ 0.9998086993014300,
+ 0.9998168615251084,
+ 0.9998247365201450,
+ 0.9998323323271717,
+ 0.9998396568197407,
+ 0.9998467177064404,
+ 0.9998535225330116,
+ 0.9998600786844637,
+ 0.9998663933871905,
+ 0.9998724737110845,
+ 0.9998783265716498,
+ 0.9998839587321121,
+ 0.9998893768055266,
+ 0.9998945872568815,
+ 0.9998995964051983,
+ 0.9999044104256269,
+ 0.9999090353515359,
+ 0.9999134770765971,
+ 0.9999177413568642,
+ 0.9999218338128448,
+ 0.9999257599315647,
+ 0.9999295250686255,
+ 0.9999331344502529,
+ 0.9999365931753376,
+ 0.9999399062174669,
+ 0.9999430784269460,
+ 0.9999461145328103,
+ 0.9999490191448277,
+ 0.9999517967554878,
+ 0.9999544517419835,
+ 0.9999569883681778,
+ 0.9999594107865607,
+ 0.9999617230401926,
+ 0.9999639290646355,
+ 0.9999660326898712,
+ 0.9999680376422052,
+ 0.9999699475461585,
+ 0.9999717659263435,
+ 0.9999734962093266,
+ 0.9999751417254756,
+ 0.9999767057107922,
+ 0.9999781913087290,
+ 0.9999796015719915,
+ 0.9999809394643231,
+ 0.9999822078622751,
+ 0.9999834095569596,
+ 0.9999845472557860,
+ 0.9999856235841805,
+ 0.9999866410872889,
+ 0.9999876022316609,
+ 0.9999885094069193,
+ 0.9999893649274085,
+ 0.9999901710338274,
+ 0.9999909298948430,
+ 0.9999916436086862,
+ 0.9999923142047299,
+ 0.9999929436450469,
+ 0.9999935338259505,
+ 0.9999940865795161,
+ 0.9999946036750835,
+ 0.9999950868207405,
+ 0.9999955376647868,
+ 0.9999959577971798,
+ 0.9999963487509599,
+ 0.9999967120036571,
+ 0.9999970489786785,
+ 0.9999973610466748,
+ 0.9999976495268890,
+ 0.9999979156884846,
+ 0.9999981607518545,
+ 0.9999983858899099,
+ 0.9999985922293493,
+ 0.9999987808519092,
+ 0.9999989527955938,
+ 0.9999991090558848,
+ 0.9999992505869332,
+ 0.9999993783027293,
+ 0.9999994930782556,
+ 0.9999995957506171,
+ 0.9999996871201549,
+ 0.9999997679515386,
+ 0.9999998389748399,
+ 0.9999999008865869,
+ 0.9999999543507984
+};
+
+real_t kbd_short_128[] =
{
4.3795702929468881e-005,
0.00011867384265436617,
@@ -1191,6 +2155,2382 @@
0.99999999295825959,
0.99999999904096815
};
+
+real_t kbd_short_120[] =
+{
+ 0.0000452320086910,
+ 0.0001274564692111,
+ 0.0002529398385345,
+ 0.0004335140496648,
+ 0.0006827100966952,
+ 0.0010158708222246,
+ 0.0014502162869659,
+ 0.0020048865156264,
+ 0.0027009618393178,
+ 0.0035614590925043,
+ 0.0046113018122711,
+ 0.0058772627936484,
+ 0.0073878776584103,
+ 0.0091733284512589,
+ 0.0112652966728373,
+ 0.0136967855861945,
+ 0.0165019120857793,
+ 0.0197156688892217,
+ 0.0233736582950619,
+ 0.0275117992367496,
+ 0.0321660098468534,
+ 0.0373718682174417,
+ 0.0431642544948834,
+ 0.0495769778717676,
+ 0.0566423924273392,
+ 0.0643910061132260,
+ 0.0728510874761729,
+ 0.0820482749475221,
+ 0.0920051937045235,
+ 0.1027410852163450,
+ 0.1142714546239370,
+ 0.1266077410648368,
+ 0.1397570159398145,
+ 0.1537217139274270,
+ 0.1684994012857075,
+ 0.1840825856392944,
+ 0.2004585710384133,
+ 0.2176093615976121,
+ 0.2355116164824983,
+ 0.2541366584185075,
+ 0.2734505372545160,
+ 0.2934141494343369,
+ 0.3139834135200387,
+ 0.3351095011824163,
+ 0.3567391223361566,
+ 0.3788148623608774,
+ 0.4012755686250732,
+ 0.4240567828288110,
+ 0.4470912150133537,
+ 0.4703092544619664,
+ 0.4936395121456694,
+ 0.5170093888596962,
+ 0.5403456627591340,
+ 0.5635750896430154,
+ 0.5866250090612892,
+ 0.6094239491338723,
+ 0.6319022228794100,
+ 0.6539925088563087,
+ 0.6756304090216887,
+ 0.6967549769155277,
+ 0.7173092095766250,
+ 0.7372404969921184,
+ 0.7565010233699827,
+ 0.7750481150999984,
+ 0.7928445309277697,
+ 0.8098586906021583,
+ 0.8260648390616000,
+ 0.8414431440907889,
+ 0.8559797262966709,
+ 0.8696666212110165,
+ 0.8825016743142358,
+ 0.8944883707784486,
+ 0.9056356027326216,
+ 0.9159573778427816,
+ 0.9254724739583072,
+ 0.9342040454819434,
+ 0.9421791879559176,
+ 0.9494284680976784,
+ 0.9559854271440150,
+ 0.9618860658493898,
+ 0.9671683198119525,
+ 0.9718715339497299,
+ 0.9760359449042233,
+ 0.9797021798981759,
+ 0.9829107801140203,
+ 0.9857017559923277,
+ 0.9881141809867999,
+ 0.9901858292742826,
+ 0.9919528617340944,
+ 0.9934495632180476,
+ 0.9947081327749199,
+ 0.9957585271195989,
+ 0.9966283562984427,
+ 0.9973428292485683,
+ 0.9979247458259197,
+ 0.9983945309245774,
+ 0.9987703055583410,
+ 0.9990679892449266,
+ 0.9993014277313617,
+ 0.9994825400228521,
+ 0.9996214788122335,
+ 0.9997267987294857,
+ 0.9998056273097539,
+ 0.9998638341781910,
+ 0.9999061946325793,
+ 0.9999365445321382,
+ 0.9999579241373735,
+ 0.9999727092594598,
+ 0.9999827287418790,
+ 0.9999893678912771,
+ 0.9999936579844555,
+ 0.9999963523959187,
+ 0.9999979902130101,
+ 0.9999989484358076,
+ 0.9999994840031031,
+ 0.9999997669534347,
+ 0.9999999060327799,
+ 0.9999999680107184,
+ 0.9999999918774242,
+ 0.9999999989770326
+};
+
+#else
+
+real_t kbd_long_1024[] =
+{
+ 0x132C5,
+ 0x1C2DF,
+ 0x23D4C,
+ 0x2AEA1,
+ 0x31B8E,
+ 0x38665,
+ 0x3F07E,
+ 0x45AB3,
+ 0x4C598,
+ 0x53198,
+ 0x59F03,
+ 0x60E18,
+ 0x67F08,
+ 0x6F1FB,
+ 0x76714,
+ 0x7DE70,
+ 0x85828,
+ 0x8D455,
+ 0x95308,
+ 0x9D456,
+ 0xA5850,
+ 0xADF05,
+ 0xB6884,
+ 0xBF4DB,
+ 0xC8419,
+ 0xD1649,
+ 0xDAB78,
+ 0xE43B3,
+ 0xEDF05,
+ 0xF7D79,
+ 0x101F1B,
+ 0x10C3F5,
+ 0x116C13,
+ 0x12177F,
+ 0x12C644,
+ 0x13786C,
+ 0x142E01,
+ 0x14E70D,
+ 0x15A39B,
+ 0x1663B5,
+ 0x172764,
+ 0x17EEB2,
+ 0x18B9AA,
+ 0x198856,
+ 0x1A5ABE,
+ 0x1B30ED,
+ 0x1C0AED,
+ 0x1CE8C7,
+ 0x1DCA84,
+ 0x1EB030,
+ 0x1F99D2,
+ 0x208776,
+ 0x217924,
+ 0x226EE6,
+ 0x2368C6,
+ 0x2466CD,
+ 0x256905,
+ 0x266F77,
+ 0x277A2D,
+ 0x288930,
+ 0x299C8A,
+ 0x2AB445,
+ 0x2BD069,
+ 0x2CF101,
+ 0x2E1616,
+ 0x2F3FB1,
+ 0x306DDC,
+ 0x31A0A0,
+ 0x32D806,
+ 0x341419,
+ 0x3554E1,
+ 0x369A68,
+ 0x37E4B7,
+ 0x3933D7,
+ 0x3A87D3,
+ 0x3BE0B3,
+ 0x3D3E80,
+ 0x3EA144,
+ 0x400908,
+ 0x4175D6,
+ 0x42E7B6,
+ 0x445EB3,
+ 0x45DAD4,
+ 0x475C24,
+ 0x48E2AB,
+ 0x4A6E73,
+ 0x4BFF84,
+ 0x4D95E9,
+ 0x4F31AA,
+ 0x50D2CF,
+ 0x527963,
+ 0x54256E,
+ 0x55D6F9,
+ 0x578E0D,
+ 0x594AB4,
+ 0x5B0CF5,
+ 0x5CD4DA,
+ 0x5EA26C,
+ 0x6075B3,
+ 0x624EB9,
+ 0x642D86,
+ 0x661223,
+ 0x67FC98,
+ 0x69ECEE,
+ 0x6BE32E,
+ 0x6DDF61,
+ 0x6FE18F,
+ 0x71E9C0,
+ 0x73F7FD,
+ 0x760C4F,
+ 0x7826BD,
+ 0x7A4751,
+ 0x7C6E12,
+ 0x7E9B0A,
+ 0x80CE3F,
+ 0x8307BA,
+ 0x854784,
+ 0x878DA5,
+ 0x89DA24,
+ 0x8C2D09,
+ 0x8E865E,
+ 0x90E628,
+ 0x934C71,
+ 0x95B940,
+ 0x982C9D,
+ 0x9AA690,
+ 0x9D2720,
+ 0x9FAE55,
+ 0xA23C37,
+ 0xA4D0CD,
+ 0xA76C1E,
+ 0xAA0E31,
+ 0xACB70F,
+ 0xAF66BF,
+ 0xB21D47,
+ 0xB4DAAF,
+ 0xB79EFD,
+ 0xBA6A3A,
+ 0xBD3C6C,
+ 0xC01599,
+ 0xC2F5C9,
+ 0xC5DD03,
+ 0xC8CB4D,
+ 0xCBC0AD,
+ 0xCEBD2B,
+ 0xD1C0CD,
+ 0xD4CB99,
+ 0xD7DD96,
+ 0xDAF6C9,
+ 0xDE173A,
+ 0xE13EEF,
+ 0xE46DED,
+ 0xE7A43B,
+ 0xEAE1DE,
+ 0xEE26DC,
+ 0xF1733C,
+ 0xF4C702,
+ 0xF82235,
+ 0xFB84DA,
+ 0xFEEEF7,
+ 0x1026090,
+ 0x105D9AC,
+ 0x1095A50,
+ 0x10CE280,
+ 0x1107242,
+ 0x114099A,
+ 0x117A88E,
+ 0x11B4F24,
+ 0x11EFD5E,
+ 0x122B342,
+ 0x12670D4,
+ 0x12A361A,
+ 0x12E0318,
+ 0x131D7D0,
+ 0x135B44A,
+ 0x1399886,
+ 0x13D848C,
+ 0x141785E,
+ 0x14573FE,
+ 0x1497774,
+ 0x14D82C2,
+ 0x15195E8,
+ 0x155B0F0,
+ 0x159D3D8,
+ 0x15DFEA6,
+ 0x162315C,
+ 0x1666BFE,
+ 0x16AAE8E,
+ 0x16EF910,
+ 0x1734B86,
+ 0x177A5F4,
+ 0x17C085A,
+ 0x18072BE,
+ 0x184E520,
+ 0x1895F84,
+ 0x18DE1EA,
+ 0x1926C56,
+ 0x196FEC8,
+ 0x19B9946,
+ 0x1A03BCE,
+ 0x1A4E662,
+ 0x1A99904,
+ 0x1AE53B8,
+ 0x1B3167C,
+ 0x1B7E152,
+ 0x1BCB43E,
+ 0x1C18F3E,
+ 0x1C67254,
+ 0x1CB5D80,
+ 0x1D050C4,
+ 0x1D54C20,
+ 0x1DA4F96,
+ 0x1DF5B24,
+ 0x1E46ECC,
+ 0x1E98A8C,
+ 0x1EEAE68,
+ 0x1F3DA5E,
+ 0x1F90E6C,
+ 0x1FE4A94,
+ 0x2038ED8,
+ 0x208DB30,
+ 0x20E2FA4,
+ 0x2138C2C,
+ 0x218F0D0,
+ 0x21E5D84,
+ 0x223D250,
+ 0x2294F30,
+ 0x22ED420,
+ 0x2346124,
+ 0x239F634,
+ 0x23F9354,
+ 0x2453880,
+ 0x24AE5B8,
+ 0x2509AF8,
+ 0x2565840,
+ 0x25C1D88,
+ 0x261EAD4,
+ 0x267C024,
+ 0x26D9D6C,
+ 0x27382B0,
+ 0x2796FEC,
+ 0x27F651C,
+ 0x2856240,
+ 0x28B6754,
+ 0x2917450,
+ 0x2978938,
+ 0x29DA604,
+ 0x2A3CAB0,
+ 0x2A9F738,
+ 0x2B02BA0,
+ 0x2B667D8,
+ 0x2BCABE4,
+ 0x2C2F7C0,
+ 0x2C94B64,
+ 0x2CFA6CC,
+ 0x2D609F8,
+ 0x2DC74DC,
+ 0x2E2E77C,
+ 0x2E961CC,
+ 0x2EFE3C8,
+ 0x2F66D6C,
+ 0x2FCFEB8,
+ 0x30397A0,
+ 0x30A381C,
+ 0x310E030,
+ 0x3178FD0,
+ 0x31E46F8,
+ 0x32505A0,
+ 0x32BCBC4,
+ 0x3329960,
+ 0x3396E68,
+ 0x3404AD8,
+ 0x3472EAC,
+ 0x34E19DC,
+ 0x3550C60,
+ 0x35C0634,
+ 0x363074C,
+ 0x36A0FA8,
+ 0x3711F38,
+ 0x37835FC,
+ 0x37F53EC,
+ 0x38678FC,
+ 0x38DA528,
+ 0x394D868,
+ 0x39C12B4,
+ 0x3A35400,
+ 0x3AA9C48,
+ 0x3B1EB84,
+ 0x3B941AC,
+ 0x3C09EB4,
+ 0x3C80298,
+ 0x3CF6D4C,
+ 0x3D6DEC8,
+ 0x3DE5704,
+ 0x3E5D5F4,
+ 0x3ED5B94,
+ 0x3F4E7D8,
+ 0x3FC7AB4,
+ 0x4041428,
+ 0x40BB418,
+ 0x4135A90,
+ 0x41B0778,
+ 0x422BAD0,
+ 0x42A7488,
+ 0x4323490,
+ 0x439FAE8,
+ 0x441C780,
+ 0x4499A50,
+ 0x4517350,
+ 0x4595270,
+ 0x46137A8,
+ 0x46922F0,
+ 0x4711438,
+ 0x4790B78,
+ 0x48108A0,
+ 0x4890BB0,
+ 0x4911490,
+ 0x4992340,
+ 0x4A137A8,
+ 0x4A951C8,
+ 0x4B17188,
+ 0x4B996E8,
+ 0x4C1C1D8,
+ 0x4C9F250,
+ 0x4D22838,
+ 0x4DA6390,
+ 0x4E2A448,
+ 0x4EAEA50,
+ 0x4F335A0,
+ 0x4FB8628,
+ 0x503DBE0,
+ 0x50C36B0,
+ 0x51496A0,
+ 0x51CFB90,
+ 0x5256578,
+ 0x52DD450,
+ 0x5364808,
+ 0x53EC090,
+ 0x5473DD8,
+ 0x54FBFE0,
+ 0x5584690,
+ 0x560D1D8,
+ 0x56961B8,
+ 0x571F610,
+ 0x57A8EE0,
+ 0x5832C18,
+ 0x58BCDA0,
+ 0x5947378,
+ 0x59D1D88,
+ 0x5A5CBC0,
+ 0x5AE7E20,
+ 0x5B73488,
+ 0x5BFEEF8,
+ 0x5C8AD58,
+ 0x5D16FA0,
+ 0x5DA35B8,
+ 0x5E2FFA0,
+ 0x5EBCD40,
+ 0x5F49E80,
+ 0x5FD7368,
+ 0x6064BD0,
+ 0x60F27C0,
+ 0x6180718,
+ 0x620E9D0,
+ 0x629CFD8,
+ 0x632B920,
+ 0x63BA598,
+ 0x6449530,
+ 0x64D87D8,
+ 0x6567D88,
+ 0x65F7628,
+ 0x66871B0,
+ 0x6717008,
+ 0x67A7128,
+ 0x68374F8,
+ 0x68C7B68,
+ 0x6958478,
+ 0x69E9000,
+ 0x6A79E08,
+ 0x6B0AE70,
+ 0x6B9C128,
+ 0x6C2D628,
+ 0x6CBED60,
+ 0x6D506B8,
+ 0x6DE2220,
+ 0x6E73F90,
+ 0x6F05EF8,
+ 0x6F98040,
+ 0x702A358,
+ 0x70BC830,
+ 0x714EEC0,
+ 0x71E16E8,
+ 0x72740A8,
+ 0x7306BE8,
+ 0x7399898,
+ 0x742C6A0,
+ 0x74BF5F8,
+ 0x7552698,
+ 0x75E5858,
+ 0x7678B38,
+ 0x770BF28,
+ 0x779F410,
+ 0x78329E0,
+ 0x78C6090,
+ 0x7959800,
+ 0x79ED028,
+ 0x7A80900,
+ 0x7B14260,
+ 0x7BA7C50,
+ 0x7C3B6B0,
+ 0x7CCF170,
+ 0x7D62C88,
+ 0x7DF67E0,
+ 0x7E8A368,
+ 0x7F1DF10,
+ 0x7FB1AC8,
+ 0x8045670,
+ 0x80D9210,
+ 0x816CD90,
+ 0x82008E0,
+ 0x82943E0,
+ 0x8327E80,
+ 0x83BB8C0,
+ 0x844F290,
+ 0x84E2BD0,
+ 0x8576470,
+ 0x8609C60,
+ 0x869D3A0,
+ 0x8730A10,
+ 0x87C3FA0,
+ 0x8857440,
+ 0x88EA7E0,
+ 0x897DA60,
+ 0x8A10BD0,
+ 0x8AA3C10,
+ 0x8B36B00,
+ 0x8BC98A0,
+ 0x8C5C4E0,
+ 0x8CEEFB0,
+ 0x8D818F0,
+ 0x8E14090,
+ 0x8EA6690,
+ 0x8F38AE0,
+ 0x8FCAD60,
+ 0x905CE10,
+ 0x90EECC0,
+ 0x9180990,
+ 0x9212440,
+ 0x92A3CE0,
+ 0x9335350,
+ 0x93C6780,
+ 0x9457960,
+ 0x94E88F0,
+ 0x9579610,
+ 0x960A0B0,
+ 0x969A8C0,
+ 0x972AE30,
+ 0x97BB0F0,
+ 0x984B100,
+ 0x98DAE30,
+ 0x996A890,
+ 0x99FA000,
+ 0x9A89470,
+ 0x9B185D0,
+ 0x9BA7410,
+ 0x9C35F30,
+ 0x9CC4700,
+ 0x9D52B90,
+ 0x9DE0CC0,
+ 0x9E6EA90,
+ 0x9EFC4E0,
+ 0x9F89BA0,
+ 0xA016ED0,
+ 0xA0A3E50,
+ 0xA130A10,
+ 0xA1BD210,
+ 0xA249640,
+ 0xA2D5690,
+ 0xA3612E0,
+ 0xA3ECB30,
+ 0xA477F70,
+ 0xA502F90,
+ 0xA58DB80,
+ 0xA618330,
+ 0xA6A26A0,
+ 0xA72C5A0,
+ 0xA7B6050,
+ 0xA83F670,
+ 0xA8C8820,
+ 0xA951530,
+ 0xA9D9DA0,
+ 0xAA62170,
+ 0xAAEA070,
+ 0xAB71AB0,
+ 0xABF9010,
+ 0xAC80090,
+ 0xAD06C10,
+ 0xAD8D2A0,
+ 0xAE13410,
+ 0xAE99070,
+ 0xAF1E7A0,
+ 0xAFA39A0,
+ 0xB028650,
+ 0xB0ACDC0,
+ 0xB130FD0,
+ 0xB1B4C70,
+ 0xB2383A0,
+ 0xB2BB540,
+ 0xB33E160,
+ 0xB3C07D0,
+ 0xB4428B0,
+ 0xB4C43D0,
+ 0xB545930,
+ 0xB5C68C0,
+ 0xB647270,
+ 0xB6C7650,
+ 0xB747430,
+ 0xB7C6C20,
+ 0xB845E00,
+ 0xB8C49D0,
+ 0xB942F90,
+ 0xB9C0F10,
+ 0xBA3E870,
+ 0xBABBB80,
+ 0xBB38850,
+ 0xBBB4ED0,
+ 0xBC30EF0,
+ 0xBCAC8A0,
+ 0xBD27BE0,
+ 0xBDA28A0,
+ 0xBE1CED0,
+ 0xBE96E80,
+ 0xBF10780,
+ 0xBF899E0,
+ 0xC0025A0,
+ 0xC07AA90,
+ 0xC0F28D0,
+ 0xC16A030,
+ 0xC1E10C0,
+ 0xC257A80,
+ 0xC2CDD40,
+ 0xC343920,
+ 0xC3B8E00,
+ 0xC42DBE0,
+ 0xC4A22B0,
+ 0xC516270,
+ 0xC589B20,
+ 0xC5FCCA0,
+ 0xC66F6F0,
+ 0xC6E1A10,
+ 0xC7535F0,
+ 0xC7C4A90,
+ 0xC8357F0,
+ 0xC8A5DF0,
+ 0xC915C90,
+ 0xC9853D0,
+ 0xC9F43B0,
+ 0xCA62C20,
+ 0xCAD0D20,
+ 0xCB3E690,
+ 0xCBAB880,
+ 0xCC182F0,
+ 0xCC845D0,
+ 0xCCF0110,
+ 0xCD5B4B0,
+ 0xCDC60B0,
+ 0xCE30510,
+ 0xCE9A1C0,
+ 0xCF036B0,
+ 0xCF6C3F0,
+ 0xCFD4970,
+ 0xD03C720,
+ 0xD0A3D10,
+ 0xD10AB30,
+ 0xD171180,
+ 0xD1D6FF0,
+ 0xD23C680,
+ 0xD2A1530,
+ 0xD305C00,
+ 0xD369AF0,
+ 0xD3CD1E0,
+ 0xD4300E0,
+ 0xD4927F0,
+ 0xD4F4710,
+ 0xD555E20,
+ 0xD5B6D40,
+ 0xD617450,
+ 0xD677360,
+ 0xD6D6A60,
+ 0xD735950,
+ 0xD794030,
+ 0xD7F1F00,
+ 0xD84F5C0,
+ 0xD8AC460,
+ 0xD908AF0,
+ 0xD964960,
+ 0xD9BFFB0,
+ 0xDA1ADE0,
+ 0xDA753E0,
+ 0xDACF1D0,
+ 0xDB28790,
+ 0xDB81530,
+ 0xDBD9AA0,
+ 0xDC317F0,
+ 0xDC88D10,
+ 0xDCDFA00,
+ 0xDD35ED0,
+ 0xDD8BB70,
+ 0xDDE0FE0,
+ 0xDE35C20,
+ 0xDE8A030,
+ 0xDEDDC10,
+ 0xDF30FD0,
+ 0xDF83B50,
+ 0xDFD5EB0,
+ 0xE0279E0,
+ 0xE078CE0,
+ 0xE0C97B0,
+ 0xE119A60,
+ 0xE1694E0,
+ 0xE1B8730,
+ 0xE207150,
+ 0xE255350,
+ 0xE2A2D30,
+ 0xE2EFEE0,
+ 0xE33C870,
+ 0xE3889E0,
+ 0xE3D4330,
+ 0xE41F460,
+ 0xE469D70,
+ 0xE4B3E60,
+ 0xE4FD740,
+ 0xE546810,
+ 0xE58F0C0,
+ 0xE5D7160,
+ 0xE61EA00,
+ 0xE665A80,
+ 0xE6AC300,
+ 0xE6F2380,
+ 0xE737BF0,
+ 0xE77CC70,
+ 0xE7C14E0,
+ 0xE805560,
+ 0xE848DF0,
+ 0xE88BE90,
+ 0xE8CE740,
+ 0xE910800,
+ 0xE9520E0,
+ 0xE9931D0,
+ 0xE9D3AF0,
+ 0xEA13C30,
+ 0xEA535A0,
+ 0xEA92740,
+ 0xEAD1110,
+ 0xEB0F310,
+ 0xEB4CD50,
+ 0xEB89FE0,
+ 0xEBC6AB0,
+ 0xEC02DC0,
+ 0xEC3E930,
+ 0xEC79CF0,
+ 0xECB4900,
+ 0xECEED80,
+ 0xED28A60,
+ 0xED61FB0,
+ 0xED9AD70,
+ 0xEDD33B0,
+ 0xEE0B260,
+ 0xEE429A0,
+ 0xEE79960,
+ 0xEEB01B0,
+ 0xEEE6290,
+ 0xEF1BC20,
+ 0xEF50E40,
+ 0xEF85910,
+ 0xEFB9C90,
+ 0xEFED8C0,
+ 0xF020DB0,
+ 0xF053B60,
+ 0xF0861E0,
+ 0xF0B8130,
+ 0xF0E9960,
+ 0xF11AA60,
+ 0xF14B450,
+ 0xF17B730,
+ 0xF1AB300,
+ 0xF1DA7C0,
+ 0xF209590,
+ 0xF237C70,
+ 0xF265C60,
+ 0xF293570,
+ 0xF2C0790,
+ 0xF2ED2F0,
+ 0xF319770,
+ 0xF345530,
+ 0xF370C30,
+ 0xF39BC80,
+ 0xF3C6620,
+ 0xF3F0910,
+ 0xF41A570,
+ 0xF443B30,
+ 0xF46CA60,
+ 0xF495310,
+ 0xF4BD550,
+ 0xF4E5110,
+ 0xF50C660,
+ 0xF533550,
+ 0xF559DE0,
+ 0xF580030,
+ 0xF5A5C20,
+ 0xF5CB1E0,
+ 0xF5F0160,
+ 0xF614AB0,
+ 0xF638DE0,
+ 0xF65CAF0,
+ 0xF6801F0,
+ 0xF6A32E0,
+ 0xF6C5DD0,
+ 0xF6E82C0,
+ 0xF70A1C0,
+ 0xF72BAE0,
+ 0xF74CE20,
+ 0xF76DB90,
+ 0xF78E330,
+ 0xF7AE510,
+ 0xF7CE130,
+ 0xF7ED7A0,
+ 0xF80C870,
+ 0xF82B3A0,
+ 0xF849940,
+ 0xF867950,
+ 0xF8853E0,
+ 0xF8A2900,
+ 0xF8BF8B0,
+ 0xF8DC2F0,
+ 0xF8F87E0,
+ 0xF914780,
+ 0xF9301D0,
+ 0xF94B6F0,
+ 0xF9666D0,
+ 0xF981180,
+ 0xF99B720,
+ 0xF9B57A0,
+ 0xF9CF310,
+ 0xF9E8970,
+ 0xFA01AE0,
+ 0xFA1A760,
+ 0xFA32EF0,
+ 0xFA4B1B0,
+ 0xFA62F90,
+ 0xFA7A8A0,
+ 0xFA91D00,
+ 0xFAA8CA0,
+ 0xFABF790,
+ 0xFAD5DE0,
+ 0xFAEBF90,
+ 0xFB01CB0,
+ 0xFB17540,
+ 0xFB2C960,
+ 0xFB41900,
+ 0xFB56440,
+ 0xFB6AB20,
+ 0xFB7EDA0,
+ 0xFB92BE0,
+ 0xFBA65D0,
+ 0xFBB9B80,
+ 0xFBCCD00,
+ 0xFBDFA60,
+ 0xFBF23A0,
+ 0xFC048D0,
+ 0xFC169F0,
+ 0xFC28710,
+ 0xFC3A030,
+ 0xFC4B570,
+ 0xFC5C6C0,
+ 0xFC6D430,
+ 0xFC7DDD0,
+ 0xFC8E3B0,
+ 0xFC9E5C0,
+ 0xFCAE430,
+ 0xFCBDEE0,
+ 0xFCCD5F0,
+ 0xFCDC960,
+ 0xFCEB950,
+ 0xFCFA5A0,
+ 0xFD08E80,
+ 0xFD173E0,
+ 0xFD255E0,
+ 0xFD33470,
+ 0xFD40FA0,
+ 0xFD4E790,
+ 0xFD5BC30,
+ 0xFD68D80,
+ 0xFD75BB0,
+ 0xFD826A0,
+ 0xFD8EE70,
+ 0xFD9B320,
+ 0xFDA74C0,
+ 0xFDB3350,
+ 0xFDBEEE0,
+ 0xFDCA770,
+ 0xFDD5D10,
+ 0xFDE0FC0,
+ 0xFDEBFA0,
+ 0xFDF6C90,
+ 0xFE016C0,
+ 0xFE0BE30,
+ 0xFE162D0,
+ 0xFE204C0,
+ 0xFE2A400,
+ 0xFE34090,
+ 0xFE3DA90,
+ 0xFE471F0,
+ 0xFE506C0,
+ 0xFE59910,
+ 0xFE628E0,
+ 0xFE6B630,
+ 0xFE74120,
+ 0xFE7C9A0,
+ 0xFE84FC0,
+ 0xFE8D390,
+ 0xFE95500,
+ 0xFE9D440,
+ 0xFEA5130,
+ 0xFEACBE0,
+ 0xFEB4460,
+ 0xFEBBAC0,
+ 0xFEC2EF0,
+ 0xFECA110,
+ 0xFED1120,
+ 0xFED7F10,
+ 0xFEDEB00,
+ 0xFEE5500,
+ 0xFEEBCF0,
+ 0xFEF2300,
+ 0xFEF8720,
+ 0xFEFE960,
+ 0xFF049B0,
+ 0xFF0A840,
+ 0xFF10500,
+ 0xFF15FF0,
+ 0xFF1B920,
+ 0xFF21090,
+ 0xFF26650,
+ 0xFF2BA60,
+ 0xFF30CC0,
+ 0xFF35D90,
+ 0xFF3ACB0,
+ 0xFF3FA50,
+ 0xFF44650,
+ 0xFF490D0,
+ 0xFF4D9C0,
+ 0xFF52140,
+ 0xFF56740,
+ 0xFF5ABD0,
+ 0xFF5EF00,
+ 0xFF630C0,
+ 0xFF67120,
+ 0xFF6B020,
+ 0xFF6EDD0,
+ 0xFF72A30,
+ 0xFF76550,
+ 0xFF79F20,
+ 0xFF7D7B0,
+ 0xFF80F10,
+ 0xFF84530,
+ 0xFF87A30,
+ 0xFF8ADF0,
+ 0xFF8E0A0,
+ 0xFF91220,
+ 0xFF94280,
+ 0xFF971E0,
+ 0xFF9A020,
+ 0xFF9CD50,
+ 0xFF9F980,
+ 0xFFA24A0,
+ 0xFFA4ED0,
+ 0xFFA7800,
+ 0xFFAA030,
+ 0xFFAC780,
+ 0xFFAEDE0,
+ 0xFFB1350,
+ 0xFFB37E0,
+ 0xFFB5B90,
+ 0xFFB7E60,
+ 0xFFBA050,
+ 0xFFBC180,
+ 0xFFBE1D0,
+ 0xFFC0160,
+ 0xFFC2020,
+ 0xFFC3E20,
+ 0xFFC5B60,
+ 0xFFC77E0,
+ 0xFFC93B0,
+ 0xFFCAEC0,
+ 0xFFCC930,
+ 0xFFCE2E0,
+ 0xFFCFBF0,
+ 0xFFD1450,
+ 0xFFD2C10,
+ 0xFFD4340,
+ 0xFFD59C0,
+ 0xFFD6FB0,
+ 0xFFD8500,
+ 0xFFD99C0,
+ 0xFFDAE00,
+ 0xFFDC1A0,
+ 0xFFDD4C0,
+ 0xFFDE750,
+ 0xFFDF970,
+ 0xFFE0B00,
+ 0xFFE1C10,
+ 0xFFE2CA0,
+ 0xFFE3CC0,
+ 0xFFE4C70,
+ 0xFFE5BA0,
+ 0xFFE6A70,
+ 0xFFE78C0,
+ 0xFFE86B0,
+ 0xFFE9430,
+ 0xFFEA150,
+ 0xFFEAE10,
+ 0xFFEBA60,
+ 0xFFEC650,
+ 0xFFED1F0,
+ 0xFFEDD30,
+ 0xFFEE820,
+ 0xFFEF2B0,
+ 0xFFEFCE0,
+ 0xFFF06D0,
+ 0xFFF1070,
+ 0xFFF19B0,
+ 0xFFF22B0,
+ 0xFFF2B70,
+ 0xFFF33D0,
+ 0xFFF3C00,
+ 0xFFF43E0,
+ 0xFFF4B80,
+ 0xFFF52E0,
+ 0xFFF5A00,
+ 0xFFF60E0,
+ 0xFFF6780,
+ 0xFFF6DF0,
+ 0xFFF7420,
+ 0xFFF7A10,
+ 0xFFF7FE0,
+ 0xFFF8570,
+ 0xFFF8AC0,
+ 0xFFF8FF0,
+ 0xFFF94F0,
+ 0xFFF99C0,
+ 0xFFF9E60,
+ 0xFFFA2D0,
+ 0xFFFA720,
+ 0xFFFAB40,
+ 0xFFFAF30,
+ 0xFFFB310,
+ 0xFFFB6B0,
+ 0xFFFBA40,
+ 0xFFFBDA0,
+ 0xFFFC0E0,
+ 0xFFFC400,
+ 0xFFFC700,
+ 0xFFFC9E0,
+ 0xFFFCCA0,
+ 0xFFFCF50,
+ 0xFFFD1D0,
+ 0xFFFD440,
+ 0xFFFD690,
+ 0xFFFD8D0,
+ 0xFFFDAF0,
+ 0xFFFDD00,
+ 0xFFFDEF0,
+ 0xFFFE0D0,
+ 0xFFFE290,
+ 0xFFFE440,
+ 0xFFFE5E0,
+ 0xFFFE770,
+ 0xFFFE8E0,
+ 0xFFFEA50,
+ 0xFFFEBA0,
+ 0xFFFECE0,
+ 0xFFFEE20,
+ 0xFFFEF40,
+ 0xFFFF050,
+ 0xFFFF160,
+ 0xFFFF260,
+ 0xFFFF340,
+ 0xFFFF420,
+ 0xFFFF500,
+ 0xFFFF5C0,
+ 0xFFFF680,
+ 0xFFFF730,
+ 0xFFFF7E0,
+ 0xFFFF880,
+ 0xFFFF910,
+ 0xFFFF9A0,
+ 0xFFFFA30,
+ 0xFFFFAA0,
+ 0xFFFFB20,
+ 0xFFFFB90,
+ 0xFFFFBF0,
+ 0xFFFFC50,
+ 0xFFFFCA0,
+ 0xFFFFD00,
+ 0xFFFFD50,
+ 0xFFFFD90,
+ 0xFFFFDD0,
+ 0xFFFFE10,
+ 0xFFFFE50,
+ 0xFFFFE80,
+ 0xFFFFEB0,
+ 0xFFFFEE0,
+ 0xFFFFF00,
+ 0xFFFFF30,
+ 0xFFFFF50,
+ 0xFFFFF70,
+ 0xFFFFF80,
+ 0xFFFFFA0,
+ 0xFFFFFB0,
+ 0xFFFFFC0,
+ 0xFFFFFD0,
+ 0xFFFFFE0,
+ 0xFFFFFF0
+};
+
+real_t kbd_long_960[] =
+{
+ 0x13CD5,
+ 0x1D2DA,
+ 0x2530F,
+ 0x2CA56,
+ 0x33D79,
+ 0x3AED7,
+ 0x41FCF,
+ 0x4913D,
+ 0x503BC,
+ 0x577B7,
+ 0x5ED81,
+ 0x6655B,
+ 0x6DF77,
+ 0x75C00,
+ 0x7DB1B,
+ 0x85CE5,
+ 0x8E17C,
+ 0x968F7,
+ 0x9F36B,
+ 0xA80EF,
+ 0xB1194,
+ 0xBA56C,
+ 0xC3C88,
+ 0xCD6F8,
+ 0xD74CB,
+ 0xE1610,
+ 0xEBAD6,
+ 0xF632A,
+ 0x100F1A,
+ 0x10BEB4,
+ 0x117203,
+ 0x122916,
+ 0x12E3F9,
+ 0x13A2B8,
+ 0x146561,
+ 0x152BFF,
+ 0x15F69E,
+ 0x16C54B,
+ 0x179812,
+ 0x186EFF,
+ 0x194A1D,
+ 0x1A2979,
+ 0x1B0D1E,
+ 0x1BF519,
+ 0x1CE175,
+ 0x1DD23E,
+ 0x1EC77F,
+ 0x1FC145,
+ 0x20BF9B,
+ 0x21C28C,
+ 0x22CA24,
+ 0x23D670,
+ 0x24E77A,
+ 0x25FD4E,
+ 0x2717F7,
+ 0x283782,
+ 0x295BF9,
+ 0x2A8569,
+ 0x2BB3DD,
+ 0x2CE760,
+ 0x2E1FFD,
+ 0x2F5DC1,
+ 0x30A0B7,
+ 0x31E8EA,
+ 0x333666,
+ 0x348935,
+ 0x35E164,
+ 0x373EFE,
+ 0x38A20E,
+ 0x3A0AA0,
+ 0x3B78BE,
+ 0x3CEC75,
+ 0x3E65CF,
+ 0x3FE4D8,
+ 0x41699B,
+ 0x42F424,
+ 0x44847D,
+ 0x461AB1,
+ 0x47B6CC,
+ 0x4958D9,
+ 0x4B00E4,
+ 0x4CAEF6,
+ 0x4E631C,
+ 0x501D60,
+ 0x51DDCD,
+ 0x53A46E,
+ 0x55714E,
+ 0x574479,
+ 0x591DF8,
+ 0x5AFDD7,
+ 0x5CE420,
+ 0x5ED0DE,
+ 0x60C41D,
+ 0x62BDE6,
+ 0x64BE44,
+ 0x66C542,
+ 0x68D2EB,
+ 0x6AE748,
+ 0x6D0265,
+ 0x6F244B,
+ 0x714D05,
+ 0x737C9E,
+ 0x75B320,
+ 0x77F094,
+ 0x7A3506,
+ 0x7C807E,
+ 0x7ED308,
+ 0x812CAD,
+ 0x838D77,
+ 0x85F570,
+ 0x8864A2,
+ 0x8ADB16,
+ 0x8D58D7,
+ 0x8FDDEE,
+ 0x926A64,
+ 0x94FE44,
+ 0x979995,
+ 0x9A3C63,
+ 0x9CE6B6,
+ 0x9F9897,
+ 0xA25210,
+ 0xA5132A,
+ 0xA7DBED,
+ 0xAAAC63,
+ 0xAD8495,
+ 0xB0648B,
+ 0xB34C4E,
+ 0xB63BE7,
+ 0xB9335E,
+ 0xBC32BC,
+ 0xBF3A09,
+ 0xC2494E,
+ 0xC56093,
+ 0xC87FE0,
+ 0xCBA73D,
+ 0xCED6B2,
+ 0xD20E47,
+ 0xD54E04,
+ 0xD895F0,
+ 0xDBE613,
+ 0xDF3E76,
+ 0xE29F1E,
+ 0xE60814,
+ 0xE9795F,
+ 0xECF305,
+ 0xF0750F,
+ 0xF3FF82,
+ 0xF79267,
+ 0xFB2DC3,
+ 0xFED19E,
+ 0x1027DFC,
+ 0x10632E8,
+ 0x109F064,
+ 0x10DB678,
+ 0x111852A,
+ 0x1155C82,
+ 0x1193C82,
+ 0x11D2532,
+ 0x121169A,
+ 0x12510BA,
+ 0x129139E,
+ 0x12D1F46,
+ 0x13133BA,
+ 0x13550FE,
+ 0x1397718,
+ 0x13DA60C,
+ 0x141DDE0,
+ 0x1461E98,
+ 0x14A6838,
+ 0x14EBAC6,
+ 0x1531644,
+ 0x1577AB8,
+ 0x15BE826,
+ 0x1605E92,
+ 0x164DE00,
+ 0x1696672,
+ 0x16DF7EC,
+ 0x1729274,
+ 0x177360A,
+ 0x17BE2B4,
+ 0x1809874,
+ 0x185574C,
+ 0x18A1F40,
+ 0x18EF052,
+ 0x193CA84,
+ 0x198ADDA,
+ 0x19D9A56,
+ 0x1A28FFA,
+ 0x1A78EC6,
+ 0x1AC96BE,
+ 0x1B1A7E4,
+ 0x1B6C23A,
+ 0x1BBE5C0,
+ 0x1C11276,
+ 0x1C64860,
+ 0x1CB8780,
+ 0x1D0CFD2,
+ 0x1D6215C,
+ 0x1DB7C1C,
+ 0x1E0E012,
+ 0x1E64D40,
+ 0x1EBC3A4,
+ 0x1F14342,
+ 0x1F6CC16,
+ 0x1FC5E22,
+ 0x201F964,
+ 0x2079DDC,
+ 0x20D4B8C,
+ 0x2130270,
+ 0x218C288,
+ 0x21E8BD4,
+ 0x2245E50,
+ 0x22A3A00,
+ 0x2301EDC,
+ 0x2360CE4,
+ 0x23C0418,
+ 0x2420478,
+ 0x2480DFC,
+ 0x24E20A8,
+ 0x2543C74,
+ 0x25A6164,
+ 0x2608F6C,
+ 0x266C694,
+ 0x26D06D0,
+ 0x2735020,
+ 0x279A284,
+ 0x27FFDF4,
+ 0x286626C,
+ 0x28CCFEC,
+ 0x2934670,
+ 0x299C5F0,
+ 0x2A04E68,
+ 0x2A6DFD8,
+ 0x2AD7A3C,
+ 0x2B41D88,
+ 0x2BAC9BC,
+ 0x2C17ED4,
+ 0x2C83CC8,
+ 0x2CF0398,
+ 0x2D5D338,
+ 0x2DCABA4,
+ 0x2E38CD8,
+ 0x2EA76CC,
+ 0x2F1697C,
+ 0x2F864E4,
+ 0x2FF68F8,
+ 0x30675B8,
+ 0x30D8B14,
+ 0x314A910,
+ 0x31BCF9C,
+ 0x322FEB8,
+ 0x32A3658,
+ 0x3317678,
+ 0x338BF0C,
+ 0x3401010,
+ 0x3476978,
+ 0x34ECB44,
+ 0x3563564,
+ 0x35DA7D0,
+ 0x3652288,
+ 0x36CA578,
+ 0x37430A0,
+ 0x37BC3F0,
+ 0x3835F64,
+ 0x38B02F4,
+ 0x392AE90,
+ 0x39A6238,
+ 0x3A21DD8,
+ 0x3A9E16C,
+ 0x3B1ACE8,
+ 0x3B98048,
+ 0x3C15B78,
+ 0x3C93E74,
+ 0x3D12930,
+ 0x3D91BA0,
+ 0x3E115BC,
+ 0x3E91774,
+ 0x3F120C4,
+ 0x3F9319C,
+ 0x40149F0,
+ 0x40969B8,
+ 0x41190E8,
+ 0x419BF70,
+ 0x421F548,
+ 0x42A3260,
+ 0x43276B0,
+ 0x43AC228,
+ 0x44314C0,
+ 0x44B6E68,
+ 0x453CF18,
+ 0x45C36C0,
+ 0x464A550,
+ 0x46D1AB8,
+ 0x47596F0,
+ 0x47E19F0,
+ 0x486A3A8,
+ 0x48F3400,
+ 0x497CAF0,
+ 0x4A06870,
+ 0x4A90C70,
+ 0x4B1B6D8,
+ 0x4BA67A8,
+ 0x4C31EC8,
+ 0x4CBDC28,
+ 0x4D49FC0,
+ 0x4DD6980,
+ 0x4E63958,
+ 0x4EF0F30,
+ 0x4F7EB08,
+ 0x500CCC8,
+ 0x509B468,
+ 0x512A1D0,
+ 0x51B94F0,
+ 0x5248DC0,
+ 0x52D8C28,
+ 0x5369020,
+ 0x53F9990,
+ 0x548A870,
+ 0x551BCA8,
+ 0x55AD628,
+ 0x563F4E8,
+ 0x56D18D0,
+ 0x57641D0,
+ 0x57F6FD8,
+ 0x588A2D8,
+ 0x591DAC0,
+ 0x59B1780,
+ 0x5A45900,
+ 0x5AD9F30,
+ 0x5B6EA08,
+ 0x5C03968,
+ 0x5C98D50,
+ 0x5D2E5A0,
+ 0x5DC4248,
+ 0x5E5A338,
+ 0x5EF0860,
+ 0x5F871B0,
+ 0x601DF10,
+ 0x60B5078,
+ 0x614C5C8,
+ 0x61E3EF0,
+ 0x627BBE8,
+ 0x6313C98,
+ 0x63AC0E8,
+ 0x64448C8,
+ 0x64DD430,
+ 0x65762F8,
+ 0x660F520,
+ 0x66A8A90,
+ 0x6742330,
+ 0x67DBEF0,
+ 0x6875DC0,
+ 0x690FF88,
+ 0x69AA438,
+ 0x6A44BB8,
+ 0x6ADF5F8,
+ 0x6B7A2E8,
+ 0x6C15270,
+ 0x6CB0478,
+ 0x6D4B8F8,
+ 0x6DE6FD0,
+ 0x6E828F0,
+ 0x6F1E450,
+ 0x6FBA1C8,
+ 0x7056158,
+ 0x70F22D8,
+ 0x718E648,
+ 0x722AB88,
+ 0x72C7280,
+ 0x7363B28,
+ 0x7400568,
+ 0x749D128,
+ 0x7539E50,
+ 0x75D6CD8,
+ 0x7673CA8,
+ 0x7710DA0,
+ 0x77ADFC0,
+ 0x784B2E0,
+ 0x78E86F0,
+ 0x7985BE8,
+ 0x7A231A8,
+ 0x7AC0820,
+ 0x7B5DF38,
+ 0x7BFB6E0,
+ 0x7C98F00,
+ 0x7D36788,
+ 0x7DD4058,
+ 0x7E71968,
+ 0x7F0F2A0,
+ 0x7FACBE8,
+ 0x804A530,
+ 0x80E7E60,
+ 0x8185770,
+ 0x8223030,
+ 0x82C08A0,
+ 0x835E0B0,
+ 0x83FB830,
+ 0x8498F30,
+ 0x8536580,
+ 0x85D3B20,
+ 0x8670FE0,
+ 0x870E3C0,
+ 0x87AB6B0,
+ 0x8848890,
+ 0x88E5950,
+ 0x89828D0,
+ 0x8A1F710,
+ 0x8ABC3F0,
+ 0x8B58F50,
+ 0x8BF5940,
+ 0x8C92180,
+ 0x8D2E810,
+ 0x8DCACF0,
+ 0x8E66FE0,
+ 0x8F030F0,
+ 0x8F9F000,
+ 0x903ACF0,
+ 0x90D67C0,
+ 0x9172050,
+ 0x920D690,
+ 0x92A8A60,
+ 0x9343BC0,
+ 0x93DEAA0,
+ 0x94796D0,
+ 0x9514050,
+ 0x95AE700,
+ 0x9648AD0,
+ 0x96E2BC0,
+ 0x977C9A0,
+ 0x9816470,
+ 0x98AFC20,
+ 0x9949080,
+ 0x99E2190,
+ 0x9A7AF40,
+ 0x9B13980,
+ 0x9BAC030,
+ 0x9C44340,
+ 0x9CDC2A0,
+ 0x9D73E40,
+ 0x9E0B610,
+ 0x9EA29F0,
+ 0x9F399D0,
+ 0x9FD05A0,
+ 0xA066D50,
+ 0xA0FD0D0,
+ 0xA193010,
+ 0xA228AF0,
+ 0xA2BE170,
+ 0xA353360,
+ 0xA3E80D0,
+ 0xA47C9A0,
+ 0xA510DC0,
+ 0xA5A4D10,
+ 0xA638790,
+ 0xA6CBD20,
+ 0xA75EDC0,
+ 0xA7F1960,
+ 0xA883FE0,
+ 0xA916120,
+ 0xA9A7D30,
+ 0xAA393F0,
+ 0xAACA560,
+ 0xAB5B150,
+ 0xABEB7C0,
+ 0xAC7B8A0,
+ 0xAD0B3D0,
+ 0xAD9A960,
+ 0xAE29920,
+ 0xAEB8320,
+ 0xAF46730,
+ 0xAFD4550,
+ 0xB061D60,
+ 0xB0EEF70,
+ 0xB17BB60,
+ 0xB208110,
+ 0xB294090,
+ 0xB31F9B0,
+ 0xB3AAC80,
+ 0xB4358D0,
+ 0xB4BFEB0,
+ 0xB549E10,
+ 0xB5D36C0,
+ 0xB65C8E0,
+ 0xB6E5430,
+ 0xB76D8D0,
+ 0xB7F5690,
+ 0xB87CD80,
+ 0xB903D70,
+ 0xB98A670,
+ 0xBA10860,
+ 0xBA96340,
+ 0xBB1B700,
+ 0xBBA0380,
+ 0xBC248D0,
+ 0xBCA86D0,
+ 0xBD2BD70,
+ 0xBDAECC0,
+ 0xBE31490,
+ 0xBEB34F0,
+ 0xBF34DC0,
+ 0xBFB5F00,
+ 0xC036890,
+ 0xC0B6A90,
+ 0xC1364C0,
+ 0xC1B5740,
+ 0xC2341E0,
+ 0xC2B24C0,
+ 0xC32FFA0,
+ 0xC3AD2B0,
+ 0xC429DB0,
+ 0xC4A60B0,
+ 0xC521BB0,
+ 0xC59CE90,
+ 0xC617940,
+ 0xC691BE0,
+ 0xC70B630,
+ 0xC784850,
+ 0xC7FD230,
+ 0xC8753B0,
+ 0xC8ECCE0,
+ 0xC963DA0,
+ 0xC9DA600,
+ 0xCA505F0,
+ 0xCAC5D60,
+ 0xCB3AC40,
+ 0xCBAF2A0,
+ 0xCC23060,
+ 0xCC96590,
+ 0xCD09210,
+ 0xCD7B5F0,
+ 0xCDED110,
+ 0xCE5E380,
+ 0xCECED30,
+ 0xCF3EE20,
+ 0xCFAE630,
+ 0xD01D570,
+ 0xD08BBE0,
+ 0xD0F9960,
+ 0xD166E00,
+ 0xD1D39C0,
+ 0xD23FC80,
+ 0xD2AB650,
+ 0xD316710,
+ 0xD380EE0,
+ 0xD3EADA0,
+ 0xD454360,
+ 0xD4BD010,
+ 0xD5253A0,
+ 0xD58CE20,
+ 0xD5F3F80,
+ 0xD65A7B0,
+ 0xD6C06D0,
+ 0xD725CC0,
+ 0xD78A980,
+ 0xD7EED10,
+ 0xD852770,
+ 0xD8B58A0,
+ 0xD918090,
+ 0xD979F50,
+ 0xD9DB4D0,
+ 0xDA3C110,
+ 0xDA9C400,
+ 0xDAFBDC0,
+ 0xDB5AE30,
+ 0xDBB9560,
+ 0xDC17340,
+ 0xDC747D0,
+ 0xDCD1320,
+ 0xDD2D520,
+ 0xDD88DD0,
+ 0xDDE3D40,
+ 0xDE3E350,
+ 0xDE98020,
+ 0xDEF1390,
+ 0xDF49DC0,
+ 0xDFA1EA0,
+ 0xDFF9630,
+ 0xE050470,
+ 0xE0A6960,
+ 0xE0FC510,
+ 0xE151760,
+ 0xE1A6070,
+ 0xE1FA040,
+ 0xE24D6C0,
+ 0xE2A03F0,
+ 0xE2F27F0,
+ 0xE3442A0,
+ 0xE395410,
+ 0xE3E5C40,
+ 0xE435B30,
+ 0xE4850E0,
+ 0xE4D3D60,
+ 0xE5220B0,
+ 0xE56FAD0,
+ 0xE5BCBC0,
+ 0xE609380,
+ 0xE655210,
+ 0xE6A0780,
+ 0xE6EB3D0,
+ 0xE735710,
+ 0xE77F120,
+ 0xE7C8220,
+ 0xE810A10,
+ 0xE858900,
+ 0xE89FED0,
+ 0xE8E6BB0,
+ 0xE92CF80,
+ 0xE972A60,
+ 0xE9B7C40,
+ 0xE9FC530,
+ 0xEA40540,
+ 0xEA83C60,
+ 0xEAC6AA0,
+ 0xEB09010,
+ 0xEB4ACA0,
+ 0xEB8C060,
+ 0xEBCCB60,
+ 0xEC0CD90,
+ 0xEC4C710,
+ 0xEC8B7D0,
+ 0xECC9FE0,
+ 0xED07F40,
+ 0xED45610,
+ 0xED82430,
+ 0xEDBE9C0,
+ 0xEDFA6D0,
+ 0xEE35B50,
+ 0xEE70750,
+ 0xEEAAAD0,
+ 0xEEE45F0,
+ 0xEF1D890,
+ 0xEF562E0,
+ 0xEF8E4E0,
+ 0xEFC5E80,
+ 0xEFFCFD0,
+ 0xF0338F0,
+ 0xF0699D0,
+ 0xF09F280,
+ 0xF0D4300,
+ 0xF108B60,
+ 0xF13CBB0,
+ 0xF1703F0,
+ 0xF1A3430,
+ 0xF1D5C70,
+ 0xF207CC0,
+ 0xF239520,
+ 0xF26A5A0,
+ 0xF29AE50,
+ 0xF2CAF20,
+ 0xF2FA840,
+ 0xF329990,
+ 0xF358340,
+ 0xF386540,
+ 0xF3B3FA0,
+ 0xF3E1260,
+ 0xF40DDA0,
+ 0xF43A160,
+ 0xF465DB0,
+ 0xF491290,
+ 0xF4BC000,
+ 0xF4E6630,
+ 0xF510500,
+ 0xF539C90,
+ 0xF562CE0,
+ 0xF58B610,
+ 0xF5B3810,
+ 0xF5DB300,
+ 0xF6026E0,
+ 0xF6293B0,
+ 0xF64F990,
+ 0xF675880,
+ 0xF69B090,
+ 0xF6C01C0,
+ 0xF6E4C20,
+ 0xF708FD0,
+ 0xF72CCB0,
+ 0xF7502F0,
+ 0xF773290,
+ 0xF795BA0,
+ 0xF7B7E20,
+ 0xF7D9A20,
+ 0xF7FAFA0,
+ 0xF81BEC0,
+ 0xF83C780,
+ 0xF85C9F0,
+ 0xF87C620,
+ 0xF89BC10,
+ 0xF8BABD0,
+ 0xF8D9570,
+ 0xF8F78F0,
+ 0xF915660,
+ 0xF932DD0,
+ 0xF94FF50,
+ 0xF96CAE0,
+ 0xF989090,
+ 0xF9A5070,
+ 0xF9C0A90,
+ 0xF9DBEE0,
+ 0xF9F6D90,
+ 0xFA11690,
+ 0xFA2BA00,
+ 0xFA457E0,
+ 0xFA5F040,
+ 0xFA78330,
+ 0xFA910B0,
+ 0xFAA98D0,
+ 0xFAC1BA0,
+ 0xFAD9920,
+ 0xFAF1170,
+ 0xFB08490,
+ 0xFB1F280,
+ 0xFB35B60,
+ 0xFB4BF40,
+ 0xFB61E10,
+ 0xFB777E0,
+ 0xFB8CCE0,
+ 0xFBA1CF0,
+ 0xFBB6830,
+ 0xFBCAEB0,
+ 0xFBDF070,
+ 0xFBF2D80,
+ 0xFC065F0,
+ 0xFC199C0,
+ 0xFC2C900,
+ 0xFC3F3D0,
+ 0xFC51A20,
+ 0xFC63C00,
+ 0xFC75980,
+ 0xFC872B0,
+ 0xFC987A0,
+ 0xFCA9840,
+ 0xFCBA4C0,
+ 0xFCCAD00,
+ 0xFCDB140,
+ 0xFCEB160,
+ 0xFCFAD80,
+ 0xFD0A5A0,
+ 0xFD199D0,
+ 0xFD28A20,
+ 0xFD37690,
+ 0xFD45F40,
+ 0xFD54420,
+ 0xFD62540,
+ 0xFD702C0,
+ 0xFD7DC90,
+ 0xFD8B2D0,
+ 0xFD98580,
+ 0xFDA54B0,
+ 0xFDB2060,
+ 0xFDBE8B0,
+ 0xFDCAD90,
+ 0xFDD6F10,
+ 0xFDE2D50,
+ 0xFDEE840,
+ 0xFDF9FF0,
+ 0xFE05480,
+ 0xFE105E0,
+ 0xFE1B420,
+ 0xFE25F50,
+ 0xFE30780,
+ 0xFE3ACA0,
+ 0xFE44EE0,
+ 0xFE4EE20,
+ 0xFE58A90,
+ 0xFE62420,
+ 0xFE6BAE0,
+ 0xFE74EE0,
+ 0xFE7E030,
+ 0xFE86EC0,
+ 0xFE8FAA0,
+ 0xFE983F0,
+ 0xFEA0AA0,
+ 0xFEA8ED0,
+ 0xFEB1070,
+ 0xFEB8FA0,
+ 0xFEC0C50,
+ 0xFEC86A0,
+ 0xFECFE90,
+ 0xFED7430,
+ 0xFEDE770,
+ 0xFEE5880,
+ 0xFEEC740,
+ 0xFEF33D0,
+ 0xFEF9E30,
+ 0xFF00670,
+ 0xFF06CA0,
+ 0xFF0D0B0,
+ 0xFF132B0,
+ 0xFF192B0,
+ 0xFF1F0B0,
+ 0xFF24CC0,
+ 0xFF2A6E0,
+ 0xFF2FF20,
+ 0xFF35590,
+ 0xFF3AA20,
+ 0xFF3FCE0,
+ 0xFF44DD0,
+ 0xFF49D10,
+ 0xFF4EA90,
+ 0xFF53670,
+ 0xFF58090,
+ 0xFF5C920,
+ 0xFF61010,
+ 0xFF65560,
+ 0xFF69930,
+ 0xFF6DB80,
+ 0xFF71C40,
+ 0xFF75B90,
+ 0xFF79970,
+ 0xFF7D5E0,
+ 0xFF810E0,
+ 0xFF84A90,
+ 0xFF882E0,
+ 0xFF8B9E0,
+ 0xFF8EF90,
+ 0xFF92400,
+ 0xFF95730,
+ 0xFF98920,
+ 0xFF9B9E0,
+ 0xFF9E970,
+ 0xFFA17D0,
+ 0xFFA4510,
+ 0xFFA7130,
+ 0xFFA9C40,
+ 0xFFAC630,
+ 0xFFAEF20,
+ 0xFFB1700,
+ 0xFFB3DE0,
+ 0xFFB63C0,
+ 0xFFB88A0,
+ 0xFFBAC90,
+ 0xFFBCFA0,
+ 0xFFBF1B0,
+ 0xFFC12E0,
+ 0xFFC3340,
+ 0xFFC52B0,
+ 0xFFC7150,
+ 0xFFC8F20,
+ 0xFFCAC20,
+ 0xFFCC850,
+ 0xFFCE3C0,
+ 0xFFCFE60,
+ 0xFFD1850,
+ 0xFFD3190,
+ 0xFFD4A10,
+ 0xFFD61E0,
+ 0xFFD7900,
+ 0xFFD8F80,
+ 0xFFDA550,
+ 0xFFDBA80,
+ 0xFFDCF10,
+ 0xFFDE310,
+ 0xFFDF670,
+ 0xFFE0940,
+ 0xFFE1B80,
+ 0xFFE2D30,
+ 0xFFE3E60,
+ 0xFFE4F00,
+ 0xFFE5F20,
+ 0xFFE6EC0,
+ 0xFFE7DF0,
+ 0xFFE8C90,
+ 0xFFE9AD0,
+ 0xFFEA890,
+ 0xFFEB5E0,
+ 0xFFEC2D0,
+ 0xFFECF40,
+ 0xFFEDB60,
+ 0xFFEE700,
+ 0xFFEF250,
+ 0xFFEFD40,
+ 0xFFF07D0,
+ 0xFFF1200,
+ 0xFFF1BD0,
+ 0xFFF2560,
+ 0xFFF2E90,
+ 0xFFF3770,
+ 0xFFF3FF0,
+ 0xFFF4840,
+ 0xFFF5030,
+ 0xFFF57E0,
+ 0xFFF5F40,
+ 0xFFF6670,
+ 0xFFF6D50,
+ 0xFFF73E0,
+ 0xFFF7A40,
+ 0xFFF8070,
+ 0xFFF8650,
+ 0xFFF8C00,
+ 0xFFF9170,
+ 0xFFF96C0,
+ 0xFFF9BC0,
+ 0xFFFA0A0,
+ 0xFFFA540,
+ 0xFFFA9C0,
+ 0xFFFAE10,
+ 0xFFFB220,
+ 0xFFFB620,
+ 0xFFFB9E0,
+ 0xFFFBD80,
+ 0xFFFC100,
+ 0xFFFC450,
+ 0xFFFC780,
+ 0xFFFCA90,
+ 0xFFFCD70,
+ 0xFFFD040,
+ 0xFFFD2E0,
+ 0xFFFD570,
+ 0xFFFD7E0,
+ 0xFFFDA30,
+ 0xFFFDC60,
+ 0xFFFDE80,
+ 0xFFFE080,
+ 0xFFFE260,
+ 0xFFFE430,
+ 0xFFFE5F0,
+ 0xFFFE790,
+ 0xFFFE920,
+ 0xFFFEAA0,
+ 0xFFFEC00,
+ 0xFFFED50,
+ 0xFFFEEA0,
+ 0xFFFEFD0,
+ 0xFFFF0F0,
+ 0xFFFF200,
+ 0xFFFF300,
+ 0xFFFF3F0,
+ 0xFFFF4E0,
+ 0xFFFF5B0,
+ 0xFFFF680,
+ 0xFFFF740,
+ 0xFFFF7F0,
+ 0xFFFF8A0,
+ 0xFFFF940,
+ 0xFFFF9D0,
+ 0xFFFFA50,
+ 0xFFFFAE0,
+ 0xFFFFB50,
+ 0xFFFFBC0,
+ 0xFFFFC30,
+ 0xFFFFC90,
+ 0xFFFFCE0,
+ 0xFFFFD40,
+ 0xFFFFD90,
+ 0xFFFFDD0,
+ 0xFFFFE10,
+ 0xFFFFE50,
+ 0xFFFFE80,
+ 0xFFFFEC0,
+ 0xFFFFEE0,
+ 0xFFFFF10,
+ 0xFFFFF30,
+ 0xFFFFF60,
+ 0xFFFFF70,
+ 0xFFFFF90,
+ 0xFFFFFB0,
+ 0xFFFFFC0,
+ 0xFFFFFD0,
+ 0xFFFFFE0,
+ 0xFFFFFF0
+};
+
+real_t kbd_short_128[] =
+{
+ 0x2DEC,
+ 0x7C70,
+ 0xF1EC,
+ 0x19864,
+ 0x27B3D,
+ 0x3A753,
+ 0x52B03,
+ 0x71637,
+ 0x97A69,
+ 0xC6AA6,
+ 0xFFB8C,
+ 0x14433E,
+ 0x19595A,
+ 0x1F56E5,
+ 0x265635,
+ 0x2E72D1,
+ 0x37C94C,
+ 0x427722,
+ 0x4E9A83,
+ 0x5C5227,
+ 0x6BBD0D,
+ 0x7CFA46,
+ 0x9028AF,
+ 0xA566AF,
+ 0xBCD1EE,
+ 0xD6870D,
+ 0xF2A159,
+ 0x1113A7E,
+ 0x1326A3C,
+ 0x156461C,
+ 0x17CE124,
+ 0x1A64B92,
+ 0x1D29294,
+ 0x201C010,
+ 0x233DA5C,
+ 0x268E41C,
+ 0x2A0DBFC,
+ 0x2DBBCA0,
+ 0x3197C7C,
+ 0x35A0DC0,
+ 0x39D5E40,
+ 0x3E35788,
+ 0x42BDED0,
+ 0x476D508,
+ 0x4C41720,
+ 0x5137DE0,
+ 0x564DE60,
+ 0x5B80A20,
+ 0x60CCF50,
+ 0x662F918,
+ 0x6BA4FF0,
+ 0x7129A00,
+ 0x76B9B70,
+ 0x7C516F0,
+ 0x81ECE00,
+ 0x8788190,
+ 0x8D1F240,
+ 0x92AE100,
+ 0x9830F60,
+ 0x9DA4020,
+ 0xA3037A0,
+ 0xA84BC50,
+ 0xAD79720,
+ 0xB2893B0,
+ 0xB778110,
+ 0xBC431C0,
+ 0xC0E7C30,
+ 0xC563AF0,
+ 0xC9B4CF0,
+ 0xCDD95A0,
+ 0xD1CFD30,
+ 0xD597090,
+ 0xD92E180,
+ 0xDC94690,
+ 0xDFC9B20,
+ 0xE2CDF20,
+ 0xE5A1710,
+ 0xE844BD0,
+ 0xEAB8A30,
+ 0xECFE300,
+ 0xEF16A60,
+ 0xF1037D0,
+ 0xF2C6590,
+ 0xF461040,
+ 0xF5D56A0,
+ 0xF725920,
+ 0xF853960,
+ 0xF961A00,
+ 0xFA51DE0,
+ 0xFB26830,
+ 0xFBE1BE0,
+ 0xFC85B20,
+ 0xFD14770,
+ 0xFD90130,
+ 0xFDFA730,
+ 0xFE55700,
+ 0xFEA2C30,
+ 0xFEE40C0,
+ 0xFF1ACA0,
+ 0xFF485D0,
+ 0xFF6E070,
+ 0xFF8CEB0,
+ 0xFFA60D0,
+ 0xFFBA540,
+ 0xFFCA8C0,
+ 0xFFD7660,
+ 0xFFE17C0,
+ 0xFFE9530,
+ 0xFFEF5A0,
+ 0xFFF3EE0,
+ 0xFFF75F0,
+ 0xFFF9EC0,
+ 0xFFFBC90,
+ 0xFFFD210,
+ 0xFFFE150,
+ 0xFFFEBF0,
+ 0xFFFF330,
+ 0xFFFF800,
+ 0xFFFFB30,
+ 0xFFFFD30,
+ 0xFFFFE70,
+ 0xFFFFF30,
+ 0xFFFFF90,
+ 0xFFFFFD0,
+ 0xFFFFFF0,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000
+};
+
+real_t kbd_short_120[] =
+{
+ 0x2F6D,
+ 0x85A5,
+ 0x1093A,
+ 0x1C692,
+ 0x2CBDF,
+ 0x42937,
+ 0x5F0A9,
+ 0x83646,
+ 0xB1029,
+ 0xE9675,
+ 0x12E34C,
+ 0x1812C1,
+ 0x1E42C0,
+ 0x2592EE,
+ 0x2E2485,
+ 0x381A1F,
+ 0x439782,
+ 0x50C160,
+ 0x5FBD0E,
+ 0x70B036,
+ 0x83C082,
+ 0x99133E,
+ 0xB0CD00,
+ 0xCB113B,
+ 0xE801DA,
+ 0x107BEDE,
+ 0x12A65E6,
+ 0x15011DA,
+ 0x178DA70,
+ 0x1A4D3D6,
+ 0x1D40E4E,
+ 0x20695D8,
+ 0x23C71DC,
+ 0x275A4E8,
+ 0x2B22C6C,
+ 0x2F20094,
+ 0x335140C,
+ 0x37B53F4,
+ 0x3C4A7D4,
+ 0x410F198,
+ 0x4600DA8,
+ 0x4B1D308,
+ 0x5061378,
+ 0x55C9BC8,
+ 0x5B53418,
+ 0x60FA030,
+ 0x66B9FF0,
+ 0x6C8EFC0,
+ 0x7274920,
+ 0x7866300,
+ 0x7E5F288,
+ 0x845ABA0,
+ 0x8A54180,
+ 0x9046750,
+ 0x962D0E0,
+ 0x9C03350,
+ 0xA1C4580,
+ 0xA76C0E0,
+ 0xACF61D0,
+ 0xB25E890,
+ 0xB7A1940,
+ 0xBCBBCB0,
+ 0xC1AA0D0,
+ 0xC6698E0,
+ 0xCAF7DC0,
+ 0xCF52E60,
+ 0xD378FC0,
+ 0xD768D10,
+ 0xDB217D0,
+ 0xDEA2790,
+ 0xE1EBA10,
+ 0xE4FD310,
+ 0xE7D7BC0,
+ 0xEA7C2F0,
+ 0xECEBC40,
+ 0xEF27FF0,
+ 0xF132A80,
+ 0xF30DBE0,
+ 0xF4BB760,
+ 0xF63E2A0,
+ 0xF798580,
+ 0xF8CC930,
+ 0xF9DD7E0,
+ 0xFACDC30,
+ 0xFBA00A0,
+ 0xFC56F30,
+ 0xFCF50D0,
+ 0xFD7CD20,
+ 0xFDF09F0,
+ 0xFE52B60,
+ 0xFEA5310,
+ 0xFEEA080,
+ 0xFF23090,
+ 0xFF51DC0,
+ 0xFF77FF0,
+ 0xFF96C90,
+ 0xFFAF690,
+ 0xFFC2EB0,
+ 0xFFD2380,
+ 0xFFDE160,
+ 0xFFE7310,
+ 0xFFEE180,
+ 0xFFF3430,
+ 0xFFF7140,
+ 0xFFF9DA0,
+ 0xFFFBD70,
+ 0xFFFD3E0,
+ 0xFFFE360,
+ 0xFFFEDE0,
+ 0xFFFF4E0,
+ 0xFFFF960,
+ 0xFFFFC30,
+ 0xFFFFDE0,
+ 0xFFFFEE0,
+ 0xFFFFF70,
+ 0xFFFFFC0,
+ 0xFFFFFE0,
+ 0xFFFFFF0,
+ 0x10000000,
+ 0x10000000
+};
+
+#endif
#ifdef __cplusplus
}
--- a/libfaad/libfaad.vcproj
+++ b/libfaad/libfaad.vcproj
@@ -280,6 +280,9 @@
RelativePath=".\ic_predict.h">
</File>
<File
+ RelativePath="iq_table.h">
+ </File>
+ <File
RelativePath=".\is.h">
</File>
<File
@@ -320,6 +323,9 @@
</File>
<File
RelativePath=".\sbr_syntax.h">
+ </File>
+ <File
+ RelativePath="sine_win.h">
</File>
<File
RelativePath=".\specrec.h">
--- a/libfaad/mdct.c
+++ b/libfaad/mdct.c
@@ -16,7 +16,7 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
-** $Id: mdct.c,v 1.18 2002/08/27 18:16:12 menno Exp $
+** $Id: mdct.c,v 1.19 2002/09/08 18:14:37 menno Exp $
**/
/*
@@ -35,26 +35,20 @@
*
*/
-
#include "common.h"
#include <stdlib.h>
#include <assert.h>
-#ifdef USE_FFTW
-/* uses fftw (http://www.fftw.org) for very fast arbitrary-n FFT and IFFT */
-#include <fftw.h>
-#else
#include "cfft.h"
-#endif
-
-
#include "mdct.h"
+
mdct_info *faad_mdct_init(uint16_t N)
{
uint16_t k;
- float32_t scale = sqrt(2.0/(float32_t)N);
+ real_t cangle, sangle, c, s, cold;
+ real_t scale = COEF_CONST(sqrt(2.0/(float32_t)N));
mdct_info *mdct = (mdct_info*)malloc(sizeof(mdct_info));
@@ -62,30 +56,26 @@
mdct->N = N;
mdct->sincos = (faad_sincos*)malloc(N/4*sizeof(faad_sincos));
-#ifdef USE_FFTW
- mdct->Z1 = (fftw_complex*)malloc(N/4*sizeof(fftw_complex));
- mdct->Z2 = (fftw_complex*)malloc(N/4*sizeof(fftw_complex));
-#else
mdct->Z1 = (real_t*)malloc(N/2*sizeof(real_t));
- mdct->Z2 = (faad_complex*)malloc(N/4*sizeof(faad_complex));
-#endif
+ mdct->Z2 = (complex_t*)malloc(N/4*sizeof(complex_t));
+ cangle = COEF_CONST(cos(2.0 * M_PI / (float32_t)N));
+ sangle = COEF_CONST(sin(2.0 * M_PI / (float32_t)N));
+ c = COEF_CONST(cos(2.0 * M_PI * 0.125 / (float32_t)N));
+ s = COEF_CONST(sin(2.0 * M_PI * 0.125 / (float32_t)N));
+
for (k = 0; k < N/4; k++)
{
- float32_t angle = 2.0 * M_PI * ((float32_t)k + 0.125)/(float32_t)N;
- mdct->sincos[k].sin = COEF_CONST(-sin(angle)*scale);
- mdct->sincos[k].cos = COEF_CONST(-cos(angle)*scale);
+ mdct->sincos[k].sin = -1*MUL_C_C(s,scale);
+ mdct->sincos[k].cos = -1*MUL_C_C(c,scale);
+
+ cold = c;
+ c = MUL_C_C(c,cangle) - MUL_C_C(s,sangle);
+ s = MUL_C_C(s,cangle) + MUL_C_C(cold,sangle);
}
-#ifdef USE_FFTW
- mdct->plan_backward = fftw_create_plan(N/4, FFTW_BACKWARD, FFTW_ESTIMATE);
-#ifdef LTP_DEC
- mdct->plan_forward = fftw_create_plan(N/4, FFTW_FORWARD, FFTW_ESTIMATE);
-#endif
-#else
- /* own implementation */
+ /* initialise fft */
mdct->cfft = cffti(N/4);
-#endif
return mdct;
}
@@ -92,14 +82,7 @@
void faad_mdct_end(mdct_info *mdct)
{
-#ifdef USE_FFTW
- fftw_destroy_plan(mdct->plan_backward);
-#ifdef LTP_DEC
- fftw_destroy_plan(mdct->plan_forward);
-#endif
-#else
cfftu(mdct->cfft);
-#endif
if (mdct->Z2) free(mdct->Z2);
if (mdct->Z1) free(mdct->Z1);
@@ -112,13 +95,8 @@
{
uint16_t k;
-#ifdef USE_FFTW
- fftw_complex *Z1 = mdct->Z1;
- fftw_complex *Z2 = mdct->Z2;
-#else
- real_t *Z1 = mdct->Z1;
- faad_complex *Z2 = mdct->Z2;
-#endif
+ real_t *Z1 = mdct->Z1;
+ complex_t *Z2 = mdct->Z2;
faad_sincos *sincos = mdct->sincos;
uint16_t N = mdct->N;
@@ -132,33 +110,20 @@
uint16_t n = k << 1;
real_t x0 = X_in[ n];
real_t x1 = X_in[N2 - 1 - n];
-#ifdef USE_FFTW
- Z1[k].re = MUL_R_C(x1, sincos[k].cos) - MUL_R_C(x0, sincos[k].sin);
- Z1[k].im = MUL_R_C(x0, sincos[k].cos) + MUL_R_C(x1, sincos[k].sin);
-#else
Z1[n] = MUL_R_C(x1, sincos[k].cos) - MUL_R_C(x0, sincos[k].sin);
Z1[n+1] = MUL_R_C(x0, sincos[k].cos) + MUL_R_C(x1, sincos[k].sin);
-#endif
}
/* complex IFFT */
-#ifdef USE_FFTW
- fftw_one(mdct->plan_backward, Z1, Z2);
-#else
cfftb(mdct->cfft, Z1);
-#endif
/* post-IFFT complex multiplication */
for (k = 0; k < N4; k++)
{
-#ifdef USE_FFTW
- real_t zr = Z2[k].re;
- real_t zi = Z2[k].im;
-#else
uint16_t n = k << 1;
real_t zr = Z1[n];
real_t zi = Z1[n+1];
-#endif
+
Z2[k].re = MUL_R_C(zr, sincos[k].cos) - MUL_R_C(zi, sincos[k].sin);
Z2[k].im = MUL_R_C(zi, sincos[k].cos) + MUL_R_C(zr, sincos[k].sin);
}
@@ -183,12 +148,7 @@
{
uint16_t k;
-#ifdef USE_FFTW
- fftw_complex *Z1 = mdct->Z1;
- fftw_complex *Z2 = mdct->Z2;
-#else
real_t *Z1 = mdct->Z1;
-#endif
faad_sincos *sincos = mdct->sincos;
uint16_t N = mdct->N;
@@ -205,44 +165,25 @@
real_t zr = X_in[N - N4 - 1 - n] + X_in[N - N4 + n];
real_t zi = X_in[ N4 + n] - X_in[ N4 - 1 - n];
-#ifdef USE_FFTW
- Z1[k].re = -MUL_R_C(zr, sincos[k].cos) - MUL_R_C(zi, sincos[k].sin);
- Z1[k].im = -MUL_R_C(zi, sincos[k].cos) + MUL_R_C(zr, sincos[k].sin);
-#else
Z1[n] = -MUL_R_C(zr, sincos[k].cos) - MUL_R_C(zi, sincos[k].sin);
Z1[n+1] = -MUL_R_C(zi, sincos[k].cos) + MUL_R_C(zr, sincos[k].sin);
-#endif
zr = X_in[N2 - 1 - n] - X_in[ n];
zi = X_in[N2 + n] + X_in[N - 1 - n];
-#ifdef USE_FFTW
- Z1[k + N8].re = -MUL_R_C(zr, sincos[k + N8].cos) - MUL_R_C(zi, sincos[k + N8].sin);
- Z1[k + N8].im = -MUL_R_C(zi, sincos[k + N8].cos) + MUL_R_C(zr, sincos[k + N8].sin);
-#else
Z1[n + N4] = -MUL_R_C(zr, sincos[k + N8].cos) - MUL_R_C(zi, sincos[k + N8].sin);
Z1[n+1 + N4] = -MUL_R_C(zi, sincos[k + N8].cos) + MUL_R_C(zr, sincos[k + N8].sin);
-#endif
}
/* complex FFT */
-#ifdef USE_FFTW
- fftw_one(mdct->plan_forward, Z1, Z2);
-#else
cfftf(mdct->cfft, Z1);
-#endif
/* post-FFT complex multiplication */
for (k = 0; k < N4; k++)
{
uint16_t n = k << 1;
-#ifdef USE_FFTW
- real_t zr = MUL(MUL_R_C(Z2[k].re, sincos[k].cos) + MUL_R_C(Z2[k].im, sincos[k].sin), scale);
- real_t zi = MUL(MUL_R_C(Z2[k].im, sincos[k].cos) - MUL_R_C(Z2[k].re, sincos[k].sin), scale);
-#else
real_t zr = MUL(MUL_R_C(Z1[n], sincos[k].cos) + MUL_R_C(Z1[n+1], sincos[k].sin), scale);
real_t zi = MUL(MUL_R_C(Z1[n+1], sincos[k].cos) - MUL_R_C(Z1[n], sincos[k].sin), scale);
-#endif
X_out[ n] = zr;
X_out[N2 - 1 - n] = -zi;
--- a/libfaad/mdct.h
+++ b/libfaad/mdct.h
@@ -16,7 +16,7 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
-** $Id: mdct.h,v 1.10 2002/08/17 10:03:16 menno Exp $
+** $Id: mdct.h,v 1.11 2002/09/08 18:14:37 menno Exp $
**/
#ifndef __MDCT_H__
@@ -26,11 +26,7 @@
extern "C" {
#endif
-#ifdef USE_FFTW
-#include <fftw.h>
-#else
#include "cfft.h"
-#endif
typedef struct {
real_t sin;
@@ -37,27 +33,11 @@
real_t cos;
} faad_sincos;
-#ifndef USE_FFTW
typedef struct {
- real_t re;
- real_t im;
-} faad_complex;
-#endif
-
-typedef struct {
faad_sincos *sincos;
-#ifdef USE_FFTW
- fftw_complex *Z1;
- fftw_complex *Z2;
- fftw_plan plan_backward;
-#ifdef LTP_DEC
- fftw_plan plan_forward;
-#endif
-#else
real_t *Z1;
- faad_complex *Z2;
+ complex_t *Z2;
cfft_info *cfft;
-#endif
uint16_t N;
} mdct_info;
--- a/libfaad/pns.c
+++ b/libfaad/pns.c
@@ -16,7 +16,7 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
-** $Id: pns.c,v 1.15 2002/09/05 20:10:53 menno Exp $
+** $Id: pns.c,v 1.16 2002/09/08 18:14:37 menno Exp $
**/
#include "common.h"
@@ -50,6 +50,48 @@
return (__r1 = (t3 >> 1) | t1 ) ^ (__r2 = (t4 + t4) | t2 );
}
+#ifdef FIXED_POINT
+
+#define DIV(A, B) (((int64_t)A << COEF_BITS)/B)
+
+#define step(shift) \
+ if ((0x40000000l >> shift) + root <= value) \
+ { \
+ value -= (0x40000000l >> shift) + root; \
+ root = (root >> 1) | (0x40000000l >> shift); \
+ } else { \
+ root = root >> 1; \
+ }
+
+real_t fp_sqrt(real_t value)
+{
+ real_t root = 0;
+
+ step( 0); step( 2); step( 4); step( 6);
+ step( 8); step(10); step(12); step(14);
+ step(16); step(18); step(20); step(22);
+ step(24); step(26); step(28); step(30);
+
+ if (root < value)
+ ++root;
+
+ root <<= (COEF_BITS/2);
+
+ return root;
+}
+
+static real_t pow2_table[] =
+{
+ COEF_CONST(0.59460355750136),
+ COEF_CONST(0.70710678118655),
+ COEF_CONST(0.84089641525371),
+ COEF_CONST(1.0),
+ COEF_CONST(1.18920711500272),
+ COEF_CONST(1.41421356237310),
+ COEF_CONST(1.68179283050743)
+};
+#endif
+
/* The function gen_rand_vector(addr, size) generates a vector of length
<size> with signed random values of average energy MEAN_NRG per random
value. A suitable random number generator can be realized using one
@@ -57,24 +99,66 @@
*/
static INLINE void gen_rand_vector(real_t *spec, int16_t scale_factor, uint16_t size)
{
+#ifndef FIXED_POINT
uint16_t i;
- float32_t energy = 0.0;
+ real_t energy = 0.0;
+ int32_t exp, frac;
- float32_t scale = 1.0/(float32_t)(size * sqrt(MEAN_NRG));
+ real_t scale = 1.0/(float32_t)size * ISQRT_MEAN_NRG;
for (i = 0; i < size; i++)
{
- float32_t tmp = scale*(float32_t)random2();
- spec[i] = REAL_CONST(tmp);
+ real_t tmp = scale*(real_t)random2();
+ spec[i] = tmp;
energy += tmp*tmp;
}
- scale = 1.0/(float32_t)sqrt(energy);
- scale *= (float32_t)pow(2.0, 0.25 * scale_factor);
+ scale = 1.0/(real_t)sqrt(energy);
+ scale *= (real_t)pow(2.0, 0.25 * scale_factor);
for (i = 0; i < size; i++)
{
- spec[i] = MUL(spec[i],REAL_CONST(scale));
+ spec[i] *= scale;
}
+#else
+ uint16_t i;
+ real_t energy = 0, scale;
+ int32_t exp, frac;
+
+ for (i = 0; i < size; i++)
+ {
+ real_t tmp = ISQRT_MEAN_NRG * random2();
+ tmp = MUL_C_C(COEF_CONST(1.0)/size, tmp);
+
+ energy += MUL_C_C(tmp,tmp);
+
+ /* convert COEF to REAL */
+ spec[i] = (tmp >> -(REAL_BITS-COEF_BITS));
+ }
+
+ energy = fp_sqrt(energy);
+ if (energy > 0)
+ {
+ scale = DIV(COEF_CONST(1),energy);
+
+ scale >>= -(REAL_BITS-COEF_BITS);
+
+ exp = scale_factor / 4;
+ frac = scale_factor % 4;
+
+ if (exp < 0)
+ scale >>= -exp;
+ else
+ scale <<= exp;
+
+ if (frac)
+ scale = MUL_R_C(scale, pow2_table[frac + 3]);
+
+ for (i = 0; i < size; i++)
+ {
+ spec[i] = MUL(spec[i], scale);
+ }
+ }
+#endif
}
void pns_decode(ic_stream *ics_left, ic_stream *ics_right,
--- a/libfaad/pns.h
+++ b/libfaad/pns.h
@@ -16,7 +16,7 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
-** $Id: pns.h,v 1.8 2002/09/04 10:22:18 menno Exp $
+** $Id: pns.h,v 1.9 2002/09/08 18:14:37 menno Exp $
**/
#ifndef __PNS_H__
@@ -30,7 +30,12 @@
#include "common.h"
#define NOISE_OFFSET 90
-#define MEAN_NRG 1.537228e+18 /* (2^31)^2 / 3 */
+/* #define MEAN_NRG 1.537228e+18 */ /* (2^31)^2 / 3 */
+#ifdef FIXED_POINT
+#define ISQRT_MEAN_NRG 0x1DC7 /* sqrt(1/sqrt(MEAN_NRG)) */
+#else
+#define ISQRT_MEAN_NRG 8.0655e-10 /* 1/sqrt(MEAN_NRG) */
+#endif
void pns_decode(ic_stream *ics_left, ic_stream *ics_right,
--- /dev/null
+++ b/libfaad/sine_win.h
@@ -1,0 +1,8542 @@
+/*
+** FAAD - Freeware Advanced Audio Decoder
+** Copyright (C) 2002 M. Bakker
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+**
+** $Id: sine_win.h,v 1.1 2002/09/08 18:14:37 menno Exp $
+**/
+
+#ifndef __SINE_WIN_H__
+#define __SINE_WIN_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef FIXED_POINT
+
+#ifdef _MSC_VER
+#pragma warning(disable:4305)
+#pragma warning(disable:4244)
+#endif
+
+real_t sine_long_1024[] =
+{
+ 0.0007669903,
+ 0.0023009692,
+ 0.0038349427,
+ 0.0053689071,
+ 0.0069028589,
+ 0.0084367945,
+ 0.0099707102,
+ 0.0115046024,
+ 0.0130384676,
+ 0.0145723021,
+ 0.0161061023,
+ 0.0176398646,
+ 0.0191735854,
+ 0.0207072611,
+ 0.0222408880,
+ 0.0237744627,
+ 0.0253079813,
+ 0.0268414404,
+ 0.0283748364,
+ 0.0299081656,
+ 0.0314414244,
+ 0.0329746092,
+ 0.0345077165,
+ 0.0360407425,
+ 0.0375736838,
+ 0.0391065366,
+ 0.0406392974,
+ 0.0421719625,
+ 0.0437045285,
+ 0.0452369916,
+ 0.0467693482,
+ 0.0483015948,
+ 0.0498337277,
+ 0.0513657434,
+ 0.0528976382,
+ 0.0544294085,
+ 0.0559610508,
+ 0.0574925613,
+ 0.0590239366,
+ 0.0605551730,
+ 0.0620862669,
+ 0.0636172147,
+ 0.0651480128,
+ 0.0666786576,
+ 0.0682091456,
+ 0.0697394730,
+ 0.0712696363,
+ 0.0727996319,
+ 0.0743294562,
+ 0.0758591055,
+ 0.0773885764,
+ 0.0789178652,
+ 0.0804469683,
+ 0.0819758821,
+ 0.0835046030,
+ 0.0850331273,
+ 0.0865614516,
+ 0.0880895722,
+ 0.0896174856,
+ 0.0911451880,
+ 0.0926726760,
+ 0.0941999459,
+ 0.0957269942,
+ 0.0972538171,
+ 0.0987804113,
+ 0.1003067730,
+ 0.1018328987,
+ 0.1033587847,
+ 0.1048844276,
+ 0.1064098236,
+ 0.1079349692,
+ 0.1094598609,
+ 0.1109844950,
+ 0.1125088679,
+ 0.1140329761,
+ 0.1155568160,
+ 0.1170803839,
+ 0.1186036763,
+ 0.1201266897,
+ 0.1216494204,
+ 0.1231718648,
+ 0.1246940194,
+ 0.1262158806,
+ 0.1277374448,
+ 0.1292587084,
+ 0.1307796678,
+ 0.1323003195,
+ 0.1338206599,
+ 0.1353406854,
+ 0.1368603924,
+ 0.1383797774,
+ 0.1398988368,
+ 0.1414175669,
+ 0.1429359643,
+ 0.1444540254,
+ 0.1459717465,
+ 0.1474891242,
+ 0.1490061548,
+ 0.1505228347,
+ 0.1520391605,
+ 0.1535551285,
+ 0.1550707352,
+ 0.1565859770,
+ 0.1581008503,
+ 0.1596153516,
+ 0.1611294774,
+ 0.1626432239,
+ 0.1641565877,
+ 0.1656695653,
+ 0.1671821530,
+ 0.1686943474,
+ 0.1702061448,
+ 0.1717175416,
+ 0.1732285344,
+ 0.1747391196,
+ 0.1762492936,
+ 0.1777590529,
+ 0.1792683938,
+ 0.1807773130,
+ 0.1822858067,
+ 0.1837938716,
+ 0.1853015039,
+ 0.1868087002,
+ 0.1883154569,
+ 0.1898217705,
+ 0.1913276375,
+ 0.1928330542,
+ 0.1943380172,
+ 0.1958425228,
+ 0.1973465677,
+ 0.1988501481,
+ 0.2003532607,
+ 0.2018559018,
+ 0.2033580679,
+ 0.2048597554,
+ 0.2063609610,
+ 0.2078616809,
+ 0.2093619117,
+ 0.2108616499,
+ 0.2123608919,
+ 0.2138596342,
+ 0.2153578733,
+ 0.2168556056,
+ 0.2183528276,
+ 0.2198495358,
+ 0.2213457267,
+ 0.2228413967,
+ 0.2243365424,
+ 0.2258311602,
+ 0.2273252466,
+ 0.2288187981,
+ 0.2303118111,
+ 0.2318042822,
+ 0.2332962078,
+ 0.2347875845,
+ 0.2362784086,
+ 0.2377686768,
+ 0.2392583855,
+ 0.2407475313,
+ 0.2422361105,
+ 0.2437241197,
+ 0.2452115554,
+ 0.2466984140,
+ 0.2481846922,
+ 0.2496703864,
+ 0.2511554931,
+ 0.2526400088,
+ 0.2541239300,
+ 0.2556072532,
+ 0.2570899749,
+ 0.2585720917,
+ 0.2600536001,
+ 0.2615344965,
+ 0.2630147775,
+ 0.2644944396,
+ 0.2659734793,
+ 0.2674518932,
+ 0.2689296777,
+ 0.2704068294,
+ 0.2718833448,
+ 0.2733592205,
+ 0.2748344529,
+ 0.2763090386,
+ 0.2777829741,
+ 0.2792562559,
+ 0.2807288807,
+ 0.2822008448,
+ 0.2836721449,
+ 0.2851427776,
+ 0.2866127392,
+ 0.2880820264,
+ 0.2895506357,
+ 0.2910185637,
+ 0.2924858069,
+ 0.2939523618,
+ 0.2954182251,
+ 0.2968833932,
+ 0.2983478627,
+ 0.2998116301,
+ 0.3012746921,
+ 0.3027370451,
+ 0.3041986858,
+ 0.3056596107,
+ 0.3071198163,
+ 0.3085792992,
+ 0.3100380561,
+ 0.3114960833,
+ 0.3129533776,
+ 0.3144099355,
+ 0.3158657535,
+ 0.3173208283,
+ 0.3187751564,
+ 0.3202287344,
+ 0.3216815589,
+ 0.3231336264,
+ 0.3245849335,
+ 0.3260354769,
+ 0.3274852530,
+ 0.3289342586,
+ 0.3303824902,
+ 0.3318299443,
+ 0.3332766176,
+ 0.3347225067,
+ 0.3361676081,
+ 0.3376119185,
+ 0.3390554345,
+ 0.3404981526,
+ 0.3419400695,
+ 0.3433811818,
+ 0.3448214861,
+ 0.3462609790,
+ 0.3476996571,
+ 0.3491375170,
+ 0.3505745554,
+ 0.3520107688,
+ 0.3534461540,
+ 0.3548807074,
+ 0.3563144257,
+ 0.3577473057,
+ 0.3591793438,
+ 0.3606105367,
+ 0.3620408811,
+ 0.3634703735,
+ 0.3648990107,
+ 0.3663267892,
+ 0.3677537058,
+ 0.3691797569,
+ 0.3706049394,
+ 0.3720292498,
+ 0.3734526847,
+ 0.3748752409,
+ 0.3762969150,
+ 0.3777177036,
+ 0.3791376034,
+ 0.3805566111,
+ 0.3819747232,
+ 0.3833919366,
+ 0.3848082478,
+ 0.3862236535,
+ 0.3876381503,
+ 0.3890517351,
+ 0.3904644043,
+ 0.3918761548,
+ 0.3932869831,
+ 0.3946968860,
+ 0.3961058601,
+ 0.3975139021,
+ 0.3989210088,
+ 0.4003271768,
+ 0.4017324027,
+ 0.4031366834,
+ 0.4045400154,
+ 0.4059423955,
+ 0.4073438203,
+ 0.4087442867,
+ 0.4101437912,
+ 0.4115423307,
+ 0.4129399017,
+ 0.4143365010,
+ 0.4157321254,
+ 0.4171267715,
+ 0.4185204361,
+ 0.4199131159,
+ 0.4213048075,
+ 0.4226955078,
+ 0.4240852135,
+ 0.4254739212,
+ 0.4268616277,
+ 0.4282483298,
+ 0.4296340242,
+ 0.4310187077,
+ 0.4324023768,
+ 0.4337850286,
+ 0.4351666595,
+ 0.4365472665,
+ 0.4379268463,
+ 0.4393053955,
+ 0.4406829110,
+ 0.4420593896,
+ 0.4434348280,
+ 0.4448092229,
+ 0.4461825711,
+ 0.4475548694,
+ 0.4489261146,
+ 0.4502963034,
+ 0.4516654326,
+ 0.4530334990,
+ 0.4544004994,
+ 0.4557664305,
+ 0.4571312892,
+ 0.4584950722,
+ 0.4598577763,
+ 0.4612193983,
+ 0.4625799351,
+ 0.4639393833,
+ 0.4652977398,
+ 0.4666550015,
+ 0.4680111650,
+ 0.4693662273,
+ 0.4707201851,
+ 0.4720730353,
+ 0.4734247746,
+ 0.4747754000,
+ 0.4761249081,
+ 0.4774732959,
+ 0.4788205601,
+ 0.4801666976,
+ 0.4815117052,
+ 0.4828555798,
+ 0.4841983182,
+ 0.4855399172,
+ 0.4868803737,
+ 0.4882196845,
+ 0.4895578465,
+ 0.4908948565,
+ 0.4922307114,
+ 0.4935654080,
+ 0.4948989433,
+ 0.4962313139,
+ 0.4975625169,
+ 0.4988925491,
+ 0.5002214073,
+ 0.5015490885,
+ 0.5028755895,
+ 0.5042009071,
+ 0.5055250384,
+ 0.5068479800,
+ 0.5081697290,
+ 0.5094902823,
+ 0.5108096366,
+ 0.5121277890,
+ 0.5134447363,
+ 0.5147604754,
+ 0.5160750032,
+ 0.5173883167,
+ 0.5187004127,
+ 0.5200112881,
+ 0.5213209399,
+ 0.5226293650,
+ 0.5239365603,
+ 0.5252425227,
+ 0.5265472491,
+ 0.5278507366,
+ 0.5291529819,
+ 0.5304539821,
+ 0.5317537341,
+ 0.5330522349,
+ 0.5343494813,
+ 0.5356454703,
+ 0.5369401989,
+ 0.5382336641,
+ 0.5395258627,
+ 0.5408167917,
+ 0.5421064482,
+ 0.5433948291,
+ 0.5446819312,
+ 0.5459677517,
+ 0.5472522875,
+ 0.5485355355,
+ 0.5498174928,
+ 0.5510981563,
+ 0.5523775230,
+ 0.5536555900,
+ 0.5549323541,
+ 0.5562078124,
+ 0.5574819619,
+ 0.5587547996,
+ 0.5600263225,
+ 0.5612965275,
+ 0.5625654118,
+ 0.5638329724,
+ 0.5650992062,
+ 0.5663641102,
+ 0.5676276815,
+ 0.5688899172,
+ 0.5701508142,
+ 0.5714103696,
+ 0.5726685804,
+ 0.5739254436,
+ 0.5751809564,
+ 0.5764351157,
+ 0.5776879185,
+ 0.5789393621,
+ 0.5801894433,
+ 0.5814381593,
+ 0.5826855071,
+ 0.5839314838,
+ 0.5851760864,
+ 0.5864193121,
+ 0.5876611579,
+ 0.5889016208,
+ 0.5901406980,
+ 0.5913783866,
+ 0.5926146835,
+ 0.5938495860,
+ 0.5950830911,
+ 0.5963151959,
+ 0.5975458976,
+ 0.5987751931,
+ 0.6000030797,
+ 0.6012295544,
+ 0.6024546144,
+ 0.6036782567,
+ 0.6049004785,
+ 0.6061212769,
+ 0.6073406491,
+ 0.6085585921,
+ 0.6097751031,
+ 0.6109901793,
+ 0.6122038177,
+ 0.6134160156,
+ 0.6146267701,
+ 0.6158360782,
+ 0.6170439373,
+ 0.6182503444,
+ 0.6194552967,
+ 0.6206587913,
+ 0.6218608255,
+ 0.6230613964,
+ 0.6242605011,
+ 0.6254581369,
+ 0.6266543010,
+ 0.6278489904,
+ 0.6290422025,
+ 0.6302339344,
+ 0.6314241833,
+ 0.6326129463,
+ 0.6338002208,
+ 0.6349860039,
+ 0.6361702928,
+ 0.6373530847,
+ 0.6385343769,
+ 0.6397141665,
+ 0.6408924509,
+ 0.6420692271,
+ 0.6432444925,
+ 0.6444182443,
+ 0.6455904797,
+ 0.6467611960,
+ 0.6479303904,
+ 0.6490980601,
+ 0.6502642024,
+ 0.6514288146,
+ 0.6525918940,
+ 0.6537534377,
+ 0.6549134431,
+ 0.6560719074,
+ 0.6572288279,
+ 0.6583842018,
+ 0.6595380266,
+ 0.6606902994,
+ 0.6618410175,
+ 0.6629901782,
+ 0.6641377789,
+ 0.6652838167,
+ 0.6664282891,
+ 0.6675711934,
+ 0.6687125267,
+ 0.6698522866,
+ 0.6709904702,
+ 0.6721270748,
+ 0.6732620980,
+ 0.6743955368,
+ 0.6755273888,
+ 0.6766576511,
+ 0.6777863212,
+ 0.6789133965,
+ 0.6800388741,
+ 0.6811627516,
+ 0.6822850262,
+ 0.6834056954,
+ 0.6845247564,
+ 0.6856422067,
+ 0.6867580436,
+ 0.6878722645,
+ 0.6889848667,
+ 0.6900958478,
+ 0.6912052049,
+ 0.6923129356,
+ 0.6934190372,
+ 0.6945235071,
+ 0.6956263427,
+ 0.6967275415,
+ 0.6978271008,
+ 0.6989250180,
+ 0.7000212906,
+ 0.7011159160,
+ 0.7022088916,
+ 0.7033002148,
+ 0.7043898831,
+ 0.7054778939,
+ 0.7065642446,
+ 0.7076489327,
+ 0.7087319557,
+ 0.7098133109,
+ 0.7108929959,
+ 0.7119710081,
+ 0.7130473449,
+ 0.7141220039,
+ 0.7151949824,
+ 0.7162662781,
+ 0.7173358883,
+ 0.7184038105,
+ 0.7194700423,
+ 0.7205345811,
+ 0.7215974244,
+ 0.7226585697,
+ 0.7237180145,
+ 0.7247757564,
+ 0.7258317928,
+ 0.7268861212,
+ 0.7279387392,
+ 0.7289896443,
+ 0.7300388340,
+ 0.7310863058,
+ 0.7321320574,
+ 0.7331760861,
+ 0.7342183896,
+ 0.7352589655,
+ 0.7362978112,
+ 0.7373349243,
+ 0.7383703024,
+ 0.7394039430,
+ 0.7404358438,
+ 0.7414660022,
+ 0.7424944159,
+ 0.7435210825,
+ 0.7445459994,
+ 0.7455691644,
+ 0.7465905750,
+ 0.7476102287,
+ 0.7486281233,
+ 0.7496442563,
+ 0.7506586253,
+ 0.7516712279,
+ 0.7526820618,
+ 0.7536911245,
+ 0.7546984137,
+ 0.7557039270,
+ 0.7567076622,
+ 0.7577096166,
+ 0.7587097882,
+ 0.7597081744,
+ 0.7607047729,
+ 0.7616995815,
+ 0.7626925976,
+ 0.7636838191,
+ 0.7646732436,
+ 0.7656608687,
+ 0.7666466922,
+ 0.7676307116,
+ 0.7686129248,
+ 0.7695933293,
+ 0.7705719229,
+ 0.7715487032,
+ 0.7725236681,
+ 0.7734968151,
+ 0.7744681420,
+ 0.7754376465,
+ 0.7764053263,
+ 0.7773711792,
+ 0.7783352028,
+ 0.7792973950,
+ 0.7802577533,
+ 0.7812162757,
+ 0.7821729598,
+ 0.7831278033,
+ 0.7840808041,
+ 0.7850319598,
+ 0.7859812683,
+ 0.7869287273,
+ 0.7878743346,
+ 0.7888180880,
+ 0.7897599851,
+ 0.7907000239,
+ 0.7916382021,
+ 0.7925745175,
+ 0.7935089679,
+ 0.7944415511,
+ 0.7953722649,
+ 0.7963011071,
+ 0.7972280756,
+ 0.7981531680,
+ 0.7990763824,
+ 0.7999977164,
+ 0.8009171680,
+ 0.8018347350,
+ 0.8027504151,
+ 0.8036642063,
+ 0.8045761064,
+ 0.8054861132,
+ 0.8063942247,
+ 0.8073004386,
+ 0.8082047529,
+ 0.8091071654,
+ 0.8100076740,
+ 0.8109062766,
+ 0.8118029710,
+ 0.8126977551,
+ 0.8135906270,
+ 0.8144815843,
+ 0.8153706251,
+ 0.8162577473,
+ 0.8171429487,
+ 0.8180262273,
+ 0.8189075810,
+ 0.8197870078,
+ 0.8206645055,
+ 0.8215400721,
+ 0.8224137055,
+ 0.8232854037,
+ 0.8241551647,
+ 0.8250229863,
+ 0.8258888666,
+ 0.8267528035,
+ 0.8276147949,
+ 0.8284748389,
+ 0.8293329334,
+ 0.8301890764,
+ 0.8310432659,
+ 0.8318954999,
+ 0.8327457763,
+ 0.8335940932,
+ 0.8344404486,
+ 0.8352848405,
+ 0.8361272668,
+ 0.8369677257,
+ 0.8378062151,
+ 0.8386427331,
+ 0.8394772776,
+ 0.8403098468,
+ 0.8411404387,
+ 0.8419690512,
+ 0.8427956826,
+ 0.8436203307,
+ 0.8444429937,
+ 0.8452636697,
+ 0.8460823567,
+ 0.8468990528,
+ 0.8477137560,
+ 0.8485264645,
+ 0.8493371763,
+ 0.8501458896,
+ 0.8509526024,
+ 0.8517573128,
+ 0.8525600189,
+ 0.8533607189,
+ 0.8541594108,
+ 0.8549560928,
+ 0.8557507630,
+ 0.8565434196,
+ 0.8573340606,
+ 0.8581226843,
+ 0.8589092887,
+ 0.8596938720,
+ 0.8604764323,
+ 0.8612569679,
+ 0.8620354768,
+ 0.8628119573,
+ 0.8635864076,
+ 0.8643588257,
+ 0.8651292099,
+ 0.8658975583,
+ 0.8666638692,
+ 0.8674281408,
+ 0.8681903713,
+ 0.8689505588,
+ 0.8697087015,
+ 0.8704647978,
+ 0.8712188458,
+ 0.8719708437,
+ 0.8727207898,
+ 0.8734686823,
+ 0.8742145194,
+ 0.8749582994,
+ 0.8757000206,
+ 0.8764396811,
+ 0.8771772793,
+ 0.8779128134,
+ 0.8786462817,
+ 0.8793776825,
+ 0.8801070140,
+ 0.8808342745,
+ 0.8815594624,
+ 0.8822825758,
+ 0.8830036132,
+ 0.8837225727,
+ 0.8844394528,
+ 0.8851542517,
+ 0.8858669678,
+ 0.8865775993,
+ 0.8872861446,
+ 0.8879926020,
+ 0.8886969699,
+ 0.8893992467,
+ 0.8900994305,
+ 0.8907975199,
+ 0.8914935132,
+ 0.8921874087,
+ 0.8928792048,
+ 0.8935688998,
+ 0.8942564922,
+ 0.8949419803,
+ 0.8956253626,
+ 0.8963066373,
+ 0.8969858030,
+ 0.8976628579,
+ 0.8983378006,
+ 0.8990106294,
+ 0.8996813427,
+ 0.9003499390,
+ 0.9010164167,
+ 0.9016807742,
+ 0.9023430100,
+ 0.9030031224,
+ 0.9036611101,
+ 0.9043169713,
+ 0.9049707045,
+ 0.9056223083,
+ 0.9062717811,
+ 0.9069191213,
+ 0.9075643274,
+ 0.9082073980,
+ 0.9088483315,
+ 0.9094871263,
+ 0.9101237811,
+ 0.9107582942,
+ 0.9113906642,
+ 0.9120208897,
+ 0.9126489690,
+ 0.9132749009,
+ 0.9138986837,
+ 0.9145203160,
+ 0.9151397963,
+ 0.9157571232,
+ 0.9163722953,
+ 0.9169853111,
+ 0.9175961691,
+ 0.9182048679,
+ 0.9188114061,
+ 0.9194157822,
+ 0.9200179948,
+ 0.9206180426,
+ 0.9212159241,
+ 0.9218116378,
+ 0.9224051825,
+ 0.9229965566,
+ 0.9235857588,
+ 0.9241727878,
+ 0.9247576421,
+ 0.9253403203,
+ 0.9259208211,
+ 0.9264991431,
+ 0.9270752850,
+ 0.9276492454,
+ 0.9282210230,
+ 0.9287906163,
+ 0.9293580242,
+ 0.9299232451,
+ 0.9304862779,
+ 0.9310471211,
+ 0.9316057735,
+ 0.9321622337,
+ 0.9327165005,
+ 0.9332685724,
+ 0.9338184484,
+ 0.9343661269,
+ 0.9349116068,
+ 0.9354548868,
+ 0.9359959655,
+ 0.9365348418,
+ 0.9370715142,
+ 0.9376059817,
+ 0.9381382429,
+ 0.9386682966,
+ 0.9391961415,
+ 0.9397217764,
+ 0.9402452000,
+ 0.9407664111,
+ 0.9412854085,
+ 0.9418021910,
+ 0.9423167573,
+ 0.9428291063,
+ 0.9433392367,
+ 0.9438471473,
+ 0.9443528370,
+ 0.9448563045,
+ 0.9453575486,
+ 0.9458565683,
+ 0.9463533623,
+ 0.9468479294,
+ 0.9473402684,
+ 0.9478303783,
+ 0.9483182579,
+ 0.9488039059,
+ 0.9492873214,
+ 0.9497685031,
+ 0.9502474498,
+ 0.9507241606,
+ 0.9511986342,
+ 0.9516708696,
+ 0.9521408655,
+ 0.9526086210,
+ 0.9530741350,
+ 0.9535374062,
+ 0.9539984337,
+ 0.9544572163,
+ 0.9549137530,
+ 0.9553680427,
+ 0.9558200843,
+ 0.9562698768,
+ 0.9567174191,
+ 0.9571627101,
+ 0.9576057488,
+ 0.9580465342,
+ 0.9584850652,
+ 0.9589213409,
+ 0.9593553600,
+ 0.9597871218,
+ 0.9602166250,
+ 0.9606438688,
+ 0.9610688521,
+ 0.9614915739,
+ 0.9619120332,
+ 0.9623302290,
+ 0.9627461604,
+ 0.9631598263,
+ 0.9635712259,
+ 0.9639803580,
+ 0.9643872219,
+ 0.9647918164,
+ 0.9651941407,
+ 0.9655941938,
+ 0.9659919747,
+ 0.9663874826,
+ 0.9667807165,
+ 0.9671716754,
+ 0.9675603585,
+ 0.9679467648,
+ 0.9683308935,
+ 0.9687127436,
+ 0.9690923142,
+ 0.9694696044,
+ 0.9698446134,
+ 0.9702173403,
+ 0.9705877841,
+ 0.9709559440,
+ 0.9713218192,
+ 0.9716854088,
+ 0.9720467119,
+ 0.9724057277,
+ 0.9727624553,
+ 0.9731168939,
+ 0.9734690427,
+ 0.9738189008,
+ 0.9741664675,
+ 0.9745117418,
+ 0.9748547230,
+ 0.9751954102,
+ 0.9755338028,
+ 0.9758698998,
+ 0.9762037005,
+ 0.9765352041,
+ 0.9768644098,
+ 0.9771913168,
+ 0.9775159245,
+ 0.9778382319,
+ 0.9781582384,
+ 0.9784759432,
+ 0.9787913456,
+ 0.9791044447,
+ 0.9794152399,
+ 0.9797237305,
+ 0.9800299157,
+ 0.9803337948,
+ 0.9806353670,
+ 0.9809346317,
+ 0.9812315882,
+ 0.9815262358,
+ 0.9818185737,
+ 0.9821086014,
+ 0.9823963180,
+ 0.9826817229,
+ 0.9829648155,
+ 0.9832455951,
+ 0.9835240610,
+ 0.9838002126,
+ 0.9840740493,
+ 0.9843455703,
+ 0.9846147750,
+ 0.9848816628,
+ 0.9851462332,
+ 0.9854084853,
+ 0.9856684187,
+ 0.9859260328,
+ 0.9861813268,
+ 0.9864343003,
+ 0.9866849526,
+ 0.9869332832,
+ 0.9871792914,
+ 0.9874229766,
+ 0.9876643384,
+ 0.9879033761,
+ 0.9881400891,
+ 0.9883744770,
+ 0.9886065391,
+ 0.9888362750,
+ 0.9890636840,
+ 0.9892887657,
+ 0.9895115194,
+ 0.9897319448,
+ 0.9899500412,
+ 0.9901658081,
+ 0.9903792451,
+ 0.9905903517,
+ 0.9907991273,
+ 0.9910055714,
+ 0.9912096836,
+ 0.9914114634,
+ 0.9916109103,
+ 0.9918080239,
+ 0.9920028036,
+ 0.9921952491,
+ 0.9923853598,
+ 0.9925731354,
+ 0.9927585753,
+ 0.9929416792,
+ 0.9931224466,
+ 0.9933008770,
+ 0.9934769702,
+ 0.9936507256,
+ 0.9938221428,
+ 0.9939912215,
+ 0.9941579612,
+ 0.9943223616,
+ 0.9944844222,
+ 0.9946441427,
+ 0.9948015227,
+ 0.9949565619,
+ 0.9951092598,
+ 0.9952596161,
+ 0.9954076305,
+ 0.9955533026,
+ 0.9956966321,
+ 0.9958376186,
+ 0.9959762618,
+ 0.9961125614,
+ 0.9962465170,
+ 0.9963781284,
+ 0.9965073951,
+ 0.9966343170,
+ 0.9967588938,
+ 0.9968811250,
+ 0.9970010105,
+ 0.9971185500,
+ 0.9972337431,
+ 0.9973465897,
+ 0.9974570894,
+ 0.9975652420,
+ 0.9976710472,
+ 0.9977745048,
+ 0.9978756145,
+ 0.9979743762,
+ 0.9980707895,
+ 0.9981648543,
+ 0.9982565703,
+ 0.9983459372,
+ 0.9984329550,
+ 0.9985176234,
+ 0.9985999422,
+ 0.9986799111,
+ 0.9987575301,
+ 0.9988327989,
+ 0.9989057173,
+ 0.9989762853,
+ 0.9990445025,
+ 0.9991103689,
+ 0.9991738843,
+ 0.9992350485,
+ 0.9992938615,
+ 0.9993503230,
+ 0.9994044329,
+ 0.9994561911,
+ 0.9995055976,
+ 0.9995526521,
+ 0.9995973545,
+ 0.9996397048,
+ 0.9996797029,
+ 0.9997173486,
+ 0.9997526418,
+ 0.9997855826,
+ 0.9998161708,
+ 0.9998444063,
+ 0.9998702890,
+ 0.9998938190,
+ 0.9999149961,
+ 0.9999338204,
+ 0.9999502917,
+ 0.9999644100,
+ 0.9999761753,
+ 0.9999855875,
+ 0.9999926467,
+ 0.9999973529,
+ 0.9999997059
+};
+
+real_t sine_long_960[] =
+{
+ 0.0008181230,
+ 0.0024543669,
+ 0.0040906041,
+ 0.0057268305,
+ 0.0073630415,
+ 0.0089992327,
+ 0.0106353999,
+ 0.0122715386,
+ 0.0139076445,
+ 0.0155437131,
+ 0.0171797401,
+ 0.0188157211,
+ 0.0204516518,
+ 0.0220875276,
+ 0.0237233444,
+ 0.0253590976,
+ 0.0269947829,
+ 0.0286303960,
+ 0.0302659324,
+ 0.0319013878,
+ 0.0335367578,
+ 0.0351720379,
+ 0.0368072240,
+ 0.0384423114,
+ 0.0400772960,
+ 0.0417121732,
+ 0.0433469388,
+ 0.0449815883,
+ 0.0466161174,
+ 0.0482505217,
+ 0.0498847968,
+ 0.0515189384,
+ 0.0531529420,
+ 0.0547868033,
+ 0.0564205179,
+ 0.0580540815,
+ 0.0596874897,
+ 0.0613207380,
+ 0.0629538222,
+ 0.0645867378,
+ 0.0662194805,
+ 0.0678520459,
+ 0.0694844297,
+ 0.0711166274,
+ 0.0727486347,
+ 0.0743804473,
+ 0.0760120607,
+ 0.0776434706,
+ 0.0792746727,
+ 0.0809056625,
+ 0.0825364356,
+ 0.0841669879,
+ 0.0857973147,
+ 0.0874274119,
+ 0.0890572750,
+ 0.0906868996,
+ 0.0923162815,
+ 0.0939454162,
+ 0.0955742994,
+ 0.0972029267,
+ 0.0988312938,
+ 0.1004593962,
+ 0.1020872297,
+ 0.1037147899,
+ 0.1053420724,
+ 0.1069690729,
+ 0.1085957870,
+ 0.1102222103,
+ 0.1118483386,
+ 0.1134741674,
+ 0.1150996924,
+ 0.1167249092,
+ 0.1183498135,
+ 0.1199744010,
+ 0.1215986673,
+ 0.1232226080,
+ 0.1248462188,
+ 0.1264694953,
+ 0.1280924333,
+ 0.1297150283,
+ 0.1313372760,
+ 0.1329591721,
+ 0.1345807122,
+ 0.1362018920,
+ 0.1378227072,
+ 0.1394431534,
+ 0.1410632262,
+ 0.1426829214,
+ 0.1443022345,
+ 0.1459211613,
+ 0.1475396975,
+ 0.1491578386,
+ 0.1507755804,
+ 0.1523929185,
+ 0.1540098486,
+ 0.1556263664,
+ 0.1572424676,
+ 0.1588581477,
+ 0.1604734026,
+ 0.1620882278,
+ 0.1637026190,
+ 0.1653165720,
+ 0.1669300823,
+ 0.1685431457,
+ 0.1701557579,
+ 0.1717679146,
+ 0.1733796113,
+ 0.1749908439,
+ 0.1766016080,
+ 0.1782118992,
+ 0.1798217134,
+ 0.1814310460,
+ 0.1830398930,
+ 0.1846482499,
+ 0.1862561124,
+ 0.1878634763,
+ 0.1894703372,
+ 0.1910766908,
+ 0.1926825329,
+ 0.1942878591,
+ 0.1958926651,
+ 0.1974969467,
+ 0.1991006995,
+ 0.2007039192,
+ 0.2023066016,
+ 0.2039087424,
+ 0.2055103372,
+ 0.2071113819,
+ 0.2087118720,
+ 0.2103118034,
+ 0.2119111716,
+ 0.2135099726,
+ 0.2151082019,
+ 0.2167058553,
+ 0.2183029285,
+ 0.2198994172,
+ 0.2214953172,
+ 0.2230906242,
+ 0.2246853339,
+ 0.2262794421,
+ 0.2278729444,
+ 0.2294658367,
+ 0.2310581146,
+ 0.2326497739,
+ 0.2342408103,
+ 0.2358312196,
+ 0.2374209975,
+ 0.2390101398,
+ 0.2405986421,
+ 0.2421865003,
+ 0.2437737101,
+ 0.2453602672,
+ 0.2469461675,
+ 0.2485314066,
+ 0.2501159802,
+ 0.2516998843,
+ 0.2532831145,
+ 0.2548656665,
+ 0.2564475362,
+ 0.2580287194,
+ 0.2596092117,
+ 0.2611890089,
+ 0.2627681069,
+ 0.2643465014,
+ 0.2659241881,
+ 0.2675011628,
+ 0.2690774214,
+ 0.2706529596,
+ 0.2722277732,
+ 0.2738018579,
+ 0.2753752096,
+ 0.2769478240,
+ 0.2785196969,
+ 0.2800908242,
+ 0.2816612016,
+ 0.2832308248,
+ 0.2847996898,
+ 0.2863677923,
+ 0.2879351281,
+ 0.2895016930,
+ 0.2910674829,
+ 0.2926324934,
+ 0.2941967205,
+ 0.2957601599,
+ 0.2973228075,
+ 0.2988846591,
+ 0.3004457105,
+ 0.3020059575,
+ 0.3035653959,
+ 0.3051240216,
+ 0.3066818303,
+ 0.3082388180,
+ 0.3097949805,
+ 0.3113503135,
+ 0.3129048130,
+ 0.3144584747,
+ 0.3160112945,
+ 0.3175632683,
+ 0.3191143918,
+ 0.3206646610,
+ 0.3222140717,
+ 0.3237626197,
+ 0.3253103009,
+ 0.3268571111,
+ 0.3284030463,
+ 0.3299481022,
+ 0.3314922747,
+ 0.3330355597,
+ 0.3345779531,
+ 0.3361194508,
+ 0.3376600485,
+ 0.3391997422,
+ 0.3407385278,
+ 0.3422764011,
+ 0.3438133581,
+ 0.3453493945,
+ 0.3468845064,
+ 0.3484186895,
+ 0.3499519398,
+ 0.3514842532,
+ 0.3530156256,
+ 0.3545460528,
+ 0.3560755308,
+ 0.3576040555,
+ 0.3591316228,
+ 0.3606582285,
+ 0.3621838687,
+ 0.3637085392,
+ 0.3652322359,
+ 0.3667549548,
+ 0.3682766918,
+ 0.3697974428,
+ 0.3713172038,
+ 0.3728359706,
+ 0.3743537392,
+ 0.3758705056,
+ 0.3773862656,
+ 0.3789010153,
+ 0.3804147505,
+ 0.3819274673,
+ 0.3834391615,
+ 0.3849498291,
+ 0.3864594661,
+ 0.3879680685,
+ 0.3894756321,
+ 0.3909821530,
+ 0.3924876271,
+ 0.3939920504,
+ 0.3954954189,
+ 0.3969977285,
+ 0.3984989752,
+ 0.3999991550,
+ 0.4014982640,
+ 0.4029962979,
+ 0.4044932530,
+ 0.4059891250,
+ 0.4074839102,
+ 0.4089776043,
+ 0.4104702036,
+ 0.4119617038,
+ 0.4134521011,
+ 0.4149413915,
+ 0.4164295710,
+ 0.4179166355,
+ 0.4194025812,
+ 0.4208874040,
+ 0.4223710999,
+ 0.4238536651,
+ 0.4253350954,
+ 0.4268153870,
+ 0.4282945359,
+ 0.4297725381,
+ 0.4312493897,
+ 0.4327250867,
+ 0.4341996252,
+ 0.4356730012,
+ 0.4371452107,
+ 0.4386162499,
+ 0.4400861148,
+ 0.4415548014,
+ 0.4430223059,
+ 0.4444886242,
+ 0.4459537525,
+ 0.4474176869,
+ 0.4488804234,
+ 0.4503419581,
+ 0.4518022871,
+ 0.4532614065,
+ 0.4547193124,
+ 0.4561760009,
+ 0.4576314680,
+ 0.4590857100,
+ 0.4605387228,
+ 0.4619905026,
+ 0.4634410455,
+ 0.4648903477,
+ 0.4663384052,
+ 0.4677852142,
+ 0.4692307707,
+ 0.4706750710,
+ 0.4721181112,
+ 0.4735598874,
+ 0.4750003957,
+ 0.4764396322,
+ 0.4778775932,
+ 0.4793142748,
+ 0.4807496731,
+ 0.4821837843,
+ 0.4836166046,
+ 0.4850481301,
+ 0.4864783569,
+ 0.4879072813,
+ 0.4893348994,
+ 0.4907612075,
+ 0.4921862016,
+ 0.4936098779,
+ 0.4950322328,
+ 0.4964532623,
+ 0.4978729626,
+ 0.4992913300,
+ 0.5007083606,
+ 0.5021240507,
+ 0.5035383964,
+ 0.5049513940,
+ 0.5063630397,
+ 0.5077733298,
+ 0.5091822603,
+ 0.5105898276,
+ 0.5119960280,
+ 0.5134008575,
+ 0.5148043125,
+ 0.5162063893,
+ 0.5176070840,
+ 0.5190063929,
+ 0.5204043123,
+ 0.5218008384,
+ 0.5231959674,
+ 0.5245896958,
+ 0.5259820196,
+ 0.5273729352,
+ 0.5287624389,
+ 0.5301505270,
+ 0.5315371956,
+ 0.5329224412,
+ 0.5343062600,
+ 0.5356886483,
+ 0.5370696023,
+ 0.5384491185,
+ 0.5398271931,
+ 0.5412038224,
+ 0.5425790028,
+ 0.5439527305,
+ 0.5453250019,
+ 0.5466958133,
+ 0.5480651610,
+ 0.5494330413,
+ 0.5507994507,
+ 0.5521643854,
+ 0.5535278418,
+ 0.5548898163,
+ 0.5562503051,
+ 0.5576093047,
+ 0.5589668114,
+ 0.5603228216,
+ 0.5616773317,
+ 0.5630303379,
+ 0.5643818368,
+ 0.5657318246,
+ 0.5670802978,
+ 0.5684272527,
+ 0.5697726858,
+ 0.5711165935,
+ 0.5724589721,
+ 0.5737998180,
+ 0.5751391277,
+ 0.5764768976,
+ 0.5778131241,
+ 0.5791478036,
+ 0.5804809326,
+ 0.5818125074,
+ 0.5831425246,
+ 0.5844709805,
+ 0.5857978716,
+ 0.5871231943,
+ 0.5884469451,
+ 0.5897691205,
+ 0.5910897169,
+ 0.5924087308,
+ 0.5937261586,
+ 0.5950419968,
+ 0.5963562420,
+ 0.5976688905,
+ 0.5989799388,
+ 0.6002893835,
+ 0.6015972211,
+ 0.6029034480,
+ 0.6042080607,
+ 0.6055110558,
+ 0.6068124298,
+ 0.6081121791,
+ 0.6094103003,
+ 0.6107067900,
+ 0.6120016446,
+ 0.6132948607,
+ 0.6145864349,
+ 0.6158763636,
+ 0.6171646434,
+ 0.6184512709,
+ 0.6197362426,
+ 0.6210195550,
+ 0.6223012049,
+ 0.6235811886,
+ 0.6248595028,
+ 0.6261361441,
+ 0.6274111090,
+ 0.6286843942,
+ 0.6299559962,
+ 0.6312259115,
+ 0.6324941370,
+ 0.6337606690,
+ 0.6350255043,
+ 0.6362886394,
+ 0.6375500710,
+ 0.6388097956,
+ 0.6400678100,
+ 0.6413241107,
+ 0.6425786945,
+ 0.6438315578,
+ 0.6450826974,
+ 0.6463321099,
+ 0.6475797920,
+ 0.6488257403,
+ 0.6500699516,
+ 0.6513124223,
+ 0.6525531494,
+ 0.6537921293,
+ 0.6550293589,
+ 0.6562648347,
+ 0.6574985536,
+ 0.6587305121,
+ 0.6599607069,
+ 0.6611891349,
+ 0.6624157927,
+ 0.6636406770,
+ 0.6648637845,
+ 0.6660851120,
+ 0.6673046561,
+ 0.6685224137,
+ 0.6697383815,
+ 0.6709525561,
+ 0.6721649344,
+ 0.6733755132,
+ 0.6745842891,
+ 0.6757912589,
+ 0.6769964195,
+ 0.6781997675,
+ 0.6794012997,
+ 0.6806010131,
+ 0.6817989042,
+ 0.6829949700,
+ 0.6841892071,
+ 0.6853816125,
+ 0.6865721829,
+ 0.6877609152,
+ 0.6889478061,
+ 0.6901328525,
+ 0.6913160512,
+ 0.6924973990,
+ 0.6936768929,
+ 0.6948545295,
+ 0.6960303058,
+ 0.6972042186,
+ 0.6983762648,
+ 0.6995464412,
+ 0.7007147448,
+ 0.7018811723,
+ 0.7030457206,
+ 0.7042083867,
+ 0.7053691674,
+ 0.7065280597,
+ 0.7076850603,
+ 0.7088401663,
+ 0.7099933745,
+ 0.7111446818,
+ 0.7122940851,
+ 0.7134415815,
+ 0.7145871677,
+ 0.7157308408,
+ 0.7168725976,
+ 0.7180124352,
+ 0.7191503504,
+ 0.7202863403,
+ 0.7214204017,
+ 0.7225525317,
+ 0.7236827271,
+ 0.7248109851,
+ 0.7259373025,
+ 0.7270616764,
+ 0.7281841037,
+ 0.7293045814,
+ 0.7304231066,
+ 0.7315396762,
+ 0.7326542872,
+ 0.7337669368,
+ 0.7348776218,
+ 0.7359863393,
+ 0.7370930863,
+ 0.7381978600,
+ 0.7393006572,
+ 0.7404014752,
+ 0.7415003108,
+ 0.7425971612,
+ 0.7436920235,
+ 0.7447848947,
+ 0.7458757719,
+ 0.7469646521,
+ 0.7480515325,
+ 0.7491364101,
+ 0.7502192821,
+ 0.7513001455,
+ 0.7523789975,
+ 0.7534558351,
+ 0.7545306554,
+ 0.7556034557,
+ 0.7566742330,
+ 0.7577429844,
+ 0.7588097072,
+ 0.7598743984,
+ 0.7609370551,
+ 0.7619976746,
+ 0.7630562540,
+ 0.7641127905,
+ 0.7651672812,
+ 0.7662197234,
+ 0.7672701141,
+ 0.7683184506,
+ 0.7693647301,
+ 0.7704089498,
+ 0.7714511069,
+ 0.7724911985,
+ 0.7735292220,
+ 0.7745651745,
+ 0.7755990532,
+ 0.7766308555,
+ 0.7776605784,
+ 0.7786882194,
+ 0.7797137755,
+ 0.7807372441,
+ 0.7817586225,
+ 0.7827779079,
+ 0.7837950975,
+ 0.7848101886,
+ 0.7858231786,
+ 0.7868340647,
+ 0.7878428442,
+ 0.7888495145,
+ 0.7898540727,
+ 0.7908565162,
+ 0.7918568424,
+ 0.7928550486,
+ 0.7938511320,
+ 0.7948450901,
+ 0.7958369201,
+ 0.7968266194,
+ 0.7978141854,
+ 0.7987996154,
+ 0.7997829068,
+ 0.8007640569,
+ 0.8017430631,
+ 0.8027199228,
+ 0.8036946334,
+ 0.8046671923,
+ 0.8056375968,
+ 0.8066058444,
+ 0.8075719325,
+ 0.8085358584,
+ 0.8094976197,
+ 0.8104572137,
+ 0.8114146378,
+ 0.8123698896,
+ 0.8133229663,
+ 0.8142738656,
+ 0.8152225848,
+ 0.8161691215,
+ 0.8171134730,
+ 0.8180556368,
+ 0.8189956104,
+ 0.8199333914,
+ 0.8208689772,
+ 0.8218023652,
+ 0.8227335530,
+ 0.8236625381,
+ 0.8245893180,
+ 0.8255138903,
+ 0.8264362524,
+ 0.8273564019,
+ 0.8282743363,
+ 0.8291900531,
+ 0.8301035500,
+ 0.8310148244,
+ 0.8319238740,
+ 0.8328306962,
+ 0.8337352887,
+ 0.8346376491,
+ 0.8355377749,
+ 0.8364356636,
+ 0.8373313130,
+ 0.8382247206,
+ 0.8391158841,
+ 0.8400048009,
+ 0.8408914688,
+ 0.8417758854,
+ 0.8426580483,
+ 0.8435379552,
+ 0.8444156036,
+ 0.8452909913,
+ 0.8461641159,
+ 0.8470349751,
+ 0.8479035665,
+ 0.8487698878,
+ 0.8496339367,
+ 0.8504957108,
+ 0.8513552080,
+ 0.8522124258,
+ 0.8530673619,
+ 0.8539200142,
+ 0.8547703802,
+ 0.8556184578,
+ 0.8564642446,
+ 0.8573077384,
+ 0.8581489370,
+ 0.8589878380,
+ 0.8598244392,
+ 0.8606587385,
+ 0.8614907335,
+ 0.8623204220,
+ 0.8631478018,
+ 0.8639728707,
+ 0.8647956265,
+ 0.8656160670,
+ 0.8664341900,
+ 0.8672499933,
+ 0.8680634747,
+ 0.8688746320,
+ 0.8696834631,
+ 0.8704899657,
+ 0.8712941378,
+ 0.8720959772,
+ 0.8728954818,
+ 0.8736926493,
+ 0.8744874777,
+ 0.8752799648,
+ 0.8760701085,
+ 0.8768579067,
+ 0.8776433574,
+ 0.8784264583,
+ 0.8792072074,
+ 0.8799856025,
+ 0.8807616417,
+ 0.8815353229,
+ 0.8823066439,
+ 0.8830756027,
+ 0.8838421972,
+ 0.8846064254,
+ 0.8853682853,
+ 0.8861277748,
+ 0.8868848918,
+ 0.8876396344,
+ 0.8883920005,
+ 0.8891419881,
+ 0.8898895952,
+ 0.8906348198,
+ 0.8913776599,
+ 0.8921181136,
+ 0.8928561787,
+ 0.8935918534,
+ 0.8943251357,
+ 0.8950560237,
+ 0.8957845152,
+ 0.8965106085,
+ 0.8972343016,
+ 0.8979555925,
+ 0.8986744793,
+ 0.8993909601,
+ 0.9001050330,
+ 0.9008166959,
+ 0.9015259472,
+ 0.9022327848,
+ 0.9029372068,
+ 0.9036392114,
+ 0.9043387967,
+ 0.9050359608,
+ 0.9057307018,
+ 0.9064230179,
+ 0.9071129073,
+ 0.9078003680,
+ 0.9084853983,
+ 0.9091679963,
+ 0.9098481602,
+ 0.9105258881,
+ 0.9112011783,
+ 0.9118740290,
+ 0.9125444382,
+ 0.9132124044,
+ 0.9138779255,
+ 0.9145410000,
+ 0.9152016259,
+ 0.9158598016,
+ 0.9165155252,
+ 0.9171687951,
+ 0.9178196094,
+ 0.9184679665,
+ 0.9191138645,
+ 0.9197573017,
+ 0.9203982766,
+ 0.9210367872,
+ 0.9216728319,
+ 0.9223064091,
+ 0.9229375169,
+ 0.9235661538,
+ 0.9241923180,
+ 0.9248160078,
+ 0.9254372217,
+ 0.9260559578,
+ 0.9266722147,
+ 0.9272859906,
+ 0.9278972838,
+ 0.9285060928,
+ 0.9291124159,
+ 0.9297162514,
+ 0.9303175979,
+ 0.9309164536,
+ 0.9315128169,
+ 0.9321066864,
+ 0.9326980603,
+ 0.9332869370,
+ 0.9338733151,
+ 0.9344571929,
+ 0.9350385689,
+ 0.9356174416,
+ 0.9361938093,
+ 0.9367676705,
+ 0.9373390237,
+ 0.9379078674,
+ 0.9384742000,
+ 0.9390380200,
+ 0.9395993260,
+ 0.9401581163,
+ 0.9407143896,
+ 0.9412681443,
+ 0.9418193789,
+ 0.9423680920,
+ 0.9429142821,
+ 0.9434579477,
+ 0.9439990874,
+ 0.9445376998,
+ 0.9450737833,
+ 0.9456073366,
+ 0.9461383582,
+ 0.9466668467,
+ 0.9471928007,
+ 0.9477162188,
+ 0.9482370995,
+ 0.9487554416,
+ 0.9492712435,
+ 0.9497845040,
+ 0.9502952216,
+ 0.9508033949,
+ 0.9513090227,
+ 0.9518121035,
+ 0.9523126361,
+ 0.9528106190,
+ 0.9533060510,
+ 0.9537989307,
+ 0.9542892567,
+ 0.9547770279,
+ 0.9552622428,
+ 0.9557449002,
+ 0.9562249988,
+ 0.9567025372,
+ 0.9571775143,
+ 0.9576499288,
+ 0.9581197793,
+ 0.9585870647,
+ 0.9590517836,
+ 0.9595139348,
+ 0.9599735172,
+ 0.9604305294,
+ 0.9608849703,
+ 0.9613368385,
+ 0.9617861330,
+ 0.9622328525,
+ 0.9626769958,
+ 0.9631185617,
+ 0.9635575491,
+ 0.9639939567,
+ 0.9644277835,
+ 0.9648590281,
+ 0.9652876896,
+ 0.9657137667,
+ 0.9661372582,
+ 0.9665581632,
+ 0.9669764804,
+ 0.9673922086,
+ 0.9678053469,
+ 0.9682158941,
+ 0.9686238491,
+ 0.9690292108,
+ 0.9694319780,
+ 0.9698321499,
+ 0.9702297252,
+ 0.9706247029,
+ 0.9710170819,
+ 0.9714068613,
+ 0.9717940399,
+ 0.9721786167,
+ 0.9725605907,
+ 0.9729399608,
+ 0.9733167261,
+ 0.9736908855,
+ 0.9740624381,
+ 0.9744313828,
+ 0.9747977187,
+ 0.9751614448,
+ 0.9755225600,
+ 0.9758810635,
+ 0.9762369542,
+ 0.9765902313,
+ 0.9769408937,
+ 0.9772889406,
+ 0.9776343710,
+ 0.9779771840,
+ 0.9783173786,
+ 0.9786549539,
+ 0.9789899092,
+ 0.9793222433,
+ 0.9796519555,
+ 0.9799790449,
+ 0.9803035106,
+ 0.9806253518,
+ 0.9809445675,
+ 0.9812611569,
+ 0.9815751192,
+ 0.9818864535,
+ 0.9821951590,
+ 0.9825012349,
+ 0.9828046803,
+ 0.9831054945,
+ 0.9834036766,
+ 0.9836992258,
+ 0.9839921414,
+ 0.9842824225,
+ 0.9845700684,
+ 0.9848550783,
+ 0.9851374515,
+ 0.9854171871,
+ 0.9856942845,
+ 0.9859687429,
+ 0.9862405616,
+ 0.9865097398,
+ 0.9867762768,
+ 0.9870401719,
+ 0.9873014244,
+ 0.9875600336,
+ 0.9878159988,
+ 0.9880693193,
+ 0.9883199945,
+ 0.9885680237,
+ 0.9888134061,
+ 0.9890561412,
+ 0.9892962283,
+ 0.9895336667,
+ 0.9897684559,
+ 0.9900005952,
+ 0.9902300839,
+ 0.9904569215,
+ 0.9906811073,
+ 0.9909026408,
+ 0.9911215213,
+ 0.9913377484,
+ 0.9915513213,
+ 0.9917622395,
+ 0.9919705024,
+ 0.9921761096,
+ 0.9923790604,
+ 0.9925793543,
+ 0.9927769908,
+ 0.9929719693,
+ 0.9931642894,
+ 0.9933539504,
+ 0.9935409519,
+ 0.9937252935,
+ 0.9939069745,
+ 0.9940859945,
+ 0.9942623531,
+ 0.9944360497,
+ 0.9946070839,
+ 0.9947754553,
+ 0.9949411633,
+ 0.9951042076,
+ 0.9952645877,
+ 0.9954223032,
+ 0.9955773536,
+ 0.9957297385,
+ 0.9958794576,
+ 0.9960265105,
+ 0.9961708966,
+ 0.9963126157,
+ 0.9964516674,
+ 0.9965880513,
+ 0.9967217670,
+ 0.9968528142,
+ 0.9969811925,
+ 0.9971069016,
+ 0.9972299412,
+ 0.9973503108,
+ 0.9974680103,
+ 0.9975830392,
+ 0.9976953973,
+ 0.9978050843,
+ 0.9979120998,
+ 0.9980164436,
+ 0.9981181155,
+ 0.9982171151,
+ 0.9983134421,
+ 0.9984070964,
+ 0.9984980776,
+ 0.9985863855,
+ 0.9986720200,
+ 0.9987549807,
+ 0.9988352674,
+ 0.9989128799,
+ 0.9989878181,
+ 0.9990600816,
+ 0.9991296704,
+ 0.9991965842,
+ 0.9992608228,
+ 0.9993223862,
+ 0.9993812740,
+ 0.9994374862,
+ 0.9994910226,
+ 0.9995418831,
+ 0.9995900674,
+ 0.9996355756,
+ 0.9996784075,
+ 0.9997185629,
+ 0.9997560418,
+ 0.9997908440,
+ 0.9998229695,
+ 0.9998524181,
+ 0.9998791899,
+ 0.9999032846,
+ 0.9999247024,
+ 0.9999434430,
+ 0.9999595065,
+ 0.9999728928,
+ 0.9999836018,
+ 0.9999916336,
+ 0.9999969881,
+ 0.9999996654
+};
+
+real_t sine_short_128[] =
+{
+ 0.0061358848,
+ 0.0184067304,
+ 0.0306748040,
+ 0.0429382581,
+ 0.0551952459,
+ 0.0674439214,
+ 0.0796824402,
+ 0.0919089590,
+ 0.1041216368,
+ 0.1163186341,
+ 0.1284981143,
+ 0.1406582432,
+ 0.1527971895,
+ 0.1649131250,
+ 0.1770042253,
+ 0.1890686693,
+ 0.2011046404,
+ 0.2131103258,
+ 0.2250839175,
+ 0.2370236125,
+ 0.2489276125,
+ 0.2607941250,
+ 0.2726213628,
+ 0.2844075449,
+ 0.2961508962,
+ 0.3078496483,
+ 0.3195020394,
+ 0.3311063146,
+ 0.3426607265,
+ 0.3541635348,
+ 0.3656130075,
+ 0.3770074202,
+ 0.3883450569,
+ 0.3996242103,
+ 0.4108431818,
+ 0.4220002818,
+ 0.4330938301,
+ 0.4441221560,
+ 0.4550835988,
+ 0.4659765077,
+ 0.4767992422,
+ 0.4875501725,
+ 0.4982276796,
+ 0.5088301553,
+ 0.5193560032,
+ 0.5298036379,
+ 0.5401714861,
+ 0.5504579865,
+ 0.5606615899,
+ 0.5707807598,
+ 0.5808139721,
+ 0.5907597160,
+ 0.6006164937,
+ 0.6103828207,
+ 0.6200572264,
+ 0.6296382536,
+ 0.6391244597,
+ 0.6485144160,
+ 0.6578067083,
+ 0.6669999374,
+ 0.6760927188,
+ 0.6850836831,
+ 0.6939714763,
+ 0.7027547599,
+ 0.7114322112,
+ 0.7200025235,
+ 0.7284644060,
+ 0.7368165845,
+ 0.7450578010,
+ 0.7531868147,
+ 0.7612024011,
+ 0.7691033533,
+ 0.7768884813,
+ 0.7845566127,
+ 0.7921065928,
+ 0.7995372846,
+ 0.8068475690,
+ 0.8140363451,
+ 0.8211025303,
+ 0.8280450605,
+ 0.8348628901,
+ 0.8415549925,
+ 0.8481203597,
+ 0.8545580032,
+ 0.8608669533,
+ 0.8670462601,
+ 0.8730949928,
+ 0.8790122407,
+ 0.8847971125,
+ 0.8904487372,
+ 0.8959662635,
+ 0.9013488606,
+ 0.9065957178,
+ 0.9117060451,
+ 0.9166790728,
+ 0.9215140520,
+ 0.9262102546,
+ 0.9307669733,
+ 0.9351835219,
+ 0.9394592352,
+ 0.9435934695,
+ 0.9475856021,
+ 0.9514350317,
+ 0.9551411788,
+ 0.9587034850,
+ 0.9621214141,
+ 0.9653944512,
+ 0.9685221034,
+ 0.9715038998,
+ 0.9743393912,
+ 0.9770281507,
+ 0.9795697733,
+ 0.9819638764,
+ 0.9842100992,
+ 0.9863081037,
+ 0.9882575738,
+ 0.9900582159,
+ 0.9917097588,
+ 0.9932119539,
+ 0.9945645750,
+ 0.9957674182,
+ 0.9968203026,
+ 0.9977230695,
+ 0.9984755829,
+ 0.9990777296,
+ 0.9995294188,
+ 0.9998305826,
+ 0.9999811755
+};
+
+real_t sine_short_120[] =
+{
+ 0.0065449381,
+ 0.0196336930,
+ 0.0327190837,
+ 0.0457988682,
+ 0.0588708053,
+ 0.0719326552,
+ 0.0849821797,
+ 0.0980171430,
+ 0.1110353116,
+ 0.1240344549,
+ 0.1370123455,
+ 0.1499667597,
+ 0.1628954779,
+ 0.1757962848,
+ 0.1886669699,
+ 0.2015053279,
+ 0.2143091589,
+ 0.2270762692,
+ 0.2398044712,
+ 0.2524915839,
+ 0.2651354334,
+ 0.2777338534,
+ 0.2902846851,
+ 0.3027857780,
+ 0.3152349901,
+ 0.3276301883,
+ 0.3399692488,
+ 0.3522500573,
+ 0.3644705095,
+ 0.3766285116,
+ 0.3887219804,
+ 0.4007488436,
+ 0.4127070406,
+ 0.4245945223,
+ 0.4364092520,
+ 0.4481492051,
+ 0.4598123703,
+ 0.4713967489,
+ 0.4829003561,
+ 0.4943212208,
+ 0.5056573861,
+ 0.5169069096,
+ 0.5280678638,
+ 0.5391383363,
+ 0.5501164301,
+ 0.5610002644,
+ 0.5717879741,
+ 0.5824777109,
+ 0.5930676432,
+ 0.6035559563,
+ 0.6139408533,
+ 0.6242205546,
+ 0.6343932989,
+ 0.6444573433,
+ 0.6544109631,
+ 0.6642524530,
+ 0.6739801267,
+ 0.6835923173,
+ 0.6930873779,
+ 0.7024636815,
+ 0.7117196216,
+ 0.7208536122,
+ 0.7298640883,
+ 0.7387495058,
+ 0.7475083425,
+ 0.7561390974,
+ 0.7646402918,
+ 0.7730104690,
+ 0.7812481948,
+ 0.7893520577,
+ 0.7973206693,
+ 0.8051526640,
+ 0.8128467000,
+ 0.8204014588,
+ 0.8278156461,
+ 0.8350879914,
+ 0.8422172487,
+ 0.8492021964,
+ 0.8560416377,
+ 0.8627344006,
+ 0.8692793384,
+ 0.8756753297,
+ 0.8819212785,
+ 0.8880161146,
+ 0.8939587938,
+ 0.8997482976,
+ 0.9053836343,
+ 0.9108638381,
+ 0.9161879700,
+ 0.9213551179,
+ 0.9263643963,
+ 0.9312149469,
+ 0.9359059386,
+ 0.9404365677,
+ 0.9448060577,
+ 0.9490136602,
+ 0.9530586539,
+ 0.9569403460,
+ 0.9606580713,
+ 0.9642111928,
+ 0.9675991016,
+ 0.9708212173,
+ 0.9738769878,
+ 0.9767658894,
+ 0.9794874272,
+ 0.9820411349,
+ 0.9844265749,
+ 0.9866433385,
+ 0.9886910458,
+ 0.9905693459,
+ 0.9922779171,
+ 0.9938164666,
+ 0.9951847307,
+ 0.9963824750,
+ 0.9974094943,
+ 0.9982656127,
+ 0.9989506833,
+ 0.9994645889,
+ 0.9998072413,
+ 0.9999785819
+};
+
+#ifdef LD_DEC
+real_t sine_mid_512[] =
+{
+ 0.0015339802,
+ 0.0046019262,
+ 0.0076698290,
+ 0.0107376595,
+ 0.0138053889,
+ 0.0168729884,
+ 0.0199404291,
+ 0.0230076821,
+ 0.0260747186,
+ 0.0291415096,
+ 0.0322080263,
+ 0.0352742399,
+ 0.0383401214,
+ 0.0414056421,
+ 0.0444707731,
+ 0.0475354855,
+ 0.0505997504,
+ 0.0536635391,
+ 0.0567268227,
+ 0.0597895724,
+ 0.0628517593,
+ 0.0659133546,
+ 0.0689743295,
+ 0.0720346552,
+ 0.0750943029,
+ 0.0781532438,
+ 0.0812114491,
+ 0.0842688899,
+ 0.0873255376,
+ 0.0903813634,
+ 0.0934363384,
+ 0.0964904340,
+ 0.0995436214,
+ 0.1025958719,
+ 0.1056471566,
+ 0.1086974470,
+ 0.1117467143,
+ 0.1147949298,
+ 0.1178420648,
+ 0.1208880906,
+ 0.1239329785,
+ 0.1269767000,
+ 0.1300192263,
+ 0.1330605288,
+ 0.1361005789,
+ 0.1391393480,
+ 0.1421768074,
+ 0.1452129287,
+ 0.1482476831,
+ 0.1512810421,
+ 0.1543129773,
+ 0.1573434600,
+ 0.1603724617,
+ 0.1633999539,
+ 0.1664259081,
+ 0.1694502959,
+ 0.1724730887,
+ 0.1754942582,
+ 0.1785137759,
+ 0.1815316133,
+ 0.1845477420,
+ 0.1875621337,
+ 0.1905747601,
+ 0.1935855926,
+ 0.1965946031,
+ 0.1996017631,
+ 0.2026070444,
+ 0.2056104187,
+ 0.2086118577,
+ 0.2116113332,
+ 0.2146088169,
+ 0.2176042806,
+ 0.2205976961,
+ 0.2235890353,
+ 0.2265782700,
+ 0.2295653721,
+ 0.2325503134,
+ 0.2355330658,
+ 0.2385136014,
+ 0.2414918919,
+ 0.2444679094,
+ 0.2474416259,
+ 0.2504130134,
+ 0.2533820439,
+ 0.2563486895,
+ 0.2593129222,
+ 0.2622747142,
+ 0.2652340375,
+ 0.2681908643,
+ 0.2711451669,
+ 0.2740969173,
+ 0.2770460878,
+ 0.2799926507,
+ 0.2829365781,
+ 0.2858778425,
+ 0.2888164160,
+ 0.2917522711,
+ 0.2946853801,
+ 0.2976157155,
+ 0.3005432495,
+ 0.3034679547,
+ 0.3063898036,
+ 0.3093087686,
+ 0.3122248223,
+ 0.3151379372,
+ 0.3180480859,
+ 0.3209552410,
+ 0.3238593752,
+ 0.3267604611,
+ 0.3296584714,
+ 0.3325533788,
+ 0.3354451561,
+ 0.3383337760,
+ 0.3412192114,
+ 0.3441014352,
+ 0.3469804201,
+ 0.3498561391,
+ 0.3527285651,
+ 0.3555976712,
+ 0.3584634302,
+ 0.3613258152,
+ 0.3641847992,
+ 0.3670403554,
+ 0.3698924569,
+ 0.3727410769,
+ 0.3755861884,
+ 0.3784277648,
+ 0.3812657793,
+ 0.3841002051,
+ 0.3869310157,
+ 0.3897581843,
+ 0.3925816844,
+ 0.3954014893,
+ 0.3982175726,
+ 0.4010299077,
+ 0.4038384682,
+ 0.4066432275,
+ 0.4094441594,
+ 0.4122412374,
+ 0.4150344353,
+ 0.4178237267,
+ 0.4206090854,
+ 0.4233904852,
+ 0.4261678998,
+ 0.4289413032,
+ 0.4317106692,
+ 0.4344759718,
+ 0.4372371850,
+ 0.4399942827,
+ 0.4427472390,
+ 0.4454960280,
+ 0.4482406238,
+ 0.4509810007,
+ 0.4537171327,
+ 0.4564489941,
+ 0.4591765593,
+ 0.4618998026,
+ 0.4646186982,
+ 0.4673332207,
+ 0.4700433445,
+ 0.4727490440,
+ 0.4754502939,
+ 0.4781470686,
+ 0.4808393428,
+ 0.4835270912,
+ 0.4862102885,
+ 0.4888889093,
+ 0.4915629286,
+ 0.4942323210,
+ 0.4968970616,
+ 0.4995571252,
+ 0.5022124867,
+ 0.5048631212,
+ 0.5075090038,
+ 0.5101501095,
+ 0.5127864135,
+ 0.5154178909,
+ 0.5180445171,
+ 0.5206662672,
+ 0.5232831165,
+ 0.5258950406,
+ 0.5285020147,
+ 0.5311040144,
+ 0.5337010151,
+ 0.5362929924,
+ 0.5388799219,
+ 0.5414617792,
+ 0.5440385402,
+ 0.5466101804,
+ 0.5491766757,
+ 0.5517380020,
+ 0.5542941351,
+ 0.5568450509,
+ 0.5593907256,
+ 0.5619311350,
+ 0.5644662553,
+ 0.5669960626,
+ 0.5695205332,
+ 0.5720396432,
+ 0.5745533690,
+ 0.5770616868,
+ 0.5795645732,
+ 0.5820620044,
+ 0.5845539570,
+ 0.5870404077,
+ 0.5895213328,
+ 0.5919967092,
+ 0.5944665134,
+ 0.5969307223,
+ 0.5993893127,
+ 0.6018422614,
+ 0.6042895453,
+ 0.6067311415,
+ 0.6091670268,
+ 0.6115971784,
+ 0.6140215735,
+ 0.6164401891,
+ 0.6188530025,
+ 0.6212599911,
+ 0.6236611322,
+ 0.6260564031,
+ 0.6284457813,
+ 0.6308292444,
+ 0.6332067698,
+ 0.6355783353,
+ 0.6379439184,
+ 0.6403034970,
+ 0.6426570488,
+ 0.6450045517,
+ 0.6473459836,
+ 0.6496813224,
+ 0.6520105461,
+ 0.6543336328,
+ 0.6566505608,
+ 0.6589613080,
+ 0.6612658529,
+ 0.6635641737,
+ 0.6658562488,
+ 0.6681420566,
+ 0.6704215756,
+ 0.6726947843,
+ 0.6749616613,
+ 0.6772221854,
+ 0.6794763352,
+ 0.6817240894,
+ 0.6839654271,
+ 0.6862003270,
+ 0.6884287681,
+ 0.6906507295,
+ 0.6928661902,
+ 0.6950751294,
+ 0.6972775262,
+ 0.6994733600,
+ 0.7016626102,
+ 0.7038452560,
+ 0.7060212769,
+ 0.7081906525,
+ 0.7103533623,
+ 0.7125093860,
+ 0.7146587034,
+ 0.7168012940,
+ 0.7189371379,
+ 0.7210662148,
+ 0.7231885048,
+ 0.7253039879,
+ 0.7274126442,
+ 0.7295144537,
+ 0.7316093968,
+ 0.7336974537,
+ 0.7357786047,
+ 0.7378528304,
+ 0.7399201111,
+ 0.7419804273,
+ 0.7440337598,
+ 0.7460800891,
+ 0.7481193961,
+ 0.7501516614,
+ 0.7521768661,
+ 0.7541949909,
+ 0.7562060170,
+ 0.7582099254,
+ 0.7602066973,
+ 0.7621963137,
+ 0.7641787561,
+ 0.7661540058,
+ 0.7681220441,
+ 0.7700828526,
+ 0.7720364128,
+ 0.7739827062,
+ 0.7759217146,
+ 0.7778534198,
+ 0.7797778035,
+ 0.7816948476,
+ 0.7836045342,
+ 0.7855068451,
+ 0.7874017626,
+ 0.7892892687,
+ 0.7911693458,
+ 0.7930419760,
+ 0.7949071418,
+ 0.7967648257,
+ 0.7986150101,
+ 0.8004576777,
+ 0.8022928110,
+ 0.8041203929,
+ 0.8059404060,
+ 0.8077528334,
+ 0.8095576578,
+ 0.8113548624,
+ 0.8131444302,
+ 0.8149263444,
+ 0.8167005882,
+ 0.8184671449,
+ 0.8202259979,
+ 0.8219771306,
+ 0.8237205265,
+ 0.8254561693,
+ 0.8271840425,
+ 0.8289041300,
+ 0.8306164155,
+ 0.8323208829,
+ 0.8340175162,
+ 0.8357062995,
+ 0.8373872167,
+ 0.8390602521,
+ 0.8407253900,
+ 0.8423826147,
+ 0.8440319105,
+ 0.8456732620,
+ 0.8473066536,
+ 0.8489320701,
+ 0.8505494961,
+ 0.8521589165,
+ 0.8537603160,
+ 0.8553536795,
+ 0.8569389922,
+ 0.8585162390,
+ 0.8600854051,
+ 0.8616464758,
+ 0.8631994363,
+ 0.8647442721,
+ 0.8662809686,
+ 0.8678095113,
+ 0.8693298858,
+ 0.8708420779,
+ 0.8723460733,
+ 0.8738418578,
+ 0.8753294174,
+ 0.8768087381,
+ 0.8782798059,
+ 0.8797426070,
+ 0.8811971277,
+ 0.8826433541,
+ 0.8840812728,
+ 0.8855108702,
+ 0.8869321328,
+ 0.8883450473,
+ 0.8897496003,
+ 0.8911457787,
+ 0.8925335692,
+ 0.8939129589,
+ 0.8952839348,
+ 0.8966464839,
+ 0.8980005934,
+ 0.8993462506,
+ 0.9006834428,
+ 0.9020121574,
+ 0.9033323820,
+ 0.9046441040,
+ 0.9059473112,
+ 0.9072419912,
+ 0.9085281320,
+ 0.9098057213,
+ 0.9110747472,
+ 0.9123351977,
+ 0.9135870610,
+ 0.9148303252,
+ 0.9160649787,
+ 0.9172910099,
+ 0.9185084071,
+ 0.9197171590,
+ 0.9209172542,
+ 0.9221086814,
+ 0.9232914293,
+ 0.9244654868,
+ 0.9256308430,
+ 0.9267874867,
+ 0.9279354072,
+ 0.9290745935,
+ 0.9302050351,
+ 0.9313267212,
+ 0.9324396413,
+ 0.9335437850,
+ 0.9346391418,
+ 0.9357257014,
+ 0.9368034535,
+ 0.9378723882,
+ 0.9389324952,
+ 0.9399837646,
+ 0.9410261866,
+ 0.9420597512,
+ 0.9430844489,
+ 0.9441002698,
+ 0.9451072045,
+ 0.9461052436,
+ 0.9470943775,
+ 0.9480745970,
+ 0.9490458928,
+ 0.9500082559,
+ 0.9509616771,
+ 0.9519061475,
+ 0.9528416583,
+ 0.9537682005,
+ 0.9546857654,
+ 0.9555943446,
+ 0.9564939293,
+ 0.9573845111,
+ 0.9582660816,
+ 0.9591386326,
+ 0.9600021558,
+ 0.9608566431,
+ 0.9617020864,
+ 0.9625384778,
+ 0.9633658095,
+ 0.9641840736,
+ 0.9649932624,
+ 0.9657933683,
+ 0.9665843838,
+ 0.9673663015,
+ 0.9681391139,
+ 0.9689028139,
+ 0.9696573941,
+ 0.9704028476,
+ 0.9711391673,
+ 0.9718663462,
+ 0.9725843776,
+ 0.9732932546,
+ 0.9739929706,
+ 0.9746835191,
+ 0.9753648934,
+ 0.9760370872,
+ 0.9767000942,
+ 0.9773539081,
+ 0.9779985228,
+ 0.9786339322,
+ 0.9792601304,
+ 0.9798771113,
+ 0.9804848693,
+ 0.9810833986,
+ 0.9816726935,
+ 0.9822527486,
+ 0.9828235583,
+ 0.9833851173,
+ 0.9839374204,
+ 0.9844804622,
+ 0.9850142377,
+ 0.9855387419,
+ 0.9860539698,
+ 0.9865599167,
+ 0.9870565776,
+ 0.9875439480,
+ 0.9880220232,
+ 0.9884907988,
+ 0.9889502704,
+ 0.9894004335,
+ 0.9898412841,
+ 0.9902728179,
+ 0.9906950309,
+ 0.9911079190,
+ 0.9915114785,
+ 0.9919057055,
+ 0.9922905963,
+ 0.9926661473,
+ 0.9930323550,
+ 0.9933892158,
+ 0.9937367265,
+ 0.9940748837,
+ 0.9944036844,
+ 0.9947231253,
+ 0.9950332035,
+ 0.9953339161,
+ 0.9956252602,
+ 0.9959072331,
+ 0.9961798322,
+ 0.9964430548,
+ 0.9966968986,
+ 0.9969413610,
+ 0.9971764399,
+ 0.9974021329,
+ 0.9976184380,
+ 0.9978253532,
+ 0.9980228764,
+ 0.9982110059,
+ 0.9983897398,
+ 0.9985590765,
+ 0.9987190144,
+ 0.9988695519,
+ 0.9990106877,
+ 0.9991424205,
+ 0.9992647489,
+ 0.9993776719,
+ 0.9994811883,
+ 0.9995752973,
+ 0.9996599979,
+ 0.9997352893,
+ 0.9998011707,
+ 0.9998576417,
+ 0.9999047017,
+ 0.9999423501,
+ 0.9999705868,
+ 0.9999894113,
+ 0.9999988235
+};
+
+real_t sine_mid_480[] =
+{
+ 0.0016362455,
+ 0.0049087189,
+ 0.0081811398,
+ 0.0114534731,
+ 0.0147256837,
+ 0.0179977366,
+ 0.0212695968,
+ 0.0245412292,
+ 0.0278125988,
+ 0.0310836705,
+ 0.0343544094,
+ 0.0376247803,
+ 0.0408947483,
+ 0.0441642784,
+ 0.0474333354,
+ 0.0507018846,
+ 0.0539698907,
+ 0.0572373189,
+ 0.0605041341,
+ 0.0637703013,
+ 0.0670357857,
+ 0.0703005521,
+ 0.0735645656,
+ 0.0768277914,
+ 0.0800901944,
+ 0.0833517396,
+ 0.0866123923,
+ 0.0898721174,
+ 0.0931308800,
+ 0.0963886453,
+ 0.0996453784,
+ 0.1029010443,
+ 0.1061556082,
+ 0.1094090353,
+ 0.1126612907,
+ 0.1159123396,
+ 0.1191621472,
+ 0.1224106786,
+ 0.1256578991,
+ 0.1289037739,
+ 0.1321482683,
+ 0.1353913474,
+ 0.1386329767,
+ 0.1418731213,
+ 0.1451117465,
+ 0.1483488177,
+ 0.1515843002,
+ 0.1548181594,
+ 0.1580503605,
+ 0.1612808691,
+ 0.1645096505,
+ 0.1677366702,
+ 0.1709618935,
+ 0.1741852859,
+ 0.1774068130,
+ 0.1806264402,
+ 0.1838441330,
+ 0.1870598570,
+ 0.1902735777,
+ 0.1934852607,
+ 0.1966948717,
+ 0.1999023762,
+ 0.2031077400,
+ 0.2063109286,
+ 0.2095119078,
+ 0.2127106433,
+ 0.2159071008,
+ 0.2191012462,
+ 0.2222930451,
+ 0.2254824635,
+ 0.2286694671,
+ 0.2318540218,
+ 0.2350360936,
+ 0.2382156484,
+ 0.2413926520,
+ 0.2445670705,
+ 0.2477388699,
+ 0.2509080162,
+ 0.2540744755,
+ 0.2572382139,
+ 0.2603991974,
+ 0.2635573923,
+ 0.2667127647,
+ 0.2698652808,
+ 0.2730149069,
+ 0.2761616092,
+ 0.2793053540,
+ 0.2824461077,
+ 0.2855838367,
+ 0.2887185072,
+ 0.2918500858,
+ 0.2949785389,
+ 0.2981038331,
+ 0.3012259348,
+ 0.3043448106,
+ 0.3074604271,
+ 0.3105727510,
+ 0.3136817488,
+ 0.3167873874,
+ 0.3198896335,
+ 0.3229884538,
+ 0.3260838151,
+ 0.3291756844,
+ 0.3322640284,
+ 0.3353488142,
+ 0.3384300086,
+ 0.3415075788,
+ 0.3445814916,
+ 0.3476517143,
+ 0.3507182139,
+ 0.3537809576,
+ 0.3568399126,
+ 0.3598950461,
+ 0.3629463254,
+ 0.3659937179,
+ 0.3690371908,
+ 0.3720767117,
+ 0.3751122479,
+ 0.3781437670,
+ 0.3811712365,
+ 0.3841946239,
+ 0.3872138969,
+ 0.3902290232,
+ 0.3932399704,
+ 0.3962467063,
+ 0.3992491987,
+ 0.4022474156,
+ 0.4052413246,
+ 0.4082308939,
+ 0.4112160913,
+ 0.4141968849,
+ 0.4171732429,
+ 0.4201451332,
+ 0.4231125241,
+ 0.4260753838,
+ 0.4290336806,
+ 0.4319873828,
+ 0.4349364587,
+ 0.4378808768,
+ 0.4408206056,
+ 0.4437556136,
+ 0.4466858692,
+ 0.4496113412,
+ 0.4525319983,
+ 0.4554478091,
+ 0.4583587424,
+ 0.4612647671,
+ 0.4641658519,
+ 0.4670619660,
+ 0.4699530782,
+ 0.4728391575,
+ 0.4757201731,
+ 0.4785960942,
+ 0.4814668899,
+ 0.4843325294,
+ 0.4871929822,
+ 0.4900482174,
+ 0.4928982047,
+ 0.4957429134,
+ 0.4985823131,
+ 0.5014163734,
+ 0.5042450640,
+ 0.5070683544,
+ 0.5098862146,
+ 0.5126986143,
+ 0.5155055234,
+ 0.5183069119,
+ 0.5211027497,
+ 0.5238930069,
+ 0.5266776537,
+ 0.5294566601,
+ 0.5322299965,
+ 0.5349976332,
+ 0.5377595404,
+ 0.5405156887,
+ 0.5432660485,
+ 0.5460105903,
+ 0.5487492848,
+ 0.5514821026,
+ 0.5542090145,
+ 0.5569299913,
+ 0.5596450038,
+ 0.5623540230,
+ 0.5650570198,
+ 0.5677539653,
+ 0.5704448306,
+ 0.5731295868,
+ 0.5758082054,
+ 0.5784806575,
+ 0.5811469145,
+ 0.5838069479,
+ 0.5864607292,
+ 0.5891082300,
+ 0.5917494219,
+ 0.5943842766,
+ 0.5970127660,
+ 0.5996348618,
+ 0.6022505361,
+ 0.6048597607,
+ 0.6074625077,
+ 0.6100587493,
+ 0.6126484577,
+ 0.6152316051,
+ 0.6178081639,
+ 0.6203781064,
+ 0.6229414052,
+ 0.6254980328,
+ 0.6280479618,
+ 0.6305911649,
+ 0.6331276149,
+ 0.6356572846,
+ 0.6381801469,
+ 0.6406961748,
+ 0.6432053414,
+ 0.6457076197,
+ 0.6482029831,
+ 0.6506914047,
+ 0.6531728580,
+ 0.6556473162,
+ 0.6581147531,
+ 0.6605751420,
+ 0.6630284567,
+ 0.6654746709,
+ 0.6679137584,
+ 0.6703456931,
+ 0.6727704490,
+ 0.6751880000,
+ 0.6775983202,
+ 0.6800013840,
+ 0.6823971654,
+ 0.6847856390,
+ 0.6871667790,
+ 0.6895405601,
+ 0.6919069567,
+ 0.6942659435,
+ 0.6966174953,
+ 0.6989615869,
+ 0.7012981932,
+ 0.7036272892,
+ 0.7059488498,
+ 0.7082628503,
+ 0.7105692659,
+ 0.7128680719,
+ 0.7151592436,
+ 0.7174427565,
+ 0.7197185862,
+ 0.7219867083,
+ 0.7242470985,
+ 0.7264997326,
+ 0.7287445864,
+ 0.7309816360,
+ 0.7332108574,
+ 0.7354322266,
+ 0.7376457200,
+ 0.7398513138,
+ 0.7420489844,
+ 0.7442387082,
+ 0.7464204618,
+ 0.7485942218,
+ 0.7507599651,
+ 0.7529176682,
+ 0.7550673083,
+ 0.7572088621,
+ 0.7593423069,
+ 0.7614676197,
+ 0.7635847778,
+ 0.7656937585,
+ 0.7677945393,
+ 0.7698870976,
+ 0.7719714111,
+ 0.7740474573,
+ 0.7761152141,
+ 0.7781746593,
+ 0.7802257710,
+ 0.7822685270,
+ 0.7843029055,
+ 0.7863288848,
+ 0.7883464432,
+ 0.7903555590,
+ 0.7923562107,
+ 0.7943483769,
+ 0.7963320363,
+ 0.7983071676,
+ 0.8002737497,
+ 0.8022317615,
+ 0.8041811820,
+ 0.8061219904,
+ 0.8080541659,
+ 0.8099776877,
+ 0.8118925354,
+ 0.8137986883,
+ 0.8156961261,
+ 0.8175848285,
+ 0.8194647752,
+ 0.8213359460,
+ 0.8231983211,
+ 0.8250518803,
+ 0.8268966039,
+ 0.8287324721,
+ 0.8305594652,
+ 0.8323775637,
+ 0.8341867481,
+ 0.8359869990,
+ 0.8377782972,
+ 0.8395606235,
+ 0.8413339587,
+ 0.8430982839,
+ 0.8448535802,
+ 0.8465998288,
+ 0.8483370110,
+ 0.8500651082,
+ 0.8517841019,
+ 0.8534939737,
+ 0.8551947052,
+ 0.8568862783,
+ 0.8585686748,
+ 0.8602418767,
+ 0.8619058662,
+ 0.8635606253,
+ 0.8652061363,
+ 0.8668423818,
+ 0.8684693440,
+ 0.8700870056,
+ 0.8716953493,
+ 0.8732943578,
+ 0.8748840140,
+ 0.8764643010,
+ 0.8780352017,
+ 0.8795966993,
+ 0.8811487772,
+ 0.8826914187,
+ 0.8842246072,
+ 0.8857483265,
+ 0.8872625600,
+ 0.8887672917,
+ 0.8902625055,
+ 0.8917481852,
+ 0.8932243150,
+ 0.8946908791,
+ 0.8961478618,
+ 0.8975952475,
+ 0.8990330206,
+ 0.9004611658,
+ 0.9018796678,
+ 0.9032885114,
+ 0.9046876815,
+ 0.9060771631,
+ 0.9074569413,
+ 0.9088270015,
+ 0.9101873288,
+ 0.9115379087,
+ 0.9128787268,
+ 0.9142097687,
+ 0.9155310202,
+ 0.9168424670,
+ 0.9181440952,
+ 0.9194358908,
+ 0.9207178400,
+ 0.9219899290,
+ 0.9232521443,
+ 0.9245044723,
+ 0.9257468996,
+ 0.9269794128,
+ 0.9282019989,
+ 0.9294146447,
+ 0.9306173372,
+ 0.9318100635,
+ 0.9329928109,
+ 0.9341655667,
+ 0.9353283183,
+ 0.9364810533,
+ 0.9376237593,
+ 0.9387564242,
+ 0.9398790357,
+ 0.9409915818,
+ 0.9420940507,
+ 0.9431864306,
+ 0.9442687096,
+ 0.9453408763,
+ 0.9464029192,
+ 0.9474548268,
+ 0.9484965880,
+ 0.9495281915,
+ 0.9505496264,
+ 0.9515608816,
+ 0.9525619463,
+ 0.9535528099,
+ 0.9545334617,
+ 0.9555038913,
+ 0.9564640881,
+ 0.9574140420,
+ 0.9583537427,
+ 0.9592831803,
+ 0.9602023446,
+ 0.9611112260,
+ 0.9620098147,
+ 0.9628981010,
+ 0.9637760755,
+ 0.9646437286,
+ 0.9655010512,
+ 0.9663480341,
+ 0.9671846682,
+ 0.9680109445,
+ 0.9688268541,
+ 0.9696323885,
+ 0.9704275388,
+ 0.9712122966,
+ 0.9719866535,
+ 0.9727506013,
+ 0.9735041316,
+ 0.9742472365,
+ 0.9749799080,
+ 0.9757021383,
+ 0.9764139195,
+ 0.9771152442,
+ 0.9778061047,
+ 0.9784864937,
+ 0.9791564039,
+ 0.9798158282,
+ 0.9804647593,
+ 0.9811031905,
+ 0.9817311149,
+ 0.9823485257,
+ 0.9829554164,
+ 0.9835517804,
+ 0.9841376113,
+ 0.9847129029,
+ 0.9852776490,
+ 0.9858318436,
+ 0.9863754808,
+ 0.9869085546,
+ 0.9874310595,
+ 0.9879429897,
+ 0.9884443399,
+ 0.9889351046,
+ 0.9894152786,
+ 0.9898848568,
+ 0.9903438341,
+ 0.9907922056,
+ 0.9912299666,
+ 0.9916571122,
+ 0.9920736380,
+ 0.9924795395,
+ 0.9928748124,
+ 0.9932594523,
+ 0.9936334552,
+ 0.9939968171,
+ 0.9943495342,
+ 0.9946916025,
+ 0.9950230184,
+ 0.9953437785,
+ 0.9956538793,
+ 0.9959533173,
+ 0.9962420896,
+ 0.9965201929,
+ 0.9967876242,
+ 0.9970443807,
+ 0.9972904597,
+ 0.9975258586,
+ 0.9977505747,
+ 0.9979646057,
+ 0.9981679493,
+ 0.9983606034,
+ 0.9985425657,
+ 0.9987138346,
+ 0.9988744079,
+ 0.9990242842,
+ 0.9991634617,
+ 0.9992919389,
+ 0.9994097146,
+ 0.9995167873,
+ 0.9996131561,
+ 0.9996988198,
+ 0.9997737775,
+ 0.9998380284,
+ 0.9998915719,
+ 0.9999344073,
+ 0.9999665343,
+ 0.9999879524,
+ 0.9999986614
+};
+
+real_t ld_mid_512[] =
+{
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0061358848,
+ 0.0184067304,
+ 0.0306748040,
+ 0.0429382581,
+ 0.0551952459,
+ 0.0674439214,
+ 0.0796824402,
+ 0.0919089590,
+ 0.1041216368,
+ 0.1163186341,
+ 0.1284981143,
+ 0.1406582432,
+ 0.1527971895,
+ 0.1649131250,
+ 0.1770042253,
+ 0.1890686693,
+ 0.2011046404,
+ 0.2131103258,
+ 0.2250839175,
+ 0.2370236125,
+ 0.2489276125,
+ 0.2607941250,
+ 0.2726213628,
+ 0.2844075449,
+ 0.2961508962,
+ 0.3078496483,
+ 0.3195020394,
+ 0.3311063146,
+ 0.3426607265,
+ 0.3541635348,
+ 0.3656130075,
+ 0.3770074202,
+ 0.3883450569,
+ 0.3996242103,
+ 0.4108431818,
+ 0.4220002818,
+ 0.4330938301,
+ 0.4441221560,
+ 0.4550835988,
+ 0.4659765077,
+ 0.4767992422,
+ 0.4875501725,
+ 0.4982276796,
+ 0.5088301553,
+ 0.5193560032,
+ 0.5298036379,
+ 0.5401714861,
+ 0.5504579865,
+ 0.5606615899,
+ 0.5707807598,
+ 0.5808139721,
+ 0.5907597160,
+ 0.6006164937,
+ 0.6103828207,
+ 0.6200572264,
+ 0.6296382536,
+ 0.6391244597,
+ 0.6485144160,
+ 0.6578067083,
+ 0.6669999374,
+ 0.6760927188,
+ 0.6850836831,
+ 0.6939714763,
+ 0.7027547599,
+ 0.7114322112,
+ 0.7200025235,
+ 0.7284644060,
+ 0.7368165845,
+ 0.7450578010,
+ 0.7531868147,
+ 0.7612024011,
+ 0.7691033533,
+ 0.7768884813,
+ 0.7845566127,
+ 0.7921065928,
+ 0.7995372846,
+ 0.8068475690,
+ 0.8140363451,
+ 0.8211025303,
+ 0.8280450605,
+ 0.8348628901,
+ 0.8415549925,
+ 0.8481203597,
+ 0.8545580032,
+ 0.8608669533,
+ 0.8670462601,
+ 0.8730949928,
+ 0.8790122407,
+ 0.8847971125,
+ 0.8904487372,
+ 0.8959662635,
+ 0.9013488606,
+ 0.9065957178,
+ 0.9117060451,
+ 0.9166790728,
+ 0.9215140520,
+ 0.9262102546,
+ 0.9307669733,
+ 0.9351835219,
+ 0.9394592352,
+ 0.9435934695,
+ 0.9475856021,
+ 0.9514350317,
+ 0.9551411788,
+ 0.9587034850,
+ 0.9621214141,
+ 0.9653944512,
+ 0.9685221034,
+ 0.9715038998,
+ 0.9743393912,
+ 0.9770281507,
+ 0.9795697733,
+ 0.9819638764,
+ 0.9842100992,
+ 0.9863081037,
+ 0.9882575738,
+ 0.9900582159,
+ 0.9917097588,
+ 0.9932119539,
+ 0.9945645750,
+ 0.9957674182,
+ 0.9968203026,
+ 0.9977230695,
+ 0.9984755829,
+ 0.9990777296,
+ 0.9995294188,
+ 0.9998305826,
+ 0.9999811755,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000
+};
+
+real_t ld_mid_480[] =
+{
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0065449381,
+ 0.0196336930,
+ 0.0327190837,
+ 0.0457988682,
+ 0.0588708053,
+ 0.0719326552,
+ 0.0849821797,
+ 0.0980171430,
+ 0.1110353116,
+ 0.1240344549,
+ 0.1370123455,
+ 0.1499667597,
+ 0.1628954779,
+ 0.1757962848,
+ 0.1886669699,
+ 0.2015053279,
+ 0.2143091589,
+ 0.2270762692,
+ 0.2398044712,
+ 0.2524915839,
+ 0.2651354334,
+ 0.2777338534,
+ 0.2902846851,
+ 0.3027857780,
+ 0.3152349901,
+ 0.3276301883,
+ 0.3399692488,
+ 0.3522500573,
+ 0.3644705095,
+ 0.3766285116,
+ 0.3887219804,
+ 0.4007488436,
+ 0.4127070406,
+ 0.4245945223,
+ 0.4364092520,
+ 0.4481492051,
+ 0.4598123703,
+ 0.4713967489,
+ 0.4829003561,
+ 0.4943212208,
+ 0.5056573861,
+ 0.5169069096,
+ 0.5280678638,
+ 0.5391383363,
+ 0.5501164301,
+ 0.5610002644,
+ 0.5717879741,
+ 0.5824777109,
+ 0.5930676432,
+ 0.6035559563,
+ 0.6139408533,
+ 0.6242205546,
+ 0.6343932989,
+ 0.6444573433,
+ 0.6544109631,
+ 0.6642524530,
+ 0.6739801267,
+ 0.6835923173,
+ 0.6930873779,
+ 0.7024636815,
+ 0.7117196216,
+ 0.7208536122,
+ 0.7298640883,
+ 0.7387495058,
+ 0.7475083425,
+ 0.7561390974,
+ 0.7646402918,
+ 0.7730104690,
+ 0.7812481948,
+ 0.7893520577,
+ 0.7973206693,
+ 0.8051526640,
+ 0.8128467000,
+ 0.8204014588,
+ 0.8278156461,
+ 0.8350879914,
+ 0.8422172487,
+ 0.8492021964,
+ 0.8560416377,
+ 0.8627344006,
+ 0.8692793384,
+ 0.8756753297,
+ 0.8819212785,
+ 0.8880161146,
+ 0.8939587938,
+ 0.8997482976,
+ 0.9053836343,
+ 0.9108638381,
+ 0.9161879700,
+ 0.9213551179,
+ 0.9263643963,
+ 0.9312149469,
+ 0.9359059386,
+ 0.9404365677,
+ 0.9448060577,
+ 0.9490136602,
+ 0.9530586539,
+ 0.9569403460,
+ 0.9606580713,
+ 0.9642111928,
+ 0.9675991016,
+ 0.9708212173,
+ 0.9738769878,
+ 0.9767658894,
+ 0.9794874272,
+ 0.9820411349,
+ 0.9844265749,
+ 0.9866433385,
+ 0.9886910458,
+ 0.9905693459,
+ 0.9922779171,
+ 0.9938164666,
+ 0.9951847307,
+ 0.9963824750,
+ 0.9974094943,
+ 0.9982656127,
+ 0.9989506833,
+ 0.9994645889,
+ 0.9998072413,
+ 0.9999785819,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000,
+ 1.0000000000
+};
+#endif
+
+#else
+
+real_t sine_long_1024[] =
+{
+ 0x3243F,
+ 0x96CBD,
+ 0xFB53A,
+ 0x15FDB5,
+ 0x1C462C,
+ 0x228E9E,
+ 0x28D70C,
+ 0x2F1F73,
+ 0x3567D2,
+ 0x3BB02A,
+ 0x41F878,
+ 0x4840BD,
+ 0x4E88F6,
+ 0x54D123,
+ 0x5B1942,
+ 0x616154,
+ 0x67A957,
+ 0x6DF14A,
+ 0x74392C,
+ 0x7A80FC,
+ 0x80C8B9,
+ 0x871062,
+ 0x8D57F6,
+ 0x939F75,
+ 0x99E6DC,
+ 0xA02E2C,
+ 0xA67564,
+ 0xACBC81,
+ 0xB30385,
+ 0xB94A6C,
+ 0xBF9137,
+ 0xC5D7E4,
+ 0xCC1E73,
+ 0xD264E2,
+ 0xD8AB31,
+ 0xDEF15F,
+ 0xE5376A,
+ 0xEB7D51,
+ 0xF1C315,
+ 0xF808B3,
+ 0xFE4E2B,
+ 0x104937C,
+ 0x10AD8A4,
+ 0x1111DA3,
+ 0x1176279,
+ 0x11DA723,
+ 0x123EBA1,
+ 0x12A2FF2,
+ 0x1307415,
+ 0x136B809,
+ 0x13CFBCD,
+ 0x1433F61,
+ 0x14982C2,
+ 0x14FC5F1,
+ 0x15608EC,
+ 0x15C4BB2,
+ 0x1628E42,
+ 0x168D09C,
+ 0x16F12BE,
+ 0x17554A8,
+ 0x17B9658,
+ 0x181D7CD,
+ 0x1881907,
+ 0x18E5A04,
+ 0x1949AC4,
+ 0x19ADB46,
+ 0x1A11B88,
+ 0x1A75B8A,
+ 0x1AD9B4B,
+ 0x1B3DAC9,
+ 0x1BA1A04,
+ 0x1C058FB,
+ 0x1C697AD,
+ 0x1CCD619,
+ 0x1D3143D,
+ 0x1D9521A,
+ 0x1DF8FAE,
+ 0x1E5CCF7,
+ 0x1EC09F6,
+ 0x1F246A9,
+ 0x1F8830F,
+ 0x1FEBF27,
+ 0x204FAF1,
+ 0x20B366B,
+ 0x2117194,
+ 0x217AC6B,
+ 0x21DE6F0,
+ 0x2242121,
+ 0x22A5AFE,
+ 0x2309485,
+ 0x236CDB6,
+ 0x23D0690,
+ 0x2433F11,
+ 0x2497738,
+ 0x24FAF06,
+ 0x255E678,
+ 0x25C1D8E,
+ 0x2625447,
+ 0x2688AA1,
+ 0x26EC09D,
+ 0x274F638,
+ 0x27B2B73,
+ 0x281604C,
+ 0x28794C1,
+ 0x28DC8D3,
+ 0x293FC80,
+ 0x29A2FC7,
+ 0x2A062A8,
+ 0x2A69521,
+ 0x2ACC731,
+ 0x2B2F8D8,
+ 0x2B92A14,
+ 0x2BF5AE4,
+ 0x2C58B48,
+ 0x2CBBB3F,
+ 0x2D1EAC7,
+ 0x2D819E0,
+ 0x2DE4889,
+ 0x2E476C0,
+ 0x2EAA485,
+ 0x2F0D1D7,
+ 0x2F6FEB5,
+ 0x2FD2B1E,
+ 0x3035711,
+ 0x309828D,
+ 0x30FAD91,
+ 0x315D81C,
+ 0x31C022E,
+ 0x3222BC4,
+ 0x32854DF,
+ 0x32E7D7E,
+ 0x334A59E,
+ 0x33ACD41,
+ 0x340F463,
+ 0x3471B05,
+ 0x34D4126,
+ 0x35366C5,
+ 0x3598BE0,
+ 0x35FB077,
+ 0x365D488,
+ 0x36BF814,
+ 0x3721B18,
+ 0x3783D95,
+ 0x37E5F88,
+ 0x38480F2,
+ 0x38AA1D1,
+ 0x390C223,
+ 0x396E1EA,
+ 0x39D0122,
+ 0x3A31FCC,
+ 0x3A93DE6,
+ 0x3AF5B70,
+ 0x3B57868,
+ 0x3BB94CD,
+ 0x3C1B0A0,
+ 0x3C7CBDE,
+ 0x3CDE687,
+ 0x3D40099,
+ 0x3DA1A15,
+ 0x3E032F8,
+ 0x3E64B43,
+ 0x3EC62F3,
+ 0x3F27A09,
+ 0x3F89083,
+ 0x3FEA660,
+ 0x404BB9F,
+ 0x40AD03F,
+ 0x410E441,
+ 0x416F7A1,
+ 0x41D0A60,
+ 0x4231C7D,
+ 0x4292DF6,
+ 0x42F3ECB,
+ 0x4354EFB,
+ 0x43B5E85,
+ 0x4416D68,
+ 0x4477BA2,
+ 0x44D8934,
+ 0x453961C,
+ 0x459A259,
+ 0x45FADEB,
+ 0x465B8CF,
+ 0x46BC306,
+ 0x471CC8F,
+ 0x477D568,
+ 0x47DDD91,
+ 0x483E508,
+ 0x489EBCD,
+ 0x48FF1DF,
+ 0x495F73D,
+ 0x49BFBE6,
+ 0x4A1FFD8,
+ 0x4A80314,
+ 0x4AE0598,
+ 0x4B40764,
+ 0x4BA0875,
+ 0x4C008CD,
+ 0x4C60868,
+ 0x4CC0747,
+ 0x4D20569,
+ 0x4D802CC,
+ 0x4DDFF70,
+ 0x4E3FB54,
+ 0x4E9F677,
+ 0x4EFF0D8,
+ 0x4F5EA76,
+ 0x4FBE351,
+ 0x501DB66,
+ 0x507D2B6,
+ 0x50DC93F,
+ 0x513BF01,
+ 0x519B3FA,
+ 0x51FA82A,
+ 0x5259B8F,
+ 0x52B8E2A,
+ 0x5317FF8,
+ 0x53770F9,
+ 0x53D612D,
+ 0x5435091,
+ 0x5493F26,
+ 0x54F2CEA,
+ 0x55519DC,
+ 0x55B05FC,
+ 0x560F149,
+ 0x566DBC1,
+ 0x56CC564,
+ 0x572AE30,
+ 0x5789626,
+ 0x57E7D44,
+ 0x5846388,
+ 0x58A48F3,
+ 0x5902D84,
+ 0x5961138,
+ 0x59BF410,
+ 0x5A1D60B,
+ 0x5A7B727,
+ 0x5AD9764,
+ 0x5B376C1,
+ 0x5B9553D,
+ 0x5BF32D6,
+ 0x5C50F8D,
+ 0x5CAEB60,
+ 0x5D0C64F,
+ 0x5D6A058,
+ 0x5DC797A,
+ 0x5E251B5,
+ 0x5E82908,
+ 0x5EDFF71,
+ 0x5F3D4F1,
+ 0x5F9A985,
+ 0x5FF7D2E,
+ 0x6054FE9,
+ 0x60B21B8,
+ 0x610F297,
+ 0x616C287,
+ 0x61C9187,
+ 0x6225F95,
+ 0x6282CB1,
+ 0x62DF8DA,
+ 0x633C40F,
+ 0x6398E4F,
+ 0x63F579A,
+ 0x6451FEE,
+ 0x64AE74A,
+ 0x650ADAE,
+ 0x6567319,
+ 0x65C3789,
+ 0x661FAFE,
+ 0x667BD78,
+ 0x66D7EF4,
+ 0x6733F73,
+ 0x678FEF3,
+ 0x67EBD74,
+ 0x6847AF4,
+ 0x68A3772,
+ 0x68FF2EF,
+ 0x695AD69,
+ 0x69B66DE,
+ 0x6A11F4F,
+ 0x6A6D6BA,
+ 0x6AC8D1F,
+ 0x6B2427C,
+ 0x6B7F6D0,
+ 0x6BDAA1C,
+ 0x6C35C5D,
+ 0x6C90D93,
+ 0x6CEBDBE,
+ 0x6D46CDB,
+ 0x6DA1AEB,
+ 0x6DFC7ED,
+ 0x6E573DF,
+ 0x6EB1EC1,
+ 0x6F0C891,
+ 0x6F67150,
+ 0x6FC18FC,
+ 0x701BF94,
+ 0x7076518,
+ 0x70D0986,
+ 0x712ACDD,
+ 0x7184F1E,
+ 0x71DF046,
+ 0x7239055,
+ 0x7292F4B,
+ 0x72ECD26,
+ 0x73469E5,
+ 0x73A0588,
+ 0x73FA00D,
+ 0x7453975,
+ 0x74AD1BD,
+ 0x75068E6,
+ 0x755FEED,
+ 0x75B93D3,
+ 0x7612797,
+ 0x766BA37,
+ 0x76C4BB3,
+ 0x771DC0A,
+ 0x7776B3C,
+ 0x77CF946,
+ 0x7828629,
+ 0x78811E3,
+ 0x78D9C74,
+ 0x79325DB,
+ 0x798AE16,
+ 0x79E3526,
+ 0x7A3BB09,
+ 0x7A93FBF,
+ 0x7AEC346,
+ 0x7B4459E,
+ 0x7B9C6C5,
+ 0x7BF46BC,
+ 0x7C4C581,
+ 0x7CA4313,
+ 0x7CFBF71,
+ 0x7D53A9B,
+ 0x7DAB490,
+ 0x7E02D4F,
+ 0x7E5A4D7,
+ 0x7EB1B27,
+ 0x7F0903F,
+ 0x7F6041D,
+ 0x7FB76C0,
+ 0x800E829,
+ 0x8065856,
+ 0x80BC746,
+ 0x81134F8,
+ 0x816A16C,
+ 0x81C0CA0,
+ 0x8217694,
+ 0x826DF48,
+ 0x82C46B9,
+ 0x831ACE8,
+ 0x83711D3,
+ 0x83C757A,
+ 0x841D7DC,
+ 0x84738F8,
+ 0x84C98CD,
+ 0x851F75B,
+ 0x85754A0,
+ 0x85CB09B,
+ 0x8620B4D,
+ 0x86764B4,
+ 0x86CBCCE,
+ 0x872139D,
+ 0x877691D,
+ 0x87CBD50,
+ 0x8821034,
+ 0x88761C7,
+ 0x88CB20A,
+ 0x89200FC,
+ 0x8974E9B,
+ 0x89C9AE7,
+ 0x8A1E5DE,
+ 0x8A72F82,
+ 0x8AC77CF,
+ 0x8B1BEC6,
+ 0x8B70466,
+ 0x8BC48AE,
+ 0x8C18B9D,
+ 0x8C6CD32,
+ 0x8CC0D6D,
+ 0x8D14C4C,
+ 0x8D689D0,
+ 0x8DBC5F6,
+ 0x8E100BF,
+ 0x8E63A29,
+ 0x8EB7234,
+ 0x8F0A8DF,
+ 0x8F5DE29,
+ 0x8FB1211,
+ 0x9004496,
+ 0x90575B9,
+ 0x90AA577,
+ 0x90FD3D0,
+ 0x91500C3,
+ 0x91A2C50,
+ 0x91F5675,
+ 0x9247F33,
+ 0x929A687,
+ 0x92ECC72,
+ 0x933F0F2,
+ 0x9391407,
+ 0x93E35AF,
+ 0x94355EB,
+ 0x94874B9,
+ 0x94D9219,
+ 0x952AE09,
+ 0x957C88A,
+ 0x95CE199,
+ 0x961F937,
+ 0x9670F62,
+ 0x96C241B,
+ 0x971375F,
+ 0x976492E,
+ 0x97B5988,
+ 0x980686C,
+ 0x98575D8,
+ 0x98A81CD,
+ 0x98F8C49,
+ 0x994954C,
+ 0x9999CD4,
+ 0x99EA2E1,
+ 0x9A3A773,
+ 0x9A8AA88,
+ 0x9ADAC1F,
+ 0x9B2AC39,
+ 0x9B7AAD4,
+ 0x9BCA7EF,
+ 0x9C1A389,
+ 0x9C69DA3,
+ 0x9CB963A,
+ 0x9D08D4F,
+ 0x9D582E1,
+ 0x9DA76EE,
+ 0x9DF6976,
+ 0x9E45A79,
+ 0x9E949F5,
+ 0x9EE37E9,
+ 0x9F32456,
+ 0x9F80F3A,
+ 0x9FCF894,
+ 0xA01E064,
+ 0xA06C6A9,
+ 0xA0BAB62,
+ 0xA108E8E,
+ 0xA15702D,
+ 0xA1A503E,
+ 0xA1F2EC0,
+ 0xA240BB3,
+ 0xA28E715,
+ 0xA2DC0E6,
+ 0xA329925,
+ 0xA376FD2,
+ 0xA3C44EC,
+ 0xA411871,
+ 0xA45EA61,
+ 0xA4ABABC,
+ 0xA4F8981,
+ 0xA5456AE,
+ 0xA592244,
+ 0xA5DEC41,
+ 0xA62B4A5,
+ 0xA677B6F,
+ 0xA6C409E,
+ 0xA710432,
+ 0xA75C62A,
+ 0xA7A8684,
+ 0xA7F4541,
+ 0xA840260,
+ 0xA88BDDF,
+ 0xA8D77BE,
+ 0xA922FFD,
+ 0xA96E69B,
+ 0xA9B9B96,
+ 0xAA04EEF,
+ 0xAA500A4,
+ 0xAA9B0B5,
+ 0xAAE5F21,
+ 0xAB30BE8,
+ 0xAB7B707,
+ 0xABC6080,
+ 0xAC10851,
+ 0xAC5AE7A,
+ 0xACA52F9,
+ 0xACEF5CE,
+ 0xAD396F9,
+ 0xAD83678,
+ 0xADCD44B,
+ 0xAE17071,
+ 0xAE60AE9,
+ 0xAEAA3B4,
+ 0xAEF3ACF,
+ 0xAF3D03B,
+ 0xAF863F6,
+ 0xAFCF600,
+ 0xB018658,
+ 0xB0614FE,
+ 0xB0AA1F1,
+ 0xB0F2D30,
+ 0xB13B6BA,
+ 0xB183E8F,
+ 0xB1CC4AE,
+ 0xB214916,
+ 0xB25CBC7,
+ 0xB2A4CC0,
+ 0xB2ECBFF,
+ 0xB334986,
+ 0xB37C552,
+ 0xB3C3F64,
+ 0xB40B7B9,
+ 0xB452E53,
+ 0xB49A330,
+ 0xB4E164F,
+ 0xB5287AF,
+ 0xB56F751,
+ 0xB5B6533,
+ 0xB5FD155,
+ 0xB643BB6,
+ 0xB68A455,
+ 0xB6D0B31,
+ 0xB71704B,
+ 0xB75D3A0,
+ 0xB7A3532,
+ 0xB7E94FE,
+ 0xB82F304,
+ 0xB874F44,
+ 0xB8BA9BD,
+ 0xB90026E,
+ 0xB945957,
+ 0xB98AE76,
+ 0xB9D01CC,
+ 0xBA15357,
+ 0xBA5A317,
+ 0xBA9F10B,
+ 0xBAE3D33,
+ 0xBB2878D,
+ 0xBB6D01A,
+ 0xBBB16D9,
+ 0xBBF5BC8,
+ 0xBC39EE7,
+ 0xBC7E036,
+ 0xBCC1FB4,
+ 0xBD05D60,
+ 0xBD4993A,
+ 0xBD8D341,
+ 0xBDD0B74,
+ 0xBE141D3,
+ 0xBE5765C,
+ 0xBE9A910,
+ 0xBEDD9EE,
+ 0xBF208F5,
+ 0xBF63624,
+ 0xBFA617B,
+ 0xBFE8AF9,
+ 0xC02B29E,
+ 0xC06D868,
+ 0xC0AFC58,
+ 0xC0F1E6C,
+ 0xC133EA4,
+ 0xC175D00,
+ 0xC1B797E,
+ 0xC1F941E,
+ 0xC23ACDF,
+ 0xC27C3C2,
+ 0xC2BD8C4,
+ 0xC2FEBE6,
+ 0xC33FD27,
+ 0xC380C86,
+ 0xC3C1A02,
+ 0xC40259C,
+ 0xC442F52,
+ 0xC483724,
+ 0xC4C3D10,
+ 0xC504118,
+ 0xC544339,
+ 0xC584373,
+ 0xC5C41C7,
+ 0xC603E32,
+ 0xC6438B4,
+ 0xC68314E,
+ 0xC6C27FD,
+ 0xC701CC2,
+ 0xC740F9D,
+ 0xC78008B,
+ 0xC7BEF8D,
+ 0xC7FDCA3,
+ 0xC83C7CB,
+ 0xC87B104,
+ 0xC8B9850,
+ 0xC8F7DAC,
+ 0xC936118,
+ 0xC974293,
+ 0xC9B221E,
+ 0xC9EFFB7,
+ 0xCA2DB5D,
+ 0xCA6B511,
+ 0xCAA8CD1,
+ 0xCAE629E,
+ 0xCB23675,
+ 0xCB60858,
+ 0xCB9D844,
+ 0xCBDA63A,
+ 0xCC1723A,
+ 0xCC53C41,
+ 0xCC90451,
+ 0xCCCCA67,
+ 0xCD08E85,
+ 0xCD450A8,
+ 0xCD810D1,
+ 0xCDBCEFF,
+ 0xCDF8B32,
+ 0xCE34568,
+ 0xCE6FDA1,
+ 0xCEAB3DD,
+ 0xCEE681B,
+ 0xCF21A5A,
+ 0xCF5CA9B,
+ 0xCF978DC,
+ 0xCFD251C,
+ 0xD00CF5C,
+ 0xD04779A,
+ 0xD081DD7,
+ 0xD0BC211,
+ 0xD0F6448,
+ 0xD13047C,
+ 0xD16A2AB,
+ 0xD1A3ED5,
+ 0xD1DD8FB,
+ 0xD21711A,
+ 0xD250733,
+ 0xD289B46,
+ 0xD2C2D50,
+ 0xD2FBD53,
+ 0xD334B4D,
+ 0xD36D73E,
+ 0xD3A6125,
+ 0xD3DE902,
+ 0xD416ED5,
+ 0xD44F29C,
+ 0xD487457,
+ 0xD4BF406,
+ 0xD4F71A7,
+ 0xD52ED3C,
+ 0xD5666C2,
+ 0xD59DE3A,
+ 0xD5D53A3,
+ 0xD60C6FC,
+ 0xD643845,
+ 0xD67A77D,
+ 0xD6B14A4,
+ 0xD6E7FB9,
+ 0xD71E8BC,
+ 0xD754FAD,
+ 0xD78B48A,
+ 0xD7C1753,
+ 0xD7F7808,
+ 0xD82D6A8,
+ 0xD863332,
+ 0xD898DA7,
+ 0xD8CE605,
+ 0xD903C4C,
+ 0xD93907C,
+ 0xD96E294,
+ 0xD9A3293,
+ 0xD9D8079,
+ 0xDA0CC46,
+ 0xDA415F9,
+ 0xDA75D91,
+ 0xDAAA30E,
+ 0xDADE670,
+ 0xDB127B6,
+ 0xDB466DF,
+ 0xDB7A3EB,
+ 0xDBADEDA,
+ 0xDBE17AA,
+ 0xDC14E5C,
+ 0xDC482EF,
+ 0xDC7B562,
+ 0xDCAE5B6,
+ 0xDCE13E9,
+ 0xDD13FFB,
+ 0xDD469EB,
+ 0xDD791B9,
+ 0xDDAB765,
+ 0xDDDDAEE,
+ 0xDE0FC54,
+ 0xDE41B96,
+ 0xDE738B3,
+ 0xDEA53AB,
+ 0xDED6C7E,
+ 0xDF0832C,
+ 0xDF397B3,
+ 0xDF6AA13,
+ 0xDF9BA4C,
+ 0xDFCC85D,
+ 0xDFFD446,
+ 0xE02DE06,
+ 0xE05E59D,
+ 0xE08EB0A,
+ 0xE0BEE4E,
+ 0xE0EEF67,
+ 0xE11EE55,
+ 0xE14EB17,
+ 0xE17E5AE,
+ 0xE1ADE18,
+ 0xE1DD455,
+ 0xE20C865,
+ 0xE23BA47,
+ 0xE26A9FB,
+ 0xE299781,
+ 0xE2C82D7,
+ 0xE2F6BFE,
+ 0xE3252F4,
+ 0xE3537BB,
+ 0xE381A50,
+ 0xE3AFAB4,
+ 0xE3DD8E6,
+ 0xE40B4E6,
+ 0xE438EB3,
+ 0xE46664D,
+ 0xE493BB4,
+ 0xE4C0EE7,
+ 0xE4EDFE5,
+ 0xE51AEAE,
+ 0xE547B42,
+ 0xE5745A0,
+ 0xE5A0DC9,
+ 0xE5CD3BA,
+ 0xE5F9775,
+ 0xE6258F8,
+ 0xE651843,
+ 0xE67D556,
+ 0xE6A9030,
+ 0xE6D48D1,
+ 0xE6FFF39,
+ 0xE72B366,
+ 0xE75655A,
+ 0xE781512,
+ 0xE7AC28F,
+ 0xE7D6DD1,
+ 0xE8016D6,
+ 0xE82BD9F,
+ 0xE85622C,
+ 0xE88047B,
+ 0xE8AA48C,
+ 0xE8D425F,
+ 0xE8FDDF4,
+ 0xE92774A,
+ 0xE950E60,
+ 0xE97A337,
+ 0xE9A35CE,
+ 0xE9CC624,
+ 0xE9F5439,
+ 0xEA1E00E,
+ 0xEA469A0,
+ 0xEA6F0F0,
+ 0xEA975FE,
+ 0xEABF8CA,
+ 0xEAE7952,
+ 0xEB0F796,
+ 0xEB37396,
+ 0xEB5ED52,
+ 0xEB864C9,
+ 0xEBAD9FC,
+ 0xEBD4CE8,
+ 0xEBFBD8F,
+ 0xEC22BEF,
+ 0xEC49809,
+ 0xEC701DC,
+ 0xEC96967,
+ 0xECBCEAB,
+ 0xECE31A6,
+ 0xED09259,
+ 0xED2F0C3,
+ 0xED54CE4,
+ 0xED7A6BC,
+ 0xED9FE49,
+ 0xEDC538C,
+ 0xEDEA685,
+ 0xEE0F732,
+ 0xEE34594,
+ 0xEE591AA,
+ 0xEE7DB74,
+ 0xEEA22F2,
+ 0xEEC6823,
+ 0xEEEAB06,
+ 0xEF0EB9D,
+ 0xEF329E5,
+ 0xEF565DF,
+ 0xEF79F8B,
+ 0xEF9D6E7,
+ 0xEFC0BF5,
+ 0xEFE3EB3,
+ 0xF006F21,
+ 0xF029D3F,
+ 0xF04C90C,
+ 0xF06F288,
+ 0xF0919B3,
+ 0xF0B3E8D,
+ 0xF0D6114,
+ 0xF0F8149,
+ 0xF119F2C,
+ 0xF13BABC,
+ 0xF15D3F9,
+ 0xF17EAE2,
+ 0xF19FF77,
+ 0xF1C11B8,
+ 0xF1E21A4,
+ 0xF202F3C,
+ 0xF223A7F,
+ 0xF24436C,
+ 0xF264A03,
+ 0xF284E44,
+ 0xF2A502F,
+ 0xF2C4FC3,
+ 0xF2E4D01,
+ 0xF3047E6,
+ 0xF324075,
+ 0xF3436AB,
+ 0xF362A89,
+ 0xF381C0F,
+ 0xF3A0B3B,
+ 0xF3BF80F,
+ 0xF3DE289,
+ 0xF3FCAAA,
+ 0xF41B070,
+ 0xF4393DC,
+ 0xF4574EE,
+ 0xF4753A4,
+ 0xF493000,
+ 0xF4B0A00,
+ 0xF4CE1A4,
+ 0xF4EB6EC,
+ 0xF5089D8,
+ 0xF525A67,
+ 0xF54289A,
+ 0xF55F46F,
+ 0xF57BDE7,
+ 0xF598501,
+ 0xF5B49BD,
+ 0xF5D0C1B,
+ 0xF5ECC1A,
+ 0xF6089BB,
+ 0xF6244FD,
+ 0xF63FDDF,
+ 0xF65B461,
+ 0xF676884,
+ 0xF691A47,
+ 0xF6AC9A9,
+ 0xF6C76AA,
+ 0xF6E214B,
+ 0xF6FC98B,
+ 0xF716F69,
+ 0xF7312E5,
+ 0xF74B400,
+ 0xF7652B8,
+ 0xF77EF0E,
+ 0xF798901,
+ 0xF7B2092,
+ 0xF7CB5BF,
+ 0xF7E4888,
+ 0xF7FD8EF,
+ 0xF8166F1,
+ 0xF82F28F,
+ 0xF847BC9,
+ 0xF86029E,
+ 0xF87870E,
+ 0xF890919,
+ 0xF8A88BF,
+ 0xF8C05FF,
+ 0xF8D80DA,
+ 0xF8EF94E,
+ 0xF906F5D,
+ 0xF91E305,
+ 0xF935446,
+ 0xF94C320,
+ 0xF962F93,
+ 0xF97999F,
+ 0xF990144,
+ 0xF9A6680,
+ 0xF9BC955,
+ 0xF9D29C1,
+ 0xF9E87C5,
+ 0xF9FE360,
+ 0xFA13C93,
+ 0xFA2935C,
+ 0xFA3E7BC,
+ 0xFA539B3,
+ 0xFA68940,
+ 0xFA7D663,
+ 0xFA9211D,
+ 0xFAA696C,
+ 0xFABAF50,
+ 0xFACF2CA,
+ 0xFAE33D9,
+ 0xFAF727D,
+ 0xFB0AEB5,
+ 0xFB1E883,
+ 0xFB31FE4,
+ 0xFB454DA,
+ 0xFB58764,
+ 0xFB6B782,
+ 0xFB7E533,
+ 0xFB91078,
+ 0xFBA3950,
+ 0xFBB5FBB,
+ 0xFBC83B9,
+ 0xFBDA54A,
+ 0xFBEC46E,
+ 0xFBFE124,
+ 0xFC0FB6C,
+ 0xFC21346,
+ 0xFC328B2,
+ 0xFC43BB0,
+ 0xFC54C3F,
+ 0xFC65A60,
+ 0xFC76612,
+ 0xFC86F55,
+ 0xFC97629,
+ 0xFCA7A8D,
+ 0xFCB7C83,
+ 0xFCC7C08,
+ 0xFCD791F,
+ 0xFCE73C5,
+ 0xFCF6BFB,
+ 0xFD061C1,
+ 0xFD15517,
+ 0xFD245FC,
+ 0xFD33471,
+ 0xFD42074,
+ 0xFD50A07,
+ 0xFD5F129,
+ 0xFD6D5DA,
+ 0xFD7B81A,
+ 0xFD897E8,
+ 0xFD97544,
+ 0xFDA502F,
+ 0xFDB28A8,
+ 0xFDBFEAF,
+ 0xFDCD244,
+ 0xFDDA366,
+ 0xFDE7217,
+ 0xFDF3E54,
+ 0xFE00820,
+ 0xFE0CF78,
+ 0xFE1945E,
+ 0xFE256D0,
+ 0xFE316D0,
+ 0xFE3D45C,
+ 0xFE48F75,
+ 0xFE5481B,
+ 0xFE5FE4D,
+ 0xFE6B20C,
+ 0xFE76356,
+ 0xFE8122D,
+ 0xFE8BE90,
+ 0xFE9687F,
+ 0xFEA0FFA,
+ 0xFEAB500,
+ 0xFEB5792,
+ 0xFEBF7AF,
+ 0xFEC9558,
+ 0xFED308D,
+ 0xFEDC94C,
+ 0xFEE5F97,
+ 0xFEEF36D,
+ 0xFEF84CE,
+ 0xFF013B9,
+ 0xFF0A030,
+ 0xFF12A31,
+ 0xFF1B1BD,
+ 0xFF236D3,
+ 0xFF2B974,
+ 0xFF3399F,
+ 0xFF3B754,
+ 0xFF43294,
+ 0xFF4AB5E,
+ 0xFF521B2,
+ 0xFF59590,
+ 0xFF606F8,
+ 0xFF675EA,
+ 0xFF6E266,
+ 0xFF74C6B,
+ 0xFF7B3FA,
+ 0xFF81913,
+ 0xFF87BB5,
+ 0xFF8DBE1,
+ 0xFF93996,
+ 0xFF994D5,
+ 0xFF9ED9D,
+ 0xFFA43EE,
+ 0xFFA97C9,
+ 0xFFAE92D,
+ 0xFFB3819,
+ 0xFFB848F,
+ 0xFFBCE8E,
+ 0xFFC1616,
+ 0xFFC5B27,
+ 0xFFC9DC1,
+ 0xFFCDDE3,
+ 0xFFD1B8F,
+ 0xFFD56C3,
+ 0xFFD8F80,
+ 0xFFDC5C6,
+ 0xFFDF994,
+ 0xFFE2AEB,
+ 0xFFE59CB,
+ 0xFFE8633,
+ 0xFFEB024,
+ 0xFFED79E,
+ 0xFFEFCA0,
+ 0xFFF1F2A,
+ 0xFFF3F3D,
+ 0xFFF5CD9,
+ 0xFFF77FC,
+ 0xFFF90A9,
+ 0xFFFA6DD,
+ 0xFFFBA9B,
+ 0xFFFCBE0,
+ 0xFFFDAAE,
+ 0xFFFE704,
+ 0xFFFF0E3,
+ 0xFFFF84A,
+ 0xFFFFD39,
+ 0xFFFFFB1
+};
+
+real_t sine_long_960[] = {
+ 0x359DD,
+ 0xA0D97,
+ 0x10C14F,
+ 0x177504,
+ 0x1E28B5,
+ 0x24DC61,
+ 0x2B9006,
+ 0x3243A4,
+ 0x38F738,
+ 0x3FAAC3,
+ 0x465E43,
+ 0x4D11B6,
+ 0x53C51C,
+ 0x5A7873,
+ 0x612BBA,
+ 0x67DEF0,
+ 0x6E9214,
+ 0x754525,
+ 0x7BF821,
+ 0x82AB07,
+ 0x895DD6,
+ 0x90108E,
+ 0x96C32B,
+ 0x9D75AF,
+ 0xA42817,
+ 0xAADA62,
+ 0xB18C8F,
+ 0xB83E9D,
+ 0xBEF08A,
+ 0xC5A256,
+ 0xCC5400,
+ 0xD30585,
+ 0xD9B6E6,
+ 0xE06820,
+ 0xE71933,
+ 0xEDCA1D,
+ 0xF47ADE,
+ 0xFB2B74,
+ 0x101DBDD,
+ 0x1088C1A,
+ 0x10F3C28,
+ 0x115EC06,
+ 0x11C9BB4,
+ 0x1234B30,
+ 0x129FA78,
+ 0x130A98D,
+ 0x137586C,
+ 0x13E0714,
+ 0x144B584,
+ 0x14B63BC,
+ 0x15211B9,
+ 0x158BF7B,
+ 0x15F6D01,
+ 0x1661A49,
+ 0x16CC752,
+ 0x173741B,
+ 0x17A20A3,
+ 0x180CCE8,
+ 0x18778EA,
+ 0x18E24A7,
+ 0x194D01F,
+ 0x19B7B4F,
+ 0x1A22638,
+ 0x1A8D0D6,
+ 0x1AF7B2B,
+ 0x1B62533,
+ 0x1BCCEEF,
+ 0x1C3785D,
+ 0x1CA217B,
+ 0x1D0CA49,
+ 0x1D772C6,
+ 0x1DE1AF0,
+ 0x1E4C2C6,
+ 0x1EB6A47,
+ 0x1F21171,
+ 0x1F8B844,
+ 0x1FF5EBF,
+ 0x20604E0,
+ 0x20CAAA6,
+ 0x2135010,
+ 0x219F51D,
+ 0x22099CB,
+ 0x2273E1A,
+ 0x22DE208,
+ 0x2348595,
+ 0x23B28BE,
+ 0x241CB83,
+ 0x2486DE3,
+ 0x24F0FDC,
+ 0x255B16D,
+ 0x25C5295,
+ 0x262F354,
+ 0x26993A7,
+ 0x270338E,
+ 0x276D307,
+ 0x27D7212,
+ 0x28410AD,
+ 0x28AAED7,
+ 0x2914C8E,
+ 0x297E9D3,
+ 0x29E86A3,
+ 0x2A522FD,
+ 0x2ABBEE0,
+ 0x2B25A4C,
+ 0x2B8F53E,
+ 0x2BF8FB6,
+ 0x2C629B3,
+ 0x2CCC332,
+ 0x2D35C35,
+ 0x2D9F4B8,
+ 0x2E08CBB,
+ 0x2E7243D,
+ 0x2EDBB3D,
+ 0x2F451B9,
+ 0x2FAE7B0,
+ 0x3017D21,
+ 0x308120C,
+ 0x30EA66E,
+ 0x3153A47,
+ 0x31BCD96,
+ 0x3226058,
+ 0x328F28E,
+ 0x32F8437,
+ 0x3361550,
+ 0x33CA5D8,
+ 0x34335D0,
+ 0x349C535,
+ 0x3505406,
+ 0x356E242,
+ 0x35D6FE8,
+ 0x363FCF7,
+ 0x36A896E,
+ 0x371154C,
+ 0x377A08F,
+ 0x37E2B36,
+ 0x384B540,
+ 0x38B3EAC,
+ 0x391C779,
+ 0x3984FA6,
+ 0x39ED731,
+ 0x3A55E19,
+ 0x3ABE45E,
+ 0x3B269FE,
+ 0x3B8EEF8,
+ 0x3BF734A,
+ 0x3C5F6F4,
+ 0x3CC79F5,
+ 0x3D2FC4B,
+ 0x3D97DF6,
+ 0x3DFFEF3,
+ 0x3E67F43,
+ 0x3ECFEE3,
+ 0x3F37DD3,
+ 0x3F9FC11,
+ 0x400799D,
+ 0x406F675,
+ 0x40D7298,
+ 0x413EE05,
+ 0x41A68BB,
+ 0x420E2B8,
+ 0x4275BFD,
+ 0x42DD486,
+ 0x4344C54,
+ 0x43AC365,
+ 0x44139B8,
+ 0x447AF4C,
+ 0x44E2420,
+ 0x4549832,
+ 0x45B0B82,
+ 0x4617E0E,
+ 0x467EFD5,
+ 0x46E60D7,
+ 0x474D111,
+ 0x47B4084,
+ 0x481AF2D,
+ 0x4881D0B,
+ 0x48E8A1E,
+ 0x494F664,
+ 0x49B61DD,
+ 0x4A1CC86,
+ 0x4A83660,
+ 0x4AE9F68,
+ 0x4B5079E,
+ 0x4BB6F01,
+ 0x4C1D58F,
+ 0x4C83B47,
+ 0x4CEA029,
+ 0x4D50432,
+ 0x4DB6763,
+ 0x4E1C9B9,
+ 0x4E82B34,
+ 0x4EE8BD3,
+ 0x4F4EB94,
+ 0x4FB4A77,
+ 0x501A87A,
+ 0x508059C,
+ 0x50E61DB,
+ 0x514BD38,
+ 0x51B17B1,
+ 0x5217144,
+ 0x527C9F1,
+ 0x52E21B6,
+ 0x5347892,
+ 0x53ACE85,
+ 0x541238D,
+ 0x54777A9,
+ 0x54DCAD7,
+ 0x5541D18,
+ 0x55A6E69,
+ 0x560BECA,
+ 0x5670E39,
+ 0x56D5CB5,
+ 0x573AA3E,
+ 0x579F6D1,
+ 0x580426F,
+ 0x5868D16,
+ 0x58CD6C4,
+ 0x5931F79,
+ 0x5996734,
+ 0x59FADF3,
+ 0x5A5F3B6,
+ 0x5AC387B,
+ 0x5B27C41,
+ 0x5B8BF07,
+ 0x5BF00CC,
+ 0x5C54190,
+ 0x5CB814F,
+ 0x5D1C00B,
+ 0x5D7FDC1,
+ 0x5DE3A71,
+ 0x5E47619,
+ 0x5EAB0B9,
+ 0x5F0EA4E,
+ 0x5F722D9,
+ 0x5FD5A58,
+ 0x60390CA,
+ 0x609C62E,
+ 0x60FFA82,
+ 0x6162DC7,
+ 0x61C5FF9,
+ 0x622911A,
+ 0x628C126,
+ 0x62EF01F,
+ 0x6351E01,
+ 0x63B4ACC,
+ 0x6417680,
+ 0x647A11B,
+ 0x64DCA9B,
+ 0x653F301,
+ 0x65A1A4A,
+ 0x6604076,
+ 0x6666583,
+ 0x66C8971,
+ 0x672AC3F,
+ 0x678CDEA,
+ 0x67EEE73,
+ 0x6850DD9,
+ 0x68B2C19,
+ 0x6914934,
+ 0x6976527,
+ 0x69D7FF3,
+ 0x6A39995,
+ 0x6A9B20D,
+ 0x6AFC95A,
+ 0x6B5DF7B,
+ 0x6BBF46E,
+ 0x6C20832,
+ 0x6C81AC7,
+ 0x6CE2C2C,
+ 0x6D43C5F,
+ 0x6DA4B5F,
+ 0x6E0592B,
+ 0x6E665C2,
+ 0x6EC7123,
+ 0x6F27B4E,
+ 0x6F88440,
+ 0x6FE8BF9,
+ 0x7049279,
+ 0x70A97BC,
+ 0x7109BC4,
+ 0x7169E8E,
+ 0x71CA01A,
+ 0x722A066,
+ 0x7289F72,
+ 0x72E9D3D,
+ 0x73499C4,
+ 0x73A9508,
+ 0x7408F08,
+ 0x74687C1,
+ 0x74C7F34,
+ 0x752755F,
+ 0x7586A41,
+ 0x75E5DDA,
+ 0x7645027,
+ 0x76A4128,
+ 0x77030DC,
+ 0x7761F42,
+ 0x77C0C59,
+ 0x781F81F,
+ 0x787E295,
+ 0x78DCBB8,
+ 0x793B388,
+ 0x7999A03,
+ 0x79F7F29,
+ 0x7A562F9,
+ 0x7AB4571,
+ 0x7B12691,
+ 0x7B70658,
+ 0x7BCE4C3,
+ 0x7C2C1D3,
+ 0x7C89D87,
+ 0x7CE77DD,
+ 0x7D450D4,
+ 0x7DA286C,
+ 0x7DFFEA3,
+ 0x7E5D378,
+ 0x7EBA6EB,
+ 0x7F178F9,
+ 0x7F749A3,
+ 0x7FD18E7,
+ 0x802E6C5,
+ 0x808B33A,
+ 0x80E7E47,
+ 0x81447E9,
+ 0x81A1021,
+ 0x81FD6ED,
+ 0x8259C4C,
+ 0x82B603D,
+ 0x83122BF,
+ 0x836E3D1,
+ 0x83CA372,
+ 0x84261A1,
+ 0x8481E5D,
+ 0x84DD9A5,
+ 0x8539378,
+ 0x8594BD5,
+ 0x85F02BC,
+ 0x864B82A,
+ 0x86A6C1F,
+ 0x8701E9A,
+ 0x875CF9A,
+ 0x87B7F1E,
+ 0x8812D25,
+ 0x886D9AE,
+ 0x88C84B8,
+ 0x8922E42,
+ 0x897D64B,
+ 0x89D7CD2,
+ 0x8A321D6,
+ 0x8A8C556,
+ 0x8AE6752,
+ 0x8B407C7,
+ 0x8B9A6B5,
+ 0x8BF441B,
+ 0x8C4DFF9,
+ 0x8CA7A4C,
+ 0x8D01315,
+ 0x8D5AA52,
+ 0x8DB4002,
+ 0x8E0D424,
+ 0x8E666B8,
+ 0x8EBF7BB,
+ 0x8F1872E,
+ 0x8F71510,
+ 0x8FCA15E,
+ 0x9022C19,
+ 0x907B53F,
+ 0x90D3CD0,
+ 0x912C2CA,
+ 0x918472C,
+ 0x91DC9F6,
+ 0x9234B27,
+ 0x928CABD,
+ 0x92E48B7,
+ 0x933C516,
+ 0x9393FD6,
+ 0x93EB8F9,
+ 0x944307C,
+ 0x949A65F,
+ 0x94F1AA1,
+ 0x9548D41,
+ 0x959FE3E,
+ 0x95F6D96,
+ 0x964DB4A,
+ 0x96A4758,
+ 0x96FB1BE,
+ 0x9751A7D,
+ 0x97A8193,
+ 0x97FE700,
+ 0x9854AC1,
+ 0x98AACD7,
+ 0x9900D41,
+ 0x9956BFD,
+ 0x99AC90A,
+ 0x9A02468,
+ 0x9A57E15,
+ 0x9AAD612,
+ 0x9B02C5C,
+ 0x9B580F3,
+ 0x9BAD3D6,
+ 0x9C02503,
+ 0x9C5747B,
+ 0x9CAC23C,
+ 0x9D00E45,
+ 0x9D55895,
+ 0x9DAA12C,
+ 0x9DFE808,
+ 0x9E52D28,
+ 0x9EA708C,
+ 0x9EFB233,
+ 0x9F4F21B,
+ 0x9FA3044,
+ 0x9FF6CAD,
+ 0xA04A755,
+ 0xA09E03B,
+ 0xA0F175E,
+ 0xA144CBD,
+ 0xA198057,
+ 0xA1EB22C,
+ 0xA23E23A,
+ 0xA291080,
+ 0xA2E3CFF,
+ 0xA3367B4,
+ 0xA38909E,
+ 0xA3DB7BE,
+ 0xA42DD12,
+ 0xA480098,
+ 0xA4D2251,
+ 0xA52423C,
+ 0xA576056,
+ 0xA5C7CA0,
+ 0xA619719,
+ 0xA66AFBF,
+ 0xA6BC693,
+ 0xA70DB92,
+ 0xA75EEBC,
+ 0xA7B0010,
+ 0xA800F8E,
+ 0xA851D34,
+ 0xA8A2901,
+ 0xA8F32F5,
+ 0xA943B0E,
+ 0xA99414D,
+ 0xA9E45AF,
+ 0xAA34835,
+ 0xAA848DC,
+ 0xAAD47A5,
+ 0xAB2448E,
+ 0xAB73F97,
+ 0xABC38BF,
+ 0xAC13004,
+ 0xAC62566,
+ 0xACB18E5,
+ 0xAD00A7E,
+ 0xAD4FA32,
+ 0xAD9E7FF,
+ 0xADED3E5,
+ 0xAE3BDE3,
+ 0xAE8A5F7,
+ 0xAED8C22,
+ 0xAF27061,
+ 0xAF752B5,
+ 0xAFC331D,
+ 0xB011196,
+ 0xB05EE22,
+ 0xB0AC8BE,
+ 0xB0FA16B,
+ 0xB147827,
+ 0xB194CF1,
+ 0xB1E1FC8,
+ 0xB22F0AC,
+ 0xB27BF9C,
+ 0xB2C8C97,
+ 0xB31579B,
+ 0xB3620AA,
+ 0xB3AE7C0,
+ 0xB3FACDE,
+ 0xB447003,
+ 0xB49312E,
+ 0xB4DF05D,
+ 0xB52AD91,
+ 0xB5768C9,
+ 0xB5C2203,
+ 0xB60D93E,
+ 0xB658E7B,
+ 0xB6A41B8,
+ 0xB6EF2F4,
+ 0xB73A22E,
+ 0xB784F66,
+ 0xB7CFA9B,
+ 0xB81A3CC,
+ 0xB864AF8,
+ 0xB8AF01E,
+ 0xB8F933E,
+ 0xB943456,
+ 0xB98D367,
+ 0xB9D706E,
+ 0xBA20B6C,
+ 0xBA6A45F,
+ 0xBAB3B47,
+ 0xBAFD023,
+ 0xBB462F2,
+ 0xBB8F3B3,
+ 0xBBD8266,
+ 0xBC20F09,
+ 0xBC6999C,
+ 0xBCB221E,
+ 0xBCFA88F,
+ 0xBD42CED,
+ 0xBD8AF37,
+ 0xBDD2F6E,
+ 0xBE1AD8F,
+ 0xBE6299B,
+ 0xBEAA390,
+ 0xBEF1B6E,
+ 0xBF39135,
+ 0xBF804E2,
+ 0xBFC7675,
+ 0xC00E5EF,
+ 0xC05534D,
+ 0xC09BE8F,
+ 0xC0E27B4,
+ 0xC128EBC,
+ 0xC16F3A6,
+ 0xC1B5670,
+ 0xC1FB71B,
+ 0xC2415A5,
+ 0xC28720E,
+ 0xC2CCC55,
+ 0xC312479,
+ 0xC357A79,
+ 0xC39CE55,
+ 0xC3E200C,
+ 0xC426F9C,
+ 0xC46BD06,
+ 0xC4B0849,
+ 0xC4F5164,
+ 0xC539855,
+ 0xC57DD1D,
+ 0xC5C1FBB,
+ 0xC60602D,
+ 0xC649E73,
+ 0xC68DA8D,
+ 0xC6D1479,
+ 0xC714C37,
+ 0xC7581C7,
+ 0xC79B526,
+ 0xC7DE656,
+ 0xC821554,
+ 0xC864220,
+ 0xC8A6CBA,
+ 0xC8E9520,
+ 0xC92BB53,
+ 0xC96DF50,
+ 0xC9B0119,
+ 0xC9F20AB,
+ 0xCA33E06,
+ 0xCA75929,
+ 0xCAB7214,
+ 0xCAF88C6,
+ 0xCB39D3E,
+ 0xCB7AF7C,
+ 0xCBBBF7E,
+ 0xCBFCD44,
+ 0xCC3D8CE,
+ 0xCC7E21B,
+ 0xCCBE929,
+ 0xCCFEDF8,
+ 0xCD3F088,
+ 0xCD7F0D8,
+ 0xCDBEEE7,
+ 0xCDFEAB4,
+ 0xCE3E43F,
+ 0xCE7DB87,
+ 0xCEBD08B,
+ 0xCEFC34B,
+ 0xCF3B3C6,
+ 0xCF7A1FB,
+ 0xCFB8DEA,
+ 0xCFF7791,
+ 0xD035EF1,
+ 0xD074408,
+ 0xD0B26D6,
+ 0xD0F075A,
+ 0xD12E593,
+ 0xD16C181,
+ 0xD1A9B24,
+ 0xD1E7279,
+ 0xD224782,
+ 0xD261A3C,
+ 0xD29EAA8,
+ 0xD2DB8C5,
+ 0xD318491,
+ 0xD354E0D,
+ 0xD391538,
+ 0xD3CDA11,
+ 0xD409C97,
+ 0xD445CCA,
+ 0xD481AA8,
+ 0xD4BD633,
+ 0xD4F8F68,
+ 0xD534647,
+ 0xD56FAD0,
+ 0xD5AAD01,
+ 0xD5E5CDB,
+ 0xD620A5C,
+ 0xD65B584,
+ 0xD695E53,
+ 0xD6D04C6,
+ 0xD70A8DF,
+ 0xD744A9C,
+ 0xD77E9FD,
+ 0xD7B8701,
+ 0xD7F21A7,
+ 0xD82B9EF,
+ 0xD864FD8,
+ 0xD89E362,
+ 0xD8D748B,
+ 0xD910354,
+ 0xD948FBB,
+ 0xD9819C1,
+ 0xD9BA163,
+ 0xD9F26A3,
+ 0xDA2A97F,
+ 0xDA629F6,
+ 0xDA9A808,
+ 0xDAD23B4,
+ 0xDB09CFA,
+ 0xDB413DA,
+ 0xDB78851,
+ 0xDBAFA61,
+ 0xDBE6A07,
+ 0xDC1D745,
+ 0xDC54218,
+ 0xDC8AA81,
+ 0xDCC107F,
+ 0xDCF7411,
+ 0xDD2D537,
+ 0xDD633F0,
+ 0xDD9903B,
+ 0xDDCEA18,
+ 0xDE04187,
+ 0xDE39686,
+ 0xDE6E916,
+ 0xDEA3934,
+ 0xDED86E2,
+ 0xDF0D21F,
+ 0xDF41AE9,
+ 0xDF76140,
+ 0xDFAA524,
+ 0xDFDE694,
+ 0xE012590,
+ 0xE046217,
+ 0xE079C28,
+ 0xE0AD3C2,
+ 0xE0E08E6,
+ 0xE113B93,
+ 0xE146BC8,
+ 0xE179984,
+ 0xE1AC4C8,
+ 0xE1DED92,
+ 0xE2113E2,
+ 0xE2437B7,
+ 0xE275911,
+ 0xE2A77EF,
+ 0xE2D9451,
+ 0xE30AE36,
+ 0xE33C59E,
+ 0xE36DA87,
+ 0xE39ECF3,
+ 0xE3CFCDF,
+ 0xE400A4B,
+ 0xE431538,
+ 0xE461DA4,
+ 0xE49238F,
+ 0xE4C26F8,
+ 0xE4F27DF,
+ 0xE522643,
+ 0xE552224,
+ 0xE581B82,
+ 0xE5B125A,
+ 0xE5E06AE,
+ 0xE60F87D,
+ 0xE63E7C6,
+ 0xE66D488,
+ 0xE69BEC4,
+ 0xE6CA678,
+ 0xE6F8BA4,
+ 0xE726E48,
+ 0xE754E63,
+ 0xE782BF5,
+ 0xE7B06FC,
+ 0xE7DDF79,
+ 0xE80B56C,
+ 0xE8388D2,
+ 0xE8659AD,
+ 0xE8927FC,
+ 0xE8BF3BD,
+ 0xE8EBCF1,
+ 0xE918397,
+ 0xE9447AF,
+ 0xE970938,
+ 0xE99C832,
+ 0xE9C849C,
+ 0xE9F3E75,
+ 0xEA1F5BE,
+ 0xEA4AA75,
+ 0xEA75C9B,
+ 0xEAA0C2E,
+ 0xEACB92F,
+ 0xEAF639D,
+ 0xEB20B77,
+ 0xEB4B0BD,
+ 0xEB7536E,
+ 0xEB9F38B,
+ 0xEBC9111,
+ 0xEBF2C02,
+ 0xEC1C45D,
+ 0xEC45A21,
+ 0xEC6ED4D,
+ 0xEC97DE2,
+ 0xECC0BDE,
+ 0xECE9742,
+ 0xED1200D,
+ 0xED3A63E,
+ 0xED629D5,
+ 0xED8AAD2,
+ 0xEDB2934,
+ 0xEDDA4FB,
+ 0xEE01E25,
+ 0xEE294B4,
+ 0xEE508A6,
+ 0xEE779FB,
+ 0xEE9E8B3,
+ 0xEEC54CD,
+ 0xEEEBE48,
+ 0xEF12525,
+ 0xEF38962,
+ 0xEF5EB00,
+ 0xEF849FE,
+ 0xEFAA65C,
+ 0xEFD0018,
+ 0xEFF5734,
+ 0xF01ABAE,
+ 0xF03FD85,
+ 0xF064CBB,
+ 0xF08994D,
+ 0xF0AE33C,
+ 0xF0D2A88,
+ 0xF0F6F2F,
+ 0xF11B132,
+ 0xF13F090,
+ 0xF162D49,
+ 0xF18675C,
+ 0xF1A9EC9,
+ 0xF1CD390,
+ 0xF1F05AF,
+ 0xF213528,
+ 0xF2361F9,
+ 0xF258C22,
+ 0xF27B3A3,
+ 0xF29D87B,
+ 0xF2BFAAA,
+ 0xF2E1A2F,
+ 0xF30370B,
+ 0xF32513C,
+ 0xF3468C3,
+ 0xF367D9E,
+ 0xF388FCF,
+ 0xF3A9F54,
+ 0xF3CAC2C,
+ 0xF3EB658,
+ 0xF40BDD8,
+ 0xF42C2AA,
+ 0xF44C4CF,
+ 0xF46C446,
+ 0xF48C10F,
+ 0xF4ABB2A,
+ 0xF4CB295,
+ 0xF4EA751,
+ 0xF50995E,
+ 0xF5288BB,
+ 0xF547567,
+ 0xF565F63,
+ 0xF5846AE,
+ 0xF5A2B48,
+ 0xF5C0D30,
+ 0xF5DEC67,
+ 0xF5FC8EB,
+ 0xF61A2BC,
+ 0xF6379DB,
+ 0xF654E46,
+ 0xF671FFE,
+ 0xF68EF02,
+ 0xF6ABB52,
+ 0xF6C84ED,
+ 0xF6E4BD3,
+ 0xF701005,
+ 0xF71D181,
+ 0xF739047,
+ 0xF754C57,
+ 0xF7705B1,
+ 0xF78BC54,
+ 0xF7A7040,
+ 0xF7C2175,
+ 0xF7DCFF3,
+ 0xF7F7BB8,
+ 0xF8124C6,
+ 0xF82CB1B,
+ 0xF846EB7,
+ 0xF860F9A,
+ 0xF87ADC4,
+ 0xF894935,
+ 0xF8AE1EB,
+ 0xF8C77E8,
+ 0xF8E0B2A,
+ 0xF8F9BB1,
+ 0xF91297E,
+ 0xF92B48F,
+ 0xF943CE4,
+ 0xF95C27E,
+ 0xF97455C,
+ 0xF98C57E,
+ 0xF9A42E3,
+ 0xF9BBD8B,
+ 0xF9D3576,
+ 0xF9EAAA3,
+ 0xFA01D14,
+ 0xFA18CC6,
+ 0xFA2F9BA,
+ 0xFA463F0,
+ 0xFA5CB67,
+ 0xFA7301F,
+ 0xFA89218,
+ 0xFA9F152,
+ 0xFAB4DCC,
+ 0xFACA787,
+ 0xFADFE81,
+ 0xFAF52BB,
+ 0xFB0A435,
+ 0xFB1F2EE,
+ 0xFB33EE6,
+ 0xFB4881C,
+ 0xFB5CE91,
+ 0xFB71245,
+ 0xFB85337,
+ 0xFB99166,
+ 0xFBACCD3,
+ 0xFBC057E,
+ 0xFBD3B66,
+ 0xFBE6E8B,
+ 0xFBF9EEC,
+ 0xFC0CC8B,
+ 0xFC1F766,
+ 0xFC31F7D,
+ 0xFC444CF,
+ 0xFC5675E,
+ 0xFC68729,
+ 0xFC7A42E,
+ 0xFC8BE6F,
+ 0xFC9D5EB,
+ 0xFCAEAA2,
+ 0xFCBFC94,
+ 0xFCD0BBF,
+ 0xFCE1826,
+ 0xFCF21C6,
+ 0xFD028A0,
+ 0xFD12CB4,
+ 0xFD22E01,
+ 0xFD32C88,
+ 0xFD42848,
+ 0xFD52141,
+ 0xFD61772,
+ 0xFD70ADD,
+ 0xFD7FB80,
+ 0xFD8E95B,
+ 0xFD9D46E,
+ 0xFDABCBA,
+ 0xFDBA23D,
+ 0xFDC84F8,
+ 0xFDD64EB,
+ 0xFDE4214,
+ 0xFDF1C76,
+ 0xFDFF40E,
+ 0xFE0C8DD,
+ 0xFE19AE3,
+ 0xFE26A20,
+ 0xFE33693,
+ 0xFE4003C,
+ 0xFE4C71C,
+ 0xFE58B32,
+ 0xFE64C7E,
+ 0xFE70AFF,
+ 0xFE7C6B7,
+ 0xFE87FA4,
+ 0xFE935C6,
+ 0xFE9E91E,
+ 0xFEA99AA,
+ 0xFEB476C,
+ 0xFEBF263,
+ 0xFEC9A8F,
+ 0xFED3FEF,
+ 0xFEDE284,
+ 0xFEE824E,
+ 0xFEF1F4C,
+ 0xFEFB97E,
+ 0xFF050E4,
+ 0xFF0E57F,
+ 0xFF1774D,
+ 0xFF2064F,
+ 0xFF29286,
+ 0xFF31BEF,
+ 0xFF3A28D,
+ 0xFF4265D,
+ 0xFF4A761,
+ 0xFF52599,
+ 0xFF5A104,
+ 0xFF619A2,
+ 0xFF68F72,
+ 0xFF70276,
+ 0xFF772AD,
+ 0xFF7E017,
+ 0xFF84AB3,
+ 0xFF8B282,
+ 0xFF91784,
+ 0xFF979B8,
+ 0xFF9D91E,
+ 0xFFA35B7,
+ 0xFFA8F83,
+ 0xFFAE680,
+ 0xFFB3AB0,
+ 0xFFB8C12,
+ 0xFFBDAA6,
+ 0xFFC266C,
+ 0xFFC6F64,
+ 0xFFCB58E,
+ 0xFFCF8EA,
+ 0xFFD3978,
+ 0xFFD7738,
+ 0xFFDB229,
+ 0xFFDEA4C,
+ 0xFFE1FA1,
+ 0xFFE5227,
+ 0xFFE81DF,
+ 0xFFEAEC9,
+ 0xFFED8E4,
+ 0xFFF0030,
+ 0xFFF24AF,
+ 0xFFF465E,
+ 0xFFF653F,
+ 0xFFF8152,
+ 0xFFF9A96,
+ 0xFFFB10B,
+ 0xFFFC4B2,
+ 0xFFFD58A,
+ 0xFFFE393,
+ 0xFFFEECE,
+ 0xFFFF73A,
+ 0xFFFFCD7,
+ 0xFFFFFA6
+};
+
+real_t sine_short_128[] =
+{
+ 0x1921F1,
+ 0x4B64DB,
+ 0x7DA4DD,
+ 0xAFE006,
+ 0xE21468,
+ 0x1144013,
+ 0x1466118,
+ 0x1787587,
+ 0x1AA7B73,
+ 0x1DC70ED,
+ 0x20E5409,
+ 0x24022DB,
+ 0x271DB77,
+ 0x2A37BF1,
+ 0x2D50261,
+ 0x3066CDE,
+ 0x337B97F,
+ 0x368E65F,
+ 0x399F198,
+ 0x3CAD945,
+ 0x3FB9B85,
+ 0x42C3675,
+ 0x45CA837,
+ 0x48CEEED,
+ 0x4BD08B8,
+ 0x4ECF3C0,
+ 0x51CAE2B,
+ 0x54C3622,
+ 0x57B89D0,
+ 0x5AAA761,
+ 0x5D98D06,
+ 0x60838EE,
+ 0x636A94E,
+ 0x664DC5B,
+ 0x692D04C,
+ 0x6C0835E,
+ 0x6EDF3CB,
+ 0x71B1FD5,
+ 0x74805BD,
+ 0x774A3C8,
+ 0x7A0F83E,
+ 0x7CD0168,
+ 0x7F8BD96,
+ 0x8242B16,
+ 0x84F483D,
+ 0x87A1361,
+ 0x8A48ADB,
+ 0x8CEAD08,
+ 0x8F87849,
+ 0x921EB01,
+ 0x94B0397,
+ 0x973C075,
+ 0x99C200A,
+ 0x9C420C6,
+ 0x9EBC120,
+ 0xA12FF8F,
+ 0xA39DA91,
+ 0xA6050A6,
+ 0xA866053,
+ 0xAAC0820,
+ 0xAD14699,
+ 0xAF61A4E,
+ 0xB1A81D5,
+ 0xB3E7BC6,
+ 0xB6206BE,
+ 0xB85215D,
+ 0xBA7CA4B,
+ 0xBCA002F,
+ 0xBEBC1BA,
+ 0xC0D0D9E,
+ 0xC2DE291,
+ 0xC4E3F51,
+ 0xC6E229D,
+ 0xC8D8B3C,
+ 0xCAC77F6,
+ 0xCCAE79B,
+ 0xCE8D8FF,
+ 0xD064AF9,
+ 0xD233C68,
+ 0xD3FAC2D,
+ 0xD5B9930,
+ 0xD77025E,
+ 0xD91E6A7,
+ 0xDAC4503,
+ 0xDC61C6D,
+ 0xDDF6BE6,
+ 0xDF83274,
+ 0xE106F23,
+ 0xE282104,
+ 0xE3F472C,
+ 0xE55E0B8,
+ 0xE6BECC8,
+ 0xE816A82,
+ 0xE965913,
+ 0xEAAB7AC,
+ 0xEBE8584,
+ 0xED1C1D8,
+ 0xEE46BE8,
+ 0xEF682FF,
+ 0xF080668,
+ 0xF18F577,
+ 0xF294F85,
+ 0xF3913F0,
+ 0xF48421D,
+ 0xF56D977,
+ 0xF64D96C,
+ 0xF724173,
+ 0xF7F1108,
+ 0xF8B47AC,
+ 0xF96E4E6,
+ 0xFA1E845,
+ 0xFAC515A,
+ 0xFB61FC0,
+ 0xFBF5316,
+ 0xFC7EB01,
+ 0xFCFE72C,
+ 0xFD74748,
+ 0xFDE0B0D,
+ 0xFE43237,
+ 0xFE9BC8B,
+ 0xFEEA9D0,
+ 0xFF2F9D8,
+ 0xFF6AC77,
+ 0xFF9C188,
+ 0xFFC38ED,
+ 0xFFE128F,
+ 0xFFF4E5A,
+ 0xFFFEC42
+};
+
+real_t sine_short_120[] =
+{
+ 0x1ACEDD,
+ 0x506B6B,
+ 0x860472,
+ 0xBB9798,
+ 0xF12283,
+ 0x126A2DB,
+ 0x15C1646,
+ 0x1917A6C,
+ 0x1C6CCF6,
+ 0x1FC0B8D,
+ 0x23133DB,
+ 0x266438B,
+ 0x29B3849,
+ 0x2D00FC3,
+ 0x304C7A8,
+ 0x3395DA6,
+ 0x36DCF70,
+ 0x3A21AB9,
+ 0x3D63D36,
+ 0x40A349D,
+ 0x43DFEA6,
+ 0x471990D,
+ 0x4A5018D,
+ 0x4D835E6,
+ 0x50B33D8,
+ 0x53DF927,
+ 0x5708398,
+ 0x5A2D0F4,
+ 0x5D4DF07,
+ 0x606AB9E,
+ 0x638348A,
+ 0x669779E,
+ 0x69A72B2,
+ 0x6CB23A0,
+ 0x6FB8844,
+ 0x72B9E80,
+ 0x75B6437,
+ 0x78AD751,
+ 0x7B9F5B9,
+ 0x7E8BD5E,
+ 0x8172C33,
+ 0x845402D,
+ 0x872F749,
+ 0x8A04F85,
+ 0x8CD46E2,
+ 0x8F9DB69,
+ 0x9260B25,
+ 0x951D425,
+ 0x97D347F,
+ 0x9A82A4A,
+ 0x9D2B3A4,
+ 0x9FCCEB1,
+ 0xA267996,
+ 0xA4FB280,
+ 0xA7877A1,
+ 0xAA0C72E,
+ 0xAC89F62,
+ 0xAEFFE7F,
+ 0xB16E2CA,
+ 0xB3D4A8E,
+ 0xB63341D,
+ 0xB889DCC,
+ 0xBAD85F7,
+ 0xBD1EB00,
+ 0xBF5CB4E,
+ 0xC19254F,
+ 0xC3BF775,
+ 0xC5E4039,
+ 0xC7FFE1B,
+ 0xCA12F9F,
+ 0xCC1D351,
+ 0xCE1E7C2,
+ 0xD016B8A,
+ 0xD205D47,
+ 0xD3EBB9E,
+ 0xD5C8539,
+ 0xD79B8CB,
+ 0xD96550A,
+ 0xDB258B7,
+ 0xDCDC296,
+ 0xDE89173,
+ 0xE02C422,
+ 0xE1C597C,
+ 0xE355062,
+ 0xE4DA7BC,
+ 0xE655E78,
+ 0xE7C738C,
+ 0xE92E5F5,
+ 0xEA8B4B7,
+ 0xEBDDEDD,
+ 0xED26379,
+ 0xEE641A4,
+ 0xEF97881,
+ 0xF0C0736,
+ 0xF1DECF4,
+ 0xF2F28F2,
+ 0xF3FBA6E,
+ 0xF4FA0AE,
+ 0xF5EDAFF,
+ 0xF6D68B7,
+ 0xF7B4932,
+ 0xF887BD4,
+ 0xF950009,
+ 0xFA0D544,
+ 0xFABFB02,
+ 0xFB670C3,
+ 0xFC03614,
+ 0xFC94A86,
+ 0xFD1ADB3,
+ 0xFD95F3E,
+ 0xFE05ECF,
+ 0xFE6AC18,
+ 0xFEC46D2,
+ 0xFF12EC0,
+ 0xFF563A8,
+ 0xFF8E55C,
+ 0xFFBB3B6,
+ 0xFFDCE94,
+ 0xFFF35E0,
+ 0xFFFE98A
+};
+
+#ifdef LD_DEC
+real_t sine_mid_512[] =
+{
+ 0x6487E,
+ 0x12D978,
+ 0x1F6A66,
+ 0x2BFB40,
+ 0x388BFF,
+ 0x451C9C,
+ 0x51AD0E,
+ 0x5E3D4D,
+ 0x6ACD52,
+ 0x775D16,
+ 0x83EC90,
+ 0x907BB8,
+ 0x9D0A87,
+ 0xA998F6,
+ 0xB626FC,
+ 0xC2B491,
+ 0xCF41AF,
+ 0xDBCE4C,
+ 0xE85A62,
+ 0xF4E5E9,
+ 0x10170D8,
+ 0x10DFB29,
+ 0x11A84D3,
+ 0x1270DCF,
+ 0x1339615,
+ 0x1401D9D,
+ 0x14CA460,
+ 0x1592A55,
+ 0x165AF76,
+ 0x17233BA,
+ 0x17EB71A,
+ 0x18B398D,
+ 0x197BB0D,
+ 0x1A43B91,
+ 0x1B0BB12,
+ 0x1BD3988,
+ 0x1C9B6EC,
+ 0x1D63335,
+ 0x1E2AE5C,
+ 0x1EF2859,
+ 0x1FBA125,
+ 0x20818B8,
+ 0x2148F0A,
+ 0x2210413,
+ 0x22D77CC,
+ 0x239EA2E,
+ 0x2465B30,
+ 0x252CACA,
+ 0x25F38F6,
+ 0x26BA5AB,
+ 0x27810E2,
+ 0x2847A93,
+ 0x290E2B6,
+ 0x29D4945,
+ 0x2A9AE36,
+ 0x2B61183,
+ 0x2C27324,
+ 0x2CED311,
+ 0x2DB3142,
+ 0x2E78DB1,
+ 0x2F3E855,
+ 0x3004126,
+ 0x30C981E,
+ 0x318ED34,
+ 0x3254061,
+ 0x331919E,
+ 0x33DE0E2,
+ 0x34A2E26,
+ 0x3567963,
+ 0x362C290,
+ 0x36F09A7,
+ 0x37B4EA0,
+ 0x3879173,
+ 0x393D218,
+ 0x3A01089,
+ 0x3AC4CBD,
+ 0x3B886AD,
+ 0x3C4BE51,
+ 0x3D0F3A3,
+ 0x3DD269A,
+ 0x3E9572E,
+ 0x3F58559,
+ 0x401B113,
+ 0x40DDA54,
+ 0x41A0115,
+ 0x426254E,
+ 0x43246F8,
+ 0x43E660B,
+ 0x44A8280,
+ 0x4569C50,
+ 0x462B372,
+ 0x46EC7E0,
+ 0x47AD992,
+ 0x486E881,
+ 0x492F4A5,
+ 0x49EFDF6,
+ 0x4AB046D,
+ 0x4B70804,
+ 0x4C308B2,
+ 0x4CF0670,
+ 0x4DB0136,
+ 0x4E6F8FE,
+ 0x4F2EDC0,
+ 0x4FEDF74,
+ 0x50ACE13,
+ 0x516B996,
+ 0x522A1F6,
+ 0x52E872B,
+ 0x53A692D,
+ 0x54647F6,
+ 0x552237D,
+ 0x55DFBBD,
+ 0x569D0AD,
+ 0x575A246,
+ 0x5817081,
+ 0x58D3B57,
+ 0x59902C0,
+ 0x5A4C6B5,
+ 0x5B0872F,
+ 0x5BC4426,
+ 0x5C7FD93,
+ 0x5D3B370,
+ 0x5DF65B5,
+ 0x5EB145A,
+ 0x5F6BF58,
+ 0x60266A9,
+ 0x60E0A45,
+ 0x619AA25,
+ 0x6254641,
+ 0x630DE93,
+ 0x63C7313,
+ 0x64803BB,
+ 0x6539083,
+ 0x65F1963,
+ 0x66A9E56,
+ 0x6761F53,
+ 0x6819C54,
+ 0x68D1551,
+ 0x6988A44,
+ 0x6A3FB25,
+ 0x6AF67EE,
+ 0x6BAD097,
+ 0x6C63519,
+ 0x6D1956E,
+ 0x6DCF18E,
+ 0x6E84972,
+ 0x6F39D13,
+ 0x6FEEC6B,
+ 0x70A3771,
+ 0x7157E20,
+ 0x720C071,
+ 0x72BFE5C,
+ 0x73737DA,
+ 0x7426CE5,
+ 0x74D9D75,
+ 0x758C985,
+ 0x763F10C,
+ 0x76F1404,
+ 0x77A3266,
+ 0x7854C2B,
+ 0x790614D,
+ 0x79B71C4,
+ 0x7A67D8A,
+ 0x7B18498,
+ 0x7BC86E7,
+ 0x7C78470,
+ 0x7D27D2D,
+ 0x7DD7116,
+ 0x7E86026,
+ 0x7F34A55,
+ 0x7FE2F9C,
+ 0x8090FF5,
+ 0x813EB5A,
+ 0x81EC1C2,
+ 0x8299329,
+ 0x8345F86,
+ 0x83F26D4,
+ 0x849E90C,
+ 0x854A626,
+ 0x85F5E1E,
+ 0x86A10EB,
+ 0x874BE87,
+ 0x87F66EC,
+ 0x88A0A13,
+ 0x894A7F5,
+ 0x89F408D,
+ 0x8A9D3D3,
+ 0x8B461C1,
+ 0x8BEEA51,
+ 0x8C96D7B,
+ 0x8D3EB3A,
+ 0x8DE6386,
+ 0x8E8D65B,
+ 0x8F343B0,
+ 0x8FDAB80,
+ 0x9080DC4,
+ 0x9126A76,
+ 0x91CC190,
+ 0x927130A,
+ 0x9315EDF,
+ 0x93BA509,
+ 0x945E580,
+ 0x950203F,
+ 0x95A5540,
+ 0x964847B,
+ 0x96EADEB,
+ 0x978D18A,
+ 0x982EF51,
+ 0x98D073A,
+ 0x997193F,
+ 0x9A12559,
+ 0x9AB2B83,
+ 0x9B52BB6,
+ 0x9BF25EC,
+ 0x9C91A1F,
+ 0x9D30849,
+ 0x9DCF063,
+ 0x9E6D267,
+ 0x9F0AE51,
+ 0x9FA8418,
+ 0xA0453B8,
+ 0xA0E1D29,
+ 0xA17E067,
+ 0xA219D6B,
+ 0xA2B5430,
+ 0xA3504AE,
+ 0xA3EAEE1,
+ 0xA4852C1,
+ 0xA51F04A,
+ 0xA5B8776,
+ 0xA65183E,
+ 0xA6EA29C,
+ 0xA78268B,
+ 0xA81A404,
+ 0xA8B1B03,
+ 0xA948B80,
+ 0xA9DF577,
+ 0xAA758E1,
+ 0xAB0B5B9,
+ 0xABA0BF9,
+ 0xAC35B9B,
+ 0xACCA499,
+ 0xAD5E6EE,
+ 0xADF2293,
+ 0xAE85784,
+ 0xAF185BB,
+ 0xAFAAD31,
+ 0xB03CDE2,
+ 0xB0CE7C7,
+ 0xB15FADB,
+ 0xB1F0719,
+ 0xB280C7A,
+ 0xB310AFA,
+ 0xB3A0292,
+ 0xB42F33E,
+ 0xB4BDCF7,
+ 0xB54BFB8,
+ 0xB5D9B7C,
+ 0xB66703D,
+ 0xB6F3DF6,
+ 0xB7804A2,
+ 0xB80C43A,
+ 0xB897CBA,
+ 0xB922E1C,
+ 0xB9AD85A,
+ 0xBA37B70,
+ 0xBAC1759,
+ 0xBB4AC0E,
+ 0xBBD398A,
+ 0xBC5BFC9,
+ 0xBCE3EC4,
+ 0xBD6B678,
+ 0xBDF26DE,
+ 0xBE78FF1,
+ 0xBEFF1AC,
+ 0xBF84C0B,
+ 0xC009F07,
+ 0xC08EA9C,
+ 0xC112EC4,
+ 0xC196B7B,
+ 0xC21A0BB,
+ 0xC29CE7F,
+ 0xC31F4C3,
+ 0xC3A1380,
+ 0xC422AB3,
+ 0xC4A3A57,
+ 0xC524265,
+ 0xC5A42DA,
+ 0xC623BB0,
+ 0xC6A2CE3,
+ 0xC72166D,
+ 0xC79F84A,
+ 0xC81D274,
+ 0xC89A4E8,
+ 0xC916FA0,
+ 0xC993297,
+ 0xCA0EDC8,
+ 0xCA8A130,
+ 0xCB04CC8,
+ 0xCB7F08D,
+ 0xCBF8C79,
+ 0xCC72088,
+ 0xCCEACB5,
+ 0xCD630FC,
+ 0xCDDAD58,
+ 0xCE521C4,
+ 0xCEC8E3C,
+ 0xCF3F2BB,
+ 0xCFB4F3C,
+ 0xD02A3BB,
+ 0xD09F034,
+ 0xD1134A2,
+ 0xD187101,
+ 0xD1FA54B,
+ 0xD26D17D,
+ 0xD2DF593,
+ 0xD351187,
+ 0xD3C2555,
+ 0xD4330FA,
+ 0xD4A3470,
+ 0xD512FB3,
+ 0xD5822C0,
+ 0xD5F0D91,
+ 0xD65F023,
+ 0xD6CCA71,
+ 0xD739C77,
+ 0xD7A6631,
+ 0xD81279A,
+ 0xD87E0AF,
+ 0xD8E916B,
+ 0xD9539CB,
+ 0xD9BD9C9,
+ 0xDA27163,
+ 0xDA90093,
+ 0xDAF8757,
+ 0xDB605A9,
+ 0xDBC7B86,
+ 0xDC2E8E9,
+ 0xDC94DD0,
+ 0xDCFAA36,
+ 0xDD5FE17,
+ 0xDDC496E,
+ 0xDE28C39,
+ 0xDE8C674,
+ 0xDEEF81A,
+ 0xDF52127,
+ 0xDFB4199,
+ 0xE01596B,
+ 0xE076899,
+ 0xE0D6F20,
+ 0xE136CFB,
+ 0xE196228,
+ 0xE1F4EA3,
+ 0xE253267,
+ 0xE2B0D72,
+ 0xE30DFBF,
+ 0xE36A94B,
+ 0xE3C6A13,
+ 0xE422213,
+ 0xE47D147,
+ 0xE4D77AC,
+ 0xE53153F,
+ 0xE58A9FB,
+ 0xE5E35DE,
+ 0xE63B8E4,
+ 0xE69330A,
+ 0xE6EA44C,
+ 0xE740CA7,
+ 0xE796C18,
+ 0xE7EC29B,
+ 0xE84102D,
+ 0xE8954CB,
+ 0xE8E9071,
+ 0xE93C31D,
+ 0xE98ECCA,
+ 0xE9E0D77,
+ 0xEA3251F,
+ 0xEA833C0,
+ 0xEAD3956,
+ 0xEB235DF,
+ 0xEB72956,
+ 0xEBC13BB,
+ 0xEC0F508,
+ 0xEC5CD3B,
+ 0xECA9C52,
+ 0xECF6249,
+ 0xED41F1D,
+ 0xED8D2CC,
+ 0xEDD7D52,
+ 0xEE21EAC,
+ 0xEE6B6D9,
+ 0xEEB45D4,
+ 0xEEFCB9B,
+ 0xEF4482C,
+ 0xEF8BB83,
+ 0xEFD259E,
+ 0xF01867A,
+ 0xF05DE14,
+ 0xF0A2C6A,
+ 0xF0E7179,
+ 0xF12AD3E,
+ 0xF16DFB8,
+ 0xF1B08E2,
+ 0xF1F28BB,
+ 0xF233F40,
+ 0xF274C6F,
+ 0xF2B5044,
+ 0xF2F4ABF,
+ 0xF333BDB,
+ 0xF372397,
+ 0xF3B01F0,
+ 0xF3ED6E5,
+ 0xF42A271,
+ 0xF466494,
+ 0xF4A1D4B,
+ 0xF4DCC94,
+ 0xF51726B,
+ 0xF550ED0,
+ 0xF58A1C0,
+ 0xF5C2B38,
+ 0xF5FAB37,
+ 0xF6321BA,
+ 0xF668EBF,
+ 0xF69F244,
+ 0xF6D4C47,
+ 0xF709CC6,
+ 0xF73E3BF,
+ 0xF77212F,
+ 0xF7A5516,
+ 0xF7D7F70,
+ 0xF80A03C,
+ 0xF83B778,
+ 0xF86C522,
+ 0xF89C939,
+ 0xF8CC3B9,
+ 0xF8FB4A2,
+ 0xF929BF2,
+ 0xF9579A7,
+ 0xF984DBE,
+ 0xF9B1837,
+ 0xF9DD910,
+ 0xFA09047,
+ 0xFA33DDA,
+ 0xFA5E1C7,
+ 0xFA87C0D,
+ 0xFAB0CAB,
+ 0xFAD939F,
+ 0xFB010E6,
+ 0xFB28481,
+ 0xFB4EE6D,
+ 0xFB74EA8,
+ 0xFB9A532,
+ 0xFBBF208,
+ 0xFBE352A,
+ 0xFC06E95,
+ 0xFC29E4A,
+ 0xFC4C445,
+ 0xFC6E087,
+ 0xFC8F30D,
+ 0xFCAFBD6,
+ 0xFCCFAE1,
+ 0xFCEF02E,
+ 0xFD0DBBA,
+ 0xFD2BD84,
+ 0xFD4958C,
+ 0xFD663D0,
+ 0xFD8284F,
+ 0xFD9E308,
+ 0xFDB93FA,
+ 0xFDD3B23,
+ 0xFDED884,
+ 0xFE06C1A,
+ 0xFE1F5E5,
+ 0xFE375E5,
+ 0xFE4EC17,
+ 0xFE6587B,
+ 0xFE7BB10,
+ 0xFE913D6,
+ 0xFEA62CB,
+ 0xFEBA7EF,
+ 0xFECE341,
+ 0xFEE14C0,
+ 0xFEF3C6C,
+ 0xFF05A43,
+ 0xFF16E45,
+ 0xFF27872,
+ 0xFF378C8,
+ 0xFF46F48,
+ 0xFF55BF0,
+ 0xFF63EC0,
+ 0xFF717B7,
+ 0xFF7E6D5,
+ 0xFF8AC1A,
+ 0xFF96785,
+ 0xFFA1915,
+ 0xFFAC0CA,
+ 0xFFB5EA3,
+ 0xFFBF2A1,
+ 0xFFC7CC3,
+ 0xFFCFD08,
+ 0xFFD7371,
+ 0xFFDDFFC,
+ 0xFFE42AA,
+ 0xFFE9B7B,
+ 0xFFEEA6E,
+ 0xFFF2F83,
+ 0xFFF6AB9,
+ 0xFFF9C12,
+ 0xFFFC38C,
+ 0xFFFE128,
+ 0xFFFF4E5,
+ 0xFFFFEC4
+};
+
+real_t sine_mid_480[] =
+{
+ 0x6B3BA,
+ 0x141B2A,
+ 0x21828C,
+ 0x2EE9D6,
+ 0x3C50FF,
+ 0x49B7FE,
+ 0x571EC9,
+ 0x648558,
+ 0x71EB9F,
+ 0x7F5197,
+ 0x8CB735,
+ 0x9A1C71,
+ 0xA78140,
+ 0xB4E59A,
+ 0xC24975,
+ 0xCFACC7,
+ 0xDD0F88,
+ 0xEA71AD,
+ 0xF7D32E,
+ 0x1053401,
+ 0x112941D,
+ 0x11FF378,
+ 0x12D5209,
+ 0x13AAFC7,
+ 0x1480CA7,
+ 0x15568A2,
+ 0x162C3AD,
+ 0x1701DBE,
+ 0x17D76CE,
+ 0x18ACED1,
+ 0x19825C0,
+ 0x1A57B90,
+ 0x1B2D039,
+ 0x1C023B0,
+ 0x1CD75EC,
+ 0x1DAC6E5,
+ 0x1E81691,
+ 0x1F564E6,
+ 0x202B1DB,
+ 0x20FFD67,
+ 0x21D4780,
+ 0x22A901E,
+ 0x237D736,
+ 0x2451CBF,
+ 0x25260B1,
+ 0x25FA302,
+ 0x26CE3A8,
+ 0x27A229B,
+ 0x2875FD0,
+ 0x2949B3F,
+ 0x2A1D4DF,
+ 0x2AF0CA5,
+ 0x2BC4289,
+ 0x2C97682,
+ 0x2D6A886,
+ 0x2E3D88C,
+ 0x2F1068B,
+ 0x2FE3279,
+ 0x30B5C4E,
+ 0x3188400,
+ 0x325A985,
+ 0x332CCD5,
+ 0x33FEDE6,
+ 0x34D0CB0,
+ 0x35A2928,
+ 0x3674346,
+ 0x3745B01,
+ 0x381704E,
+ 0x38E8326,
+ 0x39B937F,
+ 0x3A8A150,
+ 0x3B5AC90,
+ 0x3C2B534,
+ 0x3CFBB36,
+ 0x3DCBE8A,
+ 0x3E9BF29,
+ 0x3F6BD08,
+ 0x403B81F,
+ 0x410B065,
+ 0x41DA5D1,
+ 0x42A9859,
+ 0x43787F4,
+ 0x444749A,
+ 0x4515E41,
+ 0x45E44E1,
+ 0x46B286F,
+ 0x47808E4,
+ 0x484E635,
+ 0x491C05B,
+ 0x49E974C,
+ 0x4AB6AFE,
+ 0x4B83B6A,
+ 0x4C50886,
+ 0x4D1D249,
+ 0x4DE98AA,
+ 0x4EB5B9F,
+ 0x4F81B22,
+ 0x504D727,
+ 0x5118FA6,
+ 0x51E4497,
+ 0x52AF5F0,
+ 0x537A3A9,
+ 0x5444DB8,
+ 0x550F415,
+ 0x55D96B7,
+ 0x56A3595,
+ 0x576D0A6,
+ 0x58367E1,
+ 0x58FFB3E,
+ 0x59C8AB3,
+ 0x5A91638,
+ 0x5B59DC4,
+ 0x5C2214E,
+ 0x5CEA0CE,
+ 0x5DB1C3A,
+ 0x5E7938A,
+ 0x5F406B5,
+ 0x60075B3,
+ 0x60CE07A,
+ 0x6194702,
+ 0x625A943,
+ 0x6320732,
+ 0x63E60C9,
+ 0x64AB5FE,
+ 0x65706C9,
+ 0x6635320,
+ 0x66F9AFC,
+ 0x67BDE53,
+ 0x6881D1E,
+ 0x6945752,
+ 0x6A08CE9,
+ 0x6ACBDD9,
+ 0x6B8EA1A,
+ 0x6C511A3,
+ 0x6D1346B,
+ 0x6DD526B,
+ 0x6E96B9A,
+ 0x6F57FEE,
+ 0x7018F60,
+ 0x70D99E8,
+ 0x7199F7C,
+ 0x725A014,
+ 0x7319BA9,
+ 0x73D9231,
+ 0x74983A4,
+ 0x7556FFA,
+ 0x761572A,
+ 0x76D392C,
+ 0x77915F7,
+ 0x784ED84,
+ 0x790BFCA,
+ 0x79C8CC1,
+ 0x7A85460,
+ 0x7B416A0,
+ 0x7BFD377,
+ 0x7CB8ADE,
+ 0x7D73CCC,
+ 0x7E2E93A,
+ 0x7EE901F,
+ 0x7FA3172,
+ 0x805CD2C,
+ 0x8116345,
+ 0x81CF3B4,
+ 0x8287E72,
+ 0x8340376,
+ 0x83F82B8,
+ 0x84AFC30,
+ 0x8566FD6,
+ 0x861DDA2,
+ 0x86D458C,
+ 0x878A78B,
+ 0x8840399,
+ 0x88F59AD,
+ 0x89AA9BF,
+ 0x8A5F3C7,
+ 0x8B137BD,
+ 0x8BC7599,
+ 0x8C7AD54,
+ 0x8D2DEE5,
+ 0x8DE0A45,
+ 0x8E92F6C,
+ 0x8F44E51,
+ 0x8FF66EE,
+ 0x90A793A,
+ 0x915852E,
+ 0x9208AC2,
+ 0x92B89ED,
+ 0x93682AA,
+ 0x94174EF,
+ 0x94C60B4,
+ 0x95745F4,
+ 0x96224A5,
+ 0x96CFCC0,
+ 0x977CE3D,
+ 0x9829916,
+ 0x98D5D42,
+ 0x9981AB9,
+ 0x9A2D175,
+ 0x9AD816D,
+ 0x9B82A9B,
+ 0x9C2CCF6,
+ 0x9CD6878,
+ 0x9D7FD18,
+ 0x9E28AD0,
+ 0x9ED1197,
+ 0x9F79168,
+ 0xA020A39,
+ 0xA0C7C05,
+ 0xA16E6C2,
+ 0xA214A6C,
+ 0xA2BA6F9,
+ 0xA35FC62,
+ 0xA404AA1,
+ 0xA4A91AF,
+ 0xA54D183,
+ 0xA5F0A17,
+ 0xA693B63,
+ 0xA736561,
+ 0xA7D880A,
+ 0xA87A355,
+ 0xA91B73D,
+ 0xA9BC3BA,
+ 0xAA5C8C4,
+ 0xAAFC656,
+ 0xAB9BC67,
+ 0xAC3AAF2,
+ 0xACD91EE,
+ 0xAD77156,
+ 0xAE14921,
+ 0xAEB194A,
+ 0xAF4E1C9,
+ 0xAFEA297,
+ 0xB085BAE,
+ 0xB120D07,
+ 0xB1BB69B,
+ 0xB255863,
+ 0xB2EF258,
+ 0xB388474,
+ 0xB420EB0,
+ 0xB4B9105,
+ 0xB550B6D,
+ 0xB5E7DE0,
+ 0xB67E859,
+ 0xB714AD1,
+ 0xB7AA541,
+ 0xB83F7A2,
+ 0xB8D41EF,
+ 0xB968420,
+ 0xB9FBE2E,
+ 0xBA8F015,
+ 0xBB219CC,
+ 0xBBB3B4E,
+ 0xBC45495,
+ 0xBCD6599,
+ 0xBD66E54,
+ 0xBDF6EC1,
+ 0xBE866D9,
+ 0xBF15695,
+ 0xBFA3DEF,
+ 0xC031CE1,
+ 0xC0BF365,
+ 0xC14C175,
+ 0xC1D870A,
+ 0xC26441E,
+ 0xC2EF8AB,
+ 0xC37A4AC,
+ 0xC404819,
+ 0xC48E2ED,
+ 0xC517522,
+ 0xC59FEB1,
+ 0xC627F96,
+ 0xC6AF7C9,
+ 0xC736745,
+ 0xC7BCE04,
+ 0xC842C00,
+ 0xC8C8134,
+ 0xC94CD98,
+ 0xC9D1128,
+ 0xCA54BDE,
+ 0xCAD7DB4,
+ 0xCB5A6A4,
+ 0xCBDC6A9,
+ 0xCC5DDBC,
+ 0xCCDEBD8,
+ 0xCD5F0F8,
+ 0xCDDED16,
+ 0xCE5E02C,
+ 0xCEDCA34,
+ 0xCF5AB29,
+ 0xCFD8306,
+ 0xD0551C5,
+ 0xD0D1761,
+ 0xD14D3D4,
+ 0xD1C8718,
+ 0xD243129,
+ 0xD2BD200,
+ 0xD336999,
+ 0xD3AF7EE,
+ 0xD427CFB,
+ 0xD49F8B8,
+ 0xD516B22,
+ 0xD58D434,
+ 0xD6033E7,
+ 0xD678A37,
+ 0xD6ED71E,
+ 0xD761A98,
+ 0xD7D54A0,
+ 0xD848530,
+ 0xD8BAC43,
+ 0xD92C9D4,
+ 0xD99DDDE,
+ 0xDA0E85D,
+ 0xDA7E94C,
+ 0xDAEE0A4,
+ 0xDB5CE62,
+ 0xDBCB281,
+ 0xDC38CFC,
+ 0xDCA5DCE,
+ 0xDD124F2,
+ 0xDD7E263,
+ 0xDDE961E,
+ 0xDE5401C,
+ 0xDEBE05A,
+ 0xDF276D2,
+ 0xDF90381,
+ 0xDFF8661,
+ 0xE05FF6E,
+ 0xE0C6EA3,
+ 0xE12D3FD,
+ 0xE192F75,
+ 0xE1F8109,
+ 0xE25C8B3,
+ 0xE2C066F,
+ 0xE323A39,
+ 0xE38640D,
+ 0xE3E83E5,
+ 0xE4499BE,
+ 0xE4AA594,
+ 0xE50A762,
+ 0xE569F23,
+ 0xE5C8CD5,
+ 0xE627072,
+ 0xE6849F7,
+ 0xE6E195F,
+ 0xE73DEA7,
+ 0xE7999CA,
+ 0xE7F4AC4,
+ 0xE84F191,
+ 0xE8A8E2E,
+ 0xE902096,
+ 0xE95A8C6,
+ 0xE9B26B9,
+ 0xEA09A6C,
+ 0xEA603DA,
+ 0xEAB6301,
+ 0xEB0B7DC,
+ 0xEB60268,
+ 0xEBB42A1,
+ 0xEC07883,
+ 0xEC5A40A,
+ 0xECAC533,
+ 0xECFDBFB,
+ 0xED4E85D,
+ 0xED9EA56,
+ 0xEDEE1E3,
+ 0xEE3CF01,
+ 0xEE8B1AB,
+ 0xEED89DE,
+ 0xEF25797,
+ 0xEF71AD3,
+ 0xEFBD38E,
+ 0xF0081C5,
+ 0xF052574,
+ 0xF09BE99,
+ 0xF0E4D30,
+ 0xF12D136,
+ 0xF174AA7,
+ 0xF1BB981,
+ 0xF201DC1,
+ 0xF247763,
+ 0xF28C664,
+ 0xF2D0AC2,
+ 0xF314479,
+ 0xF357386,
+ 0xF3997E7,
+ 0xF3DB198,
+ 0xF41C097,
+ 0xF45C4E1,
+ 0xF49BE72,
+ 0xF4DAD49,
+ 0xF519162,
+ 0xF556ABB,
+ 0xF593951,
+ 0xF5CFD22,
+ 0xF60B62A,
+ 0xF646467,
+ 0xF6807D6,
+ 0xF6BA076,
+ 0xF6F2E43,
+ 0xF72B13A,
+ 0xF76295B,
+ 0xF7996A1,
+ 0xF7CF90B,
+ 0xF805096,
+ 0xF839D40,
+ 0xF86DF06,
+ 0xF8A15E7,
+ 0xF8D41E0,
+ 0xF9062EF,
+ 0xF937911,
+ 0xF968445,
+ 0xF998488,
+ 0xF9C79D8,
+ 0xF9F6433,
+ 0xFA24398,
+ 0xFA51803,
+ 0xFA7E174,
+ 0xFAA9FE7,
+ 0xFAD535C,
+ 0xFAFFBD0,
+ 0xFB29942,
+ 0xFB52BAF,
+ 0xFB7B316,
+ 0xFBA2F75,
+ 0xFBCA0CA,
+ 0xFBF0714,
+ 0xFC16251,
+ 0xFC3B27F,
+ 0xFC5F79C,
+ 0xFC831A7,
+ 0xFCA609F,
+ 0xFCC8482,
+ 0xFCE9D4E,
+ 0xFD0AB03,
+ 0xFD2AD9D,
+ 0xFD4A51D,
+ 0xFD69180,
+ 0xFD872C6,
+ 0xFDA48ED,
+ 0xFDC13F4,
+ 0xFDDD3D9,
+ 0xFDF889B,
+ 0xFE13239,
+ 0xFE2D0B3,
+ 0xFE46406,
+ 0xFE5EC31,
+ 0xFE76934,
+ 0xFE8DB0E,
+ 0xFEA41BD,
+ 0xFEB9D41,
+ 0xFECED99,
+ 0xFEE32C3,
+ 0xFEF6CBE,
+ 0xFF09B8B,
+ 0xFF1BF28,
+ 0xFF2D794,
+ 0xFF3E4CE,
+ 0xFF4E6D7,
+ 0xFF5DDAC,
+ 0xFF6C94E,
+ 0xFF7A9BC,
+ 0xFF87EF4,
+ 0xFF948F7,
+ 0xFFA07C4,
+ 0xFFABB5B,
+ 0xFFB63BB,
+ 0xFFC00E3,
+ 0xFFC92D3,
+ 0xFFD198B,
+ 0xFFD950A,
+ 0xFFE0550,
+ 0xFFE6A5D,
+ 0xFFEC430,
+ 0xFFF12C9,
+ 0xFFF5629,
+ 0xFFF8E4E,
+ 0xFFFBB38,
+ 0xFFFDCE8,
+ 0xFFFF35D,
+ 0xFFFFE98
+};
+
+real_t ld_mid_512[] =
+{
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x1921F1,
+ 0x4B64DB,
+ 0x7DA4DD,
+ 0xAFE006,
+ 0xE21468,
+ 0x1144013,
+ 0x1466118,
+ 0x1787587,
+ 0x1AA7B73,
+ 0x1DC70ED,
+ 0x20E5409,
+ 0x24022DB,
+ 0x271DB77,
+ 0x2A37BF1,
+ 0x2D50261,
+ 0x3066CDE,
+ 0x337B97F,
+ 0x368E65F,
+ 0x399F198,
+ 0x3CAD945,
+ 0x3FB9B85,
+ 0x42C3675,
+ 0x45CA837,
+ 0x48CEEED,
+ 0x4BD08B8,
+ 0x4ECF3C0,
+ 0x51CAE2B,
+ 0x54C3622,
+ 0x57B89D0,
+ 0x5AAA761,
+ 0x5D98D06,
+ 0x60838EE,
+ 0x636A94E,
+ 0x664DC5B,
+ 0x692D04C,
+ 0x6C0835E,
+ 0x6EDF3CB,
+ 0x71B1FD5,
+ 0x74805BD,
+ 0x774A3C8,
+ 0x7A0F83E,
+ 0x7CD0168,
+ 0x7F8BD96,
+ 0x8242B16,
+ 0x84F483D,
+ 0x87A1361,
+ 0x8A48ADB,
+ 0x8CEAD08,
+ 0x8F87849,
+ 0x921EB01,
+ 0x94B0397,
+ 0x973C075,
+ 0x99C200A,
+ 0x9C420C6,
+ 0x9EBC120,
+ 0xA12FF8F,
+ 0xA39DA91,
+ 0xA6050A6,
+ 0xA866053,
+ 0xAAC0820,
+ 0xAD14699,
+ 0xAF61A4E,
+ 0xB1A81D5,
+ 0xB3E7BC6,
+ 0xB6206BE,
+ 0xB85215D,
+ 0xBA7CA4B,
+ 0xBCA002F,
+ 0xBEBC1BA,
+ 0xC0D0D9E,
+ 0xC2DE291,
+ 0xC4E3F51,
+ 0xC6E229D,
+ 0xC8D8B3C,
+ 0xCAC77F6,
+ 0xCCAE79B,
+ 0xCE8D8FF,
+ 0xD064AF9,
+ 0xD233C68,
+ 0xD3FAC2D,
+ 0xD5B9930,
+ 0xD77025E,
+ 0xD91E6A7,
+ 0xDAC4503,
+ 0xDC61C6D,
+ 0xDDF6BE6,
+ 0xDF83274,
+ 0xE106F23,
+ 0xE282104,
+ 0xE3F472C,
+ 0xE55E0B8,
+ 0xE6BECC8,
+ 0xE816A82,
+ 0xE965913,
+ 0xEAAB7AC,
+ 0xEBE8584,
+ 0xED1C1D8,
+ 0xEE46BE8,
+ 0xEF682FF,
+ 0xF080668,
+ 0xF18F577,
+ 0xF294F85,
+ 0xF3913F0,
+ 0xF48421D,
+ 0xF56D977,
+ 0xF64D96C,
+ 0xF724173,
+ 0xF7F1108,
+ 0xF8B47AC,
+ 0xF96E4E6,
+ 0xFA1E845,
+ 0xFAC515A,
+ 0xFB61FC0,
+ 0xFBF5316,
+ 0xFC7EB01,
+ 0xFCFE72C,
+ 0xFD74748,
+ 0xFDE0B0D,
+ 0xFE43237,
+ 0xFE9BC8B,
+ 0xFEEA9D0,
+ 0xFF2F9D8,
+ 0xFF6AC77,
+ 0xFF9C188,
+ 0xFFC38ED,
+ 0xFFE128F,
+ 0xFFF4E5A,
+ 0xFFFEC42,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000
+};
+
+real_t ld_mid_480[] =
+{
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x1ACEDD,
+ 0x506B6B,
+ 0x860472,
+ 0xBB9798,
+ 0xF12283,
+ 0x126A2DB,
+ 0x15C1646,
+ 0x1917A6C,
+ 0x1C6CCF6,
+ 0x1FC0B8D,
+ 0x23133DB,
+ 0x266438B,
+ 0x29B3849,
+ 0x2D00FC3,
+ 0x304C7A8,
+ 0x3395DA6,
+ 0x36DCF70,
+ 0x3A21AB9,
+ 0x3D63D36,
+ 0x40A349D,
+ 0x43DFEA6,
+ 0x471990D,
+ 0x4A5018D,
+ 0x4D835E6,
+ 0x50B33D8,
+ 0x53DF927,
+ 0x5708398,
+ 0x5A2D0F4,
+ 0x5D4DF07,
+ 0x606AB9E,
+ 0x638348A,
+ 0x669779E,
+ 0x69A72B2,
+ 0x6CB23A0,
+ 0x6FB8844,
+ 0x72B9E80,
+ 0x75B6437,
+ 0x78AD751,
+ 0x7B9F5B9,
+ 0x7E8BD5E,
+ 0x8172C33,
+ 0x845402D,
+ 0x872F749,
+ 0x8A04F85,
+ 0x8CD46E2,
+ 0x8F9DB69,
+ 0x9260B25,
+ 0x951D425,
+ 0x97D347F,
+ 0x9A82A4A,
+ 0x9D2B3A4,
+ 0x9FCCEB1,
+ 0xA267996,
+ 0xA4FB280,
+ 0xA7877A1,
+ 0xAA0C72E,
+ 0xAC89F62,
+ 0xAEFFE7F,
+ 0xB16E2CA,
+ 0xB3D4A8E,
+ 0xB63341D,
+ 0xB889DCC,
+ 0xBAD85F7,
+ 0xBD1EB00,
+ 0xBF5CB4E,
+ 0xC19254F,
+ 0xC3BF775,
+ 0xC5E4039,
+ 0xC7FFE1B,
+ 0xCA12F9F,
+ 0xCC1D351,
+ 0xCE1E7C2,
+ 0xD016B8A,
+ 0xD205D47,
+ 0xD3EBB9E,
+ 0xD5C8539,
+ 0xD79B8CB,
+ 0xD96550A,
+ 0xDB258B7,
+ 0xDCDC296,
+ 0xDE89173,
+ 0xE02C422,
+ 0xE1C597C,
+ 0xE355062,
+ 0xE4DA7BC,
+ 0xE655E78,
+ 0xE7C738C,
+ 0xE92E5F5,
+ 0xEA8B4B7,
+ 0xEBDDEDD,
+ 0xED26379,
+ 0xEE641A4,
+ 0xEF97881,
+ 0xF0C0736,
+ 0xF1DECF4,
+ 0xF2F28F2,
+ 0xF3FBA6E,
+ 0xF4FA0AE,
+ 0xF5EDAFF,
+ 0xF6D68B7,
+ 0xF7B4932,
+ 0xF887BD4,
+ 0xF950009,
+ 0xFA0D544,
+ 0xFABFB02,
+ 0xFB670C3,
+ 0xFC03614,
+ 0xFC94A86,
+ 0xFD1ADB3,
+ 0xFD95F3E,
+ 0xFE05ECF,
+ 0xFE6AC18,
+ 0xFEC46D2,
+ 0xFF12EC0,
+ 0xFF563A8,
+ 0xFF8E55C,
+ 0xFFBB3B6,
+ 0xFFDCE94,
+ 0xFFF35E0,
+ 0xFFFE98A,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000,
+ 0x10000000
+};
+#endif
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--- a/libfaad/specrec.c
+++ b/libfaad/specrec.c
@@ -16,7 +16,7 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
-** $Id: specrec.c,v 1.14 2002/09/05 20:10:53 menno Exp $
+** $Id: specrec.c,v 1.15 2002/09/08 18:14:37 menno Exp $
**/
/*
@@ -31,6 +31,7 @@
#include "specrec.h"
#include "syntax.h"
#include "data.h"
+#include "iq_table.h"
#define bit_set(A, B) ((A) & (1<<(B)))
@@ -241,16 +242,11 @@
}
}
-void build_tables(real_t *iq_table, real_t *pow2_table)
+#ifndef FIXED_POINT
+void build_tables(real_t *pow2_table)
{
uint16_t i;
- /* build pow(x, 4/3) table for inverse quantization */
- for(i = 0; i < IQ_TABLE_SIZE; i++)
- {
- iq_table[i] = REAL_CONST(pow(i, 4.0/3.0));
- }
-
/* build pow(2, 0.25*x) table for scalefactors */
for(i = 0; i < POW_TABLE_SIZE; i++)
{
@@ -257,8 +253,9 @@
pow2_table[i] = REAL_CONST(pow(2.0, 0.25 * (i-100)));
}
}
+#endif
-static INLINE real_t iquant(int16_t q, real_t *iq_table)
+static INLINE real_t iquant(int16_t q)
{
if (q > 0)
{
@@ -277,8 +274,7 @@
}
}
-void inverse_quantization(real_t *x_invquant, int16_t *x_quant, real_t *iq_table,
- uint16_t frame_len)
+void inverse_quantization(real_t *x_invquant, int16_t *x_quant, uint16_t frame_len)
{
int8_t i;
int16_t *in_ptr = x_quant;
@@ -286,31 +282,53 @@
for(i = frame_len/8-1; i >= 0; --i)
{
- *out_ptr++ = iquant(*in_ptr++, iq_table);
- *out_ptr++ = iquant(*in_ptr++, iq_table);
- *out_ptr++ = iquant(*in_ptr++, iq_table);
- *out_ptr++ = iquant(*in_ptr++, iq_table);
- *out_ptr++ = iquant(*in_ptr++, iq_table);
- *out_ptr++ = iquant(*in_ptr++, iq_table);
- *out_ptr++ = iquant(*in_ptr++, iq_table);
- *out_ptr++ = iquant(*in_ptr++, iq_table);
+ *out_ptr++ = iquant(*in_ptr++);
+ *out_ptr++ = iquant(*in_ptr++);
+ *out_ptr++ = iquant(*in_ptr++);
+ *out_ptr++ = iquant(*in_ptr++);
+ *out_ptr++ = iquant(*in_ptr++);
+ *out_ptr++ = iquant(*in_ptr++);
+ *out_ptr++ = iquant(*in_ptr++);
+ *out_ptr++ = iquant(*in_ptr++);
}
}
+#ifndef FIXED_POINT
static INLINE real_t get_scale_factor_gain(uint16_t scale_factor, real_t *pow2_table)
{
if (scale_factor < POW_TABLE_SIZE)
return pow2_table[scale_factor];
else
- return REAL_CONST(exp(LN2 * 0.25 * (scale_factor - 100)));
+ return REAL_CONST(pow(2.0, 0.25 * (scale_factor - 100)));
}
+#else
+static real_t pow2_table[] =
+{
+ COEF_CONST(0.59460355750136),
+ COEF_CONST(0.70710678118655),
+ COEF_CONST(0.84089641525371),
+ COEF_CONST(1.0),
+ COEF_CONST(1.18920711500272),
+ COEF_CONST(1.41421356237310),
+ COEF_CONST(1.68179283050743)
+};
+#endif
+#ifdef FIXED_POINT
+void apply_scalefactors(ic_stream *ics, real_t *x_invquant, uint16_t frame_len)
+#else
void apply_scalefactors(ic_stream *ics, real_t *x_invquant, real_t *pow2_table,
uint16_t frame_len)
+#endif
{
uint8_t g, sfb;
uint16_t top;
- real_t *fp, scale;
+ real_t *fp;
+#ifndef FIXED_POINT
+ real_t scale;
+#else
+ int32_t exp, frac;
+#endif
uint8_t groups = 0;
uint16_t nshort = frame_len/8;
@@ -328,15 +346,43 @@
{
top = ics->sect_sfb_offset[g][sfb+1];
+#ifndef FIXED_POINT
scale = get_scale_factor_gain(ics->scale_factors[g][sfb], pow2_table);
+#else
+ exp = (ics->scale_factors[g][sfb] - 100) / 4;
+ frac = (ics->scale_factors[g][sfb] - 100) % 4;
+#endif
/* minimum size of a sf band is 4 and always a multiple of 4 */
- for ( ; k < top; k+=4)
+ for ( ; k < top; k += 4)
{
+#ifndef FIXED_POINT
fp[0] = MUL(fp[0],scale);
fp[1] = MUL(fp[1],scale);
fp[2] = MUL(fp[2],scale);
fp[3] = MUL(fp[3],scale);
+#else
+ if (exp < 0)
+ {
+ fp[0] >>= -exp;
+ fp[1] >>= -exp;
+ fp[2] >>= -exp;
+ fp[3] >>= -exp;
+ } else {
+ fp[0] <<= exp;
+ fp[1] <<= exp;
+ fp[2] <<= exp;
+ fp[3] <<= exp;
+ }
+
+ if (frac)
+ {
+ fp[0] = MUL_R_C(fp[0],pow2_table[frac + 3]);
+ fp[1] = MUL_R_C(fp[1],pow2_table[frac + 3]);
+ fp[2] = MUL_R_C(fp[2],pow2_table[frac + 3]);
+ fp[3] = MUL_R_C(fp[3],pow2_table[frac + 3]);
+ }
+#endif
fp += 4;
}
}
--- a/libfaad/specrec.h
+++ b/libfaad/specrec.h
@@ -16,7 +16,7 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
-** $Id: specrec.h,v 1.8 2002/09/05 20:10:53 menno Exp $
+** $Id: specrec.h,v 1.9 2002/09/08 18:14:37 menno Exp $
**/
#ifndef __SPECREC_H__
@@ -28,12 +28,7 @@
#include "syntax.h"
-/* !!!DON'T CHANGE IQ_TABLE_SIZE!!! */
-#define IQ_TABLE_SIZE 1026
-
-#ifdef FIXED_POINT
-#define POW_TABLE_SIZE 0
-#else
+#ifndef FIXED_POINT
#define POW_TABLE_SIZE 200
#endif
@@ -40,11 +35,14 @@
uint8_t window_grouping_info(ic_stream *ics, uint8_t fs_index,
uint8_t object_type, uint16_t frame_len);
void quant_to_spec(ic_stream *ics, real_t *spec_data, uint16_t frame_len);
-void build_tables(real_t *iq_table, real_t *pow2_table);
-void inverse_quantization(real_t *x_invquant, int16_t *x_quant, real_t *iq_table,
- uint16_t frame_len);
+void inverse_quantization(real_t *x_invquant, int16_t *x_quant, uint16_t frame_len);
+#ifdef FIXED_POINT
+void apply_scalefactors(ic_stream *ics, real_t *x_invquant, uint16_t frame_len);
+#else
+void build_tables(real_t *pow2_table);
void apply_scalefactors(ic_stream *ics, real_t *x_invquant, real_t *pow2_table,
uint16_t frame_len);
+#endif
#ifdef __cplusplus
}