o
    iE                     @   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   Zlegendrer   cr   nparray)selfZleg0Zleg1Zleg2Zleg3Zleg4Zleg5 r   [/home/kim/smarthome/.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$   supZreslpnZresclpmnr   r   r    test_lpn_against_clpmn%   s   z#TestLegendre.test_lpn_against_clpmnN)__name__
__module____qualname__r!   pytestmarkparametrizer-   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   r5   testingr   )	r   r5   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 )
Nr=   r   r   r   r?   Zaxisr   rA   rB   )r   rD   rE   rG   r	   arangeexpand_dimstuplerangendimr5   lenrH   r   )
r   rP   rU   rI   rJ   rK   rL   rM   r"   rN   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         ?)      ?r^         r   )        r_   g      ?)r   r(   r)   r   r*   r   )r   r,   rK   pdr   r   r    test_legacyV   s   zTestLegendreP.test_legacyN)	r.   r/   r0   r1   r2   r3   rO   r]   rc   r   r   r   r    r4   3   s    
r4   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 )TestAssocLegendrePr5   r7   r9   )r   r   r<   r8   m_maxr   r   rP   r<   r8   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 )Nr=   GzGz?r   r?   r   rV   r   r   r   r   )r   rD   rE   rG   r   rW   rX   rY   rZ   r[   concatenater
   rH   r   )r   r5   rP   rf   rI   rJ   Zp_allZ	p_all_jacZ
p_all_hessr"   mrK   rL   rM   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 )Nr=   r   r8   r   r   r   rn   r@   h㈵>:0yE>rtolrC   )	r   rD   rE   rF   rG   r
   r5   rH   r   )
r   r5   rn   rI   r"   rl   rJ   rK   rL   rM   r   r   r    rO   v   s   .
zTestAssocLegendreP.test_oder6   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 )Nr=      rg   rh   r   r?   r   r   rV   ri   rq   rr   rs   )r   rD   rE   rG   r   rk   rW   rX   rY   rZ   r[   rH   r   )r   r5   rI   rP   rf   rJ   rK   rL   rM   rl   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 )6Nr=   rg   rh   r   r   rp   r   r   rn   rj   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   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_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   r5   rn   rI   rJ   rK   rL   r   r   r    test_specific   s  

















































z TestAssocLegendreP.test_specificrJ   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   r?   r   r   r   r~   r   r   )	r   r   rW   rH   r   powwhereinfrZ   )r   rf   rP   rJ   rK   rL   r"   rl   r   r   r    test_all_limits;  s*   < z"TestAssocLegendreP.test_all_limits)r   r   r8   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 )Nr^   r   r?   r%   )
r   r   r(   r)   r   lpmnrZ   r   rH   r   )
r   rf   rP   rJ   rK   rL   r,   Zp_legacyZp_jac_legacyrl   r   r   r    rc   R  s    ""zTestAssocLegendreP.test_legacyN)r.   r/   r0   r1   r2   r3   rm   rO   rv   r   r   rc   r   r   r   r    rd   ^   s*    
 rd   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 )TestMultiAssocLegendrePr5   ))i  r9   r;   
