
    tKg*8                     `   d dl Zd dlmZmZmZ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"y)    N)assert_almost_equalassert_allcloseassert_array_almost_equalsuppress_warnings)	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     m/home/alanp/www/video.onchill/myenv/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/   r0   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   r0   s      r%   test_spherical_jn_inf_realz*TestSphericalJn.test_spherical_jn_inf_real%   9    HHsdC[!Q*BHHaV,<=r'   c           
      4   d}t        j                  t         dz   t        dz   t        dz  g      }t               5 }|j	                  t
        d       t        t        ||      t        j                  ddt        dz  g             d d d        y # 1 sw Y   y xY wNr,                         ?      ?z%invalid value encountered in multiplyr   )r    r!   r   r   filterRuntimeWarningr   r   r#   r1   r$   sups       r%   test_spherical_jn_inf_complexz-TestSphericalJn.test_spherical_jn_inf_complex+   r    HHsdRir3:67 CJJ~'NOLA.!QT
9K0LM !     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_13   s     	Q13JKr'   c                 0    t        t        dd      d       y )Nr   i'  g|	 ?rI   rJ   s    r%   test_spherical_jn_large_arg_2z-TestSphericalJn.test_spherical_jn_large_arg_29   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/   r0   s      r%   test_spherical_jn_at_zeroz)TestSphericalJn.test_spherical_jn_at_zero?   3     HH*+Q*BHH5G,HIr'   N)__name__
__module____qualname__r&   r2   r6   r;   rE   rK   rM   rT    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_exactH   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 r5   r    r!   r   r   r0   s      r%   !test_spherical_yn_recurrence_realz1TestSphericalYn.test_spherical_yn_recurrence_realP   r7   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_   r0   s      r%   $test_spherical_yn_recurrence_complexz4TestSphericalYn.test_spherical_yn_recurrence_complexW   r3   r'   c                     d}t        j                  t         t        g      }t        t	        ||      t        j                  ddg             y r9   )r    r!   r   r   r   r0   s      r%   test_spherical_yn_inf_realz*TestSphericalYn.test_spherical_yn_inf_real^   r<   r'   c           
      4   d}t        j                  t         dz   t        dz   t        dz  g      }t               5 }|j	                  t
        d       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   rA   rB   r   r   rC   s       r%   test_spherical_yn_inf_complexz-TestSphericalYn.test_spherical_yn_inf_complexd   rF   rG   c                     t        j                  g d      }d}t        t        ||      t        j                  |j
                  t                      y NrP   r   )r    r!   r   r   fullshaper   r0   s      r%   test_spherical_yn_at_zeroz)TestSphericalYn.test_spherical_yn_at_zerol   s8    HH*+Q*BGGAGGcT,BCr'   c                     t        j                  g d      }d}t        t        ||      t        j                  |j
                  t                     y NrP   r?   )r    r!   r   r   ri   rj   r   r0   s      r%   !test_spherical_yn_at_zero_complexz1TestSphericalYn.test_spherical_yn_at_zero_complexr   s8     HH*+Q*BGGAGGS,ABr'   N)
rV   rW   rX   r]   r`   rb   rd   rf   rk   rn   rY   r'   r%   r[   r[   G   s(    ?88>NDCr'   r[   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+   rQ      g?r+   rR   r+   r   r    r!   r   r   r   r#   r1   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 )Nrr   rt   r   r   ru   rv   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)rV   rW   rX   ry   r{   rY   r'   r%   rp   rp   }   s    %%r'   rp   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 r5   r    r!   r   r   r0   s      r%   !test_spherical_in_recurrence_realz1TestSphericalIn.test_spherical_in_recurrence_real   r7   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   r0   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 )NrQ   )r    r!   r   r   r   r0   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   r0   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 rO   r   r0   s      r%   test_spherical_in_at_zeroz)TestSphericalIn.test_spherical_in_at_zero   rU   r'   N)	rV   rW   rX   r   r   r   r   r   r   rY   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   r0   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   r0   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 )NrQ   r   )r    r!   r   r   r   r0   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   r0   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 rh   )r    r!   r   r   ri   rj   r   r0   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 rm   )r    r!   r   r   ri   rj   r   r0   s      r%   !test_spherical_kn_at_zero_complexz1TestSphericalKn.test_spherical_kn_at_zero_complex   s6    HH*+Q*BGGAGGS,ABr'   N)
rV   rW   rX   r   r   r   r   r   r   r   rY   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)zr1   r#   s    r%   <lambda>zBSphericalDerivativesTestCase.fundamental_theorem.<locals>.<lambda>   s    TWWQ]r'   )atol)r   r   f)r#   r1   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   rJ   s    r%   test_fundamental_theorem_0z7SphericalDerivativesTestCase.test_fundamental_theorem_0   s      C.r'   c                 *    | j                  ddd       y )Nr,         ?g333333?r   rJ   s    r%   test_fundamental_theorem_7z7SphericalDerivativesTestCase.test_fundamental_theorem_7   s      C-r'   N)	rV   rW   rX   r   pytestmarkslowr   r   rY   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#   r1   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#   r1   s     r%   test_spherical_jn_d_zeroz3TestSphericalJnDerivatives.test_spherical_jn_d_zero  s1    HH()Qd;!56	8r'   N)rV   rW   rX   r   r   r   rY   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rV   rW   rX   r   r   rY   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)rV   rW   rX   r   r   r   rY   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   rY   r'   r%   r   r   '  r   r'   r   c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestSphericalOldc                 p   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
       t        |d   ||gd
       y )N)r   r   皙?r   r+   Tr         $@gA\?gc"?r-   )r    emptyr   r   r!   )r#   i1nr$   inp0inp1s        r%   test_sph_inzTestSphericalOld.test_sph_in3  s    hhuo A&Aq	 A&Aq	 A$7Aq	 A$7Aq	Aq	Aq	Gc!fQi//!#a&3H0G3I *JJL	N!#a&$tR8r'   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        |   |       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        |   |       y )
