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
Fri Dec 21 15:51:57 UTC 2018


tnt has uploaded this change for review. ( 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 :
 - Always run the reference / base implementation and print
   those results. Theses should be consistent across platform
   and check the base implementation works
 - Run the optimized version and compare results with small
   error tolerance against the reference results.

Change-Id: I4e203d2c4b778af77d630ed15d4cef6b0c0eb76d
Signed-off-by: Sylvain Munaut <tnt at 246tNt.com>
---
M tests/Transceiver52M/convolve_test.c
M tests/Transceiver52M/convolve_test.ok
2 files changed, 943 insertions(+), 144 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/16/12416/1

diff --git a/tests/Transceiver52M/convolve_test.c b/tests/Transceiver52M/convolve_test.c
index 8ca4b72..4843bd1 100644
--- a/tests/Transceiver52M/convolve_test.c
+++ b/tests/Transceiver52M/convolve_test.c
@@ -1,142 +1,265 @@
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
+#include <math.h>
+
 #include "convolve.h"
 
-#define TESTVEC_LEN 1000
-#define DO_INIT 1
+struct test_vec
+{
+	float *x;
+	float *h;
+	float *y_ref;
+	float *y_iut;
 
-float x_vect[TESTVEC_LEN];
-float y_vect[TESTVEC_LEN];
-float h_vect[TESTVEC_LEN];
-
-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_ ! */
+};
 
 /* Generate some random values for testing */
-void gen_floats(float *vect, int len)
+static void
+gen_floats(float *vect, int len)
 {
 	int i;
 	for (i = 0; i < len; i++) {
-		vect[i] = (float)rand()/(float)(RAND_MAX);
+		vect[i] = (float)rand()/(float)(RAND_MAX) - 0.5f;
 	}
 }
 
-/* Reset testvectors */
-static void reset_testvec(int seed)
-{
-	srand(seed);
-	memset(x_vect,0,sizeof(x_vect));
-	memset(y_vect,0,sizeof(y_vect));
-	memset(h_vect,0,sizeof(h_vect));
-
-	x=x_vect + TESTVEC_LEN/2;
-	y=y_vect + TESTVEC_LEN/2;
-	h=h_vect + TESTVEC_LEN/2;
-
-	gen_floats(x_vect,TESTVEC_LEN);
-	gen_floats(h_vect,TESTVEC_LEN);
-}
-
 /* 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("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.7e%s", vect[i], end);
 	}
 	printf("}\n");
 }
 
+/* Compare float with tolerance of delta (absolute) and epsilon (relative) */
+static int
+compare_floats(float *v0, 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;
+}
+
+
+/* Reset test vectors */
+static void
+test_vec_reset(struct test_vec *tv, int seed)
+{
+	srand(seed);
+
+	memset(tv->x, 0, tv->x_len * sizeof(float));
+	memset(tv->h, 0, tv->h_len * sizeof(float));
+	memset(tv->y_ref, 0, tv->y_len * sizeof(float));
+	memset(tv->y_iut, 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_ref = convolve_h_alloc(tv->y_len);
+	tv->y_iut = 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_ref);
+	free(tv->y_iut);
+
+	free(tv);
+}
+
 /* Test complex convolution */
-static void test_convolve_complex(int h_len)
+static void
+test_convolve_complex(struct test_vec *tv, int h_len)
 {
 	int x_len;
-	int y_len;
-	int start;
-	int len;
+	int start, len;
+	int rv;
 
-	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 both 'base/ref' implementation and the potentially optimized one */
+	base_convolve_complex(
+		tv->x, x_len,
+		tv->h, h_len,
+		tv->y_ref, tv->y_len,
+		start, len
+	);
+
+	convolve_complex(
+		tv->x, x_len,
+		tv->h, h_len,
+		tv->y_iut, tv->y_len,
+		start, len
+	);
+
+	/* Print the 'ref' results. Those should be consistent across platforms */
+	dump_floats(tv->y_ref, 2 * len, "y_ref");
+
+	/* Compare to 'iut' ones with small tolerance for precision */
+	rv = compare_floats(tv->y_ref, tv->y_iut, len * 2, 1e-5f, 1e-5f);
+	printf("IUT: %s\n", rv ? "!!! FAIL !!!" : "PASS");
+
+	if (rv)
+		dump_floats(tv->y_iut, 2 * len, "y_iut");
 }
 
 /* Test real convolution */
-static void test_convolve_real(int h_len)
+static void
+test_convolve_real(struct test_vec *tv, int h_len)
 {
 	int x_len;
-	int y_len;
-	int start;
-	int len;
+	int start, len;
+	int rv;
 
-	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");
+	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 both 'base/ref' implementation and the potentially optimized one */
+	base_convolve_real(
+		tv->x, x_len,
+		tv->h, h_len,
+		tv->y_ref, tv->y_len,
+		start, len
+	);
+
+	convolve_real(
+		tv->x, x_len,
+		tv->h, h_len,
+		tv->y_iut, tv->y_len,
+		start, len
+	);
+
+	/* Print the 'ref' results. Those should be consistent across platforms */
+	dump_floats(tv->y_ref, 2 * len, "y_ref");
+
+	/* Compare to 'iut' ones with small tolerance for precision */
+	rv = compare_floats(tv->y_ref, tv->y_iut, len * 2, 1e-5f, 1e-5f);
+	printf("IUT: %s\n", rv ? "!!! FAIL !!!" : "PASS");
+
+	if (rv)
+		dump_floats(tv->y_iut, 2 * len, "y_iut");
 }
 
 int main(void)
 {
-#if DO_INIT == 1
+	struct test_vec *tv;
+	int i;
+
 	convolve_init();
-#endif
 
-	printf("==== TEST COMPLEX BASE IMPLEMENTATION ====\n");
-	test_convolve_complex(17);
+	/* 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%%4=0) ====\n");
-	test_convolve_complex(20);
+	/* Dump all input data to make sure we work off the same input data */
+	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("==== TEST COMPLEX SSE3 IMPLEMENTATION: (h_len%%8=0) ====\n");
-	test_convolve_complex(16);
+	/* Test complex */
+	printf("==== TEST COMPLEX ====\n");
+
+	for (i=4; i<=24; i+=4)
+	{
+		printf(" -- h_len = %d --\n", i);
+		test_convolve_complex(tv, i);
+		printf("\n");
+	}
+
+	printf(" -- h_len = %d --\n", 25);
+	test_convolve_complex(tv, 25);
 
 	printf("\n");
 	printf("\n");
 
-	printf("==== TEST REAL BASE IMPLEMENTATION ====\n");
-	test_convolve_real(17);
+	/* Test real */
+	printf("==== TEST REAL ====\n");
 
-	printf("==== TEST REAL SSE3 IMPLEMENTATION (hlen=4) ====\n");
-	test_convolve_real(4);
+	for (i=4; i<=24; i+=4)
+	{
+		printf(" -- h_len = %d --\n", i);
+		test_convolve_real(tv, i);
+		printf("\n");
+	}
 
-	printf("==== TEST REAL SSE3 IMPLEMENTATION (hlen=8) ====\n");
-	test_convolve_real(8);
+	printf(" -- h_len = %d --\n", 25);
+	test_convolve_real(tv, 25);
 
-	printf("==== TEST REAL SSE3 IMPLEMENTATION (hlen=12) ====\n");
-	test_convolve_real(12);
+	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..aa51412 100644
--- a/tests/Transceiver52M/convolve_test.ok
+++ b/tests/Transceiver52M/convolve_test.ok
@@ -1,72 +1,748 @@
-==== 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 ====
+float x[] = {
+	 3.4018773e-01, -1.0561708e-01,  2.8309923e-01,  2.9844004e-01,
+	 4.1164738e-01, -3.0244863e-01, -1.6477725e-01,  2.6822960e-01,
+	-2.2222528e-01,  5.3969979e-02, -2.2602946e-02,  1.2887090e-01,
+	-1.3521552e-01,  1.3400912e-02,  4.5222974e-01,  4.1619509e-01,
+	 1.3571173e-01,  2.1729696e-01, -3.5839742e-01,  1.0696888e-01,
+	-4.8369944e-01, -2.5711322e-01, -3.6276841e-01,  3.0417675e-01,
+	-3.4332091e-01, -9.9055618e-02, -3.7020957e-01, -3.9119118e-01,
+	 4.9892449e-01, -2.8174311e-01,  1.2932420e-02,  3.3911222e-01,
+	 1.1263984e-01, -2.0396838e-01,  1.3755226e-01,  2.4287164e-02,
+	-6.4170063e-03,  4.7277504e-01, -2.0748320e-01,  2.7135772e-01,
+	 2.6744962e-02,  2.6991385e-01, -9.9771380e-02,  3.9152944e-01,
+	-2.1668527e-01, -1.4754164e-01,  3.0772454e-01,  4.1902649e-01,
+	-4.3024471e-01,  4.4932705e-01,  2.5995374e-02, -4.1394415e-01,
+	-3.0778617e-01,  1.6322690e-01,  3.9023262e-01, -1.5110707e-01,
+	-4.3582869e-01, -4.7997695e-01, -4.2298257e-02, -4.3690416e-01,
+	-2.6172006e-01,  4.7063410e-01,  4.0220809e-01,  3.5091978e-01,
+	-2.3333424e-01,  3.9760351e-02, -1.2479302e-01,  2.6024872e-01,
+	 1.2535393e-02,  1.6772377e-01,  3.1606436e-02, -4.6071965e-01,
+	-6.2362403e-02,  4.3183506e-01,  4.3080980e-01,  2.2095233e-01,
+	-2.1570659e-01,  2.3853433e-01,  1.3997883e-01, -1.4595133e-01,
+	 1.8786138e-01, -3.3402583e-01, -5.9895486e-02,  3.8007522e-01,
+	 3.2920110e-01, -1.6966286e-01, -2.7103183e-01,  3.9337242e-01,
+	-1.4963982e-01,  1.8666989e-01,  4.5646822e-01,  8.8640153e-02,
+	 1.5730405e-01,  3.5867631e-01, -6.0440093e-02,  4.2396981e-01,
+	-1.0156333e-01,  3.1476688e-01,  1.8421853e-01,  4.1097206e-01,
+	-1.7509341e-02, -2.8417504e-01,  4.5025235e-01,  4.2012823e-01,
+	-3.5233998e-01,  3.8106215e-01,  1.4108062e-01, -6.8046570e-02,
+	 1.1959648e-01, -2.1894059e-01,  2.8600210e-01, -1.9254214e-01,
+	-5.2966416e-02, -2.7389336e-01, -3.1246689e-01, -2.2376531e-01,
+	 5.6443751e-02, -8.3498716e-02, -3.3039290e-01,  4.0680391e-01,
+	-3.9682883e-01, -3.7392467e-01, -4.5559406e-03,  2.6047522e-01,
+	 4.8475164e-01,  4.3500400e-01,  1.8444502e-01, -1.1681166e-01,
+	 2.4977088e-01, -1.3133645e-01, -2.0583963e-01, -2.6773846e-01,
+	 8.4488511e-02, -2.5558728e-01, -3.4761021e-01,  2.3214853e-01,
+	-3.7452510e-01,  2.9347038e-01, -3.3589807e-01,  2.4507141e-01,
+	-4.2547020e-01,  4.5010406e-01, -4.4747072e-01,  2.1563351e-02,
+	-3.2378936e-01, -2.5993764e-01,  2.9779804e-01,  2.3265439e-01,
+	 1.5656364e-01,  4.6740514e-01,  1.3945836e-01,  2.5973487e-01,
+	-4.0651953e-01, -3.6509758e-01,  2.0210087e-02, -4.2176786e-01,
+	-4.3009359e-01, -2.9534492e-01, -3.8579524e-02,  3.1967729e-01,
+	 7.3318601e-02,  2.5558084e-01, -4.4806117e-01, -3.4219289e-01,
+	 4.9999356e-01, -2.9567140e-01,  3.8995564e-01, -3.7453151e-01,
+	 4.9779898e-01, -4.4594243e-01,  3.7053984e-01, -4.2767119e-01,
+	-4.9583840e-01,  4.2306912e-01,  9.3892157e-02, -3.1962773e-01,
+	-3.3686849e-01, -1.0830978e-01,  4.1302669e-01,  3.1969517e-01,
+	-1.4090464e-01,  5.2485049e-02,  7.9429984e-02, -4.7424167e-02,
+	 1.8738741e-01, -4.0035993e-01,  3.0807972e-02,  2.5729382e-01,
+	-1.9570485e-01,  4.9222845e-01,  7.6971114e-02,  3.7761378e-01,
+	 2.4780929e-01,  1.2890995e-01, -4.6457911e-01,  2.4780285e-01,
+	 3.3323854e-01,  4.2537653e-01,  3.7327135e-01,  3.3103752e-01
+}
+float h[] = {
+	 4.7943413e-01,  2.4381119e-01,  4.0336633e-01,  4.8359573e-01,
+	 1.6688031e-01, -2.7414858e-03, -3.3603200e-01,  3.3001184e-01,
+	 3.8894874e-01, -4.2300531e-01,  1.4970696e-01, -2.5195587e-01,
+	 1.2947971e-01, -2.7086303e-01,  2.0061994e-01, -1.8313286e-01,
+	-1.7122295e-01, -2.6857203e-01, -4.2583904e-01,  1.3307220e-01,
+	-2.7634358e-01,  1.5113211e-01,  1.0685980e-02,  4.7146571e-01,
+	-2.1995798e-01,  4.6106875e-02,  2.1926856e-01, -3.8671944e-01,
+	-2.8516561e-02,  9.2539907e-02,  4.4431812e-01, -4.9082428e-02,
+	-1.6364887e-01,  3.4768444e-01, -6.5486699e-02, -4.9676853e-01,
+	-1.5505704e-01,  9.8481297e-02,  3.3324331e-01, -2.6610827e-01,
+	 1.7547596e-01, -1.7049730e-02, -1.8064171e-02, -1.9504431e-01,
+	 2.1208727e-01, -3.1744421e-01,  1.2182283e-01, -4.5913571e-01,
+	-8.6016268e-02,  1.9598377e-01
+}
 
 
+==== TEST COMPLEX ====
+ -- h_len = 4 --
+float y_ref[] = {
+	 1.9343475e-01,  9.3477979e-02,  4.0537333e-01,  2.4291979e-01,
+	 3.0472055e-03, -5.7278976e-02, -2.2253948e-01, -2.4831513e-02,
+	-5.0298059e-01,  2.4738863e-02, -1.4398363e-01,  3.6272820e-02,
+	 2.1425188e-02,  2.4170342e-01,  2.5287169e-01,  4.0868199e-01,
+	-2.4411464e-01, -2.5641626e-01, -1.8032607e-01, -4.0198106e-01,
+	-2.6670712e-01, -3.0024880e-01, -4.7619563e-01,  4.6459973e-02,
+	-1.3436908e-01, -6.2609112e-01,  2.8793404e-01,  1.2088522e-02,
+	 1.1311802e-01,  1.3249211e-01, -6.3249446e-02, -1.9376054e-02,
+	 1.2786689e-01, -7.4752592e-02, -3.0313748e-01,  1.9675869e-01,
+	-4.2374337e-01,  1.1469635e-01, -1.7944857e-01,  2.4500139e-01,
+	-5.6082594e-01,  1.8232608e-01, -1.1055143e-01, -2.2480465e-01,
+	-8.9124054e-02,  4.1810924e-01, -2.9270607e-01,  2.3528263e-02,
+	-2.3733716e-01,  1.6376571e-01,  2.7985922e-01, -2.8395247e-01,
+	 1.2747175e-01,  1.8492913e-01,  2.0462361e-01, -6.9898784e-01,
+	-1.9105226e-01, -4.3899474e-01, -1.1355378e-01, -1.8941317e-01,
+	-3.3047011e-01,  3.7652293e-01, -8.5748151e-02,  1.6105306e-01,
+	-1.5378098e-01,  2.0000164e-01, -3.1687921e-01, -7.4600063e-02,
+	-2.6237980e-02,  5.3075723e-02, -4.0242106e-02, -1.8479857e-01,
+	-1.0247727e-01,  6.2493140e-01,  2.0375948e-02,  3.5236996e-01,
+	-1.0939813e-01, -1.3314986e-01,  2.7642086e-01,  1.4951222e-01,
+	-2.0726323e-02, -2.4084167e-01,  3.7983395e-02,  2.1266100e-01,
+	-3.0746281e-01,  1.7893985e-01, -4.7129101e-01,  7.0373103e-02,
+	-6.8367735e-02,  2.0652397e-01,  8.5595772e-03,  3.0616778e-01,
+	-4.5505679e-01,  3.2760209e-01, -1.9399881e-01,  4.2417210e-01,
+	-5.4352093e-01,  3.4104413e-01,  1.8741676e-01, -5.6594178e-02,
+	-4.3370463e-02,  3.8067535e-01, -1.5754598e-01,  3.9581478e-01,
+	-1.8522340e-01,  2.5978774e-01,  3.9373603e-01,  1.2938097e-02,
+	 4.8844910e-01, -8.8651918e-02,  2.5098252e-01, -1.4847451e-01,
+	 9.5206015e-03, -6.4541638e-01,  1.7062227e-01, -1.2636250e-01,
+	-4.3425602e-01, -1.7230041e-01, -5.4331875e-01, -1.7097193e-01,
+	-1.6823083e-01, -1.7737076e-03, -9.0653047e-02,  6.4022112e-01,
+	 4.5608354e-01,  3.6825955e-01,  3.0204356e-01,  1.2642944e-01,
+	 2.5181353e-01, -4.4521901e-01,  9.5902674e-02, -4.2330515e-01,
+	-1.7935884e-01, -3.1960091e-01, -5.7719946e-01, -2.8603512e-01,
+	-4.3163729e-01, -9.2835695e-02, -4.9010974e-01, -3.2805949e-03,
+	-7.3624301e-01, -1.1802941e-01, -3.8121629e-01, -4.2757961e-01,
+	-1.8941823e-01,  7.0607528e-02,  2.0424317e-01,  4.7988847e-01,
+	-4.4694379e-02,  5.2305567e-01,  2.6032710e-01, -2.9846272e-01,
+	-5.8884420e-02, -6.0276937e-01, -3.2680467e-02, -5.3263980e-01,
+	-2.7922690e-02, -1.2659723e-01, -3.3661029e-01,  4.9088931e-01,
+	 3.2778956e-02, -1.0467410e-02,  2.5721970e-01,  9.9789083e-02,
+	 7.4869239e-01,  2.0786656e-01,  7.8238732e-01, -4.0181538e-01,
+	 6.9601524e-01,  1.2460417e-01,  4.1056134e-02, -3.1220391e-01,
+	-4.4923437e-01,  1.0146232e-02,  1.3927090e-01, -3.4886351e-01,
+	-1.5751208e-01,  2.4592637e-01,  1.2013673e-01,  3.9524502e-01,
+	-9.0466201e-02, -1.3352618e-01,  2.2801059e-01, -2.6137942e-01,
+	-1.0633877e-01, -4.6385981e-02, -4.7687450e-01,  3.3604053e-01,
+	-2.4935976e-01,  1.6206253e-01, -3.4675413e-01,  3.8130435e-01,
+	-3.9775372e-01,  7.9527527e-02
+}
+IUT: 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}
+ -- h_len = 8 --
+float y_ref[] = {
+	 3.1198353e-01,  2.7249879e-01,  6.7253590e-01,  2.8881702e-01,
+	 1.5280618e-01,  3.1966239e-02,  4.2916775e-02,  9.2015103e-02,
+	-5.3432661e-01,  3.8334787e-01, -4.2692611e-01,  4.9350762e-01,
+	-4.7033417e-01,  5.5272996e-01,  5.8690500e-02,  6.5384853e-01,
+	-5.2055192e-01, -2.2096071e-01, -4.0731701e-01, -5.8656257e-01,
+	-1.1307193e-01, -6.5060866e-01, -2.5256541e-01,  1.7588115e-01,
+	-1.4830187e-02, -6.2870300e-01,  5.7129776e-01,  1.7633122e-01,
+	 4.7617540e-01,  5.3651673e-01,  6.5487638e-02,  2.9540601e-01,
+	 4.0660924e-01,  1.6996843e-01, -9.6623927e-02,  5.6359464e-01,
+	-4.2338252e-01,  2.2107749e-01,  2.5678758e-02,  4.8195598e-01,
+	-5.8352947e-01,  4.7328997e-01, -4.4623044e-01, -4.3656242e-01,
+	-3.9437938e-01,  4.6684524e-01, -4.8115996e-01, -6.5126479e-02,
+	-4.8775205e-01,  2.3525867e-01,  2.6559117e-01, -3.1239271e-01,
+	 3.7656814e-01,  5.7330167e-01,  5.7215315e-01, -5.6904000e-01,
+	-2.4907845e-01, -3.3432126e-01, -6.1997123e-02,  1.6389854e-02,
+	-1.3020961e-01,  3.9775756e-01, -5.2837055e-02,  4.8124433e-02,
+	 1.6283178e-01,  3.5327283e-01, -7.2935686e-02, -2.3906565e-01,
+	-3.3615954e-02,  1.7306522e-01,  2.6595213e-02, -4.2700648e-01,
+	-6.9573633e-02,  5.0495386e-01,  2.4001123e-01,  6.0639191e-01,
+	 1.4440927e-01, -2.1232469e-01,  5.4238892e-01,  4.1379702e-01,
+	 2.7374083e-01, -1.0671920e-01,  5.1122200e-01,  2.2112623e-01,
+	 1.8754447e-01,  4.4758397e-01, -1.7173983e-01,  2.8306428e-01,
+	 2.4443226e-01,  3.5680223e-01,  3.5102800e-01,  4.2337304e-01,
+	-3.3537811e-01,  2.7921921e-01,  1.8583983e-01,  4.3009305e-01,
+	-5.3709638e-01,  4.4081950e-01,  1.0034083e-01, -3.5329488e-01,
+	-2.7987373e-01,  1.3525811e-01, -3.0972615e-01,  2.0086128e-01,
+	-4.3193302e-01,  3.3690983e-01,  8.4279850e-02,  1.7117807e-01,
+	 4.2224085e-01,  1.1130261e-01,  3.8781387e-01,  2.2697037e-01,
+	-4.1848086e-02, -7.1504021e-01,  4.7950408e-01, -2.1731076e-01,
+	-1.5708333e-01, -3.7279499e-01, -6.4571846e-01, -4.2268100e-01,
+	-3.1042582e-01, -9.2476785e-02, -3.3923823e-01,  8.1528240e-01,
+	 3.9577165e-01,  6.0557044e-01,  3.0287346e-01,  7.9299420e-01,
+	 2.2274709e-01,  2.0846851e-01, -4.6026833e-02,  1.1982823e-01,
+	-2.2598577e-01,  1.9759813e-01, -6.3750428e-01, -3.1139046e-02,
+	-3.4190997e-01, -5.2494712e-02, -1.9467109e-01, -1.1175934e-02,
+	-6.1602581e-01, -2.4191037e-02, -6.2194943e-01, -3.7835273e-01,
+	-6.9009584e-01,  1.8178366e-01,  3.7999839e-02,  4.6113190e-01,
+	-3.3597833e-01,  6.7432904e-01,  3.5137755e-01, -2.1184278e-01,
+	-8.1254162e-02, -7.9297805e-01, -3.8410002e-01, -9.8119044e-01,
+	-5.4825153e-02, -9.5365292e-01, -4.7106034e-01,  8.0184937e-03,
+	-3.8255863e-03, -4.4410813e-01,  9.0961985e-02, -6.1882250e-02,
+	 7.3677480e-01,  5.7637358e-01,  7.2739714e-01, -5.3133565e-01,
+	 6.6477937e-01,  1.8967161e-01,  2.9077831e-01, -4.6150434e-01,
+	-5.1277536e-01,  6.4325705e-03,  2.0184588e-01, -3.4849805e-01,
+	 8.0386028e-03,  2.2010116e-01,  5.2124852e-01,  6.1381078e-01,
+	 1.6747525e-01,  2.6221049e-01,  6.3898122e-01, -7.9696737e-03,
+	 3.3133650e-01,  1.5950076e-02
+}
+IUT: PASS
 
-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}
+ -- h_len = 12 --
+float y_ref[] = {
+	 5.1073134e-01, -6.4233445e-02,  1.1001339e+00,  1.1007318e-01,
+	 5.7089889e-01, -1.7514147e-01,  6.4569569e-01,  4.1822547e-01,
+	-5.4747516e-01,  7.7281708e-01, -6.0102689e-01,  8.0545586e-01,
+	-6.9234514e-01,  4.6278694e-01, -1.3791974e-01,  7.1026200e-01,
+	-8.5625696e-01, -4.3486625e-01, -5.9517044e-01, -9.2069548e-01,
+	-1.6659707e-01, -9.8640192e-01, -1.5582368e-01, -1.5324977e-01,
+	-6.8623766e-02, -7.0452332e-01,  4.4063550e-01, -9.7249970e-02,
+	 5.3327537e-01,  3.0112669e-01,  2.2389071e-01, -1.3262859e-01,
+	 7.8076601e-01,  4.7906137e-01,  3.3731923e-02,  4.0715045e-01,
+	-7.4400723e-02,  4.3422836e-01,  2.0777807e-02,  5.4539984e-01,
+	-7.2161388e-01,  8.7671280e-01, -6.9292784e-01, -7.3140836e-01,
+	-5.0670183e-01,  2.5833350e-01, -4.4549638e-01, -3.6429164e-01,
+	-2.2987276e-01,  1.2921053e-01,  1.8583019e-01, -2.8588608e-01,
+	 3.1971890e-01,  8.1832850e-01,  1.4488581e-01, -7.8593260e-01,
+	-2.4141420e-01, -4.6235585e-01,  1.2655887e-01, -1.2093870e-01,
+	-2.5066316e-01,  5.9214741e-01, -1.0893403e-01,  2.4207115e-01,
+	-2.3780495e-01,  1.6324958e-01, -1.5237269e-01, -3.9022326e-01,
+	-9.6253231e-02,  5.2076980e-02, -8.9428246e-02, -3.9848536e-01,
+	-4.9820563e-01,  4.3686843e-01, -1.2591672e-01,  1.6599865e-01,
+	-2.8170899e-02, -5.1566052e-01,  6.8874002e-01,  1.1286099e-01,
+	 9.7053885e-02,  8.8207424e-03,  2.6398507e-01,  9.8689049e-03,
+	-6.0056053e-02,  2.8918642e-01,  3.9130948e-02, -2.4782214e-02,
+	 4.4995353e-01,  6.4529550e-01,  3.6543220e-01,  5.7481551e-01,
+	-3.5263625e-01,  3.2261267e-01,  3.0429733e-01,  5.3616601e-01,
+	-6.3705307e-01,  4.3583199e-01,  2.8269362e-01, -5.4143071e-01,
+	-1.8208441e-01, -3.8809724e-02, -1.6317154e-01,  4.8688924e-01,
+	-6.3979185e-01,  4.3474686e-01, -7.8023329e-02,  1.8357828e-01,
+	 4.6792713e-01, -4.4948310e-02,  4.5472518e-01,  3.6658123e-01,
+	-9.4489828e-02, -7.5101864e-01,  3.5948592e-01, -2.8623044e-01,
+	-1.8304718e-01, -7.9028600e-01, -5.6438643e-01, -8.5815549e-01,
+	-2.2451524e-02, -5.9062058e-01,  1.4486849e-01,  3.8622388e-01,
+	 7.9944402e-01,  7.3982805e-01,  2.2160605e-01,  1.0366077e+00,
+	-1.8426970e-01,  2.4351463e-01, -7.3407546e-02, -4.2445374e-01,
+	 1.4537066e-01,  2.7947389e-02, -1.7712221e-01, -9.8013066e-02,
+	-3.1047958e-01,  3.0333564e-01, -2.4632016e-01,  6.7275390e-02,
+	-5.5016017e-01, -2.7382451e-01, -2.7444303e-01, -2.6239043e-01,
+	-3.1040829e-01,  5.4154611e-01,  1.3651639e-02,  1.2248676e+00,
+	-4.8179182e-01,  1.1706464e+00, -2.1114275e-01, -5.1367894e-02,
+	-1.6235633e-01, -7.6988780e-01, -3.3773273e-01, -1.3110837e+00,
+	 1.0939775e-01, -5.6715608e-01, -6.0381925e-01, -5.2970968e-02,
+	-1.3944679e-01, -4.1512328e-01,  3.3509767e-01, -1.5947121e-01,
+	 6.3523126e-01,  7.9222643e-01,  3.9298099e-01, -5.0257689e-01,
+	 2.8029183e-01, -2.2847716e-02,  2.3597348e-01, -7.2399336e-01,
+	-6.3985258e-01, -3.9040399e-01,  6.1344981e-02, -4.3278030e-01,
+	-1.4337064e-01,  7.6462559e-02
+}
+IUT: PASS
 
