o
    `^hE                     @   s  d dl Z d dlZd dlZd dlmZmZmZmZm	Z	 d dl
mZ d dlmZmZmZmZmZmZ G dd dZG dd dZG d	d
 d
ZG dd dZG dd dZG dd dZdd ZdddddZdddddZdddddZdddddZdddddZdddd d!Zdddd"d#Z dddd$d%Z!dddd&d'Z"dddd(d)Z#dddd*d+Z$dddd,d-Z%dddd.d/Z&dddd0d1Z'dddd2d3Z(dddd4d5Z)dddd6d7Z*dddd8d9Z+dddd:d;Z,dddd<d=Z-dddd>d?Z.dddd@dAZ/ddddBdCZ0ddddDdEZ1ddddFdGZ2ddHdIZ3ddddJdKZ4ddddLdMZ5ddddNdOZ6ddddPdQZ7ddddRdSZ8ddddTdUZ9ddddVdWZ:ddddXdYZ;ddddZd[Z<dddd\d]Z=dddd^d_Z>dddd`daZ?ddddbdcZ@ddddddeZAddddfdgZBddddhdiZCddddjdkZDddddldmZEddddndoZFddddpdqZGddddrdsZHddddtduZIddddvdwZJddddxdyZKddddzd{ZLd|d} ZMd~d ZNdd ZOdd ZPdd ZQdd ZRdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbdd Zcdd Zddd Zedd Zfdd Zgdd Zhdd Zidd Zjdd Zkdd Zldd Zmdd Zndd ZoddÄ Zpddń ZqddǄ ZrddɄ Zsdd˄ Ztdd̈́ Zuddτ Zvddф Zwddӄ ZxddՄ Zyddׄ Zzddل Z{ddۄ Z|dd݄ Z}dd߄ Z~dd ZdS )    N)assert_equalassert_almost_equalassert_array_almost_equalassert_allclosesuppress_warnings)special)
legendre_plegendre_p_allassoc_legendre_passoc_legendre_p_allsph_legendre_psph_legendre_p_allc                   @   sR   e Zd Zdd Zejdg dejdg dejdg dd	d
 ZdS )TestLegendrec                 C   s   t d}t d}t d}t d}t d}t d}t|jdg t|jddg t|jtg dd d	d
 t|jtg dd  t|jtg dd  t|jtg dd  d S )Nr                  )r   r   g       @   )decimal)r   r   r   )#   r   ir   r   g       @)?   r   ir      r   )r   legendrer   cr   nparray)selfleg0leg1leg2leg3leg4leg5 r&   _/home/air/shanriGPT/back/venv/lib/python3.10/site-packages/scipy/special/tests/test_legendre.pytest_legendre   s   





zTestLegendre.test_legendren)r   r   r   r   r   zr)g?g{ɚ)@gue#gbLd?g7f?zi)go^#@g"1?g7ܘ~ @g^26g6n"c                 C   s   t  #}|jtd t|||d  }td|||d  }W d    n1 s)w   Y  t|d |d d  t|d |d d  d S )Ncategory              ?r   r   )r   filterDeprecationWarningr   lpnclpmnr   )r   r)   r*   r+   supreslpnresclpmnr&   r&   r'   test_lpn_against_clpmn%   s   z#TestLegendre.test_lpn_against_clpmnN)__name__
__module____qualname__r(   pytestmarkparametrizer6   r&   r&   r&   r'   r      s    r   c                   @   sZ   e Zd Zejdg ddd Zejdg dejdg ddd	 Zd
d ZdS )TestLegendrePshape
   r   	   r   r      c           	      C   s   t jd}|dd|}|dd|}t||dd\}}}|j|ks%J |j|jks-J |j|jks5J d||  | d| |  ||d  |  }t jj|ddd	 d S )
N  r   d   r   r   r   diff_n绽|=atol)	r   randomdefault_rngintegersuniformr   r>   testingr   )	r   r>   rngr)   xpp_jacp_hesserrr&   r&   r'   test_ode4   s   ,zTestLegendreP.test_oden_maxr   r   r             x_shapec           
      C   s   t jd}|dd|}t||dd\}}}t |d }t j|ttd|j	d d}|j
t|f|j
 ks:J |j
|j
ksBJ |j
|j
ksJJ d||  | d| |  ||d  |  }	t jj|	ddd	 d S )
NrF   r   r   r   rH   axisr   rJ   rK   )r   rM   rN   rP   r	   arangeexpand_dimstuplerangendimr>   lenrQ   r   )
r   rY   r^   rR   rS   rT   rU   rV   r)   rW   r&   r&   r'   test_all_odeD   s   ,zTestLegendreP.test_all_odec                 C   sf   t  }|jtd tdd\}}W d    n1 sw   Y  t|g dd t|g dd d S )Nr,   r         ?)      ?rh         r   )        ri   g      ?)r   r/   r0   r   r1   r   )r   r3   rT   pdr&   r&   r'   test_legacyV   s   zTestLegendreP.test_legacyN)	r7   r8   r9   r:   r;   r<   rX   rg   rm   r&   r&   r&   r'   r=   3   s    
r=   c                   @   s   e Zd Zejdg dejdddgejdddgd	d
 Zejdg dejdddgdd Zejdg ddd Zejdg dejdddgdd Z	ejddgejddgejdddgdd Z
