
    tKgt                    
   d dl mZmZmZmZmZmZ d dlmZ	 d dlZd dl
mZmZmZmZ d dl
Zd dlmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZm Z  d dlm!Z! d dl"m#Z#m$Z$ d d	l%m&Z& d d
lm'Z'  G d d      Z( G d d      Z) G d d      Z* G d d      Z+ G d d      Z, G d d      Z- G d d      Z. G d d      Z/ G d d      Z0 G d d      Z1 G d d       Z2 G d! d"      Z3d# Z4ejj                  fd$Z6d% Z7d)d&Z8d)d'Z9d)d(Z:y)*    )assert_assert_equalassert_almost_equalassert_array_almost_equalassert_array_equalassert_allclose)raisesN)mgridpisinpoly1d)interp1dinterp2dlagrangePPolyBPolysplrepsplev
splantidersplintsprootAkima1DInterpolatorNdPPolyBSpline)pochgamma)_ppoly)assert_deallocatedIS_PYPY)nquad)binomc                       e Zd Zd Z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       l/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/interpolate/tests/test_interpolate.pytest_interp2dzTestInterp2D.test_interp2d   sS    QqWa3h&'1#a%L./Q1 0//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   g      Y)nparangex5x10y10reshapex25x2y2arrayx1y1y210y102y225y25y235y325y210_edge_updatedy102_edge_updated
fill_valuer)   s    r-   setup_methodzTestInterp1D.setup_method#   s   ))B-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rd   rV   r]   )rA      rA   )rA   )rA   rA   r   rg   r%   r>   rd   axisrV   r=   ri   )rA   rA   rA   r2   r;   )r   rE   rF   rB   rK   rN   rI   onesr'   
ValueErrorrH   rJ   rO   rL   rM   r)   rd   s     r-   test_validationzTestInterp1D.test_validationL   s   
?DTXXtxxd3TXXtxxd}M? 	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        t        | j                  | j                        j                         t        t        | j                  | j                  d      j                          t        t        | j                  | j                        j
                         t        t        | j                  | j                  d      j
                          t        t        j                  t        | j                  | j                        j                               t        t        | j                  | j                  d      j                  d       t        t        | j                  | j                  d      j                  d       t        t        | j                  | j                        j                  d       t        t        | j                  | j                        j                  d       t        t        | j                  | j                  d	      j                  d       t        t        | j                  | j                        j                  | j                         t        t        | j                  | j                        j                  | j                         t        t        | j                  | j                        j                  | j                         y )
NF)copy)bounds_error      @rV   )      ?r:   r   rg   rj   )r   r   rE   rF   rp   rq   rB   isnanrV   r   ri   rN   rO   r   r+   r*   rW   s    r-   	test_initzTestInterp1D.test_init   s    	488,112HTXXtxxe<AAAB488,99:HTXXtxxeDQQQR$((DHH5@@ABXdhhSALL	XdhhZHSS	!Xdhh166:Xdhh		277;Xdhh		:??C8DHHdhh799488D8DHHdhh799488D8DHHdii8::DIIFr3   c                    t        | j                  | j                        }t        | j                  d d d   | j                  d d d         }t         || j                        | j                         t         |d      t	        j
                  dg             t         |g d       |g d             t        | j                  d d d   | j                  d d d   d      }t         || j                        | j                         t        | j                  d d d   | j                  d d d   d      }t        t        || j                         t        | j                  | j                        }t        | j                  d d d   | j                  d d d d df         }t         || j                         || j                               y )NrA   333333?g333333@gffffff@      @F)assume_sortedT)	r   rE   rF   r   rB   rK   r'   rl   rN   )r)   interp10interp10_unsortedinterp10_assume_kwinterp10_assume_kw2interp10_y_2dinterp10_y_2d_unsorteds          r-   test_assume_sortedzTestInterp1D.test_assume_sorted   sf   DHHdhh/$TXXdd^TXXdd^D!"3DHH"=txxH!"3C"8"((C5/J!"3O"D"*?";	= &dhhttndhhttn49;!"4TXX">I&txx"~txx"~59; 	j"5txx@ !4995!)$((4R4.$))AttG:L!M!-"9"8"B	Dr3   c                 4    dD ]  }| j                  |        y )N)r]   r^   )_check_linearrm   s     r-   test_linearzTestInterp1D.test_linear   s    )Dt$ *r3   c                    t        | j                  | j                  |      }t         || j                        | j                         t         |d      t	        j
                  dg             t         |g d      t	        j
                  g d             t        | j                  | j                  |d      }t         |g d      g dd	       t        |dd
      }t        t        t         | j                  | j                  fi | y )Nrc   rx   ry   re   rf         r   	      )rA   r   r   r   +=rtolTrd   rV   rq   
r   rE   rF   r   rB   rK   r   dictr'   rl   )r)   rd   r|   extrapolatoroptss        r-   r   zTestInterp1D._check_linear   s    DHHdhhT:!(488"4dhh?!(3-3%A!(?";"$((?";	=  $((+8:_5&U	4 ,!%' 	j(DHHdhhG$Gr3   c                    t         j                  t         j                  t         j                  t         j                  fD ]S  }t        j
                  d|      }|} t        ||d      |      }t        |j                  |       t        ||d       U g d}t         j                  dd	g} t        ||      |      }t        ||d       y )
N   dtyper]   rc   V瞯<atolr   rg   r%   r   rg   )rB   float16float32float64
longdoublerC   r   r   r   r   nan)r)   dtypr+   r*   yps        r-   test_linear_dtypeszTestInterp1D.test_linear_dtypes   s     ZZZZZZ]]$D 		!4(AA.!QX.q1B4(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 ]u  }t        j                  | dz        j                  |      }|D ]F  }|j                  |      }	|D ].  }
t        |||
d      }t         ||	      |d| d	| d
|        0 H w  y )N)r^   r\   r_   r`   r   r=   r   rr   Frd   rq   Hz>z,  r   err_msg)rB   r   r   r   	complex64
complex128rC   expastyper   r   )r)   dt_rdt_rcspline_kindsdtxr+   dtyr*   dtnxnewrd   fs               r-   test_slinear_dtypesz TestInterp1D.test_slinear_dtypes   s     

BJJ

3bmm44@C		!Rs+AFFA2c6N))#.C88C=D ,$Q5I'$36%r#au0EG !-    r3   c                 ~   t        | j                  | j                  d      }t         || j                        | j                         t         |d      t	        j
                  dg             t         |d      t	        j
                  dg             t         |g d      t	        j
                  g d             y )Nr`   rc   rx         ?ry   r   rE   rF   r   rB   rK   r)   r|   s     r-   
test_cubiczTestInterp1D.test_cubic   sz    DHHdhhW=!(488"4dhh?!(3-3%A!(3-3%A!(?";"$((?";	>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 )NrZ   rc   rx   rt   r   ry   r:   rz   rz   re   rf   r   r   r   r   r   r   r   Tr   r   r)   r|   r   r   s       r-   test_nearestzTestInterp1D.test_nearest  s     DHHdhhY?!(488"4dhh?!(3-">!(3-">!(?";"$((<"8	;  $((+8:_5$5	2 ,!%' 	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[   rc   rx   rt   r   r:   ry   r   re   rf   r   r   r   r   Tr   r   r   s       r-   test_nearest_upzTestInterp1D.test_nearest_up  s     DHHdhh\B!(488"4dhh?!(3-">!(3-">!(?";"$((<"8	;  $((+8:_5$5	2 ,!%' 	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 )%Nra   rc   rx   rt   r   ry   r:   r7   rz   re   rf   r   r   r   r   r   rA   r9   r         r9   r            rh   r   r9   r   r=   r   Tr   r   r   rg   rA   rd   rV   r{   r   rA   r   rg   r%   r>   r9   rg   rA   r%   r   rg   rA   r   rg   Fr@   r   rE   rF   r   rB   rK   r   r   rN   rO   r   r'   rl   rT   rU   r)   r|   r   interpolator1Dinterpolator2Dinterpolator2DAxis0r   s          r-   test_previouszTestInterp1D.test_previous-  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 )$Nrb   rc   rx   r:   r   ry   )rr   rz   rz   re   rf   r   r   r   r   r   r   r9   r   r=   r   r   rh   r   rg   r   Tr   r   r   r   r   rA   r   r   Fr?   r   r   s          r-   	test_nextzTestInterp1D.test_nextr  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\   rc   rx   rt   r   ry   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'   rl   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                               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)rV   rq   rd   gffffff&@g333333g333333)@gL3@)r   r;   r7         "@      &@)TFFFF)FFFFTT)rq   rd   r   r   )r;   r   r;   )r;   rt         5@r   )r;   r7   r   )	r   rE   rF   rV   r   rB   rK   _check_boundsr   )r)   rd   extrap10raises_bounds_errors       r-   _bounds_checkzTestInterp1D._bounds_check  sA   DHHdhh4??).T; 	8D>288DOO+DE8D>288DOO+DE8tftftftf%E$FG88DOO4	7811!xx(CDF88%G%G%I J	K
 'txx,02 	  !4dDA  !4dDA  !46FM  !46FMO,r3   c                    t        j                  d      j                  t              }t        j                  d      j                  t              }t	        |||t         j
                  d      } ||dz
        }t        t        j                  |d                t        |t         j                  t         j
                  |d d f          y )Nr=   Fr   rg   r   rA   )
rB   rC   r   intr   r   r   ru   r   r_)r)   rd   r+   r*   cyis         r-   _bounds_check_int_nan_fillz'TestInterp1D._bounds_check_int_nan_fill  s    IIbM  %IIbM  %QeLq1uXA !"beeBFFAcrFN&;<r3   c                 V    dD ]$  }| j                  |       | j                  |       & y )N)r]   r`   rZ   ra   rb   r^   r\   r_   )r   r   rm   s     r-   test_boundszTestInterp1D.test_bounds  s*    5Dt$++D15r3   c                 t   t        | j                  | j                  |dd      }t         |d      d       t         |d      d       t         |ddg      ddg       | j                  | j
                  | j                  | j                  fD ]  }t        | j                  ||ddd	      }t         |d      d       t         |d      d       t         |ddg      d       t        | j                  ||ddd	      }t         |d      d       t         |d      d       |j                  d
