
    S_f|                       d dl mZmZmZmZmZmZmZ d dlm	Z
 d dlZd dlmZmZmZmZmZmZ d dlZd dlmZmZmZmZmZmZmZmZmZmZmZmZm Z  d dl!m"Z"m#Z# d dlm$Z$ d dl%m&Z&m'Z' d d	l(m)Z) d d
l!m*Z*  G d d      Z+ G d d      Z, G d d      Z- G d d      Z. G d d      Z/ G d d      Z0 G d d      Z1 G d d      Z2 G d d      Z3 G d d      Z4 G d d       Z5 G d! d"      Z6d# Z7ejp                  fd$Z9d% Z:d)d&Z;d)d'Z<d)d(Z=y)*    )assert_assert_equalassert_almost_equalassert_array_almost_equalassert_array_equalassert_allclosesuppress_warnings)raisesN)mgridpisinogridpoly1dlinspace)interp1dinterp2dlagrangePPolyBPolysplrepsplev
splantidersplintsprootAkima1DInterpolatorNdPPolyBSpline)pochgamma)_ppoly)assert_deallocatedIS_PYPY)nquad)binomc                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestInterp2Dc           	         t         ddddt        df   \  }}t        |d|z  z         }t               5 }|j	                  t
               t        |||      }t         |dd      t        d      d       t        ddd	dt        d
f   \  }}t         ||j                         |j                               t        |d|z  z         d       d d d        y # 1 sw Y   y xY w)Nr                    4@              5@      ?      ?       @decimaly              8@y              9@)
r   r   r   r	   filterDeprecationWarningr   r   r   ravel)selfyxzsupIIvus           Hlib/python3.12/site-packages/scipy/interpolate/tests/test_interpolate.pytest_interp2dzTestInterp2D.test_interp2d   s    QqWa3h&'1#a%L  	9CJJ)*!Q"B3c#hB1S!Bs(*+DAq1779aggi 8 #Ac!eGa9	9 	9 	9s   BCCc                 <   t        ddd      }t        dt        d      }t        |d d d f   |d d d f   dz  z         }t               5 }|j	                  t
               t        |||      }t         |dd      t        d      d       d d d        y # 1 sw Y   y xY w)Nr   r(         r-   r,   r.   )r   r   r   r	   r0   r1   r   r   )r3   r5   r4   r6   r7   r8   s         r;   test_interp2d_meshgrid_inputz)TestInterp2D.test_interp2d_meshgrid_input&   s    Q2QB$'
Qq$wZ]*+  	CCJJ)*!Q"B3c#hB	C 	C 	Cs   ABBc                    t         j                  j                  d       t        ddd      }t        dt        d      }t        |d d d f   |d d d f   dz  z         }t               5 }|j                  t               t        |j                         |j                         |d      }t         j                  j                  |       t        |d d d f   |d d d f   dz  z         }t        |j                         |j                         |d      }t         j                  j                  |       t         j                  j                  |       t        |d d d f   |d d d f   dz  z         }t        |||d      }t        ddd	      }t        dt        d
      }t         |||       |||             t         |||       |||             d d d        y # 1 sw Y   y xY w)N  r   r(   r>   r?   r-   cubickind      )nprandomseedr   r   r   r	   r0   r1   r   copyshuffler   )r3   r5   r4   r6   r7   ip1ip2ip3s           r;   %test_interp2d_meshgrid_input_unsortedz2TestInterp2D.test_interp2d_meshgrid_input_unsorted0   s   
		tQ2QB$'
Qq$wZ"_,-  	/CJJ)*1668QVVXqw?CIIa AdAgJ1d7B./A1668QVVXqw?CIIa IIa AdAgJ1d7b01A1a1CAr"AB#AQC1I.QC1I.#	/ 	/ 	/s   'E(GG!c                    t         ddddt        df   \  }}t        |d|z  z         }t               5 }|j	                  t
               t        |||      }t        j                  g d      }t        j                  ddg      }t         |||       |||d d d	                t        t        |||d d d	   ddd
       d d d        y # 1 sw Y   y xY w)Nr   r(   r)   r*   r+   )         g333333@gffffff@T)r   r   r   r	   r0   r1   r   rH   arrayr   assert_raises
ValueError)r3   r4   r5   r6   r7   funcxeyes           r;   test_interp2d_eval_unsortedz(TestInterp2D.test_interp2d_eval_unsortedI   s    QqWa3h&'1CE	N  	FCJJ)*Aq!$D)$B3*%BDRL$r2dd8*<=*dB4R4!QE	F 	F 	Fs   BC		Cc                    t        j                  ddg      }d|d<   t        j                  d      x}}t               5 }|j	                  t
               t        |||d      }t         |dd      t        j                  dg      d	       t         |dd
      t        j                  dg      d	       d d d        y # 1 sw Y   y xY w)NrT   r,   )r(   r(   linearr-         ?r+   r(   r.         @)	rH   zerosaranger	   r0   r1   r   r   rV   )r3   ar5   r4   r7   bs         r;   test_interp2d_linearz!TestInterp2D.test_interp2d_linearV   s    HHaV$		!A  	ICJJ)*Aq(+A#sRXXse_aH#sRXXse_aH		I 	I 	Is   A6B==Cc           	      N   t        j                  ddd      }t        j                  ddd      }|d d d f   dz  |d d d f   z   }t        j                  ddd      }t        j                  ddd	      }t               5 }|j                  t               t        |||d
      }t        t        |||       t        |||t         j                        } |||      }|dk  |dkD  z  }	|dk  |dkD  z  }
t        t        j                  ||
d d f         j                                t        t        j                  |d d |	f         j                                t        t        j                  ||
 d d f   d d |	 f         j                                d d d        y # 1 sw Y   y xY w)Nr      rT   r(      rU   rR   rF   !   Tbounds_error
fill_value)rH   r   r	   r0   r1   r   rW   rX   nanr   isnanallisfinite)r3   r5   r4   r6   ixiyr7   rd   izmxmys              r;   test_interp2d_boundsz!TestInterp2D.test_interp2d_boundsa   sf   KK1a KK1a dAgJMAagJ&[[Q#[[Q#  	;CJJ)*Aqt4A*aR0AqRVV4A2rBq&R!V$Bq&R!V$BBHHRAY'++-.BHHR2Y'++-.BKKB36
1rc6 23779:	; 	; 	;s   =DFF$N)	__name__
__module____qualname__r<   r@   rP   r\   re   rw        r;   r&   r&      s#    
9C/2F	I;r|   r&   c                   r   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd(dZd(dZd Zd Zd Zd Zd(dZd(dZd Zej8                  dfdZd Zej@                  jC                  e"d      d        Z#d Z$d  Z%d! Z&d" Z'd# Z(ej@                  jS                  d$d%      d&        Z*y'))TestInterp1Dc                    t        j                  d      | _        t        j                  d      | _        t        j                  d      | _        | j                  j                  d      | _        t        j                  d      | _        t        j                  d      | _        t        j                  dg      | _
        t        j                  dg      | _        t        j                  d      j                  d      | _        t        j                  d      j                  d      | _        t        j                  d      j                  d	      | _        t        j                  d      j                  d      | _        t        j                  d
      j                  d      | _        t        j                  d
      j                  d      | _        t        j                  d      j                  d      | _        d| j$                  d d df<   d| j$                  d d df<   t        j                  d      j                  d      | _        d| j&                  dd d f<   d| j&                  dd d f<   d| _        y )N      @      $@)r(   rT   r-           g      4@r(   
   )r   r(   )r(   r(   rT   g      >@)r(   rR   rT   )rR   r(   rT   rG   r   rU   g      Y)rH   rb   x5x10y10reshapex25x2y2rV   x1y1y210y102y225y25y235y325y210_edge_updatedy102_edge_updatedrm   r3   s    r;   setup_methodzTestInterp1D.setup_methodz   s   ))B-99S>99S>88##E*))B-))B-((B4.((B4.IIcN**73	IIcN**73	IIcN**95	99S>))&1IIcN**95	IIcN**95	
 "$3!7!7!@')q!t$(+q"u% "$3!7!7!@')q!t$(+r1u% r|   c                 f   dD ]G  }t        | j                  | j                  |       t        | j                  | j                  |d       I 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       y )N)	nearest
nearest-upzeror^   slinear	quadraticrC   previousnextrD   extrapolaterE   rm   r^   )rU   rg   rU   )rU   )rU   rU   r   rg   r(   rR   rE   axisrm   r   r   )rU   rU   rU   r{   r   )r   r   r   rH   rV   r   r   onesrW   rX   r   r   r   r   r   r3   rE   s     r;   test_validationzTestInterp1D.test_validation   s   
? 	NDTXXtxxd3TXXtxxd}M	N 	488(wG488(HHbTN	,488(!	#488(	 488($	&488!,488!,488!,488!,4998"$	&$))(GGBK	)$))(WWR["''"+6	8$))(WWR["-	/ 	j(DHHdhh? 	j(DHHbhhqkB 	j(DHHdgg>j(DGGTXX>j(DHHdii@499%4991- 	j(DGGTXX>j(DHHdgg> 	j(DHHdhhX!-	/j(DHHdhhX!-	/j(DHHdhhX!#,!7	9j(DHHdhhX#%$	)j(DHHdhhX"$b	+j(DHHdhhX!#"	/j(DHHdhhX!#	%j(DGGTYYX"b	3j(DGGTYYX"r2h	9r|   c                    t        t        | j                  | j                        j                         t        t        | j                  | j                  d      j                          t        t        | j                  | j                        j
                         t        t        | j                  | j                  d      j
                          t        t        j                  t        | j                  | j                        j                               t        t        | j                  | j                  d      j                  d       t        t        | j                  | j                  d      j                  d       t        t        | j                  | j                        j                  d       t        t        | j                  | j                        j                  d       t        t        | j                  | j                  d	      j                  d       t        t        | j                  | j                        j                  | j                         t        t        | j                  | j                        j                  | j                         t        t        | j                  | j                        j                  | j                         y )
NF)rK   rj         @rl   )r,   r-   r   rg   r   )r   r   r   r   rK   rk   rH   ro   rm   r   r   r   r   r   r5   r4   r   s    r;   	test_initzTestInterp1D.test_init   s    	488,112HTXXtxxe<AAAB488,99:HTXXtxxeDQQQR$((DHH5@@ABXdhhSALL	XdhhZHSS	!Xdhh166:Xdhh		277;Xdhh		:??C8DHHdhh799488D8DHHdhh799488D8DHHdii8::DIIFr|   c                    t        | j                  | j                        }t        | j                  d d d   | j                  d d d         }t         || j                        | j                         t         |d      t	        j
                  dg             t         |g d       |g d             t        | j                  d d d   | j                  d d d   d      }t         || j                        | j                         t        | j                  d d d   | j                  d d d   d      }t        t        || j                         t        | j                  | j                        }t        | j                  d d d   | j                  d d d d df         }t         || j                         || j                               y )NrU   333333?g333333@gffffff@      @F)assume_sortedT)	r   r   r   r   rH   rV   rW   rX   r   )r3   interp10interp10_unsortedinterp10_assume_kwinterp10_assume_kw2interp10_y_2dinterp10_y_2d_unsorteds          r;   test_assume_sortedzTestInterp1D.test_assume_sorted   sf   DHHdhh/$TXXdd^TXXdd^D!"3DHH"=txxH!"3C"8"((C5/J!"3O"D"*?";	= &dhhttndhhttn49;!"4TXX">I&txx"~txx"~59; 	j"5txx@ !4995!)$((4R4.$))AttG:L!M!-"9"8"B	Dr|   c                 4    dD ]  }| j                  |        y )N)r^   r   )_check_linearr   s     r;   test_linearzTestInterp1D.test_linear  s    ) 	%Dt$	%r|   c                    t        | j                  | j                  |      }t         || j                        | j                         t         |d      t	        j
                  dg             t         |g d      t	        j
                  g d             t        | j                  | j                  |d      }t         |g d      g dd	       t        |dd
      }t        t        t         | j                  | j                  fi | y )NrD   r   r   r   r         r   	      )rU   r   r   r   +=rtolTrE   rm   rk   
r   r   r   r   rH   rV   r   dictrW   rX   )r3   rE   r   extrapolatoroptss        r;   r   zTestInterp1D._check_linear  s    DHHdhhT:!(488"4dhh?!(3-3%A!(?";"$((?";	=  $((+8:_5&U	4 ,!%' 	j(DHHdhhG$Gr|   c                    t         j                  t         j                  t         j                  t         j                  fD ]S  }t        j
                  d|      }|} t        ||d      |      }t        |j                  |       t        ||d       U g d}t         j                  dd	g} t        ||      |      }t        ||d       y )
N   dtyper^   rD   V瞯<atolr   rg   r(   r   rg   )rH   float16float32float64
longdoublerb   r   r   r   r   rn   )r3   dtypr5   r4   yps        r;   test_linear_dtypeszTestInterp1D.test_linear_dtypes+  s     ZZZZZZ]]$ 	/D 		!4(AA.!QX.q1B4(B.	/ VVQNXa^AAE*r|   c                    t         j                  t         j                  t         j                  g}|t         j                  t         j
                  gz   }g d}|D ]  }t        j                  dd|      }|D ]u  }t        j                  | dz        j                  |      }|D ]F  }|j                  |      }	|D ].  }
t        |||
d      }t         ||	      |d| d	| d
|        0 H w  y )N)r   r   r   rC   r   r   r   r   FrE   rk   Hz>z,  r   err_msg)rH   r   r   r   	complex64
complex128rb   expastyper   r   )r3   dt_rdt_rcspline_kindsdtxr5   dtyr4   dtnxnewrE   fs               r;   test_slinear_dtypesz TestInterp1D.test_slinear_dtypes@  s     