ejdg dejddgdd ZdS )TestAssocLegendrePr>   r@   rB   )r   r   rE   rA   m_maxr   r   rY   rE   rA   c                 C   s   t jd}|dd|}t|||dd\}}}t |d }	t j|	ttd|j	d d}	t 
t |d t | dg}
t j|
d	ttd|j	d  d}
t j|d
d}t|	|
|dd\}}}t j|| t j|| t j|| d S )NrF   GzGz?r   rH   r   r_   r   r   r   r   )r   rM   rN   rP   r   ra   rb   rc   rd   re   concatenater
   rQ   r   )r   r>   rY   rp   rR   rS   p_all	p_all_jac
p_all_hessr)   mrT   rU   rV   r&   r&   r'   	test_lpmn_   s   ""zTestAssocLegendreP.test_lpmnnormTFc           
      C   s   t jd}|dd|}|dd|}|dd|}t||||dd\}}}	|j|ks.J |j|jks6J |	j|jks>J t jjd||  |	 d| | ||d  || d||    |  d	d
d d S )NrF   r   rA   r   r   r   r{   rI   h㈵>:0yE>rtolrL   )	r   rM   rN   rO   rP   r
   r>   rQ   r   )
r   r>   r{   rR   r)   ry   rS   rT   rU   rV   r&   r&   r'   rX   v   s   .
zTestAssocLegendreP.test_oder?   c                 C   s   t jd}d}d}|dd|}t|||dd\}}}t t |d t | dg}	t |d }
t j|
tt	d|j
d d	}
t j|	d
tt	d|j
d  d	}	t jjd||  | d| | |
|
d  |	|	 d||    |  ddd d S )NrF      rq   rr   r   rH   r   r   r_   rs   r~   r   r   )r   rM   rN   rP   r   ru   ra   rb   rc   rd   re   rQ   r   )r   r>   rR   rY   rp   rS   rT   rU   rV   ry   r)   r&   r&   r'   test_all   s   "".
zTestAssocLegendreP.test_allc                 C   s  t jd}|dd|}tdd||dd\}}t j|d t||d t j|d	 d
 t j|d d
 t j|d d
 t j|d d
 t j|d d
 t j|d d
 t j|d d
 t j|d t||d t j|d t	||d t j|d d
 t j|d d
 t j|d d
 t j|d d
 t j|d d
 t j|d d
 t j|d t
||d t j|d t||d t j|d t||d t j|d t||d t j|d d
 t j|d d
 t j|d d
 t j|d  d
 t j|d! t||d t j|d" t||d t j|d# t||d t j|d$ t||d t j|d% t||d t j|d& t||d t j|d' d
 t j|d( d
 t j|d) t||d t j|d* t||d t j|d+ t||d t j|d, t||d t j|d- t||d t j|d. t||d t j|d/ t||d t j|d0 t||d t j|d1 t||d t j|d2 t||d t j|d3 t||d t j|d4 t||d t j|d t ||d t j|d	 d
 t j|d d
 t j|d d
 t j|d d
 t j|d5 d
 t j|d d
 t j|d d
 t j|d d
 t j|d t!||d t j|d t"||d t j|d d
 t j|d d
 t j|d d
 t j|d d
 t j|d d
 t j|d d
 t j|d t#||d t j|d t$||d t j|d t%||d t j|d t&||d t j|d d
 t j|d d
 t j|d d
 t j|d  d
 t j|d! t'||d t j|d" t(||d t j|d# t)||d t j|d$ t*||d t j|d% t+||d t j|d& t,||d t j|d' d
 t j|d( d
 t j|d) t-||d t j|d* t.||d t j|d+ t/||d t j|d, t0||d t j|d- t1||d t j|d. t2||d t j|d/ t3||d t j|d0 t4||d t j|d1 t5||d t j|d2 t6||d t j|d3 t7||d t j|d4 t8||d d S )6NrF   rq   rr   r   r   r}   r   r   r{   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   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   rM   rN   rP   r   rQ   r   assoc_legendre_p_0_0assoc_legendre_p_1_0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_m1assoc_legendre_p_3_0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   r>   r{   rR   rS   rT   rU   r&   r&   r'   test_specific   s  

















































z TestAssocLegendreP.test_specificrS   r   r   c              
   C   s  t |||dd\}}t|d }tj|d d df t||d | |d  d  tj|d d df t|dkt||tj d tj|d d df t|dkt||d  |d  |d  | |d  d d tj|d d df t|dkt||d  d d tj|d d df t|dkt|| tj d td|d D ]}tj|d d |f d tj|d d | f d qd S )	Nr   rH   r   r   r   r   r   r   )	r   r   ra   rQ   r   powwhereinfrd   )r   rp   rY   rS   rT   rU   r)   ry   r&   r&   r'   test_all_limits;  s*   < z"TestAssocLegendreP.test_all_limits)r   r   rA   c           
      C   s   d}t |||dd\}}t S}|jtd t|||\}}t|d D ]}	tj	||	 |d d |	f  q%t| ||\}}t|d D ]}	tj	||	 |d d |	 f  qGW d    d S 1 sew   Y  d S )Nrh   r   rH   r,   )
