Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members

clTransform4 Class Reference

Decimation-in-frequency radix-2/4 transform. More...

#include <Transform4.hh>

List of all members.

Public Member Functions

void cdft (long, long, float *, long *, float *)
 Complex DFT.

void cdft (long, long, double *, long *, double *)
void rdft (long, long, float *, long *, float *)
 Real DFT.

void rdft (long, long, double *, long *, double *)
void ddct (long, long, float *, long *, float *)
 DCT.

void ddct (long, long, double *, long *, double *)
void ddst (long, long, float *, long *, float *)
 DST.

void ddst (long, long, double *, long *, double *)
void dfct (long, float *, float *, long *, float *)
 CT of RDFT.

void dfct (long, double *, double *, long *, double *)
void dfst (long, float *, float *, long *, float *)
 ST of RDFT.

void dfst (long, double *, double *, long *, double *)

Private Member Functions

void makewt (long, long *, float *)
void makewt (long, long *, double *)
void makect (long, long *, float *)
void makect (long, long *, double *)
void bitrv2 (long, long *, float *)
void bitrv2 (long, long *, double *)
void bitrv2conj (long, long *, float *)
void bitrv2conj (long, long *, double *)
void cftfsub (long, float *, float *)
void cftfsub (long, double *, double *)
void cftbsub (long, float *, float *)
void cftbsub (long, double *, double *)
void cft1st (long, float *, float *)
void cft1st (long, double *, double *)
void cftmdl (long, long, float *, float *)
void cftmdl (long, long, double *, double *)
void rftfsub (long, float *, long, float *)
void rftfsub (long, double *, long, double *)
void rftbsub (long, float *, long, float *)
void rftbsub (long, double *, long, double *)
void dctsub (long, float *, long, float *)
void dctsub (long, double *, long, double *)
void dstsub (long, float *, long, float *)
void dstsub (long, double *, long, double *)


Detailed Description

Decimation-in-frequency radix-2/4 transform.

Author:
Takuya OOURA

Jussi Laako

Note:
DFT parts of this class has been wrapped into clDSPOp with easier interface.

Definition at line 65 of file Transform4.hh.


Member Function Documentation

void clTransform4::makewt long  ,
long *  ,
float * 
[private]
 

Definition at line 653 of file Transform4.cc.

References bitrv2().

Referenced by cdft(), ddct(), ddst(), dfct(), dfst(), and rdft().

void clTransform4::makewt long  ,
long *  ,
double * 
[private]
 

Definition at line 1700 of file Transform4.cc.

References bitrv2().

void clTransform4::makect long  ,
long *  ,
float * 
[private]
 

Definition at line 695 of file Transform4.cc.

Referenced by ddct(), ddst(), dfct(), dfst(), and rdft().

void clTransform4::makect long  ,
long *  ,
double * 
[private]
 

Definition at line 1742 of file Transform4.cc.

T4_INLINE void clTransform4::bitrv2 long  ,
long *  ,
float * 
[private]
 

Definition at line 727 of file Transform4.cc.

References T4_INLINE.

Referenced by cdft(), ddct(), ddst(), dfct(), dfst(), makewt(), and rdft().

T4_INLINE void clTransform4::bitrv2 long  ,
long *  ,
double * 
[private]
 

Definition at line 1774 of file Transform4.cc.

References T4_INLINE.

T4_INLINE void clTransform4::bitrv2conj long  ,
long *  ,
float * 
[private]
 

Definition at line 827 of file Transform4.cc.

References T4_INLINE.

Referenced by cdft().

T4_INLINE void clTransform4::bitrv2conj long  ,
long *  ,
double * 
[private]
 

Definition at line 1874 of file Transform4.cc.

References T4_INLINE.

T4_INLINE void clTransform4::cftfsub long  ,
float *  ,
float * 
[private]
 

Definition at line 936 of file Transform4.cc.

References cft1st(), cftmdl(), and T4_INLINE.

Referenced by cdft(), ddct(), ddst(), dfct(), dfst(), and rdft().

T4_INLINE void clTransform4::cftfsub long  ,
double *  ,
double * 
[private]
 

