source: trunk/NS3D_JMC/JMFFT-8.0/test/tjmrfftmlt2.f90 @ 12

Last change on this file since 12 was 12, checked in by xlvlod, 17 years ago

ajout code NS3D

File size: 1.2 KB
Line 
1! Transformee de Fourier reel-complexe multiple
2
3program tjmrfftmlt2
4
5  implicit none
6
7  integer, parameter :: m = 7
8
9  integer, parameter :: n = 36
10  real, dimension(0:n+1,0:m-1) :: x, xx
11
12  integer, parameter :: ntrigs = 2*n
13  real, dimension(0:ntrigs-1) :: trigs
14
15  integer, parameter :: nifax = 19
16  real, dimension(0:nifax-1) :: ifax
17
18  integer, parameter :: nwork = 2*m*n
19  real, dimension(0:nwork-1) :: work
20
21  integer :: isign
22  integer :: i, j, k
23  real :: twopi
24  complex :: s
25  integer :: inc, jump
26
27  twopi = 2 * acos(real(-1))
28
29  ! On prepare le tableau d'entree
30  call random_number( x )
31  xx = x
32
33  call fftfax(n,ifax,trigs)
34  isign = -1
35  print *,'jmrfftmlt ',n,m,isign
36  inc = 1
37  jump = n+2
38  call rfftmlt(x,work,trigs,ifax,inc,jump,n,m,isign)
39
40  ! On imprime le tableau de sortie
41  open(10,file='temp1',status='unknown',form='formatted')
42  write(10,'(2e25.12)') x(0:2*(n/2+1)-1,0:m-1)
43
44  ! Ce qu'il faut trouver
45  open(11,file='temp2',status='unknown',form='formatted')
46
47  ! On reprepare le tableau d'entree
48  x = xx
49  do j = 0,m-1
50    do i = 0,n/2
51      s = 0
52      do k = 0,n-1
53        s = s+cmplx(cos(twopi*i*k/real(n)),isign*sin(twopi*i*k/real(n)))*x(k,j)
54      end do
55      write(11,'(2e25.12)') s/real(n)
56    end do
57  end do
58
59end program tjmrfftmlt2
Note: See TracBrowser for help on using the repository browser.