
    Bpj                    l   S SK JrJrJrJrJrJrJr  S SK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(  S S
K)J*r*  S SK+J,r,  S SK#J-r-  \R\                  R^                  r/\R\                  R`                  r0 " S S5      r1 " S S5      r2 " S S5      r3\" \5       " S S5      5       r4\R\                  Rk                  S\\"/5      S 5       r6\" \\5       " S S5      5       r7 " S S5      r8\" \5       " S S5      5       r9\" \5       " S S5      5       r:\" \5       " S S 5      5       r;\" \\5       " S! S"5      5       r<\" \5       " S# S$5      5       r= " S% S&5      r>S' r?\R                  4S( jrAS) rBS-S* jrCS-S+ jrDS-S, jrEg).    )xp_assert_equalxp_assert_closeassert_almost_equalassert_array_almost_equalmake_xp_test_caseis_cupy_xp_copy_to_numpy)array_api_extra)raisesN)mgridpisinpoly1d)interp1dinterp2dlagrangePPolyBPolysplrepsplev
splantidersplintsprootAkima1DInterpolatorNdPPolyBSplinePchipInterpolator)pochgamma)_ppoly)assert_deallocated)_run_concurrent_barrier)nquad)binomc                       \ 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       d/var/www/html/pdf-tiff/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__r2   __static_attributes__r4       r1   r&   r&      s    r:   r&   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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 S r!S r"S  r#S! r$S" r%S# r&\'RP                  RS                  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)   
   )rE   r)   )r)   r)   rA   g      >@)r)      rA   )rF   r)   rA      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    r1   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% r:   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rn   r_   rg   )rI      rI   )rI   )rI   rI   r   rq   r)   rF   rn   axisr_   rE   rs   )rI   rI   rI   r4   rC   )r   rN   rO   rK   rT   rW   rR   onesr+   