BJJ

3bmm44@ 		GC		!Rs+A GFFA2c6N))#. GC88C=D , G$Q5I'$36%r#au0EGGGG		Gr|   c                 ~   t        | j                  | j                  d      }t         || j                        | j                         t         |d      t	        j
                  dg             t         |d      t	        j
                  dg             t         |g d      t	        j
                  g d             y )NrC   rD   r   r_   r   r   r   r   r   rH   rV   r3   r   s     r;   
test_cubiczTestInterp1D.test_cubicQ  sz    DHHdhhW=!(488"4dhh?!(3-3%A!(3-3%A!(?";"$((?";	>r|   c                 b   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 | y )Nr   rD   r   r,   r_   r   r-   r   r   r   r   r   r   r   r   r   r   r   Tr   r   r3   r   r   r   s       r;   test_nearestzTestInterp1D.test_nearestZ  s     DHHdhhY?!(488"4dhh?!(3-">!(3-">!(?";"$((<"8	;  $((+8:_5$5	2 ,!%' 	j(DHHdhhG$Gr|   c                 b   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 | y )Nr   rD   r   r,   r_   r-   r   r   r   r   r   r   r   r   Tr   r   r   s       r;   test_nearest_upzTestInterp1D.test_nearest_upo  s     DHHdhh\B!(488"4dhh?!(3-">!(3-">!(?";"$((<"8	;  $((+8:_5$5	2 ,!%' 	j(DHHdhhG$Gr|   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             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       y )%Nr   rD   r   r,   r_   r   r-   r   r   r   r   r   r   r   r   r   rU   rT   r         rT   r            r   r   rT   r   r   r   Tr   r   r   rg   rU   rE   rm   r   r   rU   r   rg   r(   rR   rT   rg   rU   r(   r   rg   rU   r   rg   Fr   r   r   r   r   rH   rV   r   rn   r   r   r   rW   rX   r   r   r3   r   r   interpolator1Dinterpolator2Dinterpolator2DAxis0r   s          r;   test_previouszTestInterp1D.test_previous  s*   DHHdhhZ@!(488"4dhh?!(3-">!(3-">!(?";"$((<"8	;  $((+8:_5Aq)	7 "$((DHH:-:<'=>Aq!4	6 "$((DIIJ-:<'=>&&"&&!Q15&&"&&"b"b9;	< 'txx,--I+K8&&"&&)bb#	$
 ,!%' 	j(DHHdhhG$G ")",:-:046 	'>?Ar2r:	< ")",:-:057 	'>?Ar2r:	< "$((D,B,B'1-:< 	'=>&&"&&!QS9&&"&&"b#s;=	> 'txx1G1G,6,--I 	+K8&&"&&)bs%	&r|   c           
         t        | j                  | j                  d      }t         || j                        | j                         t         |d      t	        j
                  d             t         |d      t	        j
                  d             t         |g d      t	        j
                  g d             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       y )$Nr   rD   r   r-   r_   r   )r   r   r   r   r   r   r   r   r   r   r   rT   r   r   r   r   r   r   rg   r   Tr   r   r   r   r  rU   r  r  FrG   r  r  s          r;   	test_nextzTestInterp1D.test_next  s*   DHHdhhV<!(488"4dhh?!(3-">!(3-">!(?";"$((<"8	;  $((+8:_5Aq"&&)	7 "$((DHH6-:<'=>Aq!RVVRVV4	6 "$((DIIF-:<'=>Q1bffbff5b"b"&&"&&9;	< 'txx,--I+K8Qb&&"&&)+	,
 ,!%' 	j(DHHdhhG$G ")",6-:046 	'>?Aq!R8	: ")",6-:057 	'>?Aq!R8	: "$((D,B,B'--:< 	'=>b!Q7b"b"&&"&&9;	< 'txx1G1G,2,--I 	+K8bb&&"&&)+	,r|   c                 z   t        | j                  | j                  d      }t         || j                        | j                         t         |d      t	        j
                  d             t         |d      t	        j
                  d             t         |g d      t	        j
                  g d             y )Nr   rD   r   r,   r_   r   r   r   r   s     r;   	test_zerozTestInterp1D.test_zero  sv    DHHdhhV<!(488"4dhh?!(3-">!(3-">!(?";"$((<"8	:r|   c                     t        t        ||       	  ||       y # t        $ r}| t        |      v sJ Y d }~y d }~ww xY wN)rW   rX   str)r3   interpolant
test_array
fail_valueerrs        r;   bounds_check_helperz TestInterp1D.bounds_check_helper  sA     	j+z:	1
# 	1!ls3x/0/	1s    	?:?r^   c                    t        | j                  | j                  | j                  d|      }t	         |d      t        j                  | j                               t	         |d      t        j                  | j                               t	         |dgdgdgdggg      t        j                  | j                               t	        |j                  t        j                  g d            t        j                  g dg d	g             t        | j                  | j                  d
|      }| j                  |dd       | j                  |dd       | j                  |g dd       | j                  |g dd        |g d       y )NF)rm   rk   rE   gffffff&@g333333g333333)@gL3@)r   r   r         "@      &@)TFFFF)FFFFTT)rk   rE   r   r  )r   r   r   )r   r,         5@r  )r   r   r  )	r   r   r   rm   r   rH   rV   _check_boundsr  )r3   rE   extrap10raises_bounds_errors       r;   _bounds_checkzTestInterp1D._bounds_check   sA   DHHdhh4??).T; 	8D>288DOO+DE8D>288DOO+DE8tftftftf%E$FG88DOO4	7811!xx(CDF88%G%G%I J	K
 'txx,02 	  !4dDA  !4dDA  !46FM  !46FMO,r|   c                    t        j                  d      j                  t              }t        j                  d      j                  t              }t	        |||t         j
                  d      } ||dz
        }t        t        j                  |d                t        |t         j                  t         j
                  |d d f          y )Nr   Fr   rg   r   rU   )
rH   rb   r   intr   rn   r   ro   r   r_)r3   rE   r5   r4   cyis         r;   _bounds_check_int_nan_fillz'TestInterp1D._bounds_check_int_nan_fill8  s    IIbM  %IIbM  %QeLq1uXA !"beeBFFAcrFN&;<r|   c                 V    dD ]$  }| j                  |       | j                  |       & y )N)r^   rC   r   r   r   r   r   r   )r  r#  r   s     r;   test_boundszTestInterp1D.test_bounds@  s/    5 	2Dt$++D1	2r|   c                 t   t        | j                  | j                  |dd      }t         |d      d       t         |d      d       t         |ddg      ddg       | j                  | j
                  | j                  | j                  fD ]  }t        | j                  ||ddd	      }t         |d      d       t         |d      d       t         |ddg      d       t        | j                  ||ddd	      }t         |d      d       t         |d      d       |j                  d
k(  r'ddgg|j                  d   z  g|j                  d   z  }nddgg|j                  d   z  }t         |ddg      |        g d}| j
                  | j                  fD ]'  }t        t        t         | j                  ||d|d	       ) t        | j                  | j                  |d|d	      }t         |d      g dgdz         t         |d      g dgdz         t         |ddg      ddgddgddgggdz         ddg}t        t        t         | j                  | j                  |d|d	       | j                  | j
                  | j                  fD ]  }t        | j                  ||d|d	      }ddg}|j                  d
k(  r|g|j                  d   z  }t         |d      |       t         |d      |       ddgddgg}|j                  d
k(  r|g|j                  d   z  }t         |ddg      |        t        j                  g d      df}| j
                  | j                  fD ]'  }t        t        t         | j                  ||d|d	       ) t        | j                  | j                  |d|d	      }t         |d      d       t         |d      g dgdz         t         |ddg      ddgddgddgggdz         t        j                  ddg      df}t        t        t         | j                  | j                  |d|d	       | j                  | j
                  | j                  fD ]  }t        | j                  ||d|d	      }t         |d      d       ddg}|j                  d
k(  r|g|j                  d   z  }t         |d      |       ddgddgg}|j                  d
k(  r|g|j                  d   z  }t         |ddg      |        g dg df}| j
                  | j                  fD ]'  }t        t        t         | j                  ||d|d	       ) t        d      D ]  }|dk(  rt!        d |D              }t        | j                  | j                  |d|d	      }t         |d      g dgdz         t         |d      g dgdz         t         |ddg      ddgddgddgggdz          ddgddgf}t        t        t         | j                  | j                  |d|d	       | j
                  | j                  | j                  fD ]  }t        | j                  ||d|d	      }ddg}|j                  d
k(  r|g|j                  d   z  }t         |d      |       ddg}|j                  d
k(  r|g|j                  d   z  }t         |d      |       ddgddgg}|j                  d
k(  r|g|j                  d   z  }t         |ddg      |        ddgddgg}| j                  | j
                  | j                  fD ]'  }t        t        t         | j                  ||d|d	       ) t        d      D ]  }|dk(  rt        j                  |      }t        | j                  | j                  |d|d	      }t         |d      ddgddgg       t         |d      ddgddgg       t         |ddg      ddgddggddgddggg        ddgddggddgddggf}| j                  | j
                  | j                  fD ]'  }t        t        t         | j                  ||d|d	       ) t        d      D ]  }|dk(  r0t        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        y )N)d   Fr   r   r(  r'  rU   )rE   r   rm   rk   rR   rg   r   )r(     ,  r(   r*  r+  )r'  8r,  r-  c              3   F   K   | ]  }t        j                  |        y wr  )rH   rV   ).0r   s     r;   	<genexpr>z1TestInterp1D._check_fill_value.<locals>.<genexpr>  s     "C1288A;"Cs   !i  i  ii0)r   r   r   r   r   r   r   r   r   ndimshaperW   rX   rH   rV   rangetuple)r3   rE   interpr4   resultrm   iis          r;   _check_fill_valuezTestInterp1D._check_fill_valueF  s	   $((DHH4%0uF!&*c2!&+t4!&#r"3dC[A ))TYY		488< 	AAdggqt"),5BF%fRj#6%fSk37%fc2Y&7= dggqt")45JF%fRj#6%fSk48vv{ #;-!''!*45
B+3%fc2Y&7@!	A& %
))TYY' 	NA*h!juN	N $''4994b%/eE!&*.?!.CD!&+/@1/DE!&#r"3Sz8;Sz8;Sz7C 6DFG6H 	I
 3Z
j(DGGTYYT*5	J))TYY1 	AAdggqt")3%IF3ZFvv{ AGGAJ.%fRj&9%fSk6:Cj3*-Fvv{ AGGAJ.%fc2Y&7@	A hh12C8
))TYY' 	NA*h!juN	N $''4994b%/eE!&*c2!&+0B/Ca/GH!&#r"3c{8<c{8<c{7D 6EGH6I 	J
 hhd|,c2
j(DGGTYYT*5	J))TYY1 	AAdggqt")3%IF%fRj#6D\Fvv{ AGGAJ.%fSk6:SkD#;/Fvv{ AGGAJ.%fc2Y&7@	A )/:
))TYY' 	NA*h!juN	N ( 		NBQw""C
"CC
dggtyyt")3%IF%fRj?2Ca2GH%fSk4F3G!3KL%fc2Y&7D#;<@#;<@#;;H :IKL:M N		N TlS#J/
j(DGGTYYT*5	J))TYY1 	AAdggqt")3%IF3ZFvv{ AGGAJ.%fRj&9D\Fvv{ AGGAJ.%fSk6:SkD#;/Fvv{ AGGAJ.%fc2Y&7@	A" Cj4,/
))TYY1 	NA*h!juN	N ( 
	KBQwXXj1
dggtyyt")3%IF%fRjC:d|2LM%fSkS#Jt3MN%fc2Y&7C:<?:;G<@$<<@$<;I:J K
	K d|eU^4SzD$<02
))TYY1 	NA*h!juN	N ( 	LBQw hhz!}5rxx
17NO
dggtyyt")3%IF%fRjC:d|2LM%fSkT4L5:EN4D E%fc2Y&7D#;<@#;;H<A4=<A4=;J:K L	Lr|   c                 4    dD ]  }| j                  |        y N)r^   r   rC   r   r   r   r   r   )r8  r   s     r;   test_fill_valuezTestInterp1D.test_fill_value  s!    1 	)D""4(	)r|   c                     t        | j                  | j                  d      }t        |j                  d       d|_        t        |j                  d       y )Ng     ^@rl   g     t@)r   r   r   r   rm   )r3   r5  s     r;   test_fill_value_writeablez&TestInterp1D.test_fill_value_writeable  s@    $((DHH?V&&.!V&&.r|   c           	         t        | j                  | j                  |      }t         |t	        j
                  ddgddgg            t	        j
                  ddgddgg             t        t         |d      t        j                               t         |d      j                  d       t        | j                  | j                  |      }t         |d      t	        j
                  dd	g             t         |t	        j
                  ddg            t	        j
                  ddgd	d
gg             t        | j                  | j                  d|      }t         |d      t	        j
                  ddg             t         |t	        j
                  ddg            t	        j
                  ddgddgg             t	        j
                  ddgddgg      }t         ||      t	        j
                  ddgddggddgd