k(  r'ddgg|j                  d   z  g|j                  d   z  }nddgg|j                  d   z  }t         |ddg      |        g d}| j
                  | j                  fD ]'  }t        t        t         | j                  ||d|d	       ) t        | j                  | j                  |d|d	      }t         |d      g dgdz         t         |d      g dgdz         t         |ddg      ddgddgddgggdz         ddg}t        t        t         | j                  | j                  |d|d	       | j                  | j
                  | j                  fD ]  }t        | j                  ||d|d	      }ddg}|j                  d
k(  r|g|j                  d   z  }t         |d      |       t         |d      |       ddgddgg}|j                  d
k(  r|g|j                  d   z  }t         |ddg      |        t        j                  g d      df}| j
                  | j                  fD ]'  }t        t        t         | j                  ||d|d	       ) t        | j                  | j                  |d|d	      }t         |d      d       t         |d      g dgdz         t         |ddg      ddgddgddgggdz         t        j                  ddg      df}t        t        t         | j                  | j                  |d|d	       | j                  | j
                  | j                  fD ]  }t        | j                  ||d|d	      }t         |d      d       ddg}|j                  d
k(  r|g|j                  d   z  }t         |d      |       ddgddgg}|j                  d
k(  r|g|j                  d   z  }t         |ddg      |        g dg df}| j
                  | j                  fD ]'  }t        t        t         | j                  ||d|d	       ) t        d      D ]  }|dk(  rt!        d |D              }t        | j                  | j                  |d|d	      }t         |d      g dgdz         t         |d      g dgdz         t         |ddg      ddgddgddgggdz          ddgddgf}t        t        t         | j                  | j                  |d|d	       | j
                  | j                  | j                  fD ]  }t        | j                  ||d|d	      }ddg}|j                  d
k(  r|g|j                  d   z  }t         |d      |       ddg}|j                  d
k(  r|g|j                  d   z  }t         |d      |       ddgddgg}|j                  d
k(  r|g|j                  d   z  }t         |ddg      |        ddgddgg}| j                  | j
                  | j                  fD ]'  }t        t        t         | j                  ||d|d	       ) t        d      D ]  }|dk(  rt        j                  |      }t        | j                  | j                  |d|d	      }t         |d      ddgddgg       t         |d      ddgddgg       t         |ddg      ddgddggddgddggg        ddgddggddgddggf}| j                  | j
                  | j                  fD ]'  }t        t        t         | j                  ||d|d	       ) t        d      D ]  }|dk(  r0t        j                  |d         t        j                  |d         f}t        | j                  | j                  |d|d	      }t         |d      ddgddgg       t         |d      ddgddgg       t         |ddg      ddgddggddgddggg        y )N)d   Fr   r=   r   r   rA   )rd   ri   rV   rq   r>   rg   r   )r      ,  r%   r   r   )r   8r   r   c              3   F   K   | ]  }t        j                  |        y wr   )rB   rK   ).0r   s     r-   	<genexpr>z1TestInterp1D._check_fill_value.<locals>.<genexpr>P  s     "C
1288A;
s   !i  i  ii0)r   rE   rF   r   rR   rS   rP   rQ   rD   ndimshaper'   rl   rB   rK   rangetuple)r)   rd   interpr*   resultrV   iis          r-   _check_fill_valuezTestInterp1D._check_fill_value  s4	   $((DHH4%0uF!&*c2!&+t4!&#r"3dC[A ))TYY		488<Adggqt"),5BF%fRj#6%fSk37%fc2Y&7= dggqt")45JF%fRj#6%fSk48vv{ #;-!''!*45
B+3%fc2Y&7@! =& %
))TYY'A*h!ju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1Adggqt")3%IF3ZFvv{ AGGAJ.%fRj&9%fSk6:Cj3*-Fvv{ AGGAJ.%fc2Y&7@ 2 hh12C8
))TYY'A*h!juN ( $''4994b%/eE!&*c2!&+0B/Ca/GH!&#r"3c{8<c{8<c{7D 6EGH6I 	J
 hhd|,c2
j(DGGTYYT*5	J))TYY1Adggqt")3%IF%fRj#6D\Fvv{ AGGAJ.%fSk6:SkD#;/Fvv{ AGGAJ.%fc2Y&7@ 2 )/:
))TYY'A*h!juN ( (BQw""C
"CC
dggtyyt")3%IF%fRj?2Ca2GH%fSk4F3G!3KL%fc2Y&7D#;<@#;<@#;;H :IKL:M N  TlS#J/
j(DGGTYYT*5	J))TYY1Adggqt")3%IF3ZFvv{ AGGAJ.%fRj&9D\Fvv{ AGGAJ.%fSk6:SkD#;/Fvv{ AGGAJ.%fc2Y&7@ 2" Cj4,/
))TYY1A*h!juN 2 (BQwXXj1
dggtyyt")3%IF%fRjC:d|2LM%fSkS#Jt3MN%fc2Y&7C:<?:;G<@$<<@$<;I:J K  d|eU^4SzD$<02
))TYY1A*h!juN 2 (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 r3   c                 4    dD ]  }| j                  |        y N)r]   rZ   r`   r^   r_   r\   ra   rb   )r  rm   s     r-   test_fill_valuezTestInterp1D.test_fill_value  s    1D""4(1r3   c                     t        | j                  | j                  d      }t        |j                  d       d|_        t        |j                  d       y )Ng     ^@rs   g     t@)r   rE   rF   r   rV   )r)   r  s     r-   test_fill_value_writeablez&TestInterp1D.test_fill_value_writeable  s@    $((DHH?V&&.!V&&.r3   c           	         t        | j                  | j                  |      }t         |t	        j
                  ddgddgg            t	        j
                  ddgddgg             t        t         |d      t        j                               t         |d      j                  d       t        | j                  | j                  |      }t         |d      t	        j
                  dd	g             t         |t	        j
                  ddg            t	        j
                  ddgd	d
gg             t        | j                  | j                  d|      }t         |d      t	        j
                  ddg             t         |t	        j
                  ddg            t	        j
                  ddgddgg             t	        j
                  ddgddgg      }t         ||      t	        j
                  ddgddggddgd
dggg             t         ||      t	        j
                  ddgdd	ggddgddggg             y )Nrc   rr   r7   r:         @rx   r2   rt   r         (@r   ri   rd   rz   g      *@g      .@g      1@r8         @g      ,@)r   rE   rF   r   rB   rK   r   
isinstancendarrayr   r   rN   rO   )r)   rd   r|   	interp210	interp102x_news         r-   _nd_check_interpzTestInterp1D._nd_check_interp  s    DHHdhhT:!(288b"XBx4H+I"J"$((RHr2h+?"@	B 	
8C="**56Xc](("- TXXtyyt<	!)B-2s)1DE!)BHHb"X,>"?"$((RHsCj+A"B	D TXXtyyqtD	!)B-3*1EF!)BHHb"X,>"?"$((RHr2h+?"@	B 2r(RH-.!)E"2"$((b"XBx,@.13Z#s,D,F #G	H 	")E"2"$((b"XSz,B.0"XSz,B,D #E	F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    t         ||      j                  |	|        y )N)   r9         r  r   r  )r%   r>   rg   r  rg   )	rB   rC   prodrG   	enumerater   r   listr   )
r)   rd   ar*   nsr+   r,   rI   bs
             r-   _nd_check_shapezTestInterp1D._nd_check_shape  s    )BIIbggaj!))1-aLDAq		!AAAD1A%adAt<5!))'2S8BQAAa!H%aekk1dC !r3   c                 V    dD ]$  }| j                  |       | j                  |       & y )N)r]   r`   r^   r_   rZ   r\   ra   rb   )r  r"  rm   s     r-   test_ndzTestInterp1D.test_nd  s*    1D!!$'  &1r3   c                    t        j                  g d      }||dz  z  }|j                  |      }t        |||      }t	        |d d  ||      d d        t        j
                  ddd      }t        ||j                  |      }t        ||j                  |      }t	         ||      j                   ||             t	         ||      j                   ||             y )N)
rg         @r>   g@r  g@g@g       @g      #@r=         ?       @rc   rA   rg   r=      )rB   rK   r   r   r   linspacerealimag)	r)   r   rd   r+   r*   r   xicrcis	            r-   _check_complexzTestInterp1D._check_complex  s    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  )r/  rB   r   r   rm   s     r-   test_complexzTestInterp1D.test_complex  s6    1Dd3t41r3   zTest not meaningful on PyPy)reasonc                     t        j                  dd      }t        j                  dd      }t        t        ||      5 } |ddg       ~d d d        y # 1 sw Y   y xY w)Nr   rg   皙?皙?)rB   r)  r   r   )r)   r+   r*   r  s       r-   test_circular_refszTestInterp1D.test_circular_refs  sM     KK1KK1!Q/6C: 0//s   AAc                     dD ]I  }t        j                  g dt         j                        }t        |||      }t	         ||      |       K y )N)rZ   ra   rb   )r   2      r   rc   )rB   rK   int8r   r   )r)   rd   r+   r  s       r-   test_overflow_nearestz"TestInterp1D.test_overflow_nearest  s<    3DRWW5A!QT*B%beQ/ 4r3   c                 0   t        j                  d      j                  t              }|j	                         }t         j
                  |d<   dD ]F  }t        |||      } |ddg      }t        t        j                  |      j                                H y )Nr=   r  )r\   r^   rc   g@r  )
