o
    im                     @   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Zmultiquadriczinverse multiquadricZgaussianZcubicZquinticz
thin-plateZlinearc                 C   sV   t ddd}t|}t||| d}||}t|| t|t|d |d dd d S )Nr   
   	   functionF)Zcheck_0d)r   r   r	   r   r   float)r   xyrbfyi r   Z/home/kim/smarthome/.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   r,   c                  C   &   t D ]} t|  t|  t|  qd S N)	FUNCTIONSr   r)   r,   r   r   r   r   test_rbf_interpolation6   
   
r0   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   
r9   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   r2   r   r   r4   
r!   r"   r#   r$   r   r5   r6   r	   r%   r   )	r   r&   r   r   Zz0Zz1r'   r   r(   r   r   r   check_2drbf2d_interpolationI   s   
r<   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   r2   r:   r;   )
r   r&   r   r   r'   Zd0Zd1r*   r   r+   r   r   r   check_2drbf3d_interpolationW   s   r=   c                  C   r-   r.   )r/   r9   r<   r=   r   r   r   r   test_2drbf_interpolationf   r1   r>   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   rC   r   r   r   xir   msgr   r   r   check_rbf1d_regularitym   s   rH   c                  C   s4   dddddddd} t D ]}t|| |d qd S Ng?g333333?g?r   g{Gz?)r/   rH   getZ
tolerancesr   r   r   r   test_rbf_regularityy      	rL   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   r2   r3   r?   r@   rA   rB   )
r   r   r   r!   r5   r6   r	   rD   rE   r   )
r   rC   r   r7   r8   r   r   rF   r   rG   r   r   r   check_2drbf1d_regularity   s   ,.rN   c                  C   s4   dddddddd} t D ]}t|| |d qd S rI   )r/   rN   rJ   rK   r   r   r   test_2drbf_regularity   rM   rO   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   Zrandnlenr	   rD   rE   )r   r&   r   r'   r   rF   r   r   r   r   check_rbf1d_stability   s   0rQ   c                  C   s   t D ]} t|  qd S r.   )r/   rQ   r   r   r   r   test_rbf_stability   s   
rR   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
   
rT   c                  C   s@   t ddd} t| }dd }t| ||d}|| }t|| d S )Nr   r   r   c                 S   s   | S r.   r   )r   r   r   r   linfunc   s   z*test_function_is_callable.<locals>.linfuncr   rS   )r   r   rU   r   r   r   r   r   test_function_is_callable   s   rV   c                  C   s@   dd } t ddd}t|}t||| d}||}t|| d S )Nc                 S   s
   | j | S r.   r   )selfrr   r   r   _func   s   
z0test_two_arg_function_is_callable.<locals>._funcr   r   r   r   rS   )rZ   r   r   r   r   r   r   r   !test_two_arg_function_is_callable   s   r[   c                  C   s&   t ddd} t| }t| |d d d S )Nr   r   r   rW   )r   r   r	   )r   r   r   r   r   test_rbf_epsilon_none   s   r\   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   )         rW   r   )r	   r   )r   r   r'   r   r   r   r   test_rbf_epsilon_none_collinear   s
   ra   c                  C   sT   t ddd} t| }t| }t||gj}t| |dd}dd }td|||  d S )Nr   r   r?   r2   )r4   c                 S   s   || d S r.   r   )_interpZxpr   r   r   	worker_fn   s   z'test_rbf_concurrency.<locals>.worker_fn)r   r   r   r!   r5   r6   r	   r
   )r   r7   r8   r   r   rd   r   r   r   test_rbf_concurrency   s   re   )'__doc__numpyr!   Zscipy._lib._array_apir   r   r   r   r   r   r   Zscipy.interpolate._rbfr	   Zscipy._lib._testutilsr
   Zpytestr/   r   r)   r,   r0   r9   r<   r=   r>   rH   rL   rN   rO   rQ   rR   rT   rV   r[   r\   ra   markZthread_unsafere   r   r   r   r   <module>   s:   


