
    _Mh}                       d dl 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 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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' d dlm(Z(  G d d          Z) G d d          Z* G d d          Z+ G d d          Z,ej-        .                    deeg          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#          Z6 G d$ d%          Z7d& Z8ej9        fd'Z:d( Z;d,d)Z<d,d*Z=d,d+Z>dS )-    )xp_assert_equalxp_assert_closeassert_almost_equalassert_array_almost_equal)raisesN)mgridpisinpoly1d)interp1dinterp2dlagrangePPolyBPolysplrepsplev
splantidersplintsprootAkima1DInterpolatorNdPPolyBSplinePchipInterpolator)pochgamma)_ppoly)assert_deallocatedIS_PYPY)_run_concurrent_barrier)nquad)binomc                       e Zd Zd ZdS )TestInterp2Dc                     t           ddddt          df         \  }}t          |d|z  z             }t          t                    5  t          |||           d d d            d S # 1 swxY w Y   d S )Nr      y              4@y              5@      ?)r   r	   r
   assert_raisesNotImplementedErrorr   )selfyxzs       h/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/interpolate/tests/test_interpolate.pytest_interp2dzTestInterp2D.test_interp2d   s    QqWa3h&'1#a%LL.// 	 	Q1	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A&&A*-A*N)__name__
__module____qualname__r.        r-   r#   r#      s#            r3   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%             @        g      4@r%   
   )r=   r%   )r%   r%   r9   g      >@)r%      r9   )r>   r%   r9      r         Y)nparangex5x10y10reshapex25x2y2arrayx1y1y210y102y225y25y235y325y210_edge_updatedy102_edge_updated
fill_valuer)   s    r-   setup_methodzTestInterp1D.setup_method$   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% r3   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zerolinearslinear	quadraticcubicpreviousnextkindextrapolatere   rW   r^   )rA      rA   )rA   )rA   rA   r   rh   r%   r>   re   axisrW   r=   rj   )rA   rA   rA   r2   r;   )r   rF   rG   rC   rL   rO   rJ   onesr'   
ValueErrorrI   rK   rP   rM   rN   r)   re   s     r-   test_validationzTestInterp1D.test_validationM   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 	9r3   c                 &   t          | j        | j                  j        sJ t          | j        | j        d          j        rJ t          | j        | j                  j        sJ t          | j        | j        d          j        rJ t          j        t          | j        | j                  j                  sJ t          | j        | j        d          j        dk    sJ t          | j        | j        d          j        dk    sJ t          | j        | j                  j        dk    sJ t          | j        | j	                  j        dk    sJ t          | j        | j
        d	          j        dk    sJ t          t          | j        | j                  j        | j                   t          t          | j        | j                  j        | j                   t          t          | j        | j	                  j        | j	                   d S )
NF)copy)bounds_error      @rW   )      ?r:   r   rh   rk   )r   rF   rG   rq   rr   rC   isnanrW   rj   rO   rP   r   r+   r*   rX   s    r-   	test_initzTestInterp1D.test_init   s    $(++0000DHdhU;;;@@@@$(++8888DHdhUCCCPPPPx4844?@@@@@$(s;;;F#MMMM48
CCCN    $(++0A5555$),,1Q6666$)!4449Q>>>>48446AAA48446AAA49557CCCCCr3   c                    t          | j        | j                  }t          | j        d d d         | j        d d d                   }t           || j                  | j                   t           |d          t	          j        d                     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 )NrA   333333?g333333@gffffff@      @F)assume_sortedT)	r   rF   rG   r   rC   rL   r'   rm   rO   )r)   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"(3--HHH!"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r3   c                 :    dD ]}|                      |           d S )N)r^   r_   )_check_linearrn   s     r-   test_linearzTestInterp1D.test_linear   s2    ) 	% 	%Dt$$$$	% 	%r3   c                 @   t          | j        | j        |          }t           || j                  | j                   t           |d          t	          j        d                     t           |g d          t	          j        g d                     t          | j        | j        |d          }t           |g d          t	          j        g d          d           t          |dd	
          }t          t          t           | j        | j        fi | d S )Nrd   ry   rz   rf   rg         r   	      +=rtolTre   rW   rr   )r   rF   rG   r   rC   rL   r   asarraydictr'   rm   )r)   re   r}   extrapolatoroptss        r-   r   zTestInterp1D._check_linear   s5   DHdhT:::!((48"4"4dh???!((3--#???!((???";";"$(???";";	= 	= 	=  $(+8: : :___55
#3#3#3445	B 	B 	B 	B ,!%' ' ' 	j(DHdhGG$GGGGGr3   c                    t           j        t           j        t           j        t           j        fD ]T}t          j        d|          }|} t          ||d          |          }|j        |k    sJ t          ||d           Ug d}t           j	        dd	g} t          ||          |          }t          ||d           d S )
N   dtyper^   rd   V瞯<atolr   rh   r%   r   rh   )
rC   float16float32float64
longdoublerD   r   r   r   nan)r)   dtypr+   r*   yps        r-   test_linear_dtypeszTestInterp1D.test_linear_dtypes   s     ZZZ]$ 	/ 	/D 	!4(((AA.!QX...q11B8t####B..... IIVQNXa^^AAE******r3   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 ]T}|                    |          }	|D ]:}
t          |||
d          }t           ||	          |dd| d	| d
|            ;Ud S )N)r_   r]   r`   ra   r   r=   r   rs   Fre   rr   Hz>z,  )r   check_dtypeerr_msg)rC   r   r   r   	complex64
complex128rD   expastyper   r   )r)   dt_rdt_rcspline_kindsdtxr+   dtyr*   dtnxnewre   fs               r-   test_slinear_dtypesz TestInterp1D.test_slinear_dtypes   s=    
BJ
3bm44@@@ 
	G 
	GC	!Rs+++A G GFA2c6NN))#.. G GC88C==D , G G$Q5III'$49360E0E#0E0E0E0EG G G G GGGG
	G 
	Gr3   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 )Nra   rd   ry         ?rz   r   rF   rG   r   rC   rL   r)   r}   s     r-   
test_cubiczTestInterp1D.test_cubic   s    DHdhW===!((48"4"4dh???!((3--#???!((3--#???!((???";";"$(???";";	> 	> 	> 	> 	>r3   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   ry   ru   r   rz   r:   r{   r{   rf   rg   r   r;   r   r   r   r   r   Tr   
r   rF   rG   r   rC   rL   r   r   r'   rm   r)   r}   r   r   s       r-   test_nearestzTestInterp1D.test_nearest  sF    DHdhY???!((48"4"4dh???!((3--">>>!((3--">>>!((???";";"$(<<<"8"8	; 	; 	;  $(+8: : :___55&U	4 	4 	4 	4 ,!%' ' ' 	j(DHdhGG$GGGGGr3   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   ry   ru   r   r:   rz   r   rf   rg   r   r   r   r   Tr   r   r   s       r-   test_nearest_upzTestInterp1D.test_nearest_up  sF    DHdh\BBB!((48"4"4dh???!((3--">>>!((3--">>>!((???";";"$(<<<"8"8	; 	; 	;  $(+8: : :___55&U	4 	4 	4 	4 ,!%' ' ' 	j(DHdhGG$GGGGGr3   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 )%Nrb   rd   ry   ru   r   rz   r:   r7   r{   rf   rg   r   r   r   r   r   rA   r9   r         r9   r            ri   r   r9   r   r=   r   Tr   r   r   rh   rA   re   rW   r|   r   rA   r   rh   r%   r>   r9   rh   rA   r%   r   rh   rA   r   rh   Fr@   r   rF   rG   r   rC   rL   r   r   rO   rP   r   r'   rm   rU   rV   r)   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%	& 	& 	& 	& 	&r3   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 )$Nrc   rd   ry   r:   r   rz   )rs   r{   r{   rf   rg   r   r   r   r   r   r   r9   r   r=   r   r   ri   r   rh   r   Tr   r   r   r   r   rA   r   r   Fr?   r   r   s          r-   	test_nextzTestInterp1D.test_nextt  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&"&)+	, 	, 	, 	, 	,r3   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   ry   ru   r   rz   r   r   r   s     r-   	test_zerozTestInterp1D.test_zero  s    DHdhV<<<!((48"4"4dh???!((3--">>>!((3--">>>!((???";";"$(<<<"8"8	: 	: 	: 	: 	:r3   c                     t          t          ||           	  ||           d S # t          $ r}| t          |          v sJ Y d }~d S d }~ww xY wN)r'   rm   str)r)   interpolant
test_array
fail_valueerrs        r-   bounds_check_helperz TestInterp1D.bounds_check_helper  s{     	j+z:::	1K
##### 	1 	1 	1!Os3xx//////////	1s   % 
AA		Ar^   c                 4   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                  d           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)rW   rr   re   gffffff&@g333333g333333)@gL3@)check_shape)r   r;   r7         "@      &@)TFFFF)FFFFTT)rr   re   r   r   )r;   r   r;   )r;   ru         5@r   )r;   r7   r   )	r   rF   rG   rW   r   rC   rL   _check_boundsr   )r)   re   extrap10raises_bounds_errors       r-   _bounds_checkzTestInterp1D._bounds_check  s   DHdh4?).T; ; ; 	(A(ABBB(A(ABBBD6D6D6D6"B!CDD8DO44%	I 	I 	I 	I..!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,,,,,r3   c                    t          j        d                              t                    }t          j        d                              t                    }t	          |||t           j        d          } ||dz
            }t          j        |d                   sJ t          |t           j        t           j        |d d         f                    d S )Nr=   Fr   rh   r   rA   )	rC   rD   r   intr   r   rv   r   r_)r)   re   r+   r*   cyis         r-   _bounds_check_int_nan_fillz'TestInterp1D._bounds_check_int_nan_fill  s    IbMM  %%IbMM  %%QeLLLQq1uXXx1!"beBFAcrcFN&;<<<<<r3   c                 d    dD ],}|                      |           |                     |           -d S )N)r^   ra   r[   rb   rc   r_   r]   r`   )r   r   rn   s     r-   test_boundszTestInterp1D.test_bounds  sH    5 	2 	2Dt$$$++D1111	2 	2r3   c                    t          | j        | j        |dd          }t           |d          t	          j        d                     t           |d          t	          j        d                     t           |ddg          dd	g           | j        | j        | j        | j	        fD ]l}t          | j
        ||d
