
    doi                         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Jr  / SQr\R                  " S5      rSS	 jrSS
 jrSS jr\" SS9SS j5       rSSS.S jjrg)    N)warn   )rfftirfft   )loggammapoch)array_namespacexp_capabilities)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              U/var/www/html/land-ocr/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(   T)out_of_scopec                 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/   r1   r   r6   r4   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(   )        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
& 
vvay880f d#6, $6,rT r(   