
    Bpj'                       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 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      r0 " S S5      r1 " S S5      r2SS jr3 " S S5      r4g)    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	NdBSpline)_regrid_ndbspline_call_like_bivariatec                     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/pdf-tiff/venv/lib/python3.13/site-packages/scipy/interpolate/tests/test_fitpack2.pyconvert_to_ndbspliner2      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 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#         r:   r:   r:   r#   kr:   g|=r#         ?r9   r   r   r$   r'   absget_residualselfxyr)   s       r1   test_linear_constant)TestUnivariateSpline.test_linear_constant#   sl    qQ'!#--/Aq6:!#.."2QF;3##%&...!#k"2I>r3   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 )	Nr8   r;   r#   r<   )r=   srI   V瞯<atol)r   r   r&   r   tr$   r0   r'   )rD   rI   rE   rF   r)   spls         r1   test_linear_constant_periodic2TestUnivariateSpline.test_linear_constant_periodic,   s_    qQ'!!s1vw?aS]]_5As~~/e<r3   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 )Nr8   r   r9      r#   r<   r9   nu)r?   r9         @)r   r   )rD   rE   rF   r)   args        r1   test_preserve_shape(TestUnivariateSpline.test_preserve_shape6   s    qq)SzU3s8_,,,SzU3sq>2222SzU3s8_,,,SzU3sq>2222r3   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 )Nr8   rV   r#   r<   r:   r   rW   rN   r>   )r   r#   r9   r@   rC   s       r1   test_linear_1d#TestUnivariateSpline.test_linear_1dA   sk    qQ'!#--/1Q%8!#.."2Aa593##%&...!#i.9r3   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>.ZeroSplineM   c                     S[        U5      -  $ )Nr   )r   )rD   rE   s     r1   __call__BTestUnivariateSpline.test_subclassing.<locals>.ZeroSpline.__call__N   s    qz!r3    N)__name__
__module____qualname____firstlineno__rf   __static_attributes__rh   r3   r1   
ZeroSplinerc   M   s    "r3   rn   r#   r9   r:   rW      )r:   r9   r:   r9   r:   r9   r<   r?   rZ           )r   r   )rD   rn   sps      r1   test_subclassing%TestUnivariateSpline.test_subclassingJ   s5    	") 	" [A6C:R1r3   c                 ^    / SQn/ SQn[        XSS9n[        U" / 5      [        / 5      5        g )Nr#   r:   rp      	   r   rW   rx         r:   r<   )r   r   r   rD   rE   rF   rR   s       r1   test_empty_input%TestUnivariateSpline.test_empty_inputT   s*    qq)Br+r3   c                 b    / SQn/ SQn[        XSS9n[        UR                  5       S   S5        g )Nrv   ry   r:   r<   r   g7ã?)r   r   rootsr|   s       r1   
test_rootsTestUnivariateSpline.test_roots[   s-    qq)CIIKN,=>r3   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     rL   )npr
   r   cosr   r&   r   r|   s       r1   test_roots_length&TestUnivariateSpline.test_roots_lengtha   sN    KK2:t,FF1Iqq)399;2%%%r3   c                 b    / SQn/ SQn[        XSS9n[        UR                  S5      / SQ5        g )Nrv   ry   r:   r<         @)g;@gpZ<o?gOmǿg      ?)r   r   derivativesr|   s       r1   test_derivatives%TestUnivariateSpline.test_derivativesg   s/    qq)COOC0F	Hr3   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   r:          @r9   r   r   )g     F@g     C@g      6@      @rN   rO   )rL   r=   )r   aranger   r   r   r   r   )rD   rE   rF   tckdersrR   s         r1   test_derivatives_2'TestUnivariateSpline.test_derivatives_2n   sx    IIaLqD2ad7NQQa~ # #		$
 qqA.*"	$r3   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Ϡrq   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)rE   rF   wrL   )gJdv?gc?g=?gt?皙?      ??gGz?gMb@?rO   )r   r   r   )rD   rE   rF   r   rR   desireds         r1   test_resize_regression+TestUnivariateSpline.test_resize_regression~   sD     15HI12G$Gr3   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 )Nrp   dtyper:      d   r   rq         @rM   )rE   rF   )r   extrapolate)extgؗҜ<rO   )r#   zeros)r9   raise)r:   constgؗҬ<rW   r#   r9   )rM   unknown)rE   rF   r   )r   r   floatr
   copy
logical_orr   r   r   assert_raises
ValueErrordictr$   r   )
rD   rE   rF   xpxp_zerosxp_clipclsrR   r   rQ   s
             r1   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-/ #r3   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   
   )rM   e   bbox)r   r   r
   r   r   r   )rD   xsysknotsr   s        r1   test_lsq_fpchec$TestUnivariateSpline.test_lsq_fpchec   sQ    YYs^b YYs^b Ar2&j"5ru	!r3   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   r:   r   r9   333333?g333333?皙?)r   r
   r   r   antiderivative
