
    Ugt                    J   d dl mZmZmZmZmZmZ d dlmZ	 d dlZd dl
mZmZmZmZ d dl
Zd dlmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZm Z  d dlm!Z! d dl"m#Z#m$Z$ d d	l%m&Z& d d
lm'Z'  G d d          Z( G d d          Z) G d d          Z* G d d          Z+ G d d          Z, G d d          Z- G d d          Z. G d d          Z/ G d d          Z0 G d d          Z1 G d d           Z2 G d! d"          Z3d# Z4ej5        fd$Z6d% Z7d)d&Z8d)d'Z9d)d(Z:dS )*    )assert_assert_equalassert_almost_equalassert_array_almost_equalassert_array_equalassert_allclose)raisesN)mgridpisinpoly1d)interp1dinterp2dlagrangePPolyBPolysplrepsplev
splantidersplintsprootAkima1DInterpolatorNdPPolyBSpline)pochgamma)_ppoly)assert_deallocatedIS_PYPY)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       g/var/www/surfInsights/venv3-11/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   g      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rd   rV   r]   )rA      rA   )rA   )rA   rA   r   rg   r%   r>   rd   axisrV   r=   ri   )rA   rA   rA   r2   r;   )r   rE   rF   rB   rK   rN   rI   onesr'   
ValueErrorrH   rJ   rO   rL   rM   r)   rd   s     r-   test_validationzTestInterp1D.test_validationL   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          t          | j        | j                  j                   t          t          | j        | j        d          j                    t          t          | j        | j                  j                   t          t          | j        | j        d          j                    t          t          j        t          | j        | j                  j                             t          t          | j        | j        d          j        d           t          t          | j        | j        d          j        d           t          t          | j        | j                  j
        d           t          t          | j        | j                  j
        d           t          t          | j        | j        d	          j
        d           t          t          | j        | j                  j        | j                   t          t          | j        | j                  j        | j                   t          t          | j        | j                  j        | j                   d S )
NF)copy)bounds_error      @rV   )      ?r:   r   rg   rj   )r   r   rE   rF   rp   rq   rB   isnanrV   r   ri   rN   rO   r   r+   r*   rW   s    r-   	test_initzTestInterp1D.test_init   s    	48,,1222HTXtxe<<<AABBB48,,9:::HTXtxeDDDQQRRR$(DH55@AABBBXdhSAAAL	 	 	XdhZHHHS	! 	! 	!Xdh116:::Xdh	227;;;Xdh	:::?CCC8DHdh77948DDD8DHdh77948DDD8DHdi88:DIFFFFFr3   c                    t          | j        | j                  }t          | j        d d d         | j        d d d                   }t           || j                  | j                   t           |d          t	          j        dg                     t           |g d           |g d                     t          | j        d d d         | j        d d d         d          }t           || j                  | j                   t          | j        d d d         | j        d d d         d          }t          t          || j                   t          | j        | j                  }t          | j        d d d         | j        d d d d df                   }t           || j                   || j                             d S )NrA   333333?g333333@gffffff@      @F)assume_sortedT)	r   rE   rF   r   rB   rK   r'   rl   rN   )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"(C5//JJJ!"3"3OOO"D"D"*(???";";	= 	= 	= &dhtttndhtttn49; ; ;!"4"4TX">">III&tx"~tx"~59; ; ; 	j"5tx@@@ !4955!)$(44R4.$)AAAtttG:L!M!M!--"9"9"8"8"B"B	D 	D 	D 	D 	Dr3   c                 :    dD ]}|                      |           d S )N)r]   r^   )_check_linearrm   s     r-   test_linearzTestInterp1D.test_linear   s2    ) 	% 	%Dt$$$$	% 	%r3   c                    t          | j        | j        |          }t           || j                  | j                   t           |d          t	          j        dg                     t           |g d          t	          j        g d                     t          | j        | j        |d          }t           |g d          g dd	           t          |dd
          }t          t          t           | j        | j        fi | d S )Nrc   rx   ry   re   rf         r   	      )rA   r   r   r   +=rtolTrd   rV   rq   
r   rE   rF   r   rB   rK   r   dictr'   rl   )r)   rd   r|   extrapolatoroptss        r-   r   zTestInterp1D._check_linear   s&   DHdhT:::!((48"4"4dh???!((3--3%AAA!((???";";"$(???";";	= 	= 	=  $(+8: : :___55&U	4 	4 	4 	4 ,!%' ' ' 	j(DHdhGG$GGGGGr3   c                    t           j        t           j        t           j        t           j        fD ]\}t          j        d|          }|} t          ||d          |          }t          |j        |           t          ||d           ]g d}t           j
        dd	g} t          ||          |          }t          ||d           d S )
N   dtyper]   rc   V瞯<atolr   rg   r%   r   rg   )rB   float16float32float64
longdoublerC   r   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4(((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 ]S}|                    |          }	|D ]9}
t          |||
d          }t           ||	          |d| d	| d
|            :Td S )N)r^   r\   r_   r`   r   r=   r   rr   Frd   rq   Hz>z,  r   err_msg)rB   r   r   r   	complex64
complex128rC   expastyper   r   )r)   dt_rdt_rcspline_kindsdtxr+   dtyr*   dtnxnewrd   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'$360E0E#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g                     t           |d          t	          j        dg                     t           |g d          t	          j        g d                     d S )Nr`   rc   rx         ?ry   r   rE   rF   r   rB   rK   r)   r|   s     r-   
test_cubiczTestInterp1D.test_cubic   s    DHdhW===!((48"4"4dh???!((3--3%AAA!((3--3%AAA!((???";";"$(???";";	> 	> 	> 	> 	>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 )NrZ   rc   rx   rt   r   ry   r:   rz   rz   re   rf   r   r   r   r   r   r   r   Tr   r   r)   r|   r   r   s       r-   test_nearestzTestInterp1D.test_nearest  sF    DHdhY???!((48"4"4dh???!((3--">>>!((3--">>>!((???";";"$(<<<"8"8	; 	; 	;  $(+8: : :___55$5	2 	2 	2 	2 ,!%' ' ' 	j(DHdhGG$GGGG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[   rc   rx   rt   r   r:   ry   r   re   rf   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$5	2 	2 	2 	2 ,!%' ' ' 	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 )%Nra   rc   rx   rt   r   ry   r:   r7   rz   re   rf   r   r   r   r   r   rA   r9   r         r9   r            rh   r   r9   r   r=   r   Tr   r   r   rg   rA   rd   rV   r{   r   rA   r   rg   r%   r>   r9   rg   rA   r%   r   rg   rA   r   rg   Fr@   r   rE   rF   r   rB   rK   r   r   rN   rO   r   r'   rl   rT   rU   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 )$Nrb   rc   rx   r:   r   ry   )rr   rz   rz   re   rf   r   r   r   r   r   r   r9   r   r=   r   r   rh   r   rg   r   Tr   r   r   r   r   rA   r   r   Fr?   r   r   s          r-   	test_nextzTestInterp1D.test_nextr  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\   rc   rx   rt   r   ry   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'   rl   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                 0   t          | j        | j        | j        d|          }t	           |d          t          j        | j                             t	           |d          t          j        | j                             t	           |dgdgdgdggg          t          j        | j                             t	          |                    t          j        g d                    t          j        g dg d	g                     t          | j        | j        d
|          }|                     |dd           |                     |dd           |                     |g dd           |                     |g dd            |g d           d S )NF)rV   rq   rd   gffffff&@g333333g333333)@gL3@)r   r;   r7         "@      &@)TFFFF)FFFFTT)rq   rd   r   r   )r;   r   r;   )r;   rt         5@r   )r;   r7   r   )	r   rE   rF   rV   r   rB   rK   _check_boundsr   )r)   rd   extrap10raises_bounds_errors       r-   _bounds_checkzTestInterp1D._bounds_check  s   DHdh4?).T; ; ; 	88D>>28DO+D+DEEE88D>>28DO+D+DEEE88tftftftf%E$FGG8DO44	7 	7 	7811!x(C(C(CDDF F8%G%G%G%G%G%G%I J J	K 	K 	K
 'tx,02 2 2 	  !4dDAAA  !4dDAAA  !46F6F6FMMM  !46F6F6FMMMOOO,,,,,r3   c                    t          j        d                              t                    }t          j        d                              t                    }t	          |||t           j        d          } ||dz
            }t          t          j        |d                              t          |t           j	        t           j        |d d         f                    d S )Nr=   Fr   rg   r   rA   )
rB   rC   r   intr   r   r   ru   r   r_)r)   rd   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A   !"beBFAcrcFN&;<<<<<r3   c                 d    dD ],}|                      |           |                     |           -d S )N)r]   r`   rZ   ra   rb   r^   r\   r_   )r   r   rm   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          d           t           |d          d           t           |ddg          ddg           | j        | j        | j        | j        fD ]}t          | j        ||ddd	          }t           |d          d           t           |d          d           t           |ddg          d           t          | j        ||ddd	          }t           |d          d           t           |d          d           |j	        d
k    r#ddgg|j
        d         z  g|j
        d         z  }nddgg|j
        d         z  }t           |ddg          |           g d}| j        | j        fD ](}t          t          t           | j        ||d|d	           )t          | j        | j        |d|d	          }t           |d          g dgdz             t           |d          g dgdz             t           |ddg          ddgddgddgggdz             ddg}t          t          t           | j        | j        |d|d	           | j        | j        | j        fD ]}t          | j        ||d|d	          }ddg}|j	        d
k    r|g|j
        d         z  }t           |d          |           t           |d          |           ddgddgg}|j	        d
