
    >qj                    d   d dl mZmZmZmZmZmZmZ d dlm	Z
 d dlmZ d dlZd dlmZmZmZmZ d dlZd dlmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z" d dl#m$Z$m%Z% d dlm&Z& d d	l'm(Z( d d
l)m*Z* d dl+m,Z, d dl#m-Z- ej\                  j^                  Z/ej\                  j`                  Z0 G d d      Z1 G d d      Z2 G d d      Z3 ee       G d d             Z4ej\                  jk                  dee"g      d        Z6 eee       G d d             Z7 G d d      Z8 ee       G d d             Z9 ee       G d d             Z: ee       G d d              Z; eee       G d! d"             Z< ee       G d# d$             Z= G d% d&      Z>d' Z?ej                  fd(ZAd) ZBd-d*ZCd-d+ZDd-d,ZEy).    )xp_assert_equalxp_assert_closeassert_almost_equalassert_array_almost_equalmake_xp_test_caseis_cupy_xp_copy_to_numpy)array_api_extra)raisesN)mgridpisinpoly1d)interp1dinterp2dlagrangePPolyBPolysplrepsplev
splantidersplintsprootAkima1DInterpolatorNdPPolyBSplinePchipInterpolator)pochgamma)_ppoly)assert_deallocated)_run_concurrent_barrier)nquad)binomc                       e Zd Zd Zy)TestInterp2Dc                     t         ddddt        df   \  }}t        |d|z  z         }t        t              5  t        |||       d d d        y # 1 sw Y   y xY w)Nr      y              4@y              5@      ?)r   r   r   assert_raisesNotImplementedErrorr   )selfyxzs       g/opt/rentech/trading_bot/.venv/lib/python3.12/site-packages/scipy/interpolate/tests/test_interpolate.pytest_interp2dzTestInterp2D.test_interp2d    s\    QqWa3h&'1#a%L./ 	Q1	 	 	s   AAN)__name__
__module____qualname__r1        r0   r&   r&      s    r6   r&   c                   8   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'dZd'dZd Zd Zd Zd Zd'dZd'dZd Zej:                  dfdZd Zd Z d Z!d Z"d  Z#d! Z$d" Z%e&jN                  jQ                  d#d$      d%        Z)y&)(TestInterp1Dc                    t        j                  d      | _        t        j                  d      | _        t        j                  d      | _        | j                  j                  d      | _        t        j                  d      | _        t        j                  d      | _        t        j                  dg      | _
        t        j                  dg      | _        t        j                  d      j                  d      | _        t        j                  d      j                  d      | _        t        j                  d      j                  d	      | _        t        j                  d      j                  d      | _        t        j                  d
      j                  d      | _        t        j                  d
      j                  d      | _        t        j                  d      j                  d      | _        d| j$                  d d df<   d| j$                  d d df<   t        j                  d      j                  d      | _        d| j&                  dd d f<   d| j&                  dd d f<   d| _        y )N      @      $@)r(             @        g      4@r(   
   )r@   r(   )r(   r(   r<   g      >@)r(      r<   )rA   r(   r<      r         Y)nparangex5x10y10reshapex25x2y2arrayx1y1y210y102y225y25y235y325y210_edge_updatedy102_edge_updated
fill_valuer,   s    r0   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% r6   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rh   rZ   ra   )rD      rD   )rD   )rD   rD   r   rk   r(   rA   rh   axisrZ   r@   rm   )rD   rD   rD   r5   r>   )r   rI   rJ   rF   rO   rR   rM   onesr*   
ValueErrorrL   rN   rS   rP   rQ   r,   rh   s     r0   test_validationzTestInterp1D.test_validationR   s   
? 	NDTXXtxxd3TXXtxxd}M	N 	488(wG488(HHbTN	,488(!	#488(	 488($	&488!,488!,488!,488!,4998"$	&$))(GGBK	)$))(WWR["''"+6	8$))(WWR["-	/ 	j(DHHdhh? 	j(DHHbhhqkB 	j(DHHdgg>j(DGGTXX>j(DHHdii@499%4991- 	j(DGGTXX>j(DHHdgg> 	j(DHHdhhX!-	/j(DHHdhhX!-	/j(DHHdhhX!#,!7	9j(DHHdhhX#%$	)j(DHHdhhX"$b	+j(DHHdhhX!#"	/j(DHHdhhX!#	%j(DGGTYYX"b	3j(DGGTYYX"r2h	9r6   c                 @   t        | j                  | j                        j                  sJ t        | j                  | j                  d      j                  rJ t        | j                  | j                        j                  sJ t        | j                  | j                  d      j                  rJ t        j                  t        | j                  | j                        j                        sJ t        | j                  | j                  d      j                  dk(  sJ t        | j                  | j                  d      j                  dk(  sJ t        | j                  | j                        j                  dk(  sJ t        | j                  | j                        j                  dk(  sJ t        | j                  | j                  d	      j                  dk(  sJ t        t        | j                  | j                        j                  | j                         t        t        | j                  | j                        j                  | j                         t        t        | j                  | j                        j                  | j                         y )
NF)copy)bounds_error      @rZ   )      ?r=   r   rk   rn   )r   rI   rJ   rt   ru   rF   isnanrZ   rm   rR   rS   r   r.   r-   r[   s    r0   	test_initzTestInterp1D.test_init   s    $((+0000DHHdhhU;@@@@$((+8888DHHdhhUCPPPPxx4884??@@@$((s;FF#MMM488
CNN 	
  $((+00A555$)),11Q666$))!499Q>>>488466A488466A499577Cr6   c                    t        | j                  | j                        }t        | j                  d d d   | j                  d d d         }t         || j                        | j                         t         |d      t	        j
                  d             t         |g d       |g d             t        | j                  d d d   | j                  d d d   d      }t         || j                        | j                         t        | j                  d d d   | j                  d d d   d      }t        t        || j                         t        | j                  | j                        }t        | j                  d d d   | j                  d d d d df         }t         || j                         || j                               y )NrD   333333?g333333@gffffff@      @F)assume_sortedT)	r   rI   rJ   r   rF   rO   r*   rp   rR   )r,   interp10interp10_unsortedinterp10_assume_kwinterp10_assume_kw2interp10_y_2dinterp10_y_2d_unsorteds          r0   test_assume_sortedzTestInterp1D.test_assume_sorted   sd   DHHdhh/$TXXdd^TXXdd^D!"3DHH"=txxH!"3C"8"((3-H!"3O"D"*?";	= &dhhttndhhttn49;!"4TXX">I&txx"~txx"~59; 	j"5txx@ !4995!)$((4R4.$))AttG:L!M!-"9"8"B	Dr6   c                 4    dD ]  }| j                  |        y )N)ra   rb   )_check_linearrq   s     r0   test_linearzTestInterp1D.test_linear   s    ) 	%Dt$	%r6   c                 >   t        | j                  | j                  |      }t         || j                        | j                         t         |d      t	        j
                  d             t         |g d      t	        j
                  g d             t        | j                  | j                  |d      }t         |g d      t	        j                  g d      d       t        |dd	
      }t        t        t         | j                  | j                  fi | y )Nrg   r|   r}   ri   rj         r   	      +=rtolTrh   rZ   ru   )r   rI   rJ   r   rF   rO   r   asarraydictr*   rp   )r,   rh   r   extrapolatoroptss        r0   r   zTestInterp1D._check_linear   s    DHHdhhT:!(488"4dhh?!(3-#?!(?";"$((?";	=  $((+8:_5

#345	B ,!%' 	j(DHHdhhG$Gr6   c                    t         j                  t         j                  t         j                  t         j                  fD ]N  }t        j
                  d|      }|} t        ||d      |      }|j                  |k(  sJ t        ||d       P g d}t         j                  dd	g} t        ||      |      }t        ||d       y )
N   dtypera   rg   V瞯<atolr   rk   r(   r   rk   )
rF   float16float32float64
longdoublerG   r   r   r   nan)r,   dtypr.   r-   yps        r0   test_linear_dtypeszTestInterp1D.test_linear_dtypes   s     ZZZZZZ]]$ 	/D 		!4(AA.!QX.q1B88t###B.	/ VVQNXa^AAE*r6   c                     t        j                  ddg      }t        j                  ddgddgg      } t        ||      |      }t        ||d       t        j                  |dk\        sJ y )Ng`{jtH?gMb`?r>   gfxK;?g#B;r   r   )rF   rO   r   r   all)r,   r.   r-   r   s       r0   test_linear_numerical_stabilityz,TestInterp1D.test_linear_numerical_stability   sg     HH(%01HHsCj#8#">?@Xa^AAE*vvbAgr6   c                    t         j                  t         j                  t         j                  g}|t         j                  t         j
                  gz   }g d}|D ]  }t        j                  dd|      }|D ]v  }t        j                  | dz        j                  |      }|D ]G  }|j                  |      }	|D ]/  }
t        |||
d      }t         ||	      |dd| d	| d
|        1 I x  y )N)rb   r`   rc   rd   r   r@   r   rv   Frh   ru   Hz>z,  )r   check_dtypeerr_msg)rF   r   r   r   	complex64
complex128rG   expastyper   r   )r,   dt_rdt_rcspline_kindsdtxr.   dtyr-   dtnxnewrh   fs               r0   test_slinear_dtypesz TestInterp1D.test_slinear_dtypes   s     

BJJ

3bmm44@ 
	GC		!Rs+A GFFA2c6N))#. GC88C=D , G$Q5I'$4936%r#au0EGGGG
	Gr6   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 )Nrd   rg   r|         ?r}   r   rI   rJ   r   rF   rO   r,   r   s     r0   
test_cubiczTestInterp1D.test_cubic  sv    DHHdhhW=!(488"4dhh?!(3-#?!(3-#?!(?";"$((?";	>r6   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^   rg   r|   rx   r   r}   r=   r~   r~   ri   rj   r   r>   r   r   r   r   r   Tr   
r   rI   rJ   r   rF   rO   r   r   r*   rp   r,   r   r   r   s       r0   test_nearestzTestInterp1D.test_nearest  s     DHHdhhY?!(488"4dhh?!(3-">!(3-">!(?";"$((<"8	;  $((+8:_5&U	4 ,!%' 	j(DHHdhhG$Gr6   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_   rg   r|   rx   r   r=   r}   r   ri   rj   r   r   r   r   Tr   r   r   s       r0   test_nearest_upzTestInterp1D.test_nearest_up)  s     DHHdhh\B!(488"4dhh?!(3-">!(3-">!(?";"$((<"8	;  $((+8:_5&U	4 ,!%' 	j(DHHdhhG$Gr6   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 )%Nre   rg   r|   rx   r   r}   r=   r:   r~   ri   rj   r   r   r   r   r   rD   r<   r         r<   r            rl   r   r<   r   r@   r   Tr   r   r   rk   rD   rh   rZ   r   r   rD   r   rk   r(   rA   r<   rk   rD   r(   r   rk   rD   r   rk   FrC   r   rI   rJ   r   rF   rO   r   r   rR   rS   r   r*   rp   rX   rY   r,   r   r   interpolator1Dinterpolator2Dinterpolator2DAxis0r   s          r0   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%	&r6   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 )$Nrf   rg   r|   r=   r   r}   )rv   r~   r~   ri   rj   r   r   r   r   r   r   r<   r   r@   r   r   rl   r   rk   r   Tr   r   r   r   r   rD   r   r   FrB   r   r   s          r0   	test_nextzTestInterp1D.test_next  s*   DHHdhhV<!(488"4dhh?!(3-">!(3-">!(?";"$((<"8	;  $((+8:_5Aq"&&)	7 "$((DHH6-:<'=>Aq!RVVRVV4	6 "$((DIIF-:<'=>Q1bffbff5b"b"&&"&&9;	< 'txx,--I+K8Qb&&"&&)+	,
 ,!%' 	j(DHHdhhG$G ")",6-:046 	'>?Aq!R8	: ")",6-:057 	'>?Aq!R8	: "$((D,B,B'--:< 	'=>b!Q7b"b"&&"&&9;	< 'txx1G1G,2,--I 	+K8bb&&"&&)+	,r6   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`   rg   r|   rx   r   r}   r   r   r   s     r0   	test_zerozTestInterp1D.test_zero  sv    DHHdhhV<!(488"4dhh?!(3-">!(3-">!(?";"$((<"8	:r6   c                     t        t        ||       	  ||       y # t        $ r}| t        |      v sJ Y d }~y d }~ww xY wN)r*   rp   str)r,   interpolant
test_array
fail_valueerrs        r0   bounds_check_helperz TestInterp1D.bounds_check_helper  sA     	j+z:	1
# 	1!ls3x/0/	1s    	?:?ra   c                    t        | j                  | j                  | j                  d|      }t	         |d      t        j                  | j                               t	         |d      t        j                  | j                               t	         |dgdgdgdggg      t        j                  | j                        d       t	        |j                  t        j                  g d            t        j                  g d	g d
g             t        | j                  | j                  d|      }| j                  |dd       | j                  |dd       | j                  |g dd       | j                  |g dd        |g d       y )NF)rZ   ru   rh   gffffff&@g333333g333333)@gL3@)check_shape)r   r>   r:         "@      &@)TFFFF)FFFFTT)ru   rh   r   r   )r>   r   r>   )r>   rx         5@r   )r>   r:   r   )	r   rI   rJ   rZ   r   rF   rO   _check_boundsr   )r,   rh   extrap10raises_bounds_errors       r0   _bounds_checkzTestInterp1D._bounds_check  sD   DHHdhh4??).T; 	(AB(ABD6D6D6D6"B!CD88DOO4%	I..!xx(CDF88%G%G%I J	K
 'txx,02 	  !4dDA  !4dDA  !46FM  !46FMO,r6   c                    t        j                  d      j                  t              }t        j                  d      j                  t              }t	        |||t         j
                  d      } ||dz
        }t        j                  |d         sJ t        |t         j                  t         j
                  |d d f          y )Nr@   Fr   rk   r   rD   )	rF   rG   r   intr   r   ry   r   r_)r,   rh   r.   r-   cyis         r0   _bounds_check_int_nan_fillz'TestInterp1D._bounds_check_int_nan_fill  s    IIbM  %IIbM  %QeLq1uXxx1!"beeBFFAcrFN&;<r6   c                 V    dD ]$  }| j                  |       | j                  |       & y )N)ra   rd   r^   re   rf   rb   r`   rc   )r   r   rq   s     r0   test_boundszTestInterp1D.test_bounds  s/    5 	2Dt$++D1	2r6   c                    t        | j                  | j                  |dd      }t         |d      t	        j
                  d             t         |d      t	        j
                  d             t         |ddg      dd	g       | j                  | j                  | j                  | j                  fD ]S  }t        | j                  ||d