dggg             t         ||      t	        j
                  ddgdd	ggddgddggg             y )NrD   r   r   r-         @r   r{   r,   r        (@r   r   rE   r   g      *@g      .@g      1@r         @g      ,@)r   r   r   r   rH   rV   r   
isinstancendarrayr   r2  r   r   )r3   rE   r   	interp210	interp102x_news         r;   _nd_check_interpzTestInterp1D._nd_check_interp  s    DHHdhhT:!(288b"XBx4H+I"J"$((RHr2h+?"@	B 	
8C="**56Xc](("- TXXtyyt<	!)B-2s)1DE!)BHHb"X,>"?"$((RHsCj+A"B	D TXXtyyqtD	!)B-3*1EF!)BHHb"X,>"?"$((RHr2h+?"@	B 2r(RH-.!)E"2"$((b"XBx,@.13Z#s,D,F #G	H 	")E"2"$((b"XSz,B.0"XSz,B,D #E	Fr|   c                    g d} t        j                  t        j                  |            j                  | }t	        |      D ]  \  }}t        j                  |      }t        ||||      }t         ||      ||       t        j                  d      j                  d      dz  }t        |      }	g d|	||dz    t         ||      j                  |	|        y )N)rS   rT      rh   rA  r   rJ  )r(   rR   rg   r@  rg   )	rH   rb   prodr   	enumerater   r   listr2  )
r3   rE   rc   r4   nsr5   r6   r   rd   s
             r;   _nd_check_shapezTestInterp1D._nd_check_shape  s    )BIIbggaj!))1-aL 	DDAq		!AAAD1A%adAt<5!))'2S8BQAAa!H%aekk1dC	Dr|   c                 V    dD ]$  }| j                  |       | j                  |       & y )N)r^   rC   r   r   r   r   r   r   )rH  rQ  r   s     r;   test_ndzTestInterp1D.test_nd"  s/    1 	'D!!$'  &	'r|   c                    t        j                  g d      }||dz  z  }|j                  |      }t        |||      }t	        |d d  ||      d d        t        j
                  ddd      }t        ||j                  |      }t        ||j                  |      }t	         ||      j                   ||             t	         ||      j                   ||             y )N)
rg   r`   rR   g@rS   g@g@g       @g      #@r         ?       @rD   rU   rg   r   rF   )rH   rV   r   r   r   r   realimag)	r3   r   rE   r5   r4   r!  xicrcis	            r;   _check_complexzTestInterp1D._check_complex(  s    HH@AfHHUO Q%!!CR&!A$s)4 [[B#ad+ad+!!B%**bf5!!B%**bf5r|   c                     dD ]B  }| j                  t        j                  |       | j                  t        j                  |       D y r:  )r[  rH   r   r   r   s     r;   test_complexzTestInterp1D.test_complex8  s;    1 	5Dd3t4	5r|   zTest not meaningful on PyPy)reasonc                     t        j                  dd      }t        j                  dd      }t        t        ||      5 } |ddg       ~d d d        y # 1 sw Y   y xY w)Nr   rg   皙?皙?)rH   r   r!   r   )r3   r5   r4   r5  s       r;   test_circular_refszTestInterp1D.test_circular_refs>  sV     KK1KK1!Q/ 	6C:	 	 	s   AAc                     dD ]I  }t        j                  g dt         j                        }t        |||      }t	         ||      |       K y )N)r   r   r   )r   2      r   rD   )rH   rV   int8r   r   )r3   rE   r5   r7  s       r;   test_overflow_nearestz"TestInterp1D.test_overflow_nearestH  sA    3 	0DRWW5A!QT*B%beQ/	0r|   c                 0   t        j                  d      j                  t              }|j	                         }t         j
                  |d<   dD ]F  }t        |||      } |ddg      }t        t        j                  |      j                                H y )Nr   rJ  )r   r   rD   g@r?  )
rH   rb   r   floatrK   rn   r   r   rq   rp   )r3   r5   r4   rE   irvalss         r;   test_local_nanszTestInterp1D.test_local_nansO  sx     IIbM  'FFHvv!' 	-D!QT*BsCj>DBKK%))+,	-r|   c                    t        j                  d      j                  t              }|j	                         }|j	                         }t         j
                  |d<   dD ]  }t        |||      }t        |||      }dddgddgddggfD ]s  }t        j                  |      } ||       ||      }	}t        t        j                  |	      j                                t        |j                  |	j                         u  y )Nr   rR   )r   rC   rD   rJ  rg   rT   )rH   rb   r   ri  rK   rn   r   asarrayr   ro   rp   r   r2  )
r3   r5   r4   ynrE   rj  irnr   outoutns
             r;   test_spline_nanszTestInterp1D.test_spline_nansZ  s     IIaL&FFHVVX1* 	4D!QT*B1bt,CQFaVaV$45 4zz$'qE3q6T**,-SYY

3	4	4r|   c                     t        j                  d      t         j                  z  }t        j                  d      }t	        t
              5  t        ||d       d d d        y # 1 sw Y   y xY w)Nr   rC   rD   )rH   r   rn   rb   rW   rX   r   )r3   r5   r4   s      r;   test_all_nanszTestInterp1D.test_all_nansl  sN    GGBK"&& IIbM:& 	)Q(	) 	) 	)   A##A,c                 t   t        j                  dd      }t        j                  | dz        }t        j                  ddd      }dD ]m  }||j                  _        d|j                  _        dD ]D  }t        |||	      } ||      }t        t        j                  |      j                                F o y )
Nr   r   r   r   r`  TFF)r^   r   r   r   r   rC   rD   )	rH   rb   r   flags	writeabler   r   rq   rp   )r3   r5   r4   r   xnew_writeablerE   r   rk  s           r;   test_read_onlyzTestInterp1D.test_read_onlys  s    IIaFFA28yyAs#+ 	1N#1DJJ  %AGG" 1Q-wD)--/0	1	1r|   rE   )r^   r   r   r   r   c                     t        dgdg|dd      }t         |g d      g d       t        dgdg|d	      }t        t        d
      5   |d       d d d        y # 1 sw Y   y xY w)Nr_   rJ  Fr   )rE   rk   rm   )rg   r_   r(   )r(   rJ  r   Tr   zx_new is abovematchr-   )r   r   rW   rX   )r3   rE   r   s      r;   test_single_valuezTestInterp1D.test_single_value  sf    
 cUQCd ')1[>:6cUQCd>:-=> 	cF	 	 	s   	AA&N)r^   )+rx   ry   rz   r   r   r   r   r   r   r   r   r   r   r   r	  r  r  r  r  r#  r%  r8  r;  r=  rH  rQ  rS  rH   r   r[  r]  pytestmarkskipifr"   rb  rg  rl  rs  ru  r|  parametrizer  r{   r|   r;   r~   r~   x   s   '!RB9HG&D4%H&+*G">H*H*C&JC,J:1-0=2_LB)/F@D' $&==x 6 5 [[(EF G0	-4$)1 [[Gr|   r~   c                       e Zd Zd Zy)TestLagrangec                     t        g d      }t        j                  t        |j                              } ||      }t        ||      }t        |j                  |j                         y )N)rT   r(   rg   rS   rR   )r   rH   rb   lencoeffsr   r   )r3   pxsyspls        r;   test_lagrangezTestLagrange.test_lagrange  sH    ;YYs188}%rUb_!!((2995r|   N)rx   ry   rz   r  r{   r|   r;   r  r    s    6r|   r  c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestAkima1DInterpolatorc                     t        j                  dd      }t        j                  g d      }t        ||      }t        j                  g d      }t        j                  g d      }t	         ||      |       y )Nr   r  r   r-   r,   r   r-   r         @r  g@ffffff@r   r   r+   r,   r_   r`         @g      @r  g      @g@g333333!@g#@r   r   g      ?r-   r_   g     @?g     @g.袋@g^@gn @gGNB@grcߖ@g	I@r   rH   rb   rV   r   r   r3   r5   r4   akrX  r"  s         r;   	test_evalz!TestAkima1DInterpolator.test_eval  sc    IIb#HHEF A&XX  XX  
 	2#r|   c                     t        j                  dd      }t        j                  g d      }t        ||d      }t        j                  g d      }t        j                  g d      }t	         ||      |       y )Nr   r  r  makimamethodr  )r   gF??r-   g?g?gg{'@g>J(j@g?@gq@g@g9~@go
@r   r  r  s         r;   test_eval_modz%TestAkima1DInterpolator.test_eval_mod  sg     IIb#HHEF Ah7XX & 'XX 5 6 	2#r|   c                 ^   t        j                  dd      }t        j                  g d      }t        j                  |d|z  f      }t	        ||      }t        j                  g d      }t        j                  g d      }t        j                  |d|z  f      }t         ||      |       y )Nr   r  r  r-   r  r  )rH   rb   rV   column_stackr   r   r  s         r;   test_eval_2dz$TestAkima1DInterpolator.test_eval_2d  s    IIb#HHEFOOQQK( A&XX & 'XX 8 9 __b"r']+2#r|   c                    t        j                  dd      }t        j                  g d      }t        j                  d      }||d d ddf<   d|z  |d d ddf<   d|z  |d d ddf<   d	|z  |d d ddf<   t	        ||      }t        j                  g d
      }t        j                  d      }t        j                  g d      }||d d ddf<   d|z  |d d ddf<   d|z  |d d ddf<   d	|z  |d d ddf<   t         ||      |       y )Nr   r  r  )r   r(   r(   r   r-   rg   r   rB  r  )   r(   r(   r  )rH   rb   rV   emptyr   r   )r3   r5   y_r4   r  rX  r"  yi_s           r;   test_eval_3dz$TestAkima1DInterpolator.test_eval_3d  s   IIb#XXFGHHZ !Q'
"W!Q'
"W!Q'
"W!Q'
 A&XX & 'XXj!hh 9 : 1a73h1a73h1a73h1a72#r|   c                 ,   t        j                  g d      }t        j                  ||dz  f      j                  }t	        ||      }t        j                  ddg      } ||      }t        |t        j                  ||dz  f      j                         y )Nr   r(   r+   r_   )rH   rV   vstackTr   r   )r3   r5   r4   r  x_evaly_evals         r;   %test_degenerate_case_multidimensionalz=TestAkima1DInterpolator.test_degenerate_case_multidimensional  su    HHYIIq!Q$i "" A&3*%F		6619*= > @ @Ar|   c                     t        j                  dd      }t        j                  g d      }t        ||      }d}t	        j
                  t        |      5  |j                  d d        d d d        y # 1 sw Y   y xY w)Nr   r  r  z9Extending a 1-D Akima interpolator is not yet implementedr~  )rH   rb   rV   r   r  r
   NotImplementedErrorextend)r3   r5   r4   r  r  s        r;   test_extendz#TestAkima1DInterpolator.test_extend  sd    IIb#HHEF A&K]].e< 	"IIdD!	" 	" 	"s   A33A<c                     t        j                  dd      }t        j                  g d      }d}t        j                  t
        |      5  t        ||d       d d d        y # 1 sw Y   y xY w)Nr   r  r  z `method`=invalid is unsupported.r~  invalidr  )rH   rb   rV   r  r
   r  r   )r3   r5   r4   r  s       r;   test_mod_invalid_methodz/TestAkima1DInterpolator.test_mod_invalid_method  sV    IIb#HHEF2]].e< 	81Y7	8 	8 	8rv  c                     t        j                  dd      }t        j                  g d      }|d|z  z
  }d}t        j                  t
        t        f|      5  t        ||       d d d        y # 1 sw Y   y xY w)Nr   r  r  y               @zBPassing an array with a complex.*|Casting complex values to real.*r~  )rH   rb   rV   r  warnsRuntimeWarningr1   r   )r3   r5   r4   msgs       r;   r]  z$TestAkima1DInterpolator.test_complex  si    IIb#HHEF1H S\\>+=>cJ 	&1%	& 	& 	&s   A//A8N)rx   ry   rz   r  r  r  r  r  r  r  r]  r{   r|   r;   r  r    s+    $$"$"$2B"8	&r|   r  c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestPPolyCommonc                     t        j                  ddgddgddgg      }t        j                  g d      }t        t        t        ||       t        t        t
        ||       y )Nrg   rS   r(   rT   rR   rJ  )r   rg   r+   )rH   rV   rW   rX   r   r   )r3   r!  r5   s      r;   test_sort_checkzTestPPolyCommon.test_sort_check  sM    HHq!fq!fq!f-.HH[!j%A.j%A.r|   c                 l    t        t              5  t        ddgddg       d d d        y # 1 sw Y   y xY w)Nrg   r(   r   )rW   rX   r   r   s    r;   test_ctor_czTestPPolyCommon.test_ctor_c  s1    :& 	"1a&1a&!	" 	" 	"s   *3c                 F   t         j                  j                  d       d}t        j                  t         j                  ddt         j                  j                  d      z  df         }dt         j                  j                  |dz   t        |      dz
  dd      z  dz
  }t        t        fD ]  } ||d d d df   |d d       }|j                  |d d dd f   |dd          ||d d dd f   |dd        }|j                  |d d d df   |d d         |||      }t        |j                  |j                         t        |j                  |j                         t        |j                  |j                         t        |j                  |j                          y )	NrB   rR   r   r   rG   r(   rg   r   )rH   rI   rJ   uniquer   randr  r   r   r  r   r!  r5   )r3   orderr5   r!  clspppp2pp3s           r;   r  zTestPPolyCommon.test_extend  sS   
		tIIbeeArBIINN2$66:;<biinnU1Wc!fQh15595> 	-CQq!tWaf%BIIa!"gqv&a23i23(CJJqCRCy!CR&)a)CrttSUU+rttSUU+suucee,suucee,	-r|   c                 `   t         j                  j                  d       t        j                  ddd      }t         j                  j	                  dd      }t        j                  ddd      }t         j                  j	                  dd      }t
        t        fD ]  } |||      } |||      } |||      }|j                  ||dd         t        j                  dddd	
      }	t        j                  ddd      }
