
    doiw                    F   S SK JrJrJrJrJr  S SKJr  S SKrS SK	J
r
JrJrJr  S SK	rS SKJrJrJrJrJrJrJrJrJrJrJrJrJrJr  S SKJrJ r   S SKJ!r!  S SK"J#r#J$r$  S S	K%J&r&  S S
K'J(r(  S SKJ)r)  \RT                  RV                  r+\RT                  RX                  r, " S S5      r- " S S5      r. " S S5      r/\" \5       " S S5      5       r0\RT                  Rc                  S\\/5      S 5       r2\" \\5       " S S5      5       r3 " S S5      r4\" \5       " S S5      5       r5\" \5       " S S5      5       r6\" \5       " S S5      5       r7\" \\5       " S  S!5      5       r8 " S" S#5      r9 " S$ S%5      r:S& r;\Rx                  4S' jr=S( r>S,S) jr?S,S* jr@S,S+ jrAg)-    )xp_assert_equalxp_assert_closeassert_almost_equalassert_array_almost_equalmake_xp_test_case)raisesN)mgridpisinpoly1d)interp1dinterp2dlagrangePPolyBPolysplrepsplev
splantidersplintsprootAkima1DInterpolatorNdPPolyBSplinePchipInterpolator)pochgamma)_ppoly)assert_deallocatedIS_PYPY)_run_concurrent_barrier)nquad)binomc                       \ rS rSrS rSrg)TestInterp2D   c                     [         SSS2S[        S24   u  p[        USU-  -   5      n[        [        5         [        X!U5        S S S 5        g ! , (       d  f       g = f)Nr      y              4@y              5@      ?)r	   r
   r   assert_raisesNotImplementedErrorr   )selfyxzs       d/var/www/html/land-ocr/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__r0   __static_attributes__r2       r/   r$   r$      s    r8   r$   c                   ~   \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS*S jrS*S jrS rS rS rS rS*S jrS*S jrS r\R:                  S4S jrS r\ RB                  RE                  \#SS9S 5       r$S  r%S! r&S" r'S# r(S$ r)\ RB                  RU                  S%S&5      S' 5       r+S(r,g))+TestInterp1D&   c                    [         R                  " S5      U l        [         R                  " S5      U l        [         R                  " S5      U l        U R                  R                  S5      U l        [         R                  " S5      U l        [         R                  " S5      U l        [         R                  " S/5      U l
        [         R                  " S/5      U l        [         R                  " S5      R                  S5      U l        [         R                  " S5      R                  S5      U l        [         R                  " S5      R                  S	5      U l        [         R                  " S5      R                  S5      U l        [         R                  " S
5      R                  S5      U l        [         R                  " S
5      R                  S5      U l        [         R                  " S5      R                  S5      U l        SU R$                  S S 2S4'   SU R$                  S S 2S4'   [         R                  " S5      R                  S5      U l        SU R&                  SS S 24'   SU R&                  SS S 24'   SU l        g )N      @      $@)r'             @        g      4@r'   
   )rC   r'   )r'   r'   r?   g      >@)r'      r?   )rD   r'   r?   r%   r         Y)nparangex5x10y10reshapex25x2y2arrayx1y1y210y102y225y25y235y325y210_edge_updatedy102_edge_updated
fill_valuer+   s    r/   setup_methodTestInterp1D.setup_method(   s   ))B-99S>99S>88##E*))B-))B-((B4.((B4.IIcN**73	IIcN**73	IIcN**95	99S>))&1IIcN**95	IIcN**95	
 "$3!7!7!@')q!t$(+q"u% "$3!7!7!@')q!t$(+r1u% r8   c                 
   S HB  n[        U R                  U R                  US9  [        U R                  U R                  USS9  MD     [        U R                  U R                  SSS9  [        U R                  U R                  S[        R                  " S/5      S9  [        U R                  U R                  SSS9  [        U R                  U R                  SSS9  [        U R                  U R                  SS	S9  [        U R                  U R                  S
S9  [        U R                  U R                  SS9  [        U R                  U R                  SS9  [        U R                  U R                  SS9  [        U R                  U R
                  SSS	S9  [        U R                  U R
                  SS
[        R                  " S5      S9  [        U R                  U R
                  SS
[        R                  " S5      [        R                  " S5      4S9  [        U R                  U R
                  SS
[        R                  " S5      S4S9  [        [        [         U R                  U R                  5        [        [        [         U R                  [        R                  " S
5      5        [        [        [         U R                  U R                  5        [        [        [         U R                  U R                  5        [        [        [         U R                  U R                  5        [        U R                  U R
                  5        [        U R                  U R                  S
S9  [        [        [         U R                  U R                  5        [        [        [         U R                  U R                  5        [        [        [         U R                  U R                  SSS9  [        [        [         U R                  U R                  S/ SQS9  [        [        [         U R                  U R                  S[        R                  " S5      S9  [        [        [         U R                  U R                  SS//S9  [        [        [         U R                  U R                  SSS/S9  [        [        [         U R                  U R                  S[        R                  " / 5      S9  [        [        [         U R                  U R                  SSS9  [        [        [         U R                  U R
                  SS
SS/S9  [        [        [         U R                  U R
                  SS
SSS/4S9  g )N)	nearest
nearest-upzerolinearslinear	quadraticcubicpreviousnextkindextrapolaterk   r\   rd   )rF      rF   )rF   )rF   rF   r   rn   r'   rD   rk   axisr\   rC   rp   )rF   rF   rF   r2   rA   )r   rK   rL   rH   rQ   rT   rO   onesr)   
ValueErrorrN   rP   rU   rR   rS   r+   rk   s     r/   test_validationTestInterp1D.test_validationQ   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	9r8   c                 `   [        U R                  U R                  5      R                  (       d   e[        U R                  U R                  SS9R                  (       a   e[        U R                  U R                  5      R                  (       d   e[        U R                  U R                  SS9R                  (       a   e[
        R                  " [        U R                  U R                  5      R                  5      (       d   e[        U R                  U R                  SS9R                  S:X  d   e[        U R                  U R                  SS9R                  S:X  d   e[        U R                  U R                  5      R                  S:X  d   e[        U R                  U R                  5      R                  S:X  d   e[        U R                  U R                  SS	9R                  S:X  d   e[        [        U R                  U R                  5      R                  U R                  5        [        [        U R                  U R                  5      R                  U R                  5        [        [        U R                  U R                  5      R                  U R                  5        g )
NF)copy)bounds_error      @r\   )      ?r@   r   rn   rq   )r   rK   rL   rx   ry   rH   isnanr\   rp   rT   rU   r   r-   r,   r]   s    r/   	test_initTestInterp1D.test_init   s    $((+0000DHHdhhU;@@@@$((+8888DHHdhhUCPPPPxx4884??@@@@$((s;FF#MMM488
CNN 	
  $((+00A555$)),11Q666$))!499Q>>>488466A488466A499577Cr8   c                    [        U R                  U R                  5      n[        U R                  S S S2   U R                  S S S2   5      n[        U" U R                  5      U R                  5        [        U" S5      [        R
                  " S5      5        [        U" / SQ5      U" / SQ5      5        [        U R                  S S S2   U R                  S S S2   SS9n[        U" U R                  5      U R                  5        [        U R                  S S S2   U R                  S S S2   SS9n[        [        X@R                  5        [        U R                  U R                  5      n[        U R                  S S S2   U R                  S S 2S S S24   5      n[        U" U R                  5      U" U R                  5      5        g )NrF   333333?g333333@gffffff@      @F)assume_sortedT)	r   rK   rL   r   rH   rQ   r)   rs   rT   )r+   interp10interp10_unsortedinterp10_assume_kwinterp10_assume_kw2interp10_y_2dinterp10_y_2d_unsorteds          r/   test_assume_sortedTestInterp1D.test_assume_sorted   sb   DHHdhh/$TXXdd^TXXdd^D!"3DHH"=txxH!"3C"8"((3-H!"3O"D"*?";	= &dhhttndhhttn49;!"4TXX">I&txx"~txx"~59; 	j"5xx@ !4995!)$((4R4.$))AttG:L!M!-"9"8"B	Dr8   c                 8    S H  nU R                  U5        M     g )N)rd   re   )_check_linearrt   s     r/   test_linearTestInterp1D.test_linear   s    )Dt$ *r8   c                 ,   [        U R                  U R                  US9n[        U" U R                  5      U R                  5        [        U" S5      [        R
                  " S5      5        [        U" / SQ5      [        R
                  " / SQ5      5        [        U R                  U R                  USS9n[        U" / SQ5      [        R                  " / SQ5      SS9  [        USS	S
9n[        [        [         U R                  U R                  40 UD6  g )Nrj   r   r   rl   rm         r   	      +=rtolTrk   r\   ry   )r   rK   rL   r   rH   rQ   r   asarraydictr)   rs   )r+   rk   r   extrapolatoroptss        r/   r   TestInterp1D._check_linear   s    DHHdhhT:!(488"4dhh?!(3-#?!(?";"$((?";	=  $((+8:_5

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

BJJ

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

<(@AcUQCd>:-=>cF ?>>s   	A((
A6)r\   rR   rK   rO   rN   rJ   rS   rL   rU   r[   rP   rT   rZ   rV   rX   rW   rY   N)rd   )-r3   r4   r5   r6   r^   ru   r~   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r$  r'  r3  rA  rD  rH   r   rP  rS  pytestmarkskipifr   rY  r_  rg  rn  rq  rx  parametrizer}  r7   r2   r8   r/   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 [[(EF G0	+/$)/ [[Gr8   r:   c                       \ rS rSrS rSrg)TestLagrangei>  c                     [        / SQ5      n[        R                  " [        UR                  5      5      nU" U5      n[        X#5      n[        UR                  UR                  5        g )N)r?   r'   rn   r6  rD   )r   rH   rI   lencoeffsr   r   )r+   pxsyspls        r/   test_lagrangeTestLagrange.test_lagrange@  sF    ;YYs188}%rUb_!!((2995r8   r2   N)r3   r4   r5   r6   r  r7   r2   r8   r/   r  r  >  s    6r8   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)TestAkima1DInterpolatoriH  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 )NrA   r   r   rA   r@   r|   rz   r@   r         @r  g@ffffff@rz   rA   r(   r|   r   rG        @g      @r  g      @g@g333333!@g#@r>   rA   g      ?r@   r   g     @?g     @g.袋@g^@gn @gGNB@grcߖ@g	I@rz   rI   r   r   r   r   r+   xpr-   r,   akrM  r  s          r/   	test_eval!TestAkima1DInterpolator.test_evalJ  s    IIb#RZZI0JJ<BJJ  
 !&ZZ "$**  .ZZ  zz	  #
 	2#r8   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 )	NrA   r   r   r  makimamethodr  )rA   gF??r@   g?g?gg{'@g>J(j@g?@gq@g@g9~@go
@rz   r  r  s          r/   test_eval_mod%TestAkima1DInterpolator.test_eval_modY  s     IIb#RZZI0JJ<BJJ  
 !h7ZZ &-/ZZ  9ZZ 5 =?JJ  H 	2#r8   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 )
NrA   r   r   r  r@   rn   rq   r  r  )rI   r   r   stackr   r   r  s          r/   test_eval_2d$TestAkima1DInterpolator.test_eval_2dl  s    IIb#RZZI0JJ<BJJ  
 HHaa[qH) &ZZ &-/ZZ  9ZZ 8 @Bzz  K XXr27m!X,2#r8   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 )NrA   r   r  )r   r'   r'   r   r@   rn   rz   r-  r  )   r'   r'   r  )rH   rI   rQ   emptyr   r   )r+   r-   y_r,   r  rM  r  yi_s           r/   test_eval_3d$TestAkima1DInterpolator.test_eval_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#r8   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 )	NrA   r|   r   r(   r   )rp   rl   g?g333333?)r   r   r   r   )r+   r  r-   r,   akimas        r/   $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Ir8   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 )NrA   r|   r@   rz   r-  rn   rq   r(   )r(   r|   r   r@   )r|   r@   rz   r-  r   )r   r  r   r   r   Tr  s          r/   $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%r8   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 )NrA   r@   r|   )r'   r'   r'   r   rn   rz   r-  r(   r'   rq   )rH   rI   rQ   r  r   r   	transpose)r+   r-   r  r,   r  r  r  rM  s           r/   $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6r8   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          r/   %test_degenerate_case_multidimensional=TestAkima1DInterpolator.test_degenerate_case_multidimensional  s}    JJy

J3HHaAY!! &S#Jbjj9F&!))< = ? ?@r8   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)NrA   r   r  z9Extending a 1-D Akima interpolator is not yet implementedr{  )rH   rI   rQ   r   r  r   r*   extend)r+   r-   r,   r  r|  s        r/   test_extend#TestAkima1DInterpolator.test_extend  sY    IIb#HHEF &K]].e<IIdD! =<<s   A22
B c                     [         R                  " SS5      n[         R                  " / SQ5      nSn[        R                  " [
        US9   [        XSS9  S S S 5        g ! , (       d  f       g = f)NrA   r   r  z `method`=invalid is unsupported.r{  invalidr  )rH   rI   rQ   r  r   r*   r   )r+   r-   r,   r|  s       r/   test_mod_invalid_method/TestAkima1DInterpolator.test_mod_invalid_method  sK    IIb#HHEF2]].e<Y7 =<<s   A
A-c                    [         R                  " SSS5      nUS-  n[         R                  " SSS5      nUS-  n[        XSS	9n[        XS
S	9n[        XS S	9n[        U" U5      U" U5      SS9  [	        U" U5      SS [         R
                  " S[         R                  5      5        [	        U" U5      SS [         R
                  " S[         R                  5      5        [        U" USS	9U" U5      SS9  [        XE" U5      SS9  g )Nr?   r   r'   r  rC      Trl   Fr   r   r   r6  rF   rD   )rH   rJ  r   r   r   fullr   )r+   r-   r,   x_exty_extak_trueak_falseak_nones           r/   test_extrapolate_attr-TestAkima1DInterpolator.test_extrapolate_attr  s    KKAr"qDCR(q%a=&q?%a=eD!,bgga.@A2.2660BCD975>PUVwu~E:r8   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 )	Nrn   rC   g    .Ar6  r(   r  r  r  )
rH   rI   sqrtfinforb  max	heavisider   rc  rd  )r+   r-   r,   ak1ak2y_eval1y_eval2s          r/   test_no_overflow(TestAkima1DInterpolator.test_no_overflow  s    IIa%,,--bll1Q3.DD!!x8!!w7a&a&{{7#'')))){{7#''))))r8   r2   N)r3   r4   r5   r6   r  r  r  r  r  r  r  r  r  r  r  r  r7   r2   r8   r/   r  r  H  s@    $$&$&$2J&70A"8;(*r8   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)NrA   r   r  y               @zreal valuesr{  c                     [         R                  " SSS5      nUS-  n[         R                  " SSS5      n[        XSS	9nS
 n[        SXTU5        g )Nr  r?   r   r'   r  rC   r  Tr  c                     U" U5        g r   r2   )_r  r  s      r/   	worker_fn9test_complex.<locals>.test_concurrency.<locals>.worker_fn  s	    uIr8   )rH   rJ  r   r    )r+   r-   r,   r  r  r  s         r/   test_concurrency&test_complex.<locals>.test_concurrency	  sN    KKAr"qDCR( 48	 	 I59r8   )rH   rI   rQ   r  r   rs   )r  r-   r,   msgr  s        r/   rS  rS    s]     			"cA
ABA	BqDA
C	z	-q 
.
: 
.	-s   	A((
A6c                   J    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rSrg)TestPPolyCommoni  c                     UR                  SS/SS/SS//5      nUR                  / SQ5      n[        [        [        X#5        [        [        [        X#5        g )Nrn   r6  r'   r?   rD   r7  )r   rn   r(   )r   r)   rs   r   r   )r+   r  r  r-   s       r/   test_sort_checkTestPPolyCommon.test_sort_check  sI    JJAAA/0JJ{#j%.j%.r8   c                 v    [        [        5         [        SS/SS/5        S S S 5        g ! , (       d  f       g = f)Nrn   r'   r   )r)   rs   r   r]   s    r/   test_ctor_cTestPPolyCommon.test_ctor_c  s(    :&1a&1a&! '&&s   *
8c                    [         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  rD   r   rC   r%   r'   rn   r   .)rH   randomseeduniquer  randr  r   r   r   r  r   r  r-   )	r+   r  orderr-   r  clspppp2pp3s	            r/   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) "r8   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   rn   r7  r'   r?   r6  r  F)endpoint)
rH   r  r  rJ  r   r  r   r   r  r   )r+   r  r-   r  rO   c2r  pp1r  pp_combxi1xi2s               r/   test_extend_diff_orders'TestPPolyCommon.test_extend_diff_orders<  s    
		tKK1a 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 "r8   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   rD   rC      rn   r'   r   .)rH   r  r  sortuniformr  r  r   r   r   r  r   r  r-   )	r+   r  r  r-   r  r  r  p1p2s	            r/   test_extend_descending&TestPPolyCommon.test_extend_descendingU  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!##& "r8   c           
         [         R                  R                  S5        [         R                  R                  SSSSS5      n[         R                  " [         R                  R                  S5      5      n[         R                  R                  SS	5      n[
        [        4 H#  nU" X5      nU" U5      R                  S
:X  a  M#   e   [
        [        4 H  nU" US   U5      n[         R                  " U" S5      5      S:X  d   e[         R                  " U" [         R                  " S5      5      5      S:X  d   e[        [        U[         R                  " SS/S//[        S95        M     g )Nr  r   r   r?   r7  r8  r  rD   r6  )rD   r6  r?   r7  r8  ).r   r   r   r(   r2   rW  rX  皙?r   )rH   r  r  r  r  r   r   r  rQ   r)   rs   object)r+   r  r-   r  r  r  s         r/   
test_shapeTestPPolyCommon.test_shapel  s	   
		tIINN1b!Q*GGBIINN2&'YY^^Aq!5>CA	AR5;;/111 "
 5>CAlOQ'A88AcF#r)))88Abhhsm,-333*aC:u2EV)TU "r8   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   r?   r7  r8  r  rD   r6  c                     U" U5        g r   r2   )r  r  xpps      r/   r  3TestPPolyCommon.test_concurrency.<locals>.worker_fn  s	    sr8   rC   )	rH   r  r  r  mapr   r   r   r    )r+   r  r  r-   r  r  r  r  s           r/   r   TestPPolyCommon.test_concurrency~  s    IINN1b!Q*GGBIINN2&'iinnQ"

Q3K0	c5>CYF $B	3? "r8   c           	      F   [         R                  R                  S5        [         R                  " [         R                  R                  S5      5      n[         R                  R                  S5      S-  nUR                  UR
                  pC[         R                  R                  S5      n[        [        4 Hg  nU" X!5      U" X15      U" XA5      pnS HG  n
[        U" XZ5      R                  U" XZ5      5        [        U" XZ5      R
                  U	" XZ5      5        MI     Mi     g )N90  r  )r   r   y      ?333333?r?   r   )	rH   r  r  r  rK  rL  r   r   r   )r+   r-   r  c_rec_imr  r  r  p_rep_imnus              r/   test_complex_coef!TestPPolyCommon.test_complex_coef  s    
		uGGBII$$R()IIW%3VVQVVdYYa 5>CIs4|S\TA"	R="	R=   "r8   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  rD   r6  r?   r7  r8  r   )rn   r'   r   rn   r'   rD   rn   rq   r'   )rF   r6  r?   r7  )r  r-   rp   )rH   r  r  r  r  r   r  r   r   r  
derivativeantiderivativerp   r)   rs   r   )r+   r  r  c_sr  rp   mr-   r  r  res
targ_shaper	  s                r/   	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 & "r8   r2   N)r3   r4   r5   r6   r  r  r  r  r  r  r  r  r)  r7   r2   r8   r/   r  r    s2    /"
*042'.V$@ 
>Lr8   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  r2   Nr3   r4   r5   r6   r7   r2   r8   r/   Pr.        r8   r0  c                       \ rS rSrSrg)TestPolySubclassing.Bi  r2   Nr/  r2   r8   r/   Br3    r1  r8   r4  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  rD   )r6  r'   )rH   r  r  r  r0  r4  )r+   r-   r  s      r/   _make_polynomials%TestPolySubclassing._make_polynomials  s^    
		tGGBII$$Q'(IIV$vva|TVVA\))r8   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   )r6  r#  	__class__r$  )r+   r  bpr  pdppas         r/   test_derivative#TestPolySubclassing.test_derivative  se    '')AB;;",,...  !||s}},,,r8   c                    [         R                  R                  S5        [         R                  " [         R                  S[         R                  R                  S5      S4   5      n[         R                  R                  [        U5      5      n[        XSS9nU R                  R                  U5      nUR                  U R                  :X  d   eg Nr  r   r   rn   r?  )rH   r  r  r  r  r  r  r   r0  from_spliner9  )r+   r-   r,   splr  s        r/   test_from_spline$TestPolySubclassing.test_from_spline  s    
		tGGBEE!RYY^^B/234IINN3q6"QQVV$||tvv%%%r8   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   )r6  r0  from_bernstein_basisr9  r4  from_power_basis)r+   r  r:  r  bp1s        r/   test_conversions$TestPolySubclassing.test_conversions  sf    '')ff))"-}}&&&ff%%b)}}&&&r8   c                     / SQnS/S/S//nU R                   R                  X5      nUR                  U R                   :X  d   eg )Nr   rn   r'   rD   )r4  from_derivativesr9  )r+   r-   r,   r:  s       r/   test_from_derivatives)TestPolySubclassing.test_from_derivatives  sB    S1#sOVV$$Q*||tvv%%%r8   r2   N)r3   r4   r5   r6   r   r0  r   r4  r6  r=  rD  rJ  rN  r7   r2   r8   r/   r,  r,    s3    E E *-&'&r8   r,  c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r 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 )Nrn   r6  r'   r?   rD   r7  r   r(   rn   333333?Q@r   ffffff?p=
ף@r   r   r   r   r+   r  r  r-   r  s        r/   test_simpleTestPPoly.test_simple  s}    JJAAA/0JJ{#!K#

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

+? @A#

+K LMr8   c                    [         R                  R                  S5      nUR                  SSS5      n[         R                  " [         R
                  SUR                  S5      S4   5      n[        X#5      n[         R
                  S   n[        X#U5      n[        U" U5      U5        [        US S 2S S 2S4   X55      n[        U" U5      S S 2S4   U5        g )	Nr  rD   r      r   r   rn   )rT  r(   gQ?333333?)
rH   r  ro  r  r  r  r   _ppoly_eval_1r   _ppoly_eval_2)r+   rt  r  r-   r  r  expecteds          r/   #test_vs_alternative_implementations-TestPPoly.test_vs_alternative_implementationsY  s    ii##D)HHQBGGBEE!SXXb\1,-.!KUU&' r*"x( 1Qq511"adX.r8   c                    [         R                  R                  S5      n[         R                  " [         R                  SUR                  S5      S4   5      nUR                  [        U5      5      n[        X#SS9n[        R                  " U5      n[         R                  " SSS5      n[        U" U5      [        Xd5      5        [        U6 n[        R                  " U5      n[        U" U5      U" U5      5        Uu  pnS H?  n[        XXS9n[        R                  " U5      nUR                  UR                  :X  a  M?   e   g )	Nr  r   r   rn   rA  r  )NTFr  )rH   r  ro  r  r  r  r  r   r   rB  rJ  r   r   r   rl   )r+   rt  r-   r,   rC  r  rM  r@  ppptr  rf  extrapr  s                 r/   rD  TestPPoly.test_from_splineg  s   ii##D)GGBEE!SXXb\1,-.HHSVQQs#[[As#2b/ SM"B2' a)Fa4A!!!$A==AMM111 *r8   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 r@  )rH   r  ro  r  r  r  r  r   r   r   r   rB  rJ  r   )r+   r  rt  r-   r,   r  r  rf  rC  r  rM  s              r/   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(r8   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  )r6  rD   r'   rn   )r   r7  r'      r7  r   rn   r'   )	rH   r  r  r   r  r   r   r#  r  )	r+   r  r  dcddcr-   r  dppddpps	            r/   test_derivative_simple TestPPoly.test_derivative_simple  s    
		tJJ~&((ZZ(**jj5%.)*,,JJ1v1[BlS}))3551a(**DFF3r8   c           	         [         R                  R                  S5      n[         R                  " [         R                  SUR                  S5      S4   5      nUR                  [        U5      5      n[        X#SS9n[        R                  " U5      n[         R                  " SSS5      n[        SS5       H  n[        U" Xg5      [        XdU5      5        M!     g )Nr  r   r   rn   rA  r  rD   )rH   r  ro  r  r  r  r  r   r   rB  rJ  r  r   r   r+   rt  r-   r,   rC  r  rM  dxs           r/   test_derivative_evalTestPPoly.test_derivative_eval  s    ii##D)GGBEE!SXXb\1,-.HHSVQQs#[[As#1+BBrJbr(:; r8   c                    [         R                  R                  S5      n[         R                  " [         R                  SUR                  S5      S4   5      nUR                  [        U5      5      n[        X#SSS9n[        R                  " U5      n[         R                  " SSS5      n[        SS5       H,  n[        U" Xg5      UR                  U5      " U5      S	U 3S
9  M.     g )Nr  r   r   rn   r?   r?  rf  r  rC   dx=r9  )rH   r  ro  r  r  r  r  r   r   rB  rJ  r  r   r#  r  s           r/   r=  TestPPoly.test_derivative  s    ii##D)GGBEE!SXXb\1,-.HHSVQQ!$s#[[As#2,BBrJb(9"(=RDzR r8   c                    [        S//SS/5      n[        UR                  5       R                  [        S/S//SS/5      R                  5        [        UR                  5       R                  [        S/S//SS/5      R                  5        g )Nr|   r   rn   )r   r   r$  r  r-   )r+   r  s     r/   test_antiderivative_of_constant)TestPPoly.test_antiderivative_of_constant  sz    B4&1a&!((*,,eaS1#JA.G.I.IJ((*,,eaS1#JA.G.I.IJr8   c                    [        SS/// SQ5      nUR                  5       n[        UR                  SS/SS//5        [        UR                  / SQ5        [        UR                  SS5      [        R                  " S5      5        [        [        R                  " U" S5      U" S5      -
  5      [        R                  " S5      5        g )	Nr|   r(   r   rn   r   )rA   rn   r'   r'   r   )	r   r$  r   r  r-   r   rr  rH   r   )r+   r  qs      r/   #test_antiderivative_regression_4355-TestPPoly.test_antiderivative_regression_4355  s    B9+y)q#hA/0[)Aq)2::c?;

1Q4!A$;/

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

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

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

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

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

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

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

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

JS	
r8   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   rn   r'   rT  g:On?r   r  r  s        r/   test_simple4TestBPoly.test_simple4  sj    JJ1vJJaS1#s+,1[3

 (. 68ZZ # A	
r8   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   rn   r   r'   rT  g	h"l@r   r  r  s        r/   test_simple5TestBPoly.test_simple5  sm    JJ1vJJaS1#sQC011[3

 &( 02zz	 # ;	
r8   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   rn   rD   rD   r   r'   r]  r  g333333@gHzG?r   g[(\?rn   rV  r  r  s        r/   r_  TestBPoly.test_periodic  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Or8   c           	      j   [         R                  R                  S5      nSnS GH  n[         R                  " UR	                  SSUS-   5      5      nUR	                  SSUS-   U4S9nUS S S	2   R                  5       n[        XTS
S9n[        US S 2S S S	24   US S S	2   S
S9nUR	                  SSS5      n	[        U" U	5      U" U	5      SS9  [        U" U	S5      U" U	S5      SS9  UR                  5       n
UR                  5       n[        U
" U	5      U" U	5      SS9  UR                  5       nUR                  5       nUR	                  SSS5       H[  u  pUR                  X5      nUR                  X5      n[        UUSS9  [        U" U5      U" U5      -
  U" U5      U" U5      -
  SS9  M]     GM     g )Nr   rD   ri  rC   rn   r  rW  rj  rF   Tr  r  r  r  rl  r   rm  rn  )rH   r  ro  r  r  rx   r   r   r#  r$  rr  )r+   rt  re  r&  r-   ru  rz  r{  r;  r|  r}  r~  r  r  r=  r@  r  r  s                     r/   r  TestBPoly.test_descending$  s   ii##A&AAr1q512AT3eai^<BDbDBr$/Br!TrT'{AddG>B[[b#.FBvJ6
?BvqM2fa=uE==?D==?DDL$v,UC
 $$&D$$&DCV4Q*Q*u59Q$q' 147T!W3D%*,	 5/ r8   c                 \   [         R                  R                  S5      nUR                  SSSSS5      n[         R                  " / SQ5      n[        X#5      nUR                  R                  UR                  :X  d   eUR                  R                  UR                  :X  d   eU" S5      R                  UR                  SS  :X  d   eU" UR                  SS5      5      R                  S	UR                  SS  -   :X  d   eUR                  5       nUR                  R                  S
:X  d   eg )Nr  r7  r'   rn   rD   rS  rT  r?   r  r  )
rH   r  ro  r  rQ   r   r-   r  r  r#  )r+   rt  r  r-   r  r  s         r/   r  TestBPoly.test_multi_shapeF  s    ii##D)HHQ1a#HH[!!KssyyAGG###ssyyAGG###v||qwwqr{***!Q &&&17712;*>>>>\\^ttzz_,,,r8   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'   rD   rn   r6  rW  r   r  )r+   r  r-   r  r:  xvalr?  s          r/   test_interval_lengthTestBPoly.test_interval_lengthS  s    JJ1vJJaS1#'1[1HtHJJqAaCy!A#q!A#6Qq@

JS	
r8   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*  rD   r   r'   r  gGzG?r   333333?r+  r  r  s        r/   test_two_intervalsTestBPoly.test_two_intervals^  sx    JJy!JJAAA/01[3Krzz!JK3N"**!MNr8   c                    SS/nS/S/S//n[        X!5      nS H  n[        X!US9nUR                  5       nUSL ah  [        R                  " U" S	S
/5      5      R	                  5       (       d   e[        R                  " U" S	S
/5      5      R	                  5       (       d   eM  [        R                  " U" S	S
/5      5      R                  5       (       a   e[        R                  " U" S	S
/5      5      R                  5       (       d  M   e   g )Nr   r'   rD   rn   r6  r  r  Fr  g @)r   r#  rH   r}   rd  r  )r+   r-   r  r:  rl   bp_ds         r/   r  TestBPoly.test_extrapolate_attrf  s    FS1#sO1[.Kq5B==?De#xxD#;0446666xxdC[ 1266888888Bc{O488::::88D$$56::<<<< /r8   r2   N)r3   r4   r5   r6   rZ  r  r!  r$  r'  r_  r  r  r4  r8  r  r7   r2   r8   r/   r  r    s>    CO
	



P ,D-	
O=r8   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)TestBPolyCalculusiv  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*  rD   r   r'   r  r,  r   r7  rV  rn   r'   rD   )r,  r   rA   )rV  r|   r   )r   r   r#  r   r   r  )r+   r  r-   r  r:  bp_derr  s          r/   r=  !TestBPolyCalculus.test_derivativex  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  r?   r   rn   r   rF      )rH   r  ro  r  r   r   r   rG  r  r#  rJ  r   )r+   r  rt  r&  rf  r-   r  r:  r  dr  s              r/   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-	 r8   c                    [         R                  R                  S5      nSu  p#[         R                  " UR                  U5      5      nUR                  X2S-
  45      nUR	                  5       US-  4 He  n[        Xd5      n[         R                  " US   US   S5      n[        U5       H*  n	[        U" X5      UR                  U	5      " U5      5        M,     Mg     g )Nr  rE  rn   rH  r   rF   rF  )
rH   r  ro  r  rx   r   rJ  r  r   r#  )
r+   rt  r&  rf  r-   r  ccr:  r  r  s
             r/   test_deriv_inplace$TestBPolyCalculus.test_deriv_inplace  s    ii##D)GGCJJqM"JJQ3x  668Q\*BrB++adAbE2.C1X3
BMM!,<S,AB  +r8   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   rn   rD   r   r   r'   r@   r(   g      ?rn  r   r   )r   r   r$  rJ  r   r   where)r+   r  r-   r  r:  bixxs          r/   r  ,TestBPolyCalculus.test_antiderivative_simple  s     JJy!JJAA'(1[ [[Ar[42aQ),rRUQY)?$)FH"	0r8   c                 h   [         R                  R                  S5      n[         R                  " UR                  S5      5      nUR                  S5      n[	        X25      n[         R
                  " US   US   S5      n[        UR                  5       R                  5       " U5      U" U5      SSS9  g )	Nr  r   r6  rC   r'   rD   r   rF   r  rn  rO  )	rH   r  ro  r  r   rJ  r   r$  r#  r+   rt  r-   r  r:  rR  s         r/   test_der_antider"TestBPolyCalculus.test_der_antider  s    ii##D)GGCJJrN#JJ}%1[[[1quc*))+668<2U	8r8   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   rU  r   rF   rC   r'   rn  rO  )
rH   r  ro  r  r   r   rG  rJ  r   r$  )r+   rt  r-   r  r:  r  rR  s          r/   test_antider_ppoly$TestBPolyCalculus.test_antider_ppoly  s    ii##D)GGCJJrN#JJ}%1[''+[[1qub)))!,R0))!,R0u5	Jr8   c                 :   [         R                  R                  S5      n[         R                  " UR                  S5      5      nUR                  S5      n[	        X25      R                  5       nUR                  SS n[        U" US-
  5      U" US-   5      SSS9  g )	Nr  r   r6  rC   rn   rF   r   rn  rO  )rH   r  ro  r  r   r$  r-   r   rV  s         r/   test_antider_continuous)TestBPolyCalculus.test_antider_continuous  s}    ii##D)GGCJJrN#JJw1['')TT!BZ2:2:U	@r8   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   r]  r   rn   rn  F)r   r   r  )
rH   r  ro  r  r   r   r   rG  r   rr  )r+   r  rt  r-   r  r:  r  s          r/   r   TestBPolyCalculus.test_integrate  s    ii##D)GGCJJrN#JJwzz!}bjjm11[''+Q*Q*UU	Tr8   c                 V   S//nSS/n[        X5      n[        UR                  SS5      [        R                  " S5      SSS9  [        XSS9n[        R
                  " UR                  SS5      5      (       d   e[        UR                  SSS	S9[        R                  " S5      SSS9  g )
Nrn   r   r'   r@   r   F)r   r  r  T)r   r   rr  rH   r   r}   )r+   r  r-   r@  b1s        r/   test_integrate_extrap'TestBPolyCalculus.test_integrate_extrap  s    SEF!K 	Aq)2::b>"U	4 1U+xxQ*++++Qt<

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