
    tKg>                        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.e
j^                  j`                  d        Z1d Z2d Z3y)    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                  j                  t         j                  j                  t         j                  j	                  t
                    d|       S )Ndata)ospathjoinabspathdirname__file__)basenames    h/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/interpolate/tests/test_fitpack.py	data_filer#      s8    77<<(AB* *    c                 h    t        j                  t        j                  | j                  |             S N)npsqrtdotT)xs    r"   norm2r,      s    77266!##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 y)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           
          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G	HB44Kr$   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                  j                  d
ddg      e	j                  j                  dddg      d               Ze	j                  j                  dddg      e	j                  j                  d
ddg      d               Ze	j                  j                  dddg      e	j                  j                  d
ddg      d               Zd Ze	j                  j                  dddg      e	j                  j                  dg d      d               Zd Zy)TestSmokeTestszj
    Smoke tests (with a few asserts) for fitpack routines -- mostly
    check that they are runnable
    r   r0   FNc           
         ||}||}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|	}t        |dz         D ]K  } |||      }t        t	        ||      t        |||      z
        t        t	        ||            z  }||k  rKJ  ~ y )N   r/   dtypec                 H    dz  }d|d| |z
  z  z  z  }dkD  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1us1uJr$      rN   perrJ   xer   )	r'   linspacearangefloatr5   ranger   r,   r   )selfrR   rN   abat_nodesxbrS   r+   x1vrO   rJ   tckttr4   rL   errrM   s     `               @r"   check_1zTestSmokeTests.check_13   s    :B:BKK1a!e$!a%299Q77%A,FFqE	 q!AAqR8C!)Q1"rB1Q3ZamBr1Ib#q(99:U2b!9=MMSy y  	 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 ];  }t        ||	d|||      }|j                  t        |||      t        ||      g       = d}|D ]:  }d}|d   D ])  } |
||      }t        |t        ||      d|       |dz   }+ |dz   }< y )	Nr   r0   皙?r/   c                 .    dz  }d|d| |z
  z  z  z  }|S )NrF   rG   rH   rI   )rJ   r4   rK   rL   rM   s       r"   rO   z'TestSmokeTests.check_2.<locals>.err_estV   s'    aAa#qs)n$CJr$   rP   rQ   atolrtol)r'   pirT   r2   rW   r   appendr   r   r   r5   )rX   rR   rM   iaibrY   rZ   dxr+   r^   rO   nkrJ   r_   rr4   drrL   s     `               r"   check_2zTestSmokeTests.check_2Q   s    ags255yb1KK1ac"FF1I	 q!AAqQ7CIIvb"c*F2sO<=  AAdamBr1IAC@aC  !A r$   c                     | j                  d       | j                  dt        j                  z         | j                  dt        j                  z  dt        j                  z  dd       y )	Ngư>rN         ?)rZ   r0   r/   皙?)rZ   rS   rR   rN   )rb   r'   ri   rX   s    r"   test_smoke_splrep_splevz&TestSmokeTests.test_smoke_splrep_splevj   sJ    ts255y!s255yQruuW!t<r$   rR   r/   r[   Tc                 *    | j                  ||       y )N)rR   r[   )rb   )rX   rR   r[   s      r"   test_smoke_splrep_splev_2z(TestSmokeTests.test_smoke_splrep_splev_2o   s     	x0r$   rM   2   c                 *    | j                  ||       y )N)rR   rM   )rq   rX   rM   rR   s      r"   test_smoke_splint_spaldez'TestSmokeTests.test_smoke_splint_spaldet   s     	"r$   c                 l    | j                  dt        j                  z  t        j                  ||       y )Nrd   )rk   rl   rM   rR   )rq   r'   ri   r|   s      r"   test_smoke_splint_spalde_iaibz,TestSmokeTests.test_smoke_splint_spalde_iaiby   s$     	BEE	beeqc:r$   c           	         d\  }}t        j                  ||d      }t        j                  |      }dD ]6  }t        ||dd||      }t	        t
              5  t        |       d d d        8 d}t        ||dd      }t        |      }t        t        ||      ddd	       t        |t         j                  t        j                  g d
      z  d       y # 1 sw Y   xY w)N)ru      rB   )r/   r0   r.   rG   r   rQ   r1   )rN   rJ   g|=rf   )r/   r0   r1   r.   gMbP?rh   )r'   rT   r2   r   assert_raises
