
     hu                    V   d dl mZmZmZmZmZmZmZ d dlm	Z
 d dlZd dlmZmZmZmZmZmZ d dl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m Z  d dl!m"Z"m#Z# d dlm$Z$ d dl%m&Z&m'Z' d d	l(m)Z) d d
l!m*Z*  G d d          Z+ G d d          Z, G d d          Z- G d d          Z. G d d          Z/ G d d          Z0 G d d          Z1 G d d          Z2 G d d          Z3 G d d          Z4 G d d           Z5 G d! d"          Z6d# Z7ej8        fd$Z9d% Z:d)d&Z;d)d'Z<d)d(Z=dS )*    )assert_assert_equalassert_almost_equalassert_array_almost_equalassert_array_equalassert_allclosesuppress_warnings)raisesN)mgridpisinogridpoly1dlinspace)interp1dinterp2dlagrangePPolyBPolysplrepsplev
splantidersplintsprootAkima1DInterpolatorNdPPolyBSpline)pochgamma)_ppoly)assert_deallocatedIS_PYPY)nquad)binomc                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestInterp2Dc           	      @   t           ddddt          df         \  }}t          |d|z  z             }t                      5 }|                    t
                     t          |||          }t           |dd          t          d          d           t          ddd	dt          d
f         \  }}t           ||	                                |	                                          t          |d|z  z             d           d d d            d S # 1 swxY w Y   d S )Nr                    4@              5@      ?      ?       @decimaly              8@y              9@)
r   r   r   r	   filterDeprecationWarningr   r   r   ravel)selfyxzsupIIvus           d/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/scipy/interpolate/tests/test_interpolate.pytest_interp2dzTestInterp2D.test_interp2d   sQ   QqWa3h&'1#a%LL   	9CJJ)***!Q""B3c#hhBBBB1S!Bs(*+DAq17799aggii 8 8 #Ac!eGa9 9 9 9	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s   CDDDc                    t          ddd          }t          dt          d          }t          |d d d f         |d d d f         dz  z             }t                      5 }|                    t
                     t          |||          }t           |dd          t          d          d           d d d            d S # 1 swxY w Y   d S )Nr   r(         r-   r,   r.   )r   r   r   r	   r0   r1   r   r   )r3   r5   r4   r6   r7   r8   s         r;   test_interp2d_meshgrid_inputz)TestInterp2D.test_interp2d_meshgrid_input&   s   Q2QB$'
Qqqq$wZ]*++   	CCJJ)***!Q""B3c#hhBBBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs   ACCCc                    t           j                            d           t          ddd          }t          dt          d          }t          |d d d f         |d d d f         dz  z             }t                      5 }|                    t                     t          |
                                |
                                |d          }t           j                            |           t          |d d d f         |d d d f         dz  z             }t          |
                                |
                                |d          }t           j                            |           t           j                            |           t          |d d d f         |d d d f         dz  z             }t          |||d          }t          ddd	          }t          dt          d
          }t           |||           |||                     t           |||           |||                     d d d            d S # 1 swxY w Y   d S )N  r   r(   r>   r?   r-   cubickind      )nprandomseedr   r   r   r	   r0   r1   r   copyshuffler   )r3   r5   r4   r6   r7   ip1ip2ip3s           r;   %test_interp2d_meshgrid_input_unsortedz2TestInterp2D.test_interp2d_meshgrid_input_unsorted0   sP   
	tQ2QB$'
Qqqq$wZ"_,--   	/CJJ)***16688QVVXXqw???CIa   AdAAAgJ111d7B.//A16688QVVXXqw???CIa   Ia   AdAAAgJ111d7b011A1a111CAr""AB##AQCC1II...QCC1II...#	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   >F:II	I	c                    t           ddddt          df         \  }}t          |d|z  z             }t                      5 }|                    t
                     t          |||          }t          j        g d          }t          j        ddg          }t           |||           |||d d d	                              t          t          |||d d d	         ddd
           d d d            d S # 1 swxY w Y   d S )Nr   r(   r)   r*   r+   )         g333333@gffffff@T)r   r   r   r	   r0   r1   r   rH   arrayr   assert_raises
ValueError)r3   r4   r5   r6   r7   funcxeyes           r;   test_interp2d_eval_unsortedz(TestInterp2D.test_interp2d_eval_unsortedI   sR   QqWa3h&'1CE	NN   	FCJJ)***Aq!$$D)))$$B3*%%BDDRLL$$r2ddd8*<*<===*dB44R4!QEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	Fs   B(C66C:=C:c                    t          j        ddg          }d|d<   t          j        d          x}}t                      5 }|                    t
                     t          |||d          }t           |dd          t          j        dg          d	           t           |dd
          t          j        dg          d	           d d d            d S # 1 swxY w Y   d S )NrT   r,   )r(   r(   linearr-         ?r+   r(   r.         @)	rH   zerosaranger	   r0   r1   r   r   rV   )r3   ar5   r4   r7   bs         r;   test_interp2d_linearz!TestInterp2D.test_interp2d_linearV   s(   HaV$	!A   	ICJJ)***Aq(++A#sRXse__aHHHH#sRXse__aHHHH		I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	Is    BCCCc           	         t          j        ddd          }t          j        ddd          }|d d d f         dz  |d d d f         z   }t          j        ddd          }t          j        ddd	          }t                      5 }|                    t                     t          |||d
          }t          t          |||           t          |||t           j                  } |||          }|dk     |dk    z  }	|dk     |dk    z  }
t          t          j
        ||
d d f                                                              t          t          j
        |d d |	f                                                              t          t          j        ||
 d d f         d d |	 f                                                              d d d            d S # 1 swxY w Y   d S )Nr      rT   r(      rU   rR   rF   !   Tbounds_error
fill_value)rH   r   r	   r0   r1   r   rW   rX   nanr   isnanallisfinite)r3   r5   r4   r6   ixiyr7   rd   izmxmys              r;   test_interp2d_boundsz!TestInterp2D.test_interp2d_boundsa   s
   K1a  K1a  dAAAgJMAaaagJ&[Q##[Q##   	;CJJ)***Aqt444A*aR000AqRV444A2rBq&R!V$Bq&R!V$BBHRAAAY''++--...BHR2Y''++--...BKB36
111rc6 2337799:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s   EGG"GN)	__name__
__module____qualname__r<   r@   rP   r\   re   rw        r;   r&   r&      sw        
9 
9 
9C C C/ / /2F F F	I 	I 	I; ; ; ; ;r|   r&   c                   r   e 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(dZd(dZd Zd Zd Zd Zd(dZd(dZd Zej        dfdZd Zej         !                    e"d          d             Z#d Z$d  Z%d! Z&d" Z'd# Z(ej         )                    d$d%          d&             Z*d'S ))TestInterp1Dc                    t          j        d          | _        t          j        d          | _        t          j        d          | _        | j                            d          | _        t          j        d          | _        t          j        d          | _        t          j	        dg          | _
        t          j	        dg          | _        t          j        d                              d          | _        t          j        d                              d          | _        t          j        d                              d	          | _        t          j        d                              d          | _        t          j        d
                              d          | _        t          j        d
                              d          | _        t          j        d                              d          | _        d| j        d d df<   d| j        d d df<   t          j        d                              d          | _        d| j        dd d f<   d| j        dd d f<   d| _        d S )N      @      $@)r(   rT   r-           g      4@r(   
   )r   r(   )r(   r(   rT   g      >@)r(   rR   rT   )rR   r(   rT   rG   r   rU   g      Y)rH   rb   x5x10y10reshapex25x2y2rV   x1y1y210y102y225y25y235y325y210_edge_updatedy102_edge_updatedrm   r3   s    r;   setup_methodzTestInterp1D.setup_methodz   s   )B--9S>>9S>>8##E**)B--)B--(B4..(B4..IcNN**733	IcNN**733	IcNN**955	9S>>))&11IcNN**955	IcNN**955	
 "$3!7!7!@!@')qqq!t$(+qqq"u% "$3!7!7!@!@')q!!!t$(+r111u% r|   c                 
   dD ];}t          | j        | j        |           t          | j        | j        |d           <t          | j        | j        dd           t          | j        | j        dt          j        dg                     t          | j        | j        dd           t          | j        | j        dd           t          | j        | j        dd	           t          | j        | j        d
           t          | j        | j        d           t          | j        | j        d           t          | j        | j        d           t          | j        | j        ddd	           t          | j        | j        dd
t          j        d                     t          | j        | j        dd
t          j        d          t          j        d          f           t          | j        | j        dd
t          j        d          df           t          t          t           | j
        | j                   t          t          t           | j        t          j        d
                     t          t          t           | j        | j                   t          t          t           | j        | j                   t          t          t           | j        | j                   t          | j        | j                   t          | j        | j        d
           t          t          t           | j        | j                   t          t          t           | j        | j                   t          t          t           | j        | j        dd           t          t          t           | j        | j        dg d           t          t          t           | j        | j        dt          j        d                     t          t          t           | j        | j        ddgg           t          t          t           | j        | j        dddg           t          t          t           | j        | j        dt          j        g                      t          t          t           | j        | j        dd           t          t          t           | j        | j        dd
ddg           t          t          t           | j        | j        dd
dddgf           d S )N)	nearest
nearest-upzeror^   slinear	quadraticrC   previousnextrD   extrapolaterE   rm   r^   )rU   rg   rU   )rU   )rU   rU   r   rg   r(   rR   rE   axisrm   r   r   )rU   rU   rU   r{   r   )r   r   r   rH   rV   r   r   onesrW   rX   r   r   r   r   r   r3   rE   s     r;   test_validationzTestInterp1D.test_validation   s   
? 	N 	NDTXtxd3333TXtxd}MMMMM48(wGGGG48(HbTNN	, 	, 	, 	,48(!	# 	# 	# 	#48(	  	  	  	 48($	& 	& 	& 	&48!,,,,48!,,,,48!,,,,48!,,,,498"$	& 	& 	& 	&$)(GBKK	) 	) 	) 	)$)(WR[["'"++6	8 	8 	8 	8$)(WR[["-	/ 	/ 	/ 	/ 	j(DHdh??? 	j(DHbhqkkBBB 	j(DHdg>>>j(DGTX>>>j(DHdi@@@49%%%491---- 	j(DGTX>>>j(DHdg>>> 	j(DHdhX!-	/ 	/ 	/ 	/j(DHdhX!-	/ 	/ 	/ 	/j(DHdhX!#,!7!7	9 	9 	9 	9j(DHdhX#%$	) 	) 	) 	)j(DHdhX"$b	+ 	+ 	+ 	+j(DHdhX!#"	/ 	/ 	/ 	/j(DHdhX!#	% 	% 	% 	%j(DGTYX"b	3 	3 	3 	3j(DGTYX"r2h	9 	9 	9 	9 	9 	9r|   c                    t          t          | j        | j                  j                   t          t          | j        | j        d          j                    t          t          | j        | j                  j                   t          t          | j        | j        d          j                    t          t          j        t          | j        | j                  j                             t          t          | j        | j        d          j        d           t          t          | j        | j        d          j        d           t          t          | j        | j                  j
        d           t          t          | j        | j                  j
        d           t          t          | j        | j        d	          j
        d           t          t          | j        | j                  j        | j                   t          t          | j        | j                  j        | j                   t          t          | j        | j                  j        | j                   d S )
NF)rK   rj         @rl   )r,   r-   r   rg   r   )r   r   r   r   rK   rk   rH   ro   rm   r   r   r   r   r   r5   r4   r   s    r;   	test_initzTestInterp1D.test_init   s    	48,,1222HTXtxe<<<AABBB48,,9:::HTXtxeDDDQQRRR$(DH55@AABBBXdhSAAAL	 	 	XdhZHHHS	! 	! 	!Xdh116:::Xdh	227;;;Xdh	:::?CCC8DHdh77948DDD8DHdh77948DDD8DHdi88:DIFFFFFr|   c                    t          | j        | j                  }t          | j        d d d         | j        d d d                   }t           || j                  | j                   t           |d          t	          j        dg                     t           |g d           |g d                     t          | j        d d d         | j        d d d         d          }t           || j                  | j                   t          | j        d d d         | j        d d d         d          }t          t          || j                   t          | j        | j                  }t          | j        d d d         | j        d d d d df                   }t           || j                   || j                             d S )NrU   333333?g333333@gffffff@      @F)assume_sortedT)	r   r   r   r   rH   rV   rW   rX   r   )r3   interp10interp10_unsortedinterp10_assume_kwinterp10_assume_kw2interp10_y_2dinterp10_y_2d_unsorteds          r;   test_assume_sortedzTestInterp1D.test_assume_sorted   s   DHdh//$TXddd^TXddd^DD!"3"3DH"="=txHHH!"3"3C"8"8"(C5//JJJ!"3"3OOO"D"D"*(???";";	= 	= 	= &dhtttndhtttn49; ; ;!"4"4TX">">III&tx"~tx"~59; ; ; 	j"5tx@@@ !4955!)$(44R4.$)AAAtttG:L!M!M!--"9"9"8"8"B"B	D 	D 	D 	D 	Dr|   c                 :    dD ]}|                      |           d S )N)r^   r   )_check_linearr   s     r;   test_linearzTestInterp1D.test_linear  s2    ) 	% 	%Dt$$$$	% 	%r|   c                    t          | j        | j        |          }t           || j                  | j                   t           |d          t	          j        dg                     t           |g d          t	          j        g d                     t          | j        | j        |d          }t           |g d          g dd	           t          |dd
          }t          t          t           | j        | j        fi | d S )NrD   r   r   r   r         r   	      )rU   r   r   r   +=rtolTrE   rm   rk   
