11#include <gsl/gsl_cdf.h> 
   12#include <gsl/gsl_integration.h> 
   13#include <gsl/gsl_math.h> 
   14#include <gsl/gsl_sf_bessel.h> 
   17#include "ns3/dsss-error-rate-model.h" 
   18#include "ns3/he-phy.h"  
   19#include "ns3/interference-helper.h" 
   21#include "ns3/nist-error-rate-model.h" 
   22#include "ns3/table-based-error-rate-model.h" 
   24#include "ns3/wifi-phy.h" 
   25#include "ns3/wifi-utils.h" 
   26#include "ns3/yans-error-rate-model.h" 
   37    dBW_u noisePower = -100.5522786 + 7;
 
   39    dB_u sinr = rss - noisePower;
 
   41    return pow(10.0, sinr / 10.0);
 
 
   57    void DoRun() 
override;
 
 
   61    : 
TestCase(
"WifiErrorRateModel test case DSSS")
 
 
   73    uint64_t size = (1024 + 40 + 14) * 8;
 
 
  166    void DoRun() 
override;
 
 
  170    : 
TestCase(
"WifiErrorRateModel test case NIST")
 
 
  188    auto ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate6Mbps"),
 
  190                                        std::pow(10.0, snr / 10.0),
 
  194    ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate6Mbps"),
 
  196                                   std::pow(10.0, snr / 10.0),
 
  200    ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate6Mbps"),
 
  202                                   std::pow(10.0, snr / 10.0),
 
  206    ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate6Mbps"),
 
  208                                   std::pow(10.0, snr / 10.0),
 
  213    ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate9Mbps"),
 
  215                                   std::pow(10.0, snr / 10.0),
 
  219    ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate9Mbps"),
 
  221                                   std::pow(10.0, snr / 10.0),
 
  225    ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate9Mbps"),
 
  227                                   std::pow(10.0, snr / 10.0),
 
  231    ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate9Mbps"),
 
  233                                   std::pow(10.0, snr / 10.0),
 
  238    ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate12Mbps"),
 
  240                                   std::pow(10.0, snr / 10.0),
 
  244    ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate12Mbps"),
 
  246                                   std::pow(10.0, snr / 10.0),
 
  250    ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate12Mbps"),
 
  252                                   std::pow(10.0, snr / 10.0),
 
  256    ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate12Mbps"),
 
  258                                   std::pow(10.0, snr / 10.0),
 
  263    ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate18Mbps"),
 
  265                                   std::pow(10.0, snr / 10.0),
 
  269    ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate18Mbps"),
 
  271                                   std::pow(10.0, snr / 10.0),
 
  275    ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate18Mbps"),
 
  277                                   std::pow(10.0, snr / 10.0),
 
  281    ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate18Mbps"),
 
  283                                   std::pow(10.0, snr / 10.0),
 
  288    ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate24Mbps"),
 
  290                                   std::pow(10.0, snr / 10.0),
 
  294    ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate24Mbps"),
 
  296                                   std::pow(10.0, snr / 10.0),
 
  300    ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate24Mbps"),
 
  302                                   std::pow(10.0, snr / 10.0),
 
  306    ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate24Mbps"),
 
  308                                   std::pow(10.0, snr / 10.0),
 
  313    ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate36Mbps"),
 
  315                                   std::pow(10.0, snr / 10.0),
 
  319    ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate36Mbps"),
 
  321                                   std::pow(10.0, snr / 10.0),
 
  325    ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate36Mbps"),
 
  327                                   std::pow(10.0, snr / 10.0),
 
  331    ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate36Mbps"),
 
  333                                   std::pow(10.0, snr / 10.0),
 
  338    ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate48Mbps"),
 
  340                                   std::pow(10.0, snr / 10.0),
 
  344    ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate48Mbps"),
 
  346                                   std::pow(10.0, snr / 10.0),
 
  350    ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate48Mbps"),
 
  352                                   std::pow(10.0, snr / 10.0),
 
  356    ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate48Mbps"),
 
  358                                   std::pow(10.0, snr / 10.0),
 
  363    ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate54Mbps"),
 
  365                                   std::pow(10.0, snr / 10.0),
 
  369    ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate54Mbps"),
 
  371                                   std::pow(10.0, snr / 10.0),
 
  375    ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate54Mbps"),
 
  377                                   std::pow(10.0, snr / 10.0),
 
  381    ps = nist->GetChunkSuccessRate(
WifiMode(
"OfdmRate54Mbps"),
 
  383                                   std::pow(10.0, snr / 10.0),
 
 
  408    void DoRun() 
override;
 
 
  412    : 
TestCase(
"WifiErrorRateModel test case MIMO")
 
 
  439    dB_u initialSnr{4.0};
 
  448                              "Attempt to set initial SNR to known value failed");
 
  454                              "CSR not within tolerance for SISO");
 
  455    auto sisoChunkSuccess = chunkSuccess;
 
  467                              "SNR not within tolerance for 2x1:2 MIMO");
 
  472                              "CSR not within tolerance for SISO");
 
  484                              initialSnr + 
dB_u{3.0},
 
  486                              "SNR not within tolerance for 1x2:1 MIMO");
 
  490                          "CSR not within tolerance for 1x2:1 MIMO");
 
  502                              initialSnr + 
dB_u{3.0},
 
  504                              "SNR not equal within tolerance for 2x2:1 MIMO");
 
  508                          "CSR not within tolerance for 2x2:1 MIMO");
 
  521                              "SNR not equal within tolerance for 2x2:2 MIMO");
 
  526                              "CSR not within tolerance for 2x2:2 MIMO");
 
  538                              initialSnr + 
dB_u{4.8},
 
  540                              "SNR not within tolerance for 3x3:1 MIMO");
 
  544                          "CSR not within tolerance for 3x3:1 MIMO");
 
  556                              initialSnr + 
dB_u{1.8},
 
  558                              "SNR not within tolerance for 3x3:2 MIMO");
 
  562                          "CSR not within tolerance for 3x3:2 MIMO");
 
  575                              "SNR not within tolerance for 3x3:3 MIMO");
 
  580                              "CSR not equal within tolerance for 3x3:3 MIMO");
 
  592                              initialSnr + 
dB_u{6.0},
 
  594                              "SNR not within tolerance for 4x4:1 MIMO");
 
  598                          "CSR not within tolerance for 4x4:1 MIMO");
 
  610                              initialSnr + 
dB_u{3.0},
 
  612                              "SNR not within tolerance for 4x4:2 MIMO");
 
  616                          "CSR not within tolerance for 4x4:2 MIMO");
 
  628                              initialSnr + 
dB_u{1.2},
 
  630                              "SNR not within tolerance for 4x4:3 MIMO");
 
  634                          "CSR not within tolerance for 4x4:1 MIMO");
 
  647                              "SNR not within tolerance for 4x4:4 MIMO");
 
  652                              "CSR not within tolerance for 4x4:4 MIMO");
 
 
  659std::map<std::pair<uint8_t , 
uint32_t >,
 
  660         std::map<
