
    -iiw                       d dl mZmZmZmZmZ d dlmZ d dlZd dl	m
Z
mZmZmZ d dl	Zd dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZm Z  d dlm!Z! d dl"m#Z#m$Z$ d d	l%m&Z& d d
l'm(Z( d dlm)Z) ej*        j+        Z+ej*        j,        Z, G d d          Z- G d d          Z. G d d          Z/ ee           G d d                      Z0ej*        1                    deeg          d             Z2 eee           G d d                      Z3 G d d          Z4 ee           G d d                      Z5 ee           G d d                      Z6 ee           G d d                      Z7 eee           G d  d!                      Z8 G d" d#          Z9 G d$ d%          Z:d& Z;ej<        fd'Z=d( Z>d,d)Z?d,d*Z@d,d+ZAdS )-    )xp_assert_equalxp_assert_closeassert_almost_equalassert_array_almost_equalmake_xp_test_case)raisesN)mgridpisinpoly1d)interp1dinterp2dlagrangePPolyBPolysplrepsplev
splantidersplintsprootAkima1DInterpolatorNdPPolyBSplinePchipInterpolator)pochgamma)_ppoly)assert_deallocatedIS_PYPY)_run_concurrent_barrier)nquad)binomc                       e Zd Zd ZdS )TestInterp2Dc                     t           ddddt          df         \  }}t          |d|z  z             }t          t                    5  t          |||           d d d            d S # 1 swxY w Y   d S )Nr      y              4@y              5@      ?)r	   r
   r   assert_raisesNotImplementedErrorr   )selfyxzs       n/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/scipy/interpolate/tests/test_interpolate.pytest_interp2dzTestInterp2D.test_interp2d   s    QqWa3h&'1#a%LL.// 	 	Q1	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A&&A*-A*N)__name__
__module____qualname__r/        r.   r$   r$      s#            r4   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&   r:   g      >@)r&      r:   )r?   r&   r:      r         Y)nparangex5x10y10reshapex25x2y2arrayx1y1y210y102y225y25y235y325y210_edge_updatedy102_edge_updated
fill_valuer*   s    r.   setup_methodzTestInterp1D.setup_method(   s   )B--9S>>9S>>8##E**)B--)B--(B4..(B4..IcNN**733	IcNN**733	IcNN**955	9S>>))&11IcNN**955	IcNN**955	
 "$3!7!7!@!@')qqq!t$(+qqq"u% "$3!7!7!@!@')q!!!t$(+r111u% r4   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rf   rX   r_   )rB      rB   )rB   )rB   rB   r   ri   r&   r?   rf   axisrX   r>   rk   )rB   rB   rB   r3   r<   )r   rG   rH   rD   rM   rP   rK   onesr(   
ValueErrorrJ   rL   rQ   rN   rO   r*   rf   s     r.   test_validationzTestInterp1D.test_validationQ   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 	9r4   c                 &   t          | j        | j                  j        sJ t          | j        | j        d          j        rJ t          | j        | j                  j        sJ t          | j        | j        d          j        rJ t          j        t          | j        | j                  j                  sJ t          | j        | j        d          j        dk    sJ t          | j        | j        d          j        dk    sJ t          | j        | j                  j        dk    sJ t          | j        | j	                  j        dk    sJ t          | j        | j
        d	          j        dk    sJ t          t          | j        | j                  j        | j                   t          t          | j        | j                  j        | j                   t          t          | j        | j	                  j        | j	                   d S )
NF)copy)bounds_error      @rX   )      ?r;   r   ri   rl   )r   rG   rH   rr   rs   rD   isnanrX   rk   rP   rQ   r   r,   r+   rY   s    r.   	test_initzTestInterp1D.test_init   s    $(++0000DHdhU;;;@@@@$(++8888DHdhUCCCPPPPx4844?@@@@@$(s;;;F#MMMM48
CCCN    $(++0A5555$),,1Q6666$)!4449Q>>>>48446AAA48446AAA49557CCCCCr4   c                    t          | j        | j                  }t          | j        d d d         | j        d d d                   }t           || j                  | j                   t           |d          t	          j        d                     t           |g d           |g d                     t          | j        d d d         | j        d d d         d          }t           || j                  | j                   t          | j        d d d         | j        d d d         d          }t          t          || j                   t          | j        | j                  }t          | j        d d d         | j        d d d d df                   }t           || j                   || j                             d S )NrB   333333?g333333@gffffff@      @F)assume_sortedT)	r   rG   rH   r   rD   rM   r(   rn   rP   )r*   interp10interp10_unsortedinterp10_assume_kwinterp10_assume_kw2interp10_y_2dinterp10_y_2d_unsorteds          r.   test_assume_sortedzTestInterp1D.test_assume_sorted   s   DHdh//$TXddd^TXddd^DD!"3"3DH"="=txHHH!"3"3C"8"8"(3--HHH!"3"3OOO"D"D"*(???";";	= 	= 	= &dhtttndhtttn49; ; ;!"4"4TX">">III&tx"~tx"~59; ; ; 	j"5tx@@@ !4955!)$(44R4.$)AAAtttG:L!M!M!--"9"9"8"8"B"B	D 	D 	D 	D 	Dr4   c                 :    dD ]}|                      |           d S )N)r_   r`   )_check_linearro   s     r.   test_linearzTestInterp1D.test_linear   s2    ) 	% 	%Dt$$$$	% 	%r4   c                 @   t          | j        | j        |          }t           || j                  | j                   t           |d          t	          j        d                     t           |g d          t	          j        g d                     t          | j        | j        |d          }t           |g d          t	          j        g d          d           t          |dd	
          }t          t          t           | j        | j        fi | d S )Nre   rz   r{   rg   rh         r   	      +=rtolTrf   rX   rs   )r   rG   rH   r   rD   rM   r   asarraydictr(   rn   )r*   rf   r~   extrapolatoroptss        r.   r   zTestInterp1D._check_linear   s5   DHdhT:::!((48"4"4dh???!((3--#???!((???";";"$(???";";	= 	= 	=  $(+8: : :___55
#3#3#3445	B 	B 	B 	B ,!%' ' ' 	j(DHdhGG$GGGGGr4   c                    t           j        t           j        t           j        t           j        fD ]T}t          j        d|          }|} t          ||d          |          }|j        |k    sJ t          ||d           Ug d}t           j	        dd	g} t          ||          |          }t          ||d           d S )
N   dtyper_   re   V瞯<atolr   ri   r&   r   ri   )
rD   float16float32float64
longdoublerE   r   r   r   nan)r*   dtypr,   r+   yps        r.   test_linear_dtypeszTestInterp1D.test_linear_dtypes   s     ZZZ]$ 	/ 	/D 	!4(((AA.!QX...q11B8t####B..... IIVQNXa^^AAE******r4   c                    t           j        t           j        t           j        g}|t           j        t           j        gz   }g d}|D ]}t          j        dd|          }|D ]}t          j        | dz                                |          }|D ]T}|                    |          }	|D ]:}
t          |||
d          }t           ||	          |dd| d	| d
|            ;Ud S )N)r`   r^   ra   rb   r   r>   r   rt   Frf   rs   Hz>z,  )r   check_dtypeerr_msg)rD   r   r   r   	complex64
complex128rE   expastyper   r   )r*   dt_rdt_rcspline_kindsdtxr,   dtyr+   dtnxnewrf   fs               r.   test_slinear_dtypesz TestInterp1D.test_slinear_dtypes   s=    
BJ
3bm44@@@ 
	G 
	GC	!Rs+++A G GFA2c6NN))#.. G GC88C==D , G G$Q5III'$49360E0E#0E0E0E0EG G G G GGGG
	G 
	Gr4   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 )Nrb   re   rz         ?r{   r   rG   rH   r   rD   rM   r*   r~   s     r.   
test_cubiczTestInterp1D.test_cubic   s    DHdhW===!((48"4"4dh???!((3--#???!((3--#???!((???";";"$(???";";	> 	> 	> 	> 	>r4   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\   re   rz   rv   r   r{   r;   r|   r|   rg   rh   r   r<   r   r   r   r   r   Tr   
r   rG   rH   r   rD   rM   r   r   r(   rn   r*   r~   r   r   s       r.   test_nearestzTestInterp1D.test_nearest	  sF    DHdhY???!((48"4"4dh???!((3--">>>!((3--">>>!((???";";"$(<<<"8"8	; 	; 	;  $(+8: : :___55&U	4 	4 	4 	4 ,!%' ' ' 	j(DHdhGG$GGGGGr4   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]   re   rz   rv   r   r;   r{   r   rg   rh   r   r   r   r   Tr   r   r   s       r.   test_nearest_upzTestInterp1D.test_nearest_up  sF    DHdh\BBB!((48"4"4dh???!((3--">>>!((3--">>>!((???";";"$(<<<"8"8	; 	; 	;  $(+8: : :___55&U	4 	4 	4 	4 ,!%' ' ' 	j(DHdhGG$GGGGGr4   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 )%Nrc   re   rz   rv   r   r{   r;   r8   r|   rg   rh   r   r   r   r   r   rB   r:   r         r:   r            rj   r   r:   r   r>   r   Tr   r   r   ri   rB   rf   rX   r}   r   rB   r   ri   r&   r?   r:   ri   rB   r&   r   ri   rB   r   ri   FrA   r   rG   rH   r   rD   rM   r   r   rP   rQ   r   r(   rn   rV   rW   r*   r~   r   interpolator1Dinterpolator2Dinterpolator2DAxis0r   s          r.   test_previouszTestInterp1D.test_previous3  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%	& 	& 	& 	& 	&r4   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 )$Nrd   re   rz   r;   r   r{   )rt   r|   r|   rg   rh   r   r   r   r   r   r   r:   r   r>   r   r   rj   r   ri   r   Tr   r   r   r   r   rB   r   r   Fr@   r   r   s          r.   	test_nextzTestInterp1D.test_nextx  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&"&)+	, 	, 	, 	, 	,r4   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^   re   rz   rv   r   r{   r   r   r   s     r.   	test_zerozTestInterp1D.test_zero  s    DHdhV<<<!((48"4"4dh???!((3--">>>!((3--">>>!((???";";"$(<<<"8"8	: 	: 	: 	: 	:r4   c                     t          t          ||           	  ||           d S # t          $ r}| t          |          v sJ Y d }~d S d }~ww xY wN)r(   rn   str)r*   interpolant
test_array
fail_valueerrs        r.   bounds_check_helperz TestInterp1D.bounds_check_helper  s{     	j+z:::	1K
##### 	1 	1 	1!Os3xx//////////	1s   % 
AA		Ar_   c                 4   t          | j        | j        | j        d|          }t	           |d          t          j        | j                             t	           |d          t          j        | j                             t	           |dgdgdgdggg          t          j        | j                  d           t	          |                    t          j        g d                    t          j        g d	g d
g                     t          | j        | j        d|          }|                     |dd           |                     |dd           |                     |g dd           |                     |g dd            |g d           d S )NF)rX   rs   rf   gffffff&@g333333g333333)@gL3@)check_shape)r   r<   r8         "@      &@)TFFFF)FFFFTT)rs   rf   r   r   )r<   r   r<   )r<   rv         5@r   )r<   r8   r   )	r   rG   rH   rX   r   rD   rM   _check_boundsr   )r*   rf   extrap10raises_bounds_errors       r.   _bounds_checkzTestInterp1D._bounds_check  s   DHdh4?).T; ; ; 	(A(ABBB(A(ABBBD6D6D6D6"B!CDD8DO44%	I 	I 	I 	I..!x(C(C(CDDF F8%G%G%G%G%G%G%I J J	K 	K 	K
 'tx,02 2 2 	  !4dDAAA  !4dDAAA  !46F6F6FMMM  !46F6F6FMMMOOO,,,,,r4   c                    t          j        d                              t                    }t          j        d                              t                    }t	          |||t           j        d          } ||dz
            }t          j        |d                   sJ t          |t           j        t           j        |d d         f                    d S )Nr>   Fr   ri   r   rB   )	rD   rE   r   intr   r   rw   r   r_)r*   rf   r,   r+   cyis         r.   _bounds_check_int_nan_fillz'TestInterp1D._bounds_check_int_nan_fill  s    IbMM  %%IbMM  %%QeLLLQq1uXXx1!"beBFAcrcFN&;<<<<<r4   c                 d    dD ],}|                      |           |                     |           -d S )N)r_   rb   r\   rc   rd   r`   r^   ra   )r   r   ro   s     r.   test_boundszTestInterp1D.test_bounds  sH    5 	2 	2Dt$$$++D1111	2 	2r4   c                    t          | j        | j        |dd          }t           |d          t	          j        d                     t           |d          t	          j        d                     t           |ddg          dd	g           | j        | j        | j        | j	        fD ]l}t          | j
        ||d
