@@ -11,7 +11,7 @@ void fft(double complex *x, size_t n) {
11
11
memset (y , 0 , sizeof (y ));
12
12
fftw_plan p ;
13
13
14
- p = fftw_plan_dft_1d (n , (fftw_complex * )x , (fftw_complex * )y ,
14
+ p = fftw_plan_dft_1d (( int ) n , (fftw_complex * )x , (fftw_complex * )y ,
15
15
FFTW_FORWARD , FFTW_ESTIMATE );
16
16
17
17
fftw_execute (p );
@@ -27,7 +27,7 @@ void dft(double complex *X, const size_t N) {
27
27
for (size_t i = 0 ; i < N ; ++ i ) {
28
28
tmp [i ] = 0 ;
29
29
for (size_t j = 0 ; j < N ; ++ j ) {
30
- tmp [i ] += X [j ] * cexp (-2.0 * M_PI * I * j * i / N );
30
+ tmp [i ] += X [j ] * cexp (-2.0 * M_PI * I * ( double ) j * ( double ) i / ( double ) N );
31
31
}
32
32
}
33
33
@@ -49,7 +49,7 @@ void cooley_tukey(double complex *X, const size_t N) {
49
49
cooley_tukey (X + N / 2 , N / 2 );
50
50
51
51
for (size_t i = 0 ; i < N / 2 ; ++ i ) {
52
- X [i + N / 2 ] = X [i ] - cexp (-2.0 * I * M_PI * i / N ) * X [i + N / 2 ];
52
+ X [i + N / 2 ] = X [i ] - cexp (-2.0 * I * M_PI * ( double ) i / ( double ) N ) * X [i + N / 2 ];
53
53
X [i ] -= (X [i + N / 2 ]- X [i ]);
54
54
}
55
55
}
@@ -58,7 +58,7 @@ void cooley_tukey(double complex *X, const size_t N) {
58
58
void bit_reverse (double complex * X , size_t N ) {
59
59
for (size_t i = 0 ; i < N ; ++ i ) {
60
60
size_t n = i ;
61
- int a = i ;
61
+ size_t a = i ;
62
62
int count = (int )log2 ((double )N ) - 1 ;
63
63
64
64
n >>= 1 ;
@@ -67,7 +67,7 @@ void bit_reverse(double complex *X, size_t N) {
67
67
count -- ;
68
68
n >>= 1 ;
69
69
}
70
- n = (a << count ) & (( 1 << (int )log2 ((double )N )) - 1 );
70
+ n = (a << count ) & (size_t )(( 1 << (size_t )log2 ((double )N )) - 1 );
71
71
72
72
if (n > i ) {
73
73
double complex tmp = X [i ];
@@ -81,8 +81,8 @@ void iterative_cooley_tukey(double complex *X, size_t N) {
81
81
bit_reverse (X , N );
82
82
83
83
for (int i = 1 ; i <= log2 ((double )N ); ++ i ) {
84
- size_t stride = pow (2 , i );
85
- double complex w = cexp (-2.0 * I * M_PI / stride );
84
+ size_t stride = ( size_t ) pow (2 , i );
85
+ double complex w = cexp (-2.0 * I * M_PI / ( double ) stride );
86
86
for (size_t j = 0 ; j < N ; j += stride ) {
87
87
double complex v = 1.0 ;
88
88
for (size_t k = 0 ; k < stride / 2 ; ++ k ) {
@@ -105,7 +105,7 @@ void approx(double complex *X, double complex *Y, size_t N) {
105
105
}
106
106
107
107
int main () {
108
- srand (time (NULL ));
108
+ srand (( unsigned int ) time (NULL ));
109
109
double complex x [64 ], y [64 ], z [64 ];
110
110
for (size_t i = 0 ; i < 64 ; ++ i ) {
111
111
x [i ] = rand () / (double ) RAND_MAX ;
0 commit comments