r   r   r   r   rH   rV   r   dictrW   rX   )r3   rE   r   extrapolatoroptss        r;   r   zTestInterp1D._check_linear  s&   DHdhT:::!((48"4"4dh???!((3--3%AAA!((???";";"$(???";";	= 	= 	=  $(+8: : :___55&U	4 	4 	4 	4 ,!%' ' ' 	j(DHdhGG$GGGGGr|   c                 `   t           j        d         D ]\}t          j        d|          }|} t          ||d          |          }t	          |j        |           t          ||d           ]g d}t           j        d	d
g} t          ||          |          }t          ||d           d S )Nfloat   dtyper^   rD   V瞯<atolr   rg   r(   r   rg   )rH   sctypesrb   r   r   r   r   rn   )r3   dtypr5   r4   yps        r;   test_linear_dtypeszTestInterp1D.test_linear_dtypes+  s     Jw' 	/ 	/D	!4(((AA.!QX...q11B4(((B..... IIVQNXa^^AAE******r|   c                    t           j        t           j        t           j        g}|t           j        t           j        gz   }g d}|D ]}t          j        dd|          }|D ]}t          j        | dz                                |          }|D ]S}|                    |          }	|D ]9}
t          |||
d          }t           ||	          |d|d	|d
|           :Td S )N)r   r   r   rC   r   r   r   r   FrE   rk   Hz>z,  r   err_msg)rH   float16float32float64	complex64
complex128rb   expastyper   r   )r3   dt_rdt_rcspline_kindsdtxr5   dtyr4   dtnxnewrE   fs               r;   test_slinear_dtypesz TestInterp1D.test_slinear_dtypes=  s5    
BJ
3bm44@@@ 		O 		OC	!Rs+++A O OFA2c6NN))#.. O OC88C==D , O O$Q5III'$?BssCCC0MO O O O OOOO		O 		Or|   c                    t          | j        | j        d          }t           || j                  | j                   t           |d          t	          j        dg                     t           |d          t	          j        dg                     t           |g d          t	          j        g d                     d S )NrC   rD   r   r_   r   r   r   r   r   rH   rV   r3   r   s     r;   
test_cubiczTestInterp1D.test_cubicN  s    DHdhW===!((48"4"4dh???!((3--3%AAA!((3--3%AAA!((???";";"$(???";";	> 	> 	> 	> 	>r|   c                 r   t          | j        | j        d          }t           || j                  | j                   t           |d          t	          j        d                     t           |d          t	          j        d                     t           |g d          t	          j        g d                     t          | j        | j        dd	          }t           |g d
          g dd           t          ddd          }t          t          t           | j        | j        fi | d S )Nr   rD   r   r,   r_   r   r-   r   r   r   r   r   r   r   r   r   r   r   Tr   r   r3   r   r   r   s       r;   test_nearestzTestInterp1D.test_nearestW  sF    DHdhY???!((48"4"4dh???!((3--">>>!((3--">>>!((???";";"$(<<<"8"8	; 	; 	;  $(+8: : :___55$5	2 	2 	2 	2 ,!%' ' ' 	j(DHdhGG$GGGGGr|   c                 r   t          | j        | j        d          }t           || j                  | j                   t           |d          t	          j        d                     t           |d          t	          j        d                     t           |g d          t	          j        g d                     t          | j        | j        dd	
          }t           |g d          g dd           t          dd	d          }t          t          t           | j        | j        fi | d S )Nr   rD   r   r,   r_   r-   r   r   r   r   r   r   r   r   Tr   r   r   s       r;   test_nearest_upzTestInterp1D.test_nearest_upl  sF    DHdh\BBB!((48"4"4dh???!((3--">>>!((3--">>>!((???";";"$(<<<"8"8	; 	; 	;  $(+8: : :___55$5	2 	2 	2 	2 ,!%' ' ' 	j(DHdhGG$GGGGGr|   c           
      v   t          | j        | j        d          }t           || j                  | j                   t           |d          t	          j        d                     t           |d          t	          j        d                     t           |g d          t	          j        g d                     t          | j        | j        dd	          }t           |g d
          t          j        dddgd           t          | j        | j        dd	          }t           |g d          t          j        t          j        ddddg           t          | j        | j        dd	          }t           |g d          t          j        t          j        ddddgt          j        t          j        ddddgg           t          | j        | j	        ddd          }t           |g d          t          j        t          j        gddgddgg           t          ddd          }t          t          t           | j        | j        fi | t          g dg dddd          }t           |g d          t          j        t          j        ddd d d g           t          g d!g d"ddd#          }t           |g d          t          j        t          j        ddd d d g           t          | j        | j        dd	          }t           |g d          t          j        t          j        ddd$d$gt          j        t          j        ddd$d$gg           t          | j        | j        ddd          }t           |g d          t          j        t          j        gddgd$d$gg           d S )%Nr   rD   r   r,   r_   r   r-   r   r   r   r   r   r   r   r   r   rU   rT   r         rT   r            r   r   rT   r   r   r   Tr   r   r   rg   rU   rE   rm   r   r   rU   r   rg   r(   rR   rT   rg   rU   r(   r   rg   rU   r   rg   Fr   r   r   r   r   rH   rV   r   rn   r   r   r   rW   rX   r   r   r3   r   r   interpolator1Dinterpolator2Dinterpolator2DAxis0r   s          r;   test_previouszTestInterp1D.test_previous  sE   DHdhZ@@@!((48"4"4dh???!((3--">>>!((3--">>>!((???";";"$(<<<"8"8	; 	; 	;  $(+8: : :___55Aq)	7 	7 	7 	7 "$(DH:-:< < <'='='=>>Aq!4	6 	6 	6 "$(DIJ-:< < <'='='=>>&"&!Q15&"&"b"b9;	< 	< 	< 'tx,--I I I++KKK88&"&)bb#	$ 	$ 	$
 ,!%' ' ' 	j(DHdhGG$GGG ")))",**:-:046 6 6 	'>'>'>??Ar2r:	< 	< 	< ")))",**:-:057 7 7 	'>'>'>??Ar2r:	< 	< 	< "$(D,B'1-:< < < 	'='='=>>&"&!QS9&"&"b#s;=	> 	> 	> 'tx1G,6,--I I I 	++KKK88&"&)bs%	& 	& 	& 	& 	&r|   c           
      v   t          | j        | j        d          }t           || j                  | j                   t           |d          t	          j        d                     t           |d          t	          j        d                     t           |g d          t	          j        g d                     t          | j        | j        dd	          }t           |g d
          dddt          j        gd           t          | j        | j        dd	          }t           |g d          ddddt          j        t          j        g           t          | j        | j        dd	          }t           |g d          ddddt          j        t          j        gddddt          j        t          j        gg           t          | j        | j	        ddd          }t           |g d          ddgddgt          j        t          j        gg           t          ddd          }t          t          t           | j        | j        fi | t          g dg dddd          }t           |g d          dddddt          j        t          j        g           t          g d g d!ddd"          }t           |g d          dddddt          j        t          j        g           t          | j        | j        dd	          }t           |g d          d#d#ddt          j        t          j        gd#d#ddt          j        t          j        gg           t          | j        | j        ddd          }t           |g d          d#d#gddgt          j        t          j        gg           d S )$Nr   rD   r   r-   r_   r   )r   r   r   r   r   r   r   r   r   r   r   rT   r   r   r   r   r   r   rg   r   Tr   r   r   r  r  rU   r  r  FrG   r  r  s          r;   	test_nextzTestInterp1D.test_next  sE   DHdhV<<<!((48"4"4dh???!((3--">>>!((3--">>>!((???";";"$(<<<"8"8	; 	; 	;  $(+8: : :___55Aq"&)	7 	7 	7 	7 "$(DH6-:< < <'='='=>>Aq!RVRV4	6 	6 	6 "$(DIF-:< < <'='='=>>Q1bfbf5b"b"&"&9;	< 	< 	< 'tx,--I I I++KKK88Qb&"&)+	, 	, 	,
 ,!%' ' ' 	j(DHdhGG$GGG ")))",**6-:046 6 6 	'>'>'>??Aq!R8	: 	: 	: ")))",**6-:057 7 7 	'>'>'>??Aq!R8	: 	: 	: "$(D,B'--:< < < 	'='='=>>b!Q7b"b"&"&9;	< 	< 	< 'tx1G,2,--I I I 	++KKK88bb&"&)+	, 	, 	, 	, 	,r|   c                    t          | j        | j        d          }t           || j                  | j                   t           |d          t	          j        d                     t           |d          t	          j        d                     t           |g d          t	          j        g d                     d S )Nr   rD   r   r,   r_   r   r   r   r   s     r;   	test_zerozTestInterp1D.test_zero  s    DHdhV<<<!((48"4"4dh???!((3--">>>!((3--">>>!((???";";"$(<<<"8"8	: 	: 	: 	: 	:r|   c                     t          t          ||           	  ||           d S # t          $ r1}d                    |          t          |          v sJ Y d }~d S d }~ww xY w)Nz{})rW   rX   formatstr)r3   interpolant
test_array
fail_valueerrs        r;   bounds_check_helperz TestInterp1D.bounds_check_helper  s     	j+z:::	9K
##### 	9 	9 	9KK
++s3xx7777777777	9s   % 
A &AA r^   c                 0   t          | j        | j        | j        d|          }t	           |d          t          j        | j                             t	           |d          t          j        | j                             t	           |dgdgdgdggg          t          j        | j                             t	          |                    t          j        g d                    t          j        g dg d	g                     t          | j        | j        d
|          }|                     |dd           |                     |dd           |                     |g dd           |                     |g dd            |g d           d S )NF)rm   rk   rE   gffffff&@g333333g333333)@gL3@)r   r   r         "@      &@)TFFFF)FFFFTT)rk   rE   r   r  )r   r   r   )r   r,         5@r  )r   r   r  )	r   r   r   rm   r   rH   rV   _check_boundsr  )r3   rE   extrap10raises_bounds_errors       r;   _bounds_checkzTestInterp1D._bounds_check  s   DHdh4?).T; ; ; 	88D>>28DO+D+DEEE88D>>28DO+D+DEEE88tftftftf%E$FGG8DO44	7 	7 	7811!x(C(C(CDDF F8%G%G%G%G%G%G%I J J	K 	K 	K
 'tx,02 2 2 	  !4dDAAA  !4dDAAA  !46F6F6FMMM  !46F6F6FMMMOOO,,,,,r|   c                    t          j        d                              t           j                  }t          j        d                              t           j                  }t	          |||t           j        d          } ||dz
            }t          t          j        |d                              t          |t           j	        t           j        |d d         f                    d S )Nr   Fr   rg   r   rU   )
rH   rb   r   int_r   rn   r   ro   r   r_)r3   rE   r5   r4   cyis         r;   _bounds_check_int_nan_fillz'TestInterp1D._bounds_check_int_nan_fill5  s    IbMM  ))IbMM  ))QeLLLQq1uXXA   !"beBFAcrcFN&;<<<<<r|   c                 d    dD ],}|                      |           |                     |           -d S )N)r^   rC   r   r   r   r   r   r   )r  r$  r   s     r;   test_boundszTestInterp1D.test_bounds=  sH    5 	2 	2Dt$$$++D1111	2 	2r|   c                    t          | j        | j        |dd          }t           |d          d           t           |d          d           t           |ddg          ddg           | j        | j        | j        | j        fD ]}t          | j        ||ddd	          }t           |d          d           t           |d          d           t           |ddg          d           t          | j        ||ddd	          }t           |d          d           t           |d          d           |j	        d
k    r#ddgg|j
        d         z  g|j
        d         z  }nddgg|j
        d         z  }t           |ddg          |           g d}| j        | j        fD ](}t          t          t           | j        ||d|d	           )t          | j        | j        |d|d	          }t           |d          g dgdz             t           |d          g dgdz             t           |ddg          ddgddgddgggdz             ddg}t          t          t           | j        | j        |d|d	           | j        | j        | j        fD ]}t          | j        ||d|d	          }ddg}|j	        d
k    r|g|j
        d         z  }t           |d          |           t           |d          |           ddgddgg}|j	        d
k    r|g|j
        d         z  }t           |ddg          |           t          j        g d          df}| j        | j        fD ](}t          t          t           | j        ||d|d	           )t          | j        | j        |d|d	          }t           |d          d           t           |d          g dgdz             t           |ddg          ddgddgddgggdz             t          j        ddg          df}t          t          t           | j        | j        |d|d	           | j        | j        | j        fD ]}t          | j        ||d|d	          }t           |d          d           ddg}|j	        d
k    r|g|j
        d         z  }t           |d          |           ddgddgg}|j	        d
k    r|g|j
        d         z  }t           |ddg          |           g dg df}| j        | j        fD ](}t          t          t           | j        ||d|d	           )t          d          D ]}|dk    rt!          d |D                       }t          | j        | j        |d|d	          }t           |d          g dgdz             t           |d          g dgdz             t           |ddg          ddgddgddgggdz             ddgddgf}t          t          t           | j        | j        |d|d	           | j        | j        | j        fD ]}t          | j        ||d|d	          }ddg}|j	        d
k    r|g|j
        d         z  }t           |d          |           ddg}|j	        d
k    r|g|j
        d         z  }t           |d          |           ddgddgg}|j	        d
k    r|g|j
        d         z  }t           |ddg          |           ddgddgg}| j        | j        | j        fD ](}t          t          t           | j        ||d|d	           )t          d          D ]}|dk    rt          j        |          }t          | j        | j        |d|d	          }t           |d          ddgddgg           t           |d          ddgddgg           t           |ddg          ddgddggddgddggg           ddgddggddgddggf}| j        | j        | j        fD ](}t          t          t           | j        ||d|d	           )t          d          D ]}|dk    r4t          j        |d                   t          j        |d                   f}t          | j        | j        |d|d	          }t           |d          ddgddgg           t           |d          ddgddgg           t           |ddg          ddgddggddgddggg           d S )N)d   Fr   r   r)  r(  rU   )rE   r   rm   rk   rR   rg   r   )r)     ,  r(   r+  r,  )r(  8r-  r.  c              3   >   K   | ]}t          j        |          V  d S N)rH   rV   ).0r   s     r;   	<genexpr>z1TestInterp1D._check_fill_value.<locals>.<genexpr>  s*      "C"C128A;;"C"C"C"C"C"Cr|   i  i  ii0)r   r   r   r   r   r   r   r   r   ndimshaperW   rX   rH   rV   rangetuple)r3   rE   interpr4   resultrm   iis          r;   _check_fill_valuezTestInterp1D._check_fill_valueC  s    $(DH4%0uF F F!&&**c222!&&++t444!&&#r"3"3dC[AAA )TY	48< 	A 	AAdgqt"),5B B BF%ffRjj#666%ffSkk3777%ffc2Y&7&7=== dgqt")45J J JF%ffRjj#666%ffSkk4888v{{ #;-!'!*45
B+3%ffc2Y&7&7@@@@ %__
)TY' 	N 	NA*h!juN N N N N$'494b%/eE E E!&&**.?!.CDDD!&&++/@1/DEEE!&&#r"3"3Sz8;Sz8;Sz7C 6DFG6H 	I 	I 	I
 3Z
j(DGTYT*5	J 	J 	J 	J)TY1 	A 	AAdgqt")3%I I IF3ZFv{{ AGAJ.%ffRjj&999%ffSkk6:::Cj3*-Fv{{ AGAJ.%ffc2Y&7&7@@@@ h11122C8
)TY' 	N 	NA*h!juN N N N N$'494b%/eE E E!&&**c222!&&++0B0B0B/Ca/GHHH!&&#r"3"3c{8<c{8<c{7D 6EGH6I 	J 	J 	J
 hd|,,c2