r   r   r/   r0   r   lpmnrd   r   rQ   r   )
r   rp   rY   rS   rT   rU   r3   p_legacyp_jac_legacyry   r&   r&   r'   rm   R  s    ""zTestAssocLegendreP.test_legacyN)r7   r8   r9   r:   r;   r<   rz   rX   r   r   r   rm   r&   r&   r&   r'   rn   ^   s*    
 rn   c                   @   s\   e Zd Zejdg dejdddgejdg dejdd	d
gdd ZdS )TestMultiAssocLegendrePr>   ))i  rB   rD   
branch_cutr   r   zz_min, z_max))y      $      $y      $@      $@)r   r   )y             $y              $@r{   TFc           
      C   s  t jd}||j|j|d||j|j|  }tdd|||dd\}}	t j|d t	|||d t j|d d	 t j|d
 d	 t j|d d	 t j|d d	 t j|d d	 t j|d d	 t j|d d	 t j|d d	 t j|d t
|||d t j|d t|||d t j|d d	 t j|d d	 t j|d d	 t j|d d	 t j|d d	 t j|d d	 t j|d t|||d t j|d t|||d t j|d t|||d t j|d t|||d t j|d d	 t j|d d	 t j|d d	 t j|d  d	 t j|d! t|||d t j|d" t|||d t j|d# t|||d t j|d$ t|||d t j|d% t|||d t j|d& t|||d t j|d' d	 t j|d( d	 t j|d) t|||d t j|d* t|||d t j|d+ t|||d t j|d, t|||d t j|d- t|||d t j|d. t|||d t j|d/ t|||d t j|d0 t|||d t j|d1 t|||d t j|d2 t|||d t j|d3 t |||d t j|d4 t!|||d t j|	d t"|||d t j|	d d	 t j|	d
 d	 t j|	d d	 t j|	d d	 t j|	d d	 t j|	d d	 t j|	d d	 t j|	d d	 t j|	d t#|||d t j|	d t$|||d t j|	d d	 t j|	d d	 t j|	d d	 t j|	d d	 t j|	d d	 t j|	d d	 t j|	d t%|||d t j|	d t&|||d t j|	d t'|||d t j|	d t(|||d t j|	d d	 t j|	d d	 t j|	d d	 t j|	d  d	 t j|	d! t)|||d t j|	d" t*|||d t j|	d# t+|||d t j|	d$ t,|||d t j|	d% t-|||d t j|	d& t.|||d t j|	d' d	 t j|	d( d	 t j|	d) t/|||d t j|	d* t0|||d t j|	d+ t1|||d t j|	d, t2|||d t j|	d- t3|||d t j|	d. t4|||d t j|	d/ t5|||d t j|	d0 t6|||d t j|	d1 t7|||d t j|	d2 t8|||d t j|	d3 t9|||d t j|	d4 t:|||d d S )5NrF   r.   r   r   )r   r{   rI   r   r   r{   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   );r   rM   rN   rP   realimagr   rQ   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )
r   r>   r   z_minz_maxr{   rR   zrT   rU   r&   r&   r'   r   d  s  
z%TestMultiAssocLegendreP.test_specificN)r7   r8   r9   r:   r;   r<   r   r&   r&   r&   r'   r   c  s    r   c                   @   s@   e Zd Zejdg ddd Zejdg ddd ZdS )	TestSphLegendrePr>   r?   c                 C   s0  t jd}|t j t j|}tdd|dd\}}t j|d t| t j|d d t j|d d t j|d	 d t j|d
 d t j|d d t j|d d t j|d d t j|d t	| t j|d t