derivativer   integral)rD   rE   rF   rR   spl2s        r1   "test_derivative_and_antiderivative7TestUnivariateSpline.test_derivative_and_antiderivative   s    KK1b!1$FF1Iqq)!!!$//2C$s),!!!$S	DI-S#.	0r3   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#   r9   rW      g      !@)r   皙??rZ   rp   r   r:   )r   r=   )rM   r   g      rx   g      #@r   rN   rO   )r   r   r   r   
zeros_like)rD   x_valuesy_valuesfrE   s        r1   test_derivative_extrapolation2TestUnivariateSpline.test_derivative_extrapolation   sA     %*XWB%q)2==+;%Hr3   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 )	Nrq   r   rw   rW   r   )rL   r   )r#   r#   )r#   rp   )r9   rp   r   r   )r   )r   rM   rN   )r   r
   ranger   rA   r   )rD   rE   r   r   abs         r1   test_integral_out_of_bounds0TestUnivariateSpline.test_integral_out_of_bounds   s\     KKB"8C 4A61::a+,u4446 r3   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   r:   Tcheck_finiterW   rM   rE   rF   r   )rE   rF   rQ   r   )rE   rF   r   r   rE   rF   rQ   r   r   )r   r   r   	ones_liker   r$   naninfr   r   r   r   r   )rD   rE   rF   r   rR   rQ   y_endzs           r1   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 +r3   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   r:   r   r#   Tr   rW   )rE   rF   r   rL   r   r   )rE   rF   rL   r   r   )r   r   r   r   r   r$   r   r   r   r   r   rD   xxyyrE   rF   r   rR   rQ   s           r1   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	5r3   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   r:   r   r   r#   Tr   rW   r   r   )r   r   r   r   r   r$   r   r   r   r   r   r   s           r1   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=	?r3   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   rZ   !x and y should have a same lengthr   r   r   rZ   gffffff@r   r   r   r   r   %x, y, and w should have a same lengthrM   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rD   infor   r   w_valuesr   s         r1   (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  rM   r   r  r   r<   r  )r   r   r   r  r  r  s         r1   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   r:   rW   r  r  )r   r   r   r   r  r  z;Interior knots t must satisfy Schoenberg-Whitney conditionsmatch)r   r   rM   r  r   r<   r  )r   r$   r   r   r   r  r  )	rD   r   r   rR   t_valuesr  r  messager   s	            r1   ,test_invalid_input_for_lsq_univariate_splineATestUnivariateSpline.test_invalid_input_for_lsq_univariate_splineU  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   )rE   rF   r   r   r   )r   r   r   tolistr   )rD   r   r   r  r   spl1r   s          r1   test_array_like_input*TestUnivariateSpline.test_array_like_inputw  s    88-.88568856xxs$((%)+  (//"3x7H"*//"3$++-I 	2323	5r3   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   )mrq   rq   rq   rq   rq   %@rq         &@rq   rq   rq   r)  rq   rq   rq   rq   rq   rq   r)  rq   rq   rq   r*  rq   rq   rq   r)  rq   rq   rq         %@rq   rq   rq   ffffff%@rq   rq   rq   r*  rq   rq   rq   rq   rq   rq   r)  rq   rq   r,  rq   rq   rq   333333%@rq   rq   rq   r+  rq   rq   r,  rq   rq   r+  rq   rq   g      '@rq   rq   rq   r,  rq   rq   r,  rq   rq   r)  rq   rq   皙%@rq   rq   rq   r,  rq   rq   r-  rq   rq   rq   $@rq   rq   r-  rq   rq   r+  rq   rq   rq   r,  rq   rq   rq   r/  rq   rq   rq   r.  rq   z2does not satisfy the condition abs\(fp-s\)/s < tolr  r#   r<   )r   pytestwarnsUserWarningr   )rD   rE   rF   msgs       r1   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   r:   r   r#   Tr   c                     U" U5        g Nrh   )_interprE   s      r1   	worker_fn8TestUnivariateSpline.test_concurrency.<locals>.worker_fn  s	    1Ir3   r   )r   r   r   r   r   )rD   r   r   rE   rR   r;  s         r1   test_concurrency%TestUnivariateSpline.test_concurrency  sY     YYs%(UIIc't!rD9	 	 IA6r3   c                    [         R                  " / SQ5      n[         R                  " / SQ5      nUR                  SS5      nUR                  SS5      n[        X5      n[        X45      n[         R                  " / SQ5      n[         R                  R                  U" U5      U" U5      5        UR                  SS5      nUR                  SS5      n	[        X5      n
[         R                  R                  U" U5      U
" U5      5        [         R                  " / SQ/ SQ/5      n[         R                  " / SQ/ S	Q/5      n[        R                  " [        S
S9   [        X5        SSS5        g! , (       d  f       g= f)z=Test that 2D arrays are flattened correctly in Fortran order.)rq   r   r         @r         @)rq   r   r         "@      0@      9@rM   r#   )r   r?   rZ   r   )r   r   r@  )r   rA  r   )r   r   rB  )rC  rD  g      B@zx\[0\]<x\[1\]<r  N)	r   r   r(   r   testingassert_allcloser0  r1  r2  )rD   x_1dy_1dx_coly_colspl_1dspl_coltest_pointsx_rowy_rowspl_rowx_2dy_2ds                r1   test_curfit_2d_array_handling2TestUnivariateSpline.test_curfit_2d_array_handling  s'    xx01xx23 R#R#-d9.u<hh34


""6+#68LM Q#Q#.u<


""6+#68LM xx$& 'xx') * \\+-AB(4 CBBs   E00
E>rh   )"ri   rj   rk   rl   rG   r0  markparametrizerS   r\   r_   rs   r}   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r   r%  r4  r=  rS  rm   rh   r3   r1   r5   r5   "   s    ? [[Yz(:;= <=	3:2,?&H$ H '/R!0I5C45*?$98<0 <D5(&7)5r3   r5   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#   r9   r9   r9   r:   r:   r:   	r#   r9   r:   r#   r9   r:   r#   r9   r:   	r:   r:   r:   r:   r:   r:   r:   r:   r:   r   r#   r:   
The coefficients of the spliner  r,   r-   r9   r@  )r0  r1  r2  r   r&   r   r   asarray	rD   rE   rF   r   rL   r*   r+   rr)   s	            r1   rG   +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)NrZ  r[  	r   rw   r   r:   rW   rw   r#   r:   rW   r   r#   r:   r]  r  r^  rM   )r   r   r   )r   皙?gffffff?)r0  r1  r2  r   r$   zipr   )rD   rE   rF   r   rL   r*   r+   r)   xaxbyaybrQ   r   ypzps                   r1   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#   r9   r9   r9   r   r   r   r[  rd  r   r#   r:   r]  r  r^        ?rM   r   )r   r0  r1  r2  r   r&   r$   r	   sumr   r   r_  r   )rD   rE   rF   r   rL   r*   r+   ra  r)   tztrpzs              r1   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)NrZ  r[  r\  r   r#   r:   r]  r  r^  r   Fgridr   )r0  r1  r2  r   r&   r   r   r   r`  s	            r1   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#   r:   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,)r^  ;The length of x, y and z should be at least (kx+1) * (ky+1)rq   epseps should be between (0, 1))r   r   r   r
   r   r  r  )rD   rL   r*   r+   r  rE   rF   r   r   r   exc_infos              r1   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#   r:   r   r|  )r   r|  r   r|  r]  r  )r   r   r   r9   )
r   r   r
   r0  r1  r2  r   r#  r   r&   )rD   rL   r*   r+   rE   rF   r   r   r   ra  r$  r   s               r1   r%  ,TestLSQBivariateSpline.test_array_like_inputG  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   r@  r   g     X@   !   r]  r  r#   NFrw  )r   mgridravelr   r
   r0  r1  r2  r   r&   r   )rD   rE   rF   r   r*   r+   ra  r)   s           r1   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&rh   N)ri   rj   rk   rl   rG   rm  rt  r}   r  r%  r  rm   rh   r3   r1   rX  rX    s(    7<0.&A)EV(6r3   rX  c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
TestSmoothBivariateSplineil  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 )NrZ  r[  r\  r#   r^  )r#   r#   r:   r:   )r:   r:   r:   r:   rN   r>   r?   r:   )r   r$   r   r'   rA   rB   rD   rE   rF   r   r)   rQ   s         r1   rG   .TestSmoothBivariateSpline.test_linear_constantm  s    #AQ!4A%a6 ! 	"#.."2LA3##%&...!#kAs8"<1v1vPQSTv>VWr3   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 )NrZ  r[  )	r   r   r   r9   r9   r9   rW   rW   rW   r#   r^  )r   r#   r:   r:   )r   r   rW   rW   rN   r>   r?   r   r9   )	r   r$   r   r   r_  r   r'   rA   rB   r  s         r1   r_   (TestSmoothBivariateSpline.test_linear_1dy  s    #AQ!4AArzz.9: !!#.."2LA3##%&...!#i3"81Q%1qe9LMr3   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#   r9   r9   r9   rW   rW   rW   r[  rd  ignorez
The required storage spacer#   r   r,   r-   rL   )r#   r9   rW   r8   rp  rM   r9   )decimalr   )r   warningscatch_warningsfilterwarningsr2  r   r	   rq  r   r   r_  r   )
rD   rE   rF   r   r)   r*   r+   rr  rs  lut2s
             r1   rt  'TestSmoothBivariateSpline.test_integral  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   r9   P   rM   r#   r   )r   r
   r   r   r   r   )
