Talk:BCH code

message: The last two links in the references are broken.
194.171.252.100 09:53, 14 September 2007 (UTC)
thread_title: Another problem with the references

message: The second reference, to | this PDF, is not accessible to people without an account on the relevant database. As such, it seems that a full citation would be more appropriate:
A Simple Step-by-Step Decoding of Binary BCH Codes
CHR et al. IEICE Trans Fundamentals.2005; E88-A: 2236-2239 
--Dyfrgi 07:55, 11 January 2007 (UTC)
thread_title: Problem with reference

message: The examples are not very elaborate. How does one create the generator polynomial m_{1,3, ...} from m_{1}, m_{3}, ...? What is the importance of x^4 + x + 1? The way to determine the cycles of roots of m_{1}, m_{3}, m_{5} and m_{7} are not explained. It's not clarified that C_{r} means the redundancy polynomial. How do I calculate the syndrome values? How do I calculate the error locator polynomials? Shall I continue? 
Can anyone please provide us with a complete algorithm description, detailed enough so it can be replicated on paper or in source code?
--Zom-B 16:54, 24 June 2007 (UTC)
replies: text: "What is the importance of x^4 + x + 1?" - it is just an example of a primitive polynomial used as the basis for GF(2^4). All non-zero numbers for this field are powers of x (hex 2). "How to calculate syndromes ... error locator polynomial" - I'm assuming the article has been updated since the question was asked, since it now explains the process. "cycles of roots" - I don't see this in the article anymore. I updated the article to explain the minimum polynomials for powers of 2 modulo the field primitive polynomial. The least common multiples are simply the product of non-duplicate minimum polynomials. Rcgldr (talk) 19:33, 16 December 2020 (UTC)
replies: text:  Encoding should just be the process of calculating the m_y(x) polynomials and appending the values to the message?  All methods for calculating CRC, etc can be used such as table look ups and calculations in parallel.  If it is this simple, I don't think an extra section is needed. 71.19.161.130 (talk) 16:54, 16 December 2013 (UTC)
thread_title: Encoding/Decoding

message: I dont know how this is going to be useful, but to the best of my knowledge this is the graph I obtained from running my simulation code.
The main program is given here (ancillary functions omitted for want of space). You can get the full program from
| here.
#!/usr/bin/octave -q
#A simple communications channel,
%BPSK uncoded.
System.BER=[];
System.Error=[];
System.Length=36*1000;
System.Mesg=zeros(1,System.Length);
System.Coded=[];
%BCH coded.
System.BCHError=[];
System.BCHBER=[];
System.BCHLength=System.Length*(63.0/36.0);
System.BCHCoded=zeros(1,System.BCHLength);
System.BCHDeCoded=[];
%BPSK parameters.
System.Modulated=[];
System.DeModulated=[];
System.DeCoded=[];
System.CarrierRate=10;
System.DataRate=2;
System.SNRdb=0:0.5:10;
gen_poly=BCH_poly();
Length=length(System.SNRdb);
System.BCHActualErrors=zeros(1,Length);
System.BCHCorrected=zeros(1,Length);
%Additive White Gaussian Noise, power.
System.N0=5;
for iter=1:Length
  disp('=>')
  System.SNRdb(iter)
  System.BCHBER
  disp('Simulating AWGN  channel with BCH & BPSK')
  %Value of SNR
  Eb=System.SNR=10^(System.SNRdb(iter)/10)*System.N0;
  
  %Signal strength, power.
  System.Eb=  System.SNR*System.N0;
  Ec=Eb*36.0/63.0;
  
  %Source Message
  System.Mesg=mod(floor(randn(1,System.Length)),2);
  Rxword=[];
  Chunks=length(System.Mesg)/36;
  for biter=1:Chunks
    bmesg=System.Mesg((biter-1)*36+1:biter*36);
    cwmesg=GF_product(gen_poly,GF_polarize(bmesg));
    %convert from the 0,-1 mode to the 1,0 mode.
    cwmesgTx=cwmesg+1;
    System.BCHCoded((biter-1)*63+1:(biter)*63)=cwmesg;
