
    bi[;                        d dl Z d dlZd dlmZ d dlZd dlmZmZmZm	Z	m
Z
mZmZmZmZ d dlmZmZmZmZ d dlmZ  G d d      Z G d d	      Z G d
 d      Z G d d      Z G d d      Z G d d      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d      Z ejB                  jE                  dddg      ejB                  jE                  deeeeg      d                Z#y)!    N)assert_allclose)	sincossinhcoshexpinfnanr_pi)spherical_jnspherical_ynspherical_inspherical_kn)quadc                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestSphericalJnc                     t        j                  g d      }t        t        d|      d|z  d|dz  z  z   t	        |      z  d|dz  z  t        |      z  z
         y )NQ?Gz?Gz(@^@g     J@      )nparrayr   r   r   r   selfxs     d/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/scipy/special/tests/test_spherical_bessel.pytest_spherical_jn_exactz'TestSphericalJn.test_spherical_jn_exact   sV     HH89Q*A!Q$A.1a4A>	@    c                     t        j                  g d      }d}t        t        |dz
  |      t        |dz   |      z   d|z  dz   |z  t        ||      z         y N   r   r         ?      ?r(   r   r   r   r   r   r    nr!   s      r"   $test_spherical_jn_recurrence_complexz4TestSphericalJn.test_spherical_jn_recurrence_complex   V    HH%&QUA.a!eQ1GG1q!LA$66	8r$   c                     t        j                  g d      }d}t        t        |dz
  |      t        |dz   |      z   d|z  dz   |z  t        ||      z         y Nr'   r   r(   r   r,   r-   s      r"   !test_spherical_jn_recurrence_realz1TestSphericalJn.test_spherical_jn_recurrence_real   V    HH%&QUA.a!eA1FF1q!LA$66	8r$   c                     d}t        j                  t         t        g      }t        t	        ||      t        j                  ddg             y N   r   )r   r   r	   r   r   r-   s      r"   test_spherical_jn_inf_realz*TestSphericalJn.test_spherical_jn_inf_real&   9    HHsdC[!Q*BHHaV,<=r$   c           
      R   d}t        j                  t         dz   t        dz   t        dz  g      }t        j                         5  t        j
                  ddt               t        t        ||      t        j                  ddt        dz  g             d d d        y # 1 sw Y   y xY wNr)                         ?      ?ignorez%invalid value encountered in multiplyr   )	r   r   r	   warningscatch_warningsfilterwarningsRuntimeWarningr   r   r-   s      r"   test_spherical_jn_inf_complexz-TestSphericalJn.test_spherical_jn_inf_complex,       HHsdRir3:67$$& 	N##A>SLA.!QT