-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}
+ -- h_len = 16 --
+float y_ref[] = {
+	 3.9259350e-01,  2.0336020e-01,  1.2083304e+00, -1.8030062e-01,
+	 6.8609583e-01, -5.3055910e-04,  5.8721924e-01,  4.7836140e-01,
+	-6.4573079e-01,  8.9168346e-01, -4.4504160e-01,  1.0042783e+00,
+	-7.0414054e-01,  6.7187703e-01, -1.3145420e-01,  6.1453128e-01,
+	-5.6792223e-01, -2.1333663e-01, -9.1251004e-01, -7.2268122e-01,
+	 7.9308510e-02, -1.2288902e+00, -2.5458413e-01,  1.3551895e-01,
+	 1.0557353e-02, -1.0434419e+00,  2.3528877e-01, -1.6334504e-03,
+	 6.3718635e-01, -1.5170360e-01, -1.8770680e-01,  2.1240243e-01,
+	 8.8036948e-01,  5.8363783e-01,  4.2129651e-02,  7.6204038e-01,
+	 1.4566663e-01,  3.3907735e-01, -1.2638038e-01,  6.4064759e-01,
+	-6.2329191e-01,  7.5265288e-01, -5.7464683e-01, -5.5148101e-01,
+	-5.2435344e-01,  1.6771759e-01, -3.9474785e-01,  7.4480176e-03,
+	-1.7047867e-02, -1.8528795e-01,  2.0242094e-01, -3.1942075e-01,
+	 3.4801385e-01,  8.6850441e-01,  1.3732195e-01, -1.0011898e+00,
+	-2.2828943e-01, -5.0333396e-02,  4.2781591e-02, -3.1782448e-01,
+	-2.8394341e-02,  8.3352113e-01,  3.8200065e-02,  4.3320811e-01,
+	-1.2285206e-01,  1.5387420e-01, -1.5085199e-01, -2.4370183e-01,
+	 7.9104662e-02,  2.5195837e-01, -6.1237380e-02, -5.0630927e-01,
+	-4.3581635e-02,  5.5287701e-01, -4.8868680e-01,  2.4484858e-01,
+	 2.8410962e-01, -6.1659271e-01,  6.8510634e-01,  1.7286855e-01,
+	 2.9607964e-01, -2.4299805e-01,  1.5033059e-01, -1.5005481e-01,
+	-2.1097726e-01,  1.0886001e-01, -8.1835359e-02, -7.1222454e-02,
+	 1.9846845e-01,  9.7944200e-01,  2.0166935e-01,  3.8065171e-01,
+	-2.1964781e-01,  6.5044796e-01,  3.3935797e-01,  6.6456228e-01,
+	-4.1065484e-01,  5.3015858e-01,  6.5628278e-01, -7.4122947e-01,
+	-4.1306469e-01, -2.9108244e-01, -1.3873807e-01,  2.6657555e-01,
+	-9.5916164e-01,  6.3136345e-01, -2.6429197e-01,  2.5425220e-01,
+	 3.2098943e-01,  2.8284523e-01,  3.7179819e-01,  6.9147599e-01,
+	-2.3179966e-01, -6.6986769e-01,  3.5698265e-01, -2.3401824e-01,
+	-2.2967517e-02, -6.6492826e-01, -5.7599217e-01, -5.9439480e-01,
+	 2.4301717e-01, -5.0280505e-01,  5.7166010e-02,  2.5395346e-01,
+	 9.0813631e-01,  4.3165860e-01, -2.1851237e-01,  9.6684217e-01,
+	-1.9854844e-01,  3.1733474e-01, -2.5028959e-01, -1.3191071e-01,
+	 1.2713718e-01,  2.7541250e-02,  1.8362647e-01, -3.3003873e-01,
+	-4.0098429e-01,  2.1789065e-01,  8.6135000e-02, -3.1211060e-01,
+	-5.3512049e-01, -5.6808853e-01, -5.7678592e-01, -1.9351965e-01,
+	-4.8246443e-01,  2.2094266e-01, -1.2133773e-01,  1.6067516e+00,
+	-2.7641732e-01,  1.0420220e+00, -4.3420127e-01,  1.8913136e-01,
+	 1.6305616e-01, -8.9072859e-01, -3.8818783e-01, -1.4747425e+00,
+	 1.9507036e-01, -4.8474717e-01, -8.2032663e-01,  2.4695456e-02,
+	-4.3185152e-02, -1.4206313e-01,  5.4319465e-01,  1.0437109e-02,
+	 6.0523671e-01,  8.8012832e-01,  6.2208772e-01, -5.2706617e-01,
+	 3.4703535e-01,  3.4169286e-01
+}
+IUT: PASS
 
