Statistics
| Branch: | Tag: | Revision:

root / gnuradio-core / src / lib / general / qa_gr_firdes.cc @ ed236703

History | View | Annotate | Download (11.2 kB)

1 5d69a524 jcorgan
/* -*- c++ -*- */
2 5d69a524 jcorgan
/*
3 5d69a524 jcorgan
 * Copyright 2002 Free Software Foundation, Inc.
4 5d69a524 jcorgan
 * 
5 5d69a524 jcorgan
 * This file is part of GNU Radio
6 5d69a524 jcorgan
 * 
7 5d69a524 jcorgan
 * GNU Radio is free software; you can redistribute it and/or modify
8 5d69a524 jcorgan
 * it under the terms of the GNU General Public License as published by
9 937b719d eb
 * the Free Software Foundation; either version 3, or (at your option)
10 5d69a524 jcorgan
 * any later version.
11 5d69a524 jcorgan
 * 
12 5d69a524 jcorgan
 * GNU Radio is distributed in the hope that it will be useful,
13 5d69a524 jcorgan
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 5d69a524 jcorgan
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 5d69a524 jcorgan
 * GNU General Public License for more details.
16 5d69a524 jcorgan
 * 
17 5d69a524 jcorgan
 * You should have received a copy of the GNU General Public License
18 5d69a524 jcorgan
 * along with GNU Radio; see the file COPYING.  If not, write to
19 86f5c924 eb
 * the Free Software Foundation, Inc., 51 Franklin Street,
20 86f5c924 eb
 * Boston, MA 02110-1301, USA.
21 5d69a524 jcorgan
 */
