o
    Ö­jX<  ã                   @   s*  d dl mZ d dlZd dlmZmZmZ d dlZd dl	Z	d dl
mZmZmZ de ej¡j Zejdddd	�Zejd
d ddd�Ze eddd…  d geg¡Zej deeg¡ej dejejejejg¡dd„ ƒƒZej deeg¡ej dejejejg¡dd„ ƒƒZ G dd„ dƒZ!G dd„ dƒZ"dS )é    )Ú	factorialN)Úassert_allcloseÚassert_equalÚassert_array_less)ÚAAAÚFloaterHormannInterpolatorÚBarycentricInterpolatorg     ˆÃ@éÿÿÿÿé   éè  ©Únumiñÿÿÿé
   iô  )Úbaser   ÚmethodÚdtypec                 C   s.  t  |¡jd d }| tu r|d9 }t j d¡}t jdd|d�}| |t  |¡ƒ}|jdddd� 	|¡}t
||ƒt  |¡|d� ||ƒj|ksHJ ‚| tu rf|jj|ksTJ ‚|jj|ks\J ‚|jj|jjksfJ ‚|jj|ksnJ ‚| ¡ jt  |d	¡ks{J ‚| ¡ jt  |d	¡ksˆJ ‚| ¡ jt  |d	¡ks•J ‚d S )
Ng      è?éd   l   ´d³�w¤r	   r
   ©r   ©Úsize©Úrtolù              ð?)ÚnpÚfinfoÚepsr   ÚrandomÚdefault_rngÚlinspaceÚsinÚuniformÚastyper   r   r   Úsupport_pointsÚsupport_valuesÚerrorsÚrealÚweightsÚpolesÚresult_typeÚresiduesÚroots)r   r   r   ÚrngÚzÚrÚz2© r/   úg/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/interpolate/tests/test_bary_rational.pyÚtest_dtype_preservation(   s"   r1   c                 C   sì   t jd|d�}| ||ƒ}|jjt  |d¡ksJ ‚| tu r@|jjt  |d¡ks(J ‚|jjt  |d¡ks4J ‚|jjt  |d¡ks@J ‚| 	¡ jt  |d¡ksMJ ‚| 
¡ jt  |d¡ksZJ ‚| ¡ jt  |d¡ksgJ ‚||ƒjt  |d¡kstJ ‚d S )Nr   r   ç      ð?r   )r   Úaranger&   r   r(   r   r"   r#   r$   r'   r)   r*   )r   r   r,   r-   r/   r/   r0   Útest_integer_promotionA   s   
r4   c                   @   s:  e Zd Zdd„ Zejj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dd„ ddfdd„ ddfdd„ ddfdd„ d dfd!d„ d"dfd#d„ ddfd$d„ d%dfg¡d&d'„ ƒZd(d)„ Zej d*d+d„ d,d„ d-d„ d.d„ d/d„ d0d„ d1d„ d2d„ d3d„ g	¡d4d5„ ƒZd6d7„ Zejjd8d9„ ƒZd:S );ÚTestAAAc                 C   sF  t jtdd�� tdgddgƒ W d   ƒ n1 sw   Y  t jtdd�� tdgdggdgdggƒ W d   ƒ n1 s>w   Y  t jtdd�� ttjgdgƒ W d   ƒ n1 s]w   Y  t  t¡� tdgdgdd� W d   ƒ n1 s{w   Y  t jtd	d�� tdgdgd
d� W d   ƒ d S 1 sœw   Y  d S )Nz	same size©Úmatchr   r
   z1-DÚfiniter2   ©Ú	max_termsÚgreaterr	   )ÚpytestÚraisesÚ
ValueErrorr   r   ÚinfÚ	TypeError©Úselfr/   r/   r0   Útest_input_validationS   s   ÿÿÿÿ"ÿzTestAAA.test_input_validationc                 C   sH   t jtdd�� ttt t¡dd� W d   ƒ d S 1 sw   Y  d S )Nz
AAA failedr6   r
   r9   )r<   ÚwarnsÚRuntimeWarningr   ÚUNIT_INTERVALr   ÚexprA   r/   r/   r0   Útest_convergence_error_   s   "ÿzTestAAA.test_convergence_errorc                 C   sv   t  t¡}tt|ƒ}t|tƒ|td� t|t jƒt jƒ t  |t j	ƒ¡s&J ‚|j