rD   rE   rF   r   xiyir   res1interp_res2s
             r1   test_rerun_lwrk2_too_small4TestSmoothBivariateSpline.test_rerun_lwrk2_too_small  s     KKAr"KKAr"E[[Q$[[Q$qQrs#'a0rD'r3   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   r|  r   r}  r  r  r  r  r   r  r  r   r  r^  r  r   r  rq   r  r  )r   r   r   r
   r   r  r  )rD   r  rE   rF   r   r   r   r  s           r1   r  ,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 )NrZ  r[  r\  )	r#   r#   r#   r#   r#   r#   r#   r#   r#   )r   r@  r   r@  r#   )r   r   r,   r-   )r   r   r,   r-   r   r   )r   r   r   r#  r   )rD   rE   rF   r   r   r   r$  r   s           r1   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#7r3   rh   N)ri   rj   rk   rl   rG   r_   rt  r  r  r%  rm   rh   r3   r1   r  r  l  s$    
X	N.>(*EX8r3   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   rp   )r
   r   r   r   r   r   r  Tlut_lsqdatanew_lonsnew_lats)rD   nthetanphithetaphir  knotstknotspknotdatalatslonsr  s               r1   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}r3   c                     [        U R                  R                  5       5      S:  d   e[        U R                  U R                  U R
                  5      U R                  5        g )NrN   )rA   r  rB   r   r  r  r  rD   s    r1   rG   1TestLSQSphereBivariateSpline.test_linear_constant   sF    4<<,,./%777!$,,t}}dmm"L"&))	-r3   c                     [        U R                  / / 5      [        R                  " S5      5        [        U R                  / / SS9[        R                  " S5      5        g Nr   Frw  ry  )r   r  r   r   r  s    r1   r}   -TestLSQSphereBivariateSpline.test_empty_input  s@    !$,,r2"6H!$,,r2E,"BBHHTNSr3   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   rp   皙r   r}  theta should be between [0, pi]r   皙?phi should be between [0, 2pi]rq   ztt should be between (0, pi)ztp should be between (0, 2pi)r9   	r   r   r?   r   r   r?   r   r   r   r  r  r  r  )r
   r   r   r   r   r   r   r   r  r  r  r  r   r   r   )rD   r  r  r  r  r  r  r  r  invalid_thetainvalid_latsr  invalid_phir  invalid_lonsinvalid_knotstinvalid_knotsp	invalid_ws                     r1   r  /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   rp   r  r   )
