Talk:Reed–Solomon error correction

message: the side bar says q>=n but shouldn't it be q>n?  I'm not an expert so I won't change the page, but I don't see how you can make a rs code where q=n.  — Preceding unsigned comment added by 205.175.106.101 (talk) 01:07, 13 December 2023 (UTC)
thread_title:  Alphabet size (q) vs block size (n) 

message: It is stated that Reed-Solomon is being replaced by more "MODERN" LDPC codes... Both were developed in 1960. LDPC is not more modern...
From wikipedia on LDPC...
LDPC codes are also known as Gallager codes, in honor of Robert G. Gallager, who developed the LDPC concept in his doctoral dissertation at the Massachusetts Institute of Technology in 1960.  — Preceding unsigned comment added by 24.141.52.159 (talk) 14:57, 31 December 2021 (UTC)
thread_title:  modern 

message: From the article:
\Lambda(x) = \Lambda_{e} x^{e-1} + \Lambda_{e-1} x^{e-2} + \cdots + \Lambda_{1} x + 1
The terms at the start have the subscript on lambda 1 higher than the power of x, but the \Lambda_{1} x term has them matching. For working through the maths to get the matrix shown below in the article, I think the terms should actually be \Lambda_{e} x^{e}. More references for this section would be appreciated.
: It was an error, and it's fixed now, the subscript on both Lamba and Omega terms should match the power of x, in the example, starting with x^e since there are e error locators and e error values. I just noticed this myself and fixed it before visiting this talk page. The matrix part of the section was already correct. Thanks for catching this, as I didn't think anyone was following this article anymore. I thought I had a watch on both the article and the talk page, but never got a notice. Rcgldr (talk) 12:26, 22 October 2015 (UTC)
replies: text: As for references, the key equation is similar to the Omega equation in Forney_algorithm. Doing a search for Reed Solomon extended Euclid Algorithm got a few hits, including this pdf file:  , which has a similar mistake to the one I made before: on page 47, the last term in equation 11 should be S2t x2t-1. The main issue is a derivation of the key equation, since the rest of the section follows from the key equation. Rcgldr (talk) 12:26, 22 October 2015 (UTC)

text: Another issue is that the Reed Solomon article uses t to represent the number of parity symbols, while most references and the Forney article use 2 t to represent the number of parity symbols. I didn't want to change the entire Reed Solomon article. Rcgldr (talk) 12:26, 22 October 2015 (UTC)
thread_title:  Error in definition in Euclidean decoder section? 

message: "A Reed–Solomon code (like any linear code) is able to correct twice as many erasures as errors"
I think it is true for Reed-Solomon but not for any linear code. This property is true for perfect codes ( Perfect codes are codes that reach the Hamming bound).
I propose to change linear code into perfect codes.
--Cunchem 15:23, 2 April 2009 (UTC)
thread_title:  able to correct twice as many erasures as errors ? 

message: I wrote the text that said that a Reed-Solomon code is twice as powerful at erasure correction than at error correction. This text was correct, and I've reverted the page.
In this context, the word 'erasure' refers to a symbol in a particular location that is known (or is very likely) to be in error, but the actual error value isn't known. (This occurs because Reed-Solomon codes are non-binary; if we were talking about a single bit known to be in error, then it would be obvious how to fix it!)
With a Reed-Solomon decoder equipped for erasure correction, you can tell it which specific symbols you believe to be in error, and the decoder will compute the corresponding error values; i.e., it will correct the erasures. Why do this instead of just letting the decoder figure out which symbols are in error? Because the decoder can correct more errors this way. E.g., the (255,223) code heavily used in deep space communications has 32 parity symbols, so it can correct up to 16 symbol errors if the locations of those errors are not known. But if you know where two of those errors are, then the code can correct them *plus* 15 more errors in unknown locations, for a total of 17 corrections.
User: Karn
: Just a minor point: of course the concept of "erasure" is also meaningful for binary codes. This is because "erasure" does not mean that the location is known to be an error; it means that the location is known to be meaningless. Perhaps you lost the 3rd bit of your transmission because you accidentally - but knowingly - set it to 0. In this case, you  don't know if there's an error at that location - but you know it has to be reconstructed. Selinger (talk) 02:13, 15 March 2008 (UTC)
replies: text: I like in general the idea of explaining erasure as an error at a known location. However it is true that the usual meaning of error is that the symbol received is definitely not the symbol sent, hence in general gives some information about the symbol sent. In the case of a binary alphabet it gives all the information about the symbol. An erasure indicates only the position of the symbol but nothing about its value. But I'm not sure how to reword the definition without losing its simplicity. Ozga (talk) 16:43, 26 July 2008 (UTC)

text: I agree, this should be mentioned in the article, since an erasure, even if it has the correct value, is still consuming one parity symbol for reconstruction. So really, an erasure is an information about the meaningfulness of a symbol at given position, not an indication that it's an error. Lrq3000 (talk) 00:32, 24 June 2015 (UTC)
thread_title: Erasures

message: From the article: "Viterbi decoders tend to produce errors in short bursts."
That's not good I guess. May someone comment on this statement? --Abdull 07:19, 16 October 2005 (UTC)
replies: text: I added a link to the Viterbi decoder article from that sentence.  The statement is true, but should probably be discussed in one of the Viterbi articles, and then cited from here.  The following statement in the article that 'Correcting these burst errors is a job best done by short or simplified Reed-Solomon codes.' seems to deserve a citation or a bit more discussion. Edurant 13:25, 10 October 2006 (UTC)
replies: text:  I agree. So I added a sentence about error bursts to the Viterbi decoder article, with a reference. --DavidCary (talk) 05:17, 22 December 2019 (UTC)
thread_title:  Short Bursts?! 

message: I came here to learn about Reed-Solomon codes, and I found the article to be very helpful, but there is one thing I do not understand: Are the data symbols coefficients of the polynomial or coordinates of the plotted points?
The article says "The coefficients of the polynomial are the data symbols of the block." That seems clear enough, but if it's true, then I simply don't understand Reed-Solomon codes at all, and I'd welcome a lot of clarification.
If that sentence is not true, then I speculate all symbols are Y-coordinates of the plotted points (the parity symbols being coordinates of the oversampled points). That interpretation makes more sense to me. Is it correct?
68.6.61.250 04:54, 25 December 2005 (UTC)
replies: text: I rewrote the start of that paragraph. Read it again and see if it is clearer. (I could tell you the answer, but if you still cant figure it out from the text, then we n need to fix the text further :) - grubber 05:14, 25 December 2005 (UTC)
thread_title:  Clarification on the Values Stored in Data Symbols 