d	d          }t           |d          t	          j        d                     t           |d          t	          j        d                     t           |ddg          t	          j        d                     t          | j
        ||d
dd          }t           |d          t	          j        d                     t           |d          t	          j        d                     |j        dk    r#dd	gg|j        d         z  g|j        d         z  }ndd	gg|j        d         z  }t           |ddg          |           ng d}| j        | j        fD ](}t          t          t           | j
        ||d
|d           )t          | j
        | j        |d
|d          }t           |d          g dgdz             t           |d          g dgdz             t           |ddg          d	d	gddgddgggdz             d	dg}t          t          t           | j
        | j        |d
|d           | j        | j        | j	        fD ]}t          | j
        ||d
|d          }d	dg}|j        dk    r|g|j        d         z  }t           |d          |           t           |d          |           d	d	gddgg}|j        dk    r|g|j        d         z  }t           |ddg          |           t	          j        g d          d	f}| j        | j        fD ](}t          t          t           | j
        ||d
|d           )t          | j
        | j        |d
|d          }t           |d          t	          j        d                     t           |d          g dgdz             t           |ddg          dd	gdd	gdd	gggdz             t	          j        ddg          d	f}t          t          t           | j
        | j        |d
|d           | j        | j        | j	        fD ]}t          | j
        ||d
|d          }t           |d          t	          j        d	                     ddg}|j        dk    r|g|j        d         z  }t           |d          |           dd	gdd	gg}|j        dk    r|g|j        d         z  }t           |ddg          |           g dg df}| j        | j        fD ](}t          t          t           | j
        ||d
|d           )t!          d          D ]}|dk    rt#          d |D                       }t          | j
        | j        |d
|d          }t           |d          g dgdz             t           |d          g dgdz             t           |ddg          dd	gddgddgggdz             ddgd	dgf}t          t          t           | j
        | j        |d
|d           | j        | j        | j	        fD ]}t          | j
        ||d
|d          }d	dg}|j        dk    r|g|j        d         z  }t           |d          |           ddg}|j        dk    r|g|j        d         z  }t           |d          |           dd	gddgg}|j        dk    r|g|j        d         z  }t           |ddg          |           d	dgddgg}| j        | j        | j	        fD ](}t          t          t           | j
        ||d
|d           )t!          d          D ]}|dk    rt	          j        |          }t          | j
        | j        |d
|d          }t           |d          d	dgddgg           t           |d          d	dgddgg           t           |ddg          d	d	gddggddgddggg           ddgddggd	dgddggf}| j        | j        | j	        fD ](}t          t          t           | j
        ||d
|d           )t!          d          D ]}|dk    r4t	          j        |d                   t	          j        |d                   f}t          | j
        | j        |d
|d          }t           |d          d	dgddgg           t           |d          ddgddgg           t           |ddg          dd	gddggddgddggg           d S )N)d   Fr   r>   g      Y@rC   r   r   rB   )rf   rk   rX   rs   r?   ri   r   )r      ,  r&   r   r   )r   8r   r   c              3   >   K   | ]}t          j        |          V  d S r   )rD   rM   ).0r   s     r.   	<genexpr>z1TestInterp1D._check_fill_value.<locals>.<genexpr>V  s*      "C"C128A;;"C"C"C"C"C"Cr4   i  i  ii0)r   rG   rH   r   rD   r   rT   rU   rR   rS   rF   ndimshaper(   rn   rM   rangetuple)r*   rf   interpr+   resultrX   iis          r.   _check_fill_valuezTestInterp1D._check_fill_value  sx   $(DH4%0uF F F!&&**bj.>.>???!&&++rz%/@/@AAA!&&#r"3"3dC[AAA )TY	48< 	A 	AAdgqt"),5B B BF%ffRjj"*T2B2BCCC%ffSkk2:d3C3CDDD%ffc2Y&7&7D9I9IJJJ dgqt")45J J JF%ffRjj"*T2B2BCCC%ffSkk2:e3D3DEEEv{{ #;-!'!*45
B+3%ffc2Y&7&7@@@@ %__
)TY' 	N 	NA*h!juN N N N N$'494b%/eE E E!&&**.?!.CDDD!&&++/@1/DEEE!&&#r"3"3Sz8;Sz8;Sz7C 6DFG6H 	I 	I 	I
 3Z
j(DGTYT*5	J 	J 	J 	J)TY1 	A 	AAdgqt")3%I I IF3ZFv{{ AGAJ.%ffRjj&999%ffSkk6:::Cj3*-Fv{{ AGAJ.%ffc2Y&7&7@@@@ h11122C8
)TY' 	N 	NA*h!juN N N N N$'494b%/eE E E!&&**bj.>.>???!&&++0B0B0B/Ca/GHHH!&&#r"3"3c{8<c{8<c{7D 6EGH6I 	J 	J 	J
 hd|,,c2
j(DGTYT*5	J 	J 	J 	J)TY1 	A 	AAdgqt")3%I I IF%ffRjj"*S//BBBD\Fv{{ AGAJ.%ffSkk6:::SkD#;/Fv{{ AGAJ.%ffc2Y&7&7@@@@ )((///:
)TY' 	N 	NA*h!juN N N N N(( 		N 		NBQww""C"C
"C"C"CCC
dgtyt")3%I I IF%ffRjj???2Ca2GHHH%ffSkk4F4F4F3G!3KLLL%ffc2Y&7&7D#;<@#;<@#;;H :IKL:M N N N N TlS#J/
j(DGTYT*5	J 	J 	J 	J)TY1 	A 	AAdgqt")3%I I IF3ZFv{{ AGAJ.%ffRjj&999D\Fv{{ AGAJ.%ffSkk6:::SkD#;/Fv{{ AGAJ.%ffc2Y&7&7@@@@ Cj4,/
)TY1 	N 	NA*h!juN N N N N(( 
	K 
	KBQwwXj11
dgtyt")3%I I IF%ffRjjC:d|2LMMM%ffSkkS#Jt3MNNN%ffc2Y&7&7C:<?:;G<@$<<@$<;I:J K K K K d|eU^4SzD$<02
)TY1 	N 	NA*h!juN N N N N(( 	L 	LBQww hz!}55rx
17N7NO
dgtyt")3%I I IF%ffRjjC:d|2LMMM%ffSkkT4L5:EN4D E E E%ffc2Y&7&7D#;<@#;;H<A4=<A4=;J:K L L L L	L 	Lr4   c                 :    dD ]}|                      |           d S N)r_   r\   rb   r`   ra   r^   rc   rd   )r	  ro   s     r.   test_fill_valuezTestInterp1D.test_fill_value  s4    1 	) 	)D""4((((	) 	)r4   c                     t          | j        | j        d          }|j        dk    sJ d|_        |j        dk    sJ d S )Ng     ^@ru   g     t@)r   rG   rH   rX   )r*   r  s     r.   test_fill_value_writeablez&TestInterp1D.test_fill_value_writeable  sP    $(DH??? E))))! E))))))r4   c           	         t          | j        | j        |          }t           |t	          j        ddgddgg                    t	          j        ddgddgg                     t           |d          t          j                  sJ  |d          j        dk    sJ t          | j        | j	        |          }t           |d          t	          j        dd	g                     t           |t	          j        ddg                    t	          j        ddgd	d
gg                     t          | j        | j
        d|          }t           |d          t	          j        ddg                     t           |t	          j        ddg                    t	          j        ddgddgg                     t	          j        ddgddgg          }t           ||          t	          j        ddgddggddgd
dggg                     t           ||          t	          j        ddgdd	ggddgddggg                     d S )Nre   rt   r8   r;         @rz   r3   rv   r         (@r   rk   rf   r|   g      *@g      .@g      1@r9         @g      ,@)r   rG   rH   r   rD   rM   
isinstancendarrayr  rP   rQ   )r*   rf   r~   	interp210	interp102x_news         r.   _nd_check_interpzTestInterp1D._nd_check_interp  s    DHdhT:::!((28b"XBx4H+I+I"J"J"$(RHr2h+?"@"@	B 	B 	B ((3--44444x}}"b(((( TXtyt<<<	!))B--2s)1D1DEEE!))BHb"X,>,>"?"?"$(RHsCj+A"B"B	D 	D 	D TXtyqtDDD	!))B--3*1E1EFFF!))BHb"X,>,>"?"?"$(RHr2h+?"@"@	B 	B 	B 2r(RH-..!))E"2"2"$(b"XBx,@.13Z#s,D,F #G #G	H 	H 	H 	"))E"2"2"$(b"XSz,B.0"XSz,B,D #E #E	F 	F 	F 	F 	Fr4   c                    g d} t          j        t          j        |                    j        | }t	          |          D ]\  }}t          j        |          }t          ||||          }t           ||          ||           t          j        d                              d          dz  }t          |          }	g d|	||dz   <    ||          j        t          |	          k    s
J |            d S )N)   r:         r  r   r  )r&   r?   ri   r  ri   )
rD   rE   prodrI   	enumerater   r   listr  r  )
r*   rf   ar+   nsr,   r-   rK   bs
             r.   _nd_check_shapezTestInterp1D._nd_check_shape  s    LL)BIbgajj!!)1-aLL 	1 	1DAq	!AAAD111A%aaddAt<<<<5!!))'22S8BQA yyAa!eH1R55;%((***D****	1 	1r4   c                 d    dD ],}|                      |           |                     |           -d S )N)r_   rb   r`   ra   r\   r^   rc   rd   )r  r&  ro   s     r.   test_ndzTestInterp1D.test_nd  sH    1 	' 	'D!!$'''  &&&&	' 	'r4   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)
ri         @r?   g@r  g@g@g       @g      #@r>         ?       @re   rB   ri   r>      )rD   rM   r   r   r   linspacerealimag)	r*   r   rf   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5r4   c                     dD ]B}|                      t          j        |           |                      t          j        |           Cd S r  )r3  rD   r   r   ro   s     r.   test_complexzTestInterp1D.test_complex  sP    1 	5 	5Dd333t4444	5 	5r4   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   ri   皙?皙?)rD   r-  r   r   )r*   r,   r+   r  s       r.   test_circular_refszTestInterp1D.test_circular_refs  s     K1K1!Q// 	6FC:	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA!$A!c                     dD ]O}t          j        g dt           j                  }t          |||          }t	           ||          |           Pd S )N)r\   rc   rd   )r   2      r   re   )rD   rM   int8r   r   )r*   rf   r,   r  s       r.   test_overflow_nearestz"TestInterp1D.test_overflow_nearest  sd    3 	0 	0DRW555A!QT***B%bbeeQ////	0 	0r4   c                 <   t          j        d                              t                    }|                                }t           j        |d<   dD ]I}t          |||          } |ddg          }t          j        |                                          sJ Jd S )Nr>   r  )r^   r`   re   g@r  )	rD   rE   r   floatrr   r   r   isfiniteall)r*   r,   r+   rf   irvalss         r.   test_local_nanszTestInterp1D.test_local_nans  s     IbMM  ''FFHHv!' 	+ 	+D!QT***B2sCj>>D;t$$((******	+ 	+r4   c                    t          j        d                              t                    }|                                }|                                }t           j        |d<   dD ]}t          |||          }t          |||          }dddgddgddggfD ]f}t          j        |          } ||           ||          }	}t          j        |	          	                                sJ |j
        |	j
        k    sJ gd S )Nr   r?   )ra   rb   re   r  ri   r:   )rD   rE   r   rA  rr   r   r   r   rw   rC  r  )
r*   r,   r+   ynrf   rD  irnr   outoutns
             r.   test_spline_nanszTestInterp1D.test_spline_nans	  s    IaLL&&FFHHVVXX1* 	/ 	/D!QT***B1bt,,,CQFaVaV$45 / /z$''BqEE33q66Tx~~))+++++yDJ.....	/	/ 	/r4   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>   rb   re   )rD   rm   r   rE   r(   rn   r   )r*   r,   r+   s      r.   test_all_nanszTestInterp1D.test_all_nans  s    GBKK"& IbMM:&& 	) 	)Q((((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   
