Révision 302

ETSN/MyDFT_5b.py (revision 302)
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;
ETSN/MyDFT_10.py (revision 302)
398 398

  
399 399
    
400 400
        
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)
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)
405 405

  
406 406
    C_np = np.zeros(SIZE).astype(np.float32)
407 407
    D_np = np.zeros(SIZE).astype(np.float32)
......
486 486
        print("Precision: ",np.linalg.norm(i_np-C_np),
487 487
              np.linalg.norm(j_np-D_np)) 
488 488
    
489
<<<<<<< .mine
490 489
    if OpenCLMethod and NumpyFFTMethod:
491 490
        print(OpenCLMethod,NumpyFFTMethod)
492 491
        print("Precision: ",np.linalg.norm(m_np-i_np),
......
535 534
        print(m_np,n_np) 
536 535
        print((g_np-m_np),(h_np-n_np)) 
537 536
        
538
||||||| .r292
539
=======
540 537
    if OpenCLFFTMethod and NumpyFFTMethod:
541 538
        print("NumpyOpenCLRatio: %f" % (OpenCLFFTRate/NumpyFFTRate))
542
>>>>>>> .r299

Formats disponibles : Unified diff