d	d          }t           |d          t	          j        d                     t           |d          t	          j        d                     t           |ddg          t	          j        d                     t          | j
        ||d
dd          }t           |d          t	          j        d                     t           |d          t	          j        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          |           ng 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          t	          j        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          t	          j        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=   g      Y@rB   r   r   rA   )re   rj   rW   rr   r>   rh   r   )r      ,  r%   r   r   )r   8r   r   c              3   >   K   | ]}t          j        |          V  d S r   )rC   rL   ).0r   s     r-   	<genexpr>z1TestInterp1D._check_fill_value.<locals>.<genexpr>R  s*      "C"C128A;;"C"C"C"C"C"Cr3   i  i  ii0)r   rF   rG   r   rC   r   rS   rT   rQ   rR   rE   ndimshaper'   rm   rL   rangetuple)r)   re   interpr*   resultrW   iis          r-   _check_fill_valuezTestInterp1D._check_fill_value  sx   $(DH4%0uF F F!&&**bj.>.>???!&&++rz%/@/@AAA!&&#r"3"3dC[AAA )TY	48< 	A 	AAdgqt"),5B B BF%ffRjj"*T2B2BCCC%ffSkk2:d3C3CDDD%ffc2Y&7&7D9I9IJJJ dgqt")45J J JF%ffRjj"*T2B2BCCC%ffSkk2:e3D3DEEE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!&&**bj.>.>???!&&++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"*S//BBB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r3   c                 :    dD ]}|                      |           d S N)r^   r[   ra   r_   r`   r]   rb   rc   )r  rn   s     r-   test_fill_valuezTestInterp1D.test_fill_value  s4    1 	) 	)D""4((((	) 	)r3   c                     t          | j        | j        d          }|j        dk    sJ d|_        |j        dk    sJ d S )Ng     ^@rt   g     t@)r   rF   rG   rW   )r)   r  s     r-   test_fill_value_writeablez&TestInterp1D.test_fill_value_writeable  sP    $(DH??? E))))! E))))))r3   c           	         t          | j        | j        |          }t           |t	          j        ddgddgg                    t	          j        ddgddgg                     t           |d          t          j                  sJ  |d          j        dk    sJ 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   rs   r7   r:         @ry   r2   ru   r         (@r   rj   re   r{   g      *@g      .@g      1@r8         @g      ,@)r   rF   rG   r   rC   rL   
isinstancendarrayr  rO   rP   )r)   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 ((3--44444x}}"b(((( 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r3   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   <    ||          j        t          |	          k    s
J |            d S )N)   r9         r  r   r  )r%   r>   rh   r  rh   )
rC   rD   prodrH   	enumerater   r   listr  r  )
r)   re   ar*   nsr+   r,   rJ   bs
             r-   _nd_check_shapezTestInterp1D._nd_check_shape  s    LL)BIbgajj!!)1-aLL 	1 	1DAq	!AAAD111A%aaddAt<<<<5!!))'22S8BQA yyAa!eH1R55;%((***D****	1 	1r3   c                 d    dD ],}|                      |           |                     |           -d S )N)r^   ra   r_   r`   r[   r]   rb   rc   )r  r%  rn   s     r-   test_ndzTestInterp1D.test_nd  sH    1 	' 	'D!!$'''  &&&&	' 	'r3   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)
rh         @r>   g@r  g@g@g       @g      #@r=         ?       @rd   rA   rh   r=      )rC   rL   r   r   r   linspacerealimag)	r)   r   re   r+   r*   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5r3   c                     dD ]B}|                      t          j        |           |                      t          j        |           Cd S r
  )r2  rC   r   r   rn   s     r-   test_complexzTestInterp1D.test_complex  sP    1 	5 	5Dd333t4444	5 	5r3   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   rh   皙?皙?)rC   r,  r   r   )r)   r+   r*   r  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[   rb   rc   )r   2      r   rd   )rC   rL   int8r   r   )r)   re   r+   r  s       r-   test_overflow_nearestz"TestInterp1D.test_overflow_nearest  sd    3 	0 	0DRW555A!QT***B%bbeeQ////	0 	0r3   c                 <   t          j        d                              t                    }|                                }t           j        |d<   dD ]I}t          |||          } |ddg          }t          j        |                                          sJ Jd S )Nr=   r  )r]   r_   rd   g@r  )	rC   rD   r   floatrq   r   r   isfiniteall)r)   r+   r*   re   irvalss         r-   test_local_nanszTestInterp1D.test_local_nans  s     IbMM  ''FFHHv!' 	+ 	+D!QT***B2sCj>>D;t$$((******	+ 	+r3   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 ]f}t          j        |          } ||           ||          }	}t          j        |	          	                                sJ |j
        |	j
        k    sJ gd S )Nr   r>   )r`   ra   rd   r  rh   r9   )rC   rD   r   r@  rq   r   r   r   rv   rB  r  )
r)   r+   r*   ynre   rC  irnr   outoutns
             r-   test_spline_nanszTestInterp1D.test_spline_nans  s    IaLL&&FFHHVVXX1* 	/ 	/D!QT***B1bt,,,CQFaVaV$45 / /z$''BqEE33q66Tx~~))+++++yDJ.....	/	/ 	/r3   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=   ra   rd   )rC   rl   r   rD   r'   rm   r   )r)   r+   r*   s      r-   test_all_nanszTestInterp1D.test_all_nans  s    GBKK"& IbMM:&& 	) 	)Q((((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   
A**A.1A.c                 Z   t          j        dd          }t          j        | dz            }t          j        ddd          }dD ]d}||j        _        d|j        _        dD ]G}t          |||	          } ||          }t          j        |                                          sJ Hed S )
Nr   r=   rs   r   r7  TFF)r^   r[   r]   r_   r`   ra   rd   )rC   rD   r   flags	writeabler   rA  rB  )r)   r+   r*   r   xnew_writeablere   r   rD  s           r-   test_read_onlyzTestInterp1D.test_read_only  s    IaFA28yAs##+ 	/ 	/N#1DJ  %AG" / /Q---qww{4((,,......	/	/ 	/r3   re   )r^   r[   r\   rb   rc   c                 .   t          dgdg|dd          }t           |g d          t          j        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   r  Fr<   )re   rr   rW   )rh   r   r%   )r:   r  r=   Tr   zx_new is abovematchr:   )r   r   rC   r   r'   rm   )r)   re   r   s      r-   test_single_valuezTestInterp1D.test_single_value,  s    
 cUQCd ') ) )+++
<<<(@(@AAAcUQCd>>>:-=>>> 	 	AcFFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   1B

BBN)r^   )+r/   r0   r1   rY   ro   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r%  r'  rC   r   r2  r4  pytestmarkskipifr   r9  r>  rE  rK  rM  rS  parametrizerW  r2   r3   r-   r5   r5   "   s       '! '! '!RB9 B9 B9HD D D&D D D4% % %H H H&+ + +*G G G$> > >H H H*H H H*C& C& C&JC, C, C,J: : :1 1 1- - - -0= = = =2 2 2_L _L _LB) ) )* * *F F F F@1 1 1 1' ' ' $&=x 6 6 6 6 5 5 5 [(EFF  GF0 0 0	+ 	+ 	+/ / /$) ) )/ / / [G     r3   r5   c                       e Zd Zd ZdS )TestLagrangec                     t          g d          }t          j        t          |j                            } ||          }t          ||          }t          |j        |j                   d S )N)r9   r%   rh   r  r>   )r   rC   rD   lencoeffsr   r   )r)   pxsyspls        r-   test_lagrangezTestLagrange.test_lagrange<  s^    ;;;Ys18}}%%QrUUb__!!(2955555r3   N)r/   r0   r1   re  r2   r3   r-   r]  r]  :  s#        6 6 6 6 6r3   r]  c                   >    e Zd Zd Zd 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:   ru   rs   r:   r{         @rj  g@ffffff@rs   r;   r&   ru   r   r)        @g      @rk  g      @g@g333333!@g#@r8   r;   g      ?r:   r   g     @?g     @g.袋@g^@gn @gGNB@grcߖ@g	I@rs   rC   rD   rL   r   r   r)   r+   r*   akr/  r   s         r-   	test_evalz!TestAkima1DInterpolator.test_evalE  s    Ib#HEEEFF A&&X     X     
 	2#####r3   c                 
   t          j        dd          }t          j        g d          }t          ||d          }t          j        g d          }t          j        g d          }t	           ||          |           d S )Nr;   r   ri  makimamethodrl  )r;   gF??r:   g?g?gg{'@g>J(j@g?@gq@g@g9~@go
@rs   ro  rp  s         r-   test_eval_modz%TestAkima1DInterpolator.test_eval_modR  s     Ib#HEEEFF Ah777X & & & ' 'X 5 5 5 6 6 	2#####r3   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   ri  r:   rl  rn  )rC   rD   rL   column_stackr   r   rp  s         r-   test_eval_2dz$TestAkima1DInterpolator.test_eval_2dc  s    Ib#HEEEFFOQQK(( A&&X & & & ' 'X 8 8 8 9 9 _b"r']++2#####r3   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   ri  )r   r%   r%   r   r:   rh   rs   r  rl  )   r%   r%   rn  )rC   rD   rL   emptyr   r   )r)   r+   y_r*   rq  r/  r   yi_s           r-   test_eval_3dz$TestAkima1DInterpolator.test_eval_3dt  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#####r3   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   )rC   rL   vstackTr   r   )r)   r+   r*   rq  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Ar3   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   ri  z9Extending a 1-D Akima interpolator is not yet implementedrU  )rC   rD   rL   r   rX  r   r(   extend)r)   r+   r*   rq  rV  s        r-   test_extendz#TestAkima1DInterpolator.test_extend  s    Ib#HEEEFF A&&K].e<<< 	" 	"IIdD!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   A==BBc                     t          j        dd          }t          j        g d          }d}t          j        t
          |          5  t          ||d           d d d            d S # 1 swxY w Y   d S )Nr;   r   ri  z `method`=invalid is unsupported.rU  invalidru  )rC   rD   rL   rX  r   r(   r   )r)   r+   r*   rV  s       r-   test_mod_invalid_methodz/TestAkima1DInterpolator.test_mod_invalid_method  s    Ib#HEEEFF2].e<<< 	8 	81Y7777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s   	A))A-0A-c                    t          j        ddd          }|dz  }t          j        ddd          }|dz  }t          ||d	          }t          ||d
	          }t          ||d 	          }t           ||           ||          d           t	           ||          dd         t          j        dt           j                             t	           ||          dd         t          j        dt           j                             t           ||d	           ||          d           t          | ||          d           d S )Nr9   r   r%   r   r=      Trf   Fr   r   r   r  rA   r>   )rC   r,  r   r   r   fullr   )r)   r+   r*   x_exty_extak_trueak_falseak_nones           r-   test_extrapolate_attrz-TestAkima1DInterpolator.test_extrapolate_attr  sI   KAr""qDCR((q%a===&q!???%a===eDDDD!,bga.@.@AAA2.260B0BCCCD999775>>PUVVVVwwu~~E::::::r3   N)r/   r0   r1   rr  rw  rz  r  r  r  r  r  r2   r3   r-   rg  rg  D  s        $ $ $$ $ $"$ $ $"$ $ $2B B B" " "8 8 8; ; ; ; ;r3   rg  rv  c                     t          j        dd          }t          j        g d          }|d|z  z
  }d}t          j        t
          |          5   | ||           d d d            n# 1 swxY w Y   d }d S )Nr;   r   ri  y               @zreal valuesrU  c                     t          j        ddd          }|dz  }t          j        ddd          }t          ||d	          }d
 }t          d|||           d S )Nr  r9   r   r%   r   r=   r  Tr  c                      ||           d S r   r2   )_rq  r  s      r-   	worker_fnz9test_complex.<locals>.test_concurrency.<locals>.worker_fn  s    BuIIIIIr3   )rC   r,  r   r   )r)   r+   r*   r  rq  r  s         r-   test_concurrencyz&test_complex.<locals>.test_concurrency  sp    KAr""qDCR(( A4888	 	 	 	 Ir599999r3   )rC   rD   rL   rX  r   rm   )rv  r+   r*   msgr  s        r-   r4  r4    s     		"cA
