
    doi[;                        S SK r S SKrS SKJr  S SKrS SKJrJrJrJ	r	J
r
JrJrJrJr  S SKJrJrJrJr  S SKJr   " S S5      r " S S	5      r " S
 S5      r " S S5      r " S S5      r " S S5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S5      r \RB                  RE                  SSS/5      \RB                  RE                  S\\\\/5      S  5       5       r#g)!    N)assert_allclose)	sincossinhcoshexpinfnanr_pi)spherical_jnspherical_ynspherical_inspherical_kn)quadc                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)TestSphericalJn   c                     [         R                  " / SQ5      n[        [        SU5      SU-  SUS-  -  -   [	        U5      -  SUS-  -  [        U5      -  -
  5        g )NQ?Gz?Gz(@^@g     J@      )nparrayr   r   r   r   selfxs     e/var/www/html/land-ocr/venv/lib/python3.13/site-packages/scipy/special/tests/test_spherical_bessel.pytest_spherical_jn_exact'TestSphericalJn.test_spherical_jn_exact   sV     HH89Q*A!Q$A.1a4A>	@    c                     [         R                  " / SQ5      nSn[        [        US-
  U5      [        US-   U5      -   SU-  S-   U-  [        X5      -  5        g N   r   r         ?      ?r*   r   r   r   r   r   r!   nr"   s      r#   $test_spherical_jn_recurrence_complex4TestSphericalJn.test_spherical_jn_recurrence_complex   T    HH%&QUA.a!eQ1GG1q!L$66	8r&   c                     [         R                  " / SQ5      nSn[        [        US-
  U5      [        US-   U5      -   SU-  S-   U-  [        X5      -  5        g Nr)   r   r*   r   r.   r/   s      r#   !test_spherical_jn_recurrence_real1TestSphericalJn.test_spherical_jn_recurrence_real   T    HH%&QUA.a!eA1FF1q!L$66	8r&   c                     Sn[         R                  " [        * [        /5      n[        [	        X5      [         R                  " SS/5      5        g N   r   )r   r   r	   r   r   r/   s      r#   test_spherical_jn_inf_real*TestSphericalJn.test_spherical_jn_inf_real&   7    HHsdC[!Q*BHHaV,<=r&   c           
      b   Sn[         R                  " [        * S-   [        S-   [        S-  /5      n[        R                  " 5          [        R
                  " SS[        5        [        [        X5      [         R                  " SS[        S-  /5      5        S S S 5        g ! , (       d  f       g = fNr+                         ?      ?ignorez%invalid value encountered in multiplyr   )	r   r   r	   warningscatch_warningsfilterwarningsRuntimeWarningr   r   r/   s      r#   test_spherical_jn_inf_complex-TestSphericalJn.test_spherical_jn_inf_complex,   |    HHsdRir3:67$$&##A>SL.!QT
9K0LM '&&   AB  
B.c                 0    [        [        SS5      S5        g )Nr   g%-@g<]3r   r   r!   s    r#   test_spherical_jn_large_arg_1-TestSphericalJn.test_spherical_jn_large_arg_15   s     	Q13JKr&   c                 0    [        [        SS5      S5        g )Nr   i'  g|	 ?rM   rN   s    r#   test_spherical_jn_large_arg_2-TestSphericalJn.test_spherical_jn_large_arg_2;   s     	Q.0FGr&   c                     [         R                  " / SQ5      nSn[        [        X5      [         R                  " / SQ5      5        g Nr   r*   r      
   d   r   )r*   r   r   r   r   r   r.   r/   s      r#   test_spherical_jn_at_zero)TestSphericalJn.test_spherical_jn_at_zeroA   1     HH*+Q*BHH5G,HIr&    N)__name__
__module____qualname____firstlineno__r$   r1   r6   r<   rH   rO   rR   rZ   __static_attributes__r]   r&   r#   r   r      s/    @88>NLHJr&   r   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestSphericalYnI   c                     [         R                  " / SQ5      n[        [        SU5      SU-  SUS-  -  -
  [	        U5      -  SUS-  -  [        U5      -  -
  5        g )Nr   r   r*   r   )r   r   r   r   r   r   r    s     r#   test_spherical_yn_exact'TestSphericalYn.test_spherical_yn_exactJ   sU     HH89Q*1qAvs1v-!Q$s1v=	?r&   c                     [         R                  " / SQ5      nSn[        [        US-
  U5      [        US-   U5      -   SU-  S-   U-  [        X5      -  5        g r5   r   r   r   r   r/   s      r#   !test_spherical_yn_recurrence_real1TestSphericalYn.test_spherical_yn_recurrence_realR   r8   r&   c                     [         R                  " / SQ5      nSn[        [        US-
  U5      [        US-   U5      -   SU-  S-   U-  [        X5      -  5        g r(   rj   r/   s      r#   $test_spherical_yn_recurrence_complex4TestSphericalYn.test_spherical_yn_recurrence_complexY   r3   r&   c                     Sn[         R                  " [        * [        /5      n[        [	        X5      [         R                  " SS/5      5        g r:   )r   r   r	   r   r   r/   s      r#   test_spherical_yn_inf_real*TestSphericalYn.test_spherical_yn_inf_real`   r>   r&   c           
      b   Sn[         R                  " [        * S-   [        S-   [        S-  /5      n[        R                  " 5          [        R
                  " SS[        5        [        [        X5      [         R                  " SS[        S-  /5      5        S S S 5        g ! , (       d  f       g = fr@   )	r   r   r	   rD   rE   rF   rG   r   r   r/   s      r#   test_spherical_yn_inf_complex-TestSphericalYn.test_spherical_yn_inf_complexf   rJ   rK   c                     [         R                  " / SQ5      nSn[        [        X5      [         R                  " UR
                  [        * 5      5        g NrV   r   )r   r   r   r   fullshaper	   r/   s      r#   test_spherical_yn_at_zero)TestSphericalYn.test_spherical_yn_at_zeroo   s6    HH*+Q*BGGAGGcT,BCr&   c                     [         R                  " / SQ5      nSn[        [        X5      [         R                  " UR
                  [        5      5        g NrV   rA   )r   r   r   r   rx   ry   r
   r/   s      r#   !test_spherical_yn_at_zero_complex1TestSphericalYn.test_spherical_yn_at_zero_complexu   s6     HH*+Q*BGGAGGS,ABr&   r]   N)r^   r_   r`   ra   rg   rk   rn   rq   rt   rz   r~   rb   r]   r&   r#   rd   rd   I   s(    ?88>NDCr&   rd   c                        \ rS rSrS rS rSrg)TestSphericalJnYnCrossProduct   c                     [         R                  " / SQ5      n[         R                  " / SQ5      n[        US-   U5      [        X5      -  [        X5      [        US-   U5      -  -
  nSUS-  -  n[	        X45        g )Nr*   rW      g?r*   rX   r*   r   r   r   r   r   r   r!   r0   r"   leftrights        r#   $test_spherical_jn_yn_cross_product_1BTestSphericalJnYnCrossProduct.test_spherical_jn_yn_cross_product_1   sj    HHYHH\"QUA&a);;Q"\!a%%;;<!Q$$r&   c                    [         R                  " / SQ5      n[         R                  " / SQ5      n[        US-   U5      [        X5      -  [        X5      [        US-   U5      -  -
  nSU-  S-   US-  -  n[	        X45        g )Nr   r   r   r   r   r   s        r#   $test_spherical_jn_yn_cross_product_2BTestSphericalJnYnCrossProduct.test_spherical_jn_yn_cross_product_2   sr    HHYHH\"QUA&a);;Q"\!a%%;;<1q!Q$$r&   r]   N)r^   r_   r`   ra   r   r   rb   r]   r&   r#   r   r      s    %%r&   r   c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
TestSphericalIn   c                     [         R                  " / SQ5      n[        [        SU5      SU-  SUS-  -  -   [	        U5      -  SUS-  -  [        U5      -  -
  5        g N)r   r   r   r   r   r*   r   )r   r   r   r   r   r   r    s     r#   test_spherical_in_exact'TestSphericalIn.test_spherical_in_exact   sT    HH01Q*1qAvtAw.1a4Q?	Ar&   c                     [         R                  " / SQ5      nSn[        [        US-
  U5      [        US-   U5      -
  SU-  S-   U-  [        X5      -  5        g r5   r   r   r   r   r/   s      r#   !test_spherical_in_recurrence_real1TestSphericalIn.test_spherical_in_recurrence_real   r8   r&   c                     [         R                  " / SQ5      nSn[        [        US-
  U5      [        US-   U5      -
  SU-  S-   U-  [        X5      -  5        g r(   r   r/   s      r#   $test_spherical_in_recurrence_complex4TestSphericalIn.test_spherical_in_recurrence_complex   sT    HH%&QUA.a!eA1FF1q!L$66	8r&   c                     Sn[         R                  " [        * [        /5      n[        [	        X5      [         R                  " [        * [        /5      5        g )NrW   )r   r   r	   r   r   r/   s      r#   test_spherical_in_inf_real*TestSphericalIn.test_spherical_in_inf_real   s9    HHsdC[!Q*BHHsdC[,ABr&   c                     Sn[         R                  " [        * S-   [        S-   [        S-  /5      n[        [	        X5      [         R                  " [        * [        [
        /5      5        g )Nr+   rA   rB   )r   r   r	   r   r   r
   r/   s      r#   test_spherical_in_inf_complex-TestSphericalIn.test_spherical_in_inf_complex   sM     HHsdRir3:67Q*BHHsdC5E,FGr&   c                     [         R                  " / SQ5      nSn[        [        X5      [         R                  " / SQ5      5        g rU   r   r/   s      r#   test_spherical_in_at_zero)TestSphericalIn.test_spherical_in_at_zero   r\   r&   r]   N)r^   r_   r`   ra   r   r   r   r   r   r   rb   r]   r&   r#   r   r      s$    A88C	HJr&   r   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestSphericalKn   c                     [         R                  " / SQ5      n[        [        SU5      [        S-  [        U* 5      -  SU-  SUS-  -  -   SUS-  -  -   -  5        g r   )r   r   r   r   r   r   r    s     r#   test_spherical_kn_exact'TestSphericalKn.test_spherical_kn_exact   sU    HH01Q*1S!WacAadFlQq!tV&;<	>r&   c                     [         R                  " / SQ5      nSn[        SUS-
  -  [        US-
  U5      -  SUS-   -  [        US-   U5      -  -
  SU-  SU-  S-   -  U-  [        X5      -  5        g )Nr)   r   r   r*   r   r   r   r   r   r/   s      r#   !test_spherical_kn_recurrence_real1TestSphericalKn.test_spherical_kn_recurrence_real   s{    HH%&1q5M,q1ua00B!a%=aRSeTUAV3VV!GQqS1WaQ 22	
r&   c                     [         R                  " / SQ5      nSn[        SUS-
  -  [        US-
  U5      -  SUS-   -  [        US-   U5      -  -
  SU-  SU-  S-   -  U-  [        X5      -  5        g )Nr)   r-   r   r*   r   r   r/   s      r#   $test_spherical_kn_recurrence_complex4TestSphericalKn.test_spherical_kn_recurrence_complex   s{    HH%&1q5M,q1ua00B!a%=aRSeTUAV3VV!GQqS1WaQ 22	
r&   c                     Sn[         R                  " [        * [        /5      n[        [	        X5      [         R                  " [        * S/5      5        g )NrW   r   )r   r   r	   r   r   r/   s      r#   test_spherical_kn_inf_real*TestSphericalKn.test_spherical_kn_inf_real   s9    HHsdC[!Q*BHHsdAY,?@r&   c                     Sn[         R                  " [        * S-   [        S-   [        S-  /5      n[        [	        X5      [         R                  " [        * S[
        /5      5        g )Nr+   rA   rB   r   )r   r   r	   r   r   r
   r/   s      r#   test_spherical_kn_inf_complex-TestSphericalKn.test_spherical_kn_inf_complex   sL    
 HHsdRir3:67Q*BHHsdAs^,DEr&   c                     [         R                  " / SQ5      nSn[        [        X5      [         R                  " UR
                  [        5      5        g rw   )r   r   r   r   rx   ry   r	   r/   s      r#   test_spherical_kn_at_zero)TestSphericalKn.test_spherical_kn_at_zero   s4    HH*+Q*BGGAGGS,ABr&   c                     [         R                  " / SQ5      nSn[        [        X5      [         R                  " UR
                  [        5      5        g r}   )r   r   r   r   rx   ry   r
   r/   s      r#   !test_spherical_kn_at_zero_complex1TestSphericalKn.test_spherical_kn_at_zero_complex   s4    HH*+Q*BGGAGGS,ABr&   r]   N)r^   r_   r`   ra   r   r   r   r   r   r   r   rb   r]   r&   r#   r   r      s)    >

AFCCr&   r   c                       \ rS rSrS r\R                  R                  S 5       r\R                  R                  S 5       r	Sr
g)SphericalDerivativesTestCase   c                    ^ ^ [        UU 4S jX#5      u  pE[        UT R                  TU5      T R                  TU5      -
  US9  g )Nc                 (   > TR                  TU 5      $ N)df)zr0   r!   s    r#   <lambda>BSphericalDerivativesTestCase.fundamental_theorem.<locals>.<lambda>   s    TWWQ]r&   )atol)r   r   f)r!   r0   abintegral	tolerances   ``    r#   fundamental_theorem0SphericalDerivativesTestCase.fundamental_theorem   s<    "#:AAq!tvva|3&	(r&   c                 *    U R                  SSS5        g )Nr   g      @      .@r   rN   s    r#   test_fundamental_theorem_07SphericalDerivativesTestCase.test_fundamental_theorem_0   s      C.r&   c                 *    U R                  SSS5        g )Nr+         ?g333333?r   rN   s    r#   test_fundamental_theorem_77SphericalDerivativesTestCase.test_fundamental_theorem_7  s      C-r&   r]   N)r^   r_   r`   ra   r   pytestmarkslowr   r   rb   r]   r&   r#   r   r      sC    ( [[/ / [[. .r&   r   c                   &    \ rS rSrS rS rS rSrg)TestSphericalJnDerivativesi  c                     [        X5      $ r   r   r!   r0   r   s      r#   r   TestSphericalJnDerivatives.f      A!!r&   c                     [        XSS9$ NT
derivativer   r   s      r#   r   TestSphericalJnDerivatives.df      AT22r&   c                     [         R                  " / SQ5      n[        [        USSS9[         R                  " / SQ5      5        g )Nr   r*   r   r   r+   r   r   Tr   r   gUUUUUU?r   r   r   r   r.   r!   r0   s     r#   test_spherical_jn_d_zero3TestSphericalJnDerivatives.test_spherical_jn_d_zero  s1    HH()Qd;!56	8r&   r]   N)r^   r_   r`   ra   r   r   r   rb   r]   r&   r#   r   r     s    "38r&   r   c                        \ rS rSrS rS rSrg)TestSphericalYnDerivativesi  c                     [        X5      $ r   r   r   s      r#   r   TestSphericalYnDerivatives.f  r   r&   c                     [        XSS9$ r   r   r   s      r#   r   TestSphericalYnDerivatives.df  r   r&   r]   Nr^   r_   r`   ra   r   r   rb   r]   r&   r#   r   r         "3r&   r   c                   &    \ rS rSrS rS rS rSrg)TestSphericalInDerivativesi  c                     [        X5      $ r   r   r   s      r#   r   TestSphericalInDerivatives.f  r   r&   c                     [        XSS9$ r   r   r   s      r#   r   TestSphericalInDerivatives.df   r   r&   c                     [         R                  " / SQ5      n[        USSS9  [        [        USSS9[         R                  " / SQ5      5        g )Nr   r   Fr   Tr   )r   r   r   r   r   s     r#   test_spherical_in_d_zero3TestSphericalInDerivatives.test_spherical_in_d_zero#  s=    HH()Qe,Qd;!56	8r&   r]   N)r^   r_   r`   ra   r   r   r  rb   r]   r&   r#   r   r     s    "38r&   r   c                        \ rS rSrS rS rSrg)TestSphericalKnDerivativesi*  c                     [        X5      $ r   r   r   s      r#   r   TestSphericalKnDerivatives.f+  r   r&   c                     [        XSS9$ r   r  r   s      r#   r   TestSphericalKnDerivatives.df.  r   r&   r]   Nr   r]   r&   r#   r  r  *  r   r&   r  c                   2    \ rS rSrS rS rS rS rS rSr	g)	TestSphericalOldi2  c                 b   [         R                  " S5      nSn[        SU5      US   S'   [        SU5      US   S'   [        SUSS9US   S'   [        SUSS9US   S'   US   S   nUS   S   SUS   S   -  -
  n[        US   [         R                  " SS	/5      S
SS9  [        US   X4/S
SS9  g )N)r   r   皙?r   r*   Tr         $@gA\?gc"?Afcz=g        r   rtol)r   emptyr   r   r   )r!   i1nr"   inp0inp1s        r#   test_sph_in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7Cr&   c                    Sn[         R                  " S5      n[        SU5      US'   [        SUSS9US'   [         R                  " [         R                  " U5      U-  [         R
                  " U5      U-  [         R                  " U5      US-  -  -
  /5      n[        [        U   USSS	9  [         R                  " S5      n[        SU5      US'   [        SUSS9US'   [         R                  " S
[        -  [        U* 5      -  U-  S[        -  [        U* 5      -  SU-  SUS-  -  -   -  /5      n[        [        U   USSS	9  g )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_order0&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                    [         R                  " S5      nSn[        SU5      US   S'   [        SU5      US   S'   [        SU5      US   S'   [        SUSS9US   S'   [        SUSS9US   S'   [        SUSS9US   S'   US   S   * nUS   S   SUS   S   -  -
  nUS   S   S	US   S   -  -
  n[        US   / S
QSSS9  [        US   X4U/SSS9  g )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_jn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#W1Er&   c                    [         R                  " S5      nSn[        SU5      US   S'   [        SU5      US   S'   [        SU5      US   S'   [        SUSS9US   S'   [        SUSS9US   S'   [        SUSS9US   S'   US   S   * nUS   S   * SUS   S   -  -
  nUS   S   * S	US   S   -  -
  n[        US   / S
QSSS9  [        US   X4U/SSS9  g )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_kn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#V!Dr&   c                     [        SS5      n[        SS5      n[        USSSS9  [        USSSS9  [        SS5      S[        SS5      -  -
  S-  n[        S	SS
S9n[        XCSSS9  g )Nr   r  r   g[_$ewgiUMu>r  g&$r   r*   Tr   ga2U0*#?)r   r   )r!   sy1sy2sphpysy3s        r#   test_sph_ynTestSphericalOld.test_sph_yn  sr    1c"1c"Zf1=Zf1=a%,q#*>(>>A1cd3a8r&   r]   N)
r^   r_   r`   ra   r  r  r&  r-  r4  rb   r]   r&   r#   r  r  2  s    D"J F(E(	9r&   r  r   FTfunc                     [         R                  R                  S5      nSnUR                  SSUS9nUR	                  US9nU" XEU S9nU" XES-   U S9n[        XgR                  5        g )Nl   dnUY    r   rX   )sizer   rA   )r   randomdefault_rngintegersstandard_normalr   real)r   r6  rngr9  r0   r   resrefs           r#   test_negative_real_gh14582rB    sm     ))

 3
4CDQ&A&A
az
*C
a2*
-CC"r&   )$rD   numpyr   numpy.testingr   r   r   r   r   r   r   r	   r
   r   r   scipy.specialr   r   r   r   scipy.integrater   r   rd   r   r   r   r   r   r   r   r  r  r   parametrizerB  r]   r&   r#   <module>rH     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&   