t         ||	       ||	             t         ||
       ||
              y )NrB   r   rg   rJ  r(   rT   rS   r+  F)endpoint)	rH   rI   rJ   r   r  r   r   r  r   )r3   r5   r!  r   c2r  pp1r  pp_combxi1xi2s              r;   test_extend_diff_ordersz'TestPPolyCommon.test_extend_diff_orders)  s    
		tKK1a IINN1a [[Aq!YY^^Aq!5> 	4Ca)Cb"+C!QiGNN2r!"v& ++aC%8C++aC(CCHgcl3CHgcl3	4r|   c                    t         j                  j                  d       d}t        j                  t         j                  j	                  ddd            }t         j                  j                  |dz   |j                  d   dz
  dd      }t        t        fD ]  } |||      } ||d d d df   |d d       }|j                  |d d dd f   |dd          ||d d dd f   |dd        }|j                  |d d d df   |d d        t        |j                  |j                         t        |j                  |j                         t        |j                  |j                         t        |j                  |j                          y )Nr   rR   r      rg   r(   r   )rH   rI   rJ   sortuniformr  r2  r   r   r  r   r!  r5   )r3   r  r5   r!  r  r  p1p2s           r;   test_extend_descendingz&TestPPolyCommon.test_extend_descendingB  s>   
		qGGBII%%aR01IINN519aggaj1na;5> 	*CAq	AQq"1"uXq"v&BIIa12h"#'Qq"#vY"#'BIIa3B3i3B(rttQSS)rttQSS)rttQSS)rttQSS)	*r|   c           
         t         j                  j                  d       t         j                  j                  ddddd      }t        j                  t         j                  j                  d            }t         j                  j                  dd	      }t
        t        fD ]'  } |||      }t         ||      j                  d
       ) t
        t        fD ]  } ||d   |      }t        t        j                   |d            d       t        t        j                   |t        j                  d                  d       t        t        |t        j                  ddgdggt                      y )NrB   r   r   rT   rJ  rh   r  rR   rS   )rR   rS   rT   rJ  rh   ).r   r   r   r+   r{   r`  ra  皙?r   )rH   rI   rJ   r  r  r   r   r   r2  rV   rW   rX   object)r3   r!  r5   xpr  r  s         r;   
test_shapezTestPPolyCommon.test_shapeW  s   
		tIINN1b!Q*GGBIINN2&'YY^^Aq!5> 	7CAq	A2o6	7
 5> 	VCAlOQ'A!C&)2.!BHHSM"23R8*aC:u2EV)TU	Vr|   c           	      N   t         j                  j                  d       t        j                  t         j                  j                  d            }t         j                  j                  d      dz  }|j                  |j
                  }}t         j                  j                  d      }t        t        fD ]l  } |||       |||       |||      }	}}dD ]J  }
t         |||
      j                   |||
             t         |||
      j
                   |	||
             L n y )N90  r  )r   r   y      ?333333?rT   r   )	rH   rI   rJ   r  rV  rW  r   r   r   )r3   r5   r!  c_rec_imr  r  r  p_rep_imnus              r;   test_complex_coefz!TestPPolyCommon.test_complex_coefi  s    
		uGGBII$$R()IIW%3VVQVVdYYa 5> 	>C1Is4|Sq\TtA >"b	R="b	R=>	>r|   c                    t         j                  j                  d       t         j                  j                  dddddd      }|j                  }t         j                  j                  d      }d	D ]_  }|j                  |d
z      }t        j
                  t         j                  j                  |d
z               }t        t        fD ]  } ||||      }t        |j                  j                  |||dz    |d | z   ||dz   d  z           ||      }	|d | |j                  z   |d|z   d  z   }
t        |	j                  |
        ||||      j                          ||||      j                  d       ||||      j                          ||||      j                  d      fD ]"  }t        |j                  |j                         $  b dD ]0  }t        t        fD ]  }t        t        |fi t        ||       ! 2 y )Nr  rR   rS   rT   rJ  rh   r   )rg   r(   r   rg   r(   rR   rg   r   r(   )rU   rS   rT   rJ  )r!  r5   r   )rH   rI   rJ   r  r2  r  r   r   r   r!  
derivativeantiderivativer   rW   rX   r   )r3   r!  c_sr  r   mr5   r  r  res
targ_shaper  s               r;   	test_axiszTestPPolyCommon.test_axisu  s   
		uIINN1aAq!,ggYYf%  	2DQA		qs+,Au~ 214(QSSYY d1f-ET
:Sa\IKe $Z"((2S4\A
SYY
3 q!$/::<q!$/::1=q!$/>>@q!$/>>qAC 2B !!&&1	22	2( " 	LDu~ Lj#KQT1JKL	Lr|   N)rx   ry   rz   r  r  r  r  r  r  r  r  r{   r|   r;   r  r    s,    /"
-,42**V$
>Lr|   r  c                   V    e Zd Z G d de      Z G d de      Zd Zd Zd Z	d Z
d	 Zy
)TestPolySubclassingc                       e Zd Zy)TestPolySubclassing.PNrx   ry   rz   r{   r|   r;   Pr        r|   r  c                       e Zd Zy)TestPolySubclassing.BNr  r{   r|   r;   Br    r  r|   r  c                 *   t         j                  j                  d       t        j                  t         j                  j                  d            }t         j                  j                  d      }| j	                  ||      | j                  ||      fS )NrB   rR   )rS   r(   )rH   rI   rJ   r  r  r  )r3   r5   r!  s      r;   _make_polynomialsz%TestPolySubclassing._make_polynomials  sb    
		tGGBII$$Q'(IIV$vva|TVVAq\))r|   c                     | j                         \  }}||fD ]2  }|j                         }t        |j                  |j                         4 |j	                         }t        |j                  |j                         y r  )r  r  r   	__class__r  )r3   r  bpr  pdppas         r;   test_derivativez#TestPolySubclassing.test_derivative  sf    '')Bb 	4ABbll3	4 !R\\3==1r|   c                    t         j                  j                  d       t        j                  t         j                  dt         j                  j                  d      df         }t         j                  j                  t        |            }t        ||d      }| j                  j                  |      }t        |j                  | j                         y )NrB   r   r   rg   rP  )rH   rI   rJ   r  r   r  r  r   r  from_spliner   r  )r3   r5   r4   splr  s        r;   test_from_splinez$TestPolySubclassing.test_from_spline  s    
		tGGBEE!RYY^^B/234IINN3q6"QQVV$R\\466*r|   c                    | j                         \  }}| j                  j                  |      }t        |j                  | j                         | j
                  j                  |      }t        |j                  | j
                         y r  )r  r  from_bernstein_basisr   r  r  from_power_basis)r3   r  r  r  bp1s        r;   test_conversionsz$TestPolySubclassing.test_conversions  s`    '')Bff))"-S]]DFF+ff%%b)S]]DFF+r|   c                     g d}dgdgdgg}| j                   j                  ||      }t        |j                  | j                          y )Nr   rg   r(   rR   )r  from_derivativesr   r  )r3   r5   r4   r  s       r;   test_from_derivativesz)TestPolySubclassing.test_from_derivatives  s@    S1#sOVV$$Q*R\\466*r|   N)rx   ry   rz   r   r  r   r  r  r  r  r	  r  r{   r|   r;   r  r    s3    E E *2+,+r|   r  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)	TestPPolyc                     t        j                  ddgddgddgg      }t        j                  g d      }t        ||      }t         |d      d	       t         |d
      d       y )Nrg   rS   r(   rT   rR   rJ  r   r+   rg   333333?Q@ffffff?p=
ף@rH   rV   r   r   r3   r!  r5   r  s       r;   test_simplezTestPPoly.test_simple  sZ    HHq!fq!fq!f-.HH[!!QK# 45# @Ar|   c                    t        j                  ddgddgddgg      }t        j                  g d      }t        ||d	      }t         |d
      d       t         |d      d       t         |d
d      d       t         |dd      d       y )Nrg   rS   r(   rT   rR   rJ  r  periodicr   g?r  333333ӿr  g@gffffff@r  r  s       r;   test_periodiczTestPPoly.test_periodic  s~    HHq!fq!fq!f-.HH[!!QJ/# :;$!KL#q	;/$
$78r|   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 ]d  }||j                  _        ||j                  _        t        ||      } ||      }t        t        j                  |      j                                f y )Nrg   rS   r(   rT   rR   rJ  r  )r   r`  ra  r  r  rx  )rH   rV   r   ry  rz  r   rq   rp   )r3   r!  r5   r   rz  r   rk  s          r;   r|  zTestPPoly.test_read_only  s    HHq!fq!fq!f-.HH[!xx&a
+& 	-I )AGG )AGGaAT7DBKK%))+,	-r|   c           	      F   d }t         j                  j                  d       d}dD ]w  }t        j                  t         j                  j	                  dd|dz               }t         j                  j	                  dd|dz   |f	      }t        j
                  |      }|d d d f   t        j                  |dz         d d d
d f   z  } ||      }||z  }	t        j                  |j                  |	      }
|
|z  }t        ||d      }t        |d d d d d
f   |d d d
   d      }t         j                  j	                  ddd      }t         ||       ||      d       t         ||d       ||d      d       |j                         }|j                         }t         ||       ||      d       |j                         }|j                         }t         j                  j	                  ddd      D ]c  \  }}|j                  ||      }|j                  ||      }t        ||d       t         ||       ||      z
   ||       ||      z
  d       e |j                         }|j                         }t        |t        j                  |      d       z y )Nc                     t        j                  | dz         j                  dd      }t        j                  | dz         }t        ||      }|d d dd d df   S )Nrg   rU   )rH   rb   r   r$   )powerrO  kr  s       r;   binom_matrixz/TestPPoly.test_descending.<locals>.binom_matrix  sT    		%!)$,,R3A		%!)$AaATrT4R4Z= r|   r   rR   r   r  rG   r   rg   r   r(   sizerU   Tr  r)  r  r(  vIh%<=r   rT   r(   -q=)rH   rI   rJ   r  r  diffrb   dotr  r   r   r  r  	integrateroots)r3   r"  r   r  r5   cahh_powersr  capcdpcdpar  x_testpa_dpd_dpa_ipd_irc   rd   int_aint_droots_droots_as                            r;   test_descendingzTestPPoly.test_descending  sE   	! 			q %	CA		))!RQ78A""2q	1~">B
AqzRYYuqy%9$B$*%EEHU#Ax-C&&c"CxBr1$/Br!TrT'{AddG>BYY&&sB4FBvJ6
?BvqM2fa=uE==?D==?DDL$v,UC
 $$&D$$&D		))#r6: ,1Q*Q*u59Q$q' 147T!W3D%*,	, hhjGhhjGGRWWW%5EBK%	Cr|   c                    t         j                  j                  ddddd      }t        j                  g d      }t	        ||      }t        |j                  j                  |j                         t        |j                  j                  |j                         t         |d      j                  |j                  dd         t         |t         j                  j                  dd            j                  d|j                  dd  z          |j                         }t        |j                  j                  d	       |j                         }t        |j                  j                  d
       y )NrJ  r(   rg   rR   r  r  rT   rT   rJ  rT   r(   rg   r(   rR   )rh   r(   rg   r(   rR   )rH   rI   r  rV   r   r   r5   r2  r!  r  r  )r3   r!  r5   r  dpips         r;   test_multi_shapezTestPPoly.test_multi_shape  s    IINN1aAq)HH[!!QKQSSYY(QSSYY(QsV\\17712;/Qryy~~a+,22FQWWQR[4HI\\^RTTZZ1RTTZZ1r|   c                 ,   t         j                  j                  d       t        j                  ddgddgddggt              }t        j                  g d	      }t        j                  ||      }t         |d
      d       t         |d      d       y )NrB   rg   rS   r(   rT   rR   rJ  r   r  r  r  r  r  )rH   rI   rJ   rV   ri  r   construct_fastr   r  s       r;   test_construct_fastzTestPPoly.test_construct_fast"  ss    
		tHHq!fq!fq!f-U;HH[!  A&# 45# @Ar|   c                    t         j                  j                  d       t         j                  j                  ddd      }t        j                  t         j
                  dt         j                  j                  d      df         }t        ||      }t         j
                  d   }t        |||      }t         ||      |       t        |d d d d df   ||      }t         ||      d d df   |       y )	NrB   rR   r      r   r   rg   )r  r+   gQ?333333?)
rH   rI   rJ   r  r  r   r   _ppoly_eval_1r   _ppoly_eval_2)r3   r!  r5   r  r  expecteds         r;   #test_vs_alternative_implementationsz-TestPPoly.test_vs_alternative_implementations*  s    
		tIINN1b"%GGBEE!RYY^^B/234!QKUU&' Ar*"x( 1Qq51b1"ac
H-r|   c                    t         j                  j                  d       t        j                  t         j                  dt         j                  j                  d      df         }t         j                  j                  t        |            }t        ||d      }t        j                  |      }t        j                  ddd      }t         ||      t        ||             t        | }t        j                  |      }t         ||       ||             |\  }}	}
dD ]F  }t        ||	|
|      }t        j                  |      }t        |j                  |j                         H y )	NrB   r   r   rg   r  r*  )NTFr  )rH   rI   rJ   r  r   r  r  r   r   r  r   r   r   r   r   r   )r3   r5   r4   r  r  rX  rd   ppptr!  r!  extrapr  s                r;   r  zTestPPoly.test_from_spline8  s   
		tGGBEE!RYY^^B/234IINN3q6"QQs#[[As#2b#/ SM"B2' 1a) 	7F1aV4A!!!$A6	7r|   c                 >   t         j                  j                  d       t        j                  g dg      j                  }t        j                  g dg      j                  }t        j                  ddgg      j                  }t        j                  ddg      }t        ||      }t        ||      }t        ||      }t        |j                         j                  |j                         t        |j                  d      j                  |j                         y )	NrB   )rS   rR   r(   rg   )r   rJ  r(      rJ  r   rg   r(   )	rH   rI   rJ   rV   r  r   r   r  r!  )r3   r!  dcddcr5   r  dppddpps           r;   test_derivative_simplez TestPPoly.test_derivative_simpleO  s    
		tHHl^$&&XX}o&((hh'(**HHaV1a[BlS!}))3551a(**DFF3r|   c           	         t         j                  j                  d       t        j                  t         j                  dt         j                  j                  d      df         }t         j                  j                  t        |            }t        ||d      }t        j                  |      }t        j                  ddd      }t        dd      D ]   }t         |||      t        |||             " y )NrB   r   r   rg   r  r*  rR   )rH   rI   rJ   r  r   r  r  r   r   r  r   r3  r   r   r3   r5   r4   r  r  rX  dxs          r;   test_derivative_evalzTestPPoly.test_derivative_eval]  s    
		tGGBEE!RYY^^B/234IINN3q6"QQs#[[As#1+ 	<BBr2Jb#r(:;	<r|   c                    t         j                  j                  d       t        j                  t         j                  dt         j                  j                  d      df         }t         j                  j                  t        |            }t        ||dd      }t        j                  |      }t        j                  ddd      }t        dd      D ]0  }t         |||       |j                  |      |      d	|fz  
       2 y )NrB   r   r   rg   rT   rP  r!  r*  r   zdx=%drK  )rH   rI   rJ   r  r   r  r  r   r   r  r   r3  r   r  rZ  s          r;   r  zTestPPoly.test_derivativei  s    
		tGGBEE!RYY^^B/234IINN3q6"QQ!$s#[[As#2, 	5BBr2J(9b(9"(=$+reO5	5r|   c                    t        dggddg      }t        |j                         j                  t        dgdggddg      j                         t        |j                         j                  t        dgdggddg      j                         y )Nr,   r   rg   )r   r   r  r!  r5   )r3   r  s     r;   test_antiderivative_of_constantz)TestPPoly.test_antiderivative_of_constantv  sz    B4&1a&!Q%%'))51#saV+D+F+FGQ%%'))51#saV+D+F+FGr|   c                    t        ddggg d      }|j                         }t        |j                  ddgddgg       t        |j                  g d       t        |j                  dd      d       t         |d       |d      z
  d       y )Nr,   r+   r   rg   r   r(   r_   )r   r  r   r!  r5   r   r+  )r3   r  qs      r;   #test_antiderivative_regression_4355z-TestPPoly.test_antiderivative_regression_4355|  sv    B9+y)QSSAs8aV,-QSS)$Aq)3/!qtS)r|   c                    t         j                  j                  d       t        j                  g dg dg      j                  }t        j                  g dg dg      j                  }t        j                  g dg dg      j                  }t        j                  g d      }t        ||      }|j                         }|j                  d	      }|j                         }t        |j                  |       t        |j                  j                  |j                         t        |j                  j                  |j                         t        |j                  j                  |j                         y )
NrB   )rR   r(   rg   )r   r         ?)rg   rg   rg   r   )r   r   re        ?)      ?gUUUUUU?r+   r   r   )r   r   g      ?rf  g*?)r   rg  rg   r(   )
rH   rI   rJ   rV   r  r   r  r   r5   r!  )	r3   r!  iciicr5   r  ippiippiipp2s	            r;   test_antiderivative_simplez$TestPPoly.test_antiderivative_simple  s   
		t HHi0133 XX|%=>?AA hh-HJ KKL1 	HH\"1a[!  #""$q!&#%%(		355)r|   c           
         t         j                  j                  d       t        j                  ddd      dz  }t         j                  j	                  t        |            }t        ||dd      }t        j                  |      }t        dd      D ]  }|j                  |      }|j                  |      }t        |j                  |j                         t        |      D ]j  }|j                  |      }d	}	|	|j                  d d
 z  d|	z
  |j                  dd  z  z   }
t         ||j                  dd         ||
      dd||fz         l  y )NrB   r   rg   rG   r(   rT   r^  r   r&  rU   r   z
dx=%d k=%d)r   r   )rH   rI   rJ   r   r  r  r   r   r  r3  r  r  r   r!  r5   )r3   r5   r4   r  r  r[  rj  r  r!  rr  s              r;   !test_antiderivative_vs_derivativez+TestPPoly.test_antiderivative_vs_derivative  s*   
		tKK1b!1$IINN3q6"QQ!$s#2, 	KB##B'C ..$CBDD#%%( 2Y KnnQ'SUU3BZ<1q5#%%)*;;CEE!"IH%)<2q'3IKK	Kr|   c                 ,   t         j                  j                  d       t        j                  t         j                  dt         j                  j                  d      df         }t         j                  j                  t        |            }t        ||dd      }t        j                  |      }t        dd      D ]T  }|j                  |      }t        ||      }t        j                  ddd      }t         ||      t        ||      d	
       V y )NrB   r   r   rg   rT   r^  r   r*  r   r   )rH   rI   rJ   r  r   r  r  r   r   r  r3  r  r   r   r   r   )	r3   r5   r4   r  r  r[  r  spl2rX  s	            r;   test_antiderivative_vs_splinez'TestPPoly.test_antiderivative_vs_spline  s    
		tGGBEE!RYY^^B/234IINN3q6"QQ!$s#2, 	'B##B'Cc2&DQ3'BCGU2t_!%'	'r|   c                 H   t        j                  g dg dg      j                  }t        j                  g d      }t        ||      }|j	                         }t         |d       |d      d       |j                         }t        |j                  |j                         y )N)r(   rg   r(   r(   )r(   rg   rR   rR   r  gA?g_p   ?g:0yE>r   )rH   rV   r  r   r  r   r  r!  )r3   r!  r5   r  rB  r  s         r;   test_antiderivative_continuityz(TestPPoly.test_antiderivative_continuity  sw    HHlL1244HH[!!QK 	::TB ]]_acc"r|   c           	         t         j                  j                  d       t        j                  t         j                  dt         j                  j                  d      df         }t         j                  j                  t        |            }t        ||dd      }t        j                  |      }d\  }}|j                  ||      }|j                         }t        | ||       ||      z
         t        |t        |||             d\  }}|j                  ||d	
      }t        | ||       ||      z
         t        t        j                  |j                  ||d
            j!                                y )NrB   r   r   rg   rT   r^  )r  ?)r  rw  Tr  F)rH   rI   rJ   r  r   r  r  r   r   r  r+  r  r   r   r   ro   rp   )	r3   r5   r4   r  r  rc   rd   igrj  s	            r;   test_integratezTestPPoly.test_integrate  s   
		tGGBEE!RYY^^B/234IINN3q6"QQ!$s#1\\!Q!CFSVO,F1a-.1\\!QD\1CFSVO,a>?CCEFr|   c                 8   t        j                  g d      }t        j                  ddgddgddgddgg      }dD ]]  }||j                  _        t	        ||      }|j                  dd	      }t        t        j                  |      j                                _ y )
Nrg   r(   rS   r   r   r-          r,   rx  rg   rS   )	rH   rV   ry  rz  r   r+  r   rq   rp   )r3   r5   r!  rz  r  rk  s         r;   test_integrate_readonlyz!TestPPoly.test_integrate_readonly  s    HHYHHr2hc
RIBx@A& 	-I )AGGaA;;q!$DBKK%))+,	-r|   c                 ^   t        j                  g d      }t        j                  ddgddgddgddgg      }t        ||d      }|j                         } |d	       |d
      z
  }t	        |j                  d
d	      |       t	        |j                  dd      |       t	        |j                  dd      d|z         t	        |j                  dd       |d       |d      z
         t	        |j                  dd       |d       |d
      z
   |d	      z    |d      z
         t	        |j                  dd       |d       |d
      z
   |d	      z    |d      z
         t	        |j                  dd       |d       |d
      z
   |d	      z    |d      z
  d	|z  z          t	        |j                  dd       |d       |d      z
         t	        |j                  dd       |d       |d      z
         t	        |j                  dd       |d       |d      z
  d|z  z
         y Nr{  r   r   r-   r|  r,   r  r  rS   rg   r)  ir(   r_   r`   r  rT   g      /@   r   rU   rR   i)rH   rV   r   r  r   r+  r3   r5   r!  r  I
