-type array() :: reference().
-type dtype() :: atom().
-type shape() :: [integer()].
-spec bartlett(integer()) -> {ok, array()} | {error, term()}.
-spec blackman(integer()) -> {ok, array()} | {error, term()}.
-spec convolve(array(), array()) -> {ok, array()} | {error, term()}.
-spec convolve(array(), array(), atom()) -> {ok, array()} | {error, term()}.
-spec correlate(array(), array()) -> {ok, array()} | {error, term()}.
-spec correlate(array(), array(), atom()) -> {ok, array()} | {error, term()}.
-spec fft2(array()) -> {ok, array()} | {error, term()}.
-spec fft2(array(), shape() | undefined) -> {ok, array()} | {error, term()}.
-spec fft(array()) -> {ok, array()} | {error, term()}.
-spec fft(array(), integer() | undefined) -> {ok, array()} | {error, term()}.
-spec fftfreq(integer(), number()) -> {ok, array()} | {error, term()}.
-spec fftfreq(integer(), number(), dtype()) -> {ok, array()} | {error, term()}.
-spec fftn(array()) -> {ok, array()} | {error, term()}.
-spec fftn(array(), shape() | undefined) -> {ok, array()} | {error, term()}.
-spec fftn(array(), shape() | undefined, [integer()] | undefined) -> {ok, array()} | {error, term()}.
-spec fftshift(array()) -> {ok, array()} | {error, term()}.
-spec fftshift(array(), [integer()] | undefined) -> {ok, array()} | {error, term()}.
-spec hamming(integer()) -> {ok, array()} | {error, term()}.
-spec hann(integer()) -> {ok, array()} | {error, term()}.
-spec ifft2(array()) -> {ok, array()} | {error, term()}.
-spec ifft2(array(), shape() | undefined) -> {ok, array()} | {error, term()}.
-spec ifft(array()) -> {ok, array()} | {error, term()}.
-spec ifft(array(), integer() | undefined) -> {ok, array()} | {error, term()}.
-spec ifftn(array()) -> {ok, array()} | {error, term()}.
-spec ifftn(array(), shape() | undefined) -> {ok, array()} | {error, term()}.
-spec ifftn(array(), shape() | undefined, [integer()] | undefined) -> {ok, array()} | {error, term()}.
-spec ifftshift(array()) -> {ok, array()} | {error, term()}.
-spec ifftshift(array(), [integer()] | undefined) -> {ok, array()} | {error, term()}.
-spec irfft2(array()) -> {ok, array()} | {error, term()}.
-spec irfft2(array(), shape() | undefined) -> {ok, array()} | {error, term()}.
-spec irfft(array()) -> {ok, array()} | {error, term()}.
-spec irfft(array(), integer() | undefined) -> {ok, array()} | {error, term()}.
-spec irfftn(array()) -> {ok, array()} | {error, term()}.
-spec irfftn(array(), shape() | undefined) -> {ok, array()} | {error, term()}.
-spec irfftn(array(), shape() | undefined, [integer()] | undefined) -> {ok, array()} | {error, term()}.
-spec istft(array(), array()) -> {ok, array()} | {error, term()}.
-spec istft(array(), array(), integer()) -> {ok, array()} | {error, term()}.
-spec rfft2(array()) -> {ok, array()} | {error, term()}.
-spec rfft2(array(), shape() | undefined) -> {ok, array()} | {error, term()}.
-spec rfft(array()) -> {ok, array()} | {error, term()}.
-spec rfft(array(), integer() | undefined) -> {ok, array()} | {error, term()}.
-spec rfftfreq(integer(), number()) -> {ok, array()} | {error, term()}.
-spec rfftfreq(integer(), number(), dtype()) -> {ok, array()} | {error, term()}.
-spec rfftn(array()) -> {ok, array()} | {error, term()}.
-spec rfftn(array(), shape() | undefined) -> {ok, array()} | {error, term()}.
-spec rfftn(array(), shape() | undefined, [integer()] | undefined) -> {ok, array()} | {error, term()}.
-spec stft(array(), array()) -> {ok, array()} | {error, term()}.
-spec stft(array(), array(), integer()) -> {ok, array()} | {error, term()}.
-spec stft(array(), array(), integer(), integer()) -> {ok, array()} | {error, term()}.