127 int constraint_length);
140 virtual void encode(
const bvec &input, bvec &output);
220 virtual void decode(
const bvec &coded_bits, bvec &decoded_bits);
221 virtual bvec
decode(
const bvec &coded_bits);
225 virtual void decode(
const vec &received_signal, bvec &output);
226 virtual bvec
decode(
const vec &received_signal) {
228 decode(received_signal, output);
240 virtual void decode_tail(
const vec &received_signal, bvec &output);
257 virtual void decode_tailbite(
const vec &received_signal, bvec &output);
267 virtual void decode_trunc(
const vec &received_signal, bvec &output);
283 "Convolutional_Code::set_start_state(): Invalid start state");
299 it_error_if(length <
K,
"Convolutional_Code::set_truncation_length(): "
300 "Truncation length shorter than K");
320 bool inverse_tail(
const bvec coded_sequence, bvec &input);
368 const int Cdfree = 1000000,
const bool test_catastrophic =
false);
373 return ((instate >> 1) | (input << (
m - 1)));
377 return (((state << 1) | input) & ((1 <<
m) - 1));
385 int weight(
const int state,
const int input);
387 void weight(
const int state,
int &w0,
int &w1);
397 void output_reverse(
const int state, bvec &zero_output, bvec &one_output);
399 void output_reverse(
const int state,
int &zero_output,
int &one_output);
402 double &zero_metric,
double &one_metric);
404 void calc_metric(
const vec &rx_codeword, vec &delta_metrics);
406 int get_input(
const int state) {
return (state >> (
m - 1)); }
475 #endif // #ifndef CONVCODE_H