
    tKg                         d Z ddlZddlmZmZmZ ddlmZmZm	Z	m
Z
mZmZ ddlm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"y)z Test functions for rbf module     N)assert_assert_array_almost_equalassert_almost_equal)linspacesincosrandomexpallclose)Rbfmultiquadriczinverse multiquadricgaussiancubicquinticz
thin-platelinearc                     t        ddd      }t        |      }t        |||       } ||      }t        ||       t	         |t        |d               |d          y )Nr   
   	   function)r   r   r   r   r   float)r   xyrbfyis        d/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/interpolate/tests/test_rbf.pycheck_rbf1d_interpolationr      sU    2aAAA
aX
&C	QBa$E!A$K(!A$/    c                    t        j                  dd      dz  dz
  }t        j                  dd      dz  dz
  }|t        |dz   d|dz  z  z
        z  }t        |||d|       } |||      }|j                  |_        t        ||       y )N2                          ?epsilonr   r	   randr
   r   shaper   )r   r   r   zr   zis         r   check_rbf2d_interpolationr-      s    Bq!AABq!AA	#q!teBq!tGm
A
aAq8
4C	QBwwBHa$r   c                 L   t        j                  dd      dz  dz
  }t        j                  dd      dz  dz
  }t        j                  dd      dz  dz
  }|t        |dz   |dz  z
        z  }t        ||||d|       } ||||      }|j                  |_        t        ||       y )Nr!   r"   r#   r$   r&   r(   )r   r   r   r+   dr   dis          r   check_rbf3d_interpolationr1   #   s    B1q AB1q AB1q A	#q!teadl
A
aAq!h
7C	Q1BwwBHb!$r   c                  \    t         D ]#  } t        |        t        |        t        |        % y N)	FUNCTIONSr   r-   r1   r   s    r   test_rbf_interpolationr5   /   s$    !(+!(+!(+ r   c                    t        ddd      }t        |      }t        |      }t        j                  ||g      j
                  }t        ||| d      } ||      }t        ||       t         |t        |d               |d          y )Nr   r   r   N-Dr   mode)
r   r   r   npvstackTr   r   r   r   )r   r   y0y1r   r   r   s          r   check_2drbf1d_interpolationr?   6   sx    BA	QB	QB
		2r(A
aXE
2C	QBa$E!A$K(!A$/r   c                    t        j                  d      dz  dz
  }t        j                  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        ||       y )Nr!   r#   r$   r%   r7   r'   r   r9   	r	   r)   r
   r:   r;   r<   r   r*   r   )r   r   r   z0z1r+   r   r,   s           r   check_2drbf2d_interpolationrE   B   s    BA!ABA!A	
S!q&2Q;&'	'B	
S!q&2Q;&'	'B
		2r(A
aAq8%
@C	QBwwBHa$r   c           	         t        j                  d      dz  dz
  }t        j                  d      dz  dz
  }t        j                  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        ||       y )Nr!   r#   r$   r7   rA   rB   )	r   r   r   r+   d0d1r/   r   r0   s	            r   check_2drbf3d_interpolationrI   O   s    BA!ABA!ABA!A	
S!q&16!"	"B	
S!q&16!"	"B
		2r(A
aAq!hU
CC	Q1BwwBHb!$r   c                  \    t         D ]#  } t        |        t        |        t        |        % y r3   )r4   r?   rE   rI   r   s    r   test_2drbf_interpolationrK   ]   s$    #H-#H-#H- r   c                    t        ddd      }t        |      }t        |||       }t        ddd      } ||      }dt        |t        |      z
        j	                         z  }t        t        |t        |      |      |       y )Nr   r   r   r   d   abs-diff: %fatol)r   r   r   absmaxr   r   )r   rP   r   r   r   xir   msgs           r   check_rbf1d_regularityrU   d   sw     	BAAA
aX
&C	!R	B	RB
3rCG|,002
2CHRRt,c2r   c                  f    dddddddd} t         D ]  }t        || j                  |d               y Ng?g333333?g?r   g{Gz?)r4   rU   get
tolerancesr   s     r   test_rbf_regularityr[   p   s?     $J x$)GH r   c                    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
        j                         z  }	t        t        |t        j                  t        |      t        |      g      j
                  |      |	       y )	Nr   r   r   r7   r8   rM   rN   rO   )r   r   r   r:   r;   r<   r   rQ   rR   r   r   )
r   rP   r   r=   r>   r   r   rS   r   rT   s
             r   check_2drbf1d_regularityr]   ~   s     	BA	QB	QB
		2r(A
aXE
2C	!R	B	RB
3rBIIs2wB.@$A$C$CCDHHJ
JCHRCGSW#5688tDcJr   c                  f    dddddddd} t         D ]  }t        || j                  |d               y rW   )r4   r]   rX   rY   s     r   test_2drbf_regularityr_      s?     $J  :>>(D+IJ r   c                    t         j                  j                  d       t        j                  ddd      }|dt         j                  j	                  t        |            z  z   }t        |||       }t        j                  ddd      } ||      }t        t        j                  ||z
        j                         t        j                  ||z
        j                         z  dk         y )	Ni  r   r   r!   g      @r   i  g?)
r:   r	   seedr   randnlenr   r   rQ   rR   )r   r   r+   r   rS   r   s         r   check_rbf1d_stabilityrd      s    
 IINN4
Ar2A	C"))//#a&)))A
aX
&C	QD	!B	RB BFF2b5M"&&1+//"33c9:r   c                  0    t         D ]  } t        |         y r3   )r4   rd   r   s    r   test_rbf_stabilityrf      s    h' r   c                  t    t        ddd      } t        |       }t        | |      } ||       }t        ||       y )Nr   r   r   r   r   r   r   )r   r   r   r   s       r   test_default_constructionri      s9     	2aAAA
a)C	QBa$r   c                  ~    t        ddd      } t        |       }d }t        | ||      } ||       }t        ||       y )Nr   r   r   c                     | S r3    )r   s    r   linfuncz*test_function_is_callable.<locals>.linfunc   s    r   r   rh   )r   r   rm   r   r   s        r   test_function_is_callablern      s?    2aAAA
aW
%C	QBa$r   c                  ~    d } t        ddd      }t        |      }t        |||       } ||      }t        ||       y )Nc                      | j                   |z   S r3   r'   )selfrs     r   _funcz0test_two_arg_function_is_callable.<locals>._func   s    ||ar   r   r   r   r   rh   )rt   r   r   r   r   s        r   !test_two_arg_function_is_callableru      sA      	2aAAA
aU
#C	QBa$r   c                  P    t        ddd      } t        |       }t        | |d        y )Nr   r   r   rq   )r   r   r   )r   r   s     r   test_rbf_epsilon_nonerw      s%    BAAA1dr   c                  j    g d} g d}g d}t        | ||d       }t        |j                  dkD         y )N)r"   r$      )r#   r#   r#   )         rq   r   )r   r   r'   )r   r   r+   r   s       r   test_rbf_epsilon_none_collinearr}      s3     	AAA
aAt
$CCKK!Or   )#__doc__numpyr:   numpy.testingr   r   r   r   r   r   r	   r
   r   scipy.interpolate._rbfr   r4   r   r-   r1   r5   r?   rE   rI   rK   rU   r[   r]   r_   rd   rf   ri   rn   ru   rw   r}   rl   r   r   <module>r      s    % 0 0 ; ; &9	0%	%,	0
%%.	3IKK; (
%%
%r   