rfft#

ivy.rfft(x, /, *, n=None, axis=-1, norm='backward', out=None)[source]#

Compute the one-dimensional discrete Fourier transform for real-valued input.

Note

Applying the one-dimensional inverse discrete Fourier transform for real-valued input to the output of this function must return the original (i.e., non-transformed) input array within numerical accuracy (i.e., irfft(rfft(x)) == x), provided that the transform and inverse transform are performed with the same arguments (axis and normalization mode) and consistent length.

Note

If the input a contains an imaginary part, it is silently discarded.

Parameters:
  • x (Union[Array, NativeArray]) – input array. Must have a real-valued floating-point data type.

  • n (Optional[int], default: None) – length of the transformed axis of the input. If - n is greater than the length of the input array, the input array is zero-padded to length n. - n is less than the length of the input array, the input array is trimmed to length n. - n is not provided, the length of the transformed axis of the output must equal the length of the input along the axis specified by axis. Default is None.

  • axis (int, default: -1) – axis (dimension) over which to compute the Fourier transform. If not set, the last axis (dimension) is used. Default is -1.

  • norm (Literal['backward', 'ortho', 'forward'], default: 'backward') – normalization mode. Should be one of the following modes: - ‘backward’: no normalization. - ‘ortho’: normalize by 1/sqrt(n) (i.e., make the FFT orthonormal). - ‘forward’: normalize by 1/n. Default is backward.

  • out (Optional[Array], default: None) – Optional output array, for writing the result to. It must have a shape that the inputs broadcast to.

Return type:

Array

Returns:

  • ret – an array transformed along the axis (dimension) indicated by axis. The returned array must have a complex-valued floating-point data type determined by Type Promotion Rules.

  • This function conforms to the `Array API Standard

  • <https (//data-apis.org/array-api/latest/>`_. This docstring is an extension of the)

  • `docstring <https (//data-apis.org/array-api/latest/)

  • API_specification/generated/array_api.max.html>`_

  • in the standard.

  • Both the description and the type hints above assumes an array input for simplicity,

  • but this function is nestable, and therefore also accepts ivy.Container

  • instances in place of any of the arguments.

Examples

With ivy.Array input:

>>> x = ivy.array([0,1,2])
>>> y = ivy.rfft(x)
>>> print(y)
ivy.array([ 3. +0.j       , -1.5+0.8660254j])
>>> x = ivy.array([2.3,3.14,7.2])
>>> y = ivy.zeros(2)
>>> ivy.rfft(x, out=y)
>>> print(x)
ivy.array([2.29999995, 3.1400001 , 7.19999981])
>>> x = ivy.array([-1.2, 3.4, -5.6])
>>> ivy.rfft(x, n=4, out=x)
>>> print(x)
ivy.array([ -3.3999999+0.j ,   4.3999996-3.4j, -10.2      +0.j ],
      dtype=complex64)

With ivy.Container input:

>>> x = ivy.Container(a=ivy.array([0.,1.,2.]),
...                   b=ivy.array([3.,4.,5.]))
>>> y = ivy.rfft(x)
>>> print(y)
{
    a: ivy.array([3.+0.j, -1.5+0.8660254j]),
    b: ivy.array([12.+0.j, -1.5+0.8660254j])
}
Array.rfft(self, /, *, n=None, axis=-1, norm='backward', out=None)[source]#

ivy.Array instance method variant of ivy.rfft. This method simply wraps the function, and so the docstring for ivy.rfft also applies to this method with minimal changes.

Parameters:
  • self (Array) – input array. Must have a real-valued floating-point data type.

  • n (Optional[int], default: None) – length of the transformed axis of the input. If - n is greater than the length of the input array, the input array is zero-padded to length n. - n is less than the length of the input array, the input array is trimmed to length n. - n is not provided, the length of the transformed axis of the output must equal the length of the input along the axis specified by axis. Default is None.

  • axis (int, default: -1) – axis (dimension) over which to compute the Fourier transform. If not set, the last axis (dimension) is used. Default is -1.

  • norm (Literal['backward', 'ortho', 'forward'], default: 'backward') – normalization mode. Should be one of the following modes: - ‘backward’: no normalization. - ‘ortho’: normalize by 1/sqrt(n) (i.e., make the FFT orthonormal). - ‘forward’: normalize by 1/n. Default is backward.

  • out (Optional[Array], default: None) – Optional output array, for writing the result to. It must have a shape that the inputs broadcast to.

Return type:

Array

Returns:

ret – an array transformed along the axis (dimension) indicated by axis. The returned array must have a complex-valued floating-point data type determined by Type Promotion Rules.

Examples

>>> x = ivy.array([0,1,2])
>>> y = x.rfft()
>>> print(y)
ivy.array([ 3. +0.j       , -1.5+0.8660254j])
Container.rfft(self, /, *, n=None, axis=-1, norm='backward', out=None, key_chains=None, to_apply=True, prune_unapplied=False, map_sequences=False)[source]#

ivy.Container instance method variant of ivy.rfft. This method simply wraps the function, and so the docstring for ivy.rfft also applies to this method with minimal changes.

Parameters:
  • self (Container) – input array. Must have a real-valued floating-point data type.

  • n (Optional[Union[int, Container]], default: None) – length of the transformed axis of the input. If - n is greater than the length of the input array, the input array is zero-padded to length n. - n is less than the length of the input array, the input array is trimmed to length n. - n is not provided, the length of the transformed axis of the output must equal the length of the input along the axis specified by axis. Default is None.

  • axis (Union[int, Container], default: -1) – axis (dimension) over which to compute the Fourier transform. If not set, the last axis (dimension) is used. Default is -1.

  • norm (Union[Literal['backward', 'ortho', 'forward'], Container], default: 'backward') – normalization mode. Should be one of the following modes: - ‘backward’: no normalization. - ‘ortho’: normalize by 1/sqrt(n) (i.e., make the FFT orthonormal). - ‘forward’: normalize by 1/n. Default is backward.

  • out (Optional[Union[Array, Container]], default: None) – Optional output array, for writing the result to. It must have a shape that the inputs broadcast to.

  • key_chains (Optional[Union[List[str], Dict[str, str], Container]], default: None) – The key-chains to apply or not apply the method to. Default is None.

  • to_apply (Union[bool, Container], default: True) – If True, the method will be applied to key_chains, otherwise key_chains will be skipped. Default is True.

  • prune_unapplied (Union[bool, Container], default: False) – Whether to prune key_chains for which the function was not applied. Default is False.

  • map_sequences (Union[bool, Container], default: False) – Whether to also map method to sequences (lists, tuples). Default is False.

Returns:

ret – an array transformed along the axis (dimension) indicated by axis. The returned array must have a complex-valued floating-point data type determined by Type Promotion Rules.

Examples

>>> x = ivy.Container(a=ivy.array([0.,1.,2.]),
...                   b=ivy.array([3.,4.,5.]))
>>> y = x.rfft()
>>> print(y)
{
    a: ivy.array([3.+0.j, -1.5+0.8660254j]),
    b: ivy.array([12.+0.j, -1.5+0.8660254j])
}