j}tt|dd�}|j
j|k s9J ‚d S )N©Úatolgü©ñÒMbP?r   )r   rG   rF   r   r   ÚTOLr   ÚnanÚisfiniter?   r"   r   )rB   Úfr-   Úm1r/   r/   r0   Útest_expf   s   

zTestAAA.test_expc                 C   s’   t  t jt ¡}tt|ƒ}t|tƒ|dt dd� tt  t  | 	¡ ¡¡ddd� tt  t  | 
¡ d ¡¡dtd� t  t  | ¡ ¡¡dksGJ ‚d S )	Nr   g³zê]Ê‚>©rJ   r   r   gLÎaã§�ô=rI   ç      à?ç‚vIhÂ%<=)r   ÚtanÚpirF   r   r   rK   ÚminÚabsr*   r'   r)   ©rB   rN   r-   r/   r/   r0   Útest_tanr   s   
" zTestAAA.test_tanc                 C   sp  t  ddg¡}t  ddg¡}t||dd�}t||ƒ|td� t| ¡ dƒ t| ¡ dƒ t| ¡ d	ƒ t|j	|ƒ t|j
|ƒ t|jd
d
gƒ t|jddgƒ t  g d¢¡}t  g d¢¡}t||dd�}t||ƒ|td� tt  | ¡ ¡t  ddg¡ƒ tt  | ¡ ¡t  ddg¡ƒ tt  | ¡ ¡t  ddg¡ƒ t|j	|ƒ t|j
|ƒ t|jg d¢ƒ t|jg d¢ƒ d S )Nr   r
   é   rS   r   rI   rR   g      Ð?gUUUUUUÕ?gÈ;fž æ?)r   r
   rZ   )r
   r   r   g�È¢Ó<ù?gÃ™ßt±Û?g‚fêMv²¿g¯»ÚÁ7ÓÐ¿)ç3�E§yâ?r[   r[   )r
   r
   r   )r   Úarrayr   r   rK   r'   r)   r*   r   r"   r#   r&   r$   Úsort)rB   r,   rN   r-   r/   r/   r0   Útest_short_cases|   s4   ÿÿzTestAAA.test_short_casesc                 C   sˆ   t  dd¡}t  |¡d }t||ƒ}t|dd |  t j¡ƒ}t|d|  t j¡ƒ}t|dƒd|dƒ ƒ t|dƒdd |dƒ ƒ d S )	Ng333333Ó?g      ø?ù      ð?      ð?rZ   i7  g      €,y        š™™™™™É?gffffffö?)r   r   rG   r   r!   Ú
complex128r   )rB   r,   rN   Úr1Úr2Úr3r/   r/   r0   Útest_scale_invariance�   s   
zTestAAA.test_scale_invariancec                 C   sT   t j d¡}| d¡d| d¡  }dd„ }t|||ƒƒ}t|dƒ|dƒtd� d S )Nl   (pg98B i'  y              @c                 S   s   t  d|  ¡d| d   S )Né   r
   rZ   )r   Úlog©r,   r/   r/   r0   rN   ª   ó   z TestAAA.test_log_func.<locals>.fr   rI   )r   r   r   Ústandard_normalr   r   rK   )rB   r+   r,   rN   r-   r/   r/   r0   Útest_log_func¦   s
   zTestAAA.test_log_funcc                 C   s<   t  dd¡}t|tj |¡ƒ}t|dƒtj d¡dd� d S )Nr	   r
   g)\�Âõ(ä?çVçž¯Ò<rI   )r   r   r   ÚscipyÚspecialÚgammar   ©rB   r,   r-   r/   r/   r0   Útest_infinite_data°   s   zTestAAA.test_infinite_datac                 C   sp   t  dd¡}t jdd�� t  |¡| }W d   ƒ n1 sw   Y  t||ƒ}t|dƒt  d¡d dd� d S )Nr   é   Úignore)ÚinvalidrZ   rk   rI   )r   r   Úerrstater   r   r   )rB   ÚxrN   r-   r/   r/   r0   Útest_nanµ   s   ÿ
 zTestAAA.test_nanc                 C   sœ   t jdddd�}t|t  |¡| ƒ}t  t  | ¡ ¡dk ¡}t| ¡ | ddd� t|d	t	j
 |¡ ƒ}t  t| ¡ d
 ƒdk ¡}t| ¡ | ddd� d S )Ng1¬Zdõ¿rZ   i  r   ç:Œ0âŽyE>r
   rk   rI   r_   r	   y      ð¿      ð¿)r   r   r   rG   ÚflatnonzerorW   r'   r   r)   rl   rm   rn   )rB   ru   r-   Úiir/   r/   r0   Útest_residues¼   s   zTestAAA.test_residueszfunc,atol,rtolc                 C   s   t  | d d ¡S )NrR   y        {®Gáz„?©r   rW   ©ru   r/   r/   r0   Ú<lambda>É   ó    zTestAAA.<lambda>gê-�™—a=gH¯¼šò×z>c                 C   ó   t  dd|   ¡S )Nr
   gÍÌÌÌÌÌð?)r   r   r|   r/   r/   r0   r}   Ê   r~   ç‚vIhÂ%L=c                 C   s   t  d| d  ¡S )Nr	   rZ   ©r   rG   r|   r/   r/   r0   r}   Ë   r~   g²G@
