29 #ifndef MODULATOR_ND_H
30 #define MODULATOR_ND_H
132 QLLR scaled_norm, QLLRvec &num, QLLRvec &denom);
154 QLLR scaled_norm,
int j, QLLRvec &num, QLLRvec &denom);
225 const QLLRvec &LLR_apriori,
226 QLLRvec &LLR_aposteriori,
248 const QLLRvec &LLR_apriori,
280 const QLLRvec &LLR_apriori,
281 QLLRvec &LLR_aposteriori);
291 const QLLRvec &LLR_apriori,
292 QLLRvec &LLR_aposteriori);
317 const mat &HtH,
const ivec &s);
382 const QLLRvec &LLR_apriori,
383 QLLRvec &LLR_aposteriori,
406 const QLLRvec &LLR_apriori,
438 const QLLRvec &LLR_apriori,
439 QLLRvec &LLR_aposteriori);
449 const QLLRvec &LLR_apriori,
450 QLLRvec &LLR_aposteriori);
474 const cmat &HtH,
const ivec &s);
538 void set_M(
int nt = 1,
int Mary = 2);
541 void set_M(
int nt = 1, ivec Mary =
"2");
566 int sphere_decoding(
const vec &y,
const mat &H,
double rmin,
double rmax,
567 double stepup, QLLRvec &detected_bits);
571 int sphere_search_SE(
const vec &y,
const mat &H,
const imat &zrange,
572 double r, ivec &zhat);
576 inline int sign_nozero_i(
int a) {
return (a > 0 ? 1 : -1); }
577 inline int sign_nozero_i(
double a) {
return (a > 0.0 ? 1 : -1); }
600 void set_M(
int nt = 1,
int Mary = 4);
603 void set_M(
int nt = 1, ivec Mary =
"4");
629 void set_M(
int nt = 1,
int Mary = 4);
632 void set_M(
int nt = 1, ivec Mary =
"4");
638 #endif // #ifndef MODULATOR_ND_H