period_ints         r;   test_integrate_periodicz!TestPPoly.test_integrate_periodic  s   HHYHHr2hc
RIBx@A!QJ/qTAaD[
Aq):6C,j9C,a*n=C-qv#?C+QqTAaD[1Q4-?!C&-HIHf5!qtad*QsV3	5C0!qtad*QsV3a*nD	F 	Ar*AaD1Q4K8B,adQqTk:As+QqTAaD[1z>-IJr|   c                    t        j                  ddd      dz  }t        j                  d|z        }t        ||dd      }t	        j
                  |      }|j                         }||dk\  |d	k  z     }t        |t        |      d
       y )Nr   rg   rF   r(   rG   rR   r^  gV瞯Ҽg     ?r   r   )	rH   r   r   r   r   r  r,  r   r   )r3   r5   r4   r  r  ro  s         r;   
test_rootszTestPPoly.test_roots  s|    KK1b!1$FF2a4LQQ!$s#HHJqI~!y.126#;U3r|   c                    t        j                  ddgddgddgg      j                  }t        j                  g d      }t        ||      }t	        |j                         ddt         j                  dg       d}|j                         }|dd d fxx   |z  cc<   t        ||      }t	        |j                  |      ddt         j                  dg       y )	NrU   rg  r   )r   r  rI  r,   r  g333333?r-   rg   )	rH   rV   r  r   r   r,  rn   rK   solve)r3   r!  r5   r  constc1r  s          r;   test_roots_idzerozTestPPoly.test_roots_idzero  s     HHr4j1a&2t*5688HH'(1a[288: #rvvz:	< VVX
1a4EBl399U+ #rvvz:	<r|   c                 `   dgdgg}ddg}t        ||      }t        |j                         dt        j                  g       t        |j                  d      dt        j                  g       t        |j                  d      g        ddgddgg}g d}t        ||      }t        |j                         dt        j                  dt        j                  g       t        |j                  d      dt        j                  dt        j                  g       t        |j                  d      g        y )Nr   rg   r   )r   r   r,  rH   rn   r  r  s       r;   test_roots_all_zerozTestPPoly.test_roots_all_zero*  s    S1#JF!QK1779q"&&k21771:266{31771:r*VaV!QK1779q"&&!RVV&<=1771:2661bff'=>1771:r*r|   c                    t        j                  g dg dg      j                  }t        j                  g d      }t        ||      }t	        |j                         ddg       t	        |j                  d      dg       y )N)rg   r   rU   )rU   r   r   r  r   r   Fr  )rH   rV   r  r   r   r,  r3   r!  r5   r  s       r;   test_roots_repeatedzTestPPoly.test_roots_repeated:  sa    
 HHj*-.00HHZ 1a[288:Aw/28886<r|   c                    t        j                  dgdgg      j                  }t        j                  g d      }t        ||      }t	        |j                         dg       t	        |j                  d      g        t	        |j                  d      dg       t	        |j                  dd      g        t	        |j                  d      g        t	        |j                  dd      g        y )Nrg   rU   r  r+   F)discontinuityr_   )rH   rV   r  r   r   r,  r  r  s       r;   test_roots_discontzTestPPoly.test_roots_discontF  s    HHqcB4[!##HH[!1a[288:u-288%88"= 	288C=3%0288Cu8=rB288C="-288Cu8=rBr|   c                 Z   t         j                  j                  d       d}dD ]l  }t        dd      D ]Y  }t        j                  t         j
                  ddt         j                  j                  d      z  df         }dt         j                  j                  |dz   t        |      dz
  dd	      z  dz
  }t        ||      }dt         j                  j                         fD ]  }|j                  |d