¡X=r   c                 C   s   t  d| d  ¡S )NiœÿÿÿrZ   r�   r|   r/   r/   r0   r}   Ì   r~   g‚vIhÂ%l=c                 C   r   )Néöÿÿÿg333333ó?r�   r|   r/   r/   r0   r}   Í   r~   ç›+¡†›„=c                 C   s   ddt  d| d  ¡  S )Nr
   r   rR   r�   r|   r/   r/   r0   r}   Î   s    c                 C   s   t  | d ¡S )Ngffffffî?r{   r|   r/   r/   r0   r}   Ï   s    ç�íµ ÷Æ°>c                 C   sV   t jdd�� |tƒ}W d   ƒ n1 sw   Y  ttt|tƒƒtƒ|||d� d S )Nrr   )ÚdividerQ   )r   rt   ÚPTSr   r   rF   )rB   ÚfuncrJ   r   rN   r/   r/   r0   Útest_basic_functionsÈ   s   	
ÿ
ÿzTestAAA.test_basic_functionsc                 C   sÚ   dd„ }t t|tƒƒ}tt | ¡ | ¡  ¡ddd� dd„ }t t|tƒƒ}t| ¡  ¡ ddd� t tt 	dtj
 t ¡ƒ}tt t | ¡ ¡¡d	 d
dd� dd„ }t t|tƒƒ}t| ¡ d | ¡ d  ddd� d S )Nc                 S   s    | d | d  | d | d   S )Nr
   rZ   é   é   r/   rg   r/   r/   r0   rN   ×   s    z,TestAAA.test_poles_zeros_residues.<locals>.fr‚   çê-�™—q=rI   c                 S   s   dd|   d| d   S )NrZ   r‰   re   y               @r/   rg   r/   r/   r0   rN   Ü   s   r   rw   é   gÍÌÌÌÌÌì?c                 S   s   | d | d  S )Ny      @      @rZ   r/   rg   r/   r/   r0   rN   ä   ó   r   y      À      À)r   rF   r   r   Úsumr'   r*   r)   Úprodr   rU   r]   rW   rX   r/   r/   r0   Útest_poles_zeros_residuesÖ   s    "&z!TestAAA.test_poles_zeros_residuesr‡   c                 C   s
   t  | ¡S ©N)r   Ú
zeros_likerg   r/   r/   r0   r}   ê   s   
 c                 C   s   | S r‘   r/   rg   r/   r/   r0   r}   ê   s    c                 C   s   d|  S )Nr   r/   rg   r/   r/   r0   r}   ê   s    c                 C   ó   | d |  S )NrZ   r/   rg   r/   r/   r0   r}   ë   ó    c                 C   r“   )Nr‰   r/   rg   r/   r/   r0   r}   ë   r”   c                 C   s   dd|   S )Nr
   gš™™™™™ñ?r/   rg   r/   r/   r0   r}   ì   r”   c                 C   s   ddd|    S )Nr
   r   r/   rg   r/   r/   r0   r}   ì   ó    c                 C   s   dd|  | d   S )Nr
   r‰   rZ   r/   rg   r/   r/   r0   r}   í   s    c                 C   s   dd| d   S )Nr
   g)\�Âõ(ð?r‰   r/   rg   r/   r/   r0   r}   í   r•   c                 C   s$   t tt|tƒƒtƒ|tƒdd� d S )Nr€   rI   )r   r   rF   r†   )rB   r‡   r/   r/   r0   Ú test_polynomials_and_reciprocalsé   s   
