o
    Ö­jÍ@  ã                   @   sd  d dl Z d dlZd dlZd dlmZmZmZmZ d dl	m
Z d dl	Z	d dlmZ d dlmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZ d d	l m!Z! d
d„ Z"dd„ Z#d*dd„Z$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„ Z,d d!„ Z-d"d#„ Z.e	j/j0d$d%„ ƒZ1d&d'„ Z2d(d)„ Z3dS )+é    N)Úxp_assert_equalÚxp_assert_closeÚassert_almost_equalÚassert_array_almost_equal)Úraises)Úcheck_free_memory)ÚRectBivariateSpline)Úmake_splrep)ÚsplrepÚsplevÚbisplrepÚbisplevÚsprootÚsplprepÚsplintÚspaldeÚsplderÚ
splantiderÚinsertÚdblint)Úregrid_smth)Údfitpack_intc                 C   s    t j t j t j t¡¡d| ¡S )NÚdata)ÚosÚpathÚjoinÚabspathÚdirnameÚ__file__)Úbasename© r    úa/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/interpolate/tests/test_fitpack.pyÚ	data_file   s   ÿr"   c                 C   s   t  t  | j| ¡¡S ©N)ÚnpÚsqrtÚdotÚT)Úxr    r    r!   Únorm2   ó   r)   c                 C   s`   |d dkrt  | ¡S |d dkrt  | ¡S |d dkr"t  | ¡ S |d dkr.t  | ¡ S dS )z$Derivatives of sin->cos->-sin->-cos.é   r   é   é   é   N)r$   ÚsinÚcos)r(   Údr    r    r!   Úf1   s   

ÿr2   c              	   C   s(   t  tt t  | ¡t  |¡¡ƒ¡}|jS )z7Helper function to create an array of pairs of x and y.)r$   ÚarrayÚlistÚ	itertoolsÚproductÚasarrayr'   )r(   ÚyÚxyr    r    r!   Ú	makepairs*   s   "r:   c                   @   s  e Zd ZdZddddej dddfdd„Zddddej fd	d
„Zdd„ Ze	j
 dddg¡e	j
 dddg¡dd„ ƒƒZe	j
 dddg¡e	j
 dddg¡dd„ ƒƒZe	j
 dddg¡e	j
 dddg¡dd„ ƒƒZdd„ Ze	j
 dddg¡e	j
 dg d¢¡dd„ ƒƒZdd „ ZdS )!ÚTestSmokeTestszj
    Smoke tests (with a few asserts) for fitpack routines -- mostly
    check that they are runnable
    r   r-   FNc              	      sn  |d u r|}|d u r|}d‰ t  ||ˆ d ¡}||| t jdˆ td� tˆ d ƒ  }	t|ƒ}