d	d      }t         |d      t	        j
                  d             t         |d      t	        j
                  d             t         |ddg      t	        j
                  d             t        | j                  ||d
dd      }t         |d      t	        j
                  d             t         |d      t	        j
                  d             |j                  dk(  r'dd	gg|j                  d   z  g|j                  d   z  }ndd	gg|j                  d   z  }t         |ddg      |       V g d}| j                  | j                  fD ]'  }t        t        t         | j                  ||d
|d       ) t        | j                  | j                  |d
|d      }t         |d      g dgdz         t         |d      g dgdz         t         |ddg      d	d	gddgddgggdz         d	dg}t        t        t         | j                  | j                  |d
|d       | j                  | j                  | j                  fD ]  }t        | j                  ||d
|d      }d	dg}|j                  dk(  r|g|j                  d   z  }t         |d      |       t         |d      |       d	d	gddgg}|j                  dk(  r|g|j                  d   z  }t         |ddg      |        t	        j                  g d      d	f}| j                  | j                  fD ]'  }t        t        t         | j                  ||d
|d       ) t        | j                  | j                  |d
|d      }t         |d      t	        j
                  d             t         |d      g dgdz         t         |ddg      dd	gdd	gdd	gggdz         t	        j                  ddg      d	f}t        t        t         | j                  | j                  |d
|d       | j                  | j                  | j                  fD ]  }t        | j                  ||d
|d      }t         |d      t	        j
                  d	             ddg}|j                  dk(  r|g|j                  d   z  }t         |d      |       dd	gdd	gg}|j                  dk(  r|g|j                  d   z  }t         |ddg      |        g dg df}| j                  | j                  fD ]'  }t        t        t         | j                  ||d
|d       ) t!        d      D ]  }|dk(  rt#        d |D              }t        | j                  | j                  |d
|d      }t         |d      g dgdz         t         |d      g dgdz         t         |ddg      dd	gddgddgggdz          ddgd	dgf}t        t        t         | j                  | j                  |d
|d       | j                  | j                  | j                  fD ]  }t        | j                  ||d
|d      }d	dg}|j                  dk(  r|g|j                  d   z  }t         |d      |       ddg}|j                  dk(  r|g|j                  d   z  }t         |d      |       dd	gddgg}|j                  dk(  r|g|j                  d   z  }t         |ddg      |        d	dgddgg}| j                  | j                  | j                  fD ]'  }t        t        t         | j                  ||d
|d       ) t!        d      D ]  }|dk(  rt	        j                  |      }t        | j                  | j                  |d
|d      }t         |d      d	dgddgg       t         |d      d	dgddgg       t         |ddg      d	d	gddggddgddggg        ddgddggd	dgddggf}| j                  | j                  | j                  fD ]'  }t        t        t         | j                  ||d
|d       ) t!        d      D ]  }|dk(  r0t	        j                  |d         t	        j                  |d         f}t        | j                  | j                  |d
|d      }t         |d      d	dgddgg       t         |d      ddgddgg       t         |ddg      dd	gddggddgddggg        y )N)d   Fr   r@   g      Y@rE   r   r   rD   )rh   rm   rZ   ru   rA   rk   r   )r      ,  r(   r   r  )r   8r  r  c              3   F   K   | ]  }t        j                  |        y wr   )rF   rO   ).0r   s     r0   	<genexpr>z1TestInterp1D._check_fill_value.<locals>.<genexpr>a  s     "C1288A;"Cs   !i  i  ii0)r   rI   rJ   r   rF   r   rV   rW   rT   rU   rH   ndimshaper*   rp   rO   rangetuple)r,   rh   interpr-   resultrZ   iis          r0   _check_fill_valuezTestInterp1D._check_fill_value   s	   $((DHH4%0uF!&*bjj.>?!&+rzz%/@A!&#r"3dC[A ))TYY		488< 	AAdggqt"),5BF%fRj"**T2BC%fSk2::d3CD%fc2Y&7D9IJ dggqt")45JF%fRj"**T2BC%fSk2::e3DEvv{ #;-!''!*45
B+3%fc2Y&7@!	A& %
))TYY' 	NA*h!juN	N $''4994b%/eE!&*.?!.CD!&+/@1/DE!&#r"3Sz8;Sz8;Sz7C 6DFG6H 	I
 3Z
j(DGGTYYT*5	J))TYY1 	AAdggqt")3%IF3ZFvv{ AGGAJ.%fRj&9%fSk6:Cj3*-Fvv{ AGGAJ.%fc2Y&7@	A hh12C8
))TYY' 	NA*h!juN	N $''4994b%/eE!&*bjj.>?!&+0B/Ca/GH!&#r"3c{8<c{8<c{7D 6EGH6I 	J
 hhd|,c2
j(DGGTYYT*5	J))TYY1 	AAdggqt")3%IF%fRj"**S/BD\Fvv{ AGGAJ.%fSk6:SkD#;/Fvv{ AGGAJ.%fc2Y&7@	A )/:
))TYY' 	NA*h!juN	N ( 		NBQw""C
"CC
dggtyyt")3%IF%fRj?2Ca2GH%fSk4F3G!3KL%fc2Y&7D#;<@#;<@#;;H :IKL:M N		N TlS#J/
j(DGGTYYT*5	J))TYY1 	AAdggqt")3%IF3ZFvv{ AGGAJ.%fRj&9D\Fvv{ AGGAJ.%fSk6:SkD#;/Fvv{ AGGAJ.%fc2Y&7@	A" Cj4,/
))TYY1 	NA*h!juN	N ( 
	KBQwXXj1
dggtyyt")3%IF%fRjC:d|2LM%fSkS#Jt3MN%fc2Y&7C:<?:;G<@$<<@$<;I:J K
	K d|eU^4SzD$<02
))TYY1 	NA*h!juN	N ( 	LBQw hhz!}5rxx
17NO
dggtyyt")3%IF%fRjC:d|2LM%fSkT4L5:EN4D E%fc2Y&7D#;<@#;;H<A4=<A4=;J:K L	Lr6   c                 4    dD ]  }| j                  |        y N)ra   r^   rd   rb   rc   r`   re   rf   )r  rq   s     r0   test_fill_valuezTestInterp1D.test_fill_value  s!    1 	)D""4(	)r6   c                     t        | j                  | j                  d      }|j                  dk(  sJ d|_        |j                  dk(  sJ y )Ng     ^@rw   g     t@)r   rI   rJ   rZ   )r,   r  s     r0   test_fill_value_writeablez&TestInterp1D.test_fill_value_writeable  sH    $((DHH?  E)))!  E)))r6   c           	      j   t        | j                  | j                  |      }t         |t	        j
                  ddgddgg            t	        j
                  ddgddgg             t         |d      t        j                        sJ  |d      j                  dk(  sJ t        | j                  | j                  |      }t         |d      t	        j
                  dd	g             t         |t	        j
                  ddg            t	        j
                  ddgd	d
gg             t        | j                  | j                  d|      }t         |d      t	        j
                  ddg             t         |t	        j
                  ddg            t	        j
                  ddgddgg             t	        j
                  ddgddgg      }t         ||      t	        j
                  ddgddggddgd
dggg             t         ||      t	        j
                  ddgdd	ggddgddggg             y )Nrg   rv   r:   r=         @r|   r5   rx   r         (@r   rm   rh   r~   g      *@g      .@g      1@r;         @g      ,@)r   rI   rJ   r   rF   rO   
isinstancendarrayr  rR   rS   )r,   rh   r   	interp210	interp102x_news         r0   _nd_check_interpzTestInterp1D._nd_check_interp  s    DHHdhhT:!(288b"XBx4H+I"J"$((RHr2h+?"@	B (3-444}""b((( TXXtyyt<	!)B-2s)1DE!)BHHb"X,>"?"$((RHsCj+A"B	D TXXtyyqtD	!)B-3*1EF!)BHHb"X,>"?"$((RHr2h+?"@	B 2r(RH-.!)E"2"$((b"XBx,@.13Z#s,D,F #G	H 	")E"2"$((b"XSz,B.0"XSz,B,D #E	Fr6   c                    g d} t        j                  t        j                  |            j                  | }t	        |      D ]  \  }}t        j                  |      }t        ||||      }t         ||      ||       t        j                  d      j                  d      dz  }t        |      }	g d|	||dz     ||      j                  t        |	      k(  rJ |        y )N)   r<         r  r   r!  )r(   rA   rk   r  rk   )
rF   rG   prodrK   	enumerater   r   listr  r
  )
r,   rh   ar-   nsr.   r/   rM   bs
             r0   _nd_check_shapezTestInterp1D._nd_check_shape  s    )BIIbggaj!))1-aL 	1DAq		!AAAD1A%adAt<5!))'2S8BQA Aa!HR5;;%(*0D0*	1r6   c                 V    dD ]$  }| j                  |       | j                  |       & y )N)ra   rd   rb   rc   r^   r`   re   rf   )r  r+  rq   s     r0   test_ndzTestInterp1D.test_nd  s/    1 	'D!!$'  &	'r6   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)
rk         @rA   g@r   g@g@g       @g      #@r@         ?       @rg   rD   rk   r@      )rF   rO   r   r   r   linspacerealimag)	r,   r   rh   r.   r-   r   xicrcis	            r0   _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5r6   c                     dD ]B  }| j                  t        j                  |       | j                  t        j                  |       D y r  )r8  rF   r   r   rq   s     r0   test_complexzTestInterp1D.test_complex  s;    1 	5Dd3t4	5r6   c                     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   rk   皙?皙?)rF   r2  r!   r   )r,   r.   r-   r  s       r0   test_circular_refszTestInterp1D.test_circular_refs  sT    KK1KK1!Q/ 	6C:	 	 	s   AAc                     dD ]I  }t        j                  g dt         j                        }t        |||      }t	         ||      |       K y )N)r^   re   rf   )r   2      r   rg   )rF   rO   int8r   r   )r,   rh   r.   r  s       r0   test_overflow_nearestz"TestInterp1D.test_overflow_nearest  sA    3 	0DRWW5A!QT*B%beQ/	0r6   c                 "   t        j                  d      j                  t              }|j	                         }t         j
                  |d<   dD ]?  }t        |||      } |ddg      }t        j                  |      j                         r?J  y )Nr@   r!  )r`   rb   rg   g@r  )	rF   rG   r   floatrt   r   r   isfiniter   )r,   r.   r-   rh   irvalss         r0   test_local_nanszTestInterp1D.test_local_nans  sy     IIbM  'FFHvv!' 	+D!QT*BsCj>D;;t$((***	+r6   c                    t        j                  d      j                  t              }|j	                         }|j	                         }t         j
                  |d<   dD ]  }t        |||      }t        |||      }dddgddgddggfD ]g  }t        j                  |      } ||       ||      }	}t        j                  |	      j                         sJ |j                  |	j                  k(  rgJ   y )Nr   rA   )rc   rd   rg   r!  rk   r<   )rF   rG   r   rE  rt   r   r   r   ry   r   r  )
r,   r.   r-   ynrh   rG  irnr   outoutns
             r0   test_spline_nanszTestInterp1D.test_spline_nans  s     IIaL&FFHVVX1* 	/D!QT*B1bt,CQFaVaV$45 /zz$'qE3q6Txx~))+++yyDJJ...	/	/r6   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@   rd   rg   )rF   ro   r   rG   r*   rp   r   )r,   r.   r-   s      r0   test_all_nanszTestInterp1D.test_all_nans%  sN    GGBK"&& IIbM:& 	)Q(	) 	) 	)   A##A,c                 f   t        j                  dd      }t        j                  | dz        }t        j                  ddd      }dD ]f  }||j                  _        d|j                  _        dD ]=  }t        |||	      } ||      }t        j                  |      j                         r=J  h y )
Nr   r@   rv   r   r<  TFF)ra   r^   r`   rb   rc   rd   rg   )rF   rG   r   flags	writeabler   rF  r   )r,   r.   r-   r   xnew_writeablerh   r   rH  s           r0   test_read_onlyzTestInterp1D.test_read_only,  s    IIaFFA28yyAs#+ 	/N#1DJJ  %AGG" /Q-w{{4(,,...	/	/r6   rh   )ra   r^   r_   re   rf   c                     t        dgdg|dd      }t         |g d      t        j                  g d             t        dgdg|d	      }t	        t
        d
      5   |d       d d d        y # 1 sw Y   y xY w)Nr   r!  Fr?   )rh   ru   rZ   )rk   r   r(   )r=   r!  r@   Tr   zx_new is abovematchr=   )r   r   rF   r   r*   rp   )r,   rh   r   s      r0   test_single_valuezTestInterp1D.test_single_value:  so    
 cUQCd ')+

