o
    Ö­j£%  ã                   @   sŒ   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 d dlmZ d dl mZmZ dd„ Zd	d
„ Zdd„ Zdd„ Zdd„ ZdS )é    N)Úassert_equalÚassert_almost_equalÚassert_allcloseÚassert_Úsuppress_warnings)Úassert_func_equal)Ú
ellip_harmÚellip_harm_2Úellip_normal)ÚIntegrationWarning©ÚsqrtÚpic            	   	      s  dd„ ‰ dd„ ‰dd„ ‰‡‡fdd„} ‡ fd	d
„}dt dƒddt dƒdddfdt dƒddt dƒdddfg}tƒ �@}| td¡ | td¡ |D ](}t|ƒ}||Ž }| |Ž \}}t||dd|d� tt|| ƒdt|ƒ k |ƒ qGW d   ƒ d S 1 s{w   Y  d S )Nc                 S   s–   t | d |d  |d  ||  ƒ}t | d | |d |  ||d   |||   ƒ}t | d | ||d   ||d   |||   ƒ}|||fS )Né   ©r   )Úlambda1ÚmuÚnuÚh2Úk2ÚxÚyÚz© r   ú`/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/special/tests/test_ellip_harm.pyÚchange_coefficient   s   $44
z0test_ellip_potential.<locals>.change_coefficientc                 S   s0   t ||||| ƒt |||||ƒ t |||||ƒ S ©N)r   ©r   r   r   ÚnÚpr   r   r   r   r   Úsolid_int_ellip   s   ÿz-test_ellip_potential.<locals>.solid_int_ellipc                 S   s0   t ||||| ƒt|||||ƒ t|||||ƒ S r   ©r	   r   r   r   r   r   Úsolid_int_ellip2   s
   ÿÿz.test_ellip_potential.<locals>.solid_int_ellip2c                    s²   d}d}	t dƒD ]L}
d}t dd|
 d ƒD ])}|dt ˆ ||||
|||ƒˆ| |||
|||ƒ  t|||
|ƒd|
 d   7 }qt|ƒd| t|	ƒ k rP |	|fS |	|7 }	q|	|fS )Nç:Œ0âŽyE>r   é   é   r   é   gš™™™™™¹?)Úranger   r
   Úabs)r   Úmu1Únu1Úlambda2Úmu2Únu2r   r   ÚtolÚsum1r   Úxsumr   )r    r"   r   r   Ú	summation   s   ÿþ
ÿz'test_ellip_potential.<locals>.summationc                    s\   ˆ | ||||ƒ\}}	}
ˆ |||||ƒ\}}}t || d ||	 d  ||
 d  ƒ}d| S )Nr   r%   r   )r   r)   r*   r+   r,   r-   r   r   Úx1Úy1Úz1Úx2Úy2Úz2Úres)r   r   r   Ú	potential,   s   (z'test_ellip_potential.<locals>.potentialéx   é   r   é)   é   é   é   é   gš™™™™™	@é   é   g333333@r$   ú The occurrence of roundoff errorz"The maximum number of subdivisionsr   r#   )ÚatolÚrtolÚerr_msgé
   )r   r   Úfilterr   Úreprr   r   r(   )	r1   r9   ÚptsÚsupr   rF   ÚexactÚresultÚ	last_termr   )r   r    r"   r   Útest_ellip_potential   s&   þ û"ürO   c                     sÞ  dd„ } dd„ }dd„ }dd„ }d	d
„ }dd„ }dd„ }dd„ }dd„ }dd„ }	dd„ }
dd„ }dd„ }dd„ }dd„ }dd „ }i d!| “d"|“d#|“d$|“d%|“d&|“d'|“d(|“d)|“d*|
“d+|	“d,|“d-|“d.|“d/|“d0|“‰‡fd1d2„‰ t  ˆ ¡‰ ‡ fd3d4„}t j d5¡ t jjd6d7d8�}|d7t jjd6|jd8�  }g }td9ƒD ]!}td7d:| d: ƒD ]}| ||t  |j|¡t  |j|¡f¡ q¯q¤t  	|¡}t
ƒ �}| td;¡ tt||d<d=� W d   ƒ d S 1 sèw   Y  d S )>Nc                 S   s   dt  S )Nr&   ©r   ©r   r   r   r   r   ÚG01E   s   ztest_ellip_norm.<locals>.G01c                 S   s   dt  |  | d S ©Nr&   é   rP   rQ   r   r   r   ÚG11H   ó   ztest_ellip_norm.<locals>.G11c                 S   s   dt  |  ||   d S rS   rP   rQ   r   r   r   ÚG12K   ó   ztest_ellip_norm.<locals>.G12c                 S   s   dt  | ||   d S rS   rP   rQ   r   r   r   ÚG13N   rX   ztest_ellip_norm.<locals>.G13c                 S   s˜   d| d |d   d|  | | d |d    d| d  |d   t | d |d  | |  ƒd| d |d   d|  | | |     }dt d | S )Nr   r&   é   éþÿÿÿrT   r@   é•  r   ©r   r   r8   r   r   r   ÚG22Q   ó   BBÿztest_ellip_norm.<locals>.G22c                 S   s˜   d| d |d   d|  | | d |d    d| d  |d   t | d |d  | |  ƒd| d |d   d|  | | |     }dt d | S )Nr   r&   rZ   rT   r@   r\   r   r]   r   r   r   ÚG21V   r_   ztest_ellip_norm.<locals>.G21c                 S   s    dt  | d  | ||   d S ©Nr&   r   r>   rP   rQ   r   r   r   ÚG23[   ó    ztest_ellip_norm.<locals>.G23c                 S   s    dt  |  |d  ||   d S ra   rP   rQ   r   r   r   ÚG24^   rc   ztest_ellip_norm.<locals>.G24c                 S   s    dt  |  | ||  d  d S ra   rP   rQ   r   r   r   ÚG25a   rc   ztest_ellip_norm.<locals>.G25c                 S   s¨   d| d |d   d|  | | d |d    d| d  |d   t d| d |d   d|  |  ƒd| d |d   d	|  | | |     }dt d
 | |  | S )Nr@   r&   é$   r   é.   é   éøÿÿÿrT   rB   éE3  r   r]   r   r   r   ÚG32d   ó   B4ÿÿztest_ellip_norm.<locals>.G32c                 S   s¨   d| d |d   d|  | | d |d    d| d  |d   t d| d |d   d|  |  ƒd| d |d   d	|  | | |     }dt d
 |  | | S )Nr@   r&   rf   r   rg   rh   é   rT   rB   rj   r   r]   r   r   r   ÚG31j   rl   ztest_ellip_norm.<locals>.G31c                 S   sÀ   d| d  d|d   d| d  |  d|  |d   d| d  |d   t | d d|d   | |  ƒd	| d  d
|d   d| d  |  d|  |d     }dt d |  ||   | S )NrZ   r&   r@   é   rT   é   é"   r   iúÿÿÿrm   é	   é   rj   r   r]   r   r   r   ÚG34p   ó   JDÿÿztest_ellip_norm.<locals>.G34c                 S   sÀ   d| d  d|d   d| d  |  d|  |d   d| d  |d   t | d d|d   | |  ƒd| d  d	|d   d
| d  |  d|  |d     }dt d |  ||   | S )NrZ   r&   r@   ro   rT   rp   rq   r   rm   rr   rs   rj   r   r]   r   r   r   ÚG33v   ru   ztest_ellip_norm.<locals>.G33c                 S   sÀ   d| d  d|d   d| d  |  d|  |d   d| d  |d   t d| d  |d  | |  ƒd	| d  d|d   d
| d  |  d|  |d     }dt d | ||   | S )Nr@   r&   rZ   rp   rT   ro   rq   r   ri   rs   rr   rj   r   r]   r   r   r   ÚG36|   ru   ztest_ellip_norm.<locals>.G36c                 S   sÀ   d| d  d|d   d| d  |  d|  |d   d| d  |d   t d| d  |d  | |  ƒd	| d  d|d   d
| d  |  d|  |d     }dt d | ||   | S )Nr@   r&   rZ   rp   rT   ro   rq   r   rm   rs   rr   rj   r   r]   r   r   r   ÚG35‚   ru   ztest_ellip_norm.<locals>.G35c                 S   s(   dt  | d  |d  ||  d  d S )Nr&   r   éi   rP   rQ   r   r   r   ÚG37ˆ   s   (ztest_ellip_norm.<locals>.G37©r   r%   ©r%   r%   ©r%   r   ©r%   rT   ©r   r%   ©r   r   ©r   rT   ©r   r&   ©r   é   ©rT   r%   ©rT   r   ©rT   rT   ©rT   r&   ©rT   r„   ©rT   rZ   ©rT   rh   c                    s   ˆ | |f }|||ƒS r   r   )r   r   r   r   Úfunc)Úknown_funcsr   r   Ú_ellip_norm�   s   
z$test_ellip_norm.<locals>._ellip_normc                    s   ˆ ||| |ƒS r   r   )r   r   r   r   )rŽ   r   r   Úellip_normal_known•   s   z+test_ellip_norm.<locals>.ellip_normal_knownéÒ  ç      à?r%   ©Úsizer&   r   rC   çê-�™—q=©rE   )ÚnpÚ	vectorizeÚrandomÚseedÚparetor“   r'   ÚappendÚfullÚarrayr   rH   r   r   r
   )rR   rU   rW   rY   r^   r`   rb   rd   re   rk   rn   rt   rv   rw   rx   rz   r�   r   r   Úpointsr   r   rK   r   )rŽ   r�   r   Útest_ellip_normC   sr   ÿÿÿÿþþþþýýýý
