tests: Rework the convolve_test

Besides just general cleanup, the major changes are :
 - Fully internal generation of reference data that doesn't
   depend on glibc or even on any floating point math
 - Golden results are included in a .h
   Due to varying precision of different implementation or
   architecture, any kind of textual compare is impossible, so
   we include golden values and compare results of both the
   'base' implementation the potentially 'optimized' one again
   this set of values with a small error tolerance

Change-Id: I4e203d2c4b778af77d630ed15d4cef6b0c0eb76d
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
This commit is contained in:
Sylvain Munaut 2018-12-21 16:38:31 +01:00 committed by tnt
parent a8b3565246
commit 3733ed5097
4 changed files with 938 additions and 180 deletions

View File

@ -2,7 +2,7 @@ include $(top_srcdir)/Makefile.common
AM_CFLAGS = -Wall -I$(top_srcdir)/Transceiver52M -I$(top_srcdir)/Transceiver52M/arch/common $(STD_DEFINES_AND_INCLUDES) -g
EXTRA_DIST = convolve_test.ok
EXTRA_DIST = convolve_test.ok convolve_test_golden.h
noinst_PROGRAMS = \
convolve_test

View File

@ -1,142 +1,323 @@
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "convolve.h"
#define TESTVEC_LEN 1000
#define DO_INIT 1
float x_vect[TESTVEC_LEN];
float y_vect[TESTVEC_LEN];
float h_vect[TESTVEC_LEN];
float *x;
float *h;
float *y;
// ---------------------------------------------------------------------------
// Misc utils
// ---------------------------------------------------------------------------
/* Generate some random values for testing */
void gen_floats(float *vect, int len)
static unsigned long rand_state = 0;
static void
rand_reset(void)
{
int i;
for (i = 0; i < len; i++) {
vect[i] = (float)rand()/(float)(RAND_MAX);
}
rand_state = 0;
}
/* Reset testvectors */
static void reset_testvec(int seed)
static unsigned long
rand_int(void)
{
srand(seed);
memset(x_vect,0,sizeof(x_vect));
memset(y_vect,0,sizeof(y_vect));
memset(h_vect,0,sizeof(h_vect));
rand_state = (1103515245UL * rand_state + 12345UL) & 0x7fffffffUL;
return rand_state;
}
x=x_vect + TESTVEC_LEN/2;
y=y_vect + TESTVEC_LEN/2;
h=h_vect + TESTVEC_LEN/2;
static float
rand_float(void)
{
union {
uint32_t u;
float f;
} r;
uint32_t u = rand_int();
int e = 112 + ((u ^ (u>>8)) & 15);
gen_floats(x_vect,TESTVEC_LEN);
gen_floats(h_vect,TESTVEC_LEN);
r.u = u & 0x007fffffUL; // Mantissa
r.u |= (u & 0x00800000UL) << 8; // Sign
r.u |= (e & 0xffUL) << 23; // Exponent
return r.f;
}
static void
gen_floats(float *vect, int len)
{
int i;
for (i = 0; i < len; i++)
vect[i] = rand_float();
}
/* Show float vector data cut and paste friendly */
static void dump_floats(float *vect, int len, char *name)
static void
dump_floats(float *vect, int len, char *name)
{
int i;
printf("float %s[] = {", name);
printf("static const float %s[] = {\n\t", name);
for(i = 0; i < len; i++) {
printf("%f",vect[i]);
if(i<len-1)
printf(",");
char *end;
if (i == len-1)
end = "\n";
else if ((i&3) == 3)
end = ",\n\t";
else
end = ", ";
printf("%14.7ef%s", vect[i], end);
}
printf("}\n");
printf("};\n");
}
/* Test complex convolution */
static void test_convolve_complex(int h_len)
/* Compare float with tolerance of delta (absolute) and epsilon (relative) */
static int
compare_floats(const float *v0, const float *v1, int len, float delta, float epsilon)
{
int x_len;
int y_len;
int start;
int len;
int i;
x_len=34;
y_len=26;
start=8;
len=26;
reset_testvec(0);
dump_floats(x,x_len,"x");
printf("\n");
dump_floats(h,h_len,"h");
printf("\n");
convolve_complex(x, x_len, h, h_len, y, y_len, start, len);
dump_floats(y,y_len,"y");
printf("\n");
}
for (i=0; i<len; i++)
{
float a = v0[i];
float b = v1[i];
/* Test real convolution */
static void test_convolve_real(int h_len)
{
int x_len;
int y_len;
int start;
int len;
if (fabsf(a - b) < delta)
continue;
x_len=34;
y_len=26;
start=8;
len=26;
reset_testvec(0);
dump_floats(x-30,2*x_len+30,"x");
printf("\n");
dump_floats(h,2*h_len,"h");
printf("\n");
convolve_real(x, x_len, h, h_len, y, y_len, start, len);
dump_floats(y,y_len,"y");
printf("\n");
}
if (fabsf(1.0f - (a/b)) < epsilon)
continue;
int main(void)
{
#if DO_INIT == 1
convolve_init();
#endif
printf("==== TEST COMPLEX BASE IMPLEMENTATION ====\n");
test_convolve_complex(17);
printf("==== TEST COMPLEX SSE3 IMPLEMENTATION: (h_len%%4=0) ====\n");
test_convolve_complex(20);
printf("==== TEST COMPLEX SSE3 IMPLEMENTATION: (h_len%%8=0) ====\n");
test_convolve_complex(16);
printf("\n");
printf("\n");
printf("==== TEST REAL BASE IMPLEMENTATION ====\n");
test_convolve_real(17);
printf("==== TEST REAL SSE3 IMPLEMENTATION (hlen=4) ====\n");
test_convolve_real(4);
printf("==== TEST REAL SSE3 IMPLEMENTATION (hlen=8) ====\n");
test_convolve_real(8);
printf("==== TEST REAL SSE3 IMPLEMENTATION (hlen=12) ====\n");
test_convolve_real(12);
printf("==== TEST REAL SSE3 IMPLEMENTATION (hlen=16) ====\n");
test_convolve_real(16);
printf("==== TEST REAL SSE3 IMPLEMENTATION (hlen=20) ====\n");
test_convolve_real(20);
printf("==== TEST REAL SSE3 IMPLEMENTATION (h_len%%4=0) ====\n");
test_convolve_real(24);
return 1;
}
return 0;
}
// ---------------------------------------------------------------------------
// Golden reference results
// ---------------------------------------------------------------------------
#include "convolve_test_golden.h"
enum test_type {
CONV_REAL_BASE = 0,
CONV_REAL_OPT = 1,
CONV_COMPLEX_BASE = 2,
CONV_COMPLEX_OPT = 3
};
struct test_data {
enum test_type type;
int h_len;
const float *y_ref;
};
static const char *type_name[] = {
"real_base", "real_opt", "complex_base", "complex_opt",
};
static const struct test_data tests[] = {
{ CONV_REAL_BASE, 4, y_ref_real_base_4 },
{ CONV_REAL_BASE, 8, y_ref_real_base_8 },
{ CONV_REAL_BASE, 12, y_ref_real_base_12 },
{ CONV_REAL_BASE, 16, y_ref_real_base_16 },
{ CONV_REAL_BASE, 20, y_ref_real_base_20 },
{ CONV_REAL_BASE, 24, y_ref_real_base_24 },
{ CONV_COMPLEX_BASE, 4, y_ref_complex_base_4 },
{ CONV_COMPLEX_BASE, 8, y_ref_complex_base_8 },
{ CONV_COMPLEX_BASE, 12, y_ref_complex_base_12 },
{ CONV_COMPLEX_BASE, 16, y_ref_complex_base_16 },
{ CONV_COMPLEX_BASE, 20, y_ref_complex_base_20 },
{ CONV_COMPLEX_BASE, 24, y_ref_complex_base_24 },
{ 0, 0, NULL },
};
// ---------------------------------------------------------------------------
// Main testing logic
// ---------------------------------------------------------------------------
struct test_vec
{
float *x;
float *h;
float *y;
int x_len; /* Theses are in # of _floats_ ! */
int h_len; /* Theses are in # of _floats_ ! */
int y_len; /* Theses are in # of _floats_ ! */
};
/* Reset test vectors */
static void
test_vec_reset(struct test_vec *tv, int seed)
{
rand_reset();
memset(tv->x, 0, tv->x_len * sizeof(float));
memset(tv->h, 0, tv->h_len * sizeof(float));
memset(tv->y, 0, tv->y_len * sizeof(float));
gen_floats(tv->x, tv->x_len);
gen_floats(tv->h, tv->h_len);
}
/* Allocate test vectors */
static struct test_vec *
test_vec_alloc(int x_len, int h_len)
{
struct test_vec *tv;
tv = calloc(1, sizeof(struct test_vec));
if (!tv)
return NULL;
tv->x_len = x_len;
tv->h_len = h_len;
tv->y_len = x_len; /* Results can never be longer than x */
tv->x = convolve_h_alloc(x_len);
tv->h = convolve_h_alloc(h_len);
tv->y = convolve_h_alloc(tv->y_len);
test_vec_reset(tv, 0);
return tv;
}
/* Release test vectors */
static void
test_vec_release(struct test_vec *tv)
{
if (!tv)
return;
free(tv->x);
free(tv->h);
free(tv->y);
free(tv);
}
/* Run convolution */
static int
run_convolve(struct test_vec *tv, int h_len, enum test_type type)
{
int x_len;
int start, len;
test_vec_reset(tv, 0);
/* Compute params that fit within our test vectors */
x_len = tv->x_len / 2; /* float vs complex */
start = h_len - 1;
len = x_len - start;
/* Run implementation */
switch (type) {
case CONV_REAL_BASE:
base_convolve_real(
tv->x, x_len,
tv->h, h_len,
tv->y, tv->y_len,
start, len
);
break;
case CONV_REAL_OPT:
convolve_real(
tv->x, x_len,
tv->h, h_len,
tv->y, tv->y_len,
start, len
);
break;
case CONV_COMPLEX_BASE:
base_convolve_complex(
tv->x, x_len,
tv->h, h_len,
tv->y, tv->y_len,
start, len
);
break;
case CONV_COMPLEX_OPT:
convolve_complex(
tv->x, x_len,
tv->h, h_len,
tv->y, tv->y_len,
start, len
);
break;
}
return len * 2;
}
int main(int argc, char *argv[])
{
struct test_vec *tv;
int gen_ref_mode = 0;
char name[80];
int i, j, len;
convolve_init();
/* Mode */
gen_ref_mode = (argc == 2) && !strcmp("genref", argv[1]);
/* Alloc test vectors */
/* All *2 is to account for the facts all vectors are actually
* complex and need two floats */
tv = test_vec_alloc(100*2, 25*2);
/* Dump all input data to make sure we work off the same input data */
if (!gen_ref_mode) {
printf("==== TEST INPUT DATA ====\n");
dump_floats(tv->x, tv->x_len, "x");
dump_floats(tv->h, tv->h_len, "h");
printf("\n");
printf("\n");
}
/* Run through all the tests */
if (!gen_ref_mode)
printf("==== TEST ====\n");
for (i=0; tests[i].h_len; i++)
{
for (j=0; j<(gen_ref_mode ? 1 : 2); j++)
{
len = run_convolve(tv, tests[i].h_len, tests[i].type + j);
snprintf(name, sizeof(name)-1, "y_ref_%s_%d", type_name[tests[i].type + j], tests[i].h_len);
if (gen_ref_mode)
{
/* If in generate mode, output data */
dump_floats(tv->y, len, name);
} else {
/* If in test mode, compare with data */
printf("%s: %s\n",
name,
compare_floats(tests[i].y_ref, tv->y, len, 1e-5f, 1e-5f) ? "FAIL" : "PASS"
);
}
}
}
if (!gen_ref_mode) {
printf("\n");
printf("\n");
}
/* All done ! */
test_vec_release(tv);
return 0;
}

