
     h8                     p   d dl Z d dlZd dlZd dlmZmZmZmZm	Z	 d dl
mZ d dl
Z
d dlmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZ d dl m!Z! d	 Z"d
 Z#ddZ$d Z% G d d          Z& G d d          Z' G d d          Z( G d d          Z) G d d          Z*d Z+d Z,d Z-d Z.d Z/dS )    N)assert_equalassert_allcloseassert_assert_almost_equalassert_array_almost_equal)raises)check_free_memory)RectBivariateSpline)splrepsplevbisplrepbisplevsprootsplprepsplintspaldesplder
splantiderinsertdblint)regrid_smth)dfitpack_intc                     t           j                            t           j                            t           j                            t
                              d|           S )Ndata)ospathjoinabspathdirname__file__)basenames    `/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/scipy/interpolate/tests/test_fitpack.py	data_filer#      s=    7<<(A(ABB* * *    c                 Z    t          j        t          j        | j        |                     S N)npsqrtdotT)xs    r"   norm2r,      s    726!#q>>"""r$   c                     |dz  dk    rt          j        |           S |dz  dk    rt          j        |           S |dz  dk    rt          j        |            S |dz  dk    rt          j        |            S dS )z$Derivatives of sin->cos->-sin->-cos.   r            N)r'   sincos)r+   ds     r"   f1r5      sy    1uzzvayy1uzzvayy1uzzq		z1uzzq		z zr$   c           
          t          j        t          t          j        t          j        |           t          j        |                                        }|j        S )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FGG	H	HB4Kr$   c                      e Zd ZdZddddej        z  dddfdZddddej        z  fdZd	 Ze	j
                            d
ddg          e	j
                            dddg          d                         Ze	j
                            dddg          e	j
                            d
ddg          d                         Ze	j
                            dddg          e	j
                            d
ddg          d                         Zd Ze	j
                            dddg          e	j
                            dg d          d                         Zd ZdS )TestSmokeTestszj
    Smoke tests (with a few asserts) for fitpack routines -- mostly
    check that they are runnable
    r   r0   FNc           
      T   ||}||}dt          j        ||dz             }|||z
  t          j        dt                    z  t          dz
            z  z   }	t	          |          }
fd}t          dd          D ]}t          ||
|||          }|r|d         ||          n|	}g }t          |dz             D ]c} |||          }t          t	          ||          t          |||          z
            t          t	          ||                    z  }||k     sJ dd S )N   r/   )dtypec                 J    dz  }d|d| |z
  z  z  z  }dk    r|dz  z  }|S )N      ?         ?r   g     j@ )kr4   htolNss       r"   err_estz'TestSmokeTests.check_1.<locals>.err_est@   s=    aAa#qs)n$C1uus1uJr$      rM   perrI   xer   )	r'   linspacearangefloatr5   ranger   r,   r   )selfrQ   rM   abat_nodesxbrR   r+   x1vrN   rI   tckttndr4   rK   errrL   s     `                @r"   check_1zTestSmokeTests.check_13   se   :B:BK1a!e$$!a%29Q7777%A,,FFqEE	 	 	 	 	 	 q! 	! 	!AAqR888C!)1Q1"rBB1Q3ZZ ! !gammBr1IIb#q(9(99::U2b!99=M=MMSyyyyy!	! 	!r$   rB   c           	         ddt           j        z  dt           j        z  }}}t          j        ||dz             }t          j        |          }	fd}
