
    ^Mh:                     :   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"ej#        $                    dddg          ej#        $                    deeeeg          d                          Z%dS )!    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
d	S )
TestSphericalJnc                     t          j        g d          }t          t          d|          d|z  d|dz  z  z   t	          |          z  d|dz  z  t          |          z  z
             d S )NQ?Gz?Gz(@^@g     J@      )nparrayr   r   r   r   selfxs     i/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/special/tests/test_spherical_bessel.pytest_spherical_jn_exactz'TestSphericalJn.test_spherical_jn_exact   s|     H8889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             d S N   r   r         ?      ?r+   r   r    r!   r   r   r#   nr$   s      r%   $test_spherical_jn_recurrence_complexz4TestSphericalJn.test_spherical_jn_recurrence_complex   z    H%%%&&QUA..a!eQ1G1GG1q!LA$6$66	8 	8 	8 	8 	8r'   c                     t          j        g d          }d}t          t          |dz
  |          t          |dz   |          z   d|z  dz   |z  t          ||          z             d S Nr*   r   r+   r   r/   r0   s      r%   !test_spherical_jn_recurrence_realz1TestSphericalJn.test_spherical_jn_recurrence_real   z    H%%%&&QUA..a!eA1F1FF1q!LA$6$66	8 	8 	8 	8 	8r'   c                     d}t          j        t           t          g          }t          t	          ||          t          j        ddg                     d S N   r   )r    r!   r   r   r   r0   s      r%   test_spherical_jn_inf_realz*TestSphericalJn.test_spherical_jn_inf_real%   J    HsdC[!!Q**BHaV,<,<=====r'   c           
      d   d}t          j        t           dz   t          dz   t          dz  g          }t                      5 }|                    t
          d           t          t          ||          t          j        ddt          dz  g                     d d d            d S # 1 swxY w Y   d S 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+       HsdRir3:677   	NCJJ~'NOOOLA..!QT
9K0L0LMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N   AB%%B),B)c                 B    t          t          dd          d           d S )Nr   g%-@g<]3r   r   r#   s    r%   test_spherical_jn_large_arg_1z-TestSphericalJn.test_spherical_jn_large_arg_13   s%     	Q113JKKKKKr'   c                 B    t          t          dd          d           d S )Nr   i'  g|	 ?rI   rJ   s    r%   test_spherical_jn_large_arg_2z-TestSphericalJn.test_spherical_jn_large_arg_29   s%     	Q..0FGGGGGr'   c                     t          j        g d          }d}t          t          ||          t          j        g d                     d S 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?   P     H***++Q**BH5G5G5G,H,HIIIIIr'   N)__name__
__module____qualname__r&   r2   r6   r;   rE   rK   rM   rT    r'   r%   r   r      s        @ @ @8 8 88 8 8> > >N N NL L LH H HJ J J J Jr'   r   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestSphericalYnc                     t          j        g d          }t          t          d|          d|z  d|dz  z  z
  t	          |          z  d|dz  z  t          |          z  z
             d S )Nr   r   r+   r   )r    r!   r   r   r   r   r"   s     r%   test_spherical_yn_exactz'TestSphericalYn.test_spherical_yn_exactH   sw     H88899Q**1qAvs1vv-!Q$s1vv=	? 	? 	? 	? 	?r'   c                     t          j        g d          }d}t          t          |dz
  |          t          |dz   |          z   d|z  dz   |z  t          ||          z             d S 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             d S 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                     d S r9   )r    r!   r   r   r   r0   s      r%   test_spherical_yn_inf_realz*TestSphericalYn.test_spherical_yn_inf_real^   r<   r'   c           
      d   d}t          j        t           dz   t          dz   t          dz  g          }t                      5 }|                    t
          d           t          t          ||          t          j        ddt          dz  g                     d d d            d S # 1 swxY w Y   d S 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                                d S NrP   r   )r    r!   r   r   fullshaper   r0   s      r%   test_spherical_yn_at_zeroz)TestSphericalYn.test_spherical_yn_at_zerol   sM    H***++Q**BGAGcT,B,BCCCCCr'   c                     t          j        g d          }d}t          t          ||          t          j        |j        t                               d S NrP   r?   )r    r!   r   r   ri   rj   r   r0   s      r%   !test_spherical_yn_at_zero_complexz1TestSphericalYn.test_spherical_yn_at_zero_complexr   sM     H***++Q**BGAGS,A,ABBBBBr'   N)
