
    doi                        S SK r S SKrS SKrS SKrS SKrS SKJr  S SKJ	r	J
r
JrJr  S SKJrJrJrJrJrJrJr  S SKJrJrJrJr  S SKJrJrJrJrJrJrJ r J!r!J"r"  S SK#J$r$  S SK%J&r&J'r'  S	 r( " S
 S5      r) " S S5      r* " S S5      r+ " S S5      r, " S S5      r- " S S5      r. " S S5      r/SS jr0 " S S5      r1g)    N)raises)xp_assert_equalxp_assert_closeassert_almost_equalassert_array_almost_equal)arraydifflinspacemeshgridonespishape)bisplrepbisplevsplrepspalde)	UnivariateSplineLSQUnivariateSplineInterpolatedUnivariateSplineLSQBivariateSplineSmoothBivariateSplineRectBivariateSplineLSQSphereBivariateSplineSmoothSphereBivariateSplineRectSphereBivariateSpline)_run_concurrent_barrier)make_splrep	NdBSplinec                     U R                  5       u  pU R                  u  p4[        U5      [        U5      peU R                  5       R	                  XS-
  S-
  Xd-
  S-
  45      n[        X4XsU45      $ N   )	get_knotsdegreeslen
get_coeffsreshaper   )luttxtykxkynxnycs           a/var/www/html/land-ocr/venv/lib/python3.13/site-packages/scipy/interpolate/tests/test_fitpack2.pyconvert_to_ndbspliner0      sd    ]]_FB[[FBWc"g  "'A+rw{!;<AbXqr(++    c                       \ rS rSrS r\R                  R                  SSS/5      S 5       rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSr g)TestUnivariateSpline    c                    / SQn/ SQn[        XSS9n[        UR                  5       SS/5        [        UR                  5       SS/5        [	        UR                  5       5      S:  d   e[        U" / SQ5      / SQ5        g )Nr!         r8   r8   r8   r!   kr8   g|=r!         ?r7   r   r   r"   r%   absget_residualselfxyr'   s       r/   test_linear_constant)TestUnivariateSpline.test_linear_constant!   sl    qQ'!#--/Aq6:!#.."2QF;3##%&...!#k"2I>r1   bc_typeNperiodicc                     / SQn/ SQn[        X#SS9n[        X#S[        U5      US9n[        UR                  SS UR                  5       SS9  [        UR                  UR                  5       SS9  g )	Nr6   r9   r!   r:   )r;   srG   V瞯<atol)r   r   r$   r   tr"   r.   r%   )rB   rG   rC   rD   r'   spls         r/   test_linear_constant_periodic2TestUnivariateSpline.test_linear_constant_periodic*   s_    qQ'!!s1vw?aS]]_5As~~/e<r1   c                 0   / SQn/ SQn[        XSS9nSn[        U5      [        U" U5      5      :X  d   e[        U5      [        U" USS95      :X  d   e/ SQn[        U5      [        U" U5      5      :X  d   e[        U5      [        U" USS95      :X  d   eg )Nr6   r   r7      r!   r:   r7   nu)r=   r7         @)r   r   )rB   rC   rD   r'   args        r/   test_preserve_shape(TestUnivariateSpline.test_preserve_shape4   s    qq)SzU3s8_,,,SzU3sq>2222SzU3s8_,,,SzU3sq>2222r1   c                    / SQn/ SQn[        XSS9n[        UR                  5       SS/5        [        UR                  5       SS/5        [	        UR                  5       5      S:  d   e[        U" / S	Q5      / S
Q5        g )Nr6   rT   r!   r:   r8   r   rU   rL   r<   )r   r!   r7   r>   rA   s       r/   test_linear_1d#TestUnivariateSpline.test_linear_1d?   sk    qQ'!#--/1Q%8!#.."2Aa593##%&...!#i.9r1   c                 f     " S S[         5      nU" / SQ/ SQSS9n[        U" SS/5      S	S	/5        g )
Nc                       \ rS rSrS rSrg)9TestUnivariateSpline.test_subclassing.<locals>.ZeroSplineK   c                     S[        U5      -  $ )Nr   )r   )rB   rC   s     r/   __call__BTestUnivariateSpline.test_subclassing.<locals>.ZeroSpline.__call__L   s    qz!r1    N)__name__
__module____qualname____firstlineno__rd   __static_attributes__rf   r1   r/   
ZeroSplinera   K   s    "r1   rl   r!   r7   r8   rU      )r8   r7   r8   r7   r8   r7   r:   r=   rX           )r   r   )rB   rl   sps      r/   test_subclassing%TestUnivariateSpline.test_subclassingH   s5    	") 	" [A6C:R1r1   c                 ^    / SQn/ SQn[        XSS9n[        U" / 5      [        / 5      5        g )Nr!   r8   rn      	   r   rU   rv         r8   r:   )r   r   r   rB   rC   rD   rP   s       r/   test_empty_input%TestUnivariateSpline.test_empty_inputR   s*    qq)Br+r1   c                 b    / SQn/ SQn[        XSS9n[        UR                  5       S   S5        g )Nrt   rw   r8   r:   r   g7ã?)r   r   rootsrz   s       r/   
test_rootsTestUnivariateSpline.test_rootsY   s-    qq)CIIKN,=>r1   c                     [         R                  " SS[         R                  -  S5      n[         R                  " U5      n[	        XSS9n[        UR                  5       5      S:X  d   eg )Nr   2     rJ   )npr
   r   cosr   r$   r~   rz   s       r/   test_roots_length&TestUnivariateSpline.test_roots_length_   sN    KK2:t,FF1Iqq)399;2%%%r1   c                 b    / SQn/ SQn[        XSS9n[        UR                  S5      / SQ5        g )Nrt   rw   r8   r:         @)g;@gpZ<o?gOmǿg      ?)r   r   derivativesrz   s       r/   test_derivatives%TestUnivariateSpline.test_derivativese   s/    qq)COOC0F	Hr1   c                     [         R                  " S5      nUS-  SUS-  -  -   n[        XSS9n[        SU5      n[	        U/ SQSS	9  [        XSSS
9n[	        UR                  S5      USS	9  g )N   r8          @r7   r   r   )g     F@g     C@g      6@      @rL   rM   )rJ   r;   )r   aranger   r   r   r   r   )rB   rC   rD   tckdersrP   s         r/   test_derivatives_2'TestUnivariateSpline.test_derivatives_2l   sx    IIaLqD2ad7NQQa~ # #		$
 qqA.*"	$r1   c                 r    / SQn/ SQn/ SQn[        XUSS9n[        / SQ5      n[        U" / SQ5      USS	9  g)
zRegression test for #1375.)      g<&g_g@7ѿg46	<ƿgBϠro   gBϠ?g46	<?g@7?g_?g<&?      ?)r   1\_#?~a?w?5??0ms?gx?r   r   r   r   r   r   )   mBo!@u)	~@e?֭z@b@v5|@geSs@r   r   r   r   r   r   N)rC   rD   wrJ   )gJdv?gc?g=?gt?皙?      ??gGz?gMb@?rM   )r   r   r   )rB   rC   rD   r   rP   desireds         r/   test_resize_regression+TestUnivariateSpline.test_resize_regression|   sD     15HI12G$Gr1   c                 ,   [         R                  " S[        S9nUS-  n[        SSS5      nUR	                  5       nSU[         R
                  " US:  US	:  5      '   UR	                  5       nUS   XUUS   :  '   US
   XUUS
   :  '   [        [        4 H  nU" XS9nS H.  n[        U" X8S9US-  SS9  [        U" XUS9" U5      US-  SS9  M0     S H.  n[        U" X8S9US-  SS9  [        U" XUS9" U5      US-  SS9  M0     S H  n[        [        Xs40 [        US9D6  M     S H.  n[        U" X8S9US-  SS9  [        U" XUS9" U5      US-  SS9  M0     M     WR                  5       SS n	[        XU	5      n[        U" USS9US-  SS9  [        U" USS9US-  SS9  [        [        Xs40 [        SS9D6  [        U" USS9US-  SS9  S HC  n[        X5      n[        [        Xs40 [        US9D6  [        [        [        40 [        XUS9D6  ME     g )Nrn   dtyper8      d   r   ro         @rK   )rC   rD   )r   extrapolate)extgؗҜ<rM   )r!   zeros)r7   raise)r8   constgؗҬ<rU   r!   r7   )rK   unknown)rC   rD   r   )r   r   floatr
   copy
logical_orr   r   r   assert_raises
ValueErrordictr"   r   )
rB   rC   rD   xpxp_zerosxp_clipclsrP   r   rO   s
             r/   test_out_of_range_regression1TestUnivariateSpline.test_out_of_range_regression   s*   IIau%qDb"c"779@Ax"}hm<='')"#A$!A$#$R5!B% $&BCC-C)B 0"a%eDAc 22 6AEJ * $B 0(A+EJAc 22 6!%P $ $j#CTc]C $#B 0'1*5IAc 22 6
O $ D MMOAa !!*BAAE:BA!%@j#9Ta[9BA
? #C"1(C*c?#?*&6 /Q-/ #r1   c           	          [         R                  " S5      S-  n[         R                  " S5      S-  n[         R                  " SSS5      nSn[        [        [
        XUUS9  g )Nr   r   r   c   
   )rK   e   bbox)r   r   r
   r   r   r   )rB   xsysknotsr   s        r/   test_lsq_fpchec$TestUnivariateSpline.test_lsq_fpchec   sQ    YYs^b YYs^b Ar2&j"5ru	!r1   c                 b   [         R                  " SSS5      S-  n[         R                  " U5      n[        XSS9nUR	                  S5      R                  S5      n[        U" S5      U" S5      5        UR	                  S5      n[        U" S5      U" S	5      -
  UR                  S	S5      5        g )