-==== 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}
+ -- h_len = 20 --
+float y_ref[] = {
+	 4.0563765e-01,  2.7768248e-01,  1.4988428e+00, -1.4390233e-01,
+	 7.1137142e-01,  1.2297645e-01,  5.2460098e-01,  2.6881298e-01,
+	-2.8073692e-01,  9.4002217e-01, -7.3673451e-01,  1.2523794e+00,
+	-5.0840402e-01,  1.8347138e-01, -9.8511763e-02,  1.0402999e+00,
+	-7.3959279e-01, -6.3208389e-01, -9.9019027e-01, -4.8580292e-01,
+	-4.3206736e-02, -1.6494110e+00, -3.8819546e-01,  8.3392441e-01,
+	 2.5613919e-01, -1.1556400e+00,  4.8095024e-01,  2.1489243e-01,
+	 7.2430336e-01, -4.5171279e-01, -2.9797465e-01,  4.0803951e-01,
+	 9.1165602e-01,  3.5424012e-01,  1.8917093e-01,  8.9390326e-01,
+	 2.3863241e-02,  2.1634607e-01,  1.5027168e-01,  8.7479091e-01,
+	-6.6391504e-01,  2.8770256e-01, -6.2296259e-01, -4.7120559e-01,
+	-5.6871128e-01,  2.0659479e-01, -5.0873393e-01, -2.0042220e-01,
+	 2.4109995e-01,  2.0149592e-01, -2.2671439e-02, -5.4053026e-01,
+	 7.4681568e-01,  9.8399460e-01,  2.1579692e-01, -9.8881048e-01,
+	-2.2159560e-01, -2.4822801e-01,  1.2267539e-01, -2.1502660e-01,
+	 1.9123185e-01,  8.6089939e-01, -8.6792998e-02,  2.3703022e-01,
+	 2.6896733e-01,  1.1151828e-02, -5.9111112e-01, -1.9654661e-02,
+	 4.0600595e-01, -1.1281250e-01, -1.0220084e-01, -3.4878132e-01,
+	-1.1436477e-01,  2.0784064e-01, -7.2063136e-01,  2.4080434e-01,
+	 9.7794682e-02, -6.2281477e-01,  6.3973004e-01,  3.0914345e-01,
+	 3.0690259e-01,  1.9527674e-01,  1.3511479e-02, -3.5927096e-01,
+	 1.9869280e-01,  3.8655108e-01, -7.6620430e-02, -5.5920191e-02,
+	 4.3548766e-01,  7.8014821e-01,  3.2739228e-01, -6.8113729e-03,
+	-6.8596470e-01,  6.7433977e-01,  2.8661230e-01,  5.4591709e-01,
+	-5.6738234e-01,  9.7609603e-01,  6.3488019e-01, -6.6698337e-01,
+	-2.1748835e-01,  2.6263937e-02,  1.3686508e-02,  4.6669549e-01,
+	-9.7789866e-01,  6.1850429e-01, -1.5288228e-01,  2.3137388e-01,
+	 5.1109362e-01,  2.8883606e-01,  4.3707043e-01,  8.1758893e-01,
+	 5.2922159e-02, -9.1069019e-01,  1.6946894e-01, -3.1696463e-01,
+	-9.7715080e-02, -9.0262455e-01, -1.0273845e+00, -2.7913937e-01,
+	 3.9362526e-01, -4.4658157e-01,  1.4889301e-01,  5.7529253e-01,
+	 9.6562743e-01,  3.0147529e-01, -1.0069013e-02,  6.2530518e-01,
+	-4.5818228e-01,  4.1249818e-01, -2.1397476e-01, -6.4531231e-01,
+	-8.7075405e-02, -4.2375207e-02, -7.2089776e-02,  2.4483189e-02,
+	-5.8266813e-01,  6.1949864e-02,  2.9266685e-01,  2.1767689e-01,
+	-4.8038912e-01, -8.5518450e-01, -6.4128172e-01,  1.1196103e-01,
+	-2.2738291e-01, -1.6352636e-01, -3.1652111e-01,  1.5964899e+00,
+	-2.1126030e-01,  1.1061658e+00, -6.0621572e-01,  3.3688825e-01,
+	 5.0539368e-01, -7.8245437e-01, -1.5758494e-01, -1.5151085e+00,
+	 9.8507836e-02, -4.8568571e-01, -6.4452505e-01, -1.7298427e-01,
+	 1.4388496e-01,  1.1540639e-01
+}
+IUT: PASS
 