View File

@ -1,72 +1,97 @@
==== TEST COMPLEX BASE IMPLEMENTATION ====
float x[] = {0.828957,0.675654,0.904170,0.191112,0.394521,0.706067,0.868924,0.547397,0.738959,0.932485,0.233119,0.926576,0.551443,0.933420,0.494407,0.552568,0.939129,0.799646,0.814139,0.594497,0.657201,0.995300,0.935852,0.324541,0.874309,0.589157,0.637771,0.759324,0.775421,0.794910,0.262785,0.604379,0.470564,0.166955}
float h[] = {0.726144,0.746635,0.470674,0.211604,0.963092,0.264553,0.265818,0.725771,0.590649,0.313560,0.547613,0.946811,0.793753,0.690502,0.276120,0.792995,0.446645}
float y[] = {0.389293,10.824917,-0.676577,10.619646,0.283489,11.279525,0.384482,11.586230,0.711259,11.540458,-0.391531,11.281723,0.019900,12.278080,-0.070459,11.104558,0.087938,11.825965,-1.003252,11.698885,0.358887,11.911197,-0.678904,11.933812,0.245140,11.886644}
==== TEST COMPLEX SSE3 IMPLEMENTATION: (h_len%4=0) ====
float x[] = {0.828957,0.675654,0.904170,0.191112,0.394521,0.706067,0.868924,0.547397,0.738959,0.932485,0.233119,0.926576,0.551443,0.933420,0.494407,0.552568,0.939129,0.799646,0.814139,0.594497,0.657201,0.995300,0.935852,0.324541,0.874309,0.589157,0.637771,0.759324,0.775421,0.794910,0.262785,0.604379,0.470564,0.166955}
float h[] = {0.726144,0.746635,0.470674,0.211604,0.963092,0.264553,0.265818,0.725771,0.590649,0.313560,0.547613,0.946811,0.793753,0.690502,0.276120,0.792995,0.446645,0.327805,0.785346,0.676628}
float y[] = {-0.641594,12.367426,-0.970113,12.963129,-0.466783,13.747334,0.637486,13.341836,-0.168561,14.091346,0.306652,15.018833,0.233741,14.726789,-0.011241,15.034849,0.000155,13.639509,0.558827,15.495646,-0.406179,14.103148,-0.000244,15.591370,-0.492319,14.785577}
==== TEST COMPLEX SSE3 IMPLEMENTATION: (h_len%8=0) ====
float x[] = {0.828957,0.675654,0.904170,0.191112,0.394521,0.706067,0.868924,0.547397,0.738959,0.932485,0.233119,0.926576,0.551443,0.933420,0.494407,0.552568,0.939129,0.799646,0.814139,0.594497,0.657201,0.995300,0.935852,0.324541,0.874309,0.589157,0.637771,0.759324,0.775421,0.794910,0.262785,0.604379,0.470564,0.166955}
float h[] = {0.726144,0.746635,0.470674,0.211604,0.963092,0.264553,0.265818,0.725771,0.590649,0.313560,0.547613,0.946811,0.793753,0.690502,0.276120,0.792995}
float y[] = {-0.278295,10.097409,0.919633,11.502825,0.340383,10.979163,0.891132,11.679869,0.425363,11.186544,1.099703,12.121126,0.188196,11.180099,0.228905,12.436676,0.149904,11.522589,0.543155,11.703615,0.033465,12.425473,0.561782,12.373415,-0.218184,12.154579}
==== TEST INPUT DATA ====
static const float x[] = {
1.5647994e-02f, -1.3433097e-02f, 8.0661466e-03f, 5.4624092e-05f,
-3.2537399e-04f, 2.4278485e-03f, -2.1165362e-02f, 4.8159473e-03f,
2.1355225e-01f, -1.0417278e-04f, -8.7433815e-04f, -4.1191248e-05f,
1.4847396e-04f, 3.7836733e-05f, 1.7029777e-03f, 1.7994493e-02f,
5.7363566e-05f, 1.9005293e-03f, 2.8903393e-02f, -9.6858083e-04f,
1.3747586e-04f, -3.9022104e-03f, 7.4708782e-02f, -2.6730467e-03f,
1.7153287e-03f, 6.0036813e-04f, 4.0513012e-03f, -1.6489235e-04f,
-3.4497763e-04f, 3.8475581e-02f, 6.2291299e-05f, 6.6989708e-01f,
3.0250011e-03f, 1.8972119e-03f, 9.4924539e-01f, 1.8176478e-01f,
-3.7033458e-03f, -4.3682796e-01f, 1.0680194e-04f, -8.3315128e-05f,
-2.2426756e-02f, 5.3260362e-01f, 8.4926933e-01f, -1.0011558e-04f,
-1.8198654e-03f, 1.1309208e-02f, 1.7689859e-02f, -1.5878773e+00f,
2.4429576e-02f, -2.2855136e-03f, -5.5495123e-03f, -1.2498077e-02f,
-1.6752372e-02f, 1.2960315e-03f, 7.0954882e-02f, -1.5590824e-02f,
2.0499083e-03f, -3.5616606e-01f, 2.7610136e-02f, 8.5417420e-02f,
-4.2664251e-04f, 1.4402850e-03f, -4.8643693e-01f, 1.7741680e-01f,
-9.6604187e-04f, 1.5893934e+00f, -5.6570204e-04f, 1.0304671e-02f,
-1.5468808e-03f, 1.6770978e-02f, 3.0763021e-02f, 9.5863044e-02f,
-1.7137524e-04f, 1.2735781e-01f, 1.3553522e-02f, -7.1923278e-05f,
2.1808405e-01f, -3.4154678e-04f, -4.5713958e-01f, 1.8140655e-03f,
-6.7418534e-01f, -1.0383211e-01f, 1.3225841e-03f, -2.5257194e-01f,
9.0886868e-04f, 1.4233345e-02f, -8.5481010e-02f, -1.0956389e-01f,
-1.1269117e-01f, -1.2924065e-04f, 9.9633269e-02f, -2.9879587e-04f,
1.2630173e-04f, -1.7635620e-03f, -2.5746411e-02f, 8.9132547e-02f,
1.6874328e-03f, 1.0522513e-02f, 5.4692741e-02f, -1.5352159e-03f,
-1.4327426e-02f, -9.3195832e-04f, 1.1896082e-04f, -3.7630927e-03f,
-1.0516988e+00f, -3.1380814e-01f, -2.2425303e-04f, -7.0284848e-05f,
5.0671459e-03f, -1.1134531e-01f, 1.0806708e-04f, 1.4354062e-01f,
-6.5305573e-03f, 2.7675861e-01f, -3.8776125e-04f, -8.5617387e-05f,
4.7151759e-04f, 1.4620343e-01f, 1.1438092e-01f, 4.5707250e-01f,
1.8181421e-01f, 1.4213121e-02f, -3.6397097e-01f, -5.4192659e-04f,
-4.2798415e-01f, 9.3350851e-04f, 1.0392073e-03f, 2.4182081e-02f,
-1.5072421e-04f, -1.8581150e-03f, -4.9158345e-05f, -8.5498526e-05f,
1.0833269e+00f, -5.9226564e-05f, -2.5437584e-02f, -5.2832620e-05f,
2.8377982e-02f, -4.5681797e-02f, -2.4284111e-01f, 2.1328876e-04f,
-9.7929651e-01f, 1.5658283e-04f, -3.7025183e-03f, -2.0111608e-04f,
-2.4641861e-01f, 5.9742248e-01f, -6.4697691e-05f, -1.9186097e-03f,
1.7195708e+00f, -2.5827979e-04f, -9.1248356e-02f, -1.4089289e+00f,
8.7977161e-05f, 8.5069842e-05f, -1.2898034e+00f, -1.5152150e-01f,
1.5210576e-01f, 7.2273717e-04f, 1.3823020e-04f, 7.7009052e-03f,
-4.7274379e-04f, 1.9443777e+00f, -3.2773761e-03f, 9.9636912e-01f,
-2.1603455e-04f, 1.8570988e+00f, -1.1860273e-04f, 3.5464257e-02f,
-1.3853541e-04f, 1.0360291e-02f, 3.8853416e-03f, -1.4075130e-04f,
-7.1190392e-05f, -1.5528130e-03f, 3.5669159e-02f, -2.4105579e-02f,
1.6449700e-03f, -4.9201823e-05f, 1.7070369e+00f, -5.8859095e-02f,
-5.1986475e-02f, 4.5868279e-03f, 7.4677072e-02f, -2.0537584e-04f,
1.4663955e-04f, -2.8706132e-03f, 6.3073174e-05f, 8.3900732e-04f,
1.9868923e+00f, -4.6812827e-03f, 8.9498538e-01f, -3.6815554e-03f,
-3.8766742e-05f, -9.0576988e-03f, 2.3615693e-01f, -4.7979757e-02f,
8.1219165e-05f, -4.2038716e-02f, 2.8626552e-02f, -1.2940569e-03f
};
static const float h[] = {
1.4452726e+00f, -2.3994248e-02f, 5.8419155e-05f, -3.7997228e-04f,
-2.1219695e-02f, 3.4777170e-01f, 7.2262114e-01f, 1.0214672e+00f,
7.8038998e-02f, 1.0222027e-03f, 3.6671492e-01f, 6.7337966e-01f,
-7.3292562e-05f, 3.7689663e-02f, -1.2326082e-01f, -8.9664059e-04f,
4.5764600e-03f, -2.1683607e-01f, -3.9652010e-04f, 4.5392764e-01f,
-7.2978765e-01f, -3.4258855e-03f, 6.1700474e-02f, -7.2056986e-04f,
-1.0217791e-04f, 1.5078529e-04f, -2.8858331e-04f, 2.3752926e-03f,
-5.8771792e-04f, 2.1340945e-03f, -7.5210082e-05f, -1.4894934e+00f,
-9.2567364e-03f, 3.4723855e-03f, -1.0344880e-01f, -2.7948164e-04f,
-6.0153940e-05f, -6.7053002e-04f, -2.1297326e-04f, -1.2413803e-03f,
-3.3611232e-05f, -2.3160460e-03f, 1.5962194e-01f, 1.8822768e-04f,
2.2110565e-01f, -2.8764654e-02f, -1.0809334e-01f, 2.0665471e-03f,
1.3983012e-02f, 1.8321171e-03f
};
==== TEST ====
y_ref_real_base_4: PASS
y_ref_real_opt_4: PASS
y_ref_real_base_8: PASS
y_ref_real_opt_8: PASS
y_ref_real_base_12: PASS
y_ref_real_opt_12: PASS
y_ref_real_base_16: PASS
y_ref_real_opt_16: PASS
y_ref_real_base_20: PASS
y_ref_real_opt_20: PASS
y_ref_real_base_24: PASS
y_ref_real_opt_24: PASS
y_ref_complex_base_4: PASS
y_ref_complex_opt_4: PASS
y_ref_complex_base_8: PASS
y_ref_complex_opt_8: PASS
y_ref_complex_base_12: PASS
y_ref_complex_opt_12: PASS
y_ref_complex_base_16: PASS
y_ref_complex_opt_16: PASS
y_ref_complex_base_20: PASS
y_ref_complex_opt_20: PASS
y_ref_complex_base_24: PASS
y_ref_complex_opt_24: PASS
==== TEST REAL BASE IMPLEMENTATION ====
float x[] = {0.828957,0.675654,0.904170,0.191112,0.394521,0.706067,0.868924,0.547397,0.738959,0.932485,0.233119,0.926576,0.551443,0.933420,0.494407,0.552568,0.939129,0.799646,0.814139,0.594497,0.657201,0.995300,0.935852,0.324541,0.874309,0.589157,0.637771,0.759324,0.775421,0.794910,0.262785,0.604379,0.470564,0.166955}
float h[] = {0.726144,0.746635,0.470674,0.211604,0.963092,0.264553,0.265818,0.725771,0.590649,0.313560,0.547613,0.946811,0.793753,0.690502,0.276120,0.792995,0.446645}
float y[] = {5.354852,5.387001,4.829278,5.046340,5.849788,5.775999,5.653334,5.372714,5.999860,5.593828,5.628739,5.178002,6.010774,6.186034,6.337766,5.538046,5.616131,6.289612,5.486091,5.835261,6.277413,5.894117,5.563587,6.082063,5.828556,6.160175}
==== TEST REAL SSE3 IMPLEMENTATION (hlen=4) ====
float x[] = {0.828957,0.675654,0.904170,0.191112,0.394521,0.706067,0.868924,0.547397,0.738959,0.932485,0.233119,0.926576,0.551443,0.933420,0.494407,0.552568,0.939129,0.799646,0.814139,0.594497,0.657201,0.995300,0.935852,0.324541,0.874309,0.589157,0.637771,0.759324,0.775421,0.794910,0.262785,0.604379,0.470564,0.166955}
float h[] = {0.726144,0.746635,0.470674,0.211604}
float y[] = {1.154625,1.856899,1.754012,1.866038,1.759821,1.614741,1.946849,1.905307,2.034228,1.369325,1.929276,1.644739,1.911431,1.455565,1.751712,1.711433,1.206255,1.551974,1.351406,1.252433,1.410497,1.527218,1.666560,1.330974,1.544475,1.701906}
==== TEST REAL SSE3 IMPLEMENTATION (hlen=8) ====
float x[] = {0.828957,0.675654,0.904170,0.191112,0.394521,0.706067,0.868924,0.547397,0.738959,0.932485,0.233119,0.926576,0.551443,0.933420,0.494407,0.552568,0.939129,0.799646,0.814139,0.594497,0.657201,0.995300,0.935852,0.324541,0.874309,0.589157,0.637771,0.759324,0.775421,0.794910,0.262785,0.604379,0.470564,0.166955}
float h[] = {0.726144,0.746635,0.470674,0.211604,0.963092,0.264553,0.265818,0.725771}
float y[] = {2.966950,2.964003,3.035802,3.567513,2.983864,3.487861,3.089418,3.836586,2.979637,3.173361,3.524760,3.308944,3.511707,2.951268,3.500564,3.466951,3.174077,2.778949,3.124344,2.816606,3.196814,2.774090,3.272130,2.980138,2.646414,3.090803}
==== TEST REAL SSE3 IMPLEMENTATION (hlen=12) ====
float x[] = {0.828957,0.675654,0.904170,0.191112,0.394521,0.706067,0.868924,0.547397,0.738959,0.932485,0.233119,0.926576,0.551443,0.933420,0.494407,0.552568,0.939129,0.799646,0.814139,0.594497,0.657201,0.995300,0.935852,0.324541,0.874309,0.589157,0.637771,0.759324,0.775421,0.794910,0.262785,0.604379,0.470564,0.166955}
float h[] = {0.726144,0.746635,0.470674,0.211604,0.963092,0.264553,0.265818,0.725771,0.590649,0.313560,0.547613,0.946811}
float y[] = {3.906606,3.831477,4.613783,4.371631,4.441847,4.311853,4.446086,5.089131,4.708794,4.314635,4.866886,4.812932,4.678810,4.796319,4.687846,5.426141,4.119072,4.687284,4.516533,4.303559,4.733458,4.146965,5.133350,4.832816,4.598291,4.252030}
==== TEST REAL SSE3 IMPLEMENTATION (hlen=16) ====
float x[] = {0.828957,0.675654,0.904170,0.191112,0.394521,0.706067,0.868924,0.547397,0.738959,0.932485,0.233119,0.926576,0.551443,0.933420,0.494407,0.552568,0.939129,0.799646,0.814139,0.594497,0.657201,0.995300,0.935852,0.324541,0.874309,0.589157,0.637771,0.759324,0.775421,0.794910,0.262785,0.604379,0.470564,0.166955}
float h[] = {0.726144,0.746635,0.470674,0.211604,0.963092,0.264553,0.265818,0.725771,0.590649,0.313560,0.547613,0.946811,0.793753,0.690502,0.276120,0.792995}
float y[] = {4.845784,5.086479,6.160082,6.147918,5.549072,5.538811,6.264142,6.083664,5.942431,5.214122,6.458036,6.120992,6.385656,5.751343,6.099504,6.738166,5.942206,5.756058,6.343914,6.239408,6.090616,6.325348,6.214744,6.674619,5.691174,6.413076}
==== TEST REAL SSE3 IMPLEMENTATION (hlen=20) ====
float x[] = {0.828957,0.675654,0.904170,0.191112,0.394521,0.706067,0.868924,0.547397,0.738959,0.932485,0.233119,0.926576,0.551443,0.933420,0.494407,0.552568,0.939129,0.799646,0.814139,0.594497,0.657201,0.995300,0.935852,0.324541,0.874309,0.589157,0.637771,0.759324,0.775421,0.794910,0.262785,0.604379,0.470564,0.166955}
float h[] = {0.726144,0.746635,0.470674,0.211604,0.963092,0.264553,0.265818,0.725771,0.590649,0.313560,0.547613,0.946811,0.793753,0.690502,0.276120,0.792995,0.446645,0.327805,0.785346,0.676628}
float y[] = {6.148925,6.262301,5.792440,6.652380,6.759685,6.515733,6.943458,6.334218,6.539823,6.542612,7.766725,7.472028,7.258010,6.947061,7.347066,7.503224,7.134092,6.244353,7.690946,7.584768,7.779833,6.845586,7.351567,8.099596,7.393943,7.176465}
==== TEST REAL SSE3 IMPLEMENTATION (h_len%4=0) ====
float x[] = {0.828957,0.675654,0.904170,0.191112,0.394521,0.706067,0.868924,0.547397,0.738959,0.932485,0.233119,0.926576,0.551443,0.933420,0.494407,0.552568,0.939129,0.799646,0.814139,0.594497,0.657201,0.995300,0.935852,0.324541,0.874309,0.589157,0.637771,0.759324,0.775421,0.794910,0.262785,0.604379,0.470564,0.166955}
float h[] = {0.726144,0.746635,0.470674,0.211604,0.963092,0.264553,0.265818,0.725771,0.590649,0.313560,0.547613,0.946811,0.793753,0.690502,0.276120,0.792995,0.446645,0.327805,0.785346,0.676628,0.906507,0.279178,0.015699,0.609179}
float y[] = {7.032490,7.904466,6.745667,7.146502,6.958916,7.972230,7.314566,6.972099,7.773273,7.740826,7.380684,7.907260,8.446323,7.862378,8.022881,7.726059,7.748359,7.602177,8.926439,8.905205,8.569546,7.948394,8.588051,8.850824,8.592319,7.636216}