Nr   r!   F   r8   r   r7   333333?g333333?皙?)r   r
   r   r   antiderivative
derivativer   integral)rB   rC   rD   rP   spl2s        r/   "test_derivative_and_antiderivative7TestUnivariateSpline.test_derivative_and_antiderivative   s    KK1b!1$FF1Iqq)!!!$//2C$s),!!!$S	DI-S#.	0r1   c                     / SQn/ SQn[        XSSS9n/ SQn[        UR                  5       " U5      [        R                  " U5      SS9  g )	Nr!   r7   rU      g      !@)r   皙??rX   rn   r   r8   )r   r;   )rK   r   g      rv   g      #@r   rL   rM   )r   r   r   r   
zeros_like)rB   x_valuesy_valuesfrC   s        r/   test_derivative_extrapolation2TestUnivariateSpline.test_derivative_extrapolation   sA     %*XWB%q)2==+;%Hr1   c                     [         R                  " SSS5      n[        S5       H9  n[        XSUS9nS H%  u  pE[	        UR                  XE5      5      S:  a  M%   e   M;     g )	Nro   r   ru   rU   r   )rJ   r   )r!   r!   )r!   rn   )r7   rn   r   r   )r   )r   rK   rL   )r   r
   ranger   r?   r   )rB   rC   r   r   abs         r/   test_integral_out_of_bounds0TestUnivariateSpline.test_integral_out_of_bounds   s\     KKB"8C 4A61::a+,u4446 r1   c                    [         R                  " S[        S9nUS-  n[         R                  " U5      n[	        XSS9nUR                  5       SS nUS   n[         R                  [         R                  [         R                  * 4 H  nXrS'   [        [        [        40 [        XSS9D6  [        [        [        40 [        XSS9D6  [        [        [        40 [        XUSS	9D6  XbS'   XsS'   [        [        [        40 [        XUSS
9D6  [        [        [        40 [        XUSS
9D6  [        [        [        40 [        XXSSS9D6  M     g )Nr   r   r8   Tcheck_finiterU   rK   rC   rD   r   )rC   rD   rO   r   )rC   rD   r   r   rC   rD   rO   r   r   )r   r   r   	ones_liker   r"   naninfr   r   r   r   r   )rB   rC   rD   r   rP   rO   y_endzs           r/   test_nanTestUnivariateSpline.test_nan   s5   IIb&qDLLOq$7MMOAa "&&"&&266'*AbE*&6 9Q$79*&B 9Q$79*&9 >Qqt<>bEbE*&6 >Qqt<>*&B >Qqt<>*&9 CQqDAC +r1   c                    [         R                  " S[        S9nUS-  n[         R                  " S[        S9nUS   US'   US-  n[         R                  " U5      n[	        XSS9nUR                  5       SS n[	        X4USSS	9  [        X4XuSS
9  [        [        [        40 [        X4SSS9D6  [        [        [        40 [        X4SS9D6  g )Nr   r   r8   r   r!   Tr   rU   )rC   rD   r   rJ   r   r   )rC   rD   rJ   r   r   )r   r   r   r   r   r"   r   r   r   r   r   rB   xxyyrC   rD   r   rP   rO   s           r/   test_strictly_increasing_x/TestUnivariateSpline.test_strictly_increasing_x   s    
 YYr'UIIb&t!qDLLOrD9MMOAa 1Q!$?aTBj"2 	:148	:j"> 	5d3	5r1   c                    [         R                  " S[        S9nUS-  n[         R                  " S[        S9nUS   S-
  US'   US-  n[         R                  " U5      n[	        XSS9nUR                  5       SS	 n[        [        [        40 [        X4SS
9D6  [        [        [        40 [        X4SS
9D6  [        [        [        40 [        X4XuSS9D6  g )Nr   r   r8   r   r   r!   Tr   rU   r   r   )r   r   r   r   r   r"   r   r   r   r   r   r   s           r/   test_increasing_x&TestUnivariateSpline.test_increasing_x  s    YYr'UIIb&tcz!qDLLOrD9MMOAa j"2 	5d3	5j"> 	5d3	5j"5 	?1=	?r1   c                 F   [        [        5       n/ SQn/ SQn[        X#5        S S S 5        S[        WR                  5      ;   d   e[        [        5       n/ SQn/ SQn/ SQn[        X#US9  S S S 5        S[        UR                  5      ;   d   e[        [        5       nSn[        WWUS	9  S S S 5        S
[        UR                  5      ;   d   e[        [        5       n[        WWSS9  S S S 5        S[        UR                  5      ;   d   e[        [        5       n[        WWSS9  S S S 5        S[        UR                  5      ;   d   eg ! , (       d  f       GN0= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       No= f)Nr   r   r   r   rX   !x and y should have a same lengthr   r   r   rX   gffffff@r   r   r   r   r   %x, y, and w should have a same lengthrK   r   bbox shape should be (2,)r   r:   k should be 1 <= k <= 5r   r   s should be s >= 0.0)r   r   r   strvaluerB   infor   r   w_valuesr   s         r/   (test_invalid_input_for_univariate_spline=TestUnivariateSpline.test_invalid_input_for_univariate_spline  sB   :&$(H+HX0 ' 3c$**oEEE:&$(H0H,HX8<	 '
 7#djj/III:&$DXxd; ' +c$**o===:&$Xx15 '(C

O;;;:&$Xx48 '%TZZ8881 '& '& '&
 '& '&s;   EEE0FF
E
E-0
E>
F
F c                    [        [        5       n/ SQn/ SQn[        X#5        S S S 5        S[        WR                  5      ;   d   e[        [        5       n/ SQn/ SQn/ SQn[        X#US9  S S S 5        S[        UR                  5      ;   d   e[        [        5       nSn[        WWUS	9  S S S 5        S
[        UR                  5      ;   d   e[        [        5       n[        WWSS9  S S S 5        S[        UR                  5      ;   d   eg ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N]= f)Nr   r  r  r  r  r	  r
  rK   r   r  r   r:   r  )r   r   r   r  r  r  s         r/   5test_invalid_input_for_interpolated_univariate_splineJTestUnivariateSpline.test_invalid_input_for_interpolated_univariate_spline;  s   :&$(H+H(< ' 3c$**oEEE:&$(H0H,H(xH	 '
 7#djj/III:&$D(8$G ' +c$**o===:&$(8qA '(C

O;;;) '& '& '&
 '&s/   DD D1E
D 
D.1
D?
Ec                 ^   / SQn/ SQn[        XSS9nUR                  5       SS n[        [        5       n/ SQn/ SQn[	        XU5        S S S 5        S[        WR                  5      ;   d   e[        [        5       n/ SQn/ SQn/ S	Qn[	        XXFS
9  S S S 5        S[        UR                  5      ;   d   eSn[        [        US9 nSn[	        XXHS9  S S S 5        [        [        5       nSn[	        XXHS9  S S S 5        S[        UR                  5      ;   d   e[        [        5       n[	        XUSS9  S S S 5        S[        UR                  5      ;   d   eg ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       No= f)Nr   r  Tr   r8   rU   r  r  )r   r   r   r   r	  r
  z;Interior knots t must satisfy Schoenberg-Whitney conditionsmatch)r   r   rK   r  r   r:   r  )r   r"   r   r   r   r  r  )	rB   r   r   rP   t_valuesr  r  messager   s	            r/   ,test_invalid_input_for_lsq_univariate_splineATestUnivariateSpline.test_invalid_input_for_lsq_univariate_splineS  s`   $,xE==?1Q':&$(H+HH= ' 3c$**oEEE:&$(H0H+HHI	 '
 7#djj/IIIO:W5DHH 6 :&$DHH ' +c$**o===:&$HB '(C

O;;;3 '& '& 65 '&
 '&s;   E<E+E<*F)F
E(+
E9<
F

F
F,c                    [         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " SS/5      n[        XUUS9n[        UR                  5       UR                  5       UR                  5       UR                  5       S9n[	        U" / SQ5      U" / SQ5      5        g )Nr   r  )r   r   r   r   r   r  r   )rC   rD   r   r   r   )r   r   r   tolistr   )rB   r   r   r  r   spl1r   s          r/   test_array_like_input*TestUnivariateSpline.test_array_like_inputu  s    88-.88568856xxs$((%)+  (//"3x7H"*//"3$++-I 	2323	5r1   c                     [        S5      n/ SQnSn[        R                  " [        US9   [	        XSS9  S S S 5        g ! , (       d  f       g = f)Nm   )mro   ro   ro   ro   ro   %@ro         &@ro   ro   ro   r'  ro   ro   ro   ro   ro   ro   r'  ro   ro   ro   r(  ro   ro   ro   r'  ro   ro   ro         %@ro   ro   ro   ffffff%@ro   ro   ro   r(  ro   ro   ro   ro   ro   ro   r'  ro   ro   r*  ro   ro   ro   333333%@ro   ro   ro   r)  ro   ro   r*  ro   ro   r)  ro   ro   g      '@ro   ro   ro   r*  ro   ro   r*  ro   ro   r'  ro   ro   皙%@ro   ro   ro   r*  ro   ro   r+  ro   ro   ro   $@ro   ro   r+  ro   ro   r)  ro   ro   ro   r*  ro   ro   ro   r-  ro   ro   ro   r,  ro   z2does not satisfy the condition abs\(fp-s\)/s < tolr  r!   r:   )r   pytestwarnsUserWarningr   )rB   rC   rD   msgs       r/   test_fpknot_oob_crash*TestUnivariateSpline.test_fpknot_oob_crash  s>    #J; D\\+S1QQ' 211s	   ?
Ac                     [         R                  " S[        S9nUS-  n[         R                  " S[        S9nUS   US'   [        XSS9nS n[	        S	XTU5        g )
Nr   r   r8   r   r!   Tr   c                     U" U5        g )Nrf   )_interprC   s      r/   	worker_fn8TestUnivariateSpline.test_concurrency.<locals>.worker_fn  s	    1Ir1   r   )r   r   r   r   r   )rB   r   r   rC   rP   r8  s         r/   test_concurrency%TestUnivariateSpline.test_concurrency  sY     YYs%(UIIc't!rD9	 	 IA6r1   rf   )!rg   rh   ri   rj   rE   r.  markparametrizerQ   rZ   r]   rq   r{   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r#  r2  r:  rk   rf   r1   r/   r3   r3       s    ? [[Yz(:;= <=	3:2,?&H$ H '/R!0I5C45*?$98<0 <D5(&7r1   r3   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestLSQBivariateSplinei  c                 :   / SQn/ SQn/ SQnSnSU-   SU-
  /nSU-   SU-
  /n[         R                  " [        SS9 n[        XX5USSS	9n[	        U5      S:X  d   e S S S 5        [        W" S
S
5      [        R                  " S5      5        g ! , (       d  f       N6= f)N	r!   r!   r!   r7   r7   r7   r8   r8   r8   	r!   r7   r8   r!   r7   r8   r!   r7   r8   	r8   r8   r8   r8   r8   r8   r8   r8   r8   r   r!   r8   
The coefficients of the spliner  r*   r+   r7         @)r.  r/  r0  r   r$   r   r   asarray	rB   rC   rD   r   rJ   r(   r)   rr'   s	            r/   rE   +TestLSQBivariateSpline.test_linear_constant  s    c!A#Yc!A#Y\\+-OPTU$QbA;Cq6Q;; Q 	C1Irzz"~6	 QPs   B
Bc                 d   / SQn/ SQn/ SQnSnSU-   SU-
  /nSU-   SU-
  /n[         R                  " [        SS9   [        XX5USSS	9nS S S 5        WR	                  5       u  pV[        US S
 USS  5       H  u  p[        US S
 USS  5       H  u  pS H  nS Hw  nUSU-
  -  X-  -   nU
SU-
  -  X-  -   nU" X5      7SU-
  -  SU-
  -  U" X5      U-  SU-
  -  -   U" X5      SU-
  -  U-  -   U" X5      U-  U-  -   n[        U" X5      U5        My     M     M     M     g ! , (       d  f       N= f)NrA  rB  	r   ru   r   r8   rU   ru   r!   r8   rU   r   r!   r8   rD  r  rE  rK   )r   r   r   )r   皙?gffffff?)r.  r/  r0  r   r"   zipr   )rB   rC   rD   r   rJ   r(   r)   r'   xaxbyaybrO   r   ypzps                   r/   test_bilinearity'TestLSQBivariateSpline.test_bilinearity  sf   c!A#Yc!A#Y\\+-OP$QbA;C Q "Sb'2ab6*FBb"gr!"v.(A,1X_1X_ #BmQqS11Q37 #BAqs 34 #BQqS 1! 34 !$BAa0 ,CJ; - ) / + QPs   D!!
D/c                    / SQn/ SQn[        / SQ5      nSnSU-   SU-
  /nSU-   SU-
  /n[        R                  " [        SS9 n[	        XX5USSS	9n[        U5      S:X  d   e S S S 5        WR                  5       u  pVU" XV5      n	S
[        U5      S S 2S 4   [        U5      S S S 24   -  U	S S2S S24   U	SS 2S S24   -   U	S S2SS 24   -   U	SS 2SS 24   -   -  R                  5       -  n
[        [        R                  " UR                  US   US   US   US   5      5      [        R                  " U
5      5        g ! , (       d  f       N= f)N)	r!   r!   r!   r7   r7   r7   r   r   r   rB  rL  r   r!   r8   rD  r  rE        ?rK   r   )r   r.  r/  r0  r   r$   r"   r	   sumr   r   rG  r   )rB   rC   rD   r   rJ   r(   r)   rI  r'   tztrpzs              r/   test_integral$TestLSQBivariateSpline.test_integral  s]   %&c!A#Yc!A#Y\\+-OPTU$Q1"qACq6Q;; Q [DHQtV$T"Xd1f%55#2#crc'{2ab"f:-b"QRj8ABqrEBDEHSUK 	BJJs||BqE2b62a5"R&'QRJJt,	. QPs   E  
Ec                    / SQn/ SQn/ SQnSnSU-   SU-
  /nSU-   SU-
  /n[         R                  " [        SS9 n[        XX5USSS	9n[	        U5      S:X  d   e S S S 5        [        W" / / 5      [        R                  " S
5      5        [        U" / / SS9[        R                  " S5      5        g ! , (       d  f       N\= f)NrA  rB  rC  r   r!   r8   rD  r  rE  r   Fgridr   )r.  r/  r0  r   r$   r   r   r   rH  s	            r/   r{   'TestLSQBivariateSpline.test_empty_input  s    c!A#Yc!A#Y\\+-OPTU$Q1"qACq6Q;; Q 	BRXXe_5B/$@ QPs   B22
C c                    SnSU-   SU-
  /nSU-   SU-
  /n[        [        5       n[        R                  " SS5      n[        R                  " SS5      n[        R                  " SSSS9n[	        XVXrU5        S S S 5        S[        WR                  5      ;   d   e[        [        5       n[        R                  " SS5      n[        R                  " SS5      n[        R                  " SS5      n[        R                  " SSS	S9n[	        XVXrX8S
9  S S S 5        S[        UR                  5      ;   d   e[        [        5       n[        R                  " SS5      n[	        WWWX#US
9  S S S 5        S[        UR                  5      ;   d   e[        [        5       nSn	[	        WWWX#U	S9  S S S 5        S[        UR                  5      ;   d   e[        [        5       n[	        WWWX#SSS9  S S S 5        S[        UR                  5      ;   d   e[        [        5       n
[	        WWWX#SS9  S S S 5        S[        W
R                  5      ;   d   e[        [        5       n
[	        WWWX#SS9  S S S 5        S[        U
R                  5      ;   d   eg ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNR= f! , (       d  f       GN"= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f)Nr   r!   r8   r         $@r   num%x, y, and z should have a same length   r	  (x, y, z, and w should have a same lengthr   w should be positiver  r   r  r   bbox shape should be (4,)rE  ;The length of x, y and z should be at least (kx+1) * (ky+1)ro   epseps should be between (0, 1))r   r   r   r
   r   r  r  )rB   rJ   r(   r)   r  rC   rD   r   r   r   exc_infos              r/   test_invalid_input)TestLSQBivariateSpline.test_invalid_input  sr   !eQU^!eQU^:&$C&AC&AC2.AqQB/	 '
 7#djj/III:&$C&AC&AC&AC2.AqQB4 ' :S_LLL:&$D$'Aq!Q!4 ' &TZZ888:&$$Dq!QT: ' +c$**o===:&$q!Q2"= 'L4:: 	  :&(q!QC8 '-X^^1DDDD:&(q!QC8 '-X^^1DDDDI '& '& '&
 '&
 '&
 '& '&sU   AJ*A'J!%J3KKK(K9
J!
J03
K
K
K%(
K69
Lc                    Sn[         R                  " SU-   SU-
  /5      n[         R                  " SU-   SU-
  /5      n[         R                  " SS5      n[         R                  " SS5      n[         R                  " SS5      n[         R                  " SS5      n[         R                  " / SQ5      n[        R                  " [
        SS9 n	[        XEXbX7US	9n
[        UR                  5       UR                  5       UR                  5       UR                  5       UR                  5       UR                  5       US	9n[        U
" S
S
5      U" S
S
5      5        [        U	5      S:X  d   e S S S 5        g ! , (       d  f       g = f)Nr   r!   r8   r   rd  )r   rd  r   rd  rD  r  )r   r   r   r7   )
r   r   r
   r.  r/  r0  r   r!  r   r$   )rB   rJ   r(   r)   rC   rD   r   r   r   rI  r"  r   s               r/   r#  ,TestLSQBivariateSpline.test_array_like_input  s   XXq1ua!en%XXq1ua!en%KKT"KKT"KKT"KKT"xx./\\+-OPTU%aA2FD%ahhj!((*ahhj&(iik299;!((*+/1D DcNDcN;q6Q;; QPPs   BE11
E?c                    [         R                  SS2SS24   u  pUR                  5       nUR                  5       nS[         R                  " U5      -  n[         R                  " SSS5      n[         R                  " SSS5      n[
        R                  " [        SS	9 n[        XX4U5      n[        U5      S
:X  d   e SSS5        [        W" XSS9U5        g! , (       d  f       N = f)z[Test for the case when the input knot-location arrays in x and y are
of different lengths.
r   r   rF  r   g     X@   !   rD  r  r!   NFr_  )r   mgridravelr   r
   r.  r/  r0  r   r$   r   )rB   rC   rD   r   r(   r)   rI  r'   s           r/   test_unequal_length_of_knots3TestLSQBivariateSpline.test_unequal_length_of_knots.  s     xx#qu%GGIGGI",,q/![[dB'[[dB'\\+-OPTU$Qb1Cq6Q;; Q 	C5115	 QPs   C
C&rf   N)rg   rh   ri   rj   rE   rU  r\  r{   rr  r#  r{  rk   rf   r1   r/   r?  r?    s(    7<0.&A)EV(6r1   r?  c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
TestSmoothBivariateSplinei?  c                 4   / SQn/ SQn/ SQn[        XUSSS9nUR                  5        H  n[        U/ SQ5        M     [        UR                  5       / SQ5        [	        UR                  5       5      S:  d   e[        U" / S	QSS
/5      SS/SS/SS//5        g )NrA  rB  rC  r!   rE  )r!   r!   r8   r8   )r8   r8   r8   r8   rL   r<   r=   r8   )r   r"   r   r%   r?   r@   rB   rC   rD   r   r'   rO   s         r/   rE   .TestSmoothBivariateSpline.test_linear_constant@  s    #AQ!4A%a6 ! 	"#.."2LA3##%&...!#kAs8"<1v1vPQSTv>VWr1   c                 \   / SQn/ SQn/ SQn[        XUSSS9nUR                  5        H%  n[        U[        R                  " / SQ5      5        M'     [        UR                  5       / SQ5        [        UR                  5       5      S:  d   e[        U" / S	QSS
/5      SS/SS/SS//5        g )NrA  rB  )	r   r   r   r7   r7   r7   rU   rU   rU   r!   rE  )r   r!   r8   r8   )r   r   rU   rU   rL   r<   r=   r   r7   )	r   r"   r   r   rG  r   r%   r?   r@   r  s         r/   r]   (TestSmoothBivariateSpline.test_linear_1dL  s    #AQ!4AArzz.9: !!#.."2LA3##%&...!#i3"81Q%1qe9LMr1   c                    / SQn/ SQn[        / SQ5      n[        R                  " 5          [        R                  " SS[        5        [        XUSSSS9nS S S 5        / S	Qn/ S
QnW" XV5      nS[        U5      S S 2S 4   [        U5      S S S 24   -  US S2S S24   USS 2S S24   -   US S2SS 24   -   USS 2SS 24   -   -  R                  5       -  n[        [        R                  " UR                  US   US   US   US   5      5      [        R                  " U5      5        [        XUSSSS9n	[        [        R                  " U	R                  US   US   US   US   5      5      [        R                  " U5      SS9  U" US S US S 5      nS[        US S 5      S S 2S 4   [        US S 5      S S S 24   -  US S2S S24   USS 2S S24   -   US S2SS 24   -   USS 2SS 24   -   -  R                  5       -  n[        [        R                  " UR                  US   US   US   US   5      5      [        R                  " U5      5        g ! , (       d  f       GN= f)N)	r!   r!   r!   r7   r7   r7   rU   rU   rU   rB  rL  ignorez
The required storage spacer!   r   )r*   r+   rJ   )r!   r7   rU   r6   rX  rK   r7   )decimalr   )r   warningscatch_warningsfilterwarningsr0  r   r	   rY  r   r   rG  r   )
rB   rC   rD   r   r'   r(   r)   rZ  r[  lut2s
             r/   r\  'TestSmoothBivariateSpline.test_integralW  sl   %&$$&##8+G'aA!qAC	 ' [DHQtV$T"Xd1f%55#2#crc'{2ab"f:-b"QRj8ABqrEBDEHSUKBJJs||BqE2b62a5"R&'QRJJt,	. %Q1qA>BJJt}}RUBrFBqE2b6'RSJJt,$%	' CR"Sb'"DCRM!D&)$r#2w-Q*??#2#crc'{2ab"f:-b"QRj8ABqrEBDEHSUKBJJs||BqE2b62a5"R&'QRJJt,	./ '&s   *I
I c                 :   [         R                  " SSS5      n[         R                  " SSS5      nX-   n[         R                  " SSS5      n[         R                  " SSS5      n[        XU5      n[        XEU5      n[	        XU5      nU" XE5      n	[        Xy5        g )Nr   r7   P   rK   r!   r   )r   r
   r   r   r   r   )
rB   rC   rD   r   xiyir   res1interp_res2s
             r/   test_rerun_lwrk2_too_small4TestSmoothBivariateSpline.test_rerun_lwrk2_too_smallv  s     KKAr"KKAr"E[[Q$[[Q$qQrs#'a0rD'r1   c           	      ~   [        [        5       n[        R                  " SS5      n[        R                  " SS5      n[        R                  " SSSS9n[	        X#U5        S S S 5        S[        WR                  5      ;   d   e[        [        5       n[        R                  " SS5      n[        R                  " SS5      n[        R                  " SS5      n[        R                  " SSSS9n[	        X#XES9  S S S 5        S[        UR                  5      ;   d   e[        [        5       n[        R                  " S	S5      n[	        WWWUS9  S S S 5        S
[        UR                  5      ;   d   e[        [        5       nSn[	        WWWUS9  S S S 5        S[        UR                  5      ;   d   e[        [        5       n[	        WWWSSS9  S S S 5        S[        UR                  5      ;   d   e[        [        5       n[	        WWWS	S9  S S S 5        S[        UR                  5      ;   d   e[        [        5       n[	        WWWSS9  S S S 5        S[        WR                  5      ;   d   e[        [        5       n[	        WWWSS9  S S S 5        S[        UR                  5      ;   d   eg ! , (       d  f       GNW= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN^= f! , (       d  f       GN0= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f)Nr   rd  r   re  rg  rh  r	  ri  r   rj  rk  r   rl  rE  rm  r   r  ro   rn  rp  )r   r   r   r
   r   r  r  )rB   r  rC   rD   r   r   r   rq  s           r/   rr  ,TestSmoothBivariateSpline.test_invalid_input  sy   :&$C&AC&AC2.A!!*	 '
 7#djj/III:&$C&AC&AC&AC2.A!!/ ' :S_LLL:&$D$'A!!QQ/ ' &TZZ888:&$$D!!Q5 ' +c$**o===:&$!!QbR8 'L4:: 	  :&$!!QT2 '%TZZ888:&(!!Qs3 '-X^^1DDDD:&(!!Qs3 '-X^^1DDDDQ '& '& '&
 '&
 '&
 '& '& '&sa   AJ1A&K+$KK'K9LL L.1
K 
K
K$'
K69
L
L
L+.
L<c           
         [         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " / SQ5      n[        XX4USSS9n[        UR                  5       UR                  5       UR                  5       UR                  5       UR                  5       SSS9n[	        U" S	S
5      U" S	S
5      5        g )NrA  rB  rC  )	r!   r!   r!   r!   r!   r!   r!   r!   r!   )r   rF  r   rF  r!   )r   r   r*   r+   )r   r   r*   r+   r   r   )r   r   r   r!  r   )rB   rC   rD   r   r   r   r"  r   s           r/   r#  /TestSmoothBivariateSpline.test_array_like_input  s    HH01HH01HH01HH01xx,-$Q1qI$QXXZQXXZ*.++-188:()a1 	S#S#7r1   rf   N)rg   rh   ri   rj   rE   r]   r\  r  rr  r#  rk   rf   r1   r/   r~  r~  ?  s$    
X	N.>(*EX8r1   r~  c                   2    \ rS rSrS rS rS rS rS rSr	g)	TestLSQSphereBivariateSplinei  c                    Su  p[        SUS-
  -  SSUS-
  -  -
  U5      [        -  n[        SUS-
  -  SSUS-
  -  -
  U5      S-  [        -  n[        UR                  S   UR                  S   45      nUS S S2   nUS S S2   nUS S S2S S S24   n[	        X45      u  p[        U	R                  5       U
R                  5       UR                  R                  5       Xg5      nXl        Xl	        XvsU l
        U l        g )Nr   Z   r   r!   r   r   rn   )r
   r   r   r   r   r   rz  Tlut_lsqdatanew_lonsnew_lats)rB   nthetanphithetaphir  knotstknotspknotdatalatslonsr  s               r/   setup_method)TestLSQSphereBivariateSpline.setup_method  s    fqj)1sFQJ/?+?H2MsD1H~q3q>'94@2EJU[[^SYYq\23ssSqS!SqS>e)
*4::<+/66<<>6K	'-$t}r1   c                     [        U R                  R                  5       5      S:  d   e[        U R                  U R                  U R
                  5      U R                  5        g )NrL   )r?   r  r@   r   r  r  r  rB   s    r/   rE   1TestLSQSphereBivariateSpline.test_linear_constant  sF    4<<,,./%777!$,,t}}dmm"L"&))	-r1   c                     [        U R                  / / 5      [        R                  " S5      5        [        U R                  / / SS9[        R                  " S5      5        g Nr   Fr_  ra  )r   r  r   r   r  s    r/   r{   -TestLSQSphereBivariateSpline.test_empty_input  s@    !$,,r2"6H!$,,r2E,"BBHHTNSr1   c           
         Su  p[        SUS-
  -  SSUS-
  -  -
  U5      [        -  n[        SUS-
  -  SSUS-
  -  -
  U5      S-  [        -  n[        UR                  S   UR                  S   45      nUS S S2   nUS S S2   n[	        [
        5       n[        SSUS	9[        -  n	[        X5      u  p[        U
R                  5       UR                  5       UR                  R                  5       Xg5        S S S 5        S
[        WR                  5      ;   d   e[	        [
        5       n[        SSUS	9[        -  n	[        X5      u  p[        U
R                  5       UR                  5       UR                  R                  5       Xg5        S S S 5        S
[        UR                  5      ;   d   e[	        [
        5       n[        SSUS	9S-  [        -  n[        X<5      u  p[        UR                  5       UR                  5       UR                  R                  5       Xg5        S S S 5        S[        UR                  5      ;   d   e[	        [
        5       n[        SSUS	9S-  [        -  n[        X<5      u  p[        UR                  5       UR                  5       UR                  R                  5       Xg5        S S S 5        S[        UR                  5      ;   d   e[        X45      u  p[	        [
        5       n[        R                  " U5      nSUS'   [        UR                  5       UR                  5       UR                  R                  5       X5        S S S 5        S[        UR                  5      ;   d   e[	        [
        5       n[        R                  " U5      n[        US'   [        UR                  5       UR                  5       UR                  R                  5       X5        S S S 5        S[        UR                  5      ;   d   e[	        [
        5       n[        R                  " U5      nSUS'   [        UR                  5       UR                  5       UR                  R                  5       UU5        S S S 5        S[        UR                  5      ;   d   e[	        [
        5       n[        R                  " U5      nS[        -  US'   [        UR                  5       UR                  5       UR                  R                  5       UU5        S S S 5        S[        UR                  5      ;   d   e[	        [
        5       n[        / SQ5      n[        UR                  5       UR                  5       UR                  R                  5       XgUS9  S S S 5        S[        UR                  5      ;   d   e[	        [
        5       n[        UR                  5       UR                  5       UR                  R                  5       XgSS9  S S S 5        S[        UR                  5      ;   d   e[	        [
        5       n[        UR                  5       UR                  5       UR                  R                  5       XgSS9  S S S 5        S[        UR                  5      ;   d   eg ! , (       d  f       GN= f! , (       d  f       GN.= f! , (       d  f       GN= f! , (       d  f       GN$= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNA= f! , (       d  f       N= f)Nr  r   r!   r   r   rn   皙r   re  theta should be between [0, pi]r   皙?phi should be between [0, 2pi]ro   ztt should be between (0, pi)ztp should be between (0, 2pi)r7   	r   r   r=   r   r   r=   r   r   r   r	  rj  rn  rp  )r
   r   r   r   r   r   r   r   rz  r  r  r  r   r   r   )rB   r  r  r  r  r  r  r  rq  invalid_thetainvalid_latsr  invalid_phir  invalid_lonsinvalid_knotstinvalid_knotsp	invalid_ws                     r/   rr  /TestLSQSphereBivariateSpline.test_invalid_input  s   
+Q
1C-C!#%&sdQh'SD1H-=)=tDrIBNU[[^SYYq\23ssSqS:&($T3F;b@M!)-!=L$\%7%7%94::<%)VV\\^VE '
 1C4GGGG:&($S#6:R?M!)-!=L$\%7%7%94::<%)VV\\^VE '
 1C4GGGG:&("4&9C?"DK!)%!=D$TZZ\<3E3E3G%)VV\\^VE '
 03x~~3FFFF:&("383>CK!)%!=D$TZZ\<3E3E3G%)VV\\^VE '
 03x~~3FFFFe)
:&(WWV_N $N1$TZZ\4::<%)VV\\^^M '
 .X^^1DDDD:&(WWV_N "N1$TZZ\4::<%)VV\\^^M '
 .X^^1DDDD:&(WWV_N $N1$TZZ\4::<%)VV\\^V^M '
 /#hnn2EEEE:&(WWV_N !BN1$TZZ\4::<%)VV\\^V^M '
 /#hnn2EEEE:&(LMI$TZZ\4::<%+yB ' &X^^)<<<<:&($TZZ\4::<%+> ' .X^^1DDDD:&($TZZ\4::<%+> ' .X^^1DDDDQ '& '& '& '& '& '& '& '& '& '&
 '&s   A"Z(A"Z1<A%[A%[7A['A"[9A\,A&\A\/A]9A]
Z.1
[ 
[
[$'
[69
\
\
\,/
\>
]
]!c           	      T   Su  p[        SUS-
  -  SSUS-
  -  -
  U5      [        -  n[        SUS-
  -  SSUS-
  -  -
  U5      S-  [        -  n[        X45      u  pV[        UR                  S   UR                  S   45      nUS S S2   nUS S S2   n	[        UR                  5       R                  S   5      n
[        UR                  5       UR                  5       UR                  R                  5       XU
S9n[        UR                  5       R                  5       UR                  5       R                  5       UR                  R                  5       R                  5       UR                  5       U	R                  5       U
R                  5       S9n[        U" SS5      U" SS5      5        g )	Nr  r   r!   r   r   rn   r	  r   )
r
   r   r   r   r   rz  r   r  r!  r   )rB   r  r  r  r  r  r  r  r  r  r   r"  r   s                r/   r#  2TestLSQSphereBivariateSpline.test_array_like_input0  sw   
+Q
1C-C!#%&sdQh'SD1H-=)=!"$&'e)
U[[^SYYq\23ssSqS##A&' (

djjl(,!M (

(;(;(=(,

(;(;(=(,(=(=(?(.(.188:	G
 	"$sC.$sC.Ar1   )r  r  r  r  N
rg   rh   ri   rj   r  rE   r{   rr  r#  rk   rf   r1   r/   r  r    s     6$-
TREhBr1   r  c                   2    \ rS rSrS rS rS rS rS rSr	g)	TestSmoothSphereBivariateSplineiI  c                 x   [        S[        -  S[        -  S[        -  S[        -  S[        -  S[        -  S[        -  S[        -  S[        -  /	5      n[        S[        -  [        S[        -  S[        -  [        S[        -  S[        -  [        S[        -  /	5      n[        / SQ5      n[        XUSS9U l        g )NrX  r         ?r=   rC      _Br   )r   r   r   r'   )rB   r  r  rI  s       r/   r  ,TestSmoothSphereBivariateSpline.setup_methodJ  s    s2vs2vs2vr"ubeRUCF2vs2v' (R"Wb#(BGRr27B2X  -..u1Er1   c                     [        U R                  R                  5       5      S:  d   e[        U R                  / SQSS/5      SS/SS/SS//5        g )NrL   r<   r!   r=   r8   )r?   r'   r@   r   r  s    r/   rE   4TestSmoothSphereBivariateSpline.test_linear_constantR  sQ    488((*+e333!$((;3x"@$%q6Aq6Aq6":	<r1   c                     [        U R                  / / 5      [        R                  " S5      5        [        U R                  / / SS9[        R                  " S5      5        g r  )r   r'   r   r   r  s    r/   r{   0TestSmoothSphereBivariateSpline.test_empty_inputW  s@    !$((2r"2BHHUOD!$((2r(">Or1   c                    [        S[        -  S[        -  S[        -  S[        -  S[        -  S[        -  S[        -  S[        -  S[        -  /	5      n[        S[        -  [        S[        -  S[        -  [        S[        -  S[        -  [        S[        -  /	5      n[        / SQ5      n[        [        5       n[        S[        -  S[        -  S[        -  S[        -  S[        -  S[        -  S[        -  S[        -  S[        -  /	5      n[	        XRUSS9  S S S 5        S	[        WR                  5      ;   d   e[        [        5       n[        S[        -  S[        -  S[        -  S[        -  S[        -  S[        -  S[        -  S[        -  S
[        -  /	5      n[	        XRUSS9  S S S 5        S	[        UR                  5      ;   d   e[        [        5       n[        S[        -  [        S[        -  S[        -  [        S[        -  S[        -  [        S[        -  /	5      n[	        XUSS9  S S S 5        S[        UR                  5      ;   d   e[        [        5       n[        S[        -  [        S[        -  S[        -  [        S[        -  S[        -  [        S[        -  /	5      n[	        XUSS9  S S S 5        S[        UR                  5      ;   d   e[        [        5       n[        / SQ5      n[	        XX7SS9  S S S 5        S[        UR                  5      ;   d   e[        [        5       n[	        XUSS9  S S S 5        S[        UR                  5      ;   d   e[        [        5       n[	        XUSS9  S S S 5        S[        UR                  5      ;   d   e[        [        5       n[	        XUSS9  S S S 5        S[        UR                  5      ;   d   eg ! , (       d  f       GN= f! , (       d  f       GNR= f! , (       d  f       GN= f! , (       d  f       GNf= f! , (       d  f       GN-= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f)NrX  r   r  r=   rC  r  r  r   r  r  r  r   g @r  r   rJ   rj  r   s should be positivern  rp  )r   r   r   r   r   r  r  )rB   r  r  rI  rq  r  r  r  s           r/   rr  2TestSmoothSphereBivariateSpline.test_invalid_input[  s   sRxr38R"Wb2grBwRxr385 6R"Wb#(BGRr27B2X  -.:&(!4"9cBhb"r'#%7BGS2XsRx#&8#- .M (AF	 '
 1C4GGGG:&(!38S2XsRxb#%7BGS2XsRx#&8#- .M (AF	 '
 1C4GGGG:&(r2sRxb"cBh!#b"cBh!8 9K'AF ' 03x~~3FFFF:&(r2sRxb"cBh!#b"cBh!8 9K'AF ' 03x~~3FFFF:&(LMI'AdK ' &X^^)<<<<:&('A> '%X^^)<<<<:&('A4@ '-X^^1DDDD:&('A3? '-X^^1DDDDS '& '& '& '& '&
 '& '& '&sd   :AO#AO5AP$AP,P+7P=5Q3Q #
O25
P
P
P(+
P:=
Q
Q 
Q.c                    [         R                  " S[        -  S[        -  S[        -  S[        -  S[        -  S[        -  S[        -  S[        -  S[        -  /	5      n[         R                  " S[        -  [        S[        -  S[        -  [        S[        -  S[        -  [        S[        -  /	5      n[         R                  " / SQ5      n[         R                  " / SQ5      n[        XX4SS9n[        UR	                  5       UR	                  5       UR	                  5       UR	                  5       SS9n[        U" S	S	5      U" S	S	5      5        g )
NrX  r   r  r=   rC  )	r   r   r   r   r   r   r   r   r   r  r  r   )r   r   r   r   r!  r   )rB   r  r  rI  r   r"  r   s          r/   r#  5TestSmoothSphereBivariateSpline.test_array_like_input  s    #(C"HcBhRbr'38S2XsRxA BhhRS2XrBwC"Hb2gC"H& 'HH01HHBC +5qF +5<<>3::<+,88:tM!$sC.$sC.Ar1   )r'   Nr  rf   r1   r/   r  r  I  s     F<
P0EdBr1   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\R$                  R'                  5       \R$                  R)                  SSS/5      \R$                  R)                  S/ SQ5      S 5       5       5       r\R$                  R'                  5       \R$                  R-                  \R0                  S:*  SS9S 5       5       rSrg)TestRectBivariateSplinei  c                     [        / SQ5      n[        / SQ5      n[        / SQ/ SQ/ SQ/ SQ/ SQ/5      n[        XU5      n[        U" X5      U5        g )Nrm   r!   r7   r!   r7   r!   r!   r7   r8   r7   r!   r!   r7   r7   r7   r!   r   r   r   rB   rC   rD   r   r'   s        r/   test_defaults%TestRectBivariateSpline.test_defaults  sE    ++;{;{;OP!!a(!#a(1-r1   c           
      <   [        / SQ5      n[        / SQ5      n[        / SQ/ SQ/ SQ/ SQ/ SQ/5      n[        XU5      n/ SQn/ SQnUR                  XV5      n[        [        XV5       VV	s/ s H  u  pU" X5      S   PM     sn	n5      n
[	        Xz5        g s  sn	nf )Nrm   r  r  r  )r!   ffffff@g333333@r   ffffff
@333333?r8   )r!   r  r  r   g      @r   r8   r   )r   r   evrN  r   )rB   rC   rD   r   r'   r  r  zir   rS  zi2s              r/   test_evaluate%TestRectBivariateSpline.test_evaluate  s    ++;{;{;OP!!a(,,VVB^CK@K&"S[%K@AB$ As   -B
c           	         [        / SQ5      n[        / SQ5      n[        / SQ/ SQ/ SQ/ SQ/ SQ/5      n[        / SQ/ SQ/ SQ/ SQ/ SQ/5      S	-  n[        / S
Q/ S
Q/ SQ/ SQ/ S
Q/5      n[        / SQ/ SQ/ SQ/ SQ/ SQ/5      S	-  n[        XU5      n[        U" XSS9U5        [        U" XSS9U5        [        U" XSSS9U5        g )Nrm   r  r  r  r   r   ir   r   r   r   r   r   r   r   r   rU   r   r   r   r   ir   r   r   rU   rK   r   r!   r   r=   r   g      r   r7   rX  r         пr   (   ir      iig     @0@r   g     @0   r   rn   r   r      g     +r   g     +@ir!   dxdy)r  r  r  rB   rC   rD   r   r  r  dxdyr'   s           r/   test_derivatives_grid-TestRectBivariateSpline.test_derivatives_grid  s    ++;{;{;OPM,{+' ((*+M-0@m- .'(?1-A BBDE!!a(!#aQ-3!#aQ-3!#aQ!"4T:r1   c           
      F   [        / SQ5      n[        / SQ5      n[        / SQ/ SQ/ SQ/ SQ/ SQ/5      n[        / SQ5      n[        / SQ5      n[        / SQ5      S-  n[        XU5      n[        U" XS	S
S9U5        [        U" XS	S
S9U5        [        U" XS	S	S
S9U5        g )Nrm   r  r  r  r   r   gUUUUUU?r   r   rU   rK   r   r  r     A   r   7   r4         8@r!   F)r  r`  )r  r`  r  r  r`  r  r  s           r/   r   (TestRectBivariateSpline.test_derivatives  s    ++;{;{;OP>"#$%&s*!!a(!#aQE":2>!#aQE":2>!#aQ!"?Er1   c           	      t    [         R                  " U VVs/ s H  o2  H  oCU/PM     M     snn5      $ s  snnf )a;  
Create an array of (xi, yi) pairs for all xi in x and yi in y,
and reshape it to the desired shape.

Parameters
----------
x : array_like
    1D array of x-values.
y : array_like
    1D array of y-values.
dest_shape : tuple
    Desired output shape.

Returns
-------
np.ndarray
    Reshaped array of (x, y) pairs.
)r   r   )rB   rC   rD   r  r  s        r/   make_pair_grid&TestRectBivariateSpline.make_pair_grid  s/    & xxA:Ab"bA:;;:s   4
c                 J   [        / SQ5      n[        / SQ5      n[        / SQ/ SQ/ SQ/ SQ/ SQ/5      n[        / SQ/ SQ/ SQ/ SQ/ SQ/5      S	-  n[        / S
Q/ S
Q/ SQ/ SQ/ S
Q/5      n[        / SQ/ SQ/ SQ/ SQ/ SQ/5      S	-  n[        XU5      n[        U5      nSS/U4SS/U4SS/U44 Ho  u  pUR                  " U	6 " X5      nUR	                  U	5      " U R                  X5      5      R                  U
R                  5      n[        X5        [        X5        Mq     g )Nrm   r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r!   r   )	r   r   r0   partial_derivativer   r  r&   r   r   )rB   rC   rD   r   r  r  r   r'   lut_ndbsplineordersexpectedactual_rect
actual_ndbs                r/   #test_partial_derivative_method_grid;TestRectBivariateSpline.test_partial_derivative_method_grid  sG   /"/"?""""	$ %
 %$#%#	% & )+	+
 %%()%	' (
 +1'1'	) * -/	/
 "!*,S1#$a&"A|q!fd^ LF00&9!?K&11&9##A)ghnn%  &k<%j; !Mr1   c                 6   [        / SQ5      n[        / SQ5      n[        / SQ/ SQ/ SQ/ SQ/ SQ/5      n[        / SQ5      [        / SQ5      [        / SQ5      S-  S	.n[        XU5      n[        U5      nU R                  X5      n[        R
                  " [        U5      5      nXx[        U5      -  U-      n	UR                  5        HM  u  pU
u  pUR                  X5      " XS
S9n[        X5        UR                  X/5      " U	5      n[        X5        MO     g )Nrm   r  r  r  r  r  r  r
  ))r!   r   )r   r!   r   Fr_  )r   r   r0   r  r   r   r$   itemsr  r   r   )rB   rC   rD   r   r  r'   r  pointsdiag_idxdiag_pointsr  expected_valsr  r  
actual_rbsr  s                   r/   test_partial_derivative_method6TestRectBivariateSpline.test_partial_derivative_method  s	   /"/"?""""	$ % ,-././#5
 "!*,S1$$Q* 99SV$A.9:%-^^%5!FFB//75IJ%j@ '112(;KHJ%j@ &6r1   c                    [        / SQ[        S9nUR                  5       n[        UR                  UR                  45      n[        XU5      n[        U5      n[        [        5         UR                  SS5        S S S 5        UR                  SS/5      R                  S:H  R                  5       (       d   eg ! , (       d  f       ND= f)N)r   r!   r7   r8   rU   r   rU   r!   ro   )r   r   r   r   sizer   r0   r   r   r  r   r.   all)rB   rC   rD   r   r'   r  s         r/   'test_partial_derivative_order_too_large?TestRectBivariateSpline.test_partial_derivative_order_too_large&  s    //FFH!&&!&&!"!!*,S1:&""1a( ' ((!Q022c9>>@@@@ '&s   (B99
Cc           
          [        / SQ5      n[        / SQ5      n[        / SQ/ SQ/ SQ/ SQ/ SQ/5      n[        XU5      n[        U" X5      U" US S 2S 4   US S S 24   SS95        g )Nrm   r  r  r  Fr_  )r   r   r   r  s        r/   test_broadcast&TestRectBivariateSpline.test_broadcast1  s^    ++;{;{;OP!!a(A	3q4y!DF)%#HIr1   c           	         [        [        5       n[        / SQ5      n[        / SQ5      n[        / SQ/ SQ/ SQ/ SQ/ SQ/5      n[        X#U5        S S S 5        S[	        WR
                  5      ;   d   e[        [        5       n[        / SQ5      n[        / SQ5      n[        / SQ/ SQ/ SQ/ SQ/ SQ/5      n[        X#U5        S S S 5        S[	        UR
                  5      ;   d   e[        [        5       n[        / SQ5      n[        / SQ5      n[        / SQ/ SQ/ SQ/ SQ/5      n[        X#U5        S S S 5        S	[	        UR
                  5      ;   d   e[        [        5       n[        / SQ5      n[        / SQ5      n[        / S
Q/ S
Q/ SQ/ SQ/ S
Q/5      n[        X#U5        S S S 5        S[	        UR
                  5      ;   d   e[        [        5       n[        / SQ5      n[        / SQ5      n[        / SQ/ SQ/ SQ/ SQ/ SQ/5      nSn[        X#XES9  S S S 5        S[	        UR
                  5      ;   d   e[        [        5       n[        WWWSS9  S S S 5        S[	        UR
                  5      ;   d   eg ! , (       d  f       GN3= f! , (       d  f       GN= f! , (       d  f       GNt= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f)N)r   r7   r8   rU   rn   rm   r  r  r  x must be strictly increasing)r7   r7   r8   rU   rn   y must be strictly increasingz7x dimension of z must have same number of elements as x)r!   r7   r!   r7   )r!   r7   r8   r7   )r!   r7   r7   r7   z7y dimension of z must have same number of elements as yrk  r   rl  r   r   r  )r   r   r   r   r  r  )rB   r  rC   rD   r   r   s         r/   rr  *TestRectBivariateSpline.test_invalid_input8  s^   :&$o&Ao&A&9 :Aa( ' /#djj/AAA:&$o&Ao&A&9 :Aa( ' /#djj/AAA:&$o&Ao&A&( )Aa( ' Idjj/" 	" " :&$o&Ao&A|\<#\3 4Aa( ' Idjj/" 	" " :&$o&Ao&A&9 :A$Da3 ' +c$**o===:&$1a40 '%TZZ888[ '& '& '& '& '& '&sK   AI=AJ6>J!&AJ3AKK=
J
J!
J03
K
K
K$c                 V   [        / SQ5      n[        / SQ5      n[        / SQ/ SQ/ SQ/ SQ/ SQ/5      n[        / SQ5      n[        XX4S9n[        UR                  5       UR                  5       UR                  5       UR                  5       S9n[        U" SS5      U" SS5      5        g )Nrm   r  r  r  )r!   rn   r!   rn   r   r   )r   r   r!  r   )rB   rC   rD   r   r   r"  r   s          r/   r#  -TestRectBivariateSpline.test_array_like_inputi  s    /"/"?O_"O5 6\""16"188:qxxz188:(,7!$sC.$sC.Ar1   c                 V   Sn[         R                  R                  S[         R                  U5      n[         R                  R                  SS[         R                  -  U5      n[         R                  " U5      n[        X#USS9nSnSn[         R                  " U5      U-  [         R                  -  n[         R                  " U5      U-  S-  [         R                  -  n	U" X5        UR                  5       n
SU
S'   [        [        5       nU" X5        S S S 5        S	[        WR                  5      ;   d   eU	R                  5       nSUS'   [        [        5       nU" X5        S S S 5        S
[        UR                  5      ;   d   eg ! , (       d  f       Nz= f! , (       d  f       N;= f)Nrh  r   r7   r   r   r   r8   MbP?r+  r,  )r   randomuniformr   r   r   r   r   r   r   r  r  )rB   NSampThetaPhiDataInterpolatorNLonNLatGridPosLatsGridPosLonsnonGridPosLatsrq  nonGridPosLonss                r/   test_not_increasing_input1TestRectBivariateSpline.test_not_increasing_inputu  sK   		!!!RUUE2ii1ruu9e4wwu~25tsKiio,ruu4iio,q02558 	[.$))+!q:&(5 '.#hnn2EEEE$))+!q:&(5 '.#hnn2EEEE '& '&s   	F		F	
F
F(c                    [         R                  R                  S5      n[         R                  " U5      n[         R                  " U5      nUR	                  SSX45      nXEUR                  [         R                  5      4$ )Nr!   r   r   )r   r2  default_rngr   integersastypefloat64)rB   r,   r-   rngrC   rD   r   s          r/   _sample_large_2d_data-TestRectBivariateSpline._sample_large_2d_data  s\    ii##A&IIbMIIbMLLC"*QXXbjj)))r1   r   )^  iR  )i     s_tols))r   -q=gHz>)r!   gy&1|?-C6?)r8   {Gz?rM  c                     Uu  p4Uu  pVnU R                  X45      u  pn
[        XXS9nU" X5      n[        R                  " U5      R	                  5       (       a   e[        XXgS9  g )Nr   rN   rtolrG  r   r   isnananyr   )rB   r   rK  r,   r-   rJ   rN   rQ  rC   rD   r   rP   z_spls                r/   test_spline_large_2d,TestRectBivariateSpline.test_spline_large_2d  sd     ,,R4a!!/A	88E?&&(()(t7r1   l        z2Segfaults on 32-bit system due to large input data)reasonc                     Su  pSu  p4nU R                  X5      u  pgn[        XgXSS9n	U	" Xg5      n
[        R                  " U
5      R	                  5       (       a   e[        XXES9  g )N)r   i  )r7   rN  rL  r  )rJ   maxitrP  rR  )rB   r,   r-   rJ   rN   rQ  rC   rD   r   rP   rU  s              r/   test_spline_large_2d_maxit2TestRectBivariateSpline.test_spline_large_2d_maxit  sf    
 &,,R4a!!b9A	88E?&&(()(t7r1   rf   N)rg   rh   ri   rj   r  r  r  r   r  r  r   r%  r(  rr  r#  r?  rG  r.  r<  slowr=  rV  skipifsysmaxsizer[  rk   rf   r1   r/   r  r    s    .%;
F<* <DAB	AJ/9b
BF:* [[[[Wz;&?@[[X (9 :	8: A 
	8 [[[[u, 6O P	8P 	8r1   r  c                   J    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rSrg)TestRectSphereBivariateSplinei  c           
          [        SS[        -  S-
  S5      n[        S[        S-
  S5      n[        / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[        X!U5      n[	        U" X!5      U5        g N{Gz?r7   ru   r!   r7   r!   r7   r!   r7   r!   r!   r7   r8   r7   r!   r7   r!   r!   r7   r7   r7   r!   r7   r!   )r
   r   r   r   r   rB   rD   rC   r   r'   s        r/   r  +TestRectSphereBivariateSpline.test_defaults  se    T1R49a(T2d7A&???"??"$ % (A.!#a(1-r1   c           
      j   [        SS[        -  S-
  S5      n[        S[        S-
  S5      n[        / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[        X!U5      n/ SQn/ SQnUR	                  Xe5      n[        [        Xe5       VV	s/ s H  u  pU" X5      S	   PM     sn	n5      n
[        Xz5        g s  sn	nf )
Nre  r7   ru   rf  rg  rh  )r   r!   r  g@rF  gQ@g      @)r=   rM  r  g?gjt?r   rM  r   )r
   r   r   r   r  rN  r   )rB   rD   rC   r   r'   r  r  r  r   rS  r  s              r/   r  +TestRectSphereBivariateSpline.test_evaluate  s    T1R49a(T2d7A&???"??"$ % (A.16VVB^CK@K&"S[%K@AB$ As   B/
c                    [         R                  " [         R                  " S[         R                  " SSS5      -
  5      R                  [         R                  " S[         R
                  " [         R                  " SSS5      5      -
  5      5      R                  n[        [        5       n[         R                  " S	S
S5      [         R                  -  S-  n[         R                  " SSS5      [         R                  -  S-  n[        X4U5        S S S 5        S[        WR                  5      ;   d   e[        [        5       n[         R                  " SSS5      [         R                  -  S-  n[         R                  " SSS5      [         R                  -  S-  n[        X4U5        S S S 5        S[        UR                  5      ;   d   e[        [        5       n[         R                  " SS
S5      [         R                  -  S-  n[         R                  " SSS5      [         R                  -  S-  n[        X4U5        S S S 5        S[        UR                  5      ;   d   e[        [        5       n[         R                  " SS
S5      [         R                  -  S-  n[         R                  " SSS5      [         R                  -  S-  n[        X4U5        S S S 5        S[        UR                  5      ;   d   e[        [        5       n[         R                  " SS
S5      [         R                  -  S-  n[         R                  " SSS5      [         R                  -  S-  n[        X4US	S9  S S S 5        S[        UR                  5      ;   d   eg ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN|= f! , (       d  f       N= f! , (       d  f       Nq= f)N     V@      T      T@        f@ro        u@rv   rK   rJ  r   rI  u should be between (0, pi)r      K v[0] should be between [-pi, pi)h  "v[-1] should be v[0] + 2pi or lessr   r  r   dot
atleast_2dr
   r  r?   r   r   r   r   r  r  rB   r  rq  r  r  s        r/   rr  0TestRectSphereBivariateSpline.test_invalid_input  s   vvbmmC"++dC*D$DEGGmmD266"++b$2J+K$KLNNOa 	 :&(;;r3*RUU2T9D;;q#r*RUU2T9D%d$7 ' -HNN0CCCC:&(;;r3*RUU2T9D;;q#r*RUU2T9D%d$7 ' -HNN0CCCC:&(;;r3*RUU2T9D;;tR,ruu4t;D%d$7 ' 2S5HHHH:&(;;r3*RUU2T9D;;sC,ruu4t;D%d$7 ' 4s8>>7JJJJ:&(;;r3*RUU2T9D;;r3+bee3d:D%d$"= ' &X^^)<<<<9 '& '& '& '& '&A   )A%N A%NA%N1.A%OA$O
N
N.1
O 
O
O"c                    [        SS[        -  S-
  S5      n[        S[        S-
  S5      n[        / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[        X!U5      n[        SS[        -  S-
  S5      n[        S[        S-
  S5      n[	        U" X!SS	9[        XBUSS
9SSS9  [	        U" X!SS9[        XBUSS9SSS9  [	        U" X!SSS9[        XBUSSSS9SSS9  [        U" X!SS	9UR                  SS5      " X!5      5        [        U" X!SS9UR                  SS5      " X!5      5        [        U" X!SSS9UR                  SS5      " X!5      5        [        U" X!SSS9UR                  SS5      " X!SS95        [        U" X!SSS9UR                  SS5      " X!SS95        [        U" X!SSSS9UR                  SS5      " X!SS95        g )Nre  r7   ru   rf  rg  rh  rN  r!   )dthetar  rM  rQ  rN   )dphir  )r  r  ư>r  r  ro  r1  r   Fr  r`  r_  r  r`  r  r  r`  )r
   r   r   r   r   _numdiff_2dr   r  ri  s        r/   r  3TestRectSphereBivariateSpline.test_derivatives_grid  s   T1R49a(T2d7A&???"??"$ % (A.T1R49a(T2d7A&A+[q-I!	.Aq);sqQ+G!	.A3#CA!tD!	. 	A+11!Q7=	?Aq)11!Q7=	?A311!Q7=	? 	A711!Q75I	KAqu511!Q75I	KA?11!Q75I	Kr1   c                   ^ [        SS[        -  S-
  S5      n[        S[        S-
  S5      n[        / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[        X!U5      m[        SS[        -  S-
  S5      n[        S[        S-
  S5      nT" X!SS	S
9R                  UR                  :X  d   e[        T" X!SS	S
9[        U4S jX!SS9SSS9  [        T" X!SS	S9[        U4S jX!SS9SSS9  [        T" X!SSS	S9[        U4S jX!SSSS9SSS9  g )Nre  r7   ru   rf  rg  rh  rN  r!   Fr  c                    > T" XSS9$ NFr_  rf   rC   rD   r'   s     r/   <lambda>@TestRectSphereBivariateSpline.test_derivatives.<locals>.<lambda>"      AU0Cr1   r  rM  r  r  c                    > T" XSS9$ r  rf   r  s     r/   r  r  %  r  r1   r  r  c                    > T" XSS9$ r  rf   r  s     r/   r  r  (  r  r1   r  r  r1  )r
   r   r   r   r   r   r  ri  s       @r/   r   .TestRectSphereBivariateSpline.test_derivatives  s   T1R49a(T2d7A&???"??"$ % (A.T1R49a(T2d7A&1.44???A7#$CQaP!	. 	Aqu5#$CQaP!	. 	A?#$C$%Q1$@!	.r1   c                    [         R                  " [         R                  " S[         R                  " SSS5      -
  5      R                  [         R                  " S[         R
                  " [         R                  " SSS5      5      -
  5      5      R                  n[        [        5       n[         R                  " S	S
S5      [         R                  -  S-  n[         R                  " S	SS5      [         R                  -  S-  n[        X4U5        S S S 5        S[        WR                  5      ;   d   e[        [        5       n[         R                  " SSS5      [         R                  -  S-  n[         R                  " S	SS5      [         R                  -  S-  n[        X4U5        S S S 5        S[        UR                  5      ;   d   e[        [        5       n[         R                  " SS
S5      [         R                  -  S-  n[         R                  " SSS5      [         R                  -  S-  n[        X4U5        S S S 5        S[        UR                  5      ;   d   e[        [        5       n[         R                  " SS
S5      [         R                  -  S-  n[         R                  " SSS5      [         R                  -  S-  n[        X4U5        S S S 5        S[        UR                  5      ;   d   e[        [        5       n[         R                  " SS
S5      [         R                  -  S-  n[         R                  " SSS5      [         R                  -  S-  n[        X4USS9  S S S 5        S[        UR                  5      ;   d   eg ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN|= f! , (       d  f       N= f! , (       d  f       Nq= f)Nrn  ro  rp  rq  rr  ro   rs  rv   r   rJ  rI  rt  r      rv  rw  rx  ry  rz  rK   r   r  r{  r~  s        r/   test_invalid_input_22TestRectSphereBivariateSpline.test_invalid_input_2,  s   vvbmmC"++dC*D$DEGGmmD266"++b$2J+K$KLNNOa 	 :&(;;q#q)BEE1D8D;;q#r*RUU2T9D%d$7 ' -HNN0CCCC:&(;;r3*RUU2T9D;;q#r*RUU2T9D%d$7 ' -HNN0CCCC:&(;;r3*RUU2T9D;;tR,ruu4t;D%d$7 ' 2S5HHHH:&(;;r3*RUU2T9D;;sC,ruu4t;D%d$7 ' 4s8>>7JJJJ:&(;;r3*RUU2T9D;;r3+bee3d:D%d$"= ' &X^^)<<<<9 '& '& '& '& '&r  c           
      P   [        SS[        -  S-
  S5      n[        S[        S-
  S5      n[        / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[        X!U5      n[        UR	                  5       UR	                  5       UR	                  5       5      n[        U" X!5      U" X!5      5        g rd  )r
   r   r   r   r!  r   )rB   rD   rC   r   r"  r   s         r/   r#  3TestRectSphereBivariateSpline.test_array_like_inputN  s    T1r6D=!,T29a((*?((*?((	* + )q1(QXXZL!$q*d1j9r1   c                 $   [         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " X5      nUS   US   -   n[         R                  " U5      n[         R                  " U5      n[	        XVU5      n[         R                  " [         R                  " SS/5      5      n[         R                  " [         R                  " SS/5      5      n	U" X5      n
[         R                  " S	S
/SS//5      n[        X5        g )N)r     #   r  -   )iiir   r   r!   r  g     B@r  g     `Sg     Fg=Eg     HgDioEG)r   r   r   radiansr   r   )rB   r  r  meshr  lat_rlon_rinterpolator	query_lat	query_londata_interpanss               r/   test_negative_evaluation6TestRectSphereBivariateSpline.test_negative_evaluation\  s    xx,-xx01{{4&Awa 

4 

4 0tDJJrxxT
34	JJrxxe56	"98hh
+!9-/ 0!+3r1   c           	         [         R                  " SS5      [         R                  -  S-  n[         R                  " SS5      [         R                  -  S-  n[         R                  " S5      nS H  n[	        XUSUS9  M     g )Nr!   r   )rv   rv   ))TT)TF)FFr   )rJ   pole_continuity)r   r   r   r   r   )rB   uvrI  ps        r/   test_pole_continuity_gh_14591;TestRectSphereBivariateSpline.test_pole_continuity_gh_14591k  sf     IIaruu$r)IIaruu$r)HHV>A%aAAF ?r1   rf   N)rg   rh   ri   rj   r  r  rr  r  r   r  r#  r  r  rk   rf   r1   r/   rb  rb    s4    .% =D KD.0 =D:4Gr1   rb  c                 |   US:X  a  US:X  a  U " X5      $ US:X  a#  US:X  a  U " X-   U5      U " X-
  U5      -
  SU-  -  $ US:X  a#  US:X  a  U " XU-   5      U " XU-
  5      -
  SU-  -  $ US:X  aF  US:X  a@  U " X-   X%-   5      U " X-
  X%-   5      -
  U " X-   X%-
  5      -
  U " X-
  X%-
  5      -   SU-  S-  -  $ [        S5      e)Nr   r!   r7   zinvalid derivative order)r   )funcrC   rD   r  r  ro  s         r/   r  r  z  s    	Qw27Az	qR1WQWa 4#33#>>	qR1WQC 4s7#33#>>	qR1WQWag&agqw)??qw()+/+ABFGeaZP 	P 344r1   c                   <    \ rS rSrSrS rS rS rS rS r	S r
S	rg
)Test_DerivedBivariateSplinei  z_Test the creation, usage, and attribute access of the (private)
_DerivedBivariateSpline class.
c                    [         R                  " [        [        [	        S5      [	        S5      5      5      5      n[         R                  " [        [        [	        S5      [	        SS5      5      5      5      n[         R                  " [         R
                  " SSS5      [         R
                  " SSS5      45      n[        R                  " [        SS9   [        XU[        SSS	5      [        S
SS	5      SS9U l
        S S S 5        [        XU5      U l        [        SSS5      nUS-   n[        [	        UR                  5       Vs/ s H  n[         R                  " X65      PM     sn5      n[!        XEU5      U l        [        [$        R&                  " [	        S5      [	        S5      5      5      U l        g ! , (       d  f       N= fs  snf )Nr   r!      r8   rD  r  r   g     3@rU   r=   g     4@re  rn  r   rh  r   )r   concatenatelistrN  r   r
   r.  r/  r0  r   r  r   
lut_smoothr   r#  rollr   lut_rect	itertoolsproductr  )rB   rC   rD   r   r   r   izzs           r/   r  (Test_DerivedBivariateSpline.setup_method  sB   NN4E"IuRy 9:;NN4E"IuQ| <=>NNBKK1b12;;q!R3HIJ\\+-OP-aA.6sD!.D.6sD!.D268DL Q
 0a8aB#X5=9=aBGGAM=9:+BB79,,U1XuQx@A QP :s   )F5 G5
Gc           	          U R                    HA  u  pU R                  R                  X5      nU" SSSS9nU R                  SSXSS9nXE:X  a  MA   e   g )Nr   Fr_  r  )r  r  r  rB   nuxnuylut_derr   r   s         r/   test_creation_from_LSQ2Test_DerivedBivariateSpline.test_creation_from_LSQ  sS    HCll55c?GSu-AS##EBA6M6	 $r1   c           	          U R                    HA  u  pU R                  R                  X5      nU" SSSS9nU R                  SSXSS9nXE:X  a  MA   e   g )Ng      @Fr_  r  )r  r  r  r  s         r/   test_creation_from_Smooth5Test_DerivedBivariateSpline.test_creation_from_Smooth  sS    HCoo88BGSu-ASSuEA6M6	 $r1   c           	      .   U R                    H  u  pU R                  R                  X5      n[        U R                  5      nUR	                  X45      nU" SSSS9nU" S/5      nU R                  SSXSS9nU" S/X4S9n	Xh:X  d   e[        Xy5        M     g )Nr   r=   Fr_  )r   r=   r  rV   )r  r  r  r0   r   r   )
rB   r  r  r  lut_ndsplinelut_der_ndbspliner   a_ndbspliner   b_ndbsplines
             r/   test_creation_from_Rect3Test_DerivedBivariateSpline.test_creation_from_Rect  s    HCmm66s@G/>L , 7 7
 CSu-A+ZL9Kc33UCA&
|
CK6M69 $r1   c                 \   U R                   R                  SS5      n[        U R                   5      nUR                  S5      n[	        [
        5         UR                    S S S 5        [	        [
        5         UR                    S S S 5        g ! , (       d  f       N3= f! , (       d  f       g = f)Nr!   r   )r  r  r0   r   r   AttributeErrorfp)rB   derr  der_ndbsplines       r/   test_invalid_attribute_fp5Test_DerivedBivariateSpline.test_invalid_attribute_fp  ss    mm..q!4+DMM:$//7>*FF +>* +* +***s   B6B
B
B+c                     U R                   R                  SS5      n[        [        5         UR	                  5         S S S 5        g ! , (       d  f       g = fr    )r  r  r   r  r@   )rB   r  s     r/   #test_invalid_attribute_get_residual?Test_DerivedBivariateSpline.test_invalid_attribute_get_residual  s8    oo00A6>* +**s   A
A)r  r  r  r  N)rg   rh   ri   rj   __doc__r  r  r  r  r  r  rk   rf   r1   r/   r  r    s&    B 
:r1   r  )r   r   g:0yE>)2r  r_  r  numpyr   r.  r   r   scipy._lib._array_apir   r   r   r   r   r	   r
   r   r   r   r   scipy.interpolate._fitpack_pyr   r   r   r   scipy.interpolate._fitpack2r   r   r   r   r   r   r   r   r   scipy._lib._testutilsr   scipy.interpolater   r   r0   r3   r?  r~  r  r  r  rb  r  r  rf   r1   r/   <module>r     s     
    *  C B B K K# # # : 4,C7 C7LV6 V6r~8 ~8BFB FBRRB RBjX8 X8v~G ~GB5: :r1   