Ë
    çÿæií  ã                   óº   — d dl Zd dlmZ ddlmZmZ ddlmZm	Z	 d dl
mZmZ g d¢Z ej                  d«      Zdd	„Zdd
„Zdd„Z ed¬«      dd„«       Zdddœd„Zy)é    N)Úwarné   )ÚrfftÚirffté   )ÚloggammaÚpoch)Úarray_namespaceÚxp_capabilities)ÚfhtÚifhtÚ	fhtoffsetc           	      ó’  — t        | «      }|j                  | «      } | j                  d   }|dk7  rC|dz
  dz  }|j                  ||j                  ¬«      }| |j                  | ||z
  z  |z  «      z  } |j                  t        |||||¬«      «      }	t        | |	|¬«      }
|dk7  r!|
|j                  | z
  |z  |z   z  «      z  }
|
S )Néÿÿÿÿr   r   r   ©Údtype)ÚoffsetÚbias©Úxp©r
   ÚasarrayÚshapeÚarangeÚfloat64ÚexpÚfhtcoeffÚ_fhtq)ÚaÚdlnÚmur   r   r   ÚnÚj_cÚjÚuÚAs              ún/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/scipy/fft/_fftlog_backend.pyr   r      sØ   € Ü	˜Ó	€BØ
�
‰
�1‹€Að 	
�‰�‰€Að ˆq‚yà�‰s�A‰gˆØ�I‰I�a˜rŸz™zˆIÓ*ˆØ�—‘˜�u˜a #™g‘ sÑ*Ó+Ñ+ˆð 	�
‰
”8˜A˜s B¨v¸DÔAÓB€Aô 	ˆa��rÔ€Að ˆq‚yà	ˆR�V‰V�T�E˜A ™G S™=¨6Ñ1Ñ2Ó3Ñ3ˆà€Hó    c           
      ó”  — t        | «      }|j                  | «      } | j                  d   }|dk7  rE|dz
  dz  }|j                  ||j                  ¬«      }| |j                  |||z
  |z  |z   z  «      z  } |j                  t        |||||d¬«      «      }	t        | |	d|¬«      }
|dk7  r|
|j                  | z
  z  |z  «      z  }
|
S )	Nr   r   r   r   r   T)r   r   Úinverse)r*   r   r   )r&   r    r!   r   r   r   r"   r#   r$   r%   r   s              r'   r   r   *   sÚ   € Ü	˜Ó	€BØ
�
‰
�1‹€Að 	
�‰�‰€Að ˆq‚yà�‰s�A‰gˆØ�I‰I�a˜rŸz™zˆIÓ*ˆØ�—‘�t˜a #™g s™]¨VÑ3Ñ4Ó5Ñ5ˆð 	�
‰
”8˜A˜s B¨v¸DÈ$ÔOÓP€Aô 	ˆa�˜D RÔ(€Að ˆq‚yà	ˆR�V‰V�T�E˜1˜s™7‘O CÑ'Ó(Ñ(ˆà€Hr(   c                 óv  — ||}}|dz   |z   dz  }|dz   |z
  dz  }	t        j                  dt         j                  | dz  z  | |z  z  | dz  dz   «      }
t        j                  | dz  dz   t        ¬«      }t        j                  | dz  dz   t        ¬«      }|
|j
                  dd |	|j                  dd t        ||¬«       ||j                  dd t        ||¬«       |
dt        |z
  z  z  }
|xj                  |j                  z  c_        |xj                  t        |z  z  c_        |xj
                  |j
                  z  c_        |xj
                  |
z  c_        t        j                  ||¬«       | dz  dk(  rd|j
                  d<   t        j                  |d   «      sd|z  t        |	||	z
  «      z  |d<   t        j                  |d   «      r+|s)t        dd	¬
«       t        j                  |«      }d|d<   |S |d   dk(  r7|r5t        dd	¬
«       t        j                  |«      }t         j                  |d<   |S )z:Compute the coefficient array for a fast Hankel transform.r   r   r   r   N)Úoutr   z.singular transform; consider changing the biasé   )Ú
stacklevelz6singular inverse transform; consider changing the bias)ÚnpÚlinspaceÚpiÚemptyÚcomplexÚimagÚrealr   ÚLN_2r   Úisfiniter	   Úisinfr   ÚcopyÚinf)r"   r    r!   r   r   r*   ÚlnkrÚqr   ÚxmÚyr%   Úvs                r'   r   r   F   së  € à�dˆ!€Dð
 ˆQ‰$ˆq‰&�!‰€BØ
ˆQ‰$ˆq‰&�!‰€BÜ
�‰�A”r—u‘u˜a ™d‘| Q s¡UÑ+¨Q°©T°!©VÓ4€AÜ
�‰��A‘�a‘œwÔ'€AÜ
�‰��A‘�a‘œwÔ'€AØ€A‡F�F‰1€IØ€A‡F�F‰1€IÜˆQ�AÕØ€A‡F�F‰1€IÜˆQ�AÕØˆŒD�4‰K‰Ñ€AØ‡F‚Fˆa�f‰fÑ…FØ‡F‚FŒd�1‰fÑ…FØ‡F‚Fˆa�f‰fÑ…FØ‡F‚Fˆa�K…FÜ‡F�Fˆ1�!Õð 	ˆ1�u�‚zØˆ�‰ˆr‰
ô �;‰;�q˜‘tÔð �!‰t”d˜2˜r "™u“oÑ%ˆˆ!‰ô
 
‡x�x��!‘„~™gÜÐ=È!ÕLä�G‰G�A‹JˆØˆˆ!‰ð €Hð 
ˆ1‰�Š‘wÜÐEÐRSÕTä�G‰G�A‹JˆÜ�v‰vˆˆ!‰à€Hr(   T)Úout_of_scopec                 óP  — ||}}|dz   |z   dz  }|dz   |z
  dz  }t         j                  d| z  z  }t        |d|z  z   «      }	t        |d|z  z   «      }
t        |z
  | z  |	j                  |
j                  z   t         j                  z  z   }||t        j
                  |«      z
  | z  z   S )aî  Return optimal offset for a fast Hankel transform.

    Returns an offset close to `initial` that fulfils the low-ringing
    condition of [1]_ for the fast Hankel transform `fht` with logarithmic
    spacing `dln`, order `mu` and bias `bias`.

    Parameters
    ----------
    dln : float
        Uniform logarithmic spacing of the transform.
    mu : float
        Order of the Hankel transform, any positive or negative real number.
    initial : float, optional
        Initial value for the offset. Returns the closest value that fulfils
        the low-ringing condition.
    bias : float, optional
        Exponent of power law bias, any positive or negative real number.

    Returns
    -------
    offset : float
        Optimal offset of the uniform logarithmic spacing of the transform that
        fulfils a low-ringing condition.

    Examples
    --------
    >>> from scipy.fft import fhtoffset
    >>> dln = 0.1
    >>> mu = 2.0
    >>> initial = 0.5
    >>> bias = 0.0
    >>> offset = fhtoffset(dln, mu, initial, bias)
    >>> offset
    0.5454581477676637

    See Also
    --------
    fht : Definition of the fast Hankel transform.

    References
    ----------
    .. [1] Hamilton A. J. S., 2000, MNRAS, 312, 257 (astro-ph/9905191)

    r   r   y              ð?)r/   r1   r   r6   r4   Úround)r    r!   Úinitialr   r;   r<   r   r=   r>   ÚzpÚzmÚargs               r'   r   r   y   s«   € ð^ �tˆ!€Dà
ˆQ‰$ˆq‰&�!‰€BØ
ˆQ‰$ˆq‰&�!‰€BÜ
�‰ˆq�‰u‰€AÜ	�"�r˜!‘t‘)Ó	€BÜ	�"�r˜!‘t‘)Ó	€BÜ�$‰;˜Ñ
˜rŸw™w¨¯©Ñ0´"·%±%Ñ7Ñ
7€CØ�3œŸ™ #›Ñ&¨Ñ+Ñ+Ð+r(   r   c                óÈ   — |€t         }| j                  d   }t        | d¬«      }|s||z  }n||j                  |«      z  }t	        ||d¬«      }|j                  |d¬«      }|S )zUCompute the biased fast Hankel transform.

    This is the basic FFTLog routine.
    r   )Úaxis)r/   r   r   Úconjr   Úflip)r   r%   r*   r   r"   r&   s         r'   r   r   ³   so   € ð
 
€zÜˆð 	
�‰�‰€Aô 	ˆQ�RÔ€AÙà	ˆQ‰‰ð 	
ˆR�W‰W�Q‹Z‰ˆÜˆa�˜Ô€AØ
�‰�˜ˆÓ€Aà€Hr(   )ç        rK   )rK   rK   F)F)Únumpyr/   Úwarningsr   Ú_basicr   r   Úspecialr   r	   Úscipy._lib._array_apir
   r   Ú__all__Úlogr6   r   r   r   r   r   © r(   r'   Ú<module>rT      s`   ðÛ Ý ß ß $ç Bâ
&€ð €r‡v�vˆaƒy€óó8ó80ñf ˜dÔ#ò6,ó $ð6,ðr Tõ r(   