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"
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")
190 std::pow(10.0, snr / 10.0),
196 std::pow(10.0, snr / 10.0),
202 std::pow(10.0, snr / 10.0),
208 std::pow(10.0, snr / 10.0),
215 std::pow(10.0, snr / 10.0),
221 std::pow(10.0, snr / 10.0),
227 std::pow(10.0, snr / 10.0),
233 std::pow(10.0, snr / 10.0),
240 std::pow(10.0, snr / 10.0),
246 std::pow(10.0, snr / 10.0),
252 std::pow(10.0, snr / 10.0),
258 std::pow(10.0, snr / 10.0),
265 std::pow(10.0, snr / 10.0),
271 std::pow(10.0, snr / 10.0),
277 std::pow(10.0, snr / 10.0),
283 std::pow(10.0, snr / 10.0),
290 std::pow(10.0, snr / 10.0),
296 std::pow(10.0, snr / 10.0),
302 std::pow(10.0, snr / 10.0),
308 std::pow(10.0, snr / 10.0),
315 std::pow(10.0, snr / 10.0),
321 std::pow(10.0, snr / 10.0),
327 std::pow(10.0, snr / 10.0),
333 std::pow(10.0, snr / 10.0),
340 std::pow(10.0, snr / 10.0),
346 std::pow(10.0, snr / 10.0),
352 std::pow(10.0, snr / 10.0),
358 std::pow(10.0, snr / 10.0),
365 std::pow(10.0, snr / 10.0),
371 std::pow(10.0, snr / 10.0),
377 std::pow(10.0, snr / 10.0),
383 std::pow(10.0, snr / 10.0),
408 void DoRun()
override;
412 :
TestCase(
"WifiErrorRateModel test case MIMO")
448 "Attempt to set initial SNR to known value failed");
454 "CSR not within tolerance for SISO");
467 "SNR not within tolerance for 2x1:2 MIMO");
472 "CSR not within tolerance for SISO");
486 "SNR not within tolerance for 1x2:1 MIMO");
490 "CSR not within tolerance for 1x2:1 MIMO");
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");
540 "SNR not within tolerance for 3x3:1 MIMO");
544 "CSR not within tolerance for 3x3:1 MIMO");
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");
594 "SNR not within tolerance for 4x4:1 MIMO");
598 "CSR not within tolerance for 4x4:1 MIMO");
612 "SNR not within tolerance for 4x4:2 MIMO");
616 "CSR not within tolerance for 4x4:2 MIMO");
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})
1074 1 -
yans->GetChunkSuccessRate(
m_mode, txVector, std::pow(10, snr / 10),
m_size * 8);
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);
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
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.
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).
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 > Create(Ts &&... args)
Create class instances by constructors with varying numbers of arguments and return them by Ptr.
#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
static unsigned int value(char c)
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