j(DGTYT*5	J 	J 	J 	J)TY1 	A 	AAdgqt")3%I I IF%ffRjj#666D\Fv{{ AGAJ.%ffSkk6:::SkD#;/Fv{{ AGAJ.%ffc2Y&7&7@@@@ )((///:
)TY' 	N 	NA*h!juN N N N N(( 		N 		NBQww""C"C
"C"C"CCC
dgtyt")3%I I IF%ffRjj???2Ca2GHHH%ffSkk4F4F4F3G!3KLLL%ffc2Y&7&7D#;<@#;<@#;;H :IKL:M N N N N TlS#J/
j(DGTYT*5	J 	J 	J 	J)TY1 	A 	AAdgqt")3%I I IF3ZFv{{ AGAJ.%ffRjj&999D\Fv{{ AGAJ.%ffSkk6:::SkD#;/Fv{{ AGAJ.%ffc2Y&7&7@@@@ Cj4,/
)TY1 	N 	NA*h!juN N N N N(( 
	K 
	KBQwwXj11
dgtyt")3%I I IF%ffRjjC:d|2LMMM%ffSkkS#Jt3MNNN%ffc2Y&7&7C:<?:;G<@$<<@$<;I:J K K K K d|eU^4SzD$<02
)TY1 	N 	NA*h!juN N N N N(( 	L 	LBQww hz!}55rx
17N7NO
dgtyt")3%I I IF%ffRjjC:d|2LMMM%ffSkkT4L5:EN4D E E E%ffc2Y&7&7D#;<@#;;H<A4=<A4=;J:K L L L L	L 	Lr|   c                 :    dD ]}|                      |           d S N)r^   r   rC   r   r   r   r   r   )r:  r   s     r;   test_fill_valuezTestInterp1D.test_fill_value  s4    1 	) 	)D""4((((	) 	)r|   c                     t          | j        | j        d          }t          |j        d           d|_        t          |j        d           d S )Ng     ^@rl   g     t@)r   r   r   r   rm   )r3   r7  s     r;   test_fill_value_writeablez&TestInterp1D.test_fill_value_writeable  sN    $(DH???V&...!V&.....r|   c           	         t          | j        | j        |          }t           |t	          j        ddgddgg                    t	          j        ddgddgg                     t          t           |d          t          j                             t           |d          j
        d           t          | j        | j        |          }t           |d          t	          j        dd	g                     t           |t	          j        ddg                    t	          j        ddgd	d
gg                     t          | j        | j        d|          }t           |d          t	          j        ddg                     t           |t	          j        ddg                    t	          j        ddgddgg                     t	          j        ddgddgg          }t           ||          t	          j        ddgddggddgd
dggg                     t           ||          t	          j        ddgdd	ggddgddggg                     d S )NrD   r   r   r-         @r   r{   r,   r        (@r   r   rE   r   g      *@g      .@g      1@r         @g      ,@)r   r   r   r   rH   rV   r   
isinstancendarrayr   r4  r   r   )r3   rE   r   	interp210	interp102x_news         r;   _nd_check_interpzTestInterp1D._nd_check_interp  s    DHdhT:::!((28b"XBx4H+I+I"J"J"$(RHr2h+?"@"@	B 	B 	B 	
88C=="*55666XXc]]("--- TXtyt<<<	!))B--2s)1D1DEEE!))BHb"X,>,>"?"?"$(RHsCj+A"B"B	D 	D 	D TXtyqtDDD	!))B--3*1E1EFFF!))BHb"X,>,>"?"?"$(RHr2h+?"@"@	B 	B 	B 2r(RH-..!))E"2"2"$(b"XBx,@.13Z#s,D,F #G #G	H 	H 	H 	"))E"2"2"$(b"XSz,B.0"XSz,B,D #E #E	F 	F 	F 	F 	Fr|   c                    g d} t          j        t          j        |                    j        | }t	          |          D ]\  }}t          j        |          }t          ||||          }t           ||          ||           t          j        d                              d          dz  }t          |          }	g d|	||dz   <   t           ||          j        |	|           d S )N)rS   rT      rh   rC  r   rL  )r(   rR   rg   rB  rg   )	rH   rb   prodr   	enumerater   r   listr4  )
r3   rE   rc   r4   nsr5   r6   r   rd   s
             r;   _nd_check_shapezTestInterp1D._nd_check_shape  s    LL)BIbgajj!!)1-aLL 	D 	DDAq	!AAAD111A%aaddAt<<<<5!!))'22S8BQAwwAa!eH%aaeek1dCCCCC	D 	Dr|   c                 d    dD ],}|                      |           |                     |           -d S )N)r^   rC   r   r   r   r   r   r   )rJ  rS  r   s     r;   test_ndzTestInterp1D.test_nd  sH    1 	' 	'D!!$'''  &&&&	' 	'r|   c                    t          j        g d          }||dz  z  }|                    |          }t          |||          }t	          |d d          ||          d d                    t          j        ddd          }t          ||j        |          }t          ||j        |          }t	           ||          j         ||                     t	           ||          j         ||                     d S )N)
rg   r`   rR   g@rS   g@g@g       @g      #@r         ?       @rD   rU   rg   r   rF   )rH   rV   r   r   r   r   realimag)	r3   r   rE   r5   r4   r"  xicrcis	            r;   _check_complexzTestInterp1D._check_complex%  s    H@@@AAfHHUOO Q%%%!!CRC&!!A$$ss)444 [B##ad+++ad+++!!!B%%*bbff555!!!B%%*bbff55555r|   c                     dD ]B}|                      t          j        |           |                      t          j        |           Cd S r<  )r]  rH   r   r   r   s     r;   test_complexzTestInterp1D.test_complex5  sP    1 	5 	5Dd333t4444	5 	5r|   zTest not meaningful on PyPy)reasonc                     t          j        dd          }t          j        dd          }t          t          ||          5 } |ddg           ~d d d            d S # 1 swxY w Y   d S )Nr   rg   皙?皙?)rH   r   r!   r   )r3   r5   r4   r7  s       r;   test_circular_refszTestInterp1D.test_circular_refs;  s     K1K1!Q// 	6FC:	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA!$A!c                     dD ]O}t          j        g dt           j                  }t          |||          }t	           ||          |           Pd S )N)r   r   r   )r   2      r   rD   )rH   rV   int8r   r   )r3   rE   r5   r9  s       r;   test_overflow_nearestz"TestInterp1D.test_overflow_nearestE  sd    3 	0 	0DRW555A!QT***B%bbeeQ////	0 	0r|   c                 R   t          j        d                              t                    }|                                }t           j        |d<   dD ]T}t          |||          } |ddg          }t          t          j        |          	                                           Ud S )Nr   rL  )r   r   rD   g@rA  )
rH   rb   r   r   rK   rn   r   r   rq   rp   )r3   r5   r4   rE   irvalss         r;   test_local_nanszTestInterp1D.test_local_nansL  s     IbMM  ''FFHHv!' 	- 	-D!QT***B2sCj>>DBK%%))++,,,,	- 	-r|   c                 ,   t          j        d                              t                    }|                                }|                                }t           j        |d<   dD ]}t          |||          }t          |||          }dddgddgddggfD ]y}t          j        |          } ||           ||          }	}t          t          j	        |	          
                                           t          |j        |	j                   zd S )Nr   rR   )r   rC   rD   rL  rg   rT   )rH   rb   r   r   rK   rn   r   asarrayr   ro   rp   r   r4  )
r3   r5   r4   ynrE   rk  irnr   outoutns
             r;   test_spline_nanszTestInterp1D.test_spline_nansW  s    IaLL&&FFHHVVXX1* 	4 	4D!QT***B1bt,,,CQFaVaV$45 4 4z$''BqEE33q66T**,,---SY
3333	4	4 	4r|   c                     t          j        d          t           j        z  }t          j        d          }t	          t
                    5  t          ||d           d d d            d S # 1 swxY w Y   d S )Nr   rC   rD   )rH   r   rn   rb   rW   rX   r   )r3   r5   r4   s      r;   test_all_nanszTestInterp1D.test_all_nansi  s    GBKK"& IbMM:&& 	) 	)Q((((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   
A**A.1A.c                 p   t          j        dd          }t          j        | dz            }t          j        ddd          }dD ]o}||j        _        d|j        _        dD ]R}t          |||	          } ||          }t          t          j        |                                                     Spd S )
Nr   r   r   r   rb  TFF)r^   r   r   r   r   rC   rD   )	rH   rb   r   flags	writeabler   r   rq   rp   )r3   r5   r4   r   xnew_writeablerE   r   rl  s           r;   test_read_onlyzTestInterp1D.test_read_onlyp  s    IaFA28yAs##+ 	1 	1N#1DJ  %AG" 1 1Q---qwwD))--//0000	1	1 	1r|   rE   )r^   r   r   r   r   c                 
   t          dgdg|dd          }t           |g d          g d           t          dgdg|d	          }t          t          d
          5   |d           d d d            d S # 1 swxY w Y   d S )Nr_   rL  Fr   )rE   rk   rm   )rg   r_   r(   )r(   rL  r   Tr   zx_new is abovematchr-   )r   r   rW   rX   )r3   rE   r   s      r;   test_single_valuezTestInterp1D.test_single_value~  s    
 cUQCd ') ) )11[[[>>:::666cUQCd>>>:-=>>> 	 	AcFFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A88A<?A<N)r^   )+rx   ry   rz   r   r   r   r   r   r   r   r   r   r   r   r
  r  r  r  r  r$  r&  r:  r=  r?  rJ  rS  rU  rH   complex_r]  r_  pytestmarkskipifr"   rd  ri  rm  rt  rv  r|  parametrizer  r{   r|   r;   r~   r~   x   s       '! '! '!RB9 B9 B9HG G G&D D D4% % %H H H&+ + +$O O O"> > >H H H*H H H*C& C& C&JC, C, C,J: : :9 9 9- - - -0= = = =2 2 2_L _L _LB) ) )/ / /F F F F@D D D D' ' ' $&;X 6 6 6 6 5 5 5 [(EFF  GF0 0 0	- 	- 	-4 4 4$) ) )1 1 1 [G     r|   r~   c                       e Zd Zd ZdS )TestLagrangec                     t          g d          }t          j        t          |j                            } ||          }t          ||          }t          |j        |j                   d S )N)rT   r(   rg   rS   rR   )r   rH   rb   lencoeffsr   r   )r3   pxsyspls        r;   test_lagrangezTestLagrange.test_lagrange  s^    ;;;Ys18}}%%QrUUb__!!(2955555r|   N)rx   ry   rz   r  r{   r|   r;   r  r    s#        6 6 6 6 6r|   r  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestAkima1DInterpolatorc                    t          j        dd          }t          j        g d          }t          ||          }t          j        g d          }t          j        g d          }t	           ||          |           d S )Nr   r  r   r-   r,   r   r-   r         @r  g@ffffff@r   r   r+   r,   r_   r`         @g      @r  g      @g@g333333!@g#@r   r   g      ?r-   r_   g     @?g     @g.袋@g^@gn @gGNB@grcߖ@g	I@r   )rH   rb   rV   r   r   r3   r5   r4   akrZ  r#  s         r;   	test_evalz!TestAkima1DInterpolator.test_eval  s    Ib#HEEEFF A&&X     X     
 	2#####r|   c                 j   t          j        dd          }t          j        g d          }t          j        |d|z  f          }t	          ||          }t          j        g d          }t          j        g d          }t          j        |d|z  f          }t           ||          |           d S )Nr   r  r  r-   r  r  )rH   rb   rV   column_stackr   r   r  s         r;   test_eval_2dz$TestAkima1DInterpolator.test_eval_2d  s    Ib#HEEEFFOQQK(( A&&X & & & ' 'X 8 8 8 9 9 _b"r']++2#####r|   c                    t          j        dd          }t          j        g d          }t          j        d          }||d d ddf<   d|z  |d d ddf<   d|z  |d d ddf<   d	|z  |d d ddf<   t	          ||          }t          j        g d
          }t          j        d          }t          j        g d          }||d d ddf<   d|z  |d d ddf<   d|z  |d d ddf<   d	|z  |d d ddf<   t           ||          |           d S )Nr   r  r  )r   r(   r(   r   r-   rg   r   rD  r  )   r(   r(   r  )rH   rb   rV   emptyr   r   )r3   r5   y_r4   r  rZ  r#  yi_s           r;   test_eval_3dz$TestAkima1DInterpolator.test_eval_3d  sf   Ib#XFFFGGHZ  !!!Q'
"W!!!Q'
"W!!!Q'
"W!!!Q'
 A&&X & & & ' 'Xj!!h 9 9 9 : : 111a73h111a73h111a73h111a72#####r|   c                 (   t          j        g d          }t          j        ||dz  f          j        }t	          ||          }t          j        ddg          } ||          }t          |t          j        ||dz  f          j                   d S )Nr   r(   r+   r_   )rH   rV   vstackTr   r   )r3   r5   r4   r  x_evaly_evals         r;   %test_degenerate_case_multidimensionalz=TestAkima1DInterpolator.test_degenerate_case_multidimensional  s    HYYYIq!Q$i  " A&&3*%%F	6619*= > > @AAAAAr|   c                    t          j        dd          }t          j        g d          }t          ||          }d}t	          j        t          |          5  |                    d d            d d d            d S # 1 swxY w Y   d S )Nr   r  r  z9Extending a 1-D Akima interpolator is not yet implementedr~  )rH   rb   rV   r   r  r
   NotImplementedErrorextend)r3   r5   r4   r  r  s        r;   test_extendz#TestAkima1DInterpolator.test_extend  s    Ib#HEEEFF A&&K].e<<< 	" 	"IIdD!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   A==BBN)rx   ry   rz   r  r  r  r  r  r{   r|   r;   r  r    sb        $ $ $$ $ $"$ $ $2B B B" " " " "r|   r  c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestPPolyCommonc                     t          j        ddgddgddgg          }t          j        g d          }t          t          t          ||           t          t          t
          ||           d S )Nrg   rS   r(   rT   rR   rL  )r   rg   r+   )rH   rV   rW   rX   r   r   )r3   r"  r5   s      r;   test_sort_checkzTestPPolyCommon.test_sort_check  se    Hq!fq!fq!f-..H[[[!!j%A...j%A.....r|   c                     t          t                    5  t          ddgddg           d d d            d S # 1 swxY w Y   d S )Nrg   r(   r   )rW   rX   r   r   s    r;   test_ctor_czTestPPolyCommon.test_ctor_c  s    :&& 	" 	"1a&1a&!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   7;;c                    t           j                            d           d}t          j        t           j        ddt           j                            d          z  df                   }dt           j                            |dz   t          |          dz
  dd          z  dz
  }t          t          fD ]} ||d d d df         |d d                   }|	                    |d d dd f         |dd                      ||d d dd f         |dd                    }|	                    |d d d df         |d d                     |||          }t          |j        |j                   t          |j        |j                   t          |j        |j                   t          |j        |j                   d S )	NrB   rR   r   r   rG   r(   rg   r   )rH   rI   rJ   uniquer!  randr  r   r   r  r   r"  r5   )r3   orderr5   r"  clspppp2pp3s           r;   r  zTestPPolyCommon.test_extend  s   
	tIbeArBINN2$6$66:;<<binnU1Wc!ffQh155595> 	- 	-CQqqq!tWaf%%BIIa!""gqv&&&#a233i233((CJJqCRCy!CRC&)))#a))CrtSU+++rtSU+++suce,,,suce,,,,	- 	-r|   c                    t           j                            d           t          j        ddd          }t           j                            dd          }t          j        ddd          }t           j                            dd          }t
          t          fD ]} |||          } |||          } |||          }|                    ||dd                     t          j        dddd	
          }	t          j        ddd          }
