37void FC_FUNC(oct_nfft_init_1d, OCT_NFFT_INIT_1D)(nfft_plan *plan, 
int *N1,
 
   40  nfft_init_1d(plan, *N1, *M);
 
   44void FC_FUNC(oct_nfft_init_2d, OCT_NFFT_INIT_2D)(nfft_plan *plan, 
int *N1,
 
   47  nfft_init_2d(plan, *N1, *N2, *M);
 
   51void FC_FUNC(oct_nfft_init_3d, OCT_NFFT_INIT_3D)(nfft_plan *plan, 
int *N1,
 
   52                                                 int *N2, 
int *N3, 
int *M) {
 
   54  nfft_init_3d(plan, *N1, *N2, *N3, *M);
 
   58void FC_FUNC(oct_nfft_init_guru,
 
   59             OCT_NFFT_INIT_GURU)(nfft_plan *ths, 
int *d, 
int *N, 
int *M, 
int *n,
 
   60                                 int *m, 
unsigned *nfft_flags,
 
   61                                 unsigned *fftw_flags) {
 
   63  nfft_init_guru(ths, *d, N, *M, n, *m, *nfft_flags, *fftw_flags);
 
   67void FC_FUNC(oct_nfft_check, OCT_NFFT_CHECK)(nfft_plan *ths) {
 
   73void FC_FUNC(oct_nfft_finalize, OCT_NFFT_FINALIZE)(nfft_plan *ths) {
 
   79void FC_FUNC(oct_nfft_trafo, OCT_NFFT_TRAFO)(nfft_plan *ths) {
 
   85void FC_FUNC(oct_nfft_adjoint, OCT_NFFT_ADJOINT)(nfft_plan *ths) {
 
   91void FC_FUNC(oct_nfft_precompute_one_psi_1d,
 
   92             OCT_NFFT_PRECOMPUTE_ONE_PSI_1D)(nfft_plan *plan, 
int *m,
 
   99  for (ii = 0; ii < M; ii++)
 
  100    plan->x[ii] = X1[ii];
 
  103  if (plan->flags & PRE_ONE_PSI)
 
  104    nfft_precompute_one_psi(plan);
 
  106  if (plan->nfft_flags & PRE_ONE_PSI)
 
  107    nfft_precompute_one_psi(plan);
 
  112void FC_FUNC(oct_nfft_precompute_one_psi_2d,
 
  113             OCT_NFFT_PRECOMPUTE_ONE_PSI_2D)(nfft_plan *plan, 
int *M,
 
  114                                             double *X1, 
double *X2) {
 
  120  for (ii = 0; ii < M[0]; ii++) {
 
  121    for (jj = 0; jj < M[1]; jj++) {
 
  122      plan->x[2 * (M[1] * ii + jj) + 0] = X1[ii];
 
  123      plan->x[2 * (M[1] * ii + jj) + 1] = X2[jj];
 
  128  if (plan->flags & PRE_ONE_PSI)
 
  129    nfft_precompute_one_psi(plan);
 
  131  if (plan->nfft_flags & PRE_ONE_PSI)
 
  132    nfft_precompute_one_psi(plan);
 
  137void FC_FUNC(oct_nfft_precompute_one_psi_3d,
 
  138             OCT_NFFT_PRECOMPUTE_ONE_PSI_3D)(nfft_plan *plan, 
int *M,
 
  139                                             double *X1, 
double *X2,
 
  144  for (ii = 0; ii < M[0]; ii++) {
 
  145    for (jj = 0; jj < M[1]; jj++) {
 
  146      for (kk = 0; kk < M[2]; kk++) {
 
  147        plan->x[3 * (M[1] * M[2] * ii + M[2] * jj + kk) + 0] = X1[ii];
 
  148        plan->x[3 * (M[1] * M[2] * ii + M[2] * jj + kk) + 1] = X2[jj];
 
  149        plan->x[3 * (M[1] * M[2] * ii + M[2] * jj + kk) + 2] = X3[kk];
 
  154  if (plan->flags & PRE_ONE_PSI)
 
  155    nfft_precompute_one_psi(plan);
 
  157  if (plan->nfft_flags & PRE_ONE_PSI)
 
  158    nfft_precompute_one_psi(plan);
 
  166void FC_FUNC(zoct_set_f, ZOCT_SET_F)(nfft_plan *plan, 
int *M, 
int *DIM,
 
  167                                     double complex *VAL, 
int *IX, 
int *IY,
 
  175  double complex val = *VAL;
 
  179    plan->f[ix - 1] = val;
 
  182    plan->f[(ix - 1) * M[1] + (iy - 1)] = val;
 
  185    plan->f[(ix - 1) * M[1] * M[2] + (iy - 1) * M[2] + (iz - 1)] = val;
 
  191void FC_FUNC(zoct_get_f, ZOCT_GET_F)(nfft_plan *plan, 
int *M, 
int *DIM,
 
  192                                     double complex *val, 
int *IX, 
int *IY,
 
  203    *val = plan->f[ix - 1];
 
  206    *val = plan->f[(ix - 1) * M[1] + (iy - 1)];
 
  209    *val = plan->f[(ix - 1) * M[1] * M[2] + (iy - 1) * M[2] + (iz - 1)];
 
  215void FC_FUNC(zoct_set_f_hat, ZOCT_SET_F_HAT)(nfft_plan *plan, 
int *DIM,
 
  216                                             double complex *VAL, 
int *IX,
 
  224  double complex val = *VAL;
 
  228    plan->f_hat[ix - 1] = val;
 
  231    plan->f_hat[(ix - 1) * plan->N[1] + (iy - 1)] = val;
 
  234    plan->f_hat[(ix - 1) * plan->N[1] * plan->N[2] + (iy - 1) * plan->N[2] +
 
  241void FC_FUNC(zoct_get_f_hat, ZOCT_GET_F_HAT)(nfft_plan *plan, 
int *DIM,
 
  242                                             double complex *val, 
int *IX,
 
  253    *val = plan->f_hat[ix - 1];
 
  256    *val = plan->f_hat[(ix - 1) * plan->N[1] + (iy - 1)];
 
  259    *val = plan->f_hat[(ix - 1) * plan->N[1] * plan->N[2] +
 
  260                       (iy - 1) * plan->N[2] + (iz - 1)];
 
  267void FC_FUNC(doct_set_f, DOCT_SET_F)(nfft_plan *plan, 
int *M, 
int *DIM,
 
  268                                     double *VAL, 
int *IX, 
int *IY, 
int *IZ) {
 
  279    plan->f[ix - 1] = val;
 
  282    plan->f[(ix - 1) * M[1] + (iy - 1)] = val;
 
  285    plan->f[(ix - 1) * M[1] * M[2] + (iy - 1) * M[2] + (iz - 1)] = val;
 
  291void FC_FUNC(doct_get_f, DOCT_GET_F)(nfft_plan *plan, 
int *M, 
int *DIM,
 
  292                                     double *val, 
int *IX, 
int *IY, 
int *IZ) {
 
  302    *val = plan->f[ix - 1];
 
  305    *val = plan->f[(ix - 1) * M[1] + (iy - 1)];
 
  308    *val = plan->f[(ix - 1) * M[1] * M[2] + (iy - 1) * M[2] + (iz - 1)];
 
  314void FC_FUNC(doct_set_f_hat, DOCT_SET_F_HAT)(nfft_plan *plan, 
int *DIM,
 
  315                                             double *VAL, 
int *IX, 
int *IY,
 
  327    plan->f_hat[ix - 1] = val;
 
  330    plan->f_hat[(ix - 1) * plan->N[1] + (iy - 1)] = val;
 
  333    plan->f_hat[(ix - 1) * plan->N[1] * plan->N[2] + (iy - 1) * plan->N[2] +
 
  340void FC_FUNC(doct_get_f_hat, DOCT_GET_F_HAT)(nfft_plan *plan, 
int *DIM,
 
  341                                             double *val, 
int *IX, 
int *IY,
 
  352    *val = plan->f_hat[ix - 1];
 
  355    *val = plan->f_hat[(ix - 1) * plan->N[1] + (iy - 1)];
 
  358    *val = plan->f_hat[(ix - 1) * plan->N[1] * plan->N[2] +
 
  359                       (iy - 1) * plan->N[2] + (iz - 1)];