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

DSPOp.hh

Go to the documentation of this file.
00001 /*
00002 
00003     DSP operations, header
00004     Copyright (C) 1998-2003 Jussi Laako
00005 
00006     This program is free software; you can redistribute it and/or modify
00007     it under the terms of the GNU General Public License as published by
00008     the Free Software Foundation; either version 2 of the License, or
00009     (at your option) any later version.
00010 
00011     This program is distributed in the hope that it will be useful,
00012     but WITHOUT ANY WARRANTY; without even the implied warranty of
00013     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014     GNU General Public License for more details.
00015 
00016     You should have received a copy of the GNU General Public License
00017     along with this program; if not, write to the Free Software
00018     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00019 
00020 */
00021 
00022 
00023 #ifdef USE_INTEL_MATH
00024     #include <mathimf.h>
00025 #else
00026     #include <math.h>
00027 #endif
00028 #include <float.h>
00029 
00030 #include <Alloc.hh>
00031 
00032 #include "dsp/dsptypes.h"
00033 #include "dsp/DSPConfig.hh"
00034 #include "dsp/Transform4.hh"
00035 #include "dsp/Transform8.hh"
00036 #include "dsp/TransformS.hh"
00037  
00038 #ifdef DSP_USE_FFTW
00039     #include <fftw3.h>
00040 #endif
00041 
00042 
00043 #ifndef DSPOP_HH
00044     #define DSPOP_HH
00045 
00046     // To help compilers common subexpression elimination optimization
00047     #ifdef __GNUG__
00048         #define CONSTFUNC       __const__
00049     #else
00050         #define CONSTFUNC
00051     #endif
00052     
00053     // Enable/disable function inlining
00054     #ifndef __INTEL_COMPILER
00055         #define INLINE          inline
00056     #else
00057         #define INLINE
00058     #endif
00059 
00060     // function definitions for C-libraries lacking ISO C 9x standard
00061     #if (defined(__BCPLUSPLUS__) || defined(SOLARIS) || defined(OSX))
00062         #if (!defined(OSX))
00063             #define isgreater(x, y) (x > y)
00064             #define isless(x, y)    (x < y)
00065         #endif
00066         #define fmax(x, y)      ((x >= y) ? x : y)
00067         #define fmin(x, y)      ((x <= y) ? x : y)
00068         #define fmaxf(x, y)     fmax(x, y)
00069         #define fminf(x, y)     fmin(x, y)
00070         #define fma(x, y, z)    (z + x * y)
00071         #define fmaf(x, y, z)   fma(x, y, z)
00072         #define fabsf(x)        fabs(x)
00073         #define powf(x, y)      pow(x, y)
00074         #define sqrtf(x)        sqrt(x)
00075         #define expf(x)         exp(x)
00076         #define logf(x)         log(x)
00077         #define log10f(x)       log10(x)
00078         #define sinf(x)         sin(x)
00079         #define sinhf(x)        sinh(x)
00080         #define cosf(x)         cos(x)
00081         #define coshf(x)        cosh(x)
00082         #define atanf(x)        atan(x)
00083         #define atan2f(x, y)    atan2(x, y)
00084         #define acosf(x)        acos(x)
00085         #define acosh(x)        (log(x + sqrt(x * x - 1)))
00086         #define acoshf(x)       (logf(x + sqrtf(x * x - 1)))
00087         #define hypotf(x, y)    hypot(x, y)
00088     #endif
00089 
00090     // Microsoft VisualC++ partially conforms with ISO 9x standard
00091     #ifdef _MSC_VER
00092         #define fmax(x, y)      ((x >= y) ? x : y)
00093         #define fmin(x, y)      ((x <= y) ? x : y)
00094         #define fmaxf(x, y)     fmax(x, y)
00095         #define fminf(x, y)     fmin(x, y)
00096         #define fma(x, y, z)    (z + x * y)
00097         #define fmaf(x, y, z)   fma(x, y, z)
00098         #define acosh(x)        (log(x + sqrt(x * x - 1)))
00099         #define acoshf(x)       (logf(x + sqrtf(x * x - 1)))
00100         #define hypotf(x, y)    hypot(x, y)
00101         #define isgreater(x, y) (x > y)
00102         #define isless(x, y)    (x < y)
00103     #endif
00104 
00105     // Intel C++ partially conforms with ISO 9x standard
00106     #ifdef __INTEL_COMPILER
00107         #undef isgreater
00108         #undef isless
00109         #define isgreater(x, y) (x > y)
00110         #define isless(x, y)    (x < y)
00111     #endif
00112 
00113     // Maximum iterations for modified zero order Bessel function of first kind
00114     #define DSP_MAXBESSEL       32L
00115 
00116     // Filename for FFTW wisdom
00117     #define DSP_WISDOM_FILE     "fftw.wisdom"
00118 
00119 
00124     class clDSPAlloc : public clAlloc
00125     {
00126         public:
00127             clDSPAlloc () {}
00128             clDSPAlloc (const clDSPAlloc &CopySrc) : clAlloc(CopySrc) {}
00129             clDSPAlloc (long lAllocSize) : clAlloc(lAllocSize) {}
00130             operator stSCplx *()
00131                 { return ((stpSCplx) vpPtr); }
00132             operator stDCplx *()
00133                 { return ((stpDCplx) vpPtr); }
00134             operator stSPolar *()
00135                 { return ((stpSPolar) vpPtr); }
00136             operator stDPolar *()
00137                 { return ((stpDPolar) vpPtr); }
00138             #if defined(DSP_USE_FFTW)
00139             operator fftwf_complex *()
00140                 { return ((fftwf_complex *) vpPtr); }
00141             operator fftw_complex *()
00142                 { return ((fftw_complex *) vpPtr); }
00143             #endif
00144     };
00145 
00149     class clDSPOp
00150     {
00151             long lPrevSrcCount;
00152             long lPrevDestCount;
00153             float fPI;
00154             double dPI;
00155             // --- Dynamically allocated arrays
00156             // FIR
00157             int iFIRDlyIdx;
00158             long lFIRLength;
00159             clDSPAlloc FIRCoeff;
00160             clDSPAlloc FIRBuf;
00161             clDSPAlloc FIRWork;
00162             // IIR
00163             float fpIIR_C[5];
00164             float fpIIR_X[3];
00165             float fpIIR_Y[2];
00166             double dpIIR_C[5];
00167             double dpIIR_X[3];
00168             double dpIIR_Y[2];
00169             // FFT (and other transforms)
00170             bool bFFTInitialized;
00171             bool bRealTransform;
00172             long lFFTLength;
00173             float fFFTScale;
00174             double dFFTScale;
00175             long *lpSBitRevWork;
00176             long *lpDBitRevWork;
00177             float *fpCosSinTable;
00178             double *dpCosSinTable;
00179             void *vpSTfrm;
00180             void *vpDTfrm;
00181             clDSPAlloc SBitRevWork;
00182             clDSPAlloc DBitRevWork;
00183             clDSPAlloc SCosSinTable;
00184             clDSPAlloc DCosSinTable;
00185             clDSPAlloc FFTBuf;
00186             #if defined(DSP_USE_FFTW)
00187             fftwf_plan fftwpSPlan;
00188             fftwf_plan fftwpSIPlan;
00189             fftw_plan fftwpDPlan;
00190             fftw_plan fftwpDIPlan;
00191             #endif
00192             #if defined(DSP_USE_RADIX4)
00193             clTransform4 Tfrm;
00194             #elif defined(DSP_USE_RADIX8)
00195             clTransform8 Tfrm;
00196             #else  // Split-radix
00197             clTransformS Tfrm;
00198             #endif
00199         protected:
00211             static void Cart2Polar (float *, float *, float, float);
00213             static void Cart2Polar (double *, double *, double, double);
00220             static void Cart2Polar (float *, float *, const stpSCplx);
00222             static void Cart2Polar (double *, double *, const stpDCplx);
00228             static void Cart2Polar (stpSPolar, const stpSCplx);
00230             static void Cart2Polar (stpDPolar, const stpDCplx);
00235             static void Cart2Polar (utpSCoord);
00237             static void Cart2Polar (utpDCoord);
00246             static void Polar2Cart (float *, float *, float, float);
00248             static void Polar2Cart (double *, double *, double, double);
00250             static void Polar2Cart (stpSCplx, float, float);
00252             static void Polar2Cart (stpDCplx, double, double);
00254             static void Polar2Cart (stpSCplx, const stpSPolar);
00256             static void Polar2Cart (stpDCplx, const stpDPolar);
00258             static void Polar2Cart (utpSCoord);
00260             static void Polar2Cart (utpDCoord);
00269             static void CplxAdd (stpSCplx, const stpSCplx);
00271             static void CplxAdd (stpDCplx, const stpDCplx);
00278             static void CplxAdd (stpSCplx, const stpSCplx, const stpSCplx);
00280             static void CplxAdd (stpDCplx, const stpDCplx, const stpDCplx);
00289             static void CplxSub (stpSCplx, const stpSCplx);
00291             static void CplxSub (stpDCplx, const stpDCplx);
00298             static void CplxSub (stpSCplx, const stpSCplx, const stpSCplx);
00300             static void CplxSub (stpDCplx, const stpDCplx, const stpDCplx);
00309             static void CplxMul (stpSCplx, float);
00311             static void CplxMul (stpDCplx, double);
00321             static void CplxMul (stpSCplx, const stpSCplx);
00323             static void CplxMul (stpDCplx, const stpDCplx);
00330             static void CplxMul (stpSCplx, const stpSCplx, const stpSCplx);
00332             static void CplxMul (stpDCplx, const stpDCplx, const stpDCplx);
00342             static void CplxMulC (stpSCplx, const stpSCplx);
00344             static void CplxMulC (stpDCplx, const stpDCplx);
00351             static void CplxMulC (stpSCplx, const stpSCplx, const stpSCplx);
00353             static void CplxMulC (stpDCplx, const stpDCplx, const stpDCplx);
00363             static void CplxDiv (stpSCplx, const stpSCplx);
00365             static void CplxDiv (stpDCplx, const stpDCplx);
00372             static void CplxDiv (stpSCplx, const stpSCplx, const stpSCplx);
00374             static void CplxDiv (stpDCplx, const stpDCplx, const stpDCplx);
00375             // In-place is allowed for following
00385             static void CplxExp (stpSCplx, const stpSCplx);
00386             static void CplxExp (stpDCplx, const stpDCplx);
00393             static void CplxLog (stpSCplx, const stpSCplx);
00394             static void CplxLog (stpDCplx, const stpDCplx);
00401             static void CplxLog10 (stpSCplx, const stpSCplx);
00402             static void CplxLog10 (stpDCplx, const stpDCplx);
00408             static void CplxPow (stpSCplx, const stpSCplx, const stpSCplx);
00409             static void CplxPow (stpDCplx, const stpDCplx, const stpDCplx);
00415             static void CplxRoot (stpSCplx, const stpSCplx, const stpSCplx);
00416             static void CplxRoot (stpDCplx, const stpDCplx, const stpDCplx);
00417             static void CplxConj (stpSCplx spCplx)
00418                 { spCplx->I = -(spCplx->I); }
00419             static void CplxConj (stpDCplx spCplx)
00420                 { spCplx->I = -(spCplx->I); }
00421             static void CplxConj (stpSCplx, const stpSCplx);
00422             static void CplxConj (stpDCplx, const stpDCplx);
00430             static double Multiple (long);
00438             static float ModZeroBessel (float);
00440             static double ModZeroBessel (double);
00450             static float ChebyshevPolynom (float, float);
00451             static double ChebyshevPolynom (double, double);
00452         public:
00453             clDSPOp();
00454             ~clDSPOp();
00458             static signed long Round (float);
00459             static signed long Round (double);
00469             static void Add (float *, float, long);
00471             static void Add (double *, double, long);
00473             static void Add (stpSCplx, stSCplx, long);
00475             static void Add (stpDCplx, stDCplx, long);
00485             static void Add (float *, const float *, long);
00487             static void Add (double *, const double *, long);
00489             static void Add (stpSCplx, const stpSCplx, long);
00491             static void Add (stpDCplx, const stpDCplx, long);
00502             static void Add (float *, const float *, const float *, long);
00504             static void Add (double *, const double *, const double *, long);
00506             static void Add (stpSCplx, const stpSCplx, const stpSCplx, long);
00508             static void Add (stpDCplx, const stpDCplx, const stpDCplx, long);
00518             static void Sub (float *, float, long);
00520             static void Sub (double *, double, long);
00522             static void Sub (stpSCplx, stSCplx, long);
00524             static void Sub (stpDCplx, stDCplx, long);
00534             static void Sub (float *, const float *, long);
00536             static void Sub (double *, const double *, long);
00538             static void Sub (stpSCplx, const stpSCplx, long);
00540             static void Sub (stpDCplx, const stpDCplx, long);
00551             static void Sub (float *, const float *, const float *, long);
00553             static void Sub (double *, const double *, const double *, long);
00555             static void Sub (stpSCplx, const stpSCplx, const stpSCplx, long);
00557             static void Sub (stpDCplx, const stpDCplx, const stpDCplx, long);
00567             static void Mul (float *, float, long);
00569             static void Mul (double *, double, long);
00571             static void Mul (stpSCplx, float, long);
00573             static void Mul (stpDCplx, double, long);
00575             static void Mul (stpSCplx, stSCplx, long);
00577             static void Mul (stpDCplx, stDCplx, long);
00588             static void Mul (float *, const float *, float, long);
00590             static void Mul (double *, const double *, double, long);
00600             static void Mul (float *, const float *, long);
00602             static void Mul (double *, const double *, long);
00604             static void Mul (stpSCplx, const float *, long);
00606             static void Mul (stpDCplx, const double *, long);
00608             static void Mul (stpSCplx, const stpSCplx, long);
00610             static void Mul (stpDCplx, const stpDCplx, long);
00621             static void Mul (float *, const float *, const float *, long);
00623             static void Mul (double *, const double *, const double *, long);
00625             static void Mul (stpSCplx, const stpSCplx, const stpSCplx, long);
00627             static void Mul (stpDCplx, const stpDCplx, const stpDCplx, long);
00638             static void MulC (stpSCplx, const stpSCplx, long);
00640             static void MulC (stpDCplx, const stpDCplx, long);
00642             static void MulC (stpSCplx, const stpSCplx, const stpSCplx, long);
00644             static void MulC (stpDCplx, const stpDCplx, const stpDCplx, long);
00656             static void Mul2 (float *, float *, const float *, long);
00658             static void Mul2 (double *, double *, const double *, long);
00669             static void Mul2 (float *, float *, const float *, 
00670                 const float *, const float *, long);
00672             static void Mul2 (double *, double *, const double *, 
00673                 const double *, const double *, long);
00683             static void Div (float *, float, long);
00685             static void Div (double *, double, long);
00687             static void Div (stpSCplx, stSCplx, long);
00689             static void Div (stpDCplx, stDCplx, long);
00699             static void Div (float *, const float *, long);
00701             static void Div (double *, const double *, long);
00703             static void Div (stpSCplx, const stpSCplx, long);
00705             static void Div (stpDCplx, const stpDCplx, long);
00716             static void Div (float *, const float *, const float *, long);
00718             static void Div (double *, const double *, const double *, long);
00720             static void Div (stpSCplx, const stpSCplx, const stpSCplx, long);
00722             static void Div (stpDCplx, const stpDCplx, const stpDCplx, long);
00731             static void Div1x (float *, long);
00733             static void Div1x (double *, long);
00743             static void Div1x (float *, const float *, long);
00745             static void Div1x (double *, const double *, long);
00756             static void MulAdd (float *, float, float, long);
00757             static void MulAdd (double *, double, double, long);
00769             static void MulAdd (float *, const float *, float, float, long);
00770             static void MulAdd (double *, const double *, double, double, long);
00779             static void Abs (float *, long);
00781             static void Abs (double *, long);
00791             static void Abs (float *, const float *, long);
00793             static void Abs (double *, const double *, long);
00802             static void Sqrt (float *, long);
00804             static void Sqrt (double *, long);
00814             static void Sqrt (float *, const float *, long);
00816             static void Sqrt (double *, const double *, long);
00823             static void Zero (float *, long);
00825             static void Zero (double *, long);
00827             static void Zero (stpSCplx, long);
00829             static void Zero (stpDCplx, long);
00837             static void Set (float *, float, long);
00839             static void Set (double *, double, long);
00841             static void Set (stpSCplx, stSCplx, long);
00843             static void Set (stpDCplx, stDCplx, long);
00854             static void Set (float *, float, long, long, long);
00856             static void Set (double *, double, long, long, long);
00858             static void Set (stpSCplx, stSCplx, long, long, long);
00860             static void Set (stpDCplx, stDCplx, long, long, long);
00871             static void Clip (float *, float, long);
00873             static void Clip (double *, double, long);
00885             static void Clip (float *, const float *, float, long);
00887             static void Clip (double *, const double *, double, long);
00900             static void Clip (float *, float, float, long);
00902             static void Clip (double *, double, double, long);
00916             static void Clip (float *, const float *, float, float, long);
00918             static void Clip (double *, const double *, double, double, long);
00928             static void ClipZero (float *, long);
00930             static void ClipZero (double *, long);
00941             static void ClipZero (float *, const float *, long);
00943             static void ClipZero (double *, const double *, long);
00951             static void Copy (float *, const float *, long);
00953             static void Copy (double *, const double *, long);
00955             static void Copy (stpSCplx, const stpSCplx, long);
00957             static void Copy (stpDCplx, const stpDCplx, long);
00959             static void Copy (float *, float *, const float *, long);
00961             static void Copy (double *, double *, const double *, long);
00973             static float Convolve (const float *, const float *, long);
00975             static double Convolve (const double *, const double *, long);
00987             static void Convolve (float *, const float *, const float *, 
00988                 long);
00990             static void Convolve (double *, const double *, const double *, 
00991                 long);
01003             static float Correlate (const float *, const float *, long);
01005             static double Correlate (const double *, const double *, long);
01017             static void Correlate (float *, const float *, const float *, 
01018                 long);
01020             static void Correlate (double *, const double *, const double *, 
01021                 long);
01032             static float AutoCorrelate (const float *, long);
01034             static double AutoCorrelate (const double *, long);
01045             static void AutoCorrelate (float *, const float *, long);
01047             static void AutoCorrelate (double *, const double *, long);
01058             static float DotProduct (const float *, const float *, long);
01060             static double DotProduct (const double *, const double *, long);
01069             static void MinMax (float *, float *, const float *, long);
01071             static void MinMax (double *, double *, const double *, long);
01081             static float Mean (const float *, long);
01083             static double Mean (const double *, long);
01095             static float Median (const float *, long);
01097             static double Median (const double *, long);
01106             static void Negate (float *, long);
01108             static void Negate (double *, long);
01118             static void Negate (float *, const float *, long);
01120             static void Negate (double *, const double *, long);
01129             static void Normalize (float *, long);
01131             static void Normalize (double *, long);
01141             static void Normalize (float *, const float *, long);
01143             static void Normalize (double *, const double *, long);
01153             static float Product (const float *, long);
01155             static double Product (const double *, long);
01164             static void Reverse (float *, long);
01166             static void Reverse (double *, long);
01168             static void Reverse (stpSCplx, long);
01170             static void Reverse (stpDCplx, long);
01180             static void Reverse (float *, const float *, long);
01182             static void Reverse (double *, const double *, long);
01184             static void Reverse (stpSCplx, const stpSCplx, long);
01186             static void Reverse (stpDCplx, const stpDCplx, long);
01195             static void Scale (float *, long);
01197             static void Scale (double *, long);
01204             static void Scale (float *, const float *, long);
01206             static void Scale (double *, const double *, long);
01215             static void Scale01 (float *, long);
01217             static void Scale01 (double *, long);
01224             static void Scale01 (float *, const float *, long);
01226             static void Scale01 (double *, const double *, long);
01234             static void Sort (float *, long);
01236             static void Sort (double *, long);
01238             static void Sort (long *, long);
01250             static void StdDev (float *, float *, const float *, long);
01252             static void StdDev (double *, double *, const double *, long);
01262             static float Sum (const float *, long);
01264             static double Sum (const double *, long);
01273             static void Square (float *, long);
01275             static void Square (double *, long);
01285             static void Square (float *, const float *, long);
01287             static void Square (double *, const double *, long);
01297             static void Convert (float *, const unsigned char *, long);
01305             static void Convert (float *, const signed short *, long, bool);
01313             static void Convert (float *, const signed int *, long, bool);
01315             static void Convert (float *, const double *, long);
01317             static void Convert (double *, const unsigned char *, long);
01319             static void Convert (double *, const signed short *, long, bool);
01321             static void Convert (double *, const signed int *, long, bool);
01323             static void Convert (double *, const float *, long);
01325             static void Convert (unsigned char *, const float *, long);
01327             static void Convert (unsigned char *, const double *, long);
01329             static void Convert (signed short *, const float *, long, bool);
01331             static void Convert (signed short *, const double *, long, bool);
01333             static void Convert (signed int *, const float *, long, bool);
01335             static void Convert (signed int *, const double *, long, bool);
01346             static void CartToPolar (float *, float *, const float *, 
01347                 const float *, long);
01349             static void CartToPolar (double *, double *, const double *, 
01350                 const double *, long);
01358             static void CartToPolar (float *, float *, const stpSCplx, long);
01360             static void CartToPolar (double *, double *, const stpDCplx, long);
01367             static void CartToPolar (stpSPolar, const stpSCplx, long);
01369             static void CartToPolar (stpDPolar, const stpDCplx, long);
01373             static void CartToPolar (utpSCoord, long);
01375             static void CartToPolar (utpDCoord, long);
01386             static void PolarToCart (float *, float *, const float *,
01387                 const float *, long);
01389             static void PolarToCart (double *, double *, const double *,
01390                 const double *, long);
01398             static void PolarToCart (stpSCplx, const float *, const float *, 
01399                 long);
01401             static void PolarToCart (stpDCplx, const double *, const double *, 
01402                 long);
01409             static void PolarToCart (stpSCplx, const stpSPolar, long);
01411             static void PolarToCart (stpDCplx, const stpDPolar, long);
01415             static void PolarToCart (utpSCoord, long);
01417             static void PolarToCart (utpDCoord, long);
01430             static float CrossCorr (const float *, const float *, long);
01432             static double CrossCorr (const double *, const double *, long);
01447             static float DelCrossCorr (const float *, const float *, long, 
01448                 long);
01450             static double DelCrossCorr (const double *, const double *, long, 
01451                 long);
01467             static void DelCrossCorr (float *, const float *, const float *, 
01468                 long, const long *, long);
01470             static void DelCrossCorr (double *, const double *, const double *, 
01471                 long, const long *, long);
01481             static float Energy (const float *, long);
01483             static double Energy (const double *, long);
01493             static void Magnitude (float *, const stpSCplx, long);
01495             static void Magnitude (double *, const stpDCplx, long);
01505             static void Power (float *, const stpSCplx, long);
01507             static void Power (double *, const stpDCplx, long);
01517             static void Phase (float *, const stpSCplx, long);
01519             static void Phase (double *, const stpDCplx, long);
01529             static void PowerPhase (float *, float *, const stpSCplx, long);
01531             static void PowerPhase (double *, double *, const stpDCplx, long);
01541             static void Decimate (float *, const float *, long, long);
01543             static void Decimate (double *, const double *, long, long);
01553             static void DecimateAvg (float *, const float *, long, long);
01555             static void DecimateAvg (double *, const double *, long, long);
01564             static void Interpolate (float *, const float *, long, long);
01566             static void Interpolate (double *, const double *, long, long);
01580             static void InterpolateAvg (float *, const float *, long, long);
01581             static void InterpolateAvg (double *, const double *, long, long);
01590             static void Resample (float *, long, const float *, long);
01591             static void Resample (double *, long, const double *, long);
01600             static void ResampleAvg (float *, long, const float *, long);
01601             static void ResampleAvg (double *, long, const double *, long);
01611             static float RMS (const float *, long);
01613             static double RMS (const double *, long);
01627             static float Variance (float *, float *, const float *, long);
01629             static double Variance (double *, double *, const double *, long);
01637             static float PeakLevel (const float *, long);
01639             static double PeakLevel (const double *, long);
01646             void WinBartlett (float *, long);
01648             void WinBartlett (double *, long);
01657             // (destination vector, length)
01658             void WinBlackman (float *, long);
01660             void WinBlackman (double *, long);
01672             void WinBlackman (float *, long, float);
01673             void WinBlackman (double *, long, double);
01682             void WinBlackmanHarris (float *, long);
01684             void WinBlackmanHarris (double *, long);
01693             void WinCosTapered (float *, long);
01695             void WinCosTapered (double *, long);
01700             void WinCosTaperedA (float *, long);
01702             void WinCosTaperedA (double *, long);
01707             void WinCosTaperedA (float *, const float *, long);
01709             void WinCosTaperedA (double *, const double *, long);
01718             void WinExactBlackman (float *, long);
01720             void WinExactBlackman (double *, long);
01730             void WinExp (float *, float, long);
01732             void WinExp (double *, double, long);
01741             void WinFlatTop (float *, long);
01743             void WinFlatTop (double *, long);
01754             void WinGenericCos (float *, long, const float *, long);
01756             void WinGenericCos (double *, long, const double *, long);
01765             void WinHamming (float *, long);
01767             void WinHamming (double *, long);
01776             void WinHanning (float *, long);
01778             void WinHanning (double *, long);
01790             void WinKaiser (float *, float, long);
01792             void WinKaiser (double *, double, long);
01803             void WinKaiserBessel (float *, float, long);
01805             void WinKaiserBessel (double *, double, long);
01814             void WinTukey (float *, long);
01816             void WinTukey (double *, long);
01829             void WinDolphChebyshev (float *, float, long);
01830             void WinDolphChebyshev (double *, double, long);
01838             static void Mix (float *, const float *, long);
01840             static void Mix (double *, const double *, long);
01845             static void Mix (float *, const float *, const float *, long);
01847             static void Mix (double *, const double *, const double *, long);
01852             static void Mix (float *, const float *, long, long);
01854             static void Mix (double *, const double *, long, long);
01864             void Spatialize (float *, float *, const float *, long);
01866             void Spatialize (double *, double *, const double *, long);
01868             void Spatialize (float *, const float *, long);
01870             void Spatialize (double *, const double *, long);
01880             static void Extract (float *, const float *, long, long, long);
01882             static void Extract (double *, const double *, long, long, long);
01892             static void Pack (float *, const float *, long, long, long);
01894             static void Pack (double *, const double *, long, long, long);
01914             long ReBuffer (float *, const float *, long, long);
01916             long ReBuffer (double *, const double *, long, long);
01925             double DegToRad (double dSource)
01926                 { return ((dPI / 180.0) * dSource); }
01928             float DegToRad (float fSource)
01929                 { return ((fPI / 180.0F) * fSource); }
01938             double RadToDeg (double dSource)
01939                 { return ((180.0 / dPI) * dSource); }
01941             float RadToDeg (float fSource)
01942                 { return ((180.0F / fPI) * fSource); }
01948             static void FFTWConvert (stpSCplx, const float *, long);
01950             static void FFTWConvert (stpDCplx, const float *, long);
01952             static void FFTWConvert (stpSCplx, const double *, long);
01954             static void FFTWConvert (stpDCplx, const double *, long);
01958             static void FFTWConvert (float *, const stpSCplx, long);
01960             static void FFTWConvert (float *, const stpDCplx, long);
01962             static void FFTWConvert (double *, const stpSCplx, long);
01964             static void FFTWConvert (double *, const stpDCplx, long);
01971             void FIRAllocate (const float *, long);
01973             void FIRAllocate (const double *, long);
01980             void FIRFilter (float *, long);
01982             void FIRFilter (double *, long);
01989             void FIRFilter (float *, const float *, long);
01991             void FIRFilter (double *, const double *, long);
02002             void FIRFilterF (float *, float *, long);
02004             void FIRFilterF (double *, double *, long);
02008             void FIRFree ();
02018             void IIRInitialize (const float *);
02020             void IIRInitialize (const double *);
02030             void IIRFilter (float *, long);
02032             void IIRFilter (double *, long);
02039             void IIRFilter (float *, const float *, long);
02041             void IIRFilter (double *, const double *, long);
02045             void IIRClear ();
02052             void FFTInitialize (long, bool);
02056             void FFTUninitialize ();
02064             void FFTi (stpSCplx, float *);
02066             void FFTi (stpDCplx, double *);
02074             void FFTo (stpSCplx, const float *);
02076             void FFTo (stpDCplx, const double *);
02078             void FFTo (stpSCplx, const stpSCplx);
02080             void FFTo (stpDCplx, const stpDCplx);
02088             void IFFTo (float *, const stpSCplx);
02090             void IFFTo (double *, const stpDCplx);
02092             void IFFTo (stpSCplx, const stpSCplx);
02094             void IFFTo (stpDCplx, const stpDCplx);
02095     };
02096 
02097 #endif
02098 

Generated on Tue Mar 2 19:46:44 2004 for libDSP by doxygen 1.3.6