
    e!h}                    Z   d dl mZmZmZmZ d dlmZ d dlZd dlm	Z	m
Z
mZmZ d dlZd dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZ d dlm Z  d dl!m"Z"m#Z# d d	l$m%Z% d d
l&m'Z' d dlm(Z(  G d d      Z) G d d      Z* G d d      Z+ G d d      Z,ejZ                  j]                  deeg      d        Z/ G d d      Z0 G d d      Z1 G d d      Z2 G d d      Z3 G d d      Z4 G d  d!      Z5 G d" d#      Z6 G d$ d%      Z7d& Z8ejr                  fd'Z:d( Z;d,d)Z<d,d*Z=d,d+Z>y)-    )xp_assert_equalxp_assert_closeassert_almost_equalassert_array_almost_equal)raisesN)mgridpisinpoly1d)interp1dinterp2dlagrangePPolyBPolysplrepsplev
splantidersplintsprootAkima1DInterpolatorNdPPolyBSplinePchipInterpolator)pochgamma)_ppoly)assert_deallocatedIS_PYPY)_run_concurrent_barrier)nquad)binomc                       e Zd Zd Z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       p/var/www/html/diagnosisapp-backend/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    r3   r#   c                   r   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd(dZd(dZd Zd Zd Zd Zd(dZd(dZd Ze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%   r9   g      >@)r%      r9   )r>   r%   r9      r         Y)nparangex5x10y10reshapex25x2y2arrayx1y1y210y102y225y25y235y325y210_edge_updatedy102_edge_updated
fill_valuer)   s    r-   setup_methodzTestInterp1D.setup_method$   s   ))B-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% r3   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re   rW   r^   )rA      rA   )rA   )rA   rA   r   rh   r%   r>   re   axisrW   r=   rj   )rA   rA   rA   r2   r;   )r   rF   rG   rC   rL   rO   rJ   onesr'   
ValueErrorrI   rK   rP   rM   rN   r)   re   s     r-   test_validationzTestInterp1D.test_validationM   s   
? 	N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	9r3   c                 @   t        | j                  | j                        j                  sJ t        | j                  | j                  d      j                  rJ t        | j                  | j                        j                  sJ t        | j                  | j                  d      j                  rJ t        j                  t        | j                  | j                        j                        sJ t        | j                  | j                  d      j                  dk(  sJ t        | j                  | j                  d      j                  dk(  sJ t        | j                  | j                        j                  dk(  sJ t        | j                  | j                        j                  dk(  sJ t        | j                  | j                  d	      j                  dk(  sJ t        t        | j                  | j                        j                  | j                         t        t        | j                  | j                        j                  | j                         t        t        | j                  | j                        j                  | j                         y )
NF)copy)bounds_error      @rW   )      ?r:   r   rh   rk   )r   rF   rG   rq   rr   rC   isnanrW   rj   rO   rP   r   r+   r*   rX   s    r-   	test_initzTestInterp1D.test_init   s    $((+0000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Cr3   c                    t        | j                  | j                        }t        | j                  d d d   | j                  d d d         }t         || j                        | j                         t         |d      t	        j
                  d             t         |g d       |g d             t        | j                  d d d   | j                  d d d   d      }t         || j                        | j                         t        | j                  d d d   | j                  d d d   d      }t        t        || j                         t        | j                  | j                        }t        | j                  d d d   | j                  d d d d df         }t         || j                         || j                               y )NrA   333333?g333333@gffffff@      @F)assume_sortedT)	r   rF   rG   r   rC   rL   r'   rm   rO   )r)   interp10interp10_unsortedinterp10_assume_kwinterp10_assume_kw2interp10_y_2dinterp10_y_2d_unsorteds          r-   test_assume_sortedzTestInterp1D.test_assume_sorted   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r3   c                 4    dD ]  }| j                  |        y )N)r^   r_   )_check_linearrn   s     r-   test_linearzTestInterp1D.test_linear   s    ) 	%Dt$	%r3   c                 >   t        | j                  | j                  |      }t         || j                        | j                         t         |d      t	        j
                  d             t         |g d      t	        j
                  g d             t        | j                  | j                  |d      }t         |g d      t	        j                  g d      d       t        |dd	
      }t        t        t         | j                  | j                  fi | y )Nrd   ry   rz   rf   rg         r   	      +=rtolTre   rW   rr   )r   rF   rG   r   rC   rL   r   asarraydictr'   rm   )r)   re   r}   extrapolatoroptss        r-   r   zTestInterp1D._check_linear   s    DHHdhhT:!(488"4dhh?!(3-#?!(?";"$((?";	=  $((+8:_5

#345	B ,!%' 	j(DHHdhhG$Gr3   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^   rd   V瞯<atolr   rh   r%   r   rh   )
rC   float16float32float64
longdoublerD   r   r   r   nan)r)   dtypr+   r*   yps        r-   test_linear_dtypeszTestInterp1D.test_linear_dtypes   s     ZZZZZZ]]$ 	/D 		!4(AA.!QX.q1B88t###B.	/ VVQNXa^AAE*r3   c                    t         j                  t         j                  t         j                  g}|t         j                  t         j
                  gz   }g d}|D ]  }t        j                  dd|      }|D ]v  }t        j                  | dz        j                  |      }|D ]G  }|j                  |      }	|D ]/  }
