def _setup_input_slicers(a_shape, input_shape):
    """ This function returns two slicers that are to be used to
    copy the data from the input array to the FFTW object internal
    array, which can then be passed to _FFTWWrapper:

    ``(update_input_array_slicer, FFTW_array_slicer)``

    On calls to :class:`~pyfftw.builders._utils._FFTWWrapper` objects,
    the input array is copied in as:

    ``FFTW_array[FFTW_array_slicer] = input_array[update_input_array_slicer]``
    """
    update_input_array_slicer = [slice(None)] * len(a_shape)
    FFTW_array_slicer = [slice(None)] * len(a_shape)
    for axis in range(len(a_shape)):
        if a_shape[axis] > input_shape[axis]:
            update_input_array_slicer[axis] = slice(0, input_shape[axis])
        elif a_shape[axis] < input_shape[axis]:
            FFTW_array_slicer[axis] = slice(0, a_shape[axis])
            update_input_array_slicer[axis] = slice(0, a_shape[axis])
        else:
            update_input_array_slicer[axis] = slice(0, a_shape[axis])
    return tuple(update_input_array_slicer), tuple(FFTW_array_slicer)
