
    biw                    >   d dl mZmZmZmZmZ d dlmZ d dlZd dl	m
Z
mZmZmZ d dl	Zd dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZm Z  d dlm!Z! d dl"m#Z#m$Z$ d d	l%m&Z& d d
l'm(Z( d dlm)Z) ejT                  jV                  Z+ejT                  jX                  Z, G d d      Z- G d d      Z. G d d      Z/ ee       G d d             Z0ejT                  jc                  deeg      d        Z2 eee       G d d             Z3 G d d      Z4 ee       G d d             Z5 ee       G d d             Z6 ee       G d d             Z7 eee       G d  d!             Z8 G d" d#      Z9 G d$ d%      Z:d& Z;ejx                  fd'Z=d( Z>d,d)Z?d,d*Z@d,d+ZAy)-    )xp_assert_equalxp_assert_closeassert_almost_equalassert_array_almost_equalmake_xp_test_case)raisesN)mgridpisinpoly1d)interp1dinterp2dlagrangePPolyBPolysplrepsplev
splantidersplintsprootAkima1DInterpolatorNdPPolyBSplinePchipInterpolator)pochgamma)_ppoly)assert_deallocatedIS_PYPY)_run_concurrent_barrier)nquad)binomc                       e Zd Zd Zy)TestInterp2Dc                     t         ddddt        df   \  }}t        |d|z  z         }t        t              5  t        |||       d d d        y # 1 sw Y   y xY w)Nr      y              4@y              5@      ?)r	   r
   r   assert_raisesNotImplementedErrorr   )selfyxzs       c/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/scipy/interpolate/tests/test_interpolate.pytest_interp2dzTestInterp2D.test_interp2d   s\    QqWa3h&'1#a%L./ 	Q1	 	 	s   AAN)__name__
__module____qualname__r/        r.   r$   r$      s    r4   r$   c                   r   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd(dZd(dZd Zd Zd Zd Zd(dZd(dZd Ze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&             @        g      4@r&   
   )r>   r&   )r&   r&   r:   g      >@)r&      r:   )r?   r&   r:      r         Y)nparangex5x10y10reshapex25x2y2arrayx1y1y210y102y225y25y235y325y210_edge_updatedy102_edge_updated
fill_valuer*   s    r.   setup_methodzTestInterp1D.setup_method(   s   ))B-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% r4   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zerolinearslinear	quadraticcubicpreviousnextkindextrapolaterf   rX   r_   )rB      rB   )rB   )rB   rB   r   ri   r&   r?   rf   axisrX   r>   rk   )rB   rB   rB   r3   r<   )r   rG   rH   rD   rM   rP   rK   onesr(   
ValueErrorrJ   rL   rQ   rN   rO   r*   rf   s     r.   test_validationzTestInterp1D.test_validationQ   s   
? 	N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	9r4   c                 @   t        | j                  | j                        j                  sJ t        | j                  | j                  d      j                  rJ t        | j                  | j                        j                  sJ t        | j                  | j                  d      j                  rJ t        j                  t        | j                  | j                        j                        sJ t        | j                  | j                  d      j                  dk(  sJ t        | j                  | j                  d      j                  dk(  sJ t        | j                  | j                        j                  dk(  sJ t        | j                  | j                        j                  dk(  sJ t        | j                  | j                  d	      j                  dk(  sJ t        t        | j                  | j                        j                  | j                         t        t        | j                  | j                        j                  | j                         t        t        | j                  | j                        j                  | j                         y )
NF)copy)bounds_error      @rX   )      ?r;   r   ri   rl   )r   rG   rH   rr   rs   rD   isnanrX   rk   rP   rQ   r   r,   r+   rY   s    r.   	test_initzTestInterp1D.test_init   s    $((+0000DHHdhhU;@@@@$((+8888DHHdhhUCPPPPxx4884??@@@$((s;FF#MMM488
CNN 	
  $((+00A555$)),11Q666$))!499Q>>>488466A488466A499577Cr4   c                    t        | j                  | j                        }t        | j                  d d d   | j                  d d d         }t         || j                        | j                         t         |d      t	        j
                  d             t         |g d       |g d             t        | j                  d d d   | j                  d d d   d      }t         || j                        | j                         t        | j                  d d d   | j                  d d d   d      }t        t        || j                         t        | j                  | j                        }t        | j                  d d d   | j                  d d d d df         }t         || j                         || j                               y )NrB   333333?g333333@gffffff@      @F)assume_sortedT)	r   rG   rH   r   rD   rM   r(   rn   rP   )r*   interp10interp10_unsortedinterp10_assume_kwinterp10_assume_kw2interp10_y_2dinterp10_y_2d_unsorteds          r.   test_assume_sortedzTestInterp1D.test_assume_sorted   sd   DHHdhh/$TXXdd^TXXdd^D!"3DHH"=txxH!"3C"8"((3-H!"3O"D"*?";	= &dhhttndhhttn49;!"4TXX">I&txx"~txx"~59; 	j"5txx@ !4995!)$((4R4.$))AttG:L!M!-"9"8"B	Dr4   c                 4    dD ]  }| j                  |        y )N)r_   r`   )_check_linearro   s     r.   test_linearzTestInterp1D.test_linear   s    ) 	%Dt$	%r4   c                 >   t        | j                  | j                  |      }t         || j                        | j                         t         |d      t	        j
                  d             t         |g d      t	        j
                  g d             t        | j                  | j                  |d      }t         |g d      t	        j                  g d      d       t        |dd	
      }t        t        t         | j                  | j                  fi | y )Nre   rz   r{   rg   rh         r   	      +=rtolTrf   rX   rs   )r   rG   rH   r   rD   rM   r   asarraydictr(   rn   )r*   rf   r~   extrapolatoroptss        r.   r   zTestInterp1D._check_linear   s    DHHdhhT:!(488"4dhh?!(3-#?!(?";"$((?";	=  $((+8:_5

#345	B ,!%' 	j(DHHdhhG$Gr4   c                    t         j                  t         j                  t         j                  t         j                  fD ]N  }t        j
                  d|      }|} t        ||d      |      }|j                  |k(  sJ t        ||d       P g d}t         j                  dd	g} t        ||      |      }t        ||d       y )
N   dtyper_   re   V瞯<atolr   ri   r&   r   ri   )
rD   float16float32float64
longdoublerE   r   r   r   nan)r*   dtypr,   r+   yps        r.   test_linear_dtypeszTestInterp1D.test_linear_dtypes   s     ZZZZZZ]]$ 	/D 		!4(AA.!QX.q1B88t###B.	/ VVQNXa^AAE*r4   c                    t         j                  t         j                  t         j                  g}|t         j                  t         j
                  gz   }g d}|D ]  }t        j                  dd|      }|D ]v  }t        j                  | dz        j                  |      }|D ]G  }|j                  |      }	|D ]/  }
t        |||
d      }t         ||	      |dd| d	| d
|        1 I x  y )N)r`   r^   ra   rb   r   r>   r   rt   Frf   rs   Hz>z,  )r   check_dtypeerr_msg)rD   r   r   r   	complex64
complex128rE   expastyper   r   )r*   dt_rdt_rcspline_kindsdtxr,   dtyr+   dtnxnewrf   fs               r.   test_slinear_dtypesz TestInterp1D.test_slinear_dtypes   s     

BJJ

3bmm44@ 
	GC		!Rs+A GFFA2c6N))#. GC88C=D , G$Q5I'$4936%r#au0EGGGG
	Gr4   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 )Nrb   re   rz         ?r{   r   rG   rH   r   rD   rM   r*   r~   s     r.   
test_cubiczTestInterp1D.test_cubic   sv    DHHdhhW=!(488"4dhh?!(3-#?!(3-#?!(?";"$((?";	>r4   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\   re   rz   rv   r   r{   r;   r|   r|   rg   rh   r   r<   r   r   r   r   r   Tr   
r   rG   rH   r   rD   rM   r   r   r(   rn   r*   r~   r   r   s       r.   test_nearestzTestInterp1D.test_nearest	  s     DHHdhhY?!(488"4dhh?!(3-">!(3-">!(?";"$((<"8	;  $((+8:_5&U	4 ,!%' 	j(DHHdhhG$Gr4   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]   re   rz   rv   r   r;   r{   r   rg   rh   r   r   r   r   Tr   r   r   s       r.   test_nearest_upzTestInterp1D.test_nearest_up  s     DHHdhh\B!(488"4dhh?!(3-">!(3-">!(?";"$((<"8	;  $((+8:_5&U	4 ,!%' 	j(DHHdhhG$Gr4   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 )%Nrc   re   rz   rv   r   r{   r;   r8   r|   rg   rh   r   r   r   r   r   rB   r:   r         r:   r            rj   r   r:   r   r>   r   Tr   r   r   ri   rB   rf   rX   r}   r   rB   r   ri   r&   r?   r:   ri   rB   r&   r   ri   rB   r   ri   FrA   r   rG   rH   r   rD   rM   r   r   rP   rQ   r   r(   rn   rV   rW   r*   r~   r   interpolator1Dinterpolator2Dinterpolator2DAxis0r   s          r.   test_previouszTestInterp1D.test_previous3  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%	&r4   c           
         t        | j                  | j                  d      }t         || j                        | j                         t         |d      t	        j
                  d             t         |d      t	        j
                  d             t         |g d      t	        j
                  g d             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 )$Nrd   re   rz   r;   r   r{   )rt   r|   r|   rg   rh   r   r   r   r   r   r   r:   r   r>   r   r   rj   r   ri   r   Tr   r   r   r   r   rB   r   r   Fr@   r   r   s          r.   	test_nextzTestInterp1D.test_nextx  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&&"&&)+	,r4   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^   re   rz   rv   r   r{   r   r   r   s     r.   	test_zerozTestInterp1D.test_zero  sv    DHHdhhV<!(488"4dhh?!(3-">!(3-">!(?";"$((<"8	:r4   c                     t        t        ||       	  ||       y # t        $ r}| t        |      v sJ Y d }~y d }~ww xY wN)r(   rn   str)r*   interpolant
test_array
fail_valueerrs        r.   bounds_check_helperz TestInterp1D.bounds_check_helper  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                        d       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)rX   rs   rf   gffffff&@g333333g333333)@gL3@)check_shape)r   r<   r8         "@      &@)TFFFF)FFFFTT)rs   rf   r   r   )r<   r   r<   )r<   rv         5@r   )r<   r8   r   )	r   rG   rH   rX   r   rD   rM   _check_boundsr   )r*   rf   extrap10raises_bounds_errors       r.   _bounds_checkzTestInterp1D._bounds_check  sD   DHHdhh4??).T; 	(AB(ABD6D6D6D6"B!CD88DOO4%	I..!xx(CDF88%G%G%I J	K
 'txx,02 	  !4dDA  !4dDA  !46FM  !46FMO,r4   c                    t        j                  d      j                  t              }t        j                  d      j                  t              }t	        |||t         j
                  d      } ||dz
        }t        j                  |d         sJ t        |t         j                  t         j
                  |d d f          y )Nr>   Fr   ri   r   rB   )	rD   rE   r   intr   r   rw   r   r_)r*   rf   r,   r+   cyis         r.   _bounds_check_int_nan_fillz'TestInterp1D._bounds_check_int_nan_fill  s    IIbM  %IIbM  %QeLq1uXxx1!"beeBFFAcrFN&;<r4   c                 V    dD ]$  }| j                  |       | j                  |       & y )N)r_   rb   r\   rc   rd   r`   r^   ra   )r   r   ro   s     r.   test_boundszTestInterp1D.test_bounds  s/    5 	2Dt$++D1	2r4   c                    t        | j                  | j                  |dd      }t         |d      t	        j
                  d             t         |d      t	        j
                  d             t         |ddg      dd	g       | j                  | j                  | j                  | j                  fD ]S  }t        | j                  ||d