t           ||	           ||	                     t           ||
           ||
                     d S )NrB   r   rg   rL  r(   rT   rS   r,  F)endpoint)	rH   rI   rJ   r   r  r   r   r  r   )r3   r5   r"  r   c2r  pp1r  pp_combxi1xi2s              r;   test_extend_diff_ordersz'TestPPolyCommon.test_extend_diff_orders  s<   
	tK1a  INN1a  [Aq!!Y^^Aq!!5> 	4 	4C#a))C#b"++Cc!QiiGNN2r!""v&&& +aC%888C+aC((CCCHHggcll333CCHHggcll3333	4 	4r|   c                 J   t           j                            d           d}t          j        t           j                            ddd                    }t           j                            |dz   |j        d         dz
  dd          }t          t          fD ]} |||          } ||d d d df         |d d                   }|	                    |d d dd f         |dd                      ||d d dd f         |dd                    }|	                    |d d d df         |d d                    t          |j        |j                   t          |j        |j                   t          |j        |j                   t          |j        |j                   d S )Nr   rR   r      rg   r(   r   )rH   rI   rJ   sortuniformr  r4  r   r   r  r   r"  r5   )r3   r  r5   r"  r  r  p1p2s           r;   test_extend_descendingz&TestPPolyCommon.test_extend_descending  s   
	qGBI%%aR0011INN519agaj1na;;5> 	* 	*CAq		AQqqq"1"uXq"v&&BIIa122h"##'''Qqqq"##vY"##''BIIa3B3i3B3(((rtQS)))rtQS)))rtQS)))rtQS))))	* 	*r|   c           
          t           j                            d           t           j                            ddddd          }t          j        t           j                            d                    }t           j                            dd	          }t
          t          fD ],} |||          }t           ||          j        d
           -t
          t          fD ]} ||d         |          }t          t          j         |d                    d           t          t          j         |t          j	        d                              d           t          t          |t          j	        ddgdggt                               d S )NrB   r   r   rT   rL  rh   r  rR   rS   )rR   rS   rT   rL  rh   ).r   r   r   r+   r{   rb  rc  皙?r   )rH   rI   rJ   r  r  r   r   r   r4  rV   rW   rX   object)r3   r"  r5   xpr  r  s         r;   
test_shapezTestPPolyCommon.test_shape1  sW   
	tINN1b!Q**GBINN2&&''Y^^Aq!!5> 	7 	7CAq		A2o6666 5> 	V 	VCAlOQ''A!!C&&))2...!!BHSMM"2"233R888*aC:u2EV)T)T)TUUUU	V 	Vr|   c           	      \   t           j                            d           t          j        t           j                            d                    }t           j                            d          dz  }|j        |j        }}t           j                            d          }t          t          fD ]}} |||           |||           |||          }	}}dD ]T}
t           |||
          j         |||
                     t           |||
          j         |	||
                     U~d S )N90  r  )r   r   y      ?333333?rT   r   )	rH   rI   rJ   r  rX  rY  r   r   r   )r3   r5   r"  c_rec_imr  r  r  p_rep_imnus              r;   test_complex_coefz!TestPPolyCommon.test_complex_coefC  s   
	uGBI$$R(())IW%%3VQVdYa  5> 	> 	>CC1IIss4||SSq\\TtA > >"b		R==="b		R====>	> 	>r|   c                 X   t           j                            d           t           j                            dddddd          }|j        }t           j                            d          }d	D ]}|j        |d
z            }t          j        t           j                            |d
z                       }t          t          fD ],} ||||          }t          |j	        j        |||dz            |d |         z   ||dz   d          z               ||          }	|d |         |j        z   |d|z   d          z   }
t          |	j        |
            ||||          
                                 ||||          
                    d           ||||                                           ||||                              d          fD ]}t          |j        |j                   .dD ]6}t          t          fD ]%}t          t          |fi t          |||           &7d S )Nr  rR   rS   rT   rL  rh   r   )rg   r(   r   rg   r(   rR   rg   r   r(   )rU   rS   rT   rL  )r"  r5   r   )rH   rI   rJ   r  r4  r  r   r   r   r"  
derivativeantiderivativer   rW   rX   r   )r3   r"  c_sr  r   mr5   r  r  res
targ_shaper  s               r;   	test_axiszTestPPolyCommon.test_axisO  sc   
	uINN1aAq!,,gYf%%  	2 	2DQA	qs++,,Au~ 2 2C14(((QSY d1f-ETE
:Sa\IK K Kaee $Z"(2S4\A
SY
333 3q!$///::<<3q!$///::1==3q!$///>>@@3q!$///>>qAAC 2 2B !!&1111	22" " 	L 	LDu~ L Lj#KKQT1J1J1JKKKKL	L 	Lr|   N)rx   ry   rz   r  r  r  r  r  r  r  r  r{   r|   r;   r  r    s        / / /" " "
- - -,4 4 42* * **V V V$
> 
> 
>L L L L Lr|   r  c                   d    e Zd Z G d de          Z G d de          Zd Zd Zd Z	d Z
d	 Zd
S )TestPolySubclassingc                       e Zd ZdS )TestPolySubclassing.PNrx   ry   rz   r{   r|   r;   Pr  n          r|   r  c                       e Zd ZdS )TestPolySubclassing.BNr  r{   r|   r;   Br  q  r  r|   r  c                 8   t           j                            d           t          j        t           j                            d                    }t           j                            d          }|                     ||          |                     ||          fS )NrB   rR   )rS   r(   )rH   rI   rJ   r  r  r  )r3   r5   r"  s      r;   _make_polynomialsz%TestPolySubclassing._make_polynomialst  sm    
	tGBI$$Q''((IV$$vva||TVVAq\\))r|   c                     |                                  \  }}||fD ]0}|                                }t          |j        |j                   1|                                }t          |j        |j                   d S r0  )r  r  r   	__class__r  )r3   r  bpr  pdppas         r;   test_derivativez#TestPolySubclassing.test_derivativez  sy    ''))Bb 	4 	4ABbl3333!!R\3=11111r|   c                    t           j                            d           t          j        t           j        dt           j                            d          df                   }t           j                            t          |                    }t          ||d          }| j        	                    |          }t          |j        | j                   d S )NrB   r   r   rg   rR  )rH   rI   rJ   r  r!  r  r  r   r  from_spliner   r  )r3   r5   r4   splr  s        r;   test_from_splinez$TestPolySubclassing.test_from_spline  s    
	tGBE!RY^^B//2344INN3q66""QQV$$R\46*****r|   c                    |                                  \  }}| j                            |          }t          |j        | j                   | j                            |          }t          |j        | j                   d S r0  )r  r  from_bernstein_basisr   r  r  from_power_basis)r3   r  r  r  bp1s        r;   test_conversionsz$TestPolySubclassing.test_conversions  so    ''))Bf))"--S]DF+++f%%b))S]DF+++++r|   c                     g d}dgdgdgg}| j                             ||          }t          |j        | j                    d S )Nr   rg   r(   rR   )r  from_derivativesr   r  )r3   r5   r4   r  s       r;   test_from_derivativesz)TestPolySubclassing.test_from_derivatives  sM    IIS1#sOV$$Q**R\46*****r|   N)rx   ry   rz   r   r  r   r  r  r  r  r  r   r{   r|   r;   r  r  m  s            E       E   * * *2 2 2+ + +, , ,+ + + + +r|   r  c                       e 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d Zd Zd Zd Zd Zd Zd Zd Zd ZdS )	TestPPolyc                     t          j        ddgddgddgg          }t          j        g d          }t          ||          }t           |d          d	           t           |d
          d           d S )Nrg   rS   r(   rT   rR   rL  r   r+   rg   333333?Q@ffffff?p=
ף@rH   rV   r   r   r3   r"  r5   r  s       r;   test_simplezTestPPoly.test_simple  s|    Hq!fq!fq!f-..H[[[!!!QKK# 4555# @AAAAAr|   c                 \   t          j        ddgddgddgg          }t          j        g d          }t          ||d	          }t           |d
          d           t           |d          d           t           |d
d          d           t           |dd          d           d S )Nrg   rS   r(   rT   rR   rL  r  periodicr   g?r  333333ӿr  g@gffffff@r	  r
  s       r;   test_periodiczTestPPoly.test_periodic  s    Hq!fq!fq!f-..H[[[!!!QJ///# :;;;$!KLLL#q		;///$

$788888r|   c                 z   t          j        ddgddgddgg          }t          j        g d          }t          j        g d          }t          ||d	
           dD ]\}||j        _        t          ||          } ||          }t          t          j        |                                                     ]d S )Nrg   rS   r(   rT   rR   rL  r  )r   rb  rc  r  r  rx  )rH   rV   r   ry  rz  r   rq   rp   )r3   r"  r5   r   rz  r   rl  s          r;   r|  zTestPPoly.test_read_only  s    Hq!fq!fq!f-..H[[[!!x&&a
++++& 	- 	-I )AGaA1T77DBK%%))++,,,,		- 	-r|   c           	         d }t           j                            d           d}dD ]}t          j        t           j                            dd|dz                       }t           j                            dd|dz   |f	          }t          j        |          }|d d d f         t          j        |dz             d d d
d f         z  } ||          }||z  }	t          j        |j        |	          }
|
|z  }t          ||d          }t          |d d d d d
f         |d d d
         d          }t           j                            ddd          }t           ||           ||          d           t           ||d           ||d          d           |                                }|                                }t           ||           ||          d           |                                }|                                }t           j                            ddd          D ]\  }}|                    ||          }|                    ||          }t          ||d           t           ||           ||          z
   ||           ||          z
  d           |                                }|                                }t          |t          j        |          d           d S )Nc                     t          j        | dz                                 dd          }t          j        | dz             }t          ||          }|d d dd d df         S )Nrg   rU   )rH   rb   r   r$   )powerrQ  kr  s       r;   binom_matrixz/TestPPoly.test_descending.<locals>.binom_matrix  s_    	%!)$$,,R33A	%!)$$AaATTrT44R4Z= r|   r   rR   r   r  rG   r   rg   r   r(   sizerU   Tr  r*  r  r)  vIh%<=r   rT   r(   -q=)rH   rI   rJ   r  r  diffrb   dotr  r   r   r  r  	integrateroots)r3   r  r  r  r5   cahh_powersr  capcdpcdpar  x_testpa_dpd_dpa_ipd_irc   rd   int_aint_droots_droots_as                            r;   test_descendingzTestPPoly.test_descending  s   	! 	! 	! 		q %	C %	CA	))!RQ7788A""2q	1~">>B

AqqqzRYuqy%9%9$$B$*%EEHU##Ax-C&c""CxBr1$///Br!!!TTrT'{AdddG>>>BY&&sB44FBBvJJ6