k    r|g|j
        d         z  }t           |ddg          |           t          j        g d          df}| j        | j        fD ](}t          t          t           | j        ||d|d	           )t          | j        | j        |d|d	          }t           |d          d           t           |d          g dgdz             t           |ddg          ddgddgddgggdz             t          j        ddg          df}t          t          t           | j        | j        |d|d	           | j        | j        | j        fD ]}t          | j        ||d|d	          }t           |d          d           ddg}|j	        d
k    r|g|j
        d         z  }t           |d          |           ddgddgg}|j	        d
k    r|g|j
        d         z  }t           |ddg          |           g dg df}| j        | j        fD ](}t          t          t           | j        ||d|d	           )t          d          D ]}|dk    rt!          d |D                       }t          | j        | j        |d|d	          }t           |d          g dgdz             t           |d          g dgdz             t           |ddg          ddgddgddgggdz             ddgddgf}t          t          t           | j        | j        |d|d	           | j        | j        | j        fD ]}t          | j        ||d|d	          }ddg}|j	        d
k    r|g|j
        d         z  }t           |d          |           ddg}|j	        d
k    r|g|j
        d         z  }t           |d          |           ddgddgg}|j	        d
k    r|g|j
        d         z  }t           |ddg          |           ddgddgg}| j        | j        | j        fD ](}t          t          t           | j        ||d|d	           )t          d          D ]}|dk    rt          j        |          }t          | j        | j        |d|d	          }t           |d          ddgddgg           t           |d          ddgddgg           t           |ddg          ddgddggddgddggg           ddgddggddgddggf}| j        | j        | j        fD ](}t          t          t           | j        ||d|d	           )t          d          D ]}|dk    r4t          j        |d                   t          j        |d                   f}t          | j        | j        |d|d	          }t           |d          ddgddgg           t           |d          ddgddgg           t           |ddg          ddgddggddgddggg           d S )N)d   Fr   r=   r   r   rA   )rd   ri   rV   rq   r>   rg   r   )r      ,  r%   r   r   )r   8r   r   c              3   >   K   | ]}t          j        |          V  d S r   )rB   rK   ).0r   s     r-   	<genexpr>z1TestInterp1D._check_fill_value.<locals>.<genexpr>P  s*      "C"C128A;;"C"C"C"C"C"Cr3   i  i  ii0)r   rE   rF   r   rR   rS   rP   rQ   rD   ndimshaper'   rl   rB   rK   rangetuple)r)   rd   interpr*   resultrV   iis          r-   _check_fill_valuezTestInterp1D._check_fill_value  s    $(DH4%0uF F F!&&**c222!&&++t444!&&#r"3"3dC[AAA )TY	48< 	A 	AAdgqt"),5B B BF%ffRjj#666%ffSkk3777%ffc2Y&7&7=== dgqt")45J J JF%ffRjj#666%ffSkk4888v{{ #;-!'!*45
B+3%ffc2Y&7&7@@@@ %__
)TY' 	N 	NA*h!juN N N N N$'494b%/eE E E!&&**.?!.CDDD!&&++/@1/DEEE!&&#r"3"3Sz8;Sz8;Sz7C 6DFG6H 	I 	I 	I
 3Z
j(DGTYT*5	J 	J 	J 	J)TY1 	A 	AAdgqt")3%I I IF3ZFv{{ AGAJ.%ffRjj&999%ffSkk6:::Cj3*-Fv{{ AGAJ.%ffc2Y&7&7@@@@ h11122C8
)TY' 	N 	NA*h!juN N N N N$'494b%/eE E E!&&**c222!&&++0B0B0B/Ca/GHHH!&&#r"3"3c{8<c{8<c{7D 6EGH6I 	J 	J 	J
 hd|,,c2
j(DGTYT*5	J 	J 	J 	J)TY1 	A 	AAdgqt")3%I I IF%ffRjj#666D\Fv{{ AGAJ.%ffSkk6:::SkD#;/Fv{{ AGAJ.%ffc2Y&7&7@@@@ )((///:
)TY' 	N 	NA*h!juN N N N N(( 		N 		NBQww""C"C
"C"C"CCC
dgtyt")3%I I IF%ffRjj???2Ca2GHHH%ffSkk4F4F4F3G!3KLLL%ffc2Y&7&7D#;<@#;<@#;;H :IKL:M N N N N TlS#J/
j(DGTYT*5	J 	J 	J 	J)TY1 	A 	AAdgqt")3%I I IF3ZFv{{ AGAJ.%ffRjj&999D\Fv{{ AGAJ.%ffSkk6:::SkD#;/Fv{{ AGAJ.%ffc2Y&7&7@@@@ Cj4,/
)TY1 	N 	NA*h!juN N N N N(( 
	K 
	KBQwwXj11
dgtyt")3%I I IF%ffRjjC:d|2LMMM%ffSkkS#Jt3MNNN%ffc2Y&7&7C:<?:;G<@$<<@$<;I:J K K K K d|eU^4SzD$<02
)TY1 	N 	NA*h!juN N N N N(( 	L 	LBQww hz!}55rx
17N7NO
dgtyt")3%I I IF%ffRjjC:d|2LMMM%ffSkkT4L5:EN4D E E E%ffc2Y&7&7D#;<@#;;H<A4=<A4=;J:K L L L L	L 	Lr3   c                 :    dD ]}|                      |           d S N)r]   rZ   r`   r^   r_   r\   ra   rb   )r  rm   s     r-   test_fill_valuezTestInterp1D.test_fill_value  s4    1 	) 	)D""4((((	) 	)r3   c                     t          | j        | j        d          }t          |j        d           d|_        t          |j        d           d S )Ng     ^@rs   g     t@)r   rE   rF   r   rV   )r)   r  s     r-   test_fill_value_writeablez&TestInterp1D.test_fill_value_writeable  sN    $(DH???V&...!V&.....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          t           |d          t          j                             t           |d          j
        d           t          | j        | j        |          }t           |d          t	          j        dd	g                     t           |t	          j        ddg                    t	          j        ddgd	d
gg                     t          | j        | j        d|          }t           |d          t	          j        ddg                     t           |t	          j        ddg                    t	          j        ddgddgg                     t	          j        ddgddgg          }t           ||          t	          j        ddgddggddgd
dggg                     t           ||          t	          j        ddgdd	ggddgddggg                     d S )Nrc   rr   r7   r:         @rx   r2   rt   r         (@r   ri   rd   rz   g      *@g      .@g      1@r8         @g      ,@)r   rE   rF   r   rB   rK   r   
isinstancendarrayr   r   rN   rO   )r)   rd   r|   	interp210	interp102x_news         r-   _nd_check_interpzTestInterp1D._nd_check_interp  s    DHdhT:::!((28b"XBx4H+I+I"J"J"$(RHr2h+?"@"@	B 	B 	B 	
88C=="*55666XXc]]("--- TXtyt<<<	!))B--2s)1D1DEEE!))BHb"X,>,>"?"?"$(RHsCj+A"B"B	D 	D 	D TXtyqtDDD	!))B--3*1E1EFFF!))BHb"X,>,>"?"?"$(RHr2h+?"@"@	B 	B 	B 2r(RH-..!))E"2"2"$(b"XBx,@.13Z#s,D,F #G #G	H 	H 	H 	"))E"2"2"$(b"XSz,B.0"XSz,B,D #E #E	F 	F 	F 	F 	F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   <   t           ||          j        |	|           d S )N)   r9         r  r   r  )r%   r>   rg   r  rg   )	rB   rC   prodrG   	enumerater   r   listr   )
r)   rd   ar*   nsr+   r,   rI   bs
             r-   _nd_check_shapezTestInterp1D._nd_check_shape  s    LL)BIbgajj!!)1-aLL 	D 	DDAq	!AAAD111A%aaddAt<<<<5!!))'22S8BQAwwAa!eH%aaeek1dCCCCC	D 	Dr3   c                 d    dD ],}|                      |           |                     |           -d S )N)r]   r`   r^   r_   rZ   r\   ra   rb   )r  r"  rm   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)