(ÿ
"þrŸ   c                  C   sÌ   dd„ } t ƒ �U}| td¡ t| dddƒddtdƒ  ƒ ttddd	ddƒd
ƒ ttddd	d	dƒdƒ ttddd	ddƒdƒ ttddd	ddƒdƒ ttddd	ddƒdƒ W d   ƒ d S 1 s_w   Y  d S )Nc              	   S   sp   t | |dd|ƒdt| |dd|ƒ  t | |dd|ƒdt| |dd|ƒ   t | |dd|ƒdt| |dd|ƒ   }|S )Nr%   rT   r   r!   )r   r   Úsr8   r   r   r   ÚI1©   s   ""ÿ"þztest_ellip_harm_2.<locals>.I1rC   r„   rm   rG   r%   i$"  r   g$Ðâ ;´Q?g¬¾yoVQ?rT   g©Ã<i`Q?r&   gÏ™ar~Q?gTz�LÛ°Q?)r   rH   r   r   r   r	   )r¡   rK   r   r   r   Útest_ellip_harm_2§   s   "÷r¢   c                     sÖ  dd„ } dd„ }dd„ }dd„ }d	d
„ }dd„ }dd„ }dd„ }dd„ }dd„ }	dd„ }
dd„ }dd„ }dd„ }dd„ }dd „ }t td!d"d#d$d%d#d#ƒtd!d"d#d$d%ƒƒ i d&| “d'|“d(|“d)|“d*|“d+|“d,|“d-|“d.|“d/|	“d0|
“d1|“d2|“d3|“d4|“d5|“‰ g ‰‡ ‡fd6d7„}tj d8¡}|jd9d:d;�}|d#|jd9|jd;�  }|jd9|jd;�}g }t|jƒD ]%}td<ƒD ]}td#d$| d$ ƒD ]}| || || |||| f¡ qÇq¼q¶t 	|¡}t
t||d=d>� d S )?Nc                 S   s   dS )Nr%   r   ©r   r   r    r   r   r   ÚE01½   ó   ztest_ellip_harm.<locals>.E01c                 S   s   |S r   r   r£   r   r   r   ÚE11À   r¥   ztest_ellip_harm.<locals>.E11c                 S   s   t t|| |  ƒƒS r   ©r   r(   r£   r   r   r   ÚE12Ã   rV   ztest_ellip_harm.<locals>.E12c                 S   s   t t|| | ƒƒS r   r§   r£   r   r   r   ÚE13Æ   rV   ztest_ellip_harm.<locals>.E13c                 S   s8   || d| | t t| | | |  d|  |  ƒƒ   S ©NgUUUUUUÕ?rT   r§   r£   r   r   r   ÚE21É   ó   8ztest_ellip_harm.<locals>.E21c                 S   s8   || d| | t t| | | |  d|  |  ƒƒ   S rª   r§   r£   r   r   r   ÚE22Ì   r¬   ztest_ellip_harm.<locals>.E22c                 S   s   |t t|| |  ƒƒ S r   r§   r£   r   r   r   ÚE23Ï   rX   ztest_ellip_harm.<locals>.E23c                 S   s   |t t|| | ƒƒ S r   r§   r£   r   r   r   ÚE24Ò   rX   ztest_ellip_harm.<locals>.E24c                 S   s    t t|| |  || |  ƒƒS r   r§   r£   r   r   r   ÚE25Õ   rc   ztest_ellip_harm.<locals>.E25c                 S   sD   || | |d d| |  t d| |  | |  d|  |  ƒ   S ©Nr„   r   r&   r>   r   r£   r   r   r   ÚE31Ø   ó   .
ÿztest_ellip_harm.<locals>.E31c                 S   sD   || | |d d| |  t d| |  | |  d|  |  ƒ   S r±   r   r£   r   r   r   ÚE32Ü   r³   ztest_ellip_harm.<locals>.E32c              
   S   sX   t t|| |  ƒƒ|| d| d|  t t| d|  | d|   d|  |  ƒƒ    S ©Nçš™™™™™É?r   r„   r§   r£   r   r   r   ÚE33à   ó   *ÿ
ÿ
ÿztest_ellip_harm.<locals>.E33c              
   S   sX   t t|| |  ƒƒ|| d| d|  t t| d|  | d|   d|  |  ƒƒ    S rµ   r§   r£   r   r   r   ÚE34ä   r¸   ztest_ellip_harm.<locals>.E34c              	   S   sX   t t|| | ƒƒ|| dd|  | t td|  | d|  |  d|  |  ƒƒ    S rµ   r§   r£   r   r   r   ÚE35è   ó   .ÿ
ÿ
ÿztest_ellip_harm.<locals>.E35c              	   S   sX   t t|| | ƒƒ|| dd|  | t td|  | d|  |  d|  |  ƒƒ    S rµ   r§   r£   r   r   r   ÚE36ì   r»   ztest_ellip_harm.<locals>.E36c                 S   s$   |t t|| |  || |  ƒƒ S r   r§   r£   r   r   r   ÚE37ð   s   $ztest_ellip_harm.<locals>.E37r„   rm   r%   r   g      @r{   r|   r}   r~   r   r€   r�   r‚   rƒ   r…   r†   r‡   rˆ   r‰   rŠ   r‹   c                    sN   t | jƒD ]}ˆ t|| ƒt|| ƒf }ˆ || | || || ƒ¡ qˆS r   )r'   r“   Úintr›   )r   r   r   r   r    ÚirŒ   ©r�   Ú	point_refr   r   Úellip_harm_knowný   s    z)test_ellip_harm.<locals>.ellip_harm_knownr�   r‘   é   r’   r&   r”   r•   )r   r   r–   r˜   ÚRandomStaterš   r“   r'   r›   r�   r   )r¤   r¦   r¨   r©   r«   r­   r®   r¯   r°   r²   r´   r·   r¹   rº   r¼   r½   rÂ   Úrngr   r   r    rž   r¿   r   r   r   rÀ   r   Útest_ellip_harm»   sv   ÿÿÿÿÿþþþþýýýý"ÿÿ
rÆ   c                  C   s2   d} d|  d }t dd| |dƒ}t |¡sJ ‚d S )Nr&   r   r‘   g       @r¶   )r   r–   Úisnan)r   r   rM   r   r   r   Útest_ellip_harm_invalid_p  s   rÈ   )Únumpyr–   Únumpy.testingr   r   r   r   r   Úscipy.special._testutilsr   Úscipy.specialr   r	   r
   Úscipy.integrater   r   r   rO   rŸ   r¢   rÆ   rÈ   r   r   r   r   Ú<module>   s   4dU