+ err = check_diff(&tab_ref->re, &tab->re, fft_size * 2, 1.0);
+ break;
+#if FFT_FLOAT
+#if CONFIG_RDFT
+ case TRANSFORM_RDFT:
+ {
+ int 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(&tab_ref->re, &tab->re, 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(&tab_ref->re, tab2, fft_size, 1.0);
+ }
+ break;
+ }
+#endif /* CONFIG_RDFT */
+#if CONFIG_DCT
+ case TRANSFORM_DCT:
+ memcpy(tab, tab1, fft_size * sizeof(FFTComplex));
+ d.dct_calc(&d, &tab->re);
+ if (do_inverse)
+ idct_ref(&tab_ref->re, &tab1->re, fft_nbits);
+ else
+ dct_ref(&tab_ref->re, &tab1->re, fft_nbits);
+ err = check_diff(&tab_ref->re, &tab->re, fft_size, 1.0);
+ break;
+#endif /* CONFIG_DCT */
+#endif /* FFT_FLOAT */