|      }t        d      D ]  }	t        d	      D ]s  }
||	|
f   }|j                  dkD  s||j                  z  } |||      d d |	|
f   } ||d|      d d |	|
f   }d|dt        |       }t        ||z
  |z  dd|       u   \ o t        |dkD  t        |             y )NrB   r   rx  r  r   rG   r(   rg   rR   F)r  r   r  )r  r   (z) r = r   r   r(  )rH   rI   rJ   r3  r  r   r  r  r   r  r%  reprr   r   )r3   numr   r  r5   r!  r  r4   ro  ijrrvalcmpvalr  s                  r;   test_roots_randomzTestPPoly.test_roots_randomU  s   
		t( 	=Kq" =IIbeeArBIINN2,>'>$BCDbiinnU1Wc!fQh1==A1a[RYY--/0 =A%[QA"1X =!&q 
=A!"1Q3B!ww{ #rww&(&Ea!e&L)+B18C*EEFqU*L()+tBxj&I /Q&0@!$8;!=
====	=. 	c	49%r|   c           
      P   t         j                  j                  d       t        dd      D ]k  }t         j                  j	                  |dd      }|dk(  r
d|d d ddf<   dt         j                  j                         fD ]  }t        j
                  |j                  t              }t        j                  ||       |dk(  r-t        t        j                  |      j                                qd}d}t        |      D ]7  }|||d f   ||dz
  |z
  z  z  z  }|t        ||d f   ||dz
  |z
  z  z        z  }9 t        j                  d	
      5  ||z  }d d d        |j                         }|t        j                  |          }t!        |dd        n y # 1 sw Y   GxY w)NrB   rg   r      rR   )rg   r(   rg   r   r   ignore)r  g|=r   )rH   rI   rJ   r3  r  r  r2  complexr    _croots_poly1r   ro   rp   abserrstater2   r   )r3   r!  r!  r4   wr  cresr  s           r;   test_roots_crootszTestPPoly.test_roots_crootst  sx   
		tq" 	4A		q!S)AAv"!Aa%))+, 4HHQWWG4$$Q*6BHHQKOO-.q 8A1QtV9q1Q3q5z11CC!D&	A!AJ 677D8 [[2  4KC iik288C=.)QU3#4	4(   s   FF%c           	         t        j                  g dg      j                  }t        j                  ddg      }dD ]  }t        |||      }|j	                         }|j                         }|du rt        t        j                   |ddg            j                                t        t        j                   |ddg            j                                t        t        j                   |ddg            j                                t        |j                         dg       t         |ddg      d	d
g       t        t        j                   |ddg            j                                 t        t        j                   |ddg            j                                 t        |j                         ddg        y )Nr  r   rg   TFNr  F皙皙?gGz?gzGʿrU   )rH   rV   r  r   r  r  r   ro   rp   r   r,  r   any)r3   r!  r5   r   r  pp_dpp_is          r;   test_extrapolate_attrzTestPPoly.test_extrapolate_attr  sY   HHj\"$$HHaV. 	5Kq!5B==?D$$&De#T3K15578tSk!23779:tSk!23779:RXXZ!-D#;(H1EFBHHT4+%67;;==>BHHT4+%67;;==>
QG4	5r|   N)rx   ry   rz   r  r  r|  r=  rC  rF  rM  r  rX  r\  r  r`  rc  rm  rp  rs  ru  ry  r}  r  r  r  r  r  r  r  r  r  r{   r|   r;   r  r    s    B	9-/Cb2B.7.4
<5H**0K0' #G*
-K0	4<&+ 
=C&>4<5r|   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y)	TestBPolyc                 P    ddg}dgg}t        ||      }t         |d      d       y )Nr   rg   rR   r`  r   r   r   r3   r5   r!  r  s       r;   r  zTestBPoly.test_simple  s-    FSE1a[3$r|   c                 T    ddg}dgdgg}t        ||      }t         |d      d       y )Nr   rg   rR   r`  ggfffff@r  r  s       r;   test_simple2zTestBPoly.test_simple2  s1    FS1#J1a[30r|   c                 X    ddg}dgdgdgg}t        ||      }t         |d      d       y )Nr   rg   rR   rS   ra  g433333@r  r  s       r;   test_simple3zTestBPoly.test_simple3  s8    FS1#sO1a[39	;r|   c                 \    ddg}dgdgdgdgg}t        ||      }t         |d      d       y )Nr   rg   r(   r  g:On?r  r  s       r;   test_simple4zTestBPoly.test_simple4  s?    FS1#sQC 1a[3 "( 	)r|   c                 `    ddg}dgdgdgdgdgg}t        ||      }t         |d      d       y )Nr   rg   r   r(   r  g	h"l@r  r  s       r;   test_simple5zTestBPoly.test_simple5  sC    FS1#sQC!%1a[3 "( 	)r|   c                     g d}ddgddgddgg}t        ||d      }t         |d      d       t         |d	      d
       t         |dd      d       t         |d	d      d       y )Nr   rg   rR   rR   r   r(   r  r  g333333@gHzG?g[(\?rg   r  r  r  s       r;   r  zTestBPoly.test_periodic  si    VaVaV$1aZ03,4.13
H-4[1r|   c           	         t         j                  j                  d       d}dD ]  }t        j                  t         j                  j	                  dd|dz               }t         j                  j	                  dd|dz   |f      }|d d d	   j                         }t        ||d
      }t        |d d d d d	f   |d d d	   d
      }t         j                  j	                  ddd      }t         ||       ||      d       t         ||d       ||d      d       |j                         }	|j                         }
t         |	|       |
|      d       |j                         }|j                         }t         j                  j	                  ddd      D ]c  \  }}|j                  ||      }|j                  ||      }t        ||d       t         ||       ||      z
   ||       ||      z
  d       e  y )Nr   rR   r#  r   rg   r  r`  r$  rU   Tr  r)  r  r(  r&  r   r'  r(  )rH   rI   rJ   r  r  rK   r   r   r  r  r+  )r3   r   r  r5   r-  r2  r3  r  r4  r5  r6  r7  r8  rc   rd   r9  r:  s                    r;   r=  zTestBPoly.test_descending  s   
		q 	,A		))!RQ78A""4EAIq>"BBDbDBr1$/Br!TrT'{AddG>BYY&&sB4FBvJ6
?BvqM2fa=uE==?D==?DDL$v,UC
 $$&D$$&D		))#r6: ,1Q*Q*u59Q$q' 147T!W3D%*,	,/	,r|   c                 ~   t         j                  j                  ddddd      }t        j                  g d      }t	        ||      }t        |j                  j                  |j                         t        |j                  j                  |j                         t         |d      j                  |j                  dd         t         |t         j                  j                  dd            j                  d|j                  dd  z          |j                         }t        |j                  j                  d	       y )
NrJ  r(   rg   rR   r  r  rT   r?  r@  )
rH   rI   r  rV   r   r   r5   r2  r!  r  )r3   r!  r5   r  rA  s        r;   rC  zTestBPoly.test_multi_shape  s    IINN1aAq)HH[!!QKQSSYY(QSSYY(QsV\\17712;/Qryy~~a*+1117712;&	( \\^RTTZZ1r|   c                     ddg}dgdgdgg}t        ||      }d}|dz  }t         ||      dd|z
  z  d|z
  z  d|z  d|z
  z  z   d|z  |z  z          y )Nr   r(   rR   rg   rS   r`  r  )r3   r5   r!  r  xvalrP  s         r;   test_interval_lengthzTestBPoly.test_interval_length
  sq    FS1#sO1a[1H4!qs)QqS/E!GQqSM"AAE!G"KLr|   c                     g d}ddgddgddgg}t        ||      }t         |d      d       t         |d      d       y )	Nr  rR   r   r(   r  gGzG?333333?r  r  r  s       r;   test_two_intervalszTestBPoly.test_two_intervals  sF    VaVaV$1a[3-30r|   c           	      ,   ddg}dgdgdgg}t        ||      }dD ]  }t        |||      }|j                         }|du rit        t        j                   |d	d
g            j                                t        t        j                   |d	d
g            j                                t        t        j                   |d	d
g            j                                 t        t        j                   |d	d
g            j                                  y )Nr   r(   rR   rg   rS   r  r  Fr  g @)r   r  r   rH   ro   rp   r  )r3   r5   r!  r  r   bp_ds         r;   r  zTestBPoly.test_extrapolate_attr  s    FS1#sO1a[. 	?Kq!5B==?De#T3K15578tSk!23779:BHHRs_599;;<BHHT4+%67;;==>	?r|   N)rx   ry   rz   r  r  r  r  r  r  r=  rC  r  r  r  r{   r|   r;   r  r    s;    %1;))
2 ,D2M1?r|   r  c                   N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)TestBPolyCalculusc                 F   g d}ddgddgddgg}t        ||      }|j                         }t         |d      d       t         |d      d       t         |dd	
       |dd
       |dd
      gg d       t         |dd	
       |dd
       |dd
      gg d       y )Nr  rR   r   r(   r  r  r  r  rg   r  )r  r   r   )r  r,   r   )r   r  r   )r3   r5   r!  r  bp_ders        r;   r  z!TestBPolyCalculus.test_derivative+  s    VaVaV$1a[sX.sS) 	CA31r#!}E,	.CA31r#!}E$	&r|   c                    t         j                  j                  d       d\  }}t        j                  t         j                  j                  |            }t         j                  j                  ||dz
  f      }t	        ||      }t        j                  |      }t        |      D ]W  }|j                         }|j                         }t        j                  |d   |d   d      }t         ||       ||             Y y NrB   rT   r   rg   r   rU   r?   )rH   rI   rJ   r  r   r   r  r3  r  r   r   )	r3   r  r!  r5   r!  r  r  dr  s	            r;   test_derivative_ppolyz'TestBPolyCalculus.test_derivative_ppoly9  s    
		t1GGBII$$Q'(IIa1X&1a[''+q 	,ABBQqT1R5"-BBrFBrF+		,r|   c           	         t         j                  j                  d       d\  }}t        j                  t         j                  j                  |            }t         j                  j                  ||dz
  f      }|j	                         |dz  fD ]c  }t        ||      }t        j                  |d   |d   d      }t        |      D ]*  }t         |||       |j                  |      |             , e y )NrB   r  rg   rU  r   rU   r?   )
rH   rI   rJ   r  rK   r   r   r3  r   r  )	r3   r  r!  r5   r!  ccr  r  r  s	            r;   test_deriv_inplacez$TestBPolyCalculus.test_deriv_inplaceH  s    
		t1GGBII$$Q'(IIa1X& 668Q\* 	ABr1BQqT1R5"-B1X A2q	+;2==+;B+?@A	Ar|   c           
         g d}ddgddgg}t        ||      }|j                         }t        j                  ddd      }t	         ||      t        j
                  |dk  |dz  dz  d|z  |dz  dz
  z  d	z         d
d
       y )Nr  r   rg   rR   r   r(   r-   r+   g      ?r(  r   r   )r   r  rH   r   r   where)r3   r5   r!  r  bixxs         r;   rm  z,TestBPolyCalculus.test_antiderivative_simpleU  s     VaV1a[ [[Ar"2aQ),rRUQY)?$)FH"	0r|   c                    t         j                  j                  d       t        j                  t         j                  j                  d            }t         j                  j                  d      }t	        ||      }t        j
                  |d   |d   d      }t         |j                         j                         |       ||      dd       y )	NrB   r   rS   r   r(   rR   r   rU   r(  r(  r  )	rH   rI   rJ   r  r   r   r   r  r  r3   r5   r!  r  r  s        r;   test_der_antiderz"TestBPolyCalculus.test_der_antideri  s    
		tGGBII$$R()II]+1a[[[1quc*8))+668<2U	8r|   c                    t         j                  j                  d       t        j                  t         j                  j                  d            }t         j                  j                  d      }t	        ||      }t        j                  |      }t        j                  |d   |d   d      }t         |j                  d      |       |j                  d      |      dd	       y )
NrB   r   r  r   rU   r   r(   r(  r  )
rH   rI   rJ   r  r   r   r  r   r   r  )r3   r5   r!  r  r  r  s         r;   test_antider_ppolyz$TestBPolyCalculus.test_antider_ppolys  s    
		tGGBII$$R()II]+1a[''+[[1qub),))!,R0,))!,R0u5	Jr|   c                 x   t         j                  j                  d       t        j                  t         j                  j                  d            }t         j                  j                  d      }t	        ||      j                         }|j                  dd }t         ||dz
         ||dz         dd       y )	NrB   r   rS   r   rg   rU   r   r(  r  )rH   rI   rJ   r  r   r  r5   r   r  s        r;   test_antider_continuousz)TestBPolyCalculus.test_antider_continuous  s    
		tGGBII$$R()IIW%1a['')TT!BZ2:2:U	@r|   c                    t         j                  j                  d       t        j                  t         j                  j                  d            }t         j                  j                  d      }t	        ||      }t        j                  |      }t        |j                  dd      |j                  dd      dd       y )NrB   r   r  r   rg   r(  r  )	rH   rI   rJ   r  r   r   r  r   r+  )r3   r5   r!  r  r  s        r;   ry  z TestBPolyCalculus.test_integrate  s    
		tGGBII$$R()IIW%1a[''+Q*Q*U	Dr|   c                     dgg}ddg}t        ||      }t        |j                  dd      dd       t        ||d      }t        t	        j
                  |j                  dd                   t        |j                  ddd	      dd       y )
Nrg   r   r(   r-   r   r   Fr  T)r   r   r+  r   rH   ro   )r3   r!  r5   rd   b1s        r;   test_integrate_extrapz'TestBPolyCalculus.test_integrate_extrap  s    SEF!QK 	Aq)2E: 1aU+a+,-Qt<buMr|   c                    t        j                  g d      }t        j                  ddgddgddgddgg      }t        j                  t	        ||      d      }|j                         } |d	       |d
      z
  }t        |j                  d
d	      |       t        |j                  dd      |       t        |j                  dd      d|z         t        |j                  dd       |d       |d      z
         t        |j                  dd       |d       |d
      z
   |d	      z    |d      z
         t        |j                  dd       |d       |d
      z
   |d	      z    |d      z
         t        |j                  dd       |d       |d
      z
   |d	      z    |d      z
  d	|z  z          t        |j                  dd       |d       |d      z
         t        |j                  dd       |d       |d      z
         t        |j                  dd       |d       |d      z
  d|z  z
         y r  )rH   rV   r   r  r   r  r   r+  r  s         r;   r  z)TestBPolyCalculus.test_integrate_periodic  s   HHYHHr2hc
RIBx@A""5A;JGqTAaD[
Aq):6C,j9C,a*n=C-qv#?C+QqTAaD[1Q4-?!C&-HIHf5!qtad*QsV3	5C0!qtad*QsV3a*nD	F 	Ar*AaD1Q4K8B,adQqTk:As+QqTAaD[1z>-IJr|   c                 <   dgg}ddg}t        ||      }t        j                  ddd      }t         |j	                  d      |       |j                         |      dd       t         |j	                  d      |       |j                  d      |      dd       y )Nrg   r   r?   rU   r(  r  )r   rH   r   r   r  r  )r3   r!  r5   rd   r  s        r;   test_antider_negz"TestBPolyCalculus.test_antider_neg  s    SEF!QK[[Ar"(R(,.@a.>.>.@.D"	0Q+-AQ-=-=b-A"-E"	0r|   N)rx   ry   rz   r  r  r  rm  r  r  r  ry  r  r  r  r{   r|   r;   r  r  *  s?    &,A0(8
J@DNK00r|   r  c                   $    e Zd Zd Zd Zd Zd Zy)TestPolyConversionsc                     g d}ddgddgddgg}t        ||      }t        j                  |      }t        j                  |      }ddg}t	         ||       ||             t	         ||       ||             y )	Nr  rR   r(   rg   r   rS   r`  ffffff?)r   r   r  r  r   )r3   r5   r!  r  r  r  r  s          r;   test_bp_from_ppz#TestPolyConversions.test_bp_from_pp  sw    VaVaV$1a[##B'((,3Z22'2B(r|   c                    t         j                  j                  d       d\  }}t        j                  t         j                  j                  |            }t         j                  j                  ||dz
  f      }t	        ||      }t        j                  |      }t	        j                  |      }t        j                  |d   |d   d      }t         ||       ||             t         ||       ||             y r  )
