o
    	h                     @   s  d dl mZ d dlZd dlZd dlmZmZ d dlm	Z
 d dlmZmZmZmZ ejdg dejdg ddd	 Zejdg dejd
g ddd Zejdg dejdg dejd
g ddd Zeg dg dg dg dg dddddejgg dddddejgg dg dg d g d!g d"g d#d$ddd%ejggZejjejd&edddd'f  d(d) Zejd*e d+d, Zejd-eeg d.d/d0gg d1d2d3 Zejd*g d d d ej d4fd d d/ej d4fd5d6d7d8d9d:d;d<d=d>d?d@ddAejfdBdCdDd@ddEejfdFdGdHdIdJd$d@dKdLejfdMdNdOdPdQdRdSdTdUdVdWdX ZdS )Y    )productN)assert_equalassert_allclose)log_wright_besselloggammargammawright_bessela)r   ư>皙?      ?   
   bc                 C   s2   t t| |dt| tt| |dt|  dS )zTest at x = 0.        N)r   r   r   r   r   r   )r	   r    r   Z/var/www/vscode/kcb/lib/python3.10/site-packages/scipy/special/tests/test_wright_bessel.pytest_wright_bessel_zero   s   r   x)r   r
   r   r   r   c                 C   sX   |dkr*| d }t d|d |d d }tt|d || t||ddd dS dS )	zTest relation of wright_bessel and modified bessel function iv.

    iv(z) = (1/2*z)**v * Phi(1, v+1; 1/4*z**2).
    See https://dlmf.nist.gov/10.46.E2
    r   r      g      @g       @dy=rtolatolN)r   r   nppowersciv)r   r   vwbr   r   r   test_wright_bessel_iv%   s   

r    )r   gjt?r      r   )r   r
   r   r   r   r!   r   d   c                 C   sH   t t| |d || | t| ||  | |d t| ||  ddd dS )a=  Test functional relation of wright_bessel.

    Phi(a, b-1, z) = a*z*Phi(a, b+a, z) + (b-1)*Phi(a, b, z)

    Note that d/dx Phi(a, b, x) = Phi(a, b-1, x)
    See Eq. (22) of
    B. Stankovic, On the Function of E. M. Wright,
    Publ. de l' Institut Mathematique, Beograd,
    Nouvelle S`er. 10 (1970), 113-124.
    r   :0yE>r   Nr   r   r	   r   r   r   r   r   test_wright_functional7   s   
r&   )r         Y@9B.@gS
[.Gg:0yU>)r         $@r(   gUqZ+YIgv(x>)r   r)        @@g]a(aaHMr#   )r   r'   r*   g	5U4'g+i)+p>)      ?      4@     j@g+^%np~=r+   r'   r-   g
+eD)d     ?r,   r-   g'^%nr.   r/   gc+eD)      ?r        @@guc&Br.   )r0   g      =r1   gsc&Br.   )r0   g|=r1   gB&Br.   )r0   h㈵>r1   g]%Br.   )r0   r   r1   gKӨwqBgdy=)r0   r,   r-   g@IgA:)>r0   gmxi%%za, b, x, phi   c                 C   s   t t| |||dd dS )zDTest cases of test_data that do not reach relative accuracy of 1e-11r   r   Nr$   )r	   r   r   phir   r   r   test_wright_data_grid_failuresb   s   r6   za, b, x, phi, accuracyc                 C   >   t |rt t| ||sJ dS tt| ||||d dS )z}Test cases of test_data that do not reach relative accuracy of 1e-11

    Here we test for reduced accuracy or even nan.
    r4   N)r   isnanr   r   r	   r   r   r5   accuracyr   r   r   #test_wright_data_grid_less_accuratek   s   
r;   za, b, x)r   r   r   r0   r!   r   r   r   )MbP?r   r0   r!   r   c                 C   s(   t t| ||tt| ||dd dS )z8Test that log_wright_bessel equals log of wright_bessel.r#   r4   N)r   r   r   logr   r%   r   r   r   ,test_log_wright_bessel_same_as_wright_bessely   s
   

r>   r   )r   r   Gz?r?   r   )r   r   d~QJr@   r   )r2   r   i  gujXV@r   )r2   r   r*   gF4@r   )r2   r"   r*   g(@r   )r<   r   g     @g?@r   )r<   r   r-   g.x"S@r   )r<   r   g    .AgwV.Ar   )r<   r   r-   gZ<P@r   )r<   2   r-   gړD@r<   r<   r"   grlqw4@)r   r   r-   gś 8ԯ@r   )r   r       cAgh{j@r   r   g&,@)r   r"   rB   gDvu*@r   )r   r   r-   ge6Ѓ@r   )r   r       חAghՈ@r   )r0   r   r-   g}h@r   )r0   r   rC   gP2aI@r   rC   gSe@)r!   r   r-   gtї#@r   )r!   r   rC   gPw8@@r   )r!   r      mBg/ft/c@r   )r!   r"   r-   gD%rvr   )r!   r"   rD   g8pK<ug-C6?)r!   r"   @xDg~8@g>)r"   r   r-   g2ur   )r"   r   rE   g?3Qsr   )r"   r"   r-   b%rvr   )r"   r"   rE   rF   r   c                 C   r7   )z6Test for log_wright_bessel, in particular for large x.r4   N)r   r8   r   r   r9   r   r   r   test_log_wright_bessel   s   
'rG   )	itertoolsr   pytestnumpyr   numpy.testingr   r   scipy.specialspecialr   r   r   r   r   markparametrizer   r    r&   arraynangrid_a_b_x_value_accxfailtolistr6   r;   listr>   infrG   r   r   r   r   <module>   s   

$	
 %