A**A.1A.c                 Z   t          j        dd          }t          j        | dz            }t          j        ddd          }dD ]d}||j        _        d|j        _        dD ]G}t          |||	          } ||          }t          j        |                                          sJ Hed S )
Nr   r>   rt   r   r8  TFF)r_   r\   r^   r`   ra   rb   re   )rD   rE   r   flags	writeabler   rB  rC  )r*   r,   r+   r   xnew_writeablerf   r   rE  s           r.   test_read_onlyzTestInterp1D.test_read_only"  s    IaFA28yAs##+ 	/ 	/N#1DJ  %AG" / /Q---qww{4((,,......	/	/ 	/r4   rf   )r_   r\   r]   rc   rd   c                 .   t          dgdg|dd          }t           |g d          t          j        g d                     t          dgdg|d	          }t	          t
          d
          5   |d           d d d            d S # 1 swxY w Y   d S )Nr   r  Fr=   )rf   rs   rX   )ri   r   r&   )r;   r  r>   Tr   zx_new is abovematchr;   )r   r   rD   r   r(   rn   )r*   rf   r   s      r.   test_single_valuezTestInterp1D.test_single_value0  s    
 cUQCd ') ) )+++
<<<(@(@AAAcUQCd>>>:-=>>> 	 	AcFFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   1B

BBN)r_   )+r0   r1   r2   rZ   rp   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	  r  r  r  r&  r(  rD   r   r3  r5  pytestmarkskipifr   r:  r?  rF  rL  rN  rT  parametrizerX  r3   r4   r.   r6   r6   &   s       '! '! '!RB9 B9 B9HD D D&D D D4% % %H H H&+ + +*G G G$> > >H H H*H H H*C& C& C&JC, C, C,J: : :1 1 1- - - -0= = = =2 2 2_L _L _LB) ) )* * *F F F F@1 1 1 1' ' ' $&=x 6 6 6 6 5 5 5 [(EFF  GF0 0 0	+ 	+ 	+/ / /$) ) )/ / / [G     r4   r6   c                       e Zd Zd ZdS )TestLagrangec                     t          g d          }t          j        t          |j                            } ||          }t          ||          }t          |j        |j                   d S )N)r:   r&   ri   r  r?   )r   rD   rE   lencoeffsr   r   )r*   pxsyspls        r.   test_lagrangezTestLagrange.test_lagrange@  s^    ;;;Ys18}}%%QrUUb__!!(2955555r4   N)r0   r1   r2   rf  r3   r4   r.   r^  r^  >  s#        6 6 6 6 6r4   r^  c                   V    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S )TestAkima1DInterpolatorc                 F   |                     dd|j                  }|                    g d|j                  }t          ||          }|                    g d|j                  }|                    g d|j                  }t	           ||          |           d S )Nr<   r   r   r<   r;   rv   rt   r;   r|         @rk  g@ffffff@rt   r<   r'   rv   r   r*        @g      @rl  g      @g@g333333!@g#@r9   r<   g      ?r;   r   g     @?g     @g.袋@g^@gn @gGNB@grcߖ@g	I@rt   rE   r   r   r   r   r*   xpr,   r+   akr0  r   s          r.   	test_evalz!TestAkima1DInterpolator.test_evalJ  s    IIb#RZI00JJ<<<BJ  
 
 !A&&ZZ   "$*  . .ZZ    z	  # #
 	2#####r4   c                 J   |                     dd|j                  }|                    g d|j                  }t          ||d          }|                    g d|j                  }|                    g d|j                  }t	           ||          |           d S )	Nr<   r   r   rj  makimamethodrm  )r<   gF??r;   g?g?gg{'@g>J(j@g?@gq@g@g9~@go
@rt   rp  rq  s          r.   test_eval_modz%TestAkima1DInterpolator.test_eval_modY  s     IIb#RZI00JJ<<<BJ  
 
 !Ah777ZZ & & &-/Z  9 9ZZ 5 5 5 =?J  H H 	2#####r4   c                    |                     dd|j                  }|                    g d|j                  }|                    |d|z  fd          }t	          ||          }|                    g d|j                  }|                    g d	|j                  }|                    |d|z  fd          }t           ||          |           d S )
Nr<   r   r   rj  r;   ri   rl   rm  ro  )rE   r   r   stackr   r   rq  s          r.   test_eval_2dz$TestAkima1DInterpolator.test_eval_2dl  s	   IIb#RZI00JJ<<<BJ  
 
 HHaa[qH)) A&&ZZ & & &-/Z  9 9ZZ 8 8 8 @Bz  K K XXr27m!X,,2#####r4   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   rj  )r   r&   r&   r   r;   ri   rt   r  rm  )   r&   r&   ro  )rD   rE   rM   emptyr   r   )r*   r,   y_r+   rs  r0  r   yi_s           r.   test_eval_3dz$TestAkima1DInterpolator.test_eval_3d  sf   Ib#XFFFGGHZ  !!!Q'
"W!!!Q'
"W!!!Q'
"W!!!Q'
 A&&X & & & ' 'Xj!!h 9 9 9 : : 111a73h111a73h111a73h111a72#####r4   c                     |                     ddg|j                  }|                     ddg          }t          ||dd           }t           |d          |                     d|j                             d S )	Nr<   rv   r   r'   r   )rk   rg   g?g333333?)r   r   r   r   )r*   rr  r,   r+   akimas        r.   $test_linear_interpolant_edge_case_1dz<TestAkima1DInterpolator.test_linear_interpolant_edge_case_1d  sx    JJSzJ44JJSz""#AqqdCCCdRZZRZZ%H%HIIIIIr4   c                    |                     ddg          }|                    |d|z  d|z  d|z  fd          }t          ||          }|                     ddg          }|                     g d	g d
g|j                  }t	           ||          |           t          ||j        d          }t	           ||          |j                   d S )Nr<   rv   r;   rt   r  ri   rl   r'   )r'   rv   r   r;   )rv   r;   rt   r  r   )r   r{  r   r   r   Trq  s          r.   $test_linear_interpolant_edge_case_2dz<TestAkima1DInterpolator.test_linear_interpolant_edge_case_2d  s    JJBx  HHaaaa0qH99 A&&ZZb	""ZZ+++)))+24*  
 
 	2### ACa0002%%%%%r4   c                 F   t          j        dd          }t          j        ddg          }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        d	dg          }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	          ||                    ddd
          d          }t           ||          |                    ddd
                     t	          ||                    d
dd          d
          }t           ||          |                    d
dd                     d S )Nr<   r;   rv   )r&   r&   r&   r   ri   rt   r  r'   r&   rl   )rD   rE   rM   r  r   r   	transpose)r*   r,   r  r+   rs  r  r   r0  s           r.   $test_linear_interpolant_edge_case_3dz<TestAkima1DInterpolator.test_linear_interpolant_edge_case_3d  s   Ib"Xr2hHY!!!Q'
"W!!!Q'
"W!!!Q'
"W!!!Q'
 A&&hRy!!Xi  111a73h111a73h111a73h111a72### AKK1a$8$8qAAA2Q1 5 5666 AKK1a$8$8qAAA2Q1 5 566666r4   c                 L   |                     g d|j                  }|                    ||dz  f          j        }t	          ||          }|                     ddg|j                  } ||          }t          ||                    ||dz  f          j                   d S )Nr   r   r&   r'   r   )r   r   r{  r  r   r   )r*   rr  r,   r+   rs  x_evaly_evals          r.   %test_degenerate_case_multidimensionalz=TestAkima1DInterpolator.test_degenerate_case_multidimensional  s    JJyyy
J33HHaAY! A&&S#Jbj99F&&!))< = = ?@@@@@r4   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   rj  z9Extending a 1-D Akima interpolator is not yet implementedrV  )rD   rE   rM   r   rY  r   r)   extend)r*   r,   r+   rs  rW  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   rj  z `method`=invalid is unsupported.rV  invalidrw  )rD   rE   rM   rY  r   r)   r   )r*   r,   r+   rW  s       r.   test_mod_invalid_methodz/TestAkima1DInterpolator.test_mod_invalid_method  s    Ib#HEEEFF2].e<<< 	8 	81Y7777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s   	A))A-0A-c                    t          j        ddd          }|dz  }t          j        ddd          }|dz  }t          ||d	          }t          ||d
	          }t          ||d 	          }t           ||           ||          d           t	           ||          dd         t          j        dt           j                             t	           ||          dd         t          j        dt           j                             t           ||d	           ||          d           t          | ||          d           d S )Nr:   r   r&   r   r>      Trg   Fr   r   r   r  rB   r?   )rD   r-  r   r   r   fullr   )r*   r,   r+   x_exty_extak_trueak_falseak_nones           r.   test_extrapolate_attrz-TestAkima1DInterpolator.test_extrapolate_attr  sI   KAr""qDCR((q%a===&q!???%a===eDDDD!,bga.@.@AAA2.260B0BCCCD999775>>PUVVVVwwu~~E::::::r4   c                    t          j        dd          }dt          j        t          j        t                    j                  z  t          j        |dz
  d          z  }t          ||d          }t          ||d          } ||          } ||          }t          j        |          	                                sJ t          j        |          	                                sJ d S )	Nri   r>   g    .Ar  r'   rv  rw  r  )
rD   rE   sqrtfinforA  max	heavisider   rB  rC  )r*   r,   r+   ak1ak2y_eval1y_eval2s          r.   test_no_overflowz(TestAkima1DInterpolator.test_no_overflow  s    Ia%,---bl1Q3.D.DD!!Qx888!!Qw777#a&&#a&&{7##''))))){7##'')))))))r4   N)r0   r1   r2   rt  ry  r|  r  r  r  r  r  r  r  r  r  r3   r4   r.   rh  rh  H  s        $ $ $$ $ $&$ $ $&$ $ $2J J J& & &7 7 70A A A" " "8 8 8; ; ;(* * * * *r4   rh  rx  c                     t          j        dd          }t          j        g d          }|d|z  z
  }d}t          j        t
          |          5   | ||           d d d            n# 1 swxY w Y   d }d S )Nr<   r   rj  y               @zreal valuesrV  c                     t          j        ddd          }|dz  }t          j        ddd          }t          ||d	          }d
 }t          d|||           d S )Nr  r:   r   r&   r   r>   r  Tr  c                      ||           d S r   r3   )_rs  r  s      r.   	worker_fnz9test_complex.<locals>.test_concurrency.<locals>.worker_fn  s    BuIIIIIr4   )rD   r-  r   r    )r*   r,   r+   r  rs  r  s         r.   test_concurrencyz&test_complex.<locals>.test_concurrency	  sp    KAr""qDCR(( A4888	 	 	 	 Ir599999r4   )rD   rE   rM   rY  r   rn   )rx  r,   r+   msgr  s        r.   r5  r5    s     		"cA
AAABBA	BqDA
C	z	-	-	-  q!              
: 
: 
: 
: 
:s   A**A.1A.c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )TestPPolyCommonc                     |                     ddgddgddgg          }|                     g d          }t          t          t          ||           t          t          t          ||           d S )Nri   r  r&   r:   r?   r  )r   ri   r'   )r   r(   rn   r   r   )r*   rr  r   r,   s       r.   test_sort_checkzTestPPolyCommon.test_sort_check  si    JJAAA/00JJ{{{##j%A...j%A.....r4   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 )Nri   r&   r   )r(   rn   r   rY   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d	f         |d d                   }|
                    |d d dd d	f         |dd                      ||d d dd d	f         |d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&   ri   r   .)rD   randomseeduniquer   randr`  r   r   r   r  r   r   r,   )	r*   rr  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zz!}}bjjmm15> 	* 	*CQqqq"1"cz]AcrcF++BIIa122s
mQrssV,,,#a233naf--CJJqCRC~q"v...#a))CBD#%(((BD#%(((CE35)))CE35))))	* 	*r4   c                    t           j                            d           |                    ddd          }|                    t           j                            dd                    }|                    ddd          }|                    t           j                            dd                    }t          t          fD ]} |||          } |||          } |||          }	|	                    ||dd                     |                    dddd	
          }
|                    ddd          }t           ||
           |	|
                     t           ||           |	|                     d S )Nr  r   ri   r  r&   r:   r  r   F)endpoint)
rD   r  r  r-  r   r  r   r   r  r   )r*   rr  r,   r   rK   c2r  pp1r  pp_combxi1xi2s               r.   test_extend_diff_ordersz'TestPPolyCommon.test_extend_diff_orders<  s[   
	tKK1a  JJry~~a++,,[[Aq!!ZZ	q!,,--5> 	4 	4C#a))C#b"++Cc!QiiGNN2r!""v&&& ++aC%+88C++aC((CCCHHggcll333CCHHggcll3333	4 	4r4   c                    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df         |d d                   }|
                    |d d dd df         |dd                      ||d d dd df         |d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>      ri   r&   r   .)rD   r  r  sortuniformr  r  r   r   r   r  r   r   r,   )	r*   rr  r  r,   r   r  rb  p1p2s	            r.   test_extend_descendingz&TestPPolyCommon.test_extend_descendingU  s   
	qGBI%%aR0011INN519agaj1na;;zz!}}bjjmm15> 	' 	'CAq		AQqqq"1"cz]AcrcF++BIIa122s