rH   rI   rJ   r  r   r   r  r  r   r   )	r3   r  r!  r5   r!  r  r  r  r  s	            r;   test_bp_from_pp_randomz*TestPolyConversions.test_bp_from_pp_random  s    
		t1GGBII$$Q'(IIa1X&1a[##B'((,[[1qub)22'2B(r|   c                     g d}ddgddgddgg}t        ||      }t        j                  |      }t        j                  |      }ddg}t	         ||       ||             t	         ||       ||             y )Nr  rR   rg   rS   r(   r`  r  )r   r   r  r  r   )r3   r5   r!  r  r  r  r  s          r;   test_pp_from_bpz#TestPolyConversions.test_pp_from_bp  sw    VaVaV$1a[''+$$R(3Z22'2B(r|   c                 6   g d}ddgddgddgg}t        ||      }t        t              5  t        j                  |       d d d        t	        ||      }t        t              5  t	        j
                  |       d d d        y # 1 sw Y   CxY w# 1 sw Y   y xY w)Nr  rR   rg   rS   r(   )r   rW   	TypeErrorr  r   r  )r3   r5   r!  r  r  s        r;   test_broken_conversionsz+TestPolyConversions.test_broken_conversions  s    VaVaV$1a[9% 	+&&r*	+ 1a[9% 	'""2&	' 	'		+ 	+	' 	's   B$BBBN)rx   ry   rz   r  r  r  r  r{   r|   r;   r  r    s    	))	)
'r|   r  c                   l    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y)TestBPolyFromDerivativesc                 T    t        j                  dddgdg      }t        |ddg       y )Nr   rg   r(   rR   r-   r   r   _construct_from_derivativesr   )r3   r  s     r;   test_make_poly_1z)TestBPolyFromDerivatives.test_make_poly_1  s*    ..q!aS1#>RH%r|   c                     t        j                  ddddgdg      }t        |g d       t        j                  ddddgdg      }t        |g d       t        j                  dddgddg      }t        |g d       y )Nr   rg   )r,   r,   r,   r(   rR   )r-   r  r,   )r-   g      r,   r  r3   r  r  c3s       r;   test_make_poly_2z)TestBPolyFromDerivatives.test_make_poly_2  sx    ..q!aVaSAL) ..q!aVaSAN+ ..q!aS1a&AN+r|   c                     t        j                  ddg ddg      }t        |g d       t        j                  dddgg d      }t        |g d       t        j                  ddddgdd	g      }t        |g d
       y )Nr   rg   )rg   r(   rR   rS   )r,   竪?g@rB  )rS   r(   rR   )r,   gUUUUUU	@g
@rB  r(   rR   )r,   r  r   rB  r  r  s       r;   test_make_poly_3z)TestBPolyFromDerivatives.test_make_poly_3  su    ..q!YD12 ..q!aS)D23 ..q!aVaVD./r|   c                    t         j                  j                  d       t         j                  dt         j                  j                  d      f   }t         j                  dt         j                  j                  d      f   }t	        j
                  dd||      }t	        |d d d f   ddg      }t        d      D ]4  }t         |d       |d      g||   ||   g       |j                         }6 y )Nr  r   rT   rg   rJ  r   r,   )	rH   rI   rJ   r   r   r  r3  r   r  )r3   yaybr!  r  r  s         r;   test_make_poly_12z*TestBPolyFromDerivatives.test_make_poly_12  s    
		uUU1bii&&q))*UU1bii&&q))*--aB;1QW:1v&q 	!ARVRV,r!uben=B	!r|   c                 V   t         j                  j                  d       ddg}d\  }}t         j                  j                  |ddddf      }t        ||      }t        j                  ||      }t        ||      }t        j
                  ddd      }t         ||       ||             y )	Nr  r   rg   )r   rT   r(   rR   rS   r   )rH   rI   rJ   r   _raise_degreer   r   )	r3   r5   r!  r  r!  r  r  r  r  s	            r;   test_raise_degreez*TestBPolyFromDerivatives.test_raise_degree  s    
		uF1IIaAq!_-1a[  A&Bl[[Ar"2B(r|   c                 J    t        t        t        j                  ddgdg       y )Nr   rg   rW   rX   r   r  r   s    r;   
test_xi_yiz#TestBPolyFromDerivatives.test_xi_yi,  s    j%"8"81a&1#Fr|   c                 \    g d}dgdgdgg}t        t        t        j                  ||       y )Nr   r   rg   r   r  )r3   rX  r"  s      r;   test_coords_orderz*TestBPolyFromDerivatives.test_coords_order/  s,    cA3_j%"8"8"bAr|   c                     g d}ddgdgddgddgg}t        j                  ||      }t        |j                  j                  dk(         |j                         }dD ]  }t         ||       ||      gddg         y )Nr  r   )rS   rR   )r   r`  r,   r  gffffff?r-   r`   r   )r   r  r   r!  r2  r  r   )r3   rX  r"  r  ppdr  s         r;   
test_zerosz#TestBPolyFromDerivatives.test_zeros4  s    !fqcAq6Aq6*##B+

f$%mmo2 	9BRVSW-Bx8	9r|   c                 6   t         j                  j                  d       t        j                  t	        |dz         D cg c]
  }d|dz  z   c}      }t	        |dz         D cg c]!  }t         j                  j                  |      # }}||fS c c}w c c}w )NrB   rg   r,   r(   )rH   rI   rJ   rn  r3  )r3   r  r!  r  rX  r"  s         r;   _make_random_mkz(TestBPolyFromDerivatives._make_random_mk>  sv    
		tZZE!A#J7qad78+01:6abiiq!662v 86s   B%&Bc           	          d\  }}| j                  ||      \  }}t        j                  ||      }t        |dz        D ]5  }t	         ||      |D cg c]  }||   	 c}       |j                         }7 y c c}w )NrT   r   r(   )r  r   r  r3  r   r  )r3   r  r!  rX  r"  r  r  yys           r;   test_random_12z'TestBPolyFromDerivatives.test_random_12E  su    1%%a+B##B+1a4[ 	!EBrF$<2RY$<=B	!$<s   A8c           	          d\  }}| j                  ||      \  }}t        t        t        j                  fi t        ||d       y )Nr  r   rX  r"  orders)r  rW   rX   r   r  r   r3   r  r!  rX  r"  s        r;   test_order_zeroz(TestBPolyFromDerivatives.test_order_zeroN  sD    1%%a+Bj%"8"8 	0"A.	0r|   c           
          d\  }}| j                  ||      \  }}t        j                  ||d|z  dz
         t        t        t        j                  fi t        ||d|z         y )Nr  r(   rg   r  r  )r  r   r  rW   rX   r   r   s        r;   test_orders_too_highz-TestBPolyFromDerivatives.test_orders_too_highT  sb    1%%a+Br2ac!e4j%"8"8 	2"AaC0	2r|   c           
         d\  }}| j                  ||      \  }}d}t        j                  |||      }t        |dz  dz         D ]6  }t	         ||dd dz
         ||dd dz                |j                         }8 t        t        j                   ||dd dz
         ||dd dz                       d}t        j                  |||      }t        |dz        D ]6  }t	         ||dd dz
         ||dd dz                |j                         }8 t        t        j                   ||dd dz
         ||dd dz                       y )	Nr  rT   r#  r(   rg   rU   r(  rJ  )	r  r   r  r3  r   r  r   rH   allclose)r3   r  r!  rX  r"  r  r  r  s           r;   test_orders_globalz+TestBPolyFromDerivatives.test_orders_global\  sd   1%%a+B ##B59uaxz" 	!ABr!Bx%/0"R"X5E2FGB	! 	BKK2a8e#3 4bAbE9I6JKKL
 ##B59uax 	!ABr!Bx%/0"R"X5E2FGB	! 	BKK2a8e#3 4bAbE9I6JKKLr|   c           
         d\  }}| j                  ||      \  }}t        |      D cg c]  }|dz   	 }}t        |dd       D ]  \  }}t        j                  |||      }	t        ||   dz  dz         D ]0  }
t         |	|dz
         |	|dz                |	j                         }	2 t        t        j                   |	|dz
         |	|dz                        y c c}w )N)rh   r   rg   rU   r#  r(   r(  )
r  r3  rM  r   r  r   r  r   rH   r&  )r3   r  r!  rX  r"  or  r  r5   r  r  s              r;   test_orders_localz*TestBPolyFromDerivatives.test_orders_localt  s    1%%a+B!&q*A!a%**b2h' 	CDAq''Bv>B6!9>A-. %1u9r!e)}=]]_% Bq5yM2a%i=AAB	C +s   Cc                 B   d\  }}t        j                  t         j                  j                  |dz               }t         j                  j                  |dz   |dddf      }t        j                  ||      }t        |j                  j                  d|z  |dddf       y )N)rh   rT   rg   rJ  rh   r   r(   )rH   r  rI   r   r  r   r!  r2  )r3   r  r!  rX  r"  r  s         r;   test_yi_trailing_dimsz.TestBPolyFromDerivatives.test_yi_trailing_dims  s    1WWRYY%%ac*+YYqsAq!Q/0##B+RTTZZ!A#q!Q!23r|   c                    t        j                  d      }t        j                  ddgdgdgg|      }t	         |d      d       t        j
                  d      }t        j                  ddgdgdgg|      }t	         |d      d       d}t        j                  ddgdgdgg|      }t	         |d      d       d}y )Nrg   r   r#  )rH   int32r   r  r   int64)r3   r  r  s      r;   test_gh_5430z%TestBPolyFromDerivatives.test_gh_5430  s    
 !""Aq6QC!:fEAaD!$!""Aq6QC!:fEAaD!$""Aq6QC!:fEAaD!$r|   N)rx   ry   rz   r  r  r  r
  r  r  r  r  r  r  r!  r$  r'  r*  r,  r0  r{   r|   r;   r  r    sV    &
,0	!)GB
9!02M0
C4r|   r  c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestNdPPolyc                 |   t         j                  j                  d       t         j                  j                  dd      }t        j                  ddd      }t         j                  j                  d      }t        ||f      } ||f      }t        |d d d d d f   ||      j                         }t        ||       y )NrB   rS   rT   r   rg   rJ  r*  )	rH   rI   rJ   r  r   r   rJ  r2   r   )r3   r!  r5   rX  r  v1v2s          r;   test_simple_1dzTestNdPPoly.test_simple_1d  s    
		tIINN1a KK1c"YY^^C AtuX1QqX;2.446Br|   c           
         t         j                  j                  d       t         j                  j                  dddd      }t        j                  ddd      }t        j                  ddd      d	z  }t         j                  j                  d
      }t         j                  j                  d
      }t        j
                  t        |      dg|j                        }|j                  t         j                         t        j                  |j                  ddd      ||ft        j                  ddgt         j                        t         j                  ||f   t        j                  ddgt         j                        d|       |j!                         }t#        |||f||      }t%        ||       t'        |||f      }dD ]H  }	 |t         j                  ||f   |	      }t#        |||f|||	      }t%        ||t)        |	             J y )NrB   rS   rT   rJ  rh   r   rg   r   r(   r*  r   r  *   )Nr   r   r   rg   )rg   r   )r(   rR   )r   r(   r  rK  )rH   rI   rJ   r  r   r  r  r   fillrn   r    evaluate_ndr   rV   intcc_r2   _ppoly2d_evalr   r   r  )
r3   r!  r5   r4   rX  r"  r4  r5  r  r  s
             r;   test_simple_2dzTestNdPPoly.test_simple_2d  s   
		tIINN1aA&KK1c"KK1c"A%YY^^C YY^^C XXs2wl!''2
