diff -r d14e2430213d -r 32755d0516f4 src/wifi/model/nist-error-rate-model.cc --- a/src/wifi/model/nist-error-rate-model.cc Fri Aug 31 12:24:28 2012 +0200 +++ b/src/wifi/model/nist-error-rate-model.cc Sat Sep 01 20:57:21 2012 +0200 @@ -17,6 +17,8 @@ * * Author: Gary Pei */ + +#include #include "nist-error-rate-model.h" #include "wifi-phy.h" #include "ns3/log.h" @@ -44,7 +46,7 @@ double NistErrorRateModel::GetBpskBer (double snr) const { - double z = sqrt (snr); + double z = std::sqrt (snr); double ber = 0.5 * erfc (z); NS_LOG_INFO ("bpsk snr=" << snr << " ber=" << ber); return ber; @@ -52,7 +54,7 @@ double NistErrorRateModel::GetQpskBer (double snr) const { - double z = sqrt (snr / 2.0); + double z = std::sqrt (snr / 2.0); double ber = 0.5 * erfc (z); NS_LOG_INFO ("qpsk snr=" << snr << " ber=" << ber); return ber; @@ -60,7 +62,7 @@ double NistErrorRateModel::Get16QamBer (double snr) const { - double z = sqrt (snr / (5.0 * 2.0)); + double z = std::sqrt (snr / (5.0 * 2.0)); double ber = 0.75 * 0.5 * erfc (z); NS_LOG_INFO ("16-Qam" << " snr=" << snr << " ber=" << ber); return ber; @@ -68,7 +70,7 @@ double NistErrorRateModel::Get64QamBer (double snr) const { - double z = sqrt (snr / (21.0 * 2.0)); + double z = std::sqrt (snr / (21.0 * 2.0)); double ber = 7.0 / 12.0 * 0.5 * erfc (z); NS_LOG_INFO ("64-Qam" << " snr=" << snr << " ber=" << ber); return ber; @@ -84,7 +86,7 @@ } double pe = CalculatePe (ber, bValue); pe = std::min (pe, 1.0); - double pms = pow (1 - pe, nbits); + double pms = std::pow (1 - pe, nbits); return pms; } double @@ -98,58 +100,58 @@ } double pe = CalculatePe (ber, bValue); pe = std::min (pe, 1.0); - double pms = pow (1 - pe, nbits); + double pms = std::pow (1 - pe, nbits); return pms; } double NistErrorRateModel::CalculatePe (double p, uint32_t bValue) const { - double D = sqrt (4.0 * p * (1.0 - p)); + double D = std::sqrt (4.0 * p * (1.0 - p)); double pe = 1.0; if (bValue == 1) { // code rate 1/2, use table 3.1.1 - pe = 0.5 * ( 36.0 * pow (D, 10.0) - + 211.0 * pow (D, 12.0) - + 1404.0 * pow (D, 14.0) - + 11633.0 * pow (D, 16.0) - + 77433.0 * pow (D, 18.0) - + 502690.0 * pow (D, 20.0) - + 3322763.0 * pow (D, 22.0) - + 21292910.0 * pow (D, 24.0) - + 134365911.0 * pow (D, 26.0) + pe = 0.5 * ( 36.0 * std::pow (D, 10.0) + + 211.0 * std::pow (D, 12.0) + + 1404.0 * std::pow (D, 14.0) + + 11633.0 * std::pow (D, 16.0) + + 77433.0 * std::pow (D, 18.0) + + 502690.0 * std::pow (D, 20.0) + + 3322763.0 * std::pow (D, 22.0) + + 21292910.0 * std::pow (D, 24.0) + + 134365911.0 * std::pow (D, 26.0) ); } else if (bValue == 2) { // code rate 2/3, use table 3.1.2 pe = 1.0 / (2.0 * bValue) * - ( 3.0 * pow (D, 6.0) - + 70.0 * pow (D, 7.0) - + 285.0 * pow (D, 8.0) - + 1276.0 * pow (D, 9.0) - + 6160.0 * pow (D, 10.0) - + 27128.0 * pow (D, 11.0) - + 117019.0 * pow (D, 12.0) - + 498860.0 * pow (D, 13.0) - + 2103891.0 * pow (D, 14.0) - + 8784123.0 * pow (D, 15.0) + ( 3.0 * std::pow (D, 6.0) + + 70.0 * std::pow (D, 7.0) + + 285.0 * std::pow (D, 8.0) + + 1276.0 * std::pow (D, 9.0) + + 6160.0 * std::pow (D, 10.0) + + 27128.0 * std::pow (D, 11.0) + + 117019.0 * std::pow (D, 12.0) + + 498860.0 * std::pow (D, 13.0) + + 2103891.0 * std::pow (D, 14.0) + + 8784123.0 * std::pow (D, 15.0) ); } else if (bValue == 3) { // code rate 3/4, use table 3.1.2 pe = 1.0 / (2.0 * bValue) * - ( 42.0 * pow (D, 5.0) - + 201.0 * pow (D, 6.0) - + 1492.0 * pow (D, 7.0) - + 10469.0 * pow (D, 8.0) - + 62935.0 * pow (D, 9.0) - + 379644.0 * pow (D, 10.0) - + 2253373.0 * pow (D, 11.0) - + 13073811.0 * pow (D, 12.0) - + 75152755.0 * pow (D, 13.0) - + 428005675.0 * pow (D, 14.0) + ( 42.0 * std::pow (D, 5.0) + + 201.0 * std::pow (D, 6.0) + + 1492.0 * std::pow (D, 7.0) + + 10469.0 * std::pow (D, 8.0) + + 62935.0 * std::pow (D, 9.0) + + 379644.0 * std::pow (D, 10.0) + + 2253373.0 * std::pow (D, 11.0) + + 13073811.0 * std::pow (D, 12.0) + + 75152755.0 * std::pow (D, 13.0) + + 428005675.0 * std::pow (D, 14.0) ); } else @@ -170,7 +172,7 @@ } double pe = CalculatePe (ber, bValue); pe = std::min (pe, 1.0); - double pms = pow (1 - pe, nbits); + double pms = std::pow (1 - pe, nbits); return pms; } double @@ -184,7 +186,7 @@ } double pe = CalculatePe (ber, bValue); pe = std::min (pe, 1.0); - double pms = pow (1 - pe, nbits); + double pms = std::pow (1 - pe, nbits); return pms; } double