
    e!h                         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 g dZ ej                  d      Zdd	Zdd
ZddZddZddddZy)    N)warn   )rfftirfft   )loggammapoch)array_namespace)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 )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              a/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/scipy/fft/_fftlog_backend.pyr   r      s    		B


1A 	
A qysAgIIarzzI*ua#gs*++ 	

8AsBvDABA 	arA qy	RVVTEAGS=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 qysAgIIarzzI*ta#gs]V3455 	

8AsBvD$OPA 	aDR(A qy	RVVTE1s7OC'((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
Aruuad|QsU+QT!V4A
Aaw'A
Aaw'AAFF1IAFF1IQAAFF1IQAD4KAFFaffFFFd1fFFFaffFFFaKFFF1! 	1uzr
 ;;qt !td2r"uo%!
 
xx!~g=!LGGAJ! H 
1wERSTGGAJvv!Hr'   c                 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.   r0   r   r5   r3   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$;
rww0"%%7
7C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 	QRA	Q 	
RWWQZ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      sL       $ 1
& rvvay880f6,rT r'   