
    (ph@                        S SK r S SKrS SKrS SKJrJrJrJr  S SK	J
r  S SK	r	S SKJr  S SKJr  S SKJr  S SKJrJrJrJrJrJrJrJrJrJrJrJr  S SKJr  S S	K J!r!  S
 r"S r#SS jr$S r% " S S5      r& " S S5      r' " S S5      r( " S S5      r) " S S5      r*S r+S r,S r-S r.\	R^                  R`                  S 5       r1S r2S r3g)     N)xp_assert_equalxp_assert_closeassert_almost_equalassert_array_almost_equal)raises)check_free_memory)RectBivariateSpline)make_splrep)splrepsplevbisplrepbisplevsprootsplprepsplintspaldesplder
splantiderinsertdblint)regrid_smth)dfitpack_intc                     [         R                  R                  [         R                  R                  [         R                  R	                  [
        5      5      SU 5      $ )Ndata)ospathjoinabspathdirname__file__)basenames    W/var/www/html/venv/lib/python3.13/site-packages/scipy/interpolate/tests/test_fitpack.py	data_filer#      s8    77<<(AB* *    c                 l    [         R                  " [         R                  " U R                  U 5      5      $ N)npsqrtdotT)xs    r"   norm2r,      s    77266!##q>""r$   c                     US-  S:X  a  [         R                  " U 5      $ US-  S:X  a  [         R                  " U 5      $ US-  S:X  a  [         R                  " U 5      * $ US-  S:X  a  [         R                  " U 5      * $ g)z$Derivatives of sin->cos->-sin->-cos.   r            N)r'   sincos)r+   ds     r"   f1r5      so    1uzvvay1uzvvay1uzq	z1uzq	z r$   c           
          [         R                  " [        [        R                  " [         R
                  " U 5      [         R
                  " U5      5      5      5      nUR                  $ )z7Helper function to create an array of pairs of x and y.)r'   arraylist	itertoolsproductasarrayr*   )r+   yxys      r"   	makepairsr>   *   s;    	$y((A

1FG	HB44Kr$   c                      \ rS rSrSrSSSS\R                  -  SSS4S jrSSSS\R                  -  4S	 jrS
 r	\
R                  R                  SSS/5      \
R                  R                  SSS/5      S 5       5       r\
R                  R                  SSS/5      \
R                  R                  SSS/5      S 5       5       r\
R                  R                  SSS/5      \
R                  R                  SSS/5      S 5       5       rS r\
R                  R                  SSS/5      \
R                  R                  S/ SQ5      S 5       5       rS rSrg)TestSmokeTests0   z^
Smoke tests (with a few asserts) for fitpack routines -- mostly
check that they are runnable
r   r0   FNc           
      
  ^^ Uc  UnUc  UnSm[         R                  " X4TS-   5      nX4U-
  [         R                  " ST[        S9-  [        TS-
  5      -  -   n	[	        U5      n
UU4S jn[        SS5       GH  n[        XTXUS9nU(       a  US   X*  OU	n[        US-   5       HI  nU" X5      n[        [	        X5      [        XU5      -
  5      [        [	        X5      5      -  nUU:  a  MI   e   U(       a  M  [        XUTXgS9n[        UR                  5      [        US   5      :X  aI  [        UR                  US   S	S
9  [        UR                  US   S UR                  R                   SS
9  M  US:X  a  GM   e   g )N   r/   dtypec                 H   > ST-  nSUSX-
  -  -  -  nTS:  a  UST-  -  nU$ )N      ?         ?r   g     j@ )kr4   htolNss       r"   err_est'TestSmokeTests.check_1.<locals>.err_estB   s9    aAa#qs)n$C1us1uJr$      rO   perrK   xer   )rK   rO   xbrU   V瞯<atolvIh%<=rH   )r'   linspacearangefloatr5   ranger   r,   r   r
   lentr   csize)selfrT   rO   abat_nodesrV   rU   r+   x1vrP   rK   tckttr4   rM   errsplrN   s     `                @r"   check_1TestSmokeTests.check_15   s^   :B:BKKa!e$a%299Q77%A,FFqE	 q!AR8C!)Q"rB1Q3ZamBrIbq(99:U2b9=MMSy y   3!!!qR?suu:SV,#CEE3q6>#CEE3q6+355::+>UK6M6! r$   rC   c           
        ^ SS[         R                  -  S[         R                  -  pvn[         R                  " XVTS-   5      n[         R                  " U5      n	U4S jn
/ n[	        SS5       H5  n[        XSXUS9nUR                  [        X4U5      [        X}5      /5        M7     SnU H8  nSnUS    H%  nU
" X5      n[        U[        X5      SUS9  US-   nM'     US-   nM:     g )	Nr   r0   皙?r/   c                 ,   > ST-  nSUSX-
  -  -  -  nU$ )NrG   rH   rI   rJ   )rK   r4   rL   rM   rN   s       r"   rP   'TestSmokeTests.check_2.<locals>.err_esta   s%    aAa#qs)n$CJr$   rR   rS   rY   rtol)r'   pir[   r2   r^   r   appendr   r   r   r5   )rc   rT   rN   iaibrd   re   dxr+   rh   rP   nkrK   ri   rr4   drrM   s     `               r"   check_2TestSmokeTests.check_2\   s    ags255ybKKac"FF1I	 q!AQ7CIIvbc*F2O<=  AAdamBrIAC@aC  !A r$   c                     U R                  SS9  U R                  S[        R                  -  S9  U R                  S[        R                  -  S[        R                  -  SSS9  g )	Ngư>rO         ?)re   r0   r/   皙?)re   rU   rT   rO   )rm   r'   ru   rc   s    r"   test_smoke_splrep_splev&TestSmokeTests.test_smoke_splrep_splevu   sJ    ts255y!s255yQruuW!t<r$   rT   r/   rf   Tc                 "    U R                  XS9  g )N)rT   rf   )rm   )rc   rT   rf   s      r"   test_smoke_splrep_splev_2(TestSmokeTests.test_smoke_splrep_splev_2z   s     	0r$   rN   2   c                 "    U R                  X!S9  g )N)rT   rN   )r}   rc   rN   rT   s      r"   test_smoke_splint_spalde'TestSmokeTests.test_smoke_splint_spalde   s     	"r$   c                 d    U R                  S[        R                  -  [        R                  XS9  g )Nrp   )rw   rx   rN   rT   )r}   r'   ru   r   s      r"   test_smoke_splint_spalde_iaib,TestSmokeTests.test_smoke_splint_spalde_iaib   s"     	BEE	beeq:r$   c           
         Su  p[         R                  " XS5      n[         R                  " U5      nS H2  n[        X4SSXRS9n[	        [
        5         [        U5        S S S 5        M4     Sn[        X4SSS9n[        U5      n[        [        Xv5      [         R                  " [        U5      5      SSS	9  [        U[         R                  [         R                  " / S
Q5      -  SS9  g ! , (       d  f       M  = f)N)r      rC   )r/   r0   r.   rH   r   rS   r1   )rO   rK   绽|=rs   )r/   r0   r1   r.   gMbP?rt   )r'   r[   r2   r   assert_raises
ValueErrorr   r   r   zerosr_   ru   r7   )rc   rd   re   r+   rh   rK   ri   rootss           r"   test_smoke_sproot TestSmokeTests.test_smoke_sproot   s    KKb!FF1IAQ5Cz*s +* 
 QQ!$se)288CJ+?eRWXruurxx'==DI +*s   C''
C6	rK   r/   r0   r1   r.   rH   c                 F   SS[         R                  -  S[         R                  -  pTn[         R                  " X4US-   5      n[         R                  " U5      n[	        Xg/SSUSS9u  p[        XX5      n
[        U
S   [         R                  " U
S   5      -
  5      nUS:  d   e[        XgSSUS9n[        [        U
S   U5      [         R                  " U
S   5      -
  5      nUS:  d   eUS	:X  a3  [	        Xg/SSUSS9u  p[        SUS-   5       H  n[        XXU5      n
M     g g )
Nr          @rp   r/   )rO   rT   rK   nest{Gz?)rO   rT   rK   r1   )	r'   ru   r[   r2   r   r   absr   r^   )rc   rN   rK   rd   re   ry   r+   rh   tckpuuverr1ri   err2r4   s                  r"   test_smoke_splprep_splrep_splev.TestSmokeTests.test_smoke_splprep_splrep_splev   s    bhBEE	bKKac"FF1I1&A1;2_2a5266"Q%=()d{{QQA+5A$rvvbe}45d{{ 6qfqAB?GD1ac]2Q' # r$   c           	      B   SS[         R                  -  p!SS[         R                  -  pCSu  pVSu  pxS n	[         R                  " XUS-   5      n
[         R                  " X4US-   5      n[        X5      n[	        US   US   U	" US   US   5      SXVS9nUS   XU*  US   Xf*  /n[        US   US   5      n[        US   US   U5      nU	" US   US   5      n[        US   5      [        US   5      4Ul        [        [         R                  " UU-
  5      5      S:  d   eg )	Nr   r   r1   r1   )rC   rC   c                 2    [         R                  " X-   5      $ r&   r'   r2   r+   r<   s     r"   f26TestSmokeTests.test_smoke_bisplrep_bisplev.<locals>.f2   s    66!#;r$   r/   rO   kxkyr   )
r'   ru   r[   r>   r   r   r_   shaper,   ravel)rc   rV   rU   ybyer   r   NxNyr   r+   r<   r=   ri   rj   t2v1v2s                     r"   test_smoke_bisplrep_bisplev*TestSmokeTests.test_smoke_bisplrep_bisplev   s'   BruuHBBruuHB	 KKQ'KKQ'q_r!ubeR1r!u%5rI!fRnc!fRn-r!ube$RUBqE3'1r!ur!u:s2a5z)RXXb2g&'$...r$   rJ   )__name__
__module____qualname____firstlineno____doc__r'   ru   rm   r}   r   pytestmarkparametrizer   r   r   r   r   r   __static_attributes__rJ   r$   r"   r@   r@   0   sc    qA2555D%"N raAbeeG 2=
 [[UQF+[[Z$71 8 ,1 [[S2r(+[[UQF+# , ,# [[S2r(+[[UQF+; , ,;J" [[S2r(+[[S/2( 3 ,((/r$   r@   c                   &    \ rS rSrS rS rS rSrg)	TestSplev   c                     / SQn/ SQn[        X5      n[        S/U5      nUR                  S:X  d   e[        SU5      nUR                  S:X  d   eg )Nr   r.   rH   rR         r/   )r/   rJ   )r   r   r   )rc   r+   r<   ri   zs        r"   test_1d_shapeTestSplev.test_1d_shape   sM    Ql1#sOww$!SMww"}}r$   c                     / SQn/ SQn[        X5      n[        R                  " / SQ/ SQ/5      n[        XC5      n[        US   U5      n[        US   U5      n[	        U[        R
                  " Xg45      5        g )Nr   r   )rG   r   r         @)      @g      @      @g      @r   r/   )r   r'   r7   r   r   vstack)rc   r+   r<   ri   r`   r   z0z1s           r"   test_2d_shapeTestSplev.test_2d_shape   sl    QlHH**, -!M1Q41Q4299bX./r$   c           	          / SQn/ SQn[        XSS9nSS/SS/S SS//nS	 H  n[        [        SS/X5S
9XE   5        M     [        [        [        SS/USS
9  g )N)r/   r0   r1   )r   r0   r.   r/   )rK   rR   r   r.   )r   r/   r1   )extr0   )r   r   r   r   r   )rc   r+   r<   ri   rstlr   s         r"   test_extrapolation_modes"TestSplev.test_extrapolation_modes   sk     QQQ!Q1v.C%eQFC&A49M  	j%!Q!<r$   rJ   N)r   r   r   r   r   r   r   r   rJ   r$   r"   r   r      s    	0=r$   r   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)
TestSplder   c                    [         R                  " SSS5      S-  n[         R                  " SU-  5      n[        X5      U l        [         R
                  " [         R                  " U R                  S   5      5      S:  d   eg )Nr   r/   d   r1   rC   )r'   r[   r2   r   rl   ptpdiff)rc   r+   r<   s      r"   setup_methodTestSplder.setup_method   s_    KK1c"A%FF26N!< vvbggdhhqk*+a///r$   c                 
   [        S5       Ht  n[        U R                  U5      n[        X!5      n[	        U R                  S   US   5        [	        U R                  S   US   5        U R                  S   US   :X  a  Mt   e   g )NrH   r   r/   r0   )r^   r   rl   r   r   )rc   nspl2spl3s       r"   test_inverseTestSplder.test_inverse   so    qAdhh*D$?DDHHQKa1DHHQKa188A;$q'))) r$   c                 &   [        S5       H  n[        R                  " SSS5      nUS:X  a  X"S:  US:*  -     n[        X R                  U5      n[        U R                  U5      n[        X$5      nUS:X  a  [        X5SS	9  Mw  [        X55        M     g )
Nr.   r   r0   i  r1   r   r/   g>r   )r^   r'   r[   r   rl   r   r   )rc   r   xxdyr   dy2s         r"   test_splder_vs_splevTestSplder.test_splder_vs_splev   s     sARD)BAv qR1W-.r88Q'B$((A&D/CAvd3( r$   c                 D   [        U R                  5      n[        R                  " SSS5      nU Hm  nU Hd  n[	        X4U R                  5      n[        XA5      [        X15      -
  n[        [        R                  " U5      [        R                  " U5      5        Mf     Mo     g )Nr   r/   rC   )r   rl   r'   r[   r   r   r   r;   )rc   r   r   rg   x2y1y2s          r"   test_splantider_vs_splint$TestSplder.test_splantider_vs_splint  st    $((# [[Ar"BBDHH-2_uR6

2

2?  r$   c                 D    [        [        [        U R                  S5        g )Nr.   )r   r   r   rl   r   s    r"   test_order0_diffTestSplder.test_order0_diff!  s    j&$((A6r$   c                 6   [        SU R                  SS9n[        US5        [        [        [        US5        [        SU R                  SS9n[        US5        [        [        [        US5        [        SU R                  SS9n[        [        [        US5        g )N      ?r0   )mr1   r/   r.   )r   rl   r   r   r   )rc   r   s     r"   	test_kinkTestSplder.test_kink$  sv     c488q)tQj&$2c488q)tQj&$2c488q)j&$2r$   c                    [        S5       H}  nU R                  u  p#n[        R                  X3U4   n[        R                  " XU45      n[        X%U4U5      n[        Xa5      n[        X'S   5        [        XWS   5        XGS   :X  a  M}   e   g )Nr1   r   r/   r0   )r^   rl   r'   c_dstackr   r   r   )rc   r   r`   ra   rK   c2r   r   s           r"   test_multidimTestSplder.test_multidim2  s}    qAhhGA!qQwBB8$Bqaj!,D$?DAAw'BQ(Q<< r$   )rl   N)r   r   r   r   r   r   r   r   r   r  r  r   rJ   r$   r"   r   r      s&    0*)&@73 r$   r   c                       \ rS rSrS rSrg)
TestSplintiA  c           	      :   Su  p[         R                  " U5      nUS-  n[        X4SS9u  pVn[        U5      [        U5      s=:X  a  USUS-
  -  -   :X  d   e   e[	        SSXVU45      nSn[        Xx-
  5      S	:  d   eUR                  5       n	[         R                  U	[        U5      U-
  S-
  S & [	        SSXYU45      n
[        X-
  5      S	:  d   e[         R                  U	S'   [         R                  " [	        SSXYU45      5      (       d   eUS [        U5      U-
  S-
   n[	        SSX[U45      nX-
  S	:  d   e[        [        S
S9   [	        SS[         R                  " S5      [         R                  " S5      S45        S S S 5        g ! , (       d  f       g = f)N)r   r1   r1   r   r   r0   r/   rR   g     @t@rZ   z>=n-k-1)match
   rH   )r'   r\   r   r_   r   r   copynanisnanr   	Exceptionones)rc   r   rK   r+   r<   r`   ra   resexpectedc0res0c1res1s                r"   
test_len_cTestSplint.test_len_cB  s   IIaLqD#a 1vQ.1q!A#w;..... QA!9%3>"U*** VVX ff3q6A:>?aQAJ'4?#e+++ 1xxq!aQZ01111 A
QaQAJ'5(((
 9J71a"''"+rwwqz156 877s   
9F
FrJ   N)r   r   r   r   r  r   rJ   r$   r"   r
  r
  A  s    !7r$   r
  c                   z    \ rS rSrS rS r\R                  R                  \	\
R                  :g  SS9S 5       rSrg)	TestBisplrepif  c                     SSK Jn  [        R                  S:X  a  SnOSnU" [        R
                  " S5      U4S9n[        [        [        X3X3SSSSSS	9  g )
Nr   )
as_stridedr   l    d</i q rJ   )r   r/   )wrV   rU   r   r   rO   )	numpy.lib.stride_tricksr  r   itemsizer'   r   r   OverflowErrorr   )rc   r  rb   r+   s       r"   test_overflowTestBisplrep.test_overflowg  sP    6  A%DD rxx|D73mXqQqQ1	3r$   c           
          [         R                  " [        S5      5       nUS   nS S S 5        [        WS S 2S4   US S 2S4   US S 2S4   SSSSS9  g ! , (       d  f       N3= f)	Nzbug-1310.npzr   r   r/   r0   r1   T)r   r   rO   full_output)r'   loadr#   r   )rc   loaded_datar   s      r"   test_regression_1310!TestBisplrep.test_regression_1310s  s^    WWY~./;v&D 0 	acD1ItAaCyQ1!	# 0/s   A
A!zneeds ilp64 fitpack)reasonc           	         [        S5        [        R                  " SSS5      n[        R                  " SSS5      n[        R                  " X5      u  p[        R                  " U5      n[        XUSSSS9n[        [        SSU5      S5        g )	Ni`m  r   r/   i  r1   r   r   rO   r           )r   r'   r[   meshgrid
zeros_liker   r   r   )rc   r+   r<   r   ri   s        r"   test_ilp64_bisplrep TestBisplrep.test_ilp64_bisplrep  sq    % KK1c"KK1c"{{1 MM!qQ1a0S#.4r$   rJ   N)r   r   r   r   r#  r)  r   r   skipifr   r'   int64r1  r   rJ   r$   r"   r  r  f  s?    
3
# [[09NO5 P5r$   r  c            	         [         R                  " SS5      n [         R                  " SS5      n[         R                  " X5      u  p#[        XSU-  U-  5      n[	        UR
                  5      nUR                  UR                  5        [        [        SSSSU5      S-
  5      S:  d   e[        [        SSSSU5      S-
  5      S:  d   e[        [        SSSSU5      S-
  5      S:  d   e[        [        SS	SS	U5      S-
  5      S:  d   eg )
Nr   r/   r.   r   r   g      ?rI   ir   )
r'   r[   r/  r	   r8   ri   extenddegreesr   r   )r+   r<   r   yyrectri   s         r"   test_dblintr:    s     	AqA
AqA[[FBqQVb[1D
txx.CJJt||vaAq#&*+e333vaaC(4/05888vc1aC(4/05888vdCsC0145===r$   c                     [         R                  " / SQ5      [         R                  " / SQ5      S4n U u  pn[         R                  " / SQ5      n[        [        X@5      US   US   US   -
  U-  US   -  -   5        [        [        X@S5      [         R                  " U5      US   US   -
  -  US   -  5        [         R
                  R                  S5        [         R                  " [         R
                  R                  S5      5      n[         R
                  R                  S5      n[        XE5      u  pnUS   S	-
  US
   S	-   /n[        XU4U5      n[        [        XAX#4U5      [        XF5      5        g )N)r.  r.  r   r   )ggg~'	@r.  r.  r/   )r   r   r1   r   r0   i     rG   r   )
r'   r7   r   r   	ones_likerandomseedsortr   r   )ri   r`   ra   rK   r+   r<   tck2s          r"   test_splev_der_krC    s=   
 88&'8856C GA!
!A E!M1Q41Q4!A$;!*;AaD*@#@AE!!$LLOqtad{3ad:
 IINN4
		  $%A
		AQlGA!	
1AbEBJA1)QDE!Y*E!N;r$   c                  L   [         R                  " SSS5      n [         R                  " S[         R                  -  U -  5      n[         R                  " S[         R                  -  U -  5      n[        X/SS9u  p4[         R                  " SSS5        US   n[        X/SUS	9u  p4g )
Nr   g?r   r0   r   g)\(?r   r   )taskr`   )r'   r\   r2   ru   r3   r   )r`   r+   r<   ri   r   uknotss         r"   test_splprep_segfaultrG    s     			!S#A
qwqyA
qwqyAaVq!FCIIatVFaV"/FCr$   c                     [         R                  R                  S5        [         R                  " SSS5      n U n[         R                  R	                  SS5      R                  5       nSnSn[        XUS S S S X4SS9
u  pVpxpnUS U US U U	S XS-
  S-
  Xt-
  S-
  -   X44n[         R                  " S/5      n[         R                  " S/5      n[        [        [        4[        XU5        g )Nr/   r      r.  r-  i  ( )r'   r?  r@  r[   randnr   r   r   r   RuntimeErrorMemoryErrorr   )r+   r<   r   r   r   nxtxnytyra   fpierri   xpyps                  r"   test_bisplev_integer_overflowrU    s    IINN1
Aq"A	A
		B%%'A	
B	
B!,	atT4B">BBA3cr7BsGQ=11 =>
GC	7)	B	7)	B<-wDr$   c            	         Sn Su  pS n[         R                  " SSU 5      n[         R                  " SSU 5      n[        XE5      n[        US   US   U" US   US   5      SXS	9nS
n[         R                  " U5      US'   [         R                  " U5      S-  US'   [         R                  " S5      n	[         R                  " S5      S-  n
[
        R                  " [        5         [        XUSS5        S S S 5        g ! , (       d  f       g = f)N   r   c                 2    [         R                  " X-   5      $ r&   r   r   s     r"   r   test_gh_1766.<locals>.f2  s    vvac{r$   r   r  r   i  r/   r   i  r.   r1   )	r'   r[   r>   r   r\   r   r   rL  r   )rb   r   r   r   r+   r<   r=   ri   
tx_ty_sizett_0tt_1s              r"   test_gh_1766r]    s     DFB 	Ar4 A
BT"A	1B
2a5"Q%BqE2a5!1Q2
EC JYYz"CFYYz"Q&CF99R=D99R=1D	{	#CA& 
$	#	#s   %C==
Dc                      [         R                  " SS5      n U S-  n[        XSS/S9n[        [         R                  " S5      U5      n[         R
                  " / SQ5      n[        X45        g )Nr   r  r1   rH   )rK   r`   r/   )rG   r         @r_  )r'   r[   r   r   float64r7   r   )r+   r<   ri   r  dess        r"   test_spalde_scalar_inputrb    sV    
ArA	1A
qc
"C
A
$C
((#
$C!r$   c                  ^   [         R                  " / SQSS9n / SQn[         R                  " / SQ5      nSn[        XX#45      n[         R                  " U5      n[         R                  " [	        S5       Vs/ s H  n[        XX#4U5      PM     sn5      n[        XFR                  SS	9  g s  snf )
N)      $      "                                                                    r.  r   rG   r   r   r   r   r         @r_  r]   rD   )rd  rd  rd  rd  re  rf  rg  rh  ri  rj  rk  rl  rm  rn  ro  rp  r.  r   rG   r   r   r   r   r   rq  r_  r_  r_  r_  )rG   r.  r.  r.  r.  r.  r.  r.  r.  r.  r.  r.  r.  r.  r.  r.  r.  r.  r.  r.  r.  r.  r.  r.  r.  r1   r.   rW   rX   )r'   r;   r   r   r^   r   r   r*   )r+   r`   ra   rK   r  nu	res_splevs          r"   test_spalde_ncrt    s     	

 J!	#A	"A 	

 < 	=A	A
I
C
))C.C

eAhGhE!Y3hGHIC51 Hs   6B*)r   )4r9   r   numpyr'   scipy._lib._array_apir   r   r   r   r   r   r   scipy._lib._testutilsr   scipy.interpolater	   r
   scipy.interpolate._fitpack_pyr   r   r   r   r   r   r   r   r   r   r   r   scipy.interpolate._dfitpackr   scipy.interpolate._fitpack2r   r#   r,   r5   r>   r@   r   r   r
  r  r:  rC  rG  rU  r   xslowr]  rb  rt  rJ   r$   r"   <module>r}     s     	   +  3 1 )J J J J 3 4*
#	T/ T/n#= #=LQ  Q h"7 "7J!5 !5H> <8
0E& ' ',"2r$   