freeswitch/libs/ilbc/src/constants.c

771 lines
26 KiB
C

/*
* iLBC - a library for the iLBC codec
*
* constant.c - The iLBC low bit rate speech codec.
*
* Adapted by Steve Underwood <steveu@coppice.org> from the reference
* iLBC code supplied in RFC3951.
*
* Original code Copyright (C) The Internet Society (2004).
* All changes to produce this version Copyright (C) 2008 by Steve Underwood
* All Rights Reserved.
*
* 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.
*
* $Id: constants.c,v 1.2 2008/03/06 12:27:38 steveu Exp $
*/
/*! \file */
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <inttypes.h>
#include "ilbc.h"
#include "constants.h"
/* ULP bit allocation */
/* 20 ms frame */
const ilbc_ulp_inst_t ULP_20msTbl =
{
/* LSF */
{
{6, 0, 0, 0, 0}, {7, 0, 0, 0, 0}, {7, 0, 0, 0, 0},
{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}
},
/* Start state location, gain and samples */
{2, 0, 0, 0, 0},
{1, 0, 0, 0, 0},
{6, 0, 0, 0, 0},
{0, 1, 2, 0, 0},
/* extra CB index and extra CB gain */
{{6, 0, 1, 0, 0}, {0, 0, 7, 0, 0}, {0, 0, 7, 0, 0}},
{{2, 0, 3, 0, 0}, {1, 1, 2, 0, 0}, {0, 0, 3, 0, 0}},
/* CB index and CB gain */
{
{{7, 0, 1, 0, 0}, {0, 0, 7, 0, 0}, {0, 0, 7, 0, 0}},
{{0, 0, 8, 0, 0}, {0, 0, 8, 0, 0}, {0, 0, 8, 0, 0}},
{{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}},
{{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}}
},
{
{{1, 2, 2, 0, 0}, {1, 1, 2, 0, 0}, {0, 0, 3, 0, 0}},
{{1, 1, 3, 0, 0}, {0, 2, 2, 0, 0}, {0, 0, 3, 0, 0}},
{{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}},
{{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}}
}
};
/* 30 ms frame */
const ilbc_ulp_inst_t ULP_30msTbl =
{
/* LSF */
{
{6, 0, 0, 0, 0}, {7, 0, 0, 0, 0}, {7, 0, 0, 0, 0},
{6, 0, 0, 0, 0}, {7, 0, 0, 0, 0}, {7, 0, 0, 0, 0}
},
/* Start state location, gain and samples */
{3, 0, 0, 0, 0},
{1, 0, 0, 0, 0},
{6, 0, 0, 0, 0},
{0, 1, 2, 0, 0},
/* extra CB index and extra CB gain */
{{4, 2, 1, 0, 0}, {0, 0, 7, 0, 0}, {0, 0, 7, 0, 0}},
{{1, 1, 3, 0, 0}, {1, 1, 2, 0, 0}, {0, 0, 3, 0, 0}},
/* CB index and CB gain */
{
{{6, 1, 1, 0, 0}, {0, 0, 7, 0, 0}, {0, 0,7, 0, 0}},
{{0, 7, 1, 0, 0}, {0, 0, 8, 0, 0}, {0, 0,8, 0, 0}},
{{0, 7, 1, 0, 0}, {0, 0, 8, 0, 0}, {0, 0,8, 0, 0}},
{{0, 7, 1, 0, 0}, {0, 0, 8, 0, 0}, {0, 0,8, 0, 0}}
},
{
{{1, 2, 2, 0, 0}, {1, 2, 1, 0, 0}, {0, 0, 3, 0, 0}},
{{0, 2, 3, 0, 0}, {0, 2, 2, 0, 0}, {0, 0, 3, 0, 0}},
{{0, 1, 4, 0, 0}, {0, 1, 3, 0, 0}, {0, 0, 3, 0, 0}},
{{0, 1, 4, 0, 0}, {0, 1, 3, 0, 0}, {0, 0, 3, 0, 0}}
}
};
/* HP Filters */
const float hpi_zero_coefsTbl[3] =
{
0.92727436f, -1.8544941f, 0.92727436f
};
const float hpi_pole_coefsTbl[3] =
{
1.0f, -1.9059465f, 0.9114024f
};
const float hpo_zero_coefsTbl[3] =
{
0.93980581f, -1.8795834f, 0.93980581f
};
const float hpo_pole_coefsTbl[3] =
{
1.0f, -1.9330735f, 0.93589199f
};
/* LP Filter */
const float lpFilt_coefsTbl[FILTERORDER_DS] =
{
-0.066650f, 0.125000f, 0.316650f,
0.414063f, 0.316650f,
0.125000f, -0.066650f
};
/* State quantization tables */
const float state_sq3Tbl[8] =
{
-3.719849f, -2.177490f, -1.130005f,
-0.309692f, 0.444214f, 1.329712f,
2.436279f, 3.983887f
};
const float state_frgqTbl[64] =
{
1.000085f, 1.071695f, 1.140395f,
1.206868f, 1.277188f, 1.351503f,
1.429380f, 1.500727f, 1.569049f,
1.639599f, 1.707071f, 1.781531f,
1.840799f, 1.901550f, 1.956695f,
2.006750f, 2.055474f, 2.102787f,
2.142819f, 2.183592f, 2.217962f,
2.257177f, 2.295739f, 2.332967f,
2.369248f, 2.402792f, 2.435080f,
2.468598f, 2.503394f, 2.539284f,
2.572944f, 2.605036f, 2.636331f,
2.668939f, 2.698780f, 2.729101f,
2.759786f, 2.789834f, 2.818679f,
2.848074f, 2.877470f, 2.906899f,
2.936655f, 2.967804f, 3.000115f,
3.033367f, 3.066355f, 3.104231f,
3.141499f, 3.183012f, 3.222952f,
3.265433f, 3.308441f, 3.350823f,
3.395275f, 3.442793f, 3.490801f,
3.542514f, 3.604064f, 3.666050f,
3.740994f, 3.830749f, 3.938770f,
4.101764f
};
/* CB tables */
const int search_rangeTbl[5][CB_NSTAGES] =
{
{58, 58, 58},
{108, 44, 44},
{108, 108, 108},
{108, 108, 108},
{108, 108, 108}
};
const int stMemLTbl = 85;
const int memLfTbl[NASUB_MAX] = {147, 147, 147, 147};
/* expansion filter(s) */
const float cbfiltersTbl[CB_FILTERLEN] =
{
-0.034180f, 0.108887f, -0.184326f,
0.806152f, 0.713379f, -0.144043f,
0.083740f, -0.033691f
};
/* Gain Quantization */
const float gain_sq3Tbl[8] =
{
-1.000000f, -0.659973f, -0.330017f,
0.000000f, 0.250000f, 0.500000f,
0.750000f, 1.00000f
};
const float gain_sq4Tbl[16] =
{
-1.049988f, -0.900024f, -0.750000f,
-0.599976f, -0.450012f, -0.299988f,
-0.150024f, 0.000000f, 0.150024f,
0.299988f, 0.450012f, 0.599976f,
0.750000f, 0.900024f, 1.049988f,
1.200012f
};
const float gain_sq5Tbl[32]=
{
0.037476f, 0.075012f, 0.112488f,
0.150024f, 0.187500f, 0.224976f,
0.262512f, 0.299988f, 0.337524f,
0.375000f, 0.412476f, 0.450012f,
0.487488f, 0.525024f, 0.562500f,
0.599976f, 0.637512f, 0.674988f,
0.712524f, 0.750000f, 0.787476f,
0.825012f, 0.862488f, 0.900024f,
0.937500f, 0.974976f, 1.012512f,
1.049988f, 1.087524f, 1.125000f,
1.162476f, 1.200012f
};
/* Enhancer - Upsamling a factor 4 (ENH_UPS0 = 4) */
const float polyphaserTbl[ENH_UPS0*(2*ENH_FL0+1)] =
{
0.000000f, 0.000000f, 0.000000f,
1.000000f,
0.000000f, 0.000000f, 0.000000f,
0.015625f, -0.076904f, 0.288330f,
0.862061f,
-0.106445f, 0.018799f, -0.015625f,
0.023682f, -0.124268f, 0.601563f,
0.601563f,
-0.124268f, 0.023682f, -0.023682f,
0.018799f, -0.106445f, 0.862061f,
0.288330f,
-0.076904f, 0.015625f, -0.018799f
};
const float enh_plocsTbl[ENH_NBLOCKS_TOT] =
{
40.0f, 120.0f,
200.0f, 280.0f, 360.0f,
440.0f, 520.0f, 600.0f
};
/* LPC analysis and quantization */
const int dim_lsfCbTbl[LSF_NSPLIT] = {3, 3, 4};
const int size_lsfCbTbl[LSF_NSPLIT] = {64, 128, 128};
const float lsfmeanTbl[ILBC_LPC_FILTERORDER] =
{
0.281738f, 0.445801f, 0.663330f,
0.962524f, 1.251831f, 1.533081f,
1.850586f, 2.137817f, 2.481445f,
2.777344f
};
const float lsf_weightTbl_30ms[6] =
{
1.0f/2.0f, 1.0f,
2.0f/3.0f,
1.0f/3.0f, 0.0f, 0.0f
};
const float lsf_weightTbl_20ms[4] =
{
3.0f/4.0f, 2.0f/4.0f,
1.0f/4.0f, 0.0f
};
/* Hanning LPC window */
const float lpc_winTbl[ILBC_BLOCK_LEN_MAX] =
{
0.000183f, 0.000671f, 0.001526f,
0.002716f, 0.004242f, 0.006104f,
0.008301f, 0.010834f, 0.013702f,
0.016907f, 0.020416f, 0.024261f,
0.028442f, 0.032928f, 0.037750f,
0.042877f, 0.048309f, 0.054047f,
0.060089f, 0.066437f, 0.073090f,
0.080017f, 0.087219f, 0.094727f,
0.102509f, 0.110535f, 0.118835f,
0.127411f, 0.136230f, 0.145294f,
0.154602f, 0.164154f, 0.173920f,
0.183899f, 0.194122f, 0.204529f,
0.215149f, 0.225952f, 0.236938f,
0.248108f, 0.259460f, 0.270966f,
0.282654f, 0.294464f, 0.306396f,
0.318481f, 0.330688f, 0.343018f,
0.355438f, 0.367981f, 0.380585f,
0.393280f, 0.406067f, 0.418884f,
0.431763f, 0.444702f, 0.457672f,
0.470673f, 0.483704f, 0.496735f,
0.509766f, 0.522797f, 0.535828f,
0.548798f, 0.561768f, 0.574677f,
0.587524f, 0.600342f, 0.613068f,
0.625732f, 0.638306f, 0.650787f,
0.663147f, 0.675415f, 0.687561f,
0.699585f, 0.711487f, 0.723206f,
0.734802f, 0.746216f, 0.757477f,
0.768585f, 0.779480f, 0.790192f,
0.800720f, 0.811005f, 0.821106f,
0.830994f, 0.840668f, 0.850067f,
0.859253f, 0.868225f, 0.876892f,
0.885345f, 0.893524f, 0.901428f,
0.909058f, 0.916412f, 0.923492f,
0.930267f, 0.936768f, 0.942963f,
0.948853f, 0.954437f, 0.959717f,
0.964691f, 0.969360f, 0.973694f,
0.977692f, 0.981384f, 0.984741f,
0.987762f, 0.990479f, 0.992828f,
0.994873f, 0.996552f, 0.997925f,
0.998932f, 0.999603f, 0.999969f,
0.999969f, 0.999603f, 0.998932f,
0.997925f, 0.996552f, 0.994873f,
0.992828f, 0.990479f, 0.987762f,
0.984741f, 0.981384f, 0.977692f,
0.973694f, 0.969360f, 0.964691f,
0.959717f, 0.954437f, 0.948853f,
0.942963f, 0.936768f, 0.930267f,
0.923492f, 0.916412f, 0.909058f,
0.901428f, 0.893524f, 0.885345f,
0.876892f, 0.868225f, 0.859253f,
0.850067f, 0.840668f, 0.830994f,
0.821106f, 0.811005f, 0.800720f,
0.790192f, 0.779480f, 0.768585f,
0.757477f, 0.746216f, 0.734802f,
0.723206f, 0.711487f, 0.699585f,
0.687561f, 0.675415f, 0.663147f,
0.650787f, 0.638306f, 0.625732f,
0.613068f, 0.600342f, 0.587524f,
0.574677f, 0.561768f, 0.548798f,
0.535828f, 0.522797f, 0.509766f,
0.496735f, 0.483704f, 0.470673f,
0.457672f, 0.444702f, 0.431763f,
0.418884f, 0.406067f, 0.393280f,
0.380585f, 0.367981f, 0.355438f,
0.343018f, 0.330688f, 0.318481f,
0.306396f, 0.294464f, 0.282654f,
0.270966f, 0.259460f, 0.248108f,
0.236938f, 0.225952f, 0.215149f,
0.204529f, 0.194122f, 0.183899f,
0.173920f, 0.164154f, 0.154602f,
0.145294f, 0.136230f, 0.127411f,
0.118835f, 0.110535f, 0.102509f,
0.094727f, 0.087219f, 0.080017f,
0.073090f, 0.066437f, 0.060089f,
0.054047f, 0.048309f, 0.042877f,
0.037750f, 0.032928f, 0.028442f,
0.024261f, 0.020416f, 0.016907f,
0.013702f, 0.010834f, 0.008301f,
0.006104f, 0.004242f, 0.002716f,
0.001526f, 0.000671f, 0.000183f
};
/* Asymmetric LPC window */
const float lpc_asymwinTbl[ILBC_BLOCK_LEN_MAX] =
{
0.000061f, 0.000214f, 0.000458f,
0.000824f, 0.001282f, 0.001831f,
0.002472f, 0.003235f, 0.004120f,
0.005066f, 0.006134f, 0.007294f,
0.008545f, 0.009918f, 0.011383f,
0.012939f, 0.014587f, 0.016357f,
0.018219f, 0.020172f, 0.022217f,
0.024353f, 0.026611f, 0.028961f,
0.031372f, 0.033905f, 0.036530f,
0.039276f, 0.042084f, 0.044983f,
0.047974f, 0.051086f, 0.054260f,
0.057526f, 0.060883f, 0.064331f,
0.067871f, 0.071503f, 0.075226f,
0.079010f, 0.082916f, 0.086884f,
0.090942f, 0.095062f, 0.099304f,
0.103607f, 0.107971f, 0.112427f,
0.116974f, 0.121582f, 0.126282f,
0.131073f, 0.135895f, 0.140839f,
0.145813f, 0.150879f, 0.156006f,
0.161224f, 0.166504f, 0.171844f,
0.177246f, 0.182709f, 0.188263f,
0.193848f, 0.199524f, 0.205231f,
0.211029f, 0.216858f, 0.222778f,
0.228729f, 0.234741f, 0.240814f,
0.246918f, 0.253082f, 0.259308f,
0.265564f, 0.271881f, 0.278259f,
0.284668f, 0.291107f, 0.297607f,
0.304138f, 0.310730f, 0.317322f,
0.323975f, 0.330658f, 0.337372f,
0.344147f, 0.350922f, 0.357727f,
0.364594f, 0.371460f, 0.378357f,
0.385284f, 0.392212f, 0.399170f,
0.406158f, 0.413177f, 0.420197f,
0.427246f, 0.434296f, 0.441376f,
0.448456f, 0.455536f, 0.462646f,
0.469757f, 0.476868f, 0.483978f,
0.491089f, 0.498230f, 0.505341f,
0.512451f, 0.519592f, 0.526703f,
0.533813f, 0.540924f, 0.548004f,
0.555084f, 0.562164f, 0.569244f,
0.576294f, 0.583313f, 0.590332f,
0.597321f, 0.604309f, 0.611267f,
0.618195f, 0.625092f, 0.631989f,
0.638855f, 0.645660f, 0.652466f,
0.659241f, 0.665985f, 0.672668f,
0.679352f, 0.685974f, 0.692566f,
0.699127f, 0.705658f, 0.712128f,
0.718536f, 0.724945f, 0.731262f,
0.737549f, 0.743805f, 0.750000f,
0.756134f, 0.762238f, 0.768280f,
0.774261f, 0.780182f, 0.786072f,
0.791870f, 0.797638f, 0.803314f,
0.808960f, 0.814514f, 0.820038f,
0.825470f, 0.830841f, 0.836151f,
0.841400f, 0.846558f, 0.851654f,
0.856689f, 0.861633f, 0.866516f,
0.871338f, 0.876068f, 0.880737f,
0.885315f, 0.889801f, 0.894226f,
0.898560f, 0.902832f, 0.907013f,
0.911102f, 0.915100f, 0.919037f,
0.922882f, 0.926636f, 0.930328f,
0.933899f, 0.937408f, 0.940796f,
0.944122f, 0.947357f, 0.950470f,
0.953522f, 0.956482f, 0.959351f,
0.962097f, 0.964783f, 0.967377f,
0.969849f, 0.972229f, 0.974518f,
0.976715f, 0.978821f, 0.980835f,
0.982727f, 0.984528f, 0.986237f,
0.987854f, 0.989380f, 0.990784f,
0.992096f, 0.993317f, 0.994415f,
0.995422f, 0.996338f, 0.997162f,
0.997864f, 0.998474f, 0.998962f,
0.999390f, 0.999695f, 0.999878f,
0.999969f, 0.999969f, 0.996918f,
0.987701f, 0.972382f, 0.951050f,
0.923889f, 0.891022f, 0.852631f,
0.809021f, 0.760406f, 0.707092f,
0.649445f, 0.587799f, 0.522491f,
0.453979f, 0.382690f, 0.309021f,
0.233459f, 0.156433f, 0.078461f
};
/* Lag window for LPC */
const float lpc_lagwinTbl[ILBC_LPC_FILTERORDER + 1] =
{
1.000100f, 0.998890f, 0.995569f,
0.990057f, 0.982392f,
0.972623f, 0.960816f, 0.947047f,
0.931405f, 0.913989f, 0.894909f
};
/* LSF quantization*/
const float lsfCbTbl[64 * 3 + 128 * 3 + 128 * 4] =
{
0.155396f, 0.273193f, 0.451172f,
0.390503f, 0.648071f, 1.002075f,
0.440186f, 0.692261f, 0.955688f,
0.343628f, 0.642334f, 1.071533f,
0.318359f, 0.491577f, 0.670532f,
0.193115f, 0.375488f, 0.725708f,
0.364136f, 0.510376f, 0.658691f,
0.297485f, 0.527588f, 0.842529f,
0.227173f, 0.365967f, 0.563110f,
0.244995f, 0.396729f, 0.636475f,
0.169434f, 0.300171f, 0.520264f,
0.312866f, 0.464478f, 0.643188f,
0.248535f, 0.429932f, 0.626099f,
0.236206f, 0.491333f, 0.817139f,
0.334961f, 0.625122f, 0.895752f,
0.343018f, 0.518555f, 0.698608f,
0.372803f, 0.659790f, 0.945435f,
0.176880f, 0.316528f, 0.581421f,
0.416382f, 0.625977f, 0.805176f,
0.303223f, 0.568726f, 0.915039f,
0.203613f, 0.351440f, 0.588135f,
0.221191f, 0.375000f, 0.614746f,
0.199951f, 0.323364f, 0.476074f,
0.300781f, 0.433350f, 0.566895f,
0.226196f, 0.354004f, 0.507568f,
0.300049f, 0.508179f, 0.711670f,
0.312012f, 0.492676f, 0.763428f,
0.329956f, 0.541016f, 0.795776f,
0.373779f, 0.604614f, 0.928833f,
0.210571f, 0.452026f, 0.755249f,
0.271118f, 0.473267f, 0.662476f,
0.285522f, 0.436890f, 0.634399f,
0.246704f, 0.565552f, 0.859009f,
0.270508f, 0.406250f, 0.553589f,
0.361450f, 0.578491f, 0.813843f,
0.342651f, 0.482788f, 0.622437f,
0.340332f, 0.549438f, 0.743164f,
0.200439f, 0.336304f, 0.540894f,
0.407837f, 0.644775f, 0.895142f,
0.294678f, 0.454834f, 0.699097f,
0.193115f, 0.344482f, 0.643188f,
0.275757f, 0.420776f, 0.598755f,
0.380493f, 0.608643f, 0.861084f,
0.222778f, 0.426147f, 0.676514f,
0.407471f, 0.700195f, 1.053101f,
0.218384f, 0.377197f, 0.669922f,
0.313232f, 0.454102f, 0.600952f,
0.347412f, 0.571533f, 0.874146f,
0.238037f, 0.405396f, 0.729492f,
0.223877f, 0.412964f, 0.822021f,
0.395264f, 0.582153f, 0.743896f,
0.247925f, 0.485596f, 0.720581f,
0.229126f, 0.496582f, 0.907715f,
0.260132f, 0.566895f, 1.012695f,
0.337402f, 0.611572f, 0.978149f,
0.267822f, 0.447632f, 0.769287f,
0.250610f, 0.381714f, 0.530029f,
0.430054f, 0.805054f, 1.221924f,
0.382568f, 0.544067f, 0.701660f,
0.383545f, 0.710327f, 1.149170f,
0.271362f, 0.529053f, 0.775513f,
0.246826f, 0.393555f, 0.588623f,
0.266846f, 0.422119f, 0.676758f,
0.311523f, 0.580688f, 0.838623f,
1.331177f, 1.576782f, 1.779541f,
1.160034f, 1.401978f, 1.768188f,
1.161865f, 1.525146f, 1.715332f,
0.759521f, 0.913940f, 1.119873f,
0.947144f, 1.121338f, 1.282471f,
1.015015f, 1.557007f, 1.804932f,
1.172974f, 1.402100f, 1.692627f,
1.087524f, 1.474243f, 1.665405f,
0.899536f, 1.105225f, 1.406250f,
1.148438f, 1.484741f, 1.796265f,
0.785645f, 1.209839f, 1.567749f,
0.867798f, 1.166504f, 1.450684f,
0.922485f, 1.229858f, 1.420898f,
0.791260f, 1.123291f, 1.409546f,
0.788940f, 0.966064f, 1.340332f,
1.051147f, 1.272827f, 1.556641f,
0.866821f, 1.181152f, 1.538818f,
0.906738f, 1.373535f, 1.607910f,
1.244751f, 1.581421f, 1.933838f,
0.913940f, 1.337280f, 1.539673f,
0.680542f, 0.959229f, 1.662720f,
0.887207f, 1.430542f, 1.800781f,
0.912598f, 1.433594f, 1.683960f,
0.860474f, 1.060303f, 1.455322f,
1.005127f, 1.381104f, 1.706909f,
0.800781f, 1.363892f, 1.829102f,
0.781860f, 1.124390f, 1.505981f,
1.003662f, 1.471436f, 1.684692f,
0.981323f, 1.309570f, 1.618042f,
1.228760f, 1.554321f, 1.756470f,
0.734375f, 0.895752f, 1.225586f,
0.841797f, 1.055664f, 1.249268f,
0.920166f, 1.119385f, 1.486206f,
0.894409f, 1.539063f, 1.828979f,
1.283691f, 1.543335f, 1.858276f,
0.676025f, 0.933105f, 1.490845f,
0.821289f, 1.491821f, 1.739868f,
0.923218f, 1.144653f, 1.580566f,
1.057251f, 1.345581f, 1.635864f,
0.888672f, 1.074951f, 1.353149f,
0.942749f, 1.195435f, 1.505493f,
1.492310f, 1.788086f, 2.039673f,
1.070313f, 1.634399f, 1.860962f,
1.253296f, 1.488892f, 1.686035f,
0.647095f, 0.864014f, 1.401855f,
0.866699f, 1.254883f, 1.453369f,
1.063965f, 1.532593f, 1.731323f,
1.167847f, 1.521484f, 1.884033f,
0.956055f, 1.502075f, 1.745605f,
0.928711f, 1.288574f, 1.479614f,
1.088013f, 1.380737f, 1.570801f,
0.905029f, 1.186768f, 1.371948f,
1.057861f, 1.421021f, 1.617432f,
1.108276f, 1.312500f, 1.501465f,
0.979492f, 1.416992f, 1.624268f,
1.276001f, 1.661011f, 2.007935f,
0.993042f, 1.168579f, 1.331665f,
0.778198f, 0.944946f, 1.235962f,
1.223755f, 1.491333f, 1.815674f,
0.852661f, 1.350464f, 1.722290f,
1.134766f, 1.593140f, 1.787354f,
1.051392f, 1.339722f, 1.531006f,
0.803589f, 1.271240f, 1.652100f,
0.755737f, 1.143555f, 1.639404f,
0.700928f, 0.837280f, 1.130371f,
0.942749f, 1.197876f, 1.669800f,
0.993286f, 1.378296f, 1.566528f,
0.801025f, 1.095337f, 1.298950f,
0.739990f, 1.032959f, 1.383667f,
0.845703f, 1.072266f, 1.543823f,
0.915649f, 1.072266f, 1.224487f,
1.021973f, 1.226196f, 1.481323f,
0.999878f, 1.204102f, 1.555908f,
0.722290f, 0.913940f, 1.340210f,
0.673340f, 0.835938f, 1.259521f,
0.832397f, 1.208374f, 1.394165f,
0.962158f, 1.576172f, 1.912842f,
1.166748f, 1.370850f, 1.556763f,
0.946289f, 1.138550f, 1.400391f,
1.035034f, 1.218262f, 1.386475f,
1.393799f, 1.717773f, 2.000244f,
0.972656f, 1.260986f, 1.760620f,
1.028198f, 1.288452f, 1.484619f,
0.773560f, 1.258057f, 1.756714f,
1.080322f, 1.328003f, 1.742676f,
0.823975f, 1.450806f, 1.917725f,
0.859009f, 1.016602f, 1.191895f,
0.843994f, 1.131104f, 1.645020f,
1.189697f, 1.702759f, 1.894409f,
1.346680f, 1.763184f, 2.066040f,
0.980469f, 1.253784f, 1.441650f,
1.338135f, 1.641968f, 1.932739f,
1.223267f, 1.424194f, 1.626465f,
0.765747f, 1.004150f, 1.579102f,
1.042847f, 1.269165f, 1.647461f,
0.968750f, 1.257568f, 1.555786f,
0.826294f, 0.993408f, 1.275146f,
0.742310f, 0.950439f, 1.430542f,
1.054321f, 1.439819f, 1.828003f,
1.072998f, 1.261719f, 1.441895f,
0.859375f, 1.036377f, 1.314819f,
0.895752f, 1.267212f, 1.605591f,
0.805420f, 0.962891f, 1.142334f,
0.795654f, 1.005493f, 1.468506f,
1.105347f, 1.313843f, 1.584839f,
0.792236f, 1.221802f, 1.465698f,
1.170532f, 1.467651f, 1.664063f,
0.838257f, 1.153198f, 1.342163f,
0.968018f, 1.198242f, 1.391235f,
1.250122f, 1.623535f, 1.823608f,
0.711670f, 1.058350f, 1.512085f,
1.204834f, 1.454468f, 1.739136f,
1.137451f, 1.421753f, 1.620117f,
0.820435f, 1.322754f, 1.578247f,
0.798706f, 1.005005f, 1.213867f,
0.980713f, 1.324951f, 1.512939f,
1.112305f, 1.438843f, 1.735596f,
1.135498f, 1.356689f, 1.635742f,
1.101318f, 1.387451f, 1.686523f,
0.849854f, 1.276978f, 1.523438f,
1.377930f, 1.627563f, 1.858154f,
0.884888f, 1.095459f, 1.287476f,
1.289795f, 1.505859f, 1.756592f,
0.817505f, 1.384155f, 1.650513f,
1.446655f, 1.702148f, 1.931885f,
0.835815f, 1.023071f, 1.385376f,
0.916626f, 1.139038f, 1.335327f,
0.980103f, 1.174072f, 1.453735f,
1.705688f, 2.153809f, 2.398315f, 2.743408f,
1.797119f, 2.016846f, 2.445679f, 2.701904f,
1.990356f, 2.219116f, 2.576416f, 2.813477f,
1.849365f, 2.190918f, 2.611572f, 2.835083f,
1.657959f, 1.854370f, 2.159058f, 2.726196f,
1.437744f, 1.897705f, 2.253174f, 2.655396f,
2.028687f, 2.247314f, 2.542358f, 2.875854f,
1.736938f, 1.922119f, 2.185913f, 2.743408f,
1.521606f, 1.870972f, 2.526855f, 2.786987f,
1.841431f, 2.050659f, 2.463623f, 2.857666f,
1.590088f, 2.067261f, 2.427979f, 2.794434f,
1.746826f, 2.057373f, 2.320190f, 2.800781f,
1.734619f, 1.940552f, 2.306030f, 2.826416f,
1.786255f, 2.204468f, 2.457520f, 2.795288f,
1.861084f, 2.170532f, 2.414551f, 2.763672f,
2.001465f, 2.307617f, 2.552734f, 2.811890f,
1.784424f, 2.124146f, 2.381592f, 2.645508f,
1.888794f, 2.135864f, 2.418579f, 2.861206f,
2.301147f, 2.531250f, 2.724976f, 2.913086f,
1.837769f, 2.051270f, 2.261963f, 2.553223f,
2.012939f, 2.221191f, 2.440186f, 2.678101f,
1.429565f, 1.858276f, 2.582275f, 2.845703f,
1.622803f, 1.897705f, 2.367310f, 2.621094f,
1.581543f, 1.960449f, 2.515869f, 2.736450f,
1.419434f, 1.933960f, 2.394653f, 2.746704f,
1.721924f, 2.059570f, 2.421753f, 2.769653f,
1.911011f, 2.220703f, 2.461060f, 2.740723f,
1.581177f, 1.860840f, 2.516968f, 2.874634f,
1.870361f, 2.098755f, 2.432373f, 2.656494f,
2.059692f, 2.279785f, 2.495605f, 2.729370f,
1.815674f, 2.181519f, 2.451538f, 2.680542f,
1.407959f, 1.768311f, 2.343018f, 2.668091f,
2.168701f, 2.394653f, 2.604736f, 2.829346f,
1.636230f, 1.865723f, 2.329102f, 2.824219f,
1.878906f, 2.139526f, 2.376709f, 2.679810f,
1.765381f, 1.971802f, 2.195435f, 2.586914f,
2.164795f, 2.410889f, 2.673706f, 2.903198f,
2.071899f, 2.331055f, 2.645874f, 2.907104f,
2.026001f, 2.311523f, 2.594849f, 2.863892f,
1.948975f, 2.180786f, 2.514893f, 2.797852f,
1.881836f, 2.130859f, 2.478149f, 2.804199f,
2.238159f, 2.452759f, 2.652832f, 2.868286f,
1.897949f, 2.101685f, 2.524292f, 2.880127f,
1.856445f, 2.074585f, 2.541016f, 2.791748f,
1.695557f, 2.199097f, 2.506226f, 2.742676f,
1.612671f, 1.877075f, 2.435425f, 2.732910f,
1.568848f, 1.786499f, 2.194580f, 2.768555f,
1.953369f, 2.164551f, 2.486938f, 2.874023f,
1.388306f, 1.725342f, 2.384521f, 2.771851f,
2.115356f, 2.337769f, 2.592896f, 2.864014f,
1.905762f, 2.111328f, 2.363525f, 2.789307f,
1.882568f, 2.332031f, 2.598267f, 2.827637f,
1.683594f, 2.088745f, 2.361938f, 2.608643f,
1.874023f, 2.182129f, 2.536133f, 2.766968f,
1.861938f, 2.070435f, 2.309692f, 2.700562f,
1.722168f, 2.107422f, 2.477295f, 2.837646f,
1.926880f, 2.184692f, 2.442627f, 2.663818f,
2.123901f, 2.337280f, 2.553101f, 2.777466f,
1.588135f, 1.911499f, 2.212769f, 2.543945f,
2.053955f, 2.370850f, 2.712158f, 2.939941f,
2.210449f, 2.519653f, 2.770386f, 2.958618f,
2.199463f, 2.474731f, 2.718262f, 2.919922f,
1.960083f, 2.175415f, 2.608032f, 2.888794f,
1.953735f, 2.185181f, 2.428223f, 2.809570f,
1.615234f, 2.036499f, 2.576538f, 2.834595f,
1.621094f, 2.028198f, 2.431030f, 2.664673f,
1.824951f, 2.267456f, 2.514526f, 2.747925f,
1.994263f, 2.229126f, 2.475220f, 2.833984f,
1.746338f, 2.011353f, 2.588257f, 2.826904f,
1.562866f, 2.135986f, 2.471680f, 2.687256f,
1.748901f, 2.083496f, 2.460938f, 2.686279f,
1.758057f, 2.131470f, 2.636597f, 2.891602f,
2.071289f, 2.299072f, 2.550781f, 2.814331f,
1.839600f, 2.094360f, 2.496460f, 2.723999f,
1.882202f, 2.088257f, 2.636841f, 2.923096f,
1.957886f, 2.153198f, 2.384399f, 2.615234f,
1.992920f, 2.351196f, 2.654419f, 2.889771f,
2.012817f, 2.262451f, 2.643799f, 2.903076f,
2.025635f, 2.254761f, 2.508423f, 2.784058f,
2.316040f, 2.589355f, 2.794189f, 2.963623f,
1.741211f, 2.279541f, 2.578491f, 2.816284f,
1.845337f, 2.055786f, 2.348511f, 2.822021f,
1.679932f, 1.926514f, 2.499756f, 2.835693f,
1.722534f, 1.946899f, 2.448486f, 2.728760f,
1.829834f, 2.043213f, 2.580444f, 2.867676f,
1.676636f, 2.071655f, 2.322510f, 2.704834f,
1.791504f, 2.113525f, 2.469727f, 2.784058f,
1.977051f, 2.215088f, 2.497437f, 2.726929f,
1.800171f, 2.106689f, 2.357788f, 2.738892f,
1.827759f, 2.170166f, 2.525879f, 2.852417f,
1.918335f, 2.132813f, 2.488403f, 2.728149f,
1.916748f, 2.225098f, 2.542603f, 2.857666f,
1.761230f, 1.976074f, 2.507446f, 2.884521f,
2.053711f, 2.367432f, 2.608032f, 2.837646f,
1.595337f, 2.000977f, 2.307129f, 2.578247f,
1.470581f, 2.031250f, 2.375854f, 2.647583f,
1.801392f, 2.128052f, 2.399780f, 2.822876f,
1.853638f, 2.066650f, 2.429199f, 2.751465f,
1.956299f, 2.163696f, 2.394775f, 2.734253f,
1.963623f, 2.275757f, 2.585327f, 2.865234f,
1.887451f, 2.105469f, 2.331787f, 2.587402f,
2.120117f, 2.443359f, 2.733887f, 2.941406f,
1.506348f, 1.766968f, 2.400513f, 2.851807f,
1.664551f, 1.981079f, 2.375732f, 2.774414f,
1.720703f, 1.978882f, 2.391479f, 2.640991f,
1.483398f, 1.814819f, 2.434448f, 2.722290f,
1.769043f, 2.136597f, 2.563721f, 2.774414f,
1.810791f, 2.049316f, 2.373901f, 2.613647f,
1.788330f, 2.005981f, 2.359131f, 2.723145f,
1.785156f, 1.993164f, 2.399780f, 2.832520f,
1.695313f, 2.022949f, 2.522583f, 2.745117f,
1.584106f, 1.965576f, 2.299927f, 2.715576f,
1.894897f, 2.249878f, 2.655884f, 2.897705f,
1.720581f, 1.995728f, 2.299438f, 2.557007f,
1.619385f, 2.173950f, 2.574219f, 2.787964f,
1.883179f, 2.220459f, 2.474365f, 2.825073f,
1.447632f, 2.045044f, 2.555542f, 2.744873f,
1.502686f, 2.156616f, 2.653320f, 2.846558f,
1.711548f, 1.944092f, 2.282959f, 2.685791f,
1.499756f, 1.867554f, 2.341064f, 2.578857f,
1.916870f, 2.135132f, 2.568237f, 2.826050f,
1.498047f, 1.711182f, 2.223267f, 2.755127f,
1.808716f, 1.997559f, 2.256470f, 2.758545f,
2.088501f, 2.402710f, 2.667358f, 2.890259f,
1.545044f, 1.819214f, 2.324097f, 2.692993f,
1.796021f, 2.012573f, 2.505737f, 2.784912f,
1.786499f, 2.041748f, 2.290405f, 2.650757f,
1.938232f, 2.264404f, 2.529053f, 2.796143f
};