ÿz(TestAAA.test_polynomials_and_reciprocalsc                 C   sh   t  t jdddt j  dd�¡}t|t  t j| d ¡ƒ}tt  t  | 	¡ ¡¡d d… g d¢d	d
� d S )Nç      à¿rR   ù              .@r   r   rZ   rŠ   )r
   r
   r‰   r‰   g1Eîð2®>r   )
r   rG   r   rU   r   rT   r   r]   rW   r'   ro   r/   r/   r0   Útest_spiralô   s    .zTestAAA.test_spiralc                 C   s  t  t jdddt j  dd�¡}t t¡� t|t  t j| d ¡ddd	d
�}W d   ƒ n1 s1w   Y  t  	t  
| ¡ ¡dk ¡}t t¡� | ¡ dksPJ ‚W d   ƒ n1 sZw   Y  t  	t  
| ¡ ¡dk ¡|k soJ ‚t||ƒt  t j| d ¡ddd� d S )Nr—   rR   r˜   r   r   rZ   r   é<   F)r   r:   Úclean_uprƒ   r
   gßÄAfcš=gßÄAfcŠ=rQ   )r   rG   r   rU   r<   rD   rE   r   rT   rŽ   rW   r)   r›   r   )rB   r,   r-   Ú
n_spuriousr/   r/   r0   Útest_spiral_cleanupù   s    $ÿÿ (zTestAAA.test_spiral_cleanupN)Ú__name__Ú
__module__Ú__qualname__rC   r<   ÚmarkÚthread_unsaferH   rP   rY   r^   rd   rj   rp   rv   rz   Úparametrizerˆ   r�   r–   r™   r�   r/   r/   r/   r0   r5   R   sF    

!	
úÿ
ýÿ
r5   c                
   @   sÒ   e Zd Zdd„ Zdd„ Zdd„ Zej ddg d	¢fd
g d¢fdg d¢fdg d¢fdg d¢fg¡dd„ ƒZ	ej de
dƒ¡dd„ ƒZdd„ Zdd„ Zej dg d¢¡ej ddd g¡d!d"„ ƒƒZd#d$„ Zd%d&„ Zd'S )(ÚTestFloaterHormannc                 C   s   dd|d   S )Nr
   rZ   r/   )rB   r,   r/   r/   r0   Úrunge
  r�   zTestFloaterHormann.rungec                 C   s   dt  |¡|  t|ƒ S )Nr	   )r   r3   r   )rB   ÚnÚdr/   r/   r0   Úscale  rh   zTestFloaterHormann.scalec                 C   sÎ  t jtdd�� tdggdgdd� W d   ƒ n1 sw   Y  t jtdd�� tdgddd� W d   ƒ n1 s;w   Y  t jtdd�� tdgddgddggdd� W d   ƒ n1 s`w   Y  t jtdd�� ttjgdgdd� W d   ƒ n1 s�w   Y  t jtd	d�� tdgdgd
d� W d   ƒ n1 s¡w   Y  t jtd	d�� tdgdgdd� W d   ƒ n1 sÁw   Y  t  t¡� tdgdgdd� W d   ƒ d S 1 sàw   Y  d S )Nz`x`r6   r   ©r§   z`y`Ú	dimensionr
   r8   z`d`r	   r   ç        )r<   r=   r>   r   r   r?   r@   rA   r/   r/   r0   Útest_iv  s*   ÿÿÿÿÿÿ"ÿzTestFloaterHormann.test_ivz
d,expectedr   )r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   )r
   rZ   rZ   rZ   rZ   rZ   rZ   rZ   rZ   rZ   r
   rZ   )r
   r‰   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   r‰   r
   r‰   )r
   rŠ   é   é   r®   r®   r®   r®   r­   rŠ   r
   rŠ   )r
   re   é   é   é   r±   r±   r°   r¯   re   r
   c                 C   sD   t  d¡}t|d| |d�}t|j ¡ |  |j|¡ |ddd� d S )Nr¯   r«   r©   rk   ©r   rJ   )r   r3   r   r   r&   Úravelr¨   r   )rB   r§   Úexpectedru   r-   r/   r/   r0   Útest_uniform_grid!  s
   
	
ÿz$TestFloaterHormann.test_uniform_gridr§   r   c           	      C   s”   t  ddd¡}t j d¡}|jdddd�}|  |¡}|d |d  }t|||d�}d||d   }t||ƒ|  |¡d	|d
� t||ƒ|  |¡ƒ d S )Nr   r
   é3   l   Mû+çRYr   r   r©   r   g»½×Ùß|Û=rQ   )	r   r   r   r   r    r¥   r   r   r   )	rB   r§   ru   r+   ÚxxÚyÚhr-   Útolr/   r/   r0   Ú
test_runge/  s   
zTestFloaterHormann.test_rungec                 C   sd   t  dd¡}||d  }t|t  |¡dd�}t jdddd�}||d  }t||ƒt  |¡dd	� d S )
Nr	   r
   r   é   r©   r   r   r‹   r   )r   r   r   r   r   )rB   ru   r,   r-   r·   Úzzr/   r/   r0   Útest_complex>  s   zTestFloaterHormann.test_complexc                 C   s`   t  ddd¡}t  ddd¡}t  |¡}t|||jd d�}t||ƒ}t||ƒ||ƒddd� d S )Nr   r
   r¯   ié  r©   r‹   r²   )r   r   r   r   r   r   r   )rB   ru   r·   r¸   r-   Úpr/   r/   r0   Útest_polyinterpF  s   