t        |||
d      }t         ||	      |dd| d	| d
|        1 I x  y )N)r_   r]   r`   ra   r   r=   r   rs   Fre   rr   Hz>z,  )r   check_dtypeerr_msg)rC   r   r   r   	complex64
complex128rD   expastyper   r   )r)   dt_rdt_rcspline_kindsdtxr+   dtyr*   dtnxnewre   fs               r-   test_slinear_dtypesz TestInterp1D.test_slinear_dtypes   s     

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r3   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 )Nra   rd   ry         ?rz   r   rF   rG   r   rC   rL   r)   r}   s     r-   
test_cubiczTestInterp1D.test_cubic   sv    DHHdhhW=!(488"4dhh?!(3-#?!(3-#?!(?";"$((?";	>r3   c                 b   t        | j                  | j                  d      }t         || j                        | j                         t         |d      t	        j
                  d             t         |d      t	        j
                  d             t         |g d      t	        j
                  g d             t        | j                  | j                  dd	      }t         |g d
      g dd       t        ddd      }t        t        t         | j                  | j                  fi | y )Nr[   rd   ry   ru   r   rz   r:   r{   r{   rf   rg   r   r;   r   r   r   r   r   Tr   
r   rF   rG   r   rC   rL   r   r   r'   rm   r)   r}   r   r   s       r-   test_nearestzTestInterp1D.test_nearest  s     DHHdhhY?!(488"4dhh?!(3-">!(3-">!(?";"$((<"8	;  $((+8:_5&U	4 ,!%' 	j(DHHdhhG$Gr3   c                 b   t        | j                  | j                  d      }t         || j                        | j                         t         |d      t	        j
                  d             t         |d      t	        j
                  d             t         |g d      t	        j
                  g d             t        | j                  | j                  dd	
      }t         |g d      g dd       t        dd	d      }t        t        t         | j                  | j                  fi | y )Nr\   rd   ry   ru   r   r:   rz   r   rf   rg   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$Gr3   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 )%Nrb   rd   ry   ru   r   rz   r:   r7   r{   rf   rg   r   r   r   r   r   rA   r9   r         r9   r            ri   r   r9   r   r=   r   Tr   r   r   rh   rA   re   rW   r|   r   rA   r   rh   r%   r>   r9   rh   rA   r%   r   rh   rA   r   rh   Fr@   r   rF   rG   r   rC   rL   r   r   rO   rP   r   r'   rm   rU   rV   r)   r}   r   interpolator1Dinterpolator2Dinterpolator2DAxis0r   s          r-   test_previouszTestInterp1D.test_previous/  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%	&r3   c           
         t        | j                  | j                  d      }t         || j                        | j                         t         |d      t	        j
                  d             t         |d      t	        j
                  d             t         |g d      t	        j
                  g d             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 )$Nrc   rd   ry   r:   r   rz   )rs   r{   r{   rf   rg   r   r   r   r   r   r   r9   r   r=   r   r   ri   r   rh   r   Tr   r   r   r   r   rA   r   r   Fr?   r   r   s          r-   	test_nextzTestInterp1D.test_nextt  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&&"&&)+	,r3   c                 z   t        | j                  | j                  d      }t         || j                        | j                         t         |d      t	        j
                  d             t         |d      t	        j
                  d             t         |g d      t	        j
                  g d             y )Nr]   rd   ry   ru   r   rz   r   r   r   s     r-   	test_zerozTestInterp1D.test_zero  sv    DHHdhhV<!(488"4dhh?!(3-">!(3-">!(?";"$((<"8	:r3   c                     t        t        ||       	  ||       y # t        $ r}| t        |      v sJ Y d }~y d }~ww xY wN)r'   rm   str)r)   interpolant
test_array
fail_valueerrs        r-   bounds_check_helperz TestInterp1D.bounds_check_helper  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)rW   rr   re   gffffff&@g333333g333333)@gL3@)check_shape)r   r;   r7         "@      &@)TFFFF)FFFFTT)rr   re   r   r   )r;   r   r;   )r;   ru         5@r   )r;   r7   r   )	r   rF   rG   rW   r   rC   rL   _check_boundsr   )r)   re   extrap10raises_bounds_errors       r-   _bounds_checkzTestInterp1D._bounds_check  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,r3   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   rh   r   rA   )	rC   rD   r   intr   r   rv   r   r_)r)   re   r+   r*   cyis         r-   _bounds_check_int_nan_fillz'TestInterp1D._bounds_check_int_nan_fill  s    IIbM  %IIbM  %QeLq1uXxx1!"beeBFFAcrFN&;<r3   c                 V    dD ]$  }| j                  |       | j                  |       & y )N)r^   ra   r[   rb   rc   r_   r]   r`   )r   r   rn   s     r-   test_boundszTestInterp1D.test_bounds  s/    5 	2Dt$++D1	2r3   c                    t        | j                  | j                  |dd      }t         |d      t	        j
                  d             t         |d      t	        j
                  d             t         |ddg      dd	g       | j                  | j                  | j                  | j                  fD ]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@rB   r   r   rA   )re   rj   rW   rr   r>   rh   r   )r      ,  r%   r   r   )r   8r   r   c              3   F   K   | ]  }t        j                  |        y wr   )rC   rL   ).0r   s     r-   	<genexpr>z1TestInterp1D._check_fill_value.<locals>.<genexpr>R  s     "C1288A;"Cs   !i  i  ii0)r   rF   rG   r   rC   r   rS   rT   rQ   rR   rE   ndimshaper'   rm   rL   rangetuple)r)   re   interpr*   resultrW   iis          r-   _check_fill_valuezTestInterp1D._check_fill_value  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r3   c                 4    dD ]  }| j                  |        y N)r^   r[   ra   r_   r`   r]   rb   rc   )r  rn   s     r-   test_fill_valuezTestInterp1D.test_fill_value  s!    1 	)D""4(	)r3   c                     t        | j                  | j                  d      }|j                  dk(  sJ d|_        |j                  dk(  sJ y )Ng     ^@rt   g     t@)r   rF   rG   rW   )r)   r  s     r-   test_fill_value_writeablez&TestInterp1D.test_fill_value_writeable  sH    $((DHH?  E)))!  E)))r3   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 )Nrd   rs   r7   r:         @ry   r2   ru   r         (@r   rj   re   r{   g      *@g      .@g      1@r8         @g      ,@)r   rF   rG   r   rC   rL   
isinstancendarrayr  rO   rP   )r)   re   r}   	interp210	interp102x_news         r-   _nd_check_interpzTestInterp1D._nd_check_interp  s    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r3   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)   r9         r  r   r  )r%   r>   rh   r  rh   )
rC   rD   prodrH   	enumerater   r   listr  r  )
r)   re   ar*   nsr+   r,   rJ   bs
             r-   _nd_check_shapezTestInterp1D._nd_check_shape  s    )BIIbggaj!))1-aL 	1DAq		!AAAD1A%adAt<5!))'2S8BQA Aa!HR5;;%(*0D0*	1r3   c                 V    dD ]$  }| j                  |       | j                  |       & y )N)r^   ra   r_   r`   r[   r]   rb   rc   )r  r%  rn   s     r-   test_ndzTestInterp1D.test_nd  s/    1 	'D!!$'  &	'r3   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)
rh         @r>   g@r  g@g@g       @g      #@r=         ?       @rd   rA   rh   r=      )rC   rL   r   r   r   linspacerealimag)	r)   r   re   r+   r*   r   xicrcis	            r-   _check_complexzTestInterp1D._check_complex  s    HH@AfHHUO Q%!!CR&!A$s)4 [[B#ad+ad+!!B%**bf5!!B%**bf5r3   c                     dD ]B  }| j                  t        j                  |       | j                  t        j                  |       D y r
  )r2  rC   r   r   rn   s     r-   test_complexzTestInterp1D.test_complex  s;    1 	5Dd3t4	5r3   zTest not meaningful on PyPy)reasonc                     t        j                  dd      }t        j                  dd      }t        t        ||      5 } |ddg       ~d d d        y # 1 sw Y   y xY w)Nr   rh   皙?皙?)rC   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[   rb   rc   )r   2      r   rd   )rC   rL   int8r   r   )r)   re   r+   r  s       r-   test_overflow_nearestz"TestInterp1D.test_overflow_nearest  sA    3 	0DRWW5A!QT*B%beQ/	0r3   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_   rd   g@r  )	rC   rD   r   floatrq   r   r   isfiniteall)r)   r+   r*   re   irvalss         r-   test_local_nanszTestInterp1D.test_local_nans  sy     IIbM  'FFHvv!' 	+D!QT*BsCj>D;;t$((***	+r3   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>   )r`   ra   rd   r  rh   r9   )rC   rD   r   r@  rq   r   r   r   rv   rB  r  )
