Chris@41
|
1
|
Chris@93
|
2 module yetilab.transform.test.test_fft;
|
Chris@41
|
3
|
Chris@93
|
4 { realForward, realInverse } = load yetilab.transform.fft;
|
Chris@93
|
5 { list, fromList } = load yetilab.block.block;
|
Chris@93
|
6 { complex } = load yetilab.block.complex;
|
Chris@46
|
7
|
Chris@93
|
8 { compare } = load yetilab.test.test;
|
Chris@41
|
9
|
Chris@48
|
10 testFFT orig reals imags =
|
Chris@48
|
11 (out = realForward (length orig) (fromList orig);
|
Chris@48
|
12 back = realInverse (length orig) out;
|
Chris@48
|
13 compare out (array (map2 complex reals imags)) and compare orig (list back));
|
Chris@48
|
14
|
Chris@53
|
15 [
|
Chris@41
|
16
|
Chris@41
|
17 "dc": \(
|
Chris@48
|
18 testFFT [1,1,1,1] [4,0,0] [0,0,0];
|
Chris@41
|
19 ),
|
Chris@41
|
20
|
Chris@41
|
21 "sine": \(
|
Chris@48
|
22 testFFT [0,1,0,-1] [0,0,0] [0,-2,0];
|
Chris@41
|
23 ),
|
Chris@41
|
24
|
Chris@41
|
25 "cosine": \(
|
Chris@48
|
26 testFFT [1,0,-1,0] [0,2,0] [0,0,0];
|
Chris@41
|
27 ),
|
Chris@41
|
28
|
Chris@41
|
29 "sineCosine": \(
|
Chris@48
|
30 testFFT [0.5,1,-0.5,-1] [0,1,0] [0,-2,0];
|
Chris@41
|
31 ),
|
Chris@41
|
32
|
Chris@41
|
33 "nyquist": \(
|
Chris@48
|
34 testFFT [1,-1,1,-1] [0,0,4] [0,0,0];
|
Chris@41
|
35 ),
|
Chris@41
|
36
|
Chris@41
|
37 "dirac": \(
|
Chris@48
|
38 testFFT [1,0,0,0] [1,1,1] [0,0,0] and
|
Chris@48
|
39 testFFT [0,1,0,0] [1,0,-1] [0,-1,0] and
|
Chris@48
|
40 testFFT [0,0,1,0] [1,-1,1] [0,0,0] and
|
Chris@48
|
41 testFFT [0,0,0,1] [1,0,-1] [0,1,0];
|
Chris@41
|
42 ),
|
Chris@41
|
43
|
Chris@53
|
44 ] is hash<string, () -> boolean>;
|
Chris@41
|
45
|
Chris@41
|
46
|