code: public static int cufftPlanMany(cufftHandle plan, int rank, int n[],
          int inembed[], int istride, int idist,
          int onembed[], int ostride, int odist,
          int type, int batch)
      {
          return checkResult(cufftPlanManyNative(plan, rank, n, inembed, istride, idist, onembed, ostride, odist, type, batch));
      }
docs: <pre>
  Creates a FFT plan configuration of dimension rank, with sizes
  specified in the array n.
  
  cufftResult cufftPlanMany(cufftHandle *plan, int rank, int *n,
  int *inembed, int istride, int idist,
  int *onembed, int ostride, int odist,
  cufftType type, int batch );
  
  The batch input parameter tells CUFFT how many transforms to
  configure in parallel. With this function, batched plans of
  any dimension may be created. Input parameters inembed, istride,
  and idist and output parameters onembed, ostride, and odist
  will allow setup of noncontiguous input data in a future version.
  Note that for CUFFT 3.0, these parameters are ignored and the
  layout of batched data must be side-by-side and not interleaved.
  
  Input
  ----
  plan Pointer to a cufftHandle object
  rank Dimensionality of the transform (1, 2, or 3)
  n An array of size rank, describing the size of each dimension
  inembed Unused: pass NULL
  istride Unused: pass 1
  idist Unused: pass 0
  onembed Unused: pass NULL
  ostride Unused: pass 1
  odist Unused: pass 0
  type Transform data type (e.g., CUFFT_C2C, as per other CUFFT calls)
  batch Batch size for this transform
  
  Output
  ----
  plan Contains a CUFFT plan handle
  
  Return Values
  ----
  CUFFT_SETUP_FAILED CUFFT library failed to initialize.
  CUFFT_INVALID_SIZE Parameter is not a supported size.
  CUFFT_INVALID_TYPE The type parameter is not supported
  </pre>