mQrssV,,,Qqqq"##s{^QrssV,,BIIa3B3naf---BD!#&&&BD!#&&&BD!#&&&BD!#&&&&	' 	'r4   c           	         t           j                            d           t           j                            ddddd          }t          j        t           j                            d                    }t           j                            dd	          }t
          t          fD ]$} |||          } ||          j        d
k    sJ %t
          t          fD ]} ||d         |          }t          j         |d                    dk    sJ t          j         |t          j        d                              dk    sJ t          t          |t          j        ddgdggt                               d S )Nr  r   r   r:   r  r  r~  r?   r  )r?   r  r:   r  r  ).r   r   r   r'   r3   r8  r9  皙?r   )rD   r  r  r  r  r   r   r  rM   r(   rn   object)r*   r   r,   rr  r  rb  s         r.   
test_shapezTestPPolyCommon.test_shapel  sZ   
	tINN1b!Q**GBINN2&&''Y^^Aq!!5> 	2 	2CAq		A1R55;/11111 5> 	V 	VCAlOQ''A8AAcFF##r))))8AAbhsmm,,--3333*aC:u2EV)T)T)TUUUU	V 	Vr4   c                    t           j                            ddddd          }t          j        t           j                            d                    }t           j                            dd          }t	          |j        |||f          \  }}}t          t          fD ]#} |||          }d	 }t          d
|||           $d S )Nr   r   r:   r  r  r~  r?   r  c                      ||           d S r   r3   )r  r  xpps      r.   r  z3TestPPolyCommon.test_concurrency.<locals>.worker_fn  s    sr4   r>   )	rD   r  r  r  mapr   r   r   r    )r*   rr  r   r,   r  r  r  r  s           r.   r  z TestPPolyCommon.test_concurrency~  s    INN1b!Q**GBINN2&&''innQ""
Q3K00	1c5> 	@ 	@CSAYYF   $B	63????	@ 	@r4   c           	      \   t           j                            d           t          j        t           j                            d                    }t           j                            d          dz  }|j        |j        }}t           j                            d          }t          t          fD ]}} |||           |||           |||          }	}}dD ]T}
t           |||
          j         |||
                     t           |||
          j         |	||
                     U~d S )N90  r~  )r   r   y      ?333333?r:   r   )	rD   r  r  r  r.  r/  r   r   r   )r*   r,   r   c_rec_imrr  r  rb  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====>	> 	>r4   c                    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 ]} ||||          }	|	j	        j        |||dz            |d |         z   ||dz   d          z   k    sJ  |	|          }
|d |         |j        z   |d|z   d          z   }|
j        |k    sJ  ||||          
                                 ||||          
                    d           ||||                                           ||||                              d          fD ]}|j        |	j        k    sJ dD ]6}t          t          fD ]%}t          t          |fi t          |||           &7d S )Nr  r?   r  r:   r  r  r   )ri   r&   r   ri   r&   r?   ri   rl   r&   )rB   r  r:   r  )r   r,   rk   )rD   r  r  r  r  r   r  r   r   r   
derivativeantiderivativerk   r(   rn   r   )r*   rr  r   c_sr  rk   mr,   r  rb  res
targ_shaper  s                r.   	test_axiszTestPPolyCommon.test_axis  s   
	uINN1aAq!,,giv&&A

33  	- 	-DQA

2729>>!A##6#67788Au~ - -C14(((syCT!V$4s5D5z$ACQL$PPPPPaff $Z#)3c!D&''lB
yJ.... 3q!$///::<<3q!$///::1==3q!$///>>@@3q!$///>>qAAC - -B 7af,,,,,	--  " 	L 	LDu~ L Lj#KKQT1J1J1JKKKKL	L 	Lr4   N)r0   r1   r2   r  r  r  r  r  r  r  r  r  r3   r4   r.   r  r    s        / / /" " "
* * *04 4 42' ' '.V V V$@ @ @ 
> 
> 
>L L L L Lr4   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r0   r1   r2   r3   r4   r.   Pr            r4   r  c                       e Zd ZdS )TestPolySubclassing.BNr  r3   r4   r.   Br    r  r4   r  c                 8   t           j                            d           t          j        t           j                            d                    }t           j                            d          }|                     ||          |                     ||          fS )Nr  r?   )r  r&   )rD   r  r  r  r  r  )r*   r,   r   s      r.   _make_polynomialsz%TestPolySubclassing._make_polynomials  sm    
	tGBI$$Q''((IV$$vva||TVVAq\\))r4   c                     |                                  \  }}||fD ](}|                                }|j        |j        k    sJ )|                                }|j        |j        k    sJ d S r   )r  r  	__class__r  )r*   r  bprb  pdppas         r.   test_derivativez#TestPolySubclassing.test_derivative  s{    ''))Bb 	/ 	/AB;",.....!!|s},,,,,,r4   c                    t           j                            d           t          j        t           j        dt           j                            d          df                   }t           j                            t          |                    }t          ||d          }| j        	                    |          }|j
        | j        k    sJ d S Nr  r   r   ri   r$  )rD   r  r  r  r   r  r`  r   r  from_spliner  )r*   r,   r+   splr  s        r.   test_from_splinez$TestPolySubclassing.test_from_spline  s    
	tGBE!RY^^B//2344INN3q66""QQV$$|tv%%%%%%r4   c                     |                                  \  }}| j                            |          }|j        | j        k    sJ | j                            |          }|j        | j        k    sJ d S r   )r  r  from_bernstein_basisr  r  from_power_basis)r*   r  r  r  bp1s        r.   test_conversionsz$TestPolySubclassing.test_conversions  sq    ''))Bf))"--}&&&&f%%b))}&&&&&&r4   c                 x    g d}dgdgdgg}| j                             ||          }|j        | j         k    sJ d S )Nr   ri   r&   r?   )r  from_derivativesr  )r*   r,   r+   r  s       r.   test_from_derivativesz)TestPolySubclassing.test_from_derivatives  sN    IIS1#sOV$$Q**|tv%%%%%%r4   N)r0   r1   r2   r   r  r   r  r  r  r  r  r  r3   r4   r.   r  r    s            E       E   * * *- - -& & &' ' '& & & & &r4   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 ZdS )	TestPPolyc                 \   |                     ddgddgddgg          }|                     g d          }t          ||          }t           |d          |                     d	|j        
                     t           |d          |                     d|j        
                     d S )Nri   r  r&   r:   r?   r  r   r'   ri   333333?Q@r   ffffff?p=
ף@r   r   r   r   r*   rr  r   r,   rb  s        r.   test_simplezTestPPoly.test_simple  s    JJAAA/00JJ{{{##!QKK#

+?rz
 R RSSSAcFFBJJ?rzJRR	
 	
 	
 	
 	
r4   c                 0   |                     ddgddgddgg          }|                     g d          }t          ||d	          }t           |d
          |                     d|j                             t           |d          |                     d|j                             t           |d
d          |                     d|j                             t           |dd          |                     d|j                             d S )Nri   r  r&   r:   r?   r  r  periodicr  g?r  r   333333ӿr  g@gffffff@r  r  s        r.   test_periodiczTestPPoly.test_periodic  s   JJAAA/00JJ{{{##!QJ///#

#=RZ
PP	R 	R 	RAdGGJJAJTT	
 	
 	

 	#q		2::k:#L#LMMM$

BJJ/B"*J$U$UVVVVVr4   c                 |   t          j        ddgddgddgg          }t          j        g d          }t          j        g d          }t          ||d	
           dD ]]}||j        _        ||j        _        t          ||          } ||          }t          j        |                                          sJ ^d S )Nri   r  r&   r:   r?   r  r  )r   r8  r9  r  r  rP  )rD   rM   r   rQ  rR  rB  rC  )r*   r   r,   r   rR  r   rE  s          r.   rT  zTestPPoly.test_read_only  s    Hq!fq!fq!f-..H[[[!!x&&a
++++& 	+ 	+I )AG )AGaA1T77D;t$$((******	+ 	+r4   c           	         d }t           j                            d          }d}dD ]}t          j        |                    dd|dz                       }|                    dd|dz   |f	          }t          j        |          }|d d d f         t          j        |dz             d d d
d f         z  } ||          }	||z  }
t          j        |	j        |
          }||z  }t          ||d          }t          |d d d d d
f         |d d d
         d          }|                    ddd          }t           ||           ||          d           t           ||d           ||d          d           |                                }|                                }t           ||           ||          d           |                                }|                                }|                    ddd          D ]\  }}|                    ||          }|                    ||          }t          ||d           t           ||           ||          z
   ||           ||          z
  d           |                                }|                                }t          |t          j        |          d           d S )Nc                     t          j        | dz                                 dd          }t          j        | dz             }t          ||          }|d d dd d df         S )Nri   rB   )rD   rE   rI   r"   )powerr#  kr  s       r.   binom_matrixz/TestPPoly.test_descending.<locals>.binom_matrix  s_    	%!)$$,,R33A	%!)$$AaATTrT44R4Z= r4   r   r?   r>   r  r@   r>   ri   r   r&   sizerB   Tr  r   r  r   vIh%<=r   r:   r&   -q=)rD   r  RandomStater  r  diffrE   dotr  r   r   r  r  	integrateroots)r*   r   rngr  r  r,   cahh_powersr  capcdpcdpar  x_testpa_dpd_dpa_ipd_ir"  r%  int_aint_droots_droots_as                             r.   test_descendingzTestPPoly.test_descending  s   	! 	! 	! i##A&& %	C %	CAAr1q51122AR%!)Q88B

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

????BBvqMM22fa==uEEEE==??D==??DDDLL$$v,,UCCCC
 $$&&D$$&&DCV44 , ,1Q**Q**u59999Q$$q'' 14477TT!WW3D%*, , , , , hhjjGhhjjGGRWW%5%5EBBBBBK%	C %	Cr4   c                 Z   t           j                            ddddd          }t          j        g d          }t	          ||          }|j        j        |j        k    sJ |j        j        |j        k    sJ  |d          j        |j        dd          k    sJ  |t           j                            dd                    j        d|j        dd          z   k    sJ |                                }|j        j        d	k    sJ |	                                }|j        j        d
k    sJ d S )Nr  r&   ri   r?   r  r  r:   r:   r  r:   r&   ri   r&   r?   )r  r&   ri   r&   r?   )
rD   r  r  rM   r   r,   r  r   r  r  )r*   rr  r   r,   rb  dpips          r.   test_multi_shapezTestPPoly.test_multi_shapeA  s   INN1aAq))H[[[!!!QKKsyAG####syAG####qvv|qwqrr{****q1%%&&,0DDDDD\\^^tz_,,,,tz_,,,,,,r4   c                    t           j                            d           t          j        ddgddgddggt                    }t          j        g d	          }t          j        ||          }t           |d
          t          j        d                     t           |d          t          j        d                     d S )Nr  ri   r  r&   r:   r?   r  r   r  r  r  r  r  )	rD   r  r  rM   rA  r   construct_fastr   r   r*   r   r,   rb  s       r.   test_construct_fastzTestPPoly.test_construct_fastQ  s    
	tHq!fq!fq!f-U;;;H[[[!! A&&#
+? @ @AAA#
+K L LMMMMMr4   c                     t           j                            d          }|                    ddd          }t          j        t           j        d|                    d          df                   }t          ||          }t           j        d         }t          |||          }t           ||          |           t          |d d d d df         ||          }t           ||          d d df         |           d S )	Nr  r?   r      r   r   ri   )r  r'   gQ?333333?)
rD   r  r'  r  r  r   r   _ppoly_eval_1r   _ppoly_eval_2)r*   r,  r   r,   rb  rr  expecteds          r.   #test_vs_alternative_implementationsz-TestPPoly.test_vs_alternative_implementationsY  s    i##D))HHQBGBE!SXXb\\1,-..!QKKU&' Ar**"x((( 111QQQq51b11"aaadX.....r4   c                    t           j                            d          }t          j        t           j        d|                    d          df                   }|                    t          |                    }t          ||d          }t          j	        |          }t          j
        ddd          }t           ||          t          ||                     t          | }t          j	        |          }t           ||           ||                     |\  }	}
}dD ];}t          |	|
||          }t          j	        |          }|j        |j        k    sJ <d S )	Nr  r   r   ri   r   r   )NTFr  )rD   r  r'  r  r   r  r`  r   r   r  r-  r   r   r   rg   )r*   r,  r,   r+   r  r  r0  r%  ppptr   r  extraprb  s                 r.   r  zTestPPoly.test_from_splineg  sK   i##D))GBE!SXXb\\1,-..HHSVVQQs##[As##2b#/// SM""B2''' 1a) 	2 	2F1aV444A!!$$A=AM11111	2 	2r4   c                 0   t           j                            d          }t          j        t           j        d|                    d          df                   }|                    t          |                    }t          ||d          \  }}}t          |	                    |          |	                    |          |          }t          j        |          }	|                    ddd          }
t           |	|
           ||
                     d S r  )rD   r  r'  r  r   r  r`  r   r   r   r   r  r-  r   )r*   rr  r,  r,   r+   rQ  r   r  r  r  r0  s              r.   test_from_spline_2zTestPPoly.test_from_spline_2~  s    i##D))GBE!SXXb\\1,-..HHSVVA###1abjjmmRZZ]]A66s##[[Ar""2B(((((r4   c                 2   t           j                            d           |                    g dg          j        }|                    g dg          j        }|                    ddgg          j        }|                    ddg          }t          ||          }t          ||          }t          ||          }t          |                                j        |j                   t          |                    d          j        |j                   d S )	Nr  )r  r?   r&   ri   )r   r  r&      r  r   ri   r&   )	rD   r  r  r   r  r   r   r  r   )	r*   rr  r   dcddcr,   r  dppddpps	            r.   test_derivative_simplez TestPPoly.test_derivative_simple  s    
	tJJ~&&(ZZ((*jj5%.)**,JJ1v1a[[BllS!}})35111a((*DF33333r4   c           	         t           j                            d          }t          j        t           j        d|                    d          df                   }|                    t          |                    }t          ||d          }t          j	        |          }t          j
        ddd          }t          dd          D ]+}t           |||          t          |||                     ,d S )Nr  r   r   ri   r   r   r?   )rD   r  r'  r  r   r  r`  r   r   r  r-  r  r   r   r*   r,  r,   r+   r  r  r0  dxs           r.   test_derivative_evalzTestPPoly.test_derivative_eval  s    i##D))GBE!SXXb\\1,-..HHSVVQQs##[As##1++ 	< 	<BBBr2JJb#r(:(:;;;;	< 	<r4   c                    t           j                            d          }t          j        t           j        d|                    d          df                   }|                    t          |                    }t          ||dd          }t          j	        |          }t          j
        ddd          }t          dd          D ]=}t           |||           |                    |          |          d	| 
           >d S )Nr  r   r   ri   r:   r$  r  r   r>   dx=r  )rD   r  r'  r  r   r  r`  r   r   r  r-  r  r   r  r]  s           r.   r  zTestPPoly.test_derivative  s    i##D))GBE!SXXb\\1,-..HHSVVQQ!$$$s##[As##2,, 	S 	SBBBr2JJ(9b(9(9"(=(=zRzzRRRRR	S 	Sr4   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 )Nrv   r   ri   )r   r   r  r   r,   )r*   rb  s     r.   test_antiderivative_of_constantz)TestPPoly.test_antiderivative_of_constant  s    B4&1a&!!((**,eaS1#JA.G.G.IJJJ((**,eaS1#JA.G.G.IJJJJJr4   c                    t          ddggg d          }|                                }t          |j        ddgddgg           t          |j        g d           t          |                    dd          t          j        d                     t          t          j         |d           |d          z
            t          j        d                     d S )	Nrv   r'   r   ri   r   )r<   ri   r&   r&   r   )	r   r  r   r   r,   r   r*  rD   r   )r*   rb  qs      r.   #test_antiderivative_regression_4355z-TestPPoly.test_antiderivative_regression_4355  s    B9+yyy))q#hA/000[[[)))Aq))2:c??;;;