-float h[] = {0.726144,0.746635,0.470674,0.211604}
+ -- h_len = 24 --
+float y_ref[] = {
+	 6.3018608e-01,  2.8423050e-01,  1.8153185e+00,  2.1489501e-01,
+	 6.1149991e-01,  2.0270358e-01,  5.9271133e-01,  4.7805154e-01,
+	-4.6508217e-01,  9.6335644e-01, -9.4050735e-01,  1.2220898e+00,
+	-1.0467027e+00,  1.4672846e-01, -8.1817716e-02,  1.1990718e+00,
+	-6.0469484e-01, -6.5175623e-01, -7.2200888e-01, -4.6047974e-01,
+	 4.7492534e-02, -1.4756467e+00, -1.6498202e-01,  1.0429246e+00,
+	 1.1710593e-01, -1.1640908e+00,  5.4710066e-01,  2.3070689e-01,
+	 9.1671783e-01, -4.7983694e-01,  2.9820830e-02,  3.6921877e-01,
+	 9.2340273e-01,  3.8007712e-01,  1.7183515e-01,  7.6075757e-01,
+	 6.0101196e-02,  1.8053912e-01,  1.7395832e-01,  7.4399179e-01,
+	-3.9787713e-01,  2.6257843e-01, -5.3116250e-01, -2.0372190e-01,
+	-3.0838940e-01,  1.0527763e-01, -2.0168084e-01, -2.5559211e-01,
+	 5.6158608e-01,  2.5170538e-01,  3.7997139e-01, -3.7583706e-01,
+	 1.1538334e+00,  1.1128649e+00,  3.1257099e-01, -8.9715719e-01,
+	-3.3971965e-03, -4.4487441e-01,  4.6779409e-01,  1.6864493e-02,
+	 2.8930783e-01,  8.3552551e-01,  2.4338216e-03,  2.2411425e-01,
+	 1.0011864e-01, -1.8143091e-01, -7.4504924e-01, -1.9404535e-01,
+	 1.4155512e-01, -1.3064578e-01, -2.7652603e-01, -3.5652000e-01,
+	-3.4334987e-02,  3.9129543e-01, -9.5754206e-01,  5.2517068e-01,
+	 1.0776453e-01, -5.0084651e-01,  8.6342621e-01,  3.5743105e-01,
+	 4.9151617e-01, -2.7927294e-02,  6.5405264e-02, -6.2989593e-01,
+	 1.2833342e-01,  3.7550265e-01, -3.1207931e-01, -1.8727586e-01,
+	 4.2959970e-01,  9.0468168e-01,  3.2441798e-01,  3.0514628e-01,
+	-5.3860873e-01,  1.0568659e+00,  4.5496196e-01,  1.0691149e+00,
+	-5.6619692e-01,  1.5336677e+00,  4.2874324e-01, -2.7978027e-01,
+	-2.8027374e-01,  1.3865612e-01,  2.6137283e-01,  4.8582289e-01,
+	-6.8132639e-01,  5.3316730e-01, -1.1344668e-01,  3.8112825e-01,
+	 2.0137414e-01,  3.2724720e-01,  8.4503561e-02,  1.0122974e+00,
+	-1.5016308e-01, -8.3359891e-01,  3.3556390e-01, -2.2457816e-01,
+	-2.3018801e-01, -7.5040269e-01, -1.2586766e+00, -4.3722793e-01,
+	 2.3992740e-01, -7.5550735e-01, -1.8255928e-01, -5.5400416e-02,
+	 7.8102481e-01, -3.0305600e-01,  3.2669067e-02,  5.3476524e-01,
+	-5.7471651e-01,  4.2629388e-01, -2.3708928e-01, -5.9372860e-01,
+	-1.3963582e-01, -3.8945466e-02,  1.1991196e-01,  4.2234767e-02,
+	-6.1405408e-01, -2.4031635e-02,  2.2417614e-01,  1.2318638e-01,
+	-4.8036790e-01, -9.8540503e-01, -4.1925645e-01,  2.6757696e-01,
+	 1.4580157e-01, -7.0448965e-02,  1.8385217e-02,  1.6279721e+00,
+	-1.4290724e-02,  1.3662102e+00, -3.4957036e-01,  4.5002824e-01,
+	 1.0109739e+00, -8.2454365e-01
+}
+IUT: PASS
 
