
    _Mhm                         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 Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#ej$        j%        d             Z&dS )z 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                    t          ddd          }t          |          }t          |||           } ||          }t          ||           t	           |t          |d                             |d         d           d S )Nr   
   	   functionF)check_0d)r   r   r
   r   r   float)r   xyrbfyis        `/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/interpolate/tests/test_rbf.pycheck_rbf1d_interpolationr      s    2aAAA
aX
&
&
&C	QBa$$$E!A$KK((!A$??????    c                 j   t           j                            d          }|                    dd          dz  dz
  }|                    dd          dz  dz
  }|t	          |dz   d|dz  z  z
            z  }t          |||d|           } |||          }|j        |_        t          ||           d S )N  2                          ?epsilonr   nprandomRandomStaterandr   r
   shaper   )r   rngr   r   zr   zis          r   check_rbf2d_interpolationr2      s    
)


%
%CAqAAqA	#q!teBq!tGm

A
aAq8
4
4
4C	QBwBHa$$$$$r   c                    t           j                            d          }|                    dd          dz  dz
  }|                    dd          dz  dz
  }|                    dd          dz  dz
  }|t	          |dz   |dz  z
            z  }t          ||||d|           } ||||          }|j        |_        t          ||           d S )Nr!   r"   r#   r$   r%   r'   r)   )r   r/   r   r   r0   dr   dis           r   check_rbf3d_interpolationr6   )   s    
)


%
%CQAAQAAQAA	#q!teadl

A
aAq!h
7
7
7C	Q1BwBHb!$$$$$r   c                  t    t           D ]/} t          |            t          |            t          |            0d S N)	FUNCTIONSr   r2   r6   r   s    r   test_rbf_interpolationr:   6   sH     , ,!(+++!(+++!(++++, ,r   c                 Z   t          ddd          }t          |          }t          |          }t          j        ||g          j        }t          ||| 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   s          r   check_2drbf1d_interpolationrC   =   s    BA	QB	QB
	2r(A
aXE
2
2
2C	QBa$$$E!A$KK((!A$/////r   c                    t           j                            d          }|                    d          dz  dz
  }|                    d          dz  dz
  }|t	          |dz   d|dz  z  z
            z  }|t	          |dz   d|dz  z  z
            z  }t          j        ||g          j        }t          |||d| d          } |||          }|j        |_        t          ||           d S )Nr!   r"   r$   r%   r&   r<   r(   r   r>   
r*   r+   r,   r-   r   r?   r@   r
   r.   r   )	r   r/   r   r   z0z1r0   r   r1   s	            r   check_2drbf2d_interpolationrI   I   s    
)


%
%CQAQA	
S!q&2Q;&''	'B	
S!q&2Q;&''	'B
	2r(A
aAq8%
@
@
@C	QBwBHa$$$$$r   c           	      
   t           j                            d          }|                    d          dz  dz
  }|                    d          dz  dz
  }|                    d          dz  dz
  }|t	          |dz   |dz  z
            z  }|t	          |dz   |dz  z
            z  }t          j        ||g          j        }t          ||||d| d          } ||||          }	|j        |	_        t          |	|           d S )Nr!   r"   r$   r%   r<   rE   rF   )
r   r/   r   r   r0   d0d1r4   r   r5   s
             r   check_2drbf3d_interpolationrM   W   s   
)


%
%CQAQAQA	
S!q&16!""	"B	
S!q&16!""	"B
	2r(A
aAq!hU
C
C
CC	Q1BwBHb!$$$$$r   c                  t    t           D ]/} t          |            t          |            t          |            0d S r8   )r9   rC   rI   rM   r   s    r   test_2drbf_interpolationrO   f   sH     . .#H---#H---#H----. .r   c                 ^   t          ddd          }t          |          }t          |||           }t          ddd          } ||          }dt          |t          |          z
                                            d}t          |t          |          |          s
J |            d S )	Nr   r   r   r   d   
abs-diff: fatol)r   r   r
   absmaxr	   )r   rU   r   r   r   xir   msgs           r   check_rbf1d_regularityrZ   m   s     	BAAA
aX
&
&
&C	!R		B	RB
2s2B<((,,..
2
2
2CBBd+++00S00000r   c                  v    dddddddd} t           D ]&}t          ||                     |d                     'd S Ng?g333333?g?r   g{Gz?)r9   rZ   get
tolerancesr   s     r   test_rbf_regularityr`   y   sc     $ J  I Ix$)G)GHHHHI Ir   c           
      L   t          ddd          }t          |          }t          |          }t          j        ||g          j        }t          ||| d          }t          ddd          } ||          }dt          |t          j        t          |          t          |          g          j        z
                                            d}	t          |t          j        t          |          t          |          g          j        |	          s