| t j|d d t j|d d t j|d d t j|d d t j|d d t j|d d t j|d t| t j|d t| t j|d t| t j|d t| t j|d d t j|d d t j|d d t j|d d t j|d t| t j|d t| t j|d  t| t j|d! t| t j|d" t| t j|d# t| t j|d$ d t j|d% d t j|d& t| t j|d' t| t j|d( t| t j|d) t| t j|d* t| t j|d+ t| t j|d, t| t j|d- t| t j|d. t| t j|d/ t| t j|d0 t| t j|d1 t | t j|d t!| t j|d d t j|d d t j|d	 d t j|d
 d t j|d d t j|d d t j|d d t j|d t"| t j|d t#| t j|d d t j|d d t j|d d t j|d d t j|d d t j|d d t j|d t$| t j|d t%| t j|d t&| t j|d t'| t j|d d t j|d d t j|d d t j|d d t j|d t(| t j|d t)| t j|d  t*| t j|d! t+| t j|d" t,| t j|d# t-| t j|d$ d t j|d% d t j|d& t.| t j|d' t/| t j|d( t0| t j|d) t1| t j|d* t2| t j|d+ t3| t j|d, t4| t j|d- t5| t j|d. t6| t j|d/ t7| t j|d0 t8| t j|d1 t9| d S )2NrF   r   r   rH   r   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ):r   rM   rN   rP   pir   rQ   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   r>   rR   thetarT   rU   r&   r&   r'   r   	  s~  zTestSphLegendreP.test_specificro   c           	      C   s   t jd}|dd|}|dd|}|t j t j|}t|||dd\}}}|j|ks0J |j|jks8J |j|jks@J t jj	t 
|| t | | ||d  t 
| || t 
|  |  dd	d
 d S )NrF   r   rA   r|   r   rH   r   r~   r   r   )r   rM   rN   rO   rP   r   r   r>   rQ   r   sincos)	r   r>   rR   r)   ry   r)  rT   rU   rV   r&   r&   r'   rX     s    *
zTestSphLegendreP.test_odeN)r7   r8   r9   r:   r;   r<   r   rX   r&   r&   r&   r'   r     s    
 r   c                	   @   s^  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Z	 dd Z	dd Z
dd Zdd Zdd Zejdejejgejdg dejdddgejdddgejdg dd d! Zejdejgejd"g d#ejdddgejdg d$d%d& Zejdejejgejd"g d#ejdg d$d'd( Zd)S )*TestLegendreFunctionsc                 C   s  d}t  }|jtd tdd|d}W d    n1 sw   Y  t|td|dd| | d  gdt|| d d| t|| d  gddd|| d  ggtddd| gd|t|| d  dd| | d  t|| d  gddd	| ggfd
 d S )Ny      ?333333?r,   r   r   ri   rh   r   rk      rE   )	r   r/   r0   r   r2   r   r   r   sqrt)r   r   r3   clpr&   r&   r'   
test_clpmn  s"   ,<z TestLegendreFunctions.test_clpmnc              
   C   s   d}d}d}d}t  2}|jtd t|||d|  dd ||f }t|||d|  dd ||f }W d    n1 s@w   Y  tt||gtt|||t|||gd	 d S )
NrJ   r   r   rh   r,   r.   r   r   rE   )	r   r/   r0   r   r2   r   r   r   lpmvr   epsry   r)   rS   r3   clp_plus	clp_minusr&   r&   r'   test_clpmn_close_to_real_2  s   $&z0TestLegendreFunctions.test_clpmn_close_to_real_2c              
   C   s   d}d}d}d}t  2}|jtd t|||d|  dd ||f }t|||d|  dd ||f }W d    n1 s@w   Y  tt||gtt|||t	d| tj
  t|||t	d	| tj
  gd
 d S )NrJ   r   r   rh   r,   r.   r   y                           ?rE   )r   r/   r0   r   r2   r   r   r   r1  expr   r2  r&   r&   r'   test_clpmn_close_to_real_3  s   $&$ z0TestLegendreFunctions.test_clpmn_close_to_real_3c                 C   s   d}d}d}d}t  :}|jtd dD ](}tt|||d|  |d ||f t|||d|  |d ||f d qW d    d S 1 sHw   Y  d S )NgHz>r   r.   r,   r   r   r-  )r   r/   r0   r   r   r2   )r   r3  ry   r)   rS   r3   typer&   r&   r'   test_clpmn_across_unit_circle  s   $$"z3TestLegendreFunctions.test_clpmn_across_unit_circlec              
   C   s   t  S}|jtd dD ]A}tdD ]:}td|D ]2}t|||}t|d ddd f  s3J t	|||}t|d ddd f  sKJ qqqW d    d S 1 sYw   Y  d S )Nr,   r   r   r   )