rB   rC   r   floatrp   r   r   r   isfiniteall)r)   r+   r*   rd   irvalss         r-   test_local_nanszTestInterp1D.test_local_nans  ss     IIbM  'FFHvv!'D!QT*BsCj>DBKK%))+, (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 ]s  }t        j                  |      } ||       ||      }	}t        t        j                  |	      j                                t        |j                  |	j                         u  y )Nr   r>   )r_   r`   rc   r  rg   r9   )rB   rC   r   r=  rp   r   r   asarrayr   ru   r?  r   r   )
r)   r+   r*   ynrd   r@  irnr   outoutns
             r-   test_spline_nanszTestInterp1D.test_spline_nans  s     IIaL&FFHVVX1*D!QT*B1bt,CQFaVaV$45zz$'qE3q6T**,-SYY

3	 6 +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=   r`   rc   )rB   rk   r   rC   r'   rl   r   )r)   r+   r*   s      r-   test_all_nanszTestInterp1D.test_all_nans  sE    GGBK"&& IIbM:&Q( '&&   A##A,c                 t   t        j                  dd      }t        j                  | dz        }t        j                  ddd      }dD ]m  }||j                  _        d|j                  _        dD ]D  }t        |||	      } ||      }t        t        j                  |      j                                F o y )
Nr   r=   rr   r   r4  TFF)r]   rZ   r\   r^   r_   r`   rc   )	rB   rC   r   flags	writeabler   r   r>  r?  )r)   r+   r*   r   xnew_writeablerd   r   rA  s           r-   test_read_onlyzTestInterp1D.test_read_only  s    IIaFFA28yyAs#+N#1DJJ  %AGG"Q-wD)--/0	" ,r3   rd   )r]   rZ   r[   ra   rb   c                     t        dgdg|dd      }t         |g d      g d       t        dgdg|d	      }t        t        d
      5   |d       d d d        y # 1 sw Y   y xY w)Nr   r  Fr<   )rd   rq   rV   )rg   r   r%   )r%   r  r=   Tr   zx_new is abovematchr:   )r   r   r'   rl   )r)   rd   r   s      r-   test_single_valuezTestInterp1D.test_single_value*  s]    
 cUQCd ')1[>:6cUQCd>:-=>cF ?>>s   	AA&N)r]   )+r/   r0   r1   rX   rn   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  r  r"  r$  rB   r   r/  r1  pytestmarkskipifr   r6  r;  rB  rI  rK  rR  parametrizerV  r2   r3   r-   r5   r5   !   s   '!RB9HG&D4%H&+*G">H*H*C&JC,J:1-0=2_LB)/F@D' $&==x 6 5 [[(EF G0	-4$)1 [[G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%   rg   r  r>   )r   rB   rC   lencoeffsr   r   )r)   pxsyspls        r-   test_lagrangezTestLagrange.test_lagrange:  sH    ;YYs188}%rUb_!!((2995r3   N)r/   r0   r1   rd  r2   r3   r-   r\  r\  8  s    6r3   r\  c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestAkima1DInterpolatorc                     t        j                  dd      }t        j                  g d      }t        ||      }t        j                  g d      }t        j                  g d      }t	         ||      |       y )Nr;   r   r;   r:   rt   rr   r:   rz         @ri  g@ffffff@rr   r;   r&   rt   r   r&        @g      @rj  g      @g@g333333!@g#@r8   r;   g      ?r:   r   g     @?g     @g.袋@g^@gn @gGNB@grcߖ@g	I@rr   rB   rC   rK   r   r   r)   r+   r*   akr,  r   s         r-   	test_evalz!TestAkima1DInterpolator.test_evalC  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   rh  makimamethodrk  )r;   gF??r:   g?g?gg{'@g>J(j@g?@gq@g@g9~@go
@rr   rn  ro  s         r-   test_eval_modz%TestAkima1DInterpolator.test_eval_modP  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   rh  r:   rk  rm  )rB   rC   rK   column_stackr   r   ro  s         r-   test_eval_2dz$TestAkima1DInterpolator.test_eval_2da  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   rh  )r   r%   r%   r   r:   rg   rr   r  rk  )   r%   r%   rm  )rB   rC   rK   emptyr   r   )r)   r+   y_r*   rp  r,  r   yi_s           r-   test_eval_3dz$TestAkima1DInterpolator.test_eval_3dr  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   )rB   rK   vstackTr   r   )r)   r+   r*   rp  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   rh  z9Extending a 1-D Akima interpolator is not yet implementedrT  )rB   rC   rK   r   rW  r	   r(   extend)r)   r+   r*   rp  rU  s        r-   test_extendz#TestAkima1DInterpolator.test_extend  s[    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   rh  z `method`=invalid is unsupported.rT  invalidrt  )rB   rC   rK   rW  r	   r(   r   )r)   r+   r*   rU  s       r-   test_mod_invalid_methodz/TestAkima1DInterpolator.test_mod_invalid_method  sM    IIb#HHEF2]].e<1Y7 =<<rL  c                 :   t        j                  ddd      }|dz  }t        j                  ddd      }|dz  }t        ||d	      }t        ||d
	      }t        ||d 	      }t         ||       ||      dd       t	         ||      dd t        j
                  dt         j                               t	         ||      dd t        j
                  dt         j                               t         ||d	       ||      d       t        | ||      d       y )Nr9   r   r%   r   r=      Tre   Fr   )	equal_nanr   r   r  rA   r>   r   )rB   r)  r   r   r   fullr   )r)   r+   r*   x_exty_extak_trueak_falseak_nones           r-   test_extrapolate_attrz-TestAkima1DInterpolator.test_extrapolate_attr  s    KKAr"qDCR(q%a=&q!?%a=4eTXe_Qq)2771bff+=>Xe_R+RWWQ-?@D975>PUVwu~E:r3   c                     t        j                  dd      }t        j                  g d      }|d|z  z
  }d}t        j                  t
        t        f|      5  t        ||       d d d        y # 1 sw Y   y xY w)Nr;   r   rh  y               @zBPassing an array with a complex.*|Casting complex values to real.*rT  )rB   rC   rK   rW  warnsRuntimeWarningDeprecationWarningr   )r)   r+   r*   msgs       r-   r1  z$TestAkima1DInterpolator.test_complex  sa    IIb#HHEF1H S\\>+=>cJ1% KJJs   A//A8N)r/   r0   r1   rq  rv  ry  r  r  r  r  r  r1  r2   r3   r-   rf  rf  B  s0    $$"$"$2B"8;&	&r3   rf  c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestPPolyCommonc                     t        j                  ddgddgddgg      }t        j                  g d      }t        t        t        ||       t        t        t
        ||       y )Nrg   r  r%   r9   r>   r  )r   rg   r&   )rB   rK   r'   rl   r   r   )r)   r   r+   s      r-   test_sort_checkzTestPPolyCommon.test_sort_check  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)Nrg   r%   r   )r'   rl   r   rW   s    r-   test_ctor_czTestPPolyCommon.test_ctor_c  s(    :&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%   rg   r   )rB   randomseeduniquer   randr^  r   r   r  r   r   r+   )r)   orderr+   r   clspppp2pp3s           r-   r  zTestPPolyCommon.test_extend  sN   
		tIIbeeArBIINN2$66:;<biinnU1Wc!fQh15595>CQq!tWaf%BIIa!"gqv&a23i23(CJJqCRCy!CR&)a)CrttSUU+rttSUU+suucee,suucee, "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   rg   r  r%   r9   r  r   F)endpoint)	rB   r  r  r)  r  r   r   r  r   )r)   r+   r   rI   c2r  pp1r  pp_combxi1xi2s              r-   test_extend_diff_ordersz'TestPPolyCommon.test_extend_diff_orders  s    
		tKK1a IINN1a [[Aq!YY^^Aq!5>Ca)Cb"+C!QiGNN2r!"v& ++aC%8C++aC(CCHgcl3CHgcl3 "r3   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=      rg   r%   r   )rB   r  r  sortuniformr  r   r   r   r  r   r   r+   )r)   r  r+   r   r  r`  p1p2s           r-   test_extend_descendingz&TestPPolyCommon.test_extend_descending  s9   
		qGGBII%%aR01IINN519aggaj1na;5>CAq	AQq"1"uXq"v&BIIa12h"#'Qq"#vY"#'BIIa3B3i3B(rttQSS)rttQSS)rttQSS)rttQSS) "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 ]'  } |||      }t         ||      j                  d
       ) t
        t        fD ]  } ||d   |      }t        t        j                   |d            d       t        t        j                   |t        j                  d                  d       t        t        |t        j                  ddgdggt                      y )Nr  r   r   r9   r  r  r{  r>   r  )r>   r  r9   r  r  ).r   r   r   r&   r2   r4  r5  皙?r   )rB   r  r  r  r  r   r   r   r   rK   r'   rl   object)r)   r   r+   xpr  r`  s         r-   
test_shapezTestPPolyCommon.test_shape  s    
		tIINN1b!Q*GGBIINN2&'YY^^Aq!5>CAq	A2o6 "
 5>CAlOQ'A!C&)2.!BHHSM"23R8*aC:u2EV)TU "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   )	rB   r  r  r  r*  r+  r   r   r   )r)   r+   r   c_rec_imr  r  r`  p_rep_imnus              r-   test_complex_coefz!TestPPolyCommon.test_complex_coef%  s    
		u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 ]_  }|j                  |d
z      }t        j
                  t         j                  j                  |d
z               }t        t        fD ]  } ||||      }t        |j                  j                  |||dz    |d | z   ||dz   d  z           ||      }	|d | |j                  z   |d|z   d  z   }
t        |	j                  |
        ||||      j                          ||||      j                  d       ||||      j                          ||||      j                  d      fD ]"  }t        |j                  |j                         $  b dD ]0  }t        t        fD ]  }t        t        |fi t        ||       ! 2 y )Nr  r>   r  r9   r  r  r   )rg   r%   r   rg   r%   r>   rg   rj   r%   )rA   r  r9   r  )r   r+   ri   )rB   r  r  r  r   r  r   r   r   r   
