45 BERC::BERC(
int indelay,
int inignorefirst,
int inignorelast):
46 delay(indelay), ignorefirst(inignorefirst), ignorelast(inignorelast),
47 errors(0), corrects(0) {}
52 - ignorefirst - ignorelast;
55 for (
int i = 0; i < countlength; i++) {
56 if (in1(i + ignorefirst) == in2(i + ignorefirst + delay)) {
65 for (
int i = 0; i < countlength; i++) {
66 if (in1(i + ignorefirst - delay) == in2(i + ignorefirst)) {
79 int num, start1, start2;
80 int min_input_length =
std::min(in1.length(), in2.length());
81 int bestdelay = mindelay;
84 for (
int i = mindelay; i < maxdelay; i++) {
85 num = min_input_length -
std::abs(i) - ignorefirst - ignorelast;
86 start1 = (i < 0) ? -i : 0;
87 start2 = (i > 0) ? i : 0;
89 in2.mid(start2, num)))));
90 if (correlation > bestcorr) {
92 bestcorr = correlation;
100 std::cout.setf(std::ios::fixed);
101 std::cout << std::endl
102 <<
"==================================" << std::endl
103 <<
" Bit Error Counter Report " << std::endl
104 <<
"==================================" << std::endl
105 <<
" Ignore First = " << ignorefirst << std::endl
106 <<
" Ignore Last = " << ignorelast << std::endl
107 <<
" Delay = " << delay << std::endl
108 <<
" Number of counted bits = " << std::setprecision(0)
109 << (errors + corrects) << std::endl
110 <<
" Number of errors = " << std::setprecision(0)
111 << errors << std::endl
112 <<
"==================================" << std::endl
113 <<
" Error rate = " << std::setprecision(8)
114 << (errors / (errors + corrects)) << std::endl
115 <<
"==================================" << std::endl << std::endl;
119 int inignorefirst,
int inignorelast)
122 - inignorefirst - inignorelast;
123 int local_errors = 0;
126 for (
int i = 0; i < countlength; i++) {
127 if (in1(i + inignorefirst) != in2(i + inignorefirst + indelay)) {
133 for (
int i = 0; i < countlength; i++) {
134 if (in1(i + inignorefirst - indelay) != in2(i + inignorefirst)) {
152 BLERC::BLERC(
int inblocksize): setup_done(true), blocksize(inblocksize),
153 errors(0), corrects(0) {}
158 blocksize = inblocksize;
170 "BLERC::count(): Block size has to be setup before counting errors.");
171 int min_input_length =
std::min(in1.length(), in2.length());
173 "BLERC::count(): Block size must not be longer than input vectors.");
175 for (
int i = 0; i < (min_input_length / blocksize); i++) {
177 for (
int j = 0; j < blocksize; j++) {
178 if (in1(i * blocksize + j) != in2(i * blocksize + j)) {