comparison fft-test.c @ 5418:95234f2e0bdd libavcodec

make the reference code use double instead of float where it is easy
author michael
date Sun, 29 Jul 2007 10:11:12 +0000
parents 3eca9008175b
children f5d2349dccd7
comparison
equal deleted inserted replaced
5417:3eca9008175b 5418:95234f2e0bdd
48 FFTComplex *exptab; 48 FFTComplex *exptab;
49 49
50 void fft_ref_init(int nbits, int inverse) 50 void fft_ref_init(int nbits, int inverse)
51 { 51 {
52 int n, i; 52 int n, i;
53 float c1, s1, alpha; 53 double c1, s1, alpha;
54 54
55 n = 1 << nbits; 55 n = 1 << nbits;
56 exptab = av_malloc((n / 2) * sizeof(FFTComplex)); 56 exptab = av_malloc((n / 2) * sizeof(FFTComplex));
57 57
58 for(i=0;i<(n/2);i++) { 58 for(i=0;i<(n/2);i++) {
67 } 67 }
68 68
69 void fft_ref(FFTComplex *tabr, FFTComplex *tab, int nbits) 69 void fft_ref(FFTComplex *tabr, FFTComplex *tab, int nbits)
70 { 70 {
71 int n, i, j, k, n2; 71 int n, i, j, k, n2;
72 float tmp_re, tmp_im, s, c; 72 double tmp_re, tmp_im, s, c;
73 FFTComplex *q; 73 FFTComplex *q;
74 74
75 n = 1 << nbits; 75 n = 1 << nbits;
76 n2 = n >> 1; 76 n2 = n >> 1;
77 for(i=0;i<n;i++) { 77 for(i=0;i<n;i++) {
96 } 96 }
97 97
98 void imdct_ref(float *out, float *in, int n) 98 void imdct_ref(float *out, float *in, int n)
99 { 99 {
100 int k, i, a; 100 int k, i, a;
101 float sum, f; 101 double sum, f;
102 102
103 for(i=0;i<n;i++) { 103 for(i=0;i<n;i++) {
104 sum = 0; 104 sum = 0;
105 for(k=0;k<n/2;k++) { 105 for(k=0;k<n/2;k++) {
106 a = (2 * i + 1 + (n / 2)) * (2 * k + 1); 106 a = (2 * i + 1 + (n / 2)) * (2 * k + 1);
113 113
114 /* NOTE: no normalisation by 1 / N is done */ 114 /* NOTE: no normalisation by 1 / N is done */
115 void mdct_ref(float *output, float *input, int n) 115 void mdct_ref(float *output, float *input, int n)
116 { 116 {
117 int k, i; 117 int k, i;
118 float a, s; 118 double a, s;
119 119
120 /* do it by hand */ 120 /* do it by hand */
121 for(k=0;k<n/2;k++) { 121 for(k=0;k<n/2;k++) {
122 s = 0; 122 s = 0;
123 for(i=0;i<n;i++) { 123 for(i=0;i<n;i++) {