r
   r   r   r   r   r  r   r  r#  r   )rD   r  r  r  r  r  r  r  r  r  r   r$  r   s                r1   r%  2TestLSQSphereBivariateSpline.test_array_like_input]  sw   
+Q
1C-C!#%&sdQh'SD1H-=)=!"$&'e)
U[[^SYYq\23ssSqS##A&' (

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

(;(;(=(,

(;(;(=(,(=(=(?(.(.188:	G
 	"$sC.$sC.Ar3   )r  r  r  r  N
ri   rj   rk   rl   r  rG   r}   r  r%  rm   rh   r3   r1   r  r    s     6$-
TREhBr3   r  c                   2    \ rS rSrS rS rS rS rS rSr	g)	TestSmoothSphereBivariateSplineiv  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 )Nrp  r         ?r?   r\      _Br   )r   r   r   r)   )rD   r  r  ra  s       r1   r  ,TestSmoothSphereBivariateSpline.setup_methodw  s    s2vs2vs2vr"ubeRUCF2vs2v' (R"Wb#(BGRr27B2X  -..u1Er3   c                     [        U R                  R                  5       5      S:  d   e[        U R                  / SQSS/5      SS/SS/SS//5        g )NrN   r>   r#   r?   r:   )rA   r)   rB   r   r  s    r1   rG   4TestSmoothSphereBivariateSpline.test_linear_constant  sQ    488((*+e333!$((;3x"@$%q6Aq6Aq6":	<r3   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    r1   r}   0TestSmoothSphereBivariateSpline.test_empty_input  s@    !$((2r"2BHHUOD!$((2r(">Or3   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)Nrp  r   r  r?   r\  r  r  r   r  r  r  r   g @r  r   rL   r  r   s should be positiver  r  )r   r   r   r   r   r  r  )rD   r  r  ra  r  r  r  r  s           r1   r  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 )
Nrp  r   r  r?   r\  )	r   r   r   r   r   r   r   r   r   r  r  r   )r   r   r   r   r#  r   )rD   r  r  ra  r   r$  r   s          r1   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.Ar3   )r)   Nr  rh   r3   r1   r  r  v  s     F<
P0EdBr3   r  c            	       J   \ rS rSr\R
                  R                  SSS/5      S 5       r\R
                  R                  SSS/5      S 5       r\R
                  R                  SSS/5      S 5       r	\R
                  R                  S/ S	Q5      \R
                  R                  SSS/5      S
 5       5       r
\R
                  R                  SSS/5      S 5       rS rS rS rS rS r\R
                  R                  SSS/5      S 5       r\R
                  R                  SSS/5      S 5       rS r\R
                  R                  SSS/5      S 5       rS rS rS r\R
                  R1                  5       \R
                  R                  SSS/5      \R
                  R                  S/ SQ5      \R
                  R                  S\\4\\445      S 5       5       5       5       r\R
                  R;                  5       \R
                  R=                  \R@                  S:*  S S!9\R
                  R                  SSS/5      \R
                  R                  S\\4\\445      S" 5       5       5       5       r!\R
                  R                  S\\4\\445      S# 5       r"S$r#g%)&TestRectBivariateSplinei  r=   r:   rW   c                 "   [        / SQ5      n[        / SQ5      n[        / SQ/ SQ/ SQ/ SQ/ SQ/5      n[        X#XAUS9n[        U" X#5      U5        [        X#XAUS9n[	        [        XbU5      UR                  [        R                  5      5        g )Nro   r#   r9   r#   r9   r#   r#   r9   r:   r9   r#   r#   r9   r9   r9   r#   r^  )	r   r   r   r   r   r    astyper   float64)rD   r=   rE   rF   r   r)   
lut_customs          r1   test_defaults%TestRectBivariateSpline.test_defaults  s    /"/"?""""	$ % "!A6!#a)Q/Q1q1
*:!<ahhrzz>R	Tr3   c                    [         R                  " SSS5      n[         R                  " SSS5      n[         R                  " US S 2S 4   5      [         R                  " US S S 24   5      -  n[         R                  " SSS5      n[         R                  " SSS5      n[	        X#XAUS9nU" XV5      n[        X#XAUS9n	[        XU5      n
[        XSSS9  g )Nr   rW   rp   r   r^  Tqs*>rtolrP   )r   r
   sinr   r   r   r    r   )rD   r=   rE   rF   r   r  r  refref_valscustomcustom_valss              r1    test_interpolated_offgrid_points8TestRectBivariateSpline.test_interpolated_offgrid_points  s     KK1a KK1a FF1QW:$'
!33[[Ar"[[Ar"!!A6r;q1-4VD\	3r3   c                 4   [         R                  " SUS-   5      n[         R                  " SUS-   5      nUS S 2S 4   US S S 24   -   nUS S USS  -   S-  nUS S USS  -   S-  n[        X#XAUS9n[        X#XAUS9nU" XV5      n	[	        XU5      n
[        XSSS9  g )Nr#   r9   rM   r^  r   r  r  )r   r   r   r   r    r   )rD   r=   rE   rF   r   r  r  r  r   r  r  s              r1   test_midpoints&TestRectBivariateSpline.test_midpoints  s     IIaQIIaQagJ47#fqun!fqun!!!A6q1-r;4VD\	3r3   s_val)r   r   r|  g      Y@c           	         [         R                  " SSS5      n[         R                  " SSS5      n[         R                  " X4SS9u  pVXV-   nUS S USS  -   S-  nUS S USS  -   S-  n	[         R                  " SSS	5      n
[         R                  " SSS	5      nS
X44SX4SX4/n[        X4XqX"S9n[	        X4XqX"S9nU H)  u  nnnU" UU5      n[        UUU5      n[        UUSSS9  M+     g )Nr   rW   r  ijindexingrM   r#   r9   r   zoriginal grid	midpointsz
dense grid)rL   r,   r-   {Gz?r  )r   r
   r   r   r   r    r   )rD   r  r=   rE   rF   XYr   x_midy_midxi_denseyi_dense
query_setsr  r   r9  r  r  r  r  s                       r1   test_custom_matches_reference5TestRectBivariateSpline.test_custom_matches_reference  s    KK1b!KK1b!{{1$/E3B!AB%1$3B!AB%1$;;q!R(;;q!R( a#%'8.

 "!q?qa6#IAr22r{H8RHKK!%D2	 $r3   c                    [        / SQ5      n[        / SQ5      n[        / SQ/ SQ/ SQ/ SQ/ SQ/5      n[        X#XAUS9n[        X#XAUS9n/ SQn/ SQnUR                  Xx5      n	[        [	        Xx5       V
Vs/ s H  u  pU" X5      S   PM     snn
5      n[        X5        [        XgUS	S
9n[        [	        Xx5       V
Vs/ s H  u  p[        XjU5      S   PM     snn
5      n[        XSSS9  g s  snn
f s  snn
f )Nro   r  r  r  r^  )r#   ffffff@g333333@r   ffffff
@333333?r:   )r#   r  r  r   rA  r   r:   r   Frw  r   r  r  )r   r   r   evrf  r   r    r   )rD   r=   rE   rF   r   r)   r  r  r  zir   rk  zi2	zi_custom
zi2_customs                  r1   test_evaluate%TestRectBivariateSpline.test_evaluate   s    ++;{;{;OP!!a2Q1q1
,,VVB^CK@K&"S[%K@AB$2:2ER	*-b+7*5 ;:2NtT*57 8
	\	3 A
7s   7C.
?C4
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[        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        [	        [        XUSS9USSS9  [	        [        XUSS9USSS9  [	        [        XUSSS9USSS9  g )Nro   r  r  r  r   r   ir   r   r   r   r   r   r   r   r   rW   r   r   r   r   ir   r   r   rW   rM   r   r#   r   r?   r   g      r   r9   rp  r         пr   (   ir      iig     @0@r   g     @0   r   rp   r   r      g     +r   g     +@ir#   dxdyr6  r8  r   r  r  )r   r   r   r   r   r    	rD   rE   rF   r   r6  r8  dxdyr)   r  s	            r1   test_derivatives_grid-TestRectBivariateSpline.test_derivatives_grid5  s3   ++;{;{;OPM,{+' ((*+M-0@m- .'(?1-A BBDE "!a(Q^
!#aQ-3!#aQ-3!#aQ!"4T:*:a@	' 	*:a@	' 	*:a1Ed	'r3   c                    [        / 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        [        XU5      n[	        [        XUS	S
S9USSS9  [	        [        XUS	S
S9USSS9  [	        [        XUS	S	S
S9USSS9  g )Nro   r  r  r  r   r   gUUUUUU?r   r   rW   rM   r   r+  r(     A   r   7             8@r#   F)r6  rx  )r8  rx  r6  r8  rx  r   r  r  )r   r   r   r   r   r    r:  s	            r1   r   (TestRectBivariateSpline.test_derivativesP  s    ++;{;{;OP>"#$%&s*!!a(!#aQE":2>!#aQE":2>!#aQ!"?EQ^
*:QEJAL	
 	*:QEJAL	
 	*:Q!Oal	
r3   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   )rD   rE   rF   r  r  s        r1   make_pair_grid&TestRectBivariateSpline.make_pair_gridj  s/    & xxA:Ab"bA:;;:s   4
c                 L   [        / 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     [        XU5      n[        [        UR	                  SS/5      X5      USSS9  [        [        UR	                  SS/5      X5      USSS9  [        [        UR	                  SS/5      X5      USSS9  g )Nro   r  r  r  r#  r$  r%  r&  r   r'  r)  r*  r,  r/  r1  r3  r#   r   r  r  )r   r   r2   partial_derivativer   rJ  r(   r   r   r   r   r    )rD   rE   rF   r   r6  r8  r;  r)   lut_ndbsplineordersexpectedactual_rect
actual_ndbr  s                 r1   #test_partial_derivative_method_grid;TestRectBivariateSpline.test_partial_derivative_method_grid  s   /"/"?""""	$ %
 %$#%#	% & )+	+
 %%()%	' (
 +1'1'	) * -/	/
 "!*,S1#$a&"A|q!fd^ LF00&9!?K&11&9##A)ghnn%  &k<%j; !M Q1%
*:+@+@!Q+H!OAL	
 	*:+@+@!Q+H!OAL	
 	*:+@+@!Q+H!Oal	
r3   c                    [        / 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[        XU5      nU R	                  X5      n[
        R                  " [        U5      5      n	X[        U5      -  U	-      n
UR                  5        Hu  u  pUu  pUR                  X5      " XS
S9n[        X5        UR                  X/5      " U
5      n[        UU5        [        UR                  X/5      XS
S9n[        UUSSS9  Mw     g )Nro   r  r  r  r?  r@  rA  rF  ))r#   r   )r   r#   r   Frw  r   r  r  )r   r   r2   r   rJ  r   r   r&   itemsrM  r   r   r    r   )rD   rE   rF   r   rP  r)   rN  r  pointsdiag_idxdiag_pointsrO  expected_valsr6  r8  
actual_rbsrR  	actual_rps                     r1   test_partial_derivative_method6TestRectBivariateSpline.test_partial_derivative_method  sH   /"/"?""""	$ % ,-././#5
 "!*,S1Q1%
$$Q* 99SV$A.9:%-^^%5!FFB//75IJ%j@ '112(;KHJ%j-@ 7z7L7LbX7V5"II}!"7 &6r3   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                  US-   S5        S S S 5        UR                  US-   S/5      R                  S:H  R                  5       (       d   e[        X#XAUS9n[        [        5         UR                  US-   S5        S S S 5        [        X#XAUS9nUR                  US-   S/5      R                  S:H  R                  5       (       d   eg ! , (       d  f       N= f! , (       d  f       Nc= f)N)r   r#   r9   r:   rW   r   r#   rq   r^  )r   r   r   r   sizer   r2   r   r   rM  r   r0   allr   )rD   r=   rE   rF   r   r)   rN  r  s           r1   'test_partial_derivative_order_too_large?TestRectBivariateSpline.test_partial_derivative_order_too_large  s    //FFH!&&!&&!"!!*,S1:&""1q5!, ' ((!a%466#=BBDDDD!!A6:&""1q5!, ' Q1q1
%%q1uaj133s:??AAAA '& '&s   (D:E:
E
Ec           
          [        / SQ5      n[        / SQ5      n[        / SQ/ SQ/ SQ/ SQ/ SQ/5      n[        X#XAUS9n[        U" X#5      U" US S 2S 4   US S S 24   SS95        g )Nro   r  r  r  r^  Frw  )r   r   r   )rD   r=   rE   rF   r   r)   s         r1   test_broadcast&TestRectBivariateSpline.test_broadcast  s`    ++;{;{;OP!!a2A	3q4y!DF)%#HIr3   c                 	   [        / SQ5      n[        / SQ5      n[        / SQ/ SQ/ SQ/ SQ/ SQ/5      n[        [        5       n[        XU5        S S S 5        S[	        WR
                  5      ;   d   e[        [        5       n[        XU5        S S S 5        S[	        WR
                  5      ;   d   e[        / SQ5      n[        / SQ5      n[        / SQ/ SQ/ SQ/ SQ/ SQ/5      n[        [        5       n[        XU5        S S S 5        S[	        UR
                  5      ;   d   e[        [        5       n[        XU5        S S S 5        S[	        UR
                  5      ;   d   e[        / SQ5      n[        / SQ5      n[        / SQ/ SQ/ SQ/ SQ/5      n[        [        5       n[        XU5        S S S 5        S	[	        UR
                  5      ;   d   e[        [        5       n[        XU5        S S S 5        S	[	        UR
                  5      ;   d   e[        / SQ5      n[        / SQ5      n[        / S
Q/ S
Q/ SQ/ SQ/ S
Q/5      n[        [        5       n[        XU5        S S S 5        S[	        UR
                  5      ;   d   e[        [        5       n[        XU5        S S S 5        S[	        UR
                  5      ;   d   e[        / SQ5      n[        / SQ5      n[        / SQ/ SQ/ SQ/ SQ/ SQ/5      nSn[        [        5       n[        XX6S9  S S S 5        S[	        UR
                  5      ;   d   e[        [        5       n[        XX6S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N|= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNc= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNt= f! , (       d  f       GNI= f! , (       d  f       GN= f! , (       d  f       N= f)N)r   r9   r:   rW   rp   ro   r  r  r  x must be strictly increasing)r9   r9   r:   rW   rp   y must be strictly increasingz7x dimension of z must have same number of elements as x)r#   r9   r#   r9   )r#   r9   r:   r9   )r#   r9   r9   r9   z7y dimension of z must have same number of elements as yr  r   r  r   r   r  )r   r   r   r   r  r  r   )rD   rE   rF   r   r  info_customr   s          r1   r  *TestRectBivariateSpline.test_invalid_input  s   /"/"?O_#_6 7 :&$a( '.#djj/AAA:&+A! '.#k6G6G2HHHH/"/"?O_#_6 7:&$a( '.#djj/AAA:&+A! '.#k6G6G2HHHH/"/"?O_#% &:&$a( 'Hdjj/" 	" " :&+A! 'Hk''() 	) ) /"/"<| ,0 1 :&$a( 'Hdjj/" 	" " :&+A! 'Hk''() 	) ) /"/"?O_#_6 7 :&$a3 '*c$**o===:&+A!' '*c+2C2C.DDDD:&$a40 '%TZZ888:&+A!t$ '%[->->)????K '& '& '& '& '&
 '& '&
 '& '& '& '& '&s   O3P6P5P)%P;$QQQ1RRR'R93
P
P
P&)
P8;
Q

Q
Q.1
R 
R
R$'
R69
Sc           	         [        / 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#XEXS9n[        X#XEXS9n[        UR                  5       UR                  5       UR                  5       UR                  5       XS9n[        UR                  5       UR                  5       UR                  5       UR                  5       XS9n	[	        U" SS5      U" SS5      5        [        U" SS5      [        USS5      SS	S
9  [        U" SS5      [        U	SS5      SS	S
9  [        [        USS5      [        U	SS5      SS	S
9  g )Nro   r  r  r  )r#   rp   r#   rp   )r   r,   r-   r   r   r  r  )r   r   r   r#  r   r   r    )
rD   r=   rE   rF   r   r   r$  spl1_customr   spl2_customs
             r1   r%  -TestRectBivariateSpline.test_array_like_input@  s3   /"/"?O_"O5 6\""1!BaAQ="188:qxxz188:(,!Cahhj!((*ahhj(,!C!$sC.$sC.AS#6{CM\	3 	S#6{CM\	3 	6{CM6{CM\	3r3   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)Nr  r   r9   r   r   r   r:   MbP?rh  ri  )r   randomuniformr   r   r   r   r   r   r   r  r  )rD   NSampThetaPhiDataInterpolatorNLonNLatGridPosLatsGridPosLonsnonGridPosLatsr  nonGridPosLonss                r1   test_not_increasing_input1TestRectBivariateSpline.test_not_increasing_inputY  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   rr  default_rngr   integersr  r  )rD   r.   r/   rngrE   rF   r   s          r1   _sample_large_2d_data-TestRectBivariateSpline._sample_large_2d_datav  s\    ii##A&IIbMIIbMLLC"*QXXbjj)))r3   c                     U " X5      $ r8  rh   )rR   rE   rF   s      r1   _RectBivariateSplineEval0TestRectBivariateSpline._RectBivariateSplineEval  s    1yr3   r   )^  iR  )i     s_tols))r   -q=gHz>)r#   gy&1|?-C6?)r:   r  r  spl_apisc                     Uu  pEUu  pgnU R                  XE5      u  pnUu  pU" XXS9nU" XU
5      n[        R                  " U5      R                  5       (       a   e[	        XXxS9  g )Nr   rP   r  r  r   isnananyr   )rD   r   r  r  r.   r/   rL   rP   r  rE   rF   r   spl_constructspl_evalrR   z_spls                   r1   test_spline_large_2d,TestRectBivariateSpline.test_spline_large_2d  so    & ,,R4a"*A!)#88E?&&(()(t7r3   l        z2Segfaults on 32-bit system due to large input data)reasonc           
          Su  p4Su  pVnU R                  X45      u  pn
Uu  pU" XXSXS9nU" XU	5      n[        R                  " U5      R                  5       (       a   e[	        XXgS9  g )N)r   i  )r9   r  r     )rL   maxitr,   r-   r  r  )rD   r=   r  r.   r/   rL   rP   r  rE   rF   r   r  r  rR   r  s                  r1   test_spline_large_2d_maxit2TestRectBivariateSpline.test_spline_large_2d_maxit  sv    " &,,R4a"*A!"$2#88E?&&(()(t7r3   c           	         Su  p#Su  pESn[         R                  R                  S5      n[         R                  " SSU[        S9n[         R                  " SSU[        S9n	[         R
                  " XSS	9u  p[         R                  " U
5      [         R                  " U5      -  S
[         R                  " SU
-  S-   5      -  [         R                  " SU-  S-
  5      -  -   SUR                  X#4S9-  -   R                  [        5      nUu  pU" XXXVS9nU" XU	5      n[         R                  " U5      R                  5       (       a   e[        UUSSS9  g)zE
Test regrid with synthetic smooth data (mixed frequencies + noise).
)@   r  )r:   r:   r   r   rq   r   r   r	  r
  r   r9   r   r?   g?)r`  r  r   r  N)r   rr  r  r
   r   r   r  r   normalr  r  r  r   )rD   r  r.   r/   r,   r-   rL   r  rE   rF   r  r  r   r  r  rR   r  s                    r1   test_spline_synthetic_data2TestRectBivariateSpline.test_spline_synthetic_data  s-    ii##A&KKS"E2KKS"E2 {{1$/FF1Iq	!BFF1q53;''"&&q3*??@SZZbXZ../ &-	 	
 #+A!r7#88E?&&((((qs5r3   rh   N)$ri   rj   rk   rl   r0  rU  rV  r  r  r  r  r   r<  r   rJ  rS  r]  rb  re  r  r%  r  r  r  slowr   r   r    r  xslowskipifsysmaxsizer  r  rm   rh   r3   r1   r  r    s   [[S1a&)T *T  [[S1a&)3 *3$ [[S1a&)3 *3$ [[W&=>[[S1a&)2 * ?26 [[S1a&)3 *3('6
4<*.
`&7P [[S1a&)B *B$ [[S1a&)J *JL@\ [[S1a&)3 *30F:* [[[[Wz;&?@[[X (9 : [[Z+>+C+E+2+I+K*L M8	M: A 8* [[[[u, 6O P[[S1a&)[[Z+>+C+E+2+I+K*L M8	M *P 8* [[Z+>+C+E+2+I+K*L M6	M6r3   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?r9   rw   r#   r9   r#   r9   r#   r9   r#   r#   r9   r:   r9   r#   r9   r#   r#   r9   r9   r9   r#   r9   r#   )r
   r   r   r   r   rD   rF   rE   r   r)   s        r1   r  +TestRectSphereBivariateSpline.test_defaults  se    T1R49a(T2d7A&???"??"$ % (A.!#a(1-r3   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 )
Nr  r9   rw   r  r  r  )r   r#   r  g@r@  gQ@g      @)r?   re  r  g?gjt?r   r  r   )r
   r   r   r   r  rf  r   )rD   rF   rE   r   r)   r  r  r  r   rk  r  s              r1   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@rq        u@rx   rM   r  r   r  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  rA   r   r   r   r   r  r  rD   r  r  r  r  s        r1   r  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 )Nr  r9   rw   r  r  r  r  r#   )dthetar5  r  r  )dphir7  )r  r  ư>r6  r8  r  rq  r   Fr  rx  rw  r  rx  r  r  rx  )r
   r   r   r   r   _numdiff_2dr   rM  r  s        r1   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r3   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 )Nr  r9   rw   r  r  r  r  r#   Fr  c                    > T" XSS9$ NFrw  rh   rE   rF   r)   s     r1   <lambda>@TestRectSphereBivariateSpline.test_derivatives.<locals>.<lambda>O      AU0Cr3   r5  r  r  r  c                    > T" XSS9$ r  rh   r  s     r1   r  r  R  r  r3   r7  r  c                    > T" XSS9$ r  rh   r  s     r1   r  r  U  r  r3   r  r  rq  )r
   r   r   r   r   r   r  r  s       @r1   r   .TestRectSphereBivariateSpline.test_derivativesA  s   T1R49a(T2d7A&???"??"$ % (A.T1R49a(T2d7A&1.44???A7#$CQaP!	. 	Aqu5#$CQaP!	. 	A?#$C$%Q1$@!	.r3   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)Nr  r  r  r  r  rq   r  rx   r   r  r  r  r      r  r  r  r  r  rM   r   r  r  r  s        r1   test_invalid_input_22TestRectSphereBivariateSpline.test_invalid_input_2Y  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 r  )r
   r   r   r   r#  r   )rD   rF   rE   r   r$  r   s         r1   r%  3TestRectSphereBivariateSpline.test_array_like_input{  s    T1r6D=!,T29a((*?((*?((	* + )q1(QXXZL!$q*d1j9r3   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  #   r-  -   )iiir   r   r#   r  g     B@r  g     `Sg     Fg=Eg     HgDioEG)r   r   r   radiansr   r   )rD   r  r  meshr  lat_rlon_rinterpolator	query_lat	query_londata_interpanss               r1   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!+3r3   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   )rx   rx   ))TT)TF)FFr   )rL   pole_continuity)r   r   r   r   r   )rD   uvra  ps        r1   test_pole_continuity_gh_14591;TestRectSphereBivariateSpline.test_pole_continuity_gh_14591  sf     IIaruu$r)IIaruu$r)HHV>A%aAAF ?r3   rh   N)ri   rj   rk   rl   r  r   r  r<  r   r  r%  r  r  rm   rh   r3   r1   r  r    s4    .% =D KD.0 =D:4Gr3   r  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#   r9   zinvalid derivative order)r   )funcrE   rF   r6  r8  r  s         r1   r  r    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4r3   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S	S	S9U l        [%        XEUS	S	S9U l        [        [(        R*                  " [	        S5      [	        S5      5      5      U l        g ! , (       d  f       N= fs  snf )Nr   r#      r:   r]  r  r   g     3@rW   r?   g     4@r  r  r   r  r   r^  )r   concatenatelistrf  r   r
   r0  r1  r2  r   r  r   
lut_smoothr   r`  rollr   lut_rectr   lut_rect_custom	itertoolsproductrO  )rD   rE   rF   r   r   r   izzs           r1   r  (Test_DerivedBivariateSpline.setup_method  sY   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:+BB1C&rraA>9,,U1XuQx@A QP :s   )G G
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   Frw  rG  )rO  r  rM  rD   nuxnuylut_derr   r   s         r1   test_creation_from_LSQ2Test_DerivedBivariateSpline.test_creation_from_LSQ  sS    HCll55c?GSu-AS##EBA6M6	 $r3   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      @Frw  rG  )rO  r  rM  r  s         r1   test_creation_from_Smooth5Test_DerivedBivariateSpline.test_creation_from_Smooth  sS    HCoo88BGSu-ASSuEA6M6	 $r3   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   U R                    HO  u  pU R                  R	                  X/5      n[        USS5      n[        U R                  SSXS9n[        XESSS	9  MQ     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	XE:X  d   e[        X5        M     g )Nr   r?   Frw  rG  r9  r   r  r  )r   r?   rX   )	rO  r  rM  r  r   r    r   r2   r   )
rD   r  r  r  r   r   lut_ndsplinelut_der_ndbsplinea_ndbsplineb_ndbsplines
             r1   test_creation_from_Rect3Test_DerivedBivariateSpline.test_creation_from_Rect  sI   HCmm66s@GSu-Ac33UCA6M6	 $ HC**55sjAG.wSAA.$$c33@AAq|< $ HCmm66s@G/>L , 7 7
 CSu-A+ZL9Kc33UCA&
|
CK6M69 $r3   c                     U R                   R                  SS5      n[        [        5         UR                    S S S 5        U R
                  R                  SS/5      n[        [        5         UR                    S S S 5        [        U R                   5      nUR                  SS/S9n[        [        5         UR                    S S S 5        g ! , (       d  f       N= f! , (       d  f       Nj= f! , (       d  f       g = f)Nr#   rX   )r  rM  r   AttributeErrorfpr  r   r2   )rD   derrN  s      r1   test_invalid_attribute_fp5Test_DerivedBivariateSpline.test_invalid_attribute_fp  s    mm..q!4>*FF + ""--q!f5>*FF + -T]];&&1a&&1>*FF +* +* +*
 +*s#   C-C7C/
C
C,/
C=c                     U R                   R                  SS5      n[        [        5         UR	                  5         S S S 5        g ! , (       d  f       g = fr"   )r  rM  r   r  rB   )rD   r  s     r1   #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  rO  N)ri   rj   rk   rl   __doc__r  r  r  r  r   r#  rm   rh   r3   r1   r  r    s&    B":2r3   r  )r   r   g:0yE>)5r  r  r  numpyr   r0  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   scipy.interpolate._regridr   r    r2   r5   rX  r  r  r  r  r  r  r  rh   r3   r1   <module>r-     s     
    *  C B B K K# # # : 4(,n5 n5bV6 V6r~8 ~8BFB FBRRB RBjX6 X6v~G ~GB5M Mr3   