Definition at line 1983 of file Transform4.cc.

References cft1st(), cftmdl(), and T4_INLINE.

T4_INLINE void clTransform4::cftbsub long  ,
float *  ,
float * 
[private]
 

Definition at line 986 of file Transform4.cc.

References cft1st(), cftmdl(), and T4_INLINE.

Referenced by cdft(), ddct(), ddst(), and rdft().

T4_INLINE void clTransform4::cftbsub long  ,
double *  ,
double * 
[private]
 

Definition at line 2033 of file Transform4.cc.

References cft1st(), cftmdl(), and T4_INLINE.

T4_INLINE void clTransform4::cft1st long  ,
float *  ,
float * 
[private]
 

Definition at line 1036 of file Transform4.cc.

References T4_INLINE.

Referenced by cftbsub(), and cftfsub().

T4_INLINE void clTransform4::cft1st long  ,
double *  ,
double * 
[private]
 

Definition at line 2083 of file Transform4.cc.

References T4_INLINE.

T4_INLINE void clTransform4::cftmdl long  ,
long  ,
float *  ,
float * 
[private]
 

Definition at line 1141 of file Transform4.cc.

References T4_INLINE.

Referenced by cftbsub(), and cftfsub().

T4_INLINE void clTransform4::cftmdl long  ,
long  ,
double *  ,
double * 
[private]
 

Definition at line 2188 of file Transform4.cc.

References T4_INLINE.

T4_INLINE void clTransform4::rftfsub long  ,
float *  ,
long  ,
float * 
[private]
 

Definition at line 1268 of file Transform4.cc.

References T4_INLINE.

Referenced by ddct(), ddst(), dfct(), dfst(), and rdft().

T4_INLINE void clTransform4::rftfsub long  ,
double *  ,
long  ,
double * 
[private]
 

Definition at line 2315 of file Transform4.cc.

References T4_INLINE.

T4_INLINE void clTransform4::rftbsub long  ,
float *  ,
long  ,
float * 
[private]
 

Definition at line 1293 of file Transform4.cc.

References T4_INLINE.

Referenced by ddct(), ddst(), and rdft().

T4_INLINE void clTransform4::rftbsub long  ,
double *  ,
long  ,
double * 
[private]
 

Definition at line 2340 of file Transform4.cc.

References T4_INLINE.

T4_INLINE void clTransform4::dctsub long  ,
float *  ,
long  ,
float * 
[private]
 

Definition at line 1320 of file Transform4.cc.

References T4_INLINE.

Referenced by ddct(), and dfct().

T4_INLINE void clTransform4::dctsub long  ,
double *  ,
long  ,
double * 
[private]
 

Definition at line 2367 of file Transform4.cc.

References T4_INLINE.

T4_INLINE void clTransform4::dstsub long  ,
float *  ,
long  ,
float * 
[private]
 

Definition at line 1341 of file Transform4.cc.

References T4_INLINE.

Referenced by ddst(), and dfst().

T4_INLINE void clTransform4::dstsub long  ,
double *  ,
long  ,
double * 
[private]
 

Definition at line 2388 of file Transform4.cc.

References T4_INLINE.

void clTransform4::cdft long  ,
long  ,
float *  ,
long *  ,
float * 
 

Complex DFT.

Forward:

\[X(k)=\sum_{j=0}^{N-1}x(j)\exp(2\pi{ijk/N}), 0\leq{k}\leq{N-1}\]

Inverse:

\[X(k)=\sum_{j=0}^{N-1}x(j)\exp(-2\pi{ijk/N}), 0\leq{k}\leq{N-1}\]

Input data:

\[\left\vert\begin{array}{l} a(2j)=\Re_{x}(j)\\ a(2j+1)=\Im_{x}(j) \end{array}\right., 0\leq{j}\leq{N-1}\]

Output data:

\[\left\vert\begin{array}{l} a(2k)=\Re_{X}(k)\\ a(2k+1)=\Im_{X}(k) \end{array}\right., 0\leq{k}\leq{N-1}\]

Work area size:

\[2+\sqrt{N}\]

Scaling factor:

\[\frac{1}{N}\]

