+ err = check_diff((FFTSample *)tab_ref, (FFTSample *)tab, fft_size * 2, 1.0);
+ break;
+#if CONFIG_FFT_FLOAT
+ case TRANSFORM_RDFT:
+ fft_size_2 = fft_size >> 1;
+ if (do_inverse) {
+ tab1[ 0].im = 0;
+ tab1[fft_size_2].im = 0;
+ for (i = 1; i < fft_size_2; i++) {
+ tab1[fft_size_2+i].re = tab1[fft_size_2-i].re;
+ tab1[fft_size_2+i].im = -tab1[fft_size_2-i].im;
+ }
+
+ memcpy(tab2, tab1, fft_size * sizeof(FFTSample));
+ tab2[1] = tab1[fft_size_2].re;
+
+ r->rdft_calc(r, tab2);
+ fft_ref(tab_ref, tab1, fft_nbits);
+ for (i = 0; i < fft_size; i++) {
+ tab[i].re = tab2[i];
+ tab[i].im = 0;
+ }
+ err = check_diff((float *)tab_ref, (float *)tab, fft_size * 2, 0.5);
+ } else {
+ for (i = 0; i < fft_size; i++) {
+ tab2[i] = tab1[i].re;
+ tab1[i].im = 0;
+ }
+ r->rdft_calc(r, tab2);
+ fft_ref(tab_ref, tab1, fft_nbits);
+ tab_ref[0].im = tab_ref[fft_size_2].re;
+ err = check_diff((float *)tab_ref, (float *)tab2, fft_size, 1.0);
+ }
+ break;
+ case TRANSFORM_DCT:
+ memcpy(tab, tab1, fft_size * sizeof(FFTComplex));
+ d->dct_calc(d, tab);
+ if (do_inverse) {
+ idct_ref(tab_ref, tab1, fft_nbits);
+ } else {
+ dct_ref(tab_ref, tab1, fft_nbits);
+ }
+ err = check_diff((float *)tab_ref, (float *)tab, fft_size, 1.0);
+ break;
+#endif