-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}
+ -- h_len = 25 --
+float y_ref[] = {
+	 5.7913333e-01,  1.6126008e-01,  1.8942088e+00,  2.5559562e-01,
+	 6.0598469e-01,  1.2834232e-01,  5.8875954e-01,  5.6752849e-01,
+	-3.3352613e-01,  9.1922688e-01, -8.5124290e-01,  1.2513809e+00,
+	-1.1164272e+00,  5.4953381e-02, -1.8518874e-01,  1.2477132e+00,
+	-5.9241670e-01, -7.0090598e-01, -7.6227915e-01, -5.0732279e-01,
+	 1.3543148e-02, -1.4876170e+00, -7.7407114e-02,  1.0887483e+00,
+	 3.7837453e-02, -1.2134576e+00,  4.6674094e-01,  2.9613313e-01,
+	 8.8852322e-01, -5.4262978e-01,  4.6384465e-02,  4.0920654e-01,
+	 9.7270721e-01,  4.4562656e-01,  1.0249857e-01,  7.1632636e-01,
+	 6.5035716e-02,  2.5965095e-01,  1.2017685e-01,  6.5703750e-01,
+	-4.2158994e-01,  2.1719480e-01, -5.8779824e-01, -1.2188602e-01,
+	-3.9221483e-01,  1.0525467e-01, -2.7957320e-01, -3.0390570e-01,
+	 5.0863296e-01,  2.0472553e-01,  2.8358173e-01, -3.7508351e-01,
+	 1.2110332e+00,  1.1338770e+00,  1.9150364e-01, -8.4505290e-01,
+	-4.7772221e-02, -5.4670489e-01,  4.6899489e-01,  5.0367117e-02,
+	 3.2192940e-01,  8.7779695e-01,  1.5568122e-02,  2.9672778e-01,
+	 1.5835327e-01, -1.6825218e-01, -6.7431760e-01, -2.3603633e-01,
+	 1.5306443e-01, -1.1240147e-01, -3.2783383e-01, -4.5626339e-01,
+	 7.3081911e-02,  3.4568703e-01, -1.0081991e+00,  5.0187266e-01,
+	-1.9185714e-02, -4.4326046e-01,  8.7045413e-01,  4.0362698e-01,
+	 4.9577162e-01,  3.2320812e-02,  1.3558322e-01, -6.4720726e-01,
+	 1.7115699e-01,  4.1404569e-01, -3.2767653e-01, -2.7537036e-01,
+	 4.0429953e-01,  8.0603760e-01,  3.0528066e-01,  2.1823558e-01,
+	-5.9022444e-01,  9.3476439e-01,  4.8922566e-01,  9.7956312e-01,
+	-4.8740220e-01,  1.4925691e+00,  3.5753128e-01, -2.4142875e-01,
+	-3.8534456e-01,  1.2913561e-01,  1.9847333e-01,  4.9081305e-01,
+	-5.7480592e-01,  4.8490041e-01, -3.2525428e-02,  4.2136800e-01,
+	 2.9625201e-01,  2.6836032e-01,  2.5170468e-02,  9.7723901e-01,
+	-2.0655937e-01, -8.4121376e-01,  4.4116870e-01, -2.8295672e-01,
+	-2.1524879e-01, -6.2697953e-01, -1.2188171e+00, -3.2858714e-01,
+	 2.8450605e-01, -6.1958849e-01, -1.3061513e-01,  5.4006055e-02,
+	 7.4076033e-01, -4.3662310e-01,  8.7234661e-02,  5.8065975e-01,
+	-5.2451336e-01,  3.6958954e-01, -3.3527136e-01, -5.4028106e-01,
+	-1.3780195e-01, -7.1075052e-02,  1.2237406e-01,  6.1881006e-02,
+	-5.5170840e-01,  4.7130723e-02,  1.7110074e-01,  1.0709279e-01,
+	-5.6000286e-01, -1.0660996e+00, -4.9988338e-01,  2.5018114e-01,
+	 9.9221684e-02, -3.2970719e-02,  9.7812414e-03,  1.5156071e+00,
+	-1.2632155e-01,  1.3949302e+00, -4.4655573e-01,  4.9470875e-01
+}
+IUT: PASS
 
-==== 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}
+==== TEST REAL ====
+ -- h_len = 4 --
+float y_ref[] = {
+	 4.0135658e-01, -7.0862226e-02,  3.4894887e-01,  4.7711339e-02,
+	 1.0140251e-01, -7.1107626e-02, -1.2697329e-01,  1.6737098e-01,
+	-2.9018813e-01, -5.9761293e-02, -3.5513252e-02,  6.3626617e-02,
+	 2.6066792e-01,  1.7462157e-01,  3.7428492e-01,  3.9143768e-01,
+	-3.8318738e-02,  2.2069588e-03, -3.1210813e-01,  3.1620685e-02,
+	-3.1112182e-01,  1.1434813e-01, -5.4184294e-01,  1.3526961e-01,
+	-2.3501489e-01, -3.6625391e-01, -1.1934193e-02, -1.7606504e-01,
+	 2.1699335e-01, -4.0490393e-02,  7.6746441e-02, -7.4506484e-02,
+	 1.7813747e-01, -1.0028081e-01,  1.9746821e-02,  1.5693018e-01,
+	-4.8778683e-02,  2.4959795e-01, -3.2523207e-02,  3.5388958e-01,
+	-1.6698776e-01,  1.2190759e-01,  6.0691811e-02,  4.7138259e-02,
+	-6.0295239e-02,  3.1236699e-01,  8.1751533e-02,  2.5821042e-01,
+	-3.7828243e-01,  1.2646775e-01,  9.9887021e-02,  3.4521073e-03,
+	-4.8674144e-02,  8.4020123e-02,  9.2179805e-02, -4.9711126e-01,
+	-4.0484354e-01, -4.4573051e-01,  1.9680090e-02,  2.5572028e-02,
+	 3.9755218e-02,  2.8637058e-01,  7.3675327e-02,  1.7135073e-01,
+	-1.7073457e-01,  3.0684435e-01, -2.8543424e-02, -2.9569201e-02,
+	-1.3641408e-01, -1.0760858e-01,  1.3437629e-01, -8.9979589e-02,
+	 6.0840961e-02,  3.8501221e-01,  7.9768427e-02,  2.9003578e-01,
+	 4.5228135e-03, -1.2797011e-01,  2.2270113e-02, -8.4269598e-02,
+	 2.1191987e-01, -1.6733298e-01,  1.0912660e-01,  1.1670379e-01,
+	-1.2985474e-01,  7.8696609e-02, -1.6698521e-01,  1.5815806e-01,
+	 1.5894224e-01,  4.2638958e-02,  3.0633986e-01,  1.5215552e-01,
+	-2.7814813e-02,  2.5740543e-01, -3.3318136e-02,  4.9430701e-01,
+	-1.2860653e-01,  1.2808253e-01,  2.7479374e-01,  2.4469435e-02,
+	 6.7015857e-02,  1.1967997e-01,  5.7099588e-02,  4.1734684e-01,
+	-1.8816420e-01,  1.8340994e-01,  1.8140659e-01, -6.1031669e-02,
+	 2.6886207e-01, -1.5314770e-01,  4.4642828e-02, -2.1207440e-01,
+	-3.0990593e-02, -3.7220663e-01, -4.8828661e-02,  5.2576914e-02,
+	-1.7090029e-01, -2.5869820e-02, -4.8212141e-01, -5.8500014e-02,
+	-1.7317493e-01,  3.7640739e-02,  1.4019746e-01,  3.2498634e-01,
+	 4.1765594e-01,  2.2948909e-01,  1.2643699e-01, -6.7774974e-02,
+	 1.6762753e-01, -2.9162568e-01,  3.2363981e-03, -2.9133266e-01,
+	-4.9335934e-02, -6.2273767e-02, -2.3081020e-01,  1.1932422e-01,
+	-2.3568818e-01,  3.0742079e-01, -2.9853183e-01,  3.8999829e-01,
+	-5.3858328e-01,  1.0293538e-01, -3.4805223e-01, -2.1274953e-01,
+	-5.5849046e-02, -4.0056542e-02,  3.6580348e-01,  4.6610707e-01,
+	 5.6683410e-02,  4.0965819e-01,  5.0782688e-02,  6.1182901e-03,
+	-2.4555746e-01, -5.0187629e-01, -1.9487143e-01, -3.5387760e-01,
+	-5.8964893e-02,  1.4498779e-01, -2.3170851e-01,  2.9860672e-01,
+	-1.9317985e-01,  6.1017931e-02, -1.1533570e-01, -1.9597384e-01,
+	 3.5556856e-01, -2.2353619e-01,  6.1620677e-01, -5.7297599e-01,
+	 2.7382869e-01, -2.0830113e-01,  1.0651228e-01, -5.1332355e-02,
+	-3.9485583e-01, -5.1595878e-02,  2.5408182e-02, -1.6121480e-01,
+	-4.5110412e-02,  1.0172162e-01,  9.1470033e-02,  3.0106306e-01,
+	-1.4596304e-02, -1.4723733e-01,  1.8457155e-01, -3.0669570e-01,
+	 4.3742776e-02, -1.3290963e-01, -1.3459724e-01,  3.4160227e-01,
+	 1.3468790e-01,  3.2655066e-01, -5.2647412e-02,  1.3145214e-01,
+	-1.3840751e-01,  1.2150692e-01
+}
+IUT: PASS
 