11Q44!!A$$;//
3	) 	) 	) 	) 	)r4   c                    |                     g dg dg|j                  j        }|                     g dg dg|j                  j        }|                     g dg dg|j                  j        }|                     g d|j                  }t          ||          }|                                }|                    d	          }|                                }	t          |j        |           t          |j        j        |j                   t          |j        j        |j                   t          |	j        j        |j                   d S )
N)r?   r&   ri   )r   r         ?r   )ri   ri   ri   r   )r   r   ri        ?)      ?gUUUUUU?r'   r   r   )r   r   g      ?rj  g*?)r   rk  ri   r&   )r   r   r  r   r  r   r,   r   )
r*   rr  r   iciicr,   r  ippiippiipp2s
             r.   test_antiderivative_simplez$TestPPoly.test_antiderivative_simple  sO    JJ			>>>2"*JEEG ZZ'?'?'?@
ZSSU jj///JJJL!z  
 
  	 JJ|||2:J661a[[!!  ##""$$q!!!&&&#%(((	35)))))r4   c                    t           j                            d          }t          j        ddd          dz  }|                    t          |                    }t          ||dd          }t          j        |          }t          dd          D ]}|
                    |          }|                    |          }t          |j        |j                   t          |          D ]y}	|                    |	          }d	}
|
|j        d d
         z  d|
z
  |j        dd          z  z   }t           ||j        dd                     ||          dd| d|	            zd S )Nr  r   ri   r@   r&   r:   ra  r>   r$  rB   r   rb  z k=)r   r   )rD   r  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_derivative  su   i##D))K1b!!1$HHSVVQQ!$$$s##2,, 	 	B##B''C ..$$CBD#%((( 2YY  nnQ''SU3B3Z<1q5#%)*;;Cabb	NNCCMMFVBFVFVSTFVFV    	 	r4   c                 8   t           j                            d          }t          j        t           j        d|                    d          df                   }|                    t          |                    }t          ||dd          }t          j	        |          }t          dd          D ]f}|                    |          }t          ||          }t          j        ddd          }	t           ||	          t          |	|          d	
           gd S )Nr  r   r   ri   r:   ra  r>   r   r   r   )rD   r  r'  r  r   r  r`  r   r   r  r  r  r   r-  r   r   )