d	d      }t         |d      t	        j
                  d             t         |d      t	        j
                  d             t         |ddg      t	        j
                  d             t        | j                  ||d
dd      }t         |d      t	        j
                  d             t         |d      t	        j
                  d             |j                  dk(  r'dd	gg|j                  d   z  g|j                  d   z  }ndd	gg|j                  d   z  }t         |ddg      |       V 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      t	        j
                  d             t         |d      g dgdz         t         |ddg      dd	gdd	gdd	gggdz         t	        j                  ddg      d	f}t        t        t         | j                  | j                  |d
|d       | j                  | j                  | j                  fD ]  }t        | j                  ||d
|d      }t         |d      t	        j
                  d	             ddg}|j                  dk(  r|g|j                  d   z  }t         |d      |       dd	gdd	gg}|j                  dk(  r|g|j                  d   z  }t         |ddg      |        g dg df}| j                  | j                  fD ]'  }t        t        t         | j                  ||d
|d       ) t!        d      D ]  }|dk(  rt#        d |D              }t        | j                  | j                  |d
|d      }t         |d      g dgdz         t         |d      g dgdz         t         |ddg      dd	gddgddgggdz          ddgd	dgf}t        t        t         | j                  | j                  |d
|d       | j                  | j                  | j                  fD ]  }t        | j                  ||d
|d      }d	dg}|j                  dk(  r|g|j                  d   z  }t         |d      |       ddg}|j                  dk(  r|g|j                  d   z  }t         |d      |       dd	gddgg}|j                  dk(  r|g|j                  d   z  }t         |ddg      |        d	dgddgg}| j                  | j                  | j                  fD ]'  }t        t        t         | j                  ||d
|d       ) t!        d      D ]  }|dk(  rt	        j                  |      }t        | j                  | j                  |d
|d      }t         |d      d	dgddgg       t         |d      d	dgddgg       t         |ddg      d	d	gddggddgddggg        ddgddggd	dgddggf}| j                  | j                  | j                  fD ]'  }t        t        t         | j                  ||d
|d       ) t!        d      D ]  }|dk(  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>   g      Y@rC   r   r   rB   )rf   rk   rX   rs   r?   ri   r   )r      ,  r&   r   r   )r   8r   r   c              3   F   K   | ]  }t        j                  |        y wr   )rD   rM   ).0r   s     r.   	<genexpr>z1TestInterp1D._check_fill_value.<locals>.<genexpr>V  s     "C1288A;"Cs   !i  i  ii0)r   rG   rH   r   rD   r   rT   rU   rR   rS   rF   ndimshaper(   rn   rM   rangetuple)r*   rf   interpr+   resultrX   iis          r.   _check_fill_valuezTestInterp1D._check_fill_value  s	   $((DHH4%0uF!&*bjj.>?!&+rzz%/@A!&#r"3dC[A ))TYY		488< 	AAdggqt"),5BF%fRj"**T2BC%fSk2::d3CD%fc2Y&7D9IJ dggqt")45JF%fRj"**T2BC%fSk2::e3DE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!&*bjj.>?!&+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"**S/B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r4   c                 4    dD ]  }| j                  |        y N)r_   r\   rb   r`   ra   r^   rc   rd   )r	  ro   s     r.   test_fill_valuezTestInterp1D.test_fill_value  s!    1 	)D""4(	)r4   c                     t        | j                  | j                  d      }|j                  dk(  sJ d|_        |j                  dk(  sJ y )Ng     ^@ru   g     t@)r   rG   rH   rX   )r*   r  s     r.   test_fill_value_writeablez&TestInterp1D.test_fill_value_writeable  sH    $((DHH?  E)))!  E)))r4   c           	      j   t        | j                  | j                  |      }t         |t	        j
                  ddgddgg            t	        j
                  ddgddgg             t         |d      t        j                        sJ  |d      j                  dk(  sJ t        | j                  | j                  |      }t         |d      t	        j
                  dd	g             t         |t	        j
                  ddg            t	        j
                  ddgd	d
gg             t        | j                  | j                  d|      }t         |d      t	        j
                  ddg             t         |t	        j
                  ddg            t	        j
                  ddgddgg             t	        j
                  ddgddgg      }t         ||      t	        j
                  ddgddggddgd
dggg             t         ||      t	        j
                  ddgdd	ggddgddggg             y )Nre   rt   r8   r;         @rz   r3   rv   r         (@r   rk   rf   r|   g      *@g      .@g      1@r9         @g      ,@)r   rG   rH   r   rD   rM   
isinstancendarrayr  rP   rQ   )r*   rf   r~   	interp210	interp102x_news         r.   _nd_check_interpzTestInterp1D._nd_check_interp  s    DHHdhhT:!(288b"XBx4H+I"J"$((RHr2h+?"@	B (3-444}""b((( 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r4   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     ||      j                  t        |	      k(  rJ |        y )N)   r:         r  r   r  )r&   r?   ri   r  ri   )
rD   rE   prodrI   	enumerater   r   listr  r  )
r*   rf   ar+   nsr,   r-   rK   bs
             r.   _nd_check_shapezTestInterp1D._nd_check_shape  s    )BIIbggaj!))1-aL 	1DAq		!AAAD1A%adAt<5!))'2S8BQA Aa!HR5;;%(*0D0*	1r4   c                 V    dD ]$  }| j                  |       | j                  |       & y )N)r_   rb   r`   ra   r\   r^   rc   rd   )r  r&  ro   s     r.   test_ndzTestInterp1D.test_nd  s/    1 	'D!!$'  &	'r4   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)
ri         @r?   g@r  g@g@g       @g      #@r>         ?       @re   rB   ri   r>      )rD   rM   r   r   r   linspacerealimag)	r*   r   rf   r,   r+   r   xicrcis	            r.   _check_complexzTestInterp1D._check_complex  s    HH@AfHHUO Q%!!CR&!A$s)4 [[B#ad+ad+!!B%**bf5!!B%**bf5r4   c                     dD ]B  }| j                  t        j                  |       | j                  t        j                  |       D y r  )r3  rD   r   r   ro   s     r.   test_complexzTestInterp1D.test_complex  s;    1 	5Dd3t4	5r4   zTest not meaningful on PyPy)reasonc                     t        j                  dd      }t        j                  dd      }t        t        ||      5 } |ddg       ~d d d        y # 1 sw Y   y xY w)Nr   ri   皙?皙?)rD   r-  r   r   )r*   r,   r+   r  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\   rc   rd   )r   2      r   re   )rD   rM   int8r   r   )r*   rf   r,   r  s       r.   test_overflow_nearestz"TestInterp1D.test_overflow_nearest  sA    3 	0DRWW5A!QT*B%beQ/	0r4   c                 "   t        j                  d      j                  t              }|j	                         }t         j
                  |d<   dD ]?  }t        |||      } |ddg      }t        j                  |      j                         r?J  y )Nr>   r  )r^   r`   re   g@r  )	rD   rE   r   floatrr   r   r   isfiniteall)r*   r,   r+   rf   irvalss         r.   test_local_nanszTestInterp1D.test_local_nans  sy     IIbM  'FFHvv!' 	+D!QT*BsCj>D;;t$((***	+r4   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 ]g  }t        j                  |      } ||       ||      }	}t        j                  |	      j                         sJ |j                  |	j                  k(  rgJ   y )Nr   r?   )ra   rb   re   r  ri   r:   )rD   rE   r   rA  rr   r   r   r   rw   rC  r  )
r*   r,   r+   ynrf   rD  irnr   outoutns
             r.   test_spline_nanszTestInterp1D.test_spline_nans	  s     IIaL&FFHVVX1* 	/D!QT*B1bt,CQFaVaV$45 /zz$'qE3q6Txx~))+++yyDJJ...	/	/r4   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>   rb   re   )rD   rm   r   rE   r(   rn   r   )r*   r,   r+   s      r.   test_all_nanszTestInterp1D.test_all_nans  sN    GGBK"&& IIbM:& 	)Q(	) 	) 	)   A##A,c                 f   t        j                  dd      }t        j                  | dz        }t        j                  ddd      }dD ]f  }||j                  _        d|j                  _        dD ]=  }t        |||	      } ||      }t        j                  |      j                         r=J  h y )
Nr   r>   rt   r   r8  TFF)r_   r\   r^   r`   ra   rb   re   )rD   rE   r   flags	writeabler   rB  rC  )r*   r,   r+   r   xnew_writeablerf   r   rE  s           r.   test_read_onlyzTestInterp1D.test_read_only"  s    IIaFFA28yyAs#+ 	/N#1DJJ  %AGG" /Q-w{{4(,,...	/	/r4   rf   )r_   r\   r]   rc   rd   c                     t        dgdg|dd      }t         |g d      t        j                  g d             t        dgdg|d	      }t	        t
        d
      5   |d       d d d        y # 1 sw Y   y xY w)Nr   r  Fr=   )rf   rs   rX   )ri   r   r&   )r;   r  r>   Tr   zx_new is abovematchr;   )r   r   rD   r   r(   rn   )r*   rf   r   s      r.   test_single_valuezTestInterp1D.test_single_value0  so    
 cUQCd ')+

<(@AcUQCd>:-=> 	cF	 	 	s   	A00A9N)r_   )+r0   r1   r2   rZ   rp   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	  r  r  r  r&  r(  rD   r   r3  r5  pytestmarkskipifr   r:  r?  rF  rL  rN  rU  parametrizerY  r3   r4   r.   r6   r6   &   s   '!RB9HD&D4%H&+*G$>H*H*C&JC,J:1-0=2_LB)*F@1' $&==x 6 5 [[(EF G0	+/$)/ [[Gr4   r6   c                       e Zd Zd Zy)TestLagrangec                     t        g d      }t        j                  t        |j                              } ||      }t        ||      }t        |j                  |j                         y )N)r:   r&   ri   r  r?   )r   rD   rE   lencoeffsr   r   )r*   pxsyspls        r.   test_lagrangezTestLagrange.test_lagrange@  sH    ;YYs188}%rUb_!!((2995r4   N)r0   r1   r2   rg  r3   r4   r.   r_  r_  >  s    6r4   r_  c                   T    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y)TestAkima1DInterpolatorc                 6   |j                  dd|j                        }|j                  g d|j                        }t        ||      }|j                  g d|j                        }|j                  g d|j                        }t	         ||      |       y )Nr<   r   r   r<   r;   rv   rt   r;   r|         @rl  g@ffffff@rt   r<   r'   rv   r   r*        @g      @rm  g      @g@g333333!@g#@r9   r<   g      ?r;   r   g     @?g     @g.袋@g^@gn @gGNB@grcߖ@g	I@rt   rE   r   r   r   r   r*   xpr,   r+   akr0  r   s          r.   	test_evalz!TestAkima1DInterpolator.test_evalJ  s    IIb#RZZI0JJ<BJJ  
 !A&ZZ "$**  .ZZ  zz	  #
 	2#r4   c                 :   |j                  dd|j                        }|j                  g d|j                        }t        ||d      }|j                  g d|j                        }|j                  g d|j                        }t	         ||      |       y )	Nr<   r   r   rk  makimamethodrn  )r<   gF??r;   g?g?gg{'@g>J(j@g?@gq@g@g9~@go
@rt   rq  rr  s          r.   test_eval_modz%TestAkima1DInterpolator.test_eval_modY  s     IIb#RZZI0JJ<BJJ  
 !Ah7ZZ &-/ZZ  9ZZ 5 =?JJ  H 	2#r4   c                    |j                  dd|j                        }|j                  g d|j                        }|j                  |d|z  fd      }t	        ||      }|j                  g d|j                        }|j                  g d	|j                        }|j                  |d|z  fd      }t         ||      |       y )