message: Try this from me --
A message stream of 'k' symbols is treated as a degree k-1 polynomial over GF(2^s) (GF(2^s)=galois field with n=2^s -1 ), with each symbol being coefficient of the said polynomial. This is referred to as 'message poynomial'(lets call it 'm(x)' with degree 'k-1'). There is another fixed polynomial with coefficients from the GF(2^s) called a 'generator polynomial' of degree 'n-k'. lets call it g(x). A code polynomial of degree  'n-1' (lets call it 'c(x)')is formed by the following algebra - c(x) = x^(n-k)*m(x)+r(x), where r(x) is remainder formed by dividing x^(n-k)*m(x) with 
g(x). It is clear now that c(x) divides g(x). This is true for any message stream. The coeffcients of c(x) are now called code symbols.  Thus, a 'k' stream of symbols (message) is turned into a 'n' stream of symbols (code). This block of 'n' symbols  that contains only 'k' useful message symbols is transimitted over the channel. The so called parity symbols are the 'n-k' coeffcients of r(x). The fact that any code polynomial is divisible by a fixed polynomial (=g(x)) is known to both sides,  sender and the reciever. The reciever, knowing this property has the ability to extract the k symbols  from the recieved 'n' symbol code block (even if up to '(n-k)/2' symbols have been corrupted).
-rajesh p.
: What you are describing is a polynomial code. Reed-Solomon codes can be defined either as a polynomial code (from a generator polynomial as you suggest, or from given roots), or as the graphs of polynomials. The definition in terms of graphs is mathematically simpler (it doesn't require primitive roots of unity) and therefore probably more appealing for an encyclopedia. Most non-specialists can easily appreciate that low-degree polynomials have few roots, and this is the only mathematical fact really needed. However, the alternative definition in terms of a generator polynomial is important for the error correction algorithm, which is the real value of Reed-Solomon codes. I have therefore added a section on the alternative definition. Selinger (talk) 04:28, 15 March 2008 (UTC)
thread_title:  Explanantion of author does not make sense 

message: We need to clean up the references to to their inital paper.
--ReptileLawyer 15:11, 18 April 2006 (UTC)
thread_title:  Need More Info: 

message: Compared to Hamming code, almost no detail is given on how to actually compute a Reed-Solomon code. Perhaps this should be considered for future addition. Shawn K. Quinn 13:16, 27 January 2007 (UTC)
replies: text: I have added a more formal definition of a RS code. More details would be welcome! - grubber 19:59, 30 January 2007 (UTC)
replies: text:  Your formal definition wasn't complete. To be a Reed-Solomon code, the set \{x_1,\ldots,x_n\} must be all non-zero elements of the field. I have added this to the definition. The more general class of codes where the points are arbitrary has the correct minimum distance, but the actual algorithm for finding the error locations relies on the additional property. Also, codes in the more general class are not called "Reed-Solomon" codes according to my references (does anyone know if they have a name? It's not polynomial codes because this means something else.) Selinger (talk) 01:52, 15 March 2008 (UTC)
thread_title:  Lack of detail 

message: RS is able to correct (n - k) / 2 errors.
How many errors in a segment he can detect 100% accurate?
(the algorithm is able to detect to a certain level, if he is not able to correct too many errors up too (n - k) / 2. Where is the limit?) —The preceding unsigned comment was added by 85.5.235.196 (talk) 10:55, 16 March 2007 (UTC)
thread_title:  Detectable Errors 

message: The Reed–Solomon error correction article currently claims
"The result is a CIRC that can completely correct error bursts up to 4000 bits, or about 2.5 mm on the disc surface."
which doesn't exactly match the cross-interleaved Reed-Solomon coding article which claims "CIRC corrects error bursts up to 3,500 bits in sequence (2.4 mm in length as seen on CD surface)".
What is the correct number?
--75.37.227.177 19:52, 10 August 2007 (UTC)
replies: text: This is about 4 years old and the conflict is not resolved. I assume there's a 4 way interleave on the outer code, allowing 4096 bit bursts to be corrected, of that 3072 are data bits. So I'm not sure where the 4000 and 3500 numbers originate from. Rcgldr (talk) 01:06, 14 October 2011 (UTC)
thread_title:  maximum burst error length 

message: The article claims that a Reed-Solomon code can correct twice as many erasures as errors - this would be (n-k), a conclusion supported by the code having distance (n-k+1)
But it goes on to state "2E + S < n − k ... where E is the number of errors and S is the number of erasures in the block."
If there are no errors, this implies it cannot in fact correct (n-k) erasures. Shouldn't the < in that equation in fact be a "less than or equal" symbol?
James mcl (talk) 20:49, 15 May 2008 (UTC)
thread_title:  Erasure correction 

message: As I'm an utter programming layman(though one with a good intuition for math/logic), the concept was totally unclear until I hit the last section. Perhaps it could be moved up?  —Preceding unsigned comment added by 67.101.43.231 (talk) 02:36, 17 May 2008 (UTC)
replies: text: A single-sided impulse in one domain transforms to a complex exponential in the other (i.e. \ \delta(t+T) \leftrightarrow e^{j\omega T} .  The real projection of this is indeed a cosinusoid.  Oli Filth(talk) 15:43, 22 July 2008 (UTC)
thread_title: Graphs

message: I think the article should include a summary of the algorithm for encoding and then decoding. If I understand the algorithm correctly, then this should be a valid summary:
Encoding:
1. Take the cleartext word you want to transmit, perhaps "123". The cleartext word must be k symbols (letters/numbers/characters, in this case digits) long.
2. Use the individual symbols from that cleartext word as the coefficients of a polynomial of degree k-1. So: p(x) = 1x^2 + 2x + 3
3. The code word (encoded word) will be n symbols long. In pseudocode:
:For i in (1,2,3...n):
::$next_symbol = p(i) = 1(i)^2 + 2(i) + 3
::Write $next_symbol at the end of the code word
4. Transmit or store the code word.
Decoding:
1. Receive or read the code word.
2. "Graph" the code word by making a scatter plot.
3. Look at the graph, and see if it is smooth, low-frequency, and trustworthy.
If the code word was "12221000122210001", then your graph will look like a nice low frequency wave. You can trust there are no errors.
If the code word was "92221000122210001", then you will notice a big spike at the "9" which is way to high frequency to actually belong. The "9" must be an error.
4. Erase any stray points (like the "9" above), and then "connect the dots" with the remaining points.
5. You just drew a nice smooth curve. Use math tricks to find the polynomial that gives that curve. If you find the polynomial is p(x) = 1x^2 + 2x + 3, then the cleartext word must have been "123", the coefficients.
Do people agree that a cleaned-up (and if necessary, corrected) version of this should go in the article?Fluoborate (talk) 06:24, 12 June 2009 (UTC)
replies: text: "cleartext" is not appropriate in this case, I think we should use "source data" or "source word" instead. The encoding part seems ok to me, but the step 3 confuses me: what is a smooth low frequency and trustworthy curves ? :) and what do you mean by connecting the dots? If I'm right the smoothness of the curves can be replaced by the fact that the curves correspond to a ploynomial of degree at most "n-1". If not, we are sure that at least one symbol is in error. The correction step will be to find the closest polynomial of degree at most "n-1" to this set of points. And the "math tricks" that you are speaking of is something like polynomial interpolation if I'm right. IMO it is interesting to have a simple presentation of the algorithm like this one, but we should also have a more mathematical and rigorous one. In addition, several approach are possible to encode RS codes, for exemple depending on the channel considered (BEC, or AWGN/BSC ...), and we should specify the type of error corrected by the algorithm. Cunchem (talk) 09:10, 12 June 2009 (UTC)

