
void  setupfft(int n1,int nx,double dx,double *sx,double *wx) ;
void  sin1d(double *u,int n1,int nx,double *wx,double *work1,double *work2 ) ;
void  poisson1d(double *u,int n1,int nx,double *sx,double *wx,double *work1,double *work2);

void gauss_seidel(int nmax , int nx 
				 , linear_eqn *A , double* x , double* b  ) ;

int pcg_1d_list(int nmax , int nx 
				 , linear_eqn *A , double* x
				 , double* b     , double* r  , double *r_hat
				 , double* v     , double* z
				 , int imax , double eps , double delta ) ;