View File

@ -0,0 +1,552 @@
static const float y_ref_real_base_4[] = {
7.3284553e-03f, -1.5985897e-02f, 1.6642426e-01f, -9.8381861e-05f,
-5.6348192e-03f, 3.4816288e-03f, -3.0451396e-02f, 6.9885664e-03f,
3.0986860e-01f, 1.2851838e-02f, -1.2583327e-03f, 9.3199458e-04f,
2.1099672e-02f, -6.8450999e-04f, 1.9472920e-03f, 2.3207793e-02f,
5.4067824e-02f, 8.9792977e-04f, 4.1427527e-02f, -9.0953126e-04f,
3.0942117e-03f, -5.7718079e-03f, 1.0763939e-01f, 2.3943521e-02f,
2.5316875e-03f, 4.8413306e-01f, 8.0398219e-03f, -1.3080114e-02f,
6.8538201e-01f, 1.8695365e-01f, -2.2728609e-02f, 6.4866585e-01f,
4.5831669e-03f, 1.1961757e-02f, 1.3557098e+00f, 6.4754653e-01f,
6.0882354e-01f, -6.4270949e-01f, -1.9183261e-02f, 8.0850981e-03f,
-1.9541480e-02f, -3.7791622e-01f, 1.2447035e+00f, 3.1898677e-02f,
-7.1577514e-03f, 7.2692493e-03f, 1.3580237e-02f, -2.2937140e+00f,
8.6936049e-02f, -1.4597681e-02f, -8.0458717e-03f, -2.7510536e-01f,
-4.2994302e-03f, 7.1154371e-02f, 1.0165509e-01f, -2.3325549e-02f,
-3.4853625e-01f, -3.8657749e-01f, 4.9528107e-02f, 1.2682161e+00f,
-1.0333210e-03f, -2.4188099e-02f, -7.0413989e-01f, 2.6840889e-01f,
2.0866606e-02f, 2.3660243e+00f, -1.5943053e-03f, 1.0489130e-01f,
7.5638304e-03f, 2.1489767e-02f, 2.0176548e-01f, 1.3831037e-01f,
-3.3521327e-01f, 1.8538487e-01f, -4.5787895e-01f, -7.5173743e-02f,
3.3042595e-01f, -1.8080406e-01f, -6.6010201e-01f, 1.8260568e-02f,
-1.0361712e+00f, -2.2955567e-01f, -7.7707589e-02f, -3.6280295e-01f,
7.5696945e-02f, 2.0351490e-02f, -1.2557286e-01f, -1.5961775e-01f,
-1.8147121e-01f, 6.4259678e-02f, 1.4576295e-01f, 5.2804803e-03f,
3.9667360e-02f, -3.8762847e-03f, -4.8724346e-02f, 1.2818055e-01f,
2.8319827e-03f, 1.2508295e-02f, -6.8093723e-01f, -2.2890340e-01f,
1.4476498e-03f, 5.2609704e-03f, 3.7768767e-03f, -8.5916013e-02f,
-1.5200208e+00f, -3.4745008e-01f, -5.0452226e-03f, 1.9683765e-01f,
7.1817860e-03f, -1.6685052e-01f, 5.0476164e-04f, 3.1312299e-01f,
7.3205605e-02f, 7.2717953e-01f, 1.2839527e-01f, 4.5656413e-04f,
-2.6618302e-01f, 2.1063730e-01f, -1.3622481e-01f, 6.6128123e-01f,
2.7258250e-01f, 3.7996478e-02f, -5.2619320e-01f, -2.6390266e-03f,
-6.1858600e-01f, 1.3282325e-03f, 7.8433794e-01f, 3.4908604e-02f,
-4.1587442e-02f, -2.7224086e-03f, 2.1038547e-02f, -3.3133082e-02f,
1.3896170e+00f, 1.0378791e-03f, -7.3926997e-01f, 2.9597912e-05f,
5.9104588e-02f, -6.6171288e-02f, -5.2901757e-01f, 4.3202266e-01f,
-1.4101684e+00f, -1.3837258e-02f, 1.2372340e+00f, -4.0169276e-04f,
-4.5856881e-01f, -1.5467817e-01f, 2.0067864e-03f, 2.7185585e-02f,
1.5532019e+00f, -1.0995004e-01f, 5.4053217e-03f, -2.0325487e+00f,
-3.0759480e-03f, 5.6635980e-03f, -1.8644532e+00f, 1.1858951e+00f,
2.1747603e-01f, 6.7978328e-01f, 1.1318650e-04f, 1.3320798e+00f,
-7.6455571e-04f, 2.7964339e+00f, -4.8343060e-03f, 1.4468675e+00f,
2.4983340e-03f, 2.6836946e+00f, -3.0531082e-04f, 5.0137013e-02f,
2.5576806e-02f, -2.4128137e-03f, 6.0471753e-03f, 2.7244404e-04f,
1.2334052e+00f, -4.4777431e-02f, -2.2237569e-02f, -3.0275624e-02f,
5.7543524e-02f, -3.2028853e-04f, 2.4656518e+00f, -8.7137178e-02f,
-7.5087801e-02f, 7.2964025e-03f, 1.5436978e+00f, -3.6975890e-03f,
6.0478604e-01f, -6.7098038e-03f, -1.8812101e-02f, -5.2548423e-03f,
3.0423059e+00f, -4.1244932e-02f, 1.2885453e+00f, -3.4681331e-02f,
2.0642195e-02f, -1.3136711e-02f
};
static const float y_ref_real_base_8[] = {
2.3463303e-02f, -1.8227151e-02f, 1.6640328e-01f, -3.2330074e-04f,
-8.5613858e-03f, 1.0202680e-02f, -3.0316524e-02f, 9.5708519e-03f,
3.1126371e-01f, 1.2974728e-02f, 8.3076512e-04f, -6.4839720e-04f,
4.8007734e-02f, -1.9489999e-03f, 8.4487526e-03f, 1.8476836e-02f,
5.5679705e-02f, -8.1690572e-02f, 4.1244309e-02f, 1.2904219e-02f,
-1.1391485e-01f, 2.2048743e-01f, 1.0914046e-01f, 1.3074780e-01f,
3.5085729e-01f, 5.5097926e-01f, 8.3524242e-02f, -2.2473586e-01f,
5.8045220e-01f, 1.5280679e-01f, -3.0782428e-02f, 8.4257907e-01f,
3.1209242e-01f, 2.4921113e-01f, 1.4183060e+00f, 6.5208405e-01f,
6.1585087e-01f, -1.2225845e+00f, -6.7787543e-03f, -1.1682822e-01f,
-2.8414838e-02f, -3.8075617e-01f, 1.2378691e+00f, 7.5301081e-02f,
1.4151726e-02f, -8.8495146e-03f, 1.9919781e-02f, -2.4257259e+00f,
1.5717971e-01f, -3.2937329e-02f, -5.8929329e-03f, -4.6383423e-01f,
-1.8264660e-01f, 1.3494150e-01f, 6.3530490e-02f, 5.7130617e-01f,
-3.5261086e-01f, -2.7058131e-01f, 4.8935562e-02f, 1.2594652e+00f,
8.4566139e-03f, 1.2274630e-02f, -7.2868425e-01f, 3.2263610e-01f,
8.2154930e-02f, 2.3757131e+00f, 1.6257222e-01f, 1.1755873e-01f,
-1.4317062e-01f, 5.3268194e-02f, -8.1255190e-02f, 9.8639250e-02f,
-3.7680462e-01f, 9.8163910e-02f, -4.4354576e-01f, -8.9640662e-02f,
2.8687710e-01f, -2.1983516e-01f, -7.0812124e-01f, 9.8803192e-03f,
-1.0052550e+00f, -2.4066174e-01f, -7.0092104e-02f, -3.6477652e-01f,
5.9523612e-02f, 5.3088561e-02f, -1.2520128e-01f, -1.4868818e-01f,
-1.6129650e-01f, 6.4981766e-02f, 2.7441028e-01f, 4.3499433e-02f,
3.8697608e-02f, -5.2973330e-03f, -4.3501323e-01f, 2.6533267e-02f,
-7.9337470e-02f, -2.9691525e-02f, -6.7829162e-01f, -3.0386490e-01f,
1.9309891e-03f, 4.9200453e-02f, 1.3323659e-03f, 8.7561179e-03f,
-1.5347713e+00f, -3.8223338e-01f, -2.7321521e-02f, 2.4866055e-01f,
9.4013810e-02f, 1.2240109e-02f, 1.2888527e-01f, 3.5388958e-01f,
-4.6176109e-02f, 7.2510922e-01f, -5.6938332e-02f, 9.8386465e-04f,
-2.9919535e-01f, 2.1958876e-01f, -2.6973075e-01f, 6.6249424e-01f,
2.7560875e-01f, 3.7826635e-02f, -1.3242088e-01f, 2.9633616e-03f,
-5.1344192e-01f, 1.2812938e-03f, 9.1348612e-01f, 1.8132968e-02f,
-1.2789816e-01f, -6.1843758e-03f, -3.2666114e-01f, -1.0669778e-01f,
1.3118620e+00f, 1.1690492e-03f, -1.0418800e+00f, 2.1912961e-01f,
5.0971918e-02f, 1.5341313e-01f, 1.0156550e-01f, 4.3187100e-01f,
-1.1504548e+00f, -5.1185602e-01f, 1.2114912e+00f, -1.1039987e-01f,
-9.3158031e-01f, -2.1118599e-01f, -4.2810470e-02f, -2.2404011e-01f,
1.5655267e+00f, -2.3002538e-01f, 5.2696159e-03f, -1.5478959e+00f,
-4.3000681e-03f, 5.1827681e-01f, -1.8647711e+00f, 1.9433970e+00f,
2.1693678e-01f, 8.3773124e-01f, 6.1618077e-05f, 1.3388381e+00f,
-3.7471589e-03f, 2.8001621e+00f, -4.7625788e-03f, 1.4462949e+00f,
-1.9483769e-01f, 2.6819887e+00f, 9.3642920e-03f, 4.7676735e-02f,
6.4250010e-01f, -2.3976183e-02f, 1.2017485e-01f, -2.2849534e-03f,
1.2567258e+00f, -4.4598002e-02f, -2.6126206e-01f, -3.0767394e-02f,
-5.2884154e-02f, 2.1750279e-04f, 3.1942191e+00f, -8.7671667e-02f,
3.7906289e-01f, 1.1495687e-02f, 1.6135001e+00f, -2.1212441e-03f,
6.8785673e-01f, -2.4848964e-02f
};
static const float y_ref_real_base_12[] = {
2.7961344e-02f, -1.5535211e-02f, 1.1211979e-01f, 1.6616134e-03f,
-9.5922388e-03f, 9.7375661e-03f, -3.2953177e-02f, 1.2052679e-02f,
3.1152555e-01f, 2.6231505e-02f, 9.9062710e-04f, -4.8942995e-01f,
1.0436741e-01f, 7.7918661e-03f, -6.8452823e-01f, -1.3806035e-01f,
5.8026399e-02f, 2.3703255e-01f, 4.4128276e-02f, 4.6831969e-02f,
-4.5164756e-02f, -1.7020540e-01f, -5.1074868e-01f, 1.3130705e-01f,
3.5283747e-01f, 4.4719061e-01f, 7.6009087e-02f, 9.3393141e-01f,
5.6226599e-01f, 1.5438497e-01f, -2.7694821e-02f, 8.4451401e-01f,
3.2881007e-01f, 2.4729785e-01f, 1.3666317e+00f, 6.4142865e-01f,
6.1595362e-01f, -9.5737642e-01f, -2.6630705e-02f, -1.7900605e-01f,
-5.8118436e-02f, -3.7252441e-01f, 1.5929317e+00f, 4.4281147e-02f,
1.5012758e-02f, -1.1681970e+00f, 1.8011404e-02f, -2.4320295e+00f,
1.6020250e-01f, -3.1992078e-02f, -2.8355956e-02f, -5.2589536e-01f,
-1.8170457e-01f, 4.2031650e-02f, 6.7236036e-02f, 5.7172579e-01f,
-5.3997779e-01f, -2.6963723e-01f, 3.4092841e-01f, 1.2517345e+00f,
5.0172967e-01f, 7.2463937e-02f, -7.3141807e-01f, 5.0788766e-01f,
7.3131524e-02f, 2.3581905e+00f, 2.1800779e-01f, 1.9634761e-01f,
-5.4744519e-02f, 5.3452656e-02f, -1.5430506e-01f, 9.8247126e-02f,
-3.7904060e-01f, 1.0494999e-01f, -4.2419630e-01f, -1.5403992e-01f,
2.8903100e-01f, -2.2765251e-01f, -7.4903780e-01f, 1.1346938e-02f,
-9.9480563e-01f, -2.4016502e-01f, -1.3481325e-01f, -3.8139907e-01f,
8.2696098e-01f, 2.8209475e-01f, -1.2430741e-01f, -1.5539975e-01f,
-1.6980076e-01f, 1.5366061e-01f, 2.7392548e-01f, -4.4134770e-02f,
4.3462750e-02f, -2.0784412e-01f, -4.3469808e-01f, 3.6163740e-02f,
-7.2653949e-02f, -1.0692079e-01f, -7.5054938e-01f, -6.3661212e-01f,
-1.5325515e-01f, 3.9282311e-02f, 2.4099842e-01f, 1.1295346e-02f,
-1.2213932e+00f, -3.8135731e-01f, -2.9585216e-02f, 2.3089527e-01f,
9.2161715e-02f, 1.3585546e-02f, 1.9576776e-01f, 3.5405973e-01f,
-8.3834493e-01f, 7.2514069e-01f, -3.7053145e-02f, -1.7965351e-03f,
-3.2992080e-01f, 2.5293970e-01f, -1.5305904e-01f, 6.6236615e-01f,
9.9028492e-01f, 3.7490807e-02f, -1.4564602e-01f, 3.9972298e-02f,
-3.3809289e-01f, -4.3482783e-01f, 1.0197124e+00f, 1.9279400e-02f,
-1.3895774e+00f, -9.0192623e-02f, -2.6074594e-01f, 9.2151767e-01f,
1.2401221e+00f, -7.6844953e-03f, -9.1630034e-02f, 3.2330477e-01f,
-5.9512623e-02f, 1.5342131e-01f, 9.5472410e-02f, 5.4552627e-01f,
-1.1496159e+00f, -1.8693621e+00f, 1.2138705e+00f, -7.2368956e-01f,
-9.3143082e-01f, -1.5557823e+00f, -4.2747378e-02f, -2.4545878e-01f,
1.5658666e+00f, -2.2911002e-01f, 2.4292611e-03f, -1.5477308e+00f,
-2.0494850e-03f, 5.1797014e-01f, -1.8906828e+00f, 1.9609860e+00f,
3.2104683e-01f, 8.3413792e-01f, -1.2487577e+00f, 1.3819655e+00f,
3.8130190e-02f, 2.7968252e+00f, -5.1419135e-02f, 1.4459964e+00f,
-1.9520834e-01f, 2.6841564e+00f, 1.3225216e-01f, 4.6775803e-02f,
-7.5228769e-01f, -2.0800464e-02f, -5.3376436e-01f, -1.5136832e-04f,
1.2800630e+00f, -4.0968142e-02f, -4.2950559e-01f, 1.6405759e-03f,
-5.1270977e-02f, 3.0794566e-02f
};
static const float y_ref_real_base_16[] = {
2.7960196e-02f, -1.5608220e-02f, 1.1211920e-01f, 1.2566736e-03f,
-9.6653914e-03f, 9.5255282e-03f, -3.3511665e-02f, 1.1909710e-02f,
3.1125349e-01f, 2.6435595e-02f, 8.9632795e-04f, -4.8936245e-01f,
1.0431707e-01f, 7.5235111e-03f, -6.8502074e-01f, -1.3821483e-01f,
5.7783347e-02f, 2.3709093e-01f, 4.4029791e-02f, 4.7762111e-02f,
-4.5183614e-02f, -1.6974604e-01f, -5.1075298e-01f, 1.3147719e-01f,
3.5284108e-01f, 4.4719484e-01f, 7.5972632e-02f, 9.3396825e-01f,
5.6224394e-01f, 1.5459225e-01f, -2.7718859e-02f, 8.4456807e-01f,
3.2883874e-01f, 2.4729541e-01f, 1.3669150e+00f, 6.4119571e-01f,
6.1609471e-01f, -9.5836264e-01f, -2.6580276e-02f, -1.7949018e-01f,
-5.8119580e-02f, -3.7270686e-01f, 1.5929141e+00f, 4.4209335e-02f,
1.5003120e-02f, -1.1683012e+00f, 1.7983941e-02f, -2.4320760e+00f,
1.6010483e-01f, -3.2005005e-02f, -2.8100900e-02f, -5.2588850e-01f,
-1.8119879e-01f, 4.2111177e-02f, 6.7476459e-02f, 5.7190293e-01f,
-5.3990334e-01f, -2.6955387e-01f, 3.4098670e-01f, 1.2518206e+00f,
5.0181293e-01f, 7.2494201e-02f, -7.3143530e-01f, 5.0789922e-01f,
7.3116146e-02f, 2.3581848e+00f, 2.1801257e-01f, 1.9629498e-01f,
-5.4742206e-02f, 5.3421043e-02f, -1.5433398e-01f, 9.8235950e-02f,
-3.7904814e-01f, 1.0495019e-01f, -4.2411873e-01f, -1.5401368e-01f,
2.8965056e-01f, -2.2746690e-01f, -7.4873453e-01f, 1.1446298e-02f,
-9.9470109e-01f, -2.4007829e-01f, -1.3481425e-01f, -3.8147211e-01f,
8.2696420e-01f, 2.8190205e-01f, -1.2430534e-01f, -1.5550524e-01f,
-1.6980885e-01f, 1.5351206e-01f, 2.7384445e-01f, -4.4446655e-02f,
4.3350209e-02f, -2.0799929e-01f, -4.3451613e-01f, 3.6113180e-02f,
-7.2316028e-02f, -1.0692445e-01f, -7.5038928e-01f, -6.3662642e-01f,
-1.5321162e-01f, 3.9276335e-02f, 2.4091691e-01f, 1.1293466e-02f,
-1.2220280e+00f, -3.8135707e-01f, -2.9885026e-02f, 2.3089877e-01f,
9.2059940e-02f, 1.3612399e-02f, 1.9597854e-01f, 3.5407278e-01f,
-8.3770192e-01f, 7.2514516e-01f, -3.6725014e-02f, -1.8414161e-03f,
-3.2967481e-01f, 2.5258878e-01f, -1.5311684e-01f, 6.6219491e-01f,
9.8930633e-01f, 3.7536439e-02f, -1.4608863e-01f, 4.0800616e-02f,
-3.3814532e-01f, -4.3440989e-01f, 1.0204684e+00f, 1.9512335e-02f,
-1.3892946e+00f, -9.0149909e-02f, -2.6065812e-01f, 9.2138225e-01f,
1.2401071e+00f, -8.9044739e-03f, -9.1627970e-02f, 3.2201761e-01f,
-5.9511494e-02f, 1.5184098e-01f, 9.5472880e-02f, 5.4486692e-01f,
-1.1496160e+00f, -1.8695682e+00f, 1.2138683e+00f, -7.2369599e-01f,
-9.3143457e-01f, -1.5557806e+00f, -4.2768840e-02f, -2.4544415e-01f,
1.5657270e+00f, -2.2909844e-01f, 1.4257956e-03f, -1.5476941e+00f,
-2.5173386e-03f, 5.1798445e-01f, -1.8908861e+00f, 1.9609910e+00f,
3.2103050e-01f, 8.3413911e-01f, -1.2489148e+00f, 1.3819662e+00f,
3.6895111e-02f, 2.7968283e+00f, -5.2518524e-02f, 1.4460005e+00f,
-1.9568737e-01f, 2.6841667e+00f, 1.3202193e-01f, 4.6810154e-02f,
-7.5235802e-01f, -2.0760888e-02f
};
static const float y_ref_real_base_20[] = {
-7.0265897e-02f, -3.4402836e-02f, 1.0372016e-01f, 4.4650026e-02f,
-9.8216804e-03f, 1.3545731e-02f, -3.1243330e-02f, -4.3189127e-02f,
2.2360153e-01f, 2.1853276e-02f, -6.7831380e-03f, -4.9043545e-01f,
1.0250363e-01f, 1.7168562e-01f, -6.8770778e-01f, -1.2327935e-01f,
5.8117200e-02f, 2.3840825e-01f, 4.5809470e-02f, 4.7820523e-02f,
-5.2374739e-02f, -1.6814195e-01f, -5.1162338e-01f, 1.6846101e-01f,
3.5006949e-01f, 4.4161758e-01f, 7.5790659e-02f, 9.3267936e-01f,
6.1256939e-01f, 1.3612756e-01f, -2.3115741e-02f, 6.7850077e-01f,
3.2889974e-01f, 2.3149538e-01f, 1.3670783e+00f, 6.3933253e-01f,
6.1292374e-01f, -9.6844250e-01f, -2.6894575e-02f, -1.9355249e-01f,
-5.9435852e-02f, -3.7387869e-01f, 1.5703993e+00f, 4.4267341e-02f,
6.0315184e-02f, -1.1684257e+00f, 9.1958947e-02f, -2.4213393e+00f,
1.6622691e-01f, -4.8931153e-03f, -2.8178021e-02f, -5.2501631e-01f,
-1.7237873e-01f, 5.3313743e-02f, 7.9919480e-02f, 5.7293087e-01f,
-5.4916167e-01f, -2.6954064e-01f, 3.4005255e-01f, 1.2519981e+00f,
5.0446343e-01f, 6.3289568e-02f, -7.3137182e-01f, 5.0598592e-01f,
6.7443475e-02f, 2.3582468e+00f, 2.1921243e-01f, 1.9647266e-01f,
-5.4558575e-02f, 5.3837851e-02f, -4.5539171e-02f, 1.3075757e-01f,
-3.6928999e-01f, 1.0783843e-01f, -4.2463943e-01f, -1.4256206e-01f,
2.8959295e-01f, -2.4130194e-01f, -7.4806011e-01f, -1.8543899e-02f,
-9.9462491e-01f, -2.4273746e-01f, -1.3490504e-01f, -3.9662641e-01f,
8.1519389e-01f, 2.3326436e-01f, -1.4405954e-01f, -1.6120674e-01f,
-1.3381398e-01f, 1.5343134e-01f, 3.2148805e-01f, -4.4539265e-02f,
4.7204461e-02f, -2.1050940e-01f, -4.3474090e-01f, 3.6081567e-02f,
-7.2369292e-02f, -1.0689839e-01f, -8.6246216e-01f, -6.3660979e-01f,
-1.6055819e-01f, 3.9285053e-02f, 2.3843987e-01f, 1.6019637e-02f,
-1.1971095e+00f, -3.8095623e-01f, 7.3722646e-02f, 2.3075338e-01f,
1.0152289e-01f, 1.3596226e-02f, 2.2113830e-01f, 2.9227215e-01f,
-8.3549821e-01f, 7.2011352e-01f, -2.1460648e-01f, -1.7122028e-03f,
-3.3587819e-01f, 3.9837542e-01f, -1.5223609e-01f, 6.7523712e-01f,
1.1227249e+00f, 5.3208686e-02f, -1.4988433e-01f, 4.1713882e-02f,
-3.3956692e-01f, -4.3554237e-01f, 1.0205162e+00f, -1.8215792e-01f,
-1.3889512e+00f, -2.1134096e-01f, -2.6060539e-01f, 7.2004014e-01f,
1.2401205e+00f, -2.9764477e-02f, -9.1612756e-02f, 3.2061791e-01f,
-5.9919737e-02f, 1.5176487e-01f, 9.5441781e-02f, 5.4503030e-01f,
-1.1536689e+00f, -1.8670475e+00f, 1.2132764e+00f, -7.2346520e-01f,
-1.1080534e+00f, -1.5496916e+00f, -5.3197015e-02f, -2.4537317e-01f,
1.5584830e+00f, -2.2911964e-01f, 2.9620124e-04f, -1.5473943e+00f,
-2.8353482e-03f, 5.1792532e-01f, -2.0964823e+00f, 1.9614697e+00f,
2.1000290e-01f, 8.3457404e-01f, -1.2572097e+00f, 1.3829491e+00f,
1.2459218e-02f, 2.8018785e+00f
};
static const float y_ref_real_base_24[] = {
6.2982336e-02f, 1.3970278e-01f, 1.0467178e-01f, -3.0438635e-01f,
-9.9654635e-04f, -2.3906909e-01f, -2.6760638e-02f, -4.6404060e-02f,
2.1134110e-01f, 2.1830209e-02f, 6.0099461e-03f, -4.5517617e-01f,
1.1129893e-01f, 8.1213549e-02f, -6.8123204e-01f, -1.6140017e-01f,
1.1501058e-01f, 2.3319562e-01f, -6.1709087e-02f, -8.4527433e-02f,
-1.3017318e-01f, 2.1048762e-01f, -5.1171911e-01f, 4.2262268e-01f,
3.4631193e-01f, 4.3655500e-01f, 8.2364164e-02f, 9.4278538e-01f,
6.1597699e-01f, 1.7959614e-01f, -4.3720804e-02f, 6.9884765e-01f,
4.2869654e-01f, 2.3120803e-01f, 1.3736876e+00f, 6.5090263e-01f,
3.9073777e-01f, -9.6380943e-01f, -1.3429978e-01f, -2.6751003e-01f,
-4.9761195e-02f, -3.9920104e-01f, 1.5638252e+00f, 2.2336561e-02f,
1.0984164e-02f, -1.1859113e+00f, 9.5989674e-02f, -2.4212317e+00f,
1.8494529e-01f, -1.4965374e-02f, -3.4036286e-02f, -5.0672752e-01f,
-1.8202725e-01f, 7.0033848e-02f, 9.3831271e-02f, 5.7436877e-01f,
-5.4361230e-01f, -2.6958534e-01f, 4.5147169e-01f, 1.2849377e+00f,
2.7197060e-01f, -6.6882321e-03f, -8.9984334e-01f, 4.6791553e-01f,
6.8551719e-02f, 2.3181112e+00f, 2.2075109e-01f, 1.8052138e-01f,
-5.5943530e-02f, 1.3795598e-01f, -4.6718303e-02f, 1.5910694e-01f,
-3.8161126e-01f, 9.0735361e-02f, -4.1892681e-01f, -1.9699816e-02f,
3.8739362e-01f, -1.6514689e-01f, -7.5325614e-01f, -1.6511265e-02f,
-1.1474708e+00f, -2.4523194e-01f, -2.0296241e-01f, -3.9092973e-01f,
8.1534612e-01f, 2.3672272e-01f, -2.6119494e-01f, -1.6151665e-01f,
1.0845751e-01f, 1.5341036e-01f, 4.8571897e-01f, -3.9622501e-02f,
7.5631693e-02f, -2.2064139e-01f, -3.7804839e-01f, 2.8819984e-02f,
-3.2726079e-01f, -1.0680644e-01f, -9.9295360e-01f, -7.0120668e-01f,
-2.1559384e-01f, 1.7155384e-01f, 1.3217717e-02f, 1.1098508e-01f,
-8.0704147e-01f, -2.2904384e-01f, 3.2801881e-01f, -8.0819115e-02f,
2.2633848e-01f, -1.9490245e-01f, -8.0469020e-02f, 2.5875273e-01f,
-1.0077626e+00f, 6.9525474e-01f, -1.9020206e-01f, -2.1006331e-01f,
-3.3561152e-01f, 7.2181660e-01f, -1.5301284e-01f, 1.0051651e+00f,
1.1221669e+00f, 6.1896724e-01f, -1.4992996e-01f, 3.4483558e-01f,
-3.4003645e-01f, -4.2763796e-01f, 1.0213609e+00f, -1.8036865e-01f,
-1.3922024e+00f, -2.0910147e-01f, -2.5290802e-01f, 7.1446770e-01f,
1.0616585e+00f, -2.7260805e-02f, 2.9170352e-01f, 3.0710098e-01f,
1.9299413e-01f, 1.4340605e-01f, 1.0358190e-01f, 5.4602933e-01f,
-1.1417214e+00f, -1.8678058e+00f, 9.9854136e-01f, -7.2323191e-01f,
-7.6547229e-01f, -1.5501947e+00f, 4.6184510e-01f, -2.4595536e-01f,
1.6757400e+00f, -2.2652355e-01f, 5.2466784e-02f, -1.5549043e+00f,
3.1784095e-02f, 5.0111192e-01f
};
static const float y_ref_complex_base_4[] = {
1.2424886e-03f, -3.8097303e-02f, 1.6485806e-01f, 2.1048410e-01f,
-5.4964307e-03f, 7.6871805e-02f, -3.0360205e-02f, 7.2628609e-03f,
2.9147220e-01f, 9.5193144e-03f, -9.4586108e-03f, 1.6037597e-03f,
2.1435840e-02f, 2.8855098e-02f, 6.7026038e-03f, 3.3359118e-02f,
5.8200564e-02f, 7.7245951e-02f, 4.1719154e-02f, 2.6130656e-02f,
2.9592067e-03f, -1.0686801e-03f, 6.8331286e-02f, 2.3206834e-02f,
-6.9511259e-01f, 4.8403400e-01f, -2.2685872e-01f, -1.0065587e-02f,
5.0023317e-01f, 1.1576370e+00f, 3.7633857e-01f, 9.7500110e-01f,
1.5669926e-01f, 1.0349664e-02f, 8.1589693e-01f, 6.0190046e-01f,
4.1321993e-01f, 2.1708071e-01f, -3.0500054e-02f, 3.0158398e-01f,
1.6112695e+00f, -3.6026406e-01f, 1.7992588e+00f, 4.2627834e-02f,
6.0714683e-03f, 1.0133464e-02f, -2.1497929e-02f, -2.3131895e+00f,
1.0235125e-01f, 5.1470339e-02f, 3.6088875e-01f, -2.4819581e-01f,
3.2339133e-02f, 1.0044512e-01f, 6.9968693e-02f, -1.5862614e-02f,
-5.3877610e-01f, -8.8366485e-01f, -1.6336356e+00f, 1.0973979e+00f,
-5.6420326e-01f, -2.4906840e-02f, -7.1999365e-01f, 2.7830413e-01f,
-4.4746608e-02f, 2.3969328e+00f, -1.6477096e-01f, 1.1542892e-01f,
-3.6215313e-02f, 3.5300072e-02f, 2.0448793e-01f, 3.6505157e-01f,
-3.3389169e-01f, -2.0572579e-01f, -3.5245058e-01f, -9.2322028e-01f,
6.2452227e-01f, -4.1897476e-01f, -5.8679944e-01f, 3.0873798e-02f,
-9.3179256e-01f, -3.0037957e-01f, -4.5527220e-02f, -5.0767326e-01f,
7.6346993e-02f, 8.2943477e-02f, -1.2629648e-01f, -1.2274522e-01f,
-2.7190709e-01f, 4.0670574e-02f, 1.0400894e-01f, -4.3404093e-03f,
3.7567653e-02f, 5.2584149e-02f, -4.5095809e-02f, 1.3318327e-01f,
7.2518634e-03f, 7.5858650e-03f, -3.5912099e-01f, -1.3044448e+00f,
1.1062925e-01f, -3.6037543e-01f, 1.1732737e-01f, -8.0421314e-02f,
-1.6354498e+00f, -3.2034269e-01f, -3.3770841e-01f, 1.9020794e-01f,
-9.1596678e-02f, -1.6963938e-01f, -1.4525817e-01f, 3.1346968e-01f,
-4.3788379e-01f, 8.4433669e-01f, -4.5026354e-02f, 2.2596139e-01f,
-2.6689067e-01f, -9.7972065e-02f, -1.2601739e-01f, 9.4717085e-02f,
2.4789748e-01f, -1.1400697e-01f, -5.3271776e-01f, 6.4642527e-03f,
-6.1782092e-01f, 1.1494364e-02f, 7.8500766e-01f, 1.1414497e+00f,
-4.1557498e-02f, 3.4804803e-01f, 6.7717306e-02f, -1.3402831e-02f,
1.4052844e+00f, -2.6313126e-01f, -7.3952270e-01f, -1.0841434e+00f,
5.8159553e-02f, -4.1111353e-01f, -1.1391900e+00f, 1.8522538e-01f,
-1.6159713e+00f, -7.6101877e-02f, 1.2383872e+00f, 1.7562433e+00f,
9.9502963e-01f, 3.5604525e-01f, 4.9185932e-01f, -5.1099802e-03f,
1.7074050e+00f, -1.4686365e+00f, 2.3555815e-02f, -2.3235455e+00f,
-1.1249050e-02f, 5.9190854e-02f, -3.8568850e+00f, 1.2163503e+00f,
-1.4764616e+00f, 6.7262143e-01f, -2.2424378e+00f, 1.3307161e+00f,
-6.3580406e-01f, 2.7962503e+00f, -3.1376937e-03f, 1.4467635e+00f,
4.3612257e-02f, 2.6876206e+00f, 2.1846611e-03f, 5.1418409e-02f,
5.0988425e-02f, 3.3999152e-02f, 1.4476703e-02f, 1.4264252e-02f,
1.2934985e+00f, 1.6994649e+00f, -7.0317499e-03f, 5.0942451e-01f,
5.6134596e-02f, 5.7192378e-02f, 2.4672449e+00f, -1.0195614e-01f,
-7.4836522e-02f, 8.6308271e-03f, 1.5481818e+00f, 2.0240779e+00f,
6.1010611e-01f, 1.5984699e+00f, -8.2612643e-03f, 3.0519968e-01f,
3.0943522e+00f, 1.5195408e-01f, 1.3480808e+00f, 2.6055843e-02f,
3.6348343e-02f, 1.6043816e-02f
};
static const float y_ref_complex_base_8[] = {
1.7419890e-02f, -4.0704954e-02f, 1.6413514e-01f, 2.1042241e-01f,
-2.0612659e-02f, 8.4716007e-02f, -3.1490497e-02f, 1.0974750e-02f,
2.9366228e-01f, 2.9043412e-02f, -4.6395697e-03f, 2.9596973e-03f,
5.0125089e-02f, 7.7959135e-02f, 1.2843234e-02f, 3.0012598e-02f,
5.9073396e-02f, -2.6257858e-03f, -9.6190618e-03f, 3.9715882e-02f,
-5.6509280e-01f, 2.2449504e-01f, 6.0627718e-02f, 1.6782820e-01f,
-4.5272177e-01f, 1.1899462e+00f, 1.4307167e-01f, -2.2322062e-01f,
3.7573221e-01f, 1.1219516e+00f, 9.6543171e-03f, 1.1858230e+00f,
4.6188149e-01f, 8.1937236e-01f, 9.3072242e-01f, 6.0672551e-01f,
1.4895550e+00f, -3.4995845e-01f, -1.4461189e-02f, 1.9294497e-01f,
1.6107516e+00f, -3.6751097e-01f, 1.7918328e+00f, 7.7416286e-02f,
5.1378537e-02f, 4.1829653e-02f, 2.2147447e-01f, -2.4427075e+00f,
1.1554543e-01f, 5.2144978e-02f, 3.5672283e-01f, -4.5551652e-01f,
-3.2537282e-01f, -1.6336080e-01f, -1.0389758e+00f, 5.7760143e-01f,
-5.5196047e-01f, -7.6813650e-01f, -1.6490308e+00f, 1.0887643e+00f,
-6.2408286e-01f, 3.2250889e-02f, -8.3039373e-01f, 3.3276263e-01f,
1.6474463e-02f, 2.4243774e+00f, -5.3585321e-04f, 2.5833863e-01f,
-1.8448403e-01f, -2.6593807e-01f, 9.1597089e-04f, -1.2902047e-01f,
-2.0593479e-01f, -2.9263443e-01f, -3.4331435e-01f, -9.4019455e-01f,
6.5474159e-01f, -5.1990277e-01f, -6.3461000e-01f, -4.9722735e-02f,
-9.0052861e-01f, -2.4448201e-01f, -4.0073816e-02f, -5.1043189e-01f,
-2.4254480e-04f, 9.8358124e-02f, -1.3304462e-01f, -1.0863149e-01f,
-2.5067759e-01f, 7.7683263e-02f, 2.3314585e-01f, 2.5234135e-02f,
5.0960105e-02f, 1.1590591e-02f, -2.2016604e-01f, -6.7666954e-01f,
-7.0224196e-02f, -3.5649132e-02f, -2.8665945e-01f, -1.3759845e+00f,
4.1380534e-03f, -3.1660381e-01f, -7.1493179e-02f, 9.8383427e-03f,
-1.6555260e+00f, -3.5547855e-01f, -4.7564918e-01f, 2.4649589e-01f,
-3.1323361e-01f, 9.3652405e-02f, -2.6894443e-02f, 4.6344903e-01f,
-5.5692858e-01f, 5.8123004e-01f, -2.3190109e-01f, -6.2039871e-02f,
-3.1611770e-01f, -8.8763960e-02f, -2.5829366e-01f, 9.4856501e-02f,
2.5098538e-01f, -7.3357031e-02f, -1.3894446e-01f, 7.4057275e-01f,
-5.1091927e-01f, -3.2870495e-03f, 9.4490921e-01f, 1.1354827e+00f,
-1.2797122e-01f, 1.4418475e-01f, -2.7954480e-01f, -7.4657279e-01f,
1.3051461e+00f, -2.7578172e-01f, -1.4443525e+00f, -1.0325247e+00f,
4.9454577e-02f, -1.2693270e-01f, -4.5532885e-01f, 1.3395584e+00f,
-4.0765232e-01f, -6.3264781e-01f, 1.2197388e+00f, 1.5974625e+00f,
6.2402928e-01f, -5.6325710e-01f, 4.4816345e-01f, -1.5522356e-01f,
1.6421539e+00f, -1.5884782e+00f, -1.3217797e+00f, -1.8393344e+00f,
-7.5535703e-01f, 5.6958872e-01f, -5.1100817e+00f, 1.9736991e+00f,
-1.5031706e+00f, 8.3048064e-01f, -2.2494981e+00f, 1.3375274e+00f,
-6.3866556e-01f, 2.8025601e+00f, -1.1117033e-03f, 1.4474899e+00f,
-1.3754091e-01f, 2.7084646e+00f, 1.4134528e-02f, 1.1448654e-01f,
7.0737326e-01f, 1.1598951e+00f, 1.2558103e-01f, -1.8740421e-02f,
1.3170614e+00f, 1.7498827e+00f, -2.4415883e-01f, 5.0732869e-01f,
-5.4681979e-02f, 1.3185561e-01f, 3.1990941e+00f, 1.2691741e+00f,
3.8209638e-01f, 6.1731285e-01f, 1.6258577e+00f, 2.0354435e+00f,
7.2707796e-01f, 1.7393314e+00f
};
static const float y_ref_complex_base_12[] = {
2.2754405e-02f, -2.4959709e-02f, 1.1140423e-01f, 2.0594525e-01f,
-2.1274345e-02f, 1.1812467e-01f, -3.4952130e-02f, -1.9779785e-03f,
2.9474372e-01f, 4.3768380e-02f, -1.9684235e-02f, -4.8685929e-01f,
-1.8911968e-01f, 8.7108716e-02f, -5.3542912e-01f, -1.2841429e-01f,
-2.2173166e-02f, 7.4634272e-01f, 2.3134986e-01f, -1.3385224e-01f,
-5.8920038e-01f, -1.6588140e-01f, -8.0103523e-01f, 1.5527600e-01f,
-3.3631387e-01f, 1.4765208e+00f, 1.2495972e-01f, 7.5039023e-01f,
1.0807629e+00f, 1.1318747e+00f, -3.3057159e-01f, 1.1950424e+00f,
4.8376998e-01f, 8.0964905e-01f, 8.7543970e-01f, 5.8942461e-01f,
1.4958572e+00f, -4.8936479e-02f, 1.2427349e-01f, 1.1621778e-01f,
1.4651778e+00f, -3.4683874e-01f, 2.1665163e+00f, 4.1882977e-02f,
-2.2530014e-02f, -1.3382288e+00f, -4.6338576e-01f, -2.3439698e+00f,
4.5865497e-01f, 5.3026043e-02f, 3.2930160e-01f, -5.1826239e-01f,
-3.6387286e-01f, -2.4198024e-01f, -1.0722954e+00f, 5.7106918e-01f,
-7.1167880e-01f, -7.6142073e-01f, -1.3569672e+00f, 1.1791412e+00f,
-1.3224502e-01f, -1.6004786e-01f, -7.8645700e-01f, 3.1110200e-01f,
9.9555716e-02f, 2.5537014e+00f, -6.7033367e-03f, 3.3762732e-01f,
-4.3238215e-02f, -3.0443862e-01f, -9.5834918e-02f, -1.6237228e-01f,
-2.0800497e-01f, -2.1616842e-01f, -3.2291621e-01f, -1.0260535e+00f,
6.1608827e-01f, -5.3947967e-01f, -6.6098177e-01f, -4.2084441e-02f,
-8.8710660e-01f, -2.1947564e-01f, -1.0494383e-01f, -5.4465991e-01f,
7.6762575e-01f, 3.3412820e-01f, 9.3989922e-03f, -5.9276694e-01f,
-3.2747287e-01f, 3.9428911e-01f, 2.8387964e-01f, -6.0046993e-02f,
-3.2627407e-02f, -1.9198324e-01f, -3.1424943e-01f, -6.7002589e-01f,
-2.6603388e-03f, -1.1172239e-01f, -4.2372537e-01f, -1.7089566e+00f,
-3.2677546e-01f, -2.7506417e-01f, 2.6082978e-01f, 7.1661465e-02f,
-1.3387995e+00f, -5.5777740e-01f, -4.7837263e-01f, 1.1337535e-01f,
-3.2586664e-01f, 1.8827249e-01f, 4.6074696e-02f, 4.6254495e-01f,
-1.3494617e+00f, 5.7757890e-01f, -2.1204066e-01f, 4.2700914e-01f,
-3.4698835e-01f, -3.0178642e-01f, -1.2089632e-01f, 1.1466332e-01f,
9.5565969e-01f, -1.8672089e-01f, -1.5176465e-01f, 3.8589886e-01f,
-3.3339968e-01f, -2.2788580e-01f, 7.7989864e-01f, 1.0243368e+00f,
-1.2602530e+00f, 1.0775426e-01f, -2.1875513e-01f, 1.0625298e+00f,
1.8727930e+00f, -6.9799137e-01f, -8.0016631e-01f, -9.0421456e-01f,
7.7763014e-03f, -7.1294224e-01f, -4.9317792e-01f, 1.8019344e+00f,
-4.0277326e-01f, -2.0230691e+00f, 3.4593281e-01f, 9.8393953e-01f,
5.9989828e-01f, -1.9092379e+00f, -1.7858426e-01f, -1.7602913e-01f,
2.0291169e+00f, -1.5875722e+00f, -1.3216347e+00f, -1.8392197e+00f,
-7.5081879e-01f, 5.7105029e-01f, -5.1354017e+00f, 1.9902898e+00f,
-1.3884977e+00f, 8.4185839e-01f, -3.5037208e+00f, 1.3678564e+00f,
-5.7006556e-01f, 3.5738621e+00f, -6.2615894e-02f, 1.0531902e+00f,
-1.3683297e-01f, 2.7558026e+00f, 1.3828042e-01f, 9.6027575e-02f,
-6.8843663e-01f, 1.1556158e+00f, -5.2607048e-01f, 8.8221872e-01f,
1.3409892e+00f, 1.7287711e+00f, -4.0928376e-01f, 3.4484482e-01f,
-3.3398446e-02f, 2.6961833e-01f
};
static const float y_ref_complex_base_16[] = {
1.0204787e+00f, -2.5116354e-02f, 1.1270854e-01f, 2.0103452e-01f,
2.4778888e-01f, -1.2959757e+00f, -6.8665636e-01f, 5.4281354e-03f,
2.9484776e-01f, 4.6060674e-02f, 7.7454138e-01f, -4.5325273e-01f,
-1.9038971e-01f, -1.1781888e+00f, -5.2034152e-01f, -1.2409893e-01f,
-2.3876531e+00f, 7.2206217e-01f, 2.3120897e-01f, -1.6914831e-01f,
-6.0406011e-01f, -1.5706220e-01f, -7.9883760e-01f, 1.8044755e-01f,
-3.5950541e-01f, 1.3707930e+00f, -4.0555164e-01f, 7.4748451e-01f,
1.2087665e+00f, 1.0911274e+00f, -3.2778427e-01f, 1.1958064e+00f,
7.4790752e-01f, 1.5342562e+00f, 3.2427189e+00f, 5.8959556e-01f,
1.5075334e+00f, -5.0237663e-02f, 1.4548016e-01f, 1.1796089e-01f,
1.6076640e+00f, -3.9284730e-01f, 2.3559515e+00f, 4.2128317e-02f,
-2.3148807e-02f, -1.3584484e+00f, -4.6423876e-01f, -2.6688182e+00f,
4.6124101e-01f, 7.3441708e-01f, 1.7489634e-01f, 4.8548359e-01f,
-7.3935395e-01f, -2.4636242e-01f, -1.0500691e+00f, 5.6822509e-01f,
-8.7421393e-01f, -6.3411057e-01f, -1.3568634e+00f, 1.3469000e+00f,
-1.3234839e-01f, -3.0886406e-01f, -7.8908366e-01f, 3.1085747e-01f,
2.3230717e-01f, 2.5922649e+00f, 8.7886807e-03f, 3.3502164e-01f,
-4.5756504e-02f, -3.8599223e-01f, -9.7287148e-02f, -1.4092600e-01f,
-2.1361355e-01f, -2.1624582e-01f, -7.9024333e-01f, 5.4044557e-01f,
6.1728191e-01f, -5.4120636e-01f, -8.2578057e-01f, -5.2031111e-02f,
-6.7291415e-01f, -2.1969818e-01f, 3.0724341e-01f, -5.3499347e-01f,
7.6658672e-01f, 3.3450016e-01f, 2.2649126e-01f, -5.9359103e-01f,
3.5297197e-01f, 2.2377004e-01f, 3.0364630e-01f, -3.3092478e-01f,
-3.4685202e-02f, 3.5065371e-01f, -3.1277853e-01f, -3.2924473e-02f,
3.3693776e-02f, -1.1502443e-01f, -4.2638665e-01f, -1.7098157e+00f,
-3.2691288e-01f, -2.7505931e-01f, 2.6066101e-01f, -1.5419489e+00f,
-1.3395123e+00f, -5.1757628e-01f, -5.4671490e-01f, 7.3628947e-02f,
-3.2555306e-01f, 5.5017304e-01f, 4.6626769e-02f, 1.9207590e+00f,
-1.3491123e+00f, 5.8043593e-01f, 6.7814434e-01f, 7.9163253e-01f,
-3.5087463e-01f, -3.0272332e-01f, -1.2275376e-01f, -2.4473832e+00f,
-1.1439939e+00f, -4.7129035e-02f, -1.4907286e-01f, 3.9048588e-01f,
-5.5579591e-01f, 1.6937284e+00f, 7.8226668e-01f, 7.9524314e-01f,
-1.2481414e+00f, 1.0485204e-01f, 2.6774750e+00f, 1.0632656e+00f,
3.3526952e+00f, -6.9430745e-01f, 1.9592261e+00f, -9.0518808e-01f,
5.3978130e-02f, -7.1435422e-01f, -4.8238295e-01f, 1.8014801e+00f,
-4.0336940e-01f, -2.0290630e+00f, 3.4358802e-01f, 9.8404706e-01f,
5.6399149e-01f, -1.9623561e+00f, -1.7862386e-01f, -1.7838813e-01f,
1.9413645e+00f, -4.1300926e+00f, -1.3156767e+00f, -1.7580972e+00f,
-7.5146252e-01f, 4.6377757e-01f, -5.1398821e+00f, 1.9903698e+00f,
-1.3872584e+00f, 8.4193558e-01f, -3.5108459e+00f, -1.5915941e+00f,
-5.7677591e-01f, 2.2450306e+00f, -7.7187814e-02f, 1.0598814e+00f,
-2.0874876e-01f, 2.4064844e+00f, 7.5558253e-02f, 9.6579783e-02f,
-6.9022942e-01f, 1.1135775e+00f
};
static const float y_ref_complex_base_20[] = {
9.2200387e-01f, -4.4163413e-02f, 1.0421737e-01f, 2.4775283e-01f,
2.4950641e-01f, -1.2930077e+00f, -6.8422490e-01f, -5.0231263e-02f,
2.0338279e-01f, 4.1142385e-02f, 7.6579785e-01f, -4.5141840e-01f,
-1.9270325e-01f, -1.0140474e+00f, -5.1752222e-01f, -1.0908435e-01f,
-2.3873334e+00f, 7.2338897e-01f, 2.3257981e-01f, -1.6915460e-01f,
-6.1139292e-01f, -1.5557176e-01f, -7.9969436e-01f, 2.1765921e-01f,
-3.6079517e-01f, 1.3658193e+00f, -4.0393782e-01f, 7.4661899e-01f,
1.2602150e+00f, 1.0727985e+00f, -3.2332528e-01f, 1.0280524e+00f,
7.4258268e-01f, 1.5184158e+00f, 3.2430737e+00f, 5.8771044e-01f,
1.5044163e+00f, -6.0348149e-02f, 1.4486811e-01f, 1.0372563e-01f,
1.6059076e+00f, -3.9360225e-01f, 2.3333092e+00f, 4.3315876e-02f,
2.1781791e-02f, -1.3572373e+00f, -3.9045078e-01f, -2.6594822e+00f,
4.6752658e-01f, 7.5929302e-01f, 1.7562661e-01f, 4.8655730e-01f,
-7.3061436e-01f, -2.3518093e-01f, -1.0372481e+00f, 5.6892079e-01f,
-8.8336241e-01f, -6.3448465e-01f, -1.3577242e+00f, 1.3474387e+00f,
-1.2966169e-01f, -3.1813008e-01f, -7.8932881e-01f, 3.0883539e-01f,
2.2659223e-01f, 2.5923274e+00f, 9.6015278e-03f, 3.3669871e-01f,
-4.5781195e-02f, -3.8491973e-01f, 1.1294759e-02f, -1.0811617e-01f,
-2.0266221e-01f, -2.1701297e-01f, -7.9035515e-01f, 5.5190301e-01f,
6.1783653e-01f, -5.5501902e-01f, -8.2534575e-01f, -8.2019433e-02f,
-6.7313355e-01f, -2.2252220e-01f, 3.0751789e-01f, -5.5045158e-01f,
7.5444525e-01f, 2.8616205e-01f, 2.0515469e-01f, -5.9817088e-01f,
3.8894799e-01f, 2.2470807e-01f, 3.5130596e-01f, -3.3216211e-01f,
-3.0828785e-02f, 3.4665734e-01f, -3.1308788e-01f, -3.4297220e-02f,
3.3646829e-02f, -1.1569370e-01f, -5.3851604e-01f, -1.7101202e+00f,
-3.3428961e-01f, -2.7099931e-01f, 2.5817174e-01f, -1.5359404e+00f,
-1.3144351e+00f, -5.1634777e-01f, -4.4236645e-01f, 7.3222399e-02f,
-3.1569248e-01f, 5.4692268e-01f, 7.1952589e-02f, 1.8568798e+00f,
-1.3507327e+00f, 5.7350892e-01f, 4.9932483e-01f, 7.9134196e-01f,
-3.5765892e-01f, -1.4933908e-01f, -1.1708134e-01f, -2.4339819e+00f,
-1.0106078e+00f, -3.1198170e-02f, -1.4992334e-01f, 3.8687843e-01f,
-5.5467719e-01f, 1.6931285e+00f, 7.8580469e-01f, 5.9357595e-01f,
-1.2529818e+00f, -1.6339438e-02f, 2.6746237e+00f, 8.6191237e-01f,
3.3462768e+00f, -7.1517289e-01f, 1.9591191e+00f, -9.0659070e-01f,
5.3502906e-02f, -7.1447617e-01f, -4.8243019e-01f, 1.8016311e+00f,
-4.0749678e-01f, -2.0286729e+00f, 3.4304601e-01f, 9.8332119e-01f,
3.8735908e-01f, -1.9567962e+00f, -1.8885008e-01f, -1.7242540e-01f,
1.9341036e+00f, -4.1303158e+00f, -1.3168116e+00f, -1.7600046e+00f,
-7.5177813e-01f, 4.6127564e-01f, -5.3454962e+00f, 1.9896934e+00f,
-1.4983364e+00f, 8.4872651e-01f, -3.5192151e+00f, -1.5876620e+00f,
-6.0122353e-01f, 2.2499788e+00f
};
static const float y_ref_complex_base_24[] = {
1.0600923e+00f, 1.3024290e-01f, 5.9496611e-02f, -1.0370921e-01f,
2.5861672e-01f, -1.5463293e+00f, -6.8378156e-01f, -5.3357560e-02f,
1.9118892e-01f, 4.1690204e-02f, 7.7884930e-01f, -4.1818622e-01f,
-1.9432354e-01f, -1.1044692e+00f, -5.0856161e-01f, -1.4816418e-01f,
-2.3316061e+00f, 7.1718377e-01f, 1.2707759e-01f, -2.8757638e-01f,
-6.4352435e-01f, 2.2299384e-01f, -7.9941660e-01f, 4.7296038e-01f,
-3.6058924e-01f, 1.3608670e+00f, -3.9484936e-01f, 7.5584078e-01f,
1.2673070e+00f, 1.1163094e+00f, -3.4373367e-01f, 1.0483888e+00f,
8.4266090e-01f, 1.5109135e+00f, 3.2499497e+00f, 6.1104643e-01f,
1.2797645e+00f, -3.6910795e-02f, 3.0192073e-02f, 3.0663766e-02f,
1.6160251e+00f, -4.1756570e-01f, 2.3229961e+00f, 2.3608156e-02f,
-2.7498744e-02f, -1.3712938e+00f, -3.8667876e-01f, -2.6620634e+00f,
4.8600981e-01f, 7.4944365e-01f, 1.7231010e-01f, 5.0535941e-01f,
-7.3997790e-01f, -2.1840149e-01f, -1.0231740e+00f, 5.6881583e-01f,
-8.7780738e-01f, -6.3411063e-01f, -1.2457681e+00f, 1.3780724e+00f,
-3.7118244e-01f, -3.5782340e-01f, -9.5752192e-01f, 2.7058369e-01f,
2.2347425e-01f, 2.5544822e+00f, 1.4717924e-02f, 3.2073233e-01f,
-3.9489999e-02f, -3.0062625e-01f, 1.0091385e-02f, -7.9756148e-02f,
-2.1108152e-01f, -2.3387817e-01f, -7.7155209e-01f, 6.7185181e-01f,
7.1629977e-01f, -4.8482552e-01f, -8.2950342e-01f, -7.0632443e-02f,
-8.2596958e-01f, -2.1319334e-01f, 2.4015851e-01f, -5.4402274e-01f,
7.5454187e-01f, 2.9061607e-01f, 8.8073313e-02f, -5.9624308e-01f,
6.3121361e-01f, 1.9347335e-01f, 5.1562953e-01f, -3.2625097e-01f,
-3.7161447e-03f, 3.3269337e-01f, -2.5638106e-01f, -3.6533069e-02f,
-2.2134559e-01f, -8.7551713e-02f, -6.7024750e-01f, -1.7747418e+00f,
-3.7213624e-01f, -1.2937516e-01f, 3.2782033e-02f, -1.4374573e+00f,
-9.2007887e-01f, -4.1351610e-01f, -2.2860219e-01f, -2.3540136e-01f,
-1.9029672e-01f, 3.3175626e-01f, -2.3727785e-01f, 1.8609867e+00f,
-1.5229635e+00f, 5.4403216e-01f, 5.1958156e-01f, 5.8600175e-01f,
-3.0352169e-01f, 1.7375669e-01f, -9.3383819e-02f, -2.1039605e+00f,
-9.5350474e-01f, 5.3456688e-01f, -1.4701219e-01f, 6.9001079e-01f,
-5.5055398e-01f, 1.7010454e+00f, 7.8672868e-01f, 5.9525365e-01f,
-1.2562038e+00f, -1.4023125e-02f, 2.6816280e+00f, 8.5530829e-01f,
3.1679361e+00f, -7.0918190e-01f, 2.3406773e+00f, -9.6939969e-01f,
3.0656013e-01f, -7.2086781e-01f, -4.7442725e-01f, 1.7965190e+00f,
-3.9562300e-01f, -2.0293012e+00f, 1.2834491e-01f, 9.8748577e-01f,
7.2980648e-01f, -2.0126021e+00f, 3.2610771e-01f, -1.9837779e-01f,
2.0511889e+00f, -4.1316638e+00f, -1.2659411e+00f, -1.7763804e+00f,
-7.1837723e-01f, 4.4456357e-01f
};