r*   r,  r,   r+   r  r  r^  r  spl2r0  s
             r.   test_antiderivative_vs_splinez'TestPPoly.test_antiderivative_vs_spline  s   i##D))GBE!SXXb\\1,-..HHSVVQQ!$$$s##2,, 	' 	'B##B''Cc2&&DQ3''BCCGGU2t__!%' ' ' ' '	' 	'r4   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&   ri   r&   r&   )r&   ri   r?   r?   r  gA?g_p   ?g:0yE>r   )rD   rM   r  r   r  r   r  r   )r*   r   r,   rb  rB  r  s         r.   test_antiderivative_continuityz(TestPPoly.test_antiderivative_continuity  s    HlllLLL1224H[[[!!!QKK 	::TBBBB ]]__ac"""""r4   c                 <   t           j                            d          }t          j        t           j        d|                    d          df                   }|                    t          |                    }t          ||dd          }t          j	        |          }d\  }}|
                    ||          }|                                }	t          | |	|           |	|          z
  d	           t          |t          |||          d	           d
\  }}|
                    ||d          }t          | |	|           |	|          z
  d	           t          j        |
                    ||d                                                    sJ d S )Nr  r   r   ri   r:   ra  )r  ?Fcheck_0d)r  r{  Tr  )rD   r  r'  r  r   r  r`  r   r   r  r*  r  r   r   rw   rC  )
r*   r,  r,   r+   r  r  r"  r%  igrn  s
             r.   test_integratezTestPPoly.test_integrate  su   i##D))GBE!SXXb\\1,-..HHSVVQQ!$$$s##1\\!Q!!CCFFSSVVOe<<<<F1a-->>>>1\\!QD\11CCFFSSVVOe<<<<xQu==>>BBDDDDDDDr4   c                 0   t          j        g d          }t          j        ddgddgddgddgg          }dD ]\}||j        _        t	          ||          }|                    dd	          }t          j        |                                          sJ ]d S )
Nri   r&   r  r<   r   r;          rv   rP  ri   r  )rD   rM   rQ  rR  r   r*  rB  rC  )r*   r,   r   rR  r  rE  s         r.   test_integrate_readonlyz!TestPPoly.test_integrate_readonly%  s    HYYYHr2hc
RIBx@AA& 	+ 	+I )AGaA;;q!$$D;t$$((******	+ 	+r4   c           	         t          j        g d          }t          j        ddgddgddgddgg          }t          ||d          }|                                }t          j         |d	           |d
          z
            }t          |                    d
d	          |           t          |                    dd          |           t          |                    dd          t          j        d|z                       t          |                    dd          t          j         |d           |d          z
                       t          |                    dd          t          j         |d           |d
          z
   |d	          z    |d          z
                       t          |                    dd          t          j         |d           |d
          z
   |d	          z    |d          z
                       t          |                    dd          t          j         |d           |d
          z
   |d	          z    |d          z
  d	|z  z                        t          |                    dd          t          j         |d           |d          z
                       t          |                    dd          t          j         |d           |d          z
                       t          |                    dd          t          j         |d           |d          z
  d|z  z
                       d S Nr  r<   r   r;   r  rv   r  r  r  ri   r   ir  r&   r   r*  rn  r:   g      /@r  r   rB   r?   i)rD   rM   r   r  r   r   r*  )r*   r,   r   r  I
period_ints         r.   test_integrate_periodicz!TestPPoly.test_integrate_periodic1  s:   HYYYHr2hc
RIBx@AA!QJ///Z!qqtt,,
Aq)):666C,,j999C,,bjZ.H.HIIIC--
11S66AAcFF?33	5 	5 	5C++
11Q44!!A$$;1#5##>??	A 	A 	AHf55
11Q44!!A$$;1#5##>??	A 	A 	AC00
11Q44!!A$$;1#5##>Z#OPP	R 	R 	RAr**
11Q44!!A$$;//	1 	1 	1B,,
11Q44!!A$$;//	1 	1 	1As++
11Q44!!A$$;Z#?@@	B 	B 	B 	B 	Br4   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   ri   r,  r&   r@   r?   ra  gV瞯Ҽg     ?r   r   )	rD   r-  r   r   r   r  r+  r   r   )r*   r,   r+   r  r  rs  s         r.   
test_rootszTestPPoly.test_rootsM  s    K1b!!1$F2a4LLQQ!$$$s##HHJJqI~!y.126#;;U333333r4   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 )	NrB   rk  r   )r   r  rJ  rv   r  g333333?r;   ri   )	rD   rM   r  r   r   r+  r   rr   solve)r*   r   r,   r  constc1r  s          r.   test_roots_idzerozTestPPoly.test_roots_idzeroX  s     Hr4j1a&2t*5668H'''((1a[[

sBFJ7	9 	9 	9 VVXX
1aaa4EBll		%((sBFJ7	9 	9 	9 	9 	9r4   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   ri   r   )r   r   r+  rD   r   r  rF  s       r.   test_roots_all_zerozTestPPoly.test_roots_all_zerok  s   S1#JF!QKK		Arv;///

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

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

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

B'''''r4   c                 j   t          j        g dg dg          j        }t          j        g d          }t          ||          }t	          |                                t          j        ddg                     t	          |                    d          t          j        dg                     d S )N)ri   r   rB   )rB   r   r   r   g       r<   Fr  )rD   rM   r  r   r   r+  r   r*   r   r,   r  s       r.   test_roots_repeatedzTestPPoly.test_roots_repeated{  s    
 Hjjj***-..0HZZZ  1a[[

BJc{$;$;<<<U33RZ5F5FGGGGGr4   c                    t          j        dgdgg          j        }t          j        g d          }t          ||          }t	          |                                t          j        dg                     t	          |                    d          t          j        g                      t	          |                    d          t          j        dg                     t	          |                    dd          t          j        g                      t	          |                    d          t          j        g                      t	          |                    dd          t          j        g                      d S )Nri   rB   r  r'   F)discontinuityr   )rD   rM   r  r   r   r+  r   r  r  s       r.   test_roots_discontzTestPPoly.test_roots_discont  s&   HqcB4[!!#H[[[!!1a[[

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

BJT{,C,CDDDD	E 	Er4   N) r0   r1   r2   r  r  rT  r=  rC  rG  rN  r  rT  r[  r_  r  rd  rg  rq  rt  rw  ry  r  r  r  r  r  r  r  r  r  r  r  r3   r4   r.   r  r    s       
 
 
W W W+ + +/C /C /Cb- - - N N N/ / /2 2 2.
) 
) 
)4 4 4
< 
< 
<
S 
S 
SK K K) ) )* * *2  2' ' ' # # #E E E*
+ 
+ 
+B B B8	4 	4 	49 9 9&( ( ( 
H 
H 
HL L L$ $ $@E E E<E E E E Er4   r  c                   P    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZdS )	TestBPolyc                     |                     ddg          }|                     dgg          }t          ||          }t           |d          |                     d|j                             d S )Nr   ri   r?   r8  rt   r   r   r   r   r   r*   rr  r,   r   r  s        r.   r  zTestBPoly.test_simple  si    JJ1vJJu1a[[3Bbj!A!ABBBBBr4   c                     |                     ddg          }|                     dgdgg          }t          ||          }t           |d          |                     d|j                             d S )Nr   ri   r?   r8  ggfffff@r   r  r  s        r.   test_simple2zTestBPoly.test_simple2  sm    JJ1vJJaSz""1a[[3N"*!M!MNNNNNr4   c                     |                     ddg          }|                     dgdgdgg          }t          ||          }t           |d          |                     d|j                             d S )Nr   ri   r?   r  r9  g433333@r   r  r  s        r.   test_simple3zTestBPoly.test_simple3  s~    JJ1vJJaS1#''1a[[BsGGJJ@
JSS	
 	
 	
 	
 	
r4   c                     |                     ddg          }|                     dgdgdgdgg          }t          ||          }t           |d          |                     d|j                             d S )Nr   ri   r&   r  g:On?r   r  r  s        r.   test_simple4zTestBPoly.test_simple4  s    JJ1vJJaS1#s+,,1a[[3

 (. 68Z # A A	
 	
 	
 	
 	
r4   c                     |                     ddg          }|                     dgdgdgdgdgg          }t          ||          }t           |d          |                     d|j                             d S )Nr   ri   r   r&   r  g	h"l@r   r  r  s        r.   test_simple5zTestBPoly.test_simple5  s    JJ1vJJaS1#sQC0111a[[3

 &( 02z	 # ; ;	
 	
 	
 	
 	
r4   c                 0   |                     g d          }|                     ddgddgddgg          }t          ||d          }t           |d          |                     d|j        	                     t           |d
          |                     d|j        	                     t           |dd          |                     d|j        	                     t           |d
d          |                     d|j        	                     d S )Nr   ri   r?   r?   r   r&   r  r  g333333@gHzG?r   g[(\?ri   r  r  r  s        r.   r  zTestBPoly.test_periodic  s   JJyyy!!JJAAA/001aZ0003Jbj!I!IJJJ4"**^2:*"N"NOOO3

BJJxrzJ$J$JKKK4RZZ2:Z%N%NOOOOOr4   c           	      n   t           j                            d          }d}dD ]}t          j        |                    dd|dz                       }|                    dd|dz   |f          }|d d d	                                         }t          ||d
          }t          |d d d d d	f         |d d d	         d
          }|                    ddd          }	t           ||	           ||	          d           t           ||	d           ||	d          d           |                                }
|                                }t           |
|	           ||	          d           |	                                }|	                                }|                    ddd          D ]\  }}|
                    ||          }|
                    ||          }t          ||d           t           ||           ||          z
   ||           ||          z
  d           d S )Nr   r?   r!  r>   ri   r  r8  r"  rB   Tr  r   r  r   r$  r   r%  r&  )rD   r  r'  r  r  rr   r   r   r  r  r*  )r*   r,  r  r  r,   r-  r2  r3  r  r4  r5  r6  r7  r8  r"  r%  r9  r:  s                     r.   r=  zTestBPoly.test_descending$  sH   i##A&& 	, 	,AAr1q51122AT3eai^<<BDDbDBr1$///Br!!!TTrT'{AdddG>>>B[[b#..FBBvJJ6

????BBvqMM22fa==uEEEE==??D==??DDDLL$$v,,UCCCC
 $$&&D$$&&DCV44 , ,1Q**Q**u59999Q$$q'' 14477TT!WW3D%*, , , , ,	,/	, 	,r4   c                 $   t           j                            d          }|                    ddddd          }t          j        g d          }t          ||          }|j        j        |j        k    sJ |j        j        |j        k    sJ  |d          j        |j        dd          k    sJ  ||                    dd                    j        d	|j        dd          z   k    sJ |	                                }|j        j        d
k    sJ d S )Nr  r  r&   ri   r?   r  r  r:   r?  r@  )
rD   r  r'  r  rM   r   r,   r  r   r  )r*   r,  r   r,   rb  rA  s         r.   rC  zTestBPoly.test_multi_shapeF  s   i##D))HHQ1a##H[[[!!!QKKsyAG####syAG####qvv|qwqrr{****q!Q  &&17122;*>>>>>\\^^tz_,,,,,,r4   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   |j                             d S )Nr   r&   r?   ri   r  r8  r   r  )r*   rr  r,   r   r  xvalr$  s          r.   test_interval_lengthzTestBPoly.test_interval_lengthS  s    JJ1vJJaS1#''1a[[1HBtHHJJqAaCy!A#q!A#6Qq@
JSS	
 	
 	
 	
 	
r4   c                 \   |                     g d          }|                     ddgddgddgg          }t          ||          }t           |d          |                     d|j                             t           |d          |                     d	|j                             d S )
Nr  r?   r   r&   r  gGzG?r   333333?r  r  r  s        r.   test_two_intervalszTestBPoly.test_two_intervals^  s    JJyyy!!JJAAA/001a[[3Krz!J!JKKK3N"*!M!MNNNNNr4   c                 6   ddg}dgdgdgg}t          ||          }dD ]}t          |||          }|                                }|du rgt          j         |d	d
g                                                    sJ t          j         |d	d
g                                                    sJ t          j         |d	d
g                                                    rJ t          j         |d	d
g                                                    rJ d S )Nr   r&   r?   ri   r  r  r  Fr  g @)r   r  rD   rw   rC  r  )r*   r,   r   r  rg   bp_ds         r.   r  zTestBPoly.test_extrapolate_attrf  s0   FS1#sO1a[[. 	= 	=Kq!555B==??De##xD#;004466666xdC[ 1 122668888888BBc{OO4488:::::8DD$$5$566::<<<<<<	= 	=r4   N)r0   r1   r2   r  r  r  r  r  r  r=  rC  r  r  r  r3   r4   r.   r  r    s        C C CO O O
 
 
	
 	
 	


 

 


P 
P 
P ,  ,  ,D- - -	
 	
 	
O O O= = = = =r4   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|j                             t           |d          |                     d	|j                             t          |                    fd
dD                       |                     g d|j                             t          |                    fddD                       |                     g d|j                             d S )Nr  r?   r   r&   r  r  r   r  r  c                 (    g | ]} d |          S )r  r3   r   r  r  s     r.   
<listcomp>z5TestBPolyCalculus.test_derivative.<locals>.<listcomp>  #    !B!B!B"""S"++!B!B!Br4   ri   r&   r?   )r  r|   r<   c                 (    g | ]} d |          S )r  r3   r  s     r.   r  z5TestBPolyCalculus.test_derivative.<locals>.<listcomp>  r  r4   )r  rv   r   )r   r   r  r   r   r{  )r*   rr  r,   r   bp_derr  s        @r.   r  z!TestBPolyCalculus.test_derivativex  sW   JJyyy!!JJAAA/001a[[sRZZ
Z%K%KLLLsRZZ2:Z%F%FGGG 	!B!B!B!B	!B!B!BCC

#7#7#7rz
JJ	
 	
 	
 	!B!B!B!B	!B!B!BCC

<<<rz
BB	
 	
 	
 	
 	
r4   c                 j   t           j                            d          }d\  }}t          j        |                    |                    }|                    ||dz
  f          }|                    |          |                    |          }}t          ||          }t          j        |          }t          |          D ]o}	|	                                }|	                                }|
                    |d         |d         d          }
t           ||
           ||
                     pd S Nr  r:   r   ri   r   rB      )rD   r  r'  r  r   r   r   r  r  r  r-  r   )r*   rr  r,  r  r  r,   r   r  r  dr  s              r.   test_derivative_ppolyz'TestBPolyCalculus.test_derivative_ppoly  s   i##D))1GCJJqMM""JJ1Q3x  zz!}}bjjmm11a[['++q 	. 	.ABB++adAbE2..CBBsGGRRWW----		. 	.r4   c           	         t           j                            d          }d\  }}t          j        |                    |                    }|                    ||dz
  f          }|                                |dz  fD ]|}t          ||          }t          j        |d         |d         d          }t          |          D ]8}	t           |||	           |	                    |	          |                     9}d S )Nr  r  ri   r+  r   rB   r  )
rD   r  r'  r  rr   r   r-  r  r   r  )
r*   r,  r  r  r,   r   ccr  r  r  s
             r.   test_deriv_inplacez$TestBPolyCalculus.test_deriv_inplace  s    i##D))1GCJJqMM""JJ1Q3x   6688Q\* 	C 	CBr1B+adAbE2..C1XX C C3

,<BMM!,<,<S,A,ABBBBC	C 	Cr4   c           
         |                     g d          }|                     ddgddgg          }t          ||          }|                                }|                    ddd|j                  }t           ||          |                    |dk     |dz  dz  d	|z  |dz  dz
  z  d
z             dd           d S )Nr  r   ri   r?   r   r   r&   r;   r'   g      ?r&  r   r   )r   r   r  r-  r   r   where)r*   rr  r,   r   r  bixxs          r.   rq  z,TestBPolyCalculus.test_antiderivative_simple  s     JJyyy!!JJAA'((1a[[  [[Ar[442aQ),rRUQY)?$)FH H"	0 	0 	0 	0 	0 	0r4   c                    t           j                            d          }t          j        |                    d                    }|                    d          }t	          ||          }t          j        |d         |d         d          }t           |                                                                |           ||          dd           d S )	Nr  r   r  r>   r&   r?   r   rB   r   r&  r  )	rD   r  r'  r  r   r-  r   r  r  r*   r,  r,   r   r  r  s         r.   test_der_antiderz"TestBPolyCalculus.test_der_antider  s    i##D))GCJJrNN##JJ}%%1a[[[1quc**8))++6688<<2U	8 	8 	8 	8 	8 	8r4   c                    t           j                            d          }t          j        |                    d                    }|                    d          }t	          ||          }t          j        |          }t          j        |d         |d         d          }t           |	                    d          |           |	                    d          |          dd	           d S )
Nr  r   r  r   rB   r>   r&   r&  r  )
rD   r  r'  r  r   r   r  r-  r   r  )r*   r,  r,   r   r  r  r  s          r.   test_antider_ppolyz$TestBPolyCalculus.test_antider_ppoly  s    i##D))GCJJrNN##JJ}%%1a[['++[1qub)),))!,,R00,))!,,R00u5	J 	J 	J 	J 	J 	Jr4   c                 t   t           j                            d          }t          j        |                    d                    }|                    d          }t	          ||                                          }|j        dd         }t           ||dz
             ||dz             dd           d S )	Nr  r   r  r>   ri   rB   r   r&  r  )rD   r  r'  r  r   r  r,   r   r  s         r.   test_antider_continuousz)TestBPolyCalculus.test_antider_continuous  s    i##D))GCJJrNN##JJw1a[[''))T!B$Z2:2:U	@ 	@ 	@ 	@ 	@ 	@r4   c                    t           j                            d          }t          j        |                    d                    }|                    d          }|                    |          |                    |          }}t          ||          }t          j        |          }t          |	                    dd          |	                    dd          ddd           d S )	Nr  r   r  r   ri   r&  F)r   r   r}  )
rD   r  r'  r  r   r   r   r  r   r*  )r*   rr  r,  r,   r   r  r  s          r.   r  z TestBPolyCalculus.test_integrate  s    i##D))GCJJrNN##JJwzz!}}bjjmm11a[['++Q**Q**UU	T 	T 	T 	T 	T 	Tr4   c                    dgg}ddg}t          ||          }t          |                    dd          t          j        d          dd           t          ||d          }t          j        |                    dd                    sJ t          |                    ddd	          t          j        d          dd           d S )
Nri   r   r&   r;   r   F)r   r}  r  T)r   r   r*  rD   r   rw   )r*   r   r,   r%  b1s        r.   test_integrate_extrapz'TestBPolyCalculus.test_integrate_extrap  s    SEF!QKK 	Aq))2:b>>"U	4 	4 	4 	4 1aU+++xQ**+++++Qt<<
2UU	D 	D 	D 	D 	D 	Dr4   c           	         |                     g d          }|                     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 r  )r   r   r  r   r  r   r*  )r*   rr  r,   r   r  r  r  s          r.   r  z)TestBPolyCalculus.test_integrate_periodic  s,   JJyyy!!JJR3*r3i"bBCC"5A;;JGGGZZ!qqtt,,
Aq)):666C,,j999C,,bjjZ.H.HIIIC--rzz!!C&&11S66//J/JKKKC++RZZ!qqttaadd8JQQsVV8S-T-TUUUHf55

