[12] | 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> |
---|