static void cftfsub( int n, double* a, int* ip, int nw, double* w ) {
//void bitrv2(int n, int *ip, double *a);
//void bitrv216(double *a);
//void bitrv208(double *a);
//void cftf1st(int n, double *a, double *w);
//void cftrec4(int n, double *a, int nw, double *w);
//void cftleaf(int n, int isplt, double *a, int nw, double *w);
//void cftfx41(int n, double *a, int nw, double *w);
//void cftf161(double *a, double *w);
//void cftf081(double *a, double *w);
//void cftf040(double *a);
//void cftx020(double *a);
if ( n > 8 ) {
if ( n > 32 ) {
cftf1st( n, a, &w[nw - (n >> 2)] );
if ( n > 512 ) {
cftrec4( n, a, nw, w );
} else if ( n > 128 ) {
cftleaf( n, 1, a, nw, w );
} else {
cftfx41( n, a, nw, w );
}
bitrv2( n, ip, a );
} else if ( n == 32 ) {
cftf161( a, &w[nw - 8] );
bitrv216( a );
} else {
cftf081( a, w );
bitrv208( a );
}
} else if ( n == 8 ) {
cftf040( a );
} else if ( n == 4 ) {
cftx020( a );
}
}