199S#q1q688QF"'':55R=88QF"'':	 XXZ1q!fb"-BA1v@ 	6B255R=R(Bq1a&"bR8BBDH5	6r|   c           	      v   t         j                  j                  d       t         j                  j                  dddddd      }t        j                  dd	d      }t        j                  dd	d      d
z  }t        j                  dd	d      dz  }t         j                  j                  d      }t         j                  j                  d      }t         j                  j                  d      }t        ||||f      }dD ]:  }	 ||||f|	      }
t        ||||f||||	      }t        |
|t        |	             < y )NrB   rS   rT   rJ  rh   r   r   r   rg   r(   r   rR   (   )Nr   r   r   r   rg   r   rg   r   r   )r(   rR   r   )rJ  r   r(   r  rK  )	rH   rI   rJ   r  r   r   _ppoly3d_evalr   r  )r3   r!  r5   r4   r6   rX  r"  zir  r  r4  r5  s               r;   test_simple_3dzTestNdPPoly.test_simple_3d  s   
		tIINN1aAq!,KK1c"KK1c"A%KK1c"A%YY^^BYY^^BYY^^BA1ay! 	6BBB<B'Bq1a)RRB?BBDH5		6r|   c           
         t         j                  j                  d       t         j                  j                  dddddddd	      }t        j                  d
dd      }t        j                  d
dd      dz  }t        j                  d
dd	      dz  }t        j                  d
dd      dz  }t         j                  j                  d      }t         j                  j                  d      }t         j                  j                  d      }t         j                  j                  d      }	t        |||||f      }
 |
||||	f      }t        |||||f||||	      }t        ||       y )NrB   rS   rT   rJ  rh   r   r   r   r   r   rg   r(   rR   r   r  )rH   rI   rJ   r  r   r   _ppoly4d_evalr   )r3   r!  r5   r4   r6   r:   rX  r"  rG  uir  r4  r5  s                r;   test_simple_4dzTestNdPPoly.test_simple_4d  s   
		tIINN1aAq!R4KK1c"KK1c"A%KK1d#Q&KK1d#Q&YY^^BYY^^BYY^^BYY^^BA1a|$BB 1q!QlBB;Br|   c                    t         j                  j                  d       t         j                  j                  dd      }t        j                  ddd      }t        ||f      }|j                  dg      }t        ||      }|j                         }t        |j                  |j                         |j                  dg      }t        ||      }|j                  d      }t        |j                  |j                         y )	NrB   rS   rT   r   rg   rJ  r  r(   )rH   rI   rJ   r  r   r   r  r   r   r!  r  )r3   r!  r5   r  rA  r  dp1s          r;   test_deriv_1dzTestNdPPoly.test_deriv_1d  s    
		tIINN1a KK1c"At \\aS\!1a[mmocee$ !%1a["cee$r|   c                    t         j                  j                  d       t         j                  j                  dddddd      }t        j                  dd	d      }t        j                  dd	d      d
z  }t        j                  dd	d      dz  }t        ||||f      }t        |j                  ddd	d
dd      |      }|j                  d
g      }|j                  d
      }t        |j                  |j                  j                  dd
dd	dd             t        |j                  d	ddd
dd      |      }|j                  g d      }|j                  d	      }t        |j                  |j                  j                  d
dddd	d             t        |j                  d
ddd	dd      |      }|j                  g d      }|j                  d      }t        |j                  |j                  j                  d
ddddd	             y )NrB   rS   rT   rJ  rh   r   r   r   rg   r(   r   rR   r  rD  )r   r   rR   )rH   rI   rJ   r  r   r   r   	transposer  r   r!  r  )	r3   r!  r5   r4   r6   r  r  rA  rN  s	            r;   test_deriv_3dzTestNdPPoly.test_deriv_3d	  s   
		tIINN1aAq!,KK1c"KK1c"A%KK1c"A%A1ay! 1;;q!Q1a0!4\\aS\!mmA1aAq9	; 1;;q!Q1a0!4+"1aAq9	; 1;;q!Q1a0!4\\Y\'mmA1aAq9	;r|   c                 X   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      }|j	                  d	      }|j	                  d
      }t         j
                  j                  d      }t         j
                  j                  d      }t         j
                  j                  d      }	t         ||||	f      ||dz  z  |	dz  z  t        d      t        d      z  z         y )N)rg   rg   rg   rR   rS   rT   r   rg   rS   rT   r(   rJ  rR   )rg   r   rS   )r   r(   r   r  )	rH   r   r   r   r  rI   r  r   r   )
r3   r!  r5   r4   r6   r  rB  rX  r"  rG  s
             r;   test_deriv_3d_simplez TestNdPPoly.test_deriv_3d_simple 	  s     GG&'KK1c"A%KK1c"A%KK1c"A%A1ay!i(y)YY^^BYY^^BYY^^BBB<(RU
RU*eAhuQx.?@	Br|   c           
      <  	 t         j                  j                  d       t         j                  j                  dddd      }t        j                  ddd      dz  }t        j                  ddd      d	z  }|j                  dd	dd
      }|j                  |j                  d   |j                  d   d      j                         }t        j                  ||d	       |j                  |j                        }|j                  dd	dd
      }|j                  dd
dd	      }|j                  |j                  d   |j                  d   d      j                         }t        j                  ||d	       |j                  |j                        }|j                  d	dd
d      j                         }t        |||f      	ddgddgddgddgfD ]O  }	j                  |      }t        	fd|t        dd      gd	z        \  }}t        ||ddt!        |             Q y )NrB   rS   rT   r>   r  r   rg   r   r(   rR   rU   r:  )r   r+   )r  r  )rI  ra  c                      | |f      S r  r{   )r5   r4   r  s     r;   <lambda>z/TestNdPPoly.test_integrate_2d.<locals>.<lambda>O	  s    1aV9 r|   gh㈵>)epsrelepsabs)r   )r   r   r   )rH   rI   rJ   r  r   rQ  r   r2  rK   r    fix_continuityr   r+  r#   r   r   r  )
r3   r!  r5   r4   cxrangesrx  ig2err2r  s
            @r;   test_integrate_2dzTestNdPPoly.test_integrate_2d3	  s   
		tIINN1aR(KK1d#Q&KK1d#Q& KK1a#YYqwwqz1771:r2779b!Q'JJqwwKK1a#KK1a#YYqwwqz1771:r2779b!Q'JJqwwKK1a#((* A1v' &))"J/1 		2F
 V$B4f$(T$B#CA#EGICB$T$(L2		2r|   c           	         t         j                  j                  d       t         j                  j                  dddddd      }t        j                  dd	d      d	z  }t        j                  dd	d      d
z  }t        j                  dd	d      dz  }t        ||||f      }t         j                  j                  d      }t         j                  j                  d      }d\  }}	|j                  ||	d      }
|j                  d      }t         |
||f       ||	||f       ||||f      z
         |j                  ||	d	      }|j                  d      }t         |||f       |||	|f       ||||f      z
         |j                  ||	d
      }|j                  d      }t         |||f       ||||	f       ||||f      z
         y )NrB   rS   rT   rJ  r>   r  r   r   rg   r(   r   rR   r*  )ra  r  r   rE  rD  r  )	rH   rI   rJ   r  r   r   integrate_1dr  r   )r3   r!  r5   r4   r6   r  r:   r9   rc   rd   pxpaxpypaypzpazs                   r;   test_integrate_1dzTestNdPPoly.test_integrate_1dT	  s   
		tIINN1aBB/KK1d#Q&KK1d#Q&KK1d#Q& A1ay!IINN3IINN31^^Aqq^)y)Aq6
CAq	NS!Q^$CD^^Aqq^)y)Aq6
CAq	NS!Q^$CD^^Aqq^)y)Aq6
CAq	NS!Q^$CDr|   N)rx   ry   rz   r6  r@  rH  rL  rO  rR  rT  r_  rh  r{   r|   r;   r2  r2    s2     6:6( (%(;>B&2BEr|   r2  c                     t        j                  t        |       j                  d   f      }t	        |      D ]  \  }}|dk  s|dkD  rt         j
                  ||ddf<   (t        j                  ||      dz
  ||   z
  t        |   |cxk  xr |dz      k  nc        t         fdt         j                  d         D              }|||ddf<    |S )z&Evaluate piecewise polynomial manuallyr(   r   rg   Nc              3   ^   K   | ]$  }|f   j                   d    |z
  dz
  z  z   & yw)r   rg   N)r2  )r/  r!  r!  r  r  s     r;   r0  z _ppoly_eval_1.<locals>.<genexpr>y	  s;      , !A#QWWQZ\!^,, ,s   *-)
rH   ra   r  r2  rM  rn   searchsortedr   sumr3  )	r!  r5   xpsrq  r  r  ro  r  r  s	   `      @@r;   rJ  rJ  o	  s    
((CHaggaj)
*C3 	26R!VvvC!HOOAr"Q&1I!#QqsV#$ ,qwwqz*, ,AaC	 Jr|   c                    |d   }|d   }| j                   d   }t        j                   |      }t        j                  |      }t        j                  |      }||k\  ||k  z  }	|||	 <   |j	                  |	      }
t        j
                  ||
      dz
  }|j                  dt        |            }| }|
|j                  |      z
  }t        j                  ||      }t        j                  t        t        |
            D cg c])  }t        j                  ||ddf   |dd||   f         + c}      }|||	<   ||_         |S c c}w )z4Evaluate piecewise polynomial manually (another way)r   rU   rg   )NN)r2  rH   r2   
empty_likecompressrk  clipr  takevanderrV   r3  r*  )r  breaksr   r;  rc   rd   K	saveshaper  maskr  indxsr  r)  Vr!  valuess                    r;   rK  rK  	  s    q	Ar
AQAI88D>D
--
CAI$!)$DCJ	t	BOOFB')EJJq#f+&E	BE""D
		$!AXXs2wPArvva1gr!U1X+7PQFCICIJ Qs   .Ec                 d    |dk  rt        d      ||kD  ryt        ||z
  dz   |      | ||z
  z  z  S )z
    d^n (x**y) / dx^n
    r   zinvalid derivative orderrg   )rX   r   )r5   r4   rO  s      r;   _dpowr}  	  sC     	1u344	
QAEAIq!AAJ..r|   c                    |d}t        j                  t        |      f| j                        }| j                  dd \  }}t        t        ||            D ]  \  }\  }	}
|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                  ||<   Qt        j                  |d   |	      dz
  }t        j                  |d   |
      dz
  }|	|d   |   z
  }|
|d   |   z
  }d}t        | j                  d         D ]Y  }t        | j                  d         D ]<  }|| ||z
  dz
  ||z
  dz
  ||f   t        |||d         z  t        |||d         z  z  }> [ |||<    |S )z@
    Straightforward evaluation of 2-D piecewise polynomial
    Nr9  r   r(   r   rU   rg   rH   r  r  r   r2  rM  ziprn   rk  r3  r}  )r!  r  r   ynewr  rq  nxnyjoutr5   r4   j1j2s1s2r  k1k2s                     r;   r?  r?  	  s    
z
((CI<qww
/CWWRa[FB!#dD/2 fq!AqQ+"Q%)+AqQ+"Q%)+CI__RUA&*__RUA&*Ar]Ar]
# 	0BAGGAJ' 0"R%'"R%'"R/0B1./B1./ 00	0 D	), Jr|   c                    |d}t        j                  t        |      f| j                        }| j                  dd \  }}}	t        t        |||            D ]  \  }
\  }}}|d   d   |cxk  r|d   d   k  r6n n3|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                  ||
<   lt        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 ]r  }t        | j                  d         D ]U  }|| ||z
  dz
  ||z
  dz
  |	|z
  dz
  |||f   t        |||d         z  t        |||d         z  t        |||d         z  z  }W t  |||
<    |S )	z@
    Straightforward evaluation of 3-D piecewise polynomial
    NrC  r   rR   r   rU   rg   r(   r  )r!  r  r   r  znewr  rq  r  r  nzr  r5   r4   r6   r  r  j3r  r  s3r  r  r  k3s                           r;   rF  rF  	  s+    
z
((CI<qww
/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]
# 	4BAGGAJ' 4
+ 4BAbeAgbeAgbeAgbB>?#BBqE23#BBqE23 $BBqE23 4C44	4 D	14 Jr|   c                    |d}t        j                  t        |      f| j                        }| j                  dd \  }}	}
}t        t        ||||            D ]	  \  }\  }}}}|d   d   |cxk  r|d   d   k  rPn nM|d   d   |cxk  r|d   d   k  r6n n3|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 ]n  }|| ||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  }p    |||<    |S )
z@
    Straightforward evaluation of 4-D piecewise polynomial
    N)r   r   r   r   r   rS   r   rU   rg   r(   rR   r  )r!  r  r   r  r  unewr  rq  ru   rv   mzmur  r5   r4   r6   r:   r  r  r  j4r  r  r  s4r  r  r  r  k4s                                 r;   rJ  rJ  	  s    
z
((CI<qww
/CWWRa[NBB'D$d(C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]
# 	8BAGGAJ' 8
+ 8B#AGGAJ/ 8"R%'"R%'"R%'"R%'"R2"M N"'B1"6!7"'B1"6!7 #(B1"6!7 #(B1"6	!7 8888	8 D	;> Jr|   r  )>numpy.testingr   r   r   r   r   r   r	   r  r
   rW   numpyr   r   r   r   r   r   rH   scipy.interpolater   r   r   r   r   r   r   r   r   r   r   r   r   scipy.specialr   r   r    scipy._lib._gcutilsr!   r"   scipy.integrater#   r$   r&   r~   r  r  r  r  r  r  r  r  r  r2  rJ  rn   rK  r}  r?  rF  rJ  r{   r|   r;   <module>r     s  ? ? ? +  9 9     & $ ; ! \; \;~T Tn6 6j& j&ZJL JLZ,+ ,+^c5 c5L? ?DX0 X0v.' .'b` `FSE SEl  .0VV .	/!H%P*r|   