<(@AcUQCd>:-=> 	cF	 	 	s   	A00A9N)ra   )*r2   r3   r4   r\   rr   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r+  r-  rF   r   r8  r:  r>  rC  rI  rO  rQ  rX  pytestmarkparametrizer\  r5   r6   r0   r8   r8   '   s    '!RB9HD&D4%H&+*G$>H*H*C&JC,J:1-0=2_LB)*F@1' $&==x 6 50	+/$)/ [[Gr6   r8   c                       e Zd Zd Zy)TestLagrangec                 6   t        g d      }t        j                  t        |j                              } ||      }t        j                  t        d      5  t        ||      }d d d        t        |j                  j                         y # 1 sw Y   *xY w)N)r<   r(   rk   r   rA   z
`lagrange`rZ  )
r   rF   rG   lencoeffsr]  warnsDeprecationWarningr   r   )r,   pxsyspls        r0   test_lagrangezTestLagrange.test_lagrangeJ  sl    ;YYs188}%rU\\,LA 	!"RB	!!!((2995	! 	!s   BBN)r2   r3   r4   rk  r5   r6   r0   ra  ra  H  s    6r6   ra  c                   T    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zy)TestAkima1DInterpolatorc                 6   |j                  dd|j                        }|j                  g d|j                        }t        ||      }|j                  g d|j                        }|j                  g d|j                        }t	         ||      |       y )Nr>   r   r   r>   r=   rx   rv   r=   r~         @rp  g@ffffff@rv   r>   r)   rx   r   r/        @g      @rq  g      @g@g333333!@g#@r;   r>   g      ?r=   r   g     @?g     @g.袋@g^@gn @gGNB@grcߖ@g	I@rv   rG   r   r   r   r   r,   xpr.   r-   akr5  r   s          r0   	test_evalz!TestAkima1DInterpolator.test_evalU  s    IIb#RZZI0JJ<BJJ  
 !A&ZZ "$**  .ZZ  zz	  #
 	2#r6   c                 :   |j                  dd|j                        }|j                  g d|j                        }t        ||d      }|j                  g d|j                        }|j                  g d|j                        }t	         ||      |       y )	Nr>   r   r   ro  makimamethodrr  )r>   gF??r=   g?g?gg{'@g>J(j@g?@gq@g@g9~@go
@rv   ru  rv  s          r0   test_eval_modz%TestAkima1DInterpolator.test_eval_modd  s     IIb#RZZI0JJ<BJJ  
 !Ah7ZZ &-/ZZ  9ZZ 5 =?JJ  H 	2#r6   c                    |j                  dd|j                        }|j                  g d|j                        }|j                  |d|z  fd      }t	        ||      }|j                  g d|j                        }|j                  g d	|j                        }|j                  |d|z  fd      }t         ||      |       y )
Nr>   r   r   ro  r=   rk   rn   rr  rt  )rG   r   r   stackr   r   rv  s          r0   test_eval_2dz$TestAkima1DInterpolator.test_eval_2dw  s    IIb#RZZI0JJ<BJJ  
 HHaa[qH) A&ZZ &-/ZZ  9ZZ 8 @Bzz  K XXr27m!X,2#r6   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   ro  )r   r(   r(   r   r=   rk   rv   r  rr  )   r(   r(   rt  )rF   rG   rO   emptyr   r   )r,   r.   y_r-   rx  r5  r   yi_s           r0   test_eval_3dz$TestAkima1DInterpolator.test_eval_3d  s   IIb#XXFGHHZ !Q'
"W!Q'
"W!Q'
"W!Q'
 A&XX & 'XXj!hh 9 : 1a73h1a73h1a73h1a72#r6   c                     |j                  ddg|j                        }|j                  ddg      }t        ||dd       }t         |d      |j                  d|j                               y )	Nr>   rx   r   r)   r   )rm   ri   g?g333333?)r   r   r   r   )r,   rw  r.   r-   akimas        r0   $test_linear_interpolant_edge_case_1dz<TestAkima1DInterpolator.test_linear_interpolant_edge_case_1d  s]    JJSzJ4JJSz"#AqqdCdRZZRZZZ%HIr6   c                 z   |j                  ddg      }|j                  |d|z  d|z  d|z  fd      }t        ||      }|j                  ddg      }|j                  g d	g d
g|j                        }t	         ||      |       t        ||j
                  d      }t	         ||      |j
                         y )Nr>   rx   r=   rv   r  rk   rn   r)   )r)   rx   r   r=   )rx   r=   rv   r  r   )r   r  r   r   r   Trv  s          r0   $test_linear_interpolant_edge_case_2dz<TestAkima1DInterpolator.test_linear_interpolant_edge_case_2d  s    JJBx HHaaaa0qH9 A&ZZb	"ZZ+)+24**  
 	2# ACCa02%r6   c                    t        j                  dd      }t        j                  ddg      }t        j                  d      }||d d ddf<   d|z  |d d ddf<   d|z  |d d ddf<   d|z  |d d ddf<   t	        ||      }t        j                  d	dg      }t        j                  d      }||d d ddf<   d|z  |d d ddf<   d|z  |d d ddf<   d|z  |d d ddf<   |}t         ||      |       t	        ||j                  ddd
      d      }t         ||      |j                  ddd
             t	        ||j                  d
dd      d
      }t         ||      |j                  d
dd             y )Nr>   r=   rx   )r(   r(   r(   r   rk   rv   r  r)   r(   rn   )rF   rG   rO   r  r   r   	transpose)r,   r.   r  r-   rx  r  r   r5  s           r0   $test_linear_interpolant_edge_case_3dz<TestAkima1DInterpolator.test_linear_interpolant_edge_case_3d  sm   IIb"XXr2hHHY!Q'
"W!Q'
"W!Q'
"W!Q'
 A&hhRy!XXi 1a73h1a73h1a73h1a72# AKK1a$8qA2Q1 56 AKK1a$8qA2Q1 56r6   c                 <   |j                  g d|j                        }|j                  ||dz  f      j                  }t	        ||      }|j                  ddg|j                        } ||      }t        ||j                  ||dz  f      j                         y )Nr   r   r(   r)   r   )r   r   r  r  r   r   )r,   rw  r.   r-   rx  x_evaly_evals          r0   %test_degenerate_case_multidimensionalz=TestAkima1DInterpolator.test_degenerate_case_multidimensional  s    JJy

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

Q3K0	1c5> 	@CAYF $B	63?	@r6   c           
         t         j                  j                  d       |j                  t        j                  t         j                  j                  d                  }|j                  t         j                  j                  d      dz        }|j                  |      |j                  |      }}|j                  t         j                  j                  d            }t        t        fD ]v  } |||       |||       |||      }
}	}dD ]T  }t        |j                   |||             |	||             t        |j                   |||             |
||             V x y )N90  r  )r   r   y      ?333333?r<   r   )
rF   r  r  r   r  r3  r4  r   r   r   )r,   rw  r.   r   c_rec_imr  r  rg  p_rep_imnus               r0   test_complex_coefz!TestPPolyCommon.test_complex_coef  s   
		uJJrwwryy//345JJryy''0I>?WWQZdjj))!,-5> 	DC1Is4|Sq\TtA D#r
 3T#r]C#r
 3T#r]CD	Dr6   c                 T   t         j                  j                  d       t         j                  j                  dddddd      }|j                  }t         j                  j                  d      }|j                  |      |j                  |      }}d	D ]]  }|j                  |d