r   r/   r0   rd   r   r2   r   isinfallr   )r   r3   r   r)   ry   lpr&   r&   r'   test_inf  s   "$"zTestLegendreFunctions.test_infc           	      C   s   g d}d}d}t  K}|jtd dD ]9}|D ]4}dD ]/}t|||d|  |d t|||d|  |d  | }tt||||d	 |d
d qqqW d    d S 1 sYw   Y  d S )N)y      ?      ?y            ?y            y      ?      y      ?      ?y            ?y            y      ?      r   r   r,   r   )MbP?y        MbP?rh   r   r   g-C6?)r   )r   r/   r0   r   r2   r   )	r   zvalsry   r)   r3   r:  r   happrox_derivativer&   r&   r'   test_deriv_clpmn  s*   "z&TestLegendreFunctions.test_deriv_clpmnc                 C   s   t ddd}t|dd t ddd}t|dd tjd	d
 t ddd}W d    n1 s2w   Y  |dksBt|sDJ d S d S )Nr   r   rh   rj   rE   (   r@  gI?ignore)r=  r   )r   r1  r   r   errstateisnan)r   r>  r&   r&   r'   	test_lpmv*  s   zTestLegendreFunctions.test_lpmvc                 C   sN   t ddd}t dd}t|d d |d d t|d d |d d d S )Nr   r   rh   r   r   )r   lqmnlqnr   )r   lqmnflqfr&   r&   r'   	test_lqmn6  s   zTestLegendreFunctions.test_lqmnc                 C   sR   d}d}|| || fD ]}t dd|d d }d|| d  }t|| qdS )znalgorithm for real arguments changes at 1.0001
           test against analytical result for m=2, n=1
        gqh ?gh㈵>r   r   r   )r   r   N)r   rJ  r   )r   x0deltarS   lqexpectedr&   r&   r'   test_lqmn_gt1<  s   z#TestLegendreFunctions.test_lqmn_gt1c                 C   sX   t ddd\}}t|jd t|jd t ddd\}}t|jd t|jd d S )Nr   g?)r   r   r   )r   r   )r   rJ  r   r>   )r   abr&   r&   r'   test_lqmn_shapeG  s   z%TestLegendreFunctions.test_lqmn_shapec                 C   s4   t dd}t|tg dtg dfd d S )Nr   rh   )gk+ݓ?g=yX5gW2)g|a2U?g~jt?gڊer   )r   rK  r   r   r   )r   rM  r&   r&   r'   test_lqnP  s   zTestLegendreFunctions.test_lqnfunctionr)   rZ   	z_complexFT	z_inexactinput_shape)r&   r   r   r   r   r   r   r   r   )r   r   r   c                 C   s   t jd}|r|jdd|d}n|jdd|d}|r#d| d|  }t }|jtd	 |||\}	}
W d
   n1 s>w   Y  |	j|d f| ksOJ |
j|d f| ks[J d
S )z Tests for correct output shapes.rF   r   r   sizer   r   r.   r7  r,   N)	r   rM   rN   rO   rP   r   r/   r0   r>   )r   rX  r)   rY  rZ  r[  rR   r   r3   P_zP_d_zr&   r&   r'   test_array_inputs_lxnU  s   z+TestLegendreFunctions.test_array_inputs_lxnzm,n)rt   r   r   )r   r[   )   r\   )   r]   )r&   r\  r]  r   r   r   r^  c           
      C   s   t jd}|r|jdd|d}n|jdd|d}||||\}}	|j|d |d f| ks0J |	j|d |d f| ks?J dS )+Tests for correct output shapes and dtypes.rF   r   r   r_  r   r   N)r   rM   rN   rO   rP   r>   )
r   rX  ry   r)   rZ  r[  rR   r   ra  rb  r&   r&   r'   test_array_inputs_lxmnp  s   "z,TestLegendreFunctions.test_array_inputs_lxmnc           
      C   s   t jd}|jdd|d}d| d|  }t }|jtd ||||\}}	W d   n1 s2w   Y  |j|d |d f| ksFJ |	j|d |d f| ksUJ dS )	rf  rF   r   r   r_  r.   r7  r,   N)r   rM   rN   rP   r   r/   r0   r>   )
r   rX  ry   r)   r[  rR   r   r3   ra  rb  r&   r&   r'   test_array_inputs_clxmn  s   "z-TestLegendreFunctions.test_array_inputs_clxmnN)r7   r8   r9   r0  r6  r9  r;  r?  rD  rI  rN  rS  rV  rW  r:   r;   r<   r   r1   rK  rc  rJ  rg  r2   rh  r&   r&   r&   r'   r,    sR    	r,  c                 C   s:   |rt d|  d t | |  dt | |   S dS )Nr   r   )mathr.  	factorial)r)   ry   r{   r&   r&   r'   assoc_legendre_factor  s   rk  r   Fr   c                C   s   t dd|}t| |S Nr   rk  r   	full_liker   r   r{   facr&   r&   r'   r        r   c                C   s   t dd|}||  S Nr   r   rk  ro  r&   r&   r'   r     s   r   c             
   C   s~   t |dkt t t | ddd}t |dkdd}tdd|}t t |dk| |  d d| |   }|| | | S Nr   r   r   )r   r   signbitr   rk  r.  )r   r   r{   branch_signbranch_cut_signrp  wr&   r&   r'   r     s
   ((r   c                C   s8   t |dkdd}tdd|}| | t| |d d S Nr   r   r   r   r   r   r   rk  r   r   r   r{   rw  rp  r&   r&   r'   r     s   
r   c                C   s$   t dd|}|d|  |  d  d S Nr   r   r   r   rs  ro  r&   r&   r'   r        r   c                C   s$   t dd|}d| |  t| |d S Nr   r   r   rz  rk  r   ro  r&   r&   r'   r     s   

r   c                C   s6   t |dkdd}tdd|}d| | d| |    S )Nr   r   r   r   r   r   rk  r|  r&   r&   r'   r        r   c                C   s6   t |dkdd}tdd|}|| d| |    d S )Nr   r   r   r   r   r[   r  r|  r&   r&   r'   r     r  r   c                C   s<   t |dkdd}tdd|}| | |  t| |d d S Nr   r   r   r   rz  r{  r|  r&   r&   r'   r        
r   c                C   s(   t dd|}|d|  |  d  |  d S Nr   r   r   r   rs  ro  r&   r&   r'   r        r   c                C   s4   t dd|}d| d|  |  d  t| |d d S )Nr   r   r   rz  r   r  ro  r&   r&   r'   r     s   
r   c                C   s:   t |dkdd}tdd|}d| | d| |    |  S Nr   r   r   r   r   r  r|  r&   r&   r'   r        r   c                C   sB   t |dkdd}tdd|}d| | d| |    t| |d S )Nr   r   r   r   rz  r{  r|  r&   r&   r'   r     s
   
