public static void cdft( int n, int isgn, double* a, int* ip, double* w ) {
//void makewt(int nw, int *ip, double *w);
//void cftfsub(int n, double *a, int *ip, int nw, double *w);
//void cftbsub(int n, double *a, int *ip, int nw, double *w);
int nw;
nw = ip[0];
if ( n > (nw << 2) ) {
nw = n >> 2;
makewt( nw, ip, w );
}
if ( isgn >= 0 ) {
cftfsub( n, a, ip, nw, w );
} else {
cftbsub( n, a, ip, nw, w );
}
}