![]() |
rssoft
0.0.0
Reed-Solomon codes library with soft decision decoding
|
Does the Reed-Solomon encoding of a message. his is the genuine, straightforward, non-systematic encoding that takes message symbols to build the successive coefficients of the encoding polynomial. Then this polynomial is evaluated at the evaluation points to make the codeword. More...
#include <RS_Encoding.h>

Public Member Functions | |
| RS_Encoding (const gf::GFq &_gf, unsigned int k, const EvaluationValues &_evaluation_values) | |
| ~RS_Encoding () | |
| void | run (const std::vector< gf::GFq_Symbol > &message, std::vector< gf::GFq_Symbol > &codeword) const |
Protected Attributes | |
| const gf::GFq & | gf |
| Galois Field in use. | |
| unsigned int | k |
| k as in RS(n,k). n is the "size" of the Galois Field | |
| const EvaluationValues & | evaluation_values |
| Evaluation X,Y values of the code. | |
Does the Reed-Solomon encoding of a message. his is the genuine, straightforward, non-systematic encoding that takes message symbols to build the successive coefficients of the encoding polynomial. Then this polynomial is evaluated at the evaluation points to make the codeword.
| rssoft::RS_Encoding::RS_Encoding | ( | const gf::GFq & | _gf, |
| unsigned int | k, | ||
| const EvaluationValues & | _evaluation_values | ||
| ) |
Constructor
| _gf | Galois Field in use |
| _k | k as in RS(n,k). n is the "size" of the Galois Field |
| _evaluation_values | Evaluation X,Y values of the code |
:
gf(_gf),
k(_k),
evaluation_values(_evaluation_values)
{}
Destructor. Nothing special.
{}
| void rssoft::RS_Encoding::run | ( | const std::vector< gf::GFq_Symbol > & | message, |
| std::vector< gf::GFq_Symbol > & | codeword | ||
| ) | const |
Runs an encoding
| message | Message symbols to be encoded |
| codeword | RS codeword in elements of GFq that will be built |
{
if (message.size() != k)
{
throw RSSoft_Exception("Invalid message length");
}
else
{
std::vector<gf::GFq_Symbol>::const_iterator s_it = message.begin();
std::vector<gf::GFq_Element> encoding_coefficients;
for(; s_it != message.end(); ++s_it)
{
encoding_coefficients.push_back(gf::GFq_Element(gf, *s_it));
}
gf::GFq_Polynomial encoding_polynomial(gf, encoding_coefficients);
codeword.clear();
const std::vector<gf::GFq_Element>& evaluation_points = evaluation_values.get_evaluation_points();
std::vector<gf::GFq_Element>::const_iterator evp_it = evaluation_points.begin();
for (; evp_it != evaluation_points.end(); ++evp_it)
{
codeword.push_back(encoding_polynomial(*evp_it).poly());
}
}
}

const EvaluationValues& rssoft::RS_Encoding::evaluation_values [protected] |
Evaluation X,Y values of the code.
const gf::GFq& rssoft::RS_Encoding::gf [protected] |
Galois Field in use.
unsigned int rssoft::RS_Encoding::k [protected] |
k as in RS(n,k). n is the "size" of the Galois Field