Nr<   r   r   rk  r;   ri   rl   rn  rp  )rE   r   r   stackr   r   rr  s          r.   test_eval_2dz$TestAkima1DInterpolator.test_eval_2dl  s    IIb#RZZI0JJ<BJJ  
 HHaa[qH) A&ZZ &-/ZZ  9ZZ 8 @Bzz  K XXr27m!X,2#r4   c                    t        j                  dd      }t        j                  g d      }t        j                  d      }||d d ddf<   d|z  |d d ddf<   d|z  |d d ddf<   d	|z  |d d ddf<   t	        ||      }t        j                  g d
      }t        j                  d      }t        j                  g d      }||d d ddf<   d|z  |d d ddf<   d|z  |d d ddf<   d	|z  |d d ddf<   t         ||      |       y )Nr<   r   rk  )r   r&   r&   r   r;   ri   rt   r  rn  )   r&   r&   rp  )rD   rE   rM   emptyr   r   )r*   r,   y_r+   rt  r0  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#r4   c                     |j                  ddg|j                        }|j                  ddg      }t        ||dd       }t         |d      |j                  d|j                               y )	Nr<   rv   r   r'   r   )rk   rg   g?g333333?)r   r   r   r   )r*   rs  r,   r+   akimas        r.   $test_linear_interpolant_edge_case_1dz<TestAkima1DInterpolator.test_linear_interpolant_edge_case_1d  s]    JJSzJ4JJSz"#AqqdCdRZZRZZZ%HIr4   c                 z   |j                  ddg      }|j                  |d|z  d|z  d|z  fd      }t        ||      }|j                  ddg      }|j                  g d	g d
g|j                        }t	         ||      |       t        ||j
                  d      }t	         ||      |j
                         y )Nr<   rv   r;   rt   r  ri   rl   r'   )r'   rv   r   r;   )rv   r;   rt   r  r   )r   r|  r   r   r   Trr  s          r.   $test_linear_interpolant_edge_case_2dz<TestAkima1DInterpolator.test_linear_interpolant_edge_case_2d  s    JJBx HHaaaa0qH9 A&ZZb	"ZZ+)+24**  
 	2# ACCa02%r4   c                    t        j                  dd      }t        j                  ddg      }t        j                  d      }||d d ddf<   d|z  |d d ddf<   d|z  |d d ddf<   d|z  |d d ddf<   t	        ||      }t        j                  d	dg      }t        j                  d      }||d d ddf<   d|z  |d d ddf<   d|z  |d d ddf<   d|z  |d d ddf<   |}t         ||      |       t	        ||j                  ddd
      d      }t         ||      |j                  ddd
             t	        ||j                  d
dd      d
      }t         ||      |j                  d
dd             y )Nr<   r;   rv   )r&   r&   r&   r   ri   rt   r  r'   r&   rl   )rD   rE   rM   r  r   r   	transpose)r*   r,   r  r+   rt  r  r   r0  s           r.   $test_linear_interpolant_edge_case_3dz<TestAkima1DInterpolator.test_linear_interpolant_edge_case_3d  sm   IIb"XXr2hHHY!Q'
"W!Q'
"W!Q'
"W!Q'
 A&hhRy!XXi 1a73h1a73h1a73h1a72# AKK1a$8qA2Q1 56 AKK1a$8qA2Q1 56r4   c                 <   |j                  g d|j                        }|j                  ||dz  f      j                  }t	        ||      }|j                  ddg|j                        } ||      }t        ||j                  ||dz  f      j                         y )Nr   r   r&   r'   r   )r   r   r|  r  r   r   )r*   rs  r,   r+   rt  x_evaly_evals          r.   %test_degenerate_case_multidimensionalz=TestAkima1DInterpolator.test_degenerate_case_multidimensional  s    JJy

J3HHaAY!! A&S#Jbjj9F&&!))< = ? ?@r4   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   rk  z9Extending a 1-D Akima interpolator is not yet implementedrW  )rD   rE   rM   r   rZ  r   r)   extend)r*   r,   r+   rt  rX  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   rk  z `method`=invalid is unsupported.rW  invalidrx  )rD   rE   rM   rZ  r   r)   r   )r*   r,   r+   rX  s       r.   test_mod_invalid_methodz/TestAkima1DInterpolator.test_mod_invalid_method  sV    IIb#HHEF2]].e< 	81Y7	8 	8 	8rO  c                 8   t        j                  ddd      }|dz  }t        j                  ddd      }|dz  }t        ||d	      }t        ||d
	      }t        ||d 	      }t         ||       ||      d       t	         ||      dd t        j
                  dt         j                               t	         ||      dd t        j
                  dt         j                               t         ||d	       ||      d       t        | ||      d       y )Nr:   r   r&   r   r>      Trg   Fr   r   r   r  rB   r?   )rD   r-  r   r   r   fullr   )r*   r,   r+   x_exty_extak_trueak_falseak_nones           r.   test_extrapolate_attrz-TestAkima1DInterpolator.test_extrapolate_attr  s    KKAr"qDCR(q%a=&q!?%a=eD!,bgga.@A2.2660BCD975>PUVwu~E:r4   c                    t        j                  dd      }dt        j                  t        j                  t              j
                        z  t        j                  |dz
  d      z  }t        ||d      }t        ||d      } ||      } ||      }t        j                  |      j                         sJ t        j                  |      j                         sJ y )	Nri   r>   g    .Ar  r'   rw  rx  r  )
rD   rE   sqrtfinforA  max	heavisider   rB  rC  )r*   r,   r+   ak1ak2y_eval1y_eval2s          r.   test_no_overflowz(TestAkima1DInterpolator.test_no_overflow  s    IIa%,,--bll1Q3.DD!!Qx8!!Qw7a&a&{{7#''))){{7#'')))r4   N)r0   r1   r2   ru  rz  r}  r  r  r  r  r  r  r  r  r  r3   r4   r.   ri  ri  H  s@    $$&$&$2J&70A"8;(*r4   ri  ry  c                     t        j                  dd      }t        j                  g d      }|d|z  z
  }d}t        j                  t
        |      5   | ||       d d d        d }y # 1 sw Y   d }y xY w)Nr<   r   rk  y               @zreal valuesrW  c                     t        j                  ddd      }|dz  }t        j                  ddd      }t        ||d	      }d
 }t        d|||       y )Nr  r:   r   r&   r   r>   r  Tr  c                      ||       y r   r3   )_rt  r  s      r.   	worker_fnz9test_complex.<locals>.test_concurrency.<locals>.worker_fn  s	    uIr4   )rD   r-  r   r    )r*   r,   r+   r  rt  r  s         r.   test_concurrencyz&test_complex.<locals>.test_concurrency	  sR    KKAr"qDCR( A48	 	 Ir59r4   )rD   rE   rM   rZ  r   rn   )ry  r,   r+   msgr  s        r.   r5  r5    sf     			"cA
ABA	BqDA
C	z	- q!
:
:s   
A))A5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
)TestPPolyCommonc                     |j                  ddgddgddgg      }|j                  g d      }t        t        t        ||       t        t        t        ||       y )Nri   r  r&   r:   r?   r  )r   ri   r'   )r   r(   rn   r   r   )r*   rs  r   r,   s       r.   test_sort_checkzTestPPolyCommon.test_sort_check  sM    JJAAA/0JJ{#j%A.j%A.r4   c                 l    t        t              5  t        ddgddg       d d d        y # 1 sw Y   y xY w)Nri   r&   r   )r(   rn   r   rY   s    r.   test_ctor_czTestPPolyCommon.test_ctor_c  s1    :& 	"1a&1a&!	" 	" 	"s   *3c                    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
  }|j                  |      |j                  |      }}t        t        fD ]  } ||d d d dd	f   |d d       }|j                  |d d dd d	f   |dd          ||d d dd d	f   |dd        }|j                  |d d d dd	f   |d d         |||      }t        |j                  |j                         t        |j                  |j                         t        |j                  |j                         t        |j                  |j                          y )
N  r?   r   r>   r@   r&   ri   r   .)rD   randomseeduniquer   randra  r   r   r   r  r   r   r,   )	r*   rs  orderr,   r   clspppp2pp3s	            r.   r  zTestPPolyCommon.test_extend$  st   
		tIIbeeArBIINN2$66:;<biinnU1Wc!fQh1559zz!}bjjm15> 	*CQq"1"cz]AcrF+BIIa12s
mQrsV,a23naf-CJJqCRC~q"v.a)CBDD#%%(BDD#%%(CEE355)CEE355)	*r4   c                 |   t         j                  j                  d       |j                  ddd      }|j	                  t         j                  j                  dd            }|j                  ddd      }|j	                  t         j                  j                  dd            }t        t        fD ]  } |||      } |||      } |||      }	|	j                  ||dd         |j                  dddd	
      }
|j                  ddd      }t         ||
       |	|
             t         ||       |	|              y )Nr  r   ri   r  r&   r:   r  r   F)endpoint)
rD   r  r  r-  r   r  r   r   r  r   )r*   rs  r,   r   rK   c2r  pp1r  pp_combxi1xi2s               r.   test_extend_diff_ordersz'TestPPolyCommon.test_extend_diff_orders<  s   
		tKK1a JJryy~~a+,[[Aq!ZZ		q!,-5> 	4Ca)Cb"+C!QiGNN2r!"v& ++aC%+8C++aC(CCHgcl3CHgcl3	4r4   c                 d   t         j                  j                  d       d}t        j                  t         j                  j	                  ddd            }t         j                  j                  |dz   |j                  d   dz
  dd      }|j                  |      |j                  |      }}t        t        fD ]  } |||      } ||d d d ddf   |d d       }|j                  |d d dd df   |dd          ||d d dd df   |dd        }|j                  |d d d ddf   |d d        t        |j                  |j                         t        |j                  |j                         t        |j                  |j                         t        |j                  |j                          y )	Nr   r?   r>      ri   r&   r   .)rD   r  r  sortuniformr  r  r   r   r   r  r   r   r,   )	r*   rs  r  r,   r   r  rc  p1p2s	            r.   test_extend_descendingz&TestPPolyCommon.test_extend_descendingU  s_   
		qGGBII%%aR01IINN519aggaj1na;zz!}bjjm15> 	'CAq	AQq"1"cz]AcrF+BIIa12s
mQrsV,Qq"#s{^QrsV,BIIa3B3naf-BDD!##&BDD!##&BDD!##&BDD!##&	'r4   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 ]"  } |||      } ||      j                  d
k(  r"J  t
        t        fD ]  } ||d   |      }t        j                   |d            dk(  sJ t        j                   |t        j                  d                  dk(  sJ t        t        |t        j                  ddgdggt                      y )Nr  r   r   r:   r  r  r  r?   r  )r?   r  r:   r  r  ).r   r   r   r'   r3   r8  r9  皙?r   )rD   r  r  r  r  r   r   r  rM   r(   rn   object)r*   r   r,   rs  r  rc  s         r.   
test_shapezTestPPolyCommon.test_shapel  s   
		tIINN1b!Q*GGBIINN2&'YY^^Aq!5> 	2CAq	AR5;;/111	2
 5> 	VCAlOQ'A88AcF#r)))88Abhhsm,-333*aC:u2EV)TU	Vr4   c                 ~   t         j                  j                  ddddd      }t        j                  t         j                  j                  d            }t         j                  j                  dd      }t	        |j
                  |||f      \  }}}t        t        fD ]  } |||      }d	 }t        d
