o
    ?Hhm                     @   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   `/home/air/sanwanet/gpt-api/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{Gz?)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:   


