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)];