r)   r+   r*   ynre   rC  irnr   outoutns
             r-   test_spline_nanszTestInterp1D.test_spline_nans  s     IIaL&FFHVVX1* 	/D!QT*B1bt,CQFaVaV$45 /zz$'qE3q6Txx~))+++yyDJJ...	/	/r3   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=   ra   rd   )rC   rl   r   rD   r'   rm   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=   rs   r   r7  TFF)r^   r[   r]   r_   r`   ra   rd   )rC   rD   r   flags	writeabler   rA  rB  )r)   r+   r*   r   xnew_writeablere   r   rD  s           r-   test_read_onlyzTestInterp1D.test_read_only  s    IIaFFA28yyAs#+ 	/N#1DJJ  %AGG" /Q-w{{4(,,...	/	/r3   re   )r^   r[   r\   rb   rc   c                     t        dgdg|dd      }t         |g d      t        j                  g d             t        dgdg|d	      }t	        t
        d
      5   |d       d d d        y # 1 sw Y   y xY w)Nr   r  Fr<   )re   rr   rW   )rh   r   r%   )r:   r  r=   Tr   zx_new is abovematchr:   )r   r   rC   r   r'   rm   )r)   re   r   s      r-   test_single_valuezTestInterp1D.test_single_value,  so    
 cUQCd ')+

<(@AcUQCd>:-=> 	cF	 	 	s   	A00A9N)r^   )+r/   r0   r1   rY   ro   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r%  r'  rC   r   r2  r4  pytestmarkskipifr   r9  r>  rE  rK  rM  rT  parametrizerX  r2   r3   r-   r5   r5   "   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r3   r5   c                       e Zd Zd Zy)TestLagrangec                     t        g d      }t        j                  t        |j                              } ||      }t        ||      }t        |j                  |j                         y )N)r9   r%   rh   r  r>   )r   rC   rD   lencoeffsr   r   )r)   pxsyspls        r-   test_lagrangezTestLagrange.test_lagrange<  sH    ;YYs188}%rUb_!!((2995r3   N)r/   r0   r1   rf  r2   r3   r-   r^  r^  :  s    6r3   r^  c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestAkima1DInterpolatorc                     t        j                  dd      }t        j                  g d      }t        ||      }t        j                  g d      }t        j                  g d      }t	         ||      |       y )Nr;   r   r;   r:   ru   rs   r:   r{         @rk  g@ffffff@rs   r;   r&   ru   r   r)        @g      @rl  g      @g@g333333!@g#@r8   r;   g      ?r:   r   g     @?g     @g.袋@g^@gn @gGNB@grcߖ@g	I@rs   rC   rD   rL   r   r   r)   r+   r*   akr/  r   s         r-   	test_evalz!TestAkima1DInterpolator.test_evalE  sc    IIb#HHEF A&XX  XX  
 	2#r3   c                     t        j                  dd      }t        j                  g d      }t        ||d      }t        j                  g d      }t        j                  g d      }t	         ||      |       y )Nr;   r   rj  makimamethodrm  )r;   gF??r:   g?g?gg{'@g>J(j@g?@gq@g@g9~@go
@rs   rp  rq  s         r-   test_eval_modz%TestAkima1DInterpolator.test_eval_modR  sg     IIb#HHEF Ah7XX & 'XX 5 6 	2#r3   c                 ^   t        j                  dd      }t        j                  g d      }t        j                  |d|z  f      }t	        ||      }t        j                  g d      }t        j                  g d      }t        j                  |d|z  f      }t         ||      |       y )Nr;   r   rj  r:   rm  ro  )rC   rD   rL   column_stackr   r   rq  s         r-   test_eval_2dz$TestAkima1DInterpolator.test_eval_2dc  s    IIb#HHEFOOQQK( A&XX & 'XX 8 9 __b"r']+2#r3   c                    t        j                  dd      }t        j                  g d      }t        j                  d      }||d d ddf<   d|z  |d d ddf<   d|z  |d d ddf<   d	|z  |d d ddf<   t	        ||      }t        j                  g d
      }t        j                  d      }t        j                  g d      }||d d ddf<   d|z  |d d ddf<   d|z  |d d ddf<   d	|z  |d d ddf<   t         ||      |       y )Nr;   r   rj  )r   r%   r%   r   r:   rh   rs   r  rm  )   r%   r%   ro  )rC   rD   rL   emptyr   r   )r)   r+   y_r*   rr  r/  r   yi_s           r-   test_eval_3dz$TestAkima1DInterpolator.test_eval_3dt  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#r3   c                 ,   t        j                  g d      }t        j                  ||dz  f      j                  }t	        ||      }t        j                  ddg      } ||      }t        |t        j                  ||dz  f      j                         y )Nr   r%   r&   r   )rC   rL   vstackTr   r   )r)   r+   r*   rr  x_evaly_evals         r-   %test_degenerate_case_multidimensionalz=TestAkima1DInterpolator.test_degenerate_case_multidimensional  su    HHYIIq!Q$i "" A&3*%F		6619*= > @ @Ar3   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   rj  z9Extending a 1-D Akima interpolator is not yet implementedrV  )rC   rD   rL   r   rY  r   r(   extend)r)   r+   r*   rr  rW  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   rj  z `method`=invalid is unsupported.rV  invalidrv  )rC   rD   rL   rY  r   r(   r   )r)   r+   r*   rW  s       r-   test_mod_invalid_methodz/TestAkima1DInterpolator.test_mod_invalid_method  sV    IIb#HHEF2]].e< 	81Y7	8 	8 	8rN  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 )Nr9   r   r%   r   r=      Trf   Fr   r   r   r  rA   r>   )rC   r,  r   r   r   fullr   )r)   r+   r*   x_exty_extak_trueak_falseak_nones           r-   test_extrapolate_attrz-TestAkima1DInterpolator.test_extrapolate_attr  s    KKAr"qDCR(q%a=&q!?%a=eD!,bgga.@A2.2660BCD975>PUVwu~E:r3   N)r/   r0   r1   rs  rx  r{  r  r  r  r  r  r2   r3   r-   rh  rh  D  s+    $$"$"$2B"8;r3   rh  rw  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   rj  y               @zreal valuesrV  c                     t        j                  ddd      }|dz  }t        j                  ddd      }t        ||d	      }d
 }t        d|||       y )Nr  r9   r   r%   r   r=   r  Tr  c                      ||       y r   r2   )_rr  r  s      r-   	worker_fnz9test_complex.<locals>.test_concurrency.<locals>.worker_fn  s	    uIr3   )rC   r,  r   r   )r)   r+   r*   r  rr  r  s         r-   test_concurrencyz&test_complex.<locals>.test_concurrency  sR    KKAr"qDCR( A48	 	 Ir59r3   )rC   rD   rL   rY  r   rm   )rw  r+   r*   msgr  s        r-   r4  r4    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                     t        j                  ddgddgddgg      }t        j                  g d      }t        t        t        ||       t        t        t
        ||       y )Nrh   r  r%   r9   r>   r  )r   rh   r&   )rC   rL   r'   rm   r   r   )r)   r   r+   s      r-   test_sort_checkzTestPPolyCommon.test_sort_check  sM    HHq!fq!fq!f-.HH[!j%A.j%A.r3   c                 l    t        t              5  t        ddgddg       d d d        y # 1 sw Y   y xY w)Nrh   r%   r   )r'   rm   r   rX   s    r-   test_ctor_czTestPPolyCommon.test_ctor_c  s1    :& 	"1a&1a&!	" 	" 	"s   *3c                 F   t         j                  j                  d       d}t        j                  t         j                  ddt         j                  j                  d      z  df         }dt         j                  j                  |dz   t        |      dz
  dd      z  dz
  }t        t        fD ]  } ||d d d df   |d d       }|j                  |d d dd f   |dd          ||d d dd f   |dd        }|j                  |d d d df   |d d         |||      }t        |j                  |j                         t        |j                  |j                         t        |j                  |j                         t        |j                  |j                          y )	N  r>   r   r=   r?   r%   rh   r   )rC   randomseeduniquer   randr`  r   r   r  r   r   r+   )r)   orderr+   r   clspppp2pp3s           r-   r  zTestPPolyCommon.test_extend  sS   
		tIIbeeArBIINN2$66:;<biinnU1Wc!fQh15595> 	*CQq!tWaf%BIIa!"gqv&a23i23(CJJqCRCy!CR&)a)CBDD#%%(BDD#%%(CEE355)CEE355)	*r3   c                 `   t         j                  j                  d       t        j                  ddd      }t         j                  j	                  dd      }t        j                  ddd      }t         j                  j	                  dd      }t
        t        fD ]  } |||      } |||      } |||      }|j                  ||dd         t        j                  dddd	
      }	t        j                  ddd      }
t         ||	       ||	             t         ||
       ||
              y )Nr  r   rh   r  r%   r9   r  r   F)endpoint)	rC   r  r  r,  r  r   r   r  r   )r)   r+   r   rJ   c2r  pp1r  pp_combxi1xi2s              r-   test_extend_diff_ordersz'TestPPolyCommon.test_extend_diff_orders  s    
		tKK1a IINN1a [[Aq!YY^^Aq!5> 	4Ca)Cb"+C!QiGNN2r!"v& ++aC%8C++aC(CCHgcl3CHgcl3	4r3   c                    t         j                  j                  d       d}t        j                  t         j                  j	                  ddd            }t         j                  j                  |dz   |j                  d   dz
  dd      }t        t        fD ]  } |||      } ||d d d df   |d d       }|j                  |d d dd f   |dd          ||d d dd f   |dd        }|j                  |d d d df   |d d        t        |j                  |j                         t        |j                  |j                         t        |j                  |j                         t        |j                  |j                          y )Nr   r>   r=      rh   r%   r   )rC   r  r  sortuniformr  r  r   r   r  r   r   r+   )r)   r  r+   r   r  rb  p1p2s           r-   test_extend_descendingz&TestPPolyCommon.test_extend_descending  s>   
		qGGBII%%aR01IINN519aggaj1na;5> 	'CAq	AQq"1"uXq"v&BIIa12h"#'Qq"#vY"#'BIIa3B3i3B(BDD!##&BDD!##&BDD!##&BDD!##&	'r3   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   r9   r  r  r}  r>   r  )r>   r  r9   r  r  ).r   r   r   r&   r2   r7  r8  皙?r   )rC   r  r  r  r  r   r   r  rL   r'   rm   object)r)   r   r+   xpr  rb  s         r-   