9K0LM	N 	N 	N   ABB&c                 0    t        t        dd      d       y )Nr   g%-@g<]3r   r   r    s    r"   test_spherical_jn_large_arg_1z-TestSphericalJn.test_spherical_jn_large_arg_15   s     	Q13JKr$   c                 0    t        t        dd      d       y )Nr   i'  g|	 ?rG   rH   s    r"   test_spherical_jn_large_arg_2z-TestSphericalJn.test_spherical_jn_large_arg_2;   s     	Q.0FGr$   c                     t        j                  g d      }d}t        t        ||      t        j                  g d             y Nr   r(   r      
   d   r   )r(   r   r   r   r   r   r,   r-   s      r"   test_spherical_jn_at_zeroz)TestSphericalJn.test_spherical_jn_at_zeroA   3     HH*+Q*BHH5G,HIr$   N)__name__
__module____qualname__r#   r/   r3   r8   rC   rI   rK   rR    r$   r"   r   r      s/    @88>NLHJr$   r   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestSphericalYnc                     t        j                  g d      }t        t        d|      d|z  d|dz  z  z
  t	        |      z  d|dz  z  t        |      z  z
         y )Nr   r   r(   r   )r   r   r   r   r   r   r   s     r"   test_spherical_yn_exactz'TestSphericalYn.test_spherical_yn_exactJ   sU     HH89Q*1qAvs1v-!Q$s1v=	?r$   c                     t        j                  g d      }d}t        t        |dz
  |      t        |dz   |      z   d|z  dz   |z  t        ||      z         y r2   r   r   r   r   r-   s      r"   !test_spherical_yn_recurrence_realz1TestSphericalYn.test_spherical_yn_recurrence_realR   r4   r$   c                     t        j                  g d      }d}t        t        |dz
  |      t        |dz   |      z   d|z  dz   |z  t        ||      z         y r&   r]   r-   s      r"   $test_spherical_yn_recurrence_complexz4TestSphericalYn.test_spherical_yn_recurrence_complexY   r0   r$   c                     d}t        j                  t         t        g      }t        t	        ||      t        j                  ddg             y r6   )r   r   r	   r   r   r-   s      r"   test_spherical_yn_inf_realz*TestSphericalYn.test_spherical_yn_inf_real`   r9   r$   c           
      R   d}t        j                  t         dz   t        dz   t        dz  g      }t        j                         5  t        j
                  ddt               t        t        ||      t        j                  ddt        dz  g             d d d        y # 1 sw Y   y xY wr;   )	r   r   r	   r?   r@   rA   rB   r   r   r-   s      r"   test_spherical_yn_inf_complexz-TestSphericalYn.test_spherical_yn_inf_complexf   rD   rE   c                     t        j                  g d      }d}t        t        ||      t        j                  |j
                  t                      y NrN   r   )r   r   r   r   fullshaper	   r-   s      r"   test_spherical_yn_at_zeroz)TestSphericalYn.test_spherical_yn_at_zeroo   s8    HH*+Q*BGGAGGcT,BCr$   c                     t        j                  g d      }d}t        t        ||      t        j                  |j
                  t                     y NrN   r<   )r   r   r   r   rg   rh   r
   r-   s      r"   !test_spherical_yn_at_zero_complexz1TestSphericalYn.test_spherical_yn_at_zero_complexu   s8     HH*+Q*BGGAGGS,ABr$   N)
rT   rU   rV   r[   r^   r`   rb   rd   ri   rl   rW   r$   r"   rY   rY   I   s(    ?88>NDCr$   rY   c                       e Zd Zd Zd Zy)TestSphericalJnYnCrossProductc                     t        j                  g d      }t        j                  g d      }t        |dz   |      t        ||      z  t        ||      t        |dz   |      z  z
  }d|dz  z  }t	        ||       y )Nr(   rO      g?r(   rP   r(   r   r   r   r   r   r   r    r.   r!   leftrights        r"   $test_spherical_jn_yn_cross_product_1zBTestSphericalJnYnCrossProduct.test_spherical_jn_yn_cross_product_1   sp    HHYHH\"QUA&a);;Q"\!a%%;;<!Q$e$r$   c                    t        j                  g d      }t        j                  g d      }t        |dz   |      t        ||      z  t        ||      t        |dz   |      z  z
  }d|z  dz   |dz  z  }t	        ||       y )Nrp   rr   r   r   rs   rt   s        r"   $test_spherical_jn_yn_cross_product_2zBTestSphericalJnYnCrossProduct.test_spherical_jn_yn_cross_product_2   sx    HHYHH\"QUA&a);;Q"\!a%%;;<1q!Q$e$r$   N)rT   rU   rV   rw   ry   rW   r$   r"   rn   rn      s    %%r$   rn   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestSphericalInc                     t        j                  g d      }t        t        d|      d|z  d|dz  z  z   t	        |      z  d|dz  z  t        |      z  z
         y N)r   r   r   r   r   r(   r   )r   r   r   r   r   r   r   s     r"   test_spherical_in_exactz'TestSphericalIn.test_spherical_in_exact   sT    HH01Q*1qAvtAw.1a4Q?	Ar$   c                     t        j                  g d      }d}t        t        |dz
  |      t        |dz   |      z
  d|z  dz   |z  t        ||      z         y r2   r   r   r   r   r-   s      r"   !test_spherical_in_recurrence_realz1TestSphericalIn.test_spherical_in_recurrence_real   r4   r$   c                     t        j                  g d      }d}t        t        |dz
  |      t        |dz   |      z
  d|z  dz   |z  t        ||      z         y r&   r   r-   s      r"   $test_spherical_in_recurrence_complexz4TestSphericalIn.test_spherical_in_recurrence_complex   sV    HH%&QUA.a!eA1FF1q!LA$66	8r$   c                     d}t        j                  t         t        g      }t        t	        ||      t        j                  t         t        g             y )NrO   )r   r   r	   r   r   r-   s      r"   test_spherical_in_inf_realz*TestSphericalIn.test_spherical_in_inf_real   s;    HHsdC[!Q*BHHsdC[,ABr$   c                     d}t        j                  t         dz   t        dz   t        dz  g      }t        t	        ||      t        j                  t         t        t
        g             y )Nr)   r<   r=   )r   r   r	   r   r   r
   r-   s      r"   test_spherical_in_inf_complexz-TestSphericalIn.test_spherical_in_inf_complex   sO     HHsdRir3:67Q*BHHsdC5E,FGr$   c                     t        j                  g d      }d}t        t        ||      t        j                  g d             y rM   r   r-   s      r"   test_spherical_in_at_zeroz)TestSphericalIn.test_spherical_in_at_zero   rS   r$   N)	rT   rU   rV   r~   r   r   r   r   r   rW   r$   r"   r{   r{      s$    A88C	HJr$   r{   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestSphericalKnc                     t        j                  g d      }t        t        d|      t        dz  t        |       z  d|z  d|dz  z  z   d|dz  z  z   z         y r}   )r   r   r   r   r   r   r   s     r"   test_spherical_kn_exactz'TestSphericalKn.test_spherical_kn_exact   sU    HH01Q*1S!WacAadFlQq!tV&;<	>r$   c                     t        j                  g d      }d}t        d|dz
  z  t        |dz
  |      z  d|dz   z  t        |dz   |      z  z
  d|z  d|z  dz   z  |z  t        ||      z         y )Nr'   r   r   r(   r   r   r   r   r   r-   s      r"   !test_spherical_kn_recurrence_realz1TestSphericalKn.test_spherical_kn_recurrence_real   s}    HH%&1q5M,q1ua00B!a%=aRSeTUAV3VV!GQqS1WaQ 22	