z"TestFloaterHormann.test_polyinterpÚy_shape))rZ   )rZ   r‰   r
   )r
   re   é   rŠ   Úxx_shaper   )r   r   c           
   
   C   sÂ   t  dd¡}t  t  t  |¡ttdt|ƒd ƒƒ¡|j| ¡}t	||ƒ}t j
 d¡}| 
|¡}t  t  t  |¡tt|jt|ƒ|j ƒƒ¡|j| ¡}||ƒ}	|	j|j| ksXJ ‚t|	|dd� d S )Nr   r
   l   �‹wcïBMþYÔr„   r   )r   r   Úbroadcast_toÚexpand_dimsr   ÚtupleÚrangeÚlenÚshaper   r   r   Úndimr   )
rB   rÁ   rÃ   ru   r¸   r-   r+   r·   ÚyyÚrrr/   r/   r0   Útest_trailing_dimO  s   "þ

&þz$TestFloaterHormann.test_trailing_dimc                 C   sZ   t jdddd�}t|t  t j| ¡ƒ}t  t j | ¡ t  	d¡¡¡j
dd�}t|dƒ d S )Nr   r   r   r   r¯   )Úaxisgñhãˆµøä>)r   r   r   r   rU   rW   ÚsubtractÚouterr*   r3   rV   r   )rB   ru   r-   Úerrr/   r/   r0   Ú
test_zerosd  s   &zTestFloaterHormann.test_zerosc                 C   s`   t  dd¡}t|d|d  ƒ}| ¡ }|jdk|jdk@ t  |j¡dk @ }t  |¡dks.J ‚d S )Nr	   r
   rZ   r‹   r   )r   r   r   r'   r%   rW   ÚimagrŽ   )rB   ru   r-   r¿   Úmaskr/   r/   r0   Útest_no_polesk  s
   $z TestFloaterHormann.test_no_polesN)rž   rŸ   r    r¥   r¨   r¬   r<   r¡   r£   rµ   rÇ   r»   r¾   rÀ   rÍ   rÒ   rÕ   r/   r/   r/   r0   r¤   	  s*    




û

	r¤   )#Úmathr   Únumpyr   Únumpy.testingr   r   r   r<   rl   Úscipy.interpolater   r   r   r   Úfloat64r   rK   r   rF   Úlogspacer†   Úconcatenater¡   r£   Úfloat32Ú	complex64r`   r1   Úint16Úint32Úint64r4   r5   r¤   r/   r/   r/   r0   Ú<module>   s&    8