test_shapezTestPPolyCommon.test_shape!  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r3   c                 D   t         j                  j                  ddddd      }t        j                  t         j                  j                  d            }t         j                  j                  dd      }t        t
        fD ]  } |||      }d	 }t        d
|||        y )Nr   r   r9   r  r  r}  r>   r  c                      ||       y r   r2   )r  r  r  s      r-   r  z3TestPPolyCommon.test_concurrency.<locals>.worker_fn<  s	    r
r3   r=   )rC   r  r  r  r   r   r   )r)   r   r+   r  r  r  r  s          r-   r  z TestPPolyCommon.test_concurrency3  s~    IINN1b!Q*GGBIINN2&'YY^^Aq!5> 	?CAYF $B	62>	?r3   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?r9   r   )	rC   r  r  r  r-  r.  r   r   r   )r)   r+   r   c_rec_imr  r  rb  p_rep_imnus              r-   test_complex_coefz!TestPPolyCommon.test_complex_coefB  s    
		uGGBII$$R()IIW%3VVQVVdYYa 5> 	>C1Is4|Sq\TtA >"b	R="b	R=>	>r3   c                    t         j                  j                  d       t         j                  j                  dddddd      }|j                  }t         j                  j                  d      }d	D ]N  }|j                  |d
z      }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   Q dD ]0  }t        t        fD ]  }t        t        |fi t        ||       ! 2 y )Nr  r>   r  r9   r  r  r   )rh   r%   r   rh   r%   r>   rh   rk   r%   )rA   r  r9   r  )r   r+   rj   )rC   r  r  r  r  r  r   r   r   
derivativeantiderivativerj   r'   rm   r   )r)   r   c_sr  rj   mr+   r  rb  res
targ_shaper  s               r-   	test_axiszTestPPolyCommon.test_axisN  s   
		uIINN1aAq!,ggYYf%  	-DQA		qs+,Au~ -14(ssyyCT!V$4s5Dz$ACQL$PPPPe $Z"((2S4\A
yyJ... q!$/::<q!$/::1=q!$/>>@q!$/>>qAC -B 77aff,,,	--	-& " 	LDu~ Lj#KQT1JKL	Lr3   N)r/   r0   r1   r  r  r  r  r  r  r  r  r  r2   r3   r-   r  r    s1    /"
*,42'*V$?
>Lr3   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r/   r0   r1   r2   r3   r-   Pr  l      r3   r  c                       e Zd Zy)TestPolySubclassing.BNr  r2   r3   r-   Br  o  r  r3   r  c                 *   t         j                  j                  d       t        j                  t         j                  j                  d            }t         j                  j                  d      }| j	                  ||      | j                  ||      fS )Nr  r>   )r  r%   )rC   r  r  r  r  r  )r)   r+   r   s      r-   _make_polynomialsz%TestPolySubclassing._make_polynomialsr  sb    
		tGGBII$$Q'(IIV$vva|TVVAq\))r3   c                     | j                         \  }}||fD ]-  }|j                         }|j                  |j                  k(  r-J  |j                         }|j                  |j                  k(  sJ y r   )r  r  	__class__r  )r)   r  bprb  pdppas         r-   test_derivativez#TestPolySubclassing.test_derivativex  sn    '')Bb 	/AB;;",,...	/ !||s}},,,r3   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   rh   r#  )rC   r  r  r  r   r  r`  r   r  from_spliner  )r)   r+   r*   splr  s        r-   test_from_splinez$TestPolySubclassing.test_from_spline  s    
		tGGBEE!RYY^^B/234IINN3q6"QQVV$||tvv%%%r3   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)}}&&&r3   c                     g d}dgdgdgg}| j                   j                  ||      }|j                  | j                   k(  sJ y )Nr   rh   r%   r>   )r  from_derivativesr  )r)   r+   r*   r  s       r-   test_from_derivativesz)TestPolySubclassing.test_from_derivatives  sD    S1#sOVV$$Q*||tvv%%%r3   N)r/   r0   r1   r   r  r   r  r  r  r  r  r  r2   r3   r-   r  r  k  s3    E E *-&'&r3   r  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)	TestPPolyc                    t        j                  ddgddgddgg      }t        j                  g d      }t        ||      }t         |d      t        j                  d	             t         |d
      t        j                  d             y )Nrh   r  r%   r9   r>   r  r   r&   rh   333333?Q@ffffff?p=
ף@rC   rL   r   r   r   r)   r   r+   rb  s       r-   test_simplezTestPPoly.test_simple  sl    HHq!fq!fq!f-.HH[!!QK#

+? @A#

+K LMr3   c                    t        j                  ddgddgddgg      }t        j                  g d      }t        ||d	      }t         |d
      t        j                  d             t         |d      t        j                  d             t         |d
d      t        j                  d             t         |dd      t        j                  d             y )Nrh   r  r%   r9   r>   r  r  periodicr  g?r  333333ӿr  g@gffffff@r   r  s       r-   test_periodiczTestPPoly.test_periodic  s    HHq!fq!fq!f-.HH[!!QJ/#

#=>	@$

#MN	P 	#q	2::k#:;$
BJJ/B$CDr3   c                 |   t        j                  ddgddgddgg      }t        j                  g d      }t        j                  g d      }t        ||d	
       dD ]]  }||j                  _        ||j                  _        t        ||      } ||      }t        j
                  |      j                         r]J  y )Nrh   r  r%   r9   r>   r  r  )r   r7  r8  r  r  rP  )rC   rL   r   rQ  rR  rA  rB  )r)   r   r+   r   rR  r   rD  s          r-   rT  zTestPPoly.test_read_only  s    HHq!fq!fq!f-.HH[!xx&a
+& 	+I )AGG )AGGaAT7D;;t$((***	+r3   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 )Nrh   rA   )rC   rD   rH   r!   )powerr"  kr  s       r-   binom_matrixz/TestPPoly.test_descending.<locals>.binom_matrix  sT    		%!)$,,R3A		%!)$AaATrT4R4Z= r3   r   r>   r=   r  r?   r=   rh   r   r%   sizerA   Tr  r   r  r   vIh%<=r   r9   r%   -q=)rC   r  RandomStater  r  diffrD   dotr  r   r   r  r  	integrateroots)r)   r  rngr
  r  r+   cahh_powersr  capcdpcdpar  x_testpa_dpd_dpa_ipd_ir!  r$  int_aint_droots_droots_as                             r-   test_descendingzTestPPoly.test_descending  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r3   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%   rh   r>   r  r  r9   r9   r  r9   r%   rh   r%   r>   )r  r%   rh   r%   r>   )