g }t	          dd          D ]K}t          ||	d|||          }|                    t          |||          t          ||          g           Ld}|D ]F}d}|d         D ]4} |
||          }t          |t          ||          d|           |dz   }5|dz   }Gd S )	Nr   r0   皙?r/   c                 .    dz  }d|d| |z
  z  z  z  }|S )NrE   rF   rG   rH   )rI   r4   rJ   rK   rL   s       r"   rN   z'TestSmokeTests.check_2.<locals>.err_estW   s'    aAa#qs)n$CJr$   rO   rP   atolrtol)r'   pirS   r2   rV   r   appendr   r   r   r5   )rW   rQ   rL   iaibrX   rY   dxr+   r]   rN   nkrI   r^   rr4   drrK   s     `               r"   check_2zTestSmokeTests.check_2R   s9   ags25yb1K1ac""F1II	 	 	 	 	 q! 	> 	>AAqQ777CIIvb"c**F2sOO<==== 	 	AAd  gammBr1IIAC@@@@aC!AA	 	r$   c                     |                      d           |                      dt          j        z             |                      dt          j        z  dt          j        z  dd           d S )	Ngư>rM         ?)rY   r0   r/   皙?)rY   rR   rQ   rM   )rb   r'   ri   rW   s    r"   test_smoke_splrep_splevz&TestSmokeTests.test_smoke_splrep_splevk   s\    ts25y!!!s25yQruW!t<<<<<r$   rQ   r/   rZ   Tc                 4    |                      ||           d S )N)rQ   rZ   )rb   )rW   rQ   rZ   s      r"   test_smoke_splrep_splev_2z(TestSmokeTests.test_smoke_splrep_splev_2p   s      	x00000r$   rL   2   c                 4    |                      ||           d S )N)rQ   rL   )rq   rW   rL   rQ   s      r"   test_smoke_splint_spaldez'TestSmokeTests.test_smoke_splint_spaldeu   s      	"""""r$   c                 f    |                      dt          j        z  t          j        ||           d S )Nrd   )rk   rl   rL   rQ   )rq   r'   ri   r|   s      r"   test_smoke_splint_spalde_iaibz,TestSmokeTests.test_smoke_splint_spalde_iaibz   s,     	BE	beqc:::::r$   c           	         d\  }}t          j        ||d          }t          j        |          }dD ]R}t          ||dd||          }t	          t
                    5  t          |           d d d            n# 1 swxY w Y   Sd}t          ||dd          }t          |          }t          t          ||          ddd	           t          |t           j	        t          j
        g d
          z  d           d S )N)ru      rB   )r/   r0   r.   rF   r   rP   r1   )rM   rI   g|=rf   )r/   r0   r1   r.   gMbP?rh   )r'   rS   r2   r   assert_raises
ValueErrorr   r   r   ri   r7   )rW   rX   rY   r+   r]   rI   r^   rootss           r"   test_smoke_sprootz TestSmokeTests.test_smoke_sproot   s<   1K1b!!F1II 	 	AAQ1555Cz**  s               QQ!$$$seS))15uEEEErurx'='==DIIIIIIs   A99A=	 A=	rI   r/   r0   r1   r.   rF   c                    ddt           j        z  dt           j        z  }}}t          j        |||dz             }t          j        |          }t	          ||gdd|d          \  }}	t          ||          }
t          |
d         t          j        |
d                   z
            }|dk     sJ t          ||dd|          }t          t          |
d         |          t          j        |
d                   z
            }|dk     sJ |d	k    r@t	          ||gdd|d          \  }}	t          d|dz             D ]}t          |||          }
d S d S )
Nr          @rd   r/   )rM   rQ   rI   nest{Gz?)rM   rQ   rI   r1   )	r'   ri   rS   r2   r   r   absr   rV   )rW   rL   rI   rX   rY   rm   r+   r]   tckpuuverr1r^   err2r4   s                  r"   test_smoke_splprep_splrep_splevz.TestSmokeTests.test_smoke_splprep_splrep_splev   sX    bhBE	b1K1ac""F1II1a&A1;;;a2t__2a526"Q%==())d{{{{QQA+++5A$$rvbe}}455d{{{{ 66q!fqAB???GD!1ac]] ( (2tQ'' 6( (r$   c           	         ddt           j        z  }}ddt           j        z  }}d\  }}d\  }}d }	t          j        |||dz             }
t          j        |||dz             }t          |
|          }t	          |d         |d          |	|d         |d                   d||          }|d         ||          |d         ||          g}t          |d         |d                   }t          |d         |d         |          } |	|d         |d                   }t          |d                   t          |d                   f|_        t          t          j	        ||z
                      dk     sJ d S )	Nr   r   )r1   r1   )rB   rB   c                 0    t          j        | |z             S r&   )r'   r2   )r+   r<   s     r"   f2z6TestSmokeTests.test_smoke_bisplrep_bisplev.<locals>.f2   s    6!A#;;r$   r/   )rM   kxkyr   )
