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 TRANSFORM8_HH
00032 #define TRANSFORM8_HH
00033
00034 #ifdef TRANSFORM_INLINE
00035 #define T8_INLINE inline
00036 #else
00037 #define T8_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
00064 class clTransform8
00065 {
00066 void makewt(long, long *, float *);
00067 void makewt(long, long *, double *);
00068 void makect(long, long *, float *);
00069 void makect(long, long *, double *);
00070 void bitrv2(long, long *, float *);
00071 void bitrv2(long, long *, double *);
00072 void bitrv2conj(long, long *, float *);
00073 void bitrv2conj(long, long *, double *);
00074 void cftfsub(long, float *, float *);
00075 void cftfsub(long, double *, double *);
00076 void cftbsub(long, float *, float *);
00077 void cftbsub(long, double *, double *);
00078 void cft1st(long, float *, float *);
00079 void cft1st(long, double *, double *);
00080 void cftmdl(long, long, float *, float *);
00081 void cftmdl(long, long, double *, double *);
00082 void rftfsub(long, float *, long, float *);
00083 void rftfsub(long, double *, long, double *);
00084 void rftbsub(long, float *, long, float *);
00085 void rftbsub(long, double *, long, double *);
00086 void dctsub(long, float *, long, float *);
00087 void dctsub(long, double *, long, double *);
00088 void dstsub(long, float *, long, float *);
00089 void dstsub(long, double *, long, double *);
00090 public:
00091
00092
00093
00094 void cdft(long, long, float *, long *, float *);
00095 void cdft(long, long, double *, long *, double *);
00096
00097
00098 void rdft(long, long, float *, long *, float *);
00099 void rdft(long, long, double *, long *, double *);
00100
00101 void ddct(long, long, float *, long *, float *);
00102 void ddct(long, long, double *, long *, double *);
00103
00104 void ddst(long, long, float *, long *, float *);
00105 void ddst(long, long, double *, long *, double *);
00106
00107 void dfct(long, float *, float *, long *, float *);
00108 void dfct(long, double *, double *, long *, double *);
00109
00110 void dfst(long, float *, float *, long *, float *);
00111 void dfst(long, double *, double *, long *, double *);
00112 };
00113
00114 #endif
00115