rV   rW   rX   r]   r`   rb   rd   rf   rk   rn   rY   r'   r%   r[   r[   G   s        ? ? ?8 8 88 8 8> > >N N ND D DC C C C Cr'   r[   c                       e Zd Zd Zd ZdS )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	          ||           d S )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~   s    HYYYH\\\""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	          ||           d S )Nrr   rt   r   r   ru   rv   s        r%   $test_spherical_jn_yn_cross_product_2zBTestSphericalJnYnCrossProduct.test_spherical_jn_yn_cross_product_2   s    HYYYH\\\""QUA&&a););;Q""\!a%%;%;;<1q!Q$e$$$$$r'   N)rV   rW   rX   ry   r{   rY   r'   r%   rp   rp   }   s2        % % %% % % % %r'   rp   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestSphericalInc                     t          j        g d          }t          t          d|          d|z  d|dz  z  z   t	          |          z  d|dz  z  t          |          z  z
             d S 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   sz    H00011Q**1qAvtAww.1a4Q?	A 	A 	A 	A 	Ar'   c                     t          j        g d          }d}t          t          |dz
  |          t          |dz   |          z
  d|z  dz   |z  t          ||          z             d S 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             d S r)   r   r0   s      r%   $test_spherical_in_recurrence_complexz4TestSphericalIn.test_spherical_in_recurrence_complex   sz    H%%%&&QUA..a!eA1F1FF1q!LA$6$66	8 	8 	8 	8 	8r'   c                     d}t          j        t           t          g          }t          t	          ||          t          j        t           t          g                     d S )NrQ   )r    r!   r   r   r   r0   s      r%   test_spherical_in_inf_realz*TestSphericalIn.test_spherical_in_inf_real   sL    HsdC[!!Q**BHsdC[,A,ABBBBBr'   c                     d}t          j        t           dz   t          dz   t          dz  g          }t          t	          ||          t          j        t           t          t
          g                     d S )Nr,   r?   r@   )r    r!   r   r   r   r   r0   s      r%   test_spherical_in_inf_complexz-TestSphericalIn.test_spherical_in_inf_complex   s`     HsdRir3:677Q**BHsdC5E,F,FGGGGGr'   c                     t          j        g d          }d}t          t          ||          t          j        g d                     d S 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 A A8 8 88 8 8C C C	H 	H 	HJ J J J Jr'   r}   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	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             d S r   )r    r!   r   r   r   r   r"   s     r%   test_spherical_kn_exactz'TestSphericalKn.test_spherical_kn_exact   su    H00011Q**1S!WW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             d S )Nr*   r   r   r+   r   r    r!   r   r   r0   s      r%   !test_spherical_kn_recurrence_realz1TestSphericalKn.test_spherical_kn_recurrence_real   s    H%%%&&1q5M,q1ua000B!a%=aRSeTUAVAV3VV!GQqS1WaQ 2 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             d S )Nr*   r.   r   r+   r   r   r0   s      r%   $test_spherical_kn_recurrence_complexz4TestSphericalKn.test_spherical_kn_recurrence_complex   s    H%%%&&1q5M,q1ua000B!a%=aRSeTUAVAV3VV!GQqS1WaQ 2 22	
 	
 	
 	
 	
r'   c                     d}t          j        t           t          g          }t          t	          ||          t          j        t           dg                     d S )NrQ   r   )r    r!   r   r   r   r0   s      r%   test_spherical_kn_inf_realz*TestSphericalKn.test_spherical_kn_inf_real   sL    HsdC[!!Q**BHsdAY,?,?@@@@@r'   c                     d}t          j        t           dz   t          dz   t          dz  g          }t          t	          ||          t          j        t           dt
          g                     d S )Nr,   r?   r@   r   )r    r!   r   r   r   r   r0   s      r%   test_spherical_kn_inf_complexz-TestSphericalKn.test_spherical_kn_inf_complex   s_    
 HsdRir3:677Q**BHsdAs^,D,DEEEEEr'   c                     t          j        g d          }d}t          t          ||          t          j        |j        t                               d S rh   )r    r!   r   r   ri   rj   r   r0   s      r%   test_spherical_kn_at_zeroz)TestSphericalKn.test_spherical_kn_at_zero   sK    H***++Q**BGAGS,A,ABBBBBr'   c                     t          j        g d          }d}t          t          ||          t          j        |j        t                               d S rm   )r    r!   r   r   ri   rj   r   r0   s      r%   !test_spherical_kn_at_zero_complexz1TestSphericalKn.test_spherical_kn_at_zero_complex   sK    H***++Q**BGAGS,A,ABBBBBr'   N)
rV   rW   rX   r   r   r   r   r   r   r   rY   r'   r%   r   r      s        > > >
 
 

 
 
