1 | <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
---|
2 | <HTML> |
---|
3 | <HEAD> |
---|
4 | <title>RFFTMLT</title> |
---|
5 | </HEAD> |
---|
6 | |
---|
7 | <BODY BGCOLOR="#fdf5e6"> |
---|
8 | <PRE> |
---|
9 | <B>*** JMFFT 8.0 - émulation des FFTs de la SciLib de CRAY - (c) CNRS/IDRIS ***</B> |
---|
10 | |
---|
11 | <B>NOM</B> |
---|
12 | |
---|
13 | RFFTMLT - Applique une Transformée de Fourier rapide (FFT) |
---|
14 | complexe-réelle ou réelle-complexe à un ensemble donné de vecteurs. |
---|
15 | |
---|
16 | <B>SYNTAXE</B> |
---|
17 | |
---|
18 | CALL FFTFAX(n, ifax, trigs) |
---|
19 | |
---|
20 | CALL RFFTMLT (x, work, trigs, ifax, inc1x, inc2x, n, lot, isign) |
---|
21 | |
---|
22 | <B>IMPLEMENTATION</B> |
---|
23 | |
---|
24 | Ces sous-programmes émulent les sous-programmes de même nom de la SCILIB de |
---|
25 | CRAY. Tous les arguments réels ou complexes doivent être déclarés en |
---|
26 | double précision. |
---|
27 | |
---|
28 | <B>DESCRIPTION</B> |
---|
29 | |
---|
30 | Quand isign=-1, RFFTMLT applique une FFT réelle-complexe à un ensemble |
---|
31 | donné de vecteurs. Pour chacun des m vecteurs réels x(j,m) j = 0,1,...,n-1, |
---|
32 | RFFTMLT calcule le vecteur complexe y(k,m) k = 0,1,...,n/2 tel que : |
---|
33 | |
---|
34 | n-1 |
---|
35 | y(k,m) = 1/n Sum x(j,m) (w(n)**(-j*k)) |
---|
36 | j=0 |
---|
37 | |
---|
38 | pour k = 0,1,...,n/2, |
---|
39 | où, w(n) = exp((2*pi*i)/n). |
---|
40 | |
---|
41 | Quand isign = +1, RFFTMLT applique une FFT complexe-réelle (FFT |
---|
42 | inverse). pour chacun des m vecteur complexe y(k,m) k = 0,1,...,n/2, |
---|
43 | RFFTMLT calcule le vecteur réel x(j,m) j = 0,1,...,n-1 tel que : |
---|
44 | |
---|
45 | n-1 |
---|
46 | x(j,m) = Sum y(k,m) (w(n)**(j*k)) |
---|
47 | k=0 |
---|
48 | |
---|
49 | pour j = 0,1,...,n-1 |
---|
50 | où, w(n) = exp((2*pi*i)/n) |
---|
51 | |
---|
52 | <B>ARGUMENTS</B> |
---|
53 | |
---|
54 | x Tableau du type REAL(KIND=8) de dimension (0:n+1, lot). (entrée/sortie) |
---|
55 | En entrée, il contient les éléments à transformer. |
---|
56 | En sortie, il contient les éléments transformés. |
---|
57 | La première dimension doit être au moins égale à n+2. |
---|
58 | |
---|
59 | work Tableau du type REAL(KIND==8) de dimension 2*n*lot. |
---|
60 | Espace de travail. |
---|
61 | |
---|
62 | trigs Tableau du type REAL(KIND==8) de dimension 2*n. (entrée) Il |
---|
63 | contient la table des sinus et cosinus. Le sous-programme suivant |
---|
64 | initialise les deux tableaux trigs et ifax à la fois : |
---|
65 | |
---|
66 | CALL FFTFAX(n, ifax, trigs) |
---|
67 | |
---|
68 | ifax Tableau du type INTEGER de dimension 19. (entrée) |
---|
69 | Il contient la liste des facteurs premiers de n. |
---|
70 | Il est initialisé à l'appel du sous-programme FFTFAX (voir ci-dessus). |
---|
71 | |
---|
72 | inc1x Scalaire du type INTEGER. (entrée) |
---|
73 | Le pas de déplacement en nombre d'éléments réels dans chaque |
---|
74 | vecteur à transformer. |
---|
75 | |
---|
76 | inc2x Scalaire du type INTEGER. (entrée) |
---|
77 | Le déplacement entre les premiers éléments de deux vecteurs consécutifs. |
---|
78 | |
---|
79 | n Scalaire du type INTEGER. (entrée) |
---|
80 | Longueur de chaque vecteur à transformer. n >= 2. |
---|
81 | n doit être un nombre paire. |
---|
82 | |
---|
83 | Toute valeur non valide de n conduit le sous-programme FFTFAX à retourner |
---|
84 | un code d'erreur ifax(1)=-99. |
---|
85 | |
---|
86 | lot Scalaire du type INTEGER. (entrée) |
---|
87 | Le nombre de vecteurs à transformer. |
---|
88 | |
---|
89 | isign Scalaire du type INTEGER. (entrée) |
---|
90 | -1 --> applique une FFT réelle-complexe. |
---|
91 | +1 --> applique une FFT complexe-réelle (FFT inverse). |
---|
92 | |
---|
93 | <B>EXEMPLES</B> |
---|
94 | |
---|
95 | Le programme suivant montre les séquences d'appels à FFTFAX et RFFTMLT |
---|
96 | pour calculer la FFT du tableau A : |
---|
97 | |
---|
98 | INTEGER, PARAMETER :: n = 16, lot = 2, inc = 1, jump = inc*(n+2) |
---|
99 | REAL(KIND=8), DIMENSION(jump, lot) :: a |
---|
100 | REAL(KIND=8), DIMENSION(2*n) :: trigs |
---|
101 | REAL(KIND=8), DIMENSION(2*n*lot) :: work |
---|
102 | INTEGER, DIMENSION(19) :: ifax |
---|
103 | . . . |
---|
104 | CALL FFTFAX(n, ifax, trigs) |
---|
105 | CALL RFFTMLT(a, work, trigs, ifax, inc, jump, n, lot, -1) |
---|
106 | . . . |
---|
107 | |
---|
108 | <B>VOIR AUSSI</B> |
---|
109 | |
---|
110 | RFFTMLT |
---|
111 | </PRE> |
---|
112 | |
---|
113 | <!--#include virtual="/includes/fin.html" --> |
---|
114 | </BODY> |
---|
115 | </HTML> |
---|