00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef TRANSFORM4_HH
00032 #define TRANSFORM4_HH
00033
00034 #ifdef TRANSFORM_INLINE
00035 #define T4_INLINE inline
00036 #else
00037 #define T4_INLINE
00038 #endif
00039
00040 #if (defined(_GNU_SOURCE) && (!defined(ALPHA)))
00041 #ifndef TRANSFORM_EXT_PREC
00042 #define TRANSFORM_EXT_PREC
00043 #endif
00044 #endif
00045
00046 #if (defined(__BORLANDC__) || defined(SOLARIS) || defined(OSX))
00047 #define sinf(x) sin(x)
00048 #define cosf(x) cos(x)
00049 #define atanf(x) atan(x)
00050 #endif
00051
00052
00053
00054
00055
00065 class clTransform4
00066 {
00067 void makewt(long, long *, float *);
00068 void makewt(long, long *, double *);
00069 void makect(long, long *, float *);
00070 void makect(long, long *, double *);
00071 void bitrv2(long, long *, float *);
00072 void bitrv2(long, long *, double *);
00073 void bitrv2conj(long, long *, float *);
00074 void bitrv2conj(long, long *, double *);
00075 void cftfsub(long, float *, float *);
00076 void cftfsub(long, double *, double *);
00077 void cftbsub(long, float *, float *);
00078 void cftbsub(long, double *, double *);
00079 void cft1st(long, float *, float *);
00080 void cft1st(long, double *, double *);
00081 void cftmdl(long, long, float *, float *);
00082 void cftmdl(long, long, double *, double *);
00083 void rftfsub(long, float *, long, float *);
00084 void rftfsub(long, double *, long, double *);
00085 void rftbsub(long, float *, long, float *);
00086 void rftbsub(long, double *, long, double *);
00087 void dctsub(long, float *, long, float *);
00088 void dctsub(long, double *, long, double *);
00089 void dstsub(long, float *, long, float *);
00090 void dstsub(long, double *, long, double *);
00091 public:
00123
00124
00125 void cdft(long, long, float *, long *, float *);
00127 void cdft(long, long, double *, long *, double *);
00168
00169 void rdft(long, long, float *, long *, float *);
00171 void rdft(long, long, double *, long *, double *);
00195 void ddct(long, long, float *, long *, float *);
00197 void ddct(long, long, double *, long *, double *);
00231 void ddst(long, long, float *, long *, float *);
00233 void ddst(long, long, double *, long *, double *);
00255 void dfct(long, float *, float *, long *, float *);
00257 void dfct(long, double *, double *, long *, double *);
00279 void dfst(long, float *, float *, long *, float *);
00281 void dfst(long, double *, double *, long *, double *);
00282 };
00283
00284 #endif
00285