-
Notifications
You must be signed in to change notification settings - Fork 19.7k
/
Copy pathFFTTest.java
138 lines (121 loc) · 4.55 KB
/
FFTTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
package com.thealgorithms.maths;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
import java.util.ArrayList;
import org.junit.jupiter.api.Test;
class FFTTest {
// Testing the simple function getReal
@Test
void getRealtest() {
FFT.Complex complex = new FFT.Complex(1.0, 1.0);
assertEquals(1.0, complex.getReal());
}
// Testing the simple function getImaginary
@Test
void getImaginaryTest() {
FFT.Complex complex = new FFT.Complex();
assertEquals(0.0, complex.getImaginary());
}
// Testing the function add, assertEqual test
@Test
void addTest() {
FFT.Complex complex1 = new FFT.Complex(1.0, 1.0);
FFT.Complex complex2 = new FFT.Complex(2.0, 2.0);
double add = complex1.add(complex2).getReal();
assertEquals(3.0, add);
}
// Testing the function add, assertNotEqual test
@Test
void addFalseTest() {
FFT.Complex complex1 = new FFT.Complex(1.0, 1.0);
FFT.Complex complex2 = new FFT.Complex(2.0, 2.0);
double add = complex1.add(complex2).getReal();
assertNotEquals(2.0, add);
}
// Testing the function subtract, assertEqual test
@Test
void subtractTest() {
FFT.Complex complex1 = new FFT.Complex(2.0, 2.0);
FFT.Complex complex2 = new FFT.Complex(1.0, 1.0);
double sub = complex1.subtract(complex2).getReal();
assertEquals(1.0, sub);
}
// Testing the function multiply complex, assertEqual test
@Test
void multiplyWithComplexTest() {
FFT.Complex complex1 = new FFT.Complex(2.0, 2.0);
FFT.Complex complex2 = new FFT.Complex(1.0, 1.0);
double multiReal = complex1.multiply(complex2).getReal();
double multiImg = complex1.multiply(complex2).getImaginary();
assertEquals(0.0, multiReal);
assertEquals(4.0, multiImg);
}
// Testing the function multiply scalar, assertEqual test
@Test
void multiplyWithScalarTest() {
FFT.Complex complex1 = new FFT.Complex(2.0, 2.0);
double multiReal = complex1.multiply(2).getReal();
double multiImg = complex1.multiply(3).getImaginary();
assertEquals(4.0, multiReal);
assertEquals(6.0, multiImg);
}
// Testing the function conjugate, assertEqual test
@Test
void conjugateTest() {
FFT.Complex complex1 = new FFT.Complex(2.0, 2.0);
double conReal = complex1.conjugate().getReal();
double conImg = complex1.conjugate().getImaginary();
assertEquals(2.0, conReal);
assertEquals(-2.0, conImg);
}
// Testing the function abs, assertEqual test
@Test
void abs() {
FFT.Complex complex1 = new FFT.Complex(2.0, 3.0);
double abs = complex1.abs();
assertEquals(Math.sqrt(13), abs);
}
// Testing the function divide complex, assertEqual test.
@Test
void divideWithComplexTest() {
FFT.Complex complex1 = new FFT.Complex(2.0, 2.0);
FFT.Complex complex2 = new FFT.Complex(1.0, 2.0);
double divReal = complex1.divide(complex2).getReal();
double divImg = complex1.divide(complex2).getImaginary();
assertEquals(1.2, divReal);
assertEquals(-0.4, divImg);
}
// Testing the function divide scalar, assertEqual test.
@Test
void divideWithScalarTest() {
FFT.Complex complex1 = new FFT.Complex(2.0, 2.0);
double divReal = complex1.divide(2).getReal();
double divImg = complex1.divide(2).getImaginary();
assertEquals(1, divReal);
assertEquals(1, divImg);
}
// Testing the function fft, assertEqual test.
// https://scistatcalc.blogspot.com/2013/12/fft-calculator.html used this link to
// ensure the result
@Test
void fft() {
ArrayList<FFT.Complex> arr = new ArrayList<FFT.Complex>();
FFT.Complex complex1 = new FFT.Complex(2.0, 2.0);
FFT.Complex complex2 = new FFT.Complex(1.0, 3.0);
FFT.Complex complex3 = new FFT.Complex(3.0, 1.0);
FFT.Complex complex4 = new FFT.Complex(2.0, 2.0);
arr.add(complex1);
arr.add(complex2);
arr.add(complex3);
arr.add(complex4);
arr = FFT.fft(arr, false);
double realV1 = arr.get(0).getReal();
double realV2 = arr.get(2).getReal();
double imgV1 = arr.get(0).getImaginary();
double imgV2 = arr.get(2).getImaginary();
assertEquals(8.0, realV1);
assertEquals(2.0, realV2);
assertEquals(8.0, imgV1);
assertEquals(-2.0, imgV2);
}
}