
    (phm                     
   S r SSKrSSKJrJr  SSKJrJrJrJ	r	J
r
  SSKJr  SSKJr  SSKrSrS rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S r"S r#\RH                  RJ                  S 5       r&g)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                     [        SSS5      n[        U5      n[        XU S9nU" U5      n[        X$5        [	        U" [        US   5      5      US   SS9  g )Nr   
   	   functionF)check_0d)r   r   r
   r   r   float)r   xyrbfyis        S/var/www/html/venv/lib/python3.13/site-packages/scipy/interpolate/tests/test_rbf.pycheck_rbf1d_interpolationr      sS    2aAAA
aX
&C	QBa$E!A$K(!A$?    c                 8   [         R                  R                  S5      nUR                  SS5      S-  S-
  nUR                  SS5      S-  S-
  nU[	        US-  * SUS-  -  -
  5      -  n[        X#USU S9nU" X#5      nUR                  Ul        [        XF5        g )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
aAq8
4C	QBwwBHa$r   c           	      d   [         R                  R                  S5      nUR                  SS5      S-  S-
  nUR                  SS5      S-  S-
  nUR                  SS5      S-  S-
  nU[	        US-  * US-  -
  5      -  n[        X#XESU S9nU" X#U5      nUR                  Ul        [        Xu5        g )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
aA!h
7C	Q1BwwBHb$r   c                  `    [          H$  n [        U 5        [        U 5        [        U 5        M&     g N)	FUNCTIONSr   r2   r6   r   s    r   test_rbf_interpolationr:   6   s$    !(+!(+!(+ r   c                 
   [        SSS5      n[        U5      n[        U5      n[        R                  " X#/5      R
                  n[        XU SS9nU" U5      n[        XF5        [        U" [        US   5      5      US   5        g )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   =   sr    BA	QB	QB
		2(A
aXE
2C	QBa$E!A$K(!A$/r   c           	         [         R                  R                  S5      nUR                  S5      S-  S-
  nUR                  S5      S-  S-
  nU[	        US-  * SUS-  -  -
  5      -  nU[	        US-  * SUS-  -  -
  5      -  n[         R
                  " XE/5      R                  n[        X#USU SS9nU" X#5      nUR                  Ul        [        Xh5        g )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
		2(A
aAq8%
@C	QBwwBHa$r   c           
         [         R                  R                  S5      nUR                  S5      S-  S-
  nUR                  S5      S-  S-
  nUR                  S5      S-  S-
  nU[	        US-  * US-  -
  5      -  nU[	        US-  * US-  -
  5      -  n[         R
                  " XV/5      R                  n[        X#XGSU SS9nU" X#U5      n	UR                  U	l        [        X5        g )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
		2(A
aA!hU
CC	Q1BwwBHb$r   c                  `    [          H$  n [        U 5        [        U 5        [        U 5        M&     g r8   )r9   rC   rI   rM   r   s    r   test_2drbf_interpolationrO   f   s$    #H-#H-#H- r   c                    [        SSS5      n[        U5      n[        X#U S9n[        SSS5      nU" U5      nS[        U[        U5      -
  5      R	                  5       S 3n[        U[        U5      US9(       d   U5       eg )	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
aX
&C	!R	B	RBs2B<(,,.q1
2CBBd+0S0+r   c                  h    SSSSSSSS.n [          H  n[        XR                  US5      5        M      g Ng?g333333?g?r   g{Gz?)r9   rZ   get
tolerancesr   s     r   test_rbf_regularityr`   y   s=     $J x$)GH r   c           
         [        SSS5      n[        U5      n[        U5      n[        R                  " X4/5      R
                  n[        X%U SS9n[        SSS5      nU" U5      nS[        U[        R                  " [        U5      [        U5      /5      R
                  -
  5      R                  5       S 3n	[        U[        R                  " [        U5      [        U5      /5      R
                  US	9(       d   U	5       eg )
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
		2(A
aXE
2C	!R	B	RBs2		3r7CG*< = ? ??@DDFqI
JCB		3r7CG"4577dCHSHCr   c                  h    SSSSSSSS.n [          H  n[        XR                  US5      5        M      g r\   )r9   rb   r]   r^   s     r   test_2drbf_regularityrd      s=     $J  >>(D+IJ r   c                    [         R                  R                  S5      n[         R                  " SSS5      nUSUR	                  [        U5      5      -  -   n[        X#U S9n[         R                  " SSS5      nU" U5      n[         R                  " Xe-
  5      R                  5       [         R                  " X2-
  5      R                  5       -  S:  d   eg )	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F###A
aX
&C	QD	!B	RB 66"%=!22S888r   c                  4    [          H  n [        U 5        M     g r8   )r9   rh   r   s    r   test_rbf_stabilityrj      s    h' r   c                  p    [        SSS5      n [        U 5      n[        X5      nU" U 5      n[        X5        g )Nr   r   r   r   r   r
   r   )r   r   r   r   s       r   test_default_constructionrm      s5     	2aAAA
a)C	QBa$r   c                  t    [        SSS5      n [        U 5      nS n[        XUS9nU" U 5      n[        X5        g )Nr   r   r   c                     U $ r8    )r   s    r   linfunc*test_function_is_callable.<locals>.linfunc   s    r   r   rl   )r   r   rq   r   r   s        r   test_function_is_callablers      s;    2aAAA
aW
%C	QBa$r   c                  t    S n [        SSS5      n[        U5      n[        XU S9nU" U5      n[        X$5        g )Nc                      U R                   U-   $ r8   r(   )selfrs     r   _func0test_two_arg_function_is_callable.<locals>._func   s    ||ar   r   r   r   r   rl   )ry   r   r   r   r   s        r   !test_two_arg_function_is_callabler{      s=      	2aAAA
aU
#C	QBa$r   c                  H    [        SSS5      n [        U 5      n[        XS S9  g )Nr   r   r   rv   )r   r   r
   )r   r   s     r   test_rbf_epsilon_noner}      s#    BAAAdr   c                  V    / SQn / SQn/ SQn[        XUS S9nUR                  S:  d   eg )N)r#   r%      )r$   r$   r$   )         rv   r   )r
   r(   )r   r   r0   r   s       r   test_rbf_epsilon_none_collinearr      s1     	AAA
aAt
$C;;??r   c                      [        SSS5      n [        U 5      n[        U 5      n[        R                  " X/5      R
                  n[        XSS9nS n[        SXTU 5        g )Nr   r   rQ   r<   )r>   c                     U" U5        g r8   rp   )_interpxps      r   	worker_fn'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      sW    BA	QB	QB
		2(A
a
C B	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   rs   r{   r}   r   markthread_unsafer   rp   r   r   <module>r      s    %  P 3 3 & 9 9	@	%
%,	0%%.	1IIK9 (
%%
% 
3 
3r   