138 lines
3.1 KiB
Python
138 lines
3.1 KiB
Python
from collections.abc import Sequence
|
|
from typing import Literal as L
|
|
from typing import TypeAlias
|
|
|
|
from numpy import complex128, float64
|
|
from numpy._typing import ArrayLike, NDArray, _ArrayLikeNumber_co
|
|
|
|
__all__ = [
|
|
"fft",
|
|
"ifft",
|
|
"rfft",
|
|
"irfft",
|
|
"hfft",
|
|
"ihfft",
|
|
"rfftn",
|
|
"irfftn",
|
|
"rfft2",
|
|
"irfft2",
|
|
"fft2",
|
|
"ifft2",
|
|
"fftn",
|
|
"ifftn",
|
|
]
|
|
|
|
_NormKind: TypeAlias = L["backward", "ortho", "forward"] | None
|
|
|
|
def fft(
|
|
a: ArrayLike,
|
|
n: int | None = ...,
|
|
axis: int = ...,
|
|
norm: _NormKind = ...,
|
|
out: NDArray[complex128] | None = ...,
|
|
) -> NDArray[complex128]: ...
|
|
|
|
def ifft(
|
|
a: ArrayLike,
|
|
n: int | None = ...,
|
|
axis: int = ...,
|
|
norm: _NormKind = ...,
|
|
out: NDArray[complex128] | None = ...,
|
|
) -> NDArray[complex128]: ...
|
|
|
|
def rfft(
|
|
a: ArrayLike,
|
|
n: int | None = ...,
|
|
axis: int = ...,
|
|
norm: _NormKind = ...,
|
|
out: NDArray[complex128] | None = ...,
|
|
) -> NDArray[complex128]: ...
|
|
|
|
def irfft(
|
|
a: ArrayLike,
|
|
n: int | None = ...,
|
|
axis: int = ...,
|
|
norm: _NormKind = ...,
|
|
out: NDArray[float64] | None = ...,
|
|
) -> NDArray[float64]: ...
|
|
|
|
# Input array must be compatible with `np.conjugate`
|
|
def hfft(
|
|
a: _ArrayLikeNumber_co,
|
|
n: int | None = ...,
|
|
axis: int = ...,
|
|
norm: _NormKind = ...,
|
|
out: NDArray[float64] | None = ...,
|
|
) -> NDArray[float64]: ...
|
|
|
|
def ihfft(
|
|
a: ArrayLike,
|
|
n: int | None = ...,
|
|
axis: int = ...,
|
|
norm: _NormKind = ...,
|
|
out: NDArray[complex128] | None = ...,
|
|
) -> NDArray[complex128]: ...
|
|
|
|
def fftn(
|
|
a: ArrayLike,
|
|
s: Sequence[int] | None = ...,
|
|
axes: Sequence[int] | None = ...,
|
|
norm: _NormKind = ...,
|
|
out: NDArray[complex128] | None = ...,
|
|
) -> NDArray[complex128]: ...
|
|
|
|
def ifftn(
|
|
a: ArrayLike,
|
|
s: Sequence[int] | None = ...,
|
|
axes: Sequence[int] | None = ...,
|
|
norm: _NormKind = ...,
|
|
out: NDArray[complex128] | None = ...,
|
|
) -> NDArray[complex128]: ...
|
|
|
|
def rfftn(
|
|
a: ArrayLike,
|
|
s: Sequence[int] | None = ...,
|
|
axes: Sequence[int] | None = ...,
|
|
norm: _NormKind = ...,
|
|
out: NDArray[complex128] | None = ...,
|
|
) -> NDArray[complex128]: ...
|
|
|
|
def irfftn(
|
|
a: ArrayLike,
|
|
s: Sequence[int] | None = ...,
|
|
axes: Sequence[int] | None = ...,
|
|
norm: _NormKind = ...,
|
|
out: NDArray[float64] | None = ...,
|
|
) -> NDArray[float64]: ...
|
|
|
|
def fft2(
|
|
a: ArrayLike,
|
|
s: Sequence[int] | None = ...,
|
|
axes: Sequence[int] | None = ...,
|
|
norm: _NormKind = ...,
|
|
out: NDArray[complex128] | None = ...,
|
|
) -> NDArray[complex128]: ...
|
|
|
|
def ifft2(
|
|
a: ArrayLike,
|
|
s: Sequence[int] | None = ...,
|
|
axes: Sequence[int] | None = ...,
|
|
norm: _NormKind = ...,
|
|
out: NDArray[complex128] | None = ...,
|
|
) -> NDArray[complex128]: ...
|
|
|
|
def rfft2(
|
|
a: ArrayLike,
|
|
s: Sequence[int] | None = ...,
|
|
axes: Sequence[int] | None = ...,
|
|
norm: _NormKind = ...,
|
|
out: NDArray[complex128] | None = ...,
|
|
) -> NDArray[complex128]: ...
|
|
|
|
def irfft2(
|
|
a: ArrayLike,
|
|
s: Sequence[int] | None = ...,
|
|
axes: Sequence[int] | None = ...,
|
|
norm: _NormKind = ...,
|
|
out: NDArray[float64] | None = ...,
|
|
) -> NDArray[float64]: ...
|