AAABBA	BqDA
C	z	-	-	-  q!              
: 
: 
: 
: 
:s   A**A.1A.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 )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 )Nrh   r  r%   r9   r>   r  )r   rh   r&   )rC   rL   r'   rm   r   r   )r)   r   r+   s      r-   test_sort_checkzTestPPolyCommon.test_sort_check  se    Hq!fq!fq!f-..H[[[!!j%A...j%A.....r3   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 )Nrh   r%   r   )r'   rm   r   rX   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 )	N  r>   r   r=   r?   r%   rh   r   )rC   randomseeduniquer   randr_  r   r   r  r   r   r+   )r)   orderr+   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BD#%(((BD#%(((CE35)))CE35))))	* 	*r3   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 )Nr  r   rh   r  r%   r9   r  r   F)endpoint)	rC   r  r  r,  r  r   r   r  r   )r)   r+   r   rJ   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 	4r3   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   r>   r=      rh   r%   r   )rC   r  r  sortuniformr  r  r   r   r  r   r   r+   )r)   r  r+   r   r  ra  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(((BD!#&&&BD!#&&&BD!#&&&BD!#&&&&	' 	'r3   c           	         t           j                            d           t           j                            ddddd          }t          j        t           j                            d                    }t           j                            dd	          }t
          t          fD ]$} |||          } ||          j        d
k    sJ %t
          t          fD ]} ||d         |          }t          j         |d                    dk    sJ t          j         |t          j        d                              dk    sJ t          t          |t          j        ddgdggt                               d S )Nr  r   r   r9   r  r  r|  r>   r  )r>   r  r9   r  r  ).r   r   r   r&   r2   r7  r8  皙?r   )rC   r  r  r  r  r   r   r  rL   r'   rm   object)r)   r   r+   xpr  ra  s         r-   
test_shapezTestPPolyCommon.test_shape!  sZ   
	tINN1b!Q**GBINN2&&''Y^^Aq!!5> 	2 	2CAq		A1R55;/11111 5> 	V 	VCAlOQ''A8AAcFF##r))))8AAbhsmm,,--3333*aC:u2EV)T)T)TUUUU	V 	Vr3   c                 R   t           j                            ddddd          }t          j        t           j                            d                    }t           j                            dd          }t          t
          fD ]#} |||          }d	 }t          d
|||           $d S )Nr   r   r9   r  r  r|  r>   r  c                      ||           d S r   r2   )r  r  r  s      r-   r  z3TestPPolyCommon.test_concurrency.<locals>.worker_fn<  s    r




r3   r=   )rC   r  r  r  r   r   r   )r)   r   r+   r  r  r  r  s          r-   r  z TestPPolyCommon.test_concurrency3  s    INN1b!Q**GBINN2&&''Y^^Aq!!5> 	? 	?CSAYYF   $B	62>>>>	? 	?r3   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?r9   r   )	rC   r  r  r  r-  r.  r   r   r   )r)   r+   r   c_rec_imr  r  ra  p_rep_imnus              r-   test_complex_coefz!TestPPolyCommon.test_complex_coefB  s   
	uGBI$$R(())IW%%3VQVdYa  5> 	> 	>CC1IIss4||SSq\\TtA > >"b		R==="b		R====>	> 	>r3   c                 (   t           j                            d           t           j                            dddddd          }|j        }t           j                            d          }d	D ]k}|j        |d
z            }t          j        t           j                            |d
z                       }t          t          fD ]} ||||          }|j        j        |||dz            |d |         z   ||dz   d          z   k    sJ  ||          }	|d |         |j        z   |d|z   d          z   }
|	j        |
k    sJ  ||||          	                                 ||||          	                    d           ||||          
                                 ||||          
                    d          fD ]}|j        |j        k    sJ mdD ]6}t          t          fD ]%}t          t          |fi t          |||           &7d S )Nr  r>   r  r9   r  r  r   )rh   r%   r   rh   r%   r>   rh   rk   r%   )rA   r  r9   r  )r   r+   rj   )rC   r  r  r  r  r  r   r   r   
derivativeantiderivativerj   r'   rm   r   )r)   r   c_sr  rj   mr+   r  ra  res
targ_shaper  s               r-   	test_axiszTestPPolyCommon.test_axisN  s\   
	uINN1aAq!,,gYf%%  	- 	-DQA	qs++,,Au~ - -C14(((syCT!V$4s5D5z$ACQL$PPPPPaee $Z"(2S4\A
yJ.... 3q!$///::<<3q!$///::1==3q!$///>>@@3q!$///>>qAAC - -B 7af,,,,,	--  " 	L 	LDu~ L Lj#KKQT1J1J1JKKKKL	L 	Lr3   N)r/   r0   r1   r  r  r  r  r  r  r  r  r  r2   r3   r-   r  r    s        / / /" " "
* * *,4 4 42' ' '*V V V$? ? ?
> 
> 
>L L L L Lr3   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r/   r0   r1   r2   r3   r-   Pr  l          r3   r  c                       e Zd ZdS )TestPolySubclassing.BNr  r2   r3   r-   Br  o  r  r3   r  c                 8   t           j                            d           t          j        t           j                            d                    }t           j                            d          }|                     ||          |                     ||          fS )Nr  r>   )r  r%   )rC   r  r  r  r  r  )r)   r+   r   s      r-   _make_polynomialsz%TestPolySubclassing._make_polynomialsr  sm    
	tGBI$$Q''((IV$$vva||TVVAq\\))r3   c                     |                                  \  }}||fD ](}|                                }|j        |j        k    sJ )|                                }|j        |j        k    sJ d S r   )r  r  	__class__r  )r)   r  bpra  pdppas         r-   test_derivativez#TestPolySubclassing.test_derivativex  s{    ''))Bb 	/ 	/AB;",.....!!|s},,,,,,r3   c                    t           j                            d           t          j        t           j        dt           j                            d          df                   }t           j                            t          |                    }t          ||d          }| j        	                    |          }|j
        | j        k    sJ d S )Nr  r   r   rh   r#  )rC   r  r  r  r   r  r_  r   r  from_spliner  )r)   r+   r*   splr  s        r-   test_from_splinez$TestPolySubclassing.test_from_spline  s    
	tGBE!RY^^B//2344INN3q66""QQV$$|tv%%%%%%r3   c                     |                                  \  }}| j                            |          }|j        | j        k    sJ | j                            |          }|j        | j        k    sJ d S r   )r  r  from_bernstein_basisr  r  from_power_basis)r)   r  r  r  bp1s        r-   test_conversionsz$TestPolySubclassing.test_conversions  sq    ''))Bf))"--}&&&&f%%b))}&&&&&&r3   c                 x    g d}dgdgdgg}| j                             ||          }|j        | j         k    sJ d S )Nr   rh   r%   r>   )r  from_derivativesr  )r)   r+   r*   r  s       r-   test_from_derivativesz)TestPolySubclassing.test_from_derivatives  sN    IIS1#sOV$$Q**|tv%%%%%%r3   N)r/   r0   r1   r   r  r   r  r  r  r  r  r  r2   r3   r-   r  r  k  s            E       E   * * *- - -& & &' ' '& & & & &r3   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                 8   t          j        ddgddgddgg          }t          j        g d          }t          ||          }t           |d          t          j        d	                     t           |d
          t          j        d                     d S )Nrh   r  r%   r9   r>   r  r   r&   rh   333333?Q@ffffff?p=
ף@rC   rL   r   r   r   r)   r   r+   ra  s       r-   test_simplezTestPPoly.test_simple  s    Hq!fq!fq!f-..H[[[!!!QKK#
+? @ @AAA#
+K L LMMMMMr3   c                    t          j        ddgddgddgg          }t          j        g d          }t          ||d	          }t           |d
          t          j        d                     t           |d          t          j        d                     t           |d