text: I know this is old, but perhaps William will read this some day. coding ... decoding - an example of coding and decoding is included in the article here:  Example. They use Eight To Fourteen (ETF) encoding, where each eight-bit data byte is converted to 14 bits. ... The 14 bits are the coefficients of the polynomial. - The 14 bit pattern is used for a modulation scheme,  Compact_Disc_Data_structure. Other than the last output and first input stages, everything else in the drive operates with 8 bit values, so the RS encoding and decoding would be working with 8 bit values. Rcgldr (talk) 14:37, 15 October 2011 (UTC)
thread_title:  Article should include a summary of the algorithm 

message: It almost seems as if someone worked really hard at being unfamiliar with WP:MOS, WP:MOSMATH, and standard TeX conventions.  Lots of stuff like
:
: Reed-Solomon
instead of
: Reed–Solomon
and
: (a,...,b) \, 
instead of
: (a,\ldots,b)\, 
and
: (1, ..., a)
instead of
: (1, ..., a)
and
: n-k+1
instead of
: n − k + 1
and so on.  Probably more cleanup is needed. Michael Hardy (talk) 21:38, 27 April 2011 (UTC)
replies: text: You, too, would do a lot better spending time on making these article easily understood instead of calling other well-meaning editors idiots! Nageh (talk) 16:24, 4 June 2011 (UTC)
replies: text: Criticism accepted. I'll see what I can do. WilliamSommerwerck (talk) 22:02, 4 June 2011 (UTC)
thread_title:  MOS, MOSMATH, TeX, etc. 

message: For the Berlekamp-Massey algorithm example, the syndrome values are listed in the table, but how they are calculated is not explained. Here's an example of how syndrome 0 is calculated. Note all coefficients are modulo 929. I'm not sure if this somewhat lengthy section should be added to the main article:
syndrome 0 = r(x) modulo (x - 3) = r(x) modulo (x + 926) = 732
Using long hand polynomial division to calculate syndrome 0:
             003 011 156 924 176 086
        ----------------------------
001 926 |003 002 123 456 191 487 474
         003 920
          --------
             011 123
             011 896
             -------
                 156 456
                 156 461
                 -------
                     924 191
                     924 015
                     -------
                         176 487
                         176 401
                         -------
                             086 474
                             086 671
                             -------
                                 732
Rcgldr (talk) 09:47, 13 October 2011 (UTC)
replies: text: Detailed discussion of the Berlekamp-Massey algorithm should go to the respective article. Basics such as a trivial polynomial (long) division have no place at either. Nageh (talk) 09:57, 13 October 2011 (UTC)

text: Thanks for pointing out the gap in the example. You actually don't need to use long division to calculate the syndromes, just evaluate the polynomial r(x). I've added a couple of lines to show that. Bobmath (talk) 14:38, 13 October 2011 (UTC)
replies: text: Thanks for the update. For anyone that would actually be reading these articles, the long division example isn't needed, but is there any wiki article to show that evaluating r(x) with either the syndromes or generator polynomial is the equivalent to grinding it out with long division? Rcgldr (talk) 20:24, 13 October 2011 (UTC)
replies: text: Polynomial remainder theorem. Bobmath (talk) 04:09, 14 October 2011 (UTC)
thread_title:  Explanation of syndrome calculation 

message: In the case of a multi-layer code like CIRC, it's usually faster to generate a matrix for the outer code correction. Consider the inner code to be the rows of a matrix, and the outer code to the columns. The rows are handled first, and then correction on the columns of all rows can be treated as erasure cases, multiplying the inverted locator matrix with each column's syndromes to do the correction. If an error occurs in a column, then the failing row (once determined) can be added to the row erasure list, a new inverted locator matrix generated and correction continued. Expansion of terms from the Forney algorithm can be used avoid having to actually invert a matrix. For a 3 error case:
:\begin{bmatrix}
X_1^1 & X_2^1 & X_3^1 \\
X_1^2 & X_2^2 & X_3^2 \\
X_1^3 & X_2^3 & X_3^3 \\
\end{bmatrix}
\begin{bmatrix}
Y_1 \\ Y_2 \\ Y_3
\end{bmatrix}
= 
\begin{bmatrix}
S_1 \\ S_2 \\ S_3
\end{bmatrix}
:\begin{bmatrix}
Y_1 \\ Y_2 \\ Y_3
\end{bmatrix}
= 
\begin{bmatrix}
-(1 + \Lambda_1 X_1^{-1} + \Lambda_2 X_1^{-2}) / \Lambda'(X_1) & -(X_1^{-1} + \Lambda_1 X_1^{-2}) / \Lambda'(X_1) & -(X_1^{-2}) / \Lambda'(X_1) \\
-(1 + \Lambda_1 X_2^{-1} + \Lambda_2 X_2^{-2}) / \Lambda'(X_2) & -(X_2^{-1} + \Lambda_1 X_2^{-2}) / \Lambda'(X_2) & -(X_2^{-2}) / \Lambda'(X_2) \\
-(1 + \Lambda_1 X_3^{-1} + \Lambda_2 X_3^{-2}) / \Lambda'(X_3) & -(X_3^{-1} + \Lambda_1 X_3^{-2}) / \Lambda'(X_3) & -(X_3^{-2}) / \Lambda'(X_3) \\
\end{bmatrix}
\begin{bmatrix}
S_1 \\ S_2 \\ S_3
\end{bmatrix}
Rcgldr (talk) 23:57, 26 October 2011 (UTC)
thread_title:  error value calculations with multi-layer codes 