-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}
+ -- h_len = 8 --
+float y_ref[] = {
+	 3.8475716e-01,  5.4654378e-02,  4.0569583e-01,  1.9732465e-01,
+	 6.2182777e-02,  4.6007581e-02, -7.4207053e-02,  3.2404867e-01,
+	-4.2646566e-01,  6.8503045e-02, -3.6317283e-01,  8.6252578e-02,
+	-1.0049982e-01,  2.8848641e-02,  2.3394865e-01,  3.8774294e-01,
+	-1.6008082e-01, -6.3331984e-02, -3.5713595e-01, -1.5972351e-01,
+	-7.2949402e-02,  3.3994686e-02, -5.0342709e-01,  3.3462417e-01,
+	-2.1306737e-01, -3.2629669e-01,  1.9106627e-02, -6.5554529e-03,
+	 1.6688257e-01,  2.9751599e-01, -5.6339733e-02,  9.2541061e-02,
+	 2.0728275e-01,  1.2827794e-01, -9.7970009e-02,  4.3152642e-01,
+	-1.3748240e-01,  2.3007628e-01, -3.5626933e-02,  5.6328601e-01,
+	-2.9200286e-01,  2.2552194e-01, -1.2183771e-02, -2.0528683e-01,
+	-1.8650457e-01,  2.0343314e-01,  1.1030240e-01,  1.6542999e-01,
+	-5.0732625e-01,  5.7128072e-03,  4.9520131e-02, -4.2610306e-02,
+	-1.4550450e-01,  3.7696707e-01,  2.0004307e-01, -2.8732342e-01,
+	-5.0631702e-01, -4.6201745e-01, -3.5400115e-02,  1.7888573e-01,
+	 1.2771693e-01,  3.8287488e-01,  8.9138612e-02,  1.3326670e-01,
+	-1.3034222e-01,  5.0948876e-01,  1.6253988e-01,  6.1701983e-03,
+	-1.8704908e-01, -3.6797896e-03,  2.7523407e-01, -1.8157889e-01,
+	 1.1319310e-01,  3.6894363e-01,  4.0642001e-02,  5.0084931e-01,
+	 1.6419113e-01, -9.3116745e-02, -1.4887799e-02,  1.8011260e-01,
+	 2.3029631e-01,  5.0040189e-02,  2.8201744e-01,  3.2292062e-01,
+	-5.3912316e-02,  4.0487966e-01, -1.8535823e-01,  3.6638471e-01,
+	 2.3508060e-01,  2.7408370e-01,  3.6298230e-01,  4.0030634e-01,
+	 1.5463566e-02,  2.4546035e-01,  1.3131972e-01,  6.6202849e-01,
+	-1.7166492e-01,  1.9913296e-01,  3.7397668e-01, -1.1465289e-01,
+	 8.6804092e-02, -7.4657001e-02,  1.3127592e-01,  2.5572953e-01,
+	-3.1451899e-01,  1.1418183e-01, -5.4067936e-02, -1.8290916e-01,
+	 1.8905841e-01, -1.2088218e-01, -4.6610184e-02,  1.1169069e-02,
+	-8.6249888e-02, -4.4575977e-01,  9.5960915e-02,  1.7753810e-01,
+	 3.6300682e-02,  5.5117831e-02, -3.8269129e-01, -2.0953836e-01,
+	-1.6564047e-01, -4.0044457e-02, -4.7360756e-02,  2.7152115e-01,
+	 2.8259674e-01,  2.5199765e-01, -1.9368437e-01,  1.8848507e-01,
+	-1.7319113e-01, -7.8186467e-02, -3.1400359e-01, -1.7798539e-01,
+	-2.6399142e-01,  1.2904029e-01, -3.8335827e-01,  2.1269161e-01,
+	-2.6879328e-01,  3.5377583e-01, -2.2276390e-01,  5.1084721e-01,
+	-5.0539166e-01,  1.9172835e-01, -4.3833745e-01, -2.8024608e-01,
+	-2.7436692e-01, -2.1930990e-01,  3.1899008e-01,  3.5051215e-01,
+	-1.9677331e-01,  3.0708387e-01,  8.9047387e-02,  6.5093994e-02,
+	-1.4114627e-01, -5.6711900e-01, -1.4393200e-01, -6.6919637e-01,
+	 3.3267856e-01, -1.6962306e-01, -5.7009470e-02,  1.1567383e-01,
+	 1.0546455e-02, -1.8580100e-01, -1.0087056e-01, -3.6209401e-01,
+	 2.1601290e-01, -5.6721181e-02,  6.2750477e-01, -6.6158593e-01,
+	 2.0232803e-01, -2.0528597e-01,  2.9394233e-01, -5.5906028e-03,
+	-4.0732571e-01, -3.8501829e-02,  4.9082294e-02, -1.0753187e-01,
+	 2.2487987e-02,  1.2401126e-01,  1.3383606e-01,  5.4958242e-01,
+	-1.4030990e-01,  1.6715114e-01,  2.5830886e-01, -2.3100130e-02,
+	 1.8861046e-01,  7.5817898e-02
+}
+IUT: PASS
 
-==== 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}
+ -- h_len = 12 --
+float y_ref[] = {
+	 6.4393055e-01,  4.6198644e-02,  7.6961976e-01,  2.0338218e-01,
+	 3.9040267e-01, -1.6305951e-02,  2.4174322e-01,  4.1924089e-01,
+	-3.4776792e-01,  3.3352980e-01, -5.1461613e-01,  1.7731960e-01,
+	-2.2109170e-01, -1.0692810e-02,  1.4568762e-01,  4.1487730e-01,
+	-2.3838633e-01, -1.6649896e-01, -3.2033300e-01, -4.3731174e-01,
+	 8.0468273e-03, -2.3291506e-01, -4.5403457e-01,  6.3448392e-02,
+	-1.1199225e-01, -4.9399075e-01,  3.8827535e-02, -1.2175907e-01,
+	 1.9211610e-01,  1.5748601e-02,  6.3713104e-02, -5.4411836e-02,
+	 3.5910544e-01,  1.8089499e-01, -8.3849184e-02,  4.6952319e-01,
+	-1.3097216e-01,  3.9444518e-01,  9.2041276e-02,  9.1931677e-01,
+	-1.2274407e-01,  3.6744910e-01, -7.1317488e-03, -4.2744270e-01,
+	-2.4982110e-01, -3.4792073e-02,  1.7541768e-01,  1.8287193e-02,
+	-4.1735864e-01, -1.6319177e-01,  5.6148872e-02, -2.6662689e-02,
+	-1.3927303e-01,  4.2746758e-01,  9.9831104e-02, -4.5083967e-01,
+	-6.1798984e-01, -6.9752467e-01, -5.3983122e-02,  7.6239705e-02,
+	 5.2488066e-02,  5.0055146e-01,  5.2418858e-03,  1.9365381e-01,
+	-2.3087139e-01,  4.5591956e-01,  1.0590754e-01, -9.3369529e-02,
+	-8.1770115e-02, -1.9278076e-01,  2.6090226e-01, -3.4908691e-01,
+	-9.9682942e-02,  2.0464768e-01, -8.8885106e-02,  2.1913598e-01,
+	 1.9302976e-01, -4.1766539e-01, -1.2384148e-02, -1.4312698e-01,
+	 1.7888883e-01, -9.5843635e-02,  1.2974171e-01,  2.6153788e-01,
+	-1.4377487e-01,  1.6859873e-01, -1.5012036e-01,  1.4864261e-01,
+	 2.0533815e-01,  2.9625934e-01,  2.0829637e-01,  5.5547190e-01,
+	-1.1550704e-01,  4.3823749e-01,  1.9185613e-01,  8.7257445e-01,
+	-4.8663691e-02,  3.6873922e-01,  4.9050367e-01, -1.5719551e-01,
+	 3.2744622e-01, -1.2747797e-01,  3.6327103e-01,  2.7797487e-01,
+	-3.7661973e-01, -5.4173008e-02, -3.0801520e-01, -3.8187349e-01,
+	-4.3708272e-02, -1.1218896e-01, -1.2676828e-01,  1.5835470e-01,
+	-6.8424262e-02, -2.3614784e-01,  1.8728454e-01,  2.7120337e-01,
+	 2.6976854e-01, -7.8457497e-02, -7.5408332e-02, -4.3717277e-01,
+	 1.5431963e-01, -3.1880721e-01,  3.1153014e-01,  2.9150844e-02,
+	 6.3865691e-01,  2.4006522e-01, -5.9806503e-02,  2.3618667e-01,
+	-2.8634012e-01, -2.5914139e-01, -4.7454682e-01, -4.9253801e-01,
+	-2.3763049e-01,  3.4789924e-02, -2.4430576e-01,  4.3708864e-01,
+	-8.9352712e-02,  6.8092680e-01, -3.1629015e-02,  6.2322330e-01,
+	-4.4037020e-01,  3.1882312e-02, -3.3379188e-01, -3.5241520e-01,
+	-2.3012178e-01, -3.9647453e-02,  8.0349393e-02,  6.3374585e-01,
+	-5.8204597e-01,  6.3586301e-01, -2.9739904e-01,  4.4182721e-01,
+	-2.4614613e-01, -4.2897230e-01, -2.5775841e-02, -6.8895894e-01,
+	 4.7509959e-01, -7.2605282e-02, -4.5277193e-02,  1.2873912e-01,
+	-6.7869939e-02, -3.1840524e-01, -1.3153505e-01, -4.3035623e-01,
+	 1.5486053e-01,  6.7873567e-02,  5.2350283e-01, -5.4881847e-01,
+	 2.1202806e-01, -3.7828991e-01,  3.5338366e-01, -3.6222893e-01,
+	-4.8003882e-01, -3.1656075e-01,  6.2320638e-02, -2.9101607e-01,
+	 8.9793704e-02, -1.1759783e-01
+}
+IUT: PASS
 