ValueErrorrQ   rS   rX   rU   rV   r-   rn   s     r1   test_validationTestInterp1D.test_validationR   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	9r:   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_   )      ?rB   r   rq   rt   )r   rN   rO   r{   r|   rK   isnanr_   rs   rW   rX   r   r/   r.   r`   s    r1   	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Cr:   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 )NrI   333333?g333333@gffffff@      @F)assume_sortedT)	r   rN   rO   r   rK   rT   r+   rv   rW   )r-   interp10interp10_unsortedinterp10_assume_kwinterp10_assume_kw2interp10_y_2dinterp10_y_2d_unsorteds          r1   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r:   c                 8    S H  nU R                  U5        M     g )N)rg   rh   )_check_linearrw   s     r1   test_linearTestInterp1D.test_linear   s    )Dt$ *r:   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 )Nrm   r   r   ro   rp         r   	      +=rtolTrn   r_   r|   )r   rN   rO   r   rK   rT   r   asarraydictr+   rv   )r-   rn   r   extrapolatoroptss        r1   r   TestInterp1D._check_linear   s    DHHdhhT:!(488"4dhh?!(3-#?!(?";"$((?";	=  $((+8:_5

#345	B ,!%' 	j(DHHdhhG$Gr:   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   dtyperg   rm   V瞯<atolr   rq   r)   r   rq   )
rK   float16float32float64
longdoublerL   r   r   r   nan)r-   dtypr/   r.   yps        r1   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*r:   c                     [         R                  " SS/5      n[         R                  " SS/SS//5      n[        X5      " U5      n[        X2SS9  [         R                  " US:  5      (       d   eg )Ng`{jtH?gMb`?rC   gfxK;?g#B;r   r   )rK   rT   r   r   all)r-   r/   r.   r   s       r1   test_linear_numerical_stability,TestInterp1D.test_linear_numerical_stability   sc     HH(%01HHsCj#8#">?@a^AE*vvbAgr:   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)rh   rf   ri   rj   r   rE   r   r}   Frn   r|   Hz>z,  )r   check_dtypeerr_msg)rK   r   r   r   	complex64
complex128rL   expastyper   r   )r-   dt_rdt_rcspline_kindsdtxr/   dtyr.   dtnxnewrn   fs               r1   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 !-    r:   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 )Nrj   rm   r         ?r   r   rN   rO   r   rK   rT   r-   r   s     r1   
test_cubicTestInterp1D.test_cubic  sv    DHHdhhW=!(488"4dhh?!(3-#?!(3-#?!(?";"$((?";	>r:   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 )Nrd   rm   r   r   r   r   rB   r   r   ro   rp   r   rC   r   r   r   r   r   Tr   
r   rN   rO   r   rK   rT   r   r   r+   rv   r-   r   r   r   s       r1   test_nearestTestInterp1D.test_nearest  s     DHHdhhY?!(488"4dhh?!(3-">!(3-">!(?";"$((<"8	;  $((+8:_5&U	4 ,!%' 	j(DHHdhhG$Gr:   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 )Nre   rm   r   r   r   rB   r   r   ro   rp   r   r   r   r   Tr   r   r   s       r1   test_nearest_upTestInterp1D.test_nearest_up)  s     DHHdhh\B!(488"4dhh?!(3-">!(3-">!(?";"$((<"8	;  $((+8:_5&U	4 ,!%' 	j(DHHdhhG$Gr:   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 )%Nrk   rm   r   r   r   r   rB   r?   r   ro   rp   r   r   r   r   r   rI   rA   r         rA   r            rr   r   rA   r   rE   r   Tr   r   r   rq   rI   rn   r_   r   r   rI   r   rq   r)   rF   rA   rq   rI   r)   r   rq   rI   r   rq   FrH   r   rN   rO   r   rK   rT   r   r   rW   rX   r   r+   rv   r]   r^   r-   r   r   interpolator1Dinterpolator2Dinterpolator2DAxis0r   s          r1   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%	&r:   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 )$Nrl   rm   r   rB   r   r   )r}   r   r   ro   rp   r   r   r   r   r   r   rA   r   rE   r   r   rr   r   rq   r   Tr   r   r   r   r   rI   r   r   FrG   r   r   s          r1   	test_nextTestInterp1D.test_next  s*   DHHdhhV<!(488"4dhh?!(3-">!(3-">!(?";"$((<"8	;  $((+8:_5Aq"&&)	7 "$((DHH6-:<'=>Aq!RVVRVV4	6 "$((DIIF-:<'=>Q1bffbff5b"b"&&"&&9;	< 'txx,--I+K8Qb&&"&&)+	,
 ,!%' 	j(DHHdhhG$G ")",6-:046 	'>?Aq!R8	: ")",6-:057 	'>?Aq!R8	: "$((D,B,B'--:< 	'=>b!Q7b"b"&&"&&9;	< 'txx1G1G,2,--I 	+K8bb&&"&&)+	,r:   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 )Nrf   rm   r   r   r   r   r   r   r   s     r1   	test_zeroTestInterp1D.test_zero  sv    DHHdhhV<!(488"4dhh?!(3-">!(3-">!(?";"$((<"8	:r:   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+   rv   str)r-   interpolant
test_array
fail_valueerrs        r1   bounds_check_helper TestInterp1D.bounds_check_helper  s?     	j+:	1
# 	1!ls3x/0/	1s    
A<Arg   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_   r|   rn   gffffff&@g333333g333333)@gL3@)check_shape)r   rC   r?         "@      &@)TFFFF)FFFFTT)r|   rn   r   r  )rC   r   rC   )rC   r         5@r  )rC   r?   r  )	r   rN   rO   r_   r   rK   rT   _check_boundsr   )r-   rn   extrap10raises_bounds_errors       r1   _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,r:   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 )NrE   Fr   rq   r   rI   )	rK   rL   r   intr   r   r   r   r_)r-   rn   r/   r.   cyis         r1   _bounds_check_int_nan_fill'TestInterp1D._bounds_check_int_nan_fill  s    IIbM  %IIbM  %QeLq1uXxx1!"beeBFFAcrFN&;<r:   c                 Z    S H%  nU R                  U5        U R                  U5        M'     g )N)rg   rj   rd   rk   rl   rh   rf   ri   )r  r  rw   s     r1   test_boundsTestInterp1D.test_bounds  s*    5Dt$++D15r:   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   rE   g      Y@rJ   r  r  rI   )rn   rs   r_   r|   rF   rq   r   )r     ,  r)   r  r  )r  8r  r  c              3   N   #    U  H  n[         R                  " U5      v   M     g 7fr   )rK   rT   ).0r   s     r1   	<genexpr>1TestInterp1D._check_fill_value.<locals>.<genexpr>a  s     "C
1288A;;
s   #%i  i  ii0)r   rN   rO   r   rK   r   r[   r\   rY   rZ   rM   ndimshaper+   rv   rT   rangetuple)r-   rn   interpr.   resultr_   iis          r1   _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 r:   c                 8    S H  nU R                  U5        M     g N)rg   rd   rj   rh   ri   rf   rk   rl   )r'  rw   s     r1   test_fill_valueTestInterp1D.test_fill_value  s    1D""4(1r:   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   rN   rO   r_   )r-   r$  s     r1   test_fill_value_writeable&TestInterp1D.test_fill_value_writeable  sH    $((DHH?  E)))!  E)))r:   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 )Nrm   r}   r?   rB         @r   r4   r   r        (@r   rs   rn   r   g      *@g      .@g      1@r@         @g      ,@)r   rN   rO   r   rK   rT   
isinstancendarrayr!  rW   rX   )r-   rn   r   	interp210	interp102x_news         r1   _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r:   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)   rA         r3  r   r>  )r)   rF   rq   r2  rq   )
rK   rL   prodrP   	enumerater   r   listr!  r#  )
r-   rn   ar.   nsr/   r0   rR   bs
             r1   _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* !r:   c                 Z    S H%  nU R                  U5        U R                  U5        M'     g )N)rg   rj   rh   ri   rd   rf   rk   rl   )r:  rH  rw   s     r1   test_ndTestInterp1D.test_nd  s*    1D!!$'  &1r:   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)
rq         @rF   g@r=  g@g@g       @g      #@rE         ?       @rm   rI   rq   rE   r'   )rK   rT   r   r   r   linspacerealimag)	r-   r   rn   r/   r.   r  xicrcis	            r1   _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5r:   c                     S HC  nU R                  [        R                  U5        U R                  [        R                  U5        ME     g r*  )rV  rK   r   r   rw   s     r1   test_complexTestInterp1D.test_complex  s6    1Dd3t41r:   c                     [         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   rq   皙?皙?)rK   rP  r!   r   )r-   r/   r.   r$  s       r1   test_circular_refsTestInterp1D.test_circular_refs  sI    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)rd   rk   rl   )r   2      r   rm   )rK   rT   int8r   r   )r-   rn   r/   r&  s       r1   test_overflow_nearest"TestInterp1D.test_overflow_nearest  s:    3DRWW5A!T*B%beQ/ 4r:   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 )NrE   r>  )rf   rh   rm   g@r1  )	rK   rL   r   floatr{   r   r   isfiniter   )r-   r/   r.   rn   irvalss         r1   test_local_nansTestInterp1D.test_local_nans  su     IIbM  'FFHvv!'D!T*BsCj>D;;t$((**** (r:   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   rF   )ri   rj   rm   r>  rq   rA   )rK   rL   r   rg  r{   r   r   r   r   r   r!  )
r-   r/   r.   ynrn   ri  irnr   outoutns
             r1   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 +r:   c                     [         R                  " S5      [         R                  -  n[         R                  " S5      n[	        [
        5         [        XSS9  S S S 5        g ! , (       d  f       g = f)NrE   rj   rm   )rK   ru   r   rL   r+   rv   r   )r-   r/   r.   s      r1   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   rE   r}   r   r\  TFF)rg   rd   rf   rh   ri   rj   rm   )rK   rL   r   flags	writeabler   rh  r   )r-   r/   r.   r   xnew_writeablern   r   rj  s           r1   test_read_onlyTestInterp1D.test_read_only,  s    IIaFFA28yyAs#+N#1JJ  %AGG"Q-w{{4(,,....	" ,r:   rn   )rg   rd   re   rk   rl   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   r>  FrD   )rn   r|   r_   )rq   r   r)   )rB   r>  rE   Tr   zx_new is abovematchrB   )r   r   rK   r   r+   rv   )r-   rn   r   s      r1   test_single_valueTestInterp1D.test_single_value:  sf    
 cUQCd ')+

<(@AcUQCd>:-=>cF ?>>s   	A((
A6)r_   rU   rN   rR   rQ   rM   rV   rO   rX   r^   rS   rW   r]   rY   r[   rZ   r\   N)rg   ),r5   r6   r7   r8   ra   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r'  r+  r.  r:  rH  rK  rK   r   rV  rY  r^  rd  rk  rr  ru  r|  pytestmarkparametrizer  r9   r4   r:   r1   r<   r<   '   s    '!RB9HD&D4%H&+*G$>H*H*C&JC,J:1-0=2_LB)*F@1' $&==x 6 50	+/$)/ [[Gr:   r<   c                       \ rS rSrS rSrg)TestLagrangeiH  c                 <   [        / SQ5      n[        R                  " [        UR                  5      5      nU" U5      n[
        R                  " [        SS9   [        X#5      nS S S 5        [        UR                  WR                  5        g ! , (       d  f       N/= f)N)rA   r)   rq   r=  rF   z
`lagrange`r  )
r   rK   rL   lencoeffsr  warnsDeprecationWarningr   r   )r-   pxsyspls        r1   test_lagrangeTestLagrange.test_lagrangeJ  se    ;YYs188}%rU\\,LA"B B!!((2995 BAs   B
Br4   N)r5   r6   r7   r8   r  r9   r4   r:   r1   r  r  H  s    6r:   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g)TestAkima1DInterpolatoriS  c                    UR                  SSUR                  S9nUR                  / SQUR                  S9n[        X#5      nUR                  / SQUR                  S9nUR                  / SQUR                  S9n[	        U" U5      U5        g )NrC   r  r   rC   rB   r   r}   rB   r         @r  g@ffffff@r}   rC   r*   r   r   rN        @g      @r  g      @g@g333333!@g#@r@   rC   g      ?rB   r   g     @?g     @g.袋@g^@gn @gGNB@grcߖ@g	I@r}   rL   r   r   r   r   r-   xpr/   r.   akrS  r  s          r1   	test_eval!TestAkima1DInterpolator.test_evalU  s    IIb#RZZI0JJ<BJJ  
 !&ZZ "$**  .ZZ  zz	  #
 	2#r:   c                    UR                  SSUR                  S9nUR                  / SQUR                  S9n[        X#SS9nUR                  / SQUR                  S9nUR                  / SQUR                  S9n[	        U" U5      U5        g )	NrC   r  r   r  makimamethodr  )rC   gF??rB   g?g?gg{'@g>J(j@g?@gq@g@g9~@go
@r}   r  r  s          r1   test_eval_mod%TestAkima1DInterpolator.test_eval_modd  s     IIb#RZZI0JJ<BJJ  
 !h7ZZ &-/ZZ  9ZZ 5 =?JJ  H 	2#r:   c                 p   UR                  SSUR                  S9nUR                  / SQUR                  S9nUR                  USU-  4SS9n[	        X#5      nUR                  / SQUR                  S9nUR                  / S	QUR                  S9nUR                  USU-  4SS9n[        U" U5      U5        g )
NrC   r  r   r  rB   rq   rt   r  r  )rL   r   r   stackr   r   r  s          r1   test_eval_2d$TestAkima1DInterpolator.test_eval_2dw  s    IIb#RZZI0JJ<BJJ  
 HHaa[qH) &ZZ &-/ZZ  9ZZ 8 @Bzz  K XXr27m!X,2#r:   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 )NrC   r  r  )r   r)   r)   r   rB   rq   r}   r4  r  )   r)   r)   r  )rK   rL   rT   emptyr   r   )r-   r/   y_r.   r  rS  r  yi_s           r1   test_eval_3d$TestAkima1DInterpolator.test_eval_3d  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#r:   c                     UR                  SS/UR                  S9nUR                  SS/5      n[        X#SS S9n[        U" S5      UR                  SUR                  S95        g )	NrC   r   r   r*   r   )rs   ro   g?g333333?)r   r   r   r   )r-   r  r/   r.   akimas        r1   $test_linear_interpolant_edge_case_1d<TestAkima1DInterpolator.test_linear_interpolant_edge_case_1d  s[    JJSzJ4JJSz"#AqdCdRZZRZZZ%HIr:   c                 d   UR                  SS/5      nUR                  USU-  SU-  SU-  4SS9n[        X#5      nUR                  SS/5      nUR                  / S	Q/ S
Q/UR                  S9n[	        U" U5      U5        [        X#R
                  SS9n[	        U" U5      UR
                  5        g )NrC   r   rB   r}   r4  rq   rt   r*   )r*   r   r   rB   )r   rB   r}   r4  r   )r   r  r   r   r   Tr  s          r1   $test_linear_interpolant_edge_case_2d<TestAkima1DInterpolator.test_linear_interpolant_edge_case_2d  s    JJBx HHaaaa0qH9 &ZZb	"ZZ+)+24**  
 	2# CCa02%r:   c                    [         R                  " SS5      n[         R                  " SS/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	S/5      n[         R                  " S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n[        U" U5      U5        [	        XR                  SSS
5      SS9n[        U" U5      UR                  SSS
5      5        [	        XR                  S
SS5      S
S9n[        U" U5      UR                  S
SS5      5        g )NrC   rB   r   )r)   r)   r)   r   rq   r}   r4  r*   r)   rt   )rK   rL   rT   r  r   r   	transpose)r-   r/   r  r.   r  r  r  rS  s           r1   $test_linear_interpolant_edge_case_3d<TestAkima1DInterpolator.test_linear_interpolant_edge_case_3d  sc   IIb"XXr2hHHY!Q'
"W!Q'
"W!Q'
"W!Q'
 &hhRy!XXi 1a73h1a73h1a73h1a72# KK1a$8qA2Q1 56 KK1a$8qA2Q1 56r:   c                 (   UR                  / SQUR                  S9nUR                  X"S-  45      R                  n[	        X#5      nUR                  SS/UR                  S9nU" U5      n[        XaR                  XUS-  45      R                  5        g )Nr   r   r)   r*   r   )r   r   r  r  r   r   )r-   r  r/   r.   r  x_evaly_evals          r1   %test_degenerate_case_multidimensional=TestAkima1DInterpolator.test_degenerate_case_multidimensional  s}    JJy

J3HHaAY!! &S#Jbjj9F&!))< = ? ?@r:   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)NrC   r  r  z9Extending a 1-D Akima interpolator is not yet implementedr  )rK   rL   rT   r   r  r   r,   extend)r-   r/   r.   r  r  s        r1   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)NrC   r  r  z `method`=invalid is unsupported.r  invalidr  )rK   rL   rT   r  r   r,   r   )r-   r/   r.   r  s       r1   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 )NrA   r   r)   r  rE      Tro   Fr   r   r   r=  rI   rF   )rK   rP  r   r   r   fullr   )r-   r/   r.   x_exty_extak_trueak_falseak_nones           r1   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:r:   c                    [         R                  " SS5      nS[         R                  " [         R                  " [        5      R
                  5      -  [         R                  " US-
  S5      -  n[        XSS9n[        XSS9nU" U5      nU" U5      n[         R                  " U5      R                  5       (       d   e[         R                  " U5      R                  5       (       d   eg )	Nrq   rE   g    .Ar=  r*   r  r  r  )
rK   rL   sqrtfinforg  max	heavisider   rh  r   )r-   r/   r.   ak1ak2y_eval1y_eval2s          r1   test_no_overflow(TestAkima1DInterpolator.test_no_overflow  s    IIa%,,--bll1Q3.DD!!x8!!w7a&a&{{7#'')))){{7#''))))r:   r4   N)r5   r6   r7   r8   r  r  r  r  r  r  r  r  r  r  r  r  r9   r4   r:   r1   r  r  S  s@    $$&$&$2J&70A"8;(*r:   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)NrC   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  rA   r   r)   r  rE   r  Tr  c                     U" U5        g r   r4   )_r  r  s      r1   	worker_fn9test_complex.<locals>.test_concurrency.<locals>.worker_fn  s	    uIr:   )rK   rP  r   r"   )r-   r/   r.   r  r  r  s         r1   test_concurrency&test_complex.<locals>.test_concurrency  sN    KKAr"qDCR( 48	 	 I59r:   )rK   rL   rT   r  r   rv   )r  r/   r.   msgr  s        r1   rY  rY  
  s]     			"cA
ABA	BqDA
C	z	-q 
.
: 
.	-s   	A((
A6c                   P    \ 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)TestPPolyCommoni!  c                     UR                  SS/SS/SS//5      nUR                  / SQ5      n[        [        [        X#5        [        [        [        X#5        g )Nrq   r=  r)   rA   rF   r>  )r   rq   r*   )r   r+   rv   r   r   )r-   r  r  r/   s       r1   test_sort_checkTestPPolyCommon.test_sort_check$  sI    JJAAA/0JJ{#j%.j%.r:   c                     [        [        5         [        UR                  SS/5      UR                  SS/5      5        S S S 5        g ! , (       d  f       g = f)Nrq   r)   r   )r+   rv   r   r   r-   r  s     r1   test_ctor_cTestPPolyCommon.test_ctor_c*  s:    :&"**aV$bjj!Q&89 '&&s   /A
Ac                    [         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UR                  U5      UR                  U5      p4[        [        4 H  nU" US S 2S S2S	4   US S 5      nUR                  US S 2SS 2S	4   USS  5        U" US S 2SS 2S	4   USS  5      nUR                  US S 2S S2S	4   US S 5        U" XC5      n[        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        M     g )
N  rF   r   rE   rG   r)   rq   r   .)rK   randomseeduniquer  randr  r   r   r   r  r   r  r/   )	r-   r  orderr/   r  clspppp2pp3s	            r1   r  TestPPolyCommon.test_extend/  sk   
		tIIbeeArBIINN2$66:;<biinnU1Wc!fQh1559zz!}bjjm15>CQq"1"cz]AcrF+BIIa12s
mQrsV,a23naf-CJJqCRC~q"v.a)CBDD#%%(BDD#%%(CEE355)CEE355) "r:   c                 r   [         R                  R                  S5        UR                  SSS5      nUR	                  [         R                  R                  SS5      5      nUR                  SSS5      nUR	                  [         R                  R                  SS5      5      n[        [        4 H  nU" X25      nU" XT5      nU" X25      n	U	R                  XTSS  5        UR                  SSSS	S
9n
UR                  SSS5      n[        U" U
5      U	" U
5      5        [        U" U5      U	" U5      5        M     g )Nr  r   rq   r>  r)   rA   r=  r  F)endpoint)
rK   r  r  rP  r   r  r   r   r  r   )r-   r  r/   r  rR   c2r  pp1r  pp_combxi1xi2s               r1   test_extend_diff_orders'TestPPolyCommon.test_extend_diff_ordersG  s    
		tKK1a JJryy~~a+,[[Aq!ZZ		q!,-5>Ca)Cb+C!iGNN2!"v& ++aC%+8C++aC(CCHgcl3CHgcl3 "r:   c                 f   [         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UR                  U5      UR                  U5      p4[        [        4 H  nU" XC5      nU" US S 2S S2S4   US S 5      nUR                  US S 2SS 2S4   USS  5        U" US S 2SS 2S4   USS  5      nUR                  US S 2S S2S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   rF   rE      rq   r)   r   .)rK   r  r  sortuniformr  r!  r   r   r   r  r   r  r/   )	r-   r  r  r/   r  r  r  p1p2s	            r1   test_extend_descending&TestPPolyCommon.test_extend_descending`  sV   
		qGGBII%%aR01IINN519aggaj1na;zz!}bjjm15>CA	AQq"1"cz]AcrF+BIIa12s