rg         @r>   g@r  g@g@g       @g      #@r=         ?       @rc   rA   rg   r=      )rB   rK   r   r   r   linspacerealimag)	r)   r   rd   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  )r/  rB   r   r   rm   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   rg   皙?皙?)rB   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)rZ   ra   rb   )r   2      r   rc   )rB   rK   int8r   r   )r)   rd   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                 R   t          j        d                              t                    }|                                }t           j        |d<   dD ]T}t          |||          } |ddg          }t          t          j        |          	                                           Ud S )Nr=   r  )r\   r^   rc   g@r  )
rB   rC   r   floatrp   r   r   r   isfiniteall)r)   r+   r*   rd   irvalss         r-   test_local_nanszTestInterp1D.test_local_nans  s     IbMM  ''FFHHv!' 	- 	-D!QT***B2sCj>>DBK%%))++,,,,	- 	-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 ]y}t          j        |          } ||           ||          }	}t          t          j	        |	          
                                           t          |j        |	j                   zd S )Nr   r>   )r_   r`   rc   r  rg   r9   )rB   rC   r   r=  rp   r   r   asarrayr   ru   r?  r   r   )
r)   r+   r*   ynrd   r@  irnr   outoutns
             r-   test_spline_nanszTestInterp1D.test_spline_nans  s    IaLL&&FFHHVVXX1* 	4 	4D!QT***B1bt,,,CQFaVaV$45 4 4z$''BqEE33q66T**,,---SY
3333	4	4 	4r3   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=   r`   rc   )rB   rk   r   rC   r'   rl   r   )r)   r+   r*   s      r-   test_all_nanszTestInterp1D.test_all_nans  s    GBKK"& IbMM:&& 	) 	)Q((((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   
A**A.1A.c                 p   t          j        dd          }t          j        | dz            }t          j        ddd          }dD ]o}||j        _        d|j        _        dD ]R}t          |||	          } ||          }t          t          j        |                                                     Spd S )
Nr   r=   rr   r   r4  TFF)r]   rZ   r\   r^   r_   r`   rc   )	rB   rC   r   flags	writeabler   r   r>  r?  )r)   r+   r*   r   xnew_writeablerd   r   rA  s           r-   test_read_onlyzTestInterp1D.test_read_only  s    IaFA28yAs##+ 	1 	1N#1DJ  %AG" 1 1Q---qwwD))--//0000	1	1 	1r3   rd   )r]   rZ   r[   ra   rb   c                 
   t          dgdg|dd          }t           |g d          g d           t          dgdg|d	          }t          t          d
          5   |d           d d d            d S # 1 swxY w Y   d S )Nr   r  Fr<   )rd   rq   rV   )rg   r   r%   )r%   r  r=   Tr   zx_new is abovematchr:   )r   r   r'   rl   )r)   rd   r   s      r-   test_single_valuezTestInterp1D.test_single_value*  s    
 cUQCd ') ) )11[[[>>:::666cUQCd>>>:-=>>> 	 	AcFFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A88A<?A<N)r]   )+r/   r0   r1   rX   rn   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  r  r"  r$  rB   r   r/  r1  pytestmarkskipifr   r6  r;  rB  rI  rK  rQ  parametrizerU  r2   r3   r-   r5   r5   !   s       '! '! '!RB9 B9 B9HG G G&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@D D D D' ' ' $&=x 6 6 6 6 5 5 5 [(EFF  GF0 0 0	- 	- 	-4 4 4$) ) )1 1 1 [G     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%   rg   r  r>   )r   rB   rC   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   rc  r2   r3   r-   r[  r[  8  s#        6 6 6 6 6r3   r[  c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )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:   rt   rr   r:   rz         @rh  g@ffffff@rr   r;   r&   rt   r   r&        @g      @ri  g      @g@g333333!@g#@r8   r;   g      ?r:   r   g     @?g     @g.袋@g^@gn @gGNB@grcߖ@g	I@rr   rB   rC   rK   r   r   r)   r+   r*   akr,  r   s         r-   	test_evalz!TestAkima1DInterpolator.test_evalC  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   rg  makimamethodrj  )r;   gF??r:   g?g?gg{'@g>J(j@g?@gq@g@g9~@go
@rr   rm  rn  s         r-   test_eval_modz%TestAkima1DInterpolator.test_eval_modP  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   rg  r:   rj  rl  )rB   rC   rK   column_stackr   r   rn  s         r-   test_eval_2dz$TestAkima1DInterpolator.test_eval_2da  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   rg  )r   r%   r%   r   r:   rg   rr   r  rj  )   r%   r%   rl  )rB   rC   rK   emptyr   r   )r)   r+   y_r*   ro  r,  r   yi_s           r-   test_eval_3dz$TestAkima1DInterpolator.test_eval_3dr  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   )rB   rK   vstackTr   r   )r)   r+   r*   ro  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   rg  z9Extending a 1-D Akima interpolator is not yet implementedrS  )rB   rC   rK   r   rV  r	   r(   extend)r)   r+   r*   ro  rT  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   rg  z `method`=invalid is unsupported.rS  invalidrs  )rB   rC   rK   rV  r	   r(   r   )r)   r+   r*   rT  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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re   Fr   )	equal_nanr   r   r  rA   r>   r   )rB   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  sK   KAr""qDCR((q%a===&q!???%a===4eTTTTXXe__QqS)271bf+=+=>>>XXe__RU+RWQ-?-?@@@D999775>>PUVVVVwwu~~E::::::r3   c                    t          j        dd          }t          j        g d          }|d|z  z
  }d}t          j        t
          t          f|          5  t          ||           d d d            d S # 1 swxY w Y   d S )Nr;   r   rg  y               @zBPassing an array with a complex.*|Casting complex values to real.*rS  )rB   rC   rK   rV  warnsRuntimeWarningDeprecationWarningr   )r)   r+   r*   msgs       r-   r1  z$TestAkima1DInterpolator.test_complex  s    Ib#HEEEFF1H S\>+=>cJJJ 	& 	&1%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s   A66A:=A:N)r/   r0   r1   rp  ru  rx  r~  r  r  r  r  r1  r2   r3   r-   re  re  B  s        $ $ $$ $ $"$ $ $"$ $ $2B B B" " "8 8 8; ; ;&	& 	& 	& 	& 	&r3   re  c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestPPolyCommonc                     t          j        ddgddgddgg          }t          j        g d          }t          t          t          ||           t          t          t
          ||           d S )Nrg   r  r%   r9   r>   r  )r   rg   r&   )rB   rK   r'   rl   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 )Nrg   r%   r   )r'   rl   r   rW   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%   rg   r   )rB   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rtSU+++rtSU+++suce,,,suce,,,,	- 	-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   rg   r  r%   r9   r  r   F)endpoint)	rB   r  r  r)  r  r   r   r  r   )r)   r+   r   rI   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=      rg   r%   r   )rB   r  r  sortuniformr  r   r   r   r  r   r   r+   )r)   r  r+   r   r  r_  p1p2s           r-   test_extend_descendingz&TestPPolyCommon.test_extend_descending  s   
	qGBI%%aR0011INN519agaj1na;;5> 	* 	*CAq		AQqqq"1"uXq"v&&BIIa122h"##'''Qqqq"##vY"##''BIIa3B3i3B3(((rtQS)))rtQS)))rtQS)))rtQS))))	* 	*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 ],} |||          }t           ||          j        d
           -t
          t          fD ]} ||d         |          }t          t          j         |d                    d           t          t          j         |t          j	        d                              d           t          t          |t          j	        ddgdggt                               d S )Nr  r   r   r9   r  r  rz  r>   r  )r>   r  r9   r  r  ).r   r   r   r&   r2   r4  r5  皙?r   )rB   r  r  r  r  r   r   r   r   rK   r'   rl   object)r)   r   r+   xpr  r_  s         r-   
test_shapezTestPPolyCommon.test_shape  sW   
	tINN1b!Q**GBINN2&&''Y^^Aq!!5> 	7 	7CAq		A2o6666 5> 	V 	VCAlOQ''A!!C&&))2...!!BHSMM"2"233R888*aC:u2EV)T)T)TUUUU	V 	V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  rz  )r   r   y      ?333333?r9   r   )	rB   r  r  r  r*  r+  r   r   r   )r)   r+   r   c_rec_imr  r  r_  p_rep_imnus              r-   test_complex_coefz!TestPPolyCommon.test_complex_coef%  s   
	uGBI$$R(())IW%%3VQVdYa  5> 	> 	>CC1IIss4||SSq\\TtA > >"b		R==="b		R====>	> 	>r3   c                 X   t           j                            d           t           j                            dddddd          }|j        }t           j                            d          }d	D ]}|j        |d
z            }t          j        t           j                            |d
z                       }t          t          fD ],} ||||          }t          |j	        j        |||dz            |d |         z   ||dz   d          z               ||          }	|d |         |j        z   |d|z   d          z   }
t          |	j        |
            ||||          
                                 ||||          
                    d           ||||                                           ||||                              d          fD ]}t          |j        |j                   .dD ]6}t          t          fD ]%}t          t          |fi t          |||           &7d S )Nr  r>   r  r9   r  r  r   )rg   r%   r   rg   r%   r>   rg   rj   r%   )rA   r  r9   r  )r   r+   ri   )rB   r  r  r  r   r  r   r   r   r   
derivativeantiderivativeri   r'   rl   r   )r)   r   c_sr  ri   mr+   r  r_  res
targ_shaper  s               r-   	test_axiszTestPPolyCommon.test_axis1  sc   
	uINN1aAq!,,gYf%%  	2 	2DQA	qs++,,Au~ 2 2C14(((QSY d1f-ETE
:Sa\IK K Kaee $Z"(2S4\A
SY
333 3q!$///::<<3q!$///::1==3q!$///>>@@3q!$///>>qAAC 2 2B !!&1111	22" " 	L 	LDu~ L Lj#KKQT1J1J1JKKKKL	L 	Lr3   N)r/   r0   r1   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  P          r3   r  c                       e Zd ZdS )TestPolySubclassing.BNr  r2   r3   r-   Br  S  r  r3   r  c                 8   t           j                            d           t          j        t           j                            d                    }t           j                            d          }|                     ||          |                     ||          fS )Nr  r>   )r  r%   )rB   r  r  r  r  r  )r)   r+   r   s      r-   _make_polynomialsz%TestPolySubclassing._make_polynomialsV  sm    
	tGBI$$Q''((IV$$vva||TVVAq\\))r3   c                     |                                  \  }}||fD ]0}|                                }t          |j        |j                   1|                                }t          |j        |j                   d S r   )r  r  r   	__class__r  )r)   r  bpr_  pdppas         r-   test_derivativez#TestPolySubclassing.test_derivative\  sy    ''))Bb 	4 	4ABbl3333!!R\3=11111r3   c                    t           j                            d           t          j        t           j        dt           j                            d          df                   }t           j                            t          |                    }t          ||d          }| j        	                    |          }t          |j        | j                   d S )Nr  r   r   rg   r   )rB   r  r  r  r   r  r]  r   r  from_spliner   r  )r)   r+   r*   splr  s        r-   test_from_splinez$TestPolySubclassing.test_from_splinee  s    
	tGBE!RY^^B//2344INN3q66""QQV$$R\46*****r3   c                    |                                  \  }}| j                            |          }t          |j        | j                   | j                            |          }t          |j        | j                   d S r   )r  r  from_bernstein_basisr   r  r  from_power_basis)r)   r  r  r  bp1s        r-   test_conversionsz$TestPolySubclassing.test_conversionsn  so    ''))Bf))"--S]DF+++f%%b))S]DF+++++r3   c                     g d}dgdgdgg}| j                             ||          }t          |j        | j                    d S )Nr   rg   r%   r>   )r  from_derivativesr   r  )r)   r+   r*   r  s       r-   test_from_derivativesz)TestPolySubclassing.test_from_derivativesw  sM    IIS1#sOV$$Q**R\46*****r3   N)r/   r0   r1   r   r  r   r  r  r  r  r  r  r2   r3   r-   r  r  O  s            E       E   * * *2 2 2+ + +, , ,+ + + + +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                     t          j        ddgddgddgg          }t          j        g d          }t          ||          }t           |d          d	           t           |d
          d           d S )Nrg   r  r%   r9   r>   r  r   r&   rg   333333?Q@ffffff?p=
ף@rB   rK   r   r   r)   r   r+   r_  s       r-   test_simplezTestPPoly.test_simple  s|    Hq!fq!fq!f-..H[[[!!!QKK# 4555# @AAAAAr3   c                 \   t          j        ddgddgddgg          }t          j        g d          }t          ||d	          }t           |d
          d           t           |d          d           t           |d
d          d           t           |dd          d           d S )Nrg   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///# :;;;$!KLLL#q		;///$

$788888r3   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 ]h}||j        _        ||j        _        t          ||          } ||          }t          t          j        |                                                     id S )Nrg   r  r%   r9   r>   r  r  )r   r4  r5  r  r  rM  )rB   rK   r   rN  rO  r   r>  r?  )r)   r   r+   r   rO  r   rA  s          r-   rQ  zTestPPoly.test_read_only  s    Hq!fq!fq!f-..H[[[!!x&&a
++++& 	- 	-I )AG )AGaA1T77DBK%%))++,,,,	- 	-r3   c           	         d }t           j                            d           d}dD ]}t          j        t           j                            dd|dz                       }t           j                            dd|dz   |f	          }t          j        |          }|d d d f         t          j        |dz             d d d
d f         z  } ||          }||z  }	t          j        |j        |	          }
|
|z  }t          ||d          }t          |d d d d d
f         |d d d
         d          }t           j                            ddd          }t           ||           ||          d           t           ||d           ||d          d           |                                }|                                }t           ||           ||          d           |                                }|                                }t           j                            ddd          D ]\  }}|                    ||          }|                    ||          }t          ||d           t           ||           ||          z
   ||           ||          z
  d           |                                }|                                }t          |t          j        |          d           d S )Nc                     t          j        | dz                                 dd          }t          j        | dz             }t          ||          }|d d dd d df         S )Nrg   rA   )rB   rC   rG   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=   rg   r   r%   sizerA   Tr  r   r  r   vIh%<=r   r9   r%   -q=)rB   r  r  r  r  diffrC   dotr  r   r   r  r  	integrateroots)r)   r  r  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   	! 	! 	! 		q %	C %	CA	))!RQ7788A""2q	1~">>B

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

????BBvqMM22fa==uEEEE==??D==??DDDLL$$v,,UCCCC
 $$&&D$$&&D	))#r6:: , ,1Q**Q**u59999Q$$q'' 14477TT!WW3D%*, , , , , hhjjGhhjjGGRWW%5%5EBBBBBK%	C %	Cr3   c                    t           j                            ddddd          }t          j        g d          }t	          ||          }t          |j        j        |j                   t          |j        j        |j                   t           |d          j        |j        dd                     t           |t           j                            dd                    j        d|j        dd          z              |	                                }t          |j        j        d	           |
                                }t          |j        j        d
           d S )Nr  r%   rg   r>   r  r  r9   r9   r  r9   r%   rg   r%   r>   )r  r%   rg   r%   r>   )rB   r  r  rK   r   r   r+   r   r   r  r  )r)   r   r+   r_  dpips         r-   test_multi_shapezTestPPoly.test_multi_shape  s   INN1aAq))H[[[!!!QKKQSY(((QSY(((QQsVV\17122;///QQry~~a++,,2FQWQRR[4HIII\\^^RTZ111RTZ11111r3   c                 F   t           j                            d           t          j        ddgddgddggt                    }t          j        g d	          }t          j        ||          }t           |d
          d           t           |d          d           d S )Nr  rg   r  r%   r9   r>   r  r   r  r  r  r  r  )rB   r  r  rK   r=  r   construct_fastr   r  s       r-   test_construct_fastzTestPPoly.test_construct_fast  s    
	tHq!fq!fq!f-U;;;H[[[!! A&&# 4555# @AAAAAr3   c                 (   t           j                            d           t           j                            ddd          }t          j        t           j        dt           j                            d          df                   }t          ||          }t           j        d         }t          |||          }t           ||          |           t          |d d d d df         ||          }t           ||          d d df         |           d S )	Nr  r>   r      r   r   rg   )r  r&   gQ?333333?)
rB   r  r  r  r  r   r   _ppoly_eval_1r   _ppoly_eval_2)r)   r   r+   r_  r  expecteds         r-   #test_vs_alternative_implementationsz-TestPPoly.test_vs_alternative_implementations  s    
	tINN1b"%%GBE!RY^^B//2344!QKKU&' Ar**"x((( 111QQQq51b11"aaac
H-----r3   c                     t           j                            d           t          j        t           j        dt           j                            d          df                   }t           j                            t          |                    }t          ||d          }t          j	        |          }t          j
        ddd          }t           ||          t          ||                     t          | }t          j	        |          }t           ||           ||                     |\  }}	}
dD ]C}t          ||	|
|          }t          j	        |          }t          |j        |j                   Dd S )	Nr  r   r   rg   r  r   )NTFr  )rB   r  r  r  r   r  r]  r   r   r  r)  r   r   r   r   re   )r)   r+   r*   r  r  r,  r!  ppptr   r  extrapr_  s                r-   r  zTestPPoly.test_from_spline  sO   
	tGBE!RY^^B//2344INN3q66""QQs##[As##2b#/// SM""B2''' 1a) 	7 	7F1aV444A!!$$A6666	7 	7r3   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%   rg   )r   r  r%      r  r   rg   r%   )	rB   r  r  rK   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t           j                            d          df                   }t           j                            t          |                    }t          ||d          }t          j	        |          }t          j
        ddd          }t          dd          D ]+}t           |||          t          |||                     ,d S )Nr  r   r   rg   r  r   r>   )rB   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_eval  s    
	tGBE!RY^^B//2344INN3q66""QQs##[As##1++ 	< 	<BBBr2JJb#r(:(:;;;;	< 	<r3   c                 <   t           j                            d           t          j        t           j        dt           j                            d          df                   }t           j                            t          |                    }t          ||dd          }t          j	        |          }t          j
        ddd          }t          dd          D ]>}t           |||           |                    |          |          d	|fz  
           ?d S )Nr  r   r   rg   r9   r   r  r   r=   zdx=%dr  )rB   r  r  r  r   r  r]  r   r   r  r)  r   r   r  r>  s          r-   r  zTestPPoly.test_derivative%  s    
	tGBE!RY^^B//2344INN3q66""QQ!$$$s##[As##2,, 	5 	5BBBr2JJ(9b(9(9"(=(=$+reO5 5 5 5 5	5 	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 )Nrt   r   rg   )r   r   r  r   r+   )r)   r_  s     r-   test_antiderivative_of_constantz)TestPPoly.test_antiderivative_of_constant2  s    B4&1a&!!Q%%'')51#saV+D+D+FGGGQ%%'')51#saV+D+D+FGGGGGr3   c                 N   t          ddggg d          }|                                }t          |j        ddgddgg           t          |j        g d           t          |                    dd          d           t           |d           |d          z
  d           d S )Nrt   r&   r   rg   r   r%   r   )r   r  r   r   r+   r   r  )r)   r_  qs      r-   #test_antiderivative_regression_4355z-TestPPoly.test_antiderivative_regression_43558  s    B9+yyy))QSAs8aV,---QS)))$$$Aq))3///!qqttS)))))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%   rg   )r   r         ?)rg   rg   rg   r   )r   r   rI        ?)      ?gUUUUUU?r&   r   r   )r   r   g      ?rJ  g*?)r   rK  rg   r%   )
rB   r  r  rK   r  r   r  r   r+   r   )	r)   r   iciicr+   r  ippiippiipp2s	            r-   test_antiderivative_simplez$TestPPoly.test_antiderivative_simpleA  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           j                            t          |                    }t          ||dd          }t          j        |          }t          dd          D ]}|
                    |          }|                    |          }t          |j        |j                   t          |          D ]x}|                    |          }d	}	|	|j        d d
         z  d|	z
  |j        dd          z  z   }
t           ||j        dd                     ||
          dd||fz             yd S )Nr  r   rg   r?   r%   r9   rB  r=   r
  rA   r   z
dx=%d k=%d)r   r   )rB   r  r  r)  r  r]  r   r   r  r   r  r  r   r   r+   )r)   r+   r*   r  r  r?  rN  r  r  rr  s              r-   !test_antiderivative_vs_derivativez+TestPPoly.test_antiderivative_vs_derivativeY  sy   
	tK1b!!1$INN3q66""QQ!$$$s##2,, 	K 	KB##B''C ..$$CBD#%((( 2YY K KnnQ''SU3B3Z<1q5#%)*;;CE!""IH%)<2q'3IK K K K KK	K 	Kr3   c                 `   t           j                            d           t          j        t           j        dt           j                            d          df                   }t           j                            t          |                    }t          ||dd          }t          j	        |          }t          dd          D ]f}|                    |          }t          ||          }t          j        ddd          }t           ||          t          ||          d	
           gd S )Nr  r   r   rg   r9   rB  r=   r   r   r   )rB   r  r  r  r   r  r]  r   r   r  r   r  r   r)  r   r   )	r)   r+   r*   r  r  r?  r  spl2r,  s	            r-   test_antiderivative_vs_splinez'TestPPoly.test_antiderivative_vs_splineq  s	   
	tGBE!RY^^B//2344INN3q66""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%   rg   r%   r%   )r%   rg   r>   r>   r  gA?g_p   ?g:0yE>r   )rB   rK   r  r   r  r   r  r   )r)   r   r+   r_  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           	      n   t           j                            d           t          j        t           j        dt           j                            d          df                   }t           j                            t          |                    }t          ||dd          }t          j	        |          }d\  }}|
                    ||          }|                                }t          | ||           ||          z
             t          |t          |||                     d\  }}|
                    ||d	
          }t          | ||           ||          z
             t          t          j        |
                    ||d
                                                               d S )Nr  r   r   rg   r9   rB  )r  ?)r  r[  Tr  F)rB   r  r  r  r   r  r]  r   r   r  r  r  r   r   r   ru   r?  )	r)   r+   r*   r  r  r  r!  igrN  s	            r-   test_integratezTestPPoly.test_integrate  sm   
	tGBE!RY^^B//2344INN3q66""QQ!$$$s##1\\!Q!!CCFFSSVVO,,,F1a--...1\\!QD\11CCFFSSVVO,,,a>>??CCEEFFFFFr3   c                 F   t          j        g d          }t          j        ddgddgddgddgg          }dD ]g}||j        _        t	          ||          }|                    dd	          }t          t          j        |                                                     hd S )
