o
    Ö­jm  ã                   @   s  d Z ddlZddlmZmZ ddlmZmZmZm	Z	m
Z
 ddlmZ ddlmZ ddl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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$j%d.d/„ ƒZ&dS )0z Test functions for rbf module é    N)Úassert_array_almost_equalÚassert_almost_equal)ÚlinspaceÚsinÚcosÚexpÚallclose)ÚRbf)Ú_run_concurrent_barrier©Úmultiquadriczinverse multiquadricÚgaussianÚcubicÚquinticz
thin-plateÚlinearc                 C   sV   t dddƒ}t|ƒ}t||| d�}||ƒ}t||ƒ t|t|d ƒƒ|d dd� d S )Nr   é
   é	   ©ÚfunctionF)Úcheck_0d)r   r   r	   r   r   Úfloat)r   ÚxÚyÚrbfÚyi© r   ú]/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/interpolate/tests/test_rbf.pyÚcheck_rbf1d_interpolation   s   
"r   c                 C   s„   t j d¡}| dd¡d d }| dd¡d d }|t|d  d|d   ƒ }t|||d| d�}|||ƒ}|j|_t||ƒ d S )NéÒ  é2   é   é   é   ù              ð?©Úepsilonr   ©ÚnpÚrandomÚRandomStateÚrandr   r	   Úshaper   )r   Úrngr   r   Úzr   Úzir   r   r   Úcheck_rbf2d_interpolation   s   
r/   c                 C   s˜   t j d¡}| dd¡d d }| dd¡d d }| dd¡d d }|t|d  |d  ƒ }t||||d| d�}||||ƒ}|j|_t||ƒ d S )Nr   r   r    r!   r"   r$   r&   )r   r,   r   r   r-   Údr   Údir   r   r   Úcheck_rbf3d_interpolation)   s   r2   c                  C   ó&   t D ]} t| ƒ t| ƒ t| ƒ qd S ©N)Ú	FUNCTIONSr   r/   r2   r   r   r   r   Útest_rbf_interpolation6   ó
   
ýr6   c                 C   sl   t dddƒ}t|ƒ}t|ƒ}t ||g¡j}t||| dd�}||ƒ}t||ƒ t|t	|d ƒƒ|d ƒ d S )Nr   r   r   úN-D©r   Úmode)
r   r   r   r'   ÚvstackÚTr	   r   r   r   )r   r   Úy0Úy1r   r   r   r   r   r   Úcheck_2drbf1d_interpolation=   s   
r?   c           	      C   s°   t j d¡}| d¡d d }| d¡d d }|t|d  d|d   ƒ }|t|d  d|d   ƒ }t  ||g¡j}t|||d| dd�}|||ƒ}|j|_t	||ƒ d S )Nr   r   r!   r"   r#   r8   ©r%   r   r:   ©
r'   r(   r)   r*   r   r;   r<   r	   r+   r   )	r   r,   r   r   Úz0Úz1r-   r   r.   r   r   r   Úcheck_2drbf2d_interpolationI   s   
rD   c           
   	   C   s¾   t j d¡}| d¡d d }| d¡d d }| d¡d d }|t|d  |d  ƒ }|t|d  |d  ƒ }t  ||g¡j}t||||d| dd�}||||ƒ}	|j|	_t	|	|ƒ d S )Nr   r   r!   r"   r8   r@   rA   )
r   r,   r   r   r-   Úd0Úd1r0   r   r1   r   r   r   Úcheck_2drbf3d_interpolationW   s   rG   c                  C   r3   r4   )r5   r?   rD   rG   r   r   r   r   Útest_2drbf_interpolationf   r7   rH   c                 C   sp   t dddƒ}t|ƒ}t||| d�}t dddƒ}||ƒ}dt|t|ƒ ƒ ¡ d›�}t|t|ƒ|d�s6J |ƒ‚d S )	Nr   r   r   r   éd   ú
abs-diff: Úf©Úatol)r   r   r	   ÚabsÚmaxr   )r   rM   r   r   r   Úxir   Úmsgr   r   r   Úcheck_rbf1d_regularitym   s   rR   c                  C   s4   ddddddddœ} t D ]}t||  |d¡ƒ qd S ©Ngš™™™™™¹?g333333Ã?gš™™™™™É?r   g{®Gáz„?)r5   rR   Úget©Ú
tolerancesr   r   r   r   Útest_rbf_regularityy   ó   ù	ÿrW   c           
      C   sª   t dddƒ}t|ƒ}t|ƒ}t ||g¡j}t||| dd�}t dddƒ}||ƒ}dt|t t|ƒt|ƒg¡j ƒ ¡ d›�}	t	|t t|ƒt|ƒg¡j|d	�sSJ |	ƒ‚d S )