mQrsV,Qq"#s{^QrsV,BIIa3B3naf-BDD!##&BDD!##&BDD!##&BDD!##& "r:   c           	         [         R                  R                  S5        UR                  [         R                  R	                  SSSSS5      5      nUR                  [         R
                  " [         R                  R	                  S5      5      5      nUR                  [         R                  R	                  SS	5      5      n[        [        4 H#  nU" X#5      nU" U5      R                  S
:X  a  M#   e   g )Nr  r   r   rA   r>  r?  r  rF   r=  )rF   r=  rA   r>  r?  )	rK   r  r  r   r  r  r   r   r!  )r-   r  r  r/   x_pr  r  s          r1   
test_shapeTestPPolyCommon.test_shapew  s    
		tJJryy~~aQ156JJrwwryy~~b123jj1-.5>CA	AS6<<?222 "r:   c           
      6   [         R                  R                  S5        [         R                  R                  SSSSS5      n[         R                  " [         R                  R                  S5      5      n[
        [        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   rA   r>  r?  r  ).r   r   r   r*   r4   r\  r]  皙?r   )rK   r  r  r  r  r   r   r!  rT   r+   rv   object)r-   r  r/   r  r  s        r1   test_shape_scalars"TestPPolyCommon.test_shape_scalars  s    
		tIINN1b!Q*GGBIINN2&'5>CAlOQ'A88AcF#r)))88Abhhsm,-333*aC:u2EV)TU "r:   c                 |   [         R                  R                  SSSSS5      n[         R                  " [         R                  R                  S5      5      n[         R                  R                  SS5      n[	        UR
                  X#U45      u  p#n[        [        4 H  nU" X#5      nS	 n[        S
XvU5        M     g )Nr   r   rA   r>  r?  r  rF   r=  c                     U" U5        g r   r4   )r  r$  xpps      r1   r  3TestPPolyCommon.test_concurrency.<locals>.worker_fn  s	    sr:   rE   )	rK   r  r  r  mapr   r   r   r"   )r-   r  r  r/   r  r  r$  r  s           r1   r   TestPPolyCommon.test_concurrency  s    IINN1b!Q*GGBIINN2&'iinnQ"

Q3K0	c5>CYF $B	3? "r:   c           
         [         R                  R                  S5        UR                  [         R                  " [         R                  R                  S5      5      5      nUR                  [         R                  R                  S5      S-  5      nUR                  U5      UR                  U5      pTUR                  [         R                  R                  S5      5      n[        [        4 Hq  nU" X25      U" XB5      U" XR5      pnS HQ  n[        UR                  U" Xk5      5      U	" Xk5      5        [        UR                  U" Xk5      5      U
" Xk5      5        MS     Ms     g )N90  r  )r   r   y      ?333333?rA   r   )
rK   r  r  r   r  rQ  rR  r   r   r   )r-   r  r/   r  c_rec_imr  r  r  p_rep_imnus               r1   test_complex_coef!TestPPolyCommon.test_complex_coef  s    
		uJJrwwryy//345JJryy''0I>?WWQZdjj))!,-5>CIs4|S\TA#
 3T#]C#
 3T#]C   "r:   c                 <   [         R                  R                  S5        [         R                  R                  SSSSSS5      nUR                  n[         R                  R                  S5      nUR                  U5      UR                  U5      pBS	 GHP  nUR                  US
-      nUR                  [         R                  " [         R                  R                  US
-   5      5      5      n[        [        4 H  nU" X'US9n	U	R                  R                  X5US-    US U -   X5S-   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MS     S H0  n[        [        4 H  n[        [        U40 [        UWUS9D6  M     M2     g )Nr#  rF   r=  rA   r>  r?  r   )rq   r)   r   rq   r)   rF   rq   rt   r)   )rI   r=  rA   r>  )r  r/   rs   )rK   r  r  r  r!  r   r  r   r   r  
derivativeantiderivativers   r+   rv   r   )r-   r  r  c_sr  rs   mr/   r  r  res
targ_shaper  s                r1   	test_axisTestPPolyCommon.test_axis  s   
		uIINN1aAq!,ggiiv&A

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

277299>>!A##678Au~4(ssyyCT!V$4s5Dz$ACQL$PPPPf $Z#))3c!D&'lB
yyJ... q$/::<q$/::1=q$/>>@q$/>>qACB 77aff,,,	C & !& "Du~j#KQT1JK & "r:   r4   N)r5   r6   r7   r8   r  r  r  r	  r  r  r  r  r)  r3  r9   r4   r:   r1   r  r  !  s8    /:
*042'.3V@ 
DLr:   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)TestPolySubclassingi  c                       \ rS rSrSrg)TestPolySubclassing.Pi  r4   Nr5   r6   r7   r8   r9   r4   r:   r1   Pr8        r:   r:  c                       \ rS rSrSrg)TestPolySubclassing.Bi  r4   Nr9  r4   r:   r1   Br=    r;  r:   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  rF   )r=  r)   )rK   r  r  r  r:  r>  )r-   r/   r  s      r1   _make_polynomials%TestPolySubclassing._make_polynomials  s^    
		tGGBII$$Q'(IIV$vva|TVVA\))r:   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         r1   test_derivative#TestPolySubclassing.test_derivative  se    '')AB;;",,...  !||s}},,,r:   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   rq   rF  )rK   r  r  r  r  r  r  r   r:  from_splinerC  )r-   r/   r.   splr  s        r1   test_from_spline$TestPolySubclassing.test_from_spline  s    
		tGGBEE!RYY^^B/234IINN3q6"QQVV$||tvv%%%r:   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_basisrC  r>  from_power_basis)r-   r  rD  r  bp1s        r1   test_conversions$TestPolySubclassing.test_conversions  sf    '')ff))"-}}&&&ff%%b)}}&&&r:   c                     / SQnS/S/S//nU R                   R                  X5      nUR                  U R                   :X  d   eg )Nr   rq   r)   rF   )r>  from_derivativesrC  )r-   r/   r.   rD  s       r1   test_from_derivatives)TestPolySubclassing.test_from_derivatives  sB    S1#sOVV$$Q*||tvv%%%r:   r4   N)r5   r6   r7   r8   r   r:  r   r>  r@  rG  rN  rT  rX  r9   r4   r:   r1   r6  r6    s3    E E *-&'&r:   r6  c                      \ rS rSrS rS rS r\" \S45      S 5       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45      S 5       r\" \S45      S 5       r\" \S4\S45      S 5       r\" \S45      S 5       r\" \S4\S45      S 5       r\" \S4\S45      \ " SSS 9S! 5       5       r!S" r"S# r#S$r$g%)&	TestPPolyi  c                    UR                  SS/SS/SS//5      nUR                  / SQ5      n[        X#5      n[        U" S5      UR                  S	UR                  S
95        [        U" S5      UR                  SUR                  S
95        g )Nrq   r=  r)   rA   rF   r>  r   r*   rq   333333?Q@r   ffffff?p=
ף@r   r   r   r   r-   r  r  r/   r  s        r1   test_simpleTestPPoly.test_simple  s}    JJAAA/0JJ{#!K#

+?rzz
 RScFBJJ?rzzJR	
r:   c                    UR                  SS/SS/SS//5      nUR                  / SQ5      n[        X#SS	9n[        U" S
5      UR                  SUR                  S95        [        U" S5      UR                  SUR                  S95        [        U" S
S5      UR                  SUR                  S95        [        U" SS5      UR                  SUR                  S95        g )Nrq   r=  r)   rA   rF   r>  r]  periodicr  g?r_  r   333333ӿra  g@gffffff@rb  rc  s        r1   test_periodicTestPPoly.test_periodic  s    JJAAA/0JJ{#!J/#

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

 	#q	2::k:#LM$
BJJ/B"**J$UVr:   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 )Nrq   r=  r)   rA   rF   r>  r]  )r   r\  r]  rg  r  rx  )rK   rT   r   ry  rz  rh  r   )r-   r  r/   r   rz  r   rj  s          r1   r|  TestPPoly.test_read_only  s    HHq!fq!fq!f-.HH[!xx&a
+&I )GG )GGaAT7D;;t$((**** 'r:   rootsc           	      D   S n[         R                  R                  S5      nSnS GHu  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
Xy-  n[         R                  " U
R                  U5      nX-  n[        UR                  X}U45      u  p}n[        XvSS9n[        UR                  US
S9UR                  US
S9SS9nUR                  UR	                  SSS5      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       Hy  u  nn[        UR                  UU45      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UR                  U5      SS9  GMx     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   $ )Nrq   rI   )rK   rL   rP   r$   )powerrE  kr>  s       r1   binom_matrix/TestPPoly.test_descending.<locals>.binom_matrix!  sR    		%!)$,,R3A		%!)$AaATrT4R4Z= r:   r   rF   rE   r  rG   rE   rq   r   r)   sizerI   Tr  rt   r  r  r  vIh%<=r   rA   r)   -q=)rK   r  RandomStater  r  diffrL   dotr  r   r   r   flipr   r-  r.  	integraterm  )r-   r  rr  rngrp  r0  r/   cahh_powersr>  capcdpcdparE  x_testpa_dpd_dpa_ipd_irD  rG  int_aint_droots_droots_as                              r1   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BJJ4IBAr$/Brwwrw+RWWQRW-@dSBZZCS 9:FBvJ6
?BvqM2fa=uE==?D==?DDL$v,UC
 $$&D$$&DCV412::1v.1Q*Q*u59Q$q' 147T!W3D%*, 5 hhjGhhjGGRWWW%5EBO r:   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 )Nr>  r)   rq   rF   r]  r^  rA   rA   r>  rA   r)   rq   r)   rF   )r?  r)   rq   r)   rF   )
