Révision 300 ETSN/MyDFT_8.py

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;

Formats disponibles : Unified diff