37     .AddConstructor<NistErrorRateModel> ()
 
   49   double z = std::sqrt (snr);
 
   50   double ber = 0.5 * erfc (z);
 
   57   double z = std::sqrt (snr / 2.0);
 
   58   double ber = 0.5 * erfc (z);
 
   65   double z = std::sqrt (snr / (5.0 * 2.0));
 
   66   double ber = 0.75 * 0.5 * erfc (z);
 
   67   NS_LOG_INFO (
"16-Qam" << 
" snr=" << snr << 
" ber=" << ber);
 
   73   double z = std::sqrt (snr / (21.0 * 2.0));
 
   74   double ber = 7.0 / 12.0 * 0.5 * erfc (z);
 
   75   NS_LOG_INFO (
"64-Qam" << 
" snr=" << snr << 
" ber=" << ber);
 
   80                                    uint32_t bValue)
 const 
   88   pe = std::min (pe, 1.0);
 
   89   double pms = std::pow (1 - pe, (
double)nbits);
 
   94                                    uint32_t bValue)
 const 
  102   pe = std::min (pe, 1.0);
 
  103   double pms = std::pow (1 - pe, (
double)nbits);
 
  109   double D = std::sqrt (4.0 * p * (1.0 - p));
 
  114       pe = 0.5 * ( 36.0 * std::pow (D, 10)
 
  115                    + 211.0 * std::pow (D, 12)
 
  116                    + 1404.0 * std::pow (D, 14)
 
  117                    + 11633.0 * std::pow (D, 16)
 
  118                    + 77433.0 * std::pow (D, 18)
 
  119                    + 502690.0 * std::pow (D, 20)
 
  120                    + 3322763.0 * std::pow (D, 22)
 
  121                    + 21292910.0 * std::pow (D, 24)
 
  122                    + 134365911.0 * std::pow (D, 26)
 
  125   else if (bValue == 2)
 
  128       pe = 1.0 / (2.0 * bValue) *
 
  129         ( 3.0 * std::pow (D, 6)
 
  130           + 70.0 * std::pow (D, 7)
 
  131           + 285.0 * std::pow (D, 8)
 
  132           + 1276.0 * std::pow (D, 9)
 
  133           + 6160.0 * std::pow (D, 10)
 
  134           + 27128.0 * std::pow (D, 11)
 
  135           + 117019.0 * std::pow (D, 12)
 
  136           + 498860.0 * std::pow (D, 13)
 
  137           + 2103891.0 * std::pow (D, 14)
 
  138           + 8784123.0 * std::pow (D, 15)
 
  141   else if (bValue == 3)
 
  144       pe = 1.0 / (2.0 * bValue) *
 
  145         ( 42.0 * std::pow (D, 5)
 
  146           + 201.0 * std::pow (D, 6)
 
  147           + 1492.0 * std::pow (D, 7)
 
  148           + 10469.0 * std::pow (D, 8)
 
  149           + 62935.0 * std::pow (D, 9)
 
  150           + 379644.0 * std::pow (D, 10)
 
  151           + 2253373.0 * std::pow (D, 11)
 
  152           + 13073811.0 * std::pow (D, 12)
 
  153           + 75152755.0 * std::pow (D, 13)
 
  154           + 428005675.0 * std::pow (D, 14)
 
  166                                     uint32_t bValue)
 const 
  174   pe = std::min (pe, 1.0);
 
  175   double pms = std::pow (1 - pe, static_cast<double> (nbits));
 
  180                                     uint32_t bValue)
 const 
  188   pe = std::min (pe, 1.0);
 
  189   double pms = std::pow (1 - pe, static_cast<double> (nbits));
 
double GetQpskBer(double snr) const 
Return BER of QPSK at the given SNR. 
static double GetDsssDqpskCck11SuccessRate(double sinr, uint32_t nbits)
Return the chunk success rate of the differential encoded QPSK for 11Mbps data rate. 
static TypeId GetTypeId(void)
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register the class in the ns-3 factory. 
enum WifiModulationClass GetModulationClass() const 
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file...
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name. 
static double GetDsssDqpskSuccessRate(double sinr, uint32_t nbits)
Return the chunk success rate of the differential encoded QPSK. 
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO. 
double GetFec64QamBer(double snr, uint32_t nbits, uint32_t bValue) const 
Return BER of QAM64 at the given SNR after applying FEC. 
double GetFec16QamBer(double snr, uint32_t nbits, uint32_t bValue) const 
Return BER of QAM16 at the given SNR after applying FEC. 
represent a single transmission modeA WifiMode is implemented by a single integer which is used to lo...
the interface for Wifi's error models 
double CalculatePe(double p, uint32_t bValue) const 
Return the coded BER for the given p and b. 
enum WifiCodeRate GetCodeRate(void) const 
double Get16QamBer(double snr) const 
Return BER of QAM16 at the given SNR. 
uint8_t GetConstellationSize(void) const 
double GetFecQpskBer(double snr, uint32_t nbits, uint32_t bValue) const 
Return BER of QPSK at the given SNR after applying FEC. 
double Get64QamBer(double snr) const 
Return BER of QAM64 at the given SNR. 
static double GetDsssDqpskCck5_5SuccessRate(double sinr, uint32_t nbits)
Return the chunk success rate of the differential encoded QPSK for 5.5Mbps data rate. 
double GetFecBpskBer(double snr, uint32_t nbits, uint32_t bValue) const 
Return BER of BPSK at the given SNR after applying FEC. 
static double GetDsssDbpskSuccessRate(double sinr, uint32_t nbits)
Return the chunk success rate of the differential BPSK. 
a unique identifier for an interface. 
uint64_t GetDataRate(void) const 
TypeId SetParent(TypeId tid)
DSSS PHY (Clause 15) and HR/DSSS PHY (Clause 18) 
virtual double GetChunkSuccessRate(WifiMode mode, double snr, uint32_t nbits) const 
A pure virtual method that must be implemented in the subclass. 
double GetBpskBer(double snr) const 
Return BER of BPSK at the given SNR.