+
    LV-j,  ã                   ón   € ^ RI t^ RIHt ^RIHt ^RIHt . ROtR tR t	RR lt
RR ltRR	 ltRR
 ltR# )é    N)Únormalize_axis_index)Ú_ni_support)Ú	_nd_imagec                 ó¶  € V fª   VP                   P                  \        P                  \        P                  \        P
                  39   d/   \        P                  ! VP                  VP                   R7      p V # \        P                  ! VP                  \        P                  R7      p  V # \        V 4      \        J ds   V \        P                  \        P                  \        P
                  \        P                  39  d   \        R4      h\        P                  ! VP                  V R7      p V # V P                  VP                  8w  d   \        R4      hV # ©N©Údtypezoutput type not supportedzoutput shape not correct)
r	   ÚtypeÚnpÚ	complex64Ú
complex128Úfloat32ÚzerosÚshapeÚfloat64ÚRuntimeError©ÚoutputÚinputs   &&Úg/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/scipy/ndimage/_fourier.pyÚ_get_output_fourierr   (   sê   € Ø‚~Ø�;‰;×Ñ¤§¡¬b¯m©m¼R¿Z¹ZÐHÔHÜ—X’X˜eŸk™k°·±Ô=ˆFð €Mô —X’X˜eŸk™k´·±Ô<‰Fð €Mô 
ˆf‹œÓ	Øœ"Ÿ,™,¬¯©ÜŸ*™*¤b§j¡jð2ô 2äÐ:Ó;Ð;Ü—’˜%Ÿ+™+¨VÔ4ˆð €Mð 
�‰˜Ÿ™Ô	$ÜÐ5Ó6Ð6Ø€Mó    c                 ó\  € V f›   VP                   P                  \        P                  \        P                  39   d/   \        P
                  ! VP                  VP                   R7      p V # \        P
                  ! VP                  \        P                  R7      p  V # \        V 4      \        J dU   V \        P                  \        P                  39  d   \        R4      h\        P
                  ! VP                  V R7      p V # V P                  VP                  8w  d   \        R4      hV # r   )r	   r
   r   r   r   r   r   r   r   s   &&r   Ú_get_output_fourier_complexr   8   sÓ   € Ø‚~Ø�;‰;×Ñ¤§¡¬b¯m©mÐ<Ô<Ü—X’X˜eŸk™k°·±Ô=ˆFð €Mô —X’X˜eŸk™k´·±Ô?‰Fð €Mô 
ˆf‹œÓ	Øœ"Ÿ,™,¬¯©Ð6Ô6ÜÐ:Ó;Ð;Ü—’˜%Ÿ+™+¨VÔ4ˆð €Mð 
�‰˜Ÿ™Ô	$ÜÐ5Ó6Ð6Ø€Mr   c                óˆ  € \         P                  ! V 4      p \        W@4      p\        W0P                  4      p\
        P                  ! WP                  4      p\         P                  ! V\         P                  R7      pVP                  P                  '       g   VP                  4       p\        P                  ! WW#V^ 4       V# )ac  
Multidimensional Gaussian fourier filter.

The array is multiplied with the fourier transform of a Gaussian
kernel.

Parameters
----------
input : array_like
    The input array.
sigma : float or sequence
    The sigma of the Gaussian kernel. If a float, `sigma` is the same for
    all axes. If a sequence, `sigma` has to contain one value for each
    axis.
n : int, optional
    If `n` is negative (default), then the input is assumed to be the
    result of a complex fft.
    If `n` is larger than or equal to zero, the input is assumed to be the
    result of a real fft, and `n` gives the length of the array before
    transformation along the real transform direction.
axis : int, optional
    The axis of the real transform.
output : ndarray, optional
    If given, the result of filtering the input is placed in this array.

Returns
-------
fourier_gaussian : ndarray
    The filtered input.

Examples
--------
>>> from scipy import ndimage, datasets
>>> import numpy.fft
>>> import matplotlib.pyplot as plt
>>> fig, (ax1, ax2) = plt.subplots(1, 2)
>>> plt.gray()  # show the filtered result in grayscale
>>> ascent = datasets.ascent()
>>> input_ = numpy.fft.fft2(ascent)
>>> result = ndimage.fourier_gaussian(input_, sigma=4)
>>> result = numpy.fft.ifft2(result)
>>> ax1.imshow(ascent)
>>> ax2.imshow(result.real)  # the imaginary part is an artifact
>>> plt.show()
r   ©r   Úasarrayr   r   Úndimr   Ú_normalize_sequencer   ÚflagsÚ
contiguousÚcopyr   Úfourier_filter)r   ÚsigmaÚnÚaxisr   Úsigmass   &&&&& r   Úfourier_gaussianr(   G   s‡   € ô\ �JŠJ�uÓ€EÜ  Ó/€FÜ §j¡jÓ1€DÜ×,Ò,¨U·J±JÓ?€FÜ�ZŠZ˜¤b§j¡jÔ1€FØ�<‰<×"×"Ð"Ø—‘“ˆä×Ò˜U¨A°V¸QÔ?Ø€Mr   c                óˆ  € \         P                  ! V 4      p \        W@4      p\        W0P                  4      p\
        P                  ! WP                  4      p\         P                  ! V\         P                  R7      pVP                  P                  '       g   VP                  4       p\        P                  ! WW#V^4       V# )ae  
Multidimensional uniform fourier filter.

The array is multiplied with the Fourier transform of a box of given
size.

Parameters
----------
input : array_like
    The input array.
size : float or sequence
    The size of the box used for filtering.
    If a float, `size` is the same for all axes. If a sequence, `size` has
    to contain one value for each axis.
n : int, optional
    If `n` is negative (default), then the input is assumed to be the
    result of a complex fft.
    If `n` is larger than or equal to zero, the input is assumed to be the
    result of a real fft, and `n` gives the length of the array before
    transformation along the real transform direction.
axis : int, optional
    The axis of the real transform.
output : ndarray, optional
    If given, the result of filtering the input is placed in this array.

Returns
-------
fourier_uniform : ndarray
    The filtered input.

Examples
--------
>>> from scipy import ndimage, datasets
>>> import numpy.fft
>>> import matplotlib.pyplot as plt
>>> fig, (ax1, ax2) = plt.subplots(1, 2)
>>> plt.gray()  # show the filtered result in grayscale
>>> ascent = datasets.ascent()
>>> input_ = numpy.fft.fft2(ascent)
>>> result = ndimage.fourier_uniform(input_, size=20)
>>> result = numpy.fft.ifft2(result)
>>> ax1.imshow(ascent)
>>> ax2.imshow(result.real)  # the imaginary part is an artifact
>>> plt.show()
r   r   ©r   Úsizer%   r&   r   Úsizess   &&&&& r   Úfourier_uniformr-   �   s‡   € ô\ �JŠJ�uÓ€EÜ  Ó/€FÜ §j¡jÓ1€DÜ×+Ò+¨D·*±*Ó=€EÜ�JŠJ�u¤B§J¡JÔ/€EØ�;‰;×!×!Ð!Ø—
‘
“ˆÜ×Ò˜U¨1°F¸AÔ>Ø€Mr   c                óæ  € \         P                  ! V 4      p V P                  ^8”  d   \        R4      h\	        W@4      pVP
                  ^ 8X  d   V# \        W0P                  4      p\        P                  ! WP                  4      p\         P                  ! V\         P                  R7      pVP                  P                  '       g   VP                  4       p\        P                  ! WW#V^4       V# )a¼  
Multidimensional ellipsoid Fourier filter.

The array is multiplied with the fourier transform of an ellipsoid of
given sizes.

Parameters
----------
input : array_like
    The input array.
size : float or sequence
    The size of the box used for filtering.
    If a float, `size` is the same for all axes. If a sequence, `size` has
    to contain one value for each axis.
n : int, optional
    If `n` is negative (default), then the input is assumed to be the
    result of a complex fft.
    If `n` is larger than or equal to zero, the input is assumed to be the
    result of a real fft, and `n` gives the length of the array before
    transformation along the real transform direction.
axis : int, optional
    The axis of the real transform.
output : ndarray, optional
    If given, the result of filtering the input is placed in this array.

Returns
-------
fourier_ellipsoid : ndarray
    The filtered input.

Notes
-----
This function is implemented for arrays of rank 1, 2, or 3.

Examples
--------
>>> from scipy import ndimage, datasets
>>> import numpy.fft
>>> import matplotlib.pyplot as plt
>>> fig, (ax1, ax2) = plt.subplots(1, 2)
>>> plt.gray()  # show the filtered result in grayscale
>>> ascent = datasets.ascent()
>>> input_ = numpy.fft.fft2(ascent)
>>> result = ndimage.fourier_ellipsoid(input_, size=20)
>>> result = numpy.fft.ifft2(result)
>>> ax1.imshow(ascent)
>>> ax2.imshow(result.real)  # the imaginary part is an artifact
>>> plt.show()
z'Only 1d, 2d and 3d inputs are supportedr   )r   r   r   ÚNotImplementedErrorr   r+   r   r   r   r   r    r!   r"   r   r#   r*   s   &&&&& r   Úfourier_ellipsoidr0   º   s±   € ôd �JŠJ�uÓ€EØ‡z�z�A„~Ü!Ð"KÓLÐLÜ  Ó/€FØ‡{�{�aÔð ˆÜ §j¡jÓ1€DÜ×+Ò+¨D·*±*Ó=€EÜ�JŠJ�u¤B§J¡JÔ/€EØ�;‰;×!×!Ð!Ø—
‘
“ˆÜ×Ò˜U¨1°F¸AÔ>Ø€Mr   c                ó†  € \         P                  ! V 4      p \        W@4      p\        W0P                  4      p\
        P                  ! WP                  4      p\         P                  ! V\         P                  R7      pVP                  P                  '       g   VP                  4       p\        P                  ! WW#V4       V# )a`  
Multidimensional Fourier shift filter.

The array is multiplied with the Fourier transform of a shift operation.

Parameters
----------
input : array_like
    The input array.
shift : float or sequence
    The size of the box used for filtering.
    If a float, `shift` is the same for all axes. If a sequence, `shift`
    has to contain one value for each axis.
n : int, optional
    If `n` is negative (default), then the input is assumed to be the
    result of a complex fft.
    If `n` is larger than or equal to zero, the input is assumed to be the
    result of a real fft, and `n` gives the length of the array before
    transformation along the real transform direction.
axis : int, optional
    The axis of the real transform.
output : ndarray, optional
    If given, the result of shifting the input is placed in this array.

Returns
-------
fourier_shift : ndarray
    The shifted input.

Examples
--------
>>> from scipy import ndimage, datasets
>>> import matplotlib.pyplot as plt
>>> import numpy.fft
>>> fig, (ax1, ax2) = plt.subplots(1, 2)
>>> plt.gray()  # show the filtered result in grayscale
>>> ascent = datasets.ascent()
>>> input_ = numpy.fft.fft2(ascent)
>>> result = ndimage.fourier_shift(input_, shift=200)
>>> result = numpy.fft.ifft2(result)
>>> ax1.imshow(ascent)
>>> ax2.imshow(result.real)  # the imaginary part is an artifact
>>> plt.show()
r   )r   r   r   r   r   r   r   r   r    r!   r"   r   Úfourier_shift)r   Úshiftr%   r&   r   Úshiftss   &&&&& r   r2   r2   ý   s…   € ôZ �JŠJ�uÓ€EÜ(¨Ó7€FÜ §j¡jÓ1€DÜ×,Ò,¨U·J±JÓ?€FÜ�ZŠZ˜¤b§j¡jÔ1€FØ�<‰<×"×"Ð"Ø—‘“ˆÜ×Ò˜E¨1°FÔ;Ø€Mr   )r(   r-   r0   r2   )éÿÿÿÿr5   N)Únumpyr   Úscipy._lib._utilr   Ú r   r   Ú__all__r   r   r(   r-   r0   r2   © r   r   Ú<module>r;      s<   ðó> Ý 1Ý Ý ò€òò ô7ôt6ôr@öF5r   