r$   c                     t        j                  g d      }d}t        d|dz
  z  t        |dz
  |      z  d|dz   z  t        |dz   |      z  z
  d|z  d|z  dz   z  |z  t        ||      z         y )Nr'   r+   r   r(   r   r   r-   s      r"   $test_spherical_kn_recurrence_complexz4TestSphericalKn.test_spherical_kn_recurrence_complex   s}    HH%&1q5M,q1ua00B!a%=aRSeTUAV3VV!GQqS1WaQ 22	
r$   c                     d}t        j                  t         t        g      }t        t	        ||      t        j                  t         dg             y )NrO   r   )r   r   r	   r   r   r-   s      r"   test_spherical_kn_inf_realz*TestSphericalKn.test_spherical_kn_inf_real   s;    HHsdC[!Q*BHHsdAY,?@r$   c                     d}t        j                  t         dz   t        dz   t        dz  g      }t        t	        ||      t        j                  t         dt
        g             y )Nr)   r<   r=   r   )r   r   r	   r   r   r
   r-   s      r"   test_spherical_kn_inf_complexz-TestSphericalKn.test_spherical_kn_inf_complex   sN    
 HHsdRir3:67Q*BHHsdAs^,DEr$   c                     t        j                  g d      }d}t        t        ||      t        j                  |j
                  t                     y rf   )r   r   r   r   rg   rh   r	   r-   s      r"   test_spherical_kn_at_zeroz)TestSphericalKn.test_spherical_kn_at_zero   s6    HH*+Q*BGGAGGS,ABr$   c                     t        j                  g d      }d}t        t        ||      t        j                  |j
                  t                     y rk   )r   r   r   r   rg   rh   r
   r-   s      r"   !test_spherical_kn_at_zero_complexz1TestSphericalKn.test_spherical_kn_at_zero_complex   s6    HH*+Q*BGGAGGS,ABr$   N)
rT   rU   rV   r   r   r   r   r   r   r   rW   r$   r"   r   r      s)    >