dB_u , 
double >>
 
  663        {std::make_pair(0, 1458),
 
  665             {
dB_u{-4.00}, 1.00000}, {
dB_u{-3.75}, 1.00000}, {
dB_u{-3.50}, 1.00000},
 
  666             {
dB_u{-3.25}, 1.00000}, {
dB_u{-3.00}, 1.00000}, {
dB_u{-2.75}, 1.00000},
 
  667             {
dB_u{-2.50}, 1.00000}, {
dB_u{-2.25}, 1.00000}, {
dB_u{-2.00}, 1.00000},
 
  668             {
dB_u{-1.75}, 1.00000}, {
dB_u{-1.50}, 1.00000}, {
dB_u{-1.25}, 1.00000},
 
  669             {
dB_u{-1.00}, 1.00000}, {
dB_u{-0.75}, 0.99700}, {
dB_u{-0.50}, 0.99400},
 
  670             {
dB_u{-0.25}, 0.90625}, {
dB_u{0.00}, 0.81850},  {
dB_u{0.25}, 0.55465},
 
  671             {
dB_u{0.50}, 0.29080},  {
dB_u{0.75}, 0.17855},  {
dB_u{1.00}, 0.06630},
 
  672             {
dB_u{1.25}, 0.03875},  {
dB_u{1.50}, 0.01120},  {
dB_u{1.75}, 0.00635},
 
  673             {
dB_u{2.00}, 0.00150},  {
dB_u{2.25}, 0.00083},  {
dB_u{2.50}, 0.00015},
 
  674             {
dB_u{2.75}, 0.00008},  {
dB_u{3.00}, 0.00001},  {
dB_u{3.25}, 0.00000},
 
  675             {
dB_u{3.50}, 0.00000},  {
dB_u{3.75}, 0.00000},  {
dB_u{4.00}, 0.00000},
 
  676             {
dB_u{4.25}, 0.00000},  {
dB_u{4.50}, 0.00000},  {
dB_u{4.75}, 0.00000},
 
  677             {
dB_u{5.00}, 0.00000},  {
dB_u{5.25}, 0.00000},  {
dB_u{5.50}, 0.00000},
 
  678             {
dB_u{5.75}, 0.00000},  {
dB_u{6.00}, 0.00000},  {
dB_u{6.25}, 0.00000},
 
  679             {
dB_u{6.50}, 0.00000},  {
dB_u{6.75}, 0.00000},  {
dB_u{7.00}, 0.00000},
 
  680             {
dB_u{7.25}, 0.00000},  {
dB_u{7.50}, 0.00000},  {
dB_u{7.75}, 0.00000},
 
  681             {
dB_u{8.00}, 0.00000},  {
dB_u{8.25}, 0.00000},  {
dB_u{8.50}, 0.00000},
 
  682             {
dB_u{8.75}, 0.00000},  {
dB_u{9.00}, 0.00000},  {
dB_u{9.25}, 0.00000},
 
  683             {
dB_u{9.50}, 0.00000},  {
dB_u{9.75}, 0.00000},  {
dB_u{10.00}, 0.00000},
 
  684             {
dB_u{10.25}, 0.00000}, {
dB_u{10.50}, 0.00000}, {
dB_u{10.75}, 0.00000},
 
  685             {
dB_u{11.00}, 0.00000}, {
dB_u{11.25}, 0.00000}, {
dB_u{11.50}, 0.00000},
 
  686             {
dB_u{11.75}, 0.00000}, {
dB_u{12.00}, 0.00000}, {
dB_u{12.25}, 0.00000},
 
  687             {
dB_u{12.50}, 0.00000}, {
dB_u{12.75}, 0.00000}, {
dB_u{13.00}, 0.00000},
 
  688             {
dB_u{13.25}, 0.00000}, {
dB_u{13.50}, 0.00000}, {
dB_u{13.75}, 0.00000},
 
  689             {
dB_u{14.00}, 0.00000}, {
dB_u{14.25}, 0.00000}, {
dB_u{14.50}, 0.00000},
 
  690             {
dB_u{14.75}, 0.00000}, {
dB_u{15.00}, 0.00000}, {
dB_u{15.25}, 0.00000},
 
  691             {
dB_u{15.50}, 0.00000}, {
dB_u{15.75}, 0.00000}, {
dB_u{16.00}, 0.00000},
 
  692             {
dB_u{16.25}, 0.00000}, {
dB_u{16.50}, 0.00000}, {
dB_u{16.75}, 0.00000},
 
  693             {
dB_u{17.00}, 0.00000}, {
dB_u{17.25}, 0.00000}, {
dB_u{17.50}, 0.00000},
 
  694             {
dB_u{17.75}, 0.00000}, {
dB_u{18.00}, 0.00000}, {
dB_u{18.25}, 0.00000},
 
  695             {
dB_u{18.50}, 0.00000}, {
dB_u{18.75}, 0.00000}, {
dB_u{19.00}, 0.00000},
 
  696             {
dB_u{19.25}, 0.00000}, {
dB_u{19.50}, 0.00000}, {
dB_u{19.75}, 0.00000},
 
  697             {
dB_u{20.00}, 0.00000}, {
dB_u{20.25}, 0.00000}, {
dB_u{20.50}, 0.00000},
 
  698             {
dB_u{20.75}, 0.00000}, {
dB_u{21.00}, 0.00000}, {
dB_u{21.25}, 0.00000},
 
  699             {
dB_u{21.50}, 0.00000}, {
dB_u{21.75}, 0.00000}, {
dB_u{22.00}, 0.00000},
 
  700             {
dB_u{22.25}, 0.00000}, {
dB_u{22.50}, 0.00000}, {
dB_u{22.75}, 0.00000},
 
  701             {
dB_u{23.00}, 0.00000}, {
dB_u{23.25}, 0.00000}, {
dB_u{23.50}, 0.00000},
 
  702             {
dB_u{23.75}, 0.00000}, {
dB_u{24.00}, 0.00000}, {
dB_u{24.25}, 0.00000},
 
  703             {
dB_u{24.50}, 0.00000}, {
dB_u{24.75}, 0.00000}, {
dB_u{25.00}, 0.00000},
 
  704             {
dB_u{25.25}, 0.00000}, {
dB_u{25.50}, 0.00000}, {
dB_u{25.75}, 0.00000},
 
  705             {
dB_u{26.00}, 0.00000}, {
dB_u{26.25}, 0.00000}, {
dB_u{26.50}, 0.00000},
 
  706             {
dB_u{26.75}, 0.00000}, {
dB_u{27.00}, 0.00000}, {
dB_u{27.25}, 0.00000},
 
  707             {
dB_u{27.50}, 0.00000}, {
dB_u{27.75}, 0.00000}, {
dB_u{28.00}, 0.00000},
 
  708             {
dB_u{28.25}, 0.00000}, {
dB_u{28.50}, 0.00000}, {
dB_u{28.75}, 0.00000},
 
  709             {
dB_u{29.00}, 0.00000}, {
dB_u{29.25}, 0.00000}, {
dB_u{29.50}, 0.00000},
 
  710             {
dB_u{29.75}, 0.00000}, {
dB_u{30.00}, 0.00000},
 
  713        {std::make_pair(0, 32),
 
  715             {
dB_u{-4.00}, 1.00000}, {
dB_u{-3.75}, 1.00000}, {
dB_u{-3.50}, 1.00000},
 
  716             {
dB_u{-3.25}, 0.99750}, {
dB_u{-3.00}, 0.99500}, {
dB_u{-2.75}, 0.96790},
 
  717             {
dB_u{-2.50}, 0.94080}, {
dB_u{-2.25}, 0.88335}, {
dB_u{-2.00}, 0.82590},
 
  718             {
dB_u{-1.75}, 0.70770}, {
dB_u{-1.50}, 0.58950}, {
dB_u{-1.25}, 0.44890},
 
  719             {
dB_u{-1.00}, 0.30830}, {
dB_u{-0.75}, 0.21685}, {
dB_u{-0.50}, 0.12540},
 
  720             {
dB_u{-0.25}, 0.07990}, {
dB_u{0.00}, 0.03440},  {
dB_u{0.25}, 0.02145},
 
  721             {
dB_u{0.50}, 0.00850},  {
dB_u{0.75}, 0.00500},  {
dB_u{1.00}, 0.00150},
 
  722             {
dB_u{1.25}, 0.00087},  {
dB_u{1.50}, 0.00024},  {
dB_u{1.75}, 0.00017},
 
  723             {
dB_u{2.00}, 0.00009},  {
dB_u{2.25}, 0.00005},  {
dB_u{2.50}, 0.00000},
 
  724             {
dB_u{2.75}, 0.00000},  {
dB_u{3.00}, 0.00000},  {
dB_u{3.25}, 0.00000},
 
  725             {
dB_u{3.50}, 0.00000},  {
dB_u{3.75}, 0.00000},  {
dB_u{4.00}, 0.00000},
 
  726             {
dB_u{4.25}, 0.00000},  {
dB_u{4.50}, 0.00000},  {
dB_u{4.75}, 0.00000},
 
  727             {
dB_u{5.00}, 0.00000},  {
dB_u{5.25}, 0.00000},  {
dB_u{5.50}, 0.00000},
 
  728             {
dB_u{5.75}, 0.00000},  {
dB_u{6.00}, 0.00000},  {
dB_u{6.25}, 0.00000},
 
  729             {
dB_u{6.50}, 0.00000},  {
dB_u{6.75}, 0.00000},  {
dB_u{7.00}, 0.00000},
 
  730             {
dB_u{7.25}, 0.00000},  {
dB_u{7.50}, 0.00000},  {
dB_u{7.75}, 0.00000},
 
  731             {
dB_u{8.00}, 0.00000},  {
dB_u{8.25}, 0.00000},  {
dB_u{8.50}, 0.00000},
 
  732             {
dB_u{8.75}, 0.00000},  {
dB_u{9.00}, 0.00000},  {
dB_u{9.25}, 0.00000},
 
  733             {
dB_u{9.50}, 0.00000},  {
dB_u{9.75}, 0.00000},  {
dB_u{10.00}, 0.00000},
 
  734             {
dB_u{10.25}, 0.00000}, {
dB_u{10.50}, 0.00000}, {
dB_u{10.75}, 0.00000},
 
  735             {
dB_u{11.00}, 0.00000}, {
dB_u{11.25}, 0.00000}, {
dB_u{11.50}, 0.00000},
 
  736             {
dB_u{11.75}, 0.00000}, {
dB_u{12.00}, 0.00000}, {
dB_u{12.25}, 0.00000},
 
  737             {
dB_u{12.50}, 0.00000}, {
dB_u{12.75}, 0.00000}, {
dB_u{13.00}, 0.00000},
 
  738             {
dB_u{13.25}, 0.00000}, {
dB_u{13.50}, 0.00000}, {
dB_u{13.75}, 0.00000},
 
  739             {
dB_u{14.00}, 0.00000}, {
dB_u{14.25}, 0.00000}, {
dB_u{14.50}, 0.00000},
 
  740             {
dB_u{14.75}, 0.00000}, {
dB_u{15.00}, 0.00000}, {
dB_u{15.25}, 0.00000},
 
  741             {
dB_u{15.50}, 0.00000}, {
dB_u{15.75}, 0.00000}, {
dB_u{16.00}, 0.00000},
 
  742             {
dB_u{16.25}, 0.00000}, {
dB_u{16.50}, 0.00000}, {
dB_u{16.75}, 0.00000},
 
  743             {
dB_u{17.00}, 0.00000}, {
dB_u{17.25}, 0.00000}, {
dB_u{17.50}, 0.00000},
 
  744             {
dB_u{17.75}, 0.00000}, {
dB_u{18.00}, 0.00000}, {
dB_u{18.25}, 0.00000},
 
  745             {
dB_u{18.50}, 0.00000}, {
dB_u{18.75}, 0.00000}, {
dB_u{19.00}, 0.00000},
 
  746             {
dB_u{19.25}, 0.00000}, {
dB_u{19.50}, 0.00000}, {
dB_u{19.75}, 0.00000},
 
  747             {
dB_u{20.00}, 0.00000}, {
dB_u{20.25}, 0.00000}, {
dB_u{20.50}, 0.00000},
 
  748             {
dB_u{20.75}, 0.00000}, {
dB_u{21.00}, 0.00000}, {
dB_u{21.25}, 0.00000},
 
  749             {
dB_u{21.50}, 0.00000}, {
dB_u{21.75}, 0.00000}, {
dB_u{22.00}, 0.00000},
 
  750             {
dB_u{22.25}, 0.00000}, {
dB_u{22.50}, 0.00000}, {
dB_u{22.75}, 0.00000},
 
  751             {
dB_u{23.00}, 0.00000}, {
dB_u{23.25}, 0.00000}, {
dB_u{23.50}, 0.00000},
 
  752             {
dB_u{23.75}, 0.00000}, {
dB_u{24.00}, 0.00000}, {
dB_u{24.25}, 0.00000},
 
  753             {
dB_u{24.50}, 0.00000}, {
dB_u{24.75}, 0.00000}, {
dB_u{25.00}, 0.00000},
 
  754             {
dB_u{25.25}, 0.00000}, {
dB_u{25.50}, 0.00000}, {
dB_u{25.75}, 0.00000},
 
  755             {
dB_u{26.00}, 0.00000}, {
dB_u{26.25}, 0.00000}, {
dB_u{26.50}, 0.00000},
 
  756             {
dB_u{26.75}, 0.00000}, {
dB_u{27.00}, 0.00000}, {
dB_u{27.25}, 0.00000},
 
  757             {
dB_u{27.50}, 0.00000}, {
dB_u{27.75}, 0.00000}, {
dB_u{28.00}, 0.00000},
 
  758             {
dB_u{28.25}, 0.00000}, {
dB_u{28.50}, 0.00000}, {
dB_u{28.75}, 0.00000},
 
  759             {
dB_u{29.00}, 0.00000}, {
dB_u{29.25}, 0.00000}, {
dB_u{29.50}, 0.00000},
 
  760             {
dB_u{29.75}, 0.00000}, {
dB_u{30.00}, 0.00000},
 
  763        {std::make_pair(0, 1000),
 
  765             {
dB_u{-4.00}, 1.00000}, {
dB_u{-3.75}, 1.00000}, {
dB_u{-3.50}, 1.00000},
 
  766             {
dB_u{-3.25}, 1.00000}, {
dB_u{-3.00}, 1.00000}, {
dB_u{-2.75}, 1.00000},
 
  767             {
dB_u{-2.50}, 1.00000}, {
dB_u{-2.25}, 1.00000}, {
dB_u{-2.00}, 1.00000},
 
  768             {
dB_u{-1.75}, 1.00000}, {
dB_u{-1.50}, 1.00000}, {
dB_u{-1.25}, 1.00000},
 
  769             {
dB_u{-1.00}, 1.00000}, {
dB_u{-0.75}, 0.98140}, {
dB_u{-0.50}, 0.97007},
 
  770             {
dB_u{-0.25}, 0.80280}, {
dB_u{0.00}, 0.68977},  {
dB_u{0.25}, 0.42581},
 
  771             {
dB_u{0.50}, 0.20997},  {
dB_u{0.75}, 0.12620},  {
dB_u{1.00}, 0.04596},
 
  772             {
dB_u{1.25}, 0.02674},  {
dB_u{1.50}, 0.00770},  {
dB_u{1.75}, 0.00436},
 
  773             {
dB_u{2.00}, 0.00103},  {
dB_u{2.25}, 0.00057},  {
dB_u{2.50}, 0.00010},
 
  774             {
dB_u{2.75}, 0.00005},  {
dB_u{3.00}, 0.00001},  {
dB_u{3.25}, 0.00000},
 
  775             {
dB_u{3.50}, 0.00000},  {
dB_u{3.75}, 0.00000},  {
dB_u{4.00}, 0.00000},
 
  776             {
dB_u{4.25}, 0.00000},  {
dB_u{4.50}, 0.00000},  {
dB_u{4.75}, 0.00000},
 
  777             {
dB_u{5.00}, 0.00000},  {
dB_u{5.25}, 0.00000},  {
dB_u{5.50}, 0.00000},
 
  778             {
dB_u{5.75}, 0.00000},  {
dB_u{6.00}, 0.00000},  {
dB_u{6.25}, 0.00000},
 
  779             {
dB_u{6.50}, 0.00000},  {
dB_u{6.75}, 0.00000},  {
dB_u{7.00}, 0.00000},
 
  780             {
dB_u{7.25}, 0.00000},  {
dB_u{7.50}, 0.00000},  {
dB_u{7.75}, 0.00000},
 
  781             {
dB_u{8.00}, 0.00000},  {
dB_u{8.25}, 0.00000},  {
dB_u{8.50}, 0.00000},
 
  782             {
dB_u{8.75}, 0.00000},  {
dB_u{9.00}, 0.00000},  {
dB_u{9.25}, 0.00000},
 
  783             {
dB_u{9.50}, 0.00000},  {
dB_u{9.75}, 0.00000},  {
dB_u{10.00}, 0.00000},
 
  784             {
dB_u{10.25}, 0.00000}, {
dB_u{10.50}, 0.00000}, {
dB_u{10.75}, 0.00000},
 
  785             {
dB_u{11.00}, 0.00000}, {
dB_u{11.25}, 0.00000}, {
dB_u{11.50}, 0.00000},
 
  786             {
dB_u{11.75}, 0.00000}, {
dB_u{12.00}, 0.00000}, {
dB_u{12.25}, 0.00000},
 
  787             {
dB_u{12.50}, 0.00000}, {
dB_u{12.75}, 0.00000}, {
dB_u{13.00}, 0.00000},
 
  788             {
dB_u{13.25}, 0.00000}, {
dB_u{13.50}, 0.00000}, {
dB_u{13.75}, 0.00000},
 
  789             {
dB_u{14.00}, 0.00000}, {
dB_u{14.25}, 0.00000}, {
dB_u{14.50}, 0.00000},
 
  790             {
dB_u{14.75}, 0.00000}, {
dB_u{15.00}, 0.00000}, {
dB_u{15.25}, 0.00000},
 
  791             {
dB_u{15.50}, 0.00000}, {
dB_u{15.75}, 0.00000}, {
dB_u{16.00}, 0.00000},
 
  792             {
dB_u{16.25}, 0.00000}, {
dB_u{16.50}, 0.00000}, {
dB_u{16.75}, 0.00000},
 
  793             {
dB_u{17.00}, 0.00000}, {
dB_u{17.25}, 0.00000}, {
dB_u{17.50}, 0.00000},
 
  794             {
dB_u{17.75}, 0.00000}, {
dB_u{18.00}, 0.00000}, {
dB_u{18.25}, 0.00000},
 
  795             {
dB_u{18.50}, 0.00000}, {
dB_u{18.75}, 0.00000}, {
dB_u{19.00}, 0.00000},
 
  796             {
dB_u{19.25}, 0.00000}, {
dB_u{19.50}, 0.00000}, {
dB_u{19.75}, 0.00000},
 
  797             {
dB_u{20.00}, 0.00000}, {
dB_u{20.25}, 0.00000}, {
dB_u{20.50}, 0.00000},
 
  798             {
dB_u{20.75}, 0.00000}, {
dB_u{21.00}, 0.00000}, {
dB_u{21.25}, 0.00000},
 
  799             {
dB_u{21.50}, 0.00000}, {
dB_u{21.75}, 0.00000}, {
dB_u{22.00}, 0.00000},
 
  800             {
dB_u{22.25}, 0.00000}, {
dB_u{22.50}, 0.00000}, {
dB_u{22.75}, 0.00000},
 
  801             {
dB_u{23.00}, 0.00000}, {
dB_u{23.25}, 0.00000}, {
dB_u{23.50}, 0.00000},
 
  802             {
dB_u{23.75}, 0.00000}, {
dB_u{24.00}, 0.00000}, {
dB_u{24.25}, 0.00000},
 
  803             {
dB_u{24.50}, 0.00000}, {
dB_u{24.75}, 0.00000}, {
dB_u{25.00}, 0.00000},
 
  804             {
dB_u{25.25}, 0.00000}, {
dB_u{25.50}, 0.00000}, {
dB_u{25.75}, 0.00000},
 
  805             {
dB_u{26.00}, 0.00000}, {
dB_u{26.25}, 0.00000}, {
dB_u{26.50}, 0.00000},
 
  806             {
dB_u{26.75}, 0.00000}, {
dB_u{27.00}, 0.00000}, {
dB_u{27.25}, 0.00000},
 
  807             {
dB_u{27.50}, 0.00000}, {
dB_u{27.75}, 0.00000}, {
dB_u{28.00}, 0.00000},
 
  808             {
dB_u{28.25}, 0.00000}, {
dB_u{28.50}, 0.00000}, {
dB_u{28.75}, 0.00000},
 
  809             {
dB_u{29.00}, 0.00000}, {
dB_u{29.25}, 0.00000}, {
dB_u{29.50}, 0.00000},
 
  810             {
dB_u{29.75}, 0.00000}, {
dB_u{30.00}, 0.00000},
 
  813        {std::make_pair(0, 1),
 
  815             {
dB_u{-4.00}, 1.00000}, {
dB_u{-3.75}, 1.00000}, {
dB_u{-3.50}, 1.00000},
 
  816             {
dB_u{-3.25}, 0.17075}, {
dB_u{-3.00}, 0.15260}, {
dB_u{-2.75}, 0.10190},
 
  817             {
dB_u{-2.50}, 0.08455}, {
dB_u{-2.25}, 0.06494}, {
dB_u{-2.00}, 0.05316},
 
  818             {
dB_u{-1.75}, 0.03771}, {
dB_u{-1.50}, 0.02744}, {
dB_u{-1.25}, 0.01845},
 
  819             {
dB_u{-1.00}, 0.01145}, {
dB_u{-0.75}, 0.00761}, {
dB_u{-0.50}, 0.00418},
 
  820             {
dB_u{-0.25}, 0.00260}, {
dB_u{0.00}, 0.00110},  {
dB_u{0.25}, 0.00068},
 
  821             {
dB_u{0.50}, 0.00027},  {
dB_u{0.75}, 0.00016},  {
dB_u{1.00}, 0.00005},
 
  822             {
dB_u{1.25}, 0.00003},  {
dB_u{1.50}, 0.00000},  {
dB_u{1.75}, 0.00000},
 
  823             {
dB_u{2.00}, 0.00000},  {
dB_u{2.25}, 0.00000},  {
dB_u{2.50}, 0.00000},
 
  824             {
dB_u{2.75}, 0.00000},  {
dB_u{3.00}, 0.00000},  {
dB_u{3.25}, 0.00000},
 
  825             {
dB_u{3.50}, 0.00000},  {
dB_u{3.75}, 0.00000},  {
dB_u{4.00}, 0.00000},
 
  826             {
dB_u{4.25}, 0.00000},  {
dB_u{4.50}, 0.00000},  {
dB_u{4.75}, 0.00000},
 
  827             {
dB_u{5.00}, 0.00000},  {
dB_u{5.25}, 0.00000},  {
dB_u{5.50}, 0.00000},
 
  828             {
dB_u{5.75}, 0.00000},  {
dB_u{6.00}, 0.00000},  {
dB_u{6.25}, 0.00000},
 
  829             {
dB_u{6.50}, 0.00000},  {
dB_u{6.75}, 0.00000},  {
dB_u{7.00}, 0.00000},
 
  830             {
dB_u{7.25}, 0.00000},  {
dB_u{7.50}, 0.00000},  {
dB_u{7.75}, 0.00000},
 
  831             {
dB_u{8.00}, 0.00000},  {
dB_u{8.25}, 0.00000},  {
dB_u{8.50}, 0.00000},
 
  832             {
dB_u{8.75}, 0.00000},  {
dB_u{9.00}, 0.00000},  {
dB_u{9.25}, 0.00000},
 
  833             {
dB_u{9.50}, 0.00000},  {
dB_u{9.75}, 0.00000},  {
dB_u{10.00}, 0.00000},
 
  834             {
dB_u{10.25}, 0.00000}, {
dB_u{10.50}, 0.00000}, {
dB_u{10.75}, 0.00000},
 
  835             {
dB_u{11.00}, 0.00000}, {
dB_u{11.25}, 0.00000}, {
dB_u{11.50}, 0.00000},
 
  836             {
dB_u{11.75}, 0.00000}, {
dB_u{12.00}, 0.00000}, {
dB_u{12.25}, 0.00000},
 
  837             {
dB_u{12.50}, 0.00000}, {
dB_u{12.75}, 0.00000}, {
dB_u{13.00}, 0.00000},
 
  838             {
dB_u{13.25}, 0.00000}, {
dB_u{13.50}, 0.00000}, {
dB_u{13.75}, 0.00000},
 
  839             {
dB_u{14.00}, 0.00000}, {
dB_u{14.25}, 0.00000}, {
dB_u{14.50}, 0.00000},
 
  840             {
dB_u{14.75}, 0.00000}, {
dB_u{15.00}, 0.00000}, {
dB_u{15.25}, 0.00000},
 
  841             {
dB_u{15.50}, 0.00000}, {
dB_u{15.75}, 0.00000}, {
dB_u{16.00}, 0.00000},
 
  842             {
dB_u{16.25}, 0.00000}, {
dB_u{16.50}, 0.00000}, {
dB_u{16.75}, 0.00000},
 
  843             {
dB_u{17.00}, 0.00000}, {
dB_u{17.25}, 0.00000}, {
dB_u{17.50}, 0.00000},
 
  844             {
dB_u{17.75}, 0.00000}, {
dB_u{18.00}, 0.00000}, {
dB_u{18.25}, 0.00000},
 
  845             {
dB_u{18.50}, 0.00000}, {
dB_u{18.75}, 0.00000}, {
dB_u{19.00}, 0.00000},
 
  846             {
dB_u{19.25}, 0.00000}, {
dB_u{19.50}, 0.00000}, {
dB_u{19.75}, 0.00000},
 
  847             {
dB_u{20.00}, 0.00000}, {
dB_u{20.25}, 0.00000}, {
dB_u{20.50}, 0.00000},
 
  848             {
dB_u{20.75}, 0.00000}, {
dB_u{21.00}, 0.00000}, {
dB_u{21.25}, 0.00000},
 
  849             {
dB_u{21.50}, 0.00000}, {
dB_u{21.75}, 0.00000}, {
dB_u{22.00}, 0.00000},
 
  850             {
dB_u{22.25}, 0.00000}, {
dB_u{22.50}, 0.00000}, {
dB_u{22.75}, 0.00000},
 
  851             {
dB_u{23.00}, 0.00000}, {
dB_u{23.25}, 0.00000}, {
dB_u{23.50}, 0.00000},
 
  852             {
dB_u{23.75}, 0.00000}, {
dB_u{24.00}, 0.00000}, {
dB_u{24.25}, 0.00000},
 
  853             {
dB_u{24.50}, 0.00000}, {
dB_u{24.75}, 0.00000}, {
dB_u{25.00}, 0.00000},
 
  854             {
dB_u{25.25}, 0.00000}, {
dB_u{25.50}, 0.00000}, {
dB_u{25.75}, 0.00000},
 
  855             {
dB_u{26.00}, 0.00000}, {
dB_u{26.25}, 0.00000}, {
dB_u{26.50}, 0.00000},
 
  856             {
dB_u{26.75}, 0.00000}, {
dB_u{27.00}, 0.00000}, {
dB_u{27.25}, 0.00000},
 
  857             {
dB_u{27.50}, 0.00000}, {
dB_u{27.75}, 0.00000}, {
dB_u{28.00}, 0.00000},
 
  858             {
dB_u{28.25}, 0.00000}, {
dB_u{28.50}, 0.00000}, {
dB_u{28.75}, 0.00000},
 
  859             {
dB_u{29.00}, 0.00000}, {
dB_u{29.25}, 0.00000}, {
dB_u{29.50}, 0.00000},
 
  860             {
dB_u{29.75}, 0.00000}, {
dB_u{30.00}, 0.00000},
 
  863        {std::make_pair(0, 2000),
 
  865             {
dB_u{-4.00}, 1.00000}, {
dB_u{-3.75}, 1.00000}, {
dB_u{-3.50}, 1.00000},
 
  866             {
dB_u{-3.25}, 1.00000}, {
dB_u{-3.00}, 1.00000}, {
dB_u{-2.75}, 1.00000},
 
  867             {
dB_u{-2.50}, 1.00000}, {
dB_u{-2.25}, 1.00000}, {
dB_u{-2.00}, 1.00000},
 
  868             {
dB_u{-1.75}, 1.00000}, {
dB_u{-1.50}, 1.00000}, {
dB_u{-1.25}, 1.00000},
 
  869             {
dB_u{-1.00}, 1.00000}, {
dB_u{-0.75}, 0.99965}, {
dB_u{-0.50}, 0.99910},
 
  870             {
dB_u{-0.25}, 0.96111}, {
dB_u{0.00}, 0.90376},  {
dB_u{0.25}, 0.67031},
 
  871             {
dB_u{0.50}, 0.37584},  {
dB_u{0.75}, 0.23647},  {
dB_u{1.00}, 0.08981},
 
  872             {
dB_u{1.25}, 0.05277},  {
dB_u{1.50}, 0.01533},  {
dB_u{1.75}, 0.00870},
 
  873             {
dB_u{2.00}, 0.00206},  {
dB_u{2.25}, 0.00113},  {
dB_u{2.50}, 0.00021},
 
  874             {
dB_u{2.75}, 0.00011},  {
dB_u{3.00}, 0.00001},  {
dB_u{3.25}, 0.00000},
 
  875             {
dB_u{3.50}, 0.00000},  {
dB_u{3.75}, 0.00000},  {
dB_u{4.00}, 0.00000},
 
  876             {
dB_u{4.25}, 0.00000},  {
dB_u{4.50}, 0.00000},  {
dB_u{4.75}, 0.00000},
 
  877             {
dB_u{5.00}, 0.00000},  {
dB_u{5.25}, 0.00000},  {
dB_u{5.50}, 0.00000},
 
  878             {
dB_u{5.75}, 0.00000},  {
dB_u{6.00}, 0.00000},  {
dB_u{6.25}, 0.00000},
 
  879             {
dB_u{6.50}, 0.00000},  {
dB_u{6.75}, 0.00000},  {
dB_u{7.00}, 0.00000},
 
  880             {
dB_u{7.25}, 0.00000},  {
dB_u{7.50}, 0.00000},  {
dB_u{7.75}, 0.00000},
 
  881             {
dB_u{8.00}, 0.00000},  {
dB_u{8.25}, 0.00000},  {
dB_u{8.50}, 0.00000},
 
  882             {
dB_u{8.75}, 0.00000},  {
dB_u{9.00}, 0.00000},  {
dB_u{9.25}, 0.00000},
 
  883             {
dB_u{9.50}, 0.00000},  {
dB_u{9.75}, 0.00000},  {
dB_u{10.00}, 0.00000},
 
  884             {
dB_u{10.25}, 0.00000}, {
dB_u{10.50}, 0.00000}, {
dB_u{10.75}, 0.00000},
 
  885             {
dB_u{11.00}, 0.00000}, {
dB_u{11.25}, 0.00000}, {
dB_u{11.50}, 0.00000},
 
  886             {
dB_u{11.75}, 0.00000}, {
dB_u{12.00}, 0.00000}, {
dB_u{12.25}, 0.00000},
 
  887             {
dB_u{12.50}, 0.00000}, {
dB_u{12.75}, 0.00000}, {
dB_u{13.00}, 0.00000},
 
  888             {
dB_u{13.25}, 0.00000}, {
dB_u{13.50}, 0.00000}, {
dB_u{13.75}, 0.00000},
 
  889             {
dB_u{14.00}, 0.00000}, {
dB_u{14.25}, 0.00000}, {
dB_u{14.50}, 0.00000},
 
  890             {
dB_u{14.75}, 0.00000}, {
dB_u{15.00}, 0.00000}, {
dB_u{15.25}, 0.00000},
 
  891             {
dB_u{15.50}, 0.00000}, {
dB_u{15.75}, 0.00000}, {
dB_u{16.00}, 0.00000},
 
  892             {
dB_u{16.25}, 0.00000}, {
dB_u{16.50}, 0.00000}, {
dB_u{16.75}, 0.00000},
 
  893             {
dB_u{17.00}, 0.00000}, {
dB_u{17.25}, 0.00000}, {
dB_u{17.50}, 0.00000},
 
  894             {
dB_u{17.75}, 0.00000}, {
dB_u{18.00}, 0.00000}, {
dB_u{18.25}, 0.00000},
 
  895             {
dB_u{18.50}, 0.00000}, {
dB_u{18.75}, 0.00000}, {
dB_u{19.00}, 0.00000},
 
  896             {
dB_u{19.25}, 0.00000}, {
dB_u{19.50}, 0.00000}, {
dB_u{19.75}, 0.00000},
 
  897             {
dB_u{20.00}, 0.00000}, {
dB_u{20.25}, 0.00000}, {
dB_u{20.50}, 0.00000},
 
  898             {
dB_u{20.75}, 0.00000}, {
dB_u{21.00}, 0.00000}, {
dB_u{21.25}, 0.00000},
 
  899             {
dB_u{21.50}, 0.00000}, {
dB_u{21.75}, 0.00000}, {
dB_u{22.00}, 0.00000},
 
  900             {
dB_u{22.25}, 0.00000}, {
dB_u{22.50}, 0.00000}, {
dB_u{22.75}, 0.00000},
 
  901             {
dB_u{23.00}, 0.00000}, {
dB_u{23.25}, 0.00000}, {
dB_u{23.50}, 0.00000},
 
  902             {
dB_u{23.75}, 0.00000}, {
dB_u{24.00}, 0.00000}, {
dB_u{24.25}, 0.00000},
 
  903             {
dB_u{24.50}, 0.00000}, {
dB_u{24.75}, 0.00000}, {
dB_u{25.00}, 0.00000},
 
  904             {
dB_u{25.25}, 0.00000}, {
dB_u{25.50}, 0.00000}, {
dB_u{25.75}, 0.00000},
 
  905             {
dB_u{26.00}, 0.00000}, {
dB_u{26.25}, 0.00000}, {
dB_u{26.50}, 0.00000},
 
  906             {
dB_u{26.75}, 0.00000}, {
dB_u{27.00}, 0.00000}, {
dB_u{27.25}, 0.00000},
 
  907             {
dB_u{27.50}, 0.00000}, {
dB_u{27.75}, 0.00000}, {
dB_u{28.00}, 0.00000},
 
  908             {
dB_u{28.25}, 0.00000}, {
dB_u{28.50}, 0.00000}, {
dB_u{28.75}, 0.00000},
 
  909             {
dB_u{29.00}, 0.00000}, {
dB_u{29.25}, 0.00000}, {
dB_u{29.50}, 0.00000},
 
  910             {
dB_u{29.75}, 0.00000}, {
dB_u{30.00}, 0.00000},
 
  913        {std::make_pair(7, 1500),
 
  915             {
dB_u{-4.00}, 1.00000}, {
dB_u{-3.75}, 1.00000}, {
dB_u{-3.50}, 1.00000},
 
  916             {
dB_u{-3.25}, 1.00000}, {
dB_u{-3.00}, 1.00000}, {
dB_u{-2.75}, 1.00000},
 
  917             {
dB_u{-2.50}, 1.00000}, {
dB_u{-2.25}, 1.00000}, {
dB_u{-2.00}, 1.00000},
 
  918             {
dB_u{-1.75}, 1.00000}, {
dB_u{-1.50}, 1.00000}, {
dB_u{-1.25}, 1.00000},
 
  919             {
dB_u{-1.00}, 1.00000}, {
dB_u{-0.75}, 1.00000}, {
dB_u{-0.50}, 1.00000},
 
  920             {
dB_u{-0.25}, 1.00000}, {
dB_u{0.00}, 1.00000},  {
dB_u{0.25}, 1.00000},
 
  921             {
dB_u{0.50}, 1.00000},  {
dB_u{0.75}, 1.00000},  {
dB_u{1.00}, 1.00000},
 
  922             {
dB_u{1.25}, 1.00000},  {
dB_u{1.50}, 1.00000},  {
dB_u{1.75}, 1.00000},
 
  923             {
dB_u{2.00}, 1.00000},  {
dB_u{2.25}, 1.00000},  {
dB_u{2.50}, 1.00000},
 
  924             {
dB_u{2.75}, 1.00000},  {
dB_u{3.00}, 1.00000},  {
dB_u{3.25}, 1.00000},
 
  925             {
dB_u{3.50}, 1.00000},  {
dB_u{3.75}, 1.00000},  {
dB_u{4.00}, 1.00000},
 
  926             {
dB_u{4.25}, 1.00000},  {
dB_u{4.50}, 1.00000},  {
dB_u{4.75}, 1.00000},
 
  927             {
dB_u{5.00}, 1.00000},  {
dB_u{5.25}, 1.00000},  {
dB_u{5.50}, 1.00000},
 
  928             {
dB_u{5.75}, 1.00000},  {
dB_u{6.00}, 1.00000},  {
dB_u{6.25}, 1.00000},
 
  929             {
dB_u{6.50}, 1.00000},  {
dB_u{6.75}, 1.00000},  {
dB_u{7.00}, 1.00000},
 
  930             {
dB_u{7.25}, 1.00000},  {
dB_u{7.50}, 1.00000},  {
dB_u{7.75}, 1.00000},
 
  931             {
dB_u{8.00}, 1.00000},  {
dB_u{8.25}, 1.00000},  {
dB_u{8.50}, 1.00000},
 
  932             {
dB_u{8.75}, 1.00000},  {
dB_u{9.00}, 1.00000},  {
dB_u{9.25}, 1.00000},
 
  933             {
dB_u{9.50}, 1.00000},  {
dB_u{9.75}, 1.00000},  {
dB_u{10.00}, 1.00000},
 
  934             {
dB_u{10.25}, 1.00000}, {
dB_u{10.50}, 1.00000}, {
dB_u{10.75}, 1.00000},
 
  935             {
dB_u{11.00}, 1.00000}, {
dB_u{11.25}, 1.00000}, {
dB_u{11.50}, 1.00000},
 
  936             {
dB_u{11.75}, 1.00000}, {
dB_u{12.00}, 1.00000}, {
dB_u{12.25}, 1.00000},
 
  937             {
dB_u{12.50}, 1.00000}, {
dB_u{12.75}, 1.00000}, {
dB_u{13.00}, 1.00000},
 
  938             {
dB_u{13.25}, 1.00000}, {
dB_u{13.50}, 1.00000}, {
dB_u{13.75}, 1.00000},
 
  939             {
dB_u{14.00}, 1.00000}, {
dB_u{14.25}, 1.00000}, {
dB_u{14.50}, 1.00000},
 
  940             {
dB_u{14.75}, 1.00000}, {
dB_u{15.00}, 1.00000}, {
dB_u{15.25}, 1.00000},
 
  941             {
dB_u{15.50}, 1.00000}, {
dB_u{15.75}, 1.00000}, {
dB_u{16.00}, 1.00000},
 
  942             {
dB_u{16.25}, 1.00000}, {
dB_u{16.50}, 1.00000}, {
dB_u{16.75}, 1.00000},
 
  943             {
dB_u{17.00}, 1.00000}, {
dB_u{17.25}, 1.00000}, {
dB_u{17.50}, 1.00000},
 
  944             {
dB_u{17.75}, 0.99057}, {
dB_u{18.00}, 0.98075}, {
dB_u{18.25}, 0.86664},
 
  945             {
dB_u{18.50}, 0.74920}, {
dB_u{18.75}, 0.54857}, {
dB_u{19.00}, 0.34531},
 
  946             {
dB_u{19.25}, 0.23624}, {
dB_u{19.50}, 0.12672}, {
dB_u{19.75}, 0.08164},
 
  947             {
dB_u{20.00}, 0.03650}, {
dB_u{20.25}, 0.02340}, {
dB_u{20.50}, 0.01029},
 
  948             {
dB_u{20.75}, 0.00653}, {
dB_u{21.00}, 0.00278}, {
dB_u{21.25}, 0.00165},
 
  949             {
dB_u{21.50}, 0.00051}, {
dB_u{21.75}, 0.00030}, {
dB_u{22.00}, 0.00009},
 
  950             {
dB_u{22.25}, 0.00005}, {
dB_u{22.50}, 0.00001}, {
dB_u{22.75}, 0.00000},
 
  951             {
dB_u{23.00}, 0.00000}, {
dB_u{23.25}, 0.00000}, {
dB_u{23.50}, 0.00000},
 
  952             {
dB_u{23.75}, 0.00000}, {
dB_u{24.00}, 0.00000}, {
dB_u{24.25}, 0.00000},
 
  953             {
dB_u{24.50}, 0.00000}, {
dB_u{24.75}, 0.00000}, {
dB_u{25.00}, 0.00000},
 
  954             {
dB_u{25.25}, 0.00000}, {
dB_u{25.50}, 0.00000}, {
dB_u{25.75}, 0.00000},
 
  955             {
dB_u{26.00}, 0.00000}, {
dB_u{26.25}, 0.00000}, {
dB_u{26.50}, 0.00000},
 
  956             {
dB_u{26.75}, 0.00000}, {
dB_u{27.00}, 0.00000}, {
dB_u{27.25}, 0.00000},
 
  957             {
dB_u{27.50}, 0.00000}, {
dB_u{27.75}, 0.00000}, {
dB_u{28.00}, 0.00000},
 
  958             {
dB_u{28.25}, 0.00000}, {
dB_u{28.50}, 0.00000}, {
dB_u{28.75}, 0.00000},
 
  959             {
dB_u{29.00}, 0.00000}, {
dB_u{29.25}, 0.00000}, {
dB_u{29.50}, 0.00000},
 
  960             {
dB_u{29.75}, 0.00000}, {
dB_u{30.00}, 0.00000},
 
  963        {std::make_pair(8, 1500),
 
  965             {
dB_u{-4.00}, 1.00000}, {
dB_u{-3.75}, 1.00000}, {
dB_u{-3.50}, 1.00000},
 
  966             {
dB_u{-3.25}, 1.00000}, {
dB_u{-3.00}, 1.00000}, {
dB_u{-2.75}, 1.00000},
 
  967             {
dB_u{-2.50}, 1.00000}, {
dB_u{-2.25}, 1.00000}, {
dB_u{-2.00}, 1.00000},
 
  968             {
dB_u{-1.75}, 1.00000}, {
dB_u{-1.50}, 1.00000}, {
dB_u{-1.25}, 1.00000},
 
  969             {
dB_u{-1.00}, 1.00000}, {
dB_u{-0.75}, 1.00000}, {
dB_u{-0.50}, 1.00000},
 
  970             {
dB_u{-0.25}, 1.00000}, {
dB_u{0.00}, 1.00000},  {
dB_u{0.25}, 1.00000},
 
  971             {
dB_u{0.50}, 1.00000},  {
dB_u{0.75}, 1.00000},  {
dB_u{1.00}, 1.00000},
 
  972             {
dB_u{1.25}, 1.00000},  {
dB_u{1.50}, 1.00000},  {
dB_u{1.75}, 1.00000},
 
  973             {
dB_u{2.00}, 1.00000},  {
dB_u{2.25}, 1.00000},  {
dB_u{2.50}, 1.00000},
 
  974             {
dB_u{2.75}, 1.00000},  {
dB_u{3.00}, 1.00000},  {
dB_u{3.25}, 1.00000},
 
  975             {
dB_u{3.50}, 1.00000},  {
dB_u{3.75}, 1.00000},  {
dB_u{4.00}, 1.00000},
 
  976             {
dB_u{4.25}, 1.00000},  {
dB_u{4.50}, 1.00000},  {
dB_u{4.75}, 1.00000},
 
  977             {
dB_u{5.00}, 1.00000},  {
dB_u{5.25}, 1.00000},  {
dB_u{5.50}, 1.00000},
 
  978             {
dB_u{5.75}, 1.00000},  {
dB_u{6.00}, 1.00000},  {
dB_u{6.25}, 1.00000},
 
  979             {
dB_u{6.50}, 1.00000},  {
dB_u{6.75}, 1.00000},  {
dB_u{7.00}, 1.00000},
 
  980             {
dB_u{7.25}, 1.00000},  {
dB_u{7.50}, 1.00000},  {
dB_u{7.75}, 1.00000},
 
  981             {
dB_u{8.00}, 1.00000},  {
dB_u{8.25}, 1.00000},  {
dB_u{8.50}, 1.00000},
 
  982             {
dB_u{8.75}, 1.00000},  {
dB_u{9.00}, 1.00000},  {
dB_u{9.25}, 1.00000},
 
  983             {
dB_u{9.50}, 1.00000},  {
dB_u{9.75}, 1.00000},  {
dB_u{10.00}, 1.00000},
 
  984             {
dB_u{10.25}, 1.00000}, {
dB_u{10.50}, 1.00000}, {
dB_u{10.75}, 1.00000},
 
  985             {
dB_u{11.00}, 1.00000}, {
dB_u{11.25}, 1.00000}, {
dB_u{11.50}, 1.00000},
 
  986             {
dB_u{11.75}, 1.00000}, {
dB_u{12.00}, 1.00000}, {
dB_u{12.25}, 1.00000},
 
  987             {
dB_u{12.50}, 1.00000}, {
dB_u{12.75}, 1.00000}, {
dB_u{13.00}, 1.00000},
 
  988             {
dB_u{13.25}, 1.00000}, {
dB_u{13.50}, 1.00000}, {
dB_u{13.75}, 1.00000},
 
  989             {
dB_u{14.00}, 1.00000}, {
dB_u{14.25}, 1.00000}, {
dB_u{14.50}, 1.00000},
 
  990             {
dB_u{14.75}, 1.00000}, {
dB_u{15.00}, 1.00000}, {
dB_u{15.25}, 1.00000},
 
  991             {
dB_u{15.50}, 1.00000}, {
dB_u{15.75}, 1.00000}, {
dB_u{16.00}, 1.00000},
 
  992             {
dB_u{16.25}, 1.00000}, {
dB_u{16.50}, 1.00000}, {
dB_u{16.75}, 1.00000},
 
  993             {
dB_u{17.00}, 1.00000}, {
dB_u{17.25}, 1.00000}, {
dB_u{17.50}, 1.00000},
 
  994             {
dB_u{17.75}, 1.00000}, {
dB_u{18.00}, 1.00000}, {
dB_u{18.25}, 1.00000},
 
  995             {
dB_u{18.50}, 1.00000}, {
dB_u{18.75}, 1.00000}, {
dB_u{19.00}, 1.00000},
 
  996             {
dB_u{19.25}, 1.00000}, {
dB_u{19.50}, 1.00000}, {
dB_u{19.75}, 1.00000},
 
  997             {
dB_u{20.00}, 1.00000}, {
dB_u{20.25}, 1.00000}, {
dB_u{20.50}, 1.00000},
 
  998             {
dB_u{20.75}, 1.00000}, {
dB_u{21.00}, 1.00000}, {
dB_u{21.25}, 0.99918},
 
  999             {
dB_u{21.50}, 0.99833}, {
dB_u{21.75}, 0.97191}, {
dB_u{22.00}, 0.94458},
 
 1000             {
dB_u{22.25}, 0.81436}, {
dB_u{22.50}, 0.68127}, {
dB_u{22.75}, 0.52168},
 
 1001             {
dB_u{23.00}, 0.36056}, {
dB_u{23.25}, 0.25114}, {
dB_u{23.50}, 0.14127},
 
 1002             {
dB_u{23.75}, 0.09509}, {
dB_u{24.00}, 0.04883}, {
dB_u{24.25}, 0.03234},
 
 1003             {
dB_u{24.50}, 0.01584}, {
dB_u{24.75}, 0.01060}, {
dB_u{25.00}, 0.00535},
 
 1004             {
dB_u{25.25}, 0.00345}, {
dB_u{25.50}, 0.00154}, {
dB_u{25.75}, 0.00096},
 
 1005             {
dB_u{26.00}, 0.00037}, {
dB_u{26.25}, 0.00022}, {
dB_u{26.50}, 0.00007},
 
 1006             {
dB_u{26.75}, 0.00004}, {
dB_u{27.00}, 0.00000}, {
dB_u{27.25}, 0.00000},
 
 1007             {
dB_u{27.50}, 0.00000}, {
dB_u{27.75}, 0.00000}, {
dB_u{28.00}, 0.00000},
 
 1008             {
dB_u{28.25}, 0.00000}, {
dB_u{28.50}, 0.00000}, {
dB_u{28.75}, 0.00000},
 
 1009             {
dB_u{29.00}, 0.00000}, {
dB_u{29.25}, 0.00000}, {
dB_u{29.50}, 0.00000},
 
 1010             {
dB_u{29.75}, 0.00000}, {
dB_u{30.00}, 0.00000},
 
 
 1034    void DoRun() 
override;
 
 
 1045      m_testName(testName),
 
 
 1067    for (
dB_u snr = -4; snr <= 
dB_u{30}; snr += 
dB_u{0.25})
 
 1069        double expectedValue = 0;
 
 1074                1 - yans->GetChunkSuccessRate(
m_mode, txVector, std::pow(10, snr / 10), 
m_size * 8);
 
 1081                auto itValue = it->second.find(snr);
 
 1082                if (itValue != it->second.end())
 
 1084                    expectedValue = itValue->second;
 
 1093                NS_FATAL_ERROR(
"No expected value found for the combination MCS " 
 1098            1 - table->GetChunkSuccessRate(
m_mode, txVector, std::pow(10, snr / 10), 
m_size * 8);
 
 1100                               << 
" expectedPER=" << expectedValue);
 
 
 1126                TestCase::Duration::QUICK);
 
 1129        TestCase::Duration::QUICK);
 
 1133                TestCase::Duration::QUICK);
 
 1136        TestCase::Duration::QUICK);
 
 1140                TestCase::Duration::QUICK);
 
 1144                TestCase::Duration::QUICK);
 
 1148                TestCase::Duration::QUICK);
 
 1152                TestCase::Duration::QUICK);
 
 1156                TestCase::Duration::QUICK);
 
 1159        TestCase::Duration::QUICK);
 
 1163                TestCase::Duration::QUICK);
 
 1167                TestCase::Duration::QUICK);
 
 1171                TestCase::Duration::QUICK);
 
 