r'   ri   rS   r>   r   r   lenshaper,   ravel)rW   r[   rR   ybyer   r   NxNyr   r+   r<   r=   r^   r_   t2v1v2s                     r"   test_smoke_bisplrep_bisplevz*TestSmokeTests.test_smoke_bisplrep_bisplev   sp   BruHBBruHBBB	 	 	 KBQ''KBQ''q!__r!ubeRR1r!u%5%5rbIII!fRVnc!fRVn-r!ube$$RUBqE3''R1r!ur!u::s2a5zz)RXb2g&&''$......r$   )__name__
__module____qualname____doc__r'   ri   rb   rq   rw   pytestmarkparametrizery   r}   r   r   r   r   rH   r$   r"   r@   r@   .   s         qA255D! ! ! !> raAbeG    2= = =
 [UQF++[Z$771 1 87 ,+1 [S2r(++[UQF++# # ,+ ,+# [S2r(++[UQF++; ; ,+ ,+;J J J" [S2r(++[S///22( ( 32 ,+((/ / / / /r$   r@   c                        e Zd Zd Zd Zd ZdS )	TestSplevc                     g d}g d}t          ||          }t          dg|          }t          |j        d           t          d|          }t          |j        d           d S )Nr   r.   rF   rO         r/   )r/   rH   )r   r   r   r   )rW   r+   r<   r^   zs        r"   test_1d_shapezTestSplev.test_1d_shape   sg    KKKKQll1#sOOQWd###!SMMQWb!!!!!r$   c                 *   g d}g d}t          ||          }t          j        g dg dg          }t          ||          }t          |d         |          }t          |d         |          }t	          |t          j        ||f                     d S )Nr   r   )rE   rt   r         @)      @g      @g      @g      @r   r/   )r   r'   r7   r   r   	row_stack)rW   r+   r<   r^   tr   z0z1s           r"   test_2d_shapezTestSplev.test_2d_shape   s    OOOOQllH******, - -!SMM1Q41Q4Qb"X../////r$   c                     g d}g d}t          ||d          }ddgddgd ddgg}d	D ]*}t          t          ddg||
          ||                    +t          t          t          ddg|d
           d S )N)r/   r0   r1   )r   r0   r.   r/   )rI   rO   r   r.   )r   r/   r1   )extr0   )r   r   r   r   r   )rW   r+   r<   r^   rstlr   s         r"   test_extrapolation_modesz"TestSplev.test_extrapolation_modes   s     GGGGQQQ!Q1v. 	N 	NC%eQFCS&A&A&A49MMMMj%!Q!<<<<<<r$   N)r   r   r   r   r   r   rH   r$   r"   r   r      sA        " " "	0 	0 	0= = = = =r$   r   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	
TestSplderc                    t          j        ddd          dz  }t          j        d|z            }t          ||          | _        t          t          j        | j        d                                                   dk               d S )Nr   r/   d   r1   rB   )r'   rS   r2   r   splr   diffptp)rW   r+   r<   s      r"   setup_methodzTestSplder.setup_method   sq    K1c""A%F26NN!Q<< 	$$((**Q./////r$   c                 :   t          d          D ]}t          | j        |          }t          ||          }t	          | j        d         |d                    t	          | j        d         |d                    t          | j        d         |d                    d S )NrF   r   r/   r0   )rV   r   r   r   r   r   )rW   nspl2spl3s       r"   test_inversezTestSplder.test_inverse   s    q 	/ 	/Adh**D$??DDHQKa111DHQKa111!d1g....	/ 	/r$   c                 P   t          d          D ]}t          j        ddd          }|dk    r||dk    |dk    z           }t          || j        |          }t          | j        |          }t          ||          }|dk    rt          ||d	           t          ||           d S )
Nr.   r   r0   i  r1   r   r/   g>r   )rV   r'   rS   r   r   r   r   )rW   r   xxdyr   dy2s         r"   test_splder_vs_splevzTestSplder.test_splder_vs_splev   s     s 	) 	)ARD))BAvv qR1W-.r48Q''B$(A&&DD//CAvvCd33333C((((	) 	)r$   c                     t          | j                  }t          j        ddd          }|D ]N}|D ]I}t	          ||| j                  }t          ||          t          ||          z
  }t          ||           JOd S )Nr   r/   rB   )r   r   r'   rS   r   r   r   )rW   r   r   r\   x2y1y2s          r"   test_splantider_vs_splintz$TestSplder.test_splantider_vs_splint	  s    $(## [Ar"" 	( 	(B ( (BDH--2t__uR6B''''(	( 	(r$   c                 H    t          t          t          | j        d           d S )Nr.   )r   r   r   r   rv   s    r"   test_order0_diffzTestSplder.test_order0_diff  s    j&$(A66666r$   c                 x   t          d| j        d          }t          |d           t          t          t          |d           t          d| j        d          }t          |d           t          t          t          |d           t          d| j        d          }t          t          t          |d           d S )N      ?r0   )mr1   r/   r.   )r   r   r   r   r   )rW   r   s     r"   	test_kinkzTestSplder.test_kink  s     c48q)))tQj&$222c48q)))tQj&$222c48q)))j&$22222r$   c                 `   t          d          D ]}| j        \  }}}t          j        |||f         }t          j        ||f          }t          |||f|          }t          ||          }t          ||d                    t          ||d                    t          ||d                    d S )Nr1   r   r/   r0   )	rV   r   r'   c_dstackr   r   r   r   )rW   r   r   crI   c2r   r   s           r"   test_multidimzTestSplder.test_multidim(  s    q 
	% 
	%AhGAq!q!QwBB8$$Bq"aj!,,D$??DAtAw'''BQ(((DG$$$$
	% 
	%r$   N)
r   r   r   r   r   r   r   r   r   r   rH   r$   r"   r   r      s}        0 0 0/ / /) ) )&( ( (7 7 73 3 3% % % % %r$   r   c                       e Zd Zd ZdS )
TestSplintc           	         d\  }}t          j        |          }|dz  }t          ||d          \  }}}t          |          t          |          cxk    r|d|dz
  z  z   k    sn J t	          dd|||f          }t          |dd	
           |                                }t           j        |t          |          |z
  dz
  d <   t	          dd|||f          }	t          |	dd	
           t           j        |d<   t          j        t	          dd|||f                    sJ |d t          |          |z
  dz
           }
