|
|
| 74 |
return ber; |
74 |
return ber; |
| 75 |
} |
75 |
} |
| 76 |
double |
76 |
double |
| 77 |
NistErrorRateModel::GetFecBpskBer (double snr, double nbits, |
77 |
NistErrorRateModel::GetFecBpskBer (double snr, uint32_t nbits, |
| 78 |
uint32_t bValue) const |
78 |
uint32_t bValue) const |
| 79 |
{ |
79 |
{ |
| 80 |
double ber = GetBpskBer (snr); |
80 |
double ber = GetBpskBer (snr); |
|
|
| 88 |
return pms; |
88 |
return pms; |
| 89 |
} |
89 |
} |
| 90 |
double |
90 |
double |
| 91 |
NistErrorRateModel::GetFecQpskBer (double snr, double nbits, |
91 |
NistErrorRateModel::GetFecQpskBer (double snr, uint32_t nbits, |
| 92 |
uint32_t bValue) const |
92 |
uint32_t bValue) const |
| 93 |
{ |
93 |
{ |
| 94 |
double ber = GetQpskBer (snr); |
94 |
double ber = GetQpskBer (snr); |
|
|
| 109 |
if (bValue == 1) |
109 |
if (bValue == 1) |
| 110 |
{ |
110 |
{ |
| 111 |
// code rate 1/2, use table 3.1.1 |
111 |
// code rate 1/2, use table 3.1.1 |
| 112 |
pe = 0.5 * ( 36.0 * pow (D, 10.0) |
112 |
pe = 0.5 * ( 36.0 * pow (D, 10) |
| 113 |
+ 211.0 * pow (D, 12.0) |
113 |
+ 211.0 * pow (D, 12) |
| 114 |
+ 1404.0 * pow (D, 14.0) |
114 |
+ 1404.0 * pow (D, 14) |
| 115 |
+ 11633.0 * pow (D, 16.0) |
115 |
+ 11633.0 * pow (D, 16) |
| 116 |
+ 77433.0 * pow (D, 18.0) |
116 |
+ 77433.0 * pow (D, 18) |
| 117 |
+ 502690.0 * pow (D, 20.0) |
117 |
+ 502690.0 * pow (D, 20) |
| 118 |
+ 3322763.0 * pow (D, 22.0) |
118 |
+ 3322763.0 * pow (D, 22) |
| 119 |
+ 21292910.0 * pow (D, 24.0) |
119 |
+ 21292910.0 * pow (D, 24) |
| 120 |
+ 134365911.0 * pow (D, 26.0) |
120 |
+ 134365911.0 * pow (D, 26) |
| 121 |
); |
121 |
); |
| 122 |
} |
122 |
} |
| 123 |
else if (bValue == 2) |
123 |
else if (bValue == 2) |
| 124 |
{ |
124 |
{ |
| 125 |
// code rate 2/3, use table 3.1.2 |
125 |
// code rate 2/3, use table 3.1.2 |
| 126 |
pe = 1.0 / (2.0 * bValue) * |
126 |
pe = 1.0 / (2.0 * bValue) * |
| 127 |
( 3.0 * pow (D, 6.0) |
127 |
( 3.0 * pow (D, 6) |
| 128 |
+ 70.0 * pow (D, 7.0) |
128 |
+ 70.0 * pow (D, 7) |
| 129 |
+ 285.0 * pow (D, 8.0) |
129 |
+ 285.0 * pow (D, 8) |
| 130 |
+ 1276.0 * pow (D, 9.0) |
130 |
+ 1276.0 * pow (D, 9) |
| 131 |
+ 6160.0 * pow (D, 10.0) |
131 |
+ 6160.0 * pow (D, 10) |
| 132 |
+ 27128.0 * pow (D, 11.0) |
132 |
+ 27128.0 * pow (D, 11) |
| 133 |
+ 117019.0 * pow (D, 12.0) |
133 |
+ 117019.0 * pow (D, 12) |
| 134 |
+ 498860.0 * pow (D, 13.0) |
134 |
+ 498860.0 * pow (D, 13) |
| 135 |
+ 2103891.0 * pow (D, 14.0) |
135 |
+ 2103891.0 * pow (D, 14) |
| 136 |
+ 8784123.0 * pow (D, 15.0) |
136 |
+ 8784123.0 * pow (D, 15) |
| 137 |
); |
137 |
); |
| 138 |
} |
138 |
} |
| 139 |
else if (bValue == 3) |
139 |
else if (bValue == 3) |
| 140 |
{ |
140 |
{ |
| 141 |
// code rate 3/4, use table 3.1.2 |
141 |
// code rate 3/4, use table 3.1.2 |
| 142 |
pe = 1.0 / (2.0 * bValue) * |
142 |
pe = 1.0 / (2.0 * bValue) * |
| 143 |
( 42.0 * pow (D, 5.0) |
143 |
( 42.0 * pow (D, 5) |
| 144 |
+ 201.0 * pow (D, 6.0) |
144 |
+ 201.0 * pow (D, 6) |
| 145 |
+ 1492.0 * pow (D, 7.0) |
145 |
+ 1492.0 * pow (D, 7) |
| 146 |
+ 10469.0 * pow (D, 8.0) |
146 |
+ 10469.0 * pow (D, 8) |
| 147 |
+ 62935.0 * pow (D, 9.0) |
147 |
+ 62935.0 * pow (D, 9) |
| 148 |
+ 379644.0 * pow (D, 10.0) |
148 |
+ 379644.0 * pow (D, 10) |
| 149 |
+ 2253373.0 * pow (D, 11.0) |
149 |
+ 2253373.0 * pow (D, 11) |
| 150 |
+ 13073811.0 * pow (D, 12.0) |
150 |
+ 13073811.0 * pow (D, 12) |
| 151 |
+ 75152755.0 * pow (D, 13.0) |
151 |
+ 75152755.0 * pow (D, 13) |
| 152 |
+ 428005675.0 * pow (D, 14.0) |
152 |
+ 428005675.0 * pow (D, 14) |
| 153 |
); |
153 |
); |
| 154 |
} |
154 |
} |
| 155 |
else |
155 |
else |