r   c                C   s,   t dd|}|| |  d  t| |d d S )Nr   r   r   rz  0   r  ro  r&   r&   r'   r     s   
r   c                C   s:   t |dkdd}tdd|}|| d| |    |  d S Nr   r   r   r   r[   r  r|  r&   r&   r'   r     r  r   c                C   sF   t |dkdd}tdd|}|| dd|  |    t| |d d S )Nr   r   r   r   rz  r[   r{  r|  r&   r&   r'   r        
r   c                C   s0   t dd|}|d|  |  d |  |  d  d S Nr   r   r      r   r[   rs  ro  r&   r&   r'   r     s   $r   c                C   s8   t dd|}d| d|  |  d  |  t| |d d S )Nr   r   r   rE   r   rz  r   r  ro  r&   r&   r'   r        
r   c                C   sJ   t |dkdd}tdd|}d| | dd|  |   |  |  d  d S )	Nr   r   r   r   r   r   r[   rE   r  r|  r&   r&   r'   r     s   ,r   c                C   sF   t |dkdd}tdd|}d| | d| |    |  t| |d S )Nr   r   r   r   i   rz  r{  r|  r&   r&   r'   r     
   
r   c                C   s&   t dd|}d| t| |  d  S Nr   r  r   rk  r   squarero  r&   r&   r'   r         r   c                C   s&   t dd|}|t| |  d  d S Nr   r   r   i  r  ro  r&   r&   r'   r   %  r  r   c                C   0   t dd|}|| |  d  |  t| |d d S )Nr   r   r   rz  r  r  ro  r&   r&   r'   r   *     
r   c                C   sF   t |dkdd}tdd|}|| dd|  |   |  |  d  d S )	Nr   r   r   r   r   r[   rE   r  r  r|  r&   r&   r'   r   0  s   (r   c                C   sJ   t |dkdd}tdd|}|| dd|  |    |  t| |d d S )Nr   r   r   r   rE   rz  r[   r{  r|  r&   r&   r'   r   6     
r   c              
   C   sZ   t |dkt t t | ddd}| t t |dk| |  d d| |    }|S rt  )r   r   ru  r   r.  )r   r   rv  out11_div_zr&   r&   r'   assoc_legendre_p_1_1_jac_div_z=  s
   (&r  c                C   
   t | S Nr   
zeros_like)r   r   r{   r&   r&   r'   r   E     
r   c                C   s   t dd|}t| |S rr  rm  ro  r&   r&   r'   r   H  rq  r   c                C   s    t dd|}||  t| |d S )Nr   rz  rk  r  ro  r&   r&   r'   r   M  s   
r   c                C   s<   t |dkdd}tdd|}| | |  t| |d d S ry  r   r   rk  r  r|  r&   r&   r'   r   S  r  r   c                C   s   t dd|}d| |  S )Nr   r   r   rs  ro  r&   r&   r'   r   Z  rq  r   c                C   s0   t dd|}d| d|  |  d  t| |d S r  r  ro  r&   r&   r'   r   _  s   
r   c                C   s.   t |dkdd}tdd|}d| | |  S )Nr   r   r   r   ir  r|  r&   r&   r'   r   e  s   r   c                C   sF   t |dkdd}tdd|}|| dd|  |    t| |d d S r  r  r|  r&   r&   r'   r   k  r  r   c                C   s0   t |dkdd}tdd|}| | |  d S )Nr   r   r   r   r   r   r  r|  r&   r&   r'   r   r  s   r   c                C   s(   t dd|}d| d|  |  d  d S )Nr   r   r   r   r   rs  ro  r&   r&   r'   r   x  r  r   c                C   s8   t dd|}d| d|  |  d  |  t| |d d S )Nr   r   r   rd  rz  r   r  ro  r&   r&   r'   r   }  r  r   c                C   s:   t |dkdd}tdd|}d| | dd|  |    S r  r  r|  r&   r&   r'   r     r  r   c                C   sF   t |dkdd}tdd|}d| | d| |    |  t| |d S )Nr   r   r   -   rz  r  r|  r&   r&   r'   r     r  r   c                C   r  )Nr   r   r   rz  r\   r  ro  r&   r&   r'   r     r  r   c                C   s:   t |dkdd}tdd|}|| dd|  |    d S r  r  r|  r&   r&   r'   r     r  r   c                C   sJ   t |dkdd}tdd|}|| dd|  |    |  t| |d d S )Nr   r   r   rd  r   rz  r[   r  r|  r&   r&   r'   r     r  r   c                C   s,   t dd|}d| d|  |  d  |  d S )Nr   r   r   rE   r   r   rs  ro  r&   r&   r'   r     s    r   c                C   s@   t dd|}d| d|  |  d |  |  d  t| |d d S )	Nr   r   r         r   rz  r   r  ro  r&   r&   r'   r     s   "
r   c                C   s>   t |dkdd}tdd|}d| | dd|  |    |  S )Nr   r   r   r   r   r  rE   r  r|  r&   r&   r'   r         r   c                C   sR   t |dkdd}tdd|}d| | dd|  |   |  |  d  t| |d S )Nr   r   r   r   r  r   rz  r  r|  r&   r&   r'   r     s
   &
