Change in osmo-trx[master]: tests: Rework the convolve_test

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

tnt gerrit-no-reply at lists.osmocom.org
Thu Jan 24 20:02:46 UTC 2019


tnt has submitted this change and it was merged. ( https://gerrit.osmocom.org/12416 )

Change subject: tests: Rework the convolve_test
......................................................................

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 at 246tNt.com>
---
M tests/Transceiver52M/Makefile.am
M tests/Transceiver52M/convolve_test.c
M tests/Transceiver52M/convolve_test.ok
A tests/Transceiver52M/convolve_test_golden.h
4 files changed, 926 insertions(+), 168 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/tests/Transceiver52M/Makefile.am b/tests/Transceiver52M/Makefile.am
index 1f8aa7a..edb812f 100644
--- a/tests/Transceiver52M/Makefile.am
+++ b/tests/Transceiver52M/Makefile.am
@@ -2,7 +2,7 @@
 
 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
diff --git a/tests/Transceiver52M/convolve_test.c b/tests/Transceiver52M/convolve_test.c
index 8ca4b72..cda5385 100644
--- a/tests/Transceiver52M/convolve_test.c
+++ b/tests/Transceiver52M/convolve_test.c
@@ -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 i;
+
+	for (i=0; i<len; i++)
+	{
+		float a = v0[i];
+		float b = v1[i];
+
+		if (fabsf(a - b) < delta)
+			continue;
+
+		if (fabsf(1.0f - (a/b)) < epsilon)
+			continue;
+
+		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 y_len;
-	int start;
-	int len;
+	int start, len;
 
-	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");
+	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;
 }
 
-/* Test real convolution */
-static void test_convolve_real(int h_len)
-{
-	int x_len;
-	int y_len;
-	int start;
-	int len;
 
-	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");
-}
-
-int main(void)
+int main(int argc, char *argv[])
 {
-#if DO_INIT == 1
+	struct test_vec *tv;
+	int gen_ref_mode = 0;
+	char name[80];
+	int i, j, len;
+
 	convolve_init();
-#endif
 
-	printf("==== TEST COMPLEX BASE IMPLEMENTATION ====\n");
-	test_convolve_complex(17);
+	/* Mode */
+	gen_ref_mode = (argc == 2) && !strcmp("genref", argv[1]);
 
-	printf("==== TEST COMPLEX SSE3 IMPLEMENTATION: (h_len%%4=0) ====\n");
-	test_convolve_complex(20);
+	/* 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);
 
-	printf("==== TEST COMPLEX SSE3 IMPLEMENTATION: (h_len%%8=0) ====\n");
-	test_convolve_complex(16);
+	/* 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");
+	}
 
-	printf("\n");
-	printf("\n");
+	/* Run through all the tests */
+	if (!gen_ref_mode)
+		printf("==== TEST  ====\n");
 
-	printf("==== TEST REAL BASE IMPLEMENTATION ====\n");
-	test_convolve_real(17);
+	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);
 
-	printf("==== TEST REAL SSE3 IMPLEMENTATION (hlen=4) ====\n");
-	test_convolve_real(4);
+			snprintf(name, sizeof(name)-1, "y_ref_%s_%d", type_name[tests[i].type + j], tests[i].h_len);
 
-	printf("==== TEST REAL SSE3 IMPLEMENTATION (hlen=8) ====\n");
-	test_convolve_real(8);
+			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"
+				);
+			}
+		}
+	}
 
-	printf("==== TEST REAL SSE3 IMPLEMENTATION (hlen=12) ====\n");
-	test_convolve_real(12);
+	if (!gen_ref_mode) {
+		printf("\n");
+		printf("\n");
+	}
 
-	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);
+	/* All done ! */
+	test_vec_release(tv);
 
 	return 0;
 }
diff --git a/tests/Transceiver52M/convolve_test.ok b/tests/Transceiver52M/convolve_test.ok
index 5766252..9bfe4e7 100644
--- a/tests/Transceiver52M/convolve_test.ok
+++ b/tests/Transceiver52M/convolve_test.ok
@@ -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}
 
diff --git a/tests/Transceiver52M/convolve_test_golden.h b/tests/Transceiver52M/convolve_test_golden.h
new file mode 100644
index 0000000..32ceb9d
--- /dev/null
+++ b/tests/Transceiver52M/convolve_test_golden.h
@@ -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
+};

-- 
To view, visit https://gerrit.osmocom.org/12416
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-trx
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: I4e203d2c4b778af77d630ed15d4cef6b0c0eb76d
Gerrit-Change-Number: 12416
Gerrit-PatchSet: 6
Gerrit-Owner: tnt <tnt at 246tNt.com>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder (1000002)
Gerrit-Reviewer: Pau Espin Pedrol <pespin at sysmocom.de>
Gerrit-Reviewer: tnt <tnt at 246tNt.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20190124/78b77b8f/attachment.htm>


More information about the gerrit-log mailing list