Nr   r   r   r8   r9   rI   rJ   rK   rL   )
r   r   r   r'   r;   r<   r	   rN   rO   r   )
r   rM   r   r=   r>   r   r   rP   r   rQ   r   r   r   Úcheck_2drbf1d_regularity‡   s   ,.rY   c                  C   s4   ddddddddœ} t D ]}t||  |d¡ƒ qd S rS   )r5   rY   rT   rU   r   r   r   Útest_2drbf_regularity•   rX   rZ   c                 C   s„   t j d¡}t  ddd¡}|d| t|ƒ¡  }t||| d�}t  ddd¡}||ƒ}t  || ¡ ¡ t  || ¡ ¡  dk s@J ‚d S )	Nr   r   r   r   g      @r   iè  gš™™™™™ñ?)	r'   r(   r)   r   ÚrandnÚlenr	   rN   rO   )r   r,   r   r-   r   rP   r   r   r   r   Úcheck_rbf1d_stability£   s   0r]   c                  C   s   t D ]} t| ƒ qd S r4   )r5   r]   r   r   r   r   Útest_rbf_stability³   s   
ÿr^   c                  C   s4   t dddƒ} t| ƒ}t| |ƒ}|| ƒ}t||ƒ d S )Nr   r   r   ©r   r   r	   r   )r   r   r   r   r   r   r   Útest_default_construction¸   s
   
r`   c                  C   s@   t dddƒ} t| ƒ}dd„ }t| ||d�}|| ƒ}t||ƒ d S )Nr   r   r   c                 S   s   | S r4   r   )r   r   r   r   ÚlinfuncÆ   s   z*test_function_is_callable.<locals>.linfuncr   r_   )r   r   ra   r   r   r   r   r   Útest_function_is_callableÂ   s   rb   c                  C   s@   dd„ } t dddƒ}t|ƒ}t||| d�}||ƒ}t||ƒ d S )Nc                 S   s
   | j | S r4   ©r%   )ÚselfÚrr   r   r   Ú_funcÐ   s   
z0test_two_arg_function_is_callable.<locals>._funcr   r   r   r   r_   )rf   r   r   r   r   r   r   r   Ú!test_two_arg_function_is_callableÍ   s   rg   c                  C   s&   t dddƒ} t| ƒ}t| |d d� d S )Nr   r   r   rc   )r   r   r	   )r   r   r   r   r   Útest_rbf_epsilon_noneÚ   s   rh   c                  C   s:   g d¢} g d¢}g d¢}t | ||d d�}|jdksJ ‚d S )N)r    r"   é   )r!   r!   r!   )é   é   é   rc   r   )r	   r%   )r   r   r-   r   r   r   r   Útest_rbf_epsilon_none_collinearà   s
   rm   c                  C   sT   t dddƒ} t| ƒ}t| ƒ}t ||g¡j}t| |dd�}dd„ }td||| ƒ d S )Nr   r   rI   r8   )r:   c                 S   s   ||ƒ d S r4   r   )Ú_ÚinterpÚxpr   r   r   Ú	worker_fnò   s   z'test_rbf_concurrency.<locals>.worker_fn)r   r   r   r'   r;   r<   r	   r
   )r   r=   r>   r   r   rq   r   r   r   Útest_rbf_concurrencyê   s   rr   )'Ú__doc__Únumpyr'   Úscipy._lib._array_apir   r   r   r   r   r   r   Úscipy.interpolate._rbfr	   Úscipy._lib._testutilsr
   Úpytestr5   r   r/   r2   r6   r?   rD   rG   rH   rR   rW   rY   rZ   r]   r^   r`   rb   rg   rh   rm   ÚmarkÚthread_unsaferr   r   r   r   r   Ú<module>   s:   


