Rogue Wave banner
Previous fileTop of DocumentContentsIndex pageNext file
Essential Math Module Reference Guide
Rogue Wave web site:  Home Page  |  Main Documentation Page

DoubleFFTServer

Module:  Essential Math    Group:  FFT Server classes


Does not inherit

Local Index

Members

Synopsis

#include <rw/dfft.h>
DoubleFFTServer dffts;

Description

Class DoubleFFTServer performs double precision complex fast Fourier transforms (FFTs) of a real vector.

At any given moment, the server is configured to transform a real vector of a specified length. This length can be set one of three ways:

If you use the last method, the server automatically reconfigures to the new length if the vector length changes. This is an expensive calculation. Hence, it is most efficient to call this method repeatedly for series of the same length. Different FFT servers may be constructed to handle different lengths.

The real vector must have an even number of points.

Let V(j), j=0, 1, ..., 2N-1 be a 2N point long real sequence. Its transform is a complex conjugate-even sequence, that is:

C(n) = conj[(C( -- n)]

or:

C(n) = conj[C(2N -- n)].

The function fourier() returns the lower half of this complex conjugate-even sequence, that is, C(n), n=0, ..., N. The upper half can be recovered from the relationship C(n) = conj[C(2N-n)]. Note that the returned complex conjugate-even sequence C(n) has N+1 complex points, or a total of 2N+2 numbers. The two extra numbers are the imaginary parts of C(0) and C(N), which are always 0.

The forward transform calculated is:

The inverse Fourier transform calculated is:

where V is real and C is complex. Note that only points C(n), n=0, ..., N should be given. Also note that the sum is not normalized; a call to fourier() followed by a call to ifourier() results in the original series multiplied by 2N.

Public Constructors

DoubleFFTServer();
DoubleFFTServer(unsigned oforder);
DoubleFFTServer(const DoubleFFTServer&);

Public Member Functions

RWMathVec<DComplex>
fourier(const RWMathVec<double>&);
RWMathVec<double>
ifourier(const RWMathVec<DComplex>& v);
unsigned   
order() const;
void   
setOrder(unsigned N);

Public Member Operator

void
operator=(const DoubleFFTServer& v);

Related Global Functions



Previous fileTop of DocumentContentsIndex pageNext file

© Copyright Rogue Wave Software, Inc. All Rights Reserved.
Rogue Wave and SourcePro are registered trademarks of Rogue Wave Software, Inc. in the United States and other countries. All other trademarks are the property of their respective owners.
Contact Rogue Wave about documentation or support issues.