ValueErrorr   r   r   ri   r7   )rX   rY   rZ   r+   r^   rJ   r_   rootss           r"   test_smoke_sprootz TestSmokeTests.test_smoke_sproot~   s    1KK1b!FF1IAAQ15Cz*s +* 
 QQ!$seS)15uEruurxx'==DI +*s   CC 	rJ   r/   r0   r1   r.   rG   c                 X   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(  r7t	        ||gdd|d      \  }}	t        d|dz         D ]  }t        |||      }
 y y )
Nr          @rd   r/   )rN   rR   rJ   nest{Gz?)rN   rR   rJ   r1   )	r'   ri   rT   r2   r   r   absr   rW   )rX   rM   rJ   rY   rZ   rm   r+   r^   tckpuuverr1r_   err2r4   s                  r"   test_smoke_splprep_splrep_splevz.TestSmokeTests.test_smoke_splprep_splrep_splev   s"    bhBEE	b1KK1ac"FF1I1a&A1;a2t_2a5266"Q%=()d{{QQA+5A$rvvbe}45d{{ 6q!fqAB?GD!1ac]2tQ' # r$   c           	      T   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 y )	Nr   r   r1   r1   )rB   rB   c                 2    t        j                  | |z         S r&   r'   r2   r+   r<   s     r"   f2z6TestSmokeTests.test_smoke_bisplrep_bisplev.<locals>.f2   s    66!A#;r$   r/   rN   kxkyr   )
r'   ri   rT   r>   r   r   lenshaper,   ravel)rX   r\   rS   ybyer   r   NxNyr   r+   r<   r=   r_   r`   t2v1v2s                     r"   test_smoke_bisplrep_bisplevz*TestSmokeTests.test_smoke_bisplrep_bisplev   s;   BruuHBBruuHBBB	 KKBQ'KKBQ'q!_r!ubeR1r!u%5rbI!fRnc!fRn-r!ube$RUBqE3'1r!ur!u:s2a5z)RXXb2g&'$...r$   )__name__
__module____qualname____doc__r'   ri   rb   rq   rw   pytestmarkparametrizery   r}   r   r   r   r   rI   r$   r"   r@   r@   .   sb    qA2555D!< raAbeeG 2=
 [[UQF+[[Z$71 8 ,1 [[S2r(+[[UQF+# , ,# [[S2r(+[[UQF+; , ,;J" [[S2r(+[[S/2( 3 ,((/r$   r@   c                       e Zd Zd Zd Zd Zy)	TestSplevc                     g d}g d}t        ||      }t        dg|      }t        |j                  d       t        d|      }t        |j                  d       y )Nr   r.   rG   rP         r/   )r/   rI   )r   r   r   r   )rX   r+   r<   r_   zs        r"   test_1d_shapezTestSplev.test_1d_shape   sK    Ql1#sOQWWd#!SMQWWb!r$   c                     g d}g d}t        ||      }t        j                  g dg dg      }t        ||      }t        |d   |      }t        |d   |      }t	        |t        j
                  ||f             y )Nr   r   )rF   rt   r         @)      @g      @      @g      @r   r/   )r   r'   r7   r   r   vstack)rX   r+   r<   r_   tr   z0z1s           r"   test_2d_shapezTestSplev.test_2d_shape   sr    QlHH**, -!SM1Q41Q4Q		2r(+,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
       y )N)r/   r0   r1   )r   r0   r.   r/   )rJ   rP   r   r.   )r   r/   r1   )extr0   )r   r   r   r   r   )rX   r+   r<   r_   rstlr   s         r"   test_extrapolation_modesz"TestSplev.test_extrapolation_modes   sq     QQQ!Q1v.C%eQFCS&A49M  	j%!Q!<r$   N)r   r   r   r   r   r   rI   r$   r"   r   r      s    "	-=r$   r   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	
