GNU Radio Manual and C++ API Reference  3.10.9.1
The Free & Open Software Radio Ecosystem
core_algorithms.h
Go to the documentation of this file.
1 /* -*- c++ -*- */
2 /*
3  * Copyright 2004,2012 Free Software Foundation, Inc.
4  *
5  * This file is part of GNU Radio
6  *
7  * SPDX-License-Identifier: GPL-3.0-or-later
8  *
9  */
10 
11 #ifndef INCLUDED_CORE_ALGORITHMS_H
12 #define INCLUDED_CORE_ALGORITHMS_H
13 
15 #include <gnuradio/trellis/fsm.h>
17 #include <cmath>
18 #include <vector>
19 
20 namespace gr {
21 namespace trellis {
22 
23 float min(float a, float b);
24 float min_star(float a, float b);
25 
26 template <class T>
27 void viterbi_algorithm(int I,
28  int S,
29  int O,
30  const std::vector<int>& NS,
31  const std::vector<int>& OS,
32  const std::vector<std::vector<int>>& PS,
33  const std::vector<std::vector<int>>& PI,
34  int K,
35  int S0,
36  int SK,
37  const float* in,
38  T* out);
39 
40 template <class Ti, class To>
42  int S,
43  int O,
44  const std::vector<int>& NS,
45  const std::vector<int>& OS,
46  const std::vector<std::vector<int>>& PS,
47  const std::vector<std::vector<int>>& PI,
48  int K,
49  int S0,
50  int SK,
51  int D,
52  const std::vector<Ti>& TABLE,
54  const Ti* in,
55  To* out);
56 
57 void siso_algorithm(int I,
58  int S,
59  int O,
60  const std::vector<int>& NS,
61  const std::vector<int>& OS,
62  const std::vector<std::vector<int>>& PS,
63  const std::vector<std::vector<int>>& PI,
64  int K,
65  int S0,
66  int SK,
67  bool POSTI,
68  bool POSTO,
69  float (*p2mymin)(float, float),
70  const float* priori,
71  const float* prioro,
72  float* post);
73 
74 template <class T>
76  int S,
77  int O,
78  const std::vector<int>& NS,
79  const std::vector<int>& OS,
80  const std::vector<std::vector<int>>& PS,
81  const std::vector<std::vector<int>>& PI,
82  int K,
83  int S0,
84  int SK,
85  bool POSTI,
86  bool POSTO,
87  float (*p2mymin)(float, float),
88  int D,
89  const std::vector<T>& TABLE,
91  const float* priori,
92  const T* observations,
93  float* post);
94 
95 template <class T>
96 void sccc_decoder(const fsm& FSMo,
97  int STo0,
98  int SToK,
99  const fsm& FSMi,
100  int STi0,
101  int STiK,
102  const interleaver& INTERLEAVER,
103  int blocklength,
104  int iterations,
105  float (*p2mymin)(float, float),
106  const float* iprioro,
107  T* data);
108 
109 template <class Ti, class To>
110 void sccc_decoder_combined(const fsm& FSMo,
111  int STo0,
112  int SToK,
113  const fsm& FSMi,
114  int STi0,
115  int STiK,
116  const interleaver& INTERLEAVER,
117  int blocklength,
118  int iterations,
119  float (*p2mymin)(float, float),
120  int D,
121  const std::vector<Ti>& TABLE,
122  digital::trellis_metric_type_t METRIC_TYPE,
123  float scaling,
124  const Ti* observations,
125  To* data);
126 
127 template <class T>
128 void pccc_decoder(const fsm& FSM1,
129  int ST10,
130  int ST1K,
131  const fsm& FSM2,
132  int ST20,
133  int ST2K,
134  const interleaver& INTERLEAVER,
135  int blocklength,
136  int iterations,
137  float (*p2mymin)(float, float),
138  const float* cprioro,
139  T* data);
140 
141 template <class Ti, class To>
142 void pccc_decoder_combined(const fsm& FSM1,
143  int ST10,
144  int ST1K,
145  const fsm& FSM2,
146  int ST20,
147  int ST2K,
148  const interleaver& INTERLEAVER,
149  int blocklength,
150  int iterations,
151  float (*p2mymin)(float, float),
152  int D,
153  const std::vector<Ti>& TABLE,
154  digital::trellis_metric_type_t METRIC_TYPE,
155  float scaling,
156  const Ti* observations,
157  To* data);
158 
159 } /* namespace trellis */
160 } /* namespace gr */
161 
162 #endif /* INCLUDED_CORE_ALGORITHMS_H */
#define D(...)
Definition: basic_block_pydoc_template.h:10
Finite State Machine Specification class.
Definition: fsm.h:33
INTERLEAVER class.
Definition: interleaver.h:26
trellis_metric_type_t
Definition: metric_type.h:17
void siso_algorithm(int I, int S, int O, const std::vector< int > &NS, const std::vector< int > &OS, const std::vector< std::vector< int >> &PS, const std::vector< std::vector< int >> &PI, int K, int S0, int SK, bool POSTI, bool POSTO, float(*p2mymin)(float, float), const float *priori, const float *prioro, float *post)
void sccc_decoder_combined(const fsm &FSMo, int STo0, int SToK, const fsm &FSMi, int STi0, int STiK, const interleaver &INTERLEAVER, int blocklength, int iterations, float(*p2mymin)(float, float), int D, const std::vector< Ti > &TABLE, digital::trellis_metric_type_t METRIC_TYPE, float scaling, const Ti *observations, To *data)
float min_star(float a, float b)
void pccc_decoder(const fsm &FSM1, int ST10, int ST1K, const fsm &FSM2, int ST20, int ST2K, const interleaver &INTERLEAVER, int blocklength, int iterations, float(*p2mymin)(float, float), const float *cprioro, T *data)
void pccc_decoder_combined(const fsm &FSM1, int ST10, int ST1K, const fsm &FSM2, int ST20, int ST2K, const interleaver &INTERLEAVER, int blocklength, int iterations, float(*p2mymin)(float, float), int D, const std::vector< Ti > &TABLE, digital::trellis_metric_type_t METRIC_TYPE, float scaling, const Ti *observations, To *data)
void siso_algorithm_combined(int I, int S, int O, const std::vector< int > &NS, const std::vector< int > &OS, const std::vector< std::vector< int >> &PS, const std::vector< std::vector< int >> &PI, int K, int S0, int SK, bool POSTI, bool POSTO, float(*p2mymin)(float, float), int D, const std::vector< T > &TABLE, digital::trellis_metric_type_t TYPE, const float *priori, const T *observations, float *post)
float min(float a, float b)
void sccc_decoder(const fsm &FSMo, int STo0, int SToK, const fsm &FSMi, int STi0, int STiK, const interleaver &INTERLEAVER, int blocklength, int iterations, float(*p2mymin)(float, float), const float *iprioro, T *data)
void viterbi_algorithm(int I, int S, int O, const std::vector< int > &NS, const std::vector< int > &OS, const std::vector< std::vector< int >> &PS, const std::vector< std::vector< int >> &PI, int K, int S0, int SK, const float *in, T *out)
void viterbi_algorithm_combined(int I, int S, int O, const std::vector< int > &NS, const std::vector< int > &OS, const std::vector< std::vector< int >> &PS, const std::vector< std::vector< int >> &PI, int K, int S0, int SK, int D, const std::vector< Ti > &TABLE, digital::trellis_metric_type_t TYPE, const Ti *in, To *out)
GNU Radio logging wrapper.
Definition: basic_block.h:29
#define S(x)
Definition: rpcserver_thrift.h:24