<p>tnt <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/12416">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">tests: Rework the convolve_test<br><br>Besides just general cleanup, the major changes are :<br> - Fully internal generation of reference data that doesn't<br>   depend on glibc or even on any floating point math<br> - Golden results are included in a .h<br>   Due to varying precision of different implementation or<br>   architecture, any kind of textual compare is impossible, so<br>   we include golden values and compare results of both the<br>   'base' implementation the potentially 'optimized' one again<br>   this set of values with a small error tolerance<br><br>Change-Id: I4e203d2c4b778af77d630ed15d4cef6b0c0eb76d<br>Signed-off-by: Sylvain Munaut <tnt@246tNt.com><br>---<br>M tests/Transceiver52M/Makefile.am<br>M tests/Transceiver52M/convolve_test.c<br>M tests/Transceiver52M/convolve_test.ok<br>A tests/Transceiver52M/convolve_test_golden.h<br>4 files changed, 926 insertions(+), 168 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/tests/Transceiver52M/Makefile.am b/tests/Transceiver52M/Makefile.am</span><br><span>index 1f8aa7a..edb812f 100644</span><br><span>--- a/tests/Transceiver52M/Makefile.am</span><br><span>+++ b/tests/Transceiver52M/Makefile.am</span><br><span>@@ -2,7 +2,7 @@</span><br><span> </span><br><span> AM_CFLAGS = -Wall -I$(top_srcdir)/Transceiver52M -I$(top_srcdir)/Transceiver52M/arch/common $(STD_DEFINES_AND_INCLUDES) -g</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-EXTRA_DIST = convolve_test.ok</span><br><span style="color: hsl(120, 100%, 40%);">+EXTRA_DIST = convolve_test.ok convolve_test_golden.h</span><br><span> </span><br><span> noinst_PROGRAMS = \</span><br><span>       convolve_test</span><br><span>diff --git a/tests/Transceiver52M/convolve_test.c b/tests/Transceiver52M/convolve_test.c</span><br><span>index 8ca4b72..cda5385 100644</span><br><span>--- a/tests/Transceiver52M/convolve_test.c</span><br><span>+++ b/tests/Transceiver52M/convolve_test.c</span><br><span>@@ -1,142 +1,323 @@</span><br><span style="color: hsl(120, 100%, 40%);">+#include <stdint.h></span><br><span> #include <stdio.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <string.h></span><br><span> #include <stdlib.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <string.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <math.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> #include "convolve.h"</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-#define TESTVEC_LEN 1000</span><br><span style="color: hsl(0, 100%, 40%);">-#define DO_INIT 1</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-float x_vect[TESTVEC_LEN];</span><br><span style="color: hsl(0, 100%, 40%);">-float y_vect[TESTVEC_LEN];</span><br><span style="color: hsl(0, 100%, 40%);">-float h_vect[TESTVEC_LEN];</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-float *x;</span><br><span style="color: hsl(0, 100%, 40%);">-float *h;</span><br><span style="color: hsl(0, 100%, 40%);">-float *y;</span><br><span style="color: hsl(120, 100%, 40%);">+// ---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+// Misc utils</span><br><span style="color: hsl(120, 100%, 40%);">+// ---------------------------------------------------------------------------</span><br><span> </span><br><span> /* Generate some random values for testing */</span><br><span style="color: hsl(0, 100%, 40%);">-void gen_floats(float *vect, int len)</span><br><span style="color: hsl(120, 100%, 40%);">+static unsigned long rand_state = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static void</span><br><span style="color: hsl(120, 100%, 40%);">+rand_reset(void)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-   int i;</span><br><span style="color: hsl(0, 100%, 40%);">-  for (i = 0; i < len; i++) {</span><br><span style="color: hsl(0, 100%, 40%);">-          vect[i] = (float)rand()/(float)(RAND_MAX);</span><br><span style="color: hsl(0, 100%, 40%);">-      }</span><br><span style="color: hsl(120, 100%, 40%);">+     rand_state = 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Reset testvectors */</span><br><span style="color: hsl(0, 100%, 40%);">-static void reset_testvec(int seed)</span><br><span style="color: hsl(120, 100%, 40%);">+static unsigned long</span><br><span style="color: hsl(120, 100%, 40%);">+rand_int(void)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-   srand(seed);</span><br><span style="color: hsl(0, 100%, 40%);">-    memset(x_vect,0,sizeof(x_vect));</span><br><span style="color: hsl(0, 100%, 40%);">-        memset(y_vect,0,sizeof(y_vect));</span><br><span style="color: hsl(0, 100%, 40%);">-        memset(h_vect,0,sizeof(h_vect));</span><br><span style="color: hsl(120, 100%, 40%);">+      rand_state = (1103515245UL * rand_state + 12345UL) & 0x7fffffffUL;</span><br><span style="color: hsl(120, 100%, 40%);">+        return rand_state;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-       x=x_vect + TESTVEC_LEN/2;</span><br><span style="color: hsl(0, 100%, 40%);">-       y=y_vect + TESTVEC_LEN/2;</span><br><span style="color: hsl(0, 100%, 40%);">-       h=h_vect + TESTVEC_LEN/2;</span><br><span style="color: hsl(120, 100%, 40%);">+static float</span><br><span style="color: hsl(120, 100%, 40%);">+rand_float(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+  union {</span><br><span style="color: hsl(120, 100%, 40%);">+               uint32_t u;</span><br><span style="color: hsl(120, 100%, 40%);">+           float f;</span><br><span style="color: hsl(120, 100%, 40%);">+      } r;</span><br><span style="color: hsl(120, 100%, 40%);">+  uint32_t u = rand_int();</span><br><span style="color: hsl(120, 100%, 40%);">+      int e = 112 + ((u ^ (u>>8)) & 15);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        gen_floats(x_vect,TESTVEC_LEN);</span><br><span style="color: hsl(0, 100%, 40%);">- gen_floats(h_vect,TESTVEC_LEN);</span><br><span style="color: hsl(120, 100%, 40%);">+       r.u  =  u & 0x007fffffUL;   // Mantissa</span><br><span style="color: hsl(120, 100%, 40%);">+   r.u |= (u & 0x00800000UL) << 8;       // Sign</span><br><span style="color: hsl(120, 100%, 40%);">+       r.u |= (e & 0xffUL) << 23;    // Exponent</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ return r.f;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static void</span><br><span style="color: hsl(120, 100%, 40%);">+gen_floats(float *vect, int len)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+    int i;</span><br><span style="color: hsl(120, 100%, 40%);">+        for (i = 0; i < len; i++)</span><br><span style="color: hsl(120, 100%, 40%);">+          vect[i] = rand_float();</span><br><span> }</span><br><span> </span><br><span> /* Show float vector data cut and paste friendly */</span><br><span style="color: hsl(0, 100%, 40%);">-static void dump_floats(float *vect, int len, char *name)</span><br><span style="color: hsl(120, 100%, 40%);">+static void</span><br><span style="color: hsl(120, 100%, 40%);">+dump_floats(float *vect, int len, char *name)</span><br><span> {</span><br><span>    int i;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      printf("float %s[] = {", name);</span><br><span style="color: hsl(120, 100%, 40%);">+     printf("static const float %s[] = {\n\t", name);</span><br><span>   for(i = 0; i < len; i++) {</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-           printf("%f",vect[i]);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-         if(i<len-1)</span><br><span style="color: hsl(0, 100%, 40%);">-                  printf(",");</span><br><span style="color: hsl(120, 100%, 40%);">+                char *end;</span><br><span style="color: hsl(120, 100%, 40%);">+            if (i == len-1)</span><br><span style="color: hsl(120, 100%, 40%);">+                       end = "\n";</span><br><span style="color: hsl(120, 100%, 40%);">+         else if ((i&3) == 3)</span><br><span style="color: hsl(120, 100%, 40%);">+                      end = ",\n\t";</span><br><span style="color: hsl(120, 100%, 40%);">+              else</span><br><span style="color: hsl(120, 100%, 40%);">+                  end = ", ";</span><br><span style="color: hsl(120, 100%, 40%);">+         printf("%14.7ef%s", vect[i], end);</span><br><span>         }</span><br><span style="color: hsl(0, 100%, 40%);">-       printf("}\n");</span><br><span style="color: hsl(120, 100%, 40%);">+      printf("};\n");</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Test complex convolution */</span><br><span style="color: hsl(0, 100%, 40%);">-static void test_convolve_complex(int h_len)</span><br><span style="color: hsl(120, 100%, 40%);">+/* Compare float with tolerance of delta (absolute) and epsilon (relative) */</span><br><span style="color: hsl(120, 100%, 40%);">+static int</span><br><span style="color: hsl(120, 100%, 40%);">+compare_floats(const float *v0, const float *v1, int len, float delta, float epsilon)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+     int i;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      for (i=0; i<len; i++)</span><br><span style="color: hsl(120, 100%, 40%);">+      {</span><br><span style="color: hsl(120, 100%, 40%);">+             float a = v0[i];</span><br><span style="color: hsl(120, 100%, 40%);">+              float b = v1[i];</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+            if (fabsf(a - b) < delta)</span><br><span style="color: hsl(120, 100%, 40%);">+                  continue;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           if (fabsf(1.0f - (a/b)) < epsilon)</span><br><span style="color: hsl(120, 100%, 40%);">+                 continue;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           return 1;</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+// ---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+// Golden reference results</span><br><span style="color: hsl(120, 100%, 40%);">+// ---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include "convolve_test_golden.h"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+enum test_type {</span><br><span style="color: hsl(120, 100%, 40%);">+      CONV_REAL_BASE          = 0,</span><br><span style="color: hsl(120, 100%, 40%);">+  CONV_REAL_OPT           = 1,</span><br><span style="color: hsl(120, 100%, 40%);">+  CONV_COMPLEX_BASE       = 2,</span><br><span style="color: hsl(120, 100%, 40%);">+  CONV_COMPLEX_OPT        = 3</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+struct test_data {</span><br><span style="color: hsl(120, 100%, 40%);">+ enum test_type type;</span><br><span style="color: hsl(120, 100%, 40%);">+  int h_len;</span><br><span style="color: hsl(120, 100%, 40%);">+    const  float *y_ref;</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static const char *type_name[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+        "real_base", "real_opt", "complex_base", "complex_opt",</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static const struct test_data tests[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+      { CONV_REAL_BASE,  4, y_ref_real_base_4 },</span><br><span style="color: hsl(120, 100%, 40%);">+    { CONV_REAL_BASE,  8, y_ref_real_base_8 },</span><br><span style="color: hsl(120, 100%, 40%);">+    { CONV_REAL_BASE, 12, y_ref_real_base_12 },</span><br><span style="color: hsl(120, 100%, 40%);">+   { CONV_REAL_BASE, 16, y_ref_real_base_16 },</span><br><span style="color: hsl(120, 100%, 40%);">+   { CONV_REAL_BASE, 20, y_ref_real_base_20 },</span><br><span style="color: hsl(120, 100%, 40%);">+   { CONV_REAL_BASE, 24, y_ref_real_base_24 },</span><br><span style="color: hsl(120, 100%, 40%);">+   { CONV_COMPLEX_BASE,  4, y_ref_complex_base_4 },</span><br><span style="color: hsl(120, 100%, 40%);">+      { CONV_COMPLEX_BASE,  8, y_ref_complex_base_8 },</span><br><span style="color: hsl(120, 100%, 40%);">+      { CONV_COMPLEX_BASE, 12, y_ref_complex_base_12 },</span><br><span style="color: hsl(120, 100%, 40%);">+     { CONV_COMPLEX_BASE, 16, y_ref_complex_base_16 },</span><br><span style="color: hsl(120, 100%, 40%);">+     { CONV_COMPLEX_BASE, 20, y_ref_complex_base_20 },</span><br><span style="color: hsl(120, 100%, 40%);">+     { CONV_COMPLEX_BASE, 24, y_ref_complex_base_24 },</span><br><span style="color: hsl(120, 100%, 40%);">+     { 0, 0, NULL },</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+// ---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+// Main testing logic</span><br><span style="color: hsl(120, 100%, 40%);">+// ---------------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+struct test_vec</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+  float *x;</span><br><span style="color: hsl(120, 100%, 40%);">+     float *h;</span><br><span style="color: hsl(120, 100%, 40%);">+     float *y;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   int x_len;      /* Theses are in # of _floats_ ! */</span><br><span style="color: hsl(120, 100%, 40%);">+   int h_len;      /* Theses are in # of _floats_ ! */</span><br><span style="color: hsl(120, 100%, 40%);">+   int y_len;      /* Theses are in # of _floats_ ! */</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* Reset test vectors */</span><br><span style="color: hsl(120, 100%, 40%);">+static void</span><br><span style="color: hsl(120, 100%, 40%);">+test_vec_reset(struct test_vec *tv, int seed)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+    rand_reset();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       memset(tv->x, 0, tv->x_len * sizeof(float));</span><br><span style="color: hsl(120, 100%, 40%);">+    memset(tv->h, 0, tv->h_len * sizeof(float));</span><br><span style="color: hsl(120, 100%, 40%);">+    memset(tv->y, 0, tv->y_len * sizeof(float));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  gen_floats(tv->x, tv->x_len);</span><br><span style="color: hsl(120, 100%, 40%);">+   gen_floats(tv->h, tv->h_len);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* Allocate test vectors */</span><br><span style="color: hsl(120, 100%, 40%);">+static struct test_vec *</span><br><span style="color: hsl(120, 100%, 40%);">+test_vec_alloc(int x_len, int h_len)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+      struct test_vec *tv;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        tv = calloc(1, sizeof(struct test_vec));</span><br><span style="color: hsl(120, 100%, 40%);">+      if (!tv)</span><br><span style="color: hsl(120, 100%, 40%);">+              return NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        tv->x_len = x_len;</span><br><span style="color: hsl(120, 100%, 40%);">+ tv->h_len = h_len;</span><br><span style="color: hsl(120, 100%, 40%);">+ tv->y_len = x_len;   /* Results can never be longer than x */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    tv->x = convolve_h_alloc(x_len);</span><br><span style="color: hsl(120, 100%, 40%);">+   tv->h = convolve_h_alloc(h_len);</span><br><span style="color: hsl(120, 100%, 40%);">+   tv->y = convolve_h_alloc(tv->y_len);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  test_vec_reset(tv, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      return tv;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* Release test vectors */</span><br><span style="color: hsl(120, 100%, 40%);">+static void</span><br><span style="color: hsl(120, 100%, 40%);">+test_vec_release(struct test_vec *tv)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+    if (!tv)</span><br><span style="color: hsl(120, 100%, 40%);">+              return;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     free(tv->x);</span><br><span style="color: hsl(120, 100%, 40%);">+       free(tv->h);</span><br><span style="color: hsl(120, 100%, 40%);">+       free(tv->y);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     free(tv);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* Run convolution */</span><br><span style="color: hsl(120, 100%, 40%);">+static int</span><br><span style="color: hsl(120, 100%, 40%);">+run_convolve(struct test_vec *tv, int h_len, enum test_type type)</span><br><span> {</span><br><span>    int x_len;</span><br><span style="color: hsl(0, 100%, 40%);">-      int y_len;</span><br><span style="color: hsl(0, 100%, 40%);">-      int start;</span><br><span style="color: hsl(0, 100%, 40%);">-      int len;</span><br><span style="color: hsl(120, 100%, 40%);">+      int start, len;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     x_len=34;</span><br><span style="color: hsl(0, 100%, 40%);">-       y_len=26;</span><br><span style="color: hsl(0, 100%, 40%);">-       start=8;</span><br><span style="color: hsl(0, 100%, 40%);">-        len=26;</span><br><span style="color: hsl(0, 100%, 40%);">- reset_testvec(0);</span><br><span style="color: hsl(0, 100%, 40%);">-       dump_floats(x,x_len,"x");</span><br><span style="color: hsl(0, 100%, 40%);">-     printf("\n");</span><br><span style="color: hsl(0, 100%, 40%);">- dump_floats(h,h_len,"h");</span><br><span style="color: hsl(0, 100%, 40%);">-     printf("\n");</span><br><span style="color: hsl(0, 100%, 40%);">- convolve_complex(x, x_len, h, h_len, y, y_len, start, len);</span><br><span style="color: hsl(0, 100%, 40%);">-     dump_floats(y,y_len,"y");</span><br><span style="color: hsl(0, 100%, 40%);">-     printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       test_vec_reset(tv, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Compute params that fit within our test vectors */</span><br><span style="color: hsl(120, 100%, 40%);">+ x_len = tv->x_len / 2; /* float vs complex */</span><br><span style="color: hsl(120, 100%, 40%);">+      start = h_len - 1;</span><br><span style="color: hsl(120, 100%, 40%);">+    len   = x_len - start;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Run implementation */</span><br><span style="color: hsl(120, 100%, 40%);">+      switch (type) {</span><br><span style="color: hsl(120, 100%, 40%);">+       case CONV_REAL_BASE:</span><br><span style="color: hsl(120, 100%, 40%);">+          base_convolve_real(</span><br><span style="color: hsl(120, 100%, 40%);">+                   tv->x, x_len,</span><br><span style="color: hsl(120, 100%, 40%);">+                      tv->h, h_len,</span><br><span style="color: hsl(120, 100%, 40%);">+                      tv->y, tv->y_len,</span><br><span style="color: hsl(120, 100%, 40%);">+                       start, len</span><br><span style="color: hsl(120, 100%, 40%);">+            );</span><br><span style="color: hsl(120, 100%, 40%);">+            break;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      case CONV_REAL_OPT:</span><br><span style="color: hsl(120, 100%, 40%);">+           convolve_real(</span><br><span style="color: hsl(120, 100%, 40%);">+                        tv->x, x_len,</span><br><span style="color: hsl(120, 100%, 40%);">+                      tv->h, h_len,</span><br><span style="color: hsl(120, 100%, 40%);">+                      tv->y, tv->y_len,</span><br><span style="color: hsl(120, 100%, 40%);">+                       start, len</span><br><span style="color: hsl(120, 100%, 40%);">+            );</span><br><span style="color: hsl(120, 100%, 40%);">+            break;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      case CONV_COMPLEX_BASE:</span><br><span style="color: hsl(120, 100%, 40%);">+               base_convolve_complex(</span><br><span style="color: hsl(120, 100%, 40%);">+                        tv->x, x_len,</span><br><span style="color: hsl(120, 100%, 40%);">+                      tv->h, h_len,</span><br><span style="color: hsl(120, 100%, 40%);">+                      tv->y, tv->y_len,</span><br><span style="color: hsl(120, 100%, 40%);">+                       start, len</span><br><span style="color: hsl(120, 100%, 40%);">+            );</span><br><span style="color: hsl(120, 100%, 40%);">+            break;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      case CONV_COMPLEX_OPT:</span><br><span style="color: hsl(120, 100%, 40%);">+                convolve_complex(</span><br><span style="color: hsl(120, 100%, 40%);">+                     tv->x, x_len,</span><br><span style="color: hsl(120, 100%, 40%);">+                      tv->h, h_len,</span><br><span style="color: hsl(120, 100%, 40%);">+                      tv->y, tv->y_len,</span><br><span style="color: hsl(120, 100%, 40%);">+                       start, len</span><br><span style="color: hsl(120, 100%, 40%);">+            );</span><br><span style="color: hsl(120, 100%, 40%);">+            break;</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   return len * 2;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Test real convolution */</span><br><span style="color: hsl(0, 100%, 40%);">-static void test_convolve_real(int h_len)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-   int x_len;</span><br><span style="color: hsl(0, 100%, 40%);">-      int y_len;</span><br><span style="color: hsl(0, 100%, 40%);">-      int start;</span><br><span style="color: hsl(0, 100%, 40%);">-      int len;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    x_len=34;</span><br><span style="color: hsl(0, 100%, 40%);">-       y_len=26;</span><br><span style="color: hsl(0, 100%, 40%);">-       start=8;</span><br><span style="color: hsl(0, 100%, 40%);">-        len=26;</span><br><span style="color: hsl(0, 100%, 40%);">- reset_testvec(0);</span><br><span style="color: hsl(0, 100%, 40%);">-       dump_floats(x-30,2*x_len+30,"x");</span><br><span style="color: hsl(0, 100%, 40%);">-     printf("\n");</span><br><span style="color: hsl(0, 100%, 40%);">- dump_floats(h,2*h_len,"h");</span><br><span style="color: hsl(0, 100%, 40%);">-   printf("\n");</span><br><span style="color: hsl(0, 100%, 40%);">- convolve_real(x, x_len, h, h_len, y, y_len, start, len);</span><br><span style="color: hsl(0, 100%, 40%);">-        dump_floats(y,y_len,"y");</span><br><span style="color: hsl(0, 100%, 40%);">-     printf("\n");</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-int main(void)</span><br><span style="color: hsl(120, 100%, 40%);">+int main(int argc, char *argv[])</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-#if DO_INIT == 1</span><br><span style="color: hsl(120, 100%, 40%);">+ struct test_vec *tv;</span><br><span style="color: hsl(120, 100%, 40%);">+  int gen_ref_mode = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+ char name[80];</span><br><span style="color: hsl(120, 100%, 40%);">+        int i, j, len;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>     convolve_init();</span><br><span style="color: hsl(0, 100%, 40%);">-#endif</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      printf("==== TEST COMPLEX BASE IMPLEMENTATION ====\n");</span><br><span style="color: hsl(0, 100%, 40%);">-       test_convolve_complex(17);</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Mode */</span><br><span style="color: hsl(120, 100%, 40%);">+    gen_ref_mode = (argc == 2) && !strcmp("genref", argv[1]);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- printf("==== TEST COMPLEX SSE3 IMPLEMENTATION: (h_len%%4=0) ====\n");</span><br><span style="color: hsl(0, 100%, 40%);">- test_convolve_complex(20);</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Alloc test vectors */</span><br><span style="color: hsl(120, 100%, 40%);">+              /* All *2 is to account for the facts all vectors are actually</span><br><span style="color: hsl(120, 100%, 40%);">+                 * complex and need two floats */</span><br><span style="color: hsl(120, 100%, 40%);">+     tv = test_vec_alloc(100*2, 25*2);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   printf("==== TEST COMPLEX SSE3 IMPLEMENTATION: (h_len%%8=0) ====\n");</span><br><span style="color: hsl(0, 100%, 40%);">- test_convolve_complex(16);</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Dump all input data to make sure we work off the same input data */</span><br><span style="color: hsl(120, 100%, 40%);">+        if (!gen_ref_mode) {</span><br><span style="color: hsl(120, 100%, 40%);">+          printf("==== TEST INPUT DATA ====\n");</span><br><span style="color: hsl(120, 100%, 40%);">+              dump_floats(tv->x, tv->x_len, "x");</span><br><span style="color: hsl(120, 100%, 40%);">+           dump_floats(tv->h, tv->h_len, "h");</span><br><span style="color: hsl(120, 100%, 40%);">+           printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+               printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   printf("\n");</span><br><span style="color: hsl(0, 100%, 40%);">- printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Run through all the tests */</span><br><span style="color: hsl(120, 100%, 40%);">+       if (!gen_ref_mode)</span><br><span style="color: hsl(120, 100%, 40%);">+            printf("==== TEST  ====\n");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      printf("==== TEST REAL BASE IMPLEMENTATION ====\n");</span><br><span style="color: hsl(0, 100%, 40%);">-  test_convolve_real(17);</span><br><span style="color: hsl(120, 100%, 40%);">+       for (i=0; tests[i].h_len; i++)</span><br><span style="color: hsl(120, 100%, 40%);">+        {</span><br><span style="color: hsl(120, 100%, 40%);">+             for (j=0; j<(gen_ref_mode ? 1 : 2); j++)</span><br><span style="color: hsl(120, 100%, 40%);">+           {</span><br><span style="color: hsl(120, 100%, 40%);">+                     len = run_convolve(tv, tests[i].h_len, tests[i].type + j);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  printf("==== TEST REAL SSE3 IMPLEMENTATION (hlen=4) ====\n");</span><br><span style="color: hsl(0, 100%, 40%);">- test_convolve_real(4);</span><br><span style="color: hsl(120, 100%, 40%);">+                        snprintf(name, sizeof(name)-1, "y_ref_%s_%d", type_name[tests[i].type + j], tests[i].h_len);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      printf("==== TEST REAL SSE3 IMPLEMENTATION (hlen=8) ====\n");</span><br><span style="color: hsl(0, 100%, 40%);">- test_convolve_real(8);</span><br><span style="color: hsl(120, 100%, 40%);">+                        if (gen_ref_mode)</span><br><span style="color: hsl(120, 100%, 40%);">+                     {</span><br><span style="color: hsl(120, 100%, 40%);">+                             /* If in generate mode, output data */</span><br><span style="color: hsl(120, 100%, 40%);">+                                dump_floats(tv->y, len, name);</span><br><span style="color: hsl(120, 100%, 40%);">+                     } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                              /* If in test mode, compare with data */</span><br><span style="color: hsl(120, 100%, 40%);">+                              printf("%s: %s\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                                  name, </span><br><span style="color: hsl(120, 100%, 40%);">+                                        compare_floats(tests[i].y_ref, tv->y, len, 1e-5f, 1e-5f) ? "FAIL" : "PASS"</span><br><span style="color: hsl(120, 100%, 40%);">+                             );</span><br><span style="color: hsl(120, 100%, 40%);">+                    }</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   printf("==== TEST REAL SSE3 IMPLEMENTATION (hlen=12) ====\n");</span><br><span style="color: hsl(0, 100%, 40%);">-        test_convolve_real(12);</span><br><span style="color: hsl(120, 100%, 40%);">+       if (!gen_ref_mode) {</span><br><span style="color: hsl(120, 100%, 40%);">+          printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+               printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   printf("==== TEST REAL SSE3 IMPLEMENTATION (hlen=16) ====\n");</span><br><span style="color: hsl(0, 100%, 40%);">-        test_convolve_real(16);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- printf("==== TEST REAL SSE3 IMPLEMENTATION (hlen=20) ====\n");</span><br><span style="color: hsl(0, 100%, 40%);">-        test_convolve_real(20);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- printf("==== TEST REAL SSE3 IMPLEMENTATION (h_len%%4=0) ====\n");</span><br><span style="color: hsl(0, 100%, 40%);">-     test_convolve_real(24);</span><br><span style="color: hsl(120, 100%, 40%);">+       /* All done ! */</span><br><span style="color: hsl(120, 100%, 40%);">+      test_vec_release(tv);</span><br><span> </span><br><span>    return 0;</span><br><span> }</span><br><span>diff --git a/tests/Transceiver52M/convolve_test.ok b/tests/Transceiver52M/convolve_test.ok</span><br><span>index 5766252..9bfe4e7 100644</span><br><span>--- a/tests/Transceiver52M/convolve_test.ok</span><br><span>+++ b/tests/Transceiver52M/convolve_test.ok</span><br><span>@@ -1,72 +1,97 @@</span><br><span style="color: hsl(0, 100%, 40%);">-==== TEST COMPLEX BASE IMPLEMENTATION ====</span><br><span style="color: hsl(0, 100%, 40%);">-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}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-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}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-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}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-==== TEST COMPLEX SSE3 IMPLEMENTATION: (h_len%4=0) ====</span><br><span style="color: hsl(0, 100%, 40%);">-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}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-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}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-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}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-==== TEST COMPLEX SSE3 IMPLEMENTATION: (h_len%8=0) ====</span><br><span style="color: hsl(0, 100%, 40%);">-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}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-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}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-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}</span><br><span style="color: hsl(120, 100%, 40%);">+==== TEST INPUT DATA ====</span><br><span style="color: hsl(120, 100%, 40%);">+static const float x[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+         1.5647994e-02f, -1.3433097e-02f,  8.0661466e-03f,  5.4624092e-05f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.2537399e-04f,  2.4278485e-03f, -2.1165362e-02f,  4.8159473e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.1355225e-01f, -1.0417278e-04f, -8.7433815e-04f, -4.1191248e-05f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.4847396e-04f,  3.7836733e-05f,  1.7029777e-03f,  1.7994493e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    5.7363566e-05f,  1.9005293e-03f,  2.8903393e-02f, -9.6858083e-04f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.3747586e-04f, -3.9022104e-03f,  7.4708782e-02f, -2.6730467e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.7153287e-03f,  6.0036813e-04f,  4.0513012e-03f, -1.6489235e-04f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.4497763e-04f,  3.8475581e-02f,  6.2291299e-05f,  6.6989708e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.0250011e-03f,  1.8972119e-03f,  9.4924539e-01f,  1.8176478e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.7033458e-03f, -4.3682796e-01f,  1.0680194e-04f, -8.3315128e-05f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.2426756e-02f,  5.3260362e-01f,  8.4926933e-01f, -1.0011558e-04f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.8198654e-03f,  1.1309208e-02f,  1.7689859e-02f, -1.5878773e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.4429576e-02f, -2.2855136e-03f, -5.5495123e-03f, -1.2498077e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.6752372e-02f,  1.2960315e-03f,  7.0954882e-02f, -1.5590824e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.0499083e-03f, -3.5616606e-01f,  2.7610136e-02f,  8.5417420e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -4.2664251e-04f,  1.4402850e-03f, -4.8643693e-01f,  1.7741680e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -9.6604187e-04f,  1.5893934e+00f, -5.6570204e-04f,  1.0304671e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.5468808e-03f,  1.6770978e-02f,  3.0763021e-02f,  9.5863044e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.7137524e-04f,  1.2735781e-01f,  1.3553522e-02f, -7.1923278e-05f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.1808405e-01f, -3.4154678e-04f, -4.5713958e-01f,  1.8140655e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -6.7418534e-01f, -1.0383211e-01f,  1.3225841e-03f, -2.5257194e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    9.0886868e-04f,  1.4233345e-02f, -8.5481010e-02f, -1.0956389e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.1269117e-01f, -1.2924065e-04f,  9.9633269e-02f, -2.9879587e-04f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.2630173e-04f, -1.7635620e-03f, -2.5746411e-02f,  8.9132547e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.6874328e-03f,  1.0522513e-02f,  5.4692741e-02f, -1.5352159e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.4327426e-02f, -9.3195832e-04f,  1.1896082e-04f, -3.7630927e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.0516988e+00f, -3.1380814e-01f, -2.2425303e-04f, -7.0284848e-05f,</span><br><span style="color: hsl(120, 100%, 40%);">+    5.0671459e-03f, -1.1134531e-01f,  1.0806708e-04f,  1.4354062e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -6.5305573e-03f,  2.7675861e-01f, -3.8776125e-04f, -8.5617387e-05f,</span><br><span style="color: hsl(120, 100%, 40%);">+    4.7151759e-04f,  1.4620343e-01f,  1.1438092e-01f,  4.5707250e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.8181421e-01f,  1.4213121e-02f, -3.6397097e-01f, -5.4192659e-04f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -4.2798415e-01f,  9.3350851e-04f,  1.0392073e-03f,  2.4182081e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.5072421e-04f, -1.8581150e-03f, -4.9158345e-05f, -8.5498526e-05f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.0833269e+00f, -5.9226564e-05f, -2.5437584e-02f, -5.2832620e-05f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.8377982e-02f, -4.5681797e-02f, -2.4284111e-01f,  2.1328876e-04f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -9.7929651e-01f,  1.5658283e-04f, -3.7025183e-03f, -2.0111608e-04f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.4641861e-01f,  5.9742248e-01f, -6.4697691e-05f, -1.9186097e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.7195708e+00f, -2.5827979e-04f, -9.1248356e-02f, -1.4089289e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    8.7977161e-05f,  8.5069842e-05f, -1.2898034e+00f, -1.5152150e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.5210576e-01f,  7.2273717e-04f,  1.3823020e-04f,  7.7009052e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -4.7274379e-04f,  1.9443777e+00f, -3.2773761e-03f,  9.9636912e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.1603455e-04f,  1.8570988e+00f, -1.1860273e-04f,  3.5464257e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.3853541e-04f,  1.0360291e-02f,  3.8853416e-03f, -1.4075130e-04f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -7.1190392e-05f, -1.5528130e-03f,  3.5669159e-02f, -2.4105579e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.6449700e-03f, -4.9201823e-05f,  1.7070369e+00f, -5.8859095e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.1986475e-02f,  4.5868279e-03f,  7.4677072e-02f, -2.0537584e-04f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.4663955e-04f, -2.8706132e-03f,  6.3073174e-05f,  8.3900732e-04f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.9868923e+00f, -4.6812827e-03f,  8.9498538e-01f, -3.6815554e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.8766742e-05f, -9.0576988e-03f,  2.3615693e-01f, -4.7979757e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    8.1219165e-05f, -4.2038716e-02f,  2.8626552e-02f, -1.2940569e-03f</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+static const float h[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+     1.4452726e+00f, -2.3994248e-02f,  5.8419155e-05f, -3.7997228e-04f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.1219695e-02f,  3.4777170e-01f,  7.2262114e-01f,  1.0214672e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    7.8038998e-02f,  1.0222027e-03f,  3.6671492e-01f,  6.7337966e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -7.3292562e-05f,  3.7689663e-02f, -1.2326082e-01f, -8.9664059e-04f,</span><br><span style="color: hsl(120, 100%, 40%);">+    4.5764600e-03f, -2.1683607e-01f, -3.9652010e-04f,  4.5392764e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -7.2978765e-01f, -3.4258855e-03f,  6.1700474e-02f, -7.2056986e-04f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.0217791e-04f,  1.5078529e-04f, -2.8858331e-04f,  2.3752926e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.8771792e-04f,  2.1340945e-03f, -7.5210082e-05f, -1.4894934e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -9.2567364e-03f,  3.4723855e-03f, -1.0344880e-01f, -2.7948164e-04f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -6.0153940e-05f, -6.7053002e-04f, -2.1297326e-04f, -1.2413803e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.3611232e-05f, -2.3160460e-03f,  1.5962194e-01f,  1.8822768e-04f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.2110565e-01f, -2.8764654e-02f, -1.0809334e-01f,  2.0665471e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.3983012e-02f,  1.8321171e-03f</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span> </span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+==== TEST  ====</span><br><span style="color: hsl(120, 100%, 40%);">+y_ref_real_base_4: PASS</span><br><span style="color: hsl(120, 100%, 40%);">+y_ref_real_opt_4: PASS</span><br><span style="color: hsl(120, 100%, 40%);">+y_ref_real_base_8: PASS</span><br><span style="color: hsl(120, 100%, 40%);">+y_ref_real_opt_8: PASS</span><br><span style="color: hsl(120, 100%, 40%);">+y_ref_real_base_12: PASS</span><br><span style="color: hsl(120, 100%, 40%);">+y_ref_real_opt_12: PASS</span><br><span style="color: hsl(120, 100%, 40%);">+y_ref_real_base_16: PASS</span><br><span style="color: hsl(120, 100%, 40%);">+y_ref_real_opt_16: PASS</span><br><span style="color: hsl(120, 100%, 40%);">+y_ref_real_base_20: PASS</span><br><span style="color: hsl(120, 100%, 40%);">+y_ref_real_opt_20: PASS</span><br><span style="color: hsl(120, 100%, 40%);">+y_ref_real_base_24: PASS</span><br><span style="color: hsl(120, 100%, 40%);">+y_ref_real_opt_24: PASS</span><br><span style="color: hsl(120, 100%, 40%);">+y_ref_complex_base_4: PASS</span><br><span style="color: hsl(120, 100%, 40%);">+y_ref_complex_opt_4: PASS</span><br><span style="color: hsl(120, 100%, 40%);">+y_ref_complex_base_8: PASS</span><br><span style="color: hsl(120, 100%, 40%);">+y_ref_complex_opt_8: PASS</span><br><span style="color: hsl(120, 100%, 40%);">+y_ref_complex_base_12: PASS</span><br><span style="color: hsl(120, 100%, 40%);">+y_ref_complex_opt_12: PASS</span><br><span style="color: hsl(120, 100%, 40%);">+y_ref_complex_base_16: PASS</span><br><span style="color: hsl(120, 100%, 40%);">+y_ref_complex_opt_16: PASS</span><br><span style="color: hsl(120, 100%, 40%);">+y_ref_complex_base_20: PASS</span><br><span style="color: hsl(120, 100%, 40%);">+y_ref_complex_opt_20: PASS</span><br><span style="color: hsl(120, 100%, 40%);">+y_ref_complex_base_24: PASS</span><br><span style="color: hsl(120, 100%, 40%);">+y_ref_complex_opt_24: PASS</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-==== TEST REAL BASE IMPLEMENTATION ====</span><br><span style="color: hsl(0, 100%, 40%);">-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}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-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}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-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}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-==== TEST REAL SSE3 IMPLEMENTATION (hlen=4) ====</span><br><span style="color: hsl(0, 100%, 40%);">-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}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-float h[] = {0.726144,0.746635,0.470674,0.211604}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-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}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-==== TEST REAL SSE3 IMPLEMENTATION (hlen=8) ====</span><br><span style="color: hsl(0, 100%, 40%);">-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}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-float h[] = {0.726144,0.746635,0.470674,0.211604,0.963092,0.264553,0.265818,0.725771}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-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}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-==== TEST REAL SSE3 IMPLEMENTATION (hlen=12) ====</span><br><span style="color: hsl(0, 100%, 40%);">-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}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-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}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-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}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-==== TEST REAL SSE3 IMPLEMENTATION (hlen=16) ====</span><br><span style="color: hsl(0, 100%, 40%);">-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}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-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}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-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}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-==== TEST REAL SSE3 IMPLEMENTATION (hlen=20) ====</span><br><span style="color: hsl(0, 100%, 40%);">-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}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-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}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-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}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-==== TEST REAL SSE3 IMPLEMENTATION (h_len%4=0) ====</span><br><span style="color: hsl(0, 100%, 40%);">-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}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-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}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-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}</span><br><span> </span><br><span>diff --git a/tests/Transceiver52M/convolve_test_golden.h b/tests/Transceiver52M/convolve_test_golden.h</span><br><span>new file mode 100644</span><br><span>index 0000000..32ceb9d</span><br><span>--- /dev/null</span><br><span>+++ b/tests/Transceiver52M/convolve_test_golden.h</span><br><span>@@ -0,0 +1,552 @@</span><br><span style="color: hsl(120, 100%, 40%);">+static const float y_ref_real_base_4[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+      7.3284553e-03f, -1.5985897e-02f,  1.6642426e-01f, -9.8381861e-05f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.6348192e-03f,  3.4816288e-03f, -3.0451396e-02f,  6.9885664e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.0986860e-01f,  1.2851838e-02f, -1.2583327e-03f,  9.3199458e-04f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.1099672e-02f, -6.8450999e-04f,  1.9472920e-03f,  2.3207793e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    5.4067824e-02f,  8.9792977e-04f,  4.1427527e-02f, -9.0953126e-04f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.0942117e-03f, -5.7718079e-03f,  1.0763939e-01f,  2.3943521e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.5316875e-03f,  4.8413306e-01f,  8.0398219e-03f, -1.3080114e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    6.8538201e-01f,  1.8695365e-01f, -2.2728609e-02f,  6.4866585e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    4.5831669e-03f,  1.1961757e-02f,  1.3557098e+00f,  6.4754653e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    6.0882354e-01f, -6.4270949e-01f, -1.9183261e-02f,  8.0850981e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.9541480e-02f, -3.7791622e-01f,  1.2447035e+00f,  3.1898677e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -7.1577514e-03f,  7.2692493e-03f,  1.3580237e-02f, -2.2937140e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    8.6936049e-02f, -1.4597681e-02f, -8.0458717e-03f, -2.7510536e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -4.2994302e-03f,  7.1154371e-02f,  1.0165509e-01f, -2.3325549e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.4853625e-01f, -3.8657749e-01f,  4.9528107e-02f,  1.2682161e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.0333210e-03f, -2.4188099e-02f, -7.0413989e-01f,  2.6840889e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.0866606e-02f,  2.3660243e+00f, -1.5943053e-03f,  1.0489130e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    7.5638304e-03f,  2.1489767e-02f,  2.0176548e-01f,  1.3831037e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.3521327e-01f,  1.8538487e-01f, -4.5787895e-01f, -7.5173743e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.3042595e-01f, -1.8080406e-01f, -6.6010201e-01f,  1.8260568e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.0361712e+00f, -2.2955567e-01f, -7.7707589e-02f, -3.6280295e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    7.5696945e-02f,  2.0351490e-02f, -1.2557286e-01f, -1.5961775e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.8147121e-01f,  6.4259678e-02f,  1.4576295e-01f,  5.2804803e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.9667360e-02f, -3.8762847e-03f, -4.8724346e-02f,  1.2818055e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.8319827e-03f,  1.2508295e-02f, -6.8093723e-01f, -2.2890340e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.4476498e-03f,  5.2609704e-03f,  3.7768767e-03f, -8.5916013e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.5200208e+00f, -3.4745008e-01f, -5.0452226e-03f,  1.9683765e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    7.1817860e-03f, -1.6685052e-01f,  5.0476164e-04f,  3.1312299e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    7.3205605e-02f,  7.2717953e-01f,  1.2839527e-01f,  4.5656413e-04f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.6618302e-01f,  2.1063730e-01f, -1.3622481e-01f,  6.6128123e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.7258250e-01f,  3.7996478e-02f, -5.2619320e-01f, -2.6390266e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -6.1858600e-01f,  1.3282325e-03f,  7.8433794e-01f,  3.4908604e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -4.1587442e-02f, -2.7224086e-03f,  2.1038547e-02f, -3.3133082e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.3896170e+00f,  1.0378791e-03f, -7.3926997e-01f,  2.9597912e-05f,</span><br><span style="color: hsl(120, 100%, 40%);">+    5.9104588e-02f, -6.6171288e-02f, -5.2901757e-01f,  4.3202266e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.4101684e+00f, -1.3837258e-02f,  1.2372340e+00f, -4.0169276e-04f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -4.5856881e-01f, -1.5467817e-01f,  2.0067864e-03f,  2.7185585e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.5532019e+00f, -1.0995004e-01f,  5.4053217e-03f, -2.0325487e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.0759480e-03f,  5.6635980e-03f, -1.8644532e+00f,  1.1858951e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.1747603e-01f,  6.7978328e-01f,  1.1318650e-04f,  1.3320798e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -7.6455571e-04f,  2.7964339e+00f, -4.8343060e-03f,  1.4468675e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.4983340e-03f,  2.6836946e+00f, -3.0531082e-04f,  5.0137013e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.5576806e-02f, -2.4128137e-03f,  6.0471753e-03f,  2.7244404e-04f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.2334052e+00f, -4.4777431e-02f, -2.2237569e-02f, -3.0275624e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    5.7543524e-02f, -3.2028853e-04f,  2.4656518e+00f, -8.7137178e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -7.5087801e-02f,  7.2964025e-03f,  1.5436978e+00f, -3.6975890e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+    6.0478604e-01f, -6.7098038e-03f, -1.8812101e-02f, -5.2548423e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.0423059e+00f, -4.1244932e-02f,  1.2885453e+00f, -3.4681331e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.0642195e-02f, -1.3136711e-02f</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+static const float y_ref_real_base_8[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+       2.3463303e-02f, -1.8227151e-02f,  1.6640328e-01f, -3.2330074e-04f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -8.5613858e-03f,  1.0202680e-02f, -3.0316524e-02f,  9.5708519e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.1126371e-01f,  1.2974728e-02f,  8.3076512e-04f, -6.4839720e-04f,</span><br><span style="color: hsl(120, 100%, 40%);">+    4.8007734e-02f, -1.9489999e-03f,  8.4487526e-03f,  1.8476836e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    5.5679705e-02f, -8.1690572e-02f,  4.1244309e-02f,  1.2904219e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.1391485e-01f,  2.2048743e-01f,  1.0914046e-01f,  1.3074780e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.5085729e-01f,  5.5097926e-01f,  8.3524242e-02f, -2.2473586e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    5.8045220e-01f,  1.5280679e-01f, -3.0782428e-02f,  8.4257907e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.1209242e-01f,  2.4921113e-01f,  1.4183060e+00f,  6.5208405e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    6.1585087e-01f, -1.2225845e+00f, -6.7787543e-03f, -1.1682822e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.8414838e-02f, -3.8075617e-01f,  1.2378691e+00f,  7.5301081e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.4151726e-02f, -8.8495146e-03f,  1.9919781e-02f, -2.4257259e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.5717971e-01f, -3.2937329e-02f, -5.8929329e-03f, -4.6383423e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.8264660e-01f,  1.3494150e-01f,  6.3530490e-02f,  5.7130617e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.5261086e-01f, -2.7058131e-01f,  4.8935562e-02f,  1.2594652e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    8.4566139e-03f,  1.2274630e-02f, -7.2868425e-01f,  3.2263610e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    8.2154930e-02f,  2.3757131e+00f,  1.6257222e-01f,  1.1755873e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.4317062e-01f,  5.3268194e-02f, -8.1255190e-02f,  9.8639250e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.7680462e-01f,  9.8163910e-02f, -4.4354576e-01f, -8.9640662e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.8687710e-01f, -2.1983516e-01f, -7.0812124e-01f,  9.8803192e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.0052550e+00f, -2.4066174e-01f, -7.0092104e-02f, -3.6477652e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    5.9523612e-02f,  5.3088561e-02f, -1.2520128e-01f, -1.4868818e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.6129650e-01f,  6.4981766e-02f,  2.7441028e-01f,  4.3499433e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.8697608e-02f, -5.2973330e-03f, -4.3501323e-01f,  2.6533267e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -7.9337470e-02f, -2.9691525e-02f, -6.7829162e-01f, -3.0386490e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.9309891e-03f,  4.9200453e-02f,  1.3323659e-03f,  8.7561179e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.5347713e+00f, -3.8223338e-01f, -2.7321521e-02f,  2.4866055e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    9.4013810e-02f,  1.2240109e-02f,  1.2888527e-01f,  3.5388958e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -4.6176109e-02f,  7.2510922e-01f, -5.6938332e-02f,  9.8386465e-04f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.9919535e-01f,  2.1958876e-01f, -2.6973075e-01f,  6.6249424e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.7560875e-01f,  3.7826635e-02f, -1.3242088e-01f,  2.9633616e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.1344192e-01f,  1.2812938e-03f,  9.1348612e-01f,  1.8132968e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.2789816e-01f, -6.1843758e-03f, -3.2666114e-01f, -1.0669778e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.3118620e+00f,  1.1690492e-03f, -1.0418800e+00f,  2.1912961e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    5.0971918e-02f,  1.5341313e-01f,  1.0156550e-01f,  4.3187100e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.1504548e+00f, -5.1185602e-01f,  1.2114912e+00f, -1.1039987e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -9.3158031e-01f, -2.1118599e-01f, -4.2810470e-02f, -2.2404011e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.5655267e+00f, -2.3002538e-01f,  5.2696159e-03f, -1.5478959e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -4.3000681e-03f,  5.1827681e-01f, -1.8647711e+00f,  1.9433970e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.1693678e-01f,  8.3773124e-01f,  6.1618077e-05f,  1.3388381e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.7471589e-03f,  2.8001621e+00f, -4.7625788e-03f,  1.4462949e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.9483769e-01f,  2.6819887e+00f,  9.3642920e-03f,  4.7676735e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    6.4250010e-01f, -2.3976183e-02f,  1.2017485e-01f, -2.2849534e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.2567258e+00f, -4.4598002e-02f, -2.6126206e-01f, -3.0767394e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.2884154e-02f,  2.1750279e-04f,  3.1942191e+00f, -8.7671667e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.7906289e-01f,  1.1495687e-02f,  1.6135001e+00f, -2.1212441e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+    6.8785673e-01f, -2.4848964e-02f</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+static const float y_ref_real_base_12[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+      2.7961344e-02f, -1.5535211e-02f,  1.1211979e-01f,  1.6616134e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -9.5922388e-03f,  9.7375661e-03f, -3.2953177e-02f,  1.2052679e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.1152555e-01f,  2.6231505e-02f,  9.9062710e-04f, -4.8942995e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.0436741e-01f,  7.7918661e-03f, -6.8452823e-01f, -1.3806035e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    5.8026399e-02f,  2.3703255e-01f,  4.4128276e-02f,  4.6831969e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -4.5164756e-02f, -1.7020540e-01f, -5.1074868e-01f,  1.3130705e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.5283747e-01f,  4.4719061e-01f,  7.6009087e-02f,  9.3393141e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    5.6226599e-01f,  1.5438497e-01f, -2.7694821e-02f,  8.4451401e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.2881007e-01f,  2.4729785e-01f,  1.3666317e+00f,  6.4142865e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    6.1595362e-01f, -9.5737642e-01f, -2.6630705e-02f, -1.7900605e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.8118436e-02f, -3.7252441e-01f,  1.5929317e+00f,  4.4281147e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.5012758e-02f, -1.1681970e+00f,  1.8011404e-02f, -2.4320295e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.6020250e-01f, -3.1992078e-02f, -2.8355956e-02f, -5.2589536e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.8170457e-01f,  4.2031650e-02f,  6.7236036e-02f,  5.7172579e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.3997779e-01f, -2.6963723e-01f,  3.4092841e-01f,  1.2517345e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    5.0172967e-01f,  7.2463937e-02f, -7.3141807e-01f,  5.0788766e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    7.3131524e-02f,  2.3581905e+00f,  2.1800779e-01f,  1.9634761e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.4744519e-02f,  5.3452656e-02f, -1.5430506e-01f,  9.8247126e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.7904060e-01f,  1.0494999e-01f, -4.2419630e-01f, -1.5403992e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.8903100e-01f, -2.2765251e-01f, -7.4903780e-01f,  1.1346938e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -9.9480563e-01f, -2.4016502e-01f, -1.3481325e-01f, -3.8139907e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    8.2696098e-01f,  2.8209475e-01f, -1.2430741e-01f, -1.5539975e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.6980076e-01f,  1.5366061e-01f,  2.7392548e-01f, -4.4134770e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    4.3462750e-02f, -2.0784412e-01f, -4.3469808e-01f,  3.6163740e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -7.2653949e-02f, -1.0692079e-01f, -7.5054938e-01f, -6.3661212e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.5325515e-01f,  3.9282311e-02f,  2.4099842e-01f,  1.1295346e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.2213932e+00f, -3.8135731e-01f, -2.9585216e-02f,  2.3089527e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    9.2161715e-02f,  1.3585546e-02f,  1.9576776e-01f,  3.5405973e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -8.3834493e-01f,  7.2514069e-01f, -3.7053145e-02f, -1.7965351e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.2992080e-01f,  2.5293970e-01f, -1.5305904e-01f,  6.6236615e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    9.9028492e-01f,  3.7490807e-02f, -1.4564602e-01f,  3.9972298e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.3809289e-01f, -4.3482783e-01f,  1.0197124e+00f,  1.9279400e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.3895774e+00f, -9.0192623e-02f, -2.6074594e-01f,  9.2151767e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.2401221e+00f, -7.6844953e-03f, -9.1630034e-02f,  3.2330477e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.9512623e-02f,  1.5342131e-01f,  9.5472410e-02f,  5.4552627e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.1496159e+00f, -1.8693621e+00f,  1.2138705e+00f, -7.2368956e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -9.3143082e-01f, -1.5557823e+00f, -4.2747378e-02f, -2.4545878e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.5658666e+00f, -2.2911002e-01f,  2.4292611e-03f, -1.5477308e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.0494850e-03f,  5.1797014e-01f, -1.8906828e+00f,  1.9609860e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.2104683e-01f,  8.3413792e-01f, -1.2487577e+00f,  1.3819655e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.8130190e-02f,  2.7968252e+00f, -5.1419135e-02f,  1.4459964e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.9520834e-01f,  2.6841564e+00f,  1.3225216e-01f,  4.6775803e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -7.5228769e-01f, -2.0800464e-02f, -5.3376436e-01f, -1.5136832e-04f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.2800630e+00f, -4.0968142e-02f, -4.2950559e-01f,  1.6405759e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.1270977e-02f,  3.0794566e-02f</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+static const float y_ref_real_base_16[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+      2.7960196e-02f, -1.5608220e-02f,  1.1211920e-01f,  1.2566736e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -9.6653914e-03f,  9.5255282e-03f, -3.3511665e-02f,  1.1909710e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.1125349e-01f,  2.6435595e-02f,  8.9632795e-04f, -4.8936245e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.0431707e-01f,  7.5235111e-03f, -6.8502074e-01f, -1.3821483e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    5.7783347e-02f,  2.3709093e-01f,  4.4029791e-02f,  4.7762111e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -4.5183614e-02f, -1.6974604e-01f, -5.1075298e-01f,  1.3147719e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.5284108e-01f,  4.4719484e-01f,  7.5972632e-02f,  9.3396825e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    5.6224394e-01f,  1.5459225e-01f, -2.7718859e-02f,  8.4456807e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.2883874e-01f,  2.4729541e-01f,  1.3669150e+00f,  6.4119571e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    6.1609471e-01f, -9.5836264e-01f, -2.6580276e-02f, -1.7949018e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.8119580e-02f, -3.7270686e-01f,  1.5929141e+00f,  4.4209335e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.5003120e-02f, -1.1683012e+00f,  1.7983941e-02f, -2.4320760e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.6010483e-01f, -3.2005005e-02f, -2.8100900e-02f, -5.2588850e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.8119879e-01f,  4.2111177e-02f,  6.7476459e-02f,  5.7190293e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.3990334e-01f, -2.6955387e-01f,  3.4098670e-01f,  1.2518206e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    5.0181293e-01f,  7.2494201e-02f, -7.3143530e-01f,  5.0789922e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    7.3116146e-02f,  2.3581848e+00f,  2.1801257e-01f,  1.9629498e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.4742206e-02f,  5.3421043e-02f, -1.5433398e-01f,  9.8235950e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.7904814e-01f,  1.0495019e-01f, -4.2411873e-01f, -1.5401368e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.8965056e-01f, -2.2746690e-01f, -7.4873453e-01f,  1.1446298e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -9.9470109e-01f, -2.4007829e-01f, -1.3481425e-01f, -3.8147211e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    8.2696420e-01f,  2.8190205e-01f, -1.2430534e-01f, -1.5550524e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.6980885e-01f,  1.5351206e-01f,  2.7384445e-01f, -4.4446655e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    4.3350209e-02f, -2.0799929e-01f, -4.3451613e-01f,  3.6113180e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -7.2316028e-02f, -1.0692445e-01f, -7.5038928e-01f, -6.3662642e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.5321162e-01f,  3.9276335e-02f,  2.4091691e-01f,  1.1293466e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.2220280e+00f, -3.8135707e-01f, -2.9885026e-02f,  2.3089877e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    9.2059940e-02f,  1.3612399e-02f,  1.9597854e-01f,  3.5407278e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -8.3770192e-01f,  7.2514516e-01f, -3.6725014e-02f, -1.8414161e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.2967481e-01f,  2.5258878e-01f, -1.5311684e-01f,  6.6219491e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    9.8930633e-01f,  3.7536439e-02f, -1.4608863e-01f,  4.0800616e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.3814532e-01f, -4.3440989e-01f,  1.0204684e+00f,  1.9512335e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.3892946e+00f, -9.0149909e-02f, -2.6065812e-01f,  9.2138225e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.2401071e+00f, -8.9044739e-03f, -9.1627970e-02f,  3.2201761e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.9511494e-02f,  1.5184098e-01f,  9.5472880e-02f,  5.4486692e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.1496160e+00f, -1.8695682e+00f,  1.2138683e+00f, -7.2369599e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -9.3143457e-01f, -1.5557806e+00f, -4.2768840e-02f, -2.4544415e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.5657270e+00f, -2.2909844e-01f,  1.4257956e-03f, -1.5476941e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.5173386e-03f,  5.1798445e-01f, -1.8908861e+00f,  1.9609910e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.2103050e-01f,  8.3413911e-01f, -1.2489148e+00f,  1.3819662e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.6895111e-02f,  2.7968283e+00f, -5.2518524e-02f,  1.4460005e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.9568737e-01f,  2.6841667e+00f,  1.3202193e-01f,  4.6810154e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -7.5235802e-01f, -2.0760888e-02f</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+static const float y_ref_real_base_20[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+     -7.0265897e-02f, -3.4402836e-02f,  1.0372016e-01f,  4.4650026e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -9.8216804e-03f,  1.3545731e-02f, -3.1243330e-02f, -4.3189127e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.2360153e-01f,  2.1853276e-02f, -6.7831380e-03f, -4.9043545e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.0250363e-01f,  1.7168562e-01f, -6.8770778e-01f, -1.2327935e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    5.8117200e-02f,  2.3840825e-01f,  4.5809470e-02f,  4.7820523e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.2374739e-02f, -1.6814195e-01f, -5.1162338e-01f,  1.6846101e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.5006949e-01f,  4.4161758e-01f,  7.5790659e-02f,  9.3267936e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    6.1256939e-01f,  1.3612756e-01f, -2.3115741e-02f,  6.7850077e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.2889974e-01f,  2.3149538e-01f,  1.3670783e+00f,  6.3933253e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    6.1292374e-01f, -9.6844250e-01f, -2.6894575e-02f, -1.9355249e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.9435852e-02f, -3.7387869e-01f,  1.5703993e+00f,  4.4267341e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    6.0315184e-02f, -1.1684257e+00f,  9.1958947e-02f, -2.4213393e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.6622691e-01f, -4.8931153e-03f, -2.8178021e-02f, -5.2501631e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.7237873e-01f,  5.3313743e-02f,  7.9919480e-02f,  5.7293087e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.4916167e-01f, -2.6954064e-01f,  3.4005255e-01f,  1.2519981e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    5.0446343e-01f,  6.3289568e-02f, -7.3137182e-01f,  5.0598592e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    6.7443475e-02f,  2.3582468e+00f,  2.1921243e-01f,  1.9647266e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.4558575e-02f,  5.3837851e-02f, -4.5539171e-02f,  1.3075757e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.6928999e-01f,  1.0783843e-01f, -4.2463943e-01f, -1.4256206e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.8959295e-01f, -2.4130194e-01f, -7.4806011e-01f, -1.8543899e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -9.9462491e-01f, -2.4273746e-01f, -1.3490504e-01f, -3.9662641e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    8.1519389e-01f,  2.3326436e-01f, -1.4405954e-01f, -1.6120674e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.3381398e-01f,  1.5343134e-01f,  3.2148805e-01f, -4.4539265e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    4.7204461e-02f, -2.1050940e-01f, -4.3474090e-01f,  3.6081567e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -7.2369292e-02f, -1.0689839e-01f, -8.6246216e-01f, -6.3660979e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.6055819e-01f,  3.9285053e-02f,  2.3843987e-01f,  1.6019637e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.1971095e+00f, -3.8095623e-01f,  7.3722646e-02f,  2.3075338e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.0152289e-01f,  1.3596226e-02f,  2.2113830e-01f,  2.9227215e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -8.3549821e-01f,  7.2011352e-01f, -2.1460648e-01f, -1.7122028e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.3587819e-01f,  3.9837542e-01f, -1.5223609e-01f,  6.7523712e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.1227249e+00f,  5.3208686e-02f, -1.4988433e-01f,  4.1713882e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.3956692e-01f, -4.3554237e-01f,  1.0205162e+00f, -1.8215792e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.3889512e+00f, -2.1134096e-01f, -2.6060539e-01f,  7.2004014e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.2401205e+00f, -2.9764477e-02f, -9.1612756e-02f,  3.2061791e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.9919737e-02f,  1.5176487e-01f,  9.5441781e-02f,  5.4503030e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.1536689e+00f, -1.8670475e+00f,  1.2132764e+00f, -7.2346520e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.1080534e+00f, -1.5496916e+00f, -5.3197015e-02f, -2.4537317e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.5584830e+00f, -2.2911964e-01f,  2.9620124e-04f, -1.5473943e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.8353482e-03f,  5.1792532e-01f, -2.0964823e+00f,  1.9614697e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.1000290e-01f,  8.3457404e-01f, -1.2572097e+00f,  1.3829491e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.2459218e-02f,  2.8018785e+00f</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+static const float y_ref_real_base_24[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+      6.2982336e-02f,  1.3970278e-01f,  1.0467178e-01f, -3.0438635e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -9.9654635e-04f, -2.3906909e-01f, -2.6760638e-02f, -4.6404060e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.1134110e-01f,  2.1830209e-02f,  6.0099461e-03f, -4.5517617e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.1129893e-01f,  8.1213549e-02f, -6.8123204e-01f, -1.6140017e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.1501058e-01f,  2.3319562e-01f, -6.1709087e-02f, -8.4527433e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.3017318e-01f,  2.1048762e-01f, -5.1171911e-01f,  4.2262268e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.4631193e-01f,  4.3655500e-01f,  8.2364164e-02f,  9.4278538e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    6.1597699e-01f,  1.7959614e-01f, -4.3720804e-02f,  6.9884765e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    4.2869654e-01f,  2.3120803e-01f,  1.3736876e+00f,  6.5090263e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.9073777e-01f, -9.6380943e-01f, -1.3429978e-01f, -2.6751003e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -4.9761195e-02f, -3.9920104e-01f,  1.5638252e+00f,  2.2336561e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.0984164e-02f, -1.1859113e+00f,  9.5989674e-02f, -2.4212317e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.8494529e-01f, -1.4965374e-02f, -3.4036286e-02f, -5.0672752e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.8202725e-01f,  7.0033848e-02f,  9.3831271e-02f,  5.7436877e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.4361230e-01f, -2.6958534e-01f,  4.5147169e-01f,  1.2849377e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.7197060e-01f, -6.6882321e-03f, -8.9984334e-01f,  4.6791553e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    6.8551719e-02f,  2.3181112e+00f,  2.2075109e-01f,  1.8052138e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.5943530e-02f,  1.3795598e-01f, -4.6718303e-02f,  1.5910694e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.8161126e-01f,  9.0735361e-02f, -4.1892681e-01f, -1.9699816e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.8739362e-01f, -1.6514689e-01f, -7.5325614e-01f, -1.6511265e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.1474708e+00f, -2.4523194e-01f, -2.0296241e-01f, -3.9092973e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    8.1534612e-01f,  2.3672272e-01f, -2.6119494e-01f, -1.6151665e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.0845751e-01f,  1.5341036e-01f,  4.8571897e-01f, -3.9622501e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    7.5631693e-02f, -2.2064139e-01f, -3.7804839e-01f,  2.8819984e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.2726079e-01f, -1.0680644e-01f, -9.9295360e-01f, -7.0120668e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.1559384e-01f,  1.7155384e-01f,  1.3217717e-02f,  1.1098508e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -8.0704147e-01f, -2.2904384e-01f,  3.2801881e-01f, -8.0819115e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.2633848e-01f, -1.9490245e-01f, -8.0469020e-02f,  2.5875273e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.0077626e+00f,  6.9525474e-01f, -1.9020206e-01f, -2.1006331e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.3561152e-01f,  7.2181660e-01f, -1.5301284e-01f,  1.0051651e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.1221669e+00f,  6.1896724e-01f, -1.4992996e-01f,  3.4483558e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.4003645e-01f, -4.2763796e-01f,  1.0213609e+00f, -1.8036865e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.3922024e+00f, -2.0910147e-01f, -2.5290802e-01f,  7.1446770e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.0616585e+00f, -2.7260805e-02f,  2.9170352e-01f,  3.0710098e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.9299413e-01f,  1.4340605e-01f,  1.0358190e-01f,  5.4602933e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.1417214e+00f, -1.8678058e+00f,  9.9854136e-01f, -7.2323191e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -7.6547229e-01f, -1.5501947e+00f,  4.6184510e-01f, -2.4595536e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.6757400e+00f, -2.2652355e-01f,  5.2466784e-02f, -1.5549043e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.1784095e-02f,  5.0111192e-01f</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+static const float y_ref_complex_base_4[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+    1.2424886e-03f, -3.8097303e-02f,  1.6485806e-01f,  2.1048410e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.4964307e-03f,  7.6871805e-02f, -3.0360205e-02f,  7.2628609e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.9147220e-01f,  9.5193144e-03f, -9.4586108e-03f,  1.6037597e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.1435840e-02f,  2.8855098e-02f,  6.7026038e-03f,  3.3359118e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    5.8200564e-02f,  7.7245951e-02f,  4.1719154e-02f,  2.6130656e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.9592067e-03f, -1.0686801e-03f,  6.8331286e-02f,  2.3206834e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -6.9511259e-01f,  4.8403400e-01f, -2.2685872e-01f, -1.0065587e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    5.0023317e-01f,  1.1576370e+00f,  3.7633857e-01f,  9.7500110e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.5669926e-01f,  1.0349664e-02f,  8.1589693e-01f,  6.0190046e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    4.1321993e-01f,  2.1708071e-01f, -3.0500054e-02f,  3.0158398e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.6112695e+00f, -3.6026406e-01f,  1.7992588e+00f,  4.2627834e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    6.0714683e-03f,  1.0133464e-02f, -2.1497929e-02f, -2.3131895e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.0235125e-01f,  5.1470339e-02f,  3.6088875e-01f, -2.4819581e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.2339133e-02f,  1.0044512e-01f,  6.9968693e-02f, -1.5862614e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.3877610e-01f, -8.8366485e-01f, -1.6336356e+00f,  1.0973979e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.6420326e-01f, -2.4906840e-02f, -7.1999365e-01f,  2.7830413e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -4.4746608e-02f,  2.3969328e+00f, -1.6477096e-01f,  1.1542892e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.6215313e-02f,  3.5300072e-02f,  2.0448793e-01f,  3.6505157e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.3389169e-01f, -2.0572579e-01f, -3.5245058e-01f, -9.2322028e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    6.2452227e-01f, -4.1897476e-01f, -5.8679944e-01f,  3.0873798e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -9.3179256e-01f, -3.0037957e-01f, -4.5527220e-02f, -5.0767326e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    7.6346993e-02f,  8.2943477e-02f, -1.2629648e-01f, -1.2274522e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.7190709e-01f,  4.0670574e-02f,  1.0400894e-01f, -4.3404093e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.7567653e-02f,  5.2584149e-02f, -4.5095809e-02f,  1.3318327e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    7.2518634e-03f,  7.5858650e-03f, -3.5912099e-01f, -1.3044448e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.1062925e-01f, -3.6037543e-01f,  1.1732737e-01f, -8.0421314e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.6354498e+00f, -3.2034269e-01f, -3.3770841e-01f,  1.9020794e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -9.1596678e-02f, -1.6963938e-01f, -1.4525817e-01f,  3.1346968e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -4.3788379e-01f,  8.4433669e-01f, -4.5026354e-02f,  2.2596139e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.6689067e-01f, -9.7972065e-02f, -1.2601739e-01f,  9.4717085e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.4789748e-01f, -1.1400697e-01f, -5.3271776e-01f,  6.4642527e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -6.1782092e-01f,  1.1494364e-02f,  7.8500766e-01f,  1.1414497e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -4.1557498e-02f,  3.4804803e-01f,  6.7717306e-02f, -1.3402831e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.4052844e+00f, -2.6313126e-01f, -7.3952270e-01f, -1.0841434e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    5.8159553e-02f, -4.1111353e-01f, -1.1391900e+00f,  1.8522538e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.6159713e+00f, -7.6101877e-02f,  1.2383872e+00f,  1.7562433e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    9.9502963e-01f,  3.5604525e-01f,  4.9185932e-01f, -5.1099802e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.7074050e+00f, -1.4686365e+00f,  2.3555815e-02f, -2.3235455e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.1249050e-02f,  5.9190854e-02f, -3.8568850e+00f,  1.2163503e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.4764616e+00f,  6.7262143e-01f, -2.2424378e+00f,  1.3307161e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -6.3580406e-01f,  2.7962503e+00f, -3.1376937e-03f,  1.4467635e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    4.3612257e-02f,  2.6876206e+00f,  2.1846611e-03f,  5.1418409e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    5.0988425e-02f,  3.3999152e-02f,  1.4476703e-02f,  1.4264252e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.2934985e+00f,  1.6994649e+00f, -7.0317499e-03f,  5.0942451e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    5.6134596e-02f,  5.7192378e-02f,  2.4672449e+00f, -1.0195614e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -7.4836522e-02f,  8.6308271e-03f,  1.5481818e+00f,  2.0240779e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    6.1010611e-01f,  1.5984699e+00f, -8.2612643e-03f,  3.0519968e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.0943522e+00f,  1.5195408e-01f,  1.3480808e+00f,  2.6055843e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.6348343e-02f,  1.6043816e-02f</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+static const float y_ref_complex_base_8[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+    1.7419890e-02f, -4.0704954e-02f,  1.6413514e-01f,  2.1042241e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.0612659e-02f,  8.4716007e-02f, -3.1490497e-02f,  1.0974750e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.9366228e-01f,  2.9043412e-02f, -4.6395697e-03f,  2.9596973e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+    5.0125089e-02f,  7.7959135e-02f,  1.2843234e-02f,  3.0012598e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    5.9073396e-02f, -2.6257858e-03f, -9.6190618e-03f,  3.9715882e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.6509280e-01f,  2.2449504e-01f,  6.0627718e-02f,  1.6782820e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -4.5272177e-01f,  1.1899462e+00f,  1.4307167e-01f, -2.2322062e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.7573221e-01f,  1.1219516e+00f,  9.6543171e-03f,  1.1858230e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    4.6188149e-01f,  8.1937236e-01f,  9.3072242e-01f,  6.0672551e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.4895550e+00f, -3.4995845e-01f, -1.4461189e-02f,  1.9294497e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.6107516e+00f, -3.6751097e-01f,  1.7918328e+00f,  7.7416286e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    5.1378537e-02f,  4.1829653e-02f,  2.2147447e-01f, -2.4427075e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.1554543e-01f,  5.2144978e-02f,  3.5672283e-01f, -4.5551652e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.2537282e-01f, -1.6336080e-01f, -1.0389758e+00f,  5.7760143e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.5196047e-01f, -7.6813650e-01f, -1.6490308e+00f,  1.0887643e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -6.2408286e-01f,  3.2250889e-02f, -8.3039373e-01f,  3.3276263e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.6474463e-02f,  2.4243774e+00f, -5.3585321e-04f,  2.5833863e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.8448403e-01f, -2.6593807e-01f,  9.1597089e-04f, -1.2902047e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.0593479e-01f, -2.9263443e-01f, -3.4331435e-01f, -9.4019455e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    6.5474159e-01f, -5.1990277e-01f, -6.3461000e-01f, -4.9722735e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -9.0052861e-01f, -2.4448201e-01f, -4.0073816e-02f, -5.1043189e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.4254480e-04f,  9.8358124e-02f, -1.3304462e-01f, -1.0863149e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.5067759e-01f,  7.7683263e-02f,  2.3314585e-01f,  2.5234135e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    5.0960105e-02f,  1.1590591e-02f, -2.2016604e-01f, -6.7666954e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -7.0224196e-02f, -3.5649132e-02f, -2.8665945e-01f, -1.3759845e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    4.1380534e-03f, -3.1660381e-01f, -7.1493179e-02f,  9.8383427e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.6555260e+00f, -3.5547855e-01f, -4.7564918e-01f,  2.4649589e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.1323361e-01f,  9.3652405e-02f, -2.6894443e-02f,  4.6344903e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.5692858e-01f,  5.8123004e-01f, -2.3190109e-01f, -6.2039871e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.1611770e-01f, -8.8763960e-02f, -2.5829366e-01f,  9.4856501e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.5098538e-01f, -7.3357031e-02f, -1.3894446e-01f,  7.4057275e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.1091927e-01f, -3.2870495e-03f,  9.4490921e-01f,  1.1354827e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.2797122e-01f,  1.4418475e-01f, -2.7954480e-01f, -7.4657279e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.3051461e+00f, -2.7578172e-01f, -1.4443525e+00f, -1.0325247e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    4.9454577e-02f, -1.2693270e-01f, -4.5532885e-01f,  1.3395584e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -4.0765232e-01f, -6.3264781e-01f,  1.2197388e+00f,  1.5974625e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    6.2402928e-01f, -5.6325710e-01f,  4.4816345e-01f, -1.5522356e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.6421539e+00f, -1.5884782e+00f, -1.3217797e+00f, -1.8393344e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -7.5535703e-01f,  5.6958872e-01f, -5.1100817e+00f,  1.9736991e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.5031706e+00f,  8.3048064e-01f, -2.2494981e+00f,  1.3375274e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -6.3866556e-01f,  2.8025601e+00f, -1.1117033e-03f,  1.4474899e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.3754091e-01f,  2.7084646e+00f,  1.4134528e-02f,  1.1448654e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    7.0737326e-01f,  1.1598951e+00f,  1.2558103e-01f, -1.8740421e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.3170614e+00f,  1.7498827e+00f, -2.4415883e-01f,  5.0732869e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.4681979e-02f,  1.3185561e-01f,  3.1990941e+00f,  1.2691741e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.8209638e-01f,  6.1731285e-01f,  1.6258577e+00f,  2.0354435e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    7.2707796e-01f,  1.7393314e+00f</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+static const float y_ref_complex_base_12[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+   2.2754405e-02f, -2.4959709e-02f,  1.1140423e-01f,  2.0594525e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.1274345e-02f,  1.1812467e-01f, -3.4952130e-02f, -1.9779785e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.9474372e-01f,  4.3768380e-02f, -1.9684235e-02f, -4.8685929e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.8911968e-01f,  8.7108716e-02f, -5.3542912e-01f, -1.2841429e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.2173166e-02f,  7.4634272e-01f,  2.3134986e-01f, -1.3385224e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.8920038e-01f, -1.6588140e-01f, -8.0103523e-01f,  1.5527600e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.3631387e-01f,  1.4765208e+00f,  1.2495972e-01f,  7.5039023e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.0807629e+00f,  1.1318747e+00f, -3.3057159e-01f,  1.1950424e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    4.8376998e-01f,  8.0964905e-01f,  8.7543970e-01f,  5.8942461e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.4958572e+00f, -4.8936479e-02f,  1.2427349e-01f,  1.1621778e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.4651778e+00f, -3.4683874e-01f,  2.1665163e+00f,  4.1882977e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.2530014e-02f, -1.3382288e+00f, -4.6338576e-01f, -2.3439698e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    4.5865497e-01f,  5.3026043e-02f,  3.2930160e-01f, -5.1826239e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.6387286e-01f, -2.4198024e-01f, -1.0722954e+00f,  5.7106918e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -7.1167880e-01f, -7.6142073e-01f, -1.3569672e+00f,  1.1791412e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.3224502e-01f, -1.6004786e-01f, -7.8645700e-01f,  3.1110200e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    9.9555716e-02f,  2.5537014e+00f, -6.7033367e-03f,  3.3762732e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -4.3238215e-02f, -3.0443862e-01f, -9.5834918e-02f, -1.6237228e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.0800497e-01f, -2.1616842e-01f, -3.2291621e-01f, -1.0260535e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    6.1608827e-01f, -5.3947967e-01f, -6.6098177e-01f, -4.2084441e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -8.8710660e-01f, -2.1947564e-01f, -1.0494383e-01f, -5.4465991e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    7.6762575e-01f,  3.3412820e-01f,  9.3989922e-03f, -5.9276694e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.2747287e-01f,  3.9428911e-01f,  2.8387964e-01f, -6.0046993e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.2627407e-02f, -1.9198324e-01f, -3.1424943e-01f, -6.7002589e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.6603388e-03f, -1.1172239e-01f, -4.2372537e-01f, -1.7089566e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.2677546e-01f, -2.7506417e-01f,  2.6082978e-01f,  7.1661465e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.3387995e+00f, -5.5777740e-01f, -4.7837263e-01f,  1.1337535e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.2586664e-01f,  1.8827249e-01f,  4.6074696e-02f,  4.6254495e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.3494617e+00f,  5.7757890e-01f, -2.1204066e-01f,  4.2700914e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.4698835e-01f, -3.0178642e-01f, -1.2089632e-01f,  1.1466332e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    9.5565969e-01f, -1.8672089e-01f, -1.5176465e-01f,  3.8589886e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.3339968e-01f, -2.2788580e-01f,  7.7989864e-01f,  1.0243368e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.2602530e+00f,  1.0775426e-01f, -2.1875513e-01f,  1.0625298e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.8727930e+00f, -6.9799137e-01f, -8.0016631e-01f, -9.0421456e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    7.7763014e-03f, -7.1294224e-01f, -4.9317792e-01f,  1.8019344e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -4.0277326e-01f, -2.0230691e+00f,  3.4593281e-01f,  9.8393953e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    5.9989828e-01f, -1.9092379e+00f, -1.7858426e-01f, -1.7602913e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.0291169e+00f, -1.5875722e+00f, -1.3216347e+00f, -1.8392197e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -7.5081879e-01f,  5.7105029e-01f, -5.1354017e+00f,  1.9902898e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.3884977e+00f,  8.4185839e-01f, -3.5037208e+00f,  1.3678564e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.7006556e-01f,  3.5738621e+00f, -6.2615894e-02f,  1.0531902e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.3683297e-01f,  2.7558026e+00f,  1.3828042e-01f,  9.6027575e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -6.8843663e-01f,  1.1556158e+00f, -5.2607048e-01f,  8.8221872e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.3409892e+00f,  1.7287711e+00f, -4.0928376e-01f,  3.4484482e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.3398446e-02f,  2.6961833e-01f</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+static const float y_ref_complex_base_16[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+   1.0204787e+00f, -2.5116354e-02f,  1.1270854e-01f,  2.0103452e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.4778888e-01f, -1.2959757e+00f, -6.8665636e-01f,  5.4281354e-03f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.9484776e-01f,  4.6060674e-02f,  7.7454138e-01f, -4.5325273e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.9038971e-01f, -1.1781888e+00f, -5.2034152e-01f, -1.2409893e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.3876531e+00f,  7.2206217e-01f,  2.3120897e-01f, -1.6914831e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -6.0406011e-01f, -1.5706220e-01f, -7.9883760e-01f,  1.8044755e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.5950541e-01f,  1.3707930e+00f, -4.0555164e-01f,  7.4748451e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.2087665e+00f,  1.0911274e+00f, -3.2778427e-01f,  1.1958064e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    7.4790752e-01f,  1.5342562e+00f,  3.2427189e+00f,  5.8959556e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.5075334e+00f, -5.0237663e-02f,  1.4548016e-01f,  1.1796089e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.6076640e+00f, -3.9284730e-01f,  2.3559515e+00f,  4.2128317e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.3148807e-02f, -1.3584484e+00f, -4.6423876e-01f, -2.6688182e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    4.6124101e-01f,  7.3441708e-01f,  1.7489634e-01f,  4.8548359e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -7.3935395e-01f, -2.4636242e-01f, -1.0500691e+00f,  5.6822509e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -8.7421393e-01f, -6.3411057e-01f, -1.3568634e+00f,  1.3469000e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.3234839e-01f, -3.0886406e-01f, -7.8908366e-01f,  3.1085747e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.3230717e-01f,  2.5922649e+00f,  8.7886807e-03f,  3.3502164e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -4.5756504e-02f, -3.8599223e-01f, -9.7287148e-02f, -1.4092600e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.1361355e-01f, -2.1624582e-01f, -7.9024333e-01f,  5.4044557e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    6.1728191e-01f, -5.4120636e-01f, -8.2578057e-01f, -5.2031111e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -6.7291415e-01f, -2.1969818e-01f,  3.0724341e-01f, -5.3499347e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    7.6658672e-01f,  3.3450016e-01f,  2.2649126e-01f, -5.9359103e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.5297197e-01f,  2.2377004e-01f,  3.0364630e-01f, -3.3092478e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.4685202e-02f,  3.5065371e-01f, -3.1277853e-01f, -3.2924473e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.3693776e-02f, -1.1502443e-01f, -4.2638665e-01f, -1.7098157e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.2691288e-01f, -2.7505931e-01f,  2.6066101e-01f, -1.5419489e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.3395123e+00f, -5.1757628e-01f, -5.4671490e-01f,  7.3628947e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.2555306e-01f,  5.5017304e-01f,  4.6626769e-02f,  1.9207590e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.3491123e+00f,  5.8043593e-01f,  6.7814434e-01f,  7.9163253e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.5087463e-01f, -3.0272332e-01f, -1.2275376e-01f, -2.4473832e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.1439939e+00f, -4.7129035e-02f, -1.4907286e-01f,  3.9048588e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.5579591e-01f,  1.6937284e+00f,  7.8226668e-01f,  7.9524314e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.2481414e+00f,  1.0485204e-01f,  2.6774750e+00f,  1.0632656e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.3526952e+00f, -6.9430745e-01f,  1.9592261e+00f, -9.0518808e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    5.3978130e-02f, -7.1435422e-01f, -4.8238295e-01f,  1.8014801e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -4.0336940e-01f, -2.0290630e+00f,  3.4358802e-01f,  9.8404706e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    5.6399149e-01f, -1.9623561e+00f, -1.7862386e-01f, -1.7838813e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.9413645e+00f, -4.1300926e+00f, -1.3156767e+00f, -1.7580972e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -7.5146252e-01f,  4.6377757e-01f, -5.1398821e+00f,  1.9903698e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.3872584e+00f,  8.4193558e-01f, -3.5108459e+00f, -1.5915941e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.7677591e-01f,  2.2450306e+00f, -7.7187814e-02f,  1.0598814e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.0874876e-01f,  2.4064844e+00f,  7.5558253e-02f,  9.6579783e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -6.9022942e-01f,  1.1135775e+00f</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+static const float y_ref_complex_base_20[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+   9.2200387e-01f, -4.4163413e-02f,  1.0421737e-01f,  2.4775283e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.4950641e-01f, -1.2930077e+00f, -6.8422490e-01f, -5.0231263e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.0338279e-01f,  4.1142385e-02f,  7.6579785e-01f, -4.5141840e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.9270325e-01f, -1.0140474e+00f, -5.1752222e-01f, -1.0908435e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.3873334e+00f,  7.2338897e-01f,  2.3257981e-01f, -1.6915460e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -6.1139292e-01f, -1.5557176e-01f, -7.9969436e-01f,  2.1765921e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.6079517e-01f,  1.3658193e+00f, -4.0393782e-01f,  7.4661899e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.2602150e+00f,  1.0727985e+00f, -3.2332528e-01f,  1.0280524e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    7.4258268e-01f,  1.5184158e+00f,  3.2430737e+00f,  5.8771044e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.5044163e+00f, -6.0348149e-02f,  1.4486811e-01f,  1.0372563e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.6059076e+00f, -3.9360225e-01f,  2.3333092e+00f,  4.3315876e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.1781791e-02f, -1.3572373e+00f, -3.9045078e-01f, -2.6594822e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    4.6752658e-01f,  7.5929302e-01f,  1.7562661e-01f,  4.8655730e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -7.3061436e-01f, -2.3518093e-01f, -1.0372481e+00f,  5.6892079e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -8.8336241e-01f, -6.3448465e-01f, -1.3577242e+00f,  1.3474387e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.2966169e-01f, -3.1813008e-01f, -7.8932881e-01f,  3.0883539e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.2659223e-01f,  2.5923274e+00f,  9.6015278e-03f,  3.3669871e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -4.5781195e-02f, -3.8491973e-01f,  1.1294759e-02f, -1.0811617e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.0266221e-01f, -2.1701297e-01f, -7.9035515e-01f,  5.5190301e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    6.1783653e-01f, -5.5501902e-01f, -8.2534575e-01f, -8.2019433e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -6.7313355e-01f, -2.2252220e-01f,  3.0751789e-01f, -5.5045158e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    7.5444525e-01f,  2.8616205e-01f,  2.0515469e-01f, -5.9817088e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.8894799e-01f,  2.2470807e-01f,  3.5130596e-01f, -3.3216211e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.0828785e-02f,  3.4665734e-01f, -3.1308788e-01f, -3.4297220e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.3646829e-02f, -1.1569370e-01f, -5.3851604e-01f, -1.7101202e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.3428961e-01f, -2.7099931e-01f,  2.5817174e-01f, -1.5359404e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.3144351e+00f, -5.1634777e-01f, -4.4236645e-01f,  7.3222399e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.1569248e-01f,  5.4692268e-01f,  7.1952589e-02f,  1.8568798e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.3507327e+00f,  5.7350892e-01f,  4.9932483e-01f,  7.9134196e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.5765892e-01f, -1.4933908e-01f, -1.1708134e-01f, -2.4339819e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.0106078e+00f, -3.1198170e-02f, -1.4992334e-01f,  3.8687843e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.5467719e-01f,  1.6931285e+00f,  7.8580469e-01f,  5.9357595e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.2529818e+00f, -1.6339438e-02f,  2.6746237e+00f,  8.6191237e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.3462768e+00f, -7.1517289e-01f,  1.9591191e+00f, -9.0659070e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    5.3502906e-02f, -7.1447617e-01f, -4.8243019e-01f,  1.8016311e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -4.0749678e-01f, -2.0286729e+00f,  3.4304601e-01f,  9.8332119e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.8735908e-01f, -1.9567962e+00f, -1.8885008e-01f, -1.7242540e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.9341036e+00f, -4.1303158e+00f, -1.3168116e+00f, -1.7600046e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -7.5177813e-01f,  4.6127564e-01f, -5.3454962e+00f,  1.9896934e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.4983364e+00f,  8.4872651e-01f, -3.5192151e+00f, -1.5876620e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -6.0122353e-01f,  2.2499788e+00f</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+static const float y_ref_complex_base_24[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+   1.0600923e+00f,  1.3024290e-01f,  5.9496611e-02f, -1.0370921e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.5861672e-01f, -1.5463293e+00f, -6.8378156e-01f, -5.3357560e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.9118892e-01f,  4.1690204e-02f,  7.7884930e-01f, -4.1818622e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.9432354e-01f, -1.1044692e+00f, -5.0856161e-01f, -1.4816418e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.3316061e+00f,  7.1718377e-01f,  1.2707759e-01f, -2.8757638e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -6.4352435e-01f,  2.2299384e-01f, -7.9941660e-01f,  4.7296038e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.6058924e-01f,  1.3608670e+00f, -3.9484936e-01f,  7.5584078e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.2673070e+00f,  1.1163094e+00f, -3.4373367e-01f,  1.0483888e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    8.4266090e-01f,  1.5109135e+00f,  3.2499497e+00f,  6.1104643e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.2797645e+00f, -3.6910795e-02f,  3.0192073e-02f,  3.0663766e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+    1.6160251e+00f, -4.1756570e-01f,  2.3229961e+00f,  2.3608156e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.7498744e-02f, -1.3712938e+00f, -3.8667876e-01f, -2.6620634e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+    4.8600981e-01f,  7.4944365e-01f,  1.7231010e-01f,  5.0535941e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -7.3997790e-01f, -2.1840149e-01f, -1.0231740e+00f,  5.6881583e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -8.7780738e-01f, -6.3411063e-01f, -1.2457681e+00f,  1.3780724e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.7118244e-01f, -3.5782340e-01f, -9.5752192e-01f,  2.7058369e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.2347425e-01f,  2.5544822e+00f,  1.4717924e-02f,  3.2073233e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.9489999e-02f, -3.0062625e-01f,  1.0091385e-02f, -7.9756148e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.1108152e-01f, -2.3387817e-01f, -7.7155209e-01f,  6.7185181e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    7.1629977e-01f, -4.8482552e-01f, -8.2950342e-01f, -7.0632443e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -8.2596958e-01f, -2.1319334e-01f,  2.4015851e-01f, -5.4402274e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    7.5454187e-01f,  2.9061607e-01f,  8.8073313e-02f, -5.9624308e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    6.3121361e-01f,  1.9347335e-01f,  5.1562953e-01f, -3.2625097e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.7161447e-03f,  3.3269337e-01f, -2.5638106e-01f, -3.6533069e-02f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -2.2134559e-01f, -8.7551713e-02f, -6.7024750e-01f, -1.7747418e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.7213624e-01f, -1.2937516e-01f,  3.2782033e-02f, -1.4374573e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -9.2007887e-01f, -4.1351610e-01f, -2.2860219e-01f, -2.3540136e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.9029672e-01f,  3.3175626e-01f, -2.3727785e-01f,  1.8609867e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.5229635e+00f,  5.4403216e-01f,  5.1958156e-01f,  5.8600175e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.0352169e-01f,  1.7375669e-01f, -9.3383819e-02f, -2.1039605e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -9.5350474e-01f,  5.3456688e-01f, -1.4701219e-01f,  6.9001079e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -5.5055398e-01f,  1.7010454e+00f,  7.8672868e-01f,  5.9525365e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -1.2562038e+00f, -1.4023125e-02f,  2.6816280e+00f,  8.5530829e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.1679361e+00f, -7.0918190e-01f,  2.3406773e+00f, -9.6939969e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    3.0656013e-01f, -7.2086781e-01f, -4.7442725e-01f,  1.7965190e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -3.9562300e-01f, -2.0293012e+00f,  1.2834491e-01f,  9.8748577e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    7.2980648e-01f, -2.0126021e+00f,  3.2610771e-01f, -1.9837779e-01f,</span><br><span style="color: hsl(120, 100%, 40%);">+    2.0511889e+00f, -4.1316638e+00f, -1.2659411e+00f, -1.7763804e+00f,</span><br><span style="color: hsl(120, 100%, 40%);">+   -7.1837723e-01f,  4.4456357e-01f</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/12416">change 12416</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/12416"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-trx </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I4e203d2c4b778af77d630ed15d4cef6b0c0eb76d </div>
<div style="display:none"> Gerrit-Change-Number: 12416 </div>
<div style="display:none"> Gerrit-PatchSet: 6 </div>
<div style="display:none"> Gerrit-Owner: tnt <tnt@246tNt.com> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder (1000002) </div>
<div style="display:none"> Gerrit-Reviewer: Pau Espin Pedrol <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: tnt <tnt@246tNt.com> </div>