t	          dd||
|f          }t          |dd	
           t          t          d          5  t	          ddt          j        d          t          j        d          df           d d d            d S # 1 swxY w Y   d S )N)r   r1   r1   r   rs   r0   r/   rO   g     @t@gV瞯<)rg   z>=n-k-1)match
   rF   )r'   rT   r   r   r   r   copynanisnanr   	Exceptionones)rW   r   rI   r+   r<   r   r   resc0res0c1res1s               r"   
test_len_czTestSplint.test_len_c8  s!   1IaLLqDA###1a 1vvQ....1q!A#w;...... QAq!9%%XE2222 VVXX&3q66!8A:;;aQAJ''hU3333 1xq!aQZ0011111 A
QaQAJ''hU3333 9J777 	7 	71a"'"++rwqzz15666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   =9GG
GN)r   r   r   r   rH   r$   r"   r   r   7  s#        7 7 7 7 7r$   r   c                   v    e Zd Zd Zd Zej                            ee	j
        k    d          d             ZdS )TestBisplrepc                     ddl m} t          j        dk    rd}nd} |t	          j        d          |f          }t          t          t          ||||ddddd	           d S )
Nr   )
as_stridedr   l    d</i q rH   )r   r/   )wr[   rR   r   r   rM   )	numpy.lib.stride_tricksr   r   itemsizer'   zerosr   OverflowErrorr   )rW   r   sizer+   s       r"   test_overflowzTestBisplrep.test_overflow[  s    666666 A%%DDD Jrx||D7333mXq!Q!qQ1	3 	3 	3 	3 	3 	3r$   c           	          t          j        t          d                    d         }t          |d d df         |d d df         |d d df         dddd           d S )	Nzbug-1310.npzr   r   r/   r0   r1   T)r   r   rM   full_output)r'   loadr#   r   )rW   r   s     r"   test_regression_1310z!TestBisplrep.test_regression_1310g  st    wy0011&9 	aaacD1ItAAAaCyQ1!	# 	# 	# 	# 	# 	#r$   zneeds ilp64 fitpack)reasonc                 <   t          d           t          j        ddd          }t          j        ddd          }t          j        ||          \  }}t          j        |          }t          |||ddd          }t          t          dd|          d           d S )	Ni`m  r   r/   i  r1   r   r   rM   r           )r	   r'   rS   meshgrid
zeros_liker   r   r   )rW   r+   r<   r   r^   s        r"   test_ilp64_bisplrepz TestBisplrep.test_ilp64_bisplrepr  s    %   K1c""K1c""{1a  1M!q!Q1a000S#..44444r$   N)r   r   r   r   r  r   r   skipifr   r'   int64r  rH   r$   r"   r   r   Z  sl        
3 
3 
3	# 	# 	# [09NOO5 5 PO5 5 5r$   r   c            	         t          j        dd          } t          j        dd          }t          j        | |          \  }}t          | |d|z  |z            }t	          |j                  }|                    |j                   t          t          dddd|          d           t          t          dddd|          d           t          t          dddd|          d           t          t          dddd|          d           d S )	Nr   r/   r.   r   g      ?rG   ir   )
r'   rS   r  r
   r8   r^   extenddegreesr   r   )r+   r<   r   yyrectr^   s         r"   test_dblintr  }  s     	AqA