derivativeantiderivativeri   r'   rl   r   )r)   r   c_sr  ri   mr+   r  r`  res
targ_shaper  s               r-   	test_axiszTestPPolyCommon.test_axis1  s   
		uIINN1aAq!,ggYYf% DQA		qs+,Au~14(QSSYY d1f-ET
:Sa\IKe $Z"((2S4\A
SYY
3 q!$/::<q!$/::1=q!$/>>@q!$/>>qACB !!&&1	C & !( "Du~j#KQT1JK & "r3   N)r/   r0   r1   r  r  r  r  r  r  r  r  r2   r3   r-   r  r    s,    /"
-,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  P      r3   r  c                       e Zd Zy)TestPolySubclassing.BNr  r2   r3   r-   Br  S  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%   )rB   r  r  r  r  r  )r)   r+   r   s      r-   _make_polynomialsz%TestPolySubclassing._make_polynomialsV  sb    
		tGGBII$$Q'(IIV$vva|TVVAq\))r3   c                     | j                         \  }}||fD ]2  }|j                         }t        |j                  |j                         4 |j	                         }t        |j                  |j                         y r   )r  r  r   	__class__r  )r)   r  bpr`  pdppas         r-   test_derivativez#TestPolySubclassing.test_derivative\  sa    '')BbABbll3  !R\\3==1r3   c                    t         j                  j                  d       t        j                  t         j                  dt         j                  j                  d      df         }t         j                  j                  t        |            }t        ||d      }| j                  j                  |      }t        |j                  | j                         y )Nr  r   r   rg   r   )rB   r  r  r  r   r  r^  r   r  from_spliner   r  )r)   r+   r*   splr  s        r-   test_from_splinez$TestPolySubclassing.test_from_splinee  s    
		tGGBEE!RYY^^B/234IINN3q6"QQVV$R\\466*r3   c                    | j                         \  }}| j                  j                  |      }t        |j                  | j                         | j
                  j                  |      }t        |j                  | j
                         y r   )r  r  from_bernstein_basisr   r  r  from_power_basis)r)   r  r  r  bp1s        r-   test_conversionsz$TestPolySubclassing.test_conversionsn  s`    '')Bff))"-S]]DFF+ff%%b)S]]DFF+r3   c                     g d}dgdgdgg}| j                   j                  ||      }t        |j                  | j                          y )Nr   rg   r%   r>   )r  from_derivativesr   r  )r)   r+   r*   r  s       r-   test_from_derivativesz)TestPolySubclassing.test_from_derivativesw  s@    S1#sOVV$$Q*R\\466*r3   N)r/   r0   r1   r   r  r   r  r  r  r  r  r  r2   r3   r-   r  r  O  s3    E E *2+,+r3   r  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)	TestPPolyc                     t        j                  ddgddgddgg      }t        j                  g d      }t        ||      }t         |d      d	       t         |d
      d       y )Nrg   r  r%   r9   r>   r  r   r&   rg   333333?Q@ffffff?p=
ף@rB   rK   r   r   r)   r   r+   r`  s       r-   test_simplezTestPPoly.test_simple  sZ    HHq!fq!fq!f-.HH[!!QK# 45# @Ar3   c                    t        j                  ddgddgddgg      }t        j                  g d      }t        ||d	      }t         |d
      d       t         |d      d       t         |d
d      d       t         |dd      d       y )Nrg   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/# :;$!KL#q	;/$
$78r3   c                    t        j                  ddgddgddgg      }t        j                  g d      }t        j                  g d      }t        ||d	
       dD ]d  }||j                  _        ||j                  _        t        ||      } ||      }t        t        j                  |      j                                f y )Nrg   r  r%   r9   r>   r  r  )r   r4  r5  r  r  rN  )rB   rK   r   rO  rP  r   r>  r?  )r)   r   r+   r   rP  r   rA  s          r-   rR  zTestPPoly.test_read_only  s    HHq!fq!fq!f-.HH[!xx&a
+&I )AGG )AGGaAT7DBKK%))+, 'r3   c           	      F   d }t         j                  j                  d       d}dD ]w  }t        j                  t         j                  j	                  dd|dz               }t         j                  j	                  dd|dz   |f	      }t        j
                  |      }|d d d f   t        j                  |dz         d d d
d f   z  } ||      }||z  }	t        j                  |j                  |	      }
|
|z  }t        ||d      }t        |d d d d d
f   |d d d
   d      }t         j                  j	                  ddd      }t         ||       ||      d       t         ||d       ||d      d       |j                         }|j                         }t         ||       ||      d       |j                         }|j                         }t         j                  j	                  ddd      D ]c  \  }}|j                  ||      }|j                  ||      }t        ||d       t         ||       ||      z
   ||       ||      z
  d       e |j                         }|j                         }t        |t        j                  |      d       z y )Nc                     t        j                  | dz         j                  dd      }t        j                  | dz         }t        ||      }|d d dd d df   S )Nrg   rA   )rB   rC   rG   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=   rg   r   r%   sizerA   Tr  r   r  r   vIh%<=r   r9   r%   -q=)rB   r  r  r  r  diffrC   dotr  r   r   r  r  	integrateroots)r)   r  r  r  r+   cahh_powersr  capcdpcdpar  x_testpa_dpd_dpa_ipd_ir  r!  int_aint_droots_droots_as                            r-   test_descendingzTestPPoly.test_descending  s9   	! 			qA		))!RQ78A""2q	1~">B
AqzRYYuqy%9$B$*%EEHU#Ax-C&&c"CxBr1$/Br!TrT'{AddG>BYY&&sB4FBvJ6
?BvqM2fa=uE==?D==?DDL$v,UC
 $$&D$$&D		))#r6:1Q*Q*u59Q$q' 147T!W3D%*,	 ; hhjGhhjGGRWWW%5EBK r3   c                    t         j                  j                  ddddd      }t        j                  g d      }t	        ||      }t        |j                  j                  |j                         t        |j                  j                  |j                         t         |d      j                  |j                  dd         t         |t         j                  j                  dd            j                  d|j                  dd  z          |j                         }t        |j                  j                  d	       |j                         }t        |j                  j                  d
       y )Nr  r%   rg   r>   r  r  r9   r9   r  r9   r%   rg   r%   r>   )r  r%   rg   r%   r>   )rB   r  r  rK   r   r   r+   r   r   r  r  )r)   r   r+   r`  dpips         r-   test_multi_shapezTestPPoly.test_multi_shape  s    IINN1aAq)HH[!!QKQSSYY(QSSYY(QsV\\17712;/Qryy~~a+,22FQWWQR[4HI\\^RTTZZ1RTTZZ1r3   c                 ,   t         j                  j                  d       t        j                  ddgddgddggt              }t        j                  g d	      }t        j                  ||      }t         |d
      d       t         |d      d       y )Nr  rg   r  r%   r9   r>   r  r   r  r  r  r  r  )rB   r  r  rK   r=  r   construct_fastr   r  s       r-   test_construct_fastzTestPPoly.test_construct_fast  ss    
		tHHq!fq!fq!f-U;HH[!  A&# 45# @Ar3   c                    t         j                  j                  d       t         j                  j                  ddd      }t        j                  t         j
                  dt         j                  j                  d      df         }t        ||      }t         j
                  d   }t        |||      }t         ||      |       t        |d d d d df   ||      }t         ||      d d df   |       y )	Nr  r>   r      r   r   rg   )r  r&   gQ?333333?)
rB   r  r  r  r  r   r   _ppoly_eval_1r   _ppoly_eval_2)r)   r   r+   r`  r  expecteds         r-   #test_vs_alternative_implementationsz-TestPPoly.test_vs_alternative_implementations  s    
		tIINN1b"%GGBEE!RYY^^B/234!QKUU&' Ar*"x( 1Qq51b1"ac
H-r3   c                    t         j                  j                  d       t        j                  t         j                  dt         j                  j                  d      df         }t         j                  j                  t        |            }t        ||d      }t        j                  |      }t        j                  ddd      }t         ||      t        ||             t        | }t        j                  |      }t         ||       ||             |\  }}	}
dD ]F  }t        ||	|
|      }t        j                  |      }t        |j                  |j                         H y )	Nr  r   r   rg   r  r   )NTFr  )rB   r  r  r  r   r  r^  r   r   r  r)  r   r   r   r   re   )r)   r+   r*   r  r  r,  r!  ppptr   r  extrapr`  s                r-   r  zTestPPoly.test_from_spline  s   
		tGGBEE!RYY^^B/234IINN3q6"QQs#[[As#2b#/ SM"B2' 1a)F1aV4A!!!$A6 *r3   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%   rg   )r   r  r%      r  r   rg   r%   )	rB   r  r  rK   r  r   r   r  r   )r)   r   dcddcr+   r  dppddpps           r-   test_derivative_simplez TestPPoly.test_derivative_simple  s    
		t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t         j                  j                  d      df         }t         j                  j                  t        |            }t        ||d      }t        j                  |      }t        j                  ddd      }t        dd      D ]   }t         |||      t        |||             " y )Nr  r   r   rg   r  r   r>   )rB   r  r  r  r   r  r^  r   r   r  r)  r   r   r   r)   r+   r*   r  r  r,  dxs          r-   test_derivative_evalzTestPPoly.test_derivative_eval  s    
		tGGBEE!RYY^^B/234IINN3q6"QQs#[[As#1+BBr2Jb#r(:; r3   c                    t         j                  j                  d       t        j                  t         j                  dt         j                  j                  d      df         }t         j                  j                  t        |            }t        ||dd      }t        j                  |      }t        j                  ddd      }t        dd      D ]0  }t         |||       |j                  |      |      d	|fz  
       2 y )Nr  r   r   rg   r9   r   r  r   r=   zdx=%dr  )rB   r  r  r  r   r  r^  r   r   r  r)  r   r   r  r?  s          r-   r  zTestPPoly.test_derivative%  s    
		tGGBEE!RYY^^B/234IINN3q6"QQ!$s#[[As#2,BBr2J(9b(9"(=$+reO5 r3   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 )Nrt   r   rg   )r   r   r  r   r+   )r)   r`  s     r-   test_antiderivative_of_constantz)TestPPoly.test_antiderivative_of_constant2  sz    B4&1a&!Q%%'))51#saV+D+F+FGQ%%'))51#saV+D+F+FGr3   c                    t        ddggg d      }|j                         }t        |j                  ddgddgg       t        |j                  g d       t        |j                  dd      d       t         |d       |d      z
  d       y )Nrt   r&   r   rg   r   r%   r   )r   r  r   r   r+   r   r  )r)   r`  qs      r-   #test_antiderivative_regression_4355z-TestPPoly.test_antiderivative_regression_43558  sv    B9+y)QSSAs8aV,-QSS)$Aq)3/!qtS)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%   rg   )r   r         ?)rg   rg   rg   r   )r   r   rJ        ?)      ?gUUUUUU?r&   r   r   )r   r   g      ?rK  g*?)r   rL  rg   r%   )
rB   r  r  rK   r  r   r  r   r+   r   )	r)   r   iciicr+   r  ippiippiipp2s	            r-   test_antiderivative_simplez$TestPPoly.test_antiderivative_simpleA  s   
		t 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  }t         j                  j	                  t        |            }t        ||dd      }t        j                  |      }t        dd      D ]  }|j                  |      }|j                  |      }t        |j                  |j                         t        |      D ]j  }|j                  |      }d	}	|	|j                  d d
 z  d|	z
  |j                  dd  z  z   }
t         ||j                  dd         ||
      dd||fz         l  y )Nr  r   rg   r?   r%   r9   rC  r=   r  rA   r   z
dx=%d k=%d)r   r   )rB   r  r  r)  r  r^  r   r   r  r   r  r  r   r   r+   )r)   r+   r*   r  r  r@  rO  r  r  rr  s              r-   !test_antiderivative_vs_derivativez+TestPPoly.test_antiderivative_vs_derivativeY  s   
		tKK1b!1$IINN3q6"QQ!$s#2,B##B'C ..$CBDD#%%( 2YnnQ'SUU3BZ<1q5#%%)*;;CEE!"IH%)<2q'3IK  r3   c                 ,   t         j                  j                  d       t        j                  t         j                  dt         j                  j                  d      df         }t         j                  j                  t        |            }t        ||dd      }t        j                  |      }t        dd      D ]T  }|j                  |      }t        ||      }t        j                  ddd      }t         ||      t        ||      d	
       V y )Nr  r   r   rg   r9   rC  r=   r   r   r   )rB   r  r  r  r   r  r^  r   r   r  r   r  r   r)  r   r   )	r)   r+   r*   r  r  r@  r  spl2r,  s	            r-   test_antiderivative_vs_splinez'TestPPoly.test_antiderivative_vs_splineq  s    
		tGGBEE!RYY^^B/234IINN3q6"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%   rg   r%   r%   )r%   rg   r>   r>   r  gA?g_p   ?g:0yE>r   )rB   rK   r  r   r  r   r  r   )r)   r   r+   r`  r'  r  s         r-   test_antiderivative_continuityz(TestPPoly.test_antiderivative_continuity  sw    HHlL1244HH[!!QK 	::TB ]]_acc"r3   c           	         t         j                  j                  d       t        j                  t         j                  dt         j                  j                  d      df         }t         j                  j                  t        |            }t        ||dd      }t        j                  |      }d\  }}|j                  ||      }|j                         }t        | ||       ||      z
         t        |t        |||             d\  }}|j                  ||d	
      }t        | ||       ||      z
         t        t        j                  |j                  ||d
            j!                                y )Nr  r   r   rg   r9   rC  )r  ?)r   r\  Tr  F)rB   r  r  r  r   r  r^  r   r   r  r  r  r   r   r   ru   r?  )	r)   r+   r*   r  r  r  r!  igrO  s	            r-   test_integratezTestPPoly.test_integrate  s   
		tGGBEE!RYY^^B/234IINN3q6"QQ!$s#1\\!Q!CFSVO,F1a-.1\\!QD\1CFSVO,a>?CCEFr3   c                 8   t        j                  g d      }t        j                  ddgddgddgddgg      }dD ]]  }||j                  _        t	        ||      }|j                  dd	      }t        t        j                  |      j                                _ y )
