X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=hamming32.c;h=9b8576b2a04631be46e8ca29600209f3ccbedd89;hb=30ef48a829b34154438763e3bcfe9e2a9352c48b;hp=2d8b882c7fdefeb8b6adb13ced7ce9918a02b150;hpb=7ad344802d7f2865832ac37ab032365a5fbeaab9;p=hamming diff --git a/hamming32.c b/hamming32.c index 2d8b882..9b8576b 100644 --- a/hamming32.c +++ b/hamming32.c @@ -52,7 +52,6 @@ int has_error(unsigned code) int has_double_error(unsigned code) { - unsigned i; unsigned data = code >> PARITY_BITS; unsigned parity = code & ((1 << PARITY_BITS) - 1); unsigned gen_parity = generate_parity(data); @@ -101,10 +100,17 @@ unsigned correct_single_bit_error(unsigned code) void check_zero_bit_detection() { unsigned i; - printf("Checking zero bit detection.\n"); + printf("Checking zero bit detection."); + fflush(stdout); for (i = 0; i < NUM_DATA_WORDS; ++i) { unsigned code = make_codeword(i); + + if ((i & 0xfffff) == 0) { + printf("."); + fflush(stdout); + } + if (has_error(code)) { printf("ERROR: Failed zero-bit test 1 for %x\n", i); } @@ -112,15 +118,24 @@ void check_zero_bit_detection() printf("ERROR: Failed zero-bit test 2 for %x\n", i); } } + + printf("\n"); } void check_single_bit_detection() { unsigned i, j; - printf("Checking single bit detection and correction.\n"); + printf("Checking single bit detection and correction."); + fflush(stdout); for (i = 0; i < NUM_DATA_WORDS; ++i) { unsigned code = make_codeword(i); + + if ((i & 0xfffff) == 0) { + printf("."); + fflush(stdout); + } + for (j = 0; j < CODE_BITS; ++j) { unsigned corrupted_code = code ^ (1 << j); @@ -135,15 +150,24 @@ void check_single_bit_detection() } } } + + printf("\n"); } void check_double_bit_detection() { unsigned i, j, k; - printf("Checking double bit detection.\n"); + printf("Checking double bit detection."); + fflush(stdout); for (i = 0; i < NUM_DATA_WORDS; ++i) { unsigned code = make_codeword(i); + + if ((i & 0xfffff) == 0) { + printf("."); + fflush(stdout); + } + for (j = 0; j < CODE_BITS; ++j) { for (k = 0; k < CODE_BITS; ++k) { unsigned corrupted_code = code ^ (1 << j) ^ (1 << k); @@ -159,6 +183,8 @@ void check_double_bit_detection() } } } + + printf("\n"); } int main()