%Modulate BPSK
    bch1=bpskmod(cwmesgTx,20,10,sqrt(Ec));
%Add noise
    bch2=bch1+sqrt(System.N0)*boxmuller(length(bch1)); 
%Demodulate BPSK
    cwRx=bpskdemod(bch2,20,10,sqrt(Ec)); 
%   This is in the +1,+0 mode,
%   convert to a 0,-1 mode
    cwrecv=cwRx-1;
    Rxword=[Rxword cwrecv];
%error pos gives roots w.r.t index of 0.
   errpos=BCH_decode_berlekamp(cwrecv,63,36,5);%_berlekamp
%so add +1, to convert error position locations form 0 index, to +1 index.
    errpos=errpos+1;
    if isempty(errpos)
      %disp('Codeword is correct')
      correctw=cwrecv;
    else
      %printf('Correcting %d errors\n',length(errpos))
      %errpos
      correctw=cwrecv;
      for i=1:length(errpos)
        %flip the bits,
	correctw(errpos(i))=-(1+correctw(errpos(i)));
      end
    end
   %disp('Corrected CW')
   %correctw
   %fgets(stdin)
   
   CorrectError=length(errpos);
   System.BCHCorrected(iter)=System.BCHCorrected(iter)+CorrectError;
   System.BCHDeCoded((biter-1)*63+1:biter*63)=correctw;
  end
  
  System.BCHActualErrors(iter)=Difference(System.BCHCoded,Rxword);
  System.BCHError(iter)=Difference(System.BCHCoded,System.BCHDeCoded);
  System.BCHBER(iter)=System.BCHError(iter)/System.BCHLength;
  %BPSK part of simulation,
  System.Coded=System.Mesg;
  %Modulate 
  System.Modulated=bpskmod(System.Coded,System.CarrierRate,System.DataRate,sqrt(System.Eb));
  
  
  %Channel with AWGN
  System.Channel=System.Modulated + sqrt(System.N0)*randn(1,length(System.Modulated));
  %DeModulate
  System.DeModulated=bpskdemod(System.Channel,System.CarrierRate,System.DataRate,sqrt(System.Eb));
  %Channel Decode
  System.DeCoded=System.DeModulated;
  %Error Calculation
  System.Error(iter)=Difference(System.Coded,System.DeCoded);
  System.BER(iter)=System.Error(iter)/System.Length;
end
disp('System Error')
System.Error
disp('System BER')
System.BER
disp('System.BCHError')
System.BCHError
disp('System.BCHBER')
System.BCHBER
disp('System BCH Actual')
System.BCHActualErrors
disp('System BCH Corrected')
System.BCHCorrected
disp('System SNRdb')
System.SNRdb
semilogy(System.SNRdb,System.BER,";Simulated BPSK;",System.SNRdb,0.5*erfc(sqrt(10.^(System.SNRdb/10))),";Theoretical BPSK;",System.SNRdb,System.BCHBER,";Simulated BCH, [63,36];")
title "BPSK Uncoded, Vs BCH Coded systems"
save bchchannel_sim System
fgets(stdin)
fgets(stdin)
Let me know whats the problem, if there is any.
--பராசக்தி 16:48, 16 September 2006 (UTC)
thread_title: Dispute on Graph

message: Wolfram Alpha writes the function :
 GF(q^m)
like this : 
 G_m[q^m](z)
and 
 GeneratingFunction[q^m, m, z]
see http://www.wolframalpha.com/input/?i=GF%28q^m%29
The n=q^m-1  is written alternatively as 
 q^m = 1 + n
or 
 q=(1 + n)^{m^{-1}}
or more simply 
 q=(1 + n)^{1/m}
see http://www.wolframalpha.com/input/?i=n%3Dq^m-1
More to come... 
-- James Michael DuPont (talk) 07:34, 29 August 2010 (UTC)
thread_title:  Ideas from Wolfram 

