
    tKg	                        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                  j!                  dg d      ej                  j!                  dg d      d               Zej                  j!                  dg d      ej                  j!                  d	g d
      d               Zej                  j!                  dg d      ej                  j!                  dg d      ej                  j!                  d	g d      d                      Z ej(                  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                  j!                  d#edddd$f   j1                               d%               Zej                  j!                  d&ej1                               d'        Zej                  j!                  d( e eg d)d*d+gg d,                  d-        Zej                  j!                  d&g d d d ej:                   d.fd d d*ej:                   d.fd/d0d1d2d3d4d5d6d7d8d9d:dd;ej*                  fd<d=d>d:dd?ej*                  fd@dAdBdCdDd!d:dEdFej*                  fdGdHdIdJdKdLdMdNdOdP      dQ        Zy)R    )productN)assert_equalassert_allclose)log_wright_besselloggammargammawright_bessela)r   ư>皙?      ?   
   bc                     t        t        | |d      t        |             t        t	        | |d      t        |              y)zTest at x = 0.        N)r   r	   r   r   r   r   )r
   r   s     j/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/special/tests/test_wright_bessel.pytest_wright_bessel_zeror      s5     q!R(&)4%aB/(1+>    x)r   r   r   r   r   c                     |dk7  rY| dz
  }t        d|dz   |dz  dz        }t        t        j                  |dz  |      |z  t	        j
                  ||      dd       yy)	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wbs       r   test_wright_bessel_ivr#   %   se     	AvE1a!eQTBY/ 	R+b0a"	0 r   )r   gjt?r      r   )r   r   r   r   r   r$   r   d   c           
          t        t        | |dz
  |      | |z  t        | || z   |      z  |dz
  t        | ||      z  z   dd       y)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   s      r   test_wright_functionalr*   7   sS     M!QUA.EM!QUA661uaA 667D*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+   r1   g
+eD)d     ?r0   r1   g'^%nr2   r3   gc+eD)      ?r        @@guc&Br2   )r4   g      =r5   gsc&Br2   )r4   g|=r5   gB&Br2   )r4   h㈵>r5   g]%Br2   )r4   r   r5   gKӨwqBgdy=)r4   r0   r1   g@IgA:)>r4   gmxi%%za, b, x, phi   c                 6    t        t        | ||      |d       y)zDTest cases of test_data that do not reach relative accuracy of 1e-11r   r   Nr(   )r
   r   r   phis       r   test_wright_data_grid_failuresr;   b   s     M!Q*Ce<r   za, b, x, phi, accuracyc                     t        j                  |      r#t        j                  t        | ||            sJ yt        t        | ||      ||       y)z}Test cases of test_data that do not reach relative accuracy of 1e-11

    Here we test for reduced accuracy or even nan.
    r9   N)r   isnanr	   r   r
   r   r   r:   accuracys        r   #test_wright_data_grid_less_accurater@   k   s@     
xxxxaA.///aA.(Cr   za, b, x)r   r   r   r4   r$   r   r   r   )MbP?r   r$   r   c           
      r    t        t        | ||      t        j                  t	        | ||            d       y)z8Test that log_wright_bessel equals log of wright_bessel.r'   r9   N)r   r   r   logr	   r)   s      r   ,test_log_wright_bessel_same_as_wright_besselrD   y   s0     !Q"
}Q1%&r   r   )r   r   Gz?rE   r   )r   r   d~QJrF   r   )r6   r   i  gujXV@r   )r6   r   r.   gF4@r   )r6   r%   r.   g(@r   )rA   r   g     @g?@r   )rA   r   r1   g.x"S@r   )rA   r   g    .AgwV.Ar   )rA   r   r1   gZ<P@r   )rA   2   r1   gړD@rA   rA   r%   grlqw4@)r   r   r1   gś 8ԯ@r   )r   r       cAgh{j@r   r   g&,@)r   r%   rH   gDvu*@r   )r   r   r1   ge6Ѓ@r   )r   r       חAghՈ@r   )r4   r   r1   g}h@r   )r4   r   rI   gP2aI@r   rI   gSe@)r$   r   r1   gtї#@r   )r$   r   rI   gPw8@@r   )r$   r      mBg/ft/c@r   )r$   r%   r1   gD%rvr   )r$   r%   rJ   g8pK<ug-C6?)r$   r%   @xDg~8@g>)r%   r   r1   g2ur   )r%   r   rK   g?3Qsr   )r%   r%   r1   b%rvr   )r%   r%   rK   rL   r   c                     t        j                  |      r#t        j                  t        | ||            sJ yt        t        | ||      ||       y)z6Test for log_wright_bessel, in particular for large x.r9   N)r   r=   r   r   r>   s        r   test_log_wright_besselrN      sC    N 
xxxx)!Q2333)!Q2ChGr   )	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tolistr;   r@   listrD   infrN    r   r   <module>r_      s  &    7  L L 8989? : :? 89450 6 :0  8956@A* B 7 :**  rxx@?479%1266:H*@"&&I0B22/5%1266:!  & BQB&&(*=* =
 !#D#D )Aq63CDH !	
Aq266'5!!	
Aq266'5!! 	"! 	"	!
 	1! 	2! 	3! 	2! 	2! 	2! 	2! 	2! 
sC+RVV4! 	1! 	1!  
c3*BFF3!!" 	3#!$ 	/%!& 	/'!( 	1)!* 	0+!, 
c3*BFF3-!. 	//!0 	/1!2 	03!4 	25!6 	27!8 	19!: 	2;!< 	3=!> 	3?!@ 	4A!$JHK$JHr   