|||        y )Nr   r   r:   r  r  r  r?   r  c                      ||       y r   r3   )r  r  xpps      r.   r  z3TestPPolyCommon.test_concurrency.<locals>.worker_fn  s	    sr4   r>   )	rD   r  r  r  mapr   r   r   r    )r*   rs  r   r,   r  r  r  r  s           r.   r  z TestPPolyCommon.test_concurrency~  s    IINN1b!Q*GGBIINN2&'iinnQ"

Q3K0	1c5> 	@CAYF $B	63?	@r4   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?r:   r   )	rD   r  r  r  r.  r/  r   r   r   )r*   r,   r   c_rec_imrs  r  rc  p_rep_imnus              r.   test_complex_coefz!TestPPolyCommon.test_complex_coef  s    
		uGGBII$$R()IIW%3VVQVVdYYa 5> 	>C1Is4|Sq\TtA >"b	R="b	R=>	>r4   c                 T   t         j                  j                  d       t         j                  j                  dddddd      }|j                  }t         j                  j                  d      }|j                  |      |j                  |      }}d	D ]]  }|j                  |d
z      }|j                  t        j                  t         j                  j                  |d
z                     }t        t        fD ]  } ||||      }	|	j                  j                  |||dz    |d | z   ||dz   d  z   k(  sJ  |	|      }
|d | |j                  z   |d|z   d  z   }|
j                  |k(  sJ  ||||      j                          ||||      j                  d       ||||      j                          ||||      j                  d      fD ]  }|j                  |	j                  k(  rJ   ` dD ]0  }t        t        fD ]  }t        t        |fi t        ||       ! 2 y )Nr  r?   r  r:   r  r  r   )ri   r&   r   ri   r&   r?   ri   rl   r&   )rB   r  r:   r  )r   r,   rk   )rD   r  r  r  r  r   r  r   r   r   
derivativeantiderivativerk   r(   rn   r   )r*   rs  r   c_sr  rk   mr,   r  rc  res
targ_shaper  s                r.   	test_axiszTestPPolyCommon.test_axis  s
   
		uIINN1aAq!,ggiiv&A

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

277299>>!A##678Au~ -14(ssyyCT!V$4s5Dz$ACQL$PPPPf $Z#))3c!D&'lB
yyJ... q!$/::<q!$/::1=q!$/>>@q!$/>>qAC -B 77aff,,,	--	-& " 	LDu~ Lj#KQT1JKL	Lr4   N)r0   r1   r2   r  r  r  r  r  r  r  r  r  r3   r4   r.   r  r    s2    /"
*042'.V$@ 
>Lr4   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r0   r1   r2   r3   r4   r.   Pr        r4   r  c                       e Zd Zy)TestPolySubclassing.BNr  r3   r4   r.   Br    r  r4   r  c                 *   t         j                  j                  d       t        j                  t         j                  j                  d            }t         j                  j                  d      }| j	                  ||      | j                  ||      fS )Nr  r?   )r  r&   )rD   r  r  r  r  r  )r*   r,   r   s      r.   _make_polynomialsz%TestPolySubclassing._make_polynomials  sb    
		tGGBII$$Q'(IIV$vva|TVVAq\))r4   c                     | j                         \  }}||fD ]-  }|j                         }|j                  |j                  k(  r-J  |j                         }|j                  |j                  k(  sJ y r   )r  r  	__class__r  )r*   r  bprc  pdppas         r.   test_derivativez#TestPolySubclassing.test_derivative  sn    '')Bb 	/AB;;",,...	/ !||s}},,,r4   c                    t         j                  j                  d       t        j                  t         j                  dt         j                  j                  d      df         }t         j                  j                  t        |            }t        ||d      }| j                  j                  |      }|j                  | j                  k(  sJ y Nr  r   r   ri   r$  )rD   r  r  r  r   r  ra  r   r  from_spliner  )r*   r,   r+   splr  s        r.   test_from_splinez$TestPolySubclassing.test_from_spline  s    
		tGGBEE!RYY^^B/234IINN3q6"QQVV$||tvv%%%r4   c                    | j                         \  }}| j                  j                  |      }|j                  | j                  k(  sJ | j                  j                  |      }|j                  | j                  k(  sJ y r   )r  r  from_bernstein_basisr  r  from_power_basis)r*   r  r  r  bp1s        r.   test_conversionsz$TestPolySubclassing.test_conversions  sh    '')Bff))"-}}&&&ff%%b)}}&&&r4   c                     g d}dgdgdgg}| j                   j                  ||      }|j                  | j                   k(  sJ y )Nr   ri   r&   r?   )r  from_derivativesr  )r*   r,   r+   r  s       r.   test_from_derivativesz)TestPolySubclassing.test_from_derivatives  sD    S1#sOVV$$Q*||tvv%%%r4   N)r0   r1   r2   r   r  r   r  r  r  r  r	  r  r3   r4   r.   r  r    s3    E E *-&'&r4   r  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)	TestPPolyc                 *   |j                  ddgddgddgg      }|j                  g d      }t        ||      }t         |d      |j                  d	|j                  
             t         |d      |j                  d|j                  
             y )Nri   r  r&   r:   r?   r  r   r'   ri   333333?Q@r   ffffff?p=
ף@r   r   r   r   r*   rs  r   r,   rc  s        r.   test_simplezTestPPoly.test_simple  s    JJAAA/0JJ{#!QK#

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

#=RZZ
P	RdGJJAJT	

 	#q	2::k:#LM$
BJJ/B"**J$UVr4   c                 |   t        j                  ddgddgddgg      }t        j                  g d      }t        j                  g d      }t        ||d	
       dD ]]  }||j                  _        ||j                  _        t        ||      } ||      }t        j
                  |      j                         r]J  y )Nri   r  r&   r:   r?   r  r  )r   r8  r9  r  r  rQ  )rD   rM   r   rR  rS  rB  rC  )r*   r   r,   r   rS  r   rE  s          r.   rU  zTestPPoly.test_read_only  s    HHq!fq!fq!f-.HH[!xx&a
+& 	+I )AGG )AGGaAT7D;;t$((***	+r4   c           	         d }t         j                  j                  d      }d}dD ]?  }t        j                  |j	                  dd|dz               }|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      }|j	                  ddd      }t         ||       ||      d       t         ||d       ||d      d       |j                         }|j                         }t         ||       ||      d       |j                         }|j                         }|j	                  ddd      D ]c  \  }}|j                  ||      }|j                  ||      }t        ||d       t         ||       ||      z
   ||       ||      z
  d       e |j                         }|j                         }t        |t        j                  |      d       B y )Nc                     t        j                  | dz         j                  dd      }t        j                  | dz         }t        ||      }|d d dd d df   S )Nri   rB   )rD   rE   rI   r"   )powerr#  kr  s       r.   binom_matrixz/TestPPoly.test_descending.<locals>.binom_matrix  sT    		%!)$,,R3A		%!)$AaATrT4R4Z= r4   r   r?   r>   r  r@   r>   ri   r   r&   sizerB   Tr  r   r  r   vIh%<=r   r:   r&   -q=)rD   r  RandomStater  r  diffrE   dotr  r   r   r  r  	integrateroots)r*   r!  rngr  r  r,   cahh_powersr  capcdpcdpar  x_testpa_dpd_dpa_ipd_ir"  r%  int_aint_droots_droots_as                             r.   test_descendingzTestPPoly.test_descending  s0   	! ii##A& %	CAAr1q512AR%!)Q8B
AqzRYYuqy%9$B$*%EEHU#Ax-C&&c"CxBr1$/Br!TrT'{AddG>B[[b#.FBvJ6
?BvqM2fa=uE==?D==?DDL$v,UC
 $$&D$$&DCV4 ,1Q*Q*u59Q$q' 147T!W3D%*,	, hhjGhhjGGRWWW%5EBK%	Cr4   c                    t         j                  j                  ddddd      }t        j                  g d      }t	        ||      }|j
                  j                  |j                  k(  sJ |j                  j                  |j                  k(  sJ  |d      j                  |j                  dd  k(  sJ  |t         j                  j                  dd            j                  d|j                  dd  z   k(  sJ |j                         }|j                  j                  d	k(  sJ |j                         }|j                  j                  d
k(  sJ y )Nr  r&   ri   r?   r  r  r:   r:   r  r:   r&   ri   r&   r?   )r  r&   ri   r&   r?   )
rD   r  r  rM   r   r,   r  r   r  r  )r*   rs  r   r,   rc  dpips          r.   test_multi_shapezTestPPoly.test_multi_shapeA  s   IINN1aAq)HH[!!QKssyyAGG###ssyyAGG###v||qwwqr{***1%&,,0DDDD\\^ttzz_,,,ttzz_,,,r4   c                 x   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
      t        j                  d             t         |d      t        j                  d             y )Nr  ri   r  r&   r:   r?   r  r   r  r  r  r  r  )	rD   r  r  rM   rA  r   construct_fastr   r   r*   r   r,   rc  s       r.   test_construct_fastzTestPPoly.test_construct_fastQ  s    
		tHHq!fq!fq!f-U;HH[!  A&#

+? @A#

+K LMr4   c                    t         j                  j                  d      }|j                  ddd      }t        j                  t         j
                  d|j                  d      df         }t        ||      }t         j
                  d   }t        |||      }t         ||      |       t        |d d d d df   ||      }t         ||      d d df   |       y )	Nr  r?   r      r   r   ri   )r  r'   gQ?333333?)
rD   r  r(  r  r  r   r   _ppoly_eval_1r   _ppoly_eval_2)r*   r-  r   r,   rc  rs  expecteds          r.   #test_vs_alternative_implementationsz-TestPPoly.test_vs_alternative_implementationsY  s    ii##D)HHQBGGBEE!SXXb\1,-.!QKUU&' Ar*"x( 1Qq51b1"adX.r4   c                    t         j                  j                  d      }t        j                  t         j                  d|j                  d      df         }|j                  t        |            }t        ||d      }t        j                  |      }t        j                  ddd      }t         ||      t        ||             t        | }t        j                  |      }t         ||       ||             |\  }	}
}dD ]A  }t        |	|
||      }t        j                  |      }|j                  |j                  k(  rAJ  y )	Nr  r   r   ri   r  r   )NTFr  )rD   r  r(  r  r   r  ra  r   r   r  r-  r   r   r   rg   )r*   r-  r,   r+   r  r  r0  r%  ppptr   r   extraprc  s                 r.   r  zTestPPoly.test_from_splineg  s   ii##D)GGBEE!SXXb\1,-.HHSVQQs#[[As#2b#/ SM"B2' 1a) 	2F1aV4A!!!$A==AMM111	2r4   c                    t         j                  j                  d      }t        j                  t         j                  d|j                  d      df         }|j                  t        |            }t        ||d      \  }}}t        |j                  |      |j                  |      |      }t        j                  |      }	|j                  ddd      }
t         |	|
       ||
             y r   )rD   r  r(  r  r   r  ra  r   r   r   r   r  r-  r   )r*   rs  r-  r,   r+   rR  r   r   r  r  r0  s              r.   test_from_spline_2zTestPPoly.test_from_spline_2~  s    ii##D)GGBEE!SXXb\1,-.HHSVA#1abjjmRZZ]A6s#[[Ar"2B(r4   c                    t         j                  j                  d       |j                  g dg      j                  }|j                  g dg      j                  }|j                  ddgg      j                  }|j                  ddg      }t        ||      }t        ||      }t        ||      }t        |j                         j                  |j                         t        |j                  d      j                  |j                         y )	Nr  )r  r?   r&   ri   )r   r  r&      r  r   ri   r&   )	rD   r  r  r   r  r   r   r  r   )	r*   rs  r   dcddcr,   r  dppddpps	            r.   test_derivative_simplez TestPPoly.test_derivative_simple  s    
		tJJ~&((ZZ(**jj5%.)*,,JJ1v1a[BlS!}))3551a(**DFF3r4   c           	         t         j                  j                  d      }t        j                  t         j                  d|j                  d      df         }|j                  t        |            }t        ||d      }t        j                  |      }t        j                  ddd      }t        dd      D ]   }t         |||      t        |||             " y )Nr  r   r   ri   r  r   r?   )rD   r  r(  r  r   r  ra  r   r   r  r-  r  r   r   r*   r-  r,   r+   r  r  r0  dxs           r.   test_derivative_evalzTestPPoly.test_derivative_eval  s    ii##D)GGBEE!SXXb\1,-.HHSVQQs#[[As#1+ 	<BBr2Jb#r(:;	<r4   c                    t         j                  j                  d      }t        j                  t         j                  d|j                  d      df         }|j                  t        |            }t        ||dd      }t        j                  |      }t        j                  ddd      }t        dd      D ]/  }t         |||       |j                  |      |      d	| 
       1 y )Nr  r   r   ri   r:   r$  r   r   r>   dx=r  )rD   r  r(  r  r   r  ra  r   r   r  r-  r  r   r  r^  s           r.   r  zTestPPoly.test_derivative  s    ii##D)GGBEE!SXXb\1,-.HHSVQQ!$s#[[As#2, 	SBBr2J(9b(9"(=RDzR	Sr4   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 )Nrv   r   ri   )r   r   r  r   r,   )r*   rc  s     r.   test_antiderivative_of_constantz)TestPPoly.test_antiderivative_of_constant  sz    B4&1a&!((*,,eaS1#JA.G.I.IJ((*,,eaS1#JA.G.I.IJr4   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      t        j                  d             t        t        j                   |d       |d      z
        t        j                  d             y )	Nrv   r'   r   ri   r   )r<   ri   r&   r&   r   )	r   r  r   r   r,   r   r+  rD   r   )r*   rc  qs      r.   #test_antiderivative_regression_4355z-TestPPoly.test_antiderivative_regression_4355  s    B9+y)q#hA/0[)Aq)2::c?;

1Q4!A$;/

3	)r4   c                    |j                  g dg dg|j                        j                  }|j                  g dg dg|j                        j                  }|j                  g dg dg|j                        j                  }|j                  g d|j                        }t        ||      }|j	                         }|j	                  d	      }|j	                         }	t        |j                  |       t        |j                  j                  |j                         t        |j                  j                  |j                         t        |	j                  j                  |j                         y )
N)r?   r&   ri   )r   r         ?r   )ri   ri   ri   r   )r   r   rj        ?)      ?gUUUUUU?r'   r   r   )r   r   g      ?rk  g*?)r   rl  ri   r&   )r   r   r  r   r  r   r,   r   )
r*   rs  r   iciicr,   r  ippiippiipp2s
             r.   test_antiderivative_simplez$TestPPoly.test_antiderivative_simple  s    JJ	>2"**JEGG ZZ'?@

ZSUU jj/JL!zz  
 ! 	 JJ|2::J61a[!  #""$q!&#%%(		355)r4   c                    t         j                  j                  d      }t        j                  ddd      dz  }|j	                  t        |            }t        ||dd      }t        j                  |      }t        dd      D ]  }|j                  |      }|j                  |      }t        |j                  |j                         t        |      D ]k  }	|j                  |	      }d	}
|
|j                  d d
 z  d|
z
  |j                  dd  z  z   }t         ||j                  dd         ||      dd| d|	        m  y )Nr  r   ri   r@   r&   r:   rb  r>   r%  rB   r   rc  z k=)r   r   )rD   r  r(  r-  r  ra  r   r   r  r  r  r  r   r   r,   )r*   r-  r,   r+   r  r  r_  ro  r  r   rr  s               r.   !test_antiderivative_vs_derivativez+TestPPoly.test_antiderivative_vs_derivative  s+   ii##D)KK1b!1$HHSVQQ!$s#2, 	B##B'C ..$CBDD#%%( 2Y nnQ'SUU3BZ<1q5#%%)*;;ab	NCMB4sSTRUFV	r4   c                    t         j                  j                  d      }t        j                  t         j                  d|j                  d      df         }|j                  t        |            }t        ||dd      }t        j                  |      }t        dd      D ]T  }|j                  |      }t        ||      }t        j                  ddd      }	t         ||	      t        |	|      d	
       V y )Nr  r   r   ri   r:   rb  r>   r   r   r   )rD   r  r(  r  r   r  ra  r   r   r  r  r  r   r-  r   r   )
r*   r-  r,   r+   r  r  r_  r  spl2r0  s
             r.   test_antiderivative_vs_splinez'TestPPoly.test_antiderivative_vs_spline  s    ii##D)GGBEE!SXXb\1,-.HHSVQQ!$s#2, 	'B##B'Cc2&DQ3'BCGU2t_!%'	'r4   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&   ri   r&   r&   )r&   ri   r?   r?   r  gA?g_p   ?g:0yE>r   )rD   rM   r  r   r  r   r  r   )r*   r   r,   rc  rC  r  s         r.   test_antiderivative_continuityz(TestPPoly.test_antiderivative_continuity  sw    HHlL1244HH[!!QK 	::TB ]]_acc"r4   c                    t         j                  j                  d      }t        j                  t         j                  d|j                  d      df         }|j                  t        |            }t        ||dd      }t        j                  |      }d\  }}|j                  ||      }|j                         }	t        | |	|       |	|      z
  d	       t        |t        |||      d	       d
\  }}|j                  ||d      }t        | |	|       |	|      z
  d	       t        j                  |j                  ||d            j                         sJ y )Nr  r   r   ri   r:   rb  )r  ?Fcheck_0d)r  r|  Tr  )rD   r  r(  r  r   r  ra  r   r   r  r+  r  r   r   rw   rC  )
r*   r-  r,   r+   r  r  r"  r%  igro  s
             r.   test_integratezTestPPoly.test_integrate  s!   ii##D)GGBEE!SXXb\1,-.HHSVQQ!$s#1\\!Q!CFSVOe<F1a->1\\!QD\1CFSVOe<xxQu=>BBDDDr4   c                 *   t        j                  g d      }t        j                  ddgddgddgddgg      }dD ]V  }||j                  _        t	        ||      }|j                  dd	      }t        j                  |      j                         rVJ  y )
Nri   r&   r  r<   r   r;          rv   rQ  ri   r  )rD   rM   rR  rS  r   r+  rB  rC  )r*   r,   r   rS  r  rE  s         r.   test_integrate_readonlyz!TestPPoly.test_integrate_readonly%  s    HHYHHr2hc
RIBx@A& 	+I )AGGaA;;q!$D;;t$((***	+r4   c           	         t        j                  g d      }t        j                  ddgddgddgddgg      }t        ||d      }|j                         }t        j                   |d	       |d
      z
        }t        |j                  d
d	      |       t        |j                  dd      |       t        |j                  dd      t        j                  d|z               t        |j                  dd      t        j                   |d       |d      z
               t        |j                  dd      t        j                   |d       |d
      z
   |d	      z    |d      z
               t        |j                  dd      t        j                   |d       |d
      z
   |d	      z    |d      z
               t        |j                  dd      t        j                   |d       |d
      z
   |d	      z    |d      z
  d	|z  z                t        |j                  dd      t        j                   |d       |d      z
               t        |j                  dd      t        j                   |d       |d      z
               t        |j                  dd      t        j                   |d       |d      z
  d|z  z
               y Nr  r<   r   r;   r  rv   r  r  r  ri   r   ir  r&   r   r*  ro  r:   g      /@r  r   rB   r?   i)rD   rM   r   r  r   r   r+  )r*   r,   r   r  I
period_ints         r.   test_integrate_periodicz!TestPPoly.test_integrate_periodic1  s@   HHYHHr2hc
RIBx@A!QJ/ZZ!qt,
Aq):6C,j9C,bjjZ.HIC-

1S6AcF?3	5C+

1Q4!A$;1#5##>?	AHf5

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

1Q4!A$;1#5##>Z#OP	RAr*

1Q4!A$;/	1B,

1Q4!A$;/	1As+

1Q4!A$;Z#?@	Br4   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   ri   r,  r&   r@   r?   rb  gV瞯Ҽg     ?r   r   )	rD   r-  r   r   r   r  r,  r   r   )r*   r,   r+   r  r  rt  s         r.   
test_rootszTestPPoly.test_rootsM  s|    KK1b!1$FF2a4LQQ!$s#HHJqI~!y.126#;U3r4   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 )	NrB   rl  r   )r   r  rK  rv   r  g333333?r;   ri   )	rD   rM   r  r   r   r,  r   rr   solve)r*   r   r,   r  constc1r  s          r.   test_roots_idzerozTestPPoly.test_roots_idzeroX  s     HHr4j1a&2t*5688HH'(1a[
sBFFJ7	9 VVX
1a4EBl		%(sBFFJ7	9r4   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   ri   r   )r   r   r,  rD   r   r  rG  s       r.   test_roots_all_zerozTestPPoly.test_roots_all_zerok  s    S1#JF!QK	Arvv;/
QK0
B'VaV!QK	Arvvq"&&#9:
Q266$:;
B'r4   c                 R   t        j                  g dg dg      j                  }t        j                  g d      }t        ||      }t	        |j                         t        j                  ddg             t	        |j                  d      t        j                  dg             y )N)ri   r   rB   )rB   r   r   r   g       r<   Fr  )rD   rM   r  r   r   r,  r   r*   r   r,   r  s       r.   test_roots_repeatedzTestPPoly.test_roots_repeated{  ss    
 HHj*-.00HHZ 1a[
BJJc{$;<U3RZZ5FGr4   c                    t        j                  dgdgg      j                  }t        j                  g d      }t        ||      }t	        |j                         t        j                  dg             t	        |j                  d      t        j                  g              t	        |j                  d      t        j                  dg             t	        |j                  dd      t        j                  g              t	        |j                  d      t        j                  g              t	        |j                  dd      t        j                  g              y )Nri   rB   r  r'   F)discontinuityr   )rD   rM   r  r   r   r,  r   r  r  s       r.   test_roots_discontzTestPPoly.test_roots_discont  s    HHqcB4[!##HH[!1a[
BJJu$56u5rzz"~F 	rzz3%'89E:BJJrNKrzz"~6E:BJJrNKr4   c                 (   t         j                  j                  d      }d}dD ]V  }t        dd      D ]C  }t        j                  t         j
                  dd|j                  d      z  df         }d|j                  |dz   t        |      dz
  dd	      z  dz
  }t        ||      }d|j                         fD ]  }|j                  |d
|      }	t        d      D ]  }
t        d	      D ]  }|	|
|f   }|j                  dkD  s||j                  z  } |||      d d |
|f   } ||d|      d d |
|f   }d|dt        |       }t        ||z
  |z  t        j                  d      d|d
          F Y |dkD  sJ t        |             y )Nr  r   rQ  r  r>   r@   r&   ri   r?   F)r  rg   r  )r  rg   (z) r = r<   r   )r   r   r   r   )rD   r  r(  r  r  r   r  ra  r   r  r$  reprr   r   )r*   r-  numrg   r  r,   r   r  r+   rt  ijrrvalcmpvalr  s                   r.   test_roots_randomzTestPPoly.test_roots_random  s   ii##D)( 	PKq" PIIbeeArCHHRL'8"$<=>chhuQwAq!Q77!;1a[SZZ\* PA%[QA"1X P!&q PA!"1Q3B!ww{ #rww&(&Ea!e&L)+B18C*EEFqU*L()+tBxj&I /Q&0@"**S/598;!PPPPP	P0 Sy#$s)#yr4   c           
      4   t         j                  j                  d      }t        dd      D ]]  }|j	                  |dd      }|dk(  r
d|d d ddf<   d|j                         fD ]"  }t        j
                  |j                  t              }t        j                  |||       |dk(  r&t        j                  |      j                         sJ k| }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        |t        j                   |      d       % ` y # 1 sw Y   ZxY w)Nr  ri   r      r?   )ri   r&   ri   r   r   ignore)r  g|=r   )rD   r  r(  r  r  r  r  complexr   _croots_poly1rw   rC  abserrstateravelr   
zeros_like)	r*   r-  r   r   r+   wr  cresr  s	            r.   test_roots_crootszTestPPoly.test_roots_croots  s   ii##D)q" 	EAAs#AAv"!Aa%& EHHQWWG4$$Q1-688A;??,,,bq 8A1QtV9q1Q3q5z11CC!D&	A!AJ 677D8 [[2  4KC iik288C=.)R]]3%7eD#E	E(   s   /FFc                 f   t        j                  g dg      j                  }t        j                  ddg      }dD ]r  }t        |||      }|j	                         }|j                         }|du rt        j                   |ddg            j                         sJ t        j                   |ddg            j                         sJ t        j                   |ddg            j                         sJ |j                         dgk(  rJ t         |ddg      d	d
g       t        j                   |ddg            j                         rJ t        j                   |ddg            j                         rJ t        |j                         t        j                  ddg             u y )Nr   r   ri   TFNr  F皙皙?gGz?gzGʿrv   r   )rD   rM   r  r   r  r  rw   rC  r,  r   anyr   )r*   r   r,   rg   r  pp_dpp_is          r.   r  zTestPPoly.test_extrapolate_attr  sg   HHj\"$$HHaV. 	EKq!5B==?D$$&De#xxD#;044666xxdC[ 1266888xxdC[ 1266888xxzaS(((D#;(H1EF88D$$56::<<<88D$$56::<<<
BJJT{,CD	Er4   N) r0   r1   r2   r  r  rU  r>  rD  rH  rO  r  rU  r\  r`  r  re  rh  rr  ru  rx  rz  r  r  r  r  r  r  r  r  r  r  r  r3   r4   r.   r  r    s    
W+/Cb- N/2.
)4
<
SK)*22' #E*
+B8	49&( 
HL$@E<Er4   r  c                   N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)	TestBPolyc                     |j                  ddg      }|j                  dgg      }t        ||      }t         |d      |j                  d|j                               y )Nr   ri   r?   r8  rt   r   r   r   r   r   r*   rs  r,   r   r  s        r.   r  zTestBPoly.test_simple  sP    JJ1vJJu1a[3Bbjj!ABr4   c                     |j                  ddg      }|j                  dgdgg      }t        ||      }t         |d      |j                  d|j                               y )Nr   ri   r?   r8  ggfffff@r   r  r  s        r.   test_simple2zTestBPoly.test_simple2  sT    JJ1vJJaSz"1a[3N"**!MNr4   c                     |j                  ddg      }|j                  dgdgdgg      }t        ||      }t         |d      |j                  d|j                               y )Nr   ri   r?   r  r9  g433333@r   r  r  s        r.   test_simple3zTestBPoly.test_simple3  s]    JJ1vJJaS1#'1a[sGJJ@

JS	
r4   c                     |j                  ddg      }|j                  dgdgdgdgg      }t        ||      }t         |d      |j                  d|j                               y )Nr   ri   r&   r  g:On?r   r  r  s        r.   test_simple4zTestBPoly.test_simple4  sl    JJ1vJJaS1#s+,1a[3

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

 &( 02zz	 # ;	
r4   c                    |j                  g d      }|j                  ddgddgddgg      }t        ||d      }t         |d      |j                  d|j                  	             t         |d
      |j                  d|j                  	             t         |dd      |j                  d|j                  	             t         |d
d      |j                  d|j                  	             y )Nr   ri   r?   r?   r   r&   r  r  g333333@gHzG?r   g[(\?ri   r  r  r  s        r.   r  zTestBPoly.test_periodic  s    JJy!JJAAA/01aZ03Jbjj!IJ4"**^2::*"NO3
BJJxrzzJ$JK4RZZ2::Z%NOr4   c           	         t         j                  j                  d      }d}dD ]  }t        j                  |j	                  dd|dz               }|j	                  dd|dz   |f      }|d d d	   j                         }t        ||d
      }t        |d d d d d	f   |d d d	   d
      }|j	                  ddd      }	t         ||	       ||	      d       t         ||	d       ||	d      d       |j                         }
|j                         }t         |
|	       ||	      d       |j                         }|j                         }|j	                  ddd      D ]c  \  }}|j                  ||      }|j                  ||      }t        ||d       t         ||       ||      z
   ||       ||      z
  d       e  y )Nr   r?   r"  r>   ri   r  r8  r#  rB   Tr  r   r  r   r%  r   r&  r'  )rD   r  r(  r  r  rr   r   r   r  r  r+  )r*   r-  r  r  r,   r.  r3  r4  r  r5  r6  r7  r8  r9  r"  r%  r:  r;  s                     r.   r>  zTestBPoly.test_descending$  s   ii##A& 	,AAr1q512AT3eai^<BDbDBr1$/Br!TrT'{AddG>B[[b#.FBvJ6
?BvqM2fa=uE==?D==?DDL$v,UC
 $$&D$$&DCV4 ,1Q*Q*u59Q$q' 147T!W3D%*,	,/	,r4   c                 R   t         j                  j                  d      }|j                  ddddd      }t        j                  g d      }t        ||      }|j                  j                  |j                  k(  sJ |j                  j                  |j                  k(  sJ  |d      j                  |j                  dd  k(  sJ  ||j                  dd            j                  d	|j                  dd  z   k(  sJ |j                         }|j                  j                  d
k(  sJ y )Nr  r  r&   ri   r?   r  r  r:   r@  rA  )
rD   r  r(  r  rM   r   r,   r  r   r  )r*   r-  r   r,   rc  rB  s         r.   rD  zTestBPoly.test_multi_shapeF  s    ii##D)HHQ1a#HH[!!QKssyyAGG###ssyyAGG###v||qwwqr{***!Q &&&17712;*>>>>\\^ttzz_,,,r4   c           	         |j                  ddg      }|j                  dgdgdgg      }t        ||      }d}|dz  }t         ||      |j                  dd|z
  z  d|z
  z  d|z  d|z
  z  z   d|z  |z  z   |j                               y )Nr   r&   r?   ri   r  r8  r   r  )r*   rs  r,   r   r  xvalr$  s          r.   test_interval_lengthzTestBPoly.test_interval_lengthS  s    JJ1vJJaS1#'1a[1HtHJJqAaCy!A#q!A#6Qq@

JS	
r4   c                 *   |j                  g d      }|j                  ddgddgddgg      }t        ||      }t         |d      |j                  d|j                               t         |d      |j                  d	|j                               y )
Nr  r?   r   r&   r  gGzG?r   333333?r  r  r  s        r.   test_two_intervalszTestBPoly.test_two_intervals^  sz    JJy!JJAAA/01a[3Krzz!JK3N"**!MNr4   c                    ddg}dgdgdgg}t        ||      }dD ]  }t        |||      }|j                         }|du r[t        j                   |d	d
g            j	                         sJ t        j                   |d	d
g            j	                         r~J t        j                   |d	d
g            j                         rJ t        j                   |d	d
g            j                         sJ  y )Nr   r&   r?   ri   r  r  r  Fr  g @)r   r  rD   rw   rC  r  )r*   r,   r   r  rg   bp_ds         r.   r  zTestBPoly.test_extrapolate_attrf  s    FS1#sO1a[. 	=Kq!5B==?De#xxD#;044666xxdC[ 126688888Bc{O488:::88D$$56::<<<	=r4   N)r0   r1   r2   r  r  r  r  r  r  r>  rD  r  r  r  r3   r4   r.   r  r    s>    CO
	



P ,D-	
O=r4   r  c                   N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)TestBPolyCalculusc                    |j                  g d      }|j                  ddgddgddgg      }t        ||      }|j                         }t         |d      |j                  d|j                               t         |d      |j                  d	|j                               t        |j                  d
D cg c]  } |d|       c}      |j                  g d|j                               t        |j                  d
D cg c]  } |d|       c}      |j                  g d|j                               y c c}w c c}w )Nr  r?   r   r&   r  r  r   r  r  ri   r&   r?   )r  r|   r<   )r  rv   r   )r   r   r  r   r   r|  )r*   rs  r,   r   r  bp_derr  s          r.   r  z!TestBPolyCalculus.test_derivativex  s   JJy!JJAAA/01a[sRZZ

Z%KLsRZZ2::Z%FG 		!B""S"+!BC

#7rzz
J	
 		!B""S"+!BC

<rzz
B	
 "C "Cs   8D?Ec                    t         j                  j                  d      }d\  }}t        j                  |j                  |            }|j                  ||dz
  f      }|j	                  |      |j	                  |      }}t        ||      }t        j                  |      }t        |      D ]S  }	|j                         }|j                         }|j                  |d   |d   d      }
t         ||
       ||
             U y Nr  r:   r   ri   r   rB      )rD   r  r(  r  r   r   r   r  r  r  r-  r   )r*   rs  r-  r  r   r,   r   r  r  dr  s              r.   test_derivative_ppolyz'TestBPolyCalculus.test_derivative_ppoly  s    ii##D)1GGCJJqM"JJ1Q3x zz!}bjjm11a[''+q 	.ABB++adAbE2.CBsGRW-		.r4   c           	         t         j                  j                  d      }d\  }}t        j                  |j                  |            }|j                  ||dz
  f      }|j	                         |dz  fD ]c  }t        ||      }t        j                  |d   |d   d      }t        |      D ]*  }	t         |||	       |j                  |	      |             , e y )Nr  r  ri   r+  r   rB   r  )
rD   r  r(  r  rr   r   r-  r  r   r  )
r*   r-  r  r   r,   r   ccr  r  r  s
             r.   test_deriv_inplacez$TestBPolyCalculus.test_deriv_inplace  s    ii##D)1GGCJJqM"JJ1Q3x  668Q\* 	CBr1B++adAbE2.C1X C3
,<BMM!,<S,ABC	Cr4   c           
      J   |j                  g d      }|j                  ddgddgg      }t        ||      }|j                         }|j                  ddd|j                        }t         ||      |j                  |dk  |dz  dz  d	|z  |dz  dz
  z  d
z         dd       y )Nr  r   ri   r?   r   r   r&   r;   r'   g      ?r'  r   r   )r   r   r  r-  r   r   where)r*   rs  r,   r   r  bixxs          r.   rr  z,TestBPolyCalculus.test_antiderivative_simple  s     JJy!JJAA'(1a[ [[Ar[42aQ),rRUQY)?$)FH"	0r4   c                 l   t         j                  j                  d      }t        j                  |j                  d            }|j                  d      }t	        ||      }t        j
                  |d   |d   d      }t         |j                         j                         |       ||      dd       y )	Nr  r   r  r>   r&   r?   r   rB   r   r'  r  )	rD   r  r(  r  r   r-  r   r  r  r*   r-  r,   r   r  r  s         r.   test_der_antiderz"TestBPolyCalculus.test_der_antider  s    ii##D)GGCJJrN#JJ}%1a[[[1quc*8))+668<2U	8r4   c                    t         j                  j                  d      }t        j                  |j                  d            }|j                  d      }t	        ||      }t        j                  |      }t        j                  |d   |d   d      }t         |j                  d      |       |j                  d      |      dd	       y )
Nr  r   r  r   rB   r>   r&   r'  r  )
rD   r  r(  r  r   r   r  r-  r   r  )r*   r-  r,   r   r  r  r  s          r.   test_antider_ppolyz$TestBPolyCalculus.test_antider_ppoly  s    ii##D)GGCJJrN#JJ}%1a[''+[[1qub),))!,R0,))!,R0u5	Jr4   c                 @   t         j                  j                  d      }t        j                  |j                  d            }|j                  d      }t	        ||      j                         }|j                  dd }t         ||dz
         ||dz         dd       y )	Nr  r   r  r>   ri   rB   r   r'  r  )rD   r  r(  r  r   r  r,   r   r  s         r.   test_antider_continuousz)TestBPolyCalculus.test_antider_continuous  s    ii##D)GGCJJrN#JJw1a['')TT!BZ2:2:U	@r4   c                    t         j                  j                  d      }t        j                  |j                  d            }|j                  d      }|j	                  |      |j	                  |      }}t        ||      }t        j                  |      }t        |j                  dd      |j                  dd      ddd       y )	Nr  r   r  r   ri   r'  F)r   r   r~  )
rD   r  r(  r  r   r   r   r  r   r+  )r*   rs  r-  r,   r   r  r  s          r.   r  z TestBPolyCalculus.test_integrate  s    ii##D)GGCJJrN#JJwzz!}bjjm11a[''+Q*Q*UU	Tr4   c                 b   dgg}ddg}t        ||      }t        |j                  dd      t        j                  d      dd       t        ||d      }t        j
                  |j                  dd            sJ t        |j                  ddd	      t        j                  d      dd       y )
Nri   r   r&   r;   r   F)r   r~  r  T)r   r   r+  rD   r   rw   )r*   r   r,   r%  b1s        r.   test_integrate_extrapz'TestBPolyCalculus.test_integrate_extrap  s    SEF!QK 	Aq)2::b>"U	4 1aU+xxQ*+++Qt<

2UU	Dr4   c           	         |j                  g d      }|j                  ddgddgddgddgg      }t        j                  t        ||      d      }|j	                         }|j                   |d	       |d
      z
        }t        |j                  d
d	      |       t        |j                  dd      |       t        |j                  dd      |j                  d|z               t        |j                  dd      |j                   |d       |d      z
               t        |j                  dd      |j                   |d       |d
      z
   |d	      z    |d      z
               t        |j                  dd      |j                   |d       |d
      z
   |d	      z    |d      z
               t        |j                  dd      |j                   |d       |d
      z
   |d	      z    |d      z
  d	|z  z                t        |j                  dd      |j                   |d       |d      z
               t        |j                  dd      |j                   |d       |d      z
               t        |j                  dd      |j                   |d       |d      z
  d|z  z
               y r  )r   r   r  r   r  r   r+  )r*   rs  r,   r   r  r  r  s          r.   r  z)TestBPolyCalculus.test_integrate_periodic  s;   JJy!JJR3*r3i"bBC""5A;JGZZ!qt,
Aq):6C,j9C,bjjZ.HIC-rzz!C&1S6//JKC+RZZ!qtad8JQsV8S-TUHf5

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

1Q4!A$;1#5##>Z#OP	R 	Ar*BJJqtad{,CDB,bjj1!.EFAs+RZZ!qta*n8T-UVr4   c                 p   |j                  dgg      }|j                  ddg      }t        ||      }|j                  ddd      }t         |j	                  d      |       |j                         |      dd       t         |j	                  d      |       |j                  d      |      dd       y )Nri   r   r  rB   r'  r  )r   r   r-  r   r  r  )r*   rs  r   r,   r%  r  s         r.   test_antider_negz"TestBPolyCalculus.test_antider_neg  s    JJuJJ1v!QK[[Ar"(R(,.@a.>.>.@.D"	0Q+-AQ-=-=b-A"-E"	0r4   N)r0   r1   r2   r  r  r  rr  r  r  r  r  r  r  r  r3   r4   r.   r  r  v  s?    
 ."C0(8
J@TDW00r4   r  c                   $    e Zd Zd Zd Zd Zd Zy)TestPolyConversionsc                 P   |j                  g d      }|j                  ddgddgddgg      }t        ||      }t        j                  |      }t        j                  |      }|j                  ddg      }t         ||       ||             t         ||       ||             y )	Nr  r?   r&   ri   r   r  r8  ffffff?)r   r   r   r  r  r   )r*   rs  r,   r   r  r  r  xvs           r.   test_bp_from_ppz#TestPolyConversions.test_bp_from_pp  s    JJy!JJAAA/01a[##B'((,ZZc
#22'2B(r4   c                    t         j                  j                  d      }d\  }}t        j                  |j                  |            }|j                  ||dz
  f      }t	        ||      }t        j                  |      }t	        j                  |      }t        j                  |d   |d   d      }	t         ||	       ||	             t         ||	       ||	             y r  )
rD   r  r(  r  r   r   r  r  r-  r   )
r*   r-  r  r   r,   r   r  r  r  r  s
             r.   test_bp_from_pp_randomz*TestPolyConversions.test_bp_from_pp_random&  s    ii##D)1GGCJJqM"JJ1Q3x 1a[##B'((,[[1qub)22'2B(r4   c                 P   |j                  g d      }|j                  ddgddgddgg      }t        ||      }t        j                  |      }t        j                  |      }|j                  ddg      }t         ||       ||             t         ||       ||             y )Nr  r?   ri   r  r&   r8  r  )r   r   r   r  r  r   )r*   rs  r,   r   r  r  r  r  s           r.   test_pp_from_bpz#TestPolyConversions.test_pp_from_bp3  s    JJy!JJAAA/01a[''+$$R(ZZc
#22'2B(r4   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  r?   ri   r  r&   )r   r(   	TypeErrorr  r   r  )r*   r,   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)r0   r1   r2   r  r  r  r   r3   r4   r.   r  r    s    	))	)
'r4   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   ri   r&   r?   r;   rt   r   _construct_from_derivativesr   )r*   r  s     r.   test_make_poly_1z)TestBPolyFromDerivatives.test_make_poly_1L  s*    ..q!aS1#>RH%r4   c                     t        j                  ddddgdg      }t        |g d       t        j                  ddddgdg      }t        |g d       t        j                  dddgddg      }t        |g d       y )Nr   ri   )rv   rv   rv   r&   r?   )r;   ro  rv   )r;   g      rv   r  r*   r  r  c3s       r.   test_make_poly_2z)TestBPolyFromDerivatives.test_make_poly_2P  sx    ..q!aVaSAL) ..q!aVaSAN+ ..q!aS1a&AN+r4   c                     t        j                  ddg ddg      }t        |g d       t        j                  dddgg d      }t        |g d       t        j                  ddddgdd	g      }t        |g d
       y )Nr   ri   r  r  )rv   竪?g@r  )r  r&   r?   )rv   gUUUUUU	@g
@r  r&   r?   )rv   r  rt   r  r  r  s       r.   test_make_poly_3z)TestBPolyFromDerivatives.test_make_poly_3\  su    ..q!YD12 ..q!aS)D23 ..q!aVaVD./r4   c                    t         j                  j                  d      }t         j                  d|j                  d      f   }t         j                  d|j                  d      f   }t	        j
                  dd||      }t	        |d d d f   ddg      }t        d      D ]@  }t         |d      ||   d       t         |d	      ||   d       |j                         }B y )
Nr  r   r:   ri   r  r<   Fr}  rv   )	rD   r  r(  r   r   r  r  r   r  )r*   r-  yaybr   r  r  s          r.   test_make_poly_12z*TestBPolyFromDerivatives.test_make_poly_12i  s    ii##E*UU1cjjm#$UU1cjjm#$--aB;1QW:1v&q 	!ABrFBqEE:BrFBqEE:B	!r4   c                 :   t         j                  j                  d      }ddg}d\  }}|j                  |ddddf      }t        ||      }t        j                  ||      }t        ||      }t        j
                  ddd      }	t         ||	       ||	             y )	Nr  r   ri   )r   r:   r&   r?   r  r   )rD   r  r(  r   _raise_degreer-  r   )
r*   r-  r,   r   r  r   r  r  r  rs  s
             r.   test_raise_degreez*TestBPolyFromDerivatives.test_raise_degreeu  s    ii##E*F1JJ1aA'1a[  A&Bl[[Ar"2B(r4   c                 J    t        t        t        j                  ddgdg       y )Nr   ri   r(   rn   r   r  rY   s    r.   
test_xi_yiz#TestBPolyFromDerivatives.test_xi_yi  s    j%"8"81a&1#Fr4   c                 \    g d}dgdgdgg}t        t        t        j                  ||       y )Nr   r   ri   r   r  )r*   r0  r   s      r.   test_coords_orderz*TestBPolyFromDerivatives.test_coords_order  s,    cA3_j%"8"8"bAr4   c                 J   g d}ddgdgddgddgg}t        j                  ||      }|j                  j                  dk(  sJ |j	                         }dD ]L  }t         ||      t        j                  d             t         ||      t        j                  d             N y )Nr  r   )r  r?   )r<   r8  rv   r  gffffff?r;   r*  r<   )r   r  r   r  r  r   rD   r   )r*   r0  r   r  ppdrs  s         r.   
test_zerosz#TestBPolyFromDerivatives.test_zeros  s    !fqcAq6Aq6*##B+ttzzV###mmo2 	6BBrFBJJsO4CGRZZ_5	6r4   c                    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]  }|j                  |       }}||fS c c}w c c}w )Nr  ri   rv   r&   )rD   r  r(  r   r  )r*   r  r   r-  r  r0  r   s          r.   _make_random_mkz(TestBPolyFromDerivatives._make_random_mk  ss    ii##D)ZZE!A#J7qad78%*1Q3Z0cjjm002v 80s   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r:   r   r&   )r  r   r  r  r   r  )r*   r  r   r0  r   r  r  yys           r.   test_random_12z'TestBPolyFromDerivatives.test_random_12  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   r0  r   orders)r  r(   rn   r   r  r   r*   r  r   r0  r   s        r.   test_order_zeroz(TestBPolyFromDerivatives.test_order_zero  sD    1%%a+Bj%"8"8 	0"A.	0r4   c           
          d\  }}| j                  ||      \  }}t        j                  ||d|z  dz
         t        t        t        j                  fi t        ||d|z         y )Nr!  r&   ri   r&  r%  )r  r   r  r(   rn   r   r'  s        r.   test_orders_too_highz-TestBPolyFromDerivatives.test_orders_too_high  sb    1%%a+Br2ac!e4j%"8"8 	2"AaC0	2r4   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        j                   ||dd dz
         ||dd dz               rJ d}t        j                  |||      }t        |dz        D ]6  }t	         ||dd dz
         ||dd dz                |j                         }8 t        j                   ||dd dz
         ||dd dz               rJ y )	Nr!  r:   r*  r&   ri   rB   r'  r  )r  r   r  r  r   r  rD   allclose)r*   r  r   r0  r   r  r  r  s           r.   test_orders_globalz+TestBPolyFromDerivatives.test_orders_global  sc   1%%a+B ##B59uaxz" 	!ABr!Bx%/0"R"X5E2FGB	! ;;r"Qr(U"23R1R58H5IJJJ
 ##B59uax 	!ABr!Bx%/0"R"X5E2FGB	! ;;r"Qr(U"23R1R58H5IJJJJr4   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        j                   |	|dz
         |	|dz               sJ  y c c}w )N)r  r   ri   rB   r*  r&   r'  )	r  r  r   r   r  r   r  rD   r-  )r*   r  r   r0  r   or&  r  r,   r  r  s              r.   test_orders_localz*TestBPolyFromDerivatives.test_orders_local  s    1%%a+B!&q*A!a%**b2h' 	ADAq''Bv>B6!9>A-. %1u9r!e)}=]]_% {{2a%i="QY-@@@	A +s   Cc                 >   t         j                  j                  d      }d\  }}t        j                  |j                  |dz               }|j                  |dz   |dddf      }t	        j
                  ||      }|j                  j                  d|z  |dddfk(  sJ y )Nr  )r  r:   ri   r  r  r   r&   )rD   r  r(  r  r   r  r   r  )r*   r-  r  r   r0  r   r  s          r.   test_yi_trailing_dimsz.TestBPolyFromDerivatives.test_yi_trailing_dims  s    ii##D)1WWSZZ!_%ZZ1aAq)*##B+ttzzac1aA....r4   c                    t        j                  d      }t        j                  ddgdgdgg|      }t	         |d      t        j
                  d             t        j                  d      }t        j                  ddgdgdgg|      }t	         |d      t        j
                  d             d}t        j                  ddgdgdgg|      }t	         |d      t        j
                  d             d}y )Nri   r   r*  )rD   int32r   r  r   r   int64)r*   r&  rc  s      r.   test_gh_5430z%TestBPolyFromDerivatives.test_gh_5430  s    
 !""Aq6QC!:fEAaD"**Q-0!""Aq6QC!:fEAaD"**Q-0""Aq6QC!:fEAaD"**Q-0r4   N)r0   r1   r2   r  r
  r  r  r  r  r  r  r  r#  r(  r+  r.  r1  r3  r7  r3   r4   r.   r  r  K  sV    &
,0
!)GB
	6!02K0
A/r4   r  c                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)TestNdPPolyc                 D   t         j                  j                  d      }|j                  dd      }t        j                  ddd      }|j                  d      }t        ||f      } ||f      }t        |d d d d d f   ||      j                         }t        ||       y )Nr  r  r:   r   ri   r  r   )	rD   r  r(  r  r-  r   rL  r  r   )r*   r-  r   r,   r0  rc  v1v2s           r.   test_simple_1dzTestNdPPoly.test_simple_1d  s    ii##D)HHQNKK1c"XXc]AtuX1QqX;2.446Br4   c           
         t         j                  j                  d      }|j                  dddd      }t        j                  ddd      }t        j                  ddd      d	z  }|j                  d
      }|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 )Nr  r  r:   r  r  r   ri   r   r&   r   r   r  *   )Nr   r   r   ri   )ri   r   )r&   r?   )r   r&   r  r  )rD   r  r(  r  r-  r  ra  r   fillr   r   evaluate_ndrI   rM   intcc_r  _ppoly2d_evalr   r   r  )r*   r-  r   r,   r+   r0  r   r;  r<  rc  r  s              r.   test_simple_2dzTestNdPPoly.test_simple_2d	  s   ii##D)HHQ1a KK1c"KK1c"A%XXc]XXc]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	6r4   c           	         t         j                  j                  d      }|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  }|j                  d      }|j                  d      }|j                  d      }t        ||||f      }	dD ]:  }
 |	|||f|
      }t        ||||f||||
      }t        ||t        |
             < y )Nr  r  r:   r  r  r   r   r   ri   r&   r>   r?   (   )Nr   r   r   r   ri   r   ri   r   r   )r&   r?   r   )r  r   r&   rB  r  )	rD   r  r(  r  r-  r   _ppoly3d_evalr   r  )r*   r-  r   r,   r+   r-   r0  r   zirc  r  r;  r<  s                r.   test_simple_3dzTestNdPPoly.test_simple_3d	  s    ii##D)HHQ1aA&KK1c"KK1c"A%KK1c"A%XXb\XXb\XXb\A1ay! 	6BBB<B'Bq1a)RRB?BBDH5		6r4   c           
      <   t         j                  j                  d      }|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  }|j                  d      }|j                  d      }|j                  d      }	|j                  d      }
t        |||||f      } ||||	|
f      }t        |||||f|||	|
      }t        ||       y )Nr  r  r:   r  r  r   r   r>   r   r   ri   r&   r?   r   r  )rD   r  r(  r  r-  r   _ppoly4d_evalr   )r*   r-  r   r,   r+   r-   ur0  r   rO  uirc  r;  r<  s                 r.   test_simple_4dzTestNdPPoly.test_simple_4d2	  s
   ii##D)HHQ1aAr2.KK1c"KK1c"A%KK1d#Q&KK1d#Q&XXb\XXb\XXb\XXb\A1a|$BB 1q!QlBB;Br4   c                    t         j                  j                  d      }|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 )	Nr  r  r:   r   ri   r  rB  r&   )rD   r  r(  r  r-  r   r  r   r   r   r  )r*   r-  r   r,   rc  rB  r  dp1s           r.   test_deriv_1dzTestNdPPoly.test_deriv_1dF	  s    ii##D)HHQNKK1c"At \\aS\!1a[mmocee$ !%1a["cee$r4   c                    t         j                  j                  d      }|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 )Nr  r  r:   r  r  r   r   r   ri   r&   r>   r?   rB  rL  )r   r   r?   )rD   r  r(  r  r-  r   r   r  r  r   r   r  )
r*   r-  r   r,   r+   r-   rc  r  rB  rW  s
             r.   test_deriv_3dzTestNdPPoly.test_deriv_3dZ	  s   ii##D)HHQ1aA&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	;r4   c                 B   t         j                  j                  d      }t        j                  d      }t        j                  ddd      dz  }t        j                  ddd      dz  }t        j                  ddd      d	z  }t        ||||f      }|j                  d
      }|j                  d      }|j                  d      }|j                  d      }	|j                  d      }
t         |||	|
f      ||	dz  z  |
dz  z  t        d	      t        d      z  z         y )Nr  )ri   ri   ri   r?   r  r:   r   ri   r  r:   r&   r  r?   )ri   r   r  )r   r&   r   r  )
rD   r  r(  rm   r-  r   r  r  r   r   )r*   r-  r   r,   r+   r-   rc  rC  r0  r   rO  s              r.   test_deriv_3d_simplez TestNdPPoly.test_deriv_3d_simpley	  s    ii##D)GG&'KK1c"A%KK1c"A%KK1c"A%A1ay!i(y)XXb\XXb\XXb\BB<(RU
RU*eAhuQx.?@	Br4   c                 "  
 t         j                  j                  d      }|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 ]P  }
j                  |      }t        
fd|t        dd      gd	z        \  }}	t        ||dddt!        |             R y )Nr  r  r:      r  r   ri   r   r&   r?   rB   rA  )r   r'   )r  r  )rK  r9  c                      | |f      S r   r3   )r,   r+   rc  s     r.   <lambda>z/TestNdPPoly.test_integrate_2d.<locals>.<lambda>	  s    1aV9 r4   gh㈵>)epsrelepsabs)r   F)r   r   r~  r   )rD   r  r(  r  r-  r  rI   r  rr   r   fix_continuityr   r+  r!   r   r   r  )r*   r-  r   r,   r+   cxrangesr  ig2err2rc  s             @r.   test_integrate_2dzTestNdPPoly.test_integrate_2d	  s   ii##D)HHQ2r"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$TE$(L2		2r4   c           	      J   t         j                  j                  d      }|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      }|j                  d      }|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 )Nr  r  r:   r  r^  r  r   r   ri   r&   r   r?   r   )r9  r  rl   rM  rL  r  )	rD   r  r(  r  r-  r   integrate_1dr  r   )r*   r-  r   r,   r+   r-   rc  rS  vr"  r%  pxpaxpypaypzpazs                    r.   test_integrate_1dzTestNdPPoly.test_integrate_1d	  s   ii##D)HHQ1b"b)KK1d#Q&KK1d#Q&KK1d#Q& A1ay!HHSMHHSM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Dr4   c                 @   t         j                  j                  d      j                  d      }t        j                  ddd      }t        j                  ddd      dz  }t        j                  ddd	      d
z  }t        ||||f      }fd}t        d	||       y )Nr  )r  r:   r  r  r   r   r#  r   ri   r   r   r&   r>   r?   c                     j                  d      }j                  d      }j                  d      } ||||f       y )NrJ  r#  )r  )r  r  r0  r   rO  r-  s        r.   r  z/TestNdPPoly.test_concurrency.<locals>.worker_fn	  sA    "%B"%B"%BRr4   )rD   r  default_rngr  r-  r   r    )r*   r   r,   r+   r-   rc  r  r-  s          @r.   r  zTestNdPPoly.test_concurrency	  s    ii##E*KK/K0KK1c"KK1c"A%KK1c"A%A1ay!	 	 Iq1r4   N)r0   r1   r2   r=  rH  rP  rU  rX  rZ  r\  rh  rr  r  r3   r4   r.   r9  r9    s7     6:6( (%(;>B(2BE42r4   r9  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
  |   |cxk  r|dz      k  sJ  J t         fdt         j                  d         D              }|||ddf<    |S )z&Evaluate piecewise polynomial manuallyr&   r   ri   Nc              3   ^   K   | ]$  }|f   j                   d    |z
  dz
  z  z   & yw)r   ri   N)r  )r   r   r   r  r  s     r.   r  z _ppoly_eval_1.<locals>.<genexpr>	  s;      , !A#QWWQZ\!^,, ,s   *-)	rD   zerosra  r  r   r   searchsortedsumr  )	r   r,   xpsrJ  r  rs  rt  r  r  s	   `      @@r.   rL  rL  	  s    