-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}
+ -- h_len = 16 --
+float y_ref[] = {
+	 6.2978989e-01,  1.4091884e-01,  1.0101279e+00,  1.2735325e-01,
+	 3.4140077e-01,  1.3663004e-01,  2.5682330e-01,  5.0929654e-01,
+	-4.3438864e-01,  4.9080691e-01, -5.2847892e-01,  3.8783157e-01,
+	-3.1026769e-01,  1.1108337e-01,  1.0375749e-01,  3.3765313e-01,
+	-1.2323911e-01,  5.0369859e-02, -5.4584050e-01, -3.6808807e-01,
+	 1.4700210e-01, -3.0531892e-01, -7.5355643e-01,  1.5413240e-01,
+	 1.7050791e-01, -7.5538301e-01, -2.3915285e-01, -2.0387162e-01,
+	 3.3901632e-01, -2.3372462e-01, -2.3276597e-01,  9.5151775e-02,
+	 6.3186646e-01,  3.3316955e-01, -2.4707654e-01,  6.7647821e-01,
+	-3.4007065e-02,  4.8237050e-01, -3.8462095e-02,  9.1794872e-01,
+	-8.5097685e-02,  2.0627885e-01, -5.5439603e-03, -2.4289967e-01,
+	-5.2453101e-02, -8.6846918e-02,  4.6663910e-02,  3.1399831e-01,
+	-2.4083215e-01, -2.8138041e-01, -6.4303502e-03, -1.6721155e-01,
+	-9.3103498e-02,  5.2139711e-01,  2.5821176e-01, -5.7820058e-01,
+	-8.0225664e-01, -3.6109373e-01, -2.7383961e-02,  2.7160581e-02,
+	 1.2773320e-01,  6.5818560e-01,  8.8922329e-02,  3.0489790e-01,
+	-1.2920819e-01,  6.1244529e-01, -3.4073405e-03,  9.3546256e-02,
+	-4.4875145e-02, -5.0849766e-03,  2.3889390e-01, -5.1130760e-01,
+	 1.6360463e-01,  4.2029971e-01, -3.0263537e-01,  2.2376096e-01,
+	 3.6833948e-01, -3.0413884e-01, -1.3956207e-01, -2.4732138e-01,
+	 4.1098878e-01, -2.7388829e-01,  9.3243912e-02,  1.1229334e-01,
+	-2.4469408e-01,  8.2925551e-02, -1.9065322e-01,  1.0021861e-01,
+	 6.5237284e-05,  4.9057111e-01,  1.2250574e-01,  4.0864003e-01,
+	-1.9107516e-01,  6.7219990e-01,  3.9303046e-01,  8.8695705e-01,
+	 1.0575182e-01,  4.4379455e-01,  7.0351452e-01, -1.7413050e-01,
+	 1.6268335e-01, -3.6398947e-01,  4.2087737e-01,  1.6894349e-01,
+	-6.3355178e-01,  2.6445135e-02, -4.0070909e-01, -2.5525039e-01,
+	-2.7707762e-01,  9.5453277e-02, -3.1189567e-01,  3.6464140e-01,
+	-2.4638277e-01, -2.5021696e-01,  3.6770612e-02,  1.9988173e-01,
+	 4.0678823e-01, -6.1948225e-02,  1.3091478e-02, -2.9786986e-01,
+	 3.4833667e-01, -1.0854194e-01,  9.5755681e-02, -8.9162305e-02,
+	 6.5537059e-01,  1.7219633e-02, -3.7129313e-01, -2.0198233e-02,
+	-1.9736825e-01, -1.2085505e-01, -5.3962123e-01, -3.6008352e-01,
+	-3.5265970e-01,  1.0517791e-02,  1.5189931e-02,  3.0119994e-01,
+	-4.4719204e-02,  3.9169803e-01,  3.8661939e-01,  4.4619995e-01,
+	-3.1440073e-01, -1.6251071e-01, -5.4129058e-01, -1.6764219e-01,
+	-2.0251128e-01, -1.8941458e-01, -2.6222983e-01,  7.8157192e-01,
+	-2.5927317e-01,  6.1785626e-01, -4.6630061e-01,  5.0258636e-01,
+	-4.2175163e-02, -3.5761774e-01, -6.6525750e-02, -9.2430484e-01,
+	 5.3185409e-01,  3.1188786e-02, -1.0949404e-01,  2.6275298e-01,
+	-6.2551588e-02, -2.0182461e-02, -7.3312223e-02, -3.3251107e-01,
+	 1.2971312e-03,  1.4883006e-01,  7.2222137e-01, -4.2167574e-01,
+	 2.1200123e-01, -2.1735358e-01
+}
+IUT: PASS
 
-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}
+ -- h_len = 20 --
+float y_ref[] = {
+	 5.3420120e-01,  1.8982859e-01,  1.0291221e+00,  1.4028928e-01,
+	 3.1864315e-01,  1.3011315e-01,  2.3228759e-01,  3.3733675e-01,
+	-2.9608598e-01,  5.8351099e-01, -6.8905240e-01,  4.1818243e-01,
+	-2.1958399e-01, -9.9827707e-02, -2.5024422e-02,  3.5823420e-01,
+	 1.2323441e-01, -7.1719073e-02, -7.3568404e-01, -4.4755465e-01,
+	 2.2529861e-01, -3.9330691e-01, -8.6953437e-01,  4.3487376e-01,
+	 4.1921544e-01, -6.0425735e-01, -3.5521388e-01, -2.0435575e-01,
+	 3.5010090e-01, -2.5316292e-01, -2.5977921e-01,  5.0659802e-02,
+	 6.8681252e-01,  1.3008146e-01, -2.5315785e-01,  8.3824909e-01,
+	 1.1510594e-01,  4.9176550e-01, -1.7823341e-01,  1.0102953e+00,
+	-2.3010623e-02,  3.5516348e-02, -2.1020740e-02, -3.8336021e-01,
+	-7.5408712e-02,  6.2125668e-02,  1.3044539e-01,  2.4428497e-01,
+	-4.0901759e-01, -9.4211206e-02, -2.6027888e-02, -2.1708845e-01,
+	 4.6089791e-02,  5.2399588e-01,  2.9400715e-01, -5.4901767e-01,
+	-8.5219324e-01, -3.1177694e-01, -1.3685943e-01,  2.8320648e-02,
+	 1.8308631e-01,  6.5987110e-01,  7.1065076e-02,  5.6479126e-02,
+	 2.8107211e-02,  7.1808910e-01, -2.1963760e-01,  1.0674340e-01,
+	 3.0151665e-02, -6.7855299e-02,  2.0626336e-01, -6.6742498e-01,
+	 2.8878981e-01,  3.3218032e-01, -3.9555237e-01,  1.8781629e-01,
+	 2.3412362e-01, -2.8779972e-01, -1.1563770e-01, -1.9100471e-01,
+	 3.2126588e-01, -6.5900549e-02,  5.9671655e-02, -3.3305369e-02,
+	-1.7228185e-01,  2.1473107e-01,  5.1648900e-02,  1.6270636e-01,
+	 5.1605098e-02,  4.2832869e-01,  1.4614150e-01,  3.1187207e-01,
+	-3.8980633e-01,  5.3980416e-01,  4.0656170e-01,  8.7101591e-01,
+	-5.0582461e-02,  5.9981346e-01,  6.6075850e-01, -5.1777057e-02,
+	 1.1775772e-01, -3.0120179e-01,  4.1258806e-01,  2.2372836e-01,
+	-6.3340878e-01, -1.0023584e-01, -3.5639426e-01, -4.1479793e-01,
+	-2.8701484e-02,  1.3821782e-01, -2.1146557e-01,  4.9781999e-01,
+	-1.9069955e-01, -2.0883378e-01, -1.7931046e-01, -3.0740768e-02,
+	 4.4180271e-01, -2.3938809e-01, -1.2956862e-01, -3.4948981e-01,
+	 4.6737233e-01,  1.3115168e-01,  1.5102869e-01,  3.4803081e-02,
+	 5.6759942e-01, -1.0904521e-01, -1.3368645e-01, -1.3472131e-01,
+	-1.2760213e-01, -2.1923567e-01, -3.9361662e-01, -3.7525508e-01,
+	-4.1372731e-01,  1.0058865e-02, -3.0391473e-01,  5.9899330e-01,
+	-4.2276721e-02,  3.2056916e-01,  2.3163396e-01,  5.0194943e-01,
+	-4.9533814e-02, -8.7483667e-02, -6.4559376e-01, -1.4032331e-01,
+	-1.2611310e-01, -2.1656755e-01, -2.7046436e-01,  5.9975326e-01,
+	-2.6020509e-01,  7.6019281e-01, -5.6156492e-01,  6.6070211e-01,
+	-1.8862886e-02, -2.5943482e-01,  1.1894502e-02, -1.0142385e+00,
+	 3.6559796e-01, -1.1502273e-02,  4.4767298e-02,  2.9584533e-01,
+	 3.7647784e-05, -1.3147809e-02
+}
+IUT: PASS
 