r   c                C   s$   t dd|}d| | |  d  |  S )Nr   i  r   rs  ro  r&   r&   r'   r     r~  r   c                C   s$   t dd|}|| |  d  |  d S Nr   r   r   `   rs  ro  r&   r&   r'   r     r~  r   c                C   s<   t dd|}|d|  |  d |  |  d  t| |d d S )Nr   r   r   r   rz  r  r  ro  r&   r&   r'   r     s   
r   c                C   s>   t |dkdd}tdd|}|| dd|  |    |  d S )Nr   r   r   r   r   rE      r  r|  r&   r&   r'   r     r  r   c                C   sR   t |dkdd}tdd|}|| dd|  |   |  |  d  t| |d d S )	Nr   r   r   r   r  r  rz  r[   r  r|  r&   r&   r'   r     s   "
r   c                 C   s   t | |ddtdtj  S )NTr   r   )rk  r   r.  r   )r)   ry   r&   r&   r'   sph_legendre_factor  s   r  c                 C   s   t dd}t| |S rl  )r  r   rn  r)  rp  r&   r&   r'   r     s   
r   c                 C   s   t dd}|t|  S rr  )r  r   r+  r  r&   r&   r'   r     s   
r   c                 C   s    t dd}| tt|  S )Nr   r  r   absr*  r  r&   r&   r'   r     s   
r   c                 C   s"   t dd}|tt|  d S Nr   r   r   r  r  r&   r&   r'   r     s   
r   c                 C   s*   t dd}|dtt|  d  d S r}  r  r   r  r+  r  r&   r&   r'   r        
 r   c                 C   s,   t dd}d| tt|  t|  S )Nr   r   r   r  r   r  r*  r+  r  r&   r&   r'   r        
"r   c                 C   s&   t dd}d| dtt|   S )Nr   r   r   r  r  r&   r&   r'   r        
r   c                 C   s&   t dd}|dtt|   d S )Nr   r   r   r[   r  r  r&   r&   r'   r     r  r   c                 C   s,   t dd}|t|  tt|  d S )Nr   r   )r  r   r+  r  r*  r  r&   r&   r'   r     r  r   c                 C   s4   t dd}|dtt|  d  t|  d S r  r  r  r&   r&   r'   r        
r   c                 C   s>   t dd}d| dtt|  d  tt|  d S )Nr   r   r   r   r   r  r   r  r+  r  r*  r  r&   r&   r'   r    s   
r  c                 C   s0   t dd}d| tt| d  t|  S )Nr   r   r   r  r  r&   r&   r'   r    s   
r  c                 C   s*   t dd}d| ttt| d S )Nr   r  r  r   powerr  r*  r  r&   r&   r'   r    r  r  c                 C   s*   t dd}|ttt| d d S )Nr   r   r  r  r  r&   r&   r'   r    r  r  c                 C   s2   t dd}| tt| d  t|  d S Nr   r   r   r[   r  r  r&   r&   r'   r  $  s   
r  c                 C   s:   t dd}|dtt|  d  tt|  d S )Nr   r   r   r   r[   r  r  r&   r&   r'   r  *  s   
r  c              	   C   sD   t dd}|dttt|  dtt|   d  d S r  r  r  r&   r&   r'   r  0  s   
r  c                 C   sH   t dd}d| dtt|  d  t|  tt|  d S )Nr   r   rE   r   r   r  r  r&   r&   r'   r  6  s   
r  c                 C   sB   t dd}d| dtt|  d  tt| d  d S )Nr   r   r  rE   r   r  r  r&   r&   r'   r	  <  s   
r	  c                 C   s4   t dd}d| ttt| d t|  S )Nr   r   r  r   r  r  r*  r+  r  r&   r&   r'   r
  B     