z      }|j                  t        j                  t         j                  j                  |d
z                     }t        t        fD ]  } ||||      }	|	j                  j                  |||dz    |d | z   ||dz   d  z   k(  sJ  |	|      }
|d | |j                  z   |d|z   d  z   }|
j                  |k(  sJ  ||||      j                          ||||      j                  d       ||||      j                          ||||      j                  d      fD ]  }|j                  |	j                  k(  rJ   ` dD ]0  }t        t        fD ]  }t        t        |fi t        ||       ! 2 y )Nr  rA   r   r<   r!  r"  r   )rk   r(   r   rk   r(   rA   rk   rn   r(   )rD   r   r<   r!  )r   r.   rm   )rF   r  r  r  r  r   r  r   r   r   
derivativeantiderivativerm   r*   rp   r   )r,   rw  r   c_sr  rm   mr.   r  rg  res
targ_shaper  s                r0   	test_axiszTestPPolyCommon.test_axis  s
   
		uIINN1aAq!,ggiiv&A

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

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

+?rzz
 RScFBJJ?rzzJR	
r6   c                    |j                  ddgddgddgg      }|j                  g d      }t        ||d	      }t         |d
      |j                  d|j                               t         |d      |j                  d|j                               t         |d
d      |j                  d|j                               t         |dd      |j                  d|j                               y )Nrk   r   r(   r<   rA   r!  r  periodicr  g?r  r   333333ӿr  g@gffffff@r  r  s        r0   test_periodiczTestPPoly.test_periodic  s    JJAAA/0JJ{#!QJ/#

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

 	#q	2::k:#LM$
BJJ/B"**J$UVr6   c                 |   t        j                  ddgddgddgg      }t        j                  g d      }t        j                  g d      }t        ||d	
       dD ]]  }||j                  _        ||j                  _        t        ||      } ||      }t        j
                  |      j                         r]J  y )Nrk   r   r(   r<   rA   r!  r  )r   r<  r=  r!  r  rT  )rF   rO   r   rU  rV  rF  r   )r,   r   r.   r   rV  r   rH  s          r0   rX  zTestPPoly.test_read_only  s    HHq!fq!fq!f-.HH[!xx&a
+& 	+I )AGG )AGGaAT7D;;t$((***	+r6   rootsc           	         d }t         j                  j                  d      }d}dD ]  }t        j                  |j	                  dd|dz               }|j	                  dd|dz   |f	      }t        j
                  |      }|d d d f   t        j                  |dz         d d d
d f   z  }	 ||      }
||	z  }t        j                  |
j                  |      }||	z  }t        |j                  |||f      \  }}}t        ||d      }t        |j                  |d
      |j                  |d
      d      }|j                  |j	                  ddd            }t         ||       ||      d       t         ||d       ||d      d       |j                         }|j                         }t         ||       ||      d       |j                         }|j                         }|j	                  ddd      D ]~  \  }}t        |j                  ||f      \  }}|j!                  ||      }|j!                  ||      }t        ||d       t         ||       ||      z
   ||       ||      z
  d        |j#                         }|j#                         }t        ||j                  |      d        y )Nc                     t        j                  | dz         j                  dd      }t        j                  | dz         }t        ||      }|d d dd d df   S )Nrk   rD   )rF   rG   rK   r$   )powerr(  kr  s       r0   binom_matrixz/TestPPoly.test_descending.<locals>.binom_matrix!  sT    		%!)$,,R3A		%!)$AaATrT4R4Z= r6   r   rA   r@   r  rB   r@   rk   r   r(   sizerD   Tr  rn   r   r  r   vIh%<=r   r<   r(   -q=)rF   r  RandomStater  r  diffrG   dotr  r  r   r   flipr   r  r  	integrater%  )r,   rw  r*  rngr(  r  r.   cahh_powersr  capcdpcdpar  x_testpa_dpd_dpa_ipd_ir'  r*  int_aint_droots_droots_as                              r0   test_descendingzTestPPoly.test_descending  ss   	! ii##A& '	CAAr1q512AR%!)Q8B
AqzRYYuqy%9$B$*%EEHU#Ax-C&&c"CxBBJJR4IBAr1$/Brwwrw+RWWQRW-@dSBZZCS 9:FBvJ6
?BvqM2fa=uE==?D==?DDL$v,UC
 $$&D$$&DCV4 ,12::1v.1Q*Q*u59Q$q' 147T!W3D%*,, hhjGhhjGGRWWW%5EBO'	Cr6   c                    t         j                  j                  ddddd      }t        j                  g d      }t	        ||      }|j
                  j                  |j                  k(  sJ |j                  j                  |j                  k(  sJ  |d      j                  |j                  dd  k(  sJ  |t         j                  j                  dd            j                  d|j                  dd  z   k(  sJ |j                         }|j                  j                  d	k(  sJ |j                         }|j                  j                  d
k(  sJ y )Nr!  r(   rk   rA   r  r  r<   r<   r!  r<   r(   rk   r(   rA   )r"  r(   rk   r(   rA   )
rF   r  r  rO   r   r.   r  r   r  r  )r,   rw  r   r.   rg  dpips          r0   test_multi_shapezTestPPoly.test_multi_shapeS  s   IINN1aAq)HH[!!QKssyyAGG###ssyyAGG###v||qwwqr{***1%&,,0DDDD\\^ttzz_,,,ttzz_,,,r6   c                    t         j                  j                  d       t        j                  ddgddgddggt              }t        j                  g d	      }t        j                  |j                  |      |j                  |            }t         |d
      |j                  d|j                               t         |d      |j                  d|j                               y )Nr  rk   r   r(   r<   rA   r!  r   r  r  r  r  r  )
rF   r  r  rO   rE  r   construct_fastr   r   r   r  s        r0   test_construct_fastzTestPPoly.test_construct_fastc  s    
		tHHq!fq!fq!f-U;HH[!  A

1>#

+?rzz
 RScFBJJ?rzzJR	
r6   c                 *   t         j                  j                  d      }|j                  ddd      }t        j                  t         j
                  d|j                  d      df         }t         j
                  d   }t        |j                  |||f      \  }}}t        ||      }	|j                  t        |||            }
t         |	|      |
       |j                  t        |d d d d df   ||            }
t         |	|      d d df   |
       y )	Nr  rA   r      r   r   rk   )r  r)   gQ?333333?)rF   r  r1  r  r  r   r  r   r   _ppoly_eval_1r   _ppoly_eval_2)r,   rw  r6  c_npx_npx_p_npr   r.   r  rg  expecteds              r0   #test_vs_alternative_implementationsz-TestPPoly.test_vs_alternative_implementationsm  s    ii##D)xx2r"wwruuQa/01*+

T4$89	1c!QK::mD$?@#)::mDAqM4HI#q!th/r6   c                 *   t         j                  j                  d      }t        j                  t         j                  d|j                  d      df         }|j                  t        |            }t        ||d      \  }}}|j                  |      |j                  |      }	}t        j                  ||	|f      }
t        j                  ddd      }|j                  |      }t         |
|      |j                  t        ||||f                   t        ||	|      }t        j                  |      }t         ||       ||             dD ]A  }t        ||	||      }t        j                  |      }|j                  |j                  k(  rAJ  y )	Nr  r   r   rk   r	  r   )NTFr  )rF   r  r1  r  r   r  rc  r   r   r   r
  r2  r   r   r   ri   )r,   rw  r6  r.   r-   t_nprV  r)  tr   r  xi_npr5  r*  pppextraprg  s                    r0   r  zTestPPoly.test_from_spline}  sP   ii##D)GGBEE!SXXb\1,-.HHSVq!q)dAzz$D!111ay)Aq#&ZZ2

5tQ+H IJ Aq!"B2' * 	2F1aV4A!!!$A==AMM111	2r6   c                    t         j                  j                  d      }t        j                  t         j                  d|j                  d      df         }|j                  t        |            }t        ||d      \  }}}t        |j                  |      |j                  |      |      }t        j                  |      }	|j                  ddd      }
t         |	|
       ||
             y r  )rF   r  r1  r  r   r  rc  r   r   r   r   r
  r2  r   )r,   rw  r6  r.   r-   r]  r   r)  r  r  r5  s              r0   test_from_spline_2zTestPPoly.test_from_spline_2  s    ii##D)GGBEE!SXXb\1,-.HHSVA#1abjjmRZZ]A6s#[[Ar"2B(r6   c                    t         j                  j                  d       |j                  g dg      j                  }|j                  g dg      j                  }|j                  ddgg      j                  }|j                  ddg      }t        ||      }t        ||      }t        ||      }t        |j                         j                  |j                         t        |j                  d      j                  |j                         y )	Nr  )r   rA   r(   rk   )r   r!  r(      r!  r   rk   r(   )	rF   r  r  r   r  r   r   r  r   )	r,   rw  r   dcddcr.   r  dppddpps	            r0   test_derivative_simplez TestPPoly.test_derivative_simple  s    
		tJJ~&((ZZ(**jj5%.)*,,JJ1v1a[BlS!}))3551a(**DFF3r6   c                 P   t         j                  j                  d      }t        j                  t         j                  d|j                  d      df         }|j                  t        |            }t        ||d      \  }}}|j                  |      |j                  |      }	}t        j                  ||	|f      }
t        j                  ddd      }|j                  |      }t        dd      D ]2  }t         |
||      |j                  t        ||||f|                   4 y )Nr  r   r   rk   r	  r   rA   )rF   r  r1  r  r   r  rc  r   r   r   r
  r2  r	  r   r   )r,   rw  r6  r.   r-   r\  rV  r)  r]  r   r  r^  r5  dxs                 r0   test_derivative_evalzTestPPoly.test_derivative_eval  s    ii##D)GGBEE!SXXb\1,-.HHSVq!q)dAzz$D!111ay)Aq#&ZZ1+ 	WBBr2J

5tQQS3T(UV	Wr6   c                 "   t         j                  j                  d      }t        j                  t         j                  d|j                  d      df         }|j                  t        |            }t        ||dd      \  }}}|j                  |      |j                  |      }	}t        j                  ||	|f      }
|j                  ddd      }t        dd      D ]/  }t         |
||       |
j                  |      |      d	| 
       1 y )Nr  r   r   rk   r<   r)  r)  r   r@   dx=r#  )rF   r  r1  r  r   r  rc  r   r   r   r
  r2  r	  r   r  )r,   rw  r6  rW  y_npr\  rV  r)  r]  r   r  r5  rk  s                r0   r  zTestPPoly.test_derivative  s    ii##D)wwruuQa/01xxD	"tTQ!4dAzz$D!111ay)[[As#2, 	SBBr2J(9b(9"(=RDzR	Sr6   c           
         t        |j                  dgg      |j                  ddg            }t        |j                         j                  t        |j                  dgdgg      |j                  ddg            j                         t        |j                         j
                  t        |j                  dgdgg      |j                  ddg            j
                         y )Nrx   r   rk   )r   r   r   r  r   r.   )r,   rw  rg  s      r0   test_antiderivative_of_constantz)TestPPoly.test_antiderivative_of_constant  s    "**rdV$bjj!Q&89  "**qcA3Z("**aV*<=??	
 	  "**qcA3Z("**aV*<=??	
r6   c                 N   t        |j                  ddgg      |j                  g d            }|j                         }t        |j                  |j                  ddgddgg|j
                               t        |j                  |j                  g d|j
                               t        |j                  dd      |j                  d	|j
                               t        |j                   |d       |d      z
        |j                  d	|j
                               y )
Nrx   r)   r   rk   r   r   )r>   rk   r(   r(   r   )	r   r   r  r   r   r   r.   r   r5  )r,   rw  rg  qs       r0   #test_antiderivative_regression_4355z-TestPPoly.test_antiderivative_regression_4355  s    "**r3i[)2::i+@ARZZ!SAq6(:"**ZMNRZZ2::ZFGAq)2::c:+LM

1Q4!A$;/

3bjj
9	;r6   c                    |j                  g dg dg|j                        j                  }|j                  g dg dg|j                        j                  }|j                  g dg dg|j                        j                  }|j                  g d|j                        }t        ||      }|j	                         }|j	                  d	      }|j	                         }	t        |j                  |       t        |j                  j                  |j                         t        |j                  j                  |j                         t        |	j                  j                  |j                         y )
N)rA   r(   rk   )r   r         ?r   )rk   rk   rk   r   )r   r   rw        ?)      ?gUUUUUU?r)   r   r   )r   r   g      ?rx  g*?)r   ry  rk   r(   )r   r   r  r   r  r   r.   r   )
r,   rw  r   iciicr.   r  ippiippiipp2s
             r0   test_antiderivative_simplez$TestPPoly.test_antiderivative_simple  s    JJ	>2"**JEGG ZZ'?@

ZSUU jj/JL!zz  
 ! 	 JJ|2::J61a[!  #""$q!&#%%(		355)r6   c                    t         j                  j                  d      }t        j                  ddd      dz  }|j	                  t        |            }t        ||dd      \  }}}|j                  |      |j                  |      }	}t        j                  ||	|f      }
t        dd      D ]  }|
j                  |      }|j                  |      }t        |
j                  |j                         t        |      D ]k  }|j                  |      }d	}||j                  d d
 z  d|z
  |j                  dd  z  z   }t         ||j                  dd         ||      dd| d|        m  y )Nr  r   rk   rB   r(   r<   rn  r@   r.  rD   r   ro  z k=)r   r   )rF   r  r1  r2  r  rc  r   r   r   r
  r	  r  r  r   r   r.   )r,   rw  r6  rW  rp  r\  rV  r)  r]  r   r  rk  r|  r  rr  s                   r0   !test_antiderivative_vs_derivativez+TestPPoly.test_antiderivative_vs_derivative  sR   ii##D){{1a$a'xxD	"tTQ!4dAzz$D!111ay)2, 	B##B'C ..$CBDD#%%( 2Y nnQ'SUU3BZ<1q5#%%)*;;ab	NCMB4sSTRUFV	r6   c                    t         j                  j                  d      }t        j                  t         j                  d|j                  d      df         }|j                  t        |            }t        ||dd      \  }}}|j                  |      |j                  |      }	}t        j                  ||	|f      }
t        dd      D ]~  }|
j                  |      }t        |||f|      \  }}}t        j                  ddd      }|j                  |      }t         ||      |j                  t!        ||||f            d	
        y )Nr  r   r   rk   r<   rn  r@   r   r   r   )rF   r  r1  r  r   r  rc  r   r   r   r
  r	  r  r   r2  r   r   )r,   rw  r6  rW  rp  r\  rV  r)  r]  r   r  rk  r  t2_npc2_npk2r^  r5  s                     r0   test_antiderivative_vs_splinez'TestPPoly.test_antiderivative_vs_spline  s   ii##D)wwruuQa/01xxD	"tTQ!4dAzz$D!111ay)2, 	'B##B'C)4q/2>E5"KK1c*EE"BCGRZZeeUB=O0P%Q!%'	'r6   c                 P   |j                  g dg dg      j                  }|j                  g d|j                        }t        ||      }|j	                         }t         |d       |d      d       |j                         }t        |j                  |j                         y )	N)r(   rk   r(   r(   )r(   rk   rA   rA   r  r   gA?g_p   ?g:0yE>r   )r   r  r   r   r  r   r  r   )r,   rw  r   r.   rg  rL  r  s          r0   test_antiderivative_continuityz(TestPPoly.test_antiderivative_continuity$  s    JJl3466JJ{"**J5!QK 	::TB ]]_acc"r6   c                 J   t         j                  j                  d      }t        j                  t         j                  d|j                  d      df         }|j                  t        |            }t        ||dd      \  }}}|j                  |      |j                  |      }	}t        j                  ||	|f      }
d\  }}|
j                  ||      }|
j                         }t        | ||       ||      z
  d	       t        ||j                  t        |||||f      |j                  
      d	       d\  }}|
j                  ||d      }t        | ||       ||      z
  d	       |j!                  |j#                  |
j                  ||d                  sJ y )Nr  r   r   rk   r<   rn  )r  ?Fcheck_0dr   )r"  r  Tr  )rF   r  r1  r  r   r  rc  r   r   r   r
  r5  r  r   r   r   r   ry   )r,   rw  r6  rW  rp  r\  rV  r)  r]  r   r  r'  r*  igr|  s                  r0   test_integratezTestPPoly.test_integrate2  se   ii##D)wwruuQa/01xxD	"tTQ!4dAzz$D!111ay)1\\!Q!CFSVOe<

6!QtQ8


K	

 1\\!QD\1CFSVOe<vvbhhr||Aqe|DEFFFr6   c                 *   t        j                  g d      }t        j                  ddgddgddgddgg      }dD ]V  }||j                  _        t	        ||      }|j                  dd	      }t        j                  |      j                         rVJ  y )
Nrk   r(   r   r>   r   r=          rx   rT  rk   r   )rF   rO   rU  rV  r   r5  rF  r   )r,   r.   r   rV  r  rH  s         r0   test_integrate_readonlyz!TestPPoly.test_integrate_readonlyK  s    HHYHHr2hc
RIBx@A& 	+I )AGGaA;;q!$D;;t$((***	+r6   c           	      p   t        j                  g d      }t        j                  ddgddgddgddgg      }|j                  |      |j                  |      }}t        ||d      }|j	                         }|j                   |d	       |d
      z
  |j
                        }t        |j                  d
d	      |       t        |j                  dd      |       t        |j                  dd      |j                  d|z               t        |j                  dd      |j                   |d       |d      z
  |j
                               t        |j                  dd      |j                   |d       |d
      z
   |d	      z    |d      z
  |j
                               t        |j                  dd      |j                   |d       |d
      z
   |d	      z    |d      z
  |j
                               t        |j                  dd      |j                   |d       |d
      z
   |d	      z    |d      z
  d	|z  z   |j
                               t        |j                  dd      |j                   |d       |d      z
  |j
                               t        |j                  dd      |j                   |d       |d      z
  |j
                               t        |j                  dd      |j                   |d       |d      z
  d|z  z
  |j
                               y )Nr  r>   r   r=   r  rx   r!  r  r   rk   r   r   r  r(   r   r/  rs  r<         /@r  r   rD   rA   )rF   rO   r   r   r  r   r   r5  )	r,   rw  rW  rV  r.   r   r  I
period_ints	            r0   test_integrate_periodicz!TestPPoly.test_integrate_periodicW  s   xx	"xx"bC:Cy2r(CDzz$D!11!QJ/ZZ!qt2::Z>
Aq):6C,j9C,bjjZ.HIC-

1S6AcF?"**
E	GC+

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

1Q4!A$;1#5##>bjj
Q	SKKV$JJ!qtad"QsV+a*n<BJJ  	
 	Ar*

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

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

1Q4!A$;Z#?rzz
R	Tr6   c           
         t        j                  ddd      dz  }t        j                  d|z        }t        ||dd      \  }}}|j	                  |      |j	                  |      }}t        j                  |||f      }	|	j                         }
|
|
dk\  |
d	k  z     }
t        |
|j	                  t        |||f            d
       y )Nr   rk   r1  r(   rB   rA   rn  gV瞯Ҽg     ?r   r   )
rF   r2  r   r   r   r   r
  r%  r   r   )r,   rw  rW  rp  r\  rV  r)  r]  r   r  r  s              r0   
test_rootszTestPPoly.test_rootsy  s    {{1a$a'vvbg tqA6tQzz$D!111ay)HHJqI~!y.122::fdD!_&=>UKr6   c           	      >   |j                  ddgddgddgg|j                        j                  }|j                  g d|j                        }t        ||      }t	        |j                         |j                  dd|j                  dg|j                               d}t        |      }|d	d d fxx   |z  cc<   |j                  |      }t        ||      }t	        |j                  |      |j                  dd|j                  dg|j                               y )
NrD   ry  r   r   )r   r  rS  rx   r  g333333?r=   rk   )	r   r   r  r   r   r%  r   r	   solve)r,   rw  r   r.   r  constc1r  s           r0   test_roots_idzerozTestPPoly.test_roots_idzero  s     JJT
QFRJ7rzzJJLLJJ)J<1a[HHJJJc266:6bjjJI	

 q!
1a4EZZ^BlIIeJJc266:6bjjJI	
r6   r  c           	         dgdgg}ddg}t        |j                  |      |j                  |            }t        |j                         |j                  d|j                  g|j
                               t        |j                  d      |j                  d|j                  g|j
                               t        |j                  d      |j                  g |j
                               ddgddgg}g d}t        |j                  |      |j                  |            }t        |j                         |j                  d|j                  d|j                  g|j
                               t        |j                  d      |j                  d|j                  d|j                  g|j
                               t        |j                  d      |j                  g |j
                               y )Nr   rk   r   r   )r   r   r   r%  r   r   r  r  s        r0   test_roots_all_zerozTestPPoly.test_roots_all_zero  ss    S1#JF"**Q-A/	2::q"&&k:#LM
BJJ266{"**J$MN
BJJrJ$DEVaV"**Q-A/GGIrzz1bffa"8

zK	
 	GGAJ

Arvvq"&&#9
L	
 	
BJJrJ$DEr6   c                    |j                  g dg dg|j                        j                  }|j                  g d|j                        }t        ||      }t	        |j                         |j                  ddg|j                               t	        |j                  d      |j                  dg|j                               y )	N)rk   r   rD   )rD   r   r   r   r   g       r>   Fr  )r   r   r  r   r   r%  r,   rw  r   r.   r  s        r0   test_roots_repeatedzTestPPoly.test_roots_repeated  s     JJ
J/rzzJBDDJJzJ41a[
BJJc{"**J$MNHHH'SE)L	
r6   c                 D   |j                  dgdgg|j                        j                  }|j                  g d|j                        }t        ||      }t	        |j                         |j                  dg|j                               t	        |j                  d      |j                  g |j                               t	        |j                  d      |j                  dg|j                               t	        |j                  dd      |j                  g |j                               t	        |j                  d      |j                  g |j                               t	        |j                  dd      |j                  g |j                               y )	Nrk   rD   r   r  r)   F)discontinuityr   )r   r   r  r   r   r%  r  r  s        r0   test_roots_discontzTestPPoly.test_roots_discont  s7    JJbT{"**J577JJ{"**J51a[
BJJuBJJJ$GHHH5H)2::b

:+K	

 	rzz3%rzzz'JKHHSH.

2RZZ
0P	
 	rzz"BJJz'GHHHSH.

2RZZ
0P	
r6   Tz)solve returns object array for c.ndim > 2)np_onlyreasonc                 ~   t         j                  j                  d      }d}dD ]  }t        dd      D ]n  }t        j                  t         j
                  dd|j                  d      z  df         }d|j                  |dz   t        |      dz
  dd	      z  dz
  }|j                  |      |j                  |      }	}t        |	|      }
d
t        |j                               fD ]  }|
j                  |d|      }t        d      D ]  }t        d	      D ]  }|||f   }|j                  dkD  s||j                  z  } |
||      d d ||f   } |
|d|      d d ||f   }d|dt        |       }t        ||z
  |z  t        j                  d
      d|d          q  |dkD  sJ t        |             y )Nr  r   rT  r  r@   rB   r(   rk   rA   r>   F)r  ri   r  )r  ri   (z) r = r   )r   r   r   r   )rF   r  r1  r	  r  r   r  rc  r   r   rE  r  r-  reprr   )r,   rw  r6  numri   r  rW  rV  r.   r   r  r-   r  ijrrvalcmpvalr  s                      r0   test_roots_randomzTestPPoly.test_roots_random  s    ii##D)( 	PKq" Pyyq"sxx|*;R'?!@A%'3t9Q;1==Azz$'D)911a[uSZZ\23 PA%[QA"1X P!&q PA!"1Q3B!ww{ #rww&(&Ea!e&L)+B18C*EEFqU*L()+tBxj&I /Q&0@"**S/598;!PPPPP	P. Sy#$s)#yr6   c           
      4   t         j                  j                  d      }t        dd      D ]]  }|j	                  |dd      }|dk(  r
d|d d ddf<   d|j                         fD ]"  }t        j
                  |j                  t              }t        j                  |||       |dk(  r&t        j                  |      j                         sJ k| }d}t        |      D ]7  }|||d f   ||dz
  |z
  z  z  z  }|t        ||d f   ||dz
  |z
  z  z        z  }9 t        j                  d	
      5  ||z  }d d d        |j                         }|t        j                  |          }t        |t        j                   |      d       % ` y # 1 sw Y   ZxY w)Nr  rk   r      rA   )rk   r(   rk   r   r   ignore)r  g|=r   )rF   r  r1  r	  r  r  r  complexr    _croots_poly1ry   r   abserrstateravelr   
zeros_like)	r,   r6  r)  r   r-   wr  cresr  s	            r0   test_roots_crootszTestPPoly.test_roots_croots  s   ii##D)q" 	EAAs#AAv"!Aa%& EHHQWWG4$$Q1-688A;??,,,bq 8A1QtV9q1Q3q5z11CC!D&	A!AJ 677D8 [[2  4KC iik288C=.)R]]3%7eD#E	E(   s   /FFc                    t        j                  g dg      j                  }t        j                  ddg      }|j                  |      |j                  |      }}dD ]  }t	        |||      }|j                         }|j                         }	|du r|j                  |j                   ||j                  ddg                        sJ |j                  |j                   |	|j                  ddg                        sJ |j                  |j                   ||j                  ddg                        sJ t        |      rt        |j                         |j                  d	g|j                  
             %t         |ddg      |j                  ddg|j                  
             |j                  |j                   |	|j                  ddg                        rJ |j                  |j                   ||j                  ddg                        rJ t        |      rt        |j                         |j                  d	dg|j                  
              y )Nr   r   rk   TFNr  F皙皙?rx   r   gGz?gzGʿr   )rF   rO   r  r   r   r  r  r   ry   r   r   r%  r   r   any)