Nrg   r%   r  r;   r   r:          rt   rM  rg   r  )	rB   rK   rN  rO  r   r  r   r>  r?  )r)   r+   r   rO  r  rA  s         r-   test_integrate_readonlyz!TestPPoly.test_integrate_readonly  s    HYYYHr2hc
RIBx@AA& 	- 	-I )AGaA;;q!$$DBK%%))++,,,,	- 	-r3   c                    t          j        g d          }t          j        ddgddgddgddgg          }t          ||d          }|                                } |d	           |d
          z
  }t	          |                    d
d	          |           t	          |                    dd          |           t	          |                    dd          d|z             t	          |                    dd           |d           |d          z
             t	          |                    dd           |d           |d
          z
   |d	          z    |d          z
             t	          |                    dd           |d           |d
          z
   |d	          z    |d          z
             t	          |                    dd           |d           |d
          z
   |d	          z    |d          z
  d	|z  z              t	          |                    dd           |d           |d          z
             t	          |                    dd           |d           |d          z
             t	          |                    dd           |d           |d          z
  d|z  z
             d S Nr_  r;   r   r:   r`  rt   r  r  r  rg   r   ir  r%   r   r&  rk  r9   g      /@r  r   rA   r>   i)rB   rK   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///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                 @   t          j        ddd          dz  }t          j        d|z            }t          ||dd          }t	          j        |          }|                                }||dk    |d	k    z           }t          |t          |          d
           d S )Nr   rg   r(  r%   r?   r>   rB  gV瞯Ҽg     ?r   r   )	rB   r)  r   r   r   r  r  r   r   )r)   r+   r*   r  r  rS  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   rK  r   )r   r  r-  rt   r  g333333?r:   rg   )	rB   rK   r  r   r   r  r   rp   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[[288:: #rvz:	< 	< 	< VVXX
1aaa4EBll399U++ #rvz:	< 	< 	< 	< 	<r3   c                    dgdgg}ddg}t          ||          }t          |                                dt          j        g           t          |                    d          dt          j        g           t          |                    d          g            ddgddgg}g d}t          ||          }t          |                                dt          j        dt          j        g           t          |                    d          dt          j        dt          j        g           t          |                    d          g            d S )Nr   rg   r   )r   r   r  rB   r   rk  r  s       r-   test_roots_all_zerozTestPPoly.test_roots_all_zero  s   S1#JF!QKK17799q"&k2221771::26{3331771::r***VaVII!QKK17799q"&!RV&<===1771::261bf'=>>>1771::r*****r3   c                 "   t          j        g dg dg          j        }t          j        g d          }t          ||          }t	          |                                ddg           t	          |                    d          dg           d S )N)rg   r   rA   )rA   r   r   r   r   r   Fr  )rB   rK   r  r   r   r  r)   r   r+   r  s       r-   test_roots_repeatedzTestPPoly.test_roots_repeated  s    
 Hjjj***-..0HZZZ  1a[[288::Aw///288866<<<<<r3   c                 <   t          j        dgdgg          j        }t          j        g d          }t          ||          }t	          |                                dg           t	          |                    d          g            t	          |                    d          dg           t	          |                    dd          g            t	          |                    d          g            t	          |                    dd          g            d S )Nrg   rA   r  r&   F)discontinuityr   )rB   rK   r  r   r   r  rk  rr  s       r-   test_roots_discontzTestPPoly.test_roots_discont  s    HqcB4[!!#H[[[!!1a[[288::u---288%888"=== 	288C==3%000288Cu8==rBBB288C=="---288Cu8==rBBBBBr3   c                    t           j                            d           d}dD ]}t          dd          D ]r}t          j        t           j        ddt           j                            d          z  df                   }dt           j                            |dz   t          |          dz
  dd	          z  dz
  }t          ||          }dt           j                                        fD ]}|	                    |d
|          }t          d          D ]}	t          d	          D ]}
||	|
f         }|j
        dk    ri||j
        z  } |||          d d |	|
f         } ||d|          d d |	|
f         }d|dt          |           }t          ||z
  |z  dd|           tt          |dk    t          |                     d S )Nr  r   rM  r  r=   r?   r%   rg   r>   F)ru  re   r  )r  re   (z) r = r   r   r   )rB   r  r  r   r  r   r  r]  r   rk  r	  reprr   r   )r)   numre   r  r+   r   r  r*   rS  ijrrvalcmpvalr  s                  r-   test_roots_randomzTestPPoly.test_roots_random  s   
	t( 	= 	=Kq" = =IbeArBINN2,>,>'>$BCDDbinnU1Wc!ffQh1===A1a[[RY--//0 = =A%[QQA"1XX = =!&q 
= 
=A!"1Q3B!w{{ #rw&(b&E&E&Eaaa!e&L)+B18C*E *E *EEFQQqU*L&I+&I&ItBxx&I&I /Q&0@!$8;!= != != !=
====, 	c	499%%%%%r3   c           
         t           j                            d           t          dd          D ]}t           j                            |dd          }|dk    r
d|d d ddf<   dt           j                                        fD ]:}t          j        |j        t                    }t          j	        ||           |dk    r4t          t          j        |                                                     rd}d}t          |          D ]A}|||d f         ||dz
  |z
  z  z  z  }|t          ||d f         ||dz
  |z
  z  z            z  }Bt          j        d	
          5  ||z  }d d d            n# 1 swxY w Y   |                                }|t          j        |                    }t!          |dd           <d S )Nr  rg   r      r>   )rg   r%   rg   r   r   ignore)r  g|=r   )rB   r  r  r   r  r{  r   complexr   _croots_poly1r   ru   r?  abserrstateravelr   )r)   r  r   r*   wr  cresr{  s           r-   test_roots_crootszTestPPoly.test_roots_croots0  s   
	tq" 	4 	4A	q!S))AAvv"!!!Aa%))++, 4 4HQWG444$Q***66BHQKKOO--...q 8 8A1QtV9q1Q3q5z11CC!D&	A!AJ 6777DD[222    4KC                             iikk28C==.)QU33333#4	4 	4s    E22E69E6c           	      0   t          j        g dg          j        }t          j        ddg          }dD ]}t          |||          }|                                }|                                }|du rt          t          j         |ddg                                                               t          t          j         |ddg                                                               t          t          j         |ddg                                                               t          |
                                dg            t           |ddg          d	d
g           t          t          j         |ddg                                                                t          t          j         |ddg                                                                t          |
                                ddg           d S )Nr   r   rg   TFNr  F皙皙?gGz?gzGʿrA   )rB   rK   r  r   r  r  r   ru   r?  r   r  r   any)r)   r   r+   re   r  pp_dpp_is          r-   r  zTestPPoly.test_extrapolate_attrN  s   Hjjj\""$HaV. 	5 	5Kq!555B==??D$$&&De##T3K115577888tSk!2!2337799:::tSk!2!2337799:::RXXZZ!----D#;(H1EFFFBHTT4+%6%677;;===>>>BHTT4+%6%677;;===>>>

QG4444	5 	5r3   N)r/   r0   r1   r  r   rQ  r!  r'  r*  r1  r  r<  r@  r  rD  rG  rQ  rT  rW  rY  r]  ra  rg  ri  rn  rp  rs  rv  r  r  r  r2   r3   r-   r  r  ~  s       B B B	9 	9 	9- - -/C /C /Cb2 2 2B B B. . .7 7 7.4 4 4
< 
< 
<5 5 5H H H* * ** * *0K K K0' ' ' # # #G G G*
- 
- 
-K K K0	4 	4 	4< < <&+ + + 
= 
= 
=C C C& & &>4 4 4<5 5 5 5 5r3   r  c                   P    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZdS )	TestBPolyc                 h    ddg}dgg}t          ||          }t           |d          d           d S )Nr   rg   r>   r4  rr   r   r   r)   r+   r   r  s       r-   r  zTestBPoly.test_simplee  s?    FSE1a[[3$$$$$r3   c                 l    ddg}dgdgg}t          ||          }t           |d          d           d S )Nr   rg   r>   r4  ggfffff@r  r  s       r-   test_simple2zTestBPoly.test_simple2k  sC    FS1#J1a[[300000r3   c                 p    ddg}dgdgdgg}t          ||          }t           |d          d           d S )Nr   rg   r>   r  r5  g433333@r  r  s       r-   test_simple3zTestBPoly.test_simple3q  sR    FS1#sO1a[[39	; 	; 	; 	; 	;r3   c                 t    ddg}dgdgdgdgg}t          ||          }t           |d          d           d S )Nr   rg   r%   r  g:On?r  r  s       r-   test_simple4zTestBPoly.test_simple4x  sY    FS1#sQC 1a[[3 "( 	) 	) 	) 	) 	)r3   c                 x    ddg}dgdgdgdgdgg}t          ||          }t           |d          d           d S )Nr   rg   r   r%   r  g	h"l@r  r  s       r-   test_simple5zTestBPoly.test_simple5  s]    FS1#sQC!%1a[[3 "( 	) 	) 	) 	) 	)r3   c                    g d}ddgddgddgg}t          ||d          }t           |d          d           t           |d	          d
           t           |dd          d           t           |d	d          d           d S )Nr   rg   r>   r>   r   r%   r  r  g333333@gHzG?g[(\?rg   r  r  r  s       r-   r   zTestBPoly.test_periodic  s    IIVaVaV$1aZ0003,,,4.1113

H---4[11111r3   c           	         t           j                            d           d}dD ]7}t          j        t           j                            dd|dz                       }t           j                            dd|dz   |f          }|d d d	                                         }t          ||d
          }t          |d d d d d	f         |d d d	         d
          }t           j                            ddd          }t           ||           ||          d           t           ||d           ||d          d           |                                }	|                                }
t           |	|           |
|          d           |	                                }|	                                }t           j                            ddd          D ]\  }}|
                    ||          }|
                    ||          }t          ||d           t           ||           ||          z
   ||           ||          z
  d           9d S )Nr   r>   r  r=   rg   r  r4  r  rA   Tr  r   r  r   r
  r   r  r  )rB   r  r  r  r  rp   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  sX   
	q 	, 	,A	))!RQ7788A""4EAIq>"BBBDDbDBr1$///Br!!!TTrT'{AdddG>>>BY&&sB44FBBvJJ6

????BBvqMM22fa==uEEEE==??D==??DDDLL$$v,,UCCCC
 $$&&D$$&&D	))#r6:: , ,1Q**Q**u59999Q$$q'' 14477TT!WW3D%*, , , , ,	,/	, 	,r3   c                 ^   t           j                            ddddd          }t          j        g d          }t	          ||          }t          |j        j        |j                   t          |j        j        |j                   t           |d          j        |j        dd                     t           |t           j                            dd                    j        d|j        dd          z              |	                                }t          |j        j        d	           d S )
Nr  r%   rg   r>   r  r  r9   r#  r$  )
rB   r  r  rK   r   r   r+   r   r   r  )r)   r   r+   r_  r%  s        r-   r'  zTestBPoly.test_multi_shape  s    INN1aAq))H[[[!!!QKKQSY(((QSY(((QQsVV\17122;///QQry~~a**++117122;&	( 	( 	( \\^^RTZ11111r3   c                     ddg}dgdgdgg}t          ||          }d}|dz  }t           ||          dd|z
  z  d|z
  z  d|z  d|z
  z  z   d|z  |z  z              d S )Nr   r%   r>   rg   r  r4  r  )r)   r+   r   r  xvalr   s         r-   test_interval_lengthzTestBPoly.test_interval_length  s    FS1#sO1a[[1H4!qs)QqS/E!GQqSM"AAE!G"KLLLLLr3   c                     g d}ddgddgddgg}t          ||          }t           |d          d           t           |d          d           d S )	Nr  r>   r   r%   r  gGzG?333333?r  r  r  s       r-   test_two_intervalszTestBPoly.test_two_intervals  sf    IIVaVaV$1a[[3---300000r3   c           	         ddg}dgdgdgg}t          ||          }dD ](}t          |||          }|                                }|du r}t          t          j         |d	d
g                                                               t          t          j         |d	d
g                                                               t          t          j         |d	d
g                                                                t          t          j         |d	d
g                                                                *d S )Nr   r%   r>   rg   r  r  r  Fr  g @)r   r  r   rB   ru   r?  r  )r)   r+   r   r  re   bp_ds         r-   r  zTestBPoly.test_extrapolate_attr  s>   FS1#sO1a[[. 	? 	?Kq!555B==??De##T3K115577888tSk!2!2337799::::BHRRs__5599;;;<<<BHTT4+%6%677;;===>>>>	? 	?r3   N)r/   r0   r1   r  r  r  r  r  r   r!  r'  r  r  r  r2   r3   r-   r  r  d  s        % % %1 1 1; ; ;) ) )) ) )
2 
2 
2 ,  ,  ,D2 2 2M M M1 1 1? ? ? ? ?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          d           t           |d          d           t           |dd	
           |dd
           |dd
          gg d           t           |dd	
           |dd
           |dd
          gg d           d S )Nr  r>   r   r%   r  r  r  r  rg   r  )r  rz   r;   )r  rt   r   )r   r  r   )r)   r+   r   r  bp_ders        r-   r  z!TestBPolyCalculus.test_derivative  s   IIVaVaV$1a[[sX...sS))) 	CA31rr#!}}}E,,,	. 	. 	.CA31rr#!}}}E$	& 	& 	& 	& 	&r3   c                 <   t           j                            d           d\  }}t          j        t           j                            |                    }t           j                            ||dz
  f          }t	          ||          }t          j        |          }t          |          D ]n}|                                }|                                }t          j	        |d         |d         d          }t           ||           ||                     od S Nr  r9   r   rg   r   rA      )rB   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    
	t1GBI$$Q''((Ia1X&&1a[['++q 	, 	,ABBQqT1R5"--BBBrFFBBrFF++++		, 	,r3   c           	      $   t           j                            d           d\  }}t          j        t           j                            |                    }t           j                            ||dz
  f          }|                                |dz  fD ]|}t          ||          }t          j        |d         |d         d          }t          |          D ]8}t           |||           |	                    |          |                     9}d S )Nr  r  rg   r'  r   rA   r  )
rB   r  r  r  rp   r   r)  r   r   r  )	r)   r  r  r+   r   ccr  r  r{  s	            r-   test_deriv_inplacez$TestBPolyCalculus.test_deriv_inplace  s   
	t1GBI$$Q''((Ia1X&& 6688Q\* 	A 	ABr1BQqT1R5"--B1XX A A2q		+;2==+;+;B+?+?@@@@A	A 	A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   rg   r>   r   r%   r:   r&   g      ?r  r   r   )r   r  rB   r)  r   where)r)   r+   r   r  bixxs         r-   rQ  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        t           j                            d                    }t           j                            d          }t	          ||          }t          j        |d         |d         d          }t           |                                                                |           ||          dd           d S )	Nr  r   r  r=   r%   r>   r   rA   r   r  r  )	rB   r  r  r  r   r)  r   r  r  r)   r+   r   r  r  s        r-   test_der_antiderz"TestBPolyCalculus.test_der_antider%  s    
	tGBI$$R(())I]++1a[[[1quc**8))++6688<<2U	8 	8 	8 	8 	8 	8r3   c                    t           j                            d           t          j        t           j                            d                    }t           j                            d          }t	          ||          }t          j        |          }t          j        |d         |d         d          }t           |	                    d          |           |	                    d          |          dd	           d S )
Nr  r   r  r   rA   r=   r%   r  r  )
rB   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    
	tGBI$$R(())I]++1a[['++[1qub)),))!,,R00,))!,,R00u5	J 	J 	J 	J 	J 	Jr3   c                    t           j                            d           t          j        t           j                            d                    }t           j                            d          }t	          ||                                          }|j        dd         }t           ||dz
             ||dz             dd           d S )	Nr  r   r  r=   rg   rA   r   r  r  )rB   r  r  r  r   r  r+   r   r  s        r-   test_antider_continuousz)TestBPolyCalculus.test_antider_continuous;  s    
	tGBI$$R(())IW%%1a[[''))T!B$Z2:2:U	@ 	@ 	@ 	@ 	@ 	@r3   c                    t           j                            d           t          j        t           j                            d                    }t           j                            d          }t	          ||          }t          j        |          }t          |                    dd          |                    dd          dd           d S )Nr  r   r  r   rg   r  r  )	rB   r  r  r  r   r   r  r   r  )r)   r+   r   r  r  s        r-   r]  z TestBPolyCalculus.test_integrateE  s    
	tGBI$$R(())IW%%1a[['++Q**Q**U	D 	D 	D 	D 	D 	Dr3   c                 `   dgg}ddg}t          ||          }t          |                    dd          dd           t          ||d          }t          t	          j        |                    dd                               t          |                    ddd	          dd           d S )
