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