Nrg   r%   r  r;   r   r:          rt   rN  rg   r  )	rB   rK   rO  rP  r   r  r   r>  r?  )r)   r+   r   rP  r  rA  s         r-   test_integrate_readonlyz!TestPPoly.test_integrate_readonly  s    HHYHHr2hc
RIBx@A&I )AGGaA;;q!$DBKK%))+, 'r3   c                 ^   t        j                  g d      }t        j                  ddgddgddgddgg      }t        ||d      }|j                         } |d	       |d
      z
  }t	        |j                  d
d	      |       t	        |j                  dd      |       t	        |j                  dd      d|z         t	        |j                  dd       |d       |d      z
         t	        |j                  dd       |d       |d
      z
   |d	      z    |d      z
         t	        |j                  dd       |d       |d
      z
   |d	      z    |d      z
         t	        |j                  dd       |d       |d
      z
   |d	      z    |d      z
  d	|z  z          t	        |j                  dd       |d       |d      z
         t	        |j                  dd       |d       |d      z
         t	        |j                  dd       |d       |d      z
  d|z  z
         y Nr`  r;   r   r:   ra  rt   r  r  r  rg   r   ir  r%   r   r&  rl  r9   g      /@r  r   rA   r>   i)rB   rK   r   r  r   r  r)   r+   r   r  I
period_ints         r-   test_integrate_periodicz!TestPPoly.test_integrate_periodic  s   HHYHHr2hc
RIBx@A!QJ/qTAaD[
Aq):6C,j9C,a*n=C-qv#?C+QqTAaD[1Q4-?!C&-HIHf5!qtad*QsV3	5C0!qtad*QsV3a*nD	F 	Ar*AaD1Q4K8B,adQqTk:As+QqTAaD[1z>-IJr3   c                    t        j                  ddd      dz  }t        j                  d|z        }t        ||dd      }t	        j
                  |      }|j                         }||dk\  |d	k  z     }t        |t        |      d
       y )Nr   rg   r(  r%   r?   r>   rC  gV瞯Ҽg     ?r   r   )	rB   r)  r   r   r   r  r  r   r   )r)   r+   r*   r  r  rT  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   rL  r   )r   r  r.  rt   r  g333333?r:   rg   )	rB   rK   r  r   r   r  r   rp   solve)r)   r   r+   r  constc1r  s          r-   test_roots_idzerozTestPPoly.test_roots_idzero  s     HHr4j1a&2t*5688HH'(1a[288: #rvvz:	< VVX
1a4EBl399U+ #rvvz:	<r3   c                 `   dgdgg}ddg}t        ||      }t        |j                         dt        j                  g       t        |j                  d      dt        j                  g       t        |j                  d      g        ddgddgg}g d}t        ||      }t        |j                         dt        j                  dt        j                  g       t        |j                  d      dt        j                  dt        j                  g       t        |j                  d      g        y )Nr   rg   r   )r   r   r  rB   r   rl  r  s       r-   test_roots_all_zerozTestPPoly.test_roots_all_zero  s    S1#JF!QK1779q"&&k21771:266{31771:r*VaV!QK1779q"&&!RVV&<=1771:2661bff'=>1771:r*r3   c                    t        j                  g dg dg      j                  }t        j                  g d      }t        ||      }t	        |j                         ddg       t	        |j                  d      dg       y )N)rg   r   rA   )rA   r   r   r   r   r   Fr  )rB   rK   r  r   r   r  r)   r   r+   r  s       r-   test_roots_repeatedzTestPPoly.test_roots_repeated  sa    
 HHj*-.00HHZ 1a[288:Aw/28886<r3   c                    t        j                  dgdgg      j                  }t        j                  g d      }t        ||      }t	        |j                         dg       t	        |j                  d      g        t	        |j                  d      dg       t	        |j                  dd      g        t	        |j                  d      g        t	        |j                  dd      g        y )Nrg   rA   r  r&   F)discontinuityr   )rB   rK   r  r   r   r  rl  rs  s       r-   test_roots_discontzTestPPoly.test_roots_discont  s    HHqcB4[!##HH[!1a[288:u-288%88"= 	288C=3%0288Cu8=rB288C="-288Cu8=rBr3   c                 Z   t         j                  j                  d       d}dD ]l  }t        dd      D ]Y  }t        j                  t         j
                  ddt         j                  j                  d      z  df         }dt         j                  j                  |dz   t        |      dz
  dd	      z  dz
  }t        ||      }dt         j                  j                         fD ]  }|j                  |d
|      }t        d      D ]  }	t        d	      D ]s  }
||	|
f   }|j                  dkD  s||j                  z  } |||      d d |	|
f   } ||d|      d d |	|
f   }d|dt        |       }t        ||z
  |z  dd|       u   \ o t        |dkD  t        |             y )Nr  r   rN  r  r=   r?   r%   rg   r>   F)rv  re   r  )r  re   (z) r = r   r   r   )rB   r  r  r   r  r   r  r^  r   rl  r
  reprr   r   )r)   numre   r  r+   r   r  r*   rT  ijrrvalcmpvalr  s                  r-   test_roots_randomzTestPPoly.test_roots_random  s   
		t(Kq"IIbeeArBIINN2,>'>$BCDbiinnU1Wc!fQh1==A1a[RYY--/0A%[QA"1X!&qA!"1Q3B!ww{ #rww&(&Ea!e&L)+B18C*EEFqU*L()+tBxj&I /Q&0@!$8;!= "* & 1 & ). 	c	49%r3   c           
      P   t         j                  j                  d       t        dd      D ]k  }t         j                  j	                  |dd      }|dk(  r
d|d d ddf<   dt         j                  j                         fD ]  }t        j
                  |j                  t              }t        j                  ||       |dk(  r-t        t        j                  |      j                                qd}d}t        |      D ]7  }|||d f   ||dz
  |z
  z  z  z  }|t        ||d f   ||dz
  |z
  z  z        z  }9 t        j                  d	
      5  ||z  }d d d        |j                         }|t        j                  |          }t!        |dd        n y # 1 sw Y   GxY w)Nr  rg   r      r>   )rg   r%   rg   r   r   ignore)r  g|=r   )rB   r  r  r   r  r|  r   complexr   _croots_poly1r   ru   r?  abserrstateravelr   )r)   r  r   r*   wr  cresr|  s           r-   test_roots_crootszTestPPoly.test_roots_croots0  sb   
		tq"A		q!S)AAv"!Aa%))+,HHQWWG4$$Q*6BHHQKOO-.qA1QtV9q1Q3q5z11CC!D&	A!AJ 677D " [[24KC 3iik288C=.)QU3# - ( 32s   FF%c           	         t        j                  g dg      j                  }t        j                  ddg      }dD ]  }t        |||      }|j	                         }|j                         }|du rt        t        j                   |ddg            j                                t        t        j                   |ddg            j                                t        t        j                   |ddg            j                                t        |j                         dg       t         |ddg      d	d