????BBvqMM22fa==uEEEE==??D==??DDDLL$$v,,UCCCC
 $$&&D$$&&D	))#r6:: , ,1Q**Q**u59999Q$$q'' 14477TT!WW3D%*, , , , , hhjjGhhjjGGRWW%5%5EBBBBBK%	C %	Cr|   c                    t           j                            ddddd          }t          j        g d          }t	          ||          }t          |j        j        |j                   t          |j        j        |j                   t           |d          j        |j        dd                     t           |t           j                            dd                    j        d|j        dd          z              |	                                }t          |j        j        d	           |
                                }t          |j        j        d
           d S )NrL  r(   rg   rR   r  r  rT   rT   rL  rT   r(   rg   r(   rR   )rh   r(   rg   r(   rR   )rH   rI   r  rV   r   r   r5   r4  r"  r  r  )r3   r"  r5   r  dpips         r;   test_multi_shapezTestPPoly.test_multi_shape  s   INN1aAq))H[[[!!!QKKQSY(((QSY(((QQsVV\17122;///QQry~~a++,,2FQWQRR[4HIII\\^^RTZ111RTZ11111r|   c                 F   t           j                            d           t          j        ddgddgddggt                    }t          j        g d	          }t          j        ||          }t           |d
          d           t           |d          d           d S )NrB   rg   rS   r(   rT   rR   rL  r   r  r  r  r  r  )rH   rI   rJ   rV   r   r   construct_fastr   r
  s       r;   test_construct_fastzTestPPoly.test_construct_fast  s    
	tHq!fq!fq!f-U;;;H[[[!! A&&# 4555# @AAAAAr|   c                 (   t           j                            d           t           j                            ddd          }t          j        t           j        dt           j                            d          df                   }t          ||          }t           j        d         }t          |||          }t           ||          |           t          |d d d d df         ||          }t           ||          d d df         |           d S )	NrB   rR   r      r   r   rg   )r  r+   gQ?333333?)
rH   rI   rJ   r  r  r!  r   _ppoly_eval_1r   _ppoly_eval_2)r3   r"  r5   r  r  expecteds         r;   #test_vs_alternative_implementationsz-TestPPoly.test_vs_alternative_implementations  s    
	tINN1b"%%GBE!RY^^B//2344!QKKU&' Ar**"x((( 111QQQq51b11"aaac
H-----r|   c                     t           j                            d           t          j        t           j        dt           j                            d          df                   }t           j                            t          |                    }t          ||d          }t          j	        |          }t          j
        ddd          }t           ||          t          ||                     t          | }t          j	        |          }t           ||           ||                     |\  }}	}
dD ]C}t          ||	|
|          }t          j	        |          }t          |j        |j                   Dd S )	NrB   r   r   rg   r  r+  )NTFr  )rH   rI   rJ   r  r!  r  r  r   r   r  r   r   r   r   r   r   )r3   r5   r4   r  r  rZ  rd   ppptr"  r  extrapr  s                r;   r  zTestPPoly.test_from_spline  sO   
	tGBE!RY^^B//2344INN3q66""QQs##[As##2b#/// SM""B2''' 1a) 	7 	7F1aV444A!!$$A6666	7 	7r|   c                 *   t           j                            d           t          j        g dg          j        }t          j        g dg          j        }t          j        ddgg          j        }t          j        ddg          }t          ||          }t          ||          }t          ||          }t          |                                j        |j                   t          |                    d          j        |j                   d S )	NrB   )rS   rR   r(   rg   )r   rL  r(      rL  r   rg   r(   )	rH   rI   rJ   rV   r  r   r   r  r"  )r3   r"  dcddcr5   r  dppddpps           r;   test_derivative_simplez TestPPoly.test_derivative_simple(  s    
	tHlll^$$&X}}}o&&(h'((*HaV1a[[BllS!}})35111a((*DF33333r|   c           	         t           j                            d           t          j        t           j        dt           j                            d          df                   }t           j                            t          |                    }t          ||d          }t          j	        |          }t          j
        ddd          }t          dd          D ]+}t           |||          t          |||                     ,d S )NrB   r   r   rg   r  r+  rR   )rH   rI   rJ   r  r!  r  r  r   r   r  r   r5  r   r   r3   r5   r4   r  r  rZ  dxs          r;   test_derivative_evalzTestPPoly.test_derivative_eval6  s    
	tGBE!RY^^B//2344INN3q66""QQs##[As##1++ 	< 	<BBBr2JJb#r(:(:;;;;	< 	<r|   c                 <   t           j                            d           t          j        t           j        dt           j                            d          df                   }t           j                            t          |                    }t          ||dd          }t          j	        |          }t          j
        ddd          }t          dd          D ]>}t           |||           |                    |          |          d	|fz  
           ?d S )NrB   r   r   rg   rT   rR  r  r+  r   zdx=%drM  )rH   rI   rJ   r  r!  r  r  r   r   r  r   r5  r   r  rN  s          r;   r  zTestPPoly.test_derivativeB  s    
	tGBE!RY^^B//2344INN3q66""QQ!$$$s##[As##2,, 	5 	5BBBr2JJ(9b(9(9"(=(=$+reO5 5 5 5 5	5 	5r|   c                 .   t          dggddg          }t          |                                j        t          dgdggddg          j                   t          |                                j        t          dgdggddg          j                   d S )Nr,   r   rg   )r   r   r  r"  r5   )r3   r  s     r;   test_antiderivative_of_constantz)TestPPoly.test_antiderivative_of_constantO  s    B4&1a&!!Q%%'')51#saV+D+D+FGGGQ%%'')51#saV+D+D+FGGGGGr|   c                 N   t          ddggg d          }|                                }t          |j        ddgddgg           t          |j        g d           t          |                    dd          d           t           |d           |d          z
  d           d S )Nr,   r+   r   rg   r   r(   r_   )r   r  r   r"  r5   r   r  )r3   r  qs      r;   #test_antiderivative_regression_4355z-TestPPoly.test_antiderivative_regression_4355U  s    B9+yyy))QSAs8aV,---QS)))$$$Aq))3///!qqttS)))))r|   c                    t           j                            d           t          j        g dg dg          j        }t          j        g dg dg          j        }t          j        g dg dg          j        }t          j        g d          }t          ||          }|                                }|                    d	          }|                                }t          |j        |           t          |j	        j        |j                   t          |j	        j        |j                   t          |j	        j        |j                   d S )
NrB   )rR   r(   rg   )r   r         ?)rg   rg   rg   r   )r   r   rY        ?)      ?gUUUUUU?r+   r   r   )r   r   g      ?rZ  g*?)r   r[  rg   r(   )
rH   rI   rJ   rV   r  r   r  r   r5   r"  )	r3   r"  iciicr5   r  ippiippiipp2s	            r;   test_antiderivative_simplez$TestPPoly.test_antiderivative_simple^  s=   
	t Hiii0113 X|||%=%=%=>??A h---HHHJ K KKL 	H\\\""1a[[!!  ##""$$q!!!&&&#%(((	35)))))r|   c           
         t           j                            d           t          j        ddd          dz  }t           j                            t          |                    }t          ||dd          }t          j        |          }t          dd          D ]}|
                    |          }|                    |          }t          |j        |j                   t          |          D ]x}|                    |          }d	}	|	|j        d d
         z  d|	z
  |j        dd          z  z   }
t           ||j        dd                     ||
          dd||fz             yd S )NrB   r   rg   rG   r(   rT   rR  r   r  rU   r   z
dx=%d k=%d)r   r   )rH   rI   rJ   r   r  r  r   r   r  r5  r  r  r   r"  r5   )r3   r5   r4   r  r  rO  r^  r  r  rr  s              r;   !test_antiderivative_vs_derivativez+TestPPoly.test_antiderivative_vs_derivativev  sy   
	tK1b!!1$INN3q66""QQ!$$$s##2,, 	K 	KB##B''C ..$$CBD#%((( 2YY K KnnQ''SU3B3Z<1q5#%)*;;CE!""IH%)<2q'3IK K K K KK	K 	Kr|   c                 `   t           j                            d           t          j        t           j        dt           j                            d          df                   }t           j                            t          |                    }t          ||dd          }t          j	        |          }t          dd          D ]f}|                    |          }t          ||          }t          j        ddd          }t           ||          t          ||          d	
           gd S )NrB   r   r   rg   rT   rR  r   r+  r   r   )rH   rI   rJ   r  r!  r  r  r   r   r  r5  r  r   r   r   r   )	r3   r5   r4   r  r  rO  r  spl2rZ  s	            r;   test_antiderivative_vs_splinez'TestPPoly.test_antiderivative_vs_spline  s	   
	tGBE!RY^^B//2344INN3q66""QQ!$$$s##2,, 	' 	'B##B''Cc2&&DQ3''BCCGGU2t__!%' ' ' ' '	' 	'r|   c                 \   t          j        g dg dg          j        }t          j        g d          }t          ||          }|                                }t           |d           |d          d           |                                }t          |j        |j                   d S )N)r(   rg   r(   r(   )r(   rg   rR   rR   r  gA?g_p   ?g:0yE>r   )rH   rV   r  r   r  r   r  r"  )r3   r"  r5   r  r6  r  s         r;   test_antiderivative_continuityz(TestPPoly.test_antiderivative_continuity  s    HlllLLL1224H[[[!!!QKK 	::TBBBB ]]__ac"""""r|   c           	      n   t           j                            d           t          j        t           j        dt           j                            d          df                   }t           j                            t          |                    }t          ||dd          }t          j	        |          }d\  }}|
                    ||          }|                                }t          | ||           ||          z
             t          |t          |||                     d\  }}|
                    ||d	
          }t          | ||           ||          z
             t          t          j        |
                    ||d
                                                               d S )NrB   r   r   rg   rT   rR  )r  ?)r  rk  Tr  F)rH   rI   rJ   r  r!  r  r  r   r   r  r  r  r   r   r   ro   rp   )	r3   r5   r4   r  r  rc   rd   igr^  s	            r;   test_integratezTestPPoly.test_integrate  sm   
	tGBE!RY^^B//2344INN3q66""QQ!$$$s##1\\!Q!!CCFFSSVVO,,,F1a--...1\\!QD\11CCFFSSVVO,,,a>>??CCEEFFFFFr|   c                 F   t          j        g d          }t          j        ddgddgddgddgg          }dD ]g}||j        _        t	          ||          }|                    dd	          }t          t          j        |                                                     hd S )
Nrg   r(   rS   r   r   r-          r,   rx  rg   rS   )	rH   rV   ry  rz  r   r  r   rq   rp   )r3   r5   r"  rz  r  rl  s         r;   test_integrate_readonlyz!TestPPoly.test_integrate_readonly  s    HYYYHr2hc
RIBx@AA& 	- 	-I )AGaA;;q!$$DBK%%))++,,,,	- 	-r|   c                    t          j        g d          }t          j        ddgddgddgddgg          }t          ||d          }|                                } |d	           |d
          z
  }t	          |                    d