Nrg   r   r%   r:   r   r   Fr  T)r   r   r  r   rB   ru   )r)   r   r+   r!  b1s        r-   test_integrate_extrapz'TestBPolyCalculus.test_integrate_extrapN  s    SEF!QKK 	Aq))2E:::: 1aU+++a++,,---Qt<<buMMMMMMr3   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 rc  )rB   rK   r   r  r   r  r   r  rd  s         r-   rg  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 )Nrg   r   r  rA   r  r  )r   rB   r)  r   r  r  )r)   r   r+   r!  r  s        r-   test_antider_negz"TestBPolyCalculus.test_antider_negs  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  rQ  r  r  r  r]  r  rg  r  r2   r3   r-   r  r    s        & & &, , ,A A A0 0 0(8 8 8
J 
J 
J@ @ @D D DN N NK K K00 0 0 0 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%   rg   r   r  r4  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                 4   t           j                            d           d\  }}t          j        t           j                            |                    }t           j                            ||dz
  f          }t	          ||          }t          j        |          }t	          j        |          }t          j        |d         |d         d          }t           ||           ||                     t           ||           ||                     d S r  )
rB   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    
	t1GBI$$Q''((Ia1X&&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>   rg   r  r%   r4  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>   rg   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   rg   r%   r>   r:   rr   r   _construct_from_derivativesr   )r)   rm  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   rg   )rt   rt   rt   r%   r>   )r:   rk  rt   )r:   g      rt   r  r)   rm  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   rg   )rg   r%   r>   r  )rt   竪?g@r  )r  r%   r>   )rt   gUUUUUU	@g
