altos: add some (unused) test code for different soft-decision sizes
authorKeith Packard <keithp@keithp.com>
Tue, 10 Jul 2012 22:13:55 +0000 (15:13 -0700)
committerKeith Packard <keithp@keithp.com>
Tue, 10 Jul 2012 22:13:55 +0000 (15:13 -0700)
This lets us experiment with hard-decision and other possible
soft_decision bit depths.

Signed-off-by: Keith Packard <keithp@keithp.com>
src/test/ao_fec_test.c

index b94b16dcd91441afb23dad5ffdf2f012cdd0f695..216a4b79667dd42302b7751675669c9bea33c6fd 100644 (file)
@@ -100,6 +100,7 @@ ao_fuzz (uint8_t *in, int in_len, uint8_t *out, double dev)
 {
        int     i;
        int     errors = 0;
+       int     s;
        
        for (i = 0; i < in_len; i++) {
                double  error = gaussian_random(0, dev);
@@ -115,6 +116,24 @@ ao_fuzz (uint8_t *in, int in_len, uint8_t *out, double dev)
                        else
                                byte -= error;
                }
+
+               /* abcd efgh    8
+                * abcd efga    7
+                * abcd efab    6
+                * abcd eabc    5
+                * abcd abcd    4
+                * abca bcab    3
+                * abab abab    2
+                * aaaa aaaa    1
+                */
+
+#define SAVE           8
+#define SAVE_MASK      (((1 << SAVE) - 1) << (8 - SAVE))
+
+               byte &= SAVE_MASK;
+               for (s = SAVE; s < 8; s += SAVE)
+                       byte |= byte >> s;
+
                out[i] = byte;
        }
        return errors;