AqA[AFBq!QVb[11D
tx..CJJt|q!Q3//333q#q!S114888sAq!S114888tS$S991=====r$   c                  B   t          j        g d          t          j        g d          df} | \  }}}t          j        g d          }t          t          ||           |d         |d         |d         z
  |z  |d         z  z              t          t          || d          |d         |d         z
  |d         z             t           j                            d           t          j        t           j                            d                    }t           j                            d          }t          ||          \  }}}|d         d	z
  |d
         d	z   g}t          |||f|          }t          t          ||||f|          t          ||                     d S )N)r  r  r   r   )ggg~'	@r  r  r/   )r   r   r1   r   r0   i     rE   r   )	r'   r7   r   r   randomseedsortr   r   )r^   r   r   rI   r+   r<   tck2s          r"   test_splev_der_kr    s   
 8&&&''855566C GAq!
!!A E!SMM1Q41Q4!A$;!*;AaD*@#@AAAE!S!$$qtAaDyAaD&8999 INN4
	  $$%%A
	AQllGAq!	
1AbEBJA1a)QDE!aAY**E!TNN;;;;;r$   c                  X   t          j        ddd          } t          j        dt           j        z  | z            }t          j        dt           j        z  | z            }t          ||gd          \  }}t          j        ddd          }|d         }t          ||gd|	          \  }}d S )
Nr   g?ru   r0   rs   g)\(?r   r   )taskr   )r'   rT   r2   ri   r3   r   )r   r+   r<   r^   r   unewuknotss          r"   test_splprep_segfaultr    s     		!S#A
qwqyA
qwqyAaVq!!!FC9Qd##DVFaV"///FCr$   c                     t           j                            d           t          j        ddd          } | }t           j                            dd                                          }d}d}t          | ||d d d d ||d
  
        \  }}}}}	}
}|d |         |d |         |	d ||z
  dz
  ||z
  dz
  z           ||f}t          j        dg          }t          j        dg          }t          t          t          ft          |||           d S )Nr/   r      r  r  i  ( )r'   r  r  rS   randnr   r   r   r   RuntimeErrorMemoryErrorr   )r+   r<   r   r   r   nxtxnytyr   fpierr^   xpyps                  r"   test_bisplev_integer_overflowr+    s   INN1
Aq"A	A
	B%%''A	
B	
B!,	1atT4B2"> "> ">BBAr3crc7BssGQ=b1b1 ==>B
GC	7)		B	7)		B<-wBDDDDDr$   c                      t          j        dd          } | dz  }t          | |ddg          }t          t          j        d          |          }t          j        g d          }t          ||           d S )Nr   r   r1   rF   )rI   r   r/   )rE   r         @r-  )r'   rS   r   r   float64r7   r   )r+   r<   r^   r   dess        r"   test_spalde_scalar_inputr0    sw    
ArA	1A
Aqc
"
"
"C
A
$
$C
(###
$
$CS!!!!!r$   )r   )0r9   r   numpyr'   numpy.testingr   r   r   r   r   r   r   r   scipy._lib._testutilsr	   scipy.interpolater
   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  r  r  r+  r0  rH   r$   r"   <module>r8     s       				    K K K K K K K K K K K K K K * * * * * *  3 3 3 3 3 3 1 1 1 1 1 1J J J J J J J J J J J J J J J J J J J J J J J J J J J J 2 2 2 2 2 2 4 4 4 4 4 4* * *
# # #	 	 	 	  L/ L/ L/ L/ L/ L/ L/ L/^#= #= #= #= #= #= #= #=LQ% Q% Q% Q% Q% Q% Q% Q%h 7  7  7  7  7  7  7  7F 5  5  5  5  5  5  5  5F> > > < < <4
0 
0 
0E E E&" " " " "r$   