rC   r  r  rL   r   r+   r  r   r  r  )r)   r   r+   rb  dpips         r-   test_multi_shapezTestPPoly.test_multi_shape  s   IINN1aAq)HH[!!QKssyyAGG###ssyyAGG###v||qwwqr{***1%&,,0DDDD\\^ttzz_,,,ttzz_,,,r3   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  rh   r  r%   r9   r>   r  r   r  r  r  r  r  )	rC   r  r  rL   r@  r   construct_fastr   r   r  s       r-   test_construct_fastzTestPPoly.test_construct_fast  s    
		tHHq!fq!fq!f-U;HH[!  A&#

+? @A#

+K LMr3   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   rh   )r  r&   gQ?333333?)
rC   r  r  r  r  r   r   _ppoly_eval_1r   _ppoly_eval_2)r)   r  r   r+   rb  r  expecteds          r-   #test_vs_alternative_implementationsz-TestPPoly.test_vs_alternative_implementations  s    ii##D)HHQBGGBEE!SXXb\1,-.!QKUU&' Ar*"x( 1Qq51b1"adX.r3   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   rh   r  r   )NTFr  )rC   r  r  r  r   r  r`  r   r   r  r,  r   r   r   rf   )r)   r  r+   r*   r  r  r/  r$  ppptr   r  extraprb  s                 r-   r  zTestPPoly.test_from_spline  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	2r3   c                 >   t         j                  j                  d       t        j                  g dg      j                  }t        j                  g dg      j                  }t        j                  ddgg      j                  }t        j                  ddg      }t        ||      }t        ||      }t        ||      }t        |j                         j                  |j                         t        |j                  d      j                  |j                         y )	Nr  )r  r>   r%   rh   )r   r  r%      r  r   rh   r%   )	rC   r  r  rL   r  r   r   r  r   )r)   r   dcddcr+   r  dppddpps           r-   test_derivative_simplez TestPPoly.test_derivative_simple)  s    
		tHHl^$&&XX}o&((hh'(**HHaV1a[BlS!}))3551a(**DFF3r3   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   rh   r  r   r>   )rC   r  r  r  r   r  r`  r   r   r  r,  r  r   r   r)   r  r+   r*   r  r  r/  dxs           r-   test_derivative_evalzTestPPoly.test_derivative_eval7  s    ii##D)GGBEE!SXXb\1,-.HHSVQQs#[[As#1+ 	<BBr2Jb#r(:;	<r3   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 ]0  }t         |||       |j                  |      |      d	|fz  
       2 y )Nr  r   r   rh   r9   r#  r  r   r=   zdx=%dr  )rC   r  r  r  r   r  r`  r   r   r  r,  r  r   r  rF  s           r-   r  zTestPPoly.test_derivativeC  s    ii##D)GGBEE!SXXb\1,-.HHSVQQ!$s#[[As#2, 	5BBr2J(9b(9"(=$+reO5	5r3   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 )Nru   r   rh   )r   r   r  r   r+   )r)   rb  s     r-   test_antiderivative_of_constantz)TestPPoly.test_antiderivative_of_constantP  sz    B4&1a&!((*,,eaS1#JA.G.I.IJ((*,,eaS1#JA.G.I.IJr3   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 )	Nru   r&   r   rh   r   )r;   rh   r%   r%   r   )	r   r  r   r   r+   r   r  rC   r   )r)   rb  qs      r-   #test_antiderivative_regression_4355z-TestPPoly.test_antiderivative_regression_4355V  s    B9+y)q#hA/0[)Aq)2::c?;

1Q4!A$;/

3	)r3   c                    t         j                  j                  d       t        j                  g dg dg      j                  }t        j                  g dg dg      j                  }t        j                  g dg dg      j                  }t        j                  g d      }t        ||      }|j                         }|j                  d	      }|j                         }t        |j                  |       t        |j                  j                  |j                         t        |j                  j                  |j                         t        |j                  j                  |j                         y )
Nr  )r>   r%   rh   )r   r         ?)rh   rh   rh   r   )r   r   rQ        ?)      ?gUUUUUU?r&   r   r   )r   r   g      ?rR  g*?)r   rS  rh   r%   )
rC   r  r  rL   r  r   r  r   r+   r   )	r)   r   iciicr+   r  ippiippiipp2s	            r-   test_antiderivative_simplez$TestPPoly.test_antiderivative_simple`  s   
		t HHi0133 XX|%=>?AA hh-HJ KKL1 	HH\"1a[!  #""$q!&#%%(		355)r3   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 ]j  }	|j                  |	      }d	}
|
|j                  d d
 z  d|
z
  |j                  dd  z  z   }t         ||j                  dd         ||      dd||	fz         l  y )Nr  r   rh   r?   r%   r9   rJ  r=   r  rA   r   z
dx=%d k=%d)r   r   )rC   r  r  r,  r  r`  r   r   r  r  r  r  r   r   r+   )r)   r  r+   r*   r  r  rG  rV  r  r  rr  s               r-   !test_antiderivative_vs_derivativez+TestPPoly.test_antiderivative_vs_derivativex  s*   ii##D)KK1b!1$HHSVQQ!$s#2, 	KB##B'C ..$CBDD#%%( 2Y KnnQ'SUU3BZ<1q5#%%)*;;CEE!"IH%)<2q'3IKK	Kr3   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   rh   r9   rJ  r=   r   r   r   )rC   r  r  r  r   r  r`  r   r   r  r  r  r   r,  r   r   )
r)   r  r+   r*   r  r  rG  r  spl2r/  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_!%'	'r3   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%   rh   r%   r%   )r%   rh   r>   r>   r  gA?g_p   ?g:0yE>r   )rC   rL   r  r   r  r   r  r   )r)   r   r+   rb  r.  r  s         r-   test_antiderivative_continuityz(TestPPoly.test_antiderivative_continuity  sw    HHlL1244HH[!!QK 	::TB ]]_acc"r3   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   rh   r9   rJ  )r  ?Fcheck_0d)r  rc  Tr  )rC   r  r  r  r   r  r`  r   r   r  r  r  r   r   rv   rB  )
r)   r  r+   r*   r  r  r!  r$  igrV  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Dr3   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rh   r%   r  r;   r   r:          ru   rP  rh   r  )rC   rL   rQ  rR  r   r  rA  rB  )r)   r+   r   rR  r  rD  s         r-   test_integrate_readonlyz!TestPPoly.test_integrate_readonly  s    HHYHHr2hc
RIBx@A& 	+I )AGGaA;;q!$D;;t$((***	+r3   c           	         t        j                  g d      }t        j                  ddgddgddgddgg      }t        ||d      }|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 Nri  r;   r   r:   rj  ru   r  r  r  rh   r   ir  r%   r   r)  rn  r9   g      /@r  r   rA   r>   i)rC   rL   r   r  r   r   r  r)   r+   r   r  I
period_ints         r-   test_integrate_periodicz!TestPPoly.test_integrate_periodic  s@   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r3   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   rh   r+  r%   r?   r>   rJ  gV瞯Ҽg     ?r   r   )	rC   r,  r
   r   r   r  r  r   r   )r)   r+   r*   r  r  r[  s         r-   
test_rootszTestPPoly.test_roots  s|    KK1b!1$FF2a4LQQ!$s#HHJqI~!y.126#;U3r3   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 )	NrA   rS  r   )r   r  r5  ru   r  g333333?r:   rh   )	rC   rL   r  r   r   r  r   rq   solve)r)   r   r+   r  constc1r  s          r-   test_roots_idzerozTestPPoly.test_roots_idzero  s     HHr4j1a&2t*5688HH'(1a[
sBFFJ7	9 VVX
1a4EBl		%(sBFFJ7	9r3   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   rh   r   )r   r   r  rC   r   ru  r  s       r-   test_roots_all_zerozTestPPoly.test_roots_all_zero	  s    S1#JF!QK	Arvv;/
QK0
B'VaV!QK	Arvvq"&&#9:
Q266$:;
B'r3   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)rh   r   rA   )rA   r   r   r   g       r;   Fr  )rC   rL   r  r   r   r  r   r)   r   r+   r  s       r-   test_roots_repeatedzTestPPoly.test_roots_repeated  ss    
 HHj*-.00HHZ 1a[
BJJc{$;<U3RZZ5FGr3   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 )Nrh   rA   r  r&   F)discontinuityr   )rC   rL   r  r   r   r  r   ru  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Kr3   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   rP  r  r=   r?   r%   rh   r>   F)r  rf   r  )r  rf   (z) r = r;   r   )r   r   r   r   )rC   r  r  r  r  r   r  r`  r   ru  r  reprr   r   )r)   r  numrf   r  r+   r   r  r*   r[  ijrrvalcmpvalr  s                   r-   test_roots_randomzTestPPoly.test_roots_random4  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)#yr3   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  rh   r      r>   )rh   r%   rh   r   r   ignore)r  g|=r   )rC   r  r  r  r  r~  r  complexr   _croots_poly1rv   rB  abserrstateravelr   
zeros_like)	r)   r  r  r   r*   wr  cresr  s	            r-   test_roots_crootszTestPPoly.test_roots_crootsT  s   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   rh   TFNr  F皙皙?gGz?gzGʿru   r   )rC   rL   r  r   r  r  rv   rB  r  r   anyr   )r)   r   r+   rf   r  pp_dpp_is          r-   r  zTestPPoly.test_extrapolate_attrr  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r3   N)r/   r0   r1   r  r  rT  r)  r/  r2  r9  r  rD  rH  r  rL  rO  rY  r\  r_  ra  rg  rk  rq  rs  rx  rz  r}  r  r  r  r  r2   r3   r-   r  r    s    NE+/Cb-N/2.4
<5K)*0K0' #E*
+B8	49&( 
HL$@E<Er3   r  c                   N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)	TestBPolyc                 v    ddg}dgg}t        ||      }t         |d      t        j                  d             y )Nr   rh   r>   r7  rs   r   r   rC   r   r)   r+   r   r  s       r-   r  zTestBPoly.test_simple  s5    FSE1a[3B0r3   c                 z    ddg}dgdgg}t        ||      }t         |d      t        j                  d             y )Nr   rh   r>   r7  ggfffff@r  r  s       r-   test_simple2zTestBPoly.test_simple2  s:    FS1#J1a[3N!;<r3   c                 ~    ddg}dgdgdgg}t        ||      }t         |d      t        j                  d             y )Nr   rh   r>   r  r8  g433333@r  r  s       r-   test_simple3zTestBPoly.test_simple3  sC    FS1#sO1a[3

DE	Gr3   c                     ddg}dgdgdgdgg}t        ||      }t         |d      t        j                  d             y )Nr   rh   r%   r  g:On?r  r  s       r-   test_simple4zTestBPoly.test_simple4  sK    FS1#sQC 1a[3

 (. /	
r3   c                     ddg}dgdgdgdgdgg}t        ||      }t         |d      t        j                  d             y )Nr   rh   r   r%   r  g	h"l@r  r  s       r-   test_simple5zTestBPoly.test_simple5  sO    FS1#sQC!%1a[3

 &( )	
r3   c                 j   g d}ddgddgddgg}t        ||d      }t         |d      t        j                  d             t         |d	      t        j                  d
             t         |dd      t        j                  d             t         |d	d      t        j                  d             y )Nr   rh   r>   r>   r   r%   r  r  g333333@gHzG?g[(\?rh   r  r  r  s       r-   r  zTestBPoly.test_periodic  s    VaVaV$1aZ03J!784"**^"<=3
BJJx$894RZZ%<=r3   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=   rh   r  r7  r  rA   Tr  r   r  r   r  r   r  r  )rC   r  r  r  r  rq   r   r   r  r  r  )r)   r  r
  r  r+   r  r  r  r  r   r!  r"  r#  r$  r!  r$  r%  r&  s                     r-   r)  zTestBPoly.test_descending  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%*,	,/	,r3   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%   rh   r>   r  r  r9   r+  r,  )
rC   r  r  r  rL   r   r+   r  r   r  )r)   r  r   r+   rb  r-  s         r-   r/  zTestBPoly.test_multi_shape  s    ii##D)HHQ1a#HH[!!QKssyyAGG###ssyyAGG###v||qwwqr{***!Q &&&17712;*>>>>\\^ttzz_,,,r3   c           	          ddg}dgdgdgg}t        ||      }d}|dz  }t         ||      t        j                  dd|z
  z  d|z
  z  d|z  d|z
  z  z   d|z  |z  z                y )Nr   r%   r>   rh   r  r7  r  )r)   r+   r   r  xvalr#  s         r-   test_interval_lengthzTestBPoly.test_interval_length  s}    FS1#sO1a[1H4

1!9ac?U1Wac]#BQU1W#LM	
r3   c                     g d}ddgddgddgg}t        ||      }t         |d      t        j                  d             t         |d      t        j                  d             y )	Nr  r>   r   r%   r  gGzG?333333?r  r  r  s       r-   test_two_intervalszTestBPoly.test_two_intervals  sX    VaVaV$1a[3K!893N!;<r3   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>   rh   r  r  r  Fr  g @)r   r  rC   rv   rB  r  )r)   r+   r   r  rf   bp_ds         r-   r  zTestBPoly.test_extrapolate_attr   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::<<<	=r3   N)r/   r0   r1   r  r  r  r  r  r  r)  r/  r  r  r  r2   r3   r-   r  r    s;    1=G	



> ,D-
==r3   r  c                   N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)TestBPolyCalculusc                 &   g d}ddgddgddgg}t        ||      }|j                         }t         |d      t        j                  d             t         |d      t        j                  d             t        t        j                  d	D cg c]  } |d|       c}      t        j                  g d
             t        t        j                  d	D cg c]  } |d|       c}      t        j                  g d             y c c}w c c}w )Nr  r>   r   r%   r  r  r  r  rh   r%   r>   )r  r{   r;   )r  ru   r   )r   r  r   rC   r   )r)   r+   r   r  bp_derr  s         r-   r  z!TestBPolyCalculus.test_derivative  s    VaVaV$1a[sRZZ%9:sRZZ_5 	

)#DBBsBK#DE

#78	
 	

)#DBBsBK#DE

<0	
 $E $Es   D	Dc                    t         j                  j                  d      }d\  }}t        j                  |j                  |            }|j                  ||dz
  f      }t	        ||      }t        j                  |      }t        |      D ]W  }|j                         }|j                         }t        j                  |d   |d   d      }	t         ||	       ||	             Y y Nr  r9   r   rh   r   rA      )rC   r  r  r  r   r   r  r  r  r,  r   )
r)   r  r  r  r+   r   r  r  dr  s
             r-   test_derivative_ppolyz'TestBPolyCalculus.test_derivative_ppoly!  s    ii##D)1GGCJJqM"JJ1Q3x 1a[''+q 	,ABBQqT1R5"-BBrFBrF+		,r3   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  rh   r*  r   rA   r  )
rC   r  r  r  rq   r   r,  r  r   r  )
r)   r  r  r  r+   r   ccr  r  r  s
             r-   test_deriv_inplacez$TestBPolyCalculus.test_deriv_inplace0  s    ii##D)1GGCJJqM"JJ1Q3x  668Q\* 	ABr1BQqT1R5"-B1X A2q	+;2==+;B+?@A	Ar3   c           
         g d}ddgddgg}t        ||      }|j                         }t        j                  ddd      }t	         ||      t        j
                  |dk  |dz  dz  d|z  |dz  dz
  z  d	z         d
d
       y )Nr  r   rh   r>   r   r%   r:   r&   g      ?r  r   r   )r   r  rC   r,  r   where)r)   r+   r   r  bixxs         r-   rY  z,TestBPolyCalculus.test_antiderivative_simple=  s     VaV1a[ [[Ar"2aQ),rRUQY)?$)FH"	0r3   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   rA   r   r  r  )	rC   r  r  r  r   r,  r   r  r  r)   r  r+   r   r  r  s         r-   test_der_antiderz"TestBPolyCalculus.test_der_antiderQ  s    ii##D)GGCJJrN#JJ}%1a[[[1quc*8))+668<2U	8r3   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   rA   r=   r%   r  r  )
rC   r  r  r  r   r   r  r,  r   r  )r)   r  r+   r   r  r  r  s          r-   test_antider_ppolyz$TestBPolyCalculus.test_antider_ppoly[  s    ii##D)GGCJJrN#JJ}%1a[''+[[1qub),))!,R0,))!,R0u5	Jr3   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=   rh   rA   r   r  r  )rC   r  r  r  r   r  r+   r   r  s         r-   test_antider_continuousz)TestBPolyCalculus.test_antider_continuousg  s    ii##D)GGCJJrN#JJw1a['')TT!BZ2:2:U	@r3   c                 N   t         j                  j                  d      }t        j                  |j                  d            }|j                  d      }t	        ||      }t        j                  |      }t        |j                  dd      |j                  dd      ddd       y )	Nr  r   r  r   rh   r  F)r   r   re  )	rC   r  r  r  r   r   r  r   r  )r)   r  r+   r   r  r  s         r-   rg  z TestBPolyCalculus.test_integrateq  s    ii##D)GGCJJrN#JJw1a[''+Q*Q*UU	Tr3   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 )
Nrh   r   r%   r:   r   F)r   re  r  T)r   r   r  rC   r   rv   )r)   r   r+   r$  b1s        r-   test_integrate_extrapz'TestBPolyCalculus.test_integrate_extrapz  s    SEF!QK 	Aq)2::b>"U	4 1aU+xxQ*+++Qt<

2UU	Dr3   c                    t        j                  g d      }t        j                  ddgddgddgddgg      }t        j                  t	        ||      d      }|j                         } |d	       |d
      z
  }t        |j                  d
d	      |       t        |j                  dd      |       t        |j                  dd      d|z         t        |j                  dd       |d       |d      z
         t        |j                  dd       |d       |d
      z
   |d	      z    |d      z
         t        |j                  dd       |d       |d
      z
   |d	      z    |d      z
         t        |j                  dd       |d       |d
      z
   |d	      z    |d      z
  d	|z  z          t        |j                  dd       |d       |d      z
         t        |j                  dd       |d       |d      z
         t        |j                  dd       |d       |d      z
  d|z  z
         y rm  )rC   rL   r   r  r   r  r   r  rn  s         r-   rq  z)TestBPolyCalculus.test_integrate_periodic  s   HHYHHr2hc
RIBx@A""5A;JGqTAaD[
Aq):6C,j9C,a*n=C-qv#?C+QqTAaD[1Q4-?!C&-HIHf5!qtad*QsV3	5C0!qtad*QsV3a*nD	F 	Ar*AaD1Q4K8B,adQqTk:As+QqTAaD[1z>-IJr3   c                 <   dgg}ddg}t        ||      }t        j                  ddd      }t         |j	                  d      |       |j                         |      dd       t         |j	                  d      |       |j                  d      |      dd       y )Nrh   r   r  rA   r  r  )r   rC   r,  r   r  r  )r)   r   r+   r$  r  s        r-   test_antider_negz"TestBPolyCalculus.test_antider_neg  s    SEF!QK[[Ar"(R(,.@a.>.>.@.D"	0Q+-AQ-=-=b-A"-E"	0r3   N)r/   r0   r1   r  r  r  rY  r  r  r  rg  r  rq  r  r2   r3   r-   r  r    s?    
 ,A0(8
J@TDK00r3   r  c                   $    e Zd Zd Zd Zd Zd Zy)TestPolyConversionsc                     g d}ddgddgddgg}t        ||      }t        j                  |      }t        j                  |      }ddg}t	         ||       ||             t	         ||       ||             y )	Nr  r>   r%   rh   r   r  r7  ffffff?)r   r   r  r  r   )r)   r+   r   r  r  r  r  s          r-   test_bp_from_ppz#TestPolyConversions.test_bp_from_pp  sw    VaVaV$1a[##B'((,3Z22'2B(r3   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  )
rC   r  r  r  r   r   r  r  r,  r   )
r)   r  r  r  r+   r   r  r  r  r  s
             r-   test_bp_from_pp_randomz*TestPolyConversions.test_bp_from_pp_random  s    ii##D)1GGCJJqM"JJ1Q3x 1a[##B'((,[[1qub)22'2B(r3   c                     g d}ddgddgddgg}t        ||      }t        j                  |      }t        j                  |      }ddg}t	         ||       ||             t	         ||       ||             y )Nr  r>   rh   r  r%   r7  r  )r   r   r  r  r   )r)   r+   r   r  r  r  r  s          r-   test_pp_from_bpz#TestPolyConversions.test_pp_from_bp  sw    VaVaV$1a[''+$$R(3Z22'2B(r3   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>   rh   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)r/   r0   r1   r  r  r  r  r2   r3   r-   r  r    s    	))	)
'r3   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   rh   r%   r>   r:   rs   r   _construct_from_derivativesr   )r)   rw  s     r-   test_make_poly_1z)TestBPolyFromDerivatives.test_make_poly_1  s*    ..q!aS1#>RH%r3   c                     t        j                  ddddgdg      }t        |g d       t        j                  ddddgdg      }t        |g d       t        j                  dddgddg      }t        |g d       y )Nr   rh   )ru   ru   ru   r%   r>   )r:   rn  ru   )r:   g      ru   r  r)   rw  r  c3s       r-   test_make_poly_2z)TestBPolyFromDerivatives.test_make_poly_2  sx    ..q!aVaSAL) ..q!aVaSAN+ ..q!aS1a&AN+r3   c                     t        j                  ddg ddg      }t        |g d       t        j                  dddgg d      }t        |g d       t        j                  ddddgdd	g      }t        |g d
       y )Nr   rh   r  r  )ru   竪?g@r  )r  r%   r>   )ru   gUUUUUU	@g
@r  r%   r>   )ru   r  rs   r  r  r  s       r-   test_make_poly_3z)TestBPolyFromDerivatives.test_make_poly_3  su    ..q!YD12 ..q!aS)D23 ..q!aVaVD./r3   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   r9   rh   r  r;   Frd  ru   )	rC   r  r  r   r   r  r  r   r  )r)   r  yaybr   r  r  s          r-   test_make_poly_12z*TestBPolyFromDerivatives.test_make_poly_12  s    ii##E*UU1cjjm#$UU1cjjm#$--aB;1QW:1v&q 	!ABrFBqEE:BrFBqEE:B	!r3   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   rh   )r   r9   r%   r>   r  r   )rC   r  r  r   _raise_degreer,  r   )
r)   r  r+   r  r  r   r  rw  r  r  s
             r-   test_raise_degreez*TestBPolyFromDerivatives.test_raise_degree
  s    ii##E*F1JJ1aA'1a[  A&Bl[[Ar"2B(r3   c                 J    t        t        t        j                  ddgdg       y )Nr   rh   r'   rm   r   r  rX   s    r-   
test_xi_yiz#TestBPolyFromDerivatives.test_xi_yi  s    j%"8"81a&1#Fr3   c                 \    g d}dgdgdgg}t        t        t        j                  ||       y )Nr   r   rh   r   r  )r)   r/  r   s      r-   test_coords_orderz*TestBPolyFromDerivatives.test_coords_order  s,    cA3_j%"8"8"bAr3   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;   r7  ru   r  gffffff?r:   r)  r;   )r   r  r   r  r  r   rC   r   )r)   r/  r   r  ppdr  s         r-   
test_zerosz#TestBPolyFromDerivatives.test_zeros  s    !fqcAq6Aq6*##B+ttzzV###mmo2 	6BBrFBJJsO4CGRZZ_5	6r3   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  rh   ru   r%   )rC   r  r  r   r  )r)   r  r  r  r  r/  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r9   r   r%   )r  r   r  r  r   r  )r)   r  r  r/  r   r  r  yys           r-   test_random_12z'TestBPolyFromDerivatives.test_random_122  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   r/  r   orders)r  r'   rm   r   r  r   r)   r  r  r/  r   s        r-   test_order_zeroz(TestBPolyFromDerivatives.test_order_zero;  sD    1%%a+Bj%"8"8 	0"A.	0r3   c           
          d\  }}| j                  ||      \  }}t        j                  ||d|z  dz
         t        t        t        j                  fi t        ||d|z         y )Nr  r%   rh   r  r  )r  r   r  r'   rm   r   r  s        r-   test_orders_too_highz-TestBPolyFromDerivatives.test_orders_too_highA  sb    1%%a+Br2ac!e4j%"8"8 	2"AaC0	2r3   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  r9   r  r%   rh   rA   r  r  )r  r   r  r  r   r  rC   allclose)r)   r  r  r/  r   r  r  r  s           r-   test_orders_globalz+TestBPolyFromDerivatives.test_orders_globalI  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Jr3   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   rh   rA   r  r%   r  )	r  r  r  r   r  r   r  rC   r  )r)   r  r  r/  r   or  r  r+   r  r  s              r-   test_orders_localz*TestBPolyFromDerivatives.test_orders_locala  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  r9   rh   r  r  r   r%   )rC   r  r  r  r   r  r   r  )r)   r  r  r  r/  r   r  s          r-   test_yi_trailing_dimsz.TestBPolyFromDerivatives.test_yi_trailing_dimsm  s    ii##D)1WWSZZ!_%ZZ1aAq)*##B+ttzzac1aA....r3   c                    t        j                  d      }t        j                  ddgdgdgg|      }t	         |d      t        j
                  d             t        j                  d      }t        j                  ddgdgdgg|      }t	         |d      t        j
                  d             d}t        j                  ddgdgdgg|      }t	         |d      t        j
                  d             d}y )Nrh   r   r  )rC   int32r   r  r   r   int64)r)   r  rb  s      r-   test_gh_5430z%TestBPolyFromDerivatives.test_gh_5430u  s    
 !""Aq6QC!:fEAaD"**Q-0!""Aq6QC!:fEAaD"**Q-0""Aq6QC!:fEAaD"**Q-0r3   N)r/   r0   r1   r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r  r2   r3   r-   r  r    sV    &
,0
!)GB
	6!02K0
A/r3   r  c                   z    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zej                  j                  d
        Z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  r9   r   rh   r  r   )	rC   r  r  r  r,  r   r6  r  r   )r)   r  r   r+   r/  rb  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r3   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  r9   r  r  r   rh   r   r%   r   r   r  *   )Nr   r   r   rh   )rh   r   )r%   r>   )r   r%   r  r  )rC   r  r  r  r,  r~  r`  r   fillr   r   evaluate_ndrH   rL   intcc_r  _ppoly2d_evalr   r   r  )r)   r  r   r+   r*   r/  r   r"  r#  rb  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	6r3   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  r9   r  r  r   r   r   rh   r%   r=   r>   (   )Nr   r   r   r   rh   r   rh   r   r   )r%   r>   r   )r  r   r%   r)  r  )	rC   r  r  r  r,  r   _ppoly3d_evalr   r  )r)   r  r   r+   r*   r,   r/  r   zirb  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		6r3   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  r9   r  r  r   r   r=   r   r   rh   r%   r>   r   r  )rC   r  r  r  r,  r   _ppoly4d_evalr   )r)   r  r   r+   r*   r,   ur/  r   r6  uirb  r"  r#  s                 r-   test_simple_4dzTestNdPPoly.test_simple_4d  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r3   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  r9   r   rh   r  r)  r%   )rC   r  r  r  r,  r   r  r   r   r   r  )r)   r  r   r+   rb  r-  r  dp1s           r-   test_deriv_1dzTestNdPPoly.test_deriv_1d  s    ii##D)HHQNKK1c"At \\aS\!1a[mmocee$ !%1a["cee$r3   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  r9   r  r  r   r   r   rh   r%   r=   r>   r)  r3  )r   r   r>   )rC   r  r  r  r,  r   r   	transposer  r   r   r  )