@r  r%   r>   )rt   r  rr   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t           j                            d          f         }t           j        dt           j                            d          f         }t	          j        dd||          }t	          |d d d f         ddg          }t          d          D ]H}t           |d           |d          g||         ||         g           |                                }Id S )Nr  r   r9   rg   r  r;   rt   )	rB   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    
	uU1bi&&q)))*U1bi&&q)))*-aB;;1QQQW:1v&&q 	! 	!ARRVVRRVV,r!uben===BB	! 	!r3   c                 x   t           j                            d           ddg}d\  }}t           j                            |ddddf          }t          ||          }t          j        ||          }t          ||          }t          j        ddd          }t           ||           ||                     d S )	Nr  r   rg   )r   r9   r%   r>   r  r   )rB   r  r  r   _raise_degreer)  r   )	r)   r+   r  r  r   r  rm  r  r  s	            r-   test_raise_degreez*TestBPolyFromDerivatives.test_raise_degree  s    
	uF1IaAq!_--1a[[ A&&Bll[Ar""2B(((((r3   c                 N    t          t          t          j        ddgdg           d S )Nr   rg   r'   rl   r   r  rW   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   rg   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                 
   g d}ddgdgddgddgg}t          j        ||          }t          |j        j        dk               |                                }dD ](}t           ||           ||          gddg           )d S )Nr  r   )r  r>   )r;   r4  rt   r  gffffff?r:   r&  r;   )r   r  r   r   r   r  r   )r)   r,  r   r  ppdr  s         r-   