‡ ‡fdd„}tddƒD ]y}t||
ˆ|||d�}|rR|d || … n|	}t|d ƒD ]!}|||ƒ}tt||ƒt|||ƒ ƒtt||ƒƒ }||k s{J ‚qZ|s´t	||
|ˆ||d	�}t
|jƒt
|d ƒkr®t|j|d d
d� t|j|d d |jj… dd� q;|dks´J ‚q;d S )Né   r,   ©Údtypec                    s4   dˆ  }d|d| |    }ˆdkr|dˆ 7 }|S )Nç      ð?é   ç      è?r   g     jø@r    ©Úkr1   ÚhÚtol©ÚNÚsr    r!   Úerr_estB   s
   z'TestSmokeTests.check_1.<locals>.err_esté   ©rH   ÚperrC   Úxer   )rC   rH   ÚxbrM   çVçž¯Ò<©Úatolç‚vIhÂ%<=r@   )r$   ÚlinspaceÚarangeÚfloatr2   Úranger
   r)   r   r	   ÚlenÚtr   ÚcÚsize)ÚselfrL   rH   ÚaÚbÚat_nodesrN   rM   r(   Úx1ÚvrI   rC   ÚtckÚttr1   rE   ÚerrÚsplr    rF   r!   Úcheck_15   s0   (
("€ðzTestSmokeTests.check_1r<   c              	      sÜ   ddt j dt j }}}t  ||ˆ d ¡}t  |¡}	‡ fdd„}
g }tddƒD ]}t||	d|||d�}| t|||ƒt||ƒg¡ q)d}|D ]#}d}|d D ]}|
||ƒ}t	|t
||ƒd|d	� |d }qP|d }qHd S )
Nr   r-   çš™™™™™É?r,   c                    s    dˆ  }d|d| |    }|S )Nr?   r@   rA   r    rB   ©rG   r    r!   rI   a   s   z'TestSmokeTests.check_2.<locals>.err_estrJ   rK   ©rQ   Úrtol)r$   ÚpirS   r/   rV   r
   Úappendr   r   r   r2   )r[   rL   rG   ÚiaÚibr\   r]   Údxr(   r`   rI   ÚnkrC   ra   Úrr1   ÚdrrE   r    rg   r!   Úcheck_2\   s"   



úzTestSmokeTests.check_2c                 C   s@   | j dd� | j dtj d� | j dtj dtj ddd� d S )	Ng�íµ ÷Æ°>©rH   ç      ø?)r]   r-   r,   çš™™™™™¹?)r]   rM   rL   rH   )re   r$   rj   ©r[   r    r    r!   Útest_smoke_splrep_splevu   s   "z&TestSmokeTests.test_smoke_splrep_splevrL   r,   r^   Tc                 C   s   | j ||d� d S )N)rL   r^   )re   )r[   rL   r^   r    r    r!   Útest_smoke_splrep_splev_2z   ó   z(TestSmokeTests.test_smoke_splrep_splev_2rG   é2   c                 C   s   | j ||d� d S )N)rL   rG   )rr   ©r[   rG   rL   r    r    r!   Útest_smoke_splint_spalde   ry   z'TestSmokeTests.test_smoke_splint_spaldec                 C   s   | j dtj tj||d� d S )Nrf   )rl   rm   rG   rL   )rr   r$   rj   r{   r    r    r!   Útest_smoke_splint_spalde_iaib„   s   z,TestSmokeTests.test_smoke_splint_spalde_iaibc              	   C   sÌ   d\}}t  ||d¡}t  |¡}dD ]$}t||dd||d�}ttƒ� t|ƒ W d   ƒ n1 s1w   Y  qd}t||ddd�}t|ƒ}tt||ƒt  	t
|ƒ¡ddd	� t|t jt  g d
¢¡ dd� d S )N)ru   é   r<   )r,   r-   r+   r@   r   rK   r.   )rH   rC   ç»½×Ùß|Û=rh   )r,   r-   r.   r+   gü©ñÒMbP?©ri   )r$   rS   r/   r
   Úassert_raisesÚ
ValueErrorr   r   r   ÚzerosrW   rj   r3   )r[   r\   r]   r(   r`   rC   ra   Úrootsr    r    r!   Útest_smoke_sproot‰   s   


ÿ€ "z TestSmokeTests.test_smoke_sprootrC   ©r,   r-   r.   r+   r@   c                 C   s
  ddt j dt j }}}t  |||d ¡}t  |¡}t||gdd|dd�\}}	t||ƒ}
t|
d t  |
d ¡ ƒ}|dk sAJ ‚t||dd|d�}tt|
d |ƒt  |
d ¡ ƒ}|dk s`J ‚|d	kr�t||gdd|dd�\}}	td|d ƒD ]
}t|||ƒ}
qxd S d S )
Nr   ç       @rf   r,   éÿÿÿÿ)rH   rL   rC   Únestç{®Gáz„?)rH   rL   rC   r.   )	r$   rj   rS   r/   r   r   Úabsr
   rV   )r[   rG   rC   r\   r]   rn   r(   r`   ÚtckpÚuÚuvÚerr1ra   Úerr2r1   r    r    r!   Útest_smoke_splprep_splrep_splevš   s    

 ýz.TestSmokeTests.test_smoke_splprep_splrep_splevc                 C   s$  ddt j }}ddt j }}d\}}d\}}dd„ }	t  |||d ¡}