d          t          j        d                     t           |dd          t          j        d                     d S )Nrh   r  r%   r9   r>   r  r  periodicr  g?r  333333ӿr  g@gffffff@r  r   s       r-   test_periodiczTestPPoly.test_periodic  s    Hq!fq!fq!f-..H[[[!!!QJ///#
#=>>	@ 	@ 	@$
#MNN	P 	P 	P 	#q		2:k#:#:;;;$

BJ/B$C$CDDDDDr3   c                 |   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        _        ||j        _        t          ||          } ||          }t          j        |                                          sJ ^d S )Nrh   r  r%   r9   r>   r  r  )r   r7  r8  r  r  rO  )rC   rL   r   rP  rQ  rA  rB  )r)   r   r+   r   rQ  r   rD  s          r-   rS  zTestPPoly.test_read_only  s    Hq!fq!fq!f-..H[[[!!x&&a
++++& 	+ 	+I )AG )AGaA1T77D;t$$((******	+ 	+r3   c           	         d }t           j                            d          }d}dD ]}t          j        |                    dd|dz                       }|                    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          }|                    ddd          }t           ||           ||          d           t           ||d           ||d          d           |                                }|                                }t           ||           ||          d           |                                }|                                }|                    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 )Nrh   rA   )rC   rD   rH   r!   )powerr"  kr  s       r-   binom_matrixz/TestPPoly.test_descending.<locals>.binom_matrix  s_    	%!)$$,,R33A	%!)$$AaATTrT44R4Z= r3   r   r>   r=   r  r?   r=   rh   r   r%   sizerA   Tr  r   r  r   vIh%<=r   r9   r%   -q=)rC   r  RandomStater  r  diffrD   dotr  r   r   r  r  	integrateroots)r)   r  rngr	  r  r+   cahh_powersr  capcdpcdpar  x_testpa_dpd_dpa_ipd_ir!  r$  int_aint_droots_droots_as                             r-   test_descendingzTestPPoly.test_descending  s   	! 	! 	! i##A&& %	C %	CAAr1q51122AR%!)Q88B

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

????BBvqMM22fa==uEEEE==??D==??DDDLL$$v,,UCCCC
 $$&&D$$&&DCV44 , ,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r3   c                 Z   t           j                            ddddd          }t          j        g d          }t	          ||          }|j        j        |j        k    sJ |j        j        |j        k    sJ  |d          j        |j        dd          k    sJ  |t           j                            dd                    j        d|j        dd          z   k    sJ |                                }|j        j        d	k    sJ |	                                }|j        j        d
k    sJ d S )Nr  r%   rh   r>   r  r  r9   r9   r  r9   r%   rh   r%   r>   )r  r%   rh   r%   r>   )
rC   r  r  rL   r   r+   r  r   r  r  )r)   r   r+   ra  dpips         r-   test_multi_shapezTestPPoly.test_multi_shape  s   INN1aAq))H[[[!!!QKKsyAG####syAG####qvv|qwqrr{****q1%%&&,0DDDDD\\^^tz_,,,,tz_,,,,,,r3   c                    t           j                            d           t          j        ddgddgddggt                    }t          j        g d	          }t          j        ||          }t           |d
          t          j        d                     t           |d          t          j        d                     d S )Nr  rh   r  r%   r9   r>   r  r   r  r  r  r  r  )	rC   r  r  rL   r@  r   construct_fastr   r   r   s       r-   test_construct_fastzTestPPoly.test_construct_fast  s    
	tHq!fq!fq!f-U;;;H[[[!! A&&#
+? @ @AAA#
+K L LMMMMMr3   c                     t           j                            d          }|                    ddd          }t          j        t           j        d|                    d          df                   }t          ||          }t           j        d         }t          |||          }t           ||          |           t          |d d d d df         ||          }t           ||          d d df         |           d S )	Nr  r>   r      r   r   rh   )r  r&   gQ?333333?)
rC   r  r  r  r  r   r   _ppoly_eval_1r   _ppoly_eval_2)r)   r  r   r+   ra  r  expecteds          r-   #test_vs_alternative_implementationsz-TestPPoly.test_vs_alternative_implementations  s    i##D))HHQBGBE!SXXb\\1,-..!QKKU&' Ar**"x((( 111QQQq51b11"aaadX.....r3   c                    t           j                            d          }t          j        t           j        d|                    d          df                   }|                    t          |                    }t          ||d          }t          j	        |          }t          j
        ddd          }t           ||          t          ||                     t          | }t          j	        |          }t           ||           ||                     |\  }	}
}dD ];}t          |	|
||          }t          j	        |          }|j        |j        k    sJ <d S )	Nr  r   r   rh   r  r   )NTFr  )rC   r  r  r  r   r  r_  r   r   r  r,  r   r   r   rf   )r)   r  r+   r*   r  r  r/  r$  ppptr   r
  extrapra  s                 r-   r  zTestPPoly.test_from_spline  sK   i##D))GBE!SXXb\\1,-..HHSVVQQs##[As##2b#/// SM""B2''' 1a) 	2 	2F1aV444A!!$$A=AM11111	2 	2r3   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 )	Nr  )r  r>   r%   rh   )r   r  r%      r  r   rh   r%   )	rC   r  r  rL   r  r   r   r  r   )r)   r   dcddcr+   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3r3   c           	         t           j                            d          }t          j        t           j        d|                    d          df                   }|                    t          |                    }t          ||d          }t          j	        |          }t          j
        ddd          }t          dd          D ]+}t           |||          t          |||                     ,d S )Nr  r   r   rh   r  r   r>   )rC   r  r  r  r   r  r_  r   r   r  r,  r  r   r   r)   r  r+   r*   r  r  r/  dxs           r-   test_derivative_evalzTestPPoly.test_derivative_eval7  s    i##D))GBE!SXXb\\1,-..HHSVVQQs##[As##1++ 	< 	<BBBr2JJb#r(:(:;;;;	< 	<r3   c                    t           j                            d          }t          j        t           j        d|                    d          df                   }|                    t          |                    }t          ||dd          }t          j	        |          }t          j
        ddd          }t          dd          D ]>}t           |||           |                    |          |          d	|fz  
           ?d S )Nr  r   r   rh   r9   r#  r
  r   r=   zdx=%dr  )rC   r  r  r  r   r  r_  r   r   r  r,  r  r   r  rE  s           r-   r  zTestPPoly.test_derivativeC  s    i##D))GBE!SXXb\\1,-..HHSVVQQ!$$$s##[As##2,, 	5 	5BBBr2JJ(9b(9(9"(=(=$+reO5 5 5 5 5	5 	5r3   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 )Nru   r   rh   )r   r   r  r   r+   )r)   ra  s     r-   test_antiderivative_of_constantz)TestPPoly.test_antiderivative_of_constantP  s    B4&1a&!!((**,eaS1#JA.G.G.IJJJ((**,eaS1#JA.G.G.IJJJJJr3   c                    t          ddggg d          }|                                }t          |j        ddgddgg           t          |j        g d           t          |                    dd          t          j        d                     t          t          j         |d           |d          z
            t          j        d                     d S )	Nru   r&   r   rh   r   )r;   rh   r%   r%   r   )	r   r  r   r   r+   r   r  rC   r   )r)   ra  qs      r-   #test_antiderivative_regression_4355z-TestPPoly.test_antiderivative_regression_4355V  s    B9+yyy))q#hA/000[[[)))Aq))2:c??;;;
11Q44!!A$$;//
3	) 	) 	) 	) 	)r3   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 )
Nr  )r>   r%   rh   )r   r         ?)rh   rh   rh   r   )r   r   rP        ?)      ?gUUUUUU?r&   r   r   )r   r   g      ?rQ  g*?)r   rR  rh   r%   )
rC   r  r  rL   r  r   r  r   r+   r   )	r)   r   iciicr+   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)))))r3   c           
         t           j                            d          }t          j        ddd          dz  }|                    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 )Nr  r   rh   r?   r%   r9   rI  r=   r  rA   r   z
dx=%d k=%d)r   r   )rC   r  r  r,  r  r_  r   r   r  r  r  r  r   r   r+   )r)   r  r+   r*   r  r  rF  rU  r  r
  rr  s               r-   !test_antiderivative_vs_derivativez+TestPPoly.test_antiderivative_vs_derivativex  sx   i##D))K1b!!1$HHSVV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r3   c                 8   t           j                            d          }t          j        t           j        d|                    d          df                   }|                    t          |                    }t          ||dd          }t          j	        |          }t          dd          D ]f}|                    |          }t          ||          }t          j        ddd          }	t           ||	          t          |	|          d	
           gd S )Nr  r   r   rh   r9   rI  r=   r   r   r   )rC   r  r  r  r   r  r_  r   r   r  r  r  r   r,  r   r   )