11Q44!!A$$;1#5##>??	A 	A 	AC00

11Q44!!A$$;1#5##>Z#OPP	R 	R 	R 	Ar**BJJqqttaadd{,C,CDDDB,,bjj1!.E.EFFFAs++RZZ!qqtta*n8T-U-UVVVVVr4   c                    |                     dgg          }|                     ddg          }t          ||          }|                    ddd          }t           |                    d          |           |                                |          dd           t           |                    d          |           |                    d          |          dd           d S )Nri   r   r  rB   r&  r  )r   r   r-  r   r  r  )r*   rr  r   r,   r%  r  s         r.   test_antider_negz"TestBPolyCalculus.test_antider_neg  s    JJuJJ1v!QKK[[Ar""(R((,,.@a.>.>.@.@.D.D"	0 	0 	0 	0Q++-AQ-=-=b-A-A"-E-E"	0 	0 	0 	0 	0 	0r4   N)r0   r1   r2   r  r  r  rq  r  r  r  r  r  r  r  r3   r4   r.   r  r  v  s        
 
 
 . . ."C C C0 0 0(8 8 8
J 
J 
J@ @ @T T TD D DW W W00 0 0 0 0r4   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&   ri   r   r  r8  ffffff?)r   r   r   r  r  r   )r*   rr  r,   r   r  r  r  xvs           r.   test_bp_from_ppz#TestPolyConversions.test_bp_from_pp  s    JJyyy!!JJAAA/001a[[#B''(,,ZZc
##22'''2B(((((r4   c                    t           j                            d          }d\  }}t          j        |                    |                    }|                    ||dz
  f          }t	          ||          }t          j        |          }t	          j        |          }t          j        |d         |d         d          }	t           ||	           ||	                     t           ||	           ||	                     d S r  )
rD   r  r'  r  r   r   r  r  r-  r   )
r*   r,  r  r  r,   r   r  r  r  r  s
             r.   test_bp_from_pp_randomz*TestPolyConversions.test_bp_from_pp_random&  s    i##D))1GCJJqMM""JJ1Q3x  1a[[#B''(,,[1qub))22'''2B(((((r4   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?   ri   r  r&   r8  r  )r   r   r   r  r  r   )r*   rr  r,   r   r  r  r  r  s           r.   test_pp_from_bpz#TestPolyConversions.test_pp_from_bp3  s    JJyyy!!JJAAA/001a[['++$R((ZZc
##22'''2B(((((r4   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?   ri   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)r0   r1   r2   r  r  r  r  r3   r4   r.   r  r    sP        	) 	) 	)) ) )	) 	) 	)
' 
' 
' 
' 
'r4   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   ri   r&   r?   r;   rt   r   _construct_from_derivativesr   )r*   r  s     r.   test_make_poly_1z)TestBPolyFromDerivatives.test_make_poly_1L  s6    .q!aS1#>>RH%%%%%r4   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   ri   )rv   rv   rv   r&   r?   )r;   rn  rv   )r;   g      rv   r  r*   r  r  c3s       r.   test_make_poly_2z)TestBPolyFromDerivatives.test_make_poly_2P  s    .q!aVaSAALLL))) .q!aVaSAANNN+++ .q!aS1a&AANNN+++++r4   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   ri   r  r  )rv   竪?g@r  )r  r&   r?   )rv   gUUUUUU	@g
@r  r&   r?   )rv   r  rt   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.../////r4   c                    t           j                            d          }t           j        d|                    d          f         }t           j        d|                    d          f         }t	          j        dd||          }t	          |d d d f         ddg          }t          d          D ]X}t           |d          ||         d           t           |d	          ||         d           |                                }Yd S )
Nr  r   r:   ri   r  r<   Fr|  rv   )	rD   r  r'  r   r   r	  r  r   r  )r*   r,  yaybr   r  r  s          r.   test_make_poly_12z*TestBPolyFromDerivatives.test_make_poly_12i  s    i##E**U1cjjmm#$U1cjjmm#$-aB;;1QQQW:1v&&q 	! 	!ABBrFFBqEE::::BBrFFBqEE::::BB	! 	!r4   c                 d   t           j                            d          }ddg}d\  }}|                    |ddddf          }t          ||          }t          j        ||          }t          ||          }t          j        ddd          }	t           ||	           ||	                     d S )	Nr  r   ri   )r   r:   r&   r?   r  r   )rD   r  r'  r   _raise_degreer-  r   )
r*   r,  r,   r  r  r   r  r  r  rr  s
             r.   test_raise_degreez*TestBPolyFromDerivatives.test_raise_degreeu  s    i##E**F1JJ1aA''1a[[ A&&Bll[Ar""2B(((((r4   c                 N    t          t          t          j        ddgdg           d S )Nr   ri   r(   rn   r   r
  rY   s    r.   
test_xi_yiz#TestBPolyFromDerivatives.test_xi_yi  s%    j%"81a&1#FFFFFr4   c                 `    g d}dgdgdgg}t          t          t          j        ||           d S )Nr   r   ri   r   r  )r*   r0  r   s      r.   test_coords_orderz*TestBPolyFromDerivatives.test_coords_order  s9    YYcA3_j%"8"bAAAAAr4   c                 T   g d}ddgdgddgddgg}t          j        ||          }|j        j        dk    sJ |                                }dD ]X}t           ||          t          j        d                     t           ||          t          j        d                     Yd S )Nr  r   )r  r?   )r<   r8  rv   r  gffffff?r;   r*  r<   )r   r
  r   r  r  r   rD   r   )r*   r0  r   r  ppdrr  s         r.   
test_zerosz#TestBPolyFromDerivatives.test_zeros  s    \\!fqcAq6Aq6*#B++tzV####mmoo2 	6 	6BBBrFFBJsOO444CCGGRZ__5555	6 	6r4   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 )rv   r&   r3   )r   r  s     r.   r  z<TestBPolyFromDerivatives._make_random_mk.<locals>.<listcomp>  s     777qad777r4   ri   c                 :    g | ]}                               S r3   )r  )r   r  r  r,  s     r.   r  z<TestBPolyFromDerivatives._make_random_mk.<locals>.<listcomp>  s#    000cjjmm000r4   )rD   r  r'  r   r  )r*   r  r  r0  r   r,  s     `  @r.   _make_random_mkz(TestBPolyFromDerivatives._make_random_mk  sp    i##D))Z77E!A#JJ7778800000U1Q3ZZ0002vr4   c                 
   d\  }}|                      ||          \  }}t          j        ||          }t          |dz            D ];t	           ||          fd|D                        |                                }<d S )Nr:   r   r&   c                      g | ]
}|         S r3   r3   )r   yyr  s     r.   r  z;TestBPolyFromDerivatives.test_random_12.<locals>.<listcomp>  s    $<$<$<2RY$<$<$<r4   )r%  r   r
  r  r   r  )r*   r  r  r0  r   r  r  s         @r.   test_random_12z'TestBPolyFromDerivatives.test_random_12  s    1%%a++B#B++1a4[[ 	! 	!EBBrFF$<$<$<$<$<$<$<===BB	! 	!r4   c           	          d\  }}|                      ||          \  }}t          t          t          j        fi t          ||d           d S )Nr'  r   r0  r   orders)r%  r(   rn   r   r
  r   r*   r  r  r0  r   s        r.   test_order_zeroz(TestBPolyFromDerivatives.test_order_zero  sc    1%%a++Bj%"8 	0 	0"A...	0 	0 	0 	0 	0r4   c           
          d\  }}|                      ||          \  }}t          j        ||d|z  dz
             t          t          t          j        fi t          ||d|z             d S )Nr'  r&   ri   r-  r,  )r%  r   r
  r(   rn   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 	2r4   c           	      ,   d\  }}|                      ||          \  }}d}t          j        |||          }t          |dz  dz             D ]N}t	           ||dd         dz
             ||dd         dz                        |                                }Ot          j         ||dd         dz
             ||dd         dz                       rJ d}t          j        |||          }t          |dz            D ]N}t	           ||dd         dz
             ||dd         dz                        |                                }Ot          j         ||dd         dz
             ||dd         dz                       rJ d S )	Nr'  r:   r1  r&   ri   rB   r&  r  )r%  r   r
  r  r   r  rD   allclose)r*   r  r  r0  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;rr"QrT(U"233RR1R458H5I5IJJJJJ
 #B5999uax 	! 	!ABBr!B$x%/00""R"X5E2F2FGGGBB;rr"QrT(U"233RR1R458H5I5IJJJJJJJr4   c           	         d\  }}|                      ||          \  }}d t          |          D             }t          |dd                   D ]\  }}t          j        |||          }t          ||         dz  dz             D ]>}	t           ||dz
             ||dz                        |                                }?t          j         ||dz
             ||dz                       rJ d S )N)r  r   c                     g | ]}|d z   S )ri   r3   )r   os     r.   r  z>TestBPolyFromDerivatives.test_orders_local.<locals>.<listcomp>  s    ***A!a%***r4   ri   rB   r1  r&   r&  )	r%  r  r   r   r
  r   r  rD   r4  )
r*   r  r  r0  r   r-  r  r,   r  r  s
             r.   test_orders_localz*TestBPolyFromDerivatives.test_orders_local  s   1%%a++B**q***b2h'' 	A 	ADAq'Bv>>>B6!9>A-.. % %1u9rr!e)}}===]]__{22a%i==""QY--@@@@@@	A 	Ar4   c                 :   t           j                            d          }d\  }}t          j        |                    |dz                       }|                    |dz   |dddf          }t	          j        ||          }|j        j        d|z  |dddfk    sJ d S )Nr  )r  r:   ri   r  r  r   r&   )rD   r  r'  r  r   r
  r   r  )r*   r,  r  r  r0  r   r  s          r.   test_yi_trailing_dimsz.TestBPolyFromDerivatives.test_yi_trailing_dims  s    i##D))1WSZZ!__%%ZZ1aAq)**#B++tzac1aA.......r4   c                    t          j        d          }t          j        ddgdgdgg|          }t	           |d          t          j        d                     t          j        d          }t          j        ddgdgdgg|          }t	           |d          t          j        d                     d}t          j        ddgdgdgg|          }t	           |d          t          j        d                     d}d S )Nri   r   r1  )rD   int32r   r
  r   r   int64)r*   r-  rb  s      r.   test_gh_5430z%TestBPolyFromDerivatives.test_gh_5430  s    
 !"Aq6QC!:fEEEAAaDD"*Q--000!"Aq6QC!:fEEEAAaDD"*Q--000"Aq6QC!:fEEEAAaDD"*Q--000r4   N)r0   r1   r2   r
  r  r  r  r  r  r  r!  r%  r*  r/  r2  r5  r9  r;  r?  r3   r4   r.   r  r  K  s       & & &
, 
, 
,0 0 0
! 
! 
!) ) )G G GB B B
	6 	6 	6  ! ! !0 0 02 2 2K K K0
A 
A 
A/ / /    r4   r  c                   J    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S )TestNdPPolyc                    t           j                            d          }|                    dd          }t          j        ddd          }|                    d          }t          ||f          } ||f          }t          |d d d d d f         ||                                          }t          ||           d S )Nr  r  r:   r   ri   r  r   )	rD   r  r'  r  r-  r   rK  r  r   )r*   r,  r   r,   r0  rb  v1v2s           r.   test_simple_1dzTestNdPPoly.test_simple_1d  s    i##D))HHQNNK1c""XXc]]AtQuXX1QQQqqqX;2..4466Br4   c           
         t           j                            d          }|                    dddd          }t          j        ddd          }t          j        ddd          d	z  }|                    d
          }|                    d
          }t          j        t          |          dg|j                  }|                    t           j	                   t          j        |                    ddd          ||ft          j        ddgt           j                  t           j        ||f         t          j        ddgt           j                  d|           |                                }t#          |||f||          }t%          ||           t'          |||f          }	dD ]V}
 |	t           j        ||f         |
          }t#          |||f|||
          }t%          ||t)          |
                     Wd S )Nr  r  r:   r  r  r   ri   r   r&   r   r   r  *   )Nr   r   r   ri   )ri   r   )r&   r?   )r   r&   r  r  )rD   r  r'  r  r-  r  r`  r   fillr   r   evaluate_ndrI   rM   intcc_r  _ppoly2d_evalr   r   r  )r*   r,  r   r,   r+   r0  r   rC  rD  rb  r  s              r.   test_simple_2dzTestNdPPoly.test_simple_2d	  s   i##D))HHQ1a  K1c""K1c""A%XXc]]XXc]]Xs2wwl!'222