message: I shortened the description on this section to just reference Berlekamp–Massey algorithm. That reference, along with the example should be good enough for the Reed Solomon article.
The Berlekamp–Massey algorithm article, has a decent description for the binary case, but just a code fragment for the more general case. Perhaps that article could be updated with something like the text below. Since I previously wrote a basic description here, I'm leaving it on this discussion page for now:
The Berlekamp Massey algorithm calculates a discrepancy based on a subset of v+1 syndromes, Sj ... Sj+v and a set of v coefficients, where v is the current number of assumed errors and initially set to zero:
discrepancy = Sj+v + Λ1 Sj+v-1 + Λ2 Sj+v-2 ... + Λv-1 Sj+1 + Λv Sj
This discrepancy as well as some internal variables are used to decide if v needs to be increased and/or if the coefficients need to be updated on each iteration. j is initally set to zero and advanced as needed during iteration so that all syndromes are used in the algorithm. When the algorithm completes, there will be v coefficients, and {1 Λ1 Λ2 ... Λv} will be the coefficients of the error location polynomial, Λ(x).
Rcgldr (talk) 07:06, 16 October 2011 (UTC)
replies: text: If anyone is interested, I added an algorithm description to Berlekamp–Massey algorithm 
Rcgldr (talk) 00:27, 19 October 2011 (UTC)
replies: text: As far as I know Berlekamp-Massey is more suitable for hardware implementation than Euclidean as it lends for implementation with linear shift registers. Since RS is dominantly used in electronic consumer products that statement should be true. I assume that should be verifiable via Google as I don't have a reference at hand right now (and no time to get involved in editing this article at the moment). Nageh (talk) 18:38, 19 October 2011 (UTC)
replies: text: If you look at the sample output shown in the Euclidean Division Algorithm Decoder section above, you can see the shift register implementation typically used in hardware. There are two shift registers, fixed in size (2 + # parities), with an index for each register used to separate each register into it's R(x)/A(x) or S(x)/B(x) poynomials. In addition, you get the error valuator polynomial for free (it's S(x) / low order term A(x)). I first started seeing Euclid method around 1989. In the meantime, I updated the intro for Berlekamp Massey with a proper description of the algorithm and just mentioned it's an alternate interative procedure. Both algortihms are popular, but I've only personally seen one instance of Berlekamp Massey used, versus several instances of Euclid used, while your experience is obviously different. I'm not sure it's important to pick which one is most popular. Rcgldr (talk) 19:36, 19 October 2011 (UTC)
replies: text: You are right, I thought Berlekamp-Massey would be most popular but based on a quick search it seem that both are about equally popular. Regarding which one is more suitable for hardware implementation, here is a paper that states that Berlekamp-Massey is thought to be more efficient while Euclidean is simpler:  It also shows that both algorithms are ultimately equivalent via some reformulations. I agree that both algorithms can be implemented using linear shift registers, so the difference is probably not that big in the end. Nageh (talk) 20:21, 19 October 2011 (UTC)
replies: text: The hardware guys hate having to turn chips, so they often prefer simpler. Each algorithm needs some checks to handle failure cases caused by too many errors. In the case of most failures, Λ(x) will still be unique, and all algorithms produce the same Λ(x), so in that sense, they are equivalent. If too many syndromes are zero, (an e error case can result in e-1 zeroed syndromes), then there are multiple Λ(x)'s that will satisfy S_i + Λ1 Si-1 + ... = 0, but none of them will be valid, and the different algorithms will produce different Λ(x)'s (or fail to produce one), but in these cases, failure will be detected, and the produced Λ(x)'s ignored. Berlekamp Massey iterates once per number of syndromes. Euclid only iterates once per number of errors, but there's more data involved in each iteration. I'm not sure of the tradeoffs in a mostly hardware impelentation. There's also a wiki article for Berlekamp%E2%80%93Welch_algorithm, which I'm not familiar with. It's been a while since I've worked with RS codes. Rcgldr (talk) 23:51, 19 October 2011 (UTC)
replies: text: The Berlekamp%E2%80%93Welch_algorithm article didn't make it clear that it is an original view decoder, and I didn't follow up on it at the time. Recently, I did a rewrite to clean it up and added a reference and example in the Reed Solomon article, as well as Gao's improved extended Euclid algorithm for an original view decoder. Rcgldr (talk) 16:36, 30 January 2018 (UTC)

text: I had Gill's lecture notes (from the reference section) in mind when I wrote that, but I may not have chosen the best wording. I felt that something should be added because there's a conceptual jump from polynomials to shift registers that was pretty jarring. I'm not sure whether the present wording smooths that out. Bobmath (talk) 19:45, 19 October 2011 (UTC)
replies: text: Glrx has added the section on the Peterson decoder, I have only added some material on soft decoding and list decoding at the end of the decoding section. Much of the text in between needs review and corrections, so feel free to go ahead if you feel you can improve it. Nageh (talk) 18:38, 19 October 2011 (UTC)
replies: text: Peterson decoder section seems ok to me. As mentioned, I updated the intro description for Berlekamp Massey. There's also an iterative procedure for finding the error evaluator polynomial (Ω(x)) which isn't mentioned at all on the RS page. A similar procedure is more often used to generate a matrix that produces error values given a set of syndromes, to be used in multi-layer RS implementations where a set of columns in an RS matrix all share the same erasure locations, which are the rows of the RS matrix. Rcgldr (talk) 20:01, 19 October 2011 (UTC)
thread_title:  Berlekamp Massey decoder 

message: *Article statement - Ai(0) is the constant term of Ai. Changed from low order term to constant term. constant term could imply a coefficient that doesn't change during iterations. I would prefer low order term, but the example clarifies what is meant by Ai(0), which should be good enough. Rcgldr (talk) 18:00, 19 October 2011 (UTC)
replies: text: "Low order" isn't a standard mathematical term, AFAIK, but I guess the meaning should be clear. The Ais don't change, anyway.  Bobmath (talk) 19:25, 19 October 2011 (UTC)
replies: text: I did a web search for polynomial lower order term and got quite a few hits. I also see this used for describing binary numbers, the low order bit or low order byte. Also some web pages refer to the coefficients of polynomials as constants, which gets confusing. The wiki article for Polynomial refers to terms of of a polynomial by degree, and calls the last term constant, so either seems ok. I don't want to call it term of zero degree. Rcgldr (talk) 20:41, 19 October 2011 (UTC)
replies: text: Please avoid order, the order of a polynomial (or a group member) is something completely different. Constant term is good and unambiguous. I guess trailing term would be too, though it's not so common. Nageh (talk) 21:11, 19 October 2011 (UTC)
replies: text: In that case constant term seems the best. trailing term or leading term could be confusing since Ai is shown reversed in the example. I show Ai reversed since that's typically how it's implemented in hardware or software. Rcgldr (talk) 21:23, 19 October 2011 (UTC)
replies: text: A friend of mine complained about the usage of constant term so I changed it to constant (least significant) term in attempt to make everyone happy. I have a old handout taken from an ECC book and on page 299, its states Ai ... must be divided by it's low-order coefficient which is why I used that wording in the first place. There's a reference to a book, Error Correction Coding by Clark and Cain (Plenum Press), but I don't have that book. Rcgldr (talk) 00:42, 20 October 2011 (UTC)
thread_title:  Euclidean decoder 

message: The examples in the article use a generator polynomial where the first consecutive root is α :
(X-α) (X-α2) (X-α3) ... (X-αt)
If the first consecutive root of a generator polynomial isn't α, then the method used to calculate Ω(x) in the Euclidean example would need to be modified. I'm not sure if the Forney method would also need to be modified. Methods based on the error equations  Error_locators_and_values should not require any modifications.
A generator polynomial may have a first consecutive root of 1: (X-1) (X-α) ... (X-αt-1) or a generator polynomial may be reciprocal (X-α(N/2)-(t/2)) ... (X-α(N/2)+(t/2)) = 1 Xt + g1 X t-1 + g2 X t-2 + ... + g2 X 2 + g1 X + 1.
Rcgldr (talk) 02:44, 26 October 2011 (UTC)
replies: text: This is addressed in the Forney algorithm article using the parameter c. Also see the BCH code article. Bobmath (talk) 03:41, 26 October 2011 (UTC)
replies: text: Thanks. I was wondering if alternate generator polynomials and the related the c parameter should be noted somewhere on the RS wiki page, but since there's a link to the Forney algorithm, that is probably good enough. Rcgldr (talk) 05:48, 26 October 2011 (UTC)
replies: text:  Isn't a Reed–Solomon code always a narrow-sense BCH code, so c must be one? See BCH code#Special cases. If that's the case, then other values for c (such as 0) don't belong here. Glrx (talk) 21:07, 26 October 2011 (UTC)
replies: text: DAT drives use generator polynomials with c = 0. The ancient floppy tape drives (QIC-40) used a (32,29) code with c = -1 (reciprocal polynomial with 3 parities). Some other computer peripherals use reciprocal polynomials, c = (N/2)-(n/2), N = number of symbols, n = number of parities (N and n are even numbers). These were all considered to be RS codes by the resident ECC experts at the time. The Forney algorithm article already explains how to deal with c ≠ 1, so an RS article reference about this could just link to the Forney article. Rcgldr (talk) 02:00, 27 October 2011 (UTC)

text: I think fcr (first consecutive root) and the logarithm base (often called the generator, but I find it confusing with the generator polynomial) should be addressed in the article since they both are critical parameters to encode/decode RS codes, along with the primitive polynomial, n and k. Lrq3000 (talk) 00:49, 24 June 2015 (UTC)
thread_title:  Alternate Generator Polynomials 

message: From the intro section: where encoding symbols are derived from the coefficients of a polynomial constructed by multiplying p(x) with a cyclic generator polynomial. This gives rise to an efficient decoding algorithm, which was discovered by Elwyn Berlekamp and James Massey, and is known as the Berlekamp–Massey decoding algorithm. Seems the real breakthrough was discovering the relationship between the error locator polynomial and syndromes as explained in the  Peterson_decoder section, where the Berlekamp method is mentioned as an improvement: Peterson (1960) developed a practical decoder based on syndrome decoding. ...  Berlekamp (below) would improve on that decoder. So there's a conflict in the article. Seems like the intro section should be revised. The Euclidean based algorithm is yet another improved method, but not mentioned in the intro section. Rcgldr (talk) 08:19, 1 November 2011 (UTC)
replies: text: The lead section is right, actually. Peterson's decoder does not scale well for larger number of errors. Also, it was only designed for binary BCH codes, originally. It was Gorenstein and Ziegler who extended Peterson's algorithm for the decoding of non-binary BCH/RS codes to what is now known as the Peterson–Gorenstein–Zierler algorithm. So it is the body of the article that primarily needs improvement. When it comes to notable algorithms, Chien search and Forney's algorithm also needs more attention. The Euclidean algorithm is less an improvement rather than an alternative to Berlekamp-Massey, but obviously needs more attention, too. Nageh (talk) 09:15, 1 November 2011 (UTC)
replies: text:  I second Nageh's characterization. The notion of "practical" is a moving target. The RS count-the-subsets decoder was impractical. The PGZ decoder is practical in the sense that it could be implemented, but it has an awkward error location polynomial step that examines several systems of linear equations (matrix ops are O(t3), so PGZ number of errors step is O(t4)?). The hardware to do that for many check symbols would be expensive. In contrast, the BM decoder's error location polynomial is simpler (O(t2)?). Glrx (talk) 17:06, 2 November 2011 (UTC)
replies: text: Now that I've re-read both sections, the issue is "practical" versus "efficient". I think the linear RS method qualifies as "practical", assuming it is/was used in some devices. On page 105 of the cited RS tutorial (1990) 1990019023.pdf is a claim that for 3 (possibly 4) or smaller maximum error cases, an optimized linear method (the math worked out in advance for the determinants, eliminating xors of duplicate terms), would require less hardware than the iterative methods. The real breakthrough would seem to be the discovery of the relationship between the error locator polynomial and the syndromes, which the mentioned RS decoder algorithms (linear, BM, Euclid) are based on. The main exception would be single burst decoders that re-encode the received message and forwards or backwards cycle the re-calculated parities until the most significant half of the parities are zero, in which case the least significant half is the error value. The first section should also include Euclid as well as BM as an efficient algorithm. The Euclid method requires two shift registers of the same size as used by BM's main shift register, but BM needs a "previous" copy of Λ(x). Euclid iterates t=#errors times, while BM iterates N=#syndrome times. Euclid produces Ω(x), but BM and linear method require a second iteration to produce Ω(x). So it's a trade off in size versus speed. Rcgldr (talk) 04:03, 3 November 2011 (UTC)

text: unindent - I changed the title of this discussion section to BM implied to be only efficient algorithm. Perhaps the statement in question could be changed to This gives rise to efficient decoding algorithms (described below). This would avoid having to clarify the pros and cons of each algorithm in the intro section. Rcgldr (talk) 04:16, 3 November 2011 (UTC)
thread_title:  Reed Solmon article intro - Berlekamp Massey implied to be only efficient decoding algorithm. 

message: Quote from the end of the article: However, this method doesn't tell you the number of errors, v.
To determine number of errors with Peterson decoder, assume max error case (# syndromes / 2). If this is grearer than the actual number of errors, the matrix will be redundant and not be invertible (or check the determinant, which will be zero). In this case the procedure is to decrease number of errors by 1, and repeat this process until the actual number of errors (which could be zero) is determined.
Section 4.2.3 of the article should be updated with similar wording to explain how the number of errors can be determined using the Peterson decoder.
Rcgldr (talk) 18:36, 23 January 2013 (UTC)
replies: text: Done. Glrx (talk) 16:42, 24 January 2013 (UTC)
replies: text:  Thanks. Rcgldr (talk) 15:34, 2 February 2013 (UTC)
thread_title:  article section 4.2 - Peterson Decoder - 4.2.3 - Error locator polynomial 

message: The article is written is of a highly technical nature and shows no empathy for a reader of an cyclopedia.  — Preceding unsigned comment added by 130.76.96.111 (talk) 23:10, 1 March 2013 (UTC)
replies: text: Perhaps there should be a comment that one of the external links is for a tutorial, Tutorial on Reed–Solomon Error Correction Coding, which is currently the last external link on the article. Rcgldr (talk) 23:34, 1 March 2013 (UTC)

text: It would be helpful to point to specific parts of the article, argue why you think they are badly written, and, if you can, suggest improvements. Thanks! ylloh (talk) 18:13, 6 March 2013 (UTC)
replies: text: I agree that the article is poorly written.  This is an article written for a specialist, not for an encyclopedia.  An article should be understandable by people who don't already know the subject. But after reading this article, I don't have the faintest idea how this works.12.166.73.35 (talk) 11:23, 12 May 2015 (UTC)
replies: text: Five years later it's still far too complicated for anyone without degree-level mathematics. I suggest starting with the lead and rewriting it so that it does not use any mathematical symbols. 83.104.249.240 (talk) 03:02, 29 April 2018 (UTC)

text: Its fairly complicated and technical, and that's unfortunate - but it seems comparable "math" or "FEC algorithms" articles aren't much better in this regard. Its probably due to quite complicated and unusual nature of underlying math, etc. CS papers describing ReedSolomon aren't very easy to read either and assume reader got background enough to understand some relatively advanced/unusual math and so on.  — Preceding unsigned comment added by 195.140.194.170 (talk) 02:33, 25 May 2022 (UTC)
thread_title:  Isn't this a very badly written article? 

message: Near the top of the article:
"Furthermore, RS codes are suitable as multiple-burst bit-error correcting codes"
Shouldn't that be "multiple-bit burst errors" ?
Or maybe it's right the way it is.
80.221.245.225 (talk) 11:27, 24 July 2013 (UTC)
replies: text: RS codes can handle multiple bursts; the error symbols may be scattered throughout the message. Some ECC codes are for single bursts within a block. Glrx (talk) 20:23, 25 July 2013 (UTC)

text: Those two sentences could be removed, since there's previous text explaining that an RS code can correct up to t/2 symbols. Perhaps that other sentence could include the wording any combination up to t/2 symbols. Rcgldr (talk) 12:40, 19 November 2013 (UTC)
replies: text:  Correcting error bursts is important, and that is what the lede is trying to get across. My memory is dim, but I think Fire codes were used to correct single burst errors on disk drives. RS codes replaced Fire codes because they can correct multiple random and burst errors. Glrx (talk) 01:09, 22 November 2013 (UTC)
replies: text:  My issue is that the term bursts is typcially bit oriented, while RS codes are symbol oriented. Perhaps the article statement could be changed to multiple burst / multiple bit error correcting code. It doesn't make it clear that a n+2 bit burst could affect 3 n bit symbols, or that interleaving could be used to reduce the impact of a multi-bit burst error. Rcgldr (talk) 03:37, 22 November 2013 (UTC)
thread_title:  Trivial typo, not sure but anyway I'm afraid to edit article page11:27, 24 July 2013 (UTC)[[Special:Contributions/80.221.245.225|80.221.245.225]] ([[User talk:80.221.245.225|talk]]) 

message: So the singleton bound says delta + R ≤ 1. But if delta = 1 - k/n + 1/n, and R = k/n, then the formula reads: 1 + 1/n ≤ 1, which is only valid if n < 0. That doesn't seem right? 194.39.218.10 (talk) 06:28, 30 September 2013 (UTC)
thread_title:  Singleton bound? 

message: I discuss it on my blog. Am I wrong? Potential conflict-of-interest disclosure, I used to work at MIT Lincoln Laboratory.  — Preceding unsigned comment added by Yanazendo (talk • contribs) 05:52, 27 November 2014 (UTC)
thread_title:  The page has a bug 

message: Hi,
I think that the link to the "function table" page (in the "Basis" section) is pointing to an unintended place.
I'm not sure, so if I'm wrong, please ignore / delete this comment.
134.191.232.70 (talk) 09:47, 18 February 2016 (UTC)
replies: text: I deleted the WL and tagged the section as unreferenced. I'm unfamiliar with "function table" terminology, but I don't have the time right now to chase it. Glrx (talk) 01:39, 20 February 2016 (UTC)
thread_title:  Wrong link? "function table" 

message: I removed this section since it basically described the original impractical decoder, which is now described as theoretical decoding procedure in a separate section. If a basis section is wanted, it should provide a simple description of the BCH like implementation of RS codes, but I'm not sure if a simple description is possible. Rcgldr (talk) 09:13, 30 March 2016 (UTC)
replies: text: I approve of this decision ylloh (talk) 19:59, 30 March 2016 (UTC)
thread_title:  Basis 

message: * Changed the name of this section to duality of the two views. I'm not aware of any practical decoder that does not require the usage of a known fixed generator polynomial, usually of degree n-k, and views a codeword as a set of coefficients. Once a codeword is created, then a polynomial that views a codeword as a sequence of values can be created using an inverse Fourier transform, but that polynomial varies depending on the codeword, making it unknown to the decoder, which creates an impractical situation where the decoder has to try sub-sets of n values taken k at a time to find the most popular polynomial. Note that although the most popular polynomial method was mentioned in the original article by Reed and Solomon, a pratical decoder using a fixed generator polynomial of degree n-k for encoding and decoding was described by by Daniel Gorenstein and Neal Zierler as early as January 1960 Reed%E2%80%93Solomon_error_correction#History. Rcgldr (talk) 03:16, 4 April 2016 (UTC)
replies: text: I'm not sure what you are proposing here. The two views result in the same set of codewords, which is what is meant by "equivalence". It does not mean that the encoding functions are identical. Regarding the historical details, if you have more correct information on them, feel free to clarify. ylloh (talk) 19:59, 30 March 2016 (UTC)
replies: text: The prior sections in constructions describe different encoding schemes based on the view of the codeword, so the codewords generated using either of the two encoding schemes described in the codeword viewed as a sequence of values are not the same as the codewords generated using the encoding scheme described in the codeword viewed as a sequence of coefficients. The issue is that those two sections that describe the different encoding scheme(s) used for each view is followed by a section that states the two views are equivalent. It should be clarified that codewords produced as described in the prior sections are not the same. Rcgldr (talk) 21:58, 30 March 2016 (UTC)

text: I haven't been able to find the historical details. At some point in time, the RS encoding scheme was changed to use a generator polynomial, which is required for any of the practical decoders (Peterson, Berlekamp - Massey, Sugiyama) to work. The only related dates I could find are 1960 for the Peterson decoder for BCH code (for a 2 bit correction scheme, so probably before the change was made), and 1969 for the Berlekamp - Massey decoder for RS code (after the change was made). Rcgldr (talk) 21:58, 30 March 2016 (UTC)
replies: text: I created a separate section for talk about the history below. Rcgldr (talk) 00:30, 4 April 2016 (UTC)
thread_title:  Duality of the two views 

message: Credit and gratitude goes to Dave Forney for helping me find early references to the work done on RS codes. I updated the history section based on his efforts. Rcgldr (talk) 02:08, 2 April 2016 (UTC)
thread_title:  History 

message: This section was previously named decoding in frequency domain and it started off with the statement The above algorithms are presented in the time domain. However, time domain and frequency domain are concepts specific to the Fourier transform, but in this case, a discrete Fourier transform is being used to map a codeword into a set of syndromes (it's the same calculation).
This section previously included the statement By definition, a code word of a Reed–Solomon code is given by the sequence of values ... , which conflicted with the section titled The BCH view: The codeword as a sequence of coefficients, which is used to describe an encoder and three decoders that view a codeword as a sequence of coefficients.
The previous version did not include a clear explanation of how this procedure works.
A discrete Fourier transform maps a codeword into a set of n syndromes S_0, S_1, ... , S_{n-1}. These are the same syndromes as described in the other practical decoders. For the syndromes S_1, ... , S_{t}, the original codeword terms sum up to zero (because the generator polynomial has roots \alpha^1, ..., \alpha^t), so those syndromes effectively become a mapping of the error terms. Those syndromes S_1, ... , S_{t} are used to generate an error locator polynomial, in the same manner as any of the practical decoder methods. The rest of the n terms can be converted into a set of error values using the relationship between the error locator polynomial and syndromes. This allows the mapped codeword to be corrected, and mapped back using an inverse transform to produce a corrected codeword.
This method works, but I don't see what the advantage is. Each transform requires mapping n terms, as opposed to mapping t terms to generate syndromes. Generation of the error locator polynomial is the same. Generation of error values requires calculating n-t mapped error values, as opposed to calculating v non-mapped error values (using a method like Forney). Rcgldr (talk) 09:01, 6 April 2016 (UTC)
thread_title:  Decoder using discrete Fourier transform 

message: In the "The BCH view: The codeword as a sequence of coefficients" section of the article, near the end of this section it says:
"The receiver can evaluate r(a) at the roots of g(a) and build a system of equations that eliminates s(a) and identifies which coefficients of r(a) are in error, and the magnitude of each coefficient's error.
If the system of equations can be solved, then the receiver knows how to modify the received word r(a) to get the most likely codeword s(a) that was sent."
What is the process for "building a system of equations"? I was going to use the info provided in this wiki article to build an implementation of Reed Solomon in this software I'm writing. However, I'm only able to implement the encoding part, not the decoding part, because of the lack of information in this wiki article related to actually building and solving that system of equations it mentions, and construct a fixed polynomial based on it. And that's the problem. It only mentions the process It doesn't describe it. How can I implement a process, without knowledge of how that process works? Benhut1 (talk) 18:29, 2 August 2016 (UTC)
replies: text: The process for building a system of equations is described in Reed%E2%80%93Solomon_error_correction#Peterson.E2.80.93Gorenstein.E2.80.93Zierler_decoder . As noted, solving the system of equations using this classic approach involves inverting a matrix or the equivalent. The Berlekamp-Massey or Euclidean type decoders avoid having to invert a matrix. Rcgldr (talk) 00:19, 9 August 2016 (UTC)
thread_title:  Need more explanation on the decoding and error correction process 

message: The em dash in the article title breaks many auto-linkers; I think using a normal dash (-) would be much better.
2602:252:D79:2010:EC67:F33E:5BDE:D7AB (talk) 19:21, 17 December 2016 (UTC)
replies: text: The house style is to use an endash (– and not an emdash &emdash;). See MOS:DASH. There is also an article with an ordinary hyphen (Reed-Solomon error correction) that redirects to this article (Reed–Solomon error correction), so a link using a hyphen rather than an endash will get to the right place. Glrx (talk) 20:33, 23 December 2016 (UTC)
thread_title:  Remove em dash from title 

message: Hello fellow Wikipedians,
I have just modified 2 external links on Reed–Solomon error correction. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
*Added archive https://web.archive.org/web/20140630172526/http://web.stanford.edu/class/ee387/handouts/notes7.pdf to http://www.stanford.edu/class/ee387/handouts/notes7.pdf
*Added archive https://web.archive.org/web/20130313033107/http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-451-principles-of-digital-communication-ii-spring-2005/lecture-notes/lecture-10-reed-solomon-codes/ to http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-451-principles-of-digital-communication-ii-spring-2005/lecture-notes/lecture-10-reed-solomon-codes/
When you have finished reviewing my changes, you may follow the instructions on the template below to fix any issues with the URLs.
Cheers.—InternetArchiveBot (Report bug) 23:31, 26 July 2017 (UTC)
thread_title:  External links modified 

message: There are practical (polynomial time) decoders based on Reed Solomon original view of a codeword as sequence of function values that the RS article previously did not mention. I created a new section for these decoders, moving the theoretical "most popular" algorithm to this section as well as adding descriptions of two practical decoders. Rcgldr (talk) 01:39, 13 January 2018 (UTC)
thread_title:  Original view decoders 

message: There are also "list" or "soft" decoders first documented by Madhu Sudan back in 1996 which I referenced in the history section. I've seen references as recent as 2012 in efforts to improve the performance of such decoders. "list" refers to the fact that a list of potential polynomials that go through at least n-e points of (a_i, b_i) where a_i represents the set of fixed values and b_i represents the received message values. Note this goes beyond the classical (n-k)/2 limit for error correction. "soft" is used to distinguish between list type decoders versus classical "hard" decoders which generate a single polynomial or detect an uncorrectable error. Rcgldr (talk) 01:39, 13 January 2018 (UTC)
thread_title:  List or soft decoders 

message: For Reed Solomon using the original view, the restriction is n ≤ q, where n is the code word size, and q the number of elements in a field. In the case of n = q, the values 0 to q-1 are input values and the message based polynomial is used to calculate the n value code word, c0 to cn-1. Rcgldr (talk) 10:10, 21 January 2018 (UTC)
thread_title:  Constructions, n &le; q versus n &lt; q 

message: The paragraph that starts with "For practical uses of Reed–Solomon codes ..." needs an update, since there are practical original view decoders such as Berlekamp Welch, Gao, ... ,  not previously included in the article. "symbols per block" should be "symbols per codeword". For an 8 bit symbol field, original view RS code can use up to 256 symbols per codeword, and BCH view RS code up to 255 symbols per codeword. Although a cyclic code would require exactly 255 symbols and could be shortened by replacing the missing leading symbols with zeroes, I'm not sure if this is a detail needed at this point in the article. Typical BCH view encoders and decoders work with shortened codewords without special modifications, other than a decoder that generates a locator that is outside the range of a shortened codeword would report that an uncorrectable error has been detected. Rcgldr (talk) 17:38, 24 January 2018 (UTC)
thread_title:  Properties 

message: This section should be moved to after the properties section, since it references concepts introduced in the properties section. Rcgldr (talk) 18:03, 24 January 2018 (UTC)
thread_title:  Remarks 

message: This section is mis-leading as it falsely implies that Fourier transform or inverse Fourier transform could be used to map between the original view and the BCH view. Rcgldr (talk) 22:32, 26 January 2018 (UTC)
thread_title:  Duality of the two views - discrete Fourier transform - should be deleted 

message: This section mentions finding the most popular polynomial by checking all subsets of n elements taken k at a time, and notes it's impractical for a case like RS(255,249), a 3 error handling code that would require 359 billion subsets. However, an alternative would be to look for all subsets of n elements taken n - e at at time, where e is the maximum number of errors the code handles. Using the example, the number of subsets would be comb(255,252), still large at 2 million, but far smaller than the 359 billion. With this approach, if there are e errors, there should be only one sub-set that produces a polynomial of degree < k. The rest of the sub-sets would include one of the errors, and I don't think it's possible for a subset with an error term to correspond to a polynomial of degree < k. I don't know  if Reed Solomon original concept for a decoder included this alternative, or if it would always work (assuming total number of errors ≤ e. Using the RS(7,3) examples, there would be 35 subsets of 3 elements, or 21 subsets of 5 elements. Rcgldr (talk) 09:02, 12 March 2018 (UTC)
thread_title:  RS original view theoretical decoder 

message: Reed Solomon codes can be based on either the original view, or the BCH view. The article previously focused on the BCH view, since it didn't include any practical original view decoders (these are slower than BCH view decoders, but still practical). I've since added the practical original decoders to the article, and also cleaned up the article to cover both original view and BCH view. For some reason, the more recent developments have been based on the original view, including list decoders, but most current implementations of Reed Solomon codes are BCH view. The original view decoders are slower, the easiest case to compare are Sugiyama's extended Euclid algorithm for BCH view and Gao's extended Euclid algorithm for original view. The Gao algorithm is about (n/(n-k))^2 slower than the Sugiyama algorithm, and it also need space to hold n+2 elements as opposed to (n-k)+2 elements during the process. Rcgldr (talk) 20:02, 15 March 2018 (UTC)
replies: text: The lead now mentions BCH view is most common. I've since found that list decoders provide a list of possible original view polynomials that could correct otherwise uncorrectable data, but don't have a means of specifying which polynomial in a list would be the most likely polynomial. There are cases where a list decoder only finds a single polynomial of degree less than k, but it's not a guarantee that it is the correct polynomial. Rcgldr (talk) 14:53, 26 May 2018 (UTC)
thread_title:  Article clean up due to including both original view and BCH view decoders 

message: It's a mathematical subject and mathematics has its own language but I feel that the lead should at least be understandable by any intelligent reader. However, it contains this: "or correct up to ⌊t/2⌋ symbols" without any explanation of the symbols used. I don't know what it means and I can't even enter it into Google to find out. Could someone please rewrite it in English? 83.104.249.240 (talk) 02:53, 29 April 2018 (UTC)
replies: text: I'll take a look at this later. Another issue in the lead is that original view Reed Solomon code is not cyclic (except for the case where the set of evaluation points are successive powers of α). The lead should define symbols as being values in a block of data treated as elements of a finite field. Rcgldr (talk) 17:55, 29 April 2018 (UTC)
replies: text: I updated the lead section to define the terminology used in the article. Rcgldr (talk) 14:53, 26 May 2018 (UTC)
thread_title:  Lead is too complicated 

message: The current article mentions Raid 6 just once via a link. There is mention of erasure (only) codes, but no example, such as Jerasure. Jerasure appears to be used for some forms of data storage such as cloud base sites. Doing a web search, typical implementations involve a matrix similar to a systematic original view encoding matrix:   original view systematic encoding, in this case, using a modified Vandermonde matrix. The actual encoding matrix depends on the implementation. Decoding of data for a RS(n,k) code takes k rows of the encoding matrix corresponding to the first k non-erased rows of data and parity, inverts it, then uses the first e rows of the inverted matrix to do a e by k matrix multiply to regenerate the erased data, where e is the number of erasures in data. Any erasures in parity rows are regenerated by re-encoding once any erased data has been regenerated. If the encoding matrix is Raid 6 or an extension of Raid 6, such as 3 parity Raid 6, then XOR can be used for single data erasure instead of k by k matrix inversion followed by matrix multiply of 1 by k matrix.). Note that Raid 6 encoding generates syndromes instead of BCH view parities, so Raid 6 encoded columns are not true codewords, but instead data followed by syndromes. Rcgldr (talk) 21:15, 31 August 2020 (UTC)
thread_title:  Add a section for Raid 6 and Jerasure. 

message: In the second paragraph of the page, one can read that it uses "t = n -k". In this paragraph, neither n nor k are defined. the same paragraph introduces symbol "b" with no reference or explanation and "Lt / 2" where "L" is some unexplained symbol.
Therefore, readers must be experts to already know what theses symbols usually refer to.
Shouldn't there be at least a link to a page, or a direct explanation for each of these symbols ?
86.253.66.57 (talk) 06:18, 20 November 2020 (UTC)
thread_title:  symbols are used before they are defined 

message: Jane Kelly tisoy daan  — Preceding unsigned comment added by 183.171.127.231 (talk) 12:36, 24 September 2022 (UTC)
thread_title:  Hack face book 

message: Lots of use of (a, b) shorthand to describe some parameters of the code, but the meaning of this shorthand is never explained (and is the one thing I came here to find out.) What is RS(x, y)? 149.32.224.51 (talk) 19:46, 9 August 2023 (UTC)
thread_title:  Nomenclature never described (x, y)