d	          |           t	          |                    dd          |           t	          |                    dd          d|z             t	          |                    dd           |d           |d          z
             t	          |                    dd           |d           |d
          z
   |d	          z    |d          z
             t	          |                    dd           |d           |d
          z
   |d	          z    |d          z
             t	          |                    dd           |d           |d
          z
   |d	          z    |d          z
  d	|z  z              t	          |                    dd           |d           |d          z
             t	          |                    dd           |d           |d          z
             t	          |                    dd           |d           |d          z
  d|z  z
             d S Nro  r   r   r-   rp  r,   r  r  rS   rg   r*  ir(   r_   r`   r  rT   g      /@   r   rU   rR   i)rH   rV   r   r  r   r  r3   r5   r"  r  I
period_ints         r;   test_integrate_periodicz!TestPPoly.test_integrate_periodic  s   HYYYHr2hc
RIBx@AA!QJ///QqTTAAaDD[
Aq)):666C,,j999C,,a*n===C--qqvv#???C++QQqTTAAaDD[11Q44-?!!C&&-HIIIHf55!qqttaadd*QQsVV3	5 	5 	5C00!qqttaadd*QQsVV3a*nD	F 	F 	F 	Ar**AAaDD11Q44K888B,,aaddQQqTTk:::As++QQqTTAAaDD[1z>-IJJJJJr|   c                 @   t          j        ddd          dz  }t          j        d|z            }t          ||dd          }t	          j        |          }|                                }||dk    |d	k    z           }t          |t          |          d
           d S )Nr   rg   rF   r(   rG   rR   rR  gV瞯Ҽg     ?r   r   )	rH   r   r   r   r   r  r   r   r   )r3   r5   r4   r  r  rc  s         r;   
test_rootszTestPPoly.test_roots  s    K1b!!1$F2a4LLQQ!$$$s##HHJJqI~!y.126#;;U333333r|   c                    t          j        ddgddgddgg          j        }t          j        g d          }t          ||          }t	          |                                ddt           j        dg           d}|                                }|dd d fxx         |z  cc<   t          ||          }t	          |                    |          ddt           j        dg           d S )	NrU   r[  r   )r   r  r=  r,   r  g333333?r-   rg   )	rH   rV   r  r   r   r   rn   rK   solve)r3   r"  r5   r  constc1r  s          r;   test_roots_idzerozTestPPoly.test_roots_idzero  s     Hr4j1a&2t*5668H'''((1a[[288:: #rvz:	< 	< 	< VVXX
1aaa4EBll399U++ #rvz:	< 	< 	< 	< 	<r|   c                    dgdgg}ddg}t          ||          }t          |                                dt          j        g           t          |                    d          dt          j        g           t          |                    d          g            ddgddgg}g d}t          ||          }t          |                                dt          j        dt          j        g           t          |                    d          dt          j        dt          j        g           t          |                    d          g            d S )Nr   rg   r   )r   r   r   rH   rn   r}  r
  s       r;   test_roots_all_zerozTestPPoly.test_roots_all_zero  s   S1#JF!QKK17799q"&k2221771::26{3331771::r***VaVII!QKK17799q"&!RV&<===1771::261bf'=>>>1771::r*****r|   c                 "   t          j        g dg dg          j        }t          j        g d          }t          ||          }t	          |                                ddg           t	          |                    d          dg           d S )N)rg   r   rU   )rU   r   r   r  r   r   Fr  )rH   rV   r  r   r   r   r3   r"  r5   r  s       r;   test_roots_repeatedzTestPPoly.test_roots_repeated  s    
 Hjjj***-..0HZZZ  1a[[288::Aw///288866<<<<<r|   c                 <   t          j        dgdgg          j        }t          j        g d          }t          ||          }t	          |                                dg           t	          |                    d          g            t	          |                    d          dg           t	          |                    dd          g            t	          |                    d          g            t	          |                    dd          g            d S )Nrg   rU   r  r+   F)discontinuityr_   )rH   rV   r  r   r   r   r}  r  s       r;   test_roots_discontzTestPPoly.test_roots_discont  s    HqcB4[!!#H[[[!!1a[[288::u---288%888"=== 	288C==3%000288Cu8==rBBB288C=="---288Cu8==rBBBBBr|   c                    t           j                            d           d}dD ]}t          dd          D ]r}t          j        t           j        ddt           j                            d          z  df                   }dt           j                            |dz   t          |          dz
  dd	          z  dz
  }t          ||          }dt           j                                        fD ]}|	                    |d
|          }t          d          D ]}	t          d	          D ]}
||	|
f         }|j
        dk    ri||j
        z  } |||          d d |	|
f         } ||d|          d d |	|
f         }d|dt          |          }t          ||z
  |z  dd|           tt          |dk    t          |                     d S )NrB   r   rx  r  r   rG   r(   rg   rR   F)r  r   r  )r  r   (z) r = r   r   r)  )rH   rI   rJ   r5  r  r!  r  r  r   r}  r  reprr   r   )r3   numr   r  r5   r"  r  r4   rc  ijrrvalcmpvalmsgs                  r;   test_roots_randomzTestPPoly.test_roots_random.  s   
	t( 	= 	=Kq" = =IbeArBINN2,>,>'>$BCDDbinnU1Wc!ffQh1===A1a[[RY--//0 = =A%[QQA"1XX = =!&q 
= 
=A!"1Q3B!w{{ #rw&(b&E&E&Eaaa!e&L)+B18C*E *E *EEFQQqU*L7B{{DHHH&N /Q&0@!$8;!= != != !=
====, 	c	499%%%%%r|   c           
         t           j                            d           t          dd          D ]}t           j                            |dd          }|dk    r
d|d d ddf<   dt           j                                        fD ]:}t          j        |j        t                    }t          j	        ||           |dk    r4t          t          j        |                                                     rd}d}t          |          D ]A}|||d f         ||dz
  |z
  z  z  z  }|t          ||d f         ||dz
  |z
  z  z            z  }Bt          j        d	
          5  ||z  }d d d            n# 1 swxY w Y   |                                }|t          j        |                    }t!          |dd           <d S )NrB   rg   r      rR   )rg   r(   rg   r   r   ignore)invalidg|=r   )rH   rI   rJ   r5  r  r  r4  complexr    _croots_poly1r   ro   rp   abserrstater2   r   )r3   r  r"  r4   wr  cresr  s           r;   test_roots_crootszTestPPoly.test_roots_crootsM  s   
	tq" 	4 	4A	q!S))AAvv"!!!Aa%))++, 4 4HQWG444$Q***66BHQKKOO--...q 8 8A1QtV9q1Q3q5z11CC!D&	A!AJ 6777DD[222    4KC                             iikk28C==.)QU33333#4	4 	4s    E22E69E6c           	      0   t          j        g dg          j        }t          j        ddg          }dD ]}t          |||          }|                                }|                                }|du rt          t          j         |ddg                                                               t          t          j         |ddg                                                               t          t          j         |ddg                                                               t          |
                                dg            t           |ddg          d	d
g           t          t          j         |ddg                                                                t          t          j         |ddg                                                                t          |
                                ddg           d S )Nr  r   rg   TFNr  F皙皙?gGz?gzGʿrU   )rH   rV   r  r   r  r  r   ro   rp   r   r   r   any)r3   r"  r5   r   r  pp_dpp_is          r;   test_extrapolate_attrzTestPPoly.test_extrapolate_attrk  s   Hjjj\""$HaV. 	5 	5Kq!555B==??D$$&&De##T3K115577888tSk!2!2337799:::tSk!2!2337799:::RXXZZ!----D#;(H1EFFFBHTT4+%6%677;;===>>>BHTT4+%6%677;;===>>>

QG4444	5 	5r|   N)rx   ry   rz   r  r  r|  r1  r7  r:  rA  r  rL  rP  r  rT  rW  ra  rd  rg  ri  rm  rq  ry  r{  r  r  r  r  r  r  r  r{   r|   r;   r  r    s       B B B	9 	9 	9
- 
- 
-/C /C /Cb2 2 2B B B. . .7 7 7.4 4 4
< 
< 
<5 5 5H H H* * ** * *0K K K0' ' ' # # #G G G*
- 
- 
-K K K0	4 	4 	4< < <&+ + + 
= 
= 
=C C C& & &>4 4 4<5 5 5 5 5r|   r  c                   P    e 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S )	TestBPolyc                 h    ddg}dgg}t          ||          }t           |d          d           d S )Nr   rg   rR   rb  r   r   r   r3   r5   r"  r  s       r;   r  zTestBPoly.test_simple  s?    FSE1a[[3$$$$$r|   c                 l    ddg}dgdgg}t          ||          }t           |d          d           d S )Nr   rg   rR   rb  ggfffff@r  r  s       r;   test_simple2zTestBPoly.test_simple2  sC    FS1#J1a[[300000r|   c                 p    ddg}dgdgdgg}t          ||          }t           |d          d           d S )Nr   rg   rR   rS   rc  g433333@r  r  s       r;   test_simple3zTestBPoly.test_simple3  sR    FS1#sO1a[[39	; 	; 	; 	; 	;r|   c                 t    ddg}dgdgdgdgg}t          ||          }t           |d          d           d S )Nr   rg   r(   r  g:On?r  r  s       r;   test_simple4zTestBPoly.test_simple4  sY    FS1#sQC 1a[[3 "( 	) 	) 	) 	) 	)r|   c                 x    ddg}dgdgdgdgdgg}t          ||          }t           |d          d           d S )Nr   rg   r   r(   r  g	h"l@r  r  s       r;   test_simple5zTestBPoly.test_simple5  s]    FS1#sQC!%1a[[3 "( 	) 	) 	) 	) 	)r|   c                    g d}ddgddgddgg}t          ||d          }t           |d          d           t           |d	          d
           t           |dd          d           t           |d	d          d           d S )Nr   rg   rR   rR   r   r(   r  r  g333333@gHzG?g[(\?rg   r  r  r  s       r;   r  zTestBPoly.test_periodic  s    IIVaVaV$1aZ0003,,,4.1113

H---4[11111r|   c           	         t           j                            d           d}dD ]7}t          j        t           j                            dd|dz                       }t           j                            dd|dz   |f          }|d d d	                                         }t          ||d
          }t          |d d d d d	f         |d d d	         d
          }t           j                            ddd          }t           ||           ||          d           t           ||d           ||d          d           |                                }	|                                }
t           |	|           |
|          d           |	                                }|	                                }t           j                            ddd          D ]\  }}|
                    ||          }|
                    ||          }t          ||d           t           ||           ||          z
   ||           ||          z
  d           9d S )Nr   rR   r  r   rg   r  rb  r  rU   Tr  r*  r  r)  r  r   r  r  )rH   rI   rJ   r  r  rK   r   r   r  r  r  )r3   r  r  r5   r!  r&  r'  r  r(  r)  r*  r+  r,  rc   rd   r-  r.  s                    r;   r1  zTestBPoly.test_descending  sX   
	q 	, 	,A	))!RQ7788A""4EAIq>"BBBDDbDBr1$///Br!!!TTrT'{AdddG>>>BY&&sB44FBBvJJ6

????BBvqMM22fa==uEEEE==??D==??DDDLL$$v,,UCCCC
 $$&&D$$&&D	))#r6:: , ,1Q**Q**u59999Q$$q'' 14477TT!WW3D%*, , , , ,	,/	, 	,r|   c                 ^   t           j                            ddddd          }t          j        g d          }t	          ||          }t          |j        j        |j                   t          |j        j        |j                   t           |d          j        |j        dd                     t           |t           j                            dd                    j        d|j        dd          z              |	                                }t          |j        j        d	           d S )
NrL  r(   rg   rR   r  r  rT   r3  r4  )
rH   rI   r  rV   r   r   r5   r4  r"  r  )r3   r"  r5   r  r5  s        r;   r7  zTestBPoly.test_multi_shape  s    INN1aAq))H[[[!!!QKKQSY(((QSY(((QQsVV\17122;///QQry~~a**++117122;&	( 	( 	( \\^^RTZ11111r|   c                     ddg}dgdgdgg}t          ||          }d}|dz  }t           ||          dd|z
  z  d|z
  z  d|z  d|z
  z  z   d|z  |z  z              d S )Nr   r(   rR   rg   rS   rb  r  )r3   r5   r"  r  xvalrR  s         r;   test_interval_lengthzTestBPoly.test_interval_length  s    FS1#sO1a[[1H4!qs)QqS/E!GQqSM"AAE!G"KLLLLLr|   c                     g d}ddgddgddgg}t          ||          }t           |d          d           t           |d          d           d S )	Nr  rR   r   r(   r  gGzG?333333?r  r  r  s       r;   test_two_intervalszTestBPoly.test_two_intervals  sf    IIVaVaV$1a[[3---300000r|   c           	         ddg}dgdgdgg}t          ||          }dD ](}t          |||          }|                                }|du r}t          t          j         |d	d
g                                                               t          t          j         |d	d
g                                                               t          t          j         |d	d
g                                                                t          t          j         |d	d
g                                                                *d S )Nr   r(   rR   rg   rS   r  r  Fr  g @)r   r  r   rH   ro   rp   r  )r3   r5   r"  r  r   bp_ds         r;   r  zTestBPoly.test_extrapolate_attr  s>   FS1#sO1a[[. 	? 	?Kq!555B==??De##T3K115577888tSk!2!2337799::::BHRRs__5599;;;<<<BHTT4+%6%677;;===>>>>	? 	?r|   N)rx   ry   rz   r  r  r  r  r  r  r1  r7  r  r  r  r{   r|   r;   r  r    s        % % %1 1 1; ; ;) ) )) ) )
2 
2 
2 ,  ,  ,D2 2 2M M M1 1 1? ? ? ? ?r|   r  c                   P    e 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S )TestBPolyCalculusc                    g d}ddgddgddgg}t          ||          }|                                }t           |d          d           t           |d          d           t           |dd	
           |dd
           |dd
          gg d           t           |dd	
           |dd
           |dd
          gg d           d S )Nr  rR   r   r(   r  r  r  r  rg   r  )r  r   r   )r  r,   r   )r   r  r   )r3   r5   r"  r  bp_ders        r;   r  z!TestBPolyCalculus.test_derivative  s   IIVaVaV$1a[[sX...sS))) 	CA31rr#!}}}E,,,	. 	. 	.CA31rr#!}}}E$	& 	& 	& 	& 	&r|   c                 <   t           j                            d           d\  }}t          j        t           j                            |                    }t           j                            ||dz
  f          }t	          ||          }t          j        |          }t          |          D ]n}|                                }|                                }t          j	        |d         |d         d          }t           ||           ||                     od S NrB   rT   r   rg   r   rU   r?   )rH   rI   rJ   r  r   r   r  r5  r  r   r   )	r3   r  r  r5   r"  r  r  dr  s	            r;   test_derivative_ppolyz'TestBPolyCalculus.test_derivative_ppoly  s    
	t1GBI$$Q''((Ia1X&&1a[['++q 	, 	,ABBQqT1R5"--BBBrFFBBrFF++++		, 	,r|   c           	      $   t           j                            d           d\  }}t          j        t           j                            |                    }t           j                            ||dz
  f          }|                                |dz  fD ]|}t          ||          }t          j        |d         |d         d          }t          |          D ]8}t           |||           |	                    |          |                     9}d S )NrB   r  rg   rW  r   rU   r?   )
rH   rI   rJ   r  rK   r   r   r5  r   r  )	r3   r  r  r5   r"  ccr  r  r  s	            r;   test_deriv_inplacez$TestBPolyCalculus.test_deriv_inplace!  s   
	t1GBI$$Q''((Ia1X&& 6688Q\* 	A 	ABr1BQqT1R5"--B1XX A A2q		+;2==+;+;B+?+?@@@@A	A 	Ar|   c           
      $   g d}ddgddgg}t          ||          }|                                }t          j        ddd          }t	           ||          t          j        |dk     |dz  dz  d|z  |dz  dz
  z  d	z             d
d
           d S )Nr  r   rg   rR   r   r(   r-   r+   g      ?r  r   r   )r   r  rH   r   r   where)r3   r5   r"  r  bixxs         r;   ra  z,TestBPolyCalculus.test_antiderivative_simple.  s     IIVaV1a[[  [Ar""2aQ),rRUQY)?$)FH H"	0 	0 	0 	0 	0 	0r|   c                    t           j                            d           t          j        t           j                            d                    }t           j                            d          }t	          ||          }t          j        |d         |d         d          }t           |                                                                |           ||          dd           d S )	NrB   r   rS   r   r(   rR   r   rU   r)  r  r  )	rH   rI   rJ   r  r   r   r   r  r  r3   r5   r"  r  r  s        r;   test_der_antiderz"TestBPolyCalculus.test_der_antiderB  s    
	tGBI$$R(())I]++1a[[[1quc**8))++6688<<2U	8 	8 	8 	8 	8 	8r|   c                    t           j                            d           t          j        t           j                            d                    }t           j                            d          }t	          ||          }t          j        |          }t          j        |d         |d         d          }t           |	                    d          |           |	                    d          |          dd	           d S )
NrB   r   r  r   rU   r   r(   r  r  )
rH   rI   rJ   r  r   r   r  r   r   r  )r3   r5   r"  r  r  r  s         r;   test_antider_ppolyz$TestBPolyCalculus.test_antider_ppolyL  s    
	tGBI$$R(())I]++1a[['++[1qub)),))!,,R00,))!,,R00u5	J 	J 	J 	J 	J 	Jr|   c                    t           j                            d           t          j        t           j                            d                    }t           j                            d          }t	          ||                                          }|j        dd         }t           ||dz
             ||dz             dd           d S )	NrB   r   rS   r   rg   rU   r   r  r  )rH   rI   rJ   r  r   r  r5   r   r  s        r;   test_antider_continuousz)TestBPolyCalculus.test_antider_continuousX  s    
	tGBI$$R(())IW%%1a[[''))T!B$Z2:2:U	@ 	@ 	@ 	@ 	@ 	@r|   c                    t           j                            d           t          j        t           j                            d                    }t           j                            d          }t	          ||          }t          j        |          }t          |                    dd          |                    dd          dd           d S )NrB   r   r  r   rg   r  r  )	rH   rI   rJ   r  r   r   r  r   r  )r3   r5   r"  r  r  s        r;   rm  z TestBPolyCalculus.test_integrateb  s    
	tGBI$$R(())IW%%1a[['++Q**Q**U	D 	D 	D 	D 	D 	Dr|   c                 `   dgg}ddg}t          ||          }t          |                    dd          dd           t          ||d          }t          t	          j        |                    dd                               t          |                    ddd	          dd           d S )
Nrg   r   r(   r-   r   r   Fr  T)r   r   r  r   rH   ro   )r3   r"  r5   rd   b1s        r;   test_integrate_extrapz'TestBPolyCalculus.test_integrate_extrapk  s    SEF!QKK 	Aq))2E:::: 1aU+++a++,,---Qt<<buMMMMMMr|   c                    t          j        g d          }t          j        ddgddgddgddgg          }t          j        t	          ||          d          }|                                } |d	           |d
          z
  }t          |                    d
d	          |           t          |                    dd          |           t          |                    dd          d|z             t          |                    dd           |d           |d          z
             t          |                    dd           |d           |d
          z
   |d	          z    |d          z
             t          |                    dd           |d           |d
          z
   |d	          z    |d          z
             t          |                    dd           |d           |d
          z
   |d	          z    |d          z
  d	|z  z              t          |                    dd           |d           |d          z
             t          |                    dd           |d           |d          z
             t          |                    dd           |d           |d          z
  d|z  z
             d S rs  )rH   rV   r   r  r   r  r   r  rv  s         r;   ry  z)TestBPolyCalculus.test_integrate_periodicx  s   HYYYHr2hc
RIBx@AA"5A;;JGGGQqTTAAaDD[
Aq)):666C,,j999C,,a*n===C--qqvv#???C++QQqTTAAaDD[11Q44-?!!C&&-HIIIHf55!qqttaadd*QQsVV3	5 	5 	5C00!qqttaadd*QQsVV3a*nD	F 	F 	F 	Ar**AAaDD11Q44K888B,,aaddQQqTTk:::As++QQqTTAAaDD[1z>-IJJJJJr|   c                    dgg}ddg}t          ||          }t          j        ddd          }t           |                    d          |           |                                |          dd           t           |                    d          |           |                    d          |          dd           d S )Nrg   r   r?   rU   r  r  )r   rH   r   r   r  r  )r3   r"  r5   rd   r  s        r;   test_antider_negz"TestBPolyCalculus.test_antider_neg  s    SEF!QKK[Ar""(R((,,.@a.>.>.@.@.D.D"	0 	0 	0 	0Q++-AQ-=-=b-A-A"-E-E"	0 	0 	0 	0 	0 	0r|   N)rx   ry   rz   r  r  r  ra  r  r  r  rm  r  ry  r  r{   r|   r;   r  r    s        & & &, , ,A A A0 0 0(8 8 8
J 
J 
J@ @ @D D DN N NK K K00 0 0 0 0r|   r  c                   &    e Zd Zd Zd Zd Zd ZdS )TestPolyConversionsc                 $   g d}ddgddgddgg}t          ||          }t          j        |          }t          j        |          }ddg}t	           ||           ||                     t	           ||           ||                     d S )	Nr  rR   r(   rg   r   rS   rb  ffffff?)r   r   r  r  r   )r3   r5   r"  r  r  r  r  s          r;   test_bp_from_ppz#TestPolyConversions.test_bp_from_pp  s    IIVaVaV$1a[[#B''(,,3Z22'''2B(((((r|   c                 4   t           j                            d           d\  }}t          j        t           j                            |                    }t           j                            ||dz
  f          }t	          ||          }t          j        |          }t	          j        |          }t          j        |d         |d         d          }t           ||           ||                     t           ||           ||                     d S r  )