*r
  c                 C   s,   t dd}d| ttt| d  S r  r  r  r&   r&   r'   r  G  r  r  c                 C   s,   t dd}|ttt| d  d S r  r  r  r&   r&   r'   r  L  r  r  c                 C   s4   t dd}|ttt| d t|  d S )Nr   r   r   r  r  r  r&   r&   r'   r  Q  r  r  c                 C   s@   t dd}| dtt|  d  tt| d  d S )Nr   r   rE   r   r  r  r  r&   r&   r'   r  W  s   
r  c                 C   sD   t dd}|dtt|  d  t|  tt|  d S )Nr   r   rE   r   r[   r  r  r&   r&   r'   r  ]  s   
r  c                 C   r  r  r  )r)  r&   r&   r'   r  c  r  r  c                 C   s   t dd}| t|  S rr  )r  r   r*  r  r&   r&   r'   r  f  s   
r  c                 C   s4   t dd}| t|  dtt| d d  S )Nr   r   r  r   r+  	heavisider*  r  r&   r&   r'   r  k  r  r  c                 C   s6   t dd}|t|  dtt| d d  d S r  r  r  r&   r&   r'   r  p     
,r  c                 C   s&   t dd}d| t|  t|  S )Nr   r   r   )r  r   r+  r*  r  r&   r&   r'   r  u  r  r  c                 C   sX   t dd}d| tt|  dtt| d d  tt| t|    S )Nr   r   r   r  r   r  r+  r  r*  r  r  r&   r&   r'   r  z  s   
r  c                 C   s&   t dd}d| t|  t|  S )Nr   r-  r  r   r*  r+  r  r&   r&   r'   r    r  r  c                 C   s&   t dd}|t|  t|  d S )Nr   r   r   r  r  r&   r&   r'   r    r  r  c                 C   sZ   t dd}| tt|  dtt| d d  tt| t|    d S )Nr   r   r   r  r  r&   r&   r'   r    s   
r  c                 C   s8   t dd}d| ddtt|    t|  d S )Nr   r   r   r   r   r  r   r  r+  r*  r  r&   r&   r'   r    s   
.r  c                 C   sR   t dd}d| ddtt|    t|  dtt| d d  d S )Nr   r   rd  r   r   r  r   r  r+  r  r*  r  r&   r&   r'   r    s   
(r  c                 C   s4   t dd}d| dtt|  d  t|  S )Nr   r   r   r   r  r  r&   r&   r'   r    r  r  c                 C   s6   t dd}d| tt|  t|  t|  S )Nr   ir  r  r&   r&   r'   r    r  r  c                 C   s6   t dd}|tt|  t|  t|  d S )Nr   r   r\   r  r  r&   r&   r'   r    r  r  c                 C   s4   t dd}|dtt|  d  t|  d S r  r  r  r&   r&   r'   r    r  r  c                 C   sP   t dd}| ddtt|    t|  dtt| d d  d S )Nr   r   rd  r   r   r   r[   r  r  r&   r&   r'   r    s   
r  c                 C   sB   t dd}d| dtt|  d  t|  t|  d S )Nr   r   r  rE   r   r   r  r  r&   r&   r'   r     s   
r   c              
   C   sb   t dd}d| ddtt|   dttt|    dtt| d d  d S )Nr   r   r   r   r  r  r   r  r  r&   r&   r'   r!    s   
r!  c                 C   s>   t dd}d| dtt|  d  t|  t|  S )Nr   r   r  rE   r  r  r&   r&   r'   r"    s   
r"  c                 C   sD   t dd}d| dtt|  d  tt|  t|  S )Nr   r   r  r   r  r  r&   r&   r'   r#    s   
r#  c                 C   s:   t dd}d| tt| d  t|  t|  S )Nr   i\r   r  r  r&   r&   r'   r$    s   
r$  c                 C   s<   t dd}| tt| d  t|  t|  d S r  r  r  r&   r&   r'   r%    s   
r%  c                 C   sD   t dd}|dtt|  d  tt|  t|  d S )Nr   r   r   r  r  r  r&   r&   r'   r&    s   
r&  c                 C   s>   t dd}|dtt|  d  t|  t|  d S )Nr   r   rE   r  r  r  r&   r&   r'   r'    s   
$r'  c              
   C   s`   t dd}| ddtt|   dttt|    dtt| d d  d S )	Nr   r   r   r  r  r   r   r[   r  r  r&   r&   r'   r(    s   
r(  r]  )ri  numpyr   r:   numpy.testingr   r   r   r   r   scipyr   scipy.specialr   r	   r
   r   r   r   r   r=   rn   r   r   r,  rk  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r&   r&   r&   r'   <module>   s     +   & 0 h	
