From: Skullheadx Date: Thu, 7 Nov 2024 04:07:24 +0000 (-0500) Subject: create log and antilog tables for Finite Field Calculations X-Git-Url: http://git.skullheadx.com/nixos/static/gitweb.css?a=commitdiff_plain;h=0f1982777f29d22d80eb58f91947b8feb516bbc4;p=qrcodescanner.git create log and antilog tables for Finite Field Calculations --- diff --git a/qrgenerator.cpp b/qrgenerator.cpp index f5ff5ae..29fb91b 100644 --- a/qrgenerator.cpp +++ b/qrgenerator.cpp @@ -113,6 +113,50 @@ int main() { std::cout << i; k++; } + std::cout << std::endl; + + /* Table 9: V1 QR code M-level Error Correction: + * Total Number of Codewords: 26 + * Number of error correction codewords: 10 + * value of p = 2 + * Number of error correction blocks: 1 + * Error correction doe per block: (c,k,r)^a = (26,16,4)^b + * Thus only one block for data codewords + */ + + // Reed-Solomon Error Correction + //std::vector primitive = {1,0,0,0,1,1,1,0,1}; + unsigned int primitive = 0b100011101; + std::cout << "Primitive: " << primitive << std::endl; + //unsigned int log_table[255]{}, antilog_table[510]{}; + std::vector log_table, antilog_table(510,0); + + + std::cout << "Log table: "; + for (unsigned int i{0}; i < 255; ++i){ + if (i == 0){ + log_table.push_back(1); + } + else if (log_table[i-1] * 2 > 255){ + log_table.push_back((log_table[i-1] * 2) ^ primitive); + } + else { + log_table.push_back((log_table[i-1] * 2)); + } + std::cout << log_table[i] << " "; + } + std::cout << std::endl; + + std::cout << "Antilog table: "; + for (unsigned int i{0}; i < 255; ++i){ + antilog_table[log_table[i]] = i; + antilog_table[510-log_table[i]-1] = i; + } + for (unsigned int i{0}; i < 510;++i){ + std::cout << antilog_table[i] << " "; + } + + std::cout << std::endl; return 0;