-==== 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}
+ -- h_len = 24 --
+float y_ref[] = {
+	 5.3222823e-01,  2.4987461e-01,  1.0283798e+00,  3.5526699e-01,
+	 1.8697870e-01,  1.4152247e-01,  2.6207578e-01,  3.3484158e-01,
+	-3.8979149e-01,  6.8604469e-01, -6.4926147e-01,  2.5207657e-01,
+	-3.7822890e-01, -2.2347759e-01,  1.0470502e-02,  3.0506110e-01,
+	 4.1011676e-02, -5.4856278e-03, -6.8150079e-01, -4.5345306e-01,
+	 1.0741763e-01, -2.7692410e-01, -8.1968147e-01,  5.7136154e-01,
+	 3.8703418e-01, -6.2253571e-01, -3.7823236e-01, -2.0682354e-01,
+	 3.9098579e-01, -9.6905150e-02, -1.8801522e-01,  3.7933946e-02,
+	 6.3939112e-01,  2.3467670e-01, -1.2109100e-01,  8.0106556e-01,
+	 1.0727239e-01,  5.1171827e-01, -1.2966292e-01,  1.0506585e+00,
+	 4.7837995e-02, -1.8024493e-02, -1.1318965e-01, -2.0743141e-01,
+	 1.1125680e-02,  7.5636670e-02,  2.0156327e-01,  3.7243477e-01,
+	-4.1752231e-01,  6.4663544e-02,  2.6038434e-02, -7.9749018e-02,
+	 7.5686403e-02,  6.9610006e-01,  3.2217339e-01, -4.2776427e-01,
+	-8.2220536e-01, -2.7305549e-01, -5.1647477e-02,  2.4109566e-01,
+	 1.1434041e-01,  6.7494470e-01,  2.0092924e-01,  8.2214177e-02,
+	 2.3937991e-02,  7.1629500e-01, -1.4283688e-01,  2.4555638e-02,
+	-3.3275224e-03, -1.8814500e-01,  1.9801255e-01, -7.5389367e-01,
+	 2.5686151e-01,  3.2000977e-01, -5.6981736e-01,  1.9078457e-01,
+	 1.6527905e-01, -3.5737312e-01, -1.0835774e-01, -4.6288706e-03,
+	 3.7699357e-01, -5.8192119e-02,  1.1966180e-01, -3.6230266e-02,
+	-6.2654182e-02,  2.3270245e-01,  4.6139322e-02,  5.6660924e-02,
+	 7.4724287e-02,  3.8419297e-01, -1.0854036e-02,  3.5449454e-01,
+	-4.8905340e-01,  5.8285779e-01,  2.2925827e-01,  1.0132606e+00,
+	-2.5498384e-01,  7.4497163e-01,  4.7515452e-01, -4.3996703e-02,
+	 1.8788118e-02, -2.4939571e-01,  4.2214888e-01,  3.3849144e-01,
+	-6.4541113e-01, -1.9279037e-02, -3.2691205e-01, -3.7180674e-01,
+	-8.7503098e-02,  8.6730786e-02, -2.2775947e-01,  4.2456102e-01,
+	-3.5831624e-01, -2.8897566e-01, -1.6724513e-01, -4.8065744e-04,
+	 3.2799438e-01, -2.8447020e-01, -1.7178029e-01, -4.0660527e-01,
+	 6.4187962e-01,  7.3846772e-02,  2.0672068e-01, -1.5366182e-01,
+	 7.9900908e-01, -3.0084166e-01, -5.6068588e-02, -2.3155114e-01,
+	-1.4066668e-01, -2.3897269e-01, -3.4076381e-01, -5.3892708e-01,
+	-5.2356058e-01,  1.0604618e-01, -2.1092136e-01,  6.1905998e-01,
+	-1.2905772e-01,  3.0114239e-01,  3.4632972e-01,  4.9826914e-01,
+	-3.2198433e-02, -1.3098410e-01, -6.5234804e-01, -2.6879534e-02,
+	-1.2591730e-01, -1.4107151e-01, -2.1500964e-01,  7.3180163e-01,
+	-2.9997614e-01,  8.9727402e-01, -6.1047006e-01,  8.2901204e-01,
+	 1.4916256e-01, -1.1074571e-01
+}
+IUT: PASS
 
-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}
+ -- h_len = 25 --
+float y_ref[] = {
+	 5.6923628e-01,  2.1122517e-01,  1.0261438e+00,  3.9087293e-01,
+	 2.1345332e-01,  1.2748230e-01,  2.2850943e-01,  3.4783924e-01,
+	-3.5230315e-01,  7.2733051e-01, -6.4562315e-01,  2.8965744e-01,
+	-3.5571671e-01, -2.6395977e-01, -2.4125937e-02,  2.7487630e-01,
+	 6.1082214e-02, -8.9056650e-03, -6.7076659e-01, -4.7583869e-01,
+	 1.0633938e-01, -2.9135108e-01, -8.2240015e-01,  6.1099094e-01,
+	 3.9239836e-01, -6.5968055e-01, -4.1528901e-01, -2.2582904e-01,
+	 4.0954006e-01, -1.1742298e-01, -2.0005567e-01,  5.0488133e-02,
+	 6.2323201e-01,  2.6340836e-01, -1.1593901e-01,  7.6837289e-01,
+	 7.8955740e-02,  5.2631205e-01, -1.0634977e-01,  1.0168220e+00,
+	 6.0709454e-02, -3.4081139e-02, -1.5245335e-01, -2.1505590e-01,
+	-2.4050269e-03,  4.4784673e-02,  2.0676211e-01,  3.3596647e-01,
+	-4.0878621e-01,  3.7588470e-02,  1.0192644e-02, -1.1509930e-01,
+	 7.7192493e-02,  7.2054374e-01,  2.8344434e-01, -4.6390212e-01,
+	-7.9189837e-01, -3.0583304e-01, -6.3782707e-02,  2.4694878e-01,
+	 1.0405317e-01,  6.9377714e-01,  1.7632841e-01,  9.8775931e-02,
+	 2.8493963e-02,  7.3985428e-01, -1.1595964e-01,  4.3803096e-02,
+	-8.1826039e-03, -1.8096274e-01,  2.2643171e-01, -7.8888541e-01,
+	 2.9099524e-01,  3.5217339e-01, -5.6942546e-01,  1.6837947e-01,
+	 1.2358252e-01, -3.9479053e-01, -1.2422302e-01,  5.4188324e-03,
+	 3.5550922e-01, -4.6895050e-02,  1.3736735e-01, -1.3200402e-02,
+	-6.9921568e-02,  2.5468710e-01,  7.6039456e-02,  3.6692373e-02,
+	 1.0693954e-01,  3.5894975e-01,  1.8038662e-02,  3.3341441e-01,
+	-4.5245603e-01,  5.4414153e-01,  2.6774803e-01,  1.0114058e+00,
+	-2.2713269e-01,  7.6733053e-01,  4.4953904e-01, -6.4008765e-02,
+	 5.3210976e-03, -2.8960016e-01,  4.1015321e-01,  3.1615001e-01,
+	-6.1044383e-01,  1.2125295e-02, -3.2865044e-01, -3.3552784e-01,
+	-5.0508052e-02,  1.1213525e-01, -2.2444099e-01,  3.9706358e-01,
+	-3.6462283e-01, -3.1095976e-01, -1.2870458e-01,  2.8953498e-02,
+	 2.8498679e-01, -2.5903764e-01, -2.0532282e-01, -3.7438947e-01,
+	 5.9906083e-01,  1.1220507e-01,  1.7484823e-01, -1.1687514e-01,
+	 8.4165925e-01, -3.3723247e-01, -6.4144842e-02, -2.0405796e-01,
+	-1.1169051e-01, -2.2965629e-01, -3.7629083e-01, -5.6642604e-01,
+	-5.1144052e-01,  1.0153162e-01, -2.1775363e-01,  6.2313920e-01,
+	-1.4517608e-01,  3.3557987e-01,  3.4367973e-01,  4.7613770e-01,
+	-1.5364632e-02, -1.7332375e-01, -6.5896881e-01, -5.9360463e-02,
+	-1.4723293e-01, -1.5215987e-01, -1.7504829e-01,  7.1048653e-01,
+	-3.2864007e-01,  8.6068469e-01, -6.4257747e-01,  8.0053741e-01
+}
+IUT: PASS
 
-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}
 

-- 
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: newchange
Gerrit-Change-Id: I4e203d2c4b778af77d630ed15d4cef6b0c0eb76d
Gerrit-Change-Number: 12416
Gerrit-PatchSet: 1
Gerrit-Owner: tnt <tnt at 246tNt.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20181221/a2703a95/attachment.htm>


More information about the gerrit-log mailing list