r,   rw  rV  rW  r   r.   ri   r  pp_dpp_is
             r0   r  zTestPPoly.test_extrapolate_attr  s   xx%''xxAzz$D!11. 	Kq!5B==?D$$&De#vvbhhr"**dC[*A'BCDDDvvbhhtBJJc{,C'DEFFFvvbhhtBJJc{,C'DEFFFr{#
BJJuBJJJ$G  c{OJJ(32::JF 66"((4

D#;0G+H"IJJJ66"((4

D#;0G+H"IJJJr{#
BJJT{"**J$M+	r6   N)#r2   r3   r4   r  r#  rX  r   r   rG  rM  rP  rZ  r  rb  ri  rl  r  rr  ru  r  r  r  r  r  r  r  r  r  r  r  r  skip_xp_backendsr  r  r  r5   r6   r0   r  r    sv   
W+ w'(1C )1Cf- 
0 20
)4WS

;*24'"#G2
+ TD w'(
L )
L w'(
 )
. w'%)9:F ;F( w'(
 )
 w'%)9:
 ;
* w'%)9:d+VW$ X ;$>E<r6   r  c                   N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)	TestBPolyc                     |j                  ddg      }|j                  dgg      }t        ||      }t         |d      |j                  d|j                               y )Nr   rk   rA   r<  rv   r   r   r   r   r   r,   rw  r.   r   r  s        r0   r  zTestBPoly.test_simple9  sP    JJ1vJJu1a[3Bbjj!ABr6   c                     |j                  ddg      }|j                  dgdgg      }t        ||      }t         |d      |j                  d|j                               y )Nr   rk   rA   r<  ggfffff@r   r  r  s        r0   test_simple2zTestBPoly.test_simple2?  sT    JJ1vJJaSz"1a[3N"**!MNr6   c                     |j                  ddg      }|j                  dgdgdgg      }t        ||      }t         |d      |j                  d|j                               y )Nr   rk   rA   r   r=  g433333@r   r  r  s        r0   test_simple3zTestBPoly.test_simple3E  s]    JJ1vJJaS1#'1a[sGJJ@

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

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

 &( 02zz	 # ;	
r6   c                    |j                  g d      }|j                  ddgddgddgg      }t        ||d      }t         |d      |j                  d|j                  	             t         |d
      |j                  d|j                  	             t         |dd      |j                  d|j                  	             t         |d
d      |j                  d|j                  	             y )Nr   rk   rA   rA   r   r(   r!  r  g333333@gHzG?r   g[(\?rk   r  r  r  s        r0   r#  zTestBPoly.test_periodice  s    JJy!JJAAA/01aZ03Jbjj!IJ4"**^2::*"NO3
BJJxrzzJ$JK4RZZ2::Z%NOr6   c           	         t         j                  j                  d      }d}dD ]  }t        j                  |j	                  dd|dz               }|j	                  dd|dz   |f      }|d d d	   j                         }t        |j                  |||f      \  }}	}
t        |	|d
      }t        |j                  |
