38 .AddConstructor<YansErrorRateModel> ()
50 return std::log (val) / std::log (2.0);
55 double EbNo = snr * signalSpread / phyRate;
56 double z = std::sqrt (EbNo);
57 double ber = 0.5 * erfc (z);
64 double EbNo = snr * signalSpread / phyRate;
65 double z = std::sqrt ((1.5 *
Log2 (m) * EbNo) / (m - 1.0));
66 double z1 = ((1.0 - 1.0 / std::sqrt (m)) * erfc (z));
67 double z2 = 1 - std::pow ((1 - z1), 2.0);
68 double ber = z2 /
Log2 (m);
69 NS_LOG_INFO (
"Qam m=" << m <<
" rate=" << phyRate <<
" snr=" << snr <<
" ber=" << ber);
86 double retval =
Factorial (n) / (
Factorial (k) *
Factorial (n - k)) * std::pow (p, static_cast<double> (k)) * std::pow (1 - p, static_cast<double> (n - k));
93 unsigned int dstart = (d + 1) / 2;
94 unsigned int dend = d;
97 for (
unsigned int i = dstart; i < dend; i++)
107 unsigned int dstart = d / 2 + 1;
108 unsigned int dend = d;
111 for (
unsigned int i = dstart; i < dend; i++)
115 pd += 0.5 *
Binomial (d / 2, ber, d);
137 uint32_t signalSpread, uint32_t phyRate,
138 uint32_t dFree, uint32_t adFree)
const
140 double ber =
GetBpskBer (snr, signalSpread, phyRate);
146 double pmu = adFree * pd;
147 pmu = std::min (pmu, 1.0);
148 double pms = std::pow (1 - pmu, nbits);
154 uint32_t signalSpread,
156 uint32_t m, uint32_t dFree,
157 uint32_t adFree, uint32_t adFreePlusOne)
const
159 double ber =
GetQamBer (snr, m, signalSpread, phyRate);
166 double pmu = adFree * pd;
169 pmu += adFreePlusOne * pd;
170 pmu = std::min (pmu, 1.0);
171 double pms = std::pow (1 - pmu, static_cast<double> (nbits));