AFCCr$   r   c                       e Zd Zd Zej
                  j                  d        Zej
                  j                  d        Zy)SphericalDerivativesTestCasec                      t         fd||      \  }}t        | j                  |       j                  |      z
  |       y )Nc                 (    j                  |       S N)df)zr.   r    s    r"   <lambda>zBSphericalDerivativesTestCase.fundamental_theorem.<locals>.<lambda>   s    TWWQ] r$   )atol)r   r   f)r    r.   abintegral	tolerances   ``    r"   fundamental_theoremz0SphericalDerivativesTestCase.fundamental_theorem   s@    "#:AqA)q!tvva|3&	(r$   c                 *    | j                  ddd       y )Nr   g      @      .@r   rH   s    r"   test_fundamental_theorem_0z7SphericalDerivativesTestCase.test_fundamental_theorem_0   s      C.r$   c                 *    | j                  ddd       y )Nr)         ?g333333?r   rH   s    r"   test_fundamental_theorem_7z7SphericalDerivativesTestCase.test_fundamental_theorem_7  s      C-r$   N)	rT   rU   rV   r   pytestmarkslowr   r   rW   r$   r"   r   r      sC    ( [[/ / [[. .r$   r   c                       e Zd Zd Zd Zd Zy)TestSphericalJnDerivativesc                     t        ||      S r   r   r    r.   r   s      r"   r   zTestSphericalJnDerivatives.f      Aq!!r$   c                     t        ||d      S NT
derivativer   r   s      r"   r   zTestSphericalJnDerivatives.df      AqT22r$   c                     t        j                  g d      }t        t        |dd      t        j                  g d             y )Nr   r(   r   r   r)      r   Tr   r   gUUUUUU?r   r   r   r   r,   r    r.   s     r"   test_spherical_jn_d_zeroz3TestSphericalJnDerivatives.test_spherical_jn_d_zero  s1    HH()Qd;!56	8r$   N)rT   rU   rV   r   r   r   rW   r$   r"   r   r     s    "38r$   r   c                       e Zd Zd Zd Zy)TestSphericalYnDerivativesc                     t        ||      S r   r   r   s      r"   r   zTestSphericalYnDerivatives.f  r   r$   c                     t        ||d      S r   r   r   s      r"   r   zTestSphericalYnDerivatives.df  r   r$   NrT   rU   rV   r   r   rW   r$   r"   r   r         "3r$   r   c                       e Zd Zd Zd Zd Zy)TestSphericalInDerivativesc                     t        ||      S r   r   r   s      r"   r   zTestSphericalInDerivatives.f  r   r$   c                     t        ||d      S r   r   r   s      r"   r   zTestSphericalInDerivatives.df   r   r$   c                     t        j                  g d      }t        |dd       t        t        |dd      t        j                  g d             y )Nr   r   Fr   Tr   )r   r   r   r   r   s     r"   test_spherical_in_d_zeroz3TestSphericalInDerivatives.test_spherical_in_d_zero#  s=    HH()Qe,Qd;!56	8r$   N)rT   rU   rV   r   r   r   rW   r$   r"   r   r     s    "38r$   r   c                       e Zd Zd Zd Zy)TestSphericalKnDerivativesc                     t        ||      S r   r   r   s      r"   r   zTestSphericalKnDerivatives.f+  r   r$   c                     t        ||d      S r   r   r   s      r"   r   zTestSphericalKnDerivatives.df.  r   r$   Nr   rW   r$   r"   r   r   *  r   r$   r   c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestSphericalOldc                 x   t        j                  d      }d}t        d|      |d   d<   t        d|      |d   d<   t        d|d      |d   d<   t        d|d      |d   d<   |d   d   }|d   d   d|d   d   z  z
  }t        |d   t        j                  dd	g      d
d       t        |d   ||gd
d       y )N)r   r   皙?r   r(   Tr         $@gA\?gc"?Afcz=g        r   rtol)r   emptyr   r   r   )r    i1nr!   inp0inp1s        r"   test_sph_inzTestSphericalOld.test_sph_in6  s    hhuo A&Aq	 A&Aq	 A$7Aq	 A$7Aq	Aq	Aq	Gc!fQi//A*?*A*C !D$3	0 	At7Cr$   c                    d}t        j                  d      }t        d|      |d<   t        d|d      |d<   t        j                  t        j                  |      |z  t        j
                  |      |z  t        j                  |      |dz  z  z
  g      }t        t        |   |dd	       t        j                  d      }t        d|      |d<   t        d|d      |d<   t        j                  d