d	      |j                  |d	      d
      }|j                  |j	                  ddd            }t         ||       ||      d       t         ||d       ||d      d       |j                         }|j                         }t         ||       ||      d       |j                         }|j                         }|j	                  ddd      D ]c  \  }}|j                  ||      }|j                  ||      }t        ||d       t         ||       ||      z
   ||       ||      z
  d       e  y )Nr   rA   r+  r@   rk   r  r<  r,  rD   Tr  rn   r   r  r   r.  r   r/  r0  )rF   r  r1  r  r  rt   r  r   r   r4  r   r  r  r5  )r,   rw  r6  r(  r  rW  ca_npcd_npr.   r7  r<  r=  r  r>  r?  r@  rA  rB  r'  r*  rC  rD  s                         r0   rG  zTestBPoly.test_descendingq  s   ii##A& 	,A773;;q"a!e45DKKcAK?E$B$K$$&EBJJue(<=IAr2r1$/Brwwrw+RWWQRW-@dSBZZCS 9:FBvJ6
?BvqM2fa=uE==?D==?DDL$v,UC
 $$&D$$&DCV4 ,1Q*Q*u59Q$q' 147T!W3D%*,	,3	,r6   c                    t         j                  j                  d      }|j                  ddddd      }t        j                  g d      }|j                  |      |j                  |      }}t        ||      }|j                  j                  |j                  k(  sJ |j                  j                  |j                  k(  sJ  |d      j                  |j                  dd  k(  sJ  ||j                  dd            j                  d	|j                  dd  z   k(  sJ |j                         }|j                  j                  d
k(  sJ y )Nr  r!  r(   rk   rA   r  r  r<   rI  rJ  )rF   r  r1  r  rO   r   r   r.   r  r   r  )	r,   rw  r6  rV  rW  r   r.   rg  rK  s	            r0   rM  zTestBPoly.test_multi_shape  s   ii##D)xx1aA&xx$zz$D!11!QKssyyAGG###ssyyAGG###v||qwwqr{***!Q &&&17712;*>>>>\\^ttzz_,,,r6   c           	         |j                  ddg      }|j                  dgdgdgg      }t        ||      }d}|dz  }t         ||      |j                  dd|z
  z  d|z
  z  d|z  d|z
  z  z   d|z  |z  z   |j                               y )Nr   r(   rA   rk   r   r<  r   r  )r,   rw  r.   r   r  xvalr)  s          r0   test_interval_lengthzTestBPoly.test_interval_length  s    JJ1vJJaS1#'1a[1HtHJJqAaCy!A#q!A#6Qq@

JS	
r6   c                 *   |j                  g d      }|j                  ddgddgddgg      }t        ||      }t         |d      |j                  d|j                               t         |d      |j                  d	|j                               y )
Nr  rA   r   r(   r  gGzG?r   333333?r  r  r  s        r0   test_two_intervalszTestBPoly.test_two_intervals  sz    JJy!JJAAA/01a[3Krzz!JK3N"**!MNr6   c                    |j                  ddg|j                        }|j                  dgdgdgg|j                        }t        ||      }dD ]
  }t        |||      }|j                         }|d	u rs|j	                  |j                   ||j                  d
dg                        sJ |j	                  |j                   ||j                  d
dg                        rJ |j                  |j                   ||j                  d
dg                        rJ |j                  |j                   ||j                  d
dg                        sJ  y )Nr   r(   r   rA   rk   r   r  r  Fr  g @)r   r   r   r  r   ry   r  )r,   rw  r.   r   r  ri   bp_ds          r0   r  zTestBPoly.test_extrapolate_attr  s/   JJ1vRZZJ0JJaS1#bjjJ91a[. 	KKq!5B==?De#vvbhhr"**dC[*A'BCDDDvvbhhtBJJc{,C'DEFFF66"((2bjj$.E+F"GHHH66"((4

D#;0G+H"IJJJ	Kr6   N)r2   r3   r4   r  r  r  r  r  r#  rG  rM  r  r  r  r5   r6   r0   r  r  7  s?    CO
	



P",H-	
OKr6   r  c                   N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)TestBPolyCalculusc                    |j                  g d      }|j                  ddgddgddgg      }t        ||      }|j                         }t         |d      |j                  d|j                               t         |d      |j                  d	|j                               t        |j                  d
D cg c]  } |d|       c}      |j                  g d|j                               t        |j                  d
D cg c]  } |d|       c}      |j                  g d|j                               y c c}w c c}w )Nr  rA   r   r(   r  r  r   r  r  rk   r(   rA   )r  r~   r>   )r  rx   r   )r   r   r  r   r   r  )r,   rw  r.   r   r  bp_derr  s          r0   r  z!TestBPolyCalculus.test_derivative  s   JJy!JJAAA/01a[sRZZ

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

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

<rzz
B	
 "C "Cs   8D?Ec                    t         j                  j                  d      }d\  }}t        j                  |j                  |            }|j                  ||dz
  f      }|j	                  |      |j	                  |      }}t        ||      }t        j                  |      }t        |      D ]S  }	|j                         }|j                         }|j                  |d   |d   d      }
t         ||
       ||
             U y Nr  r<   r   rk   r   rD      )rF   r  r1  r  r   r   r   r  r	  r  r2  r   )r,   rw  r6  r  r)  r.   r   r  r  dr  s              r0   test_derivative_ppolyz'TestBPolyCalculus.test_derivative_ppoly  s    ii##D)1GGCJJqM"JJ1Q3x zz!}bjjm11a[''+q 	.ABB++adAbE2.CBsGRW-		.r6   c           	         t         j                  j                  d      }d\  }}t        j                  |j                  |            }|j                  ||dz
  f      }|j	                         |dz  fD ]  }|j                  |      |j                  |      }	}t        ||	      }
|j                  |	d   |	d   d      }t        |      D ]*  }t         |
||       |
j                  |      |             ,  y )Nr  r  rk   r0  r   rD   r  )rF   r  r1  r  rt   r   r   r2  r	  r   r  )r,   rw  r6  r  r)  rW  rV  cc_npccr.   r  r  r  s                r0   test_deriv_inplacez$TestBPolyCalculus.test_deriv_inplace  s    ii##D)1wwszz!}%zz1ac(# iik4?3 	CEJJu%rzz$'7Br1B++adAbE2.C1X C3
,<BMM!,<S,ABC		Cr6   c           
      J   |j                  g d      }|j                  ddgddgg      }t        ||      }|j                         }|j                  ddd|j                        }t         ||      |j                  |dk  |dz  dz  d	|z  |dz  dz
  z  d
z         dd       y )Nr  r   rk   rA   r   r   r(   r=   r)   g      ?r0  r   r   )r   r   r  r2  r   r   where)r,   rw  r.   r   r  bixxs          r0   r  z,TestBPolyCalculus.test_antiderivative_simple  s     JJy!JJAA'(1a[ [[Ar[42aQ),rRUQY)?$)FH"	0r6   c                    t         j                  j                  d      }|j                  t        j                  |j                  d            |j
                        }|j                  |j                  d      |j
                        }t        ||      }|j                  |d   |d   d      }t         |j                         j                         |       ||      dd	       y )
Nr  r   r   r   r@   r(   rA   r   rD   r   r0  r  )rF   r  r1  r   r  r   r   r2  r   r  r  r,   rw  r6  r.   r   r  r  s          r0   test_der_antiderz"TestBPolyCalculus.test_der_antider  s    ii##D)JJrwwszz"~.bjjJAJJszz-0

JC1a[[[1quc*8))+668<2U	8r6   c                    t         j                  j                  d      }t        j                  |j                  d            }|j                  d      }t	        ||      }t        j                  |      }t        j                  |d   |d   d      }t         |j                  d      |       |j                  d      |      dd	       y )
Nr  r   r  r   rD   r@   r(   r0  r  )
rF   r  r1  r  r   r   r  r2  r   r  )r,   r6  r.   r   r  r  r  s          r0   test_antider_ppolyz$TestBPolyCalculus.test_antider_ppoly  s    ii##D)GGCJJrN#JJ}%1a[''+[[1qub),))!,R0,))!,R0u5	Jr6   c                    t         j                  j                  d      }|j                  t        j                  |j                  d            |j
                        }|j                  |j                  d      |j
                        }t        ||      j                         }|j                  dd }t         ||dz
         ||dz         dd	       y )
Nr  r   r   r   r@   rk   rD   r   r0  r  )
rF   r  r1  r   r  r   r   r  r.   r   r  s          r0   test_antider_continuousz)TestBPolyCalculus.test_antider_continuous!  s    ii##D)JJrwwszz"~.bjjJAJJszz'*"**J=1a['')TT!BZ2:2:U	@r6   c                    t         j                  j                  d      }t        j                  |j                  d            }|j                  d      }|j	                  |      |j	                  |      }}t        ||      }t        j                  |      }t        |j                  dd      |j                  dd      ddd       y )	Nr  r   r  r   rk   r0  F)r   r   r  )
rF   r  r1  r  r   r   r   r  r   r5  )r,   rw  r6  r.   r   r  r  s          r0   r  z TestBPolyCalculus.test_integrate+  s    ii##D)GGCJJrN#JJwzz!}bjjm11a[''+Q*Q*UU	Tr6   c                    |j                  dgg|j                        }|j                  ddg|j                        }t        ||      }t        |j	                  dd      |j                  d|j                        dd       t        ||d	      }|j                  |j	                  dd            sJ t        |j	                  ddd
	      |j                  d|j                        dd       y )Nrk   r   r   r(   r=   r   F)r   r  r  T)r   r   r   r   r5  ry   )r,   rw  r   r.   r*  b1s         r0   test_integrate_extrapz'TestBPolyCalculus.test_integrate_extrap5  s    JJuBJJJ/JJ1vRZZJ0!QK 	Aq)2::b

:+K"U	4 1aU+xxQ*+++Qt<

2RZZ
8uu	Vr6   c           	         |j                  g d      }|j                  ddgddgddgddgg      }t        j                  t        ||      d      }|j	                         }|j                   |d	       |d
      z
        }t        |j                  d
d	      |       t        |j                  dd      |       t        |j                  dd      |j                  d|z               t        |j                  dd      |j                   |d       |d      z
               t        |j                  dd      |j                   |d       |d
      z
   |d	      z    |d      z
               t        |j                  dd      |j                   |d       |d
      z
   |d	      z    |d      z
               t        |j                  dd      |j                   |d       |d
      z
   |d	      z    |d      z
  d	|z  z                t        |j                  dd      |j                   |d       |d      z
               t        |j                  dd      |j                   |d       |d      z
               t        |j                  dd      |j                   |d       |d      z
  d|z  z
               y )Nr  r>   r   r=   r  rx   r!  r  r   rk   r   r  r  r(   r   r/  rs  r<   r  r  r   rD   rA   r  )r   r   r  r   r  r   r5  )r,   rw  r.   r   r  r  r  s          r0   r  z)TestBPolyCalculus.test_integrate_periodicD  s;   JJy!JJR3*r3i"bBC""5A;JGZZ!qt,
Aq):6C,j9C,bjjZ.HIC-rzz!C&1S6//JKC+RZZ!qtad8JQsV8S-TUHf5

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

1Q4!A$;1#5##>Z#OP	R 	Ar*BJJqtad{,CDB,bjj1!.EFAs+RZZ!qta*n8T-UVr6   c                 p   |j                  dgg      }|j                  ddg      }t        ||      }|j                  ddd      }t         |j	                  d      |       |j                         |      dd       t         |j	                  d      |       |j                  d      |      dd       y )Nrk   r   r  rD   r0  r  )r   r   r2  r   r  r  )r,   rw  r   r.   r*  r  s         r0   test_antider_negz"TestBPolyCalculus.test_antider_neg\  s    JJuJJ1v!QK[[Ar"(R(,.@a.>.>.@.D"	0Q+-AQ-=-=b-A"-E"	0r6   N)r2   r3   r4   r  r  r  r  r  r   r  r  r  r  r
  r5   r6   r0   r  r    s?    
 ."C0(8
J@TVW00r6   r  c                   $    e Zd Zd Zd Zd Zd Zy)TestPolyConversionsc                 P   |j                  g d      }|j                  ddgddgddgg      }t        ||      }t        j                  |      }t        j                  |      }|j                  ddg      }t         ||       ||             t         ||       ||             y )	Nr  rA   r(   rk   r   r   r<  ffffff?)r   r   r   r  r  r   )r,   rw  r.   r   r  r  r  xvs           r0   test_bp_from_ppz#TestPolyConversions.test_bp_from_ppl  s    JJy!JJAAA/01a[##B'((,ZZc
#22'2B(r6   c                    t         j                  j                  d      }d\  }}|j                  t        j                  |j                  |                  }|j                  |j                  ||dz
  f            }t        ||      }t        j                  |      }t        j                  |      }	|j                  |d   |d   d      }
t         ||
       ||
             t         ||
       |	|
             y r  )rF   r  r1  r   r  r   r   r  r  r2  r   )r,   rw  r6  r  r)  r.   r   r  r  r  r  s              r0   test_bp_from_pp_randomz*TestPolyConversions.test_bp_from_pp_randomw  s    ii##D)1JJrwwszz!}-.JJszz1ac(+,1a[##B'((,[[1qub)22'2B(r6   c                    |j                  g d|j                        }|j                  ddgddgddgg|j                        }t        ||      }t        j                  |      }t        j
                  |      }|j                  ddg      }t         ||       ||             t         ||       ||             y )	Nr  r   rA   rk   r   r(   r<  r  )r   r   r   r   r  r  r   )r,   rw  r.   r   r  r  r  r  s           r0   test_pp_from_bpz#TestPolyConversions.test_pp_from_bp  s    JJy

