
    (ph}                    b   S SK JrJrJrJr  S SKJr  S SKrS SKJ	r	J
r
JrJr  S SKrS SKJrJrJrJrJrJrJrJrJrJrJrJrJrJr  S SKJrJr  S SKJ r   S SK!J"r"J#r#  S S	K$J%r%  S S
K&J'r'  S SKJ(r(   " S S5      r) " S S5      r* " S S5      r+ " S S5      r,\RZ                  R]                  S\\/5      S 5       r/ " S S5      r0 " S S5      r1 " S S5      r2 " S S5      r3 " S S5      r4 " S  S!5      r5 " S" S#5      r6 " S$ S%5      r7S& r8\Rr                  4S' jr:S( r;S,S) jr<S,S* jr=S,S+ jr>g)-    )xp_assert_equalxp_assert_closeassert_almost_equalassert_array_almost_equal)raisesN)mgridpisinpoly1d)interp1dinterp2dlagrangePPolyBPolysplrepsplev
splantidersplintsprootAkima1DInterpolatorNdPPolyBSplinePchipInterpolator)pochgamma)_ppoly)assert_deallocatedIS_PYPY)_run_concurrent_barrier)nquad)binomc                       \ rS rSrS rSrg)TestInterp2D   c                     [         SSS2S[        S24   u  p[        USU-  -   5      n[        [        5         [        X!U5        S S S 5        g ! , (       d  f       g = f)Nr      y              4@y              5@      ?)r   r	   r
   assert_raisesNotImplementedErrorr   )selfyxzs       [/var/www/html/venv/lib/python3.13/site-packages/scipy/interpolate/tests/test_interpolate.pytest_interp2dTestInterp2D.test_interp2d   sO    QqWa3h&'#a%L./Q1 0//s   A
A N)__name__
__module____qualname____firstlineno__r/   __static_attributes__r1       r.   r#   r#      s    r7   r#   c                   ~   \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS*S jrS*S jrS rS rS rS rS*S jrS*S jrS r\R:                  S4S jrS r\ RB                  RE                  \#SS9S 5       r$S  r%S! r&S" r'S# r(S$ r)\ RB                  RU                  S%S&5      S' 5       r+S(r,g))+TestInterp1D"   c                    [         R                  " S5      U l        [         R                  " S5      U l        [         R                  " S5      U l        U R                  R                  S5      U l        [         R                  " S5      U l        [         R                  " S5      U l        [         R                  " S/5      U l
        [         R                  " S/5      U l        [         R                  " S5      R                  S5      U l        [         R                  " S5      R                  S5      U l        [         R                  " S5      R                  S	5      U l        [         R                  " S5      R                  S5      U l        [         R                  " S
5      R                  S5      U l        [         R                  " S
5      R                  S5      U l        [         R                  " S5      R                  S5      U l        SU R$                  S S 2S4'   SU R$                  S S 2S4'   [         R                  " S5      R                  S5      U l        SU R&                  SS S 24'   SU R&                  SS S 24'   SU l        g )N      @      $@)r&             @        g      4@r&   
   )rB   r&   )r&   r&   r>   g      >@)r&      r>   )rC   r&   r>      r         Y)nparangex5x10y10reshapex25x2y2arrayx1y1y210y102y225y25y235y325y210_edge_updatedy102_edge_updated
fill_valuer*   s    r.   setup_method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% r7   c                 
   S HB  n[        U R                  U R                  US9  [        U R                  U R                  USS9  MD     [        U R                  U R                  SSS9  [        U R                  U R                  S[        R                  " S/5      S9  [        U R                  U R                  SSS9  [        U R                  U R                  SSS9  [        U R                  U R                  SS	S9  [        U R                  U R                  S
S9  [        U R                  U R                  SS9  [        U R                  U R                  SS9  [        U R                  U R                  SS9  [        U R                  U R
                  SSS	S9  [        U R                  U R
                  SS
[        R                  " S5      S9  [        U R                  U R
                  SS
[        R                  " S5      [        R                  " S5      4S9  [        U R                  U R
                  SS
[        R                  " S5      S4S9  [        [        [         U R                  U R                  5        [        [        [         U R                  [        R                  " S
5      5        [        [        [         U R                  U R                  5        [        [        [         U R                  U R                  5        [        [        [         U R                  U R                  5        [        U R                  U R
                  5        [        U R                  U R                  S
S9  [        [        [         U R                  U R                  5        [        [        [         U R                  U R                  5        [        [        [         U R                  U R                  SSS9  [        [        [         U R                  U R                  S/ SQS9  [        [        [         U R                  U R                  S[        R                  " S5      S9  [        [        [         U R                  U R                  SS//S9  [        [        [         U R                  U R                  SSS/S9  [        [        [         U R                  U R                  S[        R                  " / 5      S9  [        [        [         U R                  U R                  SSS9  [        [        [         U R                  U R
                  SS
SS/S9  [        [        [         U R                  U R
                  SS
SSS/4S9  g )N)	nearest
nearest-upzerolinearslinear	quadraticcubicpreviousnextkindextrapolaterk   r\   rd   )rF      rF   )rF   )rF   rF   r   rn   r&   rC   rk   axisr\   rB   rp   )rF   rF   rF   r1   r@   )r   rK   rL   rH   rQ   rT   rO   onesr(   
ValueErrorrN   rP   rU   rR   rS   r*   rk   s     r.   test_validationTestInterp1D.test_validationM   s   
?DTXXtxxd3TXXtxxd}M? 	488(wG488(HHbTN	,488(!	#488(	 488($	&488!,488!,488!,488!,4998"$	&$))(GGBK	)$))(WWR["''"+6	8$))(WWR["-	/ 	j(DHHdhh? 	j(DHHbhhqkB 	j(DHHdgg>j(DGGTXX>j(DHHdii@499%4991- 	j(DGGTXX>j(DHHdgg> 	j(DHHdhhX!-	/j(DHHdhhX!-	/j(DHHdhhX!#,!7	9j(DHHdhhX#%$	)j(DHHdhhX"$b	+j(DHHdhhX!#"	/j(DHHdhhX!#	%j(DGGTYYX"b	3j(DGGTYYX"r2h	9r7   c                 `   [        U R                  U R                  5      R                  (       d   e[        U R                  U R                  SS9R                  (       a   e[        U R                  U R                  5      R                  (       d   e[        U R                  U R                  SS9R                  (       a   e[
        R                  " [        U R                  U R                  5      R                  5      (       d   e[        U R                  U R                  SS9R                  S:X  d   e[        U R                  U R                  SS9R                  S:X  d   e[        U R                  U R                  5      R                  S:X  d   e[        U R                  U R                  5      R                  S:X  d   e[        U R                  U R                  SS	9R                  S:X  d   e[        [        U R                  U R                  5      R                  U R                  5        [        [        U R                  U R                  5      R                  U R                  5        [        [        U R                  U R                  5      R                  U R                  5        g )
NF)copy)bounds_error      @r\   )      ?r?   r   rn   rq   )r   rK   rL   rx   ry   rH   isnanr\   rp   rT   rU   r   r,   r+   r]   s    r.   	test_init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Cr7   c                    [        U R                  U R                  5      n[        U R                  S S S2   U R                  S S S2   5      n[        U" U R                  5      U R                  5        [        U" S5      [        R
                  " S5      5        [        U" / SQ5      U" / SQ5      5        [        U R                  S S S2   U R                  S S S2   SS9n[        U" U R                  5      U R                  5        [        U R                  S S S2   U R                  S S S2   SS9n[        [        X@R                  5        [        U R                  U R                  5      n[        U R                  S S S2   U R                  S S 2S S S24   5      n[        U" U R                  5      U" U R                  5      5        g )NrF   333333?g333333@gffffff@      @F)assume_sortedT)	r   rK   rL   r   rH   rQ   r(   rs   rT   )r*   interp10interp10_unsortedinterp10_assume_kwinterp10_assume_kw2interp10_y_2dinterp10_y_2d_unsorteds          r.   test_assume_sortedTestInterp1D.test_assume_sorted   sb   DHHdhh/$TXXdd^TXXdd^D!"3DHH"=txxH!"3C"8"((3-H!"3O"D"*?";	= &dhhttndhhttn49;!"4TXX">I&txx"~txx"~59; 	j"5xx@ !4995!)$((4R4.$))AttG:L!M!-"9"8"B	Dr7   c                 8    S H  nU R                  U5        M     g )N)rd   re   )_check_linearrt   s     r.   test_linearTestInterp1D.test_linear   s    )Dt$ *r7   c                 ,   [        U R                  U R                  US9n[        U" U R                  5      U R                  5        [        U" S5      [        R
                  " S5      5        [        U" / SQ5      [        R
                  " / SQ5      5        [        U R                  U R                  USS9n[        U" / SQ5      [        R                  " / SQ5      SS9  [        USS	S
9n[        [        [         U R                  U R                  40 UD6  g )Nrj   r   r   rl   rm         r   	      +=rtolTrk   r\   ry   )r   rK   rL   r   rH   rQ   r   asarraydictr(   rs   )r*   rk   r   extrapolatoroptss        r.   r   TestInterp1D._check_linear   s    DHHdhhT:!(488"4dhh?!(3-#?!(?";"$((?";	=  $((+8:_5

#345	B ,!%' 	j(DHHdhhG$Gr7   c                 x   [         R                  [         R                  [         R                  [         R                  4 HF  n[         R
                  " SUS9nUn[        X#SS9" U5      nUR                  U:X  d   e[        XCSS9  MH     / SQn[         R                  SS	/n[        X#5      " U5      n[        XCSS9  g )
N   dtyperd   rj   V瞯<atolr   rn   r&   r   rn   )
rH   float16float32float64
longdoublerI   r   r   r   nan)r*   dtypr,   r+   yps        r.   test_linear_dtypesTestInterp1D.test_linear_dtypes   s     ZZZZZZ]]$D 		!4(AA!X.q1B88t###B.$ VVQNa^AE*r7   c                    [         R                  [         R                  [         R                  /nU[         R                  [         R
                  /-   n/ SQnU H  n[         R                  " SSUS9nU Hu  n[         R                  " U* S-  5      R                  U5      nU HC  nUR                  U5      n	U H)  n
[        XWU
SS9n[        U" U	5      USSU S	U S
U 3S9  M+     ME     Mw     M     g )N)re   rc   rf   rg   r   rB   r   rz   Frk   ry   Hz>z,  )r   check_dtypeerr_msg)rH   r   r   r   	complex64
complex128rI   expastyper   r   )r*   dt_rdt_rcspline_kindsdtxr,   dtyr+   dtnxnewrk   fs               r.   test_slinear_dtypes TestInterp1D.test_slinear_dtypes   s     

BJJ

3bmm44@C		!Rs+AFFA2c6N))#.C88C=D ,$Q5I'$4936%r#au0EG !-    r7   c                 z   [        U R                  U R                  SS9n[        U" U R                  5      U R                  5        [        U" S5      [        R
                  " S5      5        [        U" S5      [        R
                  " S5      5        [        U" / SQ5      [        R
                  " / SQ5      5        g )Nrg   rj   r         ?r   r   rK   rL   r   rH   rQ   r*   r   s     r.   
test_cubicTestInterp1D.test_cubic   sv    DHHdhhW=!(488"4dhh?!(3-#?!(3-#?!(?";"$((?";	>r7   c                 P   [        U R                  U R                  SS9n[        U" U R                  5      U R                  5        [        U" S5      [        R
                  " S5      5        [        U" S5      [        R
                  " S5      5        [        U" / SQ5      [        R
                  " / SQ5      5        [        U R                  U R                  SSS	9n[        U" / S
Q5      / SQSS9  [        SSSS9n[        [        [         U R                  U R                  40 UD6  g )Nra   rj   r   r|   r   r   r?   r   r   rl   rm   r   r@   r   r   r   r   r   Tr   
r   rK   rL   r   rH   rQ   r   r   r(   rs   r*   r   r   r   s       r.   test_nearestTestInterp1D.test_nearest  s     DHHdhhY?!(488"4dhh?!(3-">!(3-">!(?";"$((<"8	;  $((+8:_5&U	4 ,!%' 	j(DHHdhhG$Gr7   c                 P   [        U R                  U R                  SS9n[        U" U R                  5      U R                  5        [        U" S5      [        R
                  " S5      5        [        U" S5      [        R
                  " S5      5        [        U" / SQ5      [        R
                  " / SQ5      5        [        U R                  U R                  SS	S
9n[        U" / SQ5      / SQSS9  [        SS	SS9n[        [        [         U R                  U R                  40 UD6  g )Nrb   rj   r   r|   r   r?   r   r   rl   rm   r   r   r   r   Tr   r   r   s       r.   test_nearest_upTestInterp1D.test_nearest_up  s     DHHdhh\B!(488"4dhh?!(3-">!(3-">!(?";"$((<"8	;  $((+8:_5&U	4 ,!%' 	j(DHHdhhG$Gr7   c           
         [        U R                  U R                  SS9n[        U" U R                  5      U R                  5        [        U" S5      [        R
                  " S5      5        [        U" S5      [        R
                  " S5      5        [        U" / SQ5      [        R
                  " / SQ5      5        [        U R                  U R                  SSS	9n[        U" / S
Q5      [        R                  SSS/SS9  [        U R                  U R                  SSS	9n[        U" / SQ5      [        R                  [        R                  SSSS/5        [        U R                  U R                  SSS	9n[        U" / SQ5      [        R                  [        R                  SSSS/[        R                  [        R                  SSSS//5        [        U R                  U R                  SSSS9n[        U" / SQ5      [        R                  [        R                  /SS/SS//5        [        SSSS9n[        [        [         U R                  U R                  40 UD6  [        / SQ/ SQSSSS9n[        U" / SQ5      [        R                  [        R                  SSS S S /5        [        / S!Q/ S"QSSS#S9n[        U" / SQ5      [        R                  [        R                  SSS S S /5        [        U R                  U R                  SSS	9n[        U" / SQ5      [        R                  [        R                  SSS$S$/[        R                  [        R                  SSS$S$//5        [        U R                  U R                  SSSS9n[        U" / SQ5      [        R                  [        R                  /SS/S$S$//5        g )%Nrh   rj   r   r|   r   r   r?   r<   r   rl   rm   r   r   r   r   r   rF   r>   r         r>   r            ro   r   r>   r   rB   r   Tr   r   r   rn   rF   rk   r\   r   r   rF   r   rn   r&   rC   r>   rn   rF   r&   r   rn   rF   r   rn   FrE   r   rK   rL   r   rH   rQ   r   r   rT   rU   r   r(   rs   rZ   r[   r*   r   r   interpolator1Dinterpolator2Dinterpolator2DAxis0r   s          r.   test_previous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%	&r7   c           
         [        U R                  U R                  SS9n[        U" U R                  5      U R                  5        [        U" S5      [        R
                  " S5      5        [        U" S5      [        R
                  " S5      5        [        U" / SQ5      [        R
                  " / SQ5      5        [        U R                  U R                  SSS	9n[        U" / S
Q5      SSS[        R                  /SS9  [        U R                  U R                  SSS	9n[        U" / SQ5      SSSS[        R                  [        R                  /5        [        U R                  U R                  SSS	9n[        U" / SQ5      SSSS[        R                  [        R                  /SSSS[        R                  [        R                  //5        [        U R                  U R                  SSSS9n[        U" / SQ5      SS/SS/[        R                  [        R                  //5        [        SSSS9n[        [        [         U R                  U R                  40 UD6  [        / SQ/ SQSSSS9n[        U" / SQ5      SSSSS[        R                  [        R                  /5        [        / S Q/ S!QSSS"S9n[        U" / SQ5      SSSSS[        R                  [        R                  /5        [        U R                  U R                  SSS	9n[        U" / SQ5      S#S#SS[        R                  [        R                  /S#S#SS[        R                  [        R                  //5        [        U R                  U R                  SSSS9n[        U" / SQ5      S#S#/SS/[        R                  [        R                  //5        g )$Nri   rj   r   r?   r   r   )rz   r   r   rl   rm   r   r   r   r   r   r   r>   r   rB   r   r   ro   r   rn   r   Tr   r   r   r   r   rF   r   r   FrD   r   r   s          r.   	test_nextTestInterp1D.test_nextt  s*   DHHdhhV<!(488"4dhh?!(3-">!(3-">!(?";"$((<"8	;  $((+8:_5Aq"&&)	7 "$((DHH6-:<'=>Aq!RVVRVV4	6 "$((DIIF-:<'=>Q1bffbff5b"b"&&"&&9;	< 'txx,--I+K8Qb&&"&&)+	,
 ,!%' 	j(DHHdhhG$G ")",6-:046 	'>?Aq!R8	: ")",6-:057 	'>?Aq!R8	: "$((D,B,B'--:< 	'=>b!Q7b"b"&&"&&9;	< 'txx1G1G,2,--I 	+K8bb&&"&&)+	,r7   c                 z   [        U R                  U R                  SS9n[        U" U R                  5      U R                  5        [        U" S5      [        R
                  " S5      5        [        U" S5      [        R
                  " S5      5        [        U" / SQ5      [        R
                  " / SQ5      5        g )Nrc   rj   r   r|   r   r   r   r   r   s     r.   	test_zeroTestInterp1D.test_zero  sv    DHHdhhV<!(488"4dhh?!(3-">!(3-">!(?";"$((<"8	:r7   c                     [        [        X5         U" U5        g ! [         a  nU [        U5      ;   d   e S nAg S nAff = fN)r(   rs   str)r*   interpolant
test_array
fail_valueerrs        r.   bounds_check_helper TestInterp1D.bounds_check_helper  s?     	j+:	1
# 	1!ls3x/0/	1s    
A<Ard   c                    [        U R                  U R                  U R                  SUS9n[	        U" S5      [
        R                  " U R                  5      5        [	        U" S5      [
        R                  " U R                  5      5        [	        U" S/S/S/S///5      [
        R                  " U R                  5      SS9  [	        UR                  [
        R                  " / SQ5      5      [
        R                  " / S	Q/ S
Q/5      5        [        U R                  U R                  SUS9nU R                  USS5        U R                  USS5        U R                  U/ SQS5        U R                  U/ SQS5        U" / SQ5        g )NF)r\   ry   rk   gffffff&@g333333g333333)@gL3@)check_shape)r   r@   r<         "@      &@)TFFFF)FFFFTT)ry   rk   r   r   )r@   r   r@   )r@   r|         5@r   )r@   r<   r   )	r   rK   rL   r\   r   rH   rQ   _check_boundsr   )r*   rk   extrap10raises_bounds_errors       r.   _bounds_check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,r7   c                    [         R                  " S5      R                  [        5      n[         R                  " S5      R                  [        5      n[	        X#U[         R
                  SS9nU" US-
  5      n[         R                  " US   5      (       d   e[        U[         R                  [         R
                  US S 4   5        g )NrB   Fr   rn   r   rF   )	rH   rI   r   intr   r   r}   r   r_)r*   rk   r,   r+   cyis         r.   _bounds_check_int_nan_fill'TestInterp1D._bounds_check_int_nan_fill  s    IIbM  %IIbM  %QeLq1uXxx1!"beeBFFAcrFN&;<r7   c                 Z    S H%  nU R                  U5        U R                  U5        M'     g )N)rd   rg   ra   rh   ri   re   rc   rf   )r  r  rt   s     r.   test_boundsTestInterp1D.test_bounds  s*    5Dt$++D15r7   c                    [        U R                  U R                  USSS9n[        U" S5      [        R
                  " S5      5        [        U" S5      [        R
                  " S5      5        [        U" SS/5      SS	/5        U R                  U R                  U R                  U R                  4 GHR  n[        U R                  X1S
S	SS9n[        U" S5      [        R
                  " S5      5        [        U" S5      [        R
                  " S5      5        [        U" SS/5      [        R
                  " S5      5        [        U R                  X1S
SSS9n[        U" S5      [        R
                  " S5      5        [        U" S5      [        R
                  " S5      5        UR                  S:X  a'  SS	//UR                  S   -  /UR                  S   -  nOSS	//UR                  S   -  n[        U" SS/5      U5        GMU     / SQnU R                  U R                  4 H$  n[        [        [         U R                  X1S
USS9  M&     [        U R                  U R                  US
USS9n[        U" S5      / SQ/S-  5        [        U" S5      / SQ/S-  5        [        U" SS/5      S	S	/SS/SS///S-  5        S	S/n[        [        [         U R                  U R                  US
USS9  U R                  U R                  U R                  4 H  n[        U R                  X1S
USS9nS	S/nUR                  S:X  a  U/UR                  S   -  n[        U" S5      U5        [        U" S5      U5        S	S	/SS//nUR                  S:X  a  U/UR                  S   -  n[        U" SS/5      U5        M     [        R                  " / SQ5      S	4nU R                  U R                  4 H$  n[        [        [         U R                  X1S
USS9  M&     [        U R                  U R                  US
USS9n[        U" S5      [        R
                  " S5      5        [        U" S5      / SQ/S-  5        [        U" SS/5      SS	/SS	/SS	///S-  5        [        R                  " SS/5      S	4n[        [        [         U R                  U R                  US
USS9  U R                  U R                  U R                  4 H  n[        U R                  X1S
USS9n[        U" S5      [        R
                  " S	5      5        SS/nUR                  S:X  a  U/UR                  S   -  n[        U" S5      U5        SS	/SS	//nUR                  S:X  a  U/UR                  S   -  n[        U" SS/5      U5        M     / SQ/ SQ4nU R                  U R                  4 H$  n[        [        [         U R                  X1S
USS9  M&     [!        S5       H  nUS:X  a  [#        S U 5       5      n[        U R                  U R                  US
USS9n[        U" S5      / SQ/S-  5        [        U" S5      / SQ/S-  5        [        U" SS/5      SS	/SS/SS///S-  5        M     SS/S	S/4n[        [        [         U R                  U R                  US
USS9  U R                  U R                  U R                  4 H  n[        U R                  X1S
USS9nS	S/nUR                  S:X  a  U/UR                  S   -  n[        U" S5      U5        SS/nUR                  S:X  a  U/UR                  S   -  n[        U" S5      U5        SS	/SS//nUR                  S:X  a  U/UR                  S   -  n[        U" SS/5      U5        M     S	S/SS//nU R                  U R                  U R                  4 H$  n[        [        [         U R                  X1S
USS9  M&     [!        S5       H  nUS:X  a  [        R                  " U5      n[        U R                  U R                  US
USS9n[        U" S5      S	S/SS//5        [        U" S5      S	S/SS//5        [        U" SS/5      S	S	/SS//SS/SS///5        M     SS/SS//S	S/SS//4nU R                  U R                  U R                  4 H$  n[        [        [         U R                  X1S
USS9  M&     [!        S5       H  nUS:X  a2  [        R                  " US   5      [        R                  " US   5      4n[        U R                  U R                  US
USS9n[        U" S5      S	S/SS//5        [        U" S5      SS/SS//5        [        U" SS/5      SS	/SS//SS/SS///5        M     g )N)d   Fr   rB   g      Y@rG   r  r  rF   )rk   rp   r\   ry   rC   rn   r   )r     ,  r&   r  r  )r  8r  r  c              3   N   #    U  H  n[         R                  " U5      v   M     g 7fr   )rH   rQ   ).0r   s     r.   	<genexpr>1TestInterp1D._check_fill_value.<locals>.<genexpr>R  s     "C
1288A;;
s   #%i  i  ii0)r   rK   rL   r   rH   r   rX   rY   rV   rW   rJ   ndimshaper(   rs   rQ   rangetuple)r*   rk   interpr+   resultr\   iis          r.   _check_fill_valueTestInterp1D._check_fill_value  sp	   $((DHH4%0uF!&*bjj.>?!&+rzz%/@A!&#r"3dC[A ))TYY		488<Adggq"),5BF%fRj"**T2BC%fSk2::d3CD%fc2Y&7D9IJ dggq")45JF%fRj"**T2BC%fSk2::e3DEvv{ #;-!''!*45
B+3%fc2Y&7@! =& %
))TYY'A*h!juN ( $''4994b%/eE!&*.?!.CD!&+/@1/DE!&#r"3Sz8;Sz8;Sz7C 6DFG6H 	I
 3Z
j(DGGTYYT*5	J))TYY1Adggq")3%IF3ZFvv{ AGGAJ.%fRj&9%fSk6:Cj3*-Fvv{ AGGAJ.%fc2Y&7@ 2 hh12C8
))TYY'A*h!juN ( $''4994b%/eE!&*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1Adggq")3%IF%fRj"**S/BD\Fvv{ AGGAJ.%fSk6:SkD#;/Fvv{ AGGAJ.%fc2Y&7@ 2 )/:
))TYY'A*h!juN ( (BQw""C
"CC
dggtyyt")3%IF%fRj?2Ca2GH%fSk4F3G!3KL%fc2Y&7D#;<@#;<@#;;H :IKL:M N  TlS#J/
j(DGGTYYT*5	J))TYY1Adggq")3%IF3ZFvv{ AGGAJ.%fRj&9D\Fvv{ AGGAJ.%fSk6:SkD#;/Fvv{ AGGAJ.%fc2Y&7@ 2" Cj4,/
))TYY1A*h!juN 2 (BQwXXj1
dggtyyt")3%IF%fRjC:d|2LM%fSkS#Jt3MN%fc2Y&7C:<?:;G<@$<<@$<;I:J K  d|eU^4SzD$<02
))TYY1A*h!juN 2 (BQw hhz!}5rxx
17NO
dggtyyt")3%IF%fRjC:d|2LM%fSkT4L5:EN4D E%fc2Y&7D#;<@#;;H<A4=<A4=;J:K L r7   c                 8    S H  nU R                  U5        M     g N)rd   ra   rg   re   rf   rc   rh   ri   )r   rt   s     r.   test_fill_valueTestInterp1D.test_fill_value  s    1D""4(1r7   c                     [        U R                  U R                  SS9nUR                  S:X  d   eSUl        UR                  S:X  d   eg )Ng     ^@r{   g     t@)r   rK   rL   r\   )r*   r  s     r.   test_fill_value_writeable&TestInterp1D.test_fill_value_writeable  sH    $((DHH?  E)))!  E)))r7   c           	      z   [        U R                  U R                  US9n[        U" [        R
                  " SS/SS//5      5      [        R
                  " SS/SS//5      5        [        U" S5      [        R                  5      (       d   eU" S5      R                  S:X  d   e[        U R                  U R                  US9n[        U" S5      [        R
                  " SS	/5      5        [        U" [        R
                  " SS/5      5      [        R
                  " SS/S	S
//5      5        [        U R                  U R                  SUS9n[        U" S5      [        R
                  " SS/5      5        [        U" [        R
                  " SS/5      5      [        R
                  " SS/SS//5      5        [        R
                  " SS/SS//5      n[        U" U5      [        R
                  " SS/SS//SS/S
S///5      5        [        U" U5      [        R
                  " SS/SS	//SS/SS///5      5        g )Nrj   rz   r<   r?         @r   r1   r|   r         (@r   rp   rk   r   g      *@g      .@g      1@r=         @g      ,@)r   rK   rL   r   rH   rQ   
isinstancendarrayr  rT   rU   )r*   rk   r   	interp210	interp102x_news         r.   _nd_check_interpTestInterp1D._nd_check_interp  s    DHHdhhT:!(288b"XBx4H+I"J"$((RHr2h+?"@	B (3-4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r7   c                    / SQn[         R                  " [         R                  " U5      5      R                  " U6 n[	        U5       H  u  pE[         R                  " U5      n[        XcXAS9n[        U" U5      X1S9  [         R                  " S5      R                  S5      S-  n[        U5      n	/ SQXUS-   & U" U5      R                  [        U	5      :X  a  M   U5       e   g )N)   r>         r,  r   r7  )r&   rC   rn   r+  rn   )
rH   rI   prodrM   	enumerater   r   listr  r  )
r*   rk   ar+   nsr,   r-   rO   bs
             r.   _nd_check_shapeTestInterp1D._nd_check_shape  s    IIbggaj!))1-aLDA		!AA1A%adA<5!))'2S8BQA A!HR5;;%(*0D0* !r7   c                 Z    S H%  nU R                  U5        U R                  U5        M'     g )N)rd   rg   re   rf   ra   rc   rh   ri   )r3  rA  rt   s     r.   test_ndTestInterp1D.test_nd  s*    1D!!$'  &1r7   c                    [         R                  " / SQ5      nX3S-  -  nUR                  U5      n[        X4US9n[	        US S U" U5      S S 5        [         R
                  " SSS5      n[        X4R                  US9n[        X4R                  US9n[	        U" U5      R                  U" U5      5        [	        U" U5      R                  U" U5      5        g )N)
rn         @rC   g@r6  g@g@g       @g      #@rB         ?       @rj   rF   rn   rB      )rH   rQ   r   r   r   linspacerealimag)	r*   r   rk   r,   r+   r  xicrcis	            r.   _check_complex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5r7   c                     S HC  nU R                  [        R                  U5        U R                  [        R                  U5        ME     g r#  )rP  rH   r   r   rt   s     r.   test_complexTestInterp1D.test_complex  s6    1Dd3t41r7   zTest not meaningful on PyPy)reasonc                     [         R                  " SS5      n[         R                  " SS5      n[        [        X5       nU" SS/5        AS S S 5        g ! , (       d  f       g = f)Nr   rn   皙?皙?)rH   rJ  r   r   )r*   r,   r+   r  s       r.   test_circular_refsTestInterp1D.test_circular_refs  sK     KK1KK1!/6C: 0//s   A
A"c                     S HD  n[         R                  " / SQ[         R                  S9n[        X"US9n[	        U" U5      U5        MF     g )N)ra   rh   ri   )r   2      r   rj   )rH   rQ   int8r   r   )r*   rk   r,   r  s       r.   test_overflow_nearest"TestInterp1D.test_overflow_nearest  s:    3DRWW5A!T*B%beQ/ 4r7   c                 ,   [         R                  " S5      R                  [        5      nUR	                  5       n[         R
                  US'   S HB  n[        XUS9nU" SS/5      n[         R                  " U5      R                  5       (       a  MB   e   g )NrB   r7  )rc   re   rj   g@r*  )	rH   rI   r   floatrx   r   r   isfiniteall)r*   r,   r+   rk   irvalss         r.   test_local_nansTestInterp1D.test_local_nans  su     IIbM  'FFHvv!'D!T*BsCj>D;;t$((**** (r7   c                    [         R                  " S5      R                  [        5      nUR	                  5       nUR	                  5       n[         R
                  US'   S H  n[        XUS9n[        XUS9nSSS/SS/SS//4 Ho  n[         R                  " U5      nU" U5      U" U5      p[         R                  " U	5      R                  5       (       d   eUR                  U	R                  :X  a  Mo   e   M     g )Nr   rC   )rf   rg   rj   r7  rn   r>   )rH   rI   r   rb  rx   r   r   r   r}   rd  r  )
r*   r,   r+   ynrk   re  irnr   outoutns
             r.   test_spline_nansTestInterp1D.test_spline_nans  s     IIaL&FFHVVX1*D!T*B1t,CQFaVaV$45zz$'qE3q6Txx~))++++yyDJJ...	 6 +r7   c                     [         R                  " S5      [         R                  -  n[         R                  " S5      n[	        [
        5         [        XSS9  S S S 5        g ! , (       d  f       g = f)NrB   rg   rj   )rH   rr   r   rI   r(   rs   r   )r*   r,   r+   s      r.   test_all_nansTestInterp1D.test_all_nans  sC    GGBK"&& IIbM:&Q( '&&s   A!!
A/c                 v   [         R                  " SS5      n[         R                  " U* S-  5      n[         R                  " SSS5      nS Hj  nXCR                  l        SUR                  l        S H@  n[        XUS	9nU" U5      n[         R                  " U5      R                  5       (       a  M@   e   Ml     g )
Nr   rB   rz   r   rW  TFF)rd   ra   rc   re   rf   rg   rj   )rH   rI   r   flags	writeabler   rc  rd  )r*   r,   r+   r   xnew_writeablerk   r   rf  s           r.   test_read_onlyTestInterp1D.test_read_only  s    IIaFFA28yyAs#+N#1JJ  %AGG"Q-w{{4(,,....	" ,r7   rk   )rd   ra   rb   rh   ri   c                     [        S/S/USSS9n[        U" / SQ5      [        R                  " / SQ5      5        [        S/S/USS	9n[	        [
        S
S9   U" S5        S S S 5        g ! , (       d  f       g = f)Nr   r7  FrA   )rk   ry   r\   )rn   r   r&   )r?   r7  rB   Tr   zx_new is abovematchr?   )r   r   rH   r   r(   rs   )r*   rk   r   s      r.   test_single_valueTestInterp1D.test_single_value,  sf    
 cUQCd ')+

<(@AcUQCd>:-=>cF ?>>s   	A((
A6)r\   rR   rK   rO   rN   rJ   rS   rL   rU   r[   rP   rT   rZ   rV   rX   rW   rY   N)rd   )-r2   r3   r4   r5   r^   ru   r~   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r$  r'  r3  rA  rD  rH   r   rP  rS  pytestmarkskipifr   rY  r_  rg  rn  rq  rx  parametrizer}  r6   r1   r7   r.   r9   r9   "   s   '!RB9HD&D4%H&+*G$>H*H*C&JC,J:1-0=2_LB)*F@1' $&==x 6 5 [[(EF G0	+/$)/ [[Gr7   r9   c                       \ rS rSrS rSrg)TestLagrangei:  c                     [        / SQ5      n[        R                  " [        UR                  5      5      nU" U5      n[        X#5      n[        UR                  UR                  5        g )N)r>   r&   rn   r6  rC   )r   rH   rI   lencoeffsr   r   )r*   pxsyspls        r.   test_lagrangeTestLagrange.test_lagrange<  sF    ;YYs188}%rUb_!!((2995r7   r1   N)r2   r3   r4   r5   r  r6   r1   r7   r.   r  r  :  s    6r7   r  c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)TestAkima1DInterpolatoriD  c                     [         R                  " SS5      n[         R                  " / SQ5      n[        X5      n[         R                  " / SQ5      n[         R                  " / SQ5      n[	        U" U5      U5        g )Nr@   r   r@   r?   r|   rz   r?   r         @r  g@ffffff@rz   r@   r'   r|   r   rG        @g      @r  g      @g@g333333!@g#@r=   r@   g      ?r?   r   g     @?g     @g.袋@g^@gn @gGNB@grcߖ@g	I@rz   rH   rI   rQ   r   r   r*   r,   r+   akrM  r  s         r.   	test_eval!TestAkima1DInterpolator.test_evalE  sa    IIb#HHEF &XX  XX  
 	2#r7   c                     [         R                  " SS5      n[         R                  " / SQ5      n[        XSS9n[         R                  " / SQ5      n[         R                  " / SQ5      n[	        U" U5      U5        g )Nr@   r   r  makimamethodr  )r@   gF??r?   g?g?gg{'@g>J(j@g?@gq@g@g9~@go
@rz   r  r  s         r.   test_eval_mod%TestAkima1DInterpolator.test_eval_modR  se     IIb#HHEF h7XX & 'XX 5 6 	2#r7   c                 h   [         R                  " SS5      n[         R                  " / SQ5      n[         R                  " USU-  45      n[	        X5      n[         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " USU-  45      n[        U" U5      U5        g )Nr@   r   r  r?   r  r  )rH   rI   rQ   column_stackr   r   r  s         r.   test_eval_2d$TestAkima1DInterpolator.test_eval_2dc  s    IIb#HHEFOOQQK( &XX & 'XX 8 9 __b"r']+2#r7   c                    [         R                  " SS5      n[         R                  " / SQ5      n[         R                  " S5      nX#S S 2SS4'   SU-  US S 2SS4'   SU-  US S 2SS4'   S	U-  US S 2SS4'   [	        X5      n[         R                  " / S
Q5      n[         R                  " S5      n[         R                  " / SQ5      nXvS S 2SS4'   SU-  US S 2SS4'   SU-  US S 2SS4'   S	U-  US S 2SS4'   [        U" U5      U5        g )Nr@   r   r  )r   r&   r&   r   r?   rn   rz   r-  r  )   r&   r&   r  )rH   rI   rQ   emptyr   r   )r*   r,   y_r+   r  rM  r  yi_s           r.   test_eval_3d$TestAkima1DInterpolator.test_eval_3dt  s	   IIb#XXFGHHZ !Q'
"W!Q'
"W!Q'
"W!Q'
 &XX & 'XXj!hh 9 : 1a73h1a73h1a73h1a72#r7   c                 .   [         R                  " / SQ5      n[         R                  " XS-  45      R                  n[	        X5      n[         R                  " SS/5      nU" U5      n[        U[         R                  " XDS-  45      R                  5        g )Nr   r&   r'   r   )rH   rQ   vstackTr   r   )r*   r,   r+   r  x_evaly_evals         r.   %test_degenerate_case_multidimensional=TestAkima1DInterpolator.test_degenerate_case_multidimensional  so    HHYIIqQ$i "" &3*%F		619*= > @ @Ar7   c                    [         R                  " SS5      n[         R                  " / SQ5      n[        X5      nSn[        R
                  " [        US9   UR                  S S 5        S S S 5        g ! , (       d  f       g = f)Nr@   r   r  z9Extending a 1-D Akima interpolator is not yet implementedr{  )rH   rI   rQ   r   r  r   r)   extend)r*   r,   r+   r  r|  s        r.   test_extend#TestAkima1DInterpolator.test_extend  sY    IIb#HHEF &K]].e<IIdD! =<<s   A22
B c                     [         R                  " SS5      n[         R                  " / SQ5      nSn[        R                  " [
        US9   [        XSS9  S S S 5        g ! , (       d  f       g = f)Nr@   r   r  z `method`=invalid is unsupported.r{  invalidr  )rH   rI   rQ   r  r   r)   r   )r*   r,   r+   r|  s       r.   test_mod_invalid_method/TestAkima1DInterpolator.test_mod_invalid_method  sK    IIb#HHEF2]].e<Y7 =<<s   A
A-c                    [         R                  " SSS5      nUS-  n[         R                  " SSS5      nUS-  n[        XSS	9n[        XS
S	9n[        XS S	9n[        U" U5      U" U5      SS9  [	        U" U5      SS [         R
                  " S[         R                  5      5        [	        U" U5      SS [         R
                  " S[         R                  5      5        [        U" USS	9U" U5      SS9  [        XE" U5      SS9  g )Nr>   r   r&   r  rB      Trl   Fr   r   r   r6  rF   rC   )rH   rJ  r   r   r   fullr   )r*   r,   r+   x_exty_extak_trueak_falseak_nones           r.   test_extrapolate_attr-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:r7   r1   N)r2   r3   r4   r5   r  r  r  r  r  r  r  r  r6   r1   r7   r.   r  r  D  s+    $$"$"$2B"8;r7   r  r  c                     [         R                  " SS5      n[         R                  " / SQ5      nUSU-  -
  nSn[        R                  " [
        US9   U " X5        S S S 5        S ng ! , (       d  f       N= f)Nr@   r   r  y               @zreal valuesr{  c                     [         R                  " SSS5      nUS-  n[         R                  " SSS5      n[        XSS	9nS
 n[        SXTU5        g )Nr  r>   r   r&   r  rB   r  Tr  c                     U" U5        g r   r1   )_r  r  s      r.   	worker_fn9test_complex.<locals>.test_concurrency.<locals>.worker_fn  s	    uIr7   )rH   rJ  r   r   )r*   r,   r+   r  r  r  s         r.   test_concurrency&test_complex.<locals>.test_concurrency  sN    KKAr"qDCR( 48	 	 I59r7   )rH   rI   rQ   r  r   rs   )r  r,   r+   msgr  s        r.   rS  rS    s]     			"cA
ABA	BqDA
C	z	-q 
.
: 
.	-s   	A((
A6c                   J    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rSrg)TestPPolyCommoni  c                     [         R                  " SS/SS/SS//5      n[         R                  " / SQ5      n[        [        [        X5        [        [        [
        X5        g )Nrn   r6  r&   r>   rC   r7  )r   rn   r'   )rH   rQ   r(   rs   r   r   )r*   r  r,   s      r.   test_sort_checkTestPPolyCommon.test_sort_check  sI    HHq!fq!fq!f-.HH[!j%.j%.r7   c                 v    [        [        5         [        SS/SS/5        S S S 5        g ! , (       d  f       g = f)Nrn   r&   r   )r(   rs   r   r]   s    r.   test_ctor_cTestPPolyCommon.test_ctor_c  s(    :&1a&1a&! '&&s   *
8c                 J   [         R                  R                  S5        Sn[         R                  " [         R                  SS[         R                  R                  S5      -  S4   5      nS[         R                  R                  US-   [        U5      S-
  SS5      -  S-
  n[        [        4 H  nU" US S 2S S24   US S 5      nUR                  US S 2SS 24   USS  5        U" US S 2SS 24   USS  5      nUR                  US S 2S S24   US S 5        U" X25      n[        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        M     g )	N  rC   r   rB   rD   r&   rn   r   )rH   randomseeduniquer  randr  r   r   r  r   r  r,   )r*   orderr,   r  clspppp2pp3s           r.   r  TestPPolyCommon.test_extend  sL   
		tIIbeeArBIINN2$66:;<biinnU1Wc!fQh15595>CQq!tWaf%BIIa!"gqv&a23i23(CJJqCRCy!CR&)a)CBDD#%%(BDD#%%(CEE355)CEE355) "r7   c                 ^   [         R                  R                  S5        [         R                  " SSS5      n[         R                  R	                  SS5      n[         R                  " SSS5      n[         R                  R	                  SS5      n[
        [        4 H  nU" X!5      nU" XC5      nU" X!5      nUR                  XCSS  5        [         R                  " SSSS	S
9n	[         R                  " SSS5      n
[        U" U	5      U" U	5      5        [        U" U
5      U" U
5      5        M     g )Nr  r   rn   r7  r&   r>   r6  r  F)endpoint)	rH   r  r  rJ  r  r   r   r  r   )r*   r,   r  rO   c2r  pp1r  pp_combxi1xi2s              r.   test_extend_diff_orders'TestPPolyCommon.test_extend_diff_orders  s    
		tKK1a IINN1a [[Aq!YY^^Aq!5>Ca)Cb+C!iGNN2!"v& ++aC%8C++aC(CCHgcl3CHgcl3 "r7   c                    [         R                  R                  S5        Sn[         R                  " [         R                  R	                  SSS5      5      n[         R                  R                  US-   UR                  S   S-
  SS5      n[        [        4 H  nU" X25      nU" US S 2S S24   US S 5      nUR                  US S 2SS 24   USS  5        U" US S 2SS 24   USS  5      nUR                  US S 2S S24   US S 5        [        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        M     g )Nr   rC   rB      rn   r&   r   )rH   r  r  sortuniformr  r  r   r   r  r   r  r,   )r*   r  r,   r  r  r  p1p2s           r.   test_extend_descending&TestPPolyCommon.test_extend_descending  s7   
		qGGBII%%aR01IINN519aggaj1na;5>CA	AQq"1"uXq"v&BIIa12h"#'Qq"#vY"#'BIIa3B3i3B(BDD!##&BDD!##&BDD!##&BDD!##& "r7   c           
         [         R                  R                  S5        [         R                  R                  SSSSS5      n[         R                  " [         R                  R                  S5      5      n[         R                  R                  SS	5      n[
        [        4 H#  nU" X5      nU" U5      R                  S
:X  a  M#   e   [
        [        4 H  nU" US   U5      n[         R                  " U" S5      5      S:X  d   e[         R                  " U" [         R                  " S5      5      5      S:X  d   e[        [        U[         R                  " SS/S//[        S95        M     g )Nr  r   r   r>   r7  r8  r  rC   r6  )rC   r6  r>   r7  r8  ).r   r   r   r'   r1   rW  rX  皙?r   )rH   r  r  r  r  r   r   r  rQ   r(   rs   object)r*   r  r,   xpr  r  s         r.   
test_shapeTestPPolyCommon.test_shape!  s	   
		tIINN1b!Q*GGBIINN2&'YY^^Aq!5>CA	AR5;;/111 "
 5>CAlOQ'A88AcF#r)))88Abhhsm,-333*aC:u2EV)TU "r7   c                 F   [         R                  R                  SSSSS5      n[         R                  " [         R                  R                  S5      5      n[         R                  R                  SS5      n[        [
        4 H  nU" X5      nS	 n[        S
XeU5        M     g )Nr   r   r>   r7  r8  r  rC   r6  c                     U" U5        g r   r1   )r  r  r  s      r.   r  3TestPPolyCommon.test_concurrency.<locals>.worker_fn<  s	    r
r7   rB   )rH   r  r  r  r   r   r   )r*   r  r,   r  r  r  r  s          r.   r   TestPPolyCommon.test_concurrency3  su    IINN1b!Q*GGBIINN2&'YY^^Aq!5>CYF $B	2> "r7   c           	      F   [         R                  R                  S5        [         R                  " [         R                  R                  S5      5      n[         R                  R                  S5      S-  nUR                  UR
                  pC[         R                  R                  S5      n[        [        4 Hg  nU" X!5      U" X15      U" XA5      pnS HG  n
[        U" XZ5      R                  U" XZ5      5        [        U" XZ5      R
                  U	" XZ5      5        MI     Mi     g )N90  r  )r   r   y      ?333333?r>   r   )	rH   r  r  r  rK  rL  r   r   r   )r*   r,   r  c_rec_imr  r  r  p_rep_imnus              r.   test_complex_coef!TestPPolyCommon.test_complex_coefB  s    
		uGGBII$$R()IIW%3VVQVVdYYa 5>CIs4|S\TA"	R="	R=   "r7   c                    [         R                  R                  S5        [         R                  R                  SSSSSS5      nUR                  n[         R                  R                  S5      nS	 GHA  nUR                  US
-      n[         R
                  " [         R                  R                  US
-   5      5      n[        [        4 H  nU" XUS9nUR                  R                  X$US-    US U -   X$S-   S  -   :X  d   eU" U5      n	US U UR                  -   USU-   S  -   n
U	R                  U
:X  d   eU" XUS9R                  5       U" XUS9R                  S5      U" XUS9R                  5       U" XUS9R                  S5      4 H  nUR                  UR                  :X  a  M   e   M     GMD     S H0  n[        [        4 H  n[        [        U40 [        UWUS9D6  M     M2     g )Nr  rC   r6  r>   r7  r8  r   )rn   r&   r   rn   r&   rC   rn   rq   r&   )rF   r6  r>   r7  )r  r,   rp   )rH   r  r  r  r  r  r   r   r  
derivativeantiderivativerp   r(   rs   r   )r*   r  c_sr  rp   mr,   r  r  res
targ_shaper  s               r.   	test_axisTestPPolyCommon.test_axisN  s   
		uIINN1aAq!,ggYYf% DQA		qs+,Au~4(ssyyCT!V$4s5Dz$ACQL$PPPPe $Z"((2S4\A
yyJ... q$/::<q$/::1=q$/>>@q$/>>qACB 77aff,,,	C & !& "Du~j#KQT1JK & "r7   r1   N)r2   r3   r4   r5   r  r  r  r  r  r  r  r  r  r6   r1   r7   r.   r  r    s1    /"
*,42'*V$?
>Lr7   r  c                   ^    \ rS rSr " S S\5      r " S S\5      rS rS r	S r
S	 rS
 rSrg)TestPolySubclassingik  c                       \ rS rSrSrg)TestPolySubclassing.Pil  r1   Nr2   r3   r4   r5   r6   r1   r7   r.   Pr  l      r7   r  c                       \ rS rSrSrg)TestPolySubclassing.Bio  r1   Nr  r1   r7   r.   Br  o  r  r7   r  c                 (   [         R                  R                  S5        [         R                  " [         R                  R                  S5      5      n[         R                  R                  S5      nU R	                  X!5      U R                  X!5      4$ )Nr  rC   )r6  r&   )rH   r  r  r  r  r  )r*   r,   r  s      r.   _make_polynomials%TestPolySubclassing._make_polynomialsr  s^    
		tGGBII$$Q'(IIV$vva|TVVA\))r7   c                     U R                  5       u  pX4 H/  nUR                  5       nUR                  UR                  :X  a  M/   e   UR                  5       nUR                  UR                  :X  d   eg r   )r  r  	__class__r  )r*   r  bpr  pdppas         r.   test_derivative#TestPolySubclassing.test_derivativex  se    '')AB;;",,...  !||s}},,,r7   c                    [         R                  R                  S5        [         R                  " [         R                  S[         R                  R                  S5      S4   5      n[         R                  R                  [        U5      5      n[        XSS9nU R                  R                  U5      nUR                  U R                  :X  d   eg )Nr  r   r   rn   r?  )rH   r  r  r  r  r  r  r   r  from_spliner"  )r*   r,   r+   splr  s        r.   test_from_spline$TestPolySubclassing.test_from_spline  s    
		tGGBEE!RYY^^B/234IINN3q6"QQVV$||tvv%%%r7   c                    U R                  5       u  pU R                  R                  U5      nUR                  U R                  :X  d   eU R                  R                  U5      nUR                  U R                  :X  d   eg r   )r  r  from_bernstein_basisr"  r  from_power_basis)r*   r  r#  r  bp1s        r.   test_conversions$TestPolySubclassing.test_conversions  sf    '')ff))"-}}&&&ff%%b)}}&&&r7   c                     / SQnS/S/S//nU R                   R                  X5      nUR                  U R                   :X  d   eg )Nr   rn   r&   rC   )r  from_derivativesr"  )r*   r,   r+   r#  s       r.   test_from_derivatives)TestPolySubclassing.test_from_derivatives  sB    S1#sOVV$$Q*||tvv%%%r7   r1   N)r2   r3   r4   r5   r   r  r   r  r  r&  r,  r2  r6  r6   r1   r7   r.   r  r  k  s3    E E *-&'&r7   r  c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSr g) 	TestPPolyi  c                     [         R                  " SS/SS/SS//5      n[         R                  " / SQ5      n[        X5      n[        U" S5      [         R                  " S	5      5        [        U" S
5      [         R                  " S5      5        g )Nrn   r6  r&   r>   rC   r7  r   r'   rn   333333?Q@ffffff?p=
ף@rH   rQ   r   r   r   r*   r  r,   r  s       r.   test_simpleTestPPoly.test_simple  sj    HHq!fq!fq!f-.HH[!!K#

+? @A#

+K LMr7   c                    [         R                  " SS/SS/SS//5      n[         R                  " / SQ5      n[        XSS	9n[        U" S
5      [         R                  " S5      5        [        U" S5      [         R                  " S5      5        [        U" S
S5      [         R                  " S5      5        [        U" SS5      [         R                  " S5      5        g )Nrn   r6  r&   r>   rC   r7  r;  periodicr  g?r=  333333ӿr?  g@gffffff@r@  rA  s       r.   test_periodicTestPPoly.test_periodic  s    HHq!fq!fq!f-.HH[!!J/#

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

#MN	P 	#q	2::k#:;$
BJJ/B$CDr7   c                    [         R                  " SS/SS/SS//5      n[         R                  " / SQ5      n[         R                  " / SQ5      n[        XS	S
9  S Ha  nXBR                  l        XAR                  l        [        X5      nU" U5      n[         R
                  " U5      R                  5       (       a  Ma   e   g )Nrn   r6  r&   r>   rC   r7  r;  )r   rW  rX  rE  r  rt  )rH   rQ   r   ru  rv  rc  rd  )r*   r  r,   r   rv  r   rf  s          r.   rx  TestPPoly.test_read_only  s    HHq!fq!fq!f-.HH[!xx&a
+&I )GG )GGaAT7D;;t$((**** 'r7   c           	         S n[         R                  R                  S5      nSnS GH)  n[         R                  " UR	                  SSUS-   5      5      nUR	                  SSUS-   U4S	9n[         R
                  " U5      nUS S S 24   [         R                  " US-   5      S S S
2S 4   -  nU" U5      n	Xh-  n
[         R                  " U	R                  U
5      nX-  n[        XeSS9n[        US S 2S S S
24   US S S
2   SS9nUR	                  SSS5      n[        U" U5      U" U5      SS9  [        U" US5      U" US5      SS9  UR                  5       nUR                  5       n[        U" U5      U" U5      SS9  UR                  5       nUR                  5       nUR	                  SSS5       H^  u  nnUR                  UU5      nUR                  UU5      n[        UUSS9  [        U" U5      U" U5      -
  U" U5      U" U5      -
  SS9  M`     UR                  5       nUR                  5       n[        U[         R                  " U5      SS9  GM,     g )Nc                     [         R                  " U S-   5      R                  SS5      n[         R                  " U S-   5      n[        X5      nUS S S2S S S24   $ )Nrn   rF   )rH   rI   rM   r!   )powerr>  kr  s       r.   binom_matrix/TestPPoly.test_descending.<locals>.binom_matrix  sR    		%!)$,,R3A		%!)$AaATrT4R4Z= r7   r   rC   rB   r  rD   rB   rn   r   r&   sizerF   Tr  r  r  r  vIh%<=r   r>   r&   -q=)rH   r  RandomStater  r  diffrI   dotr  r   r   r  r  	integrateroots)r*   rO  rngrM  r  r,   cahh_powersr  capcdpcdpar$  x_testpa_dpd_dpa_ipd_ir=  r@  int_aint_droots_droots_as                             r.   test_descendingTestPPoly.test_descending  s   	! ii##A&AAr1q512AR%!)Q8B
AqzRYYuqy%9$B$*%EEHU#A-C&&c"CBr$/Br!TrT'{AddG>B[[b#.FBvJ6
?BvqM2fa=uE==?D==?DDL$v,UC
 $$&D$$&DCV41Q*Q*u59Q$q' 147T!W3D%*,	 5 hhjGhhjGGRWWW%5EBK r7   c                    [         R                  R                  SSSSS5      n[         R                  " / SQ5      n[	        X5      nUR
                  R                  UR                  :X  d   eUR                  R                  UR                  :X  d   eU" S5      R                  UR                  SS  :X  d   eU" [         R                  R                  SS5      5      R                  SUR                  SS  -   :X  d   eUR                  5       nUR                  R                  S	:X  d   eUR                  5       nUR                  R                  S
:X  d   eg )Nr7  r&   rn   rC   r;  r<  r>   r>   r7  r>   r&   rn   r&   rC   )r8  r&   rn   r&   rC   )
rH   r  r  rQ   r   r,   r  r  r  r  )r*   r  r,   r  dpips         r.   test_multi_shapeTestPPoly.test_multi_shape  s   IINN1aAq)HH[!!KssyyAGG###ssyyAGG###v||qwwqr{***1%&,,0DDDD\\^ttzz_,,,ttzz_,,,r7   c                 z   [         R                  R                  S5        [         R                  " SS/SS/SS//[        S9n[         R                  " / S	Q5      n[
        R                  " X5      n[        U" S
5      [         R                  " S5      5        [        U" S5      [         R                  " S5      5        g )Nr  rn   r6  r&   r>   rC   r7  r   r;  r<  r=  r>  r?  )	rH   r  r  rQ   rb  r   construct_fastr   r   rA  s       r.   test_construct_fastTestPPoly.test_construct_fast  s    
		tHHq!fq!fq!f-U;HH[!  &#

+? @A#

+K LMr7   c                    [         R                  R                  S5      nUR                  SSS5      n[         R                  " [         R
                  SUR                  S5      S4   5      n[        X#5      n[         R
                  S   n[        X#U5      n[        U" U5      U5        [        US S 2S S 2S4   X55      n[        U" U5      S S 2S4   U5        g )	Nr  rC   r      r   r   rn   )r<  r'   gQ?333333?)
rH   r  rW  r  r  r  r   _ppoly_eval_1r   _ppoly_eval_2)r*   r\  r  r,   r  r  expecteds          r.   #test_vs_alternative_implementations-TestPPoly.test_vs_alternative_implementations  s    ii##D)HHQBGGBEE!SXXb\1,-.!KUU&' r*"x( 1Qq511"adX.r7   c                    [         R                  R                  S5      n[         R                  " [         R                  SUR                  S5      S4   5      nUR                  [        U5      5      n[        X#SS9n[        R                  " U5      n[         R                  " SSS5      n[        U" U5      [        Xd5      5        [        U6 n[        R                  " U5      n[        U" U5      U" U5      5        Uu  pnS H?  n[        XXS9n[        R                  " U5      nUR                  UR                  :X  a  M?   e   g )	Nr  r   r   rn   r)  r  )NTFr  )rH   r  rW  r  r  r  r  r   r   r*  rJ  r   r   r   rl   )r*   r\  r,   r+   r+  r  rM  r@  ppptr  rN  extrapr  s                 r.   r,  TestPPoly.test_from_spline  s   ii##D)GGBEE!SXXb\1,-.HHSVQQs#[[As#2b/ SM"B2' a)Fa4A!!!$A==AMM111 *r7   c                 @   [         R                  R                  S5        [         R                  " / SQ/5      R                  n[         R                  " / SQ/5      R                  n[         R                  " SS//5      R                  n[         R                  " SS/5      n[        X5      n[        X$5      n[        X45      n[        UR                  5       R                  UR                  5        [        UR                  S5      R                  UR                  5        g )	Nr  )r6  rC   r&   rn   )r   r7  r&      r7  r   rn   r&   )	rH   r  r  rQ   r  r   r   r  r  )r*   r  dcddcr,   r  dppddpps           r.   test_derivative_simple TestPPoly.test_derivative_simple)  s    
		tHHl^$&&XX}o&((hh'(**HHaV1[BlS}))3551a(**DFF3r7   c           	         [         R                  R                  S5      n[         R                  " [         R                  SUR                  S5      S4   5      nUR                  [        U5      5      n[        X#SS9n[        R                  " U5      n[         R                  " SSS5      n[        SS5       H  n[        U" Xg5      [        XdU5      5        M!     g )Nr  r   r   rn   r)  r  rC   )rH   r  rW  r  r  r  r  r   r   r*  rJ  r  r   r   r*   r\  r,   r+   r+  r  rM  dxs           r.   test_derivative_evalTestPPoly.test_derivative_eval7  s    ii##D)GGBEE!SXXb\1,-.HHSVQQs#[[As#1+BBrJbr(:; r7   c                    [         R                  R                  S5      n[         R                  " [         R                  SUR                  S5      S4   5      nUR                  [        U5      5      n[        X#SSS9n[        R                  " U5      n[         R                  " SSS5      n[        SS5       H-  n[        U" Xg5      UR                  U5      " U5      S	U4-  S
9  M/     g )Nr  r   r   rn   r>   r?  rN  r  rB   zdx=%dr9  )rH   r  rW  r  r  r  r  r   r   r*  rJ  r  r   r  r  s           r.   r&  TestPPoly.test_derivativeC  s    ii##D)GGBEE!SXXb\1,-.HHSVQQ!$s#[[As#2,BBrJb(9"(=$+reO5 r7   c                    [        S//SS/5      n[        UR                  5       R                  [        S/S//SS/5      R                  5        [        UR                  5       R                  [        S/S//SS/5      R                  5        g )Nr|   r   rn   )r   r   r  r  r,   )r*   r  s     r.   test_antiderivative_of_constant)TestPPoly.test_antiderivative_of_constantP  sz    B4&1a&!((*,,eaS1#JA.G.I.IJ((*,,eaS1#JA.G.I.IJr7   c                    [        SS/// SQ5      nUR                  5       n[        UR                  SS/SS//5        [        UR                  / SQ5        [        UR                  SS5      [        R                  " S5      5        [        [        R                  " U" S5      U" S5      -
  5      [        R                  " S5      5        g )	Nr|   r'   r   rn   r   )r@   rn   r&   r&   r   )	r   r  r   r  r,   r   rZ  rH   r   )r*   r  qs      r.   #test_antiderivative_regression_4355-TestPPoly.test_antiderivative_regression_4355V  s    B9+y)q#hA/0[)Aq)2::c?;

1Q4!A$;/

3	)r7   c                    [         R                  R                  S5        [         R                  " / SQ/ SQ/5      R                  n[         R                  " / SQ/ SQ/5      R                  n[         R                  " / SQ/ SQ/5      R                  n[         R                  " / SQ5      n[        X5      nUR                  5       nUR                  S	5      nUR                  5       n[        UR                  U5        [        UR                  R                  UR                  5        [        UR                  R                  UR                  5        [        UR                  R                  UR                  5        g )
Nr  )rC   r&   rn   )r   r         ?)rn   rn   rn   r   )r   r   r        ?)      ?gUUUUUU?r'   r   r   )r   r   g      ?r  g*?)r   r  rn   r&   )
rH   r  r  rQ   r  r   r  r   r,   r  )	r*   r  iciicr,   r  ippiippiipp2s	            r.   test_antiderivative_simple$TestPPoly.test_antiderivative_simple`  s   
		t HHi0133 XX|%=>?AA hh-HJ KKL1 	HH\"1[!  #""$q!&#%%(		355)r7   c           
         [         R                  R                  S5      n[         R                  " SSS5      S-  nUR	                  [        U5      5      n[        X#SSS9n[        R                  " U5      n[        SS5       H  nUR                  U5      nUR                  U5      n[        UR                  UR                  5        [        U5       Hf  n	UR                  U	5      nS	n
XR                  S S
 -  SU
-
  UR                  SS  -  -   n[        U" UR                  SS  5      U" U5      SSXi4-  S9  Mh     M     g )Nr  r   rn   rD   r&   r>   r  rB   rT  rF   r   z
dx=%d k=%d)r   r   )rH   r  rW  rJ  r  r  r   r   r*  r  r  r  r   r  r,   )r*   r\  r,   r+   r+  r  r  r  r  rN  rr  s               r.   !test_antiderivative_vs_derivative+TestPPoly.test_antiderivative_vs_derivativex  s   ii##D)KK1b!1$HHSVQQ!$s#2,B##B'C ..$CBDD#%%( 2YnnQ'UU3BZ<1q5#%%)*;;CEE!"IH%)<2'3IK  r7   c                    [         R                  R                  S5      n[         R                  " [         R                  SUR                  S5      S4   5      nUR                  [        U5      5      n[        X#SSS9n[        R                  " U5      n[        SS5       HQ  nUR                  U5      n[        XF5      n[         R                  " SSS5      n	[        U" U	5      [        X5      S	S
9  MS     g )Nr  r   r   rn   r>   r  rB   r  r   r   )rH   r  rW  r  r  r  r  r   r   r*  r  r  r   rJ  r   r   )
r*   r\  r,   r+   r+  r  r  r  spl2rM  s
             r.   test_antiderivative_vs_spline'TestPPoly.test_antiderivative_vs_spline  s    ii##D)GGBEE!SXXb\1,-.HHSVQQ!$s#2,B##B'Cc&DQ3'BCGU2_!%' r7   c                 D   [         R                  " / SQ/ SQ/5      R                  n[         R                  " / SQ5      n[        X5      nUR	                  5       n[        U" S5      U" S5      SS9  UR                  5       n[        UR                  UR                  5        g )N)r&   rn   r&   r&   )r&   rn   rC   rC   r;  gA?g_p   ?g:0yE>r   )rH   rQ   r  r   r  r   r  r  )r*   r  r,   r  rs  r  s         r.   test_antiderivative_continuity(TestPPoly.test_antiderivative_continuity  su    HHlL1244HH[!!K 	::TB ]]_acc"r7   c                    [         R                  R                  S5      n[         R                  " [         R                  SUR                  S5      S4   5      nUR                  [        U5      5      n[        X#SSS9n[        R                  " U5      nSu  pgUR                  Xg5      nUR                  5       n	[        X" U5      U	" U5      -
  SS	9  [        U[        XgU5      SS	9  S
u  pgUR                  XgSS9n[        X" U5      U	" U5      -
  SS	9  [         R                  " UR                  XgSS95      R                  5       (       d   eg )Nr  r   r   rn   r>   r  )r<  ?Fcheck_0d)rF  r  Tr  )rH   r  rW  r  r  r  r  r   r   r*  rZ  r  r   r   r}   rd  )
r*   r\  r,   r+   r+  r  r=  r@  igr  s
             r.   test_integrateTestPPoly.test_integrate  s   ii##D)GGBEE!SXXb\1,-.HHSVQQ!$s#\\!!CFSVOe<F1->\\!D\1CFSVOe<xxQu=>BBDDDDr7   c                 :   [         R                  " / SQ5      n[         R                  " SS/SS/SS/SS//5      nS H[  nX1R                  l        [	        X!5      nUR                  SS	5      n[         R                  " U5      R                  5       (       a  M[   e   g )
Nrn   r&   r6  r@   r   r?          r|   rt  rn   r6  )rH   rQ   ru  rv  r   rZ  rc  rd  )r*   r,   r  rv  r  rf  s         r.   test_integrate_readonly!TestPPoly.test_integrate_readonly  s    HHYHHr2hc
RIBx@A&I )GGaA;;q!$D;;t$((**** 'r7   c           	         [         R                  " / SQ5      n[         R                  " SS/SS/SS/SS//5      n[        X!SS9nUR                  5       n[         R                  " U" S	5      U" S
5      -
  5      n[        UR                  S
S	5      U5        [        UR                  SS5      U5        [        UR                  SS5      [         R                  " SU-  5      5        [        UR                  SS5      [         R                  " U" S5      U" S5      -
  5      5        [        UR                  SS5      [         R                  " U" S5      U" S
5      -
  U" S	5      -   U" S5      -
  5      5        [        UR                  SS5      [         R                  " U" S5      U" S
5      -
  U" S	5      -   U" S5      -
  5      5        [        UR                  SS5      [         R                  " U" S5      U" S
5      -
  U" S	5      -   U" S5      -
  S	U-  -   5      5        [        UR                  SS5      [         R                  " U" S5      U" S5      -
  5      5        [        UR                  SS5      [         R                  " U" S5      U" S5      -
  5      5        [        UR                  SS5      [         R                  " U" S5      U" S5      -
  SU-  -
  5      5        g Nr  r@   r   r?   r  r|   rE  r  r6  rn   r  ir  r&   r   rG  r  r>   g      /@r  r   rF   rC   i)rH   rQ   r   r  r   r   rZ  r*   r,   r  r  I
period_ints         r.   test_integrate_periodic!TestPPoly.test_integrate_periodic  s>   HHYHHr2hc
RIBx@A!J/ZZ!qt,
Aq):6C,j9C,bjjZ.HIC-

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

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

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

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

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

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

1Q4!A$;Z#?@	Br7   c                    [         R                  " SSS5      S-  n[         R                  " SU-  5      n[        XSSS9n[        R
                  " U5      nUR                  5       nXUS:  US	:*  -     n[        U[        U5      S
S9  g )Nr   rn   rI  r&   rD   rC   r  gV瞯Ҽg     ?r   r   )	rH   rJ  r
   r   r   r*  r[  r   r   )r*   r,   r+   r+  r  r  s         r.   
test_rootsTestPPoly.test_roots  sx    KK1b!1$FF2a4LQQ!$s#HHJI~!y.126#;U3r7   c                    [         R                  " SS/SS/SS//5      R                  n[         R                  " / SQ5      n[        X5      n[	        UR                  5       SS[         R                  S/5        SnUR                  5       nUSS S 24==   U-  ss'   [        XR5      n[	        UR                  U5      SS[         R                  S/5        g )	NrF   r  r   )r   r  r|  r|   r  g333333?r?   rn   )	rH   rQ   r  r   r   r[  r   rx   solve)r*   r  r,   r  constc1r  s          r.   test_roots_idzeroTestPPoly.test_roots_idzero  s     HHr4j1a&2t*5688HH'(1[
sBFFJ7	9 VVX
1a4EBl		%(sBFFJ7	9r7   c                 \   S/S//nSS/n[        X5      n[        UR                  5       S[        R                  /5        [        UR                  S5      S[        R                  /5        [        UR                  S5      / 5        SS/SS//n/ SQn[        X5      n[        UR                  5       S[        R                  S[        R                  /5        [        UR                  S5      S[        R                  S[        R                  /5        [        UR                  S5      / 5        g )Nr   rn   r   )r   r   r[  rH   r   r  rA  s       r.   test_roots_all_zeroTestPPoly.test_roots_all_zero	  s    S1#JF!K	Arvv;/
QK0
B'VaV!K	Arvvq"&&#9:
Q266$:;
B'r7   c                 R   [         R                  " / SQ/ SQ/5      R                  n[         R                  " / SQ5      n[        X5      n[	        UR                  5       [         R                  " SS/5      5        [	        UR                  SS9[         R                  " S/5      5        g )N)rn   r   rF   )rF   r   r   r   g       r@   Fr  )rH   rQ   r  r   r   r[  r   r*   r  r,   r  s       r.   test_roots_repeatedTestPPoly.test_roots_repeated  sq    
 HHj*-.00HHZ 1[
BJJc{$;<U3RZZ5FGr7   c                    [         R                  " S/S//5      R                  n[         R                  " / SQ5      n[        X5      n[	        UR                  5       [         R                  " S/5      5        [	        UR                  SS9[         R                  " / 5      5        [	        UR                  S5      [         R                  " S/5      5        [	        UR                  SSS9[         R                  " / 5      5        [	        UR                  S5      [         R                  " / 5      5        [	        UR                  SSS9[         R                  " / 5      5        g )Nrn   rF   r;  r'   F)discontinuityr   )rH   rQ   r  r   r   r[  r   r  r  s       r.   test_roots_discontTestPPoly.test_roots_discont%  s    HHqcB4[!##HH[!1[
BJJu$56u5rzz"~F 	rzz3%'89E:BJJrNKrzz"~6E:BJJrNKr7   c                 "   [         R                  R                  S5      nSnS GHQ  n[        SS5       GH<  n[         R                  " [         R
                  SSUR                  S5      -  S4   5      nSUR                  US-   [        U5      S-
  SS	5      -  S-
  n[        Xe5      nSUR                  5       4 H  nUR                  US
US9n	[        S5       H  n
[        S	5       H}  nXU4   nUR                  S:  d  M  X,R                  -  nU" XS9S S 2X4   nU" USUS9S S 2X4   nSU< S[        U5       3n[        X-
  U-  [         R                  " S5      SUS
S9  M     M     M     GM?     GMT     US:  d   [        U5      5       eg )Nr  r   rt  r  rB   rD   r&   rn   rC   F)r  rl   r  )r  rl   (z) r = r@   r   )r   r   r   r  )rH   r  rW  r  r  r  r  r  r   r  rS  reprr   r   )r*   r\  numrl   r  r,   r  r  r+   r  ijrrvalcmpvalr  s                   r.   test_roots_randomTestPPoly.test_roots_random4  s|   ii##D)(Kq"IIbeeArCHHRL'8"$<=>chhuQwAq!Q77!;1[SZZ\*A%[QA"1X!&qA!"Q3B!ww{ #ww&(&Eae&L)+B18C*EEFqU*L()+tBxj&I /&0@"**S/598;!P "* & + & )0 Sy#$s)#yr7   c           
      H   [         R                  R                  S5      n[        SS5       GHa  nUR	                  USS5      nUS:X  a
  SUS S 2SS4'   SUR                  5       4 GH#  n[         R
                  " UR                  [        S9n[        R                  " X5U5        US:X  a-  [         R                  " U5      R                  5       (       d   eMq  U* nSn[        U5       H4  nXcUS 4   XRS-
  U-
  -  -  -  nU[        X8S 4   XRS-
  U-
  -  -  5      -  nM6     [         R                  " S	S
9   Xg-  nS S S 5        UR                  5       nU[         R                  " U5      )    n[        U[         R                   " U5      SS9  GM&     GMd     g ! , (       d  f       Nb= f)Nr  rn   r      rC   )rn   r&   rn   r   r   ignore)r  g|=r   )rH   r  rW  r  r  r  r  complexr   _croots_poly1r}   rd  abserrstateravelr   
zeros_like)	r*   r\  rN  r  r+   wr  cresr  s	            r.   test_roots_crootsTestPPoly.test_roots_crootsT  s`   ii##D)q"AAs#AAv"!Aa%&HHQWWG4$$Q1-688A;??,,,,bqAQtV9qQ3q5z11CCD&	A!AJ 677D " [[2KC 3iik288C=.)R]]3%7eD# ' ( 32s   2F
F!c                    [         R                  " / SQ/5      R                  n[         R                  " SS/5      nS GH  n[        XUS9nUR	                  5       nUR                  5       nUSL a  [         R                  " U" SS/5      5      R                  5       (       d   e[         R                  " U" SS/5      5      R                  5       (       d   e[         R                  " U" SS/5      5      R                  5       (       d   eUR                  5       S/:X  d   eM  [        U" SS/5      S	S
/5        [         R                  " U" SS/5      5      R                  5       (       a   e[         R                  " U" SS/5      5      R                  5       (       a   e[        UR                  5       [         R                  " SS/5      5        GM     g )Nr   r   rn   TFNr  F皙皙?gGz?gzGʿr|   r   )rH   rQ   r  r   r  r  r}   rd  r[  r   anyr   )r*   r  r,   rl   r  pp_dpp_is          r.   r  TestPPoly.test_extrapolate_attrr  sm   HHj\"$$HHaV.Kq5B==?D$$&De#xxD#;0446666xxdC[ 12668888xxdC[ 12668888xxzaS(((D#;(H1EF88D$$56::<<<<88D$$56::<<<<
BJJT{,CD /r7   r1   N)!r2   r3   r4   r5   rB  rG  rx  rm  rt  rx  r  r,  r  r  r&  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r6   r1   r7   r.   r9  r9    s    NE+/Cb-N/2.4
<5K)*0K0' #E*
+B8	49&( 
HL$@E<Er7   r9  c                   V    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)	TestBPolyi  c                 v    SS/nS//n[        X!5      n[        U" S5      [        R                  " S5      5        g )Nr   rn   rC   rW  rz   r   r   rH   r   r*   r,   r  r#  s       r.   rB  TestBPoly.test_simple  s3    FSE1[3B0r7   c                 z    SS/nS/S//n[        X!5      n[        U" S5      [        R                  " S5      5        g )Nr   rn   rC   rW  ggfffff@r  r  s       r.   test_simple2TestBPoly.test_simple2  s8    FS1#J1[3N!;<r7   c                 ~    SS/nS/S/S//n[        X!5      n[        U" S5      [        R                  " S5      5        g )Nr   rn   rC   r6  rX  g433333@r  r  s       r.   test_simple3TestBPoly.test_simple3  sA    FS1#sO1[3

DE	Gr7   c                     SS/nS/S/S/S//n[        X!5      n[        U" S5      [        R                  " S5      5        g )Nr   rn   r&   r<  g:On?r  r  s       r.   test_simple4TestBPoly.test_simple4  sI    FS1#sQC 1[3

 (. /	
r7   c                     SS/nS/S/S/S/S//n[        X!5      n[        U" S5      [        R                  " S5      5        g )Nr   rn   r   r&   r<  g	h"l@r  r  s       r.   test_simple5TestBPoly.test_simple5  sM    FS1#sQC!%1[3

 &( )	
r7   c                 j   / SQnSS/SS/SS//n[        X!SS9n[        U" S5      [        R                  " S5      5        [        U" S	5      [        R                  " S
5      5        [        U" SS5      [        R                  " S5      5        [        U" S	S5      [        R                  " S5      5        g )Nr   rn   rC   rC   r   r&   rE  r  g333333@gHzG?g[(\?rn   r>  r  r  s       r.   rG  TestBPoly.test_periodic  s    VaVaV$1Z03J!784"**^"<=3
BJJx$894RZZ%<=r7   c           	      j   [         R                  R                  S5      nSnS GH  n[         R                  " UR	                  SSUS-   5      5      nUR	                  SSUS-   U4S9nUS S S	2   R                  5       n[        XTS
S9n[        US S 2S S S	24   US S S	2   S
S9nUR	                  SSS5      n	[        U" U	5      U" U	5      SS9  [        U" U	S5      U" U	S5      SS9  UR                  5       n
UR                  5       n[        U
" U	5      U" U	5      SS9  UR                  5       nUR                  5       nUR	                  SSS5       H[  u  pUR                  X5      nUR                  X5      n[        UUSS9  [        U" U5      U" U5      -
  U" U5      U" U5      -
  SS9  M]     GM     g )Nr   rC   rQ  rB   rn   r  rW  rR  rF   Tr  r  r  r  rT  r   rU  rV  )rH   r  rW  r  r  rx   r   r   r  r  rZ  )r*   r\  rM  r  r,   r]  rb  rc  r$  rd  re  rf  rg  rh  r=  r@  ri  rj  s                     r.   rm  TestBPoly.test_descending  s   ii##A&AAr1q512AT3eai^<BDbDBr$/Br!TrT'{AddG>B[[b#.FBvJ6
?BvqM2fa=uE==?D==?DDL$v,UC
 $$&D$$&DCV4Q*Q*u59Q$q' 147T!W3D%*,	 5/ r7   c                 \   [         R                  R                  S5      nUR                  SSSSS5      n[         R                  " / SQ5      n[        X#5      nUR                  R                  UR                  :X  d   eUR                  R                  UR                  :X  d   eU" S5      R                  UR                  SS  :X  d   eU" UR                  SS5      5      R                  S	UR                  SS  -   :X  d   eUR                  5       nUR                  R                  S
:X  d   eg )Nr  r7  r&   rn   rC   r;  r<  r>   rp  rq  )
rH   r  rW  r  rQ   r   r,   r  r  r  )r*   r\  r  r,   r  rr  s         r.   rt  TestBPoly.test_multi_shape  s    ii##D)HHQ1a#HH[!!KssyyAGG###ssyyAGG###v||qwwqr{***!Q &&&17712;*>>>>\\^ttzz_,,,r7   c           	          SS/nS/S/S//n[        X!5      nSnUS-  n[        U" U5      [        R                  " SSU-
  -  SU-
  -  SU-  SU-
  -  -   SU-  U-  -   5      5        g )Nr   r&   rC   rn   r6  rW  r  )r*   r,   r  r#  xvalr?  s         r.   test_interval_lengthTestBPoly.test_interval_length  s{    FS1#sO1[1H4

1!9ac?U1Wac]#BQU1W#LM	
r7   c                     / SQnSS/SS/SS//n[        X!5      n[        U" S5      [        R                  " S5      5        [        U" S5      [        R                  " S5      5        g )	Nr  rC   r   r&   r  gGzG?333333?r  r  r  s       r.   test_two_intervalsTestBPoly.test_two_intervals  sV    VaVaV$1[3K!893N!;<r7   c                    SS/nS/S/S//n[        X!5      nS H  n[        X!US9nUR                  5       nUSL ah  [        R                  " U" S	S
/5      5      R	                  5       (       d   e[        R                  " U" S	S
/5      5      R	                  5       (       d   eM  [        R                  " U" S	S
/5      5      R                  5       (       a   e[        R                  " U" S	S
/5      5      R                  5       (       d  M   e   g )Nr   r&   rC   rn   r6  r  r  Fr  g @)r   r  rH   r}   rd  r  )r*   r,   r  r#  rl   bp_ds         r.   r  TestBPoly.test_extrapolate_attr   s    FS1#sO1[.Kq5B==?De#xxD#;0446666xxdC[ 1266888888Bc{O488::::88D$$56::<<<< /r7   r1   N)r2   r3   r4   r5   rB  r  r  r  r  rG  rm  rt  r  r  r  r6   r1   r7   r.   r  r    s;    1=G	



> ,D-
==r7   r  c                   V    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)TestBPolyCalculusi  c                 8   / SQnSS/SS/SS//n[        X!5      nUR                  5       n[        U" S5      [        R                  " S5      5        [        U" S5      [        R                  " S5      5        [        [        R                  " S	 Vs/ s H  oS" SU5      PM     sn5      [        R                  " / S
Q5      5        [        [        R                  " S	 Vs/ s H  oS" SU5      PM     sn5      [        R                  " / SQ5      5        g s  snf s  snf )Nr  rC   r   r&   r  r  r  r>  rn   r&   rC   )r  r   r@   )r>  r|   r   )r   r  r   rH   r   )r*   r,   r  r#  bp_derr  s         r.   r&  !TestBPolyCalculus.test_derivative  s    VaVaV$1[sRZZ%9:sRZZ_5 	

)#D)BBsBK)#DE

#78	
 	

)#D)BBsBK)#DE

<0	
 $E $Es   DDc                    [         R                  R                  S5      nSu  p#[         R                  " UR                  U5      5      nUR                  X2S-
  45      n[	        XT5      n[
        R                  " U5      n[        U5       HY  nUR                  5       nUR                  5       n[         R                  " US   US   S5      n	[        U" U	5      U" U	5      5        M[     g Nr  r>   r   rn   r   rF      )rH   r  rW  r  r   r   r/  r  r  rJ  r   )
r*   r\  r  rN  r,   r  r#  r  dr  s
             r.   test_derivative_ppoly'TestBPolyCalculus.test_derivative_ppoly!  s    ii##D)GGCJJqM"JJQ3x 1[''+qABBQqT1R5"-BBrFBrF+	 r7   c                    [         R                  R                  S5      nSu  p#[         R                  " UR                  U5      5      nUR                  X2S-
  45      nUR	                  5       US-  4 He  n[        Xd5      n[         R                  " US   US   S5      n[        U5       H*  n	[        U" X5      UR                  U	5      " U5      5        M,     Mg     g )Nr  r)  rn   rH  r   rF   r*  )
rH   r  rW  r  rx   r   rJ  r  r   r  )
r*   r\  r  rN  r,   r  ccr#  r  r  s
             r.   test_deriv_inplace$TestBPolyCalculus.test_deriv_inplace0  s    ii##D)GGCJJqM"JJQ3x  668Q\*BrBQqT1R5"-B1X2	2==+;B+?@  +r7   c           
         / SQnSS/SS//n[        X!5      nUR                  5       n[        R                  " SSS5      n[	        U" U5      [        R
                  " US:  US-  S-  SU-  US-  S-
  -  S	-   5      S
S
S9  g )Nr  r   rn   rC   r   r&   r?   r'   g      ?rV  r   r   )r   r  rH   rJ  r   where)r*   r,   r  r#  bixxs         r.   r  ,TestBPolyCalculus.test_antiderivative_simple=  s     VaV1[ [[Ar"2aQ),rRUQY)?$)FH"	0r7   c                 h   [         R                  R                  S5      n[         R                  " UR                  S5      5      nUR                  S5      n[	        X25      n[         R
                  " US   US   S5      n[        UR                  5       R                  5       " U5      U" U5      SSS9  g )	Nr  r   r6  rB   r&   rC   r   rF   r  rV  r3  )	rH   r  rW  r  r   rJ  r   r  r  r*   r\  r,   r  r#  r6  s         r.   test_der_antider"TestBPolyCalculus.test_der_antiderQ  s    ii##D)GGCJJrN#JJ}%1[[[1quc*))+668<2U	8r7   c                    [         R                  R                  S5      n[         R                  " UR                  S5      5      nUR                  S5      n[	        X25      n[
        R                  " U5      n[         R                  " US   US   S5      n[        UR                  S5      " U5      UR                  S5      " U5      SSS	9  g )
Nr  r   r9  r   rF   rB   r&   rV  r3  )
rH   r  rW  r  r   r   r/  rJ  r   r  )r*   r\  r,   r  r#  r  r6  s          r.   test_antider_ppoly$TestBPolyCalculus.test_antider_ppoly[  s    ii##D)GGCJJrN#JJ}%1[''+[[1qub)))!,R0))!,R0u5	Jr7   c                 :   [         R                  R                  S5      n[         R                  " UR                  S5      5      nUR                  S5      n[	        X25      R                  5       nUR                  SS n[        U" US-
  5      U" US-   5      SSS9  g )	Nr  r   r6  rB   rn   rF   r   rV  r3  )rH   r  rW  r  r   r  r,   r   r:  s         r.   test_antider_continuous)TestBPolyCalculus.test_antider_continuousg  s}    ii##D)GGCJJrN#JJw1['')TT!BZ2:2:U	@r7   c                 J   [         R                  R                  S5      n[         R                  " UR                  S5      5      nUR                  S5      n[	        X25      n[
        R                  " U5      n[        UR                  SS5      UR                  SS5      SSSS9  g )	Nr  r   rA  r   rn   rV  F)r   r   r  )	rH   r  rW  r  r   r   r/  r   rZ  )r*   r\  r,   r  r#  r  s         r.   r   TestBPolyCalculus.test_integrateq  s}    ii##D)GGCJJrN#JJw1[''+Q*Q*UU	Tr7   c                 V   S//nSS/n[        X5      n[        UR                  SS5      [        R                  " S5      SSS9  [        XSS9n[        R
                  " UR                  SS5      5      (       d   e[        UR                  SSS	S9[        R                  " S5      SSS9  g )
Nrn   r   r&   r?   r   F)r   r  r  T)r   r   rZ  rH   r   r}   )r*   r  r,   r@  b1s        r.   test_integrate_extrap'TestBPolyCalculus.test_integrate_extrapz  s    SEF!K 	Aq)2::b>"U	4 1U+xxQ*++++Qt<

2UU	Dr7   c                    [         R                  " / SQ5      n[         R                  " SS/SS/SS/SS//5      n[        R                  " [	        X!5      SS9nUR                  5       nU" S	5      U" S
5      -
  n[        UR                  S
S	5      U5        [        UR                  SS5      U5        [        UR                  SS5      SU-  5        [        UR                  SS5      U" S5      U" S5      -
  5        [        UR                  SS5      U" S5      U" S
5      -
  U" S	5      -   U" S5      -
  5        [        UR                  SS5      U" S5      U" S
5      -
  U" S	5      -   U" S5      -
  5        [        UR                  SS5      U" S5      U" S
5      -
  U" S	5      -   U" S5      -
  S	U-  -   5        [        UR                  SS5      U" S5      U" S5      -
  5        [        UR                  SS5      U" S5      U" S5      -
  5        [        UR                  SS5      U" S5      U" S5      -
  SU-  -
  5        g r  )rH   rQ   r   r0  r   r  r   rZ  r  s         r.   r  )TestBPolyCalculus.test_integrate_periodic  s   HHYHHr2hc
RIBx@A""5;JGqTAaD[
Aq):6C,j9C,a*n=C-qv#?C+QqTAaD[1Q4-?!C&-HIHf5!qtad*QsV3	5C0!qtad*QsV3a*nD	F 	Ar*AaD1Q4K8B,adQqTk:As+QqTAaD[1z>-IJr7   c                 0   S//nSS/n[        X5      n[        R                  " SSS5      n[        UR	                  S5      " U5      UR                  5       " U5      SSS9  [        UR	                  S5      " U5      UR                  S5      " U5      SSS9  g )Nrn   r   r*  rF   rV  r3  )r   rH   rJ  r   r  r  )r*   r  r,   r@  r6  s        r.   test_antider_neg"TestBPolyCalculus.test_antider_neg  s    SEF!K[[Ar"R(,a.>.>.@.D"	0Q+Q-=-=b-A"-E"	0r7   r1   N)r2   r3   r4   r5   r&  r,  r0  r  r;  r>  rB  r  rH  r  rM  r6   r1   r7   r.   r"  r"    s?    
 ,A0(8
J@TDK00r7   r"  c                   ,    \ rS rSrS rS rS rS rSrg)TestPolyConversionsi  c                     / SQnSS/SS/SS//n[        X!5      n[        R                  " U5      n[         R                  " U5      nSS/n[	        U" U5      U" U5      5        [	        U" U5      U" U5      5        g )	Nr  rC   r&   rn   r   r6  rW  ffffff?)r   r   r0  r/  r   )r*   r,   r  r  r#  r  r  s          r.   test_bp_from_pp#TestPolyConversions.test_bp_from_pp  su    VaVaV$1[##B'((,3Z22'2B(r7   c                    [         R                  R                  S5      nSu  p#[         R                  " UR                  U5      5      nUR                  X2S-
  45      n[	        XT5      n[
        R                  " U5      n[        R                  " U5      n[         R                  " US   US   S5      n	[        U" U	5      U" U	5      5        [        U" U	5      U" U	5      5        g r(  )
rH   r  rW  r  r   r   r0  r/  rJ  r   )
r*   r\  r  rN  r,   r  r  r#  r  r  s
             r.   test_bp_from_pp_random*TestPolyConversions.test_bp_from_pp_random  s    ii##D)GGCJJqM"JJQ3x 1[##B'((,[[1qub)22'2B(r7   c                     / SQnSS/SS/SS//n[        X!5      n[        R                  " U5      n[         R                  " U5      nSS/n[	        U" U5      U" U5      5        [	        U" U5      U" U5      5        g )Nr  rC   rn   r6  r&   rW  rR  )r   r   r/  r0  r   )r*   r,   r  r#  r  r1  r  s          r.   test_pp_from_bp#TestPolyConversions.test_pp_from_bp  su    VaVaV$1[''+$$R(3Z22'2B(r7   c                 J   / SQnSS/SS/SS//n[        X!5      n[        [        5         [         R                  " U5        S S S 5        [	        X!5      n[        [        5         [        R
                  " U5        S S S 5        g ! , (       d  f       NH= f! , (       d  f       g = f)Nr  rC   rn   r6  r&   )r   r(   	TypeErrorr/  r   r0  )r*   r,   r  r  r#  s        r.   test_broken_conversions+TestPolyConversions.test_broken_conversions  s~    VaVaV$1[9%&&r* & 1[9%""2& &%	 &% &%s   B#B
B
B"r1   N)	r2   r3   r4   r5   rS  rV  rY  r]  r6   r1   r7   r.   rP  rP    s    	))	)
'r7   rP  c                   t    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rSrg)TestBPolyFromDerivativesi  c                 V    [         R                  " SSS/S/5      n[        USS/5        g )Nr   rn   r&   rC   r?   rz   r   _construct_from_derivativesr   )r*   r  s     r.   test_make_poly_1)TestBPolyFromDerivatives.test_make_poly_1  s*    ..q!aS1#>RH%r7   c                     [         R                  " SSSS/S/5      n[        U/ SQ5        [         R                  " SSSS/S/5      n[        U/ SQ5        [         R                  " SSS/SS/5      n[        U/ SQ5        g )Nr   rn   )r|   r|   r|   r&   rC   )r?   r  r|   )r?   g      r|   rb  r*   r  r  c3s       r.   test_make_poly_2)TestBPolyFromDerivatives.test_make_poly_2  sx    ..q!aVaSAL) ..q!aVaSAN+ ..q!aS1a&AN+r7   c                    [         R                  " SS/ SQS/5      n[        U/ SQ5        [         R                  " SSS// SQ5      n[        U/ SQ5        [         R                  " SSSS/SS	/5      n[        U/ S
Q5        g )Nr   rn   r$  r6  )r|   竪?g@r-  )r6  r&   rC   )r|   gUUUUUU	@g
@r-  r&   rC   )r|   rl  rz   r-  rb  rg  s       r.   test_make_poly_3)TestBPolyFromDerivatives.test_make_poly_3  su    ..q!YD12 ..q!aS)D23 ..q!aVaVD./r7   c                    [         R                  R                  S5      n[         R                  SUR                  S5      4   n[         R                  SUR                  S5      4   n[        R
                  " SSX#5      n[	        US S 2S 4   SS/5      n[        S5       H9  n[        U" S5      X&   SS9  [        U" S	5      X6   SS9  UR                  5       nM;     g )
Nr  r   r>   rn   r7  r@   Fr  r|   )	rH   r  rW  r  r   rc  r  r   r  )r*   r\  yaybr  r  r  s          r.   test_make_poly_12*TestBPolyFromDerivatives.test_make_poly_12  s    ii##E*UU1cjjm#$UU1cjjm#$--aB;1QW:1v&qABrFBEE:BrFBEE:B r7   c                 6   [         R                  R                  S5      nSS/nSu  p4UR                  USSSS45      n[        XR5      n[        R                  " XT5      n[        Xr5      n[         R
                  " SSS5      n	[        U" U	5      U" U	5      5        g )	Nr  r   rn   )r   r>   r&   rC   r6  r   )rH   r  rW  r   _raise_degreerJ  r   )
r*   r\  r,   rN  r+  r  r#  r  r1  r  s
             r.   test_raise_degree*TestBPolyFromDerivatives.test_raise_degree
  s    ii##E*FJJ1aA'1[  &Bl[[Ar"2B(r7   c                 J    [        [        [        R                  SS/S/5        g )Nr   rn   r(   rs   r   r5  r]   s    r.   
test_xi_yi#TestBPolyFromDerivatives.test_xi_yi  s    j%"8"81a&1#Fr7   c                 Z    / SQnS/S/S//n[        [        [        R                  X5        g )Nr   r   rn   r   ry  )r*   rM  r  s      r.   test_coords_order*TestBPolyFromDerivatives.test_coords_order  s*    cA3_j%"8"8"Ar7   c                 T   / SQnSS/S/SS/SS//n[         R                  " X5      nUR                  R                  S:X  d   eUR	                  5       nS HO  n[        U" U5      [        R                  " S5      5        [        U" U5      [        R                  " S5      5        MQ     g )Nr  r   )r6  rC   )r@   rW  r|   r  gffffff?r?   rG  r@   )r   r5  r  r  r  r   rH   r   )r*   rM  r  r  ppdr  s         r.   
test_zeros#TestBPolyFromDerivatives.test_zeros  s    !fqcAq6Aq6*##B+ttzzV###mmo2BBrFBJJsO4CGRZZ_5 3r7   c                 $   [         R                  R                  S5      n[         R                  " [	        US-   5       Vs/ s H  nSUS-  -  PM     sn5      n[	        US-   5       Vs/ s H  oCR                  U5      PM     nnXV4$ s  snf s  snf )Nr  rn   r|   r&   )rH   r  rW  r   r  )r*   r  rN  r\  r  rM  r  s          r.   _make_random_mk(TestBPolyFromDerivatives._make_random_mk+  st    ii##D)ZZE!A#J7JqadJ78%*1Q3Z0ZjjmZ0v 80s    B)Bc           	          Su  pU R                  X5      u  p4[        R                  " X45      n[        US-  5       H8  n[	        U" U5      U Vs/ s H  owU   PM	     sn5        UR                  5       nM:     g s  snf )Nr>   r   r&   )r  r   r5  r  r   r  )r*   r  rN  rM  r  r  r  yys           r.   test_random_12'TestBPolyFromDerivatives.test_random_122  sj    %%a+##B+1a4[EBrF$<2Y$<=B !$<s   A9c           
          Su  pU R                  X5      u  p4[        [        [        R                  40 [        X4SS9D6  g )Nr  r   rM  r  orders)r  r(   rs   r   r5  r   r*   r  rN  rM  r  s        r.   test_order_zero(TestBPolyFromDerivatives.test_order_zero;  s<    %%a+j%"8"8 	0"A.	0r7   c           
          Su  pU R                  X5      u  p4[        R                  " X4SU-  S-
  S9  [        [        [        R                  40 [        X4SU-  S9D6  g )Nr  r&   rn   r  r  )r  r   r5  r(   rs   r   r  s        r.   test_orders_too_high-TestBPolyFromDerivatives.test_orders_too_highA  sX    %%a+rac!e4j%"8"8 	2"AaC0	2r7   c           	         Su  pU R                  X5      u  p4Sn[        R                  " X4US9n[        US-  S-   5       H7  n[	        U" USS S-
  5      U" USS S-   5      5        UR                  5       nM9     [        R                  " U" USS S-
  5      U" USS S-   5      5      (       a   eSn[        R                  " X4US9n[        US-  5       H7  n[	        U" USS S-
  5      U" USS S-   5      5        UR                  5       nM9     [        R                  " U" USS S-
  5      U" USS S-   5      5      (       a   eg )	Nr  r>   r  r&   rn   rF   rV  r7  )r  r   r5  r  r   r  rH   allclose)r*   r  rN  rM  r  r  r  r  s           r.   test_orders_global+TestBPolyFromDerivatives.test_orders_globalI  sU   %%a+ ##B59uaxz"ABr!Bx%/0"R"X5E2FGB # ;;r"Qr(U"23R1R58H5IJJJJ
 ##B59uaxABr!Bx%/0"R"X5E2FGB ! ;;r"Qr(U"23R1R58H5IJJJJJr7   c           	         Su  pU R                  X5      u  p4[        U5       Vs/ s H  oUS-   PM	     nn[        USS 5       H  u  px[        R                  " X4US9n	[        Xg   S-  S-   5       H1  n
[        U	" US-
  5      U	" US-   5      5        U	R                  5       n	M3     [        R                  " U	" US-
  5      U	" US-   5      5      (       d  M   e   g s  snf )N)r8  r   rn   rF   r  r&   rV  )	r  r  r;  r   r5  r   r  rH   r  )r*   r  rN  rM  r  or  r  r,   r  r  s              r.   test_orders_local*TestBPolyFromDerivatives.test_orders_locala  s    %%a+!&q*Aa%*b2h'DA''v>B69>A-.1u9r!e)}=]]_ / {{2a%i="QY-@@@@ ( +s   Cc                 @   [         R                  R                  S5      nSu  p#[         R                  " UR                  US-   5      5      nUR                  US-   USSS45      n[        R
                  " XE5      nUR                  R                  SU-  USSS4:X  d   eg )Nr  )r8  r>   rn   r7  r8  r   r&   )rH   r  rW  r  r   r5  r  r  )r*   r\  r  rN  rM  r  r  s          r.   test_yi_trailing_dims.TestBPolyFromDerivatives.test_yi_trailing_dimsm  s    ii##D)WWSZZ!_%ZZ1aAq)*##B+ttzzac1aA....r7   c                    [         R                  " S5      n[        R                  " SS/S/S//US9n[	        U" S5      [         R
                  " S5      5        [         R                  " S5      n[        R                  " SS/S/S//US9n[	        U" S5      [         R
                  " S5      5        Sn[        R                  " SS/S/S//US9n[	        U" S5      [         R
                  " S5      5        Sng )Nrn   r   r  )rH   int32r   r5  r   r   int64)r*   r  r  s      r.   test_gh_5430%TestBPolyFromDerivatives.test_gh_5430u  s    
 !""Aq6QC!:fEAaD"**Q-0!""Aq6QC!:fEAaD"**Q-0""Aq6QC!:fEAaD"**Q-0r7   r1   N)r2   r3   r4   r5   rd  ri  rm  rr  rv  rz  r~  r  r  r  r  r  r  r  r  r  r6   r1   r7   r.   r`  r`    sV    &
,0
!)GB
	6!02K0
A/r7   r`  c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 r\R                  R                  S 5       rSrg)TestNdPPolyi  c                 @   [         R                  R                  S5      nUR                  SS5      n[         R                  " SSS5      nUR                  S5      n[        X#45      nU" U45      n[        US S 2S S 2S 4   X45      R                  5       n[        Xg5        g )Nr  r6  r>   r   rn   r7  r  )	rH   r  rW  r  rJ  r   r}  r  r   )r*   r\  r  r,   rM  r  v1v2s           r.   test_simple_1dTestNdPPoly.test_simple_1d  s    ii##D)HHQNKK1c"XXc]AtuX1QqX;.446r7   c                    [         R                  R                  S5      nUR                  SSSS5      n[         R                  " SSS5      n[         R                  " SSS5      S	-  nUR                  S
5      nUR                  S
5      n[         R
                  " [        U5      S/UR                  S9nUR                  [         R                  5        [        R                  " UR                  SSS5      X44[         R                  " SS/[         R                  S9[         R                  XV4   [         R                  " SS/[         R                  S9SU5        UR!                  5       n[#        X#U4XV5      n[%        Xx5        ['        X#U45      n	S H<  n
U	" [         R                  XV4   U
S9n[#        X#U4XVU
S9n[%        Xx[)        U
5      S9  M>     g )Nr  r6  r>   r7  r8  r   rn   r   r&   r  r   r  *   )Nr   r   r   rn   )rn   r   )r&   rC   )r   r&   r  r9  )rH   r  rW  r  rJ  r  r  r   fillr   r   evaluate_ndrM   rQ   intcc_r  _ppoly2d_evalr   r   r  )r*   r\  r  r,   r+   rM  r  r  r  r  r  s              r.   test_simple_2dTestNdPPoly.test_simple_2d  sm   ii##D)HHQ1a KK1c"KK1c"A%XXc]XXc]XXs2wl!''2
199S#q1688QF"'':55=88QF"'':	 XXZ1!fb-A1v@B255=R(Bqa&"R8BBDH5 Ar7   c           
         [         R                  R                  S5      nUR                  SSSSSS5      n[         R                  " SS	S5      n[         R                  " SS	S5      S
-  n[         R                  " SS	S5      S-  nUR                  S5      nUR                  S5      nUR                  S5      n[        X#XE45      n	S H,  n
U	" XgU4U
S9n[        X#XE4XgXS9n[        X[        U
5      S9  M.     g )Nr  r6  r>   r7  r8  r   r   r   rn   r&   rB   rC   (   )Nr   r   r   r   rn   r   rn   r   r   )r&   rC   r   )r7  r   r&   r  r9  )	rH   r  rW  r  rJ  r   _ppoly3d_evalr   r  )r*   r\  r  r,   r+   r-   rM  r  zir  r  r  r  s                r.   test_simple_3dTestNdPPoly.test_simple_3d  s    ii##D)HHQ1aA&KK1c"KK1c"A%KK1c"A%XXb\XXb\XXb\A1y!BBB<B'Bqa)RR?BBDH5	r7   c           
      2   [         R                  R                  S5      nUR                  SSSSSSSS	5      n[         R                  " S
SS5      n[         R                  " S
SS5      S-  n[         R                  " S
SS	5      S-  n[         R                  " S
SS5      S-  nUR                  S5      nUR                  S5      nUR                  S5      n	UR                  S5      n
[        X#XEU45      nU" XxX45      n[        X#XEU4XxX5      n[        X5        g )Nr  r6  r>   r7  r8  r   r   rB   r   r   rn   r&   rC   r   r  )rH   r  rW  r  rJ  r   _ppoly4d_evalr   )r*   r\  r  r,   r+   r-   urM  r  r  uir  r  r  s                 r.   test_simple_4d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\A1|$ 1!lBB;r7   c                    [         R                  R                  S5      nUR                  SS5      n[         R                  " SSS5      n[        X#45      nUR                  S/S9n[        X#5      nUR                  5       n[        UR                  UR                  5        UR                  S/S9n[        X#5      nUR                  S5      n[        UR                  UR                  5        g )	Nr  r6  r>   r   rn   r7  r  r&   )rH   r  rW  r  rJ  r   r  r   r   r  r  )r*   r\  r  r,   r  rr  r  dp1s           r.   test_deriv_1dTestNdPPoly.test_deriv_1d  s    ii##D)HHQNKK1c"At \\aS\!1[mmocee$ !%1["cee$r7   c                    [         R                  R                  S5      nUR                  SSSSSS5      n[         R                  " SS	S5      n[         R                  " SS	S5      S
-  n[         R                  " SS	S5      S-  n[        X#XE45      n[        UR                  SSS	S
SS5      U5      nUR                  S
/S9nUR                  S
5      n	[        UR                  U	R                  R                  SS
SS	SS5      5        [        UR                  S	SSS
SS5      U5      nUR                  / SQS9nUR                  S	5      n	[        UR                  U	R                  R                  S
SSSS	S5      5        [        UR                  S
SSS	SS5      U5      nUR                  / SQS9nUR                  S5      n	[        UR                  U	R                  R                  S
SSSSS	5      5        g )Nr  r6  r>   r7  r8  r   r   r   rn   r&   rB   rC   r  r  )r   r   rC   )rH   r  rW  r  rJ  r   r   	transposer  r   r  r  )
r*   r\  r  r,   r+   r-   r  r  rr  r  s
             r.   test_deriv_3dTestNdPPoly.test_deriv_3d  s   ii##D)HHQ1aA&KK1c"KK1c"A%KK1c"A%A1y! 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	;r7   c                 B   [         R                  R                  S5      n[         R                  " S5      n[         R                  " SSS5      S-  n[         R                  " SSS5      S-  n[         R                  " SSS5      S	-  n[        X#XE45      nUR                  S
5      nUR                  S5      nUR                  S5      nUR                  S5      n	UR                  S5      n
[        U" XU
45      XS-  -  U
S-  -  [        S	5      [        S5      -  -  5        g )Nr  )rn   rn   rn   rC   r6  r>   r   rn   r6  r>   r&   r7  rC   )rn   r   r6  )r   r&   r   r  )
rH   r  rW  rr   rJ  r   r  r  r   r   )r*   r\  r  r,   r+   r-   r  rs  rM  r  r  s              r.   test_deriv_3d_simple TestNdPPoly.test_deriv_3d_simple	  s    ii##D)GG&'KK1c"A%KK1c"A%KK1c"A%A1y!i(y)XXb\XXb\XXb\BB<(U
RU*eAhuQx.?@	Br7   c                   ^
 [         R                  R                  S5      nUR                  SSSS5      n[         R                  " SSS5      S-  n[         R                  " SSS5      S	-  nUR                  SS	SS
5      nUR                  UR                  S   UR                  S   S5      R                  5       n[        R                  " XSS	5        UR                  UR                  5      nUR                  SS	SS
5      nUR                  SS
SS	5      nUR                  UR                  S   UR                  S   S5      R                  5       n[        R                  " XTS	5        UR                  UR                  5      nUR                  S	SS
S5      R                  5       n[        X#U45      m
SS/SS/SS/SS/4 HG  nT
R                  U5      n[        U
4S jU[        SSS9/S	-  S9u  p[        XxSSS[!        U5      S9  MI     g )Nr  r6  r>      r  r   rn   r   r&   rC   rF   r  )r   r'   )r<  r>  )r|  rX  c                    > T" X45      $ r   r1   )r,   r+   r  s     r.   <lambda>/TestNdPPoly.test_integrate_2d.<locals>.<lambda>>	  s    1aV9r7   gh㈵>)epsrelepsabs)r   F)r   r   r  r   )rH   r  rW  r  rJ  r  rM   r  rx   r   fix_continuityr   rZ  r    r   r   r  )r*   r\  r  r,   r+   cxrangesr  ig2err2r  s             @r.   test_integrate_2dTestNdPPoly.test_integrate_2d"	  s   ii##D)HHQ2r"KK1d#Q&KK1d#Q& KK1a#YYqwwqz1771:r2779bQ'JJqwwKK1a#KK1a#YYqwwqz1771:r2779bQ'JJqwwKK1a#((* A1v' &))"J/1F
 V$B4f$(T$B#CA#EGICB$TE$(L21r7   c           	          [         R                  R                  S5      nUR                  SSSSSS5      n[         R                  " SS	S5      S	-  n[         R                  " SS	S5      S
-  n[         R                  " SS	S5      S-  n[        X#XE45      nUR                  S5      nUR                  S5      nSu  pUR                  XSS9nUR                  S5      n[        U" Xx45      U" XU45      U" XU45      -
  5        UR                  XS	S9nUR                  S5      n[        U" Xx45      U" XzU45      U" XyU45      -
  5        UR                  XS
S9nUR                  S5      n[        U" Xx45      U" XxU
45      U" XxU	45      -
  5        g )Nr  r6  r>   r7  r  r  r   r   rn   r&   r   rC   r  )rX  r>  rq   r  r  r}  )	rH   r  rW  r  rJ  r   integrate_1dr  r   )r*   r\  r  r,   r+   r-   r  r  vr=  r@  pxpaxpypaypzpazs                    r.   test_integrate_1dTestNdPPoly.test_integrate_1dC	  sy   ii##D)HHQ1b"b)KK1d#Q&KK1d#Q&KK1d#Q& A1y!HHSMHHSM^^Aq^)y)A6
Cq	NS!^$CD^^Aq^)y)A6
Cq	NS!^$CD^^Aq^)y)A6
Cq	NS!^$CDr7   c                 <  ^ [         R                  R                  S5      mTR                  SS9n[         R                  " SSS5      n[         R                  " SSS5      S-  n[         R                  " SSS	5      S
-  n[        XX445      nU4S jn[        S	Xe5        g )Nr  )r6  r>   r7  r8  r   r   rR  r   rn   r   r   r&   rB   rC   c                 t   > TR                  SS9nTR                  SS9nTR                  SS9nU" X#U45        g )Nr  rR  )r  )r  r+  rM  r  r  r\  s        r.   r  /TestNdPPoly.test_concurrency.<locals>.worker_fnh	  s?    "%B"%B"%Br7   )rH   r  default_rngr  rJ  r   r   )r*   r  r,   r+   r-   r  r  r\  s          @r.   r  TestNdPPoly.test_concurrency]	  s    ii##E*KK/K0KK1c"KK1c"A%KK1c"A%A1y!	 	 I1r7   r1   N)r2   r3   r4   r5   r  r  r  r  r  r  r  r  r  r  r  thread_unsafer  r6   r1   r7   r.   r  r    sP     6:6( (%(;>B(2BE4 [[2 2r7   r  c                   ^ ^^ [         R                  " [        U5      T R                  S   45      n[	        U5       H  u  pEUS:  d  US:  a  [         R
                  X4SS24'   M)  [         R                  " X5      S-
  mXQT   -
  mUT   Us=::  a  UTS-      :  d   e   e[        U UU4S j[        T R                  S   5       5       5      nXcUSS24'   M     U$ )z&Evaluate piecewise polynomial manuallyr&   r   rn   Nc              3   d   >#    U  H%  nTUT4   TTR                   S    U-
  S-
  -  -  v   M'     g7f)r   rn   N)r  )r  rN  r  r+  r  s     r.   r   _ppoly_eval_1.<locals>.<genexpr>{	  s:      ,*A !A#QWWQZ\!^,,*s   -0)	rH   zerosr  r  r;  r   searchsortedsumr  )	r  r,   xpsrl  r  r  r  r+  r  s	   `      @@r.   r}  r}  q	  s    
((CHaggaj)
*C36R!VvvC!HOOA"Q&1Itr"AacF""""" ,qwwqz*, ,AaC   Jr7   c                    US   nUS   nU R                   S   n[        R                   " U5      n[        R                  " U5      n[        R                  " U5      nX$:  X%:*  -  n	X8U	) '   UR	                  U	5      n
[        R
                  " X5      S-
  nUR                  S[        U5      5      nU nXR                  U5      -
  n[        R                  " XS9n[        R                  " [        [        U
5      5       Vs/ s H)  n[        R                  " XSS24   USS2X   4   5      PM+     sn5      nUX'   Xxl         U$ s  snf )z4Evaluate piecewise polynomial manually (another way)r   rF   rn   )NN)r  rH   r  
empty_likecompressr  clipr  takevanderrQ   r  rY  )r  breaksr   r  r=  r@  K	saveshaper  maskr6  indxsr  rX  VrN  valuess                    r.   r~  r~  	  s   q	Ar
AQAI88D>D
--
CI$)$DJ	t	BOOF')EJJq#f+&E	BE""D
		$AXXs2wPArvva1gr!UX+7PQFCIIJ Qs   >0Ec                 b    US:  a  [        S5      eX!:  a  g[        X-
  S-   U5      XU-
  -  -  $ )z
d^n (x**y) / dx^n
r   zinvalid derivative orderrn   )rs   r   )r,   r+   r>  s      r.   _dpowr  	  s=     	1u344	
AEAIq!AAJ..r7   c                    Uc  Sn[         R                  " [        U5      4U R                  S9nU R                  SS u  pg[        [        X#5      5       GH  u  nu  pUS   S   U	s=::  a  US   S   ::  a  O  OUS   S   U
s=::  a  US   S   ::  d  O  [         R                  XX'   MT  [         R                  " US   U	5      S-
  n[         R                  " US   U
5      S-
  nXS   U   -
  nXS   U   -
  nSn[        U R                  S   5       HZ  n[        U R                  S   5       H;  nXUU-
  S-
  UU-
  S-
  X4   [        UUUS   5      -  [        UUUS   5      -  -  nM=     M\     XU'   GM!     U$ )z8
Straightforward evaluation of 2-D piecewise polynomial
Nr  r   r&   r   rF   rn   rH   r  r  r   r  r;  zipr   r  r  r  )r  r  r   ynewr  rl  nxnyjoutr,   r+   j1j2s1s2r  k1k2s                     r.   r  r  	  s}    
z
((CI<qww
/CWWRa[FB!#d/2fqAqQ+"Q%)+AqQ+"Q%)+CI__RUA&*__RUA&*Ar]Ar]
#BAGGAJ'"R%'"R%'"/0B1./B1./ 0 ( $ D	) 3, Jr7   c                    Uc  Sn[         R                  " [        U5      4U R                  S9nU R                  SS u  pxn	[        [        X#U5      5       GH  u  n
u  pnUS   S   Us=::  a  US   S   ::  a:  O  O7US   S   Us=::  a  US   S   ::  a  O  OUS   S   Us=::  a  US   S   ::  d  O  [         R                  Xj'   Mq  [         R                  " US   U5      S-
  n[         R                  " US   U5      S-
  n[         R                  " US   U5      S-
  nXS   U   -
  nXS   U   -
  nXS   U   -
  nSn[        U R                  S   5       H  n[        U R                  S   5       Hs  n[        U R                  S   5       HT  nUXU-
  S-
  UU-
  S-
  U	U-
  S-
  XU4   [        UUUS   5      -  [        UUUS   5      -  [        UUUS   5      -  -  nMV     Mu     M     UXj'   GM     U$ )	z8
Straightforward evaluation of 3-D piecewise polynomial
Nr  r   rC   r   rF   rn   r&   r
  )r  r  r   r  znewr  rl  r  r  nzr  r,   r+   r-   r  r  j3r  r  s3r  r  r  k3s                           r.   r  r  	  s    
z
((CI<qww
/C!JBB$ST%:;iqQAqQ+"Q%)+AqQ+"Q%)+AqQ+"Q%)+CI__RUA&*__RUA&*__RUA&*Ar]Ar]Ar]
#BAGGAJ'
+BAeAgbeAgbeAgbB>?#BBqE23#BBqE23 $BBqE23 4C , ( $ 	1 <4 Jr7   c                    Uc  Sn[         R                  " [        U5      4U R                  S9nU R                  SS u  pp[        [        X#XE5      5       GH  u  nu  pnnUS   S   Us=::  a  US   S   ::  aV  O  OSUS   S   Us=::  a  US   S   ::  a:  O  O7US   S   Us=::  a  US   S   ::  a  O  OUS	   S   Us=::  a  US	   S   ::  d  O  [         R                  X|'   M  [         R                  " US   U5      S-
  n[         R                  " US   U5      S-
  n[         R                  " US   U5      S-
  n[         R                  " US	   U5      S-
  nXS   U   -
  nXS   U   -
  nXS   U   -
  nUUS	   U   -
  nSn[        U R                  S   5       H  n[        U R                  S   5       H  n[        U R                  S   5       H  n[        U R                  S	   5       Hn  nUXU-
  S-
  U	U-
  S-
  U
U-
  S-
  UU-
  S-
  UUUU4   [        UUUS   5      -  [        UUUS   5      -  [        UUUS   5      -  [        UUUS	   5      -  -  nMp     M     M     M     UX|'   GM     U$ )
z8
Straightforward evaluation of 4-D piecewise polynomial
N)r   r   r   r   r   r6  r   rF   rn   r&   rC   r
  )r  r  r   r  r  unewr  rl  mxmymzmur  r,   r+   r-   r  r  r  r  j4r  r  r  s4r  r  r  r  k4s                                 r.   r  r  	  s    
z
((CI<qww
/CWWRa[NBB'D(CDlqQAqQ+"Q%)+AqQ+"Q%)+AqQ+"Q%)+AqQ+"Q%)+CI__RUA&*__RUA&*__RUA&*__RUA&*Ar]Ar]Ar]Ar]
#BAGGAJ'
+B#AGGAJ/R%'"R%'"R%'"R%'"R2"M N"'B1"6!7"'B1"6!7 #(B1"6!7 #(B1"6	!7 8 0 , ( $ 	; E> Jr7   r   )?scipy._lib._array_apir   r   r   r   r  r   r(   numpyr   r	   r
   r   rH   scipy.interpolater   r   r   r   r   r   r   r   r   r   r   r   r   r   scipy.specialr   r   r   scipy._lib._gcutilsr   r   scipy._lib._testutilsr   scipy.integrater    r!   r#   r9   r  r  r  r  rS  r  r  r9  r  r"  rP  r`  r  r}  r   r~  r  r  r  r  r1   r7   r.   <module>r,     s4    +  ( ( - - - - & $ ; 9 !  U Up6 6r; r;j $79J#KL: M:,XL XLv,& ,&^kE kE\E= E=P\0 \0~.' .'bd dNg2 g2T  .0VV .	/!H%P*r7   