| 212 | |
| 213 | template<typename B, typename Q> |
| 214 | module::Decoder_SISO<B, Q>* |
| 215 | Decoder_LDPC ::build_siso(const tools::Sparse_matrix& H, |
| 216 | const std::vector<unsigned>& info_bits_pos, |
| 217 | module::Encoder<B>* /*encoder*/) const |
| 218 | { |
| 219 | if (this->type == "BP_FLOODING" && this->simd_strategy.empty()) |
| 220 | { |
| 221 | const auto max_CN_degree = (unsigned int)H.get_cols_max_degree(); |
| 222 | |
| 223 | if (this->implem == "MS") |
| 224 | return new module::Decoder_LDPC_BP_flooding<B, Q, tools::Update_rule_MS<Q>>(this->K, |
| 225 | this->N_cw, |
| 226 | this->n_ite, |
| 227 | H, |
| 228 | info_bits_pos, |
| 229 | tools::Update_rule_MS<Q>(), |
| 230 | this->enable_syndrome, |
| 231 | this->syndrome_depth); |
| 232 | if (this->implem == "OMS") |
| 233 | return new module::Decoder_LDPC_BP_flooding<B, Q, tools::Update_rule_OMS<Q>>( |
| 234 | this->K, |
| 235 | this->N_cw, |
| 236 | this->n_ite, |
| 237 | H, |
| 238 | info_bits_pos, |
| 239 | tools::Update_rule_OMS<Q>((Q)this->offset), |
| 240 | this->enable_syndrome, |
| 241 | this->syndrome_depth); |
| 242 | if (this->implem == "NMS") |
| 243 | return new module::Decoder_LDPC_BP_flooding<B, Q, tools::Update_rule_NMS<Q>>( |
| 244 | this->K, |
| 245 | this->N_cw, |
| 246 | this->n_ite, |
| 247 | H, |
| 248 | info_bits_pos, |
| 249 | tools::Update_rule_NMS<Q>(this->norm_factor), |
| 250 | this->enable_syndrome, |
| 251 | this->syndrome_depth); |
| 252 | if (this->implem == "SPA") |
| 253 | return new module::Decoder_LDPC_BP_flooding<B, Q, tools::Update_rule_SPA<Q>>( |
| 254 | this->K, |
| 255 | this->N_cw, |
| 256 | this->n_ite, |
| 257 | H, |
| 258 | info_bits_pos, |
| 259 | tools::Update_rule_SPA<Q>(max_CN_degree), |
| 260 | this->enable_syndrome, |
| 261 | this->syndrome_depth); |
| 262 | if (this->implem == "LSPA") |
| 263 | return new module::Decoder_LDPC_BP_flooding<B, Q, tools::Update_rule_LSPA<Q>>( |
| 264 | this->K, |
| 265 | this->N_cw, |
| 266 | this->n_ite, |
| 267 | H, |
| 268 | info_bits_pos, |
| 269 | tools::Update_rule_LSPA<Q>(max_CN_degree), |
| 270 | this->enable_syndrome, |
| 271 | this->syndrome_depth); |
nothing calls this directly
no outgoing calls
no test coverage detected