t  |||d ¡}t|
|ƒ}t|d |d |	|d |d ƒd||d�}|d || … |d || … g}t|d |d ƒ}t|d |d |ƒ}|	|d |d ƒ}t|d ƒt|d ƒf|_tt  	|| ¡ƒd	k s�J ‚d S )
Nr   r‡   ©r.   r.   )r<   r<   c                 S   ó   t  | | ¡S r#   ©r$   r/   ©r(   r8   r    r    r!   Úf2¶   ó   z6TestSmokeTests.test_smoke_bisplrep_bisplev.<locals>.f2r,   ©rH   ÚkxÚkyrŠ   )
r$   rj   rS   r:   r   r   rW   Úshaper)   Úravel)r[   rN   rM   ÚybÚyer™   rš   ÚNxÚNyr–   r(   r8   r9   ra   rb   Út2Úv1Úv2r    r    r!   Útest_smoke_bisplrep_bisplev°   s   
*$z*TestSmokeTests.test_smoke_bisplrep_bisplev)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r$   rj   re   rr   rw   ÚpytestÚmarkÚparametrizerx   r|   r}   r…   r‘   r¤   r    r    r    r!   r;   0   s*    
ÿ'r;   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú	TestSplevc                 C   sP   g d¢}g d¢}t ||ƒ}tdg|ƒ}|jdksJ ‚td|ƒ}|jdks&J ‚d S )Nr†   ©r+   r@   rJ   é   é   r,   )r,   r    )r
   r   r›   )r[   r(   r8   ra   Úzr    r    r!   Útest_1d_shapeÈ   s   

zTestSplev.test_1d_shapec                 C   sn   g d¢}g d¢}t ||ƒ}t g d¢g d¢g¡}t||ƒ}t|d |ƒ}t|d |ƒ}t|t ||f¡ƒ d S )Nr†   r­   )r?   rt   r‡   ç      @)ç      @g      @ç      @g      @r   r,   )r
   r$   r3   r   r   Úvstack)r[   r(   r8   ra   rX   r°   Úz0Úz1r    r    r!   Útest_2d_shapeÑ   s   

ÿ
zTestSplev.test_2d_shapec                 C   sv   g d¢}g d¢}t ||dd�}ddgddgd ddgg}d	D ]}ttddg||d
�|| ƒ qtttddg|dd
� d S )N)r,   r-   r.   )r   r-   r+   r,   )rC   éþÿÿÿrJ   r   r+   )r   r,   r.   )Úextr-   )r
   r   r   r�   r‚   )r[   r(   r8   ra   Úrstlrº   r    r    r!   Útest_extrapolation_modesÜ   s   z"TestSplev.test_extrapolation_modesN)r¥   r¦   r§   r±   r¸   r¼   r    r    r    r!   r¬   Ç   s    	r¬   c                   @   sD   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S )Ú
TestSplderc                 C   sN   t  ddd¡d }t  d| ¡}t||ƒ| _t  t  | jd ¡¡dks%J ‚d S )Nr   r,   éd   r.   r<   )r$   rS   r/   r
   rd   ÚptpÚdiff)r[   r(   r8   r    r    r!   Úsetup_methodî   s   "zTestSplder.setup_methodc                 C   sf   t dƒD ],}t| j|ƒ}t||ƒ}t| jd |d ƒ t| jd |d ƒ | jd |d ks0J ‚qd S )Nr@   r   r,   r-   )rV   r   rd   r   r   )r[   ÚnÚspl2Úspl3r    r    r!   Útest_inverse÷   s   
ûzTestSplder.test_inversec                 C   s‚   t dƒD ]:}t ddd¡}|dkr||dk|dk@  }t|| j|ƒ}t| j|ƒ}t||ƒ}|dkr9t||dd	� qt||ƒ qd S )
Nr+   rˆ   r-   iÐ  r.   r   r,   g�íµ ÷ÆÀ>r€   )rV   r$   rS   r   rd   r   r   )r[   rÂ   ÚxxÚdyrÃ   Údy2r    r    r!   Útest_splder_vs_splev   s   
òzTestSplder.test_splder_vs_splevc                 C   sh   t | jƒ}t ddd¡}|D ]#}|D ]}t||| jƒ}t||ƒt||ƒ }tt |¡t |¡ƒ qqd S )Nr   r,   r<   )r   rd   r$   rS   r   r   r   r7   )r[   rÃ   rÆ   r_   Úx2Úy1Úy2r    r    r!   Útest_splantider_vs_splint  s   
ýÿz$TestSplder.test_splantider_vs_splintc                 C   s   t tt| jdƒ d S )Nr+   )r�   r‚   r   rd   rv   r    r    r!   Útest_order0_diff!  r*   zTestSplder.test_order0_diffc                 C   sr   t d| jdd�}t|dƒ ttt|dƒ t d| jdd�}t|dƒ ttt|dƒ t d| jdd�}ttt|dƒ d S )Nç      à?r-   )Úmr.   r,   r+   )r   rd   r   r�   r‚   )r[   rÃ   r    r    r!   Ú	test_kink$  s   

zTestSplder.test_kinkc                 C   s‚   t dƒD ]:}| j\}}}tj|||f }t ||f¡}t|||f|ƒ}t||ƒ}t||d ƒ t||d ƒ ||d ks>J ‚qd S )Nr.   r   r,   r-   )rV   rd   r$   Úc_Údstackr   r   r   )r[   rÂ   rX   rY   rC   Úc2rÃ   rÄ   r    r    r!   Útest_multidim2  s   
özTestSplder.test_multidimN)
r¥   r¦   r§   rÁ   rÅ   rÉ   rÍ   rÎ   rÑ   rÕ   r    r    r    r!   r½   í   s    		r½   c                   @   s   e Zd Zdd„ ZdS )Ú
TestSplintc                 C   s€  d\}}t  |¡}|d }t||dd�\}}}t|ƒt|ƒ  kr,|d|d   ks/J ‚ J ‚tdd|||fƒ}d}t|| ƒd	k sDJ ‚| ¡ }	t j|	t|ƒ| d d …< tdd||	|fƒ}
t|
| ƒd	k shJ ‚t j|	d< t  tdd||	|fƒ¡s{J ‚|d t|ƒ| d … }tdd|||fƒ}|| d	k s˜J ‚t	t
d
d�� tddt  d¡t  d¡dfƒ W d   ƒ d S 1 s¹w   Y  d S )N)r®   r.   r.   r   rs   r-   r,   rJ   g     @t@rR   z>=n-k-1)Úmatché
   r@   )r$   rT   r
   rW   r   r‹   ÚcopyÚnanÚisnanr�   Ú	ExceptionÚones)r[   rÂ   rC   r(   r8   rX   rY   ÚresÚexpectedÚc0Úres0Úc1Úres1r    r    r!   Ú
test_len_cB  s(   
0
 "ÿzTestSplint.test_len_cN)r¥   r¦   r§   rä   r    r    r    r!   rÖ   A  s    rÖ   c                   @   s:   e Zd Zdd„ Zdd„ Zejjee	j
kdd�dd„ ƒZd	S )
ÚTestBisplrepc                 C   sV   ddl m} tjdkrd}nd}|t d¡|fd�}ttt||||dddddd	� d S )
Nr   )Ú
as_stridedr¯   l    dæ</i q r    )r›   r,   )ÚwrN   rM   r�   rž   rH   )	Únumpy.lib.stride_tricksræ   r   Úitemsizer$   rƒ   r�   ÚOverflowErrorr   )r[   ræ   rZ   r(   r    r    r!   Útest_overflowg  s   


ÿzTestBisplrep.test_overflowc              	   C   st   t  tdƒ¡�}|d }W d   ƒ n1 sw   Y  t|d d …df |d d …df |d d …df ddddd� d S )	Nzbug-1310.npzr   r   r,   r-   r.   T)r™   rš   rH   Úfull_output)r$   Úloadr"   r   )r[   Úloaded_datar   r    r    r!   Útest_regression_1310s  s   
ÿ2
ÿz!TestBisplrep.test_regression_1310zneeds ilp64 fitpack)Úreasonc                 C   sh   t dƒ t ddd¡}t ddd¡}t ||¡\}}t |¡}t|||dddd�}ttdd|ƒdƒ d S )	Ni`m  r   r,   i�  r.   ©r™   rš   rH   rÏ   ç        )r   r$   rS   ÚmeshgridÚ
zeros_liker   r   r   )r[   r(   r8   r°   ra   r    r    r!   Útest_ilp64_bisplrep  s   
z TestBisplrep.test_ilp64_bisplrepN)r¥   r¦   r§   rë   rï   r©   rª   Úskipifr   r$   Úint64rõ   r    r    r    r!   rå   f  s
    rå   c                  C   sÖ   t  dd¡} t  dd¡}t  | |¡\}}t| |d| | ƒ}t|jƒ}| |j¡ tt	dddd|ƒd ƒdk s9J ‚tt	dddd|ƒd ƒdk sIJ ‚tt	dddd|ƒd ƒdk sYJ ‚tt	dd	dd	|ƒd ƒdk siJ ‚d S )
Nr   r,   r+   r   rÏ   g      Ð?rA   iœÿÿÿr¾   )
r$   rS   ró   r   r4   ra   ÚextendÚdegreesr‹   r   )r(   r8   rÆ   ÚyyÚrectra   r    r    r!   Útest_dblintŠ  s   
   $rü   c                  C   s  t  g d¢¡t  g d¢¡df} | \}}}t  g d¢¡}tt|| ƒ|d |d |d  | |d   ƒ tt|| dƒt  |¡|d |d   |d  ƒ t j d¡ t  t j d¡¡}t j d¡}t||ƒ\}}}|d d	 |d
 d	 g}t	|||f|ƒ}tt||||f|ƒt||ƒƒ d S )N)rò   rò   r²   r²   )g®g¥œù¿g~„'	…@rò   rò   r,   )éýÿÿÿr   r²   r.   r   r-   iÒ  é   r?   rˆ   )
r$   r3   r   r   Ú	ones_likeÚrandomÚseedÚsortr
   r   )ra   rX   rY   rC   r(   r8   Útck2r    r    r!   Útest_splev_der_kš  s"   þ
0 ÿ"r  c                  C   sz   t  ddd¡} t  dt j |  ¡}t  dt j |  ¡}t||gdd�\}}t  ddd¡ |d }t||gd|d	�\}}d S )
Nr   gš™™™™™ñ?ru   r-   rs   g)\�Âõ(ð?rŠ   rˆ   )ÚtaskrX   )r$   rT   r/   rj   r0   r   )rX   r(   r8   ra   r�   Úuknotsr    r    r!   Útest_splprep_segfault¶  s   r  c                  C   sÌ   t j d¡ t  ddd¡} | }t j dd¡ ¡ }d}d}t| ||d d d d ||dd�
\}}}}}	}
}|d |… |d |… |	d || d || d  … ||f}t  dg¡}t  dg¡}tt	t
ft|||ƒ d S )Nr,   r   é   rò   rñ   i  ( )r$   r   r  rS   Úrandnrœ   r   rƒ   r�   ÚRuntimeErrorÚMemoryErrorr   )r(   r8   r°   r™   rš   ÚnxÚtxÚnyÚtyrY   ÚfpÚierra   ÚxpÚypr    r    r!   Útest_bisplev_integer_overflowÃ  s   ÿ:r  c                  C   sà   d} d\}}dd„ }t  dd| ¡}t  dd| ¡}t||ƒ}t|d |d	 ||d |d	 ƒd||d
�}d}t  |¡|d< t  |¡d |d	< t  d¡}	t  d¡d }
t t¡� t|	|
|d	d	ƒ W d   ƒ d S 1 siw   Y  d S )Né   r’   c                 S   r“   r#   r”   r•   r    r    r!   r–   Û  r—   ztest_gh_1766.<locals>.f2r   rØ   rz   i¼  r,   r˜   i ¡ r+   r.   )	r$   rS   r:   r   rT   r©   r   r  r   )rZ   r™   rš   r–   r(   r8   r9   ra   Ú
tx_ty_sizeÚtt_0Útt_1r    r    r!   Útest_gh_1766Ö  s   
*
"ÿr  c                  C   sR   t  dd¡} | d }t| |ddgd�}tt  d¡|ƒ}t  g d¢¡}t||ƒ d S )Nr   rØ   r.   r@   )rC   rX   r,   )r?   r³   ç      @r  )r$   rS   r
   r   Úfloat64r3   r   )r(   r8   ra   rÞ   Údesr    r    r!   Útest_spalde_scalar_inputí  s   r  c                     s|   t jg d¢dd�‰g d¢‰t  g d¢¡‰ d‰tˆˆˆ ˆfƒ} t  | ¡} t  ‡ ‡‡‡fdd„td	ƒD ƒ¡}t| |jd
d� d S )N)ç      $Àç      "Àç       Àç      Àç      Àç      Àç      Àç      Àç      Àç       Àç      ø¿ç      ð¿ç      à¿rò   rÏ   r?   rt   r‡   r²   r³   r´   ç      @r  rU   r=   )r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  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.   c                    s   g | ]}t ˆˆˆ ˆf|ƒ‘qS r    )r   )Ú.0Únu©rY   rC   rX   r(   r    r!   Ú
<listcomp>  s    z"test_spalde_nc.<locals>.<listcomp>r+   rO   rP   )r$   r7   r   rµ   rV   r   r'   )rÞ   Ú	res_splevr    r.  r!   Útest_spalde_nc÷  s   
þ
"r1  )r   )4r5   r   Únumpyr$   Úscipy._lib._array_apir   r   r   r   r©   r   r�   Úscipy._lib._testutilsr   Úscipy.interpolater   r	   Úscipy.interpolate._fitpack_pyr
   r   r   r   r   r   r   r   r   r   r   r   Úscipy.interpolate._dfitpackr   Úscipy.interpolate._fitpack2r   r"   r)   r2   r:   r;   r¬   r½   rÖ   rå   rü   r  r  r  rª   Úxslowr  r  r1  r    r    r    r!   Ú<module>   s<    8
 &T%$