J3JJAAA/rzzJB1a[''+$$R(ZZc
#22'2B(r6   c                    |j                  g d|j                        }|j                  ddgddgddgg|j                        }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   rA   rk   r   r(   )r   r   r   r*   	TypeErrorr  r   r  )r,   rw  r.   r   r  r  s         r0   test_broken_conversionsz+TestPolyConversions.test_broken_conversions  s    JJy

J3JJAAA/rzzJB1a[9% 	+&&r*	+ 1a[9% 	'""2&	' 	'		+ 	+	' 	's   !B9C9CCN)r2   r3   r4   r  r  r  r  r5   r6   r0   r  r  j  s    	))	)
'r6   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        j                  dd|j                  dg|j                        |j                  dg|j                              }t	        ||j                  ddg|j                               y )Nr   rk   r(   r   rA   r=   rv   r   _construct_from_derivativesr   r   r   )r,   rw  r  s      r0   test_make_poly_1z)TestBPolyFromDerivatives.test_make_poly_1  sb    ..q"**aS

*3RZZ2::Z5V
 	BJJBxrzzJBCr6   c           	         t        j                  dd|j                  ddg|j                        |j                  dg|j                              }t	        ||j                  g d|j                               t        j                  dd|j                  ddg|j                        |j                  dg|j                              }t	        ||j                  g d|j                               t        j                  dd|j                  dg|j                        |j                  ddg|j                              }t	        ||j                  g d|j                               y )	Nr   rk   r   )rx   rx   rx   r(   rA   )r=   rs  rx   )r=   g      rx   r  r,   rw  r  r  c3s        r0   test_make_poly_2z)TestBPolyFromDerivatives.test_make_poly_2  s#   ..q"**aV2::*6JJs"**J-
 	BJJ|2::JFG ..q"**aV2::*6JJs"**J-
 	BJJ~RZZJHI ..q"**aS

*3JJ1vRZZJ0
 	BJJ~RZZJHIr6   c           	         t        j                  dd|j                  g d|j                        |j                  dg|j                              }t	        ||j                  g d|j                               t        j                  dd|j                  dg|j                        |j                  g d|j                              }t	        ||j                  g d|j                               t        j                  dd|j                  dd	g|j                        |j                  dd
g|j                              }t	        ||j                  g d|j                               y )Nr   rk   r  r   r   )rx   竪?g@r  )r   r(   rA   )rx   gUUUUUU	@g
@r  r(   rA   )rx   r#  rv   r  r  r  s        r0   test_make_poly_3z)TestBPolyFromDerivatives.test_make_poly_3  s    ..q"**Ybjj*9JJs"**J-
 	BJJ'<BJJJOP ..q"**aS

*3JJy

J3
 	BJJ'=RZZJPQ ..q"**aV2::*6JJ1vRZZJ0
 	BJJ'9JLMr6   c                 :   t         j                  j                  d      }|j                  t         j                  d|j                  d      f         }|j                  t         j                  d|j                  d      f         }t        j                  dd||      }t        |d d d f   |j                  ddg|j                              }t        d      D ]@  }t         |d      ||   d	       t         |d
      ||   d	       |j                         }B y )Nr  r   r<   rk   r   r!  r>   Fr  rx   )rF   r  r1  r   r   r   r  r   r	  r   r  )r,   rw  r6  yaybr   r  r  s           r0   test_make_poly_12z*TestBPolyFromDerivatives.test_make_poly_12  s    ii##E*ZZaA./0ZZaA./0--aB;1QW:rzz1a&

zCDq 	!ABrFBqEE:BrFBqEE:B	!r6   c           	         t         j                  j                  d      }|j                  ddg|j                        }d\  }}|j                  |j                  |ddddf      |j                        }t        ||      }t        j                  ||      }t        ||      }	|j                  ddd	      }t         ||       |	|             y )
Nr  r   rk   r   )r   r<   r(   rA   r   r   )	rF   r  r1  r   r   r   _raise_degreer2  r   )
r,   rw  r6  r.   r)  r  r   r  r  r  s
             r0   test_raise_degreez*TestBPolyFromDerivatives.test_raise_degree  s    ii##E*JJ1vRZZJ01JJszz1aAq/2"**JE1a[  A&Bl[[Ar"2B(r6   c           	          t        t        t        j                  |j	                  ddg|j
                        |j	                  dg|j
                               y )Nr   rk   r   )r*   rp   r   r  r   r   r  s     r0   
test_xi_yiz#TestBPolyFromDerivatives.test_xi_yi  sB    ..JJ1vRZZJ0"**aS

*2S	
r6   c                     |j                  g d|j                        }|j                  dgdgdgg|j                        }t        t        t        j
                  ||       y )Nr   r   rk   r   r   )r   r   r*   rp   r   r  )r,   rw  r5  r   s       r0   test_coords_orderz*TestBPolyFromDerivatives.test_coords_order  sN    ZZ	Z4ZZ!qcA3rzzZ:j%"8"8"bAr6   c           
         j                  g dj                        }t        t        fdddgdgddgddgg            }t	        j
                  ||      }|j                  j                  dk(  sJ |j                         }dD ]\  }t         ||      j                  dj                               t         ||      j                  dj                               ^ y )Nr  r   c                 >    j                  | j                        S )Nr   )r   r   )r.   rw  s    r0   <lambda>z5TestBPolyFromDerivatives.test_zeros.<locals>.<lambda>  s    "**Qbjj*9 r6   r   )r   rA   )r>   r<  rx   r  gffffff?r=   r/  r>   )