J |	            d S )
Nr   r   r   r<   r=   rQ   rR   rS   rT   )
r   r   r   r*   r?   r@   r
   rV   rW   r	   )
r   rU   r   rA   rB   r   r   rX   r   rY   s
             r   check_2drbf1d_regularityrb      s    	BA	QB	QB
	2r(A
aXE
2
2
2C	!R		B	RB
Js2	3r77CGG*< = = ??@@DDFF
J
J
JCB	3r77CGG"4557dCCCHHSHHHHHr   c                  v    dddddddd} t           D ]&}t          ||                     |d                     'd S r\   )r9   rb   r]   r^   s     r   test_2drbf_regularityrd      sc     $ J  K K :>>(D+I+IJJJJK Kr   c                    t           j                            d          }t          j        ddd          }|d|                    t          |                    z  z   }t          |||           }t          j        ddd          } ||          }t          j        ||z
                                            t          j        ||z
                                            z  dk     sJ d S )	Nr!   r   r   r"   g      @r   i  g?)	r*   r+   r,   r   randnlenr
   rV   rW   )r   r/   r   r0   r   rX   r   s          r   check_rbf1d_stabilityrh      s    
 )


%
%C
Ar2A	C#))CFF####A
aX
&
&
&C	QD	!	!B	RB 6"R%==!!2!22S888888r   c                  8    t           D ]} t          |            d S r8   )r9   rh   r   s    r   test_rbf_stabilityrj      s,     ( (h''''( (r   c                      t          ddd          } t          |           }t          | |          } ||           }t          ||           d S )Nr   r   r   r   r   r
   r   )r   r   r   r   s       r   test_default_constructionrm      sP     	2aAAA
a))C	QBa$$$$$r   c                      t          ddd          } t          |           }d }t          | ||          } ||           }t          ||           d S )Nr   r   r   c                     | S r8    )r   s    r   linfuncz*test_function_is_callable.<locals>.linfunc   s    r   r   rl   )r   r   rq   r   r   s        r   test_function_is_callablerr      sd    2aAAA  
aW
%
%
%C	QBa$$$$$r   c                      d } t          ddd          }t          |          }t          |||           } ||          }t          ||           d S )Nc                     | j         |z   S r8   r(   )selfrs     r   _funcz0test_two_arg_function_is_callable.<locals>._func   s    |ar   r   r   r   r   rl   )rx   r   r   r   r   s        r   !test_two_arg_function_is_callablery      sf          	2aAAA
aU
#
#
#C	QBa$$$$$r   c                  j    t          ddd          } t          |           }t          | |d            d S )Nr   r   r   ru   )r   r   r
   )r   r   s     r   test_rbf_epsilon_noner{      s9    BAAA1dr   c                  ^    g d} g d}g d}t          | ||d           }|j        dk    sJ d S )N)r#   r%      )r$   r$   r$   )         ru   r   )r
   r(   )r   r   r0   r   s       r   test_rbf_epsilon_none_collinearr      sH     			A		A		A
aAt
$
$
$C;??????r   c                      t          ddd          } t          |           }t          |           }t          j        ||g          j        }t          | |d          }d }t          d|||            d S )Nr   r   rQ   r<   )r>   c                      ||           d S r8   rp   )_interpxps      r   	worker_fnz'test_rbf_concurrency.<locals>.worker_fn   s    r




r   )r   r   r   r*   r?   r@   r
   r   )r   rA   rB   r   r   r   s         r   test_rbf_concurrencyr      s~    BA	QB	QB
	2r(A
a


C   B	322222r   )'__doc__numpyr*   scipy._lib._array_apir   r   r   r   r   r   r	   scipy.interpolate._rbfr
   scipy._lib._testutilsr   pytestr9   r   r2   r6   r:   rC   rI   rM   rO   rZ   r`   rb   rd   rh   rj   rm   rr   ry   r{   r   markthread_unsafer   rp   r   r   <module>r      s   % %     P P P P P P P P 3 3 3 3 3 3 3 3 3 3 3 3 3 3 & & & & & & 9 9 9 9 9 9 9	@ @ @	% 	% 	%
% 
% 
%, , ,	0 	0 	0% % %% % %. . .	1 	1 	1I I II I IK K K9 9 9 ( ( (
% % %% % %
% 
% 
%     
3 
3 
3 
3 
3r   