rH   rI   rJ   r  r   r   r  r  r   r   )	r3   r  r  r5   r"  r  r  r  r  s	            r;   test_bp_from_pp_randomz*TestPolyConversions.test_bp_from_pp_random  s    
	t1GBI$$Q''((Ia1X&&1a[[#B''(,,[1qub))22'''2B(((((r|   c                 $   g d}ddgddgddgg}t          ||          }t          j        |          }t          j        |          }ddg}t	           ||           ||                     t	           ||           ||                     d S )Nr  rR   rg   rS   r(   rb  r  )r   r   r  r  r   )r3   r5   r"  r  r  r  r  s          r;   test_pp_from_bpz#TestPolyConversions.test_pp_from_bp  s    IIVaVaV$1a[['++$R((3Z22'''2B(((((r|   c                 f   g d}ddgddgddgg}t          ||          }t          t                    5  t          j        |           d d d            n# 1 swxY w Y   t	          ||          }t          t                    5  t	          j        |           d d d            d S # 1 swxY w Y   d S )Nr  rR   rg   rS   r(   )r   rW   	TypeErrorr  r   r  )r3   r5   r"  r  r  s        r;   test_broken_conversionsz+TestPolyConversions.test_broken_conversions  s6   IIVaVaV$1a[[9%% 	+ 	+&r***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 1a[[9%% 	' 	'"2&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's#   AAAB&&B*-B*N)rx   ry   rz   r  r  r  r  r{   r|   r;   r  r    sP        	) 	) 	)) ) )	) 	) 	)
' 
' 
' 
' 
'r|   r  c                   n    e 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S )TestBPolyFromDerivativesc                 \    t          j        dddgdg          }t          |ddg           d S )Nr   rg   r(   rR   r-   r   r   _construct_from_derivativesr   )r3   r  s     r;   test_make_poly_1z)TestBPolyFromDerivatives.test_make_poly_1  s6    .q!aS1#>>RH%%%%%r|   c                    t          j        ddddgdg          }t          |g d           t          j        ddddgdg          }t          |g d           t          j        dddgddg          }t          |g d           d S )Nr   rg   )r,   r,   r,   r(   rR   )r-   r  r,   )r-   g      r,   r  r3   r  r  c3s       r;   test_make_poly_2z)TestBPolyFromDerivatives.test_make_poly_2  s    .q!aVaSAALLL))) .q!aVaSAANNN+++ .q!aS1a&AANNN+++++r|   c                    t          j        ddg ddg          }t          |g d           t          j        dddgg d          }t          |g d           t          j        ddddgdd	g          }t          |g d
           d S )Nr   rg   )rg   r(   rR   rS   )r,   竪?g@rD  )rS   r(   rR   )r,   gUUUUUU	@g
@rD  r(   rR   )r,   r  r   rD  r  r  s       r;   test_make_poly_3z)TestBPolyFromDerivatives.test_make_poly_3  s    .q!YYYDD111222 .q!aS)))DD222333 .q!aVaVDD.../////r|   c                    t           j                            d           t           j        dt           j                            d          f         }t           j        dt           j                            d          f         }t	          j        dd||          }t	          |d d d f         ddg          }t          d          D ]H}t           |d           |d          g||         ||         g           |                                }Id S )Nr  r   rT   rg   rL  r   r,   )	rH   rI   rJ   r!  r   r  r5  r   r  )r3   yaybr"  r  r  s         r;   test_make_poly_12z*TestBPolyFromDerivatives.test_make_poly_12  s    
	uU1bi&&q)))*U1bi&&q)))*-aB;;1QQQW:1v&&q 	! 	!ARRVVRRVV,r!uben===BB	! 	!r|   c                 x   t           j                            d           ddg}d\  }}t           j                            |ddddf          }t          ||          }t          j        ||          }t          ||          }t          j        ddd          }t           ||           ||                     d S )	Nr  r   rg   )r   rT   r(   rR   rS   r   )rH   rI   rJ   r   _raise_degreer   r   )	r3   r5   r  r  r"  r  r  r  r  s	            r;   test_raise_degreez*TestBPolyFromDerivatives.test_raise_degree  s    
	uF1IaAq!_--1a[[ A&&Bll[Ar""2B(((((r|   c                 N    t          t          t          j        ddgdg           d S )Nr   rg   rW   rX   r   r  r   s    r;   
test_xi_yiz#TestBPolyFromDerivatives.test_xi_yi  s%    j%"81a&1#FFFFFr|   c                 `    g d}dgdgdgg}t          t          t          j        ||           d S )Nr   r   rg   r   r  )r3   rZ  r#  s      r;   test_coords_orderz*TestBPolyFromDerivatives.test_coords_order  s9    YYcA3_j%"8"bAAAAAr|   c                 
   g d}ddgdgddgddgg}t          j        ||          }t          |j        j        dk               |                                }dD ](}t           ||           ||          gddg           )d S )Nr  r   )rS   rR   )r   rb  r,   r  gffffff?r-   r`   r   )r   r  r   r"  r4  r  r   )r3   rZ  r#  r  ppdr  s         r;   
test_zerosz#TestBPolyFromDerivatives.test_zeros  s    \\!fqcAq6Aq6*#B++
f$%%%mmoo2 	9 	9BRRVVSSWW-Bx8888	9 	9r|   c                     t           j                            d           t          j        d t	          |dz             D                       }fdt	          |dz             D             }||fS )NrB   c                     g | ]
}d |dz  z  S )r,   r(   r{   )r1  r  s     r;   
<listcomp>z<TestBPolyFromDerivatives._make_random_mk.<locals>.<listcomp>  s     777qad777r|   rg   c                 N    g | ]!}t           j                                      "S r{   )rH   rI   )r1  r  r  s     r;   r  z<TestBPolyFromDerivatives._make_random_mk.<locals>.<listcomp>  s)    666abiq!!666r|   )rH   rI   rJ   ro  r5  r3   r  r  rZ  r#  s     `  r;   _make_random_mkz(TestBPolyFromDerivatives._make_random_mk  sk    
	tZ77E!A#JJ77788666651::6662vr|   c                 
   d\  }}|                      ||          \  }}t          j        ||          }t          |dz            D ];t	           ||          fd|D                        |                                }<d S )NrT   r   r(   c                      g | ]
}|         S r{   r{   )r1  yyr  s     r;   r  z;TestBPolyFromDerivatives.test_random_12.<locals>.<listcomp>$  s    $<$<$<2RY$<$<$<r|   )r  r   r  r5  r   r  )r3   r  r  rZ  r#  r  r  s         @r;   test_random_12z'TestBPolyFromDerivatives.test_random_12  s    1%%a++B#B++1a4[[ 	! 	!EBBrFF$<$<$<$<$<$<$<===BB	! 	!r|   c           	          d\  }}|                      ||          \  }}t          t          t          j        fi t          ||d           d S )Nr  r   rZ  r#  orders)r  rW   rX   r   r  r   r  s        r;   test_order_zeroz(TestBPolyFromDerivatives.test_order_zero'  sc    1%%a++Bj%"8 	0 	0"A...	0 	0 	0 	0 	0r|   c           
          d\  }}|                      ||          \  }}t          j        ||d|z  dz
             t          t          t          j        fi t          ||d|z             d S )Nr  r(   rg   r  r  )r  r   r  rW   rX   r   r  s        r;   test_orders_too_highz-TestBPolyFromDerivatives.test_orders_too_high-  s    1%%a++Br2ac!e4444j%"8 	2 	2"AaC000	2 	2 	2 	2 	2r|   c           
      \   d\  }}|                      ||          \  }}d}t          j        |||          }t          |dz  dz             D ]N}t	           ||dd         dz
             ||dd         dz                        |                                }Ot          t          j         ||dd         dz
             ||dd         dz                                   d}t          j        |||          }t          |dz            D ]N}t	           ||dd         dz
             ||dd         dz                        |                                }Ot          t          j         ||dd         dz
             ||dd         dz                                   d S )	Nr  rT   r  r(   rg   rU   r  rL  )	r  r   r  r5  r   r  r   rH   allclose)r3   r  r  rZ  r#  r  r  r  s           r;   test_orders_globalz+TestBPolyFromDerivatives.test_orders_global5  s   1%%a++B #B5999uaxz"" 	! 	!ABBr!B$x%/00""R"X5E2F2FGGGBBBK2ad8e#3 4 4bbAbDE9I6J6JKKKLLL
 #B5999uax 	! 	!ABBr!B$x%/00""R"X5E2F2FGGGBBBK2ad8e#3 4 4bbAbDE9I6J6JKKKLLLLLr|   c           
         d\  }}|                      ||          \  }}d t          |          D             }t          |dd                   D ]\  }}t          j        |||          }t          ||         dz  dz             D ]>}	t           ||dz
             ||dz                        |                                }?t          t          j	         ||dz
             ||dz                                   d S )N)rh   r   c                     g | ]}|d z   S )rg   r{   )r1  os     r;   r  z>TestBPolyFromDerivatives.test_orders_local.<locals>.<listcomp>Q  s    ***A!a%***r|   rg   rU   r  r(   r  )
r  r5  rO  r   r  r   r  r   rH   r   )
r3   r  r  rZ  r#  r  r  r5   r  r  s
             r;   test_orders_localz*TestBPolyFromDerivatives.test_orders_localM  s   1%%a++B**q***b2h'' 	C 	CDAq'Bv>>>B6!9>A-.. % %1u9rr!e)}}===]]__BBq5yMM22a%i==AAABBBB	C 	Cr|   c                 4   d\  }}t          j        t           j                            |dz                       }t           j                            |dz   |dddf          }t          j        ||          }t          |j        j        d|z  |dddf           d S )N)rh   rT   rg   rL  rh   r   r(   )rH   r  rI   r   r  r   r"  r4  )r3   r  r  rZ  r#  r  s         r;   test_yi_trailing_dimsz.TestBPolyFromDerivatives.test_yi_trailing_dimsY  s    1WRY%%ac**++YqsAq!Q/00#B++RTZ!A#q!Q!233333r|   c                    t          j        d          }t          j        ddgdgdgg|          }t	           |d          d           t          j        d          }t          j        ddgdgdgg|          }t	           |d          d           d}t          j        ddgdgdgg|          }t	           |d          d           d}d S )Nrg   r   r  )rH   int32r   r  r   int64)r3   r  r  s      r;   test_gh_5430z%TestBPolyFromDerivatives.test_gh_5430`  s    
 !"Aq6QC!:fEEEAAaDD!$$$!"Aq6QC!:fEEEAAaDD!$$$"Aq6QC!:fEEEAAaDD!$$$r|   N)rx   ry   rz   r  r  r  r   r  r  r	  r  r  r  r  r  r!  r%  r'  r+  r{   r|   r;   r  r    s       & & &
, 
, 
,0 0 0	! 	! 	!) ) )G G GB B B
9 9 9  ! ! !0 0 02 2 2M M M0
C 
C 
C4 4 4    r|   r  c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )TestNdPPolyc                    t           j                            d           t           j                            dd          }t          j        ddd          }t           j                            d          }t          ||f          } ||f          }t          |d d d d d f         ||                                          }t          ||           d S )NrB   rS   rT   r   rg   rL  r+  )	rH   rI   rJ   r  r   r   r>  r2   r   )r3   r"  r5   rZ  r  v1v2s          r;   test_simple_1dzTestNdPPoly.test_simple_1ds  s    
	tINN1a  K1c""Y^^C  AtQuXX1QQQqqqX;2..4466Br|   c           
      @   t           j                            d           t           j                            dddd          }t          j        ddd          }t          j        ddd          d	z  }t           j                            d
          }t           j                            d
          }t          j        t          |          dg|j                  }|                    t           j	                   t          j        |                    ddd          ||ft          j        ddgt           j                  t           j        ||f         t          j        ddgt           j                  d|           |                                }t#          |||f||          }t%          ||           t'          |||f          }dD ]V}	 |t           j        ||f         |	          }t#          |||f|||	          }t%          ||t)          |	                     Wd S )NrB   rS   rT   rL  rh   r   rg   r   r(   r+  r   r  *   )Nr   r   r   rg   )rg   r   )r(   rR   )r   r(   r  rM  )rH   rI   rJ   r  r   r  r  r   fillrn   r    evaluate_ndr   rV   intcc_r2   _ppoly2d_evalr   r   r  )
r3   r"  r5   r4   rZ  r#  r/  r0  r  r  s
             r;   test_simple_2dzTestNdPPoly.test_simple_2d  s   
	tINN1aA&&K1c""K1c""A%Y^^C  Y^^C  Xs2wwl!'222