((CHaggaj)
*C3 	26R!VvvC!HOOAr"Q&1Itr"AacF""""" ,qwwqz*, ,AaC	 Jr4   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}      }|||	<   |j                  |      }|S c c}w )z4Evaluate piecewise polynomial manually (another way)r   rB   ri   )NN)r  rD   r  
empty_likecompressry  clipra  takevanderrM   r  r*  rI   )rb  breaksr   rC  r"  r%  K	saveshaper  maskr  indxsr  r)  Vr   valuess                    r.   rM  rM  	  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
++i
 C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 orderri   )rn   r   )r,   r+   r#  s      r.   _dpowr  
  sC     	1u344	
QAEAIq!AAJ..r4   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
    Nr@  r   r&   r   rB   ri   rD   r  ra  r   r  r   zipr   ry  r  r  )r   rd  r   ynewr  rJ  nxnyjoutr,   r+   j1j2s1s2r  k1k2s                     r.   rG  rG  
  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	), Jr4   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
    NrK  r   r?   r   rB   ri   r&   r  )r   rd  r   r  znewr  rJ  r  r  nzr  r,   r+   r-   r  r  j3r  r  s3r  r  r  k3s                           r.   rN  rN  2
  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 Jr4   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   r  r   rB   ri   r&   r?   r  )r   rd  r   r  r  unewr  rJ  mxmymzmur  r,   r+   r-   rS  r  r  r  j4r  r  r  s4r  r  r  r  k4s                                 r.   rR  rR  Z
  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	;> Jr4   r   )Bscipy._lib._array_apir   r   r   r   r   rZ  r   r(   numpyr	   r
   r   r   rD   scipy.interpolater   r   r   r   r   r   r   r   r   r   r   r   r   r   scipy.specialr   r   r   scipy._lib._gcutilsr   r   scipy._lib._testutilsr    scipy.integrater!   r"   r[  skip_xp_backendsxfail_xp_backendsr$   r6   r_  ri  r]  r5  r  r  r  r  r  r  r  r9  rL  r   rM  r  rG  rN  rR  r3   r4   r.   <module>r     s    +  ( ( - - - - & $ ; 9 ! ;;// KK11  U Up6 6 &'s* s* (s*l $79J#KL: M:, 5% `L `L !`LF,& ,&^ 5}E }E }E@ 5H= H= H=V 5_0 _0 _0D 5% .' .' !.'bd dNf2 f2R  .0VV .	/!H%P*r4   