rK   r  r  rT   r   r/   r!  r  r-  r.  )r-   r  r  r/   r  dpips          r1   test_multi_shapeTestPPoly.test_multi_shapeS  s   IINN1aAq)HH[!!KssyyAGG###ssyyAGG###v||qwwqr{***1%&,,0DDDD\\^ttzz_,,,ttzz_,,,r:   c                    [         R                  R                  S5        [         R                  " SS/SS/SS//[        S9n[         R                  " / S	Q5      n[
        R                  " UR                  U5      UR                  U5      5      n[        U" S
5      UR                  SUR                  S95        [        U" S5      UR                  SUR                  S95        g )Nr  rq   r=  r)   rA   rF   r>  r   r]  r^  r_  r`  ra  )
rK   r  r  rT   rg  r   construct_fastr   r   r   rc  s        r1   test_construct_fastTestPPoly.test_construct_fastc  s    
		tHHq!fq!fq!f-U;HH[!  A

1>#

+?rzz
 RScFBJJ?rzzJR	
r:   c                 "   [         R                  R                  S5      nUR                  SSS5      n[         R                  " [         R
                  SUR                  S5      S4   5      n[         R
                  S   n[        UR                  X4U45      u  pgn[        Xg5      n	UR                  [        X4U5      5      n
[        U	" U5      U
5        UR                  [        US S 2S S 2S4   XE5      5      n
[        U	" U5      S S 2S4   U
5        g )	Nr  rF   r      r   r   rq   )r^  r*   gQ?333333?)rK   r  rz  r  r  r  r   r   r   _ppoly_eval_1r   _ppoly_eval_2)r-   r  r  c_npx_npx_p_npr  r/   r  r  expecteds              r1   #test_vs_alternative_implementations-TestPPoly.test_vs_alternative_implementationsm  s    ii##D)xx2r"wwruuQa/01*+

T$89	c!K::mD?@#)::mDAqM4HI#q!th/r:   c                    [         R                  R                  S5      n[         R                  " [         R                  SUR                  S5      S4   5      nUR                  [        U5      5      n[        X4SS9u  pVnUR                  U5      UR                  U5      p[        R                  " XU45      n
[         R                  " SSS5      nUR                  U5      n[        U
" U5      UR                  [        XXg45      5      5        [        XU5      n[        R                  " U5      n[        U" U5      U" U5      5        S H?  n[        XXS9n[        R                  " U5      nUR                  UR                  :X  a  M?   e   g )	Nr  r   r   rq   rK  r  )NTFr  )rK   r  rz  r  r  r  r  r   r   r   rL  rP  r   r   r   ro   )r-   r  r  r/   r.   t_npr  rq  tr  r  xi_nprS  rG  pppextrapr  s                    r1   rN  TestPPoly.test_from_spline}  s9   ii##D)GGBEE!SXXb\1,-.HHSVqq)Azz$D!11ay)Aq#&ZZ2

5t+H IJ A!"B2' *Fa4A!!!$A==AMM111 *r:   c                    [         R                  R                  S5      n[         R                  " [         R                  SUR                  S5      S4   5      nUR                  [        U5      5      n[        X4SS9u  pVn[        UR                  U5      UR                  U5      U5      n[        R                  " U5      n	UR                  SSS5      n
[        U	" U
5      U" U
5      5        g rJ  )rK   r  rz  r  r  r  r  r   r   r   r   rL  rP  r   )r-   r  r  r/   r.   r  r  rq  rM  r  rS  s              r1   test_from_spline_2TestPPoly.test_from_spline_2  s    ii##D)GGBEE!SXXb\1,-.HHSV#abjjmRZZ]A6s#[[Ar"2B(r:   c                    [         R                  R                  S5        UR                  / SQ/5      R                  nUR                  / SQ/5      R                  nUR                  SS//5      R                  nUR                  SS/5      n[        X%5      n[        X55      n[        XE5      n[        UR                  5       R                  UR                  5        [        UR                  S5      R                  UR                  5        g )	Nr  )r=  rF   r)   rq   )r   r>  r)      r>  r   rq   r)   )	rK   r  r  r   r  r   r   r-  r  )	r-   r  r  dcddcr/   r  dppddpps	            r1   test_derivative_simple TestPPoly.test_derivative_simple  s    
		tJJ~&((ZZ(**jj5%.)*,,JJ1v1[BlS}))3551a(**DFF3r:   c                 F   [         R                  R                  S5      n[         R                  " [         R                  SUR                  S5      S4   5      nUR                  [        U5      5      n[        X4SS9u  pVnUR                  U5      UR                  U5      p[        R                  " XU45      n
[         R                  " SSS5      nUR                  U5      n[        SS5       H0  n[        U
" X5      UR                  [        XXg4U5      5      5        M2     g )Nr  r   r   rq   rK  r  rF   )rK   r  rz  r  r  r  r  r   r   r   rL  rP  r"  r   r   )r-   r  r  r/   r.   r  r  rq  r  r  r  r  rS  dxs                 r1   test_derivative_evalTestPPoly.test_derivative_eval  s    ii##D)GGBEE!SXXb\1,-.HHSVqq)Azz$D!11ay)Aq#&ZZ1+BBrJ

5tQS3T(UV r:   c                    [         R                  R                  S5      n[         R                  " [         R                  SUR                  S5      S4   5      nUR                  [        U5      5      n[        X4SSS9u  pVnUR                  U5      UR                  U5      p[        R                  " XU45      n
UR                  SSS5      n[        SS5       H,  n[        U
" X5      U
R                  U5      " U5      S	U 3S
9  M.     g )Nr  r   r   rq   rA   rF  rq  r  rE   dx=r@  )rK   r  rz  r  r  r  r  r   r   r   rL  rP  r"  r   r-  )r-   r  r  r  y_npr  r  rq  r  r  r  rS  r  s                r1   rG  TestPPoly.test_derivative  s    ii##D)wwruuQa/01xxD	"tQ!4Azz$D!11ay)[[As#2,BBrJb(9"(=RDzR r:   c           
         [        UR                  S//5      UR                  SS/5      5      n[        UR                  5       R                  [        UR                  S/S//5      UR                  SS/5      5      R                  5        [        UR                  5       R
                  [        UR                  S/S//5      UR                  SS/5      5      R
                  5        g )Nr   r   rq   )r   r   r   r.  r  r/   )r-   r  r  s      r1   test_antiderivative_of_constant)TestPPoly.test_antiderivative_of_constant  s    "**rdV$bjj!Q&89  "**qcA3Z("**aV*<=??	
 	  "**qcA3Z("**aV*<=??	
r:   c                 6   [        UR                  SS//5      UR                  / SQ5      5      nUR                  5       n[        UR                  UR                  SS/SS//UR
                  S95        [        UR                  UR                  / SQUR
                  S95        [        UR                  SS5      UR                  S	UR
                  S95        [        UR                  U" S5      U" S5      -
  5      UR                  S	UR
                  S95        g )
Nr   r*   r   rq   r   r   )rC   rq   r)   r)   r   )	r   r   r.  r   r  r   r/   r   r~  )r-   r  r  qs       r1   #test_antiderivative_regression_4355-TestPPoly.test_antiderivative_regression_4355  s    "**r3i[)2::i+@ARZZ!SAq6(:"**ZMNRZZ2::ZFGAq)2::c:+LM

1Q4!A$;/

3bjj
9	;r:   c                    UR                  / SQ/ SQ/UR                  S9R                  nUR                  / SQ/ SQ/UR                  S9R                  nUR                  / SQ/ SQ/UR                  S9R                  nUR                  / SQUR                  S9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 )
N)rF   r)   rq   )r   r         ?r   )rq   rq   rq   r   )r   r   r        ?)      ?gUUUUUU?r*   r   r   )r   r   g      ?r  g*?)r   r  rq   r)   )r   r   r  r   r.  r   r/   r  )
r-   r  r  iciicr/   r  ippiippiipp2s
             r1   test_antiderivative_simple$TestPPoly.test_antiderivative_simple  s    JJ	>2"**JEGG ZZ'?@

ZSUU jj/JL!zz  
 ! 	 JJ|2::J61[!  #""$q!&#%%(		355)r:   c                    [         R                  R                  S5      n[         R                  " SSS5      S-  nUR	                  [        U5      5      n[        X4SSS9u  pVnUR                  U5      UR                  U5      p[        R                  " XU45      n
[        SS5       H  nU
R                  U5      nUR                  U5      n[        U
R                  UR                  5        [        U5       Hh  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U SU 3S9  Mj     M     g )Nr  r   rq   rG   r)   rA   r  rE   rw  rI   r   r  z k=)r   r   )rK   r  rz  rP  r  r  r   r   r   rL  r"  r.  r-  r   r  r/   )r-   r  r  r  r  r  r  rq  r  r  r  r  r  r  rr  s                   r1   !test_antiderivative_vs_derivative+TestPPoly.test_antiderivative_vs_derivative  s>   ii##D){{1a$a'xxD	"tQ!4Azz$D!11ay)2,B##B'C ..$CBDD#%%( 2YnnQ'UU3BZ<1q5#%%)*;;ab	NCMB4sSTRUFV  r:   c                    [         R                  R                  S5      n[         R                  " [         R                  SUR                  S5      S4   5      nUR                  [        U5      5      n[        X4SSS9u  pVnUR                  U5      UR                  U5      p[        R                  " XU45      n
[        SS5       Hz  nU
R                  U5      n[        XVU4U5      u  pn[         R                  " SSS5      nUR                  U5      n[        U" U5      UR                  [!        UXU45      5      S	S
9  M|     g )Nr  r   r   rq   rA   r  rE   r  r   r   )rK   r  rz  r  r  r  r  r   r   r   rL  r"  r.  r   rP  r   r   )r-   r  r  r  r  r  r  rq  r  r  r  r  r  t2_npc2_npk2r  rS  s                     r1   test_antiderivative_vs_spline'TestPPoly.test_antiderivative_vs_spline  s
   ii##D)wwruuQa/01xxD	"tQ!4Azz$D!11ay)2,B##B'C)4q/2>E"KK1c*EE"BCGRZZeeB=O0P%Q!%' r:   c                 B   UR                  / SQ/ SQ/5      R                  nUR                  / SQUR                  S9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)   rq   r)   r)   )r)   rq   rF   rF   r]  r   gA?g_p   ?g:0yE>r   )r   r  r   r   r.  r   r-  r  )r-   r  r  r/   r  r  r  s          r1   test_antiderivative_continuity(TestPPoly.test_antiderivative_continuity$  s}    JJl3466JJ{"**J5!K 	::TB ]]_acc"r:   c                    [         R                  R                  S5      n[         R                  " [         R                  SUR                  S5      S4   5      nUR                  [        U5      5      n[        X4SSS9u  pVnUR                  U5      UR                  U5      p[        R                  " XU45      n
Su  pU
R                  X5      nU
R                  5       n[        X" U5      U" U5      -
  SS	9  [        XR                  [        XXVU45      UR                  S
9SS	9  Su  pU
R                  XSS9n[        X" U5      U" U5      -
  SS	9  UR!                  UR#                  U
R                  XSS95      5      (       d   eg )Nr  r   r   rq   rA   r  )r^  ?Fcheck_0dr   )rh  r  Tr  )rK   r  rz  r  r  r  r  r   r   r   rL  r~  r.  r   r   r   r   r   )r-   r  r  r  r  r  r  rq  r  r  r  rD  rG  igr  s                  r1   test_integrateTestPPoly.test_integrate2  sP   ii##D)wwruuQa/01xxD	"tQ!4Azz$D!11ay)\\!!CFSVOe<

6!Q8


K	

 \\!D\1CFSVOe<vvbhhr||Ae|DEFFFFr:   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rq   r)   r=  rC   r   rB          r   rx  rq   r=  )rK   rT   ry  rz  r   r~  rh  r   )r-   r/   r  rz  r:  rj  s         r1   test_integrate_readonly!TestPPoly.test_integrate_readonlyK  s    HHYHHr2hc
RIBx@A&I )GGaA;;q!$D;;t$((**** 'r:   c           	      :   [         R                  " / SQ5      n[         R                  " SS/SS/SS/SS//5      nUR                  U5      UR                  U5      pT[        XTSS9nUR	                  5       nUR                  U" S	5      U" S
5      -
  UR
                  S9n[        UR                  S
S	5      U5        [        UR                  SS5      U5        [        UR                  SS5      UR                  SU-  5      5        [        UR                  SS5      UR                  U" S5      U" S5      -
  UR
                  S95        [        UR                  SS5      UR                  U" S5      U" S
5      -
  U" S	5      -   U" S5      -
  UR
                  S95        [        UR                  SS5      UR                  U" S5      U" S
5      -
  U" S	5      -   U" S5      -
  UR
                  S95        [        UR                  SS5      UR                  U" S5      U" S
5      -
  U" S	5      -   U" S5      -
  S	U-  -   UR
                  S95        [        UR                  SS5      UR                  U" S5      U" S5      -
  UR
                  S95        [        UR                  SS5      UR                  U" S5      U" S5      -
  UR
                  S95        [        UR                  SS5      UR                  U" S5      U" S5      -
  SU-  -
  UR
                  S95        g )Nr  rC   r   rB   r  r   rg  r  r=  rq   r   r  r  r)   r   rN  r  rA         /@r  r   rI   rF   )rK   rT   r   r   r.  r   r   r~  )	r-   r  r  r  r/   r  r:  I
period_ints	            r1   test_integrate_periodic!TestPPoly.test_integrate_periodicW  s   xx	"xx"bC:Cy2r(CDzz$D!11!J/ZZ!qt2::Z>
Aq):6C,j9C,bjjZ.HIC-

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

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

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

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

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

1Q4!A$;Z#?rzz
R	Tr:   c           
      |   [         R                  " SSS5      S-  n[         R                  " SU-  5      n[        X#SSS9u  pEnUR	                  U5      UR	                  U5      p[
        R                  " XxU45      n	U	R                  5       n
XS:  U
S	:*  -     n
[        XR	                  [        XEU45      5      S
S9  g )Nr   rq   r'   r)   rG   rF   r  gV瞯Ҽg     ?r   r   )
rK   rP  r   r   r   r   rL  rm  r   r   )r-   r  r  r  r  r  rq  r  r  r  r  s              r1   
test_rootsTestPPoly.test_rootsy  s    {{1a$a'vvbg qA6Qzz$D!11ay)HHJI~!y.12::fd!_&=>UKr:   c           	      "   UR                  SS/SS/SS//UR                  S9R                  nUR                  / SQUR                  S9n[        X#5      n[	        UR                  5       UR                  SSUR                  S/UR                  S95        Sn[        U5      nUS	S S 24==   U-  ss'   UR                  U5      n[        Xc5      n[	        UR                  U5      UR                  SSUR                  S/UR                  S95        g )
NrI   r  r   r   )r   r  r  r   r  g333333?rB   rq   )	r   r   r  r   r   rm  r   r	   solve)r-   r  r  r/   r  constc1r  s           r1   test_roots_idzeroTestPPoly.test_roots_idzero  s     JJT
QFRJ7rzzJJLLJJ)J<1[HHJJJc266:6bjjJI	

 q!
1a4EZZ^BlIIeJJc266:6bjjJI	
r:   r  c           	         S/S//nSS/n[        UR                  U5      UR                  U5      5      n[        UR                  5       UR                  SUR                  /UR
                  S95        [        UR                  S5      UR                  SUR                  /UR
                  S95        [        UR                  S5      UR                  / UR
                  S95        SS/SS//n/ SQn[        UR                  U5      UR                  U5      5      n[        UR                  5       UR                  SUR                  SUR                  /UR
                  S95        [        UR                  S5      UR                  SUR                  SUR                  /UR
                  S95        [        UR                  S5      UR                  / UR
                  S95        g )Nr   rq   r   r   )r   r   r   rm  r   r   r  rc  s        r1   test_roots_all_zeroTestPPoly.test_roots_all_zero  ss    S1#JF"**Q-A/	2::q"&&k:#LM
BJJ266{"**J$MN
BJJrJ$DEVaV"**Q-A/GGIrzz1bffa"8

zK	
 	GGAJ

Arvvq"&&#9
L	
 	
BJJrJ$DEr:   c                 r   UR                  / SQ/ SQ/UR                  S9R                  nUR                  / SQUR                  S9n[        X#5      n[	        UR                  5       UR                  SS/UR                  S95        [	        UR                  SS9UR                  S/UR                  S95        g )	N)rq   r   rI   )rI   r   r   r   r   g       rC   Fr  )r   r   r  r   r   rm  r-   r  r  r/   r  s        r1   test_roots_repeatedTestPPoly.test_roots_repeated  s     JJ
J/rzzJBDDJJzJ41[
BJJc{"**J$MNHHH'SE)L	
r:   c                     UR                  S/S//UR                  S9R                  nUR                  / SQUR                  S9n[        X#5      n[	        UR                  5       UR                  S/UR                  S95        [	        UR                  SS9UR                  / UR                  S95        [	        UR                  S5      UR                  S/UR                  S95        [	        UR                  SSS9UR                  / UR                  S95        [	        UR                  S5      UR                  / UR                  S95        [	        UR                  SSS9UR                  / UR                  S95        g )	Nrq   rI   r   r]  r*   F)discontinuityr   )r   r   r  r   r   rm  r  r  s        r1   test_roots_discontTestPPoly.test_roots_discont  s5    JJbT{"**J577JJ{"**J51[
BJJuBJJJ$GHHH5H)2::b

:+K	

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

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

2RZZ
0P	
r:   Tz)solve returns object array for c.ndim > 2)np_onlyreasonc                 x   [         R                  R                  S5      nSnS GH|  n[        SS5       GHg  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UR                  U5      UR                  U5      p[        X5      n
S
[        UR                  5       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[        UU-
  U-  [         R                  " S
5      SUSS9  M     M     M     GMj     GM     US:  d   [        U5      5       eg )Nr  r   rx  r  rE   rG   r)   rq   rF   rC   F)r  ro   r  )r(  ro   (z) r = r   )r   r   r  r  )rK   r  rz  r"  r  r  r  r  r   r   rg  r  rv  reprr   )r-   r  r  numro   r  r  r  r/   r  r  r.   r  ijrrvalcmpvalr  s                      r1   test_roots_randomTestPPoly.test_roots_random  s    ii##D)(Kq"yyq"sxx|*;R'?!@A%'3t9Q;1==Azz$'D)911[uSZZ\23A%[QA"1X!&qA!"Q3B!ww{ #ww&(&Eae&L)+B18C*EEFqU*L()+tBxj&I /Q&0@"**S/598;!P "* & 4 & ). Sy#$s)#yr:   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  rq   r      rF   )rq   r)   rq   r   r   ignore)r  g|=r   )rK   r  rz  r"  r  r  r!  complexr    _croots_poly1r   r   abserrstateravelr   
zeros_like)	r-   r  rq  r  r.   wr1  cresr  s	            r1   test_roots_crootsTestPPoly.test_roots_croots  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UR                  U5      UR                  U5      pTS GH(  n[	        XEUS9nUR                  5       nUR                  5       n	USL Ga  UR                  UR                  U" UR                  SS/5      5      5      5      (       d   eUR                  UR                  U	" UR                  SS/5      5      5      5      (       d   eUR                  UR                  U" UR                  SS/5      5      5      5      (       d   e[        U5      (       d6  [        UR                  5       UR                  S	/UR                  S
95        GM4  GM7  [        U" SS/5      UR                  SS/UR                  S
95        UR                  UR                  U	" UR                  SS/5      5      5      5      (       a   eUR                  UR                  U" UR                  SS/5      5      5      5      (       a   e[        U5      (       a  GM  [        UR                  5       UR                  S	S/UR                  S
95        GM+     g )Nr   r   rq   TFNr  F皙皙?r   r   gGz?gzGʿr   )rK   rT   r  r   r   r-  r.  r   r   r   r   rm  r   r   any)
r-   r  r  r  r  r/   ro   r  pp_dpp_is
             r1   r  TestPPoly.test_extrapolate_attr  s   xx%''xxAzz$D!11.Kq5B==?D$$&De#vvbhhr"**dC[*A'BCDDDDvvbhhtBJJc{,C'DEFFFFvvbhhtBJJc{,C'DEFFFFr{{#
BJJuBJJJ$G #
  c{OJJ(32::JF 66"((4

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

D#;0G+H"IJJJJr{{#
BJJT{"**J$M+ /r:   r4   N)%r5   r6   r7   r8   rd  ri  r|  r   r   r  r  r  r  rN  r  r  r  rG  r  r  r  r  r  r  r  r  r  r  r  r   r  r  skip_xp_backendsr  r"  r  r9   r4   r:   r1   r[  r[    sv   
W+ w'(1C )1Cf- 
0 20
)4WS

;*24'"#G2
+ TD w'(
L )
L w'(
 )
. w'%)9:F ;F( w'(
 )
 w'%)9:
 ;
* w'%)9:d+VW$ X ;$>E<r:   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)	TestBPolyi7  c                     UR                  SS/5      nUR                  S//5      n[        X25      n[        U" S5      UR                  SUR                  S95        g )Nr   rq   rF   r\  r}   r   r   r   r   r   r-   r  r/   r  rD  s        r1   rd  TestBPoly.test_simple9  sN    JJ1vJJu1[3Bbjj!ABr:   c                     UR                  SS/5      nUR                  S/S//5      n[        X25      n[        U" S5      UR                  SUR                  S95        g )Nr   rq   rF   r\  ggfffff@r   r0  r1  s        r1   test_simple2TestBPoly.test_simple2?  sR    JJ1vJJaSz"1[3N"**!MNr:   c                     UR                  SS/5      nUR                  S/S/S//5      n[        X25      n[        U" S5      UR                  SUR                  S95        g )Nr   rq   rF   r=  r]  g433333@r   r0  r1  s        r1   test_simple3TestBPoly.test_simple3E  s[    JJ1vJJaS1#'1[sGJJ@

JS	
r:   c                     UR                  SS/5      nUR                  S/S/S/S//5      n[        X25      n[        U" S5      UR                  SUR                  S95        g )Nr   rq   r)   r^  g:On?r   r0  r1  s        r1   test_simple4TestBPoly.test_simple4N  sj    JJ1vJJaS1#s+,1[3

 (. 68ZZ # A	
r:   c                     UR                  SS/5      nUR                  S/S/S/S/S//5      n[        X25      n[        U" S5      UR                  SUR                  S95        g )Nr   rq   r   r)   r^  g	h"l@r   r0  r1  s        r1   test_simple5TestBPoly.test_simple5Y  sm    JJ1vJJaS1#sQC011[3

 &( 02zz	 # ;	
r:   c                    UR                  / SQ5      nUR                  SS/SS/SS//5      n[        X2SS9n[        U" S5      UR                  SUR                  S	95        [        U" S
5      UR                  SUR                  S	95        [        U" SS5      UR                  SUR                  S	95        [        U" S
S5      UR                  SUR                  S	95        g )Nr   rq   rF   rF   r   r)   rg  r  g333333@gHzG?r   g[(\?rq   r`  r0  r1  s        r1   ri  TestBPoly.test_periodice  s    JJy!JJAAA/01Z03Jbjj!IJ4"**^2::*"NO3
BJJxrzzJ$JK4RZZ2::Z%NOr:   c           	         [         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[        UR                  XVU45      u  pn
[        XS
S9n[        UR                  U
S	S9UR                  US	S9S
S9nUR                  UR	                  SSS5      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`     GM     g )Nr   rF   rt  rE   rq   r&  r\  ru  rI   Tr  rt   r  r  r  rw  r   rx  ry  )rK   r  rz  r  r  r{   r   r   r   r}  r   r-  r.  r~  )r-   r  r  rp  r0  r  ca_npcd_npr/   r  r  r  rE  r  r  r  r  r  rD  rG  r  r  s                         r1   r  TestBPoly.test_descendingq  s   ii##A&A773;;q"a!e45DKKcAK?E$B$K$$&EBJJe(<=IA2r$/Brwwrw+RWWQRW-@dSBZZCS 9:FBvJ6
?BvqM2fa=uE==?D==?DDL$v,UC
 $$&D$$&DCV41Q*Q*u59Q$q' 147T!W3D%*,	 53 r:   c                    [         R                  R                  S5      nUR                  SSSSS5      n[         R                  " / SQ5      nUR                  U5      UR                  U5      pe[        XV5      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  r>  r)   rq   rF   r]  r^  rA   r  r  )rK   r  rz  r  rT   r   r   r/   r!  r  r-  )	r-   r  r  r  r  r  r/   r  r  s	            r1   r  TestBPoly.test_multi_shape  s   ii##D)xx1aA&xx$zz$D!11!KssyyAGG###ssyyAGG###v||qwwqr{***!Q &&&17712;*>>>>\\^ttzz_,,,r:   c           	         UR                  SS/5      nUR                  S/S/S//5      n[        X25      nSnUS-  n[        U" U5      UR                  SSU-
  -  SU-
  -  SU-  SU-
  -  -   SU-  U-  -   UR                  S95        g )Nr   r)   rF   rq   r=  r\  r   r0  )r-   r  r/   r  rD  xvalrF  s          r1   test_interval_lengthTestBPoly.test_interval_length  s    JJ1vJJaS1#'1[1HtHJJqAaCy!A#q!A#6Qq@

JS	
r:   c                    UR                  / SQ5      nUR                  SS/SS/SS//5      n[        X25      n[        U" S5      UR                  SUR                  S95        [        U" S5      UR                  S	UR                  S95        g )
Nr@  rF   r   r)   r  gGzG?r   333333?rA  r0  r1  s        r1   test_two_intervalsTestBPoly.test_two_intervals  sx    JJy!JJAAA/01[3Krzz!JK3N"**!MNr:   c                    UR                  SS/UR                  S9nUR                  S/S/S//UR                  S9n[        X25      nS GH  n[        X2US9nUR                  5       nUS	L a~  UR	                  UR                  U" UR                  S
S/5      5      5      5      (       d   eUR	                  UR                  U" UR                  S
S/5      5      5      5      (       d   eM  UR                  UR                  U" UR                  S
S/5      5      5      5      (       a   eUR                  UR                  U" UR                  S
S/5      5      5      5      (       d  GM   e   g )Nr   r)   r   rF   rq   r=  r%  r  Fr&  g @)r   r   r   r-  r   r   r(  )r-   r  r/   r  rD  ro   bp_ds          r1   r  TestBPoly.test_extrapolate_attr  s0   JJ1vRZZJ0JJaS1#bjjJ91[.Kq5B==?De#vvbhhr"**dC[*A'BCDDDDvvbhhtBJJc{,C'DEFFFF66"((2bjj$.E+F"GHHHH66"((4

D#;0G+H"IJJJJ /r:   r4   N)r5   r6   r7   r8   rd  r4  r7  r:  r=  ri  r  r  rL  rP  r  r9   r4   r:   r1   r.  r.  7  s?    CO
	



P",H-	
OKr:   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                    UR                  / SQ5      nUR                  SS/SS/SS//5      n[        X25      nUR                  5       n[        U" S5      UR                  SUR                  S95        [        U" S5      UR                  S	UR                  S95        [        UR                  S
 Vs/ s H  od" SU5      PM     sn5      UR                  / SQUR                  S95        [        UR                  S
 Vs/ s H  od" SU5      PM     sn5      UR                  / SQUR                  S95        g s  snf s  snf )Nr@  rF   r   r)   r  rB  r   rO  r`  rq   r)   rF   )rB  r   rC   )r`  r   r   )r   r   r-  r   r   r  )r-   r  r/   r  rD  bp_derr(  s          r1   rG  !TestBPolyCalculus.test_derivative  s   JJy!JJAAA/01[sRZZ

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

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

<rzz
B	
 "C "Cs   1D6=D;c                    [         R                  R                  S5      nSu  p4[         R                  " UR                  U5      5      nUR                  XCS-
  45      nUR	                  U5      UR	                  U5      pV[        Xe5      n[        R                  " U5      n[        U5       HT  n	UR                  5       nUR                  5       nUR                  US   US   S5      n
[        U" U
5      U" U
5      5        MV     g Nr  rA   r   rq   r   rI      )rK   r  rz  r  r   r   r   rQ  r"  r-  rP  r   )r-   r  r  r0  rq  r/   r  rD  r  dr  s              r1   test_derivative_ppoly'TestBPolyCalculus.test_derivative_ppoly  s    ii##D)GGCJJqM"JJQ3x zz!}bjjm11[''+qABB++adAbE2.CBsGRW-	 r:   c                    [         R                  R                  S5      nSu  p4[         R                  " UR                  U5      5      nUR                  XCS-
  45      nUR	                  5       US-  4 H  nUR                  U5      UR                  U5      p[        X5      n
UR                  U	S   U	S   S5      n[        U5       H*  n[        U
" X5      U
R                  U5      " U5      5        M,     M     g )Nr  r]  rq   rO  r   rI   r^  )rK   r  rz  r  r{   r   r   rP  r"  r   r-  )r-   r  r  r0  rq  r  r  cc_npccr/   rD  r  r  s                r1   test_deriv_inplace$TestBPolyCalculus.test_deriv_inplace  s    ii##D)wwszz!}%zz1c(# iik4?3EJJu%rzz$'7rB++adAbE2.C1X3
BMM!,<S,AB 	 4r:   c           
      <   UR                  / SQ5      nUR                  SS/SS//5      n[        X25      nUR                  5       nUR                  SSSUR                  S9n[        U" U5      UR                  US:  US-  S-  S	U-  US-  S-
  -  S
-   5      SSS9  g )Nr@  r   rq   rF   r   r   r)   rB   r*   g      ?ry  r   r   )r   r   r.  rP  r   r   where)r-   r  r/   r  rD  bixxs          r1   r  ,TestBPolyCalculus.test_antiderivative_simple  s     JJy!JJAA'(1[ [[Ar[42aQ),rRUQY)?$)FH"	0r:   c                    [         R                  R                  S5      nUR                  [         R                  " UR                  S5      5      UR
                  S9nUR                  UR                  S5      UR
                  S9n[        XC5      nU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   r   r=  rE   r)   rF   r   rI   r  ry  rh  )rK   r  rz  r   r  r   r   rP  r   r.  r-  r-   r  r  r/   r  rD  rk  s          r1   test_der_antider"TestBPolyCalculus.test_der_antider  s    ii##D)JJrwwszz"~.bjjJAJJszz-0

JC1[[[1quc*))+668<2U	8r:   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   rn  r   rI   rE   r)   ry  rh  )
rK   r  rz  r  r   r   rQ  rP  r   r.  )r-   r  r/   r  rD  r  rk  s          r1   test_antider_ppoly$TestBPolyCalculus.test_antider_ppoly  s    ii##D)GGCJJrN#JJ}%1[''+[[1qub)))!,R0))!,R0u5	Jr:   c                    [         R                  R                  S5      nUR                  [         R                  " UR                  S5      5      UR
                  S9nUR                  UR                  S5      UR
                  S9n[        XC5      R                  5       nUR                  SS n[        U" US-
  5      U" US-   5      SSS	9  g )
Nr  r   r   r=  rE   rq   rI   r   ry  rh  )
rK   r  rz  r   r  r   r   r.  r/   r   ro  s          r1   test_antider_continuous)TestBPolyCalculus.test_antider_continuous!  s    ii##D)JJrwwszz"~.bjjJAJJszz'*"**J=1['')TT!BZ2:2:U	@r:   c                    [         R                  R                  S5      n[         R                  " UR                  S5      5      nUR                  S5      nUR	                  U5      UR	                  U5      pC[        XC5      n[        R                  " U5      n[        UR                  SS5      UR                  SS5      SSSS9  g )	Nr  r   rv  r   rq   ry  F)r   r   r  )
rK   r  rz  r  r   r   r   rQ  r   r~  )r-   r  r  r/   r  rD  r  s          r1   r   TestBPolyCalculus.test_integrate+  s    ii##D)GGCJJrN#JJwzz!}bjjm11[''+Q*Q*UU	Tr:   c                    UR                  S//UR                  S9nUR                  SS/UR                  S9n[        X#5      n[        UR	                  SS5      UR                  SUR                  S9SSS9  [        X#SS	9nUR                  UR	                  SS5      5      (       d   e[        UR	                  SSS
S	9UR                  SUR                  S9SSS9  g )Nrq   r   r   r)   rB   r   F)r   r  r  T)r   r   r   r   r~  r   )r-   r  r  r/   rG  b1s         r1   test_integrate_extrap'TestBPolyCalculus.test_integrate_extrap5  s    JJuBJJJ/JJ1vRZZJ0!K 	Aq)2::b

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

2RZZ
8uu	Vr:   c           	      |   UR                  / SQ5      nUR                  SS/SS/SS/SS//5      n[        R                  " [        X25      SS9nUR	                  5       nU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      UR                  SU-  5      5        [        UR                  SS5      UR                  U" S5      U" S5      -
  5      5        [        UR                  SS5      UR                  U" S5      U" S
5      -
  U" S	5      -   U" S5      -
  5      5        [        UR                  SS5      UR                  U" S5      U" S
5      -
  U" S	5      -   U" S5      -
  5      5        [        UR                  SS5      UR                  U" S5      U" S
5      -
  U" S	5      -   U" S5      -
  S	U-  -   5      5        [        UR                  SS5      UR                  U" S5      U" S5      -
  5      5        [        UR                  SS5      UR                  U" S5      U" S5      -
  5      5        [        UR                  SS5      UR                  U" S5      U" S5      -
  SU-  -
  5      5        g )Nr  rC   r   rB   r  r   rg  r  r=  rq   r  r  r  r)   r   rN  r  rA   r  r  r   rI   rF   r  )r   r   rR  r   r.  r   r~  )r-   r  r/   r  r:  r  r  s          r1   r  )TestBPolyCalculus.test_integrate_periodicD  s9   JJy!JJR3*r3i"bBC""5;JGZZ!qt,
Aq):6C,j9C,bjjZ.HIC-rzz!C&1S6//JKC+RZZ!qtad8JQsV8S-TUHf5

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

1Q4!A$;1#5##>Z#OP	R 	Ar*BJJqtad{,CDB,bjj1!.EFAs+RZZ!qta*n8T-UVr:   c                 b   UR                  S//5      nUR                  SS/5      n[        X#5      nU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 )Nrq   r   r^  rI   ry  rh  )r   r   rP  r   r-  r.  )r-   r  r  r/   rG  rk  s         r1   test_antider_neg"TestBPolyCalculus.test_antider_neg\  s    JJuJJ1v!K[[Ar"R(,a.>.>.@.D"	0Q+Q-=-=b-A"-E"	0r:   r4   N)r5   r6   r7   r8   rG  r`  re  r  rp  rs  rw  r  r}  r  r  r9   r4   r:   r1   rV  rV    s?    
 ."C0(8
J@TVW00r:   rV  c                   ,    \ rS rSrS rS rS rS rSrg)TestPolyConversionsij  c                 R   UR                  / SQ5      nUR                  SS/SS/SS//5      n[        X25      n[        R                  " U5      n[        R                  " U5      nUR                  SS/5      n[        U" U5      U" U5      5        [        U" U5      U" U5      5        g )	Nr@  rF   r)   rq   r   r=  r\  ffffff?)r   r   r   rR  rQ  r   )r-   r  r/   r  r  rD  r  xvs           r1   test_bp_from_pp#TestPolyConversions.test_bp_from_ppl  s    JJy!JJAAA/01[##B'((,ZZc
#22'2B(r:   c                    [         R                  R                  S5      nSu  p4UR                  [         R                  " UR                  U5      5      5      nUR                  UR                  XCS-
  45      5      n[        Xe5      n[        R                  " U5      n[
        R                  " U5      n	UR                  US   US   S5      n
[        U" U
5      U" U
5      5        [        U" U
5      U	" U
5      5        g r\  )rK   r  rz  r   r  r   r   rR  rQ  rP  r   )r-   r  r  r0  rq  r/   r  r  rD  r  r  s              r1   test_bp_from_pp_random*TestPolyConversions.test_bp_from_pp_randomw  s    ii##D)JJrwwszz!}-.JJszz1c(+,1[##B'((,[[1qub)22'2B(r:   c                 v   UR                  / SQUR                  S9nUR                  SS/SS/SS//UR                  S9n[        X25      n[        R                  " U5      n[        R
                  " U5      nUR                  SS/5      n[        U" U5      U" U5      5        [        U" U5      U" U5      5        g )	Nr@  r   rF   rq   r=  r)   r\  r  )r   r   r   r   rQ  rR  r   )r-   r  r/   r  rD  r  rS  r  s           r1   test_pp_from_bp#TestPolyConversions.test_pp_from_bp  s    JJy

J3JJAAA/rzzJB1[''+$$R(ZZc
#22'2B(r:   c                    UR                  / SQUR                  S9nUR                  SS/SS/SS//UR                  S9n[        X25      n[        [        5         [        R
                  " U5        S S S 5        [        X25      n[        [        5         [        R                  " U5        S S S 5        g ! , (       d  f       NH= f! , (       d  f       g = f)Nr@  r   rF   rq   r=  r)   )r   r   r   r+   	TypeErrorrQ  r   rR  )r-   r  r/   r  r  rD  s         r1   test_broken_conversions+TestPolyConversions.test_broken_conversions  s    JJy

J3JJAAA/rzzJB1[9%&&r* & 1[9%""2& &%	 &% &%s   B3C3
C
Cr4   N)	r5   r6   r7   r8   r  r  r  r  r9   r4   r:   r1   r  r  j  s    	))	)
'r:   r  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           
          [         R                  " SSUR                  S/UR                  S9UR                  S/UR                  S95      n[	        X!R                  SS/UR                  S95        g )Nr   rq   r)   r   rF   rB   r}   r   _construct_from_derivativesr   r   r   )r-   r  r  s      r1   test_make_poly_1)TestBPolyFromDerivatives.test_make_poly_1  s`    ..q"**aS

*3RZZ2::Z5V
 	JJBxrzzJBCr:   c           
         [         R                  " SSUR                  SS/UR                  S9UR                  S/UR                  S95      n[	        X!R                  / SQUR                  S95        [         R                  " SSUR                  SS/UR                  S9UR                  S/UR                  S95      n[	        X1R                  / SQUR                  S95        [         R                  " SSUR                  S/UR                  S9UR                  SS/UR                  S95      n[	        XAR                  / SQUR                  S95        g )	Nr   rq   r   )r   r   r   r)   rF   )rB   r  r   )rB   g      r   r  r-   r  r  r  c3s        r1   test_make_poly_2)TestBPolyFromDerivatives.test_make_poly_2  s   ..q"**aV2::*6JJs"**J-
 	JJ|2::JFG ..q"**aV2::*6JJs"**J-
 	JJ~RZZJHI ..q"**aS

*3JJ1vRZZJ0
 	JJ~RZZJHIr:   c           
         [         R                  " SSUR                  / SQUR                  S9UR                  S/UR                  S95      n[	        X!R                  / SQUR                  S95        [         R                  " SSUR                  S/UR                  S9UR                  / SQUR                  S95      n[	        X1R                  / SQUR                  S95        [         R                  " SSUR                  SS	/UR                  S9UR                  SS
/UR                  S95      n[	        XAR                  / SQUR                  S95        g )Nr   rq   rX  r   r=  )r   竪?g@r4  )r=  r)   rF   )r   gUUUUUU	@g
@r4  r)   rF   )r   r  r}   r4  r  r  s        r1   test_make_poly_3)TestBPolyFromDerivatives.test_make_poly_3  s   ..q"**Ybjj*9JJs"**J-
 	JJ'<BJJJOP ..q"**aS

*3JJy

J3
 	JJ'=RZZJPQ ..q"**aV2::*6JJ1vRZZJ0
 	JJ'9JLMr:   c                 (   [         R                  R                  S5      nUR                  [         R                  SUR                  S5      4   5      nUR                  [         R                  SUR                  S5      4   5      n[
        R                  " SSX45      n[        US S 2S 4   UR                  SS/UR                  S95      n[        S5       H9  n[        U" S5      X7   SS	9  [        U" S
5      XG   SS	9  UR                  5       nM;     g )Nr#  r   rA   rq   r   r>  rC   Fr  r   )rK   r  rz  r   r  r   r  r   r"  r   r-  )r-   r  r  yaybr  r  r  s           r1   test_make_poly_12*TestBPolyFromDerivatives.test_make_poly_12  s    ii##E*ZZaA./0ZZaA./0--aB;1QW:rzz1a&

zCDqABrFBEE:BrFBEE:B r:   c           	         [         R                  R                  S5      nUR                  SS/UR                  S9nSu  pEUR                  UR                  USSSS45      UR                  S9n[        Xc5      n[
        R                  " Xe5      n[        X5      n	UR                  SSS	5      n[        U" U5      U	" U5      5        g )
Nr#  r   rq   r   )r   rA   r)   rF   r=  r   )	rK   r  rz  r   r   r   _raise_degreerP  r   )
r-   r  r  r/   rq  r_  r  rD  r  rS  s
             r1   test_raise_degree*TestBPolyFromDerivatives.test_raise_degree  s    ii##E*JJ1vRZZJ0JJszz1aAq/2"**JE1[  &Bl[[Ar"2B(r:   c           
          [        [        [        R                  UR	                  SS/UR
                  S9UR	                  S/UR
                  S95        g )Nr   rq   r   )r+   rv   r   rW  r   r   r  s     r1   
test_xi_yi#TestBPolyFromDerivatives.test_xi_yi  sB    ..JJ1vRZZJ0"**aS

*2S	
r:   c                     UR                  / SQUR                  S9nUR                  S/S/S//UR                  S9n[        [        [        R
                  X#5        g )Nr   r   rq   r   r   )r   r   r+   rv   r   rW  )r-   r  rS  r  s       r1   test_coords_order*TestBPolyFromDerivatives.test_coords_order  sL    ZZ	Z4ZZ!qcA3rzzZ:j%"8"8"Ar:   c           
        ^ TR                  / SQTR                  S9n[        [        U4S jSS/S/SS/SS//5      5      n[        R
                  " X#5      nUR                  R                  S:X  d   eUR                  5       nS HW  n[        U" U5      TR                  STR                  S95        [        U" U5      TR                  STR                  S95        MY     g )Nr,  r   c                 8   > TR                  U TR                  S9$ )Nr   )r   r   )r/   r  s    r1   <lambda>5TestBPolyFromDerivatives.test_zeros.<locals>.<lambda>  s    "**Qbjj*9r:   r   )r=  rF   )rC   r\  r   r'  gffffff?rB   rN  rC   )
r   r   rC  r   r   rW  r  r!  r-  r   )r-   r  rS  r  r  ppdr  s    `     r1   
test_zeros#TestBPolyFromDerivatives.test_zeros  s    ZZBJJZ79Q!q!fq!f-
 ##B+ttzzV###mmo3CBsGRZZ2::Z%FGCHbjjBJJj&GH 4r:   c                 J   [         R                  R                  S5      nUR                  [	        US-   5       Vs/ s H  nSUS-  -  PM     snUR
                  S9n[	        US-   5       Vs/ s H"  oSR                  UR                  U5      5      PM$     nnXg4$ s  snf s  snf )Nr  rq   r   r)   r   )rK   r  rz  r   r"  r   )r-   r0  rq  r  r  r  rS  r  s           r1   _make_random_mk(TestBPolyFromDerivatives._make_random_mk	  s    ii##D)ZZE!A#J7JqadJ7rzzZJ16qs<AjjA'<v 8<s   B-)B c                    Su  p#U R                  X#U5      u  pE[        R                  " XE5      n[        US-  5       HG  n[	        U" U5      UR                  U Vs/ s H  oU   PM	     sn5      5        UR                  5       nMI     g s  snf )NrA   r   r)   )r  r   rW  r"  r   r  r-  )	r-   r  r0  rq  rS  r  r  r  yys	            r1   test_random_12'TestBPolyFromDerivatives.test_random_12	  su    %%aB/##B+1a4[EBrFBHH"-E"Bi"-E$FGB !-Es   B	c           
          Su  p#U R                  X#U5      u  pE[        [        [        R                  40 [        XESS9D6  g )Nr  r   rS  r  orders)r  r+   rv   r   rW  r   r-   r  r0  rq  rS  r  s         r1   test_order_zero(TestBPolyFromDerivatives.test_order_zero	  s>    %%aB/j%"8"8 	0"A.	0r:   c           
          Su  p#U R                  X#U5      u  pE[        R                  " XESU-  S-
  S9  [        [        [        R                  40 [        XESU-  S9D6  g )Nr  r)   rq   r  r  )r  r   rW  r+   rv   r   r  s         r1   test_orders_too_high-TestBPolyFromDerivatives.test_orders_too_high	  sZ    %%aB/rac!e4j%"8"8 	2"AaC0	2r:   c           
         Su  p#U R                  X#U5      u  pESn[        R                  " XEU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     UR                  [        R                  " U" USS S-
  5      U" USS S-   5      5      5      (       a   eSn[        R                  " XEU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     UR                  [        R                  " U" USS S-
  5      U" USS S-   5      5      5      (       a   eg )	Nr  rA   r  r)   rq   rI   ry  r>  )	r  r   rW  r"  r   r-  r   xpxisclose)	r-   r  r0  rq  rS  r  r  r  r  s	            r1   test_orders_global+TestBPolyFromDerivatives.test_orders_global"	  si   %%aB/ ##B59uaxz"ABr!Bx%/0"R"X5E2FGB # 66#++bAbE)9&:Br!Bx%?O<PQRRRR
 ##B59uaxABr!Bx%/0"R"X5E2FGB ! 66#++bAbE)9&:Br!Bx%?O<PQRRRRRr:   c           
         Su  p#U R                  X#U5      u  pE[        U5       Vs/ s H  ofS-   PM	     nn[        USS 5       H  u  p[        R                  " XEUS9n
[        Xx   S-  S-   5       H1  n[        U
" U	S-
  5      U
" U	S-   5      5        U
R                  5       n
M3     UR                  [        R                  " U
" U	S-
  5      U
" U	S-   5      5      5      (       d  M   e   g s  snf )N)r?  r   rq   rI   r  r)   ry  )
r  r"  rB  r   rW  r   r-  r   r  r  )r-   r  r0  rq  rS  r  or  r  r/   r  r  s               r1   test_orders_local*TestBPolyFromDerivatives.test_orders_local:	  s    %%aB/!&q*Aa%*b2h'DA''v>B69>A-.1u9r!e)}=]]_ / vvckk"QY-AIGHHHH ( +s   C*c           	      |   [         R                  R                  S5      nSu  p4UR                  [         R                  " UR                  US-   5      5      5      nUR                  UR                  US-   USSS45      5      n[
        R                  " XV5      nUR                  R                  SU-  USSS4:X  d   eg )Nr  )r?  rA   rq   r>  r?  r   r)   )	rK   r  rz  r   r  r   rW  r  r!  )r-   r  r  r0  rq  rS  r  r  s           r1   test_yi_trailing_dims.TestBPolyFromDerivatives.test_yi_trailing_dimsF	  s    ii##D)ZZ

1Q301ZZ

AaCAq!#456##B+ttzzac1aA....r:   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 )Nrq   r   r  )rK   int32r   rW  r   r   int64)r-   r  r  s      r1   test_gh_5430%TestBPolyFromDerivatives.test_gh_5430N	  s    
 !""Aq6QC!:fEAaD"**Q-0!""Aq6QC!:fEAaD"**Q-0""Aq6QC!:fEAaD"**Q-0r:   r4   N)r5   r6   r7   r8   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r9   r4   r:   r1   r  r    sY    DJ*N,
!)
B
I"!02S0
I/r:   r  c                   P    \ 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)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  r=  rA   r   rq   r>  r  )	rK   r  rz  r  rP  r   r  r  r   )r-   r  r  r/   rS  r  v1v2s           r1   test_simple_1dTestNdPPoly.test_simple_1da	  s    ii##D)HHQNKK1c"XXc]AtuX1QqX;.446r:   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  r=  rA   r>  r?  r   rq   r   r)   r  r   r  *   )Nr   r   r   rq   )rq   r   )r)   rF   )r   r)   r(  r@  )rK   r  rz  r  rP  r  r  r   fillr   r    evaluate_ndrP   rT   intcc_r  _ppoly2d_evalr   r   r  )r-   r  r  r/   r.   rS  r  r  r  r  r(  s              r1   test_simple_2dTestNdPPoly.test_simple_2do	  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r:   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  r=  rA   r>  r?  r   r   r   rq   r)   rE   rF   (   )Nr   r   r   r   rq   r   rq   r   r   )r)   rF   r   )r>  r   r)   r  r@  )	rK   r  rz  r  rP  r   _ppoly3d_evalr   r  )r-   r  r  r/   r.   r0   rS  r  zir  r(  r  r  s                r1   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	r:   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  r=  rA   r>  r?  r   r   rE   r   r   rq   r)   rF   r   r  )rK   r  rz  r  rP  r   _ppoly4d_evalr   )r-   r  r  r/   r.   r0   urS  r  r  uir  r  r  s                 r1   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;r:   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  r=  rA   r   rq   r>  r  r)   )rK   r  rz  r  rP  r   r-  r   r   r  r.  )r-   r  r  r/   r  r  r  dp1s           r1   test_deriv_1dTestNdPPoly.test_deriv_1d	  s    ii##D)HHQNKK1c"At \\aS\!1[mmocee$ !%1["cee$r:   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  r=  rA   r>  r?  r   r   r   rq   r)   rE   rF   r  r  )r   r   rF   )rK   r  rz  r  rP  r   r   r  r-  r   r  r.  )
r-   r  r  r/   r.   r0   r  r  r  r  s
             r1   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	;r:   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  )rq   rq   rq   rF   r=  rA   r   rq   r=  rA   r)   r>  rF   )rq   r   r=  )r   r)   r   r  )
rK   r  rz  ru   rP  r   r.  r  r   r   )r-   r  r  r/   r.   r0   r  r  rS  r  r  s              r1   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r:   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  r=  rA      r  r   rq   r   r)   rF   rI   r  )r   r*   )r^  r`  )r  r]  c                    > T" X45      $ r   r4   )r/   r.   r  s     r1   r  /TestNdPPoly.test_integrate_2d.<locals>.<lambda>
  s    1aV9r:   gh㈵>)epsrelepsabs)r   F)r   r   r  r   )rK   r  rz  r  rP  r  rP   r!  r{   r    fix_continuityr   r~  r#   r   r   r  )r-   r  r  r/   r.   cxrangesr  ig2err2r  s             @r1   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1r:   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  r=  rA   r>  r  r  r   r   rq   r)   r   rF   r  )r]  r`  rt   r  r  r  )	rK   r  rz  r  rP  r   integrate_1dr.  r   )r-   r  r  r/   r.   r0   r  r  vrD  rG  pxpaxpypaypzpazs                    r1   test_integrate_1dTestNdPPoly.test_integrate_1d
  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Dr:   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#  )r=  rA   r>  r?  r   r   ru  r   rq   r   r   r)   rE   rF   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  ru  )r  )r  rM  rS  r  r  r  s        r1   r  /TestNdPPoly.test_concurrency.<locals>.worker_fn@
  s?    "%B"%B"%Br:   )rK   r  default_rngr  rP  r   r"   )r-   r  r/   r.   r0   r  r  r  s          @r1   r  TestNdPPoly.test_concurrency6
  s    ii##E*KK/K0KK1c"KK1c"A%KK1c"A%A1y!	 	 I1r:   r4   N)r5   r6   r7   r8   r  r  r  r  r  r  r	  r  r!  r  r9   r4   r:   r1   r  r  `	  s7     6:6( (%(;>B(2BE42r:   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   rq   Nc              3   d   >#    U  H%  nTUT4   TTR                   S    U-
  S-
  -  -  v   M'     g7f)r   rq   N)r!  )r  rq  r  r_  r  s     r1   r   _ppoly_eval_1.<locals>.<genexpr>S
  s:      ,*A !A#QWWQZ\!^,,*s   -0)	rK   zerosr  r!  rB  r   searchsortedsumr"  )	r  r/   xpsrp  r  r  r  r_  r  s	   `      @@r1   r  r  I
  s    
((CHaggaj)
*C36R!VvvC!HOOA"Q&1Itr"AacF""""" ,qwwqz*, ,AaC   Jr:   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'   UR                  U5      nU$ s  snf )z4Evaluate piecewise polynomial manually (another way)r   rI   rq   )NN)r!  rK   r  
empty_likecompressr,  clipr  takevanderrT   r"  r|  rP   )r  breaksr   r  rD  rG  K	saveshaper1  maskrk  indxsr  r{  Vrq  valuess                    r1   r  r  Y
  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
 C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 orderrq   )rv   r   )r/   r.   rE  s      r1   _dpowr>  p
  s=     	1u344	
AEAIq!AAJ..r:   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   rI   rq   rK   r  r  r   r!  rB  zipr   r,  r"  r>  )r  r  r   ynewr(  rp  nxnyjoutr/   r.   j1j2s1s2r  k1r  s                     r1   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, Jr:   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   rF   r   rI   rq   r)   r@  )r  r  r   rB  znewr(  rp  rC  rD  nzrE  r/   r.   r0   rF  rG  j3rH  rI  s3r  rJ  r  k3s                           r1   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 Jr:   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   r=  r   rI   rq   r)   rF   r@  )r  r  r   rB  rL  unewr(  rp  mxmymzmurE  r/   r.   r0   r  rF  rG  rN  j4rH  rI  rO  s4r  rJ  r  rP  k4s                                 r1   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> Jr:   r   )Fscipy._lib._array_apir   r   r   r   r   r   r	   scipy._externalr
   r  r  r   r+   numpyr   r   r   r   rK   scipy.interpolater   r   r   r   r   r   r   r   r   r   r   r   r   r   scipy.specialr   r   r    scipy._lib._gcutilsr!   scipy._lib._testutilsr"   scipy.integrater#   r$   r  r,  xfail_xp_backendsr&   r<   r  r  r  rY  r  r6  r[  r.  rV  r  r  r  r  r   r  r>  r  r  r  r4   r:   r1   <module>rc     s     3 *  ( ( - - - - & $ 2 9 ! ;;// KK11  ^ ^B6 6 &'s* s* (s*l $79J#KL: M:, 5% dL dL !dLN,& ,&^ 5{ { {| 5KK KK KK\ 5`0 `0 `0F 5% .' .' !.'b 5@ @ @Ff2 f2R  .0VV .	/!H%P*r:   