A A AF F FC C CC C C C Cr'   r   c                   h    e Zd Zd Zej        j        d             Zej        j        d             ZdS )SphericalDerivativesTestCasec                      t           fd||          \  }}t          |                     |                               |          z
  |           d S )Nc                 0                         |           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   sm    "#:#:#:#:#:AqAA)q!tvva||3&	( 	( 	( 	( 	( 	(r'   c                 4    |                      ddd           d S )Nr   g      @      .@r   rJ   s    r%   test_fundamental_theorem_0z7SphericalDerivativesTestCase.test_fundamental_theorem_0   s       C.....r'   c                 4    |                      ddd           d S )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      se        ( ( ( [/ / / [. . . . .r'   r   c                        e Zd Zd Zd Zd ZdS )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222r'   c                     t          j        g d          }t          t          |dd          t          j        g d                     d S )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  sY    H((())Qd;;;!5!5!566	8 	8 	8 	8 	8r'   N)rV   rW   rX   r   r   r   rY   r'   r%   r   r     sA        " " "3 3 38 8 8 8 8r'   r   c                       e Zd Zd Zd ZdS )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     2        " " "3 3 3 3 3r'   r   c                        e Zd Zd Zd Zd ZdS )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                     d S )Nr   r   Fr   Tr   )r    r!   r   r   r   s     r%   test_spherical_in_d_zeroz3TestSphericalInDerivatives.test_spherical_in_d_zero   sn    H((())Qe,,,,Qd;;;!5!5!566	8 	8 	8 	8 	8r'   N)rV   rW   rX   r   r   r   rY   r'   r%   r   r     sA        " " "3 3 38 8 8 8 8r'   r   c                       e Zd Zd Zd ZdS )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dS )TestSphericalOldc                    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
           d S )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    huoo A&&Aq	 A&&Aq	 A$777Aq	 A$777Aq	Aq	Aq	Gc!fQi//!#a&3H0G3I *J *JJL	N 	N 	N!#a&$tR8888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          |         |           d S )
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  sH   $ A&&q	 A$777q	(BGAJJqL$&GAJJqLAqD$@$B C C!"V*o>>>$ A&&q	 A$777q	(CF3r77N1$4$(GCGGOQqS1a4Z$@$B C C!"V*o>>>>>r'   c                 n   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           d S )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  sN   Xe__1%%1a1%%1a1%%1a16661a16661a16661a!uQxieAhwr!uQx''eAhwr!uQx''!"Q% )@ )@ )@@B	D 	D 	D 	""Q%Sb99999r'   c                 r   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           d S )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  sR   Xe__1%%1a1%%1a1%%1a16661a16661a16661a!uQxi!uQxi1a((!uQxi1a((!"Q% )@ )@ )@@B	D 	D 	D 	""Q%Sa8888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           d S )Nr   r   r   g[_$ewrQ   g&$r   r+   Tr      )r   r   )r#   sy1sy2sphpysy3s        r%   test_sph_ynzTestSphericalOld.test_sph_yny  s    1c""1c""C
1---C
1---a%%,q#*>*>(>>A1cd333Ca(((((r'   N)rV   rW   rX   r   r   r   r   r   rY   r'   r%   r   r   /  s_        9 9 9 ? ? ? : : :&9 9 9&) ) ) ) )r'   r   r   FTfunc                 ,   t           j                            d          }d}|                    dd|          }|                    |          } ||||           } |||dz   |           }t           j                            ||j                   d S )Nl   dnUY    r   rR   )sizer   r?   )r    randomdefault_rngintegersstandard_normaltestingr   real)r   r   rngr  r1   r   resrefs           r%   test_negative_real_gh14582r    s     )

 3
4
4CDQ&&A&&A
#az
*
*
*C
#a2*
-
-
-CJsCH-----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   r   parametrizer  rY   r'   r%   <module>r     s8      I I I I I I I I I I I I  = = = = = = = = = = = = = = = = = = = = = = P P P P P P P P P P P P            6J 6J 6J 6J 6J 6J 6J 6Jr3C 3C 3C 3C 3C 3C 3C 3Cl% % % % % % % %(+J +J +J +J +J +J +J +J\2C 2C 2C 2C 2C 2C 2C 2Cj. . . . . . . . 
8 
8 
8 
8 
8!= 
8 
8 
83 3 3 3 3!= 3 3 38 8 8 8 8!= 8 8 83 3 3 3 3!= 3 3 3R) R) R) R) R) R) R) R)j t}55|!-|!= > >	. 	.> > 65	. 	. 	.r'   