| 1525 | } |
| 1526 | |
| 1527 | static void fftrecurs(SPFLOAT * ioptr, int M, SPFLOAT * Utbl, int Ustride, int NDiffU, |
| 1528 | int StageCnt) |
| 1529 | { |
| 1530 | /* recursive bfstages calls to maximize on chip cache efficiency */ |
| 1531 | int i1; |
| 1532 | |
| 1533 | if (M <= (int) MCACHE) /* fits on chip ? */ |
| 1534 | bfstages(ioptr, M, Utbl, Ustride, NDiffU, StageCnt); /* RADIX 8 Stages */ |
| 1535 | else |
| 1536 | { |
| 1537 | for (i1 = 0; i1 < 8; i1++) |
| 1538 | { |
| 1539 | fftrecurs(&ioptr[i1 * POW2(M - 3) * 2], M - 3, Utbl, 8 * Ustride, |
| 1540 | NDiffU, StageCnt - 1); /* RADIX 8 Stages */ |
| 1541 | } |
| 1542 | bfstages(ioptr, M, Utbl, Ustride, POW2(M - 3), 1); /* RADIX 8 Stage */ |
| 1543 | } |
| 1544 | } |
| 1545 | |
| 1546 | #if 0 |
| 1547 | static void ffts1(SPFLOAT * ioptr, int M, SPFLOAT * Utbl, int16_t * BRLow) |