branch_cutr   r   zz_min, z_max))y      $      $y      $@      $@)r   r   )y             $y              $@rn   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 )5Nr=   r'   r   r   )r   rn   r@   rw   r   rn   rj   r   ry   rz   r{   r   r|   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   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   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   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z_minZz_maxrn   rI   zrK   rL   r   r   r    r   d  s  
z%TestMultiAssocLegendreP.test_specificN)r.   r/   r0   r1   r2   r3   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 )	TestSphLegendrePr5   r6   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 )2Nr=   r   r   r?   rw   rj   r   ry   rz   r{   r|   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   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   thetarK   rL   r   r   r    r   	  s~  zTestSphLegendreP.test_specificre   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 )Nr=   r   r8   ro   r   r?   r   rq   rr   rs   )r   rD   rE   rF   rG   r   r   r5   rH   r   sincos)	r   r5   rI   r"   rl   r  rK   rL   rM   r   r   r    rO     s    *
zTestSphLegendreP.test_odeN)r.   r/   r0   r1   r2   r3   r   rO   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   r_   r^   r   ra      r<   )	r   r(   r)   r   r+   r   r   r   sqrt)r   r   r,   Z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 )
NrA   r   r   r^   r%   r'   r   r   r<   )	r   r(   r)   r   r+   r   r   r   lpmvr   epsrl   r"   rJ   r,   Zclp_plusZ	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 )NrA   r   r   r^   r%   r'   r   y                           ?r<   )r   r(   r)   r   r+   r   r   r   r  expr   r   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(   r)   r   r   r+   )r   r!  rl   r"   rJ   r,   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(   r)   rZ   r   r+   r   isinfallr   )r   r,   r   r"   rl   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?r^   r   r   g-C6?)rt   )r   r(   r)   r   r+   r   )	r   Zzvalsrl   r"   r,   r&  r   hZ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   r^   r`   r<   (   r,  gI?ignore)r)  r   )r   r  r   r   Z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   r^   r   r   )r   lqmnlqnr   )r   Z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   r3  r   )r   Zx0deltarJ   Z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   r3  r   r5   )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   r^   )gk+ݓ?g=yX5gW2)g|a2U?g~jt?gڊer   )r   r4  r   r   r   )r   r5  r   r   r    test_lqnP  s   zTestLegendreFunctions.test_lqnfunctionr"   rQ   	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.r=   r   r   sizer   r   r'   r#  r%   N)	r   rD   rE   rF   rG   r   r(   r)   r5   )r   r>  r"   r?  r@  rA  rI   r   r,   P_zP_d_zr   r   r    test_array_inputs_lxnU  s   z+TestLegendreFunctions.test_array_inputs_lxnzm,n)rj   r   r   )r   rR   )   rS   )   rT   )r   rB  rC  r   r   r   rD  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.r=   r   r   rE  r   r   N)r   rD   rE   rF   rG   r5   )
r   r>  rl   r"   r@  rA  rI   r   rG  rH  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 )	rL  r=   r   r   rE  r'   r#  r%   N)r   rD   rE   rG   r   r(   r)   r5   )
r   r>  rl   r"   rA  rI   r   r,   rG  rH  r   r   r    test_array_inputs_clxmn  s   "z-TestLegendreFunctions.test_array_inputs_clxmnN)r.   r/   r0   r  r"  r%  r'  r+  r.  r2  r6  r9  r<  r=  r1   r2   r3   r   r*   r4  rI  r3  rM  r+   rN  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"   rl   rn   r   r   r    assoc_legendre_factor  s   rQ  r   Fr   c                C   s   t dd|}t| |S Nr   rQ  r   	full_liker   r   rn   facr   r   r    r        r   c                C   s   t dd|}||  S Nr   r   rQ  rU  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   rQ  r  )r   r   rn   branch_signbranch_cut_signrV  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   rQ  r   r   r   rn   r]  rV  r   r   r    r     s   
r   c                C   s$   t dd|}|d|  |  d  d S Nr   r   r   r   rY  rU  r   r   r    r        r   c                C   s$   t dd|}d| |  t| |d S Nr   r   r   r`  rQ  r   rU  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   rQ  rb  r   r   r    r        r   c                C   s6   t |dkdd}tdd|}|| d| |    d S )Nr   r   r   r   r~   rR   rg  rb  r   r   r    r     rh  r   c                C   s<   t |dkdd}tdd|}| | |  t| |d d S Nr   r   r   r   r`  ra  rb  r   r   r    r        
r   c                C   s(   t dd|}|d|  |  d  |  d S Nr   r   r   r   rY  rU  r   r   r    r        r   c                C   s4   t dd|}d| d|  |  d  t| |d d S )Nr   r   r   r`  r   rf  rU  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   rg  rb  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   r`  ra  rb  r   r   r    r     s
   
r   c                C   s,   t dd|}|| |  d  t| |d d S )Nr   r   r   r`  0   rf  rU  r   r   r    r     s   
r   c                C   s:   t |dkdd}tdd|}|| d| |    |  d S Nr   r   r   r~   rR   rg  rb  r   r   r    r     rn  r   c                C   sF   t |dkdd}tdd|}|| dd|  |    t| |d d S )Nr   r   r   r   r`  rR   ra  rb  r   r   r    r        
r   c                C   s0   t dd|}|d|  |  d |  |  d  d S Nr   r   r      r   rR   rY  rU  r   r   r    r     s   $r   c                C   s8   t dd|}d| d|  |  d  |  t| |d d S )Nr   r   r   r<   r   r`  r   rf  rU  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   rR   r<   rg  rb  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   r`  ra  rb  r   r   r    r     
   
