/*
Interface for the f2c translation of fftpack as found on http : //www.netlib.org/fftpack/
FFTPACK license :
http : //www.cisl.ucar.edu/css/software/fftpack5/ftpk.html
Copyright ( c ) 2004 the University Corporation for Atmospheric
Research ( " UCAR " ) . All rights reserved . Developed by NCAR ' s
Computational and Information Systems Laboratory , UCAR ,
www . cisl . ucar . edu .
Redistribution and use of the Software in source and binary forms ,
with or without modification , is permitted provided that the
following conditions are met :
- Neither the names of NCAR ' s Computational and Information Systems
Laboratory , the University Corporation for Atmospheric Research ,
nor the names of its sponsors or contributors may be used to
endorse or promote products derived from this Software without
specific prior written permission .
- Redistributions of source code must retain the above copyright
notices , this list of conditions , and the disclaimer below .
- Redistributions in binary form must reproduce the above copyright
notice , this list of conditions , and the disclaimer below in the
documentation and / or other materials provided with the
distribution .
THIS SOFTWARE IS PROVIDED " AS IS " , WITHOUT WARRANTY OF ANY KIND ,
EXPRESS OR IMPLIED , INCLUDING , BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY , FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT . IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM , INDIRECT , INCIDENTAL , SPECIAL ,
EXEMPLARY , OR CONSEQUENTIAL DAMAGES OR OTHER LIABILITY , WHETHER IN AN
ACTION OF CONTRACT , TORT OR OTHERWISE , ARISING FROM , OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
SOFTWARE .
ChangeLog :
2011 / 10 / 02 : this is my first release of this file .
*/
#ifndef FFTPACK_H
#define FFTPACK_H
#ifdef __cplusplus
extern "C" {
#endif
// just define FFTPACK_DOUBLE_PRECISION if you want to build it as a double precision fft
#ifndef FFTPACK_DOUBLE_PRECISION
typedef float fftpack_real;
typedef int fftpack_int;
#else
typedef double fftpack_real;
typedef int fftpack_int;
#endif
void cffti(fftpack_int n, fftpack_real *wsave);
void cfftf(fftpack_int n, fftpack_real *c, fftpack_real *wsave);
void cfftb(fftpack_int n, fftpack_real *c, fftpack_real *wsave);
void rffti(fftpack_int n, fftpack_real *wsave);
void rfftf(fftpack_int n, fftpack_real *r, fftpack_real *wsave);
void rfftb(fftpack_int n, fftpack_real *r, fftpack_real *wsave);
void cosqi(fftpack_int n, fftpack_real *wsave);
void cosqf(fftpack_int n, fftpack_real *x, fftpack_real *wsave);
void cosqb(fftpack_int n, fftpack_real *x, fftpack_real *wsave);
void costi(fftpack_int n, fftpack_real *wsave);
void cost(fftpack_int n, fftpack_real *x, fftpack_real *wsave);
void sinqi(fftpack_int n, fftpack_real *wsave);
void sinqb(fftpack_int n, fftpack_real *x, fftpack_real *wsave);
void sinqf(fftpack_int n, fftpack_real *x, fftpack_real *wsave);
void sinti(fftpack_int n, fftpack_real *wsave);
void sint(fftpack_int n, fftpack_real *x, fftpack_real *wsave);
#ifdef __cplusplus
}
#endif
#endif /* FFTPACK_H */
/*
FFTPACK
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
version 4 april 1985
a package of fortran subprograms for the fast fourier
transform of periodic and other symmetric sequences
by
paul n swarztrauber
national center for atmospheric research boulder , colorado 80307
which is sponsored by the national science foundation
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
this package consists of programs which perform fast fourier
transforms for both complex and real periodic sequences and
certain other symmetric sequences that are listed below .
1 . rffti initialize rfftf and rfftb
2 . rfftf forward transform of a real periodic sequence
3 . rfftb backward transform of a real coefficient array
4 . ezffti initialize ezfftf and ezfftb
5 . ezfftf a simplified real periodic forward transform
6 . ezfftb a simplified real periodic backward transform
7 . sinti initialize sint
8 . sint sine transform of a real odd sequence
9 . costi initialize cost
10 . cost cosine transform of a real even sequence
11 . sinqi initialize sinqf and sinqb
12 . sinqf forward sine transform with odd wave numbers
13 . sinqb unnormalized inverse of sinqf
14 . cosqi initialize cosqf and cosqb
15 . cosqf forward cosine transform with odd wave numbers
16 . cosqb unnormalized inverse of cosqf
17 . cffti initialize cfftf and cfftb
18 . cfftf forward transform of a complex periodic sequence
19 . cfftb unnormalized inverse of cfftf
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine rffti ( n , wsave )
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine rffti initializes the array wsave which is used in
both rfftf and rfftb . the prime factorization of n together with
a tabulation of the trigonometric functions are computed and
stored in wsave .
input parameter
n the length of the sequence to be transformed .
output parameter
wsave a work array which must be dimensioned at least 2 * n + 15 .
the same work array can be used for both rfftf and rfftb
as long as n remains unchanged . different wsave arrays
are required for different values of n . the contents of
wsave must not be changed between calls of rfftf or rfftb .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine rfftf ( n , r , wsave )
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine rfftf computes the fourier coefficients of a real
perodic sequence ( fourier analysis ) . the transform is defined
below at output parameter r .
input parameters
n the length of the array r to be transformed . the method
is most efficient when n is a product of small primes .
n may change so long as different work arrays are provided
r a real array of length n which contains the sequence
to be transformed
wsave a work array which must be dimensioned at least 2 * n + 15 .
in the program that calls rfftf . the wsave array must be
initialized by calling subroutine rffti ( n , wsave ) and a
different wsave array must be used for each different
value of n . this initialization does not have to be
repeated so long as n remains unchanged thus subsequent
transforms can be obtained faster than the first .
the same wsave array can be used by rfftf and rfftb .
output parameters
r r ( 1 ) = the sum from i = 1 to i = n of r ( i )
if n is even set l = n / 2 , if n is odd set l = ( n + 1 ) / 2
then for k = 2 , . . . , l
r ( 2 * k - 2 ) = the sum from i = 1 to i = n of
r ( i ) * cos ( ( k - 1 ) * ( i - 1 ) * 2 * pi / n )
r ( 2 * k - 1 ) = the sum from i = 1 to i = n of
- r ( i ) * sin ( ( k - 1 ) * ( i - 1 ) * 2 * pi / n )
if n is even
r ( n ) = the sum from i = 1 to i = n of
( - 1 ) * * ( i - 1 ) * r ( i )
* * * * * note
this transform is unnormalized since a call of rfftf
followed by a call of rfftb will multiply the input
sequence by n .
wsave contains results which must not be destroyed between
calls of rfftf or rfftb .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine rfftb ( n , r , wsave )
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine rfftb computes the real perodic sequence from its
fourier coefficients ( fourier synthesis ) . the transform is defined
below at output parameter r .
input parameters
n the length of the array r to be transformed . the method
is most efficient when n is a product of small primes .
n may change so long as different work arrays are provided
r a real array of length n which contains the sequence
to be transformed
wsave a work array which must be dimensioned at least 2 * n + 15 .
in the program that calls rfftb . the wsave array must be
initialized by calling subroutine rffti ( n , wsave ) and a
different wsave array must be used for each different
value of n . this initialization does not have to be
repeated so long as n remains unchanged thus subsequent
transforms can be obtained faster than the first .
the same wsave array can be used by rfftf and rfftb .
output parameters
r for n even and for i = 1 , . . . , n
r ( i ) = r ( 1 ) + ( - 1 ) * * ( i - 1 ) * r ( n )
plus the sum from k = 2 to k = n / 2 of
2 . * r ( 2 * k - 2 ) * cos ( ( k - 1 ) * ( i - 1 ) * 2 * pi / n )
- 2 . * r ( 2 * k - 1 ) * sin ( ( k - 1 ) * ( i - 1 ) * 2 * pi / n )
for n odd and for i = 1 , . . . , n
r ( i ) = r ( 1 ) plus the sum from k = 2 to k = ( n + 1 ) / 2 of
2 . * r ( 2 * k - 2 ) * cos ( ( k - 1 ) * ( i - 1 ) * 2 * pi / n )
- 2 . * r ( 2 * k - 1 ) * sin ( ( k - 1 ) * ( i - 1 ) * 2 * pi / n )
* * * * * note
this transform is unnormalized since a call of rfftf
followed by a call of rfftb will multiply the input
sequence by n .
wsave contains results which must not be destroyed between
calls of rfftb or rfftf .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine sinti ( n , wsave )
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine sinti initializes the array wsave which is used in
subroutine sint . the prime factorization of n together with
a tabulation of the trigonometric functions are computed and
stored in wsave .
input parameter
n the length of the sequence to be transformed . the method
is most efficient when n + 1 is a product of small primes .
output parameter
wsave a work array with at least int ( 2 . 5 * n + 15 ) locations .
different wsave arrays are required for different values
of n . the contents of wsave must not be changed between
calls of sint .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine sint ( n , x , wsave )
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine sint computes the discrete fourier sine transform
of an odd sequence x ( i ) . the transform is defined below at
output parameter x .
sint is the unnormalized inverse of itself since a call of sint
followed by another call of sint will multiply the input sequence
x by 2 * ( n + 1 ) .
the array wsave which is used by subroutine sint must be
initialized by calling subroutine sinti ( n , wsave ) .
input parameters
n the length of the sequence to be transformed . the method
is most efficient when n + 1 is the product of small primes .
x an array which contains the sequence to be transformed
wsave a work array with dimension at least int ( 2 . 5 * n + 15 )
in the program that calls sint . the wsave array must be
initialized by calling subroutine sinti ( n , wsave ) and a
different wsave array must be used for each different
value of n . this initialization does not have to be
repeated so long as n remains unchanged thus subsequent
transforms can be obtained faster than the first .
output parameters
x for i = 1 , . . . , n
x ( i ) = the sum from k = 1 to k = n
2 * x ( k ) * sin ( k * i * pi / ( n + 1 ) )
a call of sint followed by another call of
sint will multiply the sequence x by 2 * ( n + 1 ) .
hence sint is the unnormalized inverse
of itself .
wsave contains initialization calculations which must not be
destroyed between calls of sint .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine costi ( n , wsave )
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine costi initializes the array wsave which is used in
subroutine cost . the prime factorization of n together with
a tabulation of the trigonometric functions are computed and
stored in wsave .
input parameter
n the length of the sequence to be transformed . the method
is most efficient when n - 1 is a product of small primes .
output parameter
wsave a work array which must be dimensioned at least 3 * n + 15 .
different wsave arrays are required for different values
of n . the contents of wsave must not be changed between
calls of cost .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine cost ( n , x , wsave )
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine cost computes the discrete fourier cosine transform
of an even sequence x ( i ) . the transform is defined below at output
parameter x .
cost is the unnormalized inverse of itself since a call of cost
followed by another call of cost will multiply the input sequence
x by 2 * ( n - 1 ) . the transform is defined below at output parameter x
the array wsave which is used by subroutine cost must be
initialized by calling subroutine costi ( n , wsave ) .
input parameters
n the length of the sequence x . n must be greater than 1 .
the method is most efficient when n - 1 is a product of
small primes .
x an array which contains the sequence to be transformed
wsave a work array which must be dimensioned at least 3 * n + 15
in the program that calls cost . the wsave array must be
initialized by calling subroutine costi ( n , wsave ) and a
different wsave array must be used for each different
value of n . this initialization does not have to be
repeated so long as n remains unchanged thus subsequent
transforms can be obtained faster than the first .
output parameters
x for i = 1 , . . . , n
x ( i ) = x ( 1 ) + ( - 1 ) * * ( i - 1 ) * x ( n )
+ the sum from k = 2 to k = n - 1
2 * x ( k ) * cos ( ( k - 1 ) * ( i - 1 ) * pi / ( n - 1 ) )
a call of cost followed by another call of
cost will multiply the sequence x by 2 * ( n - 1 )
hence cost is the unnormalized inverse
of itself .
wsave contains initialization calculations which must not be
destroyed between calls of cost .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine sinqi ( n , wsave )
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine sinqi initializes the array wsave which is used in
both sinqf and sinqb . the prime factorization of n together with
a tabulation of the trigonometric functions are computed and
stored in wsave .
input parameter
n the length of the sequence to be transformed . the method
is most efficient when n is a product of small primes .
output parameter
wsave a work array which must be dimensioned at least 3 * n + 15 .
the same work array can be used for both sinqf and sinqb
as long as n remains unchanged . different wsave arrays
are required for different values of n . the contents of
wsave must not be changed between calls of sinqf or sinqb .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine sinqf ( n , x , wsave )
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine sinqf computes the fast fourier transform of quarter
wave data . that is , sinqf computes the coefficients in a sine
series representation with only odd wave numbers . the transform
is defined below at output parameter x .
sinqb is the unnormalized inverse of sinqf since a call of sinqf
followed by a call of sinqb will multiply the input sequence x
by 4 * n .
the array wsave which is used by subroutine sinqf must be
initialized by calling subroutine sinqi ( n , wsave ) .
input parameters
n the length of the array x to be transformed . the method
is most efficient when n is a product of small primes .
x an array which contains the sequence to be transformed
wsave a work array which must be dimensioned at least 3 * n + 15 .
in the program that calls sinqf . the wsave array must be
initialized by calling subroutine sinqi ( n , wsave ) and a
different wsave array must be used for each different
value of n . this initialization does not have to be
repeated so long as n remains unchanged thus subsequent
transforms can be obtained faster than the first .
output parameters
x for i = 1 , . . . , n
x ( i ) = ( - 1 ) * * ( i - 1 ) * x ( n )
+ the sum from k = 1 to k = n - 1 of
2 * x ( k ) * sin ( ( 2 * i - 1 ) * k * pi / ( 2 * n ) )
a call of sinqf followed by a call of
sinqb will multiply the sequence x by 4 * n .
therefore sinqb is the unnormalized inverse
of sinqf .
wsave contains initialization calculations which must not
be destroyed between calls of sinqf or sinqb .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine sinqb ( n , x , wsave )
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine sinqb computes the fast fourier transform of quarter
wave data . that is , sinqb computes a sequence from its
representation in terms of a sine series with odd wave numbers .
the transform is defined below at output parameter x .
sinqf is the unnormalized inverse of sinqb since a call of sinqb
followed by a call of sinqf will multiply the input sequence x
by 4 * n .
the array wsave which is used by subroutine sinqb must be
initialized by calling subroutine sinqi ( n , wsave ) .
input parameters
n the length of the array x to be transformed . the method
is most efficient when n is a product of small primes .
x an array which contains the sequence to be transformed
wsave a work array which must be dimensioned at least 3 * n + 15 .
in the program that calls sinqb . the wsave array must be
initialized by calling subroutine sinqi ( n , wsave ) and a
different wsave array must be used for each different
value of n . this initialization does not have to be
repeated so long as n remains unchanged thus subsequent
transforms can be obtained faster than the first .
output parameters
x for i = 1 , . . . , n
x ( i ) = the sum from k = 1 to k = n of
4 * x ( k ) * sin ( ( 2 k - 1 ) * i * pi / ( 2 * n ) )
a call of sinqb followed by a call of
sinqf will multiply the sequence x by 4 * n .
therefore sinqf is the unnormalized inverse
of sinqb .
wsave contains initialization calculations which must not
be destroyed between calls of sinqb or sinqf .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine cosqi ( n , wsave )
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine cosqi initializes the array wsave which is used in
both cosqf and cosqb . the prime factorization of n together with
a tabulation of the trigonometric functions are computed and
stored in wsave .
input parameter
n the length of the array to be transformed . the method
is most efficient when n is a product of small primes .
output parameter
wsave a work array which must be dimensioned at least 3 * n + 15 .
the same work array can be used for both cosqf and cosqb
as long as n remains unchanged . different wsave arrays
are required for different values of n . the contents of
wsave must not be changed between calls of cosqf or cosqb .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine cosqf ( n , x , wsave )
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine cosqf computes the fast fourier transform of quarter
wave data . that is , cosqf computes the coefficients in a cosine
series representation with only odd wave numbers . the transform
is defined below at output parameter x
cosqf is the unnormalized inverse of cosqb since a call of cosqf
followed by a call of cosqb will multiply the input sequence x
by 4 * n .
the array wsave which is used by subroutine cosqf must be
initialized by calling subroutine cosqi ( n , wsave ) .
input parameters
n the length of the array x to be transformed . the method
is most efficient when n is a product of small primes .
x an array which contains the sequence to be transformed
wsave a work array which must be dimensioned at least 3 * n + 15
in the program that calls cosqf . the wsave array must be
initialized by calling subroutine cosqi ( n , wsave ) and a
different wsave array must be used for each different
value of n . this initialization does not have to be
repeated so long as n remains unchanged thus subsequent
transforms can be obtained faster than the first .
output parameters
x for i = 1 , . . . , n
x ( i ) = x ( 1 ) plus the sum from k = 2 to k = n of
2 * x ( k ) * cos ( ( 2 * i - 1 ) * ( k - 1 ) * pi / ( 2 * n ) )
a call of cosqf followed by a call of
cosqb will multiply the sequence x by 4 * n .
therefore cosqb is the unnormalized inverse
of cosqf .
wsave contains initialization calculations which must not
be destroyed between calls of cosqf or cosqb .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine cosqb ( n , x , wsave )
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine cosqb computes the fast fourier transform of quarter
wave data . that is , cosqb computes a sequence from its
representation in terms of a cosine series with odd wave numbers .
the transform is defined below at output parameter x .
cosqb is the unnormalized inverse of cosqf since a call of cosqb
followed by a call of cosqf will multiply the input sequence x
by 4 * n .
the array wsave which is used by subroutine cosqb must be
initialized by calling subroutine cosqi ( n , wsave ) .
input parameters
n the length of the array x to be transformed . the method
is most efficient when n is a product of small primes .
x an array which contains the sequence to be transformed
wsave a work array that must be dimensioned at least 3 * n + 15
in the program that calls cosqb . the wsave array must be
initialized by calling subroutine cosqi ( n , wsave ) and a
different wsave array must be used for each different
value of n . this initialization does not have to be
repeated so long as n remains unchanged thus subsequent
transforms can be obtained faster than the first .
output parameters
x for i = 1 , . . . , n
x ( i ) = the sum from k = 1 to k = n of
4 * x ( k ) * cos ( ( 2 * k - 1 ) * ( i - 1 ) * pi / ( 2 * n ) )
a call of cosqb followed by a call of
cosqf will multiply the sequence x by 4 * n .
therefore cosqf is the unnormalized inverse
of cosqb .
wsave contains initialization calculations which must not
be destroyed between calls of cosqb or cosqf .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine cffti ( n , wsave )
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine cffti initializes the array wsave which is used in
both cfftf and cfftb . the prime factorization of n together with
a tabulation of the trigonometric functions are computed and
stored in wsave .
input parameter
n the length of the sequence to be transformed
output parameter
wsave a work array which must be dimensioned at least 4 * n + 15
the same work array can be used for both cfftf and cfftb
as long as n remains unchanged . different wsave arrays
are required for different values of n . the contents of
wsave must not be changed between calls of cfftf or cfftb .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine cfftf ( n , c , wsave )
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine cfftf computes the forward complex discrete fourier
transform ( the fourier analysis ) . equivalently , cfftf computes
the fourier coefficients of a complex periodic sequence .
the transform is defined below at output parameter c .
the transform is not normalized . to obtain a normalized transform
the output must be divided by n . otherwise a call of cfftf
followed by a call of cfftb will multiply the sequence by n .
the array wsave which is used by subroutine cfftf must be
initialized by calling subroutine cffti ( n , wsave ) .
input parameters
n the length of the complex sequence c . the method is
more efficient when n is the product of small primes . n
c a complex array of length n which contains the sequence
wsave a real work array which must be dimensioned at least 4 n + 15
in the program that calls cfftf . the wsave array must be
initialized by calling subroutine cffti ( n , wsave ) and a
different wsave array must be used for each different
value of n . this initialization does not have to be
repeated so long as n remains unchanged thus subsequent
transforms can be obtained faster than the first .
the same wsave array can be used by cfftf and cfftb .
output parameters
c for j = 1 , . . . , n
c ( j ) = the sum from k = 1 , . . . , n of
c ( k ) * exp ( - i * ( j - 1 ) * ( k - 1 ) * 2 * pi / n )
where i = sqrt ( - 1 )
wsave contains initialization calculations which must not be
destroyed between calls of subroutine cfftf or cfftb
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine cfftb ( n , c , wsave )
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
subroutine cfftb computes the backward complex discrete fourier
transform ( the fourier synthesis ) . equivalently , cfftb computes
a complex periodic sequence from its fourier coefficients .
the transform is defined below at output parameter c .
a call of cfftf followed by a call of cfftb will multiply the
sequence by n .
the array wsave which is used by subroutine cfftb must be
initialized by calling subroutine cffti ( n , wsave ) .
input parameters
n the length of the complex sequence c . the method is
more efficient when n is the product of small primes .
c a complex array of length n which contains the sequence
wsave a real work array which must be dimensioned at least 4 n + 15
in the program that calls cfftb . the wsave array must be
initialized by calling subroutine cffti ( n , wsave ) and a
different wsave array must be used for each different
value of n . this initialization does not have to be
repeated so long as n remains unchanged thus subsequent
transforms can be obtained faster than the first .
the same wsave array can be used by cfftf and cfftb .
output parameters
c for j = 1 , . . . , n
c ( j ) = the sum from k = 1 , . . . , n of
c ( k ) * exp ( i * ( j - 1 ) * ( k - 1 ) * 2 * pi / n )
where i = sqrt ( - 1 )
wsave contains initialization calculations which must not be
destroyed between calls of subroutine cfftf or cfftb
*/
Messung V0.5 in Prozent C=89 H=96 G=92
¤ Dauer der Verarbeitung: 0.30 Sekunden
¤
*© Formatika GbR, Deutschland