
    Cpj                     :   S SK r S SKrS SKrS SKrS SKJrJr  S SKJ	r	  S SK
JrJrJrJrJr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 rSSS.S jrSSS.S jrSSS.S jrSSS.S jrSSS.S jrSSS.S jrSSS.S jrSSS.S jrSSS.S jr SSS.S jr!SSS.S jr"SSS.S  jr#SSS.S! jr$SSS.S" jr%SSS.S# jr&SSS.S$ jr'SSS.S% jr(SSS.S& jr)SSS.S' jr*SSS.S( jr+SSS.S) jr,SSS.S* jr-SSS.S+ jr.SSS.S, jr/SSS.S- jr0S{S. jr1SSS.S/ jr2SSS.S0 jr3SSS.S1 jr4SSS.S2 jr5SSS.S3 jr6SSS.S4 jr7SSS.S5 jr8SSS.S6 jr9SSS.S7 jr:SSS.S8 jr;SSS.S9 jr<SSS.S: jr=SSS.S; jr>SSS.S< jr?SSS.S= jr@SSS.S> jrASSS.S? jrBSSS.S@ jrCSSS.SA jrDSSS.SB jrESSS.SC jrFSSS.SD jrGSSS.SE jrHSSS.SF jrISSS.SG jrJSH rKSI rLSJ rMSK rNSL rOSM rPSN rQSO rRSP rSSQ rTSR rUSS rVST rWSU rXSV rYSW rZSX r[SY r\SZ r]S[ r^S\ r_S] r`S^ raS_ rbS` rcSa rdSb reSc rfSd rgSe rhSf riSg rjSh rkSi rlSj rmSk rnSl roSm rpSn rqSo rrSp rsSq rtSr ruSs rvSt rwSu rxSv rySw rzSx r{Sy r|Sz r}g)|    N)assert_equalassert_allclose)special)
legendre_plegendre_p_allassoc_legendre_passoc_legendre_p_allsph_legendre_psph_legendre_p_allc                       \ rS rSrS rSrg)TestLegendre   c                    [         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[        UR                  S/5        [        UR                  SS/5        [	        UR                  [
        R                  " / SQ5      S-  S	SS
9  [	        UR                  [
        R                  " / SQ5      S-  SSS
9  [	        UR                  [
        R                  " / SQ5      S-  SSS
9  [	        UR                  [
        R                  " / SQ5      S-  SSS
9  g )Nr                  )r   r   g       @g7QE=atolrtol)r   r   r   v!>)#   r   ir   r   g       @)?   r   ir   r   r   )r   legendrer   cr   nparray)selfleg0leg1leg2leg3leg4leg5s          ]/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/scipy/special/tests/test_legendre.pytest_legendreTestLegendre.test_legendre   s   """"""TVVaS!TVVaU# 4S 8$1	. 7 ;#!	-); <S @#!	-)? @ D#!	-     N)__name__
__module____qualname____firstlineno__r)   __static_attributes__r,   r+   r(   r   r      s    -r+   r   c                       \ rS rSr\R
                  R                  S/ SQ5      S 5       r\R
                  R                  S/ SQ5      \R
                  R                  S/ SQ5      S 5       5       rS	r	g
)TestLegendreP"   shape
   r   	   r   r      c                    [         R                  R                  S5      nUR                  SSU5      nUR	                  SSU5      n[        X4SS9u  pVnUR                  U:X  d   eUR                  UR                  :X  d   eUR                  UR                  :X  d   eSXD-  -
  U-  SU-  U-  -
  X3S-   -  U-  -   n[         R                  R                  USSS	9  g )
N  r   d   r   r   r   diff_n绽|=r   )	r   randomdefault_rngintegersuniformr   r5   testingr   )	r!   r5   rngnxpp_jacp_hesserrs	            r(   test_odeTestLegendreP.test_ode#   s    ii##D)LLC'KKAu%%a15&ww%{{agg%%%||u{{***15yF"QUU]2Qa%[1_D


""3"6r+   n_maxr   r   r             x_shapec           
      Z   [         R                  R                  S5      nUR                  SSU5      n[	        XSS9u  pVn[         R
                  " US-   5      n[         R                  " U[        [        SUR                  S-   5      5      S9nUR                  [        U5      4UR                  -   :X  d   eUR                  UR                  :X  d   eUR                  UR                  :X  d   eSXD-  -
  U-  SU-  U-  -
  XS-   -  U-  -   n	[         R                  R                  U	SSS	9  g )
Nr>   r   r   r   r@   axisr   rB   rC   )r   rD   rE   rG   r   arangeexpand_dimstuplerangendimr5   lenrH   r   )
r!   rR   rW   rI   rK   rL   rM   rN   rJ   rO   s
             r(   test_all_odeTestLegendreP.test_all_ode3   s    ii##D)KKAw')%1=&IIeai NN1U5AFFQJ+?%@Aww3q6)agg----{{agg%%%||u{{***15yF"QUU]2Qa%[1_D


""3"6r+   r,   N)
r-   r.   r/   r0   pytestmarkparametrizerP   ra   r1   r,   r+   r(   r3   r3   "   sh    [[W&@A7 B7 [[W&:;[[Y(BC7 D <7r+   r3   c                      \ rS rSrS r\R                  R                  S/ SQ5      \R                  R                  SSS/5      \R                  R                  SS	S
/5      S 5       5       5       r\R                  R                  S/ SQ5      \R                  R                  SSS/5      S 5       5       r	\R                  R                  S/ SQ5      S 5       r
\R                  R                  S/ SQ5      \R                  R                  SSS/5      S 5       5       r\R                  R                  SS	/5      \R                  R                  SS
/5      \R                  R                  SSS/5      S 5       5       5       r\R                  R                  S\R                  " SS5      5      S 5       r\R                  R                  S\R                  " SS5      5      S 5       rSrg)TestAssocLegendrePF   c                    [         R                  " / SQ5      n[        U5      n[        SSU5      n[	        [         R
                  " U5      U5        [        U5      n[        SSU5      n[	        [         R
                  " U5      U5        g )N)r   g      r         ?r   r   r   r   )r   r    assoc_legendre_p_1_0r   r   squeezeassoc_legendre_p_3_0)r!   zexpectedresults       r(   test_assoc_legendre_gh23101.TestAssocLegendreP.test_assoc_legendre_gh23101G   sg    HH()'*!!Q*

6*H5'*!!Q*

6*H5r+   r5   r7   r9   )r   r   r<   r8   m_maxr   r   rR   r<   r8   c                    [         R                  R                  S5      nUR                  SSU5      n[	        X#USS9u  pgn[         R
                  " US-   5      n	[         R                  " U	[        [        SUR                  S-   5      5      S9n	[         R                  " [         R
                  " US-   5      [         R
                  " U* S5      /5      n
[         R                  " U
S	[        [        SUR                  S-   5      5      -   S9n
[         R                  " US
S9n[        XUSS9u  pn[         R                  R                  X5        [         R                  R                  X5        [         R                  R                  X5        g )Nr>   GzGz?r   r@   r   rY   r   r   r   r   )r   rD   rE   rG   r	   r[   r\   r]   r^   r_   concatenater   rH   r   )r!   r5   rR   rt   rI   rK   p_all	p_all_jac
p_all_hessrJ   mrL   rM   rN   s                 r(   	test_lpmnTestAssocLegendreP.test_lpmnQ   s&    ii##D)KKtU+ q; 	%* IIeai NN1U5AFFQJ+?%@ANNBIIeai0"))UFA2FGHNN1TE%166A:2F,G%GHNN1V,+A!A>&


""1,


""54


""66r+   normTFc           	         [         R                  R                  S5      nUR                  SSU5      nUR                  SSU5      nUR	                  SSU5      n[        XEXbSS9u  pxn	UR                  U:X  d   eUR                  UR                  :X  d   eU	R                  UR                  :X  d   e[         R                  R                  SXf-  -
  U	-  SU-  U-  XDS-   -  XU-  SXf-  -
  -  -
  U-  -
  S	S
S9  g )Nr>   r   r8   r   r   r   r   rA   h㈵>:0yE>r   r   )	r   rD   rE   rF   rG   r   r5   rH   r   )
r!   r5   r   rI   rJ   r~   rK   rL   rM   rN   s
             r(   rP   TestAssocLegendreP.test_odeh   s     ii##D)LLB&LLb%(KKAu%+A!qI&ww%{{agg%%%||u{{***


""AI#7EEMQa%[15AI+>>!CCU 	# 	$r+   r6   c                    [         R                  R                  S5      nSnSnUR                  SSU5      n[	        X4USS9u  pgn[         R
                  " [         R                  " US-   5      [         R                  " U* S5      /5      n	[         R                  " US-   5      n
[         R                  " U
[        [        SUR                  S-   5      5      S	9n
[         R                  " U	S
[        [        SUR                  S-   5      5      -   S	9n	[         R                  R                  SXU-  -
  U-  SU-  U-  XS-   -  X-  SXU-  -
  -  -
  U-  -
  SSS9  g )Nr>      rv   rw   r   r@   r   r   rY   rx   r   r   r   )r   rD   rE   rG   r	   rz   r[   r\   r]   r^   r_   rH   r   )r!   r5   rI   rR   rt   rK   rL   rM   rN   r~   rJ   s              r(   test_allTestAssocLegendreP.test_all{   s'   ii##D)KKtU+/aJ&NNBIIeai0"))UFA2FGHIIeai NN1U5AFFQJ+?%@ANN1TE%166A:2F,G%GH


""AI#7EEMQa%[15AI+>>!CCU 	# 	$r+   c                    [         R                  R                  S5      nUR                  SSU5      n[	        SSXBSS9u  pV[         R
                  R                  US   [        XBS95        [         R
                  R                  US	   S
5        [         R
                  R                  US   S
5        [         R
                  R                  US   S
5        [         R
                  R                  US   S
5        [         R
                  R                  US   S
5        [         R
                  R                  US   S
5        [         R
                  R                  US   S
5        [         R
                  R                  US   [        XBS95        [         R
                  R                  US   [        XBS95        [         R
                  R                  US   S
5        [         R
                  R                  US   S
5        [         R
                  R                  US   S
5        [         R
                  R                  US   S
5        [         R
                  R                  US   S
5        [         R
                  R                  US   S
5        [         R
                  R                  US   [        XBS95        [         R
                  R                  US   [        XBS95        [         R
                  R                  US   [        XBS95        [         R
                  R                  US   [        XBS95        [         R
                  R                  US   S
5        [         R
                  R                  US   S
5        [         R
                  R                  US   S
5        [         R
                  R                  US    S
5        [         R
                  R                  US!   [        XBS95        [         R
                  R                  US"   [        XBS95        [         R
                  R                  US#   [!        XBS95        [         R
                  R                  US$   [#        XBS95        [         R
                  R                  US%   [%        XBS95        [         R
                  R                  US&   ['        XBS95        [         R
                  R                  US'   S
5        [         R
                  R                  US(   S
5        [         R
                  R                  US)   [)        XBS95        [         R
                  R                  US*   [+        XBS95        [         R
                  R                  US+   [-        XBS95        [         R
                  R                  US,   [/        XBS95        [         R
                  R                  US-   [1        XBS95        [         R
                  R                  US.   [3        XBS95        [         R
                  R                  US/   [5        XBS95        [         R
                  R                  US0   [7        XBS95        [         R
                  R                  US1   [9        XBS95        [         R
                  R                  US2   [;        XBS95        [         R
                  R                  US3   [=        XBS95        [         R
                  R                  US4   [?        XBS95        [         R
                  R                  US   [A        XBS95        [         R
                  R                  US	   S
5        [         R
                  R                  US   S
5        [         R
                  R                  US   S
5        [         R
                  R                  US   S
5        [         R
                  R                  US5   S
5        [         R
                  R                  US   S
5        [         R
                  R                  US   S
5        [         R
                  R                  US   S
5        [         R
                  R                  US   [C        XBS95        [         R
                  R                  US   [E        XBS95        [         R
                  R                  US   S
5        [         R
                  R                  US   S
5        [         R
                  R                  US   S
5        [         R
                  R                  US   S
5        [         R
                  R                  US   S
5        [         R
                  R                  US   S
5        [         R
                  R                  US   [G        XBS95        [         R
                  R                  US   [I        XBS95        [         R
                  R                  US   [K        XBS95        [         R
                  R                  US   [M        XBS95        [         R
                  R                  US   S
5        [         R
                  R                  US   S
5        [         R
                  R                  US   S
5        [         R
                  R                  US    S
5        [         R
                  R                  US!   [O        XBS95        [         R
                  R                  US"   [Q        XBS95        [         R
                  R                  US#   [S        XBS95        [         R
                  R                  US$   [U        XBS95        [         R
                  R                  US%   [W        XBS95        [         R
                  R                  US&   [Y        XBS95        [         R
                  R                  US'   S
5        [         R
                  R                  US(   S
5        [         R
                  R                  US)   [[        XBS95        [         R
                  R                  US*   []        XBS95        [         R
                  R                  US+   [_        XBS95        [         R
                  R                  US,   [a        XBS95        [         R
                  R                  US-   [c        XBS95        [         R
                  R                  US.   [e        XBS95        [         R
                  R                  US/   [g        XBS95        [         R
                  R                  US0   [i        XBS95        [         R
                  R                  US1   [k        XBS95        [         R
                  R                  US2   [m        XBS95        [         R
                  R                  US3   [o        XBS95        [         R
                  R                  US4   [q        XBS95        g )6Nr>   rv   rw   r   r   r   r   r   r   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )9r   rD   rE   rG   r	   rH   r   assoc_legendre_p_0_0rk   assoc_legendre_p_1_1assoc_legendre_p_1_m1assoc_legendre_p_2_0assoc_legendre_p_2_1assoc_legendre_p_2_2assoc_legendre_p_2_m2assoc_legendre_p_2_m1rm   assoc_legendre_p_3_1assoc_legendre_p_3_2assoc_legendre_p_3_3assoc_legendre_p_3_m3assoc_legendre_p_3_m2assoc_legendre_p_3_m1assoc_legendre_p_4_0assoc_legendre_p_4_1assoc_legendre_p_4_2assoc_legendre_p_4_3assoc_legendre_p_4_4assoc_legendre_p_4_m4assoc_legendre_p_4_m3assoc_legendre_p_4_m2assoc_legendre_p_4_m1assoc_legendre_p_0_0_jacassoc_legendre_p_1_0_jacassoc_legendre_p_1_1_jacassoc_legendre_p_1_m1_jacassoc_legendre_p_2_0_jacassoc_legendre_p_2_1_jacassoc_legendre_p_2_2_jacassoc_legendre_p_2_m2_jacassoc_legendre_p_2_m1_jacassoc_legendre_p_3_0_jacassoc_legendre_p_3_1_jacassoc_legendre_p_3_2_jacassoc_legendre_p_3_3_jacassoc_legendre_p_3_m3_jacassoc_legendre_p_3_m2_jacassoc_legendre_p_3_m1_jacassoc_legendre_p_4_0_jacassoc_legendre_p_4_1_jacassoc_legendre_p_4_2_jacassoc_legendre_p_4_3_jacassoc_legendre_p_4_4_jacassoc_legendre_p_4_m4_jacassoc_legendre_p_4_m3_jacassoc_legendre_p_4_m2_jacassoc_legendre_p_4_m1_jac)r!   r5   r   rI   rK   rL   rM   s          r(   test_specific TestAssocLegendreP.test_specific   s2
    ii##D)KKtU+'1a1E


""1T7 .	0


""1T7A.


""1T7A.


""1T7A.


""1T7A.


""1U8Q/


""1U8Q/


""1U8Q/


""1T7 .	0


""1T7 .	0


""1T7A.


""1T7A.


""1T7A.


""1U8Q/


""1U8Q/


""1U8Q/


""1U8!!/	1 	

""1T7 .	0


""1T7 .	0


""1T7 .	0


""1T7A.


""1T7A.


""1U8Q/


""1U8Q/


""1U8!!/	1


""1U8!!/	1 	

""1T7 .	0


""1T7 .	0


""1T7 .	0


""1T7 .	0


""1T7A.


""1U8Q/


""1U8!!/	1


""1U8!!/	1


""1U8!!/	1 	

""1T7 .	0


""1T7 .	0


""1T7 .	0


""1T7 .	0


""1T7 .	0


""1U8!!/	1


""1U8!!/	1


""1U8!!/	1


""1U8!!/	1 	

""5;$Q2	4


""5;2


""5;2


""5;2


""5;2


""5<3


""5<3


""5<3


""5<3


""5;$Q2	4


""5;$Q2	4


""5;2


""5;2


""5;2


""5<3


""5<3


""5<3


""5<%a3	5 	

""5;$Q2	4


""5;$Q2	4


""5;$Q2	4


""5;2


""5;2


""5<3


""5<3


""5<%a3	5


""5<%a3	5 	

""5;$Q2	4


""5;$Q2	4


""5;$Q2	4


""5;$Q2	4


""5;2


""5<3


""5<%a3	5


""5<%a3	5


""5<%a3	5 	

""5;$Q2	4


""5;$Q2	4


""5;$Q2	4


""5;$Q2	4


""5;$Q2	4


""5<%a3	5


""5<%a3	5


""5<%a3	5


""5<%a3	5r+   rK   r   r   c                 l   [        X!USS9u  pE[        R                  " US-   5      n[        R                  R	                  US S 2S4   [        X6S-   5      U-  US-   -  S-  5        [        R                  R	                  US S 2S4   [        R                  " US:  [        X65      [        R                  -  S5      5        [        R                  R	                  US S 2S4   [        R                  " US:  [        X6S-   5      * US-   -  US-   -  U-  US-
  -  S-  S5      5        [        R                  R	                  US S 2S4   [        R                  " US:  [        X6S-   5      * S-  S5      5        [        R                  R	                  US S 2S4   [        R                  " US:  [        X65      * [        R                  -  S5      5        [        SUS-   5       HR  n[        R                  R	                  US S 2U4   S5        [        R                  R	                  US S 2U* 4   S5        MT     g )	Nr   r@   r   r   r   r   r   r   )	r	   r   r[   rH   r   powwhereinfr^   )r!   rt   rR   rK   rL   rM   rJ   r~   s           r(   test_all_limits"TestAssocLegendreP.test_all_limits-  s    (aBIIeai 


""5A;q5MAQ'!+	-


""5A;HHQ!VSY/3	5


""5A;HHQ!Vc!Um^q1u5Q?!Cq1uMPQQSTU	W


""5B<HHQ!Vc!Um^a/3	5


""5B<HHQ!Vc!iZ"&&0!4	6 q%!)$AJJ&&uQT{A6JJ&&uQU|Q7 %r+   rJ   r   r   c                     Sn[         R                  " SSS5      n[        XUSS9n[        XUSS9n[         R                  " SU-  S-   S-  5      n[         R                  R                  XVU-  5        g 	Nr   r   r   e   Fr   Tr   )r   linspacer   sqrtrH   r   )r!   rJ   r~   rn   rL   p_normfactors          r(   test_assoc_legendre_p_norm_m00TestAssocLegendreP.test_assoc_legendre_p_norm_m0D  sg     KKAs#Q151!!5!a%!)q)


""6A:6r+   c                 z   Sn[         R                  " SSS5      n[        XUSS9SS US-   2SS S 24   n[        XUSS9SS US-   2SS S 24   n[         R                  " S[         R                  " US-   5      -  S-   S-  5      nUS S 2[         R
                  4   n[         R                  R                  XVU-  5        g r   )r   r   r	   r   r[   newaxisrH   r   )r!   rJ   r~   rn   r{   
p_norm_allr   s          r(   !test_assoc_legendre_p_all_norm_m04TestAssocLegendreP.test_assoc_legendre_p_all_norm_m0N  s     KKAs#$Q159!Wq1uWa:JK)!=a1q5!Q>NO
!biiA..2a782::&


"":~>r+   r,   N)r-   r.   r/   r0   rq   rc   rd   re   r   rP   r   r   r   r   r[   r   r  r1   r,   r+   r(   rg   rg   F   s   6 [[W&DE[[Wq!f-[[Wq"g.7 / . F7( [[W&DE[[VdE]3$ 4 F$" [[W&@A$ B$& [[W&@A[[VdE]3Z5 4 BZ5x [[Wqc*[[Wrd+[[S1b'*8 + , +8( [[S"))Ar"237 47 [[S"))Ar"23? 4?r+   rg   c                   "   \ rS rSr\R
                  R                  S/ SQ5      \R
                  R                  SSS/5      \R
                  R                  S/ SQ5      \R
                  R                  S	S
S/5      S 5       5       5       5       rSrg)TestMultiAssocLegendrePiZ  r5   ))i  r9   r;   
branch_cutr   r   zz_min, z_max))y      $      $y      $@      $@)r   r   )y             $y              $@r   TFc           	         [         R                  R                  S5      nUR                  UR                  UR                  U5      SUR                  UR
                  UR
                  U5      -  -   n[        SSXrUSS9u  p[         R                  R                  US   [        XrUS95        [         R                  R                  US   S	5        [         R                  R                  US
   S	5        [         R                  R                  US   S	5        [         R                  R                  US   S	5        [         R                  R                  US   S	5        [         R                  R                  US   S	5        [         R                  R                  US   S	5        [         R                  R                  US   S	5        [         R                  R                  US   [        XrUS95        [         R                  R                  US   [        XrUS95        [         R                  R                  US   S	5        [         R                  R                  US   S	5        [         R                  R                  US   S	5        [         R                  R                  US   S	5        [         R                  R                  US   S	5        [         R                  R                  US   S	5        [         R                  R                  US   [        XrUS95        [         R                  R                  US   [        XrUS95        [         R                  R                  US   [        XrUS95        [         R                  R                  US   [        XrUS95        [         R                  R                  US   S	5        [         R                  R                  US   S	5        [         R                  R                  US   S	5        [         R                  R                  US    S	5        [         R                  R                  US!   [!        XrUS95        [         R                  R                  US"   [#        XrUS95        [         R                  R                  US#   [%        XrUS95        [         R                  R                  US$   ['        XrUS95        [         R                  R                  US%   [)        XrUS95        [         R                  R                  US&   [+        XrUS95        [         R                  R                  US'   S	5        [         R                  R                  US(   S	5        [         R                  R                  US)   [-        XrUS95        [         R                  R                  US*   [/        XrUS95        [         R                  R                  US+   [1        XrUS95        [         R                  R                  US,   [3        XrUS95        [         R                  R                  US-   [5        XrUS95        [         R                  R                  US.   [7        XrUS95        [         R                  R                  US/   [9        XrUS95        [         R                  R                  US0   [;        XrUS95        [         R                  R                  US1   [=        XrUS95        [         R                  R                  US2   [?        XrUS95        [         R                  R                  US3   [A        XrUS95        [         R                  R                  US4   [C        XrUS95        [         R                  R                  U	S   [E        XrUS95        [         R                  R                  U	S   S	5        [         R                  R                  U	S
   S	5        [         R                  R                  U	S   S	5        [         R                  R                  U	S   S	5        [         R                  R                  U	S   S	5        [         R                  R                  U	S   S	5        [         R                  R                  U	S   S	5        [         R                  R                  U	S   S	5        [         R                  R                  U	S   [G        XrUS95        [         R                  R                  U	S   [I        XrUS95        [         R                  R                  U	S   S	5        [         R                  R                  U	S   S	5        [         R                  R                  U	S   S	5        [         R                  R                  U	S   S	5        [         R                  R                  U	S   S	5        [         R                  R                  U	S   S	5        [         R                  R                  U	S   [K        XrUS95        [         R                  R                  U	S   [M        XrUS95        [         R                  R                  U	S   [O        XrUS95        [         R                  R                  U	S   [Q        XrUS95        [         R                  R                  U	S   S	5        [         R                  R                  U	S   S	5        [         R                  R                  U	S   S	5        [         R                  R                  U	S    S	5        [         R                  R                  U	S!   [S        XrUS95        [         R                  R                  U	S"   [U        XrUS95        [         R                  R                  U	S#   [W        XrUS95        [         R                  R                  U	S$   [Y        XrUS95        [         R                  R                  U	S%   [[        XrUS95        [         R                  R                  U	S&   []        XrUS95        [         R                  R                  U	S'   S	5        [         R                  R                  U	S(   S	5        [         R                  R                  U	S)   [_        XrUS95        [         R                  R                  U	S*   [a        XrUS95        [         R                  R                  U	S+   [c        XrUS95        [         R                  R                  U	S,   [e        XrUS95        [         R                  R                  U	S-   [g        XrUS95        [         R                  R                  U	S.   [i        XrUS95        [         R                  R                  U	S/   [k        XrUS95        [         R                  R                  U	S0   [m        XrUS95        [         R                  R                  U	S1   [o        XrUS95        [         R                  R                  U	S2   [q        XrUS95        [         R                  R                  U	S3   [s        XrUS95        [         R                  R                  U	S4   [u        XrUS95        g )5Nr>                 ?r   r   )r  r   rA   r   r  r   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   );r   rD   rE   rG   realimagr	   rH   r   r   rk   r   r   r   r   r   r   r   rm   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )
r!   r5   r  z_minz_maxr   rI   rn   rL   rM   s
             r(   r   %TestMultiAssocLegendreP.test_specific[  s    ii##D)KK

EJJ6UZZU;;< (14; 	

""1T7 E	G


""1T7A.


""1T7A.


""1T7A.


""1T7A.


""1U8Q/


""1U8Q/


""1U8Q/


""1U8Q/


""1T7 E	G


""1T7 E	G


""1T7A.


""1T7A.


""1T7A.


""1U8Q/


""1U8Q/


""1U8Q/


""1U8!!F	H 	

""1T7 E	G


""1T7 E	G


""1T7 E	G


""1T7A.


""1T7A.


""1U8Q/


""1U8Q/


""1U8!!F	H


""1U8!!F	H 	

""1T7 E	G


""1T7 E	G


""1T7 E	G


""1T7 E	G


""1T7A.


""1U8Q/


""1U8!!F	H


""1U8!!F	H


""1U8!!F	H 	

""1T7 E	G


""1T7 E	G


""1T7 E	G


""1T7 E	G


""1T7 E	G


""1U8!!F	H


""1U8!!F	H


""1U8!!F	H


""1U8!!F	H 	

""5;$QDI	K


""5;2


""5;2


""5;2


""5;2


""5<3


""5<3


""5<3


""5<3


""5;$QDI	K


""5;$QDI	K


""5;2


""5;2


""5;2


""5<3


""5<3


""5<3


""5<%aTJ	L 	

""5;$QDI	K


""5;$QDI	K


""5;$QDI	K


""5;2


""5;2


""5<3


""5<3


""5<%aTJ	L


""5<%aTJ	L 	

""5;$QDI	K


""5;$QDI	K


""5;$QDI	K


""5;$QDI	K


""5;2


""5<3


""5<%aTJ	L


""5<%aTJ	L


""5<%aTJ	L 	

""5;$QDI	K


""5;$QDI	K


""5;$QDI	K


""5;$QDI	K


""5;$QDI	K


""5<%aTJ	L


""5<%aTJ	L


""5<%aTJ	L


""5<%aTJ	Lr+   r,   N)	r-   r.   r/   r0   rc   rd   re   r   r1   r,   r+   r(   r  r  Z  s    [[W&BC[[\Aq62[[^ . [[VdE]3]L 4 3 D
]Lr+   r  c                       \ rS rSr\R
                  R                  S/ SQ5      S 5       r\R
                  R                  S/ SQ5      S 5       rSr	g)	TestSphLegendrePi  r5   r6   c                 R   [         R                  R                  S5      nUR                  [         R                  * [         R                  U5      n[        SSUSS9u  pE[         R                  R                  US   [        U5      5        [         R                  R                  US   S5        [         R                  R                  US   S5        [         R                  R                  US	   S5        [         R                  R                  US
   S5        [         R                  R                  US   S5        [         R                  R                  US   S5        [         R                  R                  US   S5        [         R                  R                  US   [        U5      5        [         R                  R                  US   [        U5      5        [         R                  R                  US   S5        [         R                  R                  US   S5        [         R                  R                  US   S5        [         R                  R                  US   S5        [         R                  R                  US   S5        [         R                  R                  US   S5        [         R                  R                  US   [        U5      5        [         R                  R                  US   [        U5      5        [         R                  R                  US   [        U5      5        [         R                  R                  US   [        U5      5        [         R                  R                  US   S5        [         R                  R                  US   S5        [         R                  R                  US   S5        [         R                  R                  US   S5        [         R                  R                  US   [        U5      5        [         R                  R                  US   [!        U5      5        [         R                  R                  US    [#        U5      5        [         R                  R                  US!   [%        U5      5        [         R                  R                  US"   ['        U5      5        [         R                  R                  US#   [)        U5      5        [         R                  R                  US$   S5        [         R                  R                  US%   S5        [         R                  R                  US&   [+        U5      5        [         R                  R                  US'   [-        U5      5        [         R                  R                  US(   [/        U5      5        [         R                  R                  US)   [1        U5      5        [         R                  R                  US*   [3        U5      5        [         R                  R                  US+   [5        U5      5        [         R                  R                  US,   [7        U5      5        [         R                  R                  US-   [9        U5      5        [         R                  R                  US.   [;        U5      5        [         R                  R                  US/   [=        U5      5        [         R                  R                  US0   [?        U5      5        [         R                  R                  US1   [A        U5      5        [         R                  R                  US   [C        U5      5        [         R                  R                  US   S5        [         R                  R                  US   S5        [         R                  R                  US	   S5        [         R                  R                  US
   S5        [         R                  R                  US   S5        [         R                  R                  US   S5        [         R                  R                  US   S5        [         R                  R                  US   [E        U5      5        [         R                  R                  US   [G        U5      5        [         R                  R                  US   S5        [         R                  R                  US   S5        [         R                  R                  US   S5        [         R                  R                  US   S5        [         R                  R                  US   S5        [         R                  R                  US   S5        [         R                  R                  US   [I        U5      5        [         R                  R                  US   [K        U5      5        [         R                  R                  US   [M        U5      5        [         R                  R                  US   [O        U5      5        [         R                  R                  US   S5        [         R                  R                  US   S5        [         R                  R                  US   S5        [         R                  R                  US   S5        [         R                  R                  US   [Q        U5      5        [         R                  R                  US   [S        U5      5        [         R                  R                  US    [U        U5      5        [         R                  R                  US!   [W        U5      5        [         R                  R                  US"   [Y        U5      5        [         R                  R                  US#   [[        U5      5        [         R                  R                  US$   S5        [         R                  R                  US%   S5        [         R                  R                  US&   []        U5      5        [         R                  R                  US'   [_        U5      5        [         R                  R                  US(   [a        U5      5        [         R                  R                  US)   [c        U5      5        [         R                  R                  US*   [e        U5      5        [         R                  R                  US+   [g        U5      5        [         R                  R                  US,   [i        U5      5        [         R                  R                  US-   [k        U5      5        [         R                  R                  US.   [m        U5      5        [         R                  R                  US/   [o        U5      5        [         R                  R                  US0   [q        U5      5        [         R                  R                  US1   [s        U5      5        g )2Nr>   r   r   r@   r   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ):r   rD   rE   rG   pir   rH   r   sph_legendre_p_0_0sph_legendre_p_1_0sph_legendre_p_1_1sph_legendre_p_1_m1sph_legendre_p_2_0sph_legendre_p_2_1sph_legendre_p_2_2sph_legendre_p_2_m2sph_legendre_p_2_m1sph_legendre_p_3_0sph_legendre_p_3_1sph_legendre_p_3_2sph_legendre_p_3_3sph_legendre_p_3_m3sph_legendre_p_3_m2sph_legendre_p_3_m1sph_legendre_p_4_0sph_legendre_p_4_1sph_legendre_p_4_2sph_legendre_p_4_3sph_legendre_p_4_4sph_legendre_p_4_m4sph_legendre_p_4_m3sph_legendre_p_4_m2sph_legendre_p_4_m1sph_legendre_p_0_0_jacsph_legendre_p_1_0_jacsph_legendre_p_1_1_jacsph_legendre_p_1_m1_jacsph_legendre_p_2_0_jacsph_legendre_p_2_1_jacsph_legendre_p_2_2_jacsph_legendre_p_2_m2_jacsph_legendre_p_2_m1_jacsph_legendre_p_3_0_jacsph_legendre_p_3_1_jacsph_legendre_p_3_2_jacsph_legendre_p_3_3_jacsph_legendre_p_3_m3_jacsph_legendre_p_3_m2_jacsph_legendre_p_3_m1_jacsph_legendre_p_4_0_jacsph_legendre_p_4_1_jacsph_legendre_p_4_2_jacsph_legendre_p_4_3_jacsph_legendre_p_4_4_jacsph_legendre_p_4_m4_jacsph_legendre_p_4_m3_jacsph_legendre_p_4_m2_jacsph_legendre_p_4_m1_jac)r!   r5   rI   thetarL   rM   s         r(   r   TestSphLegendreP.test_specific   s"
   ii##D)RUUFBEE51%aE!<


""1T7u%	'


""1T7A.


""1T7A.


""1T7A.


""1T7A.


""1U8Q/


""1U8Q/


""1U8Q/


""1T7u%	'


""1T7u%	'


""1T7A.


""1T7A.


""1T7A.


""1U8Q/


""1U8Q/


""1U8Q/


""1U8&	( 	

""1T7u%	'


""1T7u%	'


""1T7u%	'


""1T7A.


""1T7A.


""1U8Q/


""1U8Q/


""1U8&	(


""1U8&	( 	

""1T7u%	'


""1T7u%	'


""1T7u%	'


""1T7u%	'


""1T7A.


""1U8Q/


""1U8&	(


""1U8&	(


""1U8&	( 	

""1T7u%	'


""1T7u%	'


""1T7u%	'


""1T7u%	'


""1T7u%	'


""1U8&	(


""1U8&	(


""1U8&	(


""1U8&	( 	

""5;"5)	+


""5;2


""5;2


""5;2


""5;2


""5<3


""5<3


""5<3


""5;"5)	+


""5;"5)	+


""5;2


""5;2


""5;2


""5<3


""5<3


""5<3


""5<#E*	, 	

""5;"5)	+


""5;"5)	+


""5;"5)	+


""5;2


""5;2


""5<3


""5<3


""5<#E*	,


""5<#E*	, 	

""5;"5)	+


""5;"5)	+


""5;"5)	+


""5;"5)	+


""5;2


""5<3


""5<#E*	,


""5<#E*	,


""5<#E*	, 	

""5;"5)	+


""5;"5)	+


""5;"5)	+


""5;"5)	+


""5;"5)	+


""5<#E*	,


""5<#E*	,


""5<#E*	,


""5<#E*	,r+   rs   c           	         [         R                  R                  S5      nUR                  SSU5      nUR                  SSU5      nUR	                  [         R
                  * [         R
                  U5      n[        X4USS9u  pgnUR                  U:X  d   eUR                  UR                  :X  d   eUR                  UR                  :X  d   e[         R                  R                  [         R                  " U5      U-  [         R                  " U5      * U-  X3S-   -  [         R                  " U5      -  XD-  [         R                  " U5      -  -
  U-  -
  SS	S
9  g )Nr>   r   r8   r   r   r@   r   r   r   r   )r   rD   rE   rF   rG   r  r
   r5   rH   r   sincos)	r!   r5   rI   rJ   r~   rD  rL   rM   rN   s	            r(   rP   TestSphLegendreP.test_ode  s   ii##D)LLB&LLb%(RUUFBEE51)!a@&ww%{{agg%%%||u{{***


""266%=6#9BFF5M>E;QE{RVVE]*QURVVE]-BBaG<HU 	# 	$r+   r,   N)
r-   r.   r/   r0   rc   rd   re   r   rP   r1   r,   r+   r(   r  r    sQ    [[W&@AY, BY,v [[W&DE$ F$r+   r  c            	          \ rS rSrSrS rS rS rS rS r	\
R                  R                  S\R                  /5      \
R                  R                  S	/ S
Q5      \
R                  R                  SSS/5      \
R                  R                  SSS/5      \
R                  R                  S/ SQ5      S 5       5       5       5       5       r\
R                  R                  S\R                   /5      \
R                  R                  S/ SQ5      \
R                  R                  SSS/5      \
R                  R                  S/ SQ5      S 5       5       5       5       r\
R                  R                  S\R                   /5      \
R                  R                  S/ SQ5      \
R                  R                  S/ SQ5      S 5       5       5       rSrg)TestLegendreFunctionsi  a~  
@pytest.mark.parametrize("m_max", [3])
@pytest.mark.parametrize("n_max", [5])
@pytest.mark.parametrize("z", [-1])
def test_clpmn_all_limits(self, m_max, n_max, z):
    rng = np.random.default_rng(1234)

    type = 2

    p, p_jac = special.clpmn_all(m_max, n_max, type, z, diff_n=1)

    n = np.arange(n_max + 1)

    np.testing.assert_allclose(p_jac[0], pow(z, n + 1) * n * (n + 1) / 2)
    np.testing.assert_allclose(p_jac[1], np.where(n >= 1, pow(z, n) * np.inf, 0))
    np.testing.assert_allclose(p_jac[2], np.where(n >= 2,
        -pow(z, n + 1) * (n + 2) * (n + 1) * n * (n - 1) / 4, 0))
    np.testing.assert_allclose(p_jac[-2], np.where(n >= 2, -pow(z, n + 1) / 4, 0))
    np.testing.assert_allclose(p_jac[-1], np.where(n >= 1, -pow(z, n) * np.inf, 0))

    for m in range(3, m_max + 1):
        np.testing.assert_allclose(p_jac[m], 0)
        np.testing.assert_allclose(p_jac[-m], 0)
c                 h   [         R                  " SSS5      n[        USSSS9  [         R                  " SSS5      n[        US	SSS9  [        R                  " S
S9   [         R                  " SSS5      nS S S 5        US:w  d  [        R
                  " U5      (       d   eg g ! , (       d  f       N3= f)Nr   r   rj   g      r   r   (   gMbP?gI?ignore)allr   )r   lpmvr   r   errstateisnan)r!   lps     r(   	test_lpmvTestLegendreFunctions.test_lpmv  s    \\!Q#Fa8\\!R&.V!D [[X&bD)B 'Qw"((2,,&&,w '&s   B##
B1c                     [         R                  " SSS5      n[         R                  " SS5      n[        US   S   US   SSS9  [        US   S   US   SSS9  g )Nr   r   rj   a2U0*#?r   r   )r   lqmnlqnr   )r!   lqmnflqfs      r(   	test_lqmnTestLegendreFunctions.test_lqmn  sX    Q2&kk!R aSV&qAaSV&qAr+   c                     SnSnX-
  X-   4 H6  n[         R                  " SSU5      S   S   nSX3-  S-
  -  n[        XESSS9  M8     g	)
z[algorithm for real arguments changes at 1.0001
test against analytical result for m=2, n=1
gqh ?gh㈵>r   r   r   )r   r   r   r   N)r   rX  r   )r!   x0deltarK   lqro   s         r(   test_lqmn_gt1#TestLegendreFunctions.test_lqmn_gt1  sX     (BH%AaA&q)&1B!#a%yHBvA> &r+   c                    [         R                  " SSS5      u  p[        UR                  S5        [        UR                  S5        [         R                  " SSS5      u  p[        UR                  S5        [        UR                  S5        g )Nr   g?)r   r   r   )r   r   )r   rX  r   r5   )r!   abs      r(   test_lqmn_shape%TestLegendreFunctions.test_lqmn_shape  sb    ||Aq#&QWWf%QWWf%||Aq#&QWWf%QWWf%r+   c                     [         R                  " SS5      n[        U[        R                  " / SQ5      [        R                  " / SQ5      4SSS9  g )Nr   rj   )gk+ݓ?g=yX5gW2)g|a2U?g~jt?gڊerW  r   r   )r   rY  r   r   r    )r!   r[  s     r(   test_lqnTestLegendreFunctions.test_lqn  s@    kk!R bhh'AB hh'?@B#!	-r+   functionrJ   rS   	z_complexFT	z_inexactinput_shape)r,   r   r   r   r   r   r   r   r   )r   r   r   c                    [         R                  R                  S5      nU(       a  UR                  SSUS9nOUR	                  SSUS9nU(       a  SU-  SU-  -   n[
        R                  " 5          [
        R                  " S	[        S
9  U" X'5      u  pSSS5        WR                  US-   4U-   :X  d   eW	R                  US-   4U-   :X  d   eg! , (       d  f       NA= f)z Tests for correct output shapes.r>   r   r   sizer   r   r                ?rN  categoryN)
r   rD   rE   rF   rG   warningscatch_warningssimplefilterDeprecationWarningr5   )
r!   rl  rJ   rm  rn  ro  rI   rn   P_zP_d_zs
             r(   test_array_inputs_lxn+TestLegendreFunctions.test_array_inputs_lxn  s     ii##D)R5AB4AQ!A$$&!!(5GH!!JC ' yyQUI3333{{q1ui+5555	 '&s   1$C
Czm,n)ry   r   r   )r   rT   )   rU   )   rV   )r,   rp  rq  r   r   r   rr  c                     [         R                  R                  S5      nU(       a  UR                  SSUS9nOUR	                  SSUS9nU" X#U5      u  pUR
                  US-   US-   4U-   :X  d   eU	R
                  US-   US-   4U-   :X  d   eg)+Tests for correct output shapes and dtypes.r>   r   r   rt  r   r   N)r   rD   rE   rF   rG   r5   )
r!   rl  r~   rJ   rn  ro  rI   rn   r}  r~  s
             r(   test_array_inputs_lxmn,TestLegendreFunctions.test_array_inputs_lxmn  s     ii##D)R5AB4AaA&
yyQUAEN[8888{{q1ua!en{::::r+   c                    [         R                  R                  S5      nUR                  SSUS9nSU-  SU-  -   n[        R
                  " 5          [        R                  " S[        S9  U" X#U5      u  pxS	S	S	5        WR                  US-   US-   4U-   :X  d   eWR                  US-   US-   4U-   :X  d   eg	! , (       d  f       NI= f)
r  r>   r   r   rt  r  rv  rN  rw  N)	r   rD   rE   rG   ry  rz  r{  r|  r5   )	r!   rl  r~   rJ   ro  rI   rn   r}  r~  s	            r(   test_array_inputs_clxmn-TestLegendreFunctions.test_array_inputs_clxmn&  s     ii##D)KKAKK0FTAX$$&!!(5GH!!*JC ' yyQUAEN[8888{{q1ua!en{:::: '&s   %B99
Cr,   N)r-   r.   r/   r0   __doc__rT  r\  rb  rg  rj  rc   rd   re   r   rY  r  rX  r  r  r1   r,   r+   r(   rK  rK    s   2
'B	?&- [[Z'++7[[S"67[[[5$-8[[[5$-8[[	
6 9 9 8 86" [[Z',,8[[< [[[5$-8[[ 


; 9	 9
; [[Z',,8[[< [[ 

;	 9;r+   rK  c                     U(       aQ  [         R                  " SU -  S-   [         R                  " X-
  5      -  S[         R                  " X-   5      -  -  5      $ g)Nr   r   )mathr   	factorial)rJ   r~   r   s      r(   assoc_legendre_factorr  =  sS    		1q519NN15!"%&)>%>@ A 	B r+   r   Fr  c                H    [        SSU5      n[        R                  " X5      $ Nr   r  r   	full_likern   r  r   facs       r(   r   r   D      
1d
+C<<r+   c                $    [        SSU5      nX0-  $ Nr   r   r  r  s       r(   rk   rk   I  s    
1d
+C7Nr+   c          
         [         R                  " US:H  [         R                  " [         R                  " [         R                  " U 5      5      SS5      S5      n[         R                  " US:H  SS5      n[	        SSU5      n[         R
                  " [         R                  " US:H  X -  S-
  SX -  -
  5      5      nXC-  U-  U-  $ Nr   r   r   )r   r   signbitr	  r  r   )rn   r  r   branch_signbranch_cut_signr  ws          r(   r   r   N  s    ((:?BHHRZZ
5KQPR,SUWXKhhzQA6O
1d
+C
q!%!)QY?@A(3.22r+   c                x    [         R                  " US:H  SS5      n[        SSU5      nU* U-  [        XS9-  S-  $ Nr   r   r   r  r   r   r   r  r   rn   r  r   r  r  s        r(   r   r   W  sK    hhzQA6O
2t
,Cs"Q679:; <r+   c                >    [        SSU5      nUSU -  U -  S-
  -  S-  $ Nr   r   r   r   r  r  s       r(   r   r   ^  s,    
1d
+C!a%!)a- 1$$r+   c                @    [        SSU5      nSU-  U -  [        XS9-  $ Nr   r   r   r  r  r   r  s       r(   r   r   c  s-    
1d
+CGaKQ67 8r+   c                r    [         R                  " US:H  SS5      n[        SSU5      nSU-  U-  SX -  -
  -  $ )Nr   r   r   r   r   r   r  r  s        r(   r   r   i  sA    hhzQA6O
1d
+C$AE	22r+   c                p    [         R                  " US:H  SS5      n[        SSU5      nX4-  SX -  -
  -  S-  $ )Nr   r   r   r   r   rT   r  r  s        r(   r   r   o  s?    hhzQA6O
2t
,C AI.22r+   c                ~    [         R                  " US:H  SS5      n[        SSU5      nU* U-  U -  [        XS9-  S-  $ Nr   r   r   r   r  r  r  s        r(   r   r   u  sP    hhzQA6O
2t
,Cs"Q&Q679:; <r+   c                D    [        SSU5      nUSU -  U -  S-
  -  U -  S-  $ Nr   r   r   r   r  r  s       r(   rm   rm   |  s1    
1d
+C!a%!)a- 1$q((r+   c                X    [        SSU5      nSU-  SU -  U -  S-
  -  [        XS9-  S-  $ )Nr   r   r   r  r   r  r  s       r(   r   r     sB    
1d
+CGq1uqy1}%Q679:; <r+   c                x    [         R                  " US:H  SS5      n[        SSU5      nSU-  U-  SX -  -
  -  U -  $ Nr   r   r   r   r   r  r  s        r(   r   r     sF    hhzQA6O
1d
+C#%QU3a77r+   c                    [         R                  " US:H  SS5      n[        SSU5      nSU-  U-  SX -  -
  -  [        XS9-  $ )Nr   r   r   r   r  r  r  s        r(   r   r     sP    hhzQA6O
1d
+C 3&!ae)4Q67 8r+   c                J    [        SSU5      nX0U -  S-
  -  [        XS9-  S-  $ )Nr   r   r   r  0   r  r  s       r(   r   r     s8    
2t
,Cq519Q679;< =r+   c                v    [         R                  " US:H  SS5      n[        SSU5      nX4-  SX -  -
  -  U -  S-  $ Nr   r   r   r   rT   r  r  s        r(   r   r     sD    hhzQA6O
2t
,C AI.2Q66r+   c                    [         R                  " US:H  SS5      n[        SSU5      nX4-  SSU -  U -  -
  -  [        XS9-  S-  $ )Nr   r   r   r   r  rT   r  r  s        r(   r   r     sW    hhzQA6O
2t
,C!QQ]3Q679:; <r+   c                P    [        SSU5      nUSU -  U -  S-
  U -  U -  S-   -  S-  $ Nr   r   r      r   rT   r  r  s       r(   r   r     s;    
1d
+C26A:?a'!+a/0144r+   c                ^    [        SSU5      nSU-  SU -  U -  S-
  -  U -  [        XS9-  S-  $ )Nr   r   r   r<   r   r  r   r  r  s       r(   r   r     sG    
1d
+CGq1uqy1}%)A5689: ;r+   c                    [         R                  " US:H  SS5      n[        SSU5      nSU-  U-  SSU -  U -  -
  U -  U -  S-
  -  S-  $ )	Nr   r   r   r   r   r   rT   r<   r  r  s        r(   r   r     s[    hhzQA6O
1d
+C#%!a!eai-1)<q)@1)DEIIr+   c                    [         R                  " US:H  SS5      n[        SSU5      nSU-  U-  SX -  -
  -  U -  [        XS9-  $ )Nr   r   r   r   i   r  r  r  s        r(   r   r     sU    hhzQA6O
1d
+C/!C'1qu959Q67 8r+   c                ^    [        SSU5      nSU-  [        R                  " X -  S-
  5      -  $ Nr   r  r   r  r   squarer  s       r(   r   r     s.    
1d
+C9ryy+++r+   c                ^    [        SSU5      nU[        R                  " X -  S-
  5      -  S-  $ Nr   r   r   i  r  r  s       r(   r   r     s/    
2t
,C1519%%++r+   c                P    [        SSU5      nX0U -  S-
  -  U -  [        XS9-  S-  $ )Nr   r   r   r  r  r  r  s       r(   r   r     s=    
2t
,Cq519!Q679;< =r+   c                    [         R                  " US:H  SS5      n[        SSU5      nX4-  SSU -  U -  -
  U -  U -  S-
  -  S-  $ )	Nr   r   r   r   r   rT   r<   r  r  r  s        r(   r   r     sT    hhzQA6O
2t
,C QQ]a$7!$;a$?@2EEr+   c                    [         R                  " US:H  SS5      n[        SSU5      nX4-  SSU -  U -  -
  -  U -  [        XS9-  S-  $ )Nr   r   r   r   r<   r  rT   r  r  s        r(   r   r     s\    hhzQA6O
2t
,C!QQ]3a7Q679:; <r+   c           
      2   [         R                  " US:H  [         R                  " [         R                  " [         R                  " U 5      5      SS5      S5      nU* [         R                  " [         R                  " US:H  X -  S-
  SX -  -
  5      5      -  nU$ r  )r   r   r  r	  r   )rn   r  r  out11_div_zs       r(   assoc_legendre_p_1_1_jac_div_zr    sv    ((:?BHHRZZ
5KQPR,SUWXK<
q!%!)QY?@AK r+   c                .    [         R                  " U 5      $ Nr   
zeros_like)rn   r  r   s      r(   r   r     s    ==r+   c                H    [        SSU5      n[        R                  " X5      $ r  r  r  s       r(   r   r     r  r+   c                8    [        SSU5      nX0-  [        XS9-  $ )Nr   r  r  r  r  s       r(   r   r     s)    
1d
+CG&q@A Br+   c                ~    [         R                  " US:H  SS5      n[        SSU5      nU* U-  U -  [        XS9-  S-  $ r  r   r   r  r  r  s        r(   r   r     sS    hhzQA6O
2t
,Cs"Q&&q@ACDE Fr+   c                ,    [        SSU5      nSU-  U -  $ )Nr   r   r   r  r  s       r(   r   r     s    
1d
+Cs7Q;r+   c                R    [        SSU5      nSU-  SU -  U -  S-
  -  [        XS9-  $ r  r  r  s       r(   r   r     s<    
1d
+CGq1uqy1}%&q@A Br+   c                h    [         R                  " US:H  SS5      n[        SSU5      nSU-  U-  U -  $ )Nr   r   r   r   ir  r  s        r(   r   r     s;    hhzQA6O
1d
+C#%))r+   c                    [         R                  " US:H  SS5      n[        SSU5      nX4-  SSU -  U -  -
  -  [        XS9-  S-  $ r  r  r  s        r(   r   r   
  sZ    hhzQA6O
2t
,C!QQ]3&q@ACDE Fr+   c                j    [         R                  " US:H  SS5      n[        SSU5      nU* U-  U -  S-  $ )Nr   r   r   r   r   r   r  r  s        r(   r   r     s>    hhzQA6O
2t
,Cc!A%))r+   c                D    [        SSU5      nSU-  SU -  U -  S-
  -  S-  $ )Nr   r   r   r   r   r  r  s       r(   r   r     s0    
1d
+Cs7a!eai!m$q((r+   c                ^    [        SSU5      nSU-  SU -  U -  S-
  -  U -  [        XS9-  S-  $ )Nr   r   r   r  r  r   r  r  s       r(   r   r     sJ    
1d
+CGrAvzB'!+&q@ACDE Fr+   c                z    [         R                  " US:H  SS5      n[        SSU5      nSU-  U-  SSU -  U -  -
  -  $ r  r  r  s        r(   r   r   "  sG    hhzQA6O
1d
+C#%QUQY77r+   c                    [         R                  " US:H  SS5      n[        SSU5      nSU-  U-  SX -  -
  -  U -  [        XS9-  $ )Nr   r   r   -   r  r  r  s        r(   r   r   (  sW    hhzQA6O
1d
+C 3&!ae)4q8&q@A Br+   c                P    [        SSU5      nX0U -  S-
  -  U -  [        XS9-  S-  $ )Nr   r   r   r  rU   r  r  s       r(   r   r   /  s@    
2t
,Cq519!&q@ACEF Gr+   c                x    [         R                  " US:H  SS5      n[        SSU5      nX4-  SSU -  U -  -
  -  S-  $ r  r  r  s        r(   r   r   5  sE    hhzQA6O
2t
,C AA	M2Q66r+   c                    [         R                  " US:H  SS5      n[        SSU5      nX4-  SSU -  U -  -
  -  U -  [        XS9-  S-  $ )Nr   r   r   r  r   r  rT   r  r  s        r(   r   r   ;  s_    hhzQA6O
2t
,C!R"q&1*_59&q@ACDE Fr+   c                J    [        SSU5      nSU-  SU -  U -  S-
  -  U -  S-  $ )Nr   r   r   r<   r   r   r  r  s       r(   r   r   B  s5    
1d
+Cs7a!eai!m$q(1,,r+   c                j    [        SSU5      nSU-  SU -  U -  S-
  U -  U -  S-   -  [        XS9-  S-  $ )	Nr   r   r         r   r  r   r  r  s       r(   r   r   G  sT    
1d
+CGQ
R1,q0145&q@ACDE Fr+   c                    [         R                  " US:H  SS5      n[        SSU5      nSU-  U-  SSU -  U -  -
  -  U -  $ )Nr   r   r   r   r   r  r<   r  r  s        r(   r   r   M  sL    hhzQA6O
1d
+C#%QUQY7!;;r+   c                    [         R                  " US:H  SS5      n[        SSU5      nSU-  U-  SSU -  U -  -
  U -  U -  S-
  -  [        XS9-  $ )Nr   r   r   r   r  r   r  r  r  s        r(   r   r   S  sg    hhzQA6O
1d
+C/!C'AA	MQ+>+BQ+FG&q@A Br+   c                <    [        SSU5      nSU-  X -  S-
  -  U -  $ )Nr   i  r   r  r  s       r(   r   r   Z  s*    
1d
+C9	"Q&&r+   c                <    [        SSU5      nX0U -  S-
  -  U -  S-  $ Nr   r   r   `   r  r  s       r(   r   r   _  s+    
2t
,Ca%!)q 2%%r+   c                d    [        SSU5      nUSU -  U -  S-
  U -  U -  S-   -  [        XS9-  S-  $ )Nr   r   r   r   r  r  r  r  s       r(   r   r   d  sP    
2t
,CAEAIMQ&*Q./&q@ACEF Gr+   c                ~    [         R                  " US:H  SS5      n[        SSU5      nX4-  SSU -  U -  -
  -  U -  S-  $ )Nr   r   r   r   r   r<      r  r  s        r(   r   r   j  sJ    hhzQA6O
2t
,C AA	M2Q6;;r+   c                    [         R                  " US:H  SS5      n[        SSU5      nX4-  SSU -  U -  -
  U -  U -  S-
  -  [        XS9-  S-  $ )	Nr   r   r   r   r  r  r  rT   r  r  s        r(   r   r   p  si    hhzQA6O
2t
,C!b26A:o%:Q%>%BC&q@ACDE Fr+   c                 f    [        XSS9[        R                  " S[        R                  -  5      -  $ )NTr   r   )r  r   r   r  )rJ   r~   s     r(   sph_legendre_factorr  w  s%     D1BGGAI4FFFr+   c                 F    [        SS5      n[        R                  " X5      $ r  )r  r   r  rD  r  s     r(   r  r  z  s    
a
#C<<##r+   c                 L    [        SS5      nU[        R                  " U 5      -  $ r  )r  r   rH  r  s     r(   r  r    s!    
a
#Cr+   c                 v    [        SS5      nU* [        R                  " [        R                  " U 5      5      -  $ )Nr   r  r   absrG  r  s     r(   r  r    s,    
a
#C4"&&'''r+   c                 z    [        SS5      nU[        R                  " [        R                  " U 5      5      -  S-  $ Nr   r   r   r  r  s     r(   r  r    s/    
a
$Cu&&**r+   c                     [        SS5      nUS[        R                  " [        R                  " U 5      5      -  S-
  -  S-  $ r  r  r   r  rH  r  s     r(   r  r    s9    
a
#C!biiu..23a77r+   c                     [        SS5      nSU-  [        R                  " [        R                  " U 5      5      -  [        R                  " U 5      -  $ )Nr   r   r   r  r   r  rG  rH  r  s     r(   r  r    s;    
a
#C8bffRVVE]++bffUm;;r+   c                     [        SS5      nSU-  S[        R                  " [        R                  " U 5      5      -
  -  $ )Nr   r   r   r  r  s     r(   r  r    s3    
a
#Cs7a"))BFF5M2233r+   c                     [        SS5      nUS[        R                  " [        R                  " U 5      5      -
  -  S-  $ )Nr   r   r   rT   r  r  s     r(   r  r    s4    
a
$C!biiu../!33r+   c                     [        SS5      nU[        R                  " U 5      -  [        R                  " [        R                  " U 5      5      -  S-  $ )Nr   r   )r  r   rH  r  rG  r  s     r(   r  r    s<    
a
$Cu!66::r+   c                     [        SS5      nUS[        R                  " [        R                  " U 5      5      -  S-
  -  [        R                  " U 5      -  S-  $ r  r  r  s     r(   r  r    sN    
a
#C1ryy//!34
u r+   c                     [        SS5      nSU-  S[        R                  " [        R                  " U 5      5      -  S-
  -  [        R                  " [        R
                  " U 5      5      -  S-  $ )Nr   r   r   r   r   r  r   r  rH  r  rG  r  s     r(   r  r    s[    
a
#CHBIIbffUm44q89
rvve} !" #r+   c                     [        SS5      nSU-  [        R                  " [        R                  " U 5      5      S-
  -  [        R                  " U 5      -  $ )Nr   r   r   r  r  s     r(   r  r    sE    
a
#C#I266%=1A56
u r+   c                     [        SS5      nSU-  [        R                  " [        R                  " [        R                  " U 5      5      S5      -  $ )Nr   r  r  r   powerr  rG  r  s     r(   r  r    s9    
a
#C9rxxrvve} 5q999r+   c                     [        SS5      nU[        R                  " [        R                  " [        R                  " U 5      5      S5      -  S-  $ )Nr   r   r  r  r  s     r(   r  r    s:    
a
$C"&&/33b88r+   c                     [        SS5      nU* [        R                  " [        R                  " U 5      5      S-
  -  [        R                  " U 5      -  S-  $ Nr   r   r   rT   r  r  s     r(   r   r     sK    
a
$CDBIIbffUm,q01
u r+   c                     [        SS5      nUS[        R                  " [        R                  " U 5      5      -  S-
  -  [        R                  " [        R
                  " U 5      5      -  S-  $ )Nr   r   r   r   rT   r  r  s     r(   r!  r!    sW    
a
$C1ryy//!34
rvve} !" #r+   c           	      
   [        SS5      nUS[        R                  " [        R                  " [        R                  " U 5      5      5      -  S[        R                  " [        R                  " U 5      5      -  -
  S-   -  S-  $ r  r  r  s     r(   r"  r"    sj    
a
#C2		"))BFF5M":;;
RYYrvve}%%&()* +-./ 0r+   c                    [        SS5      nSU-  S[        R                  " [        R                  " U 5      5      -  S-
  -  [        R                  " U 5      -  [        R                  " [        R
                  " U 5      5      -  S-  $ )Nr   r   r<   r   r   r  r  s     r(   r#  r#    sk    
a
#CHBIIbffUm44q89
urvve}-.012 3r+   c                     [        SS5      nSU-  S[        R                  " [        R                  " U 5      5      -  S-
  -  [        R                  " [        R                  " U 5      5      S-
  -  S-  $ )Nr   r   r  r<   r   r  r  s     r(   r$  r$    s`    
a
#C#IRYYrvve}559:	266%=	!A	%')*+ ,r+   c                     [        SS5      nSU-  [        R                  " [        R                  " [        R                  " U 5      5      S5      -  [        R
                  " U 5      -  $ )Nr   r   r  r   r  r  rG  rH  r  s     r(   r%  r%    sF    
a
#C#:u!6::RVVE]JJr+   c                     [        SS5      nSU-  [        R                  " [        R                  " [        R                  " U 5      5      S-
  5      -  $ r  r  r  s     r(   r&  r&    s<    
a
#C9ryy266%=!9A!=>>>r+   c                     [        SS5      nU[        R                  " [        R                  " [        R                  " U 5      5      S-
  5      -  S-  $ r  r  r  s     r(   r'  r'    s=    
a
$C299RVVE]3a7883>>r+   c                     [        SS5      nU[        R                  " [        R                  " [        R                  " U 5      5      S5      -  [        R
                  " U 5      -  S-  $ )Nr   r   r   r  r  r  s     r(   r(  r(    sO    
a
$C"((266"&&-0!44
u r+   c                     [        SS5      nU* S[        R                  " [        R                  " U 5      5      -  S-
  -  [        R                  " [        R                  " U 5      5      S-
  -  S-  $ )Nr   r   r<   r   r  r  r  s     r(   r)  r)    s^    
a
$CDA		"&&-00145	266%=	!A	%')+, -r+   c                 
   [        SS5      nUS[        R                  " [        R                  " U 5      5      -  S-
  -  [        R                  " U 5      -  [        R                  " [        R
                  " U 5      5      -  S-  $ )Nr   r   r<   r   rT   r  r  s     r(   r*  r*    sg    
a
$C1ryy//!34
urvve}-.012 3r+   c                 .    [         R                  " U 5      $ r  r  )rD  s    r(   r+  r+    s    ==r+   c                 N    [        SS5      nU* [        R                  " U 5      -  $ r  )r  r   rG  r  s     r(   r,  r,    s#    
a
#C4"&&-r+   c                     [        SS5      nU* [        R                  " U 5      -  S[        R                  " [        R                  " U 5      S5      -  S-
  -  $ )Nr   r   r  r   rH  	heavisiderG  r  s     r(   r-  r-  
  sE    
a
#C4"&&-1r||BFF5M1'E#E#IJJr+   c                     [        SS5      nU[        R                  " U 5      -  S[        R                  " [        R                  " U 5      S5      -  S-
  -  S-  $ r  r  r  s     r(   r.  r.    sH    
a
$C!bll266%=!&D"Dq"HIAMMr+   c                     [        SS5      nSU-  [        R                  " U 5      -  [        R                  " U 5      -  $ )Nr   r   r   )r  r   rH  rG  r  s     r(   r/  r/    s2    
a
#C8bffUm#bffUm33r+   c                 d   [        SS5      nSU-  [        R                  " [        R                  " U 5      5      * S[        R                  " [        R
                  " U 5      S5      -  S-
  -  [        R                  " [        R
                  " U 5      5      [        R
                  " U 5      -  -   -  $ )Nr   r   r   r  r   r  rH  r  rG  r  r  s     r(   r0  r0    s    
a
#CG		"&&-00	
R\\"&&-+	+a	/1
rvve}u-. / 0r+   c                     [        SS5      nSU-  [        R                  " U 5      -  [        R                  " U 5      -  $ )Nr      r  r   rG  rH  r  s     r(   r1  r1     s2    
a
#Cs7RVVE]"RVVE]22r+   c                     [        SS5      nU[        R                  " U 5      -  [        R                  " U 5      -  S-  $ )Nr   r   r   r$  r  s     r(   r2  r2  %  s3    
a
$C.22r+   c                 f   [        SS5      nU* [        R                  " [        R                  " U 5      5      * S[        R                  " [        R
                  " U 5      S5      -  S-
  -  [        R                  " [        R
                  " U 5      5      [        R
                  " U 5      -  -   -  S-  $ )Nr   r   r   r!  r  s     r(   r3  r3  *  s    
a
$CDRYYrvve}--	
R\\"&&-+	+a	/1
rvve}u-. /123 4r+   c                     [        SS5      nSU-  SS[        R                  " [        R                  " U 5      5      -  -
  -  [        R                  " U 5      -  S-  $ )Nr   r   r   r   r   r  r   r  rH  rG  r  s     r(   r4  r4  1  sJ    
a
#Cs7a!biiu6667"&&-G!KKr+   c                    [        SS5      nSU-  SS[        R                  " [        R                  " U 5      5      -  -
  -  [        R                  " U 5      -  S[        R                  " [        R
                  " U 5      S5      -  S-
  -  S-  $ )Nr   r   r  r   r   r  r   r  rH  r  rG  r  s     r(   r5  r5  6  st    
a
#CGrB266%=!999:RVVE]J	
R\\"&&-+	+a	/1345 6r+   c                     [        SS5      nSU-  S[        R                  " [        R                  " U 5      5      -  S-
  -  [        R                  " U 5      -  $ )Nr   r   r   r   r(  r  s     r(   r6  r6  <  sE    
a
#C8q299RVVE]33a78266%=HHr+   c                     [        SS5      nSU-  [        R                  " [        R                  " U 5      5      -  [        R                  " U 5      -  [        R                  " U 5      -  $ )Nr   ir  r  s     r(   r7  r7  A  sH    
a
#C9rvvbffUm,,rvve}<rvve}LLr+   c                     [        SS5      nU[        R                  " [        R                  " U 5      5      -  [        R                  " U 5      -  [        R                  " U 5      -  S-  $ )Nr   r   rU   r  r  s     r(   r8  r8  F  sI    
a
$Cu&&6FKKr+   c                     [        SS5      nUS[        R                  " [        R                  " U 5      5      -  S-
  -  [        R                  " U 5      -  S-  $ r  r(  r  s     r(   r9  r9  K  sF    
a
$C!biiu..23bffUmCaGGr+   c                    [        SS5      nU* SS[        R                  " [        R                  " U 5      5      -  -
  -  [        R                  " U 5      -  S[        R                  " [        R
                  " U 5      S5      -  S-
  -  S-  $ )Nr   r   r  r   r   r   rT   r*  r  s     r(   r:  r:  P  su    
a
$CDBbiiu6667
u	
R\\"&&-+	+a	/1345 6r+   c                     [        SS5      nSU-  S[        R                  " [        R                  " U 5      5      -  S-
  -  [        R                  " U 5      -  [        R                  " U 5      -  S-  $ )Nr   r   r  r<   r   r   r(  r  s     r(   r;  r;  W  sb    
a
#CHBIIbffUm44q89
uu&()* +r+   c           
      t   [        SS5      nSU-  SS[        R                  " [        R                  " U 5      5      -  -   S[        R                  " [        R                  " [        R                  " U 5      5      5      -  -
  -  S[        R                  " [        R
                  " U 5      S5      -  S-
  -  S-  $ )Nr   r   r   r   r  r  r   r*  r  s     r(   r<  r<  ]  s    
a
#CGrB266%=!999
RYYryy/001 2	
R\\"&&-+	+a	/1345 6r+   c                     [        SS5      nSU-  S[        R                  " [        R                  " U 5      5      -  S-
  -  [        R                  " U 5      -  [        R                  " U 5      -  $ )Nr   r   r  r<   r(  r  s     r(   r=  r=  d  sZ    
a
#CHBIIbffUm44q89
uu& 'r+   c                 
   [        SS5      nSU-  S[        R                  " [        R                  " U 5      5      -  S-
  -  [        R                  " [        R
                  " U 5      5      -  [        R
                  " U 5      -  $ )Nr   r   r  r   r  r  s     r(   r>  r>  j  sc    
a
#C3J!biiu66:;
rvve} "u. /r+   c                     [        SS5      nSU-  [        R                  " [        R                  " U 5      5      S-
  -  [        R                  " U 5      -  [        R                  " U 5      -  $ )Nr   i\r   r(  r  s     r(   r?  r?  p  sU    
a
#C3J"))BFF5M2Q67
uu& 'r+   c                     [        SS5      nU* [        R                  " [        R                  " U 5      5      S-
  -  [        R                  " U 5      -  [        R                  " U 5      -  S-  $ r  r(  r  s     r(   r@  r@  v  s[    
a
$CDBIIbffUm,q01
uu&(*+ ,r+   c                 
   [        SS5      nUS[        R                  " [        R                  " U 5      5      -  S-
  -  [        R                  " [        R
                  " U 5      5      -  [        R
                  " U 5      -  S-  $ )Nr   r   r   r  r  r  s     r(   rA  rA  |  sg    
a
$C1ryy//!34
rvve} "u.023 4r+   c                     [        SS5      nUS[        R                  " [        R                  " U 5      5      -  S-
  -  [        R                  " U 5      -  [        R                  " U 5      -  S-  $ )Nr   r   r<   r  r(  r  s     r(   rB  rB    s[    
a
$C1ryy//!34rvve}D
u r+   c           
      p   [        SS5      nU* SS[        R                  " [        R                  " U 5      5      -  -   S[        R                  " [        R                  " [        R                  " U 5      5      5      -  -
  -  S[        R                  " [        R
                  " U 5      S5      -  S-
  -  S-  $ )	Nr   r   r   r  r  r   r   rT   r*  r  s     r(   rC  rC    s    
a
$CDBbiiu666
RYYryy/001 2	
R\\"&&-+	+a	/1345 6r+   rq  )~r  ry  numpyr   rc   numpy.testingr   r   scipyr   scipy.specialr   r   r   r	   r
   r   r   r3   rg   r  r  rK  r  r   rk   r   r   r   r   r   r   r   rm   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r7  r8  r9  r:  r;  r<  r=  r>  r?  r@  rA  rB  rC  r,   r+   r(   <module>r=     s       7 > >
- -&!7 !7HQ? Q?hcL cLJm$ m$^M; M;^ +,%  
 +,% 
 +,% 3 ,-5 < +,% %
 +,% 8 +,% 3 ,-5 3 ,-5 < +,% )
 +,% < +,% 8 +,% 8 ,-5 = ,-5 7 ,-5 < +,% 5
 +,% ; +,% J +,% 8 +,% ,
 ,-5 ,
 ,-5 = ,-5 F ,-5 < /0e  /0e  
 /0e B 01u F /0e 
 /0e B /0e * 01u F 01u * /0e )
 /0e F /0e 8 /0e B 01u G 01u 7 01u F /0e -
 /0e F /0e < /0e B /0e '
 01u &
 01u G 01u < 01u FG$

(
+
8
<
4
4
;
#:
9
#03,K
?
?
-3  
K
N
4
03
3
4L
6I
M
L
H
6+6'/',46r+   