g       t        t        j                   |ddg            j                                 t        t        j                   |ddg            j                                 t        |j                         ddg        y )Nr   r   rg   TFNr  F皙皙?gGz?gzGʿrA   )rB   rK   r  r   r  r  r   ru   r?  r   r  r   any)r)   r   r+   re   r  pp_dpp_is          r-   r  zTestPPoly.test_extrapolate_attrN  sT   HHj\"$$HHaV.Kq!5B==?D$$&De#T3K15578tSk!23779:tSk!23779:RXXZ!-D#;(H1EFBHHT4+%67;;==>BHHT4+%67;;==>
QG4 /r3   N)r/   r0   r1   r  r  rR  r"  r(  r+  r2  r  r=  rA  r  rE  rH  rR  rU  rX  rZ  r^  rb  rh  rj  ro  rq  rt  rw  r  r  r  r2   r3   r-   r  r  ~  s    B	9-/Cb2B.7.4
<5H**0K0' #G*
-K0	4<&+ 
=C&>4<5r3   r  c                   N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)	TestBPolyc                 P    ddg}dgg}t        ||      }t         |d      d       y )Nr   rg   r>   r4  rr   r   r   r)   r+   r   r  s       r-   r  zTestBPoly.test_simplee  s-    FSE1a[3$r3   c                 T    ddg}dgdgg}t        ||      }t         |d      d       y )Nr   rg   r>   r4  ggfffff@r  r  s       r-   test_simple2zTestBPoly.test_simple2k  s1    FS1#J1a[30r3   c                 X    ddg}dgdgdgg}t        ||      }t         |d      d       y )Nr   rg   r>   r  r5  g433333@r  r  s       r-   test_simple3zTestBPoly.test_simple3q  s8    FS1#sO1a[39	;r3   c                 \    ddg}dgdgdgdgg}t        ||      }t         |d      d       y )Nr   rg   r%   r  g:On?r  r  s       r-   test_simple4zTestBPoly.test_simple4x  s?    FS1#sQC 1a[3 "( 	)r3   c                 `    ddg}dgdgdgdgdgg}t        ||      }t         |d      d       y )Nr   rg   r   r%   r  g	h"l@r  r  s       r-   test_simple5zTestBPoly.test_simple5  sC    FS1#sQC!%1a[3 "( 	)r3   c                     g d}ddgddgddgg}t        ||d      }t         |d      d       t         |d	      d
       t         |dd      d       t         |d	d      d       y )Nr   rg   r>   r>   r   r%   r  r  g333333@gHzG?g[(\?rg   r  r  r  s       r-   r  zTestBPoly.test_periodic  si    VaVaV$1aZ03,4.13
H-4[1r3   c           	         t         j                  j                  d       d}dD ]  }t        j                  t         j                  j	                  dd|dz               }t         j                  j	                  dd|dz   |f      }|d d d	   j                         }t        ||d
      }t        |d d d d d	f   |d d d	   d
      }t         j                  j	                  ddd      }t         ||       ||      d       t         ||d       ||d      d       |j                         }	|j                         }
t         |	|       |
|      d       |j                         }|j                         }t         j                  j	                  ddd      D ]c  \  }}|j                  ||      }|j                  ||      }t        ||d       t         ||       ||      z
   ||       ||      z
  d       e  y )Nr   r>   r  r=   rg   r  r4  r	  rA   Tr  r   r  r   r  r   r  r  )rB   r  r  r  r  rp   r   r   r  r  r  )r)   r  r  r+   r  r  r  r  r  r  r  r  r  r  r!  r  r  s                    r-   r"  zTestBPoly.test_descending  s   
		qA		))!RQ78A""4EAIq>"BBDbDBr1$/Br!TrT'{AddG>BYY&&sB4FBvJ6
?BvqM2fa=uE==?D==?DDL$v,UC
 $$&D$$&D		))#r6:1Q*Q*u59Q$q' 147T!W3D%*,	 ;/ r3   c                 ~   t         j                  j                  ddddd      }t        j                  g d      }t	        ||      }t        |j                  j                  |j                         t        |j                  j                  |j                         t         |d      j                  |j                  dd         t         |t         j                  j                  dd            j                  d|j                  dd  z          |j                         }t        |j                  j                  d	       y )
