*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
{
int i;
int errors = 0;
+ int s;
for (i = 0; i < in_len; i++) {
double error = gaussian_random(0, 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;