1 #include "golay_24_12.h" 2 #include <stdio.h> 3 #include <unistd.h> 4 #include <stdint.h> 5 6 uint32_t correct_code = 0b000000000000000000000000; 7 evaluate(uint32_t error_pattern)8void evaluate(uint32_t error_pattern) { 9 uint32_t erroneous_code = correct_code ^ error_pattern; 10 uint32_t parity = golay_24_12_parity(&erroneous_code); 11 fprintf(stderr, "{ %i, %i },", parity, error_pattern); 12 if (!golay_24_12(&erroneous_code)) { 13 fprintf(stderr, " // incorrectable"); 14 } else if (erroneous_code != correct_code) { 15 fprintf(stderr, " // incorrect result"); 16 } 17 fprintf(stderr, "\n"); 18 } 19 main()20int main() { 21 // up to 3 bit errors can be corrected reliably 22 for (int i = 0; i < 24; i++) { 23 evaluate( 1 << i ); 24 25 for (int k = 0; k < i; k++) { 26 evaluate( ( 1 << i ) ^ ( 1 << k ) ); 27 28 for (int l = 0; l < k; l++) { 29 evaluate( ( 1 << i ) ^ ( 1 << k ) ^ ( 1 << l ) ); 30 } 31 } 32 } 33 34 }