12 |
12 |
for i in range(size):
|
13 |
13 |
for j in range(size):
|
14 |
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)
|
|
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;
|
... | ... | |
135 |
135 |
float A=0.,B=0.;
|
136 |
136 |
for (uint i=0; i<size;i++)
|
137 |
137 |
{
|
138 |
|
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)-b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
139 |
|
B+=a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size);
|
|
138 |
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
|
139 |
B+=-a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size);
|
140 |
140 |
}
|
141 |
141 |
A_g[gid]=A;
|
142 |
142 |
B_g[gid]=B;
|