199S#q11q68QF"':::5R=8QF"':::	 	 	 XXZZ1q!fb"--BA1v@ 	6 	6B25R=R(((Bq1a&"bR888BBDHH55555	6 	6r|   c           	         t           j                            d           t           j                            dddddd          }t          j        dd	d          }t          j        dd	d          d
z  }t          j        dd	d          dz  }t           j                            d          }t           j                            d          }t           j                            d          }t          ||||f          }dD ]I}	 ||||f|	          }
t          ||||f||||	          }t          |
|t          |	                     Jd S )NrB   rS   rT   rL  rh   r   r   r   rg   r(   r   rR   (   )Nr   r   r   r   rg   r   rg   r   r   )r(   rR   r   )rL  r   r(   r  rM  )	rH   rI   rJ   r  r   r   _ppoly3d_evalr   r  )r3   r"  r5   r4   r6   rZ  r#  zir  r  r/  r0  s               r;   test_simple_3dzTestNdPPoly.test_simple_3d  s7   
	tINN1aAq!,,K1c""K1c""A%K1c""A%Y^^BY^^BY^^BA1ay!! 	6 	6BBB<B'''Bq1a)RRB???BBDHH55555		6 	6r|   c           
         t           j                            d           t           j                            dddddddd	          }t          j        d
dd          }t          j        d
dd          dz  }t          j        d
dd	          dz  }t          j        d
dd          dz  }t           j                            d          }t           j                            d          }t           j                            d          }t           j                            d          }	t          |||||f          }
 |
||||	f          }t          |||||f||||	          }t          ||           d S )NrB   rS   rT   rL  rh   r   r   r   r   r   rg   r(   rR   r   r  )rH   rI   rJ   r  r   r   _ppoly4d_evalr   )r3   r"  r5   r4   r6   r:   rZ  r#  rB  uir  r/  r0  s                r;   test_simple_4dzTestNdPPoly.test_simple_4d  sB   
	tINN1aAq!R44K1c""K1c""A%K1d##Q&K1d##Q&Y^^BY^^BY^^BY^^BA1a|$$QBB  1q!QlBB;;Br|   c                 (   t           j                            d           t           j                            dd          }t          j        ddd          }t          ||f          }|                    dg          }t          ||          }|                                }t          |j	        |j	                   |
                    dg          }t          ||          }|
                    d          }t          |j	        |j	                   d S )	NrB   rS   rT   r   rg   rL  r  r(   )rH   rI   rJ   r  r   r   r  r   r   r"  r  )r3   r"  r5   r  r5  r  dp1s          r;   test_deriv_1dzTestNdPPoly.test_deriv_1d  s    
	tINN1a  K1c""At \\aS\!!1a[[mmooce$$$ !%%1a[[""ce$$$$$r|   c                 j   t           j                            d           t           j                            dddddd          }t          j        dd	d          }t          j        dd	d          d
z  }t          j        dd	d          dz  }t          ||||f          }t          |                    ddd	d
dd          |          }|                    d
g          }|                    d
          }t          |j
        |j
                            dd
dd	dd                     t          |                    d	ddd
dd          |          }|                    g d          }|                    d	          }t          |j
        |j
                            d
dddd	d                     t          |                    d
ddd	dd          |          }|                    g d          }|                    d          }t          |j
        |j
                            d
ddddd	                     d S )NrB   rS   rT   rL  rh   r   r   r   rg   r(   r   rR   r  r?  )r   r   rR   )rH   rI   rJ   r  r   r   r   	transposer  r   r"  r  )	r3   r"  r5   r4   r6   r  r  r5  rI  s	            r;   test_deriv_3dzTestNdPPoly.test_deriv_3d  s   
	tINN1aAq!,,K1c""K1c""A%K1c""A%A1ay!! 1;;q!Q1a00!44\\aS\!!mmA1aAq99	; 	; 	; 1;;q!Q1a00!44++""1aAq99	; 	; 	; 1;;q!Q1a00!44\\YYY\''mmA1aAq99	; 	; 	; 	; 	;r|   c                    t          j        d          }t          j        ddd          dz  }t          j        ddd          dz  }t          j        ddd          dz  }t          ||||f          }|                    d	          }|                    d
          }t           j                            d          }t           j                            d          }t           j                            d          }	t           ||||	f          ||dz  z  |	dz  z  t          d          t          d          z  z             d S )N)rg   rg   rg   rR   rS   rT   r   rg   rS   rT   r(   rL  rR   )rg   r   rS   )r   r(   r   r  )	rH   r   r   r   r  rI   r  r   r   )
r3   r"  r5   r4   r6   r  r6  rZ  r#  rB  s
             r;   test_deriv_3d_simplez TestNdPPoly.test_deriv_3d_simple  s-    G&''K1c""A%K1c""A%K1c""A%A1ay!!i((y))Y^^BY^^BY^^BBB<((RU
RU*eAhhuQxx.?@	B 	B 	B 	B 	Br|   c           
        	 t           j                            d           t           j                            dddd          }t          j        ddd          dz  }t          j        ddd          d	z  }|                    dd	dd
          }|                    |j        d         |j        d         d                                          }t          j
        ||d	           |                    |j                  }|                    dd	dd
          }|                    dd
dd	          }|                    |j        d         |j        d         d                                          }t          j
        ||d	           |                    |j                  }|                    d	dd
d                                          }t          |||f          	ddgddgddgddgfD ]c}	                    |          }t          	fd|t          dd          gd	z            \  }}t          ||ddt!          |                     dd S )NrB   rS   rT   r>   ru  r   rg   r   r(   rR   rU   r5  )r   r+   )r  r  )r=  rc  c                      | |f          S r0  r{   )r5   r4   r  s     r;   <lambda>z/TestNdPPoly.test_integrate_2d.<locals>.<lambda>(	  s    11aV99 r|   gh㈵>)epsrelepsabs)r   )r   r   r   )rH   rI   rJ   r  r   rL  r   r4  rK   r    fix_continuityr   r  r#   r   r   r  )
r3   r"  r5   r4   cxrangesrl  ig2err2r  s
            @r;   test_integrate_2dzTestNdPPoly.test_integrate_2d	  sE   
	tINN1aR((K1d##Q&K1d##Q& KK1a##YYqwqz171:r227799b!Q'''JJqwKK1a##KK1a##YYqwqz171:r227799b!Q'''JJqwKK1a##((** A1v' &))"J/1 		2 		2F
 V$$B4444f$(T$B$B$B#CA#EG G GICB$T$(LL2 2 2 2 2		2 		2r|   c           	          t           j                            d           t           j                            dddddd          }t          j        dd	d          d	z  }t          j        dd	d          d
z  }t          j        dd	d          dz  }t          ||||f          }t           j                            d          }t           j                            d          }d\  }}	|                    ||	d          }
|                    d          }t           |
||f           ||	||f           ||||f          z
             |                    ||	d	          }|                    d          }t           |||f           |||	|f           ||||f          z
             |                    ||	d
          }|                    d          }t           |||f           ||||	f           ||||f          z
             d S )NrB   rS   rT   rL  r>   ru  r   r   rg   r(   r   rR   r+  )rc  r  r   r@  r?  r  )	rH   rI   rJ   r  r   r   integrate_1dr  r   )r3   r"  r5   r4   r6   r  r:   r9   rc   rd   pxpaxpypaypzpazs                   r;   test_integrate_1dzTestNdPPoly.test_integrate_1d-	  s   
	tINN1aBB//K1d##Q&K1d##Q&K1d##Q& A1ay!!INN3INN31^^Aqq^))y))Aq6

CCAq	NNSS!Q^^$CDDD^^Aqq^))y))Aq6

CCAq	NNSS!Q^^$CDDD^^Aqq^))y))Aq6

CCAq	NNSS!Q^^$CDDDDDr|   N)rx   ry   rz   r1  r;  rC  rG  rJ  rM  rO  rZ  rc  r{   r|   r;   r-  r-  r  s             6 6 6:6 6 6(     (% % %(; ; ;>B B B&2 2 2BE E E E Er|   r-  c                     t          j        t          |           j        d         f          }t	          |          D ]\  }}|dk     s|dk    rt           j        ||ddf<   %t          j        ||          dz
  ||         z
  t          |         |cxk    o|dz            k     nc            t           fdt           j        d                   D                       }|||ddf<   |S )z&Evaluate piecewise polynomial manuallyr(   r   rg   Nc              3   Z   K   | ]%}|f         j         d          |z
  dz
  z  z  V  &dS )r   rg   N)r4  )r1  r  r"  r  r  s     r;   r2  z _ppoly_eval_1.<locals>.<genexpr>R	  sW       , , !A#QWQZ\!^,, , , , , , ,r|   )
rH   ra   r  r4  rO  rn   searchsortedr   sumr5  )	r"  r5   xpsrr  r  r  rc  r  r  s	   `      @@r;   r>  r>  H	  s#   
(CHHagaj)
*
*C3 	 	266R!VVvC!!!HOAr""Q&1I!####QqsV####$$$ , , , , , ,qwqz**, , , , ,AaaaCJr|   c                 t   |d         }|d         }| j         d         }t          j         |          }t          j        |          }t          j        |          }||k    ||k    z  }	|||	 <   |                    |	          }
t          j        ||
          dz
                      dt          |                    | |
|                              z
  }t          j	        ||          t          j
        fdt          t          |
                    D                       }|||	<   ||_         |S )z4Evaluate piecewise polynomial manually (another way)r   rU   rg   )Nc           	      n    g | ]1}t          j        |d d f         d d |         f                   2S r0  )rH   r  )r1  r  Vindxsr  s     r;   r  z!_ppoly_eval_2.<locals>.<listcomp>i	  sA    PPPArva111gr!!!U1X+77PPPr|   )r4  rH   r2   
empty_likecompressrf  clipr  takevanderrV   r5  )r  breaksr   r6  rc   rd   K	saveshaper  maskr  r  valuesrl  rm  r  s                @@@r;   r?  r?  X	  s"   q	Ar
AQAI8D>>D
-

CAI$!)$DCJ	t		BOFB'')EJJq#f++&&E	BE"""D
	$!AXPPPPPPs2wwPPPQQFCICIJr|   c                 z    |dk     rt          d          ||k    rdS t          ||z
  dz   |          | ||z
  z  z  S )z
    d^n (x**y) / dx^n
    r   zinvalid derivative orderrg   )rX   r   )r5   r4   rQ  s      r;   _dpowry  o	  sO     	1uu3444	
QqAEAIq!!AAJ..r|   c                 f   |d}t          j        t          |          f| j                  }| j        dd         \  }}t          t          ||                    D ]R\  }\  }	}
|d         d         |	cxk    r|d         d         k    r*n n'|d         d         |
cxk    r|d         d         k    sn t           j        ||<   ht          j        |d         |	          dz
  }t          j        |d         |
          dz
  }|	|d         |         z
  }|
|d         |         z
  }d}t          | j        d                   D ]j}t          | j        d                   D ]M}|| ||z
  dz
  ||z
  dz
  ||f         t          |||d                   z  t          |||d                   z  z  }Nk|||<   T|S )z@
    Straightforward evaluation of 2-D piecewise polynomial
    Nr4  r   r(   r   rU   rg   rH   r  r  r   r4  rO  ziprn   rf  r5  ry  )r"  r  r   ynewr  rr  nxnyjoutr5   r4   j1j2s1s2r  k1k2s                     r;   r:  r:  {	  s    
z
(CII<qw
/
/
/CWRaR[FB!#dD//22  fq!AqQ++++"Q%)+++++AqQ++++"Q%)++++CI_RUA&&*_RUA&&*Ar]Ar]
## 	0 	0BAGAJ'' 0 0"R%'"R%'"R/0B1../B1../ 00
 D		Jr|   c                    |d}t          j        t          |          f| j                  }| j        dd         \  }}}	t          t          |||                    D ]\  }
\  }}}|d         d         |cxk    r|d         d         k    rRn nO|d         d         |cxk    r|d         d         k    r*n n'|d         d         |cxk    r|d         d         k    sn t           j        ||
<   t          j        |d         |          dz
  }t          j        |d         |          dz
  }t          j        |d         |          dz
  }||d         |         z
  }||d         |         z
  }||d         |         z
  }d}t          | j        d                   D ]}t          | j        d                   D ]}t          | j        d                   D ]m}|| ||z
  dz
  ||z
  dz
  |	|z
  dz
  |||f         t          |||d                   z  t          |||d                   z  t          |||d                   z  z  }n|||
<   |S )	z@
    Straightforward evaluation of 3-D piecewise polynomial
    Nr>  r   rR   r   rU   rg   r(   r{  )r"  r  r   r}  znewr  rr  r~  r  nzr  r5   r4   r6   r  r  j3r  r  s3r  r  r  k3s                           r;   rA  rA  	  s    
z
(CII<qw
/
/
/C!JBB$StT%:%:;;  iq!QAqQ++++"Q%)+++++AqQ++++"Q%)+++++AqQ++++"Q%)++++CI_RUA&&*_RUA&&*_RUA&&*Ar]Ar]Ar]
## 	4 	4BAGAJ'' 4 4
++ 4 4BAbeAgbeAgbeAgbB>?#BBqE223#BBqE223 $BBqE223 4CC44 D		Jr|   c                    |d}t          j        t          |          f| j                  }| j        dd         \  }}	}
}t          t          ||||                    D ]|\  }\  }}}}|d         d         |cxk    r|d         d         k    rzn nw|d         d         |cxk    r|d         d         k    rRn nO|d         d         |cxk    r|d         d         k    r*n n'|d	         d         |cxk    r|d	         d         k    sn t           j        ||<   t          j        |d         |          dz
  }t          j        |d         |          dz
  }t          j        |d         |          dz
  }t          j        |d	         |          dz
  }||d         |         z
  }||d         |         z
  }||d         |         z
  }||d	         |         z
  }d}t          | j        d                   D ]}t          | j        d                   D ]}t          | j        d                   D ]}t          | j        d	                   D ]}|| ||z
  dz
  |	|z
  dz
  |
|z
  dz
  ||z
  dz
  ||||f         t          |||d                   z  t          |||d                   z  t          |||d                   z  t          |||d	                   z  z  }Ȍ|||<   ~|S )
z@
    Straightforward evaluation of 4-D piecewise polynomial
    N)r   r   r   r   r   rS   r   rU   rg   r(   rR   r{  )r"  r  r   r}  r  unewr  rr  ru   rv   mzmur  r5   r4   r6   r:   r  r  r  j4r  r  r  s4r  r  r  r  k4s                                 r;   rE  rE  	  s6    
z
(CII<qw
/
/
/CWRaR[NBB'D$d(C(CDD  lq!QAqQ++++"Q%)+++++AqQ++++"Q%)+++++AqQ++++"Q%)+++++AqQ++++"Q%)++++CI_RUA&&*_RUA&&*_RUA&&*_RUA&&*Ar]Ar]Ar]Ar]
## 	8 	8BAGAJ'' 8 8
++ 8 8B#AGAJ// 8 8"R%'"R%'"R%'"R%'"R2"M N"'B1"6"6!7"'B1"6"6!7 #(B1"6"6!7 #(B1"6"6	!7 8888 D		Jr|   r0  )>numpy.testingr   r   r   r   r   r   r	   r  r
   rW   numpyr   r   r   r   r   r   rH   scipy.interpolater   r   r   r   r   r   r   r   r   r   r   r   r   scipy.specialr   r   r    scipy._lib._gcutilsr!   r"   scipy.integrater#   r$   r&   r~   r  r  r  r  r  r  r  r  r  r-  r>  rn   r?  ry  r:  rA  rE  r{   r|   r;   <module>r     sz  ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? + * * * * *  9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9                                  & % % % % % % % $ $ $ $ $ $ ; ; ; ; ; ; ; ; ! ! ! ! ! !      \; \; \; \; \; \; \; \;~Q Q Q Q Q Q Q Qh6 6 6 6 6 6 6 6G" G" G" G" G" G" G" G"TJL JL JL JL JL JL JL JLZ,+ ,+ ,+ ,+ ,+ ,+ ,+ ,+^b5 b5 b5 b5 b5 b5 b5 b5J? ? ? ? ? ? ? ?DX0 X0 X0 X0 X0 X0 X0 X0v.' .' .' .' .' .' .' .'b` ` ` ` ` ` ` `FSE SE SE SE SE SE SE SEl    .0V    .	/ 	/ 	/! ! ! !H% % % %P* * * * * *r|   