message: From Glrx's recent edit summary: "single digit symbols and errors make this a poor example." Thanks for your input. I feel that the example is a good one, as it is simple and practical. Additional examples could be added to fully illustrate the complexity of the subject, but I don't know how much value that would add to the article. Thoughts? Bobmath (talk) 15:30, 28 July 2011 (UTC)
thread_title:  Decoding example 

message: For RS codes, the  Euclidean_decoder is another popular algorithm. I don't know if this is true for BCH codes, but since Reed%E2%80%93Solomon_error_correction section  Peterson_decoder refers to this BCH article, perhaps the Euclidean decoder could be mentioned here as well with a link to  Euclidean_decoder. Rcgldr (talk) 04:30, 3 November 2011 (UTC)
thread_title:  Euclidean algorithm 

message: The article says that in GF(2^4) it is true that:
(a+b)^2 = a^2 + 2ab + b^2 = a^2 + b^2
But I think that is true in GF(2).
Page 29 of Error Control Coding, by Lin and Costello, seems to support this case. 82.57.60.212 (talk) 11:23, 14 January 2012 (UTC)
replies: text: I don't have Lin and Costello, but addition in GF(2k) is just exclusive or. The 2ab does not represent a field multiply of 2 times ab but rather ab + ab — which is zero. The same confusion arises in formal differentiation. Glrx (talk) 20:11, 15 January 2012 (UTC)

text: To answer Damix's original concern, I would like to note the following mathematical fact. The characteristic of all the non-zero elements in \mathrm{GF}(p^m) (for prime p) is p. That is, if you sum any element of \mathrm{GF}(p^m)  p times, you get zero. Arun Kandasamy 12:34, 25 February 2012 (UTC)
thread_title:  Simplified BCH Example 

message: Hmmm, I should reindex the syndroms to be indexed in all sections the same way.
... in the next edit probably
Hippo.69 (talk) 00:47, 30 December 2012 (UTC)
thread_title:  Syndroms numbering 

message: I am not familiar to the wikipedia encoding or anything like that but i want to point out something which seems to me like a mistake. Close to the beginning of the forney algorithm explanation, the exponent in the multiplicative formula for lambda(x) is negative, which contradicts the definiton that the roots of it are the reciprocals of the error locations (which in fact will be the error location themselves from this definiton). If this is a mistake i hope someone would fix it and if its not please explain to me why. Also excuse me for the lack of formatting or any spelling mistakes, i was typing this on my phone.  — Preceding unsigned comment added by 37.26.148.151 (talk) 12:57, 16 September 2015 (UTC)
thread_title: Possible error in the Forney algorithm explanation

message: Hello fellow Wikipedians,
I have just added archive links to  on BCH code. Please take a moment to review my edit. If necessary, add  after the link to keep me from modifying it. Alternatively, you can add  to keep me off the page altogether. I made the following changes:
*Added archive http://web.archive.org/web/20120930164509/http://www.stanford.edu/class/ee387/handouts/notes7.pdf to http://www.stanford.edu/class/ee387/handouts/notes7.pdf
When you have finished reviewing my changes, please set the checked parameter below to true or failed to let others know (documentation at ).
Cheers.—cyberbot IITalk to my owner:Online 16:24, 22 March 2016 (UTC)
thread_title:  External links modified 

message: I just read that two early chess programs used BCH coding for their hash functions. What advantage does BCH coding add to hashing ( I am hoping it might eliminate collisions. Was/Is it not used more widely due to speed considerations - chess is always looking for maximum speed (accepting some degree of error in the process).) I was looking for a simple explanation but it appears this is not a simple subject. 
Thanks
2601:181:8301:4510:54EA:A058:77AF:BF1B (talk) 13:15, 24 June 2016 (UTC)
thread_title: Chess hashing

message: Should the scope of the Galois field be  rather than ? RossBoswell (talk) 21:00, 23 April 2024 (UTC)
thread_title:  Scope of Galois field