test_zerosz#TestBPolyFromDerivatives.test_zeros  s    \\!fqcAq6Aq6*#B++
f$%%%mmoo2 	9 	9BRRVVSSWW-Bx8888	9 	9r3   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 )rt   r%   r2   )r   r|  s     r-   
<listcomp>z<TestBPolyFromDerivatives._make_random_mk.<locals>.<listcomp>  s     777qad777r3   rg   c                 N    g | ]!}t           j                                      "S r2   )rB   r  )r   r|  r  s     r-   r  z<TestBPolyFromDerivatives._make_random_mk.<locals>.<listcomp>  s)    666abiq!!666r3   )rB   r  r  rD  r   r)   r  r  r,  r   s     `  r-   _make_random_mkz(TestBPolyFromDerivatives._make_random_mk  sk    
	tZ77E!A#JJ77788666651::6662v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>  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_12  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'   rl   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%   rg   r  r  )r  r   r  r'   rl   r   r  s        r-   test_orders_too_highz-TestBPolyFromDerivatives.test_orders_too_high  s    1%%a++Br2ac!e4444j%"8 	2 	2"AaC000	2 	2 	2 	2 	2r3   c           
      \   d\  }}|                      ||          \  }}d}t          j        |||          }t          |dz  dz             D ]N}t	           ||dd         dz
             ||dd         dz                        |                                }Ot          t          j         ||dd         dz
             ||dd         dz                                   d}t          j        |||          }t          |dz            D ]N}t	           ||dd         dz
             ||dd         dz                        |                                }Ot          t          j         ||dd         dz
             ||dd         dz                                   d S )	Nr  r9   r
  r%   rg   rA   r  r  )	r  r   r  r   r   r  r   rB   allclose)r)   r  r  r,  r   r  r  r|  s           r-   test_orders_globalz+TestBPolyFromDerivatives.test_orders_global  s   1%%a++B #B5999uaxz"" 	! 	!ABBr!B$x%/00""R"X5E2F2FGGGBBBK2ad8e#3 4 4bbAbDE9I6J6JKKKLLL
 #B5999uax 	! 	!ABBr!B$x%/00""R"X5E2F2FGGGBBBK2ad8e#3 4 4bbAbDE9I6J6JKKKLLLLLr3   c           
         d\  }}|                      ||          \  }}d t          |          D             }t          |dd                   D ]\  }}t          j        |||          }t          ||         dz  dz             D ]>}	t           ||dz
             ||dz                        |                                }?t          t          j	         ||dz
             ||dz                                   d S )N)r  r   c                     g | ]}|d z   S )rg   r2   )r   os     r-   r  z>TestBPolyFromDerivatives.test_orders_local.<locals>.<listcomp>4  s    ***A!a%***r3   rg   rA   r
  r%   r  )
r  r   r  r   r  r   r  r   rB   r  )
r)   r  r  r,  r   r  r{  r+   r  r|  s
             r-   test_orders_localz*TestBPolyFromDerivatives.test_orders_local0  s   1%%a++B**q***b2h'' 	C 	CDAq'Bv>>>B6!9>A-.. % %1u9rr!e)}}===]]__BBq5yMM22a%i==AAABBBB	C 	Cr3   c                 4   d\  }}t          j        t           j                            |dz                       }t           j                            |dz   |dddf          }t          j        ||          }t          |j        j        d|z  |dddf           d S )N)r  r9   rg   r  r  r   r%   )rB   r  r  r   r  r   r   r   )r)   r  r  r,  r   r  s         r-   test_yi_trailing_dimsz.TestBPolyFromDerivatives.test_yi_trailing_dims<  s    1WRY%%ac**++YqsAq!Q/00#B++RTZ!A#q!Q!233333r3   c                    t          j        d          }t          j        ddgdgdgg|          }t	           |d          d           t          j        d          }t          j        ddgdgdgg|          }t	           |d          d           d}t          j        ddgdgdgg|          }t	           |d          d           d}d S )Nrg   r   r
  )rB   int32r   r  r   int64)r)   r  r_  s      r-   test_gh_5430z%TestBPolyFromDerivatives.test_gh_5430C  s    
 !"Aq6QC!:fEEEAAaDD!$$$!"Aq6QC!:fEEEAAaDD!$$$"Aq6QC!:fEEEAAaDD!$$$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
9 9 9  ! ! !0 0 02 2 2M M M0
C 
C 
C4 4 4    r3   r  c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )TestNdPPolyc                    t           j                            d           t           j                            dd          }t          j        ddd          }t           j                            d          }t          ||f          } ||f          }t          |d d d d d f         ||                                          }t          ||           d S )Nr  r  r9   r   rg   r  r   )	rB   r  r  r  r)  r   r.  r  r   )r)   r   r+   r,  r_  v1v2s          r-   test_simple_1dzTestNdPPoly.test_simple_1dV  s    
	tINN1a  K1c""Y^^C  AtQuXX1QQQqqqX;2..4466Br3   c           
      @   t           j                            d           t           j                            dddd          }t          j        ddd          }t          j        ddd          d	z  }t           j                            d
          }t           j                            d
          }t          j        t          |          dg|j                  }|                    t           j	                   t          j        |                    ddd          ||ft          j        ddgt           j                  t           j        ||f         t          j        ddgt           j                  d|           |                                }t#          |||f||          }t%          ||           t'          |||f          }dD ]V}	 |t           j        ||f         |	          }t#          |||f|||	          }t%          ||t)          |	                     Wd S )Nr  r  r9   r  r  r   rg   r   r%   r   r   r  *   )Nr   r   r   rg   )rg   r   )r%   r>   )r   r%   r  r  )rB   r  r  r  r)  r{  r]  r   fillr   r   evaluate_ndrG   rK   intcc_r  _ppoly2d_evalr   r   ry  )
r)   r   r+   r*   r,  r   r  r  r_  r  s
             r-   test_simple_2dzTestNdPPoly.test_simple_2dd  s   
	tINN1aA&&K1c""K1c""A%Y^^C  Y^^C  Xs2wwl!'222