Ng      ?)r   r   Tr   r+   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_order0C  s   $ A&q	 A$7q	((BGGAJqL$&GGAJqLAqD$@$B C!"V*o>$ A&q	 A$7q	((CF3r7N1$4$(GCGOQqS1a4Z$@$B C!"V*o>r'   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       t        |d   |||gd       y )Nr   r   r   r   r+   r   Tr   r   r   )gkG~?gk?g)qe?r-   )r    r   r   r   )r#   s1r$   s10s11s12s         r%   test_sph_jnzTestSphericalOld.test_sph_jnS  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''!"Q% )@@B	D 	""Q%Sb9r'   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       t        |d   |||gd       y )Nr   r   r   r+   r   Tr   r   r   )gDT@g3̱wJC@g-uAI@r-   	   )r    r   r   r   )r#   knr$   kn0kn1kn2s         r%   test_sph_knzTestSphericalOld.test_sph_knf  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((!"Q% )@@B	D 	""Q%Sa8r'   c                     t        dd      }t        dd      }t        |dd       t        |dd       t        dd      dt        dd      z  z
  dz  }t        ddd	
      }t        ||d       y )Nr   r   r   g[_$ewrQ   g&$r   r+   Tr      )r   r   )r#   sy1sy2sphpysy3s        r%   test_sph_ynzTestSphericalOld.test_sph_yny  sn    1c"1c"C
1-C
1-a%,q#*>(>>A1cd3Ca(r'   N)rV   rW   rX   r   r   r   r   r   rY   r'   r%   r   r   /  s    9 ? :&9&)r'   r   )#numpyr    numpy.testingr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   scipy.specialr   r   r   r   scipy.integrater   r   r[   rp   r}   r   r   r   r   r   r   r   rY   r'   r%   <module>r     s    I I  = = = P P  6J 6Jr3C 3Cl% %(+J +J\2C 2Cj. . 
8!= 
83!= 38!= 83!= 3R) R)r'   