t        z  t        |       z  |z  dt        z  t        |       z  d|z  d|dz  z  z   z  g      }t        t        |   |dd	       y )Ng      ?)r   r   Tr   r(   r   gv!>r   r   g      )r   r   r   r   r   r   r   r   r   r   r   )r    r!   sph_i0sph_i0_expectedsph_k0sph_k0_expecteds         r"   test_sph_in_kn_order0z&TestSphericalOld.test_sph_in_kn_order0G  s    $ A&q	 A$7q	((BGGAJqL$&GGAJqLAqD$@$B C6
O&qI$ A&q	 A$7q	((CF3r7N1$4$(GCGOQqS1a4Z$@$B C6
O&qIr$   c                    t        j                  d      }d}t        d|      |d   d<   t        d|      |d   d<   t        d|      |d   d<   t        d|d      |d   d<   t        d|d      |d   d<   t        d|d      |d   d<   |d   d    }|d   d   d|d   d   z  z
  }|d   d   d	|d   d   z  z
  }t        |d   g d
dd       t        |d   |||gdd       y )Nr   r   r   r   r(   r   Tr   r   r   )gkG~?gk?g)qe?r   r   )r   r   r   r   )r    s1r!   s10s11s12s         r"   test_sph_jnzTestSphericalOld.test_sph_jnW  s   XXe_1%1a1%1a1%1a161a161a161a!uQxieAhwr!uQx''eAhwr!uQx''1  : %1	. 	1S#W1Er$   c                    t        j                  d      }d}t        d|      |d   d<   t        d|      |d   d<   t        d|      |d   d<   t        d|d      |d   d<   t        d|d      |d   d<   t        d|d      |d   d<   |d   d    }|d   d    d|d   d   z  z
  }|d   d    d	|d   d   z  z
  }t        |d   g d
dd       t        |d   |||gdd       y )Nr   r   r   r(   r   Tr   r   r   )gDT@g3̱wJC@g-uAI@r   r   gA:>)r   r   r   r   )r    knr!   kn0kn1kn2s         r"   test_sph_knzTestSphericalOld.test_sph_knk  s   XXe_1%1a1%1a1%1a161a161a161a!uQxi!uQxi1a((!uQxi1a((1  7 %1	. 	1S#V!Dr$   c                     t        dd      }t        dd      }t        |ddd       t        |ddd       t        dd      dt        dd      z  z
  dz  }t        d	dd
      }t        ||dd       y )Nr   r   r   g[_$ewgiUMu>r   g&$r   r(   Tr   ga2U0*#?)r   r   )r    sy1sy2sphpysy3s        r"   test_sph_ynzTestSphericalOld.test_sph_yn  st    1c"1c"Zf1=Zf1=a%,q#*>(>>A1cd3Ua8r$   N)rT   rU   rV   r   r   r   r   r   rW   r$   r"   r   r   2  s    D"J F(E(	9r$   r   r   FTfunc                     t         j                  j                  d      }d}|j                  dd|      }|j	                  |      } ||||       } |||dz   |       }t        ||j                         y )Nl   dnUY    r   rP   )sizer   r<   )r   randomdefault_rngintegersstandard_normalr   real)r   r   rngr  r.   r   resrefs           r"   test_negative_real_gh14582r
    ss     ))

 3
4CDQ&A&A
az
*C
a2*
-CC"r$   )$r?   numpyr   numpy.testingr   r   r   r   r   r   r   r	   r
   r   r   scipy.specialr   r   r   r   scipy.integrater   r   rY   rn   r{   r   r   r   r   r   r   r   r   parametrizer
  rW   r$   r"   <module>r     s      )  = = = P P  7J 7Jt4C 4Cn% %(+J +J\2C 2Cj. . 
8!= 
83!= 38!= 83!= 3V9 V9r t}5|!-|!= >	#> 6	#r$   