code: def init_fftw_plan(self, planning_effort='measure', **kwargs):
          
          if self.impl != 'pyfftw':
              raise ValueError('cannot create fftw plan without fftw backend')
  
          x = self.domain.element()
          y = self.range.element()
          kwargs.pop('planning_timelimit', None)
  
          direction = 'forward' if self.sign == '-' else 'backward'
          self._fftw_plan = pyfftw_call(
              x.asarray(), y.asarray(), direction=direction,
              halfcomplex=self.halfcomplex, axes=self.axes,
              planning_effort=planning_effort, **kwargs)
docs: Initialize the FFTW plan for this transform for later use.
  
          If the implementation of this operator is not ``'pyfftw'``, this
          method should not be called.
  
          Parameters
          ----------
          planning_effort : str, optional
              Flag for the amount of effort put into finding an optimal
              FFTW plan. See the `FFTW doc on planner flags
              <http://www.fftw.org/fftw3_doc/Planner-Flags.html>`_.
              Options: {'estimate', 'measure', 'patient', 'exhaustive'}
          planning_timelimit : float, optional
              Limit planning time to roughly this amount of seconds.
              Default: None (no limit)
          threads : int, optional
              Number of threads to use. Default: 1
  
          Raises
          ------
          ValueError
              If `impl` is not ``'pyfftw'``
  
          Notes
          -----
          To save memory, clear the plan when the transform is no longer
          used (the plan stores 2 arrays).
  
          See Also
          --------
          clear_fftw_plan