199S#q11q68QF"':::5R=8QF"':::	 	 	 XXZZ1q!fb"--BA1v@ 	6 	6B25R=R(((Bq1a&"bR888BBDHH55555	6 	6r3   c           	         t           j                            d           t           j                            dddddd          }t          j        dd	d          }t          j        dd	d          d
z  }t          j        dd	d          dz  }t           j                            d          }t           j                            d          }t           j                            d          }t          ||||f          }dD ]I}	 ||||f|	          }
t          ||||f||||	          }t          |
|t          |	                     Jd S )Nr  r  r9   r  r  r   r   r   rg   r%   r=   r>   (   )Nr   r   r   r   rg   r   rg   r   r   )r%   r>   r   )r  r   r%   r  r  )	rB   r  r  r  r)  r   _ppoly3d_evalr   ry  )r)   r   r+   r*   r,   r,  r   zir_  r  r  r  s               r-   test_simple_3dzTestNdPPoly.test_simple_3d  s7   
	tINN1aAq!,,K1c""K1c""A%K1c""A%Y^^BY^^BY^^BA1ay!! 	6 	6BBB<B'''Bq1a)RRB???BBDHH55555		6 	6r3   c           
         t           j                            d           t           j                            dddddddd	          }t          j        d
dd          }t          j        d
dd          dz  }t          j        d
dd	          dz  }t          j        d
dd          dz  }t           j                            d          }t           j                            d          }t           j                            d          }t           j                            d          }	t          |||||f          }
 |
||||	f          }t          |||||f||||	          }t          ||           d S )Nr  r  r9   r  r  r   r   r=   r   r   rg   r%   r>   r   r  )rB   r  r  r  r)  r   _ppoly4d_evalr   )r)   r   r+   r*   r,   ur,  r   r/  uir_  r  r  s                r-   test_simple_4dzTestNdPPoly.test_simple_4d  sB   
	tINN1aAq!R44K1c""K1c""A%K1d##Q&K1d##Q&Y^^BY^^BY^^BY^^BA1a|$$QBB  1q!QlBB;;Br3   c                 (   t           j                            d           t           j                            dd          }t          j        ddd          }t          ||f          }|                    dg          }t          ||          }|                                }t          |j	        |j	                   |
                    dg          }t          ||          }|
                    d          }t          |j	        |j	                   d S )	Nr  r  r9   r   rg   r  r  r%   )rB   r  r  r  r)  r   r  r   r   r   r  )r)   r   r+   r_  r%  r  dp1s          r-   test_deriv_1dzTestNdPPoly.test_deriv_1d  s    
	tINN1a  K1c""At \\aS\!!1a[[mmooce$$$ !%%1a[[""ce$$$$$r3   c                 j   t           j                            d           t           j                            dddddd          }t          j        dd	d          }t          j        dd	d          d
z  }t          j        dd	d          dz  }t          ||||f          }t          |                    ddd	d
dd          |          }|                    d
g          }|                    d
          }t          |j
        |j
                            dd
dd	dd                     t          |                    d	ddd
dd          |          }|                    g d          }|                    d	          }t          |j
        |j
                            d
dddd	d                     t          |                    d
ddd	dd          |          }|                    g d          }|                    d          }t          |j
        |j
                            d
ddddd	                     d S )Nr  r  r9   r  r  r   r   r   rg   r%   r=   r>   r  r,  )r   r   r>   )rB   r  r  r  r)  r   r   	transposer  r   r   r  )	r)   r   r+   r*   r,   r_  r  r%  r7  s	            r-   test_deriv_3dzTestNdPPoly.test_deriv_3d  s   
	tINN1aAq!,,K1c""K1c""A%K1c""A%A1ay!! 1;;q!Q1a00!44\\aS\!!mmA1aAq99	; 	; 	; 1;;q!Q1a00!44++""1aAq99	; 	; 	; 1;;q!Q1a00!44\\YYY\''mmA1aAq99	; 	; 	; 	; 	;r3   c                    t          j        d          }t          j        ddd          dz  }t          j        ddd          dz  }t          j        ddd          dz  }t          ||||f          }|                    d	          }|                    d
          }t           j                            d          }t           j                            d          }t           j                            d          }	t           ||||	f          ||dz  z  |	dz  z  t          d          t          d          z  z             d S )N)rg   rg   rg   r>   r  r9   r   rg   r  r9   r%   r  r>   )rg   r   r  )r   r%   r   r  )	rB   rk   r)  r   r  r  r  r   r   )
r)   r   r+   r*   r,   r_  r&  r,  r   r/  s
             r-   test_deriv_3d_simplez TestNdPPoly.test_deriv_3d_simple  s-    G&''K1c""A%K1c""A%K1c""A%A1ay!!i((y))Y^^BY^^BY^^BBB<((RU
RU*eAhhuQxx.?@	B 	B 	B 	B 	Br3   c           
        	 t           j                            d           t           j                            dddd          }t          j        ddd          dz  }t          j        ddd          d	z  }|                    dd	dd
          }|                    |j        d         |j        d         d                                          }t          j
        ||d	           |                    |j                  }|                    dd	dd
          }|                    dd
dd	          }|                    |j        d         |j        d         d                                          }t          j
        ||d	           |                    |j                  }|                    d	dd
d                                          }t          |||f          	ddgddgddgddgfD ]c}	                    |          }t          	fd|t          dd          gd	z            \  }}t          ||ddt!          |                     dd S )Nr  r  r9      r  r   rg   r   r%   r>   rA   r"  )r   r&   )r  r  )r-  r5  c                      | |f          S r   r2   )r+   r*   r_  s     r-   <lambda>z/TestNdPPoly.test_integrate_2d.<locals>.<lambda>	  s    11aV99 r3   gh㈵>)epsrelepsabs)r   )r   r   r   )rB   r  r  r  r)  r:  rG   r   rp   r   fix_continuityr   r  r    r   r   ry  )
r)   r   r+   r*   cxrangesr\  ig2err2r_  s
            @r-   test_integrate_2dzTestNdPPoly.test_integrate_2d  sE   
	tINN1aR((K1d##Q&K1d##Q& KK1a##YYqwqz171:r227799b!Q'''JJqwKK1a##KK1a##YYqwqz171:r227799b!Q'''JJqwKK1a##((** A1v' &))"J/1 		2 		2F
 V$$B4444f$(T$B$B$B#CA#EG G GICB$T$(LL2 2 2 2 2		2 		2r3   c           	          t           j                            d           t           j                            dddddd          }t          j        dd	d          d	z  }t          j        dd	d          d
z  }t          j        dd	d          dz  }t          ||||f          }t           j                            d          }t           j                            d          }d\  }}	|                    ||	d          }
|                    d          }t           |
||f           ||	||f           ||||f          z
             |                    ||	d	          }|                    d          }t           |||f           |||	|f           ||||f          z
             |                    ||	d
          }|                    d          }t           |||f           ||||	f           ||||f          z
             d S )Nr  r  r9   r  r?  r  r   r   rg   r%   r   r>   r   )r5  r  rj   r-  r,  r  )	rB   r  r  r  r)  r   integrate_1dr  r   )r)   r   r+   r*   r,   r_  r3  vr  r!  pxpaxpypaypzpazs                   r-   test_integrate_1dzTestNdPPoly.test_integrate_1d	  s   
	tINN1aBB//K1d##Q&K1d##Q&K1d##Q& A1ay!!INN3INN31^^Aqq^))y))Aq6

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

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

CCAq	NNSS!Q^^$CDDDDDr3   N)r/   r0   r1   r  r(  r0  r5  r8  r;  r=  rI  rS  r2   r3   r-   r  r  U  s             6 6 6:6 6 6(     (% % %(; ; ;>B B B&2 2 2BE E E E Er3   r  c                     t          j        t          |           j        d         f          }t	          |          D ]\  }}|dk     s|dk    rt           j        ||ddf<   %t          j        ||          dz
  ||         z
  t          |         |cxk    o|dz            k     nc            t           fdt           j        d                   D                       }|||ddf<   |S )z&Evaluate piecewise polynomial manuallyr%   r   rg   Nc              3   Z   K   | ]%}|f         j         d          |z
  dz
  z  z  V  &dS )r   rg   N)r   )r   r  r   r  r|  s     r-   r   z _ppoly_eval_1.<locals>.<genexpr>5	  sW       , , !A#QWQZ\!^,, , , , , , ,r3   )
rB   zerosr]  r   r  r   searchsortedr   sumr   )	r   r+   xpsrG  r{  r  rS  r  r|  s	   `      @@r-   r.  r.  +	  s#   
(CHHagaj)
*
*C3 	 	266R!VVvC!!!HOAr""Q&1I!####QqsV####$$$ , , , , , ,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   rg   )Nc           	      n    g | ]1}t          j        |d d f         d d |         f                   2S r   )rB   r  )r   r  Vindxsr  s     r-   r  z!_ppoly_eval_2.<locals>.<listcomp>L	  sA    PPPArva111gr!!!U1X+77PPPr3   )r   rB   r  
empty_likecompressrW  clipr]  takevanderrK   r   )r^  breaksr   r#  r  r!  K	saveshaper  maskr  r  valuesr]  r^  r  s                @@@r-   r/  r/  ;	  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 orderrg   )rl   r   )r+   r*   r  s      r-   _dpowrj  R	  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   rg   rB   r{  r]  r   r   r  zipr   rW  r   rj  )r   r`  r   ynewr  rG  nxnyjoutr+   r*   j1j2s1s2r~  k1k2s                     r-   r'  r'  ^	  s    
z
(CII<qw
/
/
/CWRaR[FB!#dD//22  fq!AqQ++++"Q%)+++++AqQ++++"Q%)++++CI_RUA&&*_RUA&&*Ar]Ar]
## 	0 	0BAGAJ'' 0 0"R%'"R%'"R/0B1../B1../ 00
 D		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   rg   r%   rl  )r   r`  r   rn  znewr  rG  ro  rp  nzrq  r+   r*   r,   rr  rs  j3rt  ru  s3r~  rv  rw  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   rg   r%   r>   rl  )r   r`  r   rn  ry  unewr  rG  mxmymzmurq  r+   r*   r,   r3  rr  rs  r{  j4rt  ru  r|  s4r~  rv  rw  r}  k4s                                 r-   r2  r2  	  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   );numpy.testingr   r   r   r   r   r   rV  r	   r'   numpyr
   r   r   r   rB   scipy.interpolater   r   r   r   r   r   r   r   r   r   r   r   r   scipy.specialr   r   r   scipy._lib._gcutilsr   r   scipy.integrater    r!   r#   r5   r[  re  r  r  r  r  r  r  r  r  r.  r   r/  rj  r'  r.  r2  r2   r3   r-   <module>r     s[  , , , , , , , , , , , , , , , , + * * * * *  ( ( ( ( ( ( ( ( ( ( ( (                                  & % % % % % % % $ $ $ $ $ $ ; ; ; ; ; ; ; ; ! ! ! ! ! !             T T T T T T T Tn6 6 6 6 6 6 6 6}& }& }& }& }& }& }& }&@JL JL JL JL JL JL JL JLZ,+ ,+ ,+ ,+ ,+ ,+ ,+ ,+^c5 c5 c5 c5 c5 c5 c5 c5L? ? ? ? ? ? ? ?DX0 X0 X0 X0 X0 X0 X0 X0v.' .' .' .' .' .' .' .'b` ` ` ` ` ` ` `FSE SE SE SE SE SE SE SEl    .0V    .	/ 	/ 	/! ! ! !H% % % %P* * * * * *r3   