199S#q11q68QF"':::5R=8QF"':::	 	 	 XXZZ1q!fb"--BA1v@ 	6 	6B25R=R(((Bq1a&"bR888BBDHH55555	6 	6r4   c           	      D   t           j                            d          }|                    dddddd          }t          j        dd	d          }t          j        dd	d          d
z  }t          j        dd	d          dz  }|                    d          }|                    d          }|                    d          }t          ||||f          }	dD ]I}
 |	|||f|
          }t          ||||f||||
          }t          ||t          |
                     Jd S )Nr  r  r:   r  r  r   r   r   ri   r&   r>   r?   (   )Nr   r   r   r   ri   r   ri   r   r   )r&   r?   r   )r  r   r&   rJ  r  )	rD   r  r'  r  r-  r   _ppoly3d_evalr   r  )r*   r,  r   r,   r+   r-   r0  r   zirb  r  rC  rD  s                r.   test_simple_3dzTestNdPPoly.test_simple_3d	  s*   i##D))HHQ1aA&&K1c""K1c""A%K1c""A%XXb\\XXb\\XXb\\A1ay!! 	6 	6BBB<B'''Bq1a)RRB???BBDHH55555		6 	6r4   c           
      |   t           j                            d          }|                    dddddddd	          }t          j        d
dd          }t          j        d
dd          dz  }t          j        d
dd	          dz  }t          j        d
dd          dz  }|                    d          }|                    d          }|                    d          }	|                    d          }
t          |||||f          } ||||	|
f          }t          |||||f|||	|
          }t          ||           d S )Nr  r  r:   r  r  r   r   r>   r   r   ri   r&   r?   r   r  )rD   r  r'  r  r-  r   _ppoly4d_evalr   )r*   r,  r   r,   r+   r-   ur0  r   rW  uirb  rC  rD  s                 r.   test_simple_4dzTestNdPPoly.test_simple_4d2	  s1   i##D))HHQ1aAr2..K1c""K1c""A%K1d##Q&K1d##Q&XXb\\XXb\\XXb\\XXb\\A1a|$$QBB  1q!QlBB;;Br4   c                    t           j                            d          }|                    dd          }t          j        ddd          }t          ||f          }|                    dg          }t          ||          }|                                }t          |j	        |j	                   |
                    dg          }t          ||          }|
                    d          }t          |j	        |j	                   d S )	Nr  r  r:   r   ri   r  rJ  r&   )rD   r  r'  r  r-  r   r  r   r   r   r  )r*   r,  r   r,   rb  rA  r  dp1s           r.   test_deriv_1dzTestNdPPoly.test_deriv_1dF	  s    i##D))HHQNNK1c""At \\aS\!!1a[[mmooce$$$ !%%1a[[""ce$$$$$r4   c                 V   t           j                            d          }|                    dddddd          }t          j        dd	d          }t          j        dd	d          d
z  }t          j        dd	d          dz  }t          ||||f          }t          |                    ddd	d
dd          |          }|                    d
g          }|                    d
          }	t          |j
        |	j
                            dd
dd	dd                     t          |                    d	ddd
dd          |          }|                    g d          }|                    d	          }	t          |j
        |	j
                            d
dddd	d                     t          |                    d
ddd	dd          |          }|                    g d          }|                    d          }	t          |j
        |	j
                            d
ddddd	                     d S )Nr  r  r:   r  r  r   r   r   ri   r&   r>   r?   rJ  rT  )r   r   r?   )rD   r  r'  r  r-  r   r   r  r  r   r   r  )
r*   r,  r   r,   r+   r-   rb  r  rA  r_  s
             r.   test_deriv_3dzTestNdPPoly.test_deriv_3dZ	  s   i##D))HHQ1aA&&K1c""K1c""A%K1c""A%A1ay!! 1;;q!Q1a00!44\\aS\!!mmA1aAq99	; 	; 	; 1;;q!Q1a00!44++""1aAq99	; 	; 	; 1;;q!Q1a00!44\\YYY\''mmA1aAq99	; 	; 	; 	; 	;r4   c                    t           j                            d          }t          j        d          }t          j        ddd          dz  }t          j        ddd          dz  }t          j        ddd          d	z  }t          ||||f          }|                    d
          }|                    d          }|                    d          }|                    d          }	|                    d          }
t           |||	|
f          ||	dz  z  |
dz  z  t          d	          t          d          z  z             d S )Nr  )ri   ri   ri   r?   r  r:   r   ri   r  r:   r&   r  r?   )ri   r   r  )r   r&   r   r  )
rD   r  r'  rm   r-  r   r  r  r   r   )r*   r,  r   r,   r+   r-   rb  rB  r0  r   rW  s              r.   test_deriv_3d_simplez TestNdPPoly.test_deriv_3d_simpley	  s4   i##D))G&''K1c""A%K1c""A%K1c""A%A1ay!!i((y))XXb\\XXb\\XXb\\BB<((RU
RU*eAhhuQxx.?@	B 	B 	B 	B 	Br4   c                   
 t           j                            d          }|                    dddd          }t          j        ddd          dz  }t          j        ddd          d	z  }|                    dd	dd
          }|                    |j        d         |j        d         d                                          }t          j
        ||d	           |                    |j                  }|                    dd	dd
          }|                    dd
dd	          }|                    |j        d         |j        d         d                                          }t          j
        ||d	           |                    |j                  }|                    d	dd
d                                          }t          |||f          
ddgddgddgddgfD ]d}
                    |          }t          
fd|t          dd          gd	z            \  }}	t          ||dddt!          |                     ed S )Nr  r  r:      r  r   ri   r   r&   r?   rB   rI  )r   r'   )r  r  )rJ  r9  c                      | |f          S r   r3   )r,   r+   rb  s     r.   <lambda>z/TestNdPPoly.test_integrate_2d.<locals>.<lambda>	  s    11aV99 r4   gh㈵>)epsrelepsabs)r   F)r   r   r}  r   )rD   r  r'  r  r-  r  rI   r  rr   r   fix_continuityr   r*  r!   r   r   r  )r*   r,  r   r,   r+   cxrangesr~  ig2err2rb  s             @r.   test_integrate_2dzTestNdPPoly.test_integrate_2d	  sF   i##D))HHQ2r""K1d##Q&K1d##Q& KK1a##YYqwqz171:r227799b!Q'''JJqwKK1a##KK1a##YYqwqz171:r227799b!Q'''JJqwKK1a##((** A1v' &))"J/1 		2 		2F
 V$$B4444f$(T$B$B$B#CA#EG G GICB$TE$(LL2 2 2 2 2		2 		2r4   c           	         t           j                            d          }|                    dddddd          }t          j        dd	d          d	z  }t          j        dd	d          d
z  }t          j        dd	d          dz  }t          ||||f          }|                    d          }|                    d          }d\  }	}
|                    |	|
d          }|                    d          }t           |||f           ||
||f           ||	||f          z
             |                    |	|
d	          }|                    d          }t           |||f           |||
|f           |||	|f          z
             |                    |	|
d
          }|                    d          }t           |||f           ||||
f           ||||	f          z
             d S )Nr  r  r:   r  rf  r  r   r   ri   r&   r   r?   r   )r9  r  rl   rU  rT  r  )	rD   r  r'  r  r-  r   integrate_1dr  r   )r*   r,  r   r,   r+   r-   rb  r[  vr"  r%  pxpaxpypaypzpazs                    r.   test_integrate_1dzTestNdPPoly.test_integrate_1d	  s   i##D))HHQ1b"b))K1d##Q&K1d##Q&K1d##Q& A1ay!!HHSMMHHSMM1^^Aqq^))y))Aq6

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

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

CCAq	NNSS!Q^^$CDDDDDr4   c                 T   t           j                            d                              d          }t          j        ddd          }t          j        ddd          dz  }t          j        ddd	          d
z  }t          ||||f          }fd}t          d	||           d S )Nr  )r  r:   r  r  r   r   r"  r   ri   r   r   r&   r>   r?   c                                          d          }                     d          }                     d          } ||||f           d S )NrR  r"  )r  )r  r  r0  r   rW  r,  s        r.   r  z/TestNdPPoly.test_concurrency.<locals>.worker_fn	  sX    "%%B"%%B"%%BCRr4   )rD   r  default_rngr  r-  r   r    )r*   r   r,   r+   r-   rb  r  r,  s          @r.   r  zTestNdPPoly.test_concurrency	  s    i##E**KK/K00K1c""K1c""A%K1c""A%A1ay!!	 	 	 	 	 	 Iq11111r4   N)r0   r1   r2   rE  rP  rX  r]  r`  rb  rd  rp  rz  r  r3   r4   r.   rA  rA    s             6 6 6:6 6 6(     (% % %(; ; ;>B B B(2 2 2BE E E42 2 2 2 2r4   rA  c                     t          j        t          |           j        d         f          }t	          |          D ]\  }}|dk     s|dk    rt           j        ||ddf<   %t          j        ||          dz
  ||         z
  |         |cxk    r|dz            k     sn J t           fdt           j        d                   D                       }|||ddf<   |S )z&Evaluate piecewise polynomial manuallyr&   r   ri   Nc              3   Z   K   | ]%}|f         j         d          |z
  dz
  z  z  V  &dS )r   ri   N)r  )r   r  r   r  r  s     r.   r  z _ppoly_eval_1.<locals>.<genexpr>	  sW       , , !A#QWQZ\!^,, , , , , , ,r4   )	rD   zerosr`  r  r   r   searchsortedsumr  )	r   r,   xpsrJ  r  rr  rs  r  r  s	   `      @@r.   rK  rK  	  s   
(CHHagaj)
*
*C3 	 	266R!VVvC!!!HOAr""Q&1Itr""""AacF"""""" , , , , , ,qwqz**, , , , ,AaaaCJr4   c                    |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   rB   ri   )Nc           	      n    g | ]1}t          j        |d d f         d d |         f                   2S r   )rD   r)  )r   r  Vindxsr  s     r.   r  z!_ppoly_eval_2.<locals>.<listcomp>	  sA    PPPArva111gr!!!U1X+77PPPr4   )r  rD   r  
empty_likecompressr  clipr`  takevanderrM   r  rI   )ra  breaksr   rK  r"  r%  K	saveshaper  maskr  r(  valuesr  r  r  s                @@@r.   rL  rL  	  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
++i
 
 CJr4   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 orderri   )rn   r   )r,   r+   r#  s      r.   _dpowr  
  sO     	1uu3444	
QqAEAIq!!AAJ..r4   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
    NrH  r   r&   r   rB   ri   rD   r  r`  r   r  r   zipr   r  r  r  )r   rc  r   ynewr  rJ  nxnyjoutr,   r+   j1j2s1s2r  k1k2s                     r.   rO  rO  
  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		Jr4   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
    NrS  r   r?   r   rB   ri   r&   r  )r   rc  r   r  znewr  rJ  r  r  nzr  r,   r+   r-   r  r  j3r  r  s3r  r  r  k3s                           r.   rV  rV  2
  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		Jr4   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   rB   ri   r&   r?   r  )r   rc  r   r  r  unewr  rJ  mxmymzmur  r,   r+   r-   r[  r  r  r  j4r  r  r  s4r  r  r  r  k4s                                 r.   rZ  rZ  Z
  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		Jr4   r   )Bscipy._lib._array_apir   r   r   r   r   rY  r   r(   numpyr	   r
   r   r   rD   scipy.interpolater   r   r   r   r   r   r   r   r   r   r   r   r   r   scipy.specialr   r   r   scipy._lib._gcutilsr   r   scipy._lib._testutilsr    scipy.integrater!   r"   rZ  skip_xp_backendsxfail_xp_backendsr$   r6   r^  rh  r\  r5  r  r  r  r  r  r  r  rA  rK  r   rL  r  rO  rV  rZ  r3   r4   r.   <module>r     sN                + * * * * *  ( ( ( ( ( ( ( ( ( ( ( (    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - & % % % % % % % $ $ $ $ $ $ ; ; ; ; ; ; ; ; 9 9 9 9 9 9 ! ! ! ! ! !      ;/ K1        U U U U U U U Up6 6 6 6 6 6 6 6 &''s* s* s* s* s* s* s* ('s*l $79J#KLL: : ML:, 5%  `L `L `L `L `L `L `L ! `LF,& ,& ,& ,& ,& ,& ,& ,&^ 5}E }E }E }E }E }E }E }E@ 5H= H= H= H= H= H= H= H=V 5_0 _0 _0 _0 _0 _0 _0 _0D 5%  .' .' .' .' .' .' .' ! .'bd d d d d d d dNf2 f2 f2 f2 f2 f2 f2 f2R    .0V    .	/ 	/ 	/! ! ! !H% % % %P* * * * * *r4   