
    doi4                     :   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/land-ocr/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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+   r,   N)r-   r.   r/   r0   rq   rc   rd   re   r   rP   r   r   r   r1   r,   r+   r(   rg   rg   F   sy   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 + , +8r+   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)TestMultiAssocLegendrePiE  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_specificF  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   E  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~   r6  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   rJ  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   rJ  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ڊerI  r   r   )r   rK  r   r   r    )r!   rM  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                 ?r@  categoryN)
r   rD   rE   rF   rG   warningscatch_warningssimplefilterDeprecationWarningr5   )
r!   r^  rJ   r_  r`  ra  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,   rb  rc  r   r   r   rd  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   rf  r   r   N)r   rD   rE   rF   rG   r5   )
r!   r^  r~   rJ   r`  ra  rI   rn   ro  rp  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)
rv  r>   r   r   rf  r   rh  r@  ri  N)	r   rD   rE   rG   rk  rl  rm  rn  r5   )	r!   r^  r~   rJ   ra  rI   rn   ro  rp  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__rF  rN  rT  rY  r\  rc   rd   re   r   rK  rq  rJ  rw  rz  r1   r,   r+   r(   r=  r=    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+   r=  c                     U(       aQ  [         R                  " SU -  S-   [         R                  " X-
  5      -  S[         R                  " X-   5      -  -  5      $ g)Nr   r   )mathsqrt	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   /      
1d
+C<<r+   c                $    [        SSU5      nX0-  $ Nr   r   r  r  s       r(   rk   rk   4  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   9  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   B  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   I  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   N  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   T  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   Z  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   `  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   g  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   l  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   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   x  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   rs  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      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   rs  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   -  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   2  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   8  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   >  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   E  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   J  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   O  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   U  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   [  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  b  s%     D1BGGAI4FFFr+   c                 F    [        SS5      n[        R                  " X5      $ r  )r  r   r  r6  r  s     r(   r  r  e  s    
a
#C<<##r+   c                 L    [        SS5      nU[        R                  " U 5      -  $ r  )r  r   r:  r  s     r(   r  r  j  s!    
a
#Cr+   c                 v    [        SS5      nU* [        R                  " [        R                  " U 5      5      -  $ )Nr   r  r   absr9  r  s     r(   r  r  o  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  t  s/    
a
$Cu&&**r+   c                     [        SS5      nUS[        R                  " [        R                  " U 5      5      -  S-
  -  S-  $ r  r  r   r  r:  r  s     r(   r  r  y  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  r9  r:  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   r:  r  r9  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  r:  r  r9  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  r9  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  r9  r:  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  )r6  s    r(   r  r    s    ==r+   c                 N    [        SS5      nU* [        R                  " U 5      -  $ r  )r  r   r9  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   r:  	heavisider9  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   r:  r9  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  r:  r  r9  r  r  s     r(   r"  r"    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   r9  r:  r  s     r(   r#  r#    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(   r$  r$    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(   r%  r%    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  r:  r9  r  s     r(   r&  r&    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   rs  r   r   r  r   r  r:  r  r9  r  s     r(   r'  r'  !  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(   r(  r(  '  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(   r)  r)  ,  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(   r*  r*  1  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(   r+  r+  6  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   rs  r   r   r   rT   r  r  s     r(   r,  r,  ;  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-  B  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.  H  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/  O  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(   r0  r0  U  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(   r1  r1  [  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(   r2  r2  a  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(   r3  r3  g  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(   r4  r4  m  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(   r5  r5  s  s    
a
$CDBbiiu666
RYYryy/001 2	
R\\"&&-+	+a	/1345 6r+   rc  )~r~  rk  numpyr   rc   numpy.testingr   r   scipyr   scipy.specialr   r   r   r	   r
   r   r   r3   rg   r   r  r=  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!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r,   r+   r(   <module>r0     s       7 > >
- -&!7 !7H|8 |8~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+   