00001 00030 #ifndef REEDSOLOMON_H 00031 #define REEDSOLOMON_H 00032 00033 #include <itpp/base/vec.h> 00034 #include <itpp/comm/galois.h> 00035 #include <itpp/comm/channel_code.h> 00036 00037 00038 namespace itpp { 00039 00040 //---------------------- Reed-Solomon -------------------------------------- 00041 00051 class Reed_Solomon : public Channel_Code { 00052 public: 00054 Reed_Solomon(int in_m, int in_t, bool sys = false); 00056 virtual ~Reed_Solomon(){ } 00057 00059 virtual void encode(const bvec &uncoded_bits, bvec &coded_bits); 00061 virtual bvec encode(const bvec &uncoded_bits); 00062 00064 virtual void decode(const bvec &coded_bits, bvec &decoded_bits); 00066 virtual bvec decode(const bvec &coded_bits); 00067 00068 // Soft-decision decoding is not implemented 00069 virtual void decode(const vec &received_signal, bvec &output); 00070 virtual bvec decode(const vec &received_signal); 00071 00073 virtual double get_rate() const { return static_cast<double>(k) / n; } 00074 00075 protected: 00078 int m, t, k, n, q; 00080 00081 GFX g; 00083 const bool systematic; 00084 }; 00085 00086 } // namespace itpp 00087 00088 #endif // #ifndef REEDSOLOMON_H
Generated on Sun Sep 14 18:52:27 2008 for IT++ by Doxygen 1.5.6