r)   r  r+   r*   r  r  rF  r  spl2r/  s
             r-   test_antiderivative_vs_splinez'TestPPoly.test_antiderivative_vs_spline  s   i##D))GBE!SXXb\\1,-..HHSVVQQ!$$$s##2,, 	' 	'B##B''Cc2&&DQ3''BCCGGU2t__!%' ' ' ' '	' 	'r3   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%   rh   r%   r%   )r%   rh   r>   r>   r  gA?g_p   ?g:0yE>r   )rC   rL   r  r   r  r   r  r   )r)   r   r+   ra  r-  r  s         r-   test_antiderivative_continuityz(TestPPoly.test_antiderivative_continuity  s    HlllLLL1224H[[[!!!QKK 	::TBBBB ]]__ac"""""r3   c                 <   t           j                            d          }t          j        t           j        d|                    d          df                   }|                    t          |                    }t          ||dd          }t          j	        |          }d\  }}|
                    ||          }|                                }	t          | |	|           |	|          z
  d	           t          |t          |||          d	           d
\  }}|
                    ||d          }t          | |	|           |	|          z
  d	           t          j        |
                    ||d                                                    sJ d S )Nr  r   r   rh   r9   rI  )r  ?Fcheck_0d)r  rb  Tr  )rC   r  r  r  r   r  r_  r   r   r  r  r  r   r   rv   rB  )
r)   r  r+   r*   r  r  r!  r$  igrU  s
             r-   test_integratezTestPPoly.test_integrate  su   i##D))GBE!SXXb\\1,-..HHSVVQQ!$$$s##1\\!Q!!CCFFSSVVOe<<<<F1a-->>>>1\\!QD\11CCFFSSVVOe<<<<xQu==>>BBDDDDDDDr3   c                 0   t          j        g d          }t          j        ddgddgddgddgg          }dD ]\}||j        _        t	          ||          }|                    dd	          }t          j        |                                          sJ ]d S )
Nrh   r%   r  r;   r   r:          ru   rO  rh   r  )rC   rL   rP  rQ  r   r  rA  rB  )r)   r+   r   rQ  r  rD  s         r-   test_integrate_readonlyz!TestPPoly.test_integrate_readonly  s    HYYYHr2hc
RIBx@AA& 	+ 	+I )AGaA;;q!$$D;t$$((******	+ 	+r3   c           	         t          j        g d          }t          j        ddgddgddgddgg          }t          ||d          }|                                }t          j         |d	           |d
          z
            }t          |                    d
d	          |           t          |                    dd          |           t          |                    dd          t          j        d|z                       t          |                    dd          t          j         |d           |d          z
                       t          |                    dd          t          j         |d           |d
          z
   |d	          z    |d          z
                       t          |                    dd          t          j         |d           |d
          z
   |d	          z    |d          z
                       t          |                    dd          t          j         |d           |d
          z
   |d	          z    |d          z
  d	|z  z                        t          |                    dd          t          j         |d           |d          z
                       t          |                    dd          t          j         |d           |d          z
                       t          |                    dd          t          j         |d           |d          z
  d|z  z
                       d S Nrh  r;   r   r:   ri  ru   r  r  r  rh   r   ir  r%   r   r)  rm  r9   g      /@r  r   rA   r>   i)rC   rL   r   r  r   r   r  r)   r+   r   r  I
period_ints         r-   test_integrate_periodicz!TestPPoly.test_integrate_periodic  s:   HYYYHr2hc
RIBx@AA!QJ///Z!qqtt,,
Aq)):666C,,j999C,,bjZ.H.HIIIC--
11S66AAcFF?33	5 	5 	5C++
11Q44!!A$$;1#5##>??	A 	A 	AHf55
11Q44!!A$$;1#5##>??	A 	A 	AC00
11Q44!!A$$;1#5##>Z#OPP	R 	R 	RAr**
11Q44!!A$$;//	1 	1 	1B,,
11Q44!!A$$;//	1 	1 	1As++
11Q44!!A$$;Z#?@@	B 	B 	B 	B 	Br3   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   rh   r+  r%   r?   r>   rI  gV瞯Ҽg     ?r   r   )	rC   r,  r
   r   r   r  r  r   r   )r)   r+   r*   r  r  rZ  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3r3   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 )	NrA   rR  r   )r   r  r4  ru   r  g333333?r:   rh   )	rC   rL   r  r   r   r  r   rq   solve)r)   r   r+   r  constc1r  s          r-   test_roots_idzerozTestPPoly.test_roots_idzero  s     Hr4j1a&2t*5668H'''((1a[[

sBFJ7	9 	9 	9 VVXX
1aaa4EBll		%((sBFJ7	9 	9 	9 	9 	9r3   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   rh   r   )r   r   r  rC   r   rt  r   s       r-   test_roots_all_zerozTestPPoly.test_roots_all_zero	  s   S1#JF!QKK		Arv;///

QK000

B'''VaVII!QKK		Arvq"&#9:::

Q26$:;;;

B'''''r3   c                 j   t          j        g dg dg          j        }t          j        g d          }t          ||          }t	          |                                t          j        ddg                     t	          |                    d          t          j        dg                     d S )N)rh   r   rA   )rA   r   r   r   g       r;   Fr  )rC   rL   r  r   r   r  r   r)   r   r+   r  s       r-   test_roots_repeatedzTestPPoly.test_roots_repeated  s    
 Hjjj***-..0HZZZ  1a[[

BJc{$;$;<<<U33RZ5F5FGGGGGr3   c                    t          j        dgdgg          j        }t          j        g d          }t          ||          }t	          |                                t          j        dg                     t	          |                    d          t          j        g                      t	          |                    d          t          j        dg                     t	          |                    dd          t          j        g                      t	          |                    d          t          j        g                      t	          |                    dd          t          j        g                      d S )Nrh   rA   r  r&   F)discontinuityr   )rC   rL   r  r   r   r  r   rt  r{  s       r-   test_roots_discontzTestPPoly.test_roots_discont%  s&   HqcB4[!!#H[[[!!1a[[

BJu$5$5666u55rz"~~FFF 	rz3%'8'8999E::BJrNNKKKrz"~~666E::BJrNNKKKKKr3   c                    t           j                            d          }d}dD ]|}t          dd          D ]g}t          j        t           j        dd|                    d          z  df                   }d|                    |dz   t          |          dz
  dd	          z  dz
  }t          ||          }d|                                fD ]}|	                    |d
|          }	t          d          D ]}
t          d	          D ]}|	|
|f         }|j
        dk    r|||j
        z  } |||          d d |
|f         } ||d|          d d |
|f         }d|dt          |           }t          ||z
  |z  t          j        d          d|d
           Аi~|dk    sJ t          |                      d S )Nr  r   rO  r  r=   r?   r%   rh   r>   F)r~  rf   r  )r  rf   (z) r = r;   r   )r   r   r   r   )rC   r  r  r  r  r   r  r_  r   rt  r  reprr   r   )r)   r  numrf   r  r+   r   r  r*   rZ  ijrrvalcmpvalr  s                   r-   test_roots_randomzTestPPoly.test_roots_random4  s   i##D))( 	P 	PKq" P PIbeArCHHRLL'8"$<=>>chhuQwAq!Q777!;1a[[SZZ\\* P PA%[QQA"1XX P P!&q P PA!"1Q3B!w{{ #rw&(b&E&E&Eaaa!e&L)+B18C*E *E *EEFQQqU*L&I+&I&ItBxx&I&I /Q&0@"*S//598;!P !P !P !PPPPP. Syyy$s))yyyyyr3   c           
      r   t           j                            d          }t          dd          D ]}|                    |dd          }|dk    r
d|d d ddf<   d|                                fD ]C}t          j        |j        t                    }t          j	        |||           |dk    r)t          j
        |                                          sJ h| }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          |t          j        |          d           Ed S )Nr  rh   r      r>   )rh   r%   rh   r   r   ignore)r  g|=r   )rC   r  r  r  r  r}  r  complexr   _croots_poly1rv   rB  abserrstateravelr   
zeros_like)	r)   r  r
  r   r*   wr  cresr  s	            r-   test_roots_crootszTestPPoly.test_roots_crootsT  s   i##D))q" 	E 	EAAs##AAvv"!!!Aa%& E EHQWG444$Q1---668A;;??,,,,,bq 8 8A1QtV9q1Q3q5z11CC!D&	A!AJ 6777DD[222    4KC                             iikk28C==.)R]3%7%7eDDDDD#E	E 	Es   EEEc                    t          j        g dg          j        }t          j        ddg          }dD ]}t          |||          }|                                }|                                }|du rt          j         |ddg                                                    sJ t          j         |ddg                                                    sJ t          j         |ddg                                                    sJ |                                dgk    sJ t           |ddg          d	d
g           t          j         |ddg                    
                                rJ t          j         |ddg                    
                                rJ t          |                                t          j        ddg                     d S )Nr   r   rh   TFNr  F皙皙?gGz?gzGʿru   r   )rC   rL   r  r   r  r  rv   rB  r  r   anyr   )r)   r   r+   rf   r  pp_dpp_is          r-   r  zTestPPoly.test_extrapolate_attrr  s   Hjjj\""$HaV. 	E 	EKq!555B==??D$$&&De##xD#;004466666xdC[ 1 1226688888xdC[ 1 1226688888xxzzaS(((((D#;(H1EFFF8DD$$5$566::<<<<<8DD$$5$566::<<<<<

BJT{,C,CDDDD	E 	Er3   N)r/   r0   r1   r  r  rS  r(  r.  r1  r8  r  rC  rG  r  rK  rN  rX  r[  r^  r`  rf  rj  rp  rr  rw  ry  r|  r  r  r  r  r2   r3   r-   r  r    s       N N NE E E+ + +/C /C /Cb- - -N N N/ / /2 2 2.4 4 4
< 
< 
<5 5 5K K K) ) )* * *0K K K0' ' ' # # #E E E*
+ 
+ 
+B B B8	4 	4 	49 9 9&( ( ( 
H 
H 
HL L L$ $ $@E E E<E E E E Er3   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                     ddg}dgg}t          ||          }t           |d          t          j        d                     d S )Nr   rh   r>   r7  rs   r   r   rC   r   r)   r+   r   r  s       r-   r  zTestBPoly.test_simple  sG    FSE1a[[3B00000r3   c                     ddg}dgdgg}t          ||          }t           |d          t          j        d                     d S )Nr   rh   r>   r7  ggfffff@r  r  s       r-   test_simple2zTestBPoly.test_simple2  sM    FS1#J1a[[3N!;!;<<<<<r3   c                     ddg}dgdgdgg}t          ||          }t           |d          t          j        d                     d S )Nr   rh   r>   r  r8  g433333@r  r  s       r-   test_simple3zTestBPoly.test_simple3  sb    FS1#sO1a[[3
DEE	G 	G 	G 	G 	Gr3   c                     ddg}dgdgdgdgg}t          ||          }t           |d          t          j        d                     d S )Nr   rh   r%   r  g:On?r  r  s       r-   test_simple4zTestBPoly.test_simple4  sh    FS1#sQC 1a[[3
 (. / /	
 	
 	
 	
 	
r3   c                     ddg}dgdgdgdgdgg}t          ||          }t           |d          t          j        d                     d S )Nr   rh   r   r%   r  g	h"l@r  r  s       r-   test_simple5zTestBPoly.test_simple5  sl    FS1#sQC!%1a[[3
 &( ) )	
 	
 	
 	
 	
r3   c                    g d}ddgddgddgg}t          ||d          }t           |d          t          j        d                     t           |d	          t          j        d
                     t           |dd          t          j        d                     t           |d	d          t          j        d                     d S )Nr   rh   r>   r>   r   r%   r  r  g333333@gHzG?g[(\?rh   r  r  r  s       r-   r  zTestBPoly.test_periodic  s    IIVaVaV$1aZ0003J!7!78884"*^"<"<===3

BJx$8$89994RZ%<%<=====r3   c           	      n   t           j                            d          }d}dD ]}t          j        |                    dd|dz                       }|                    dd|dz   |f          }|d d d	                                         }t          ||d
          }t          |d d d d d	f         |d d d	         d
          }|                    ddd          }	t           ||	           ||	          d           t           ||	d           ||	d          d           |                                }
|                                }t           |
|	           ||	          d           |	                                }|	                                }|                    ddd          D ]\  }}|
                    ||          }|
                    ||          }t          ||d           t           ||           ||          z
   ||           ||          z
  d           d S )Nr   r>   r  r=   rh   r  r7  r  rA   Tr  r   r  r   r  r   r  r  )rC   r  r  r  r  rq   r   r   r  r  r  )r)   r  r	  r  r+   r  r  r  r  r  r   r!  r"  r#  r!  r$  r$  r%  s                     r-   r(  zTestBPoly.test_descending  sH   i##A&& 	, 	,AAr1q51122AT3eai^<<BDDbDBr1$///Br!!!TTrT'{AdddG>>>B[[b#..FBBvJJ6

????BBvqMM22fa==uEEEE==??D==??DDDLL$$v,,UCCCC
 $$&&D$$&&DCV44 , ,1Q**Q**u59999Q$$q'' 14477TT!WW3D%*, , , , ,	,/	, 	,r3   c                 $   t           j                            d          }|                    ddddd          }t          j        g d          }t          ||          }|j        j        |j        k    sJ |j        j        |j        k    sJ  |d          j        |j        dd          k    sJ  ||                    dd                    j        d	|j        dd          z   k    sJ |	                                }|j        j        d
k    sJ d S )Nr  r  r%   rh   r>   r  r  r9   r*  r+  )
rC   r  r  r  rL   r   r+   r  r   r  )r)   r  r   r+   ra  r,  s         r-   r.  zTestBPoly.test_multi_shape  s   i##D))HHQ1a##H[[[!!!QKKsyAG####syAG####qvv|qwqrr{****q!Q  &&17122;*>>>>>\\^^tz_,,,,,,r3   c           	          ddg}dgdgdgg}t          ||          }d}|dz  }t           ||          t          j        dd|z
  z  d|z
  z  d|z  d|z
  z  z   d|z  |z  z                        d S )Nr   r%   r>   rh   r  r7  r  )r)   r+   r   r  xvalr#  s         r-   test_interval_lengthzTestBPoly.test_interval_length  s    FS1#sO1a[[1H4
1!9ac?U1Wac]#BQU1W#LMM	
 	
 	
 	
 	
r3   c                     g d}ddgddgddgg}t          ||          }t           |d          t          j        d                     t           |d          t          j        d                     d S )	Nr  r>   r   r%   r  gGzG?333333?r  r  r  s       r-   test_two_intervalszTestBPoly.test_two_intervals  sz    IIVaVaV$1a[[3K!8!89993N!;!;<<<<<r3   c                 6   ddg}dgdgdgg}t          ||          }dD ]}t          |||          }|                                }|du rgt          j         |d	d
g                                                    sJ t          j         |d	d
g                                                    sJ t          j         |d	d
g                                                    rJ t          j         |d	d
g                                                    rJ d S )Nr   r%   r>   rh   r  r  r  Fr  g @)r   r  rC   rv   rB  r  )r)   r+   r   r  rf   bp_ds         r-   r  zTestBPoly.test_extrapolate_attr   s0   FS1#sO1a[[. 	= 	=Kq!555B==??De##xD#;004466666xdC[ 1 122668888888BBc{OO4488:::::8DD$$5$566::<<<<<<	= 	=r3   N)r/   r0   r1   r  r  r  r  r  r  r(  r.  r  r  r  r2   r3   r-   r  r    s        1 1 1= = =G G G	
 	
 	


 

 


> 
> 
> ,  ,  ,D- - -
 
 
= = == = = = =r3   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          t          j        d                     t           |d          t          j        d                     t          t          j        fd	d
D                       t          j        g d                     t          t          j        fdd
D                       t          j        g d                     d S )Nr  r>   r   r%   r  r  r  r  c                 (    g | ]} d |          S )r  r2   r   r  r  s     r-   
<listcomp>z5TestBPolyCalculus.test_derivative.<locals>.<listcomp>  #    #D#D#DBBBsBKK#D#D#Dr3   rh   r%   r>   )r  r{   r;   c                 (    g | ]} d |          S )r  r2   r  s     r-   r  z5TestBPolyCalculus.test_derivative.<locals>.<listcomp>  r  r3   )r  ru   r   )r   r  r   rC   r   )r)   r+   r   bp_derr  s       @r-   r  z!TestBPolyCalculus.test_derivative  s   IIVaVaV$1a[[sRZ%9%9:::sRZ__555 	
#D#D#D#D)#D#D#DEE
#7#7#788	
 	
 	
 	
#D#D#D#D)#D#D#DEE
<<<00	
 	
 	
 	
 	
r3   c                    t           j                            d          }d\  }}t          j        |                    |                    }|                    ||dz
  f          }t	          ||          }t          j        |          }t          |          D ]n}|                                }|                                }t          j	        |d         |d         d          }	t           ||	           ||	                     od S Nr  r9   r   rh   r   rA      )rC   r  r  r  r   r   r  r  r  r,  r   )
r)   r  r  r
  r+   r   r  r  dr  s
             r-   test_derivative_ppolyz'TestBPolyCalculus.test_derivative_ppoly!  s    i##D))1GCJJqMM""JJ1Q3x  1a[['++q 	, 	,ABBQqT1R5"--BBBrFFBBrFF++++		, 	,r3   c           	         t           j                            d          }d\  }}t          j        |                    |                    }|                    ||dz
  f          }|                                |dz  fD ]|}t          ||          }t          j        |d         |d         d          }t          |          D ]8}	t           |||	           |	                    |	          |                     9}d S )Nr  r  rh   r*  r   rA   r  )
rC   r  r  r  rq   r   r,  r  r   r  )
r)   r  r  r
  r+   r   ccr  r  r  s
             r-   test_deriv_inplacez$TestBPolyCalculus.test_deriv_inplace0  s    i##D))1GCJJqMM""JJ1Q3x   6688Q\* 	A 	ABr1BQqT1R5"--B1XX A A2q		+;2==+;+;B+?+?@@@@A	A 	Ar3   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   rh   r>   r   r%   r:   r&   g      ?r  r   r   )r   r  rC   r,  r   where)r)   r+   r   r  bixxs         r-   rX  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 	0r3   c                    t           j                            d          }t          j        |                    d                    }|                    d          }t	          ||          }t          j        |d         |d         d          }t           |                                                                |           ||          dd           d S )	Nr  r   r  r=   r%   r>   r   rA   r   r  r  )	rC   r  r  r  r   r,  r   r  r  r)   r  r+   r   r  r  s         r-   test_der_antiderz"TestBPolyCalculus.test_der_antiderQ  s    i##D))GCJJrNN##JJ}%%1a[[[1quc**8))++6688<<2U	8 	8 	8 	8 	8 	8r3   c                    t           j                            d          }t          j        |                    d                    }|                    d          }t	          ||          }t          j        |          }t          j        |d         |d         d          }t           |	                    d          |           |	                    d          |          dd	           d S )
Nr  r   r  r   rA   r=   r%   r  r  )
rC   r  r  r  r   r   r  r,  r   r  )r)   r  r+   r   r  r  r  s          r-   test_antider_ppolyz$TestBPolyCalculus.test_antider_ppoly[  s    i##D))GCJJrNN##JJ}%%1a[['++[1qub)),))!,,R00,))!,,R00u5	J 	J 	J 	J 	J 	Jr3   c                 t   t           j                            d          }t          j        |                    d                    }|                    d          }t	          ||                                          }|j        dd         }t           ||dz
             ||dz             dd           d S )	Nr  r   r  r=   rh   rA   r   r  r  )rC   r  r  r  r   r  r+   r   r  s         r-   test_antider_continuousz)TestBPolyCalculus.test_antider_continuousg  s    i##D))GCJJrNN##JJw1a[[''))T!B$Z2:2:U	@ 	@ 	@ 	@ 	@ 	@r3   c                 |   t           j                            d          }t          j        |                    d                    }|                    d          }t	          ||          }t          j        |          }t          |                    dd          |                    dd          ddd           d S )	Nr  r   r  r   rh   r  F)r   r   rd  )	rC   r  r  r  r   r   r  r   r  )r)   r  r+   r   r  r  s         r-   rf  z TestBPolyCalculus.test_integrateq  s    i##D))GCJJrNN##JJw1a[['++Q**Q**UU	T 	T 	T 	T 	T 	Tr3   c                    dgg}ddg}t          ||          }t          |                    dd          t          j        d          dd           t          ||d          }t          j        |                    dd                    sJ t          |                    ddd	          t          j        d          dd           d S )
Nrh   r   r%   r:   r   F)r   rd  r  T)r   r   r  rC   r   rv   )r)   r   r+   r$  b1s        r-   test_integrate_extrapz'TestBPolyCalculus.test_integrate_extrapz  s    SEF!QKK 	Aq))2:b>>"U	4 	4 	4 	4 1aU+++xQ**+++++Qt<<
2UU	D 	D 	D 	D 	D 	Dr3   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 rl  )rC   rL   r   r  r   r  r   r  rm  s         r-   rp  z)TestBPolyCalculus.test_integrate_periodic  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Jr3   c                    dgg}ddg}t          ||          }t          j        ddd          }t           |                    d          |           |                                |          dd           t           |                    d          |           |                    d          |          dd           d S )Nrh   r   r  rA   r  r  )r   rC   r,  r   r  r  )r)   r   r+   r$  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 	0r3   N)r/   r0   r1   r  r  r  rX  r  r  r  rf  r  rp  r  r2   r3   r-   r  r    s        
 
 
 , , ,A A A0 0 0(8 8 8
J 
J 
J@ @ @T T TD D DK K K00 0 0 0 0r3   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  r>   r%   rh   r   r  r7  ffffff?)r   r   r  r  r   )r)   r+   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(((((r3   c                    t           j                            d          }d\  }}t          j        |                    |                    }|                    ||dz
  f          }t	          ||          }t          j        |          }t	          j        |          }t          j        |d         |d         d          }	t           ||	           ||	                     t           ||	           ||	                     d S r  )
rC   r  r  r  r   r   r  r  r,  r   )
r)   r  r  r
  r+   r   r  r  r  r  s
             r-   test_bp_from_pp_randomz*TestPolyConversions.test_bp_from_pp_random  s    i##D))1GCJJqMM""JJ1Q3x  1a[[#B''(,,[1qub))22'''2B(((((r3   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  r>   rh   r  r%   r7  r  )r   r   r  r  r   )r)   r+   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(((((r3   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  r>   rh   r  r%   )r   r'   	TypeErrorr  r   r  )r)   r+   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)r/   r0   r1   r  r  r  r  r2   r3   r-   r  r    sP        	) 	) 	)) ) )	) 	) 	)
' 
' 
' 
' 
'r3   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   rh   r%   r>   r:   rs   r   _construct_from_derivativesr   )r)   rv  s     r-   test_make_poly_1z)TestBPolyFromDerivatives.test_make_poly_1  s6    .q!aS1#>>RH%%%%%r3   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   rh   )ru   ru   ru   r%   r>   )r:   rm  ru   )r:   g      ru   r  r)   rv  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+++++r3   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   rh   r  r  )ru   竪?g@r  )r  r%   r>   )ru   gUUUUUU	@g
@r  r%   r>   )ru   r  rs   r  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.../////r3   c                    t           j                            d          }t           j        d|                    d          f         }t           j        d|                    d          f         }t	          j        dd||          }t	          |d d d f         ddg          }t          d          D ]X}t           |d          ||         d           t           |d	          ||         d           |                                }Yd S )
Nr  r   r9   rh   r  r;   Frc  ru   )	rC   r  r  r   r   r  r  r   r  )r)   r  yaybr   r  r  s          r-   test_make_poly_12z*TestBPolyFromDerivatives.test_make_poly_12  s    i##E**U1cjjmm#$U1cjjmm#$-aB;;1QQQW:1v&&q 	! 	!ABBrFFBqEE::::BBrFFBqEE::::BB	! 	!r3   c                 d   t           j                            d          }ddg}d\  }}|                    |ddddf          }t          ||          }t          j        ||          }t          ||          }t          j        ddd          }	t           ||	           ||	                     d S )	Nr  r   rh   )r   r9   r%   r>   r  r   )rC   r  r  r   _raise_degreer,  r   )
r)   r  r+   r
  r  r   r  rv  r  r  s
             r-   test_raise_degreez*TestBPolyFromDerivatives.test_raise_degree
  s    i##E**F1JJ1aA''1a[[ A&&Bll[Ar""2B(((((r3   c                 N    t          t          t          j        ddgdg           d S )Nr   rh   r'   rm   r   r  rX   s    r-   
test_xi_yiz#TestBPolyFromDerivatives.test_xi_yi  s%    j%"81a&1#FFFFFr3   c                 `    g d}dgdgdgg}t          t          t          j        ||           d S )Nr   r   rh   r   r  )r)   r/  r   s      r-   test_coords_orderz*TestBPolyFromDerivatives.test_coords_order  s9    YYcA3_j%"8"bAAAAAr3   c                 T   g d}ddgdgddgddgg}t          j        ||          }|j        j        dk    sJ |                                }dD ]X}t           ||          t          j        d                     t           ||          t          j        d                     Yd S )Nr  r   )r  r>   )r;   r7  ru   r  gffffff?r:   r)  r;   )r   r  r   r  r  r   rC   r   )r)   r/  r   r  ppdr  s         r-   
test_zerosz#TestBPolyFromDerivatives.test_zeros  s    \\!fqcAq6Aq6*#B++tzV####mmoo2 	6 	6BBBrFFBJsOO444CCGGRZ__5555	6 	6r3   c                     t           j                            d          t          j        d t	          |dz             D                       }fdt	          |dz             D             }||fS )Nr  c                     g | ]
}d |dz  z  S )ru   r%   r2   )r   r  s     r-   r  z<TestBPolyFromDerivatives._make_random_mk.<locals>.<listcomp>.  s     777qad777r3   rh   c                 :    g | ]}                               S r2   )r  )r   r  r
  r  s     r-   r  z<TestBPolyFromDerivatives._make_random_mk.<locals>.<listcomp>/  s#    000cjjmm000r3   )rC   r  r  r   r  )r)   r  r
  r/  r   r  s     `  @r-   _make_random_mkz(TestBPolyFromDerivatives._make_random_mk+  sp    i##D))Z77E!A#JJ7778800000U1Q3ZZ0002vr3   c                 
   d\  }}|                      ||          \  }}t          j        ||          }t          |dz            D ];t	           ||          fd|D                        |                                }<d S )Nr9   r   r%   c                      g | ]
}|         S r2   r2   )r   yyr  s     r-   r  z;TestBPolyFromDerivatives.test_random_12.<locals>.<listcomp>8  s    $<$<$<2RY$<$<$<r3   )r  r   r  r  r   r  )r)   r  r
  r/  r   r  r  s         @r-   test_random_12z'TestBPolyFromDerivatives.test_random_122  s    1%%a++B#B++1a4[[ 	! 	!EBBrFF$<$<$<$<$<$<$<===BB	! 	!r3   c           	          d\  }}|                      ||          \  }}t          t          t          j        fi t          ||d           d S )Nr  r   r/  r   orders)r  r'   rm   r   r  r   r)   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 	0r3   c           
          d\  }}|                      ||          \  }}t          j        ||d|z  dz
             t          t          t          j        fi t          ||d|z             d S )Nr  r%   rh   r  r  )r  r   r  r'   rm   r   r  s        r-   test_orders_too_highz-TestBPolyFromDerivatives.test_orders_too_highA  s    1%%a++Br2ac!e4444j%"8 	2 	2"AaC000	2 	2 	2 	2 	2r3   c           	      ,   d\  }}|                      ||          \  }}d}t          j        |||          }t          |dz  dz             D ]N}t	           ||dd         dz
             ||dd         dz                        |                                }Ot          j         ||dd         dz
             ||dd         dz                       rJ d}t          j        |||          }t          |dz            D ]N}t	           ||dd         dz
             ||dd         dz                        |                                }Ot          j         ||dd         dz
             ||dd         dz                       rJ d S )	Nr  r9   r  r%   rh   rA   r  r  )r  r   r  r  r   r  rC   allclose)r)   r  r
  r/  r   r  r  r  s           r-   test_orders_globalz+TestBPolyFromDerivatives.test_orders_globalI  s   1%%a++B #B5999uaxz"" 	! 	!ABBr!B$x%/00""R"X5E2F2FGGGBB;rr"QrT(U"233RR1R458H5I5IJJJJJ
 #B5999uax 	! 	!ABBr!B$x%/00""R"X5E2F2FGGGBB;rr"QrT(U"233RR1R458H5I5IJJJJJJJr3   c           	         d\  }}|                      ||          \  }}d t          |          D             }t          |dd                   D ]\  }}t          j        |||          }t          ||         dz  dz             D ]>}	t           ||dz
             ||dz                        |                                }?t          j         ||dz
             ||dz                       rJ d S )N)r  r   c                     g | ]}|d z   S )rh   r2   )r   os     r-   r  z>TestBPolyFromDerivatives.test_orders_local.<locals>.<listcomp>e  s    ***A!a%***r3   rh   rA   r  r%   r  )	r  r  r  r   r  r   r  rC   r  )
r)   r  r
  r/  r   r  r  r+   r  r  s
             r-   test_orders_localz*TestBPolyFromDerivatives.test_orders_locala  s   1%%a++B**q***b2h'' 	A 	ADAq'Bv>>>B6!9>A-.. % %1u9rr!e)}}===]]__{22a%i==""QY--@@@@@@	A 	Ar3   c                 :   t           j                            d          }d\  }}t          j        |                    |dz                       }|                    |dz   |dddf          }t	          j        ||          }|j        j        d|z  |dddfk    sJ d S )Nr  )r  r9   rh   r  r  r   r%   )rC   r  r  r  r   r  r   r  )r)   r  r  r
  r/  r   r  s          r-   test_yi_trailing_dimsz.TestBPolyFromDerivatives.test_yi_trailing_dimsm  s    i##D))1WSZZ!__%%ZZ1aAq)**#B++tzac1aA.......r3   c                    t          j        d          }t          j        ddgdgdgg|          }t	           |d          t          j        d                     t          j        d          }t          j        ddgdgdgg|          }t	           |d          t          j        d                     d}t          j        ddgdgdgg|          }t	           |d          t          j        d                     d}d S )Nrh   r   r  )rC   int32r   r  r   r   int64)r)   r  ra  s      r-   test_gh_5430z%TestBPolyFromDerivatives.test_gh_5430u  s    
 !"Aq6QC!:fEEEAAaDD"*Q--000!"Aq6QC!:fEEEAAaDD"*Q--000"Aq6QC!:fEEEAAaDD"*Q--000r3   N)r/   r0   r1   r  r  r  r  r  r  r  r  r  r  r  r  r  r   r"  r&  r2   r3   r-   r  r    s       & & &
, 
, 
,0 0 0
! 
! 
!) ) )G G GB B B
	6 	6 	6  ! ! !0 0 02 2 2K K K0
A 
A 
A/ / /    r3   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ej        j        d
             ZdS )TestNdPPolyc                    t           j                            d          }|                    dd          }t          j        ddd          }|                    d          }t          ||f          } ||f          }t          |d d d d d f         ||                                          }t          ||           d S )Nr  r  r9   r   rh   r  r   )	rC   r  r  r  r,  r   r5  r  r   )r)   r  r   r+   r/  ra  v1v2s           r-   test_simple_1dzTestNdPPoly.test_simple_1d  s    i##D))HHQNNK1c""XXc]]AtQuXX1QQQqqqX;2..4466Br3   c           
         t           j                            d          }|                    dddd          }t          j        ddd          }t          j        ddd          d	z  }|                    d
          }|                    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 )Nr  r  r9   r  r  r   rh   r   r%   r   r   r  *   )Nr   r   r   rh   )rh   r   )r%   r>   )r   r%   r  r  )rC   r  r  r  r,  r}  r_  r   fillr   r   evaluate_ndrH   rL   intcc_r  _ppoly2d_evalr   r   r  )r)   r  r   r+   r*   r/  r   r*  r+  ra  r  s              r-   test_simple_2dzTestNdPPoly.test_simple_2d  s   i##D))HHQ1a  K1c""K1c""A%XXc]]XXc]]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 	6r3   c           	      D   t           j                            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  }|                    d          }|                    d          }|                    d          }t          ||||f          }	dD ]I}
 |	|||f|
          }t          ||||f||||
          }t          ||t          |
                     Jd S )Nr  r  r9   r  r  r   r   r   rh   r%   r=   r>   (   )Nr   r   r   r   rh   r   rh   r   r   )r%   r>   r   )r  r   r%   r1  r  )	rC   r  r  r  r,  r   _ppoly3d_evalr   r  )r)   r  r   r+   r*   r,   r/  r   zira  r  r*  r+  s                r-   test_simple_3dzTestNdPPoly.test_simple_3d  s*   i##D))HHQ1aA&&K1c""K1c""A%K1c""A%XXb\\XXb\\XXb\\A1ay!! 	6 	6BBB<B'''Bq1a)RRB???BBDHH55555		6 	6r3   c           
      |   t           j                            d          }|                    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  }|                    d          }|                    d          }|                    d          }	|                    d          }
t          |||||f          } ||||	|
f          }t          |||||f|||	|
          }t          ||           d S )Nr  r  r9   r  r  r   r   r=   r   r   rh   r%   r>   r   r  )rC   r  r  r  r,  r   _ppoly4d_evalr   )r)   r  r   r+   r*   r,   ur/  r   r>  uira  r*  r+  s                 r-   test_simple_4dzTestNdPPoly.test_simple_4d  s1   i##D))HHQ1aAr2..K1c""K1c""A%K1d##Q&K1d##Q&XXb\\XXb\\XXb\\XXb\\A1a|$$QBB  1q!QlBB;;Br3   c                    t           j                            d          }|                    dd          }t          j        ddd          }t          ||f          }|                    dg          }t          ||          }|                                }t          |j	        |j	                   |
                    dg          }t          ||          }|
                    d          }t          |j	        |j	                   d S )	Nr  r  r9   r   rh   r  r1  r%   )rC   r  r  r  r,  r   r  r   r   r   r  )r)   r  r   r+   ra  r,  r  dp1s           r-   test_deriv_1dzTestNdPPoly.test_deriv_1d  s    i##D))HHQNNK1c""At \\aS\!!1a[[mmooce$$$ !%%1a[[""ce$$$$$r3   c                 V   t           j                            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          ||||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 )Nr  r  r9   r  r  r   r   r   rh   r%   r=   r>   r1  r;  )r   r   r>   )rC   r  r  r  r,  r   r   	transposer  r   r   r  )
r)   r  r   r+   r*   r,   ra  r  r,  rF  s
             r-   test_deriv_3dzTestNdPPoly.test_deriv_3d  s   i##D))HHQ1aA&&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	; 	; 	; 	; 	;r3   c                    t           j                            d          }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          }|                    d          }|                    d          }	|                    d          }
t           |||	|
f          ||	dz  z  |
dz  z  t          d	          t          d          z  z             d S )Nr  )rh   rh   rh   r>   r  r9   r   rh   r  r9   r%   r  r>   )rh   r   r  )r   r%   r   r  )
rC   r  r  rl   r,  r   r  r  r   r   )r)   r  r   r+   r*   r,   ra  r-  r/  r   r>  s              r-   test_deriv_3d_simplez TestNdPPoly.test_deriv_3d_simple	  s4   i##D))G&''K1c""A%K1c""A%K1c""A%A1ay!!i((y))XXb\\XXb\\XXb\\BB<((RU
RU*eAhhuQxx.?@	B 	B 	B 	B 	Br3   c                   
 t           j                            d          }|                    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 ]d}
                    |          }t          
fd|t          dd          gd	z            \  }}	t          ||dddt!          |                     ed S )Nr  r  r9      r  r   rh   r   r%   r>   rA   r0  )r   r&   )r  r  )r4  r8  c                      | |f          S r   r2   )r+   r*   ra  s     r-   <lambda>z/TestNdPPoly.test_integrate_2d.<locals>.<lambda>>	  s    11aV99 r3   gh㈵>)epsrelepsabs)r   F)r   r   rd  r   )rC   r  r  r  r,  rI  rH   r  rq   r   fix_continuityr   r  r    r   r   r  )r)   r  r   r+   r*   cxrangesre  ig2err2ra  s             @r-   test_integrate_2dzTestNdPPoly.test_integrate_2d"	  sF   i##D))HHQ2r""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$TE$(LL2 2 2 2 2		2 		2r3   c           	         t           j                            d          }|                    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          }|                    d          }|                    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 )Nr  r  r9   r  rN  r  r   r   rh   r%   r   r>   r   )r8  r  rk   r<  r;  r  )	rC   r  r  r  r,  r   integrate_1dr  r   )r)   r  r   r+   r*   r,   ra  rB  vr!  r$  pxpaxpypaypzpazs                    r-   test_integrate_1dzTestNdPPoly.test_integrate_1dC	  s   i##D))HHQ1b"b))K1d##Q&K1d##Q&K1d##Q& A1ay!!HHSMMHHSMM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Dr3   c                 T   t           j                            d                              d          }t          j        ddd          }t          j        ddd          dz  }t          j        ddd	          d
z  }t          ||||f          }fd}t          d	||           d S )Nr  )r  r9   r  r  r   r   r  r   rh   r   r   r%   r=   r>   c                                          d          }                     d          }                     d          } ||||f           d S )Nr9  r  )r  )r  r  r/  r   r>  r  s        r-   r  z/TestNdPPoly.test_concurrency.<locals>.worker_fnh	  sX    "%%B"%%B"%%BCRr3   )rC   r  default_rngr  r,  r   r   )r)   r   r+   r*   r,   ra  r  r  s          @r-   r  zTestNdPPoly.test_concurrency]	  s    i##E**KK/K00K1c""K1c""A%K1c""A%A1ay!!	 	 	 	 	 	 Iq11111r3   N)r/   r0   r1   r,  r7  r?  rD  rG  rJ  rL  rX  rb  rX  rY  thread_unsafer  r2   r3   r-   r(  r(    s             6 6 6:6 6 6(     (% % %(; ; ;>B B B(2 2 2BE E E4 [2 2 2 2 2r3   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
  |         |cxk    r|dz            k     sn J t           fdt           j        d                   D                       }|||ddf<   |S )z&Evaluate piecewise polynomial manuallyr%   r   rh   Nc              3   Z   K   | ]%}|f         j         d          |z
  dz
  z  z  V  &dS )r   rh   N)r  )r   r
  r   r  r  s     r-   r   z _ppoly_eval_1.<locals>.<genexpr>{	  sW       , , !A#QWQZ\!^,, , , , , , ,r3   )	rC   zerosr_  r  r  r   searchsortedsumr  )	r   r+   xpsrI  r  r  rZ  r  r  s	   `      @@r-   r5  r5  q	  s   
(CHHagaj)
*
*C3 	 	266R!VVvC!!!HOAr""Q&1Itr""""AacF"""""" , , , , , ,qwqz**, , , , ,AaaaCJr3   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   rA   rh   )Nc           	      n    g | ]1}t          j        |d d f         d d |         f                   2S r   )rC   r  )r   r
  Vindxsr  s     r-   r  z!_ppoly_eval_2.<locals>.<listcomp>	  sA    PPPArva111gr!!!U1X+77PPPr3   )r  rC   r  
empty_likecompressrj  clipr_  takevanderrL   r  )r`  breaksr   r2  r!  r$  K	saveshaper  maskr  r  valuesrp  rq  r  s                @@@r-   r6  r6  	  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Jr3   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 orderrh   )rm   r   )r+   r*   r"  s      r-   _dpowr}  	  sO     	1uu3444	
QqAEAIq!!AAJ..r3   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
    Nr/  r   r%   r   rA   rh   rC   r}  r_  r   r  r  zipr   rj  r  r}  )r   rb  r   ynewr  rI  nxnyjoutr+   r*   j1j2s1s2r  k1k2s                     r-   r6  r6  	  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		Jr3   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   r>   r   rA   rh   r%   r  )r   rb  r   r  znewr  rI  r  r  nzr  r+   r*   r,   r  r  j3r  r  s3r  r  r  k3s                           r-   r=  r=  	  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		Jr3   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   r  r   rA   rh   r%   r>   r  )r   rb  r   r  r  unewr  rI  mxmymzmur  r+   r*   r,   rB  r  r  r  j4r  r  r  s4r  r  r  r  k4s                                 r-   rA  rA  	  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		Jr3   r   )?scipy._lib._array_apir   r   r   r   rX  r   r'   numpyr   r	   r
   r   rC   scipy.interpolater   r   r   r   r   r   r   r   r   r   r   r   r   r   scipy.specialr   r   r   scipy._lib._gcutilsr   r   scipy._lib._testutilsr   scipy.integrater    r!   r#   r5   r]  rg  rY  r[  r4  r  r  r  r  r  r  r  r(  r5  r   r6  r}  r6  r=  rA  r2   r3   r-   <module>r     s              + * * * * *  ( ( ( ( ( ( ( ( ( ( ( (    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - & % % % % % % % $ $ $ $ $ $ ; ; ; ; ; ; ; ; 9 9 9 9 9 9 ! ! ! ! ! !             U U U U U U U Up6 6 6 6 6 6 6 6r; r; r; r; r; r; r; r;j $79J#KLL: : ML:,XL XL XL XL XL XL XL XLv,& ,& ,& ,& ,& ,& ,& ,&^kE kE kE kE kE kE kE kE\E= E= E= E= E= E= E= E=P\0 \0 \0 \0 \0 \0 \0 \0~.' .' .' .' .' .' .' .'bd d d d d d d dNg2 g2 g2 g2 g2 g2 g2 g2T    .0V    .	/ 	/ 	/! ! ! !H% % % %P* * * * * *r3   