U
    Hvf;                     @   s  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
 e jdd ddddd	ge jd
d ddddd	gdd Ze jd
d ddddd	ge jdd ddddgdd Ze jdd ddddd	ge jd
ddddd	ge jdd dddddd	dgdd Zedddddgdddddgdddddgdddd d!gd"d#d$d%d&gd"dd$d'ejgd(d#d$d)d&gd(dd$d*ejgd+d,d-d.d&gd+d/d-d0d&gd+d1d-d2d&gd+d3d-d4d&gd+dd-d5d6gd+d#d$d7d8gd+dd$d9e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dS )A    N)assert_equalassert_allclose)rgammawright_besselagư>g?g      ?   
   bc                 C   s   t t| |dt| dS )zTest at x = 0.        N)r   r   r   )r   r	    r   J/tmp/pip-unpacked-wheel-96ln3f52/scipy/special/tests/test_wright_bessel.pytest_wright_bessel_zero   s    r   xc                 C   sT   |dkrP| d }t d|d |d d }tt|d || t||ddd 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=rtolZatolN)r   r   nppowerscZiv)r	   r   vwbr   r   r   test_wright_bessel_iv"   s    
 r   gjt?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_functional4   s     r   g      Y@g9B.@gS
[.Gg:0yU>g      $@gUqZ+YIgv(x>g     @@g]a(aaHMr   g	5U4'g+i)+p>g      ?g      4@g     j@g+^%ngp~=g
+eDgd     ?g'^%ngc+eDg      ?r
   g     @@guc&Bg      =gsc&Bg|=gB&Bgh㈵>g]%BgKӨwqBgdy=g@IgA:)>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_failures_   s    r!   za, b, x, phi, accuracyc                 C   s<   t |r"t t| ||s8tn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.
    r   N)r   isnanr   AssertionErrorr   )r   r	   r   r    Zaccuracyr   r   r   #test_wright_data_grid_less_accurateh   s    
r$   )ZpytestZnumpyr   Znumpy.testingr   r   Zscipy.specialspecialr   r   r   markZparametrizer   r   r   arraynanZgrid_a_b_x_value_accZxfailtolistr!   r$   r   r   r   r   <module>   sT   