Révision 300
ETSN/MyDFT_1.py (revision 300) | ||
---|---|---|
11 | 11 |
Y=np.zeros(size).astype(np.float32) |
12 | 12 |
for i in range(size): |
13 | 13 |
for j in range(size): |
14 |
X[i]=X[i]+x[j]*cos(2.*pi*i*j/size)-y[j]*sin(2.*pi*i*j/size)
|
|
15 |
Y[i]=Y[i]+x[j]*sin(2.*pi*i*j/size)+y[j]*cos(2.*pi*i*j/size)
|
|
14 |
X[i]=X[i]+x[j]*cos(2.*pi*i*j/size)+y[j]*sin(2.*pi*i*j/size)
|
|
15 |
Y[i]=Y[i]-x[j]*sin(2.*pi*i*j/size)+y[j]*cos(2.*pi*i*j/size)
|
|
16 | 16 |
return(X,Y) |
17 | 17 |
|
18 | 18 |
import sys |
ETSN/MyDFT_2.py (revision 300) | ||
---|---|---|
11 | 11 |
Y=np.zeros(size).astype(np.float32) |
12 | 12 |
for i in range(size): |
13 | 13 |
for j in range(size): |
14 |
X[i]=X[i]+x[j]*cos(2.*pi*i*j/size)-y[j]*sin(2.*pi*i*j/size)
|
|
15 |
Y[i]=Y[i]+x[j]*sin(2.*pi*i*j/size)+y[j]*cos(2.*pi*i*j/size)
|
|
14 |
X[i]=X[i]+x[j]*cos(2.*pi*i*j/size)+y[j]*sin(2.*pi*i*j/size)
|
|
15 |
Y[i]=Y[i]-x[j]*sin(2.*pi*i*j/size)+y[j]*cos(2.*pi*i*j/size)
|
|
16 | 16 |
return(X,Y) |
17 | 17 |
|
18 | 18 |
# Numpy Discrete Fourier Transform |
... | ... | |
23 | 23 |
Y=np.zeros(size).astype(np.float32) |
24 | 24 |
nj=np.multiply(2.0*np.pi/size,np.arange(size)).astype(np.float32) |
25 | 25 |
for i in range(size): |
26 |
X[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
27 |
Y[i]=np.sum(np.add(np.multiply(np.sin(i*nj),x),np.multiply(np.cos(i*nj),y)))
|
|
26 |
X[i]=np.sum(np.add(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
27 |
Y[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),y),np.multiply(np.sin(i*nj),x)))
|
|
28 | 28 |
return(X,Y) |
29 | 29 |
|
30 | 30 |
import sys |
ETSN/MyDFT_3.py (revision 300) | ||
---|---|---|
11 | 11 |
Y=np.zeros(size).astype(np.float32) |
12 | 12 |
for i in range(size): |
13 | 13 |
for j in range(size): |
14 |
X[i]=X[i]+x[j]*cos(2.*pi*i*j/size)-y[j]*sin(2.*pi*i*j/size)
|
|
15 |
Y[i]=Y[i]+x[j]*sin(2.*pi*i*j/size)+y[j]*cos(2.*pi*i*j/size)
|
|
14 |
X[i]=X[i]+x[j]*cos(2.*pi*i*j/size)+y[j]*sin(2.*pi*i*j/size)
|
|
15 |
Y[i]=Y[i]-x[j]*sin(2.*pi*i*j/size)+y[j]*cos(2.*pi*i*j/size)
|
|
16 | 16 |
return(X,Y) |
17 | 17 |
|
18 | 18 |
# Numpy Discrete Fourier Transform |
... | ... | |
22 | 22 |
Y=np.zeros(size).astype(np.float32) |
23 | 23 |
nj=np.multiply(2.0*np.pi/size,np.arange(size)).astype(np.float32) |
24 | 24 |
for i in range(size): |
25 |
X[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
26 |
Y[i]=np.sum(np.add(np.multiply(np.sin(i*nj),x),np.multiply(np.cos(i*nj),y)))
|
|
25 |
X[i]=np.sum(np.add(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
26 |
Y[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),y),np.multiply(np.sin(i*nj),x)))
|
|
27 | 27 |
return(X,Y) |
28 | 28 |
|
29 | 29 |
# Numba Discrete Fourier Transform |
... | ... | |
35 | 35 |
Y=np.zeros(size).astype(np.float32) |
36 | 36 |
nj=np.multiply(2.0*np.pi/size,np.arange(size)).astype(np.float32) |
37 | 37 |
for i in numba.prange(size): |
38 |
X[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
39 |
Y[i]=np.sum(np.add(np.multiply(np.sin(i*nj),x),np.multiply(np.cos(i*nj),y)))
|
|
38 |
X[i]=np.sum(np.add(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
39 |
Y[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),y),np.multiply(np.sin(i*nj),x)))
|
|
40 | 40 |
return(X,Y) |
41 | 41 |
|
42 | 42 |
import sys |
ETSN/MyDFT_4.py (revision 300) | ||
---|---|---|
11 | 11 |
Y=np.zeros(size).astype(np.float32) |
12 | 12 |
for i in range(size): |
13 | 13 |
for j in range(size): |
14 |
X[i]=X[i]+x[j]*cos(2.*pi*i*j/size)-y[j]*sin(2.*pi*i*j/size)
|
|
15 |
Y[i]=Y[i]+x[j]*sin(2.*pi*i*j/size)+y[j]*cos(2.*pi*i*j/size)
|
|
14 |
X[i]=X[i]+x[j]*cos(2.*pi*i*j/size)+y[j]*sin(2.*pi*i*j/size)
|
|
15 |
Y[i]=Y[i]-x[j]*sin(2.*pi*i*j/size)+y[j]*cos(2.*pi*i*j/size)
|
|
16 | 16 |
return(X,Y) |
17 | 17 |
|
18 | 18 |
# Numpy Discrete Fourier Transform |
... | ... | |
22 | 22 |
Y=np.zeros(size).astype(np.float32) |
23 | 23 |
nj=np.multiply(2.0*np.pi/size,np.arange(size)).astype(np.float32) |
24 | 24 |
for i in range(size): |
25 |
X[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
26 |
Y[i]=np.sum(np.add(np.multiply(np.sin(i*nj),x),np.multiply(np.cos(i*nj),y)))
|
|
25 |
X[i]=np.sum(np.add(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
26 |
Y[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),y),np.multiply(np.sin(i*nj),x)))
|
|
27 | 27 |
return(X,Y) |
28 | 28 |
|
29 | 29 |
# Numba Discrete Fourier Transform |
... | ... | |
35 | 35 |
Y=np.zeros(size).astype(np.float32) |
36 | 36 |
nj=np.multiply(2.0*np.pi/size,np.arange(size)).astype(np.float32) |
37 | 37 |
for i in numba.prange(size): |
38 |
X[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
39 |
Y[i]=np.sum(np.add(np.multiply(np.sin(i*nj),x),np.multiply(np.cos(i*nj),y)))
|
|
38 |
X[i]=np.sum(np.add(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
39 |
Y[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),y),np.multiply(np.sin(i*nj),x)))
|
|
40 | 40 |
return(X,Y) |
41 | 41 |
|
42 | 42 |
# OpenCL complete operation |
... | ... | |
69 | 69 |
float A=0.,B=0.; |
70 | 70 |
for (uint i=0; i<size;i++) |
71 | 71 |
{ |
72 |
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)-b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
|
73 |
B+=a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size); |
|
72 |
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
|
73 |
B+=-a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size);
|
|
74 | 74 |
} |
75 | 75 |
A_g[gid]=A; |
76 | 76 |
B_g[gid]=B; |
ETSN/MyDFT_5.py (revision 300) | ||
---|---|---|
11 | 11 |
Y=np.zeros(size).astype(np.float32) |
12 | 12 |
for i in range(size): |
13 | 13 |
for j in range(size): |
14 |
X[i]=X[i]+x[j]*cos(2.*pi*i*j/size)-y[j]*sin(2.*pi*i*j/size)
|
|
15 |
Y[i]=Y[i]+x[j]*sin(2.*pi*i*j/size)+y[j]*cos(2.*pi*i*j/size)
|
|
14 |
X[i]=X[i]+x[j]*cos(2.*pi*i*j/size)+y[j]*sin(2.*pi*i*j/size)
|
|
15 |
Y[i]=Y[i]-x[j]*sin(2.*pi*i*j/size)+y[j]*cos(2.*pi*i*j/size)
|
|
16 | 16 |
return(X,Y) |
17 | 17 |
|
18 | 18 |
# Numpy Discrete Fourier Transform |
... | ... | |
22 | 22 |
Y=np.zeros(size).astype(np.float32) |
23 | 23 |
nj=np.multiply(2.0*np.pi/size,np.arange(size)).astype(np.float32) |
24 | 24 |
for i in range(size): |
25 |
X[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
26 |
Y[i]=np.sum(np.add(np.multiply(np.sin(i*nj),x),np.multiply(np.cos(i*nj),y)))
|
|
25 |
X[i]=np.sum(np.add(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
26 |
Y[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),y),np.multiply(np.sin(i*nj),x)))
|
|
27 | 27 |
return(X,Y) |
28 | 28 |
|
29 | 29 |
# Numba Discrete Fourier Transform |
... | ... | |
35 | 35 |
Y=np.zeros(size).astype(np.float32) |
36 | 36 |
nj=np.multiply(2.0*np.pi/size,np.arange(size)).astype(np.float32) |
37 | 37 |
for i in numba.prange(size): |
38 |
X[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
39 |
Y[i]=np.sum(np.add(np.multiply(np.sin(i*nj),x),np.multiply(np.cos(i*nj),y)))
|
|
38 |
X[i]=np.sum(np.add(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
39 |
Y[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),y),np.multiply(np.sin(i*nj),x)))
|
|
40 | 40 |
return(X,Y) |
41 | 41 |
|
42 | 42 |
# OpenCL complete operation |
... | ... | |
69 | 69 |
float A=0.,B=0.; |
70 | 70 |
for (uint i=0; i<size;i++) |
71 | 71 |
{ |
72 |
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)-b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
|
73 |
B+=a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size); |
|
72 |
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
|
73 |
B+=-a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size);
|
|
74 | 74 |
} |
75 | 75 |
A_g[gid]=A; |
76 | 76 |
B_g[gid]=B; |
... | ... | |
139 | 139 |
float A=0.,B=0.; |
140 | 140 |
for (uint i=0; i<size;i++) |
141 | 141 |
{ |
142 |
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)-b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
|
143 |
B+=a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size); |
|
142 |
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
|
143 |
B+=-a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size);
|
|
144 | 144 |
} |
145 | 145 |
A_g[gid]=A; |
146 | 146 |
B_g[gid]=B; |
ETSN/MyDFT_6.py (revision 300) | ||
---|---|---|
11 | 11 |
Y=np.zeros(size).astype(np.float32) |
12 | 12 |
for i in range(size): |
13 | 13 |
for j in range(size): |
14 |
X[i]=X[i]+x[j]*cos(2.*pi*i*j/size)-y[j]*sin(2.*pi*i*j/size)
|
|
15 |
Y[i]=Y[i]+x[j]*sin(2.*pi*i*j/size)+y[j]*cos(2.*pi*i*j/size)
|
|
14 |
X[i]=X[i]+x[j]*cos(2.*pi*i*j/size)+y[j]*sin(2.*pi*i*j/size)
|
|
15 |
Y[i]=Y[i]-x[j]*sin(2.*pi*i*j/size)+y[j]*cos(2.*pi*i*j/size)
|
|
16 | 16 |
return(X,Y) |
17 | 17 |
|
18 | 18 |
# Numpy Discrete Fourier Transform |
... | ... | |
22 | 22 |
Y=np.zeros(size).astype(np.float32) |
23 | 23 |
nj=np.multiply(2.0*np.pi/size,np.arange(size)).astype(np.float32) |
24 | 24 |
for i in range(size): |
25 |
X[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
26 |
Y[i]=np.sum(np.add(np.multiply(np.sin(i*nj),x),np.multiply(np.cos(i*nj),y)))
|
|
25 |
X[i]=np.sum(np.add(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
26 |
Y[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),y),np.multiply(np.sin(i*nj),x)))
|
|
27 | 27 |
return(X,Y) |
28 | 28 |
|
29 | 29 |
# Numba Discrete Fourier Transform |
... | ... | |
35 | 35 |
Y=np.zeros(size).astype(np.float32) |
36 | 36 |
nj=np.multiply(2.0*np.pi/size,np.arange(size)).astype(np.float32) |
37 | 37 |
for i in numba.prange(size): |
38 |
X[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
39 |
Y[i]=np.sum(np.add(np.multiply(np.sin(i*nj),x),np.multiply(np.cos(i*nj),y)))
|
|
38 |
X[i]=np.sum(np.add(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
39 |
Y[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),y),np.multiply(np.sin(i*nj),x)))
|
|
40 | 40 |
return(X,Y) |
41 | 41 |
|
42 | 42 |
# OpenCL complete operation |
... | ... | |
69 | 69 |
float A=0.,B=0.; |
70 | 70 |
for (uint i=0; i<size;i++) |
71 | 71 |
{ |
72 |
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)-b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
|
73 |
B+=a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size); |
|
72 |
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
|
73 |
B+=-a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size);
|
|
74 | 74 |
} |
75 | 75 |
A_g[gid]=A; |
76 | 76 |
B_g[gid]=B; |
... | ... | |
139 | 139 |
float A=0.,B=0.; |
140 | 140 |
for (uint i=0; i<size;i++) |
141 | 141 |
{ |
142 |
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)-b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
|
143 |
B+=a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size); |
|
142 |
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
|
143 |
B+=-a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size);
|
|
144 | 144 |
} |
145 | 145 |
A_g[gid]=A; |
146 | 146 |
B_g[gid]=B; |
ETSN/MyDFT_7.py (revision 300) | ||
---|---|---|
11 | 11 |
Y=np.zeros(size).astype(np.float32) |
12 | 12 |
for i in range(size): |
13 | 13 |
for j in range(size): |
14 |
X[i]=X[i]+x[j]*cos(2.*pi*i*j/size)-y[j]*sin(2.*pi*i*j/size)
|
|
15 |
Y[i]=Y[i]+x[j]*sin(2.*pi*i*j/size)+y[j]*cos(2.*pi*i*j/size)
|
|
14 |
X[i]=X[i]+x[j]*cos(2.*pi*i*j/size)+y[j]*sin(2.*pi*i*j/size)
|
|
15 |
Y[i]=Y[i]-x[j]*sin(2.*pi*i*j/size)+y[j]*cos(2.*pi*i*j/size)
|
|
16 | 16 |
return(X,Y) |
17 | 17 |
|
18 | 18 |
# Numpy Discrete Fourier Transform |
... | ... | |
22 | 22 |
Y=np.zeros(size).astype(np.float32) |
23 | 23 |
nj=np.multiply(2.0*np.pi/size,np.arange(size)).astype(np.float32) |
24 | 24 |
for i in range(size): |
25 |
X[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
26 |
Y[i]=np.sum(np.add(np.multiply(np.sin(i*nj),x),np.multiply(np.cos(i*nj),y)))
|
|
25 |
X[i]=np.sum(np.add(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
26 |
Y[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),y),np.multiply(np.sin(i*nj),x)))
|
|
27 | 27 |
return(X,Y) |
28 | 28 |
|
29 | 29 |
# Numba Discrete Fourier Transform |
... | ... | |
35 | 35 |
Y=np.zeros(size).astype(np.float32) |
36 | 36 |
nj=np.multiply(2.0*np.pi/size,np.arange(size)).astype(np.float32) |
37 | 37 |
for i in numba.prange(size): |
38 |
X[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
39 |
Y[i]=np.sum(np.add(np.multiply(np.sin(i*nj),x),np.multiply(np.cos(i*nj),y)))
|
|
38 |
X[i]=np.sum(np.add(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
39 |
Y[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),y),np.multiply(np.sin(i*nj),x)))
|
|
40 | 40 |
return(X,Y) |
41 | 41 |
|
42 | 42 |
# OpenCL complete operation |
... | ... | |
85 | 85 |
float A=0.,B=0.; |
86 | 86 |
for (uint i=0; i<size;i++) |
87 | 87 |
{ |
88 |
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)-b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
|
89 |
B+=a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size); |
|
88 |
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
|
89 |
B+=-a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size);
|
|
90 | 90 |
} |
91 | 91 |
A_g[gid]=A; |
92 | 92 |
B_g[gid]=B; |
... | ... | |
154 | 154 |
float A=0.,B=0.; |
155 | 155 |
for (uint i=0; i<size;i++) |
156 | 156 |
{ |
157 |
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)-b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
|
158 |
B+=a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size); |
|
157 |
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
|
158 |
B+=-a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size);
|
|
159 | 159 |
} |
160 | 160 |
A_g[gid]=A; |
161 | 161 |
B_g[gid]=B; |
ETSN/MyDFT_8.py (revision 300) | ||
---|---|---|
11 | 11 |
Y=np.zeros(size).astype(np.float32) |
12 | 12 |
for i in range(size): |
13 | 13 |
for j in range(size): |
14 |
X[i]=X[i]+x[j]*cos(2.*pi*i*j/size)-y[j]*sin(2.*pi*i*j/size)
|
|
15 |
Y[i]=Y[i]+x[j]*sin(2.*pi*i*j/size)+y[j]*cos(2.*pi*i*j/size)
|
|
14 |
X[i]=X[i]+x[j]*cos(2.*pi*i*j/size)+y[j]*sin(2.*pi*i*j/size)
|
|
15 |
Y[i]=Y[i]-x[j]*sin(2.*pi*i*j/size)+y[j]*cos(2.*pi*i*j/size)
|
|
16 | 16 |
return(X,Y) |
17 | 17 |
|
18 | 18 |
# Numpy Discrete Fourier Transform |
... | ... | |
22 | 22 |
Y=np.zeros(size).astype(np.float32) |
23 | 23 |
nj=np.multiply(2.0*np.pi/size,np.arange(size)).astype(np.float32) |
24 | 24 |
for i in range(size): |
25 |
X[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
26 |
Y[i]=np.sum(np.add(np.multiply(np.sin(i*nj),x),np.multiply(np.cos(i*nj),y)))
|
|
25 |
X[i]=np.sum(np.add(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
26 |
Y[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),y),np.multiply(np.sin(i*nj),x)))
|
|
27 | 27 |
return(X,Y) |
28 | 28 |
|
29 | 29 |
# Numba Discrete Fourier Transform |
... | ... | |
35 | 35 |
Y=np.zeros(size).astype(np.float32) |
36 | 36 |
nj=np.multiply(2.0*np.pi/size,np.arange(size)).astype(np.float32) |
37 | 37 |
for i in numba.prange(size): |
38 |
X[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
39 |
Y[i]=np.sum(np.add(np.multiply(np.sin(i*nj),x),np.multiply(np.cos(i*nj),y)))
|
|
38 |
X[i]=np.sum(np.add(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
39 |
Y[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),y),np.multiply(np.sin(i*nj),x)))
|
|
40 | 40 |
return(X,Y) |
41 | 41 |
|
42 | 42 |
# OpenCL complete operation |
... | ... | |
85 | 85 |
float A=0.,B=0.; |
86 | 86 |
for (uint i=0; i<size;i++) |
87 | 87 |
{ |
88 |
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)-b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
|
89 |
B+=a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size); |
|
88 |
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
|
89 |
B+=-a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size);
|
|
90 | 90 |
} |
91 | 91 |
A_g[gid]=A; |
92 | 92 |
B_g[gid]=B; |
... | ... | |
171 | 171 |
float A=0.,B=0.; |
172 | 172 |
for (uint i=0; i<size;i++) |
173 | 173 |
{ |
174 |
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)-b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
|
175 |
B+=a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size); |
|
174 |
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
|
175 |
B+=-a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size);
|
|
176 | 176 |
} |
177 | 177 |
A_g[gid]=A; |
178 | 178 |
B_g[gid]=B; |
ETSN/MyDFT_9.py (revision 300) | ||
---|---|---|
11 | 11 |
Y=np.zeros(size).astype(np.float32) |
12 | 12 |
for i in range(size): |
13 | 13 |
for j in range(size): |
14 |
X[i]=X[i]+x[j]*cos(2.*pi*i*j/size)-y[j]*sin(2.*pi*i*j/size)
|
|
15 |
Y[i]=Y[i]+x[j]*sin(2.*pi*i*j/size)+y[j]*cos(2.*pi*i*j/size)
|
|
14 |
X[i]=X[i]+x[j]*cos(2.*pi*i*j/size)+y[j]*sin(2.*pi*i*j/size)
|
|
15 |
Y[i]=Y[i]-x[j]*sin(2.*pi*i*j/size)+y[j]*cos(2.*pi*i*j/size)
|
|
16 | 16 |
return(X,Y) |
17 | 17 |
|
18 | 18 |
# Numpy Discrete Fourier Transform |
... | ... | |
22 | 22 |
Y=np.zeros(size).astype(np.float32) |
23 | 23 |
nj=np.multiply(2.0*np.pi/size,np.arange(size)).astype(np.float32) |
24 | 24 |
for i in range(size): |
25 |
X[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
26 |
Y[i]=np.sum(np.add(np.multiply(np.sin(i*nj),x),np.multiply(np.cos(i*nj),y)))
|
|
25 |
X[i]=np.sum(np.add(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
26 |
Y[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),y),np.multiply(np.sin(i*nj),x)))
|
|
27 | 27 |
return(X,Y) |
28 | 28 |
|
29 | 29 |
# Numba Discrete Fourier Transform |
... | ... | |
35 | 35 |
Y=np.zeros(size).astype(np.float32) |
36 | 36 |
nj=np.multiply(2.0*np.pi/size,np.arange(size)).astype(np.float32) |
37 | 37 |
for i in numba.prange(size): |
38 |
X[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
39 |
Y[i]=np.sum(np.add(np.multiply(np.sin(i*nj),x),np.multiply(np.cos(i*nj),y)))
|
|
38 |
X[i]=np.sum(np.add(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
39 |
Y[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),y),np.multiply(np.sin(i*nj),x)))
|
|
40 | 40 |
return(X,Y) |
41 | 41 |
|
42 | 42 |
# OpenCL complete operation |
... | ... | |
85 | 85 |
float A=0.,B=0.; |
86 | 86 |
for (uint i=0; i<size;i++) |
87 | 87 |
{ |
88 |
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)-b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
|
89 |
B+=a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size); |
|
88 |
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
|
89 |
B+=-a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size);
|
|
90 | 90 |
} |
91 | 91 |
A_g[gid]=A; |
92 | 92 |
B_g[gid]=B; |
... | ... | |
171 | 171 |
float A=0.,B=0.; |
172 | 172 |
for (uint i=0; i<size;i++) |
173 | 173 |
{ |
174 |
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)-b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
|
175 |
B+=a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size); |
|
174 |
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
|
175 |
B+=-a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size);
|
|
176 | 176 |
} |
177 | 177 |
A_g[gid]=A; |
178 | 178 |
B_g[gid]=B; |
ETSN/MyDFT_10.py (revision 300) | ||
---|---|---|
71 | 71 |
Y=np.zeros(size).astype(np.float32) |
72 | 72 |
for i in range(size): |
73 | 73 |
for j in range(size): |
74 |
X[i]=X[i]+x[j]*cos(2.*pi*i*j/size)-y[j]*sin(2.*pi*i*j/size)
|
|
75 |
Y[i]=Y[i]+x[j]*sin(2.*pi*i*j/size)+y[j]*cos(2.*pi*i*j/size)
|
|
74 |
X[i]=X[i]+x[j]*cos(2.*pi*i*j/size)+y[j]*sin(2.*pi*i*j/size)
|
|
75 |
Y[i]=Y[i]-x[j]*sin(2.*pi*i*j/size)+y[j]*cos(2.*pi*i*j/size)
|
|
76 | 76 |
return(X,Y) |
77 | 77 |
|
78 | 78 |
# Numpy Discrete Fourier Transform |
... | ... | |
82 | 82 |
Y=np.zeros(size).astype(np.float32) |
83 | 83 |
nj=np.multiply(2.0*np.pi/size,np.arange(size)).astype(np.float32) |
84 | 84 |
for i in range(size): |
85 |
X[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
86 |
Y[i]=np.sum(np.add(np.multiply(np.sin(i*nj),x),np.multiply(np.cos(i*nj),y)))
|
|
85 |
X[i]=np.sum(np.add(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
86 |
Y[i]=np.sum(-np.subtract(np.multiply(np.sin(i*nj),x),np.multiply(np.cos(i*nj),y)))
|
|
87 | 87 |
return(X,Y) |
88 | 88 |
|
89 | 89 |
# Numba Discrete Fourier Transform |
... | ... | |
95 | 95 |
Y=np.zeros(size).astype(np.float32) |
96 | 96 |
nj=np.multiply(2.0*np.pi/size,np.arange(size)).astype(np.float32) |
97 | 97 |
for i in numba.prange(size): |
98 |
X[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
99 |
Y[i]=np.sum(np.add(np.multiply(np.sin(i*nj),x),np.multiply(np.cos(i*nj),y)))
|
|
98 |
X[i]=np.sum(np.add(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
99 |
Y[i]=np.sum(-np.subtract(np.multiply(np.sin(i*nj),x),np.multiply(np.cos(i*nj),y)))
|
|
100 | 100 |
return(X,Y) |
101 | 101 |
|
102 | 102 |
# OpenCL complete operation |
... | ... | |
145 | 145 |
float A=0.,B=0.; |
146 | 146 |
for (uint i=0; i<size;i++) |
147 | 147 |
{ |
148 |
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)-b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
|
149 |
B+=a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size); |
|
148 |
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
|
149 |
B+=-a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size);
|
|
150 | 150 |
} |
151 | 151 |
A_g[gid]=A; |
152 | 152 |
B_g[gid]=B; |
... | ... | |
231 | 231 |
float A=0.,B=0.; |
232 | 232 |
for (uint i=0; i<size;i++) |
233 | 233 |
{ |
234 |
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)-b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
|
235 |
B+=a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size); |
|
234 |
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
|
235 |
B+=-a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size);
|
|
236 | 236 |
} |
237 | 237 |
A_g[gid]=A; |
238 | 238 |
B_g[gid]=B; |
... | ... | |
283 | 283 |
Device=0 |
284 | 284 |
NaiveMethod=False |
285 | 285 |
NumpyFFTMethod=True |
286 |
OpenCLFFTMethod=True
|
|
286 |
OpenCLFFTMethod=False
|
|
287 | 287 |
NumpyMethod=False |
288 | 288 |
NumbaMethod=False |
289 | 289 |
OpenCLMethod=False |
290 |
CUDAMethod=False
|
|
290 |
CUDAMethod=True
|
|
291 | 291 |
Threads=1 |
292 | 292 |
|
293 | 293 |
import getopt |
... | ... | |
358 | 358 |
print("Size of complex vector : %i" % SIZE) |
359 | 359 |
print("DFT Naive computation %s " % NaiveMethod ) |
360 | 360 |
print("DFT Numpy computation %s " % NumpyMethod ) |
361 |
print("FFT Numpy computation %s " % NumpyFFTMethod ) |
|
361 | 362 |
print("DFT Numba computation %s " % NumbaMethod ) |
362 | 363 |
print("DFT OpenCL computation %s " % OpenCLMethod ) |
363 | 364 |
print("DFT CUDA computation %s " % CUDAMethod ) |
... | ... | |
397 | 398 |
|
398 | 399 |
|
399 | 400 |
|
400 |
a_np = np.ones(SIZE).astype(np.float32) |
|
401 |
b_np = np.ones(SIZE).astype(np.float32) |
|
401 |
# a_np = np.ones(SIZE).astype(np.float32) |
|
402 |
# b_np = np.ones(SIZE).astype(np.float32) |
|
403 |
a_np = np.random.rand(SIZE).astype(np.float32) |
|
404 |
b_np = np.random.rand(SIZE).astype(np.float32) |
|
402 | 405 |
|
403 | 406 |
C_np = np.zeros(SIZE).astype(np.float32) |
404 | 407 |
D_np = np.zeros(SIZE).astype(np.float32) |
... | ... | |
483 | 486 |
print("Precision: ",np.linalg.norm(i_np-C_np), |
484 | 487 |
np.linalg.norm(j_np-D_np)) |
485 | 488 |
|
489 |
<<<<<<< .mine |
|
490 |
if OpenCLMethod and NumpyFFTMethod: |
|
491 |
print(OpenCLMethod,NumpyFFTMethod) |
|
492 |
print("Precision: ",np.linalg.norm(m_np-i_np), |
|
493 |
np.linalg.norm(n_np-j_np)) |
|
494 |
print((m_np-i_np),(n_np-j_np)) |
|
495 |
print(i_np,j_np) |
|
496 |
print(m_np,n_np) |
|
497 |
print((i_np-m_np),(j_np-n_np)) |
|
498 |
|
|
499 |
if CUDAMethod and NumpyFFTMethod: |
|
500 |
print(CUDAMethod,NumpyFFTMethod) |
|
501 |
print("Precision: ",np.linalg.norm(m_np-k_np), |
|
502 |
np.linalg.norm(n_np-l_np)) |
|
503 |
print((m_np-k_np),(n_np-l_np)) |
|
504 |
print(k_np,l_np) |
|
505 |
print(m_np,n_np) |
|
506 |
print((k_np-m_np),(l_np-n_np)) |
|
507 |
|
|
508 |
if OpenCLMethod and NumpyMethod: |
|
509 |
print(OpenCLMethod,NumpyMethod) |
|
510 |
print("Precision: ",np.linalg.norm(e_np-i_np), |
|
511 |
np.linalg.norm(f_np-j_np)) |
|
512 |
print((e_np-i_np),(f_np-j_np)) |
|
513 |
|
|
514 |
if NumpyFFTMethod and NumpyMethod: |
|
515 |
print(NumpyFFTMethod,NumpyMethod) |
|
516 |
print("Precision: ",np.linalg.norm(e_np-m_np), |
|
517 |
np.linalg.norm(f_np-n_np)) |
|
518 |
print(e_np,f_np) |
|
519 |
print(m_np,n_np) |
|
520 |
print((e_np-m_np),(f_np-n_np)) |
|
521 |
|
|
522 |
if NumpyFFTMethod and NaiveMethod: |
|
523 |
print(NumpyFFTMethod,NaiveMethod) |
|
524 |
print("Precision: ",np.linalg.norm(c_np-m_np), |
|
525 |
np.linalg.norm(d_np-n_np)) |
|
526 |
print(c_np,d_np) |
|
527 |
print(m_np,n_np) |
|
528 |
print((c_np-m_np),(d_np-n_np)) |
|
529 |
|
|
530 |
if NumpyFFTMethod and NumbaMethod: |
|
531 |
print(NumpyFFTMethod,NumbaMethod) |
|
532 |
print("Precision: ",np.linalg.norm(g_np-m_np), |
|
533 |
np.linalg.norm(h_np-n_np)) |
|
534 |
print(g_np,h_np) |
|
535 |
print(m_np,n_np) |
|
536 |
print((g_np-m_np),(h_np-n_np)) |
|
537 |
|
|
538 |
||||||| .r292 |
|
539 |
======= |
|
486 | 540 |
if OpenCLFFTMethod and NumpyFFTMethod: |
487 | 541 |
print("NumpyOpenCLRatio: %f" % (OpenCLFFTRate/NumpyFFTRate)) |
542 |
>>>>>>> .r299 |
Formats disponibles : Unified diff