Skip to content

RFC: Explicit forbid any axes being repeated in the axes of the multi-dimensional FFT APIs? #747

Closed
@leofang

Description

@leofang

When working on #746 I came to realize one NumPy behavior we've overlooked so far. In a few NumPy APIs, there's an explicit mention about (exact text varies)

Repeated indices in axes means that the inverse transform over that
axis is performed multiple times.

including fft2, ifft2, fftn, ifftn, and irfftn. I would propose to add a clause to explicitly forbid axes containing repeating entries, for two reasons

  1. Semantics: It is unclear to me what would the semantics be, say with fftn(..., axes=(2,1,0,1,2)). Is it a 3D FFT (2,1,0) followed by 2D FFT (1,2), or a 2D FFT (2,1) followed by 3D FFT (0,1,2), or something else? From the perspective of a low-level numerical library, it also makes little sense that we offer accelerated routines for this awkward case.
  2. Consistency: AFAIK we've never talked about what happens in such cases, whenever an array API accepts an axes argument. I've been having a mental model that a valid axes must contain non-repeating entries. If this anticipation is correct, I would like to call it out, in particular for FFT where there exists a different precedence.

If people dislike an explicit clause, we should at least add a note to state this is implementation defined.

Metadata

Metadata

Assignees

No one assigned

    Labels

    topic: FFTFast Fourier transforms.

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions