
    (ph                         S SK rS SKJr  SSKJrJr  SSKJrJ	r	  S SK
Jr  / SQr\R                  " S5      rSS	 jrSS
 jrSS jrSS jrSSS.S jjrg)    N)warn   )rfftirfft   )loggammapoch)array_namespace)fhtifht	fhtoffsetc           
      v   [        U 5      nUR                  U 5      n U R                  S   nUS:w  a=  US-
  S-  nUR                  XeR                  S9nXR                  U* X-
  -  U-  5      -  n UR                  [        XaX#US95      n	[        X	US9n
US:w  a   XR                  U* WW-
  U-  U-   -  5      -  n
U
$ )Nr   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              L/var/www/html/venv/lib/python3.13/site-packages/scipy/fft/_fftlog_backend.pyr   r      s    		B


1A 	
A qysAgIIazzI*uags*++ 	

8ABDABA 	arA qy	VVTEAGS=61233H    c                 x   [        U 5      nUR                  U 5      n U R                  S   nUS:w  a?  US-
  S-  nUR                  XeR                  S9nXR                  XHU-
  U-  U-   -  5      -  n UR                  [        XaX#USS95      n	[        X	SUS9n
US:w  a  XR                  U* WW-
  -  U-  5      -  n
U
$ )	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 qysAgIIazzI*t#gs]V3455 	

8ABD$OPA 	aDR(A qy	VVTE1s7OC'((Hr'   c                 t   X4pvUS-   U-   S-  nUS-   U-
  S-  n	[         R                  " S[         R                  U S-  -  X-  -  U S-  S-   5      n
[         R                  " U S-  S-   [        S9n[         R                  " U S-  S-   [        S9nXR
                  SS& XR                  SS& [        XS9  XR                  SS& [        XS9  U
S[        U-
  -  -  n
U=R                  UR                  -  sl        U=R                  [        U-  -  sl        U=R
                  UR
                  -  sl        U=R
                  U
-  sl        [         R                  " XS9  U S-  S:X  a  SUR
                  S'   [         R                  " US   5      (       d  SU-  [        XU	-
  5      -  US'   [         R                  " US   5      (       a.  U(       d'  [        SS	S
9  [         R                  " U5      nSUS'   U$ US   S:X  a:  U(       a3  [        SS	S
9  [         R                  " U5      n[         R                  US'   U$ )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   !
 Q$q&!B
Q$q&!B
Aruuad|QU+QT!V4A
Aaw'A
Aaw'AFF1IFF1IQFF1IQD4KAFFaffFFFd1fFFFaffFFFaKFFF1 	1uzr
 ;;qt !td2"uo%!
 
xx!~~g=!LGGAJ! H 
1wERSTGGAJvv!Hr'   c                 L   X#pTUS-   U-   S-  nUS-   U-
  S-  n[         R                  SU -  -  n[        USU-  -   5      n	[        USU-  -   5      n
[        U-
  U -  U	R                  U
R                  -   [         R                  -  -   nXK[         R
                  " U5      -
  U -  -   $ )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.   r0   r   r5   r3   round)r   r    initialr   r:   r;   r   r<   r=   zpzmargs               r&   r   r   y   s    \ !
Q$q&!B
Q$q&!B
quA	"r!t)	B	"r!t)	B$;
rww0"%%7
7C#&+++r'   r   c                    Uc  [         nU R                  S   n[        U SS9nU(       d  XQ-  nOXSR                  U5      -  n[	        XTSS9nUR                  USS9nU$ )zMCompute 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      si    
 
z 	
A 	QRA	 	
WWQZaA
AHr'   )        rI   )rI   rI   F)F)numpyr.   warningsr   _basicr   r   specialr   r	   scipy._lib._array_apir
   __all__logr5   r   r   r   r   r    r'   r&   <module>rR      sJ       $ 1
& 
vvay880f6,rT r'   