TestSplderc                    t        j                  ddd      dz  }t        j                  d|z        }t        ||      | _        t        t        j                  t        j                  | j                  d               dkD         y )Nr   r/   d   r1   rB   )r'   rT   r2   r   splr   ptpdiff)rX   r+   r<   s      r"   setup_methodzTestSplder.setup_method   s`    KK1c"A%FF26N!Q< 	rwwtxx{+,q01r$   c                    t        d      D ]x  }t        | j                  |      }t        ||      }t	        | j                  d   |d          t	        | j                  d   |d          t        | j                  d   |d          z y )NrG   r   r/   r0   )rW   r   r   r   r   r   )rX   nspl2spl3s       r"   test_inversezTestSplder.test_inverse   sm    qAdhh*D$?DDHHQKa1DHHQKa1!d1g. r$   c                 *   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	       zt        ||        y )
Nr.   r   r0   i  r1   r   r/   g>r   )rW   r'   rT   r   r   r   r   )rX   r   xxdyr   dy2s         r"   test_splder_vs_splevzTestSplder.test_splder_vs_splev   s     sARD)BAv qR1W-.r488Q'B$((A&DD/CAvCd3C( r$   c                     t        | j                        }t        j                  ddd      }|D ]E  }|D ]>  }t	        ||| j                        }t        ||      t        ||      z
  }t        ||       @ G y )Nr   r/   rB   )r   r   r'   rT   r   r   r   )rX   r   r   r]   x2y1y2s          r"   test_splantider_vs_splintz$TestSplder.test_splantider_vs_splint  sj    $((# [[Ar"BBDHH-2t_uR6B'  r$   c                 D    t        t        t        | j                  d       y )Nr.   )r   r   r   r   rv   s    r"   test_order0_diffzTestSplder.test_order0_diff  s    j&$((A6r$   c                 H   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       y )N      ?r0   )mr1   r/   r.   )r   r   r   r   r   )rX   r   s     r"   	test_kinkzTestSplder.test_kink  sv     c488q)tQj&$2c488q)tQj&$2c488q)j&$2r$   c                 .   t        d      D ]  }| j                  \  }}}t        j                  |||f   }t        j                  ||f      }t        |||f|      }t        ||      }t        ||d          t        ||d          t        ||d           y )Nr1   r   r/   r0   )	rW   r   r'   c_dstackr   r   r   r   )rX   r   r   crJ   c2r   r   s           r"   test_multidimzTestSplder.test_multidim'  s    qAhhGAq!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   rI   r$   r"   r   r      s%    2/)&(73%r$   r   c                       e Zd Zd Zy)
TestSplintc           	      $   d\  }}t        j                  |      }|dz  }t        ||d      \  }}}t        |      t        |      cxk(  r|d|dz
  z  z   k(  sJ  J t	        dd|||f      }t        |dd	
       |j                         }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        y # 1 sw Y   y xY w)N)r   r1   r1   r   rs   r0   r/   rP   g     @t@V瞯<rg   z>=n-k-1)match
   rG   )r'   rU   r   r   r   r   copynanisnanr   	Exceptionones)rX   r   rJ   r+   r<   r   r   resc0res0c1res1s               r"   
test_len_czTestSplint.test_len_c7  ss   1IIaLqDA#1a 1vQ.1q!A#w;..... QAq!9%XE2 VVX&&3q6!8A:;aQAJ'hU3 1xxq!aQZ0111 A
QaQAJ'hU3 9J71a"''"+rwwqz156 877s   7FFN)r   r   r   r   rI   r$   r"   r   r   6  s    7r$   r   c                   x    e Zd Zd Zd Zej                  j                  ee	j                  k7  d      d        Zy)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	       y )
Nr   )
as_stridedr   l    d</i q rI   )r   r/   )wr\   rS   r   r   rN   )	numpy.lib.stride_tricksr   r   itemsizer'   zerosr   OverflowErrorr   )rX   r   sizer+   s       r"   test_overflowzTestBisplrep.test_overflowZ  sT    6  A%DD rxx|D73mXq!Q!qQ1	3r$   c           	          t        j                  t        d            5 }|d   }d d d        t        d d df   |d d df   |d d df   dddd       y # 1 sw Y   1xY w)	Nzbug-1310.npzr   r   r/   r0   r1   T)r   r   rN   full_output)r'   loadr#   r   )rX   loaded_datar   s      r"   test_regression_1310z!TestBisplrep.test_regression_1310f  s^    WWY~./;v&D 0 	acD1ItAaCyQ1!	# 0/s   AA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       y )	Ni`m  r   r/   i  r1   r   r   rN   r           )r	   r'   rT   meshgrid
zeros_liker   r   r   )rX   r+   r<   r   r_   s        r"   test_ilp64_bisplrepz TestBisplrep.test_ilp64_bisplrepr  sw    % KK1c"KK1c"{{1a 1MM!q!Q1a0S#.4r$   N)r   r   r   r  r	  r   r   skipifr   r'   int64r  rI   r$   r"   r   r   Y  s?    
3
# [[09NO5 P5r$   r   c            	         t        j                  dd      } t        j                  dd      }t        j                  | |      \  }}t        | |d|z  |z        }t	        |j
                        }|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       y )	Nr   r/   r.   r   g      ?rH   ir   )
