
    (ph	                     L   S r SSKrSSKrSSKJr  SSKJr  SSKJ	r	  \R                  R                  r\	\R                  R                  S5      \" SSS	/S
9/rS rSS jr\R                  R!                  S/ SQ5      \R                  R!                  S/ SQ5      S 5       5       rg)zTests for spline filtering.    N)assert_almost_equal)ndimage)array_api_compatibleskip_xp_backendsTcupyz	jax.numpy)cpu_only
exceptionsc                 0    S/S/SS/SS// SQ/ SQS.nX   $ )z0Knot values to the right of a B-spline's center.         )   L   r   )B      r   r   r         r       )orderknot_valuess     S/var/www/html/venv/lib/python3.13/site-packages/scipy/ndimage/tests/test_splines.pyget_spline_knot_valuesr      s2    cc!f!f"!#K     c                 P   [        U5      n[        R                  " X45      n[        U5       H8  u  pg[        R                  " Xa5      nUS:X  a  XuX4'   M(  XuXU-
  4'   XuX-
  U4'   M:     US   S[        USS 5      -  -   n	US:X  a  Su  pO$US:X  a  Su  pOUS	:X  a  S
u  pO[        SU 35      e[        [        U5      S-
  5       HJ  n[        XLS-   S 5       H3  u  pX\XU-  -   4==   U-  ss'   X\* S-
  U
* S-
  X-  -
  4==   U-  ss'   M5     ML     U R                  XY-  5      $ )z1Matrix to invert to find the spline coefficients.r   r   r   Nmirror)r   r   reflect)r   r   	grid-wrap)r    zunsupported mode )
r   npzeros	enumeratearangesum
ValueErrorrangelenasarray)xpnr   moder   matrixdiag
knot_valueindicesknot_values_sumstartsteprowidxs                 r   make_spline_knot_matrixr6      s\   (/K XXqfF%k2))D$19'17#$.87dN*+.87>7*+ 3 "!nq3{12+?'??Oxt		t		t,TF344S%)*(1WX)>?OCS(()Z7)4!8eVaZ$(223zA3  @ +
 ::f.//r   r   r   r,   )r   r   r   c                     SnUR                  X2R                  S9n[        R                  " USU US9n[        R                  " USU US9n[	        X#XS9n[        XEU-  5        [        XFUR                  -  5        g )Nd   )dtyper   )axisr   r,   r   )r,   )eyefloat64r   spline_filter1dr6   r   T)r   r,   r*   r+   r;   spline_filter_axis_0spline_filter_axis_1r-   s           r   %test_spline_filter_vs_matrix_solutionrA   =   s{     	A
&&**&
%C"223Qe8<>"223Qe8<>$RE=FF:;FHH<=r   )r   )__doc__pytestnumpyr!   scipy._lib._array_apir   scipyr   scipy.conftestr   markr   usefixtures
pytestmarkr   r6   parametrizerA   r   r   r   <module>rL      s    !   5  /;;// "FKK$;$;<N$O&+9NPR
	0D "45!CD	> E 6	>r   