Nr  r%   rg   r>   r  r  r9   r$  r%  )
rB   r  r  rK   r   r   r+   r   r   r  )r)   r   r+   r`  r&  s        r-   r(  zTestBPoly.test_multi_shape  s    IINN1aAq)HH[!!QKQSSYY(QSSYY(QsV\\17712;/Qryy~~a*+1117712;&	( \\^RTTZZ1r3   c                     ddg}dgdgdgg}t        ||      }d}|dz  }t         ||      dd|z
  z  d|z
  z  d|z  d|z
  z  z   d|z  |z  z          y )Nr   r%   r>   rg   r  r4  r  )r)   r+   r   r  xvalr   s         r-   test_interval_lengthzTestBPoly.test_interval_length  sq    FS1#sO1a[1H4!qs)QqS/E!GQqSM"AAE!G"KLr3   c                     g d}ddgddgddgg}t        ||      }t         |d      d       t         |d      d       y )	Nr  r>   r   r%   r  gGzG?333333?r  r  r  s       r-   test_two_intervalszTestBPoly.test_two_intervals  sF    VaVaV$1a[3-30r3   c           	      ,   ddg}dgdgdgg}t        ||      }dD ]  }t        |||      }|j                         }|du rit        t        j                   |d	d
g            j                                t        t        j                   |d	d
g            j                                t        t        j                   |d	d
g            j                                 t        t        j                   |d	d
g            j                                  y )Nr   r%   r>   rg   r  r  r  Fr  g @)r   r  r   rB   ru   r?  r  )r)   r+   r   r  re   bp_ds         r-   r  zTestBPoly.test_extrapolate_attr  s    FS1#sO1a[.Kq!5B==?De#T3K15578tSk!23779:BHHRs_599;;<BHHT4+%67;;==> /r3   N)r/   r0   r1   r  r  r  r  r  r  r"  r(  r  r  r  r2   r3   r-   r  r  d  s;    %1;))
2 ,D2M1?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                 F   g d}ddgddgddgg}t        ||      }|j                         }t         |d      d       t         |d      d       t         |dd	
       |dd
       |dd
      gg d       t         |dd	
       |dd
       |dd
      gg d       y )Nr  r>   r   r%   r  r  r  r  rg   r  )r  rz   r;   )r  rt   r   )r   r  r   )r)   r+   r   r  bp_ders        r-   r  z!TestBPolyCalculus.test_derivative  s    VaVaV$1a[sX.sS) 	CA31r#!}E,	.CA31r#!}E$	&r3   c                    t         j                  j                  d       d\  }}t        j                  t         j                  j                  |            }t         j                  j                  ||dz
  f      }t	        ||      }t        j                  |      }t        |      D ]W  }|j                         }|j                         }t        j                  |d   |d   d      }t         ||       ||             Y y Nr  r9   r   rg   r   rA      )rB   r  r  r  r   r   r  r   r  r)  r   )	r)   r  r  r+   r   r  r  dr  s	            r-   test_derivative_ppolyz'TestBPolyCalculus.test_derivative_ppoly  s    
		t1GGBII$$Q'(IIa1X&1a[''+qABBQqT1R5"-BBrFBrF+	 r3   c           	         t         j                  j                  d       d\  }}t        j                  t         j                  j                  |            }t         j                  j                  ||dz
  f      }|j	                         |dz  fD ]c  }t        ||      }t        j                  |d   |d   d      }t        |      D ]*  }t         |||       |j                  |      |             , e y )Nr  r  rg   r'  r   rA   r  )
rB   r  r  r  rp   r   r)  r   r   r  )	r)   r  r  r+   r   ccr  r  r|  s	            r-   test_deriv_inplacez$TestBPolyCalculus.test_deriv_inplace  s    
		t1GGBII$$Q'(IIa1X& 668Q\*Br1BQqT1R5"-B1X2q	+;2==+;B+?@  +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   rg   r>   r   r%   r:   r&   g      ?r  r   r   )r   r  rB   r)  r   where)r)   r+   r   r  bixxs         r-   rR  z,TestBPolyCalculus.test_antiderivative_simple  s     VaV1a[ [[Ar"2aQ),rRUQY)?$)FH"	0r3   c                    t         j                  j                  d       t        j                  t         j                  j                  d            }t         j                  j                  d      }t	        ||      }t        j
                  |d   |d   d      }t         |j                         j                         |       ||      dd       y )	Nr  r   r  r=   r%   r>   r   rA   r   r  r  )	rB   r  r  r  r   r)  r   r  r  r)   r+   r   r  r  s        r-   test_der_antiderz"TestBPolyCalculus.test_der_antider%  s    
		tGGBII$$R()II]+1a[[[1quc*8))+668<2U	8r3   c                    t         j                  j                  d       t        j                  t         j                  j                  d            }t         j                  j                  d      }t	        ||      }t        j                  |      }t        j                  |d   |d   d      }t         |j                  d      |       |j                  d      |      dd	       y )
Nr  r   r  r   rA   r=   r%   r  r  )
rB   r  r  r  r   r   r  r)  r   r  )r)   r+   r   r  r  r  s         r-   test_antider_ppolyz$TestBPolyCalculus.test_antider_ppoly/  s    
		tGGBII$$R()II]+1a[''+[[1qub),))!,R0,))!,R0u5	Jr3   c                 x   t         j                  j                  d       t        j                  t         j                  j                  d            }t         j                  j                  d      }t	        ||      j                         }|j                  dd }t         ||dz
         ||dz         dd       y )	Nr  r   r  r=   rg   rA   r   r  r  )rB   r  r  r  r   r  r+   r   r  s        r-   test_antider_continuousz)TestBPolyCalculus.test_antider_continuous;  s    
		tGGBII$$R()IIW%1a['')TT!BZ2:2:U	@r3   c                    t         j                  j                  d       t        j                  t         j                  j                  d            }t         j                  j                  d      }t	        ||      }t        j                  |      }t        |j                  dd      |j                  dd      dd       y )Nr  r   r  r   rg   r  r  )	rB   r  r  r  r   r   r  r   r  )r)   r+   r   r  r  s        r-   r^  z TestBPolyCalculus.test_integrateE  s    
		tGGBII$$R()IIW%1a[''+Q*Q*U	Dr3   c                     dgg}ddg}t        ||      }t        |j                  dd      dd       t        ||d      }t        t	        j
                  |j                  dd                   t        |j                  ddd	      dd       y )
Nrg   r   r%   r:   r   r   Fr  T)r   r   r  r   rB   ru   )r)   r   r+   r!  b1s        r-   test_integrate_extrapz'TestBPolyCalculus.test_integrate_extrapN  s    SEF!QK 	Aq)2E: 1aU+a+,-Qt<buMr3   c                    t        j                  g d      }t        j                  ddgddgddgddgg      }t        j                  t	        ||      d      }|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 rd  )rB   rK   r   r  r   r  r   r  re  s         r-   rh  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 )Nrg   r   r  rA   r  r  )r   rB   r)  r   r  r  )r)   r   r+   r!  r  s        r-   test_antider_negz"TestBPolyCalculus.test_antider_negs  s    SEF!QK[[Ar"(R(,.@a.>.>.@.D"	0Q+-AQ-=-=b-A"-E"	0r3   N)r/   r0   r1   r  r  r  rR  r  r  r  r^  r  rh  r  r2   r3   r-   r  r    s?    &,A0(8
J@DN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%   rg   r   r  r4  ffffff?)r   r   r  r  r   )r)   r+   r   r  r  r  r  s          r-   test_bp_from_ppz#TestPolyConversions.test_bp_from_pp  sw    VaVaV$1a[##B'((,3Z22'2B(r3   c                    t         j                  j                  d       d\  }}t        j                  t         j                  j                  |            }t         j                  j                  ||dz
  f      }t	        ||      }t        j                  |      }t	        j                  |      }t        j                  |d   |d   d      }t         ||       ||             t         ||       ||             y r  )
rB   r  r  r  r   r   r  r  r)  r   )	r)   r  r  r+   r   r  r  r  r  s	            r-   test_bp_from_pp_randomz*TestPolyConversions.test_bp_from_pp_random  s    
		t1GGBII$$Q'(IIa1X&1a[##B'((,[[1qub)22'2B(r3   c                     g d}ddgddgddgg}t        ||      }t        j                  |      }t        j                  |      }ddg}t	         ||       ||             t	         ||       ||             y )Nr  r>   rg   r  r%   r4  r  )r   r   r  r  r   )r)   r+   r   r  r  r  r  s          r-   test_pp_from_bpz#TestPolyConversions.test_pp_from_bp  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>   rg   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   rg   r%   r>   r:   rr   r   _construct_from_derivativesr   )r)   rn  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   rg   )rt   rt   rt   r%   r>   )r:   rl  rt   )r:   g      rt   r  r)   rn  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   rg   )rg   r%   r>   r  )rt   竪?g@r  )r  r%   r>   )rt   gUUUUUU	@g
@r  r%   r>   )rt   r  rr   r  r  r  s       r-   test_make_poly_3z)TestBPolyFromDerivatives.test_make_poly_3  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t         j                  j                  d      f   }t         j                  dt         j                  j                  d      f   }t	        j
                  dd||      }t	        |d d d f   ddg      }t        d      D ]4  }t         |d       |d      g||   ||   g       |j                         }6 y )Nr  r   r9   rg   r  r;   rt   )	rB   r  r  r   r   r  r   r   r  )r)   yaybr   r  r}  s         r-   test_make_poly_12z*TestBPolyFromDerivatives.test_make_poly_12  s    
		uUU1bii&&q))*UU1bii&&q))*--aB;1QW:1v&qARVRV,r!uben=B r3   c                 V   t         j                  j                  d       ddg}d\  }}t         j                  j                  |ddddf      }t        ||      }t        j                  ||      }t        ||      }t        j
                  ddd      }t         ||       ||             y )	Nr  r   rg   )r   r9   r%   r>   r  r   )rB   r  r  r   _raise_degreer)  r   )	r)   r+   r  r  r   r  rn  r  r  s	            r-   test_raise_degreez*TestBPolyFromDerivatives.test_raise_degree  s    
		uF1IIaAq!_-1a[  A&Bl[[Ar"2B(r3   c                 J    t        t        t        j                  ddgdg       y )Nr   rg   r'   rl   r   r  rW   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   rg   r   r  )r)   r,  r   s      r-   test_coords_orderz*TestBPolyFromDerivatives.test_coords_order  s,    cA3_j%"8"8"bAr3   c                     g d}ddgdgddgddgg}t        j                  ||      }t        |j                  j                  dk(         |j                         }dD ]  }t         ||       ||      gddg         y )Nr  r   )r  r>   )r;   r4  rt   r  gffffff?r:   r&  r;   )r   r  r   r   r   r  r   )r)   r,  r   r  ppdr  s         r-   
test_zerosz#TestBPolyFromDerivatives.test_zeros  sz    !fqcAq6Aq6*##B+

f$%mmo2BRVSW-Bx8 3r3   c                 6   t         j                  j                  d       t        j                  t	        |dz         D cg c]
  }d|dz  z   c}      }t	        |dz         D cg c]!  }t         j                  j                  |      # }}||fS c c}w c c}w )Nr  rg   rt   r%   )rB   r  r  rD  r   )r)   r  r  r}  r,  r   s         r-   _make_random_mkz(TestBPolyFromDerivatives._make_random_mk  s{    
		tZZE!A#J7JqadJ78+01:6:abiiq!:62v 86s   B%&Bc           	          d\  }}| j                  ||      \  }}t        j                  ||      }t        |dz        D ]5  }t	         ||      |D cg c]  }||   	 c}       |j                         }7 y c c}w )Nr9   r   r%   )r  r   r  r   r   r  )r)   r  r  r,  r   r  r  yys           r-   test_random_12z'TestBPolyFromDerivatives.test_random_12  st    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'   rl   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%   rg   r  r  )r  r   r  r'   rl   r   r  s        r-   test_orders_too_highz-TestBPolyFromDerivatives.test_orders_too_high  sb    1%%a+Br2ac!e4j%"8"8 	2"AaC0	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        t        j                   ||dd dz
         ||dd dz                       d}t        j                  |||      }t        |dz        D ]6  }t	         ||dd dz
         ||dd dz                |j                         }8 t        t        j                   ||dd dz
         ||dd dz                       y )	Nr  r9   r  r%   rg   rA   r  r  )	r  r   r  r   r   r  r   rB   allclose)r)   r  r  r,  r   r  r  r}  s           r-   test_orders_globalz+TestBPolyFromDerivatives.test_orders_global  sZ   1%%a+B ##B59uaxz"ABr!Bx%/0"R"X5E2FGB # 	BKK2a8e#3 4bAbE9I6JKKL
 ##B59uaxABr!Bx%/0"R"X5E2FGB ! 	BKK2a8e#3 4bAbE9I6JKKLr3   c           
         d\  }}| j                  ||      \  }}t        |      D cg c]  }|dz   	 }}t        |dd       D ]  \  }}t        j                  |||      }	t        ||   dz  dz         D ]0  }
t         |	|dz
         |	|dz                |	j                         }	2 t        t        j                   |	|dz
         |	|dz                        y c c}w )N)r  r   rg   rA   r  r%   r  )
r  r   r  r   r  r   r  r   rB   r
  )r)   r  r  r,  r   or  r|  r+   r  r}  s              r-   test_orders_localz*TestBPolyFromDerivatives.test_orders_local0  s    1%%a+B!&q*A!a%*b2h'DAq''Bv>B6!9>A-.1u9r!e)}=]]_ / Bq5yM2a%i=AAB ( +s   Cc                 B   d\  }}t        j                  t         j                  j                  |dz               }t         j                  j                  |dz   |dddf      }t        j                  ||      }t        |j                  j                  d|z  |dddf       y )N)r  r9   rg   r  r  r   r%   )rB   r  r  r   r  r   r   r   )r)   r  r  r,  r   r  s         r-   test_yi_trailing_dimsz.TestBPolyFromDerivatives.test_yi_trailing_dims<  s    1WWRYY%%ac*+YYqsAq!Q/0##B+RTTZZ!A#q!Q!23r3   c                    t        j                  d      }t        j                  ddgdgdgg|      }t	         |d      d       t        j
                  d      }t        j                  ddgdgdgg|      }t	         |d      d       d}t        j                  ddgdgdgg|      }t	         |d      d       d}y )Nrg   r   r  )rB   int32r   r  r   int64)r)   r  r`  s      r-   test_gh_5430z%TestBPolyFromDerivatives.test_gh_5430C  s    
 !""Aq6QC!:fEAaD!$!""Aq6QC!:fEAaD!$""Aq6QC!:fEAaD!$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
9!02M0
C4r3   r  c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestNdPPolyc                 |   t         j                  j                  d       t         j                  j                  dd      }t        j                  ddd      }t         j                  j                  d      }t        ||f      } ||f      }t        |d d d d d f   ||      j                         }t        ||       y )Nr  r  r9   r   rg   r  r   )	rB   r  r  r  r)  r   r/  r  r   )r)   r   r+   r,  r`  v1v2s          r-   test_simple_1dzTestNdPPoly.test_simple_1dV  s    
		tIINN1a KK1c"YY^^C AtuX1QqX;2.446Br3   c           
         t         j                  j                  d       t         j                  j                  dddd      }t        j                  ddd      }t        j                  ddd      d	z  }t         j                  j                  d
      }t         j                  j                  d
      }t        j
                  t        |      dg|j                        }|j                  t         j                         t        j                  |j                  ddd      ||ft        j                  ddgt         j                        t         j                  ||f   t        j                  ddgt         j                        d|       |j!                         }t#        |||f||      }t%        ||       t'        |||f      }dD ]H  }	 |t         j                  ||f   |	      }t#        |||f|||	      }t%        ||t)        |	             J y )Nr  r  r9   r  r  r   rg   r   r%   r   r   r  *   )Nr   r   r   rg   )rg   r   )r%   r>   )r   r%   r  r  )rB   r  r  r  r)  r|  r^  r   fillr   r   evaluate_ndrG   rK   intcc_r  _ppoly2d_evalr   r   rz  )
r)   r   r+   r*   r,  r   r  r  r`  r  s
             r-   test_simple_2dzTestNdPPoly.test_simple_2dd  s   
		tIINN1aA&KK1c"KK1c"A%YY^^C YY^^C XXs2wl!''2