22 5d69a524 jcorgan
23 5d69a524 jcorgan
#include <qa_gr_firdes.h>
24 5d69a524 jcorgan
#include <gr_firdes.h>
25 5d69a524 jcorgan
#include <cppunit/TestAssert.h>
26 5d69a524 jcorgan
#include <gr_complex.h>
27 5d69a524 jcorgan
#include <string.h>
28 5d69a524 jcorgan
#include <iostream>
29 5d69a524 jcorgan
#include <iomanip>
30 5d69a524 jcorgan
#include <stdio.h>
31 5d69a524 jcorgan
32 5d69a524 jcorgan
#define        NELEM(x) (sizeof (x) / sizeof (x[0]))
33 5d69a524 jcorgan
34 5d69a524 jcorgan
using std::vector;
35 5d69a524 jcorgan
36 34af4364 jcorgan
#if 0
37 5d69a524 jcorgan
static void
38 5d69a524 jcorgan
print_taps (std::ostream &s, vector<float> &v)
39 5d69a524 jcorgan
{
40 5d69a524 jcorgan
  
41 5d69a524 jcorgan
  for (unsigned int i = 0; i < v.size (); i++){
42 5d69a524 jcorgan
    printf ("tap[%2d] = %16.7e\n", i, v[i]);
43 5d69a524 jcorgan
  }
44 5d69a524 jcorgan
}
45 34af4364 jcorgan
#endif
46 5d69a524 jcorgan
47 5d69a524 jcorgan
static void
48 5d69a524 jcorgan
check_symmetry (vector<float> &v)
49 5d69a524 jcorgan
{
50 5d69a524 jcorgan
  int        n = v.size ();
51 5d69a524 jcorgan
  int        m = n / 2;
52 5d69a524 jcorgan
53 5d69a524 jcorgan
  for (int i = 0; i < m; i++)
54 5d69a524 jcorgan
    CPPUNIT_ASSERT_DOUBLES_EQUAL (v[i], v[n - i - 1], 1e-9);
55 5d69a524 jcorgan
}
56 5d69a524 jcorgan
57 5d69a524 jcorgan
const static float t1_exp[53] = {
58 5d69a524 jcorgan
 -9.0525491e-04,
59 5d69a524 jcorgan
  2.0713841e-04,
60 5d69a524 jcorgan
  1.2388536e-03,
61 5d69a524 jcorgan
  2.9683491e-04,
62 5d69a524 jcorgan
 -1.7744775e-03,
63 5d69a524 jcorgan
 -1.3599906e-03,
64 5d69a524 jcorgan
  2.2031884e-03,
65 5d69a524 jcorgan
  3.2744040e-03,
66 5d69a524 jcorgan
 -1.8868084e-03,
67 5d69a524 jcorgan
 -5.9935520e-03,
68 5d69a524 jcorgan
  6.4301129e-18,
69 5d69a524 jcorgan
  8.9516686e-03,
70 5d69a524 jcorgan
  4.2178580e-03,
71 5d69a524 jcorgan
 -1.0998557e-02,
72 5d69a524 jcorgan
 -1.1173409e-02,
73 5d69a524 jcorgan
  1.0455756e-02,
74 5d69a524 jcorgan
  2.0686293e-02,
75 5d69a524 jcorgan
 -5.2032238e-03,
76 5d69a524 jcorgan
 -3.1896964e-02,
77 5d69a524 jcorgan
 -7.4998410e-03,
78 5d69a524 jcorgan
  4.3362070e-02,
79 5d69a524 jcorgan
  3.2502845e-02,
80 5d69a524 jcorgan
 -5.3328082e-02,
81 5d69a524 jcorgan
 -8.5621715e-02,
82 5d69a524 jcorgan
  6.0117975e-02,
83 5d69a524 jcorgan
  3.1128189e-01,
84 5d69a524 jcorgan
  4.3769023e-01,
85 5d69a524 jcorgan
  3.1128189e-01,
86 5d69a524 jcorgan
  6.0117975e-02,
87 5d69a524 jcorgan
 -8.5621715e-02,
88 5d69a524 jcorgan
 -5.3328082e-02,
89 5d69a524 jcorgan
  3.2502845e-02,
90 5d69a524 jcorgan
  4.3362070e-02,
91 5d69a524 jcorgan
 -7.4998410e-03,
92 5d69a524 jcorgan
 -3.1896964e-02,
93 5d69a524 jcorgan
 -5.2032238e-03,
94 5d69a524 jcorgan
  2.0686293e-02,
95 5d69a524 jcorgan
  1.0455756e-02,
96 5d69a524 jcorgan
 -1.1173409e-02,
97 5d69a524 jcorgan
 -1.0998557e-02,
98 5d69a524 jcorgan
  4.2178580e-03,
99 5d69a524 jcorgan
  8.9516686e-03,
100 5d69a524 jcorgan
  6.4301129e-18,
101 5d69a524 jcorgan
 -5.9935520e-03,
102 5d69a524 jcorgan
 -1.8868084e-03,
103 5d69a524 jcorgan
  3.2744040e-03,
104 5d69a524 jcorgan
  2.2031884e-03,
105 5d69a524 jcorgan
 -1.3599906e-03,
106 5d69a524 jcorgan
 -1.7744775e-03,
107 5d69a524 jcorgan
  2.9683491e-04,
108 5d69a524 jcorgan
  1.2388536e-03,
109 5d69a524 jcorgan
  2.0713841e-04,
110 5d69a524 jcorgan
 -9.0525491e-04
111 5d69a524 jcorgan
};
112 5d69a524 jcorgan
113 5d69a524 jcorgan
const static float t2_exp[53] = {
114 5d69a524 jcorgan
  9.0380036e-04,
115 5d69a524 jcorgan
 -2.0680559e-04,
116 5d69a524 jcorgan
 -1.2368630e-03,
117 5d69a524 jcorgan
 -2.9635796e-04,
118 5d69a524 jcorgan
  1.7716263e-03,
119 5d69a524 jcorgan
  1.3578053e-03,
120 5d69a524 jcorgan
 -2.1996482e-03,
121 5d69a524 jcorgan
 -3.2691427e-03,
122 5d69a524 jcorgan
  1.8837767e-03,
123 5d69a524 jcorgan
  5.9839217e-03,
124 5d69a524 jcorgan
 -6.4197810e-18,
125 5d69a524 jcorgan
 -8.9372853e-03,
126 5d69a524 jcorgan
 -4.2110807e-03,
127 5d69a524 jcorgan
  1.0980885e-02,
128 5d69a524 jcorgan
  1.1155456e-02,
129 5d69a524 jcorgan
 -1.0438956e-02,
130 5d69a524 jcorgan
 -2.0653054e-02,
131 5d69a524 jcorgan
  5.1948633e-03,
132 5d69a524 jcorgan
  3.1845711e-02,
133 5d69a524 jcorgan
  7.4877902e-03,
134 5d69a524 jcorgan
 -4.3292396e-02,
135 5d69a524 jcorgan
 -3.2450620e-02,
136 5d69a524 jcorgan
  5.3242393e-02,
137 5d69a524 jcorgan
  8.5484132e-02,
138 5d69a524 jcorgan
 -6.0021374e-02,
139 5d69a524 jcorgan
 -3.1078172e-01,
140 5d69a524 jcorgan
  5.6184036e-01,
141 5d69a524 jcorgan
 -3.1078172e-01,
142 5d69a524 jcorgan
 -6.0021374e-02,
143 5d69a524 jcorgan
  8.5484132e-02,
144 5d69a524 jcorgan
  5.3242393e-02,
145 5d69a524 jcorgan
 -3.2450620e-02,
146 5d69a524 jcorgan
 -4.3292396e-02,
147 5d69a524 jcorgan
  7.4877902e-03,
148 5d69a524 jcorgan
  3.1845711e-02,
149 5d69a524 jcorgan
  5.1948633e-03,
150 5d69a524 jcorgan
 -2.0653054e-02,
151 5d69a524 jcorgan
 -1.0438956e-02,
152 5d69a524 jcorgan
  1.1155456e-02,
153 5d69a524 jcorgan
  1.0980885e-02,
154 5d69a524 jcorgan
 -4.2110807e-03,
155 5d69a524 jcorgan
 -8.9372853e-03,
156 5d69a524 jcorgan
 -6.4197810e-18,
157 5d69a524 jcorgan
  5.9839217e-03,
158 5d69a524 jcorgan
  1.8837767e-03,
159 5d69a524 jcorgan
 -3.2691427e-03,
160 5d69a524 jcorgan
 -2.1996482e-03,
161 5d69a524 jcorgan
  1.3578053e-03,
162 5d69a524 jcorgan
  1.7716263e-03,
163 5d69a524 jcorgan
 -2.9635796e-04,
164 5d69a524 jcorgan
 -1.2368630e-03,
165 5d69a524 jcorgan
 -2.0680559e-04,
166 5d69a524 jcorgan
  9.0380036e-04
167 5d69a524 jcorgan
};
168 5d69a524 jcorgan
169 5d69a524 jcorgan
const static float t3_exp[107] = {
170 5d69a524 jcorgan
  -1.8970841e-06,
171 5d69a524 jcorgan
  -7.1057165e-04,
172 5d69a524 jcorgan
   5.4005696e-04,
173 5d69a524 jcorgan
   4.6233178e-04,
174 5d69a524 jcorgan
   2.0572044e-04,
175 5d69a524 jcorgan
   3.5209916e-04,
176 5d69a524 jcorgan
  -1.4098573e-03,
177 5d69a524 jcorgan
   1.1279077e-04,
178 5d69a524 jcorgan
  -6.2994129e-04,
179 5d69a524 jcorgan
   1.1450432e-03,
180 5d69a524 jcorgan
   1.3637283e-03,
181 5d69a524 jcorgan
  -6.4360141e-04,
182 5d69a524 jcorgan
   3.6509900e-04,
183 5d69a524 jcorgan
  -3.2864159e-03,
184 5d69a524 jcorgan
   7.0192874e-04,
185 5d69a524 jcorgan
   3.7524730e-04,
186 5d69a524 jcorgan
   2.0256115e-03,
187 5d69a524 jcorgan
   3.0641893e-03,
188 5d69a524 jcorgan
  -3.6618244e-03,
189 5d69a524 jcorgan
   7.5592739e-05,
190 5d69a524 jcorgan
  -5.5586505e-03,
191 5d69a524 jcorgan
   2.3849572e-03,
192 5d69a524 jcorgan
   4.0114378e-03,
193 5d69a524 jcorgan
   1.6636450e-03,
194 5d69a524 jcorgan
   4.7835698e-03,
195 5d69a524 jcorgan
  -1.0191196e-02,
196 5d69a524 jcorgan
  -3.8158931e-04,
197 5d69a524 jcorgan
  -5.5551580e-03,
198 5d69a524 jcorgan
   5.3901658e-03,
199 5d69a524 jcorgan
   1.1366769e-02,
200 5d69a524 jcorgan
  -3.0000482e-03,
201 5d69a524 jcorgan
   4.9341680e-03,
202 5d69a524 jcorgan
  -2.0093076e-02,
203 5d69a524 jcorgan
   5.5752542e-17,
204 5d69a524 jcorgan
   1.2093617e-03,
205 5d69a524 jcorgan
   8.6089745e-03,
206 5d69a524 jcorgan
   2.2382140e-02,
207 5d69a524 jcorgan
  -1.6854567e-02,
208 5d69a524 jcorgan
   1.6913920e-03,
209 5d69a524 jcorgan
  -3.1222520e-02,
210 5d69a524 jcorgan
   3.2711059e-03,
211 5d69a524 jcorgan
   2.2604836e-02,
212 5d69a524 jcorgan
   8.1451107e-03,
213 5d69a524 jcorgan
   3.7583180e-02,
214 5d69a524 jcorgan
  -5.2293688e-02,
215 5d69a524 jcorgan
  -8.0551542e-03,
216 5d69a524 jcorgan
  -4.0092729e-02,
217 5d69a524 jcorgan
   1.5582236e-02,
218 5d69a524 jcorgan
   9.7452506e-02,
219 5d69a524 jcorgan
  -1.6183170e-02,
220 5d69a524 jcorgan
   8.3281815e-02,
221 5d69a524 jcorgan
  -2.8196752e-01,
222 5d69a524 jcorgan
  -1.0965768e-01,
223 5d69a524 jcorgan
   5.2867508e-01,
224 5d69a524 jcorgan
  -1.0965768e-01,
225 5d69a524 jcorgan
  -2.8196752e-01,
226 5d69a524 jcorgan
   8.3281815e-02,
227 5d69a524 jcorgan
  -1.6183170e-02,
228 5d69a524 jcorgan
   9.7452506e-02,
229 5d69a524 jcorgan
   1.5582236e-02,
230 5d69a524 jcorgan
  -4.0092729e-02,
231 5d69a524 jcorgan
  -8.0551542e-03,
232 5d69a524 jcorgan
  -5.2293688e-02,
233 5d69a524 jcorgan
   3.7583180e-02,
234 5d69a524 jcorgan
   8.1451107e-03,
235 5d69a524 jcorgan
   2.2604836e-02,
236 5d69a524 jcorgan
   3.2711059e-03,
237 5d69a524 jcorgan
  -3.1222520e-02,
238 5d69a524 jcorgan
   1.6913920e-03,
239 5d69a524 jcorgan
  -1.6854567e-02,
240 5d69a524 jcorgan
   2.2382140e-02,
241 5d69a524 jcorgan
   8.6089745e-03,
242 5d69a524 jcorgan
   1.2093617e-03,
243 5d69a524 jcorgan
   5.5752542e-17,
244 5d69a524 jcorgan
  -2.0093076e-02,
245 5d69a524 jcorgan
   4.9341680e-03,
246 5d69a524 jcorgan
  -3.0000482e-03,
247 5d69a524 jcorgan
   1.1366769e-02,
248 5d69a524 jcorgan
   5.3901658e-03,
249 5d69a524 jcorgan
  -5.5551580e-03,
250 5d69a524 jcorgan
  -3.8158931e-04,
251 5d69a524 jcorgan
  -1.0191196e-02,
252 5d69a524 jcorgan
   4.7835698e-03,
253 5d69a524 jcorgan
   1.6636450e-03,
254 5d69a524 jcorgan
   4.0114378e-03,
255 5d69a524 jcorgan
   2.3849572e-03,
256 5d69a524 jcorgan
  -5.5586505e-03,
257 5d69a524 jcorgan
   7.5592739e-05,
258 5d69a524 jcorgan
  -3.6618244e-03,
259 5d69a524 jcorgan
   3.0641893e-03,
260 5d69a524 jcorgan
   2.0256115e-03,
261 5d69a524 jcorgan
   3.7524730e-04,
262 5d69a524 jcorgan
   7.0192874e-04,
263 5d69a524 jcorgan
  -3.2864159e-03,
264 5d69a524 jcorgan
   3.6509900e-04,
265 5d69a524 jcorgan
  -6.4360141e-04,
266 5d69a524 jcorgan
   1.3637283e-03,
267 5d69a524 jcorgan
   1.1450432e-03,
268 5d69a524 jcorgan
  -6.2994129e-04,
269 5d69a524 jcorgan
   1.1279077e-04,
270 5d69a524 jcorgan
  -1.4098573e-03,
271 5d69a524 jcorgan
   3.5209916e-04,
272 5d69a524 jcorgan
   2.0572044e-04,
273 5d69a524 jcorgan
   4.6233178e-04,
274 5d69a524 jcorgan
   5.4005696e-04,
275 5d69a524 jcorgan
  -7.1057165e-04,
276 5d69a524 jcorgan
  -1.8970841e-06
277 5d69a524 jcorgan
};
278 5d69a524 jcorgan
279 5d69a524 jcorgan
280 a3c5490e n4hy
const static float t4_exp[] = { // low pass
281 a3c5490e n4hy
 0.001059958362,
282 a3c5490e n4hy
0.0002263929928,
283 a3c5490e n4hy
-0.001277606934,
284 a3c5490e n4hy
-0.0009675776237,
285 a3c5490e n4hy
 0.001592264394,
286 a3c5490e n4hy
  0.00243603508,
287 a3c5490e n4hy
-0.001451682881,
288 a3c5490e n4hy
-0.004769335967,
289 a3c5490e n4hy
5.281541594e-18,
290 a3c5490e n4hy
 0.007567512803,
291 a3c5490e n4hy
 0.003658855334,
292 a3c5490e n4hy
-0.009761494584,
293 a3c5490e n4hy
 -0.01011830103,
294 a3c5490e n4hy
 0.009636915289,
295 a3c5490e n4hy
   0.0193619132,
296 a3c5490e n4hy
-0.004935568199,
297 a3c5490e n4hy
 -0.03060629964,
298 a3c5490e n4hy
-0.007267376408,
299 a3c5490e n4hy
  0.04236677289,
300 a3c5490e n4hy
  0.03197422624,
301 a3c5490e n4hy
 -0.05274848267,
302 a3c5490e n4hy
  -0.0850463286,
303 a3c5490e n4hy
  0.05989059806,
304 a3c5490e n4hy
     0.31065014,
305 a3c5490e n4hy
   0.4370569289,
306 a3c5490e n4hy
     0.31065014,
307 a3c5490e n4hy
  0.05989059806,
308 a3c5490e n4hy
  -0.0850463286,
309 a3c5490e n4hy
 -0.05274848267,
310 a3c5490e n4hy
  0.03197422624,
311 a3c5490e n4hy
  0.04236677289,
312 a3c5490e n4hy
-0.007267376408,
313 a3c5490e n4hy
 -0.03060629964,
314 a3c5490e n4hy
-0.004935568199,
315 a3c5490e n4hy
   0.0193619132,
316 a3c5490e n4hy
 0.009636915289,
317 a3c5490e n4hy
 -0.01011830103,
318 a3c5490e n4hy
-0.009761494584,
319 a3c5490e n4hy
 0.003658855334,
320 a3c5490e n4hy
 0.007567512803,
321 a3c5490e n4hy
5.281541594e-18,
322 a3c5490e n4hy
-0.004769335967,
323 a3c5490e n4hy
-0.001451682881,
324 a3c5490e n4hy
  0.00243603508,
325 a3c5490e n4hy
 0.001592264394,
326 a3c5490e n4hy
-0.0009675776237,
327 a3c5490e n4hy
-0.001277606934,
328 a3c5490e n4hy
0.0002263929928,
329 a3c5490e n4hy
 0.001059958362,
330 a3c5490e n4hy
};
331 a3c5490e n4hy
332 a3c5490e n4hy
333 a3c5490e n4hy
const static float t5_exp[] = { //high pass
334 a3c5490e n4hy
-0.001062123571,
335 a3c5490e n4hy
-0.0002268554381,
336 a3c5490e n4hy
 0.001280216733,
337 a3c5490e n4hy
 0.000969554123,
338 a3c5490e n4hy
-0.001595516922,
339 a3c5490e n4hy
-0.002441011136,
340 a3c5490e n4hy
 0.001454648213,
341 a3c5490e n4hy
 0.004779078532,
342 a3c5490e n4hy
-5.292330097e-18,
343 a3c5490e n4hy
-0.007582970895,
344 a3c5490e n4hy
 -0.00366632943,
345 a3c5490e n4hy
 0.009781434201,
346 a3c5490e n4hy
  0.01013896987,
347 a3c5490e n4hy
-0.009656600654,
348 a3c5490e n4hy
 -0.01940146461,
349 a3c5490e n4hy
 0.004945650231,
350 a3c5490e n4hy
  0.03066881932,
351 a3c5490e n4hy
  0.00728222169,
352 a3c5490e n4hy
 -0.04245331511,
353 a3c5490e n4hy
 -0.03203954175,
354 a3c5490e n4hy
  0.05285623297,
355 a3c5490e n4hy
  0.08522006124,
356 a3c5490e n4hy
 -0.06001294032,
357 a3c5490e n4hy
  -0.3112847209,
358 a3c5490e n4hy
   0.5630782247,
359 a3c5490e n4hy
  -0.3112847209,
360 a3c5490e n4hy
 -0.06001294032,
361 a3c5490e n4hy
  0.08522006124,
362 a3c5490e n4hy
  0.05285623297,
363 a3c5490e n4hy
 -0.03203954175,
364 a3c5490e n4hy
 -0.04245331511,
365 a3c5490e n4hy
  0.00728222169,
366 a3c5490e n4hy
  0.03066881932,
367 a3c5490e n4hy
 0.004945650231,
368 a3c5490e n4hy
 -0.01940146461,
369 a3c5490e n4hy
-0.009656600654,
370 a3c5490e n4hy
  0.01013896987,
371 a3c5490e n4hy
 0.009781434201,
372 a3c5490e n4hy
 -0.00366632943,
373 a3c5490e n4hy
-0.007582970895,
374 a3c5490e n4hy
-5.292330097e-18,
375 a3c5490e n4hy
 0.004779078532,
376 a3c5490e n4hy
 0.001454648213,
377 a3c5490e n4hy
-0.002441011136,
378 a3c5490e n4hy
-0.001595516922,
379 a3c5490e n4hy
 0.000969554123,
380 a3c5490e n4hy
 0.001280216733,
381 a3c5490e n4hy
-0.0002268554381,
382 a3c5490e n4hy
-0.001062123571,
383 a3c5490e n4hy
};
384 a3c5490e n4hy
385 a3c5490e n4hy
const static float t6_exp[] = { // bandpass
386 a3c5490e n4hy
0.0002809273137,
387 a3c5490e n4hy
-0.001047327649,
388 a3c5490e n4hy
7.936541806e-05,
389 a3c5490e n4hy
-0.0004270860809,
390 a3c5490e n4hy
0.0007595835486,
391 a3c5490e n4hy
0.0008966081077,
392 a3c5490e n4hy
-0.0004236323002,
393 a3c5490e n4hy
0.0002423936094,
394 a3c5490e n4hy
-0.002212299034,
395 a3c5490e n4hy
0.0004807534278,
396 a3c5490e n4hy
0.0002620361629,
397 a3c5490e n4hy
 0.001443728455,
398 a3c5490e n4hy
 0.002229931997,
399 a3c5490e n4hy
-0.002720607212,
400 a3c5490e n4hy
5.731141573e-05,
401 a3c5490e n4hy
-0.004297634587,
402 a3c5490e n4hy
 0.001878833398,
403 a3c5490e n4hy
 0.003217151389,
404 a3c5490e n4hy
 0.001357055153,
405 a3c5490e n4hy
 0.003965090029,
406 a3c5490e n4hy
-0.008576190099,
407 a3c5490e n4hy
-0.0003257228818,
408 a3c5490e n4hy
-0.004805727862,
409 a3c5490e n4hy
 0.004721920472,
410 a3c5490e n4hy
  0.01007549558,
411 a3c5490e n4hy
-0.002688719891,
412 a3c5490e n4hy
 0.004467967432,
413 a3c5490e n4hy
 -0.01837076992,
414 a3c5490e n4hy
5.119658377e-17,
415 a3c5490e n4hy
 0.001125075156,
416 a3c5490e n4hy
 0.008071650751,
417 a3c5490e n4hy
  0.02113764361,
418 a3c5490e n4hy
 -0.01602453552,
419 a3c5490e n4hy
 0.001618095324,
420 a3c5490e n4hy
 -0.03004053794,
421 a3c5490e n4hy
 0.003163811285,
422 a3c5490e n4hy
   0.0219683405,
423 a3c5490e n4hy
 0.007950295694,
424 a3c5490e n4hy
  0.03682873398,
425 a3c5490e n4hy
 -0.05142467469,
426 a3c5490e n4hy
 -0.00794606097,
427 a3c5490e n4hy
 -0.03965795785,
428 a3c5490e n4hy
  0.01544955093,
429 a3c5490e n4hy
  0.09681399167,
430 a3c5490e n4hy
 -0.01610304788,
431 a3c5490e n4hy
  0.08297294378,
432 a3c5490e n4hy
  -0.2811714709,
433 a3c5490e n4hy
  -0.1094062924,
434 a3c5490e n4hy
   0.5275565982,
435 a3c5490e n4hy
  -0.1094062924,
436 a3c5490e n4hy
  -0.2811714709,
437 a3c5490e n4hy
  0.08297294378,
438 a3c5490e n4hy
 -0.01610304788,
439 a3c5490e n4hy
  0.09681399167,
440 a3c5490e n4hy
  0.01544955093,
441 a3c5490e n4hy
 -0.03965795785,
442 a3c5490e n4hy
 -0.00794606097,
443 a3c5490e n4hy
 -0.05142467469,
444 a3c5490e n4hy
  0.03682873398,
445 a3c5490e n4hy
 0.007950295694,
446 a3c5490e n4hy
   0.0219683405,
447 a3c5490e n4hy
 0.003163811285,
448 a3c5490e n4hy
 -0.03004053794,
449 a3c5490e n4hy
 0.001618095324,
450 a3c5490e n4hy
 -0.01602453552,
451 a3c5490e n4hy
  0.02113764361,
452 a3c5490e n4hy
 0.008071650751,
453 a3c5490e n4hy
 0.001125075156,
454 a3c5490e n4hy
5.119658377e-17,
455 a3c5490e n4hy
 -0.01837076992,
456 a3c5490e n4hy
 0.004467967432,
457 a3c5490e n4hy
-0.002688719891,
458 a3c5490e n4hy
  0.01007549558,
459 a3c5490e n4hy
 0.004721920472,
460 a3c5490e n4hy
-0.004805727862,
461 a3c5490e n4hy
-0.0003257228818,
462 a3c5490e n4hy
-0.008576190099,
463 a3c5490e n4hy
 0.003965090029,
464 a3c5490e n4hy
 0.001357055153,
465 a3c5490e n4hy
 0.003217151389,
466 a3c5490e n4hy
 0.001878833398,
467 a3c5490e n4hy
-0.004297634587,
468 a3c5490e n4hy
5.731141573e-05,
469 a3c5490e n4hy
-0.002720607212,
470 a3c5490e n4hy
 0.002229931997,
471 a3c5490e n4hy
 0.001443728455,
472 a3c5490e n4hy
0.0002620361629,
473 a3c5490e n4hy
0.0004807534278,
474 a3c5490e n4hy
-0.002212299034,
475 a3c5490e n4hy
0.0002423936094,
476 a3c5490e n4hy
-0.0004236323002,
477 a3c5490e n4hy
0.0008966081077,
478 a3c5490e n4hy
0.0007595835486,
479 a3c5490e n4hy
-0.0004270860809,
480 a3c5490e n4hy
7.936541806e-05,
481 a3c5490e n4hy
-0.001047327649,
482 a3c5490e n4hy
0.0002809273137,
483 a3c5490e n4hy
};
484 a3c5490e n4hy
485 5d69a524 jcorgan
void
486 5d69a524 jcorgan
qa_gr_firdes::t1 ()
487 5d69a524 jcorgan
{
488 5d69a524 jcorgan
  vector<float> taps =
489 5d69a524 jcorgan
    gr_firdes::low_pass ( 1.0,
490 5d69a524 jcorgan
                          8000,
491 5d69a524 jcorgan
                          1750,
492 5d69a524 jcorgan
                          500,
493 5d69a524 jcorgan
                          gr_firdes::WIN_HAMMING);
494 5d69a524 jcorgan
495 5d69a524 jcorgan
  // cout << "ntaps: " << taps.size () << endl;
496 5d69a524 jcorgan
  // print_taps (cout, taps);
497 5d69a524 jcorgan
498 5d69a524 jcorgan
  CPPUNIT_ASSERT_EQUAL (NELEM (t1_exp), taps.size ());
499 5d69a524 jcorgan
  for (unsigned int i = 0; i < taps.size (); i++)
500 5d69a524 jcorgan
    CPPUNIT_ASSERT_DOUBLES_EQUAL (t1_exp[i], taps[i], 1e-9);
501 5d69a524 jcorgan
502 5d69a524 jcorgan
  check_symmetry (taps);
503 5d69a524 jcorgan
}
504 5d69a524 jcorgan
505 5d69a524 jcorgan
void
506 5d69a524 jcorgan
qa_gr_firdes::t2 ()
507 5d69a524 jcorgan
{
508 5d69a524 jcorgan
  vector<float> taps =
509 5d69a524 jcorgan
    gr_firdes::high_pass ( 1.0,
510 5d69a524 jcorgan
                           8000,
511 5d69a524 jcorgan
                           1750,
512 5d69a524 jcorgan
                           500,
513 5d69a524 jcorgan
                           gr_firdes::WIN_HAMMING);
514 5d69a524 jcorgan
515 5d69a524 jcorgan
  // cout << "ntaps: " << taps.size () << endl;
516 5d69a524 jcorgan
  // print_taps (cout, taps);
517 5d69a524 jcorgan
518 5d69a524 jcorgan
  CPPUNIT_ASSERT_EQUAL (NELEM (t2_exp), taps.size ());
519 5d69a524 jcorgan
520 5d69a524 jcorgan
  for (unsigned int i = 0; i < taps.size (); i++)
521 5d69a524 jcorgan
    CPPUNIT_ASSERT_DOUBLES_EQUAL (t2_exp[i], taps[i], 1e-9);
522 5d69a524 jcorgan
523 5d69a524 jcorgan
  check_symmetry (taps);
524 5d69a524 jcorgan
}
525 5d69a524 jcorgan
526 5d69a524 jcorgan
void
527 5d69a524 jcorgan
qa_gr_firdes::t3 ()
528 5d69a524 jcorgan
{
529 5d69a524 jcorgan
  vector<float> taps =
530 5d69a524 jcorgan
    gr_firdes::band_pass ( 1.0,
531 5d69a524 jcorgan
                           20e6,
532 5d69a524 jcorgan
                           5.75e6 - (5.28e6/2),
533 5d69a524 jcorgan
                           5.75e6 + (5.28e6/2),
534 5d69a524 jcorgan
                           0.62e6,
535 5d69a524 jcorgan
                           gr_firdes::WIN_HAMMING);
536 5d69a524 jcorgan
537 5d69a524 jcorgan
  // cout << "ntaps: " << taps.size () << endl;
538 5d69a524 jcorgan
  // print_taps (cout, taps);
539 5d69a524 jcorgan
540 5d69a524 jcorgan
  CPPUNIT_ASSERT_EQUAL (NELEM (t3_exp), taps.size ());
541 5d69a524 jcorgan
542 5d69a524 jcorgan
  for (unsigned int i = 0; i < taps.size (); i++)
543 5d69a524 jcorgan
    CPPUNIT_ASSERT_DOUBLES_EQUAL (t3_exp[i], taps[i], 1e-7);
544 5d69a524 jcorgan
545 5d69a524 jcorgan
  check_symmetry (taps);
546 5d69a524 jcorgan
}
547 5d69a524 jcorgan
548 5d69a524 jcorgan
void
549 5d69a524 jcorgan
qa_gr_firdes::t4 ()
550 5d69a524 jcorgan
{
551 a3c5490e n4hy
  vector<float> taps =
552 a3c5490e n4hy
    gr_firdes::low_pass_2 ( 1.0,
553 a3c5490e n4hy
                          8000,
554 a3c5490e n4hy
                          1750,
555 a3c5490e n4hy
                          500,
556 a3c5490e n4hy
                          66,
557 a3c5490e n4hy
                          gr_firdes::WIN_HAMMING);
558 a3c5490e n4hy
559 a3c5490e n4hy
  //  std::cout << "ntaps: " << taps.size () << std::endl;
560 a3c5490e n4hy
  //  print_taps (std::cout, taps);
561 a3c5490e n4hy
562 a3c5490e n4hy
  CPPUNIT_ASSERT_EQUAL (NELEM (t4_exp), taps.size ());
563 a3c5490e n4hy
  for (unsigned int i = 0; i < taps.size (); i++)
564 a3c5490e n4hy
    CPPUNIT_ASSERT_DOUBLES_EQUAL (t4_exp[i], taps[i], 1e-9);
565 a3c5490e n4hy
566 a3c5490e n4hy
567 a3c5490e n4hy
  check_symmetry (taps);
568 a3c5490e n4hy
}
569 a3c5490e n4hy
570 a3c5490e n4hy
void
571 a3c5490e n4hy
qa_gr_firdes::t5 ()
572 a3c5490e n4hy
{
573 a3c5490e n4hy
  vector<float> taps =
574 a3c5490e n4hy
    gr_firdes::high_pass_2 ( 1.0,
575 a3c5490e n4hy
                           8000,
576 a3c5490e n4hy
                           1750,
577 a3c5490e n4hy
                           500,
578 a3c5490e n4hy
                           66,
579 a3c5490e n4hy
                           gr_firdes::WIN_HAMMING);
580 a3c5490e n4hy
581 a3c5490e n4hy
  //  std::cout << "ntaps: " << taps.size () << std::endl;
582 a3c5490e n4hy
  //  print_taps (std::cout, taps);
583 a3c5490e n4hy
584 a3c5490e n4hy
  CPPUNIT_ASSERT_EQUAL (NELEM (t5_exp), taps.size ());
585 a3c5490e n4hy
586 a3c5490e n4hy
  for (unsigned int i = 0; i < taps.size (); i++)
587 a3c5490e n4hy
    CPPUNIT_ASSERT_DOUBLES_EQUAL (t5_exp[i], taps[i], 1e-9);
588 a3c5490e n4hy
589 a3c5490e n4hy
  check_symmetry (taps);
590 a3c5490e n4hy
}
591 a3c5490e n4hy
592 a3c5490e n4hy
void
593 a3c5490e n4hy
qa_gr_firdes::t6 ()
594 a3c5490e n4hy
{
595 a3c5490e n4hy
  vector<float> taps =
596 a3c5490e n4hy
    gr_firdes::band_pass_2 ( 1.0,
597 a3c5490e n4hy
                           20e6,
598 a3c5490e n4hy
                           5.75e6 - (5.28e6/2),
599 a3c5490e n4hy
                           5.75e6 + (5.28e6/2),
600 a3c5490e n4hy
                           0.62e6,
601 a3c5490e n4hy
                           66,
602 a3c5490e n4hy
                           gr_firdes::WIN_HAMMING);
603 a3c5490e n4hy
604 a3c5490e n4hy
  //  std::cout << "ntaps: " << taps.size () << std::endl;
605 a3c5490e n4hy
  //  print_taps (std::cout, taps);
606 a3c5490e n4hy
607 a3c5490e n4hy
  CPPUNIT_ASSERT_EQUAL (NELEM (t6_exp), taps.size ());
608 a3c5490e n4hy
609 a3c5490e n4hy
  for (unsigned int i = 0; i < taps.size (); i++)
610 a3c5490e n4hy
    CPPUNIT_ASSERT_DOUBLES_EQUAL (t6_exp[i], taps[i], 1e-7);
611 a3c5490e n4hy
612 a3c5490e n4hy
  check_symmetry (taps);
613 a3c5490e n4hy
}
614 a3c5490e n4hy
615 a3c5490e n4hy
void
616 a3c5490e n4hy
qa_gr_firdes::t7 ()
617 a3c5490e n4hy
{
618 5d69a524 jcorgan
}