r   c                C   s&   t dd|}d| t| |  d  S Nr   ru  r   rQ  r   squarerU  r   r   r    r         r   c                C   s&   t dd|}|t| |  d  d S Nr   r   r   i  rx  rU  r   r   r    r   %  rz  r   c                C   0   t dd|}|| |  d  |  t| |d d S )Nr   r   r   r`  ro  rf  rU  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~   rR   r<   ro  rg  rb  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   r<   r`  rR   ra  rb  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 rZ  )r   r   r[  r   r  )r   r   r\  Zout11_div_zr   r   r    assoc_legendre_p_1_1_jac_div_z=  s
   (&r  c                C   
   t | S Nr   Z
zeros_like)r   r   rn   r   r   r    r   E     
r   c                C   s   t dd|}t| |S rX  rS  rU  r   r   r    r   H  rW  r   c                C   s    t dd|}||  t| |d S )Nr   r`  rQ  r  rU  r   r   r    r   M  s   
r   c                C   s<   t |dkdd}tdd|}| | |  t| |d d S r_  r   r   rQ  r  rb  r   r   r    r   S  rj  r   c                C   s   t dd|}d| |  S )Nr   r   r   rY  rU  r   r   r    r   Z  rW  r   c                C   s0   t dd|}d| d|  |  d  t| |d S re  r  rU  r   r   r    r   _  s   
r   c                C   s.   t |dkdd}tdd|}d| | |  S )Nr   r   r   r   irg  rb  r   r   r    r   e  s   r   c                C   sF   t |dkdd}tdd|}|| dd|  |    t| |d d S ri  r  rb  r   r   r    r   k  rq  r   c                C   s0   t |dkdd}tdd|}| | |  d S )Nr   r   r   r   r~   r   rg  rb  r   r   r    r   r  s   r   c                C   s(   t dd|}d| d|  |  d  d S )Nr   r   r   r   r   rY  rU  r   r   r    r   x  rl  r   c                C   s8   t dd|}d| d|  |  d  |  t| |d d S )Nr   r   r   rJ  r`  r   r  rU  r   r   r    r   }  rt  r   c                C   s:   t |dkdd}tdd|}d| | dd|  |    S rm  rg  rb  r   r   r    r     rn  r   c                C   sF   t |dkdd}tdd|}d| | d| |    |  t| |d S )Nr   r   r   -   r`  r  rb  r   r   r    r     rv  r   c                C   r|  )Nr   r   r   r`  rS   r  rU  r   r   r    r     r}  r   c                C   s:   t |dkdd}tdd|}|| dd|  |    d S rp  rg  rb  r   r   r    r     rn  r   c                C   sJ   t |dkdd}tdd|}|| dd|  |    |  t| |d d S )Nr   r   r   rJ  r   r`  rR   r  rb  r   r   r    r     r~  r   c                C   s,   t dd|}d| d|  |  d  |  d S )Nr   r   r   r<   r   r   rY  rU  r   r   r    r     s    r   c                C   s@   t dd|}d| d|  |  d |  |  d  t| |d d S )	Nr   r   r         r   r`  r   r  rU  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   rs  r<   rg  rb  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   ru  r   r`  r  rb  r   r   r    r     s
   &
r   c                C   s$   t dd|}d| | |  d  |  S )Nr   i  r   rY  rU  r   r   r    r     rd  r   c                C   s$   t dd|}|| |  d  |  d S Nr   r   r   `   rY  rU  r   r   r    r     rd  r   c                C   s<   t dd|}|d|  |  d |  |  d  t| |d d S )Nr   r   r   r   r`  ro  r  rU  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<      rg  rb  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  r`  rR   r  rb  r   r   r    r     s   "
r   c                 C   s   t | |ddtdtj  S )NTrx   r   )rQ  r   r  r   )r"   rl   r   r   r    sph_legendre_factor  s   r  c                 C   s   t dd}t| |S rR  )r  r   rT  r  rV  r   r   r    r     s   
r   c                 C   s   t dd}|t|  S rX  )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 rc  r  r   ry  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   rR   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 rk  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   ry  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   ro  r  r  r   r   r    r     r  r   c                 C   s2   t dd}| tt| d  t|  d S Nr   r~   r   rR   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   rR   r  r  r   r   r    r   *  s   
r   c              	   C   sD   t dd}|dttt|  dtt|   d  d S rr  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   r<   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  r<   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 rw  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   ro  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~   r<   r   ro  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   r<   r   rR   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 rX  )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   ry  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   ry  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   rJ  r   r   r  r   ry  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   rS   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   rJ  r   r   r   rR   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  r<   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   rs  r<   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   ro  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    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   rR   r  r  r   r   r    r    s   
r  rC  )rO  numpyr   r1   Znumpy.testingr   r   r   r   r   Zscipyr   Zscipy.specialr   r	   r
   r   r   r   r   r4   rd   r   r   r  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   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  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	