Parameters:
Size Window size, 2*N
Direction Direction of transform; 1 = fwd, -1 = inv
Data Source & destination data, size 2*N
WorkArea Working area, [0] = 0 to initialize
CosSin cos/sin table, size N/2

Definition at line 318 of file Transform4.cc.

References bitrv2(), bitrv2conj(), cftbsub(), cftfsub(), and makewt().

void clTransform4::cdft long  ,
long  ,
double *  ,
long *  ,
double * 
 

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 1365 of file Transform4.cc.

References bitrv2(), bitrv2conj(), cftbsub(), cftfsub(), and makewt().

void clTransform4::rdft long  ,
long  ,
float *  ,
long *  ,
float * 
 

Real DFT.

Forward:

\[\left\vert\begin{array}{ll} \Re_{X}(k)=\sum_{j=0}^{N-1}a(j)\cos(2\pi{jk/N})&, 0\leq{k}\leq{N/2}\\ \Im_{X}(k)=\sum_{j=0}^{N-1}a(j)\sin(2\pi{jk/N})&, 0<k<N/2 \end{array}\right.\]

Inverse:

\[ a(k)=\frac{\left(\Re_{X}(0)+\Re_{X}(\frac{N}{2})cos(\pi{k})\right)}{2}+ \sum_{j=1}^{N/2-1}\Re_{X}(j)\cos(2\pi{jk/N})+ \sum_{j=1}^{N/2-1}\Im_{X}(j)\sin(2\pi{jk/N}), 0\leq{k}\leq{N-1} \]

Output data:

\[\left\vert\begin{array}{ll} a(2k)=\Re_{X}(k)&, 0\leq{k}<N/2\\ a(2k+1)=\Im_{X}(k)&, 0<k<N/2\\ a(1)=\Re_{X}(N/2) \end{array}\right.\]

Input data:

\[\left\vert\begin{array}{ll} a(2j)=\Re_{X}(j)&, 0\leq{j}<N/2\\ a(2j+1)=\Im_{X}(j)&, 0<j<N/2\\ a(1)=\Re_{X}(N/2) \end{array}\right.\]

Work area size:

\[2+\sqrt{\frac{N}{2}}\]

Scaling factor:

\[\frac{2}{N}\]

Parameters:
Size Window size, N
Direction Direction of transform; 1 = fwd, -1 = inv
Data Source & destination data, size N
WorkArea Working area, [0] = 0 to initialize
CosSin cos/sin table, size N/2

Definition at line 337 of file Transform4.cc.

References bitrv2(), cftbsub(), cftfsub(), makect(), makewt(), rftbsub(), and rftfsub().

void clTransform4::rdft long  ,
long  ,
double *  ,
long *  ,
double * 
 

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 1384 of file Transform4.cc.

References bitrv2(), cftbsub(), cftfsub(), makect(), makewt(), rftbsub(), and rftfsub().

void clTransform4::ddct long  ,
long  ,
float *  ,
long *  ,
float * 
 

DCT.

Forward:

\[C(k)=\sum_{j=0}^{N-1}a(j)\cos(\pi{j(k+1/2)/N}), 0\leq{k}\leq{N-1}\]

Inverse:

\[C(k)=\sum_{j=0}^{N-1}a(j)\cos(\pi(j+1/2)k/N), 0\leq{k}\leq{N-1}\]

Input/output data:

\[a(k)=C(k), 0\leq{k}\leq{N-1}\]

Work area size:

\[2+\sqrt{\frac{N}{2}}\]

Scaling factors:

\[(0)0.5, \frac{2}{N}\]

Parameters:
Size Window size, N
Direction Direction of transform; 1 = fwd, -1 = inv
Data Source & destination data, size N
WorkArea Working area, [0] = 0 to initialize
CosSin cos/sin table, size N*5/4

Definition at line 377 of file Transform4.cc.

References bitrv2(), cftbsub(), cftfsub(), dctsub(), makect(), makewt(), rftbsub(), and rftfsub().

void clTransform4::ddct long  ,
long  ,
double *  ,
long *  ,
double * 
 

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 1424 of file Transform4.cc.