r'   rT   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[1D
txx.CJJt||q!Q3/3q#q!S148sAq!S148tS$S91=r$   c                     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                  j                  d       t        j                  t         j                  j	                  d            }t         j                  j	                  d      }t        ||      \  }}}|d   d	z
  |d
   d	z   g}t        |||f|      }t        t        ||||f|      t        ||             y )N)r  r  r   r   )ggg~'	@r  r  r/   )r   r   r1   r   r0   i     rF   r   )	r'   r7   r   r   randomseedsortr   r   )r_   r   r   rJ   r+   r<   tck2s          r"   test_splev_der_kr     s?   
 88&'8856C GAq!
!A E!SM1Q41Q4!A$;!*;AaD*@#@AE!S!$qtAaDyAaD&89 IINN4
		  $%A
		AQlGAq!	
1AbEBJA1a)QDE!aAY*E!TN;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|	      \  }}y )
Nr   g?ru   r0   rs   g)\(?r   r   )taskr   )r'   rU   r2   ri   r3   r   )r   r+   r<   r_   r   uknotss         r"   test_splprep_segfaultr$    s     			!S#A
qwqyA
qwqyAaVq!FCIIatVFaV"/FCr$   c                     t         j                  j                  d       t        j                  ddd      } | }t         j                  j	                  dd      j                         }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        |||       y )Nr/   r      r  r  i  ( )r'   r  r  rT   randnr   r   r  r   RuntimeErrorMemoryErrorr   )r+   r<   r   r   r   nxtxnytyr   fpierr_   xpyps                  r"   test_bisplev_integer_overflowr2    s    IINN1
Aq"A	A
		B%%'A	
B	
B!,	1atT4B2">BBAr3cr7BsGQ=b1b1 =>B
GC	7)	B	7)	B<-wBDr$   c            	         d} d\  }}d }t        j                  dd|       }t        j                  dd|       }t        ||      }t        |d   |d    ||d   |d         d||	      }d
}t        j                  |      |d<   t        j                  |      dz  |d<   t        j                  d      }	t        j                  d      dz  }
t        j                  t              5  t        |	|
|dd       d d d        y # 1 sw Y   y xY w)N   r   c                 2    t        j                  | |z         S r&   r   r   s     r"   r   ztest_gh_1766.<locals>.f2  s    vvac{r$   r   r   rz   i  r/   r   i  r.   r1   )	r'   rT   r>   r   rU   r   r   r)  r   )r  r   r   r   r+   r<   r=   r_   
tx_ty_sizett_0tt_1s              r"   test_gh_1766r9    s     DFB 	Ar4 A
BT"A	1aB
2a5"Q%BqE2a5!1Q2"
EC JYYz"CFYYz"Q&CF99R=D99R=1D	{	#dCA& 
$	#	#s   $C==Dc                      t        j                  dd      } | dz  }t        | |ddg      }t        t        j                  d      |      }t        j
                  g d      }t        ||       y )Nr   r   r1   rG   )rJ   r   r/   )rF   r         @r;  )r'   rT   r   r   float64r7   r   )r+   r<   r_   r   dess        r"   test_spalde_scalar_inputr>    sZ    
ArA	1A
Aqc
"C
A
$C
((#
$CS!r$   c                  <   t        j                  g dd      } g d}t        j                  g d      }d}t        | |||f      }t        j                  t        d      D cg c]  }t	        | |||f|       c}      }t        ||j                  d	       y c c}w )
N)      $      "                                                                    r  r   rF   rt   r   r   r   r         @r;  rV   rC   )r@  r@  r@  r@  rA  rB  rC  rD  rE  rF  rG  rH  rI  rJ  rK  rL  r  r   rF   rt   r   r   r   r   rM  r;  r;  r;  r;  )rF   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.   r   r   )r'   r;   r   rW   r   r   r*   )r+   r   r   rJ   r   nu	res_splevs          r"   test_spalde_ncrP    s     	

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

 < 	=A	A
Q1I
C

eAhGhE!aAY3hGHIC51 Hs   "B)r   )4r9   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$  r2  r   xslowr9  r>  rP  rI   r$   r"   <module>rY     s     	 K K *  3 1J J J J 3 4*
#	K/ K/\#= #=LQ% Q%h 7  7F!5 !5H> <4
0E& ' ',"2r$   