199S#q1q688QF"'':55R=88QF"'':	 XXZ1q!fb"-BA1v@B255R=R(Bq1a&"bR8BBDH5 Ar3   c           	      v   t         j                  j                  d       t         j                  j                  dddddd      }t        j                  dd	d      }t        j                  dd	d      d
z  }t        j                  dd	d      dz  }t         j                  j                  d      }t         j                  j                  d      }t         j                  j                  d      }t        ||||f      }dD ]:  }	 ||||f|	      }
t        ||||f||||	      }t        |
|t        |	             < y )Nr  r  r9   r  r  r   r   r   rg   r%   r=   r>   (   )Nr   r   r   r   rg   r   rg   r   r   )r%   r>   r   )r  r   r%   r  r  )	rB   r  r  r  r)  r   _ppoly3d_evalr   rz  )r)   r   r+   r*   r,   r,  r   zir`  r  r  r  s               r-   test_simple_3dzTestNdPPoly.test_simple_3d  s    
		tIINN1aAq!,KK1c"KK1c"A%KK1c"A%YY^^BYY^^BYY^^BA1ay!BBB<B'Bq1a)RRB?BBDH5	r3   c           
         t         j                  j                  d       t         j                  j                  dddddddd	      }t        j                  d
dd      }t        j                  d
dd      dz  }t        j                  d
dd	      dz  }t        j                  d
dd      dz  }t         j                  j                  d      }t         j                  j                  d      }t         j                  j                  d      }t         j                  j                  d      }	t        |||||f      }
 |
||||	f      }t        |||||f||||	      }t        ||       y )Nr  r  r9   r  r  r   r   r=   r   r   rg   r%   r>   r   r  )rB   r  r  r  r)  r   _ppoly4d_evalr   )r)   r   r+   r*   r,   ur,  r   r+  uir`  r  r  s                r-   test_simple_4dzTestNdPPoly.test_simple_4d  s   
		tIINN1aAq!R4KK1c"KK1c"A%KK1d#Q&KK1d#Q&YY^^BYY^^BYY^^BYY^^BA1a|$BB 1q!QlBB;Br3   c                    t         j                  j                  d       t         j                  j                  dd      }t        j                  ddd      }t        ||f      }|j                  dg      }t        ||      }|j                         }t        |j                  |j                         |j                  dg      }t        ||      }|j                  d      }t        |j                  |j                         y )	Nr  r  r9   r   rg   r  r  r%   )rB   r  r  r  r)  r   r  r   r   r   r  )r)   r   r+   r`  r&  r  dp1s          r-   test_deriv_1dzTestNdPPoly.test_deriv_1d  s    
		tIINN1a KK1c"At \\aS\!1a[mmocee$ !%1a["cee$r3   c                    t         j                  j                  d       t         j                  j                  dddddd      }t        j                  dd	d      }t        j                  dd	d      d
z  }t        j                  dd	d      dz  }t        ||||f      }t        |j                  ddd	d
dd      |      }|j                  d
g      }|j                  d
      }t        |j                  |j                  j                  dd
dd	dd             t        |j                  d	ddd
dd      |      }|j                  g d      }|j                  d	      }t        |j                  |j                  j                  d
dddd	d             t        |j                  d
ddd	dd      |      }|j                  g d      }|j                  d      }t        |j                  |j                  j                  d
ddddd	             y )Nr  r  r9   r  r  r   r   r   rg   r%   r=   r>   r  r(  )r   r   r>   )rB   r  r  r  r)  r   r   	transposer  r   r   r  )	r)   r   r+   r*   r,   r`  r  r&  r3  s	            r-   test_deriv_3dzTestNdPPoly.test_deriv_3d  s   
		tIINN1aAq!,KK1c"KK1c"A%KK1c"A%A1ay! 1;;q!Q1a0!4\\aS\!mmA1aAq9	; 1;;q!Q1a0!4+"1aAq9	; 1;;q!Q1a0!4\\Y\'mmA1aAq9	;r3   c                 X   t        j                  d      }t        j                  ddd      dz  }t        j                  ddd      dz  }t        j                  ddd      dz  }t        ||||f      }|j	                  d	      }|j	                  d
      }t         j
                  j                  d      }t         j
                  j                  d      }t         j
                  j                  d      }	t         ||||	f      ||dz  z  |	dz  z  t        d      t        d      z  z         y )N)rg   rg   rg   r>   r  r9   r   rg   r  r9   r%   r  r>   )rg   r   r  )r   r%   r   r  )	rB   rk   r)  r   r  r  r  r   r   )
r)   r   r+   r*   r,   r`  r'  r,  r   r+  s
             r-   test_deriv_3d_simplez TestNdPPoly.test_deriv_3d_simple  s     GG&'KK1c"A%KK1c"A%KK1c"A%A1ay!i(y)YY^^BYY^^BYY^^BBB<(RU
RU*eAhuQx.?@	Br3   c           
      <  	 t         j                  j                  d       t         j                  j                  dddd      }t        j                  ddd      dz  }t        j                  ddd      d	z  }|j                  dd	dd
      }|j                  |j                  d   |j                  d   d      j                         }t        j                  ||d	       |j                  |j                        }|j                  dd	dd
      }|j                  dd
dd	      }|j                  |j                  d   |j                  d   d      j                         }t        j                  ||d	       |j                  |j                        }|j                  d	dd
d      j                         }t        |||f      	ddgddgddgddgfD ]O  }	j                  |      }t        	fd|t        dd      gd	z        \  }}t        ||ddt!        |             Q y )Nr  r  r9      r  r   rg   r   r%   r>   rA   r  )r   r&   )r  r  )r.  r5  c                      | |f      S r   r2   )r+   r*   r`  s     r-   <lambda>z/TestNdPPoly.test_integrate_2d.<locals>.<lambda>	  s    1aV9r3   gh㈵>)epsrelepsabs)r   )r   r   r   )rB   r  r  r  r)  r6  rG   r   rp   r   fix_continuityr   r  r    r   r   rz  )
r)   r   r+   r*   cxrangesr]  ig2err2r`  s
            @r-   test_integrate_2dzTestNdPPoly.test_integrate_2d  s   
		tIINN1aR(KK1d#Q&KK1d#Q& KK1a#YYqwwqz1771:r2779b!Q'JJqwwKK1a#KK1a#YYqwwqz1771:r2779b!Q'JJqwwKK1a#((* A1v' &))"J/1F
 V$B4f$(T$B#CA#EGICB$T$(L21r3   c           	         t         j                  j                  d       t         j                  j                  dddddd      }t        j                  dd	d      d	z  }t        j                  dd	d      d
z  }t        j                  dd	d      dz  }t        ||||f      }t         j                  j                  d      }t         j                  j                  d      }d\  }}	|j                  ||	d      }
|j                  d      }t         |
||f       ||	||f       ||||f      z
         |j                  ||	d	      }|j                  d      }t         |||f       |||	|f       ||||f      z
         |j                  ||	d
      }|j                  d      }t         |||f       ||||	f       ||||f      z
         y )Nr  r  r9   r  r;  r  r   r   rg   r%   r   r>   r   )r5  r  rj   r)  r(  r  )	rB   r  r  r  r)  r   integrate_1dr  r   )r)   r   r+   r*   r,   r`  r/  vr  r!  pxpaxpypaypzpazs                   r-   test_integrate_1dzTestNdPPoly.test_integrate_1d	  s   
		tIINN1aBB/KK1d#Q&KK1d#Q&KK1d#Q& A1ay!IINN3IINN31^^Aqq^)y)Aq6
CAq	NS!Q^$CD^^Aqq^)y)Aq6
CAq	NS!Q^$CD^^Aqq^)y)Aq6
CAq	NS!Q^$CDr3   N)r/   r0   r1   r  r$  r,  r1  r4  r7  r9  rE  rO  r2   r3   r-   r  r  U  s2     6:6( (%(;>B&2BEr3   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
  t        |   |cxk  xr |dz      k  nc        t         fdt         j                  d         D              }|||ddf<    |S )z&Evaluate piecewise polynomial manuallyr%   r   rg   Nc              3   ^   K   | ]$  }|f   j                   d    |z
  dz
  z  z   & yw)r   rg   N)r   )r   r  r   r  r}  s     r-   r   z _ppoly_eval_1.<locals>.<genexpr>5	  s;      ,*A !A#QWWQZ\!^,,*s   *-)
rB   zerosr^  r   r  r   searchsortedr   sumr   )	r   r+   xpsrG  r|  r  rT  r  r}  s	   `      @@r-   r/  r/  +	  s    
((CHaggaj)
*C326R!VvvC!HOOAr"Q&1I!#QqsV#$ ,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   rg   )NN)r   rB   r  
empty_likecompressrS  clipr^  takevanderrK   r   r  )r_  breaksr   r  r  r!  K	saveshaper  maskr  indxsr  r  Vr  valuess                    r-   r0  r0  ;	  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PArvva1gr!U1X+7PQFCICIJ Qs   .Ec                 d    |dk  rt        d      ||kD  ryt        ||z
  dz   |      | ||z
  z  z  S )z
    d^n (x**y) / dx^n
    r   zinvalid derivative orderrg   )rl   r   )r+   r*   r  s      r-   _dpowre  R	  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   rg   rB   r|  r^  r   r   r  zipr   rS  r   re  )r   ra  r   ynewr  rG  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]
#BAGGAJ'"R%'"R%'"R/0B1./B1./ 0 ( $ D	) 3, 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
    Nr'  r   r>   r   rA   rg   r%   rg  )r   ra  r   ri  znewr  rG  rj  rk  nzrl  r+   r*   r,   rm  rn  j3ro  rp  s3r  rq  rr  k3s                           r-   r*  r*  	  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]
#BAGGAJ'
+BAbeAgbeAgbeAgbB>?#BBqE23#BBqE23 $BBqE23 4C , ( $ 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   rg   r%   r>   rg  )r   ra  r   ri  rt  unewr  rG  mxmymzmurl  r+   r*   r,   r/  rm  rn  rv  j4ro  rp  rw  s4r  rq  rr  rx  k4s                                 r-   r.  r.  	  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]
#BAGGAJ'
+B#AGGAJ/"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 0 , ( $ D	; E> Jr3   r   );numpy.testingr   r   r   r   r   r   rW  r	   r'   numpyr
   r   r   r   rB   scipy.interpolater   r   r   r   r   r   r   r   r   r   r   r   r   scipy.specialr   r   r   scipy._lib._gcutilsr   r   scipy.integrater    r!   r#   r5   r\  rf  r  r  r  r  r  r  r  r  r/  r   r0  re  r#  r*  r.  r2   r3   r-   <module>r     s  , , +  ( (     & $ ; !  T Tn6 6}& }&@JL JLZ,+ ,+^c5 c5L? ?DX0 X0v.' .'b` `FSE SEl  .0VV .	/!H%P*r3   