Wifi Table-based Error Rate Models Test Case.
void DoRun() override
Implementation to actually run this TestCase.
WifiMode m_mode
The WifiMode to test.
uint32_t m_size
The size (in bytes) to test.
TableBasedErrorRateTestCase(const std::string &testName, WifiMode mode, uint32_t size)
Constructor.
std::string m_testName
The name of the test to run.
~TableBasedErrorRateTestCase() override
double CalculatePayloadChunkSuccessRate(double snir, Time duration, const WifiTxVector &txVector, uint16_t staId=SU_STA_ID) const
Calculate the success rate of the payload chunk given the SINR, duration, and TXVECTOR.
double CalculateSnr(Ptr< Event > event, MHz_u channelWidth, uint8_t nss, const WifiSpectrumBandInfo &band) const
Calculate the SNIR for the event (starting from now until the event end).
Wifi Error Rate Models Test Case Dsss.
~WifiErrorRateModelsTestCaseDsss() override
void DoRun() override
Implementation to actually run this TestCase.
WifiErrorRateModelsTestCaseDsss()
Wifi Error Rate Models Test Case MIMO.
WifiErrorRateModelsTestCaseMimo()
void DoRun() override
Implementation to actually run this TestCase.
~WifiErrorRateModelsTestCaseMimo() override
Wifi Error Rate Models Test Case Nist.
void DoRun() override
Implementation to actually run this TestCase.
WifiErrorRateModelsTestCaseNist()
~WifiErrorRateModelsTestCaseNist() override
Wifi Error Rate Models Test Suite.
WifiErrorRateModelsTestSuite()
static double GetDsssDqpskSuccessRate(double sinr, uint64_t nbits)
Return the chunk success rate of the differential encoded QPSK.
static double GetDsssDbpskSuccessRate(double sinr, uint64_t nbits)
Return the chunk success rate of the differential BPSK.
static double GetDsssDqpskCck5_5SuccessRate(double sinr, uint64_t nbits)
Return the chunk success rate of the differential encoded QPSK for 5.5Mbps data rate.
static double GetDsssDqpskCck11SuccessRate(double sinr, uint64_t nbits)
Return the chunk success rate of the differential encoded QPSK for 11Mbps data rate.
static WifiMode GetHeMcs11()
Return MCS 11 from HE MCS values.
static WifiMode GetHtMcs0()
Return MCS 0 from HT MCS values.
static WifiMode GetHtMcs7()
Return MCS 7 from HT MCS values.
handles interference calculations
void SetNoiseFigure(double value)
Set the noise figure.
void SetErrorRateModel(const Ptr< ErrorRateModel > rate)
Set the error rate model for this interference helper.
double CalculatePayloadChunkSuccessRate(double snir, Time duration, const WifiTxVector &txVector, uint16_t staId=SU_STA_ID) const
Calculate the success rate of the payload chunk given the SINR, duration, and TXVECTOR.
void SetNumberOfReceiveAntennas(uint8_t rx)
Set the number of RX antennas in the receiver corresponding to this interference helper.
double CalculateSnr(Ptr< Event > event, MHz_u channelWidth, uint8_t nss, const WifiSpectrumBandInfo &band) const
Calculate the SNIR for the event (starting from now until the event end).
Smart pointer class similar to boost::intrusive_ptr.
void AddTestCase(TestCase *testCase, Duration duration=Duration::QUICK)
Add an individual child TestCase to this test suite.
Simulation virtual time values and global simulation resolution.
static WifiMode GetVhtMcs0()
Return MCS 0 from VHT MCS values.
static WifiMode GetVhtMcs8()
Return MCS 8 from VHT MCS values.
represent a single transmission mode
uint8_t GetMcsValue() const
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
void SetTxPowerLevel(uint8_t powerlevel)
Sets the selected transmission power level.
void SetChannelWidth(MHz_u channelWidth)
Sets the selected channelWidth.
uint8_t GetNss(uint16_t staId=SU_STA_ID) const
If this TX vector is associated with an SU PPDU, return the number of spatial streams.
MHz_u GetChannelWidth() const
void SetNTx(uint8_t nTx)
Sets the number of TX antennas.
void SetMode(WifiMode mode)
Sets the selected payload transmission mode.
void SetNss(uint8_t nss)
Sets the number of Nss.
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO.
Ptr< T > CreateObject(Args &&... args)
Create an object by type, with varying number of constructor parameters.
#define NS_TEST_ASSERT_MSG_GT(actual, limit, msg)
Test that an actual value is greater than a limit and report and abort if not.
#define NS_TEST_ASSERT_MSG_EQ_TOL(actual, limit, tol, msg)
Test that actual and expected (limit) values are equal to plus or minus some tolerance and report and...
Time MilliSeconds(uint64_t value)
Construct a Time in the indicated unit.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
dB_u RatioToDb(double ratio)
Convert from ratio to dB.
const uint8_t ERROR_TABLE_BCC_MAX_NUM_MCS
maximum number of MCSs for BCC
double DbToRatio(dB_u val)
Convert from dB to ratio.
static double FromRss(dBW_u rss)
std::map< std::pair< uint8_t, uint32_t >, std::map< dB_u, double > > expectedTableValues
map of PER values that have been manually computed for a given MCS, size (in bytes) and SNR (in dB) i...
static WifiErrorRateModelsTestSuite wifiErrorRateModelsTestSuite
the test suite