References bitrv2(), cftbsub(), cftfsub(), dctsub(), makect(), makewt(), rftbsub(), and rftfsub().

void clTransform4::ddst long  ,
long  ,
float *  ,
long *  ,
float * 
 

DST.

Forward:

\[S(k)=\sum_{j=1}^{N}A(j)\sin(\pi{j(k+1/2)/N}), 0\leq{k}\leq{N-1}\]

Inverse:

\[S(k)=\sum_{j=0}^{N-1}a(j)\sin(\pi(j+1/2)k/N), 0<k\leq{N}\]

Input data (forward):

\[\left\vert\begin{array}{ll} a(j)=A(j)&, 0<j<N\\ a(0)=A(N) \end{array}\right.\]

Output data (forward):

\[a(k)=S(k), 0\leq{k}\leq{N-1}\]

Output data (inverse):

\[\left\vert\begin{array}{ll} a(k)=S(k), 0<k<N\\ a(0)=S(N) \end{array}\right.\]

Work area size:

\[2+\sqrt{\frac{N}{2}}\]

Scaling factors:

\[(0)0.5, \frac{2}{N}\]

Parameters:
Size Window size, N
Direction Direction of transform; 1 = fwd, -1 = inv
Data Source & destination data, size N
WorkArea Working area, [0] = 0 to initialize
CosSin cos/sin table, size N*5/4

Definition at line 428 of file Transform4.cc.

References bitrv2(), cftbsub(), cftfsub(), dstsub(), makect(), makewt(), rftbsub(), and rftfsub().

void clTransform4::ddst long  ,
long  ,
double *  ,
long *  ,
double * 
 

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 1475 of file Transform4.cc.

References bitrv2(), cftbsub(), cftfsub(), dstsub(), makect(), makewt(), rftbsub(), and rftfsub().

void clTransform4::dfct long  ,
float *  ,
float *  ,
long *  ,
float * 
 

CT of RDFT.

Definition:

\[C(k)=\sum_{j=0}^{N}a(j)\cos(\pi{jk/N}), 0\leq{k}\leq{N}\]

Output data:

\[a(k)=C(k), 0\leq{k}\leq{N}\]

Work area size:

\[2+\sqrt{\frac{N}{4}}\]

Scaling factors:

\[(0)0.5, (N)0.5, \frac{2}{N}\]

Parameters:
Size Window size, N
Data Source & destination data, size N+1
Scratch Scratch pad, size N/2+1
WorkArea Working area, [0] = 0 to initialize
CosSin cos/sin table, size N*5/8

Definition at line 479 of file Transform4.cc.

References bitrv2(), cftfsub(), dctsub(), makect(), makewt(), and rftfsub().

void clTransform4::dfct long  ,
double *  ,
double *  ,
long *  ,
double * 
 

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 1526 of file Transform4.cc.

References bitrv2(), cftfsub(), dctsub(), makect(), makewt(), and rftfsub().

void clTransform4::dfst long  ,
float *  ,
float *  ,
long *  ,
float * 
 

ST of RDFT.

Definition:

\[S(k)=\sum_{j=1}^{N-1}a(j)\sin(\pi{jk/N}), 0<k<N\]

Output data:

\[a(k)=S(k), 0<k<N\]

Work area size:

\[2+\sqrt{\frac{N}{4}}\]

Scaling factor:

\[\frac{2}{N}\]

Parameters:
Size Window size, N
Data Source & destination data, size N+1
Scratch Scratch pad, size N/2
WorkArea Working area, [0] = 0 to initialize
CosSin cos/sin table, size N*5/8

Definition at line 569 of file Transform4.cc.

References bitrv2(), cftfsub(), dstsub(), makect(), makewt(), and rftfsub().

void clTransform4::dfst long  ,
double *  ,
double *  ,
long *  ,
double * 
 

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 1616 of file Transform4.cc.

References bitrv2(), cftfsub(), dstsub(), makect(), makewt(), and rftfsub().


The documentation for this class was generated from the following files:
Generated on Tue Mar 2 19:47:14 2004 for libDSP by doxygen 1.3.6