r   r   r&  r  r   r  r   r  r  r   )r,   rw  r5  r   r  ppdr  s    `     r0   
test_zerosz#TestBPolyFromDerivatives.test_zeros  s    ZZBJJZ79Q!q!fq!f-
 ##B+ttzzV###mmo3 	ICBsGRZZ2::Z%FGCHbjjBJJj&GH	Ir6   c                 H   t         j                  j                  d      }|j                  t	        |dz         D cg c]
  }d|dz  z   c}|j
                        }t	        |dz         D cg c]"  }|j                  |j                  |            $ }}||fS c c}w c c}w )Nr  rk   rx   r(   r   )rF   r  r1  r   r	  r   )r,   r  r)  rw  r6  r  r5  r   s           r0   _make_random_mkz(TestBPolyFromDerivatives._make_random_mk	  s    ii##D)ZZE!A#J7qad7rzzZJ16qs<AbjjA'<<2v 8<s   B-'Bc                    d\  }}| j                  |||      \  }}t        j                  ||      }t        |dz        D ]D  }t	         ||      |j                  |D cg c]  }||   	 c}             |j                         }F y c c}w )Nr<   r   r(   )r7  r   r  r	  r   r  r  )	r,   rw  r  r)  r5  r   r  r  yys	            r0   test_random_12z'TestBPolyFromDerivatives.test_random_12	  s    1%%aB/B##B+1a4[ 	!EBrFBHH"-EBbi-E$FGB	!-Es   Bc           	          d\  }}| j                  |||      \  }}t        t        t        j                  fi t        ||d       y )Nr9  r   r5  r   orders)r7  r*   rp   r   r  r   r,   rw  r  r)  r5  r   s         r0   test_order_zeroz(TestBPolyFromDerivatives.test_order_zero	  sF    1%%aB/Bj%"8"8 	0"A.	0r6   c           
          d\  }}| j                  |||      \  }}t        j                  ||d|z  dz
         t        t        t        j                  fi t        ||d|z         y )Nr9  r(   rk   r>  r=  )r7  r   r  r*   rp   r   r?  s         r0   test_orders_too_highz-TestBPolyFromDerivatives.test_orders_too_high	  sd    1%%aB/Br2ac!e4j%"8"8 	2"AaC0	2r6   c           
         d\  }}| j                  |||      \  }}d}t        j                  |||      }t        |dz  dz         D ]6  }t	         ||dd dz
         ||dd dz                |j                         }8 |j                  t        j                   ||dd dz
         ||dd dz                     rJ d}t        j                  |||      }t        |dz        D ]6  }t	         ||dd dz
         ||dd dz                |j                         }8 |j                  t        j                   ||dd dz
         ||dd dz                     rJ y )	Nr9  r<   rB  r(   rk   rD   r0  r!  )	r7  r   r  r	  r   r  r   xpxisclose)	r,   rw  r  r)  r5  r   r  r  r  s	            r0   test_orders_globalz+TestBPolyFromDerivatives.test_orders_global"	  sw   1%%aB/B ##B59uaxz" 	!ABr!Bx%/0"R"X5E2FGB	! 66#++bAbE)9&:Br!Bx%?O<PQRRR
 ##B59uax 	!ABr!Bx%/0"R"X5E2FGB	! 66#++bAbE)9&:Br!Bx%?O<PQRRRRr6   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 |j                  t        j                   |
|	dz
         |
|	dz                     sJ  y c c}w )N)r"  r   rk   rD   rB  r(   r0  )
r7  r	  r%  r   r  r   r  r   rE  rF  )r,   rw  r  r)  r5  r   or>  r  r.   r  r  s               r0   test_orders_localz*TestBPolyFromDerivatives.test_orders_local:	  s    1%%aB/B!&q*A!a%**b2h' 	IDAq''Bv>B6!9>A-. %1u9r!e)}=]]_% vvckk"QY-AIGHHH	I +s   C&c           	      z   t         j                  j                  d      }d\  }}|j                  t        j                  |j                  |dz                     }|j                  |j                  |dz   |dddf            }t        j                  ||      }|j                  j                  d|z  |dddfk(  sJ y )Nr  )r"  r<   rk   r!  r"  r   r(   )	rF   r  r1  r   r  r   r  r   r  )r,   rw  r6  r  r)  r5  r   r  s           r0   test_yi_trailing_dimsz.TestBPolyFromDerivatives.test_yi_trailing_dimsF	  s    ii##D)1ZZ

1Q301ZZ

AaCAq!#456##B+ttzzac1aA....r6   c                    t        j                  d      }t        j                  ddgdgdgg|      }t	         |d      t        j
                  d             t        j                  d      }t        j                  ddgdgdgg|      }t	         |d      t        j
                  d             d}t        j                  ddgdgdgg|      }t	         |d      t        j
                  d             d}y )Nrk   r   rB  )rF   int32r   r  r   r   int64)r,   r>  rg  s      r0   test_gh_5430z%TestBPolyFromDerivatives.test_gh_5430N	  s    
 !""Aq6QC!:fEAaD"**Q-0!""Aq6QC!:fEAaD"**Q-0""Aq6QC!:fEAaD"**Q-0r6   N)r2   r3   r4   r  r!  r$  r(  r+  r-  r0  r5  r7  r;  r@  rC  rG  rJ  rL  rP  r5   r6   r0   r  r    sY    DJ*N,
!)
B
I"!02S0
I/r6   r  c                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)TestNdPPolyc                 D   t         j                  j                  d      }|j                  dd      }t        j                  ddd      }|j                  d      }t        ||f      } ||f      }t        |d d d d d f   ||      j                         }t        ||       y )Nr  r   r<   r   rk   r!  r   )	rF   r  r1  r  r2  r   rT  r  r   )r,   r6  r   r.   r5  rg  v1v2s           r0   test_simple_1dzTestNdPPoly.test_simple_1da	  s    ii##D)HHQNKK1c"XXc]AtuX1QqX;2.446Br6   c           
         t         j                  j                  d      }|j                  dddd      }t        j                  ddd      }t        j                  ddd      d	z  }|j                  d
      }|j                  d
      }t        j
                  t        |      dg|j                        }|j                  t         j                         t        j                  |j                  ddd      ||ft        j                  ddgt         j                        t         j                  ||f   t        j                  ddgt         j                        d|       |j!                         }t#        |||f||      }t%        ||       t'        |||f      }	dD ]H  }
 |	t         j                  ||f   |
      }t#        |||f|||
      }t%        ||t)        |
             J y )Nr  r   r<   r!  r"  r   rk   r   r(   r   r   r  *   )Nr   r   r   rk   )rk   r   )r(   rA   )r   r(   r  r#  )rF   r  r1  r  r2  r  rc  r   fillr   r    evaluate_ndrK   rO   intcc_r  _ppoly2d_evalr   r   r  )r,   r6  r   r.   r-   r5  r   rT  rU  rg  r  s              r0   test_simple_2dzTestNdPPoly.test_simple_2do	  s   ii##D)HHQ1a KK1c"KK1c"A%XXc]XXc]XXs2wl!''2
199S#q1q688QF"'':55R=88QF"'':	 XXZ1q!fb"-BA1v@ 	6B255R=R(Bq1a&"bR8BBDH5	6r6   c           	         t         j                  j                  d      }|j                  dddddd      }t        j                  dd	d      }t        j                  dd	d      d
z  }t        j                  dd	d      dz  }|j                  d      }|j                  d      }|j                  d      }t        ||||f      }	dD ]:  }
 |	|||f|
      }t        ||||f||||
      }t        ||t        |
             < y )Nr  r   r<   r!  r"  r   r   r   rk   r(   r@   rA   (   )Nr   r   r   r   rk   r   rk   r   r   )r(   rA   r   )r!  r   r(   r[  r#  )	rF   r  r1  r  r2  r   _ppoly3d_evalr   r  )r,   r6  r   r.   r-   r/   r5  r   zirg  r  rT  rU  s                r0   test_simple_3dzTestNdPPoly.test_simple_3d	  s    ii##D)HHQ1aA&KK1c"KK1c"A%KK1c"A%XXb\XXb\XXb\A1ay! 	6BBB<B'Bq1a)RRB?BBDH5		6r6   c           
      <   t         j                  j                  d      }|j                  dddddddd	      }t        j                  d
dd      }t        j                  d
dd      dz  }t        j                  d
dd	      dz  }t        j                  d
dd      dz  }|j                  d      }|j                  d      }|j                  d      }	|j                  d      }
t        |||||f      } ||||	|
f      }t        |||||f|||	|
      }t        ||       y )Nr  r   r<   r!  r"  r   r   r@   r   r   rk   r(   rA   r   r  )rF   r  r1  r  r2  r   _ppoly4d_evalr   )r,   r6  r   r.   r-   r/   ur5  r   rh  uirg  rT  rU  s                 r0   test_simple_4dzTestNdPPoly.test_simple_4d	  s
   ii##D)HHQ1aAr2.KK1c"KK1c"A%KK1d#Q&KK1d#Q&XXb\XXb\XXb\XXb\A1a|$BB 1q!QlBB;Br6   c                    t         j                  j                  d      }|j                  dd      }t        j                  ddd      }t        ||f      }|j                  dg      }t        ||      }|j                         }t        |j                  |j                         |j                  dg      }t        ||      }|j                  d      }t        |j                  |j                         y )	Nr  r   r<   r   rk   r!  r[  r(   )rF   r  r1  r  r2  r   r  r   r   r   r  )r,   r6  r   r.   rg  rK  r  dp1s           r0   test_deriv_1dzTestNdPPoly.test_deriv_1d	  s    ii##D)HHQNKK1c"At \\aS\!1a[mmocee$ !%1a["cee$r6   c                    t         j                  j                  d      }|j                  dddddd      }t        j                  dd	d      }t        j                  dd	d      d
z  }t        j                  dd	d      dz  }t        ||||f      }t        |j                  ddd	d
dd      |      }|j                  d
g      }|j                  d
      }	t        |j                  |	j                  j                  dd
dd	dd             t        |j                  d	ddd
dd      |      }|j                  g d      }|j                  d	      }	t        |j                  |	j                  j                  d
dddd	d             t        |j                  d
ddd	dd      |      }|j                  g d      }|j                  d      }	t        |j                  |	j                  j                  d
ddddd	             y )Nr  r   r<   r!  r"  r   r   r   rk   r(   r@   rA   r[  re  )r   r   rA   )rF   r  r1  r  r2  r   r   r  r  r   r   r  )
r,   r6  r   r.   r-   r/   rg  r  rK  rp  s
             r0   test_deriv_3dzTestNdPPoly.test_deriv_3d	  s   ii##D)HHQ1aA&KK1c"KK1c"A%KK1c"A%A1ay! 1;;q!Q1a0!4\\aS\!mmA1aAq9	; 1;;q!Q1a0!4+"1aAq9	; 1;;q!Q1a0!4\\Y\'mmA1aAq9	;r6   c                 B   t         j                  j                  d      }t        j                  d      }t        j                  ddd      dz  }t        j                  ddd      dz  }t        j                  ddd      d	z  }t        ||||f      }|j                  d
      }|j                  d      }|j                  d      }|j                  d      }	|j                  d      }
t         |||	|
f      ||	dz  z  |
dz  z  t        d	      t        d      z  z         y )Nr  )rk   rk   rk   rA   r   r<   r   rk   r   r<   r(   r!  rA   )rk   r   r   )r   r(   r   r  )
rF   r  r1  ro   r2  r   r  r  r   r   )r,   r6  r   r.   r-   r/   rg  rL  r5  r   rh  s              r0   test_deriv_3d_simplez TestNdPPoly.test_deriv_3d_simple	  s    ii##D)GG&'KK1c"A%KK1c"A%KK1c"A%A1ay!i(y)XXb\XXb\XXb\BB<(RU
RU*eAhuQx.?@	Br6   c                 "  
 t         j                  j                  d      }|j                  dddd      }t        j                  ddd      dz  }t        j                  ddd      d	z  }|j                  dd	dd
      }|j                  |j                  d   |j                  d   d      j                         }t        j                  ||d	       |j                  |j                        }|j                  dd	dd
      }|j                  dd
dd	      }|j                  |j                  d   |j                  d   d      j                         }t        j                  ||d	       |j                  |j                        }|j                  d	dd
d      j                         }t        |||f      
ddgddgddgddgfD ]P  }
j                  |      }t        
fd|t        dd      gd	z        \  }}	t        ||dddt!        |             R y )Nr  r   r<      r  r   rk   r   r(   rA   rD   rZ  )r   r)   )r  r  )rS  r=  c                      | |f      S r   r5   )r.   r-   rg  s     r0   r3  z/TestNdPPoly.test_integrate_2d.<locals>.<lambda>
  s    1aV9 r6   gh㈵>)epsrelepsabs)r   F)r   r   r  r   )rF   r  r1  r  r2  r  rK   r  rt   r    fix_continuityr   r5  r#   r   r   r  )r,   r6  r   r.   r-   cxrangesr  ig2err2rg  s             @r0   test_integrate_2dzTestNdPPoly.test_integrate_2d	  s   ii##D)HHQ2r"KK1d#Q&KK1d#Q& KK1a#YYqwwqz1771:r2779b!Q'JJqwwKK1a#KK1a#YYqwwqz1771:r2779b!Q'JJqwwKK1a#((* A1v' &))"J/1 		2F
 V$B4f$(T$B#CA#EGICB$TE$(L2		2r6   c           	      J   t         j                  j                  d      }|j                  dddddd      }t        j                  dd	d      d	z  }t        j                  dd	d      d
z  }t        j                  dd	d      dz  }t        ||||f      }|j                  d      }|j                  d      }d\  }	}
|j                  |	|
d      }|j                  d      }t         |||f       ||
||f       ||	||f      z
         |j                  |	|
d	      }|j                  d      }t         |||f       |||
|f       |||	|f      z
         |j                  |	|
d
      }|j                  d      }t         |||f       ||||
f       ||||	f      z
         y )Nr  r   r<   r!  rw  r  r   r   rk   r(   r   rA   r   )r=  r  rn   rf  re  r/  )	rF   r  r1  r  r2  r   integrate_1dr  r   )r,   r6  r   r.   r-   r/   rg  rl  vr'  r*  pxpaxpypaypzpazs                    r0   test_integrate_1dzTestNdPPoly.test_integrate_1d
  s   ii##D)HHQ1b"b)KK1d#Q&KK1d#Q&KK1d#Q& A1ay!HHSMHHSM1^^Aqq^)y)Aq6
CAq	NS!Q^$CD^^Aqq^)y)Aq6
CAq	NS!Q^$CD^^Aqq^)y)Aq6
CAq	NS!Q^$CDr6   c                 @   t         j                  j                  d      j                  d      }t        j                  ddd      }t        j                  ddd      dz  }t        j                  ddd	      d
z  }t        ||||f      }fd}t        d	||       y )Nr  )r   r<   r!  r"  r   r   r,  r   rk   r   r   r(   r@   rA   c                     j                  d      }j                  d      }j                  d      } ||||f       y )Nrc  r,  )r  )r  r  r5  r   rh  r6  s        r0   r  z/TestNdPPoly.test_concurrency.<locals>.worker_fn@
  sA    "%B"%B"%BRr6   )rF   r  default_rngr  r2  r   r"   )r,   r   r.   r-   r/   rg  r  r6  s          @r0   r  zTestNdPPoly.test_concurrency6
  s    ii##E*KK/K0KK1c"KK1c"A%KK1c"A%A1ay!	 	 Iq1r6   N)r2   r3   r4   rV  ra  ri  rn  rq  rs  ru  r  r  r  r5   r6   r0   rR  rR  `	  s7     6:6( (%(;>B(2BE42r6   rR  c                     t        j                  t        |       j                  d   f      }t	        |      D ]  \  }}|dk  s|dkD  rt         j
                  ||ddf<   (t        j                  ||      dz
  ||   z
  |   |cxk  r|dz      k  sJ  J t         fdt         j                  d         D              }|||ddf<    |S )z&Evaluate piecewise polynomial manuallyr(   r   rk   Nc              3   ^   K   | ]$  }|f   j                   d    |z
  dz
  z  z   & yw)r   rk   N)r  )r  r)  r   r  r  s     r0   r  z _ppoly_eval_1.<locals>.<genexpr>S
  s;      , !A#QWWQZ\!^,, ,s   *-)	rF   zerosrc  r  r%  r   searchsortedsumr	  )	r   r.   xpsrM  r  rw  r  r  r  s	   `      @@r0   rT  rT  I
  s    
((CHaggaj)
*C3 	26R!VvvC!HOOAr"Q&1Itr"AacF""""" ,qwwqz*, ,AaC	 Jr6   c                    |d   }|d   }| j                   d   }t        j                   |      }t        j                  |      }t        j                  |      }||k\  ||k  z  }	|||	 <   |j	                  |	      }
t        j
                  ||
      dz
  }|j                  dt        |            }| }|
|j                  |      z
  }t        j                  ||      }t        j                  t        t        |
            D cg c])  }t        j                  ||ddf   |dd||   f         + c}      }|||	<   |j                  |      }|S c c}w )z4Evaluate piecewise polynomial manually (another way)r   rD   rk   )NN)r  rF   r  
empty_likecompressr  cliprc  takevanderrO   r	  r3  rK   )rd  breaksr   r\  r'  r*  K	saveshaper  maskr  indxsr  r2  Vr)  valuess                    r0   rU  rU  Y
  s'   q	Ar
AQAI88D>D
--
CAI$!)$DCJ	t	BOOFB')EJJq#f+&E	BE""D
		$!AXXs2wPArvva1gr!U1X+7PQFCI
++i
 CJ Qs   .Ec                 d    |dk  rt        d      ||kD  ryt        ||z
  dz   |      | ||z
  z  z  S )z
    d^n (x**y) / dx^n
    r   zinvalid derivative orderrk   )rp   r   )r.   r-   r(  s      r0   _dpowr  p
  sC     	1u344	
QAEAIq!AAJ..r6   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
    NrY  r   r(   r   rD   rk   rF   r  rc  r   r  r%  zipr   r  r	  r  )r   rh  r   ynewr  rM  nxnyjoutr.   r-   j1j2s1s2r  k1r  s                     r0   r`  r`  |
  s    
z
((CI<qww
/CWWRa[FB!#dD/2 fq!AqQ+"Q%)+AqQ+"Q%)+CI__RUA&*__RUA&*Ar]Ar]
# 	0BAGGAJ' 0"R%'"R%'"R/0B1./B1./ 00	0 D	), Jr6   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
    Nrd  r   rA   r   rD   rk   r(   r  )r   rh  r   r  znewr  rM  r  r  nzr  r.   r-   r/   r  r  j3r  r  s3r  r  r  k3s                           r0   rg  rg  
  s+    
z
((CI<qww
/C!JBB$StT%:; iq!QAqQ+"Q%)+AqQ+"Q%)+AqQ+"Q%)+CI__RUA&*__RUA&*__RUA&*Ar]Ar]Ar]
# 	4BAGGAJ' 4
+ 4BAbeAgbeAgbeAgbB>?#BBqE23#BBqE23 $BBqE23 4C44	4 D	14 Jr6   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   rD   rk   r(   rA   r  )r   rh  r   r  r  unewr  rM  mxmymzmur  r.   r-   r/   rl  r  r  r  j4r  r  r  s4r  r  r  r  k4s                                 r0   rk  rk  
  s    
z
((CI<qww
/CWWRa[NBB'D$d(CD lq!QAqQ+"Q%)+AqQ+"Q%)+AqQ+"Q%)+AqQ+"Q%)+CI__RUA&*__RUA&*__RUA&*__RUA&*Ar]Ar]Ar]Ar]
# 	8BAGGAJ' 8
+ 8B#AGGAJ/ 8"R%'"R%'"R%'"R%'"R2"M N"'B1"6!7"'B1"6!7 #(B1"6!7 #(B1"6	!7 8888	8 D	;> Jr6   r   )Fscipy._lib._array_apir   r   r   r   r   r   r	   scipy._externalr
   rE  r]  r   r*   numpyr   r   r   r   rF   scipy.interpolater   r   r   r   r   r   r   r   r   r   r   r   r   r   scipy.specialr   r   r    scipy._lib._gcutilsr!   scipy._lib._testutilsr"   scipy.integrater#   r$   r^  r  xfail_xp_backendsr&   r8   ra  rm  r_  r:  r  r  r  r  r  r  r  rR  rT  r   rU  r  r`  rg  rk  r5   r6   r0   <module>r     s     3 *  ( ( - - - - & $ 2 9 ! ;;// KK11  ^ ^B6 6 &'s* s* (s*l $79J#KL: M:, 5% dL dL !dLN,& ,&^ 5{ { {| 5KK KK KK\ 5`0 `0 `0F 5% .' .' !.'b 5@ @ @Ff2 f2R  .0VV .	/!H%P*r6   