r)   r  r   r+   r*   r,   rb  r  r-  r>  s
             r-   test_deriv_3dzTestNdPPoly.test_deriv_3d  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	;r3   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  )rh   rh   rh   r>   r  r9   r   rh   r  r9   r%   r  r>   )rh   r   r  )r   r%   r   r  )
rC   r  r  rl   r,  r   r  r  r   r   )r)   r  r   r+   r*   r,   rb  r.  r/  r   r6  s              r-   test_deriv_3d_simplez TestNdPPoly.test_deriv_3d_simple	  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r3   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  r9      r  r   rh   r   r%   r>   rA   r(  )r   r&   )r  r  )r5  r8  c                      | |f      S r   r2   )r+   r*   rb  s     r-   <lambda>z/TestNdPPoly.test_integrate_2d.<locals>.<lambda>>	  s    1aV9 r3   gh㈵>)epsrelepsabs)r   F)r   r   re  r   )rC   r  r  r  r,  rA  rH   r  rq   r   fix_continuityr   r  r    r   r   r  )r)   r  r   r+   r*   cxrangesrf  ig2err2rb  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		2r3   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  r9   r  rF  r  r   r   rh   r%   r   r>   r   )r8  r  rk   r4  r3  r   )	rC   r  r  r  r,  r   integrate_1dr  r   )r)   r  r   r+   r*   r,   rb  r:  vr!  r$  pxpaxpypaypzpazs                    r-   test_integrate_1dzTestNdPPoly.test_integrate_1dC	  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Dr3   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  r9   r  r  r   r   r  r   rh   r   r   r%   r=   r>   c                     j                  d      }j                  d      }j                  d      } ||||f       y )Nr1  r  )r  )r  r  r/  r   r6  r  s        r-   r  z/TestNdPPoly.test_concurrency.<locals>.worker_fnh	  sA    "%B"%B"%BRr3   )rC   r  default_rngr  r,  r   r   )r)   r   r+   r*   r,   rb  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1r3   N)r/   r0   r1   r$  r/  r7  r<  r?  rB  rD  rP  rZ  rY  rZ  thread_unsafer  r2   r3   r-   r   r     sP     6:6( (%(;>B(2BE4 [[2 2r3   r   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   rh   Nc              3   ^   K   | ]$  }|f   j                   d    |z
  dz
  z  z   & yw)r   rh   N)r  )r   r  r   r  r  s     r-   r   z _ppoly_eval_1.<locals>.<genexpr>{	  s;      , !A#QWWQZ\!^,, ,s   *-)	rC   zerosr`  r  r  r   searchsortedsumr  )	r   r+   xpsrI  r  r  r[  r  r  s	   `      @@r-   r6  r6  q	  s    
((CHaggaj)
*C3 	26R!VvvC!HOOAr"Q&1Itr"AacF""""" ,qwwqz*, ,AaC	 Jr3   c                    |d   }|d   }| j                   d   }t        j                   |      }t        j                  |      }t        j                  |      }||k\  ||k  z  }	|||	 <   |j	                  |	      }
t        j
                  ||
      dz
  }|j                  dt        |            }| }|
|j                  |      z
  }t        j                  ||      }t        j                  t        t        |
            D cg c])  }t        j                  ||ddf   |dd||   f         + c}      }|||	<   ||_         |S c c}w )z4Evaluate piecewise polynomial manually (another way)r   rA   rh   )NN)r  rC   r  
empty_likecompressrb  clipr`  takevanderrL   r  r  )ra  breaksr   r*  r!  r$  K	saveshaper  maskr  indxsr  r  Vr  valuess                    r-   r7  r7  	  s    q	Ar
AQAI88D>D
--
CAI$!)$DCJ	t	BOOFB')EJJq#f+&E	BE""D
		$!AXXs2wPArvva1gr!U1X+7PQFCICIJ Qs   .Ec                 d    |dk  rt        d      ||kD  ryt        ||z
  dz   |      | ||z
  z  z  S )z
    d^n (x**y) / dx^n
    r   zinvalid derivative orderrh   )rm   r   )r+   r*   r"  s      r-   _dpowrt  	  sC     	1u344	
QAEAIq!AAJ..r3   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   rA   rh   rC   r~  r`  r   r  r  zipr   rb  r  rt  )r   rc  r   ynewr  rI  nxnyjoutr+   r*   j1j2s1s2r  k1k2s                     r-   r.  r.  	  s    
z
((CI<qww
/CWWRa[FB!#dD/2 fq!AqQ+"Q%)+AqQ+"Q%)+CI__RUA&*__RUA&*Ar]Ar]
# 	0BAGGAJ' 0"R%'"R%'"R/0B1./B1./ 00	0 D	), Jr3   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
    Nr2  r   r>   r   rA   rh   r%   rv  )r   rc  r   rx  znewr  rI  ry  rz  nzr{  r+   r*   r,   r|  r}  j3r~  r  s3r  r  r  k3s                           r-   r5  r5  	  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 Jr3   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   rA   rh   r%   r>   rv  )r   rc  r   rx  r  unewr  rI  mxmymzmur{  r+   r*   r,   r:  r|  r}  r  j4r~  r  r  s4r  r  r  r  k4s                                 r-   r9  r9  	  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	;> Jr3   r   )?scipy._lib._array_apir   r   r   r   rY  r   r'   numpyr   r	   r
   r   rC   scipy.interpolater   r   r   r   r   r   r   r   r   r   r   r   r   r   scipy.specialr   r   r   scipy._lib._gcutilsr   r   scipy._lib._testutilsr   scipy.integrater    r!   r#   r5   r^  rh  rZ  r\  r4  r  r  r  r  r  r  r  r   r6  r   r7  rt  r.  r5  r9  r2   r3   r-   <module>r     s4    +  ( ( - - - - & $ ; 9 !  U Up6 6r; r;j $79J#KL: M:,XL XLv,& ,&^kE kE\E= E=P\0 \0~.' .'bd dNg2 g2T  .0VV .	/!H%P*r3   