
    >qj'                       d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
mZmZ d dlmZmZmZmZmZmZmZ d dlmZmZmZmZ d dlmZmZmZmZmZmZm Z m!Z!m"Z" d dl#m$Z$ d dl%m&Z&m'Z' d d	l(m)Z)m*Z* d
 Z+ G d d      Z, G d d      Z- G d d      Z. G d d      Z/ G d d      Z0 G d d      Z1 G d d      Z2ddZ3 G d d      Z4y)    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                     | j                         \  }}| j                  \  }}t        |      t        |      }}| j                         j	                  ||z
  dz
  ||z
  dz
  f      }t        ||f|||f      S N   )	get_knotsdegreeslen
get_coeffsreshaper   )luttxtykxkynxnycs           d/opt/rentech/trading_bot/.venv/lib/python3.12/site-packages/scipy/interpolate/tests/test_fitpack2.pyconvert_to_ndbspliner2      sr    ]]_FB[[FBWc"gB  "r'A+rBw{!;<Ab"Xq2r(++    c                       e Zd Zd Zej
                  j                  dddg      d        Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestUnivariateSplinec                    g d}g d}t        ||d      }t        |j                         ddg       t        |j                         ddg       t	        |j                               dk  sJ t         |g d      g d       y )Nr#         r9   r9   r9   r#   kr9   g|=r#         ?r8   r   r   r$   r'   absget_residualselfxyr)   s       r1   test_linear_constantz)TestUnivariateSpline.test_linear_constant#   sn    qQ'!#--/Aq6:!#.."2QF;3##%&...!#k"2I>r3   bc_typeNperiodicc                     g d}g d}t        ||d      }t        ||dt        |      |      }t        |j                  dd |j                         d       t        |j                  |j                         d       y )	Nr7   r:   r#   r;   )r<   srG   V瞯<atol)r   r   r&   r   tr$   r0   r'   )rC   rG   rD   rE   r)   spls         r1   test_linear_constant_periodicz2TestUnivariateSpline.test_linear_constant_periodic,   sc    qQ'!Q!s1vw?aS]]_5As~~/e<r3   c                 <   g d}g d}t        ||d      }d}t        |      t         ||            k(  sJ t        |      t         ||d            k(  sJ g d}t        |      t         ||            k(  sJ t        |      t         ||d            k(  sJ y )Nr7   r   r8      r#   r;   r8   nu)r>   r8         @)r   r   )rC   rD   rE   r)   args        r1   test_preserve_shapez(TestUnivariateSpline.test_preserve_shape6   s    q!q)SzU3s8_,,,SzU3sq>2222SzU3s8_,,,SzU3sq>2222r3   c                    g d}g d}t        ||d      }t        |j                         ddg       t        |j                         ddg       t	        |j                               dk  sJ t         |g d	      g d
       y )Nr7   rS   r#   r;   r9   r   rT   rL   r=   )r   r#   r8   r?   rB   s       r1   test_linear_1dz#TestUnivariateSpline.test_linear_1dA   sm    qQ'!#--/1Q%8!#.."2Aa593##%&...!#i.9r3   c                 l     G d dt               } |g dg dd      }t         |ddg      d	d	g       y )
Nc                       e Zd Zd Zy)9TestUnivariateSpline.test_subclassing.<locals>.ZeroSplinec                     dt        |      z  S )Nr   )r   )rC   rD   s     r1   __call__zBTestUnivariateSpline.test_subclassing.<locals>.ZeroSpline.__call__N   s    qz!r3   N)__name__
__module____qualname__r`    r3   r1   
ZeroSpliner^   M   s    "r3   re   r#   r8   r9   rT      )r9   r8   r9   r8   r9   r8   r;   r>   rW           )r   r   )rC   re   sps      r1   test_subclassingz%TestUnivariateSpline.test_subclassingJ   s5    	") 	" [A6C:R1r3   c                 f    g d}g d}t        ||d      }t         |g       t        g              y )Nr#   r9   rg      	   r   rT   rn         r9   r;   )r   r   r   rC   rD   rE   rP   s       r1   test_empty_inputz%TestUnivariateSpline.test_empty_inputT   s,    q!q)Br+r3   c                 j    g d}g d}t        ||d      }t        |j                         d   d       y )Nrl   ro   r9   r;   r   g7ã?)r   r   rootsrr   s       r1   
test_rootszTestUnivariateSpline.test_roots[   s/    q!q)CIIKN,=>r3   c                     t        j                  ddt         j                  z  d      }t        j                  |      }t	        ||d      }t        |j                               dk(  sJ y )Nr   2     rJ   )npr
   r   cosr   r&   ru   rr   s       r1   test_roots_lengthz&TestUnivariateSpline.test_roots_lengtha   sP    KK2:t,FF1Iq!q)399;2%%%r3   c                 j    g d}g d}t        ||d      }t        |j                  d      g d       y )Nrl   ro   r9   r;         @)g;@gpZ<o?gOmǿg      ?)r   r   derivativesrr   s       r1   test_derivativesz%TestUnivariateSpline.test_derivativesg   s1    q!q)COOC0F	Hr3   c                     t        j                  d      }|dz  d|dz  z  z   }t        ||d      }t        d|      }t	        |g dd	       t        ||dd
      }t	        |j                  d      |d	       y )N   r9          @r8   r   rz   )g     F@g     C@g      6@      @rL   rM   )rJ   r<   )r{   aranger   r   r   r   r   )rC   rD   rE   tckdersrP   s         r1   test_derivatives_2z'TestUnivariateSpline.test_derivatives_2n   s|    IIaLqD2ad7NQQa~ # #		$
 q!qA.*"	$r3   c                     g d}g d}g d}t        |||d      }t        g d      }t         |g d      |d	       y)
zRegression test for #1375.)      g<&g_g@7ѿg46	<ƿgBϠrh   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)rD   rE   wrJ   )gJdv?gc?g=?gt?皙?      ??gGz?gMb@?rM   )r   r   r   )rC   rD   rE   r   rP   desireds         r1   test_resize_regressionz+TestUnivariateSpline.test_resize_regression~   sF     a15HI12G$Gr3   c           
         t        j                  dt              }|dz  }t        ddd      }|j	                         }d|t        j
                  |dk  |d	kD        <   |j	                         }|d   |||d   k  <   |d
   |||d
   kD  <   t        t        fD ]  } |||      }dD ];  }t         |||      |dz  d       t          ||||      |      |dz  d       = dD ];  }t         |||      |dz  d       t          ||||      |      |dz  d       = dD ]  }t        t        ||fi t        |         dD ];  }t         |||      |dz  d       t          ||||      |      |dz  d       =  j                         dd }	t        |||	      }t         ||d      |dz  d       t         ||d      |dz  d       t        t        ||fi t        d       t         ||d      |dz  d       dD ]K  }t        ||      }t        t        ||fi t        |       t        t        t        fi t        |||       M y )Nrg   dtyper9      d   r   rh         @rK   )rD   rE   )r   extrapolate)extgؗҜ<rM   )r#   zeros)r8   raise)r9   constgؗҬ<rT   r#   r8   )rK   unknown)rD   rE   r   )r{   r   floatr
   copy
logical_orr   r   r   assert_raises
ValueErrordictr$   r   )
rC   rD   rE   xpxp_zerosxp_clipclsrP   r   rO   s
             r1   test_out_of_range_regressionz1TestUnivariateSpline.test_out_of_range_regression   sx   IIau%qDb"c"779@Ax"}hm<='')"#A$!A$#$R5!B% $&BC 	PCQ-C) KBC 0"a%eD 2Aqc 22 6AEJK $ QBC 0(A+EJ 2Aqc 22 6!%PQ $ Dj#rCTc]CD# PBC 0'1*5I 2Aqc 22 6
OP	P MMOAa !!Q*BAAE:BA!%@j#r9Ta[9BA
? # 	/C"1a(C*c2?#?*&6 /Q!-/	/r3   c                     t        j                  d      dz  }t        j                  d      dz  }t        j                  ddd      }d}t        t        t
        ||||       y )Nr   r   r   c   
   )rK   e   bbox)r{   r   r
   r   r   r   )rC   xsysknotsr   s        r1   test_lsq_fpchecz$TestUnivariateSpline.test_lsq_fpchec   sS    YYs^b YYs^b Ar2&j"5r2u	!r3   c                 f   t        j                  ddd      dz  }t        j                  |      }t        ||d      }|j	                  d      j                  d      }t         |d       |d             |j	                  d      }t         |d       |d	      z
  |j                  d	d             y )
Nr   r#   F   r9   rz   r8   333333?g333333?皙?)r{   r
   r|   r   antiderivative
derivativer   integral)rC   rD   rE   rP   spl2s        r1   "test_derivative_and_antiderivativez7TestUnivariateSpline.test_derivative_and_antiderivative   s    KK1b!1$FF1Iq!q)!!!$//2C$s),!!!$S	DI-S#.	0r3   c                     g d}g d}t        ||dd      }g d}t         |j                         |      t        j                  |      d       y )	Nr#   r8   rT      g      !@)r   皙??rW   rg   r   r9   )r   r<   )rK   r   g      rn   g      #@r   rL   rM   )r   r   r   r{   
zeros_like)rC   x_valuesy_valuesfrD   s        r1   test_derivative_extrapolationz2TestUnivariateSpline.test_derivative_extrapolation   sE     %*XxWB%q)2==+;%Hr3   c                     t        j                  ddd      }t        d      D ];  }t        ||d|      }dD ]%  \  }}t	        |j                  ||            dk  r%J  = y )	Nrh   r   rm   rT   r   )rJ   r   )r#   r#   )r#   rg   )r8   rg   r   r   )r   )r   rK   rL   )r{   r
   ranger   r@   r   )rC   rD   r   r   abs         r1   test_integral_out_of_boundsz0TestUnivariateSpline.test_integral_out_of_bounds   sl     KKB"8 	5C A4A6 5A1::a+,u4445	5r3   c                    t        j                  dt              }|dz  }t        j                  |      }t	        ||d      }|j                         dd }|d   }t         j                  t         j                  t         j                   fD ]  }||d<   t        t        t        fi t        ||d       t        t        t        fi t        ||d       t        t        t        fi t        |||d	       ||d<   ||d<   t        t        t        fi t        |||d
       t        t        t        fi t        |||d
       t        t        t        fi t        ||||d        y )Nr   r   r9   Tcheck_finiterT   rK   rD   rE   r   )rD   rE   rO   r   )rD   rE   r   r   rD   rE   rO   r   r   )r{   r   r   	ones_liker   r$   naninfr   r   r   r   r   )rC   rD   rE   r   rP   rO   y_endzs           r1   test_nanzTestUnivariateSpline.test_nan   sR   IIb&qDLLOq!$7MMOAa "&&"&&266'* 	CAAbE*&6 9Q!$79*&B 9Q!$79*&9 >Q!qt<>AbEAbE*&6 >Q!qt<>*&B >Q!qt<>*&9 CQ!qADAC	Cr3   c           
         t        j                  dt              }|dz  }t        j                  dt              }|d   |d<   |dz  }t        j                  |      }t	        ||d      }|j                         dd }t	        |||dd	       t        ||||d
       t        t        t        fi t        ||dd       t        t        t        fi t        ||d       y )Nr   r   r9   r   r#   Tr   rT   )rD   rE   r   rJ   r   r   )rD   rE   rJ   r   r   )r{   r   r   r   r   r$   r   r   r   r   r   rC   xxyyrD   rE   r   rP   rO   s           r1   test_strictly_increasing_xz/TestUnivariateSpline.test_strictly_increasing_x   s    
 YYr'UIIb&t!qDLLOr2D9MMOAa 1Q!$?a1QTBj"2 	:a148	:j"> 	5ad3	5r3   c                    t        j                  dt              }|dz  }t        j                  dt              }|d   dz
  |d<   |dz  }t        j                  |      }t	        ||d      }|j                         dd	 }t        t        t        fi t        ||d
       t        t        t        fi t        ||d
       t        t        t        fi t        ||||d       y )Nr   r   r9   r   r   r#   Tr   rT   r   r   )r{   r   r   r   r   r$   r   r   r   r   r   r   s           r1   test_increasing_xz&TestUnivariateSpline.test_increasing_x  s    YYr'UIIb&tcz!qDLLOr2D9MMOAa j"2 	5ad3	5j"> 	5ad3	5j"5 	?a1=	?r3   c                    t        t              5 }g d}g d}t        ||       d d d        dt        j                        v sJ t        t              5 }g d}g d}g d}t        |||       d d d        dt        |j                        v sJ t        t              5 }d}t        |	       d d d        d
t        |j                        v sJ t        t              5 }t        d       d d d        dt        |j                        v sJ t        t              5 }t        d       d d d        dt        |j                        v sJ y # 1 sw Y   .xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   TxY w)Nr   r   r   r   rW   !x and y should have a same lengthr   r   r   rW   gffffff@r   r   r   r   r   %x, y, and w should have a same lengthrK   r   bbox shape should be (2,)r   r;   k should be 1 <= k <= 5r   rz   s should be s >= 0.0)r   r   r   strvaluerC   infor   r   w_valuesr   s         r1   (test_invalid_input_for_univariate_splinez=TestUnivariateSpline.test_invalid_input_for_univariate_spline!  si   :& 	1$(H+HXx0	1 3c$**oEEE:& 	=$(H0H,HXx8<		=
 7#djj/III:& 	<$DXxd;	< +c$**o===:& 	6$Xx15	6(C

O;;;:& 	9$Xx48	9%TZZ8881	1 	1	= 	=	< 	<
	6 	6	9 	9s;   EE E*!E6 FEE'*E36E?Fc                    t        t              5 }g d}g d}t        ||       d d d        dt        j                        v sJ t        t              5 }g d}g d}g d}t        |||       d d d        dt        |j                        v sJ t        t              5 }d}t        |	       d d d        d
t        |j                        v sJ t        t              5 }t        d       d d d        dt        |j                        v sJ y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   zxY w# 1 sw Y   GxY w)Nr   r   r   r   r   r   r   rK   r   r   r   r;   r   )r   r   r   r   r   r   s         r1   5test_invalid_input_for_interpolated_univariate_splinezJTestUnivariateSpline.test_invalid_input_for_interpolated_univariate_spline=  s4   :& 	=$(H+H(8<	= 3c$**oEEE:& 	I$(H0H,H(8xH		I
 7#djj/III:& 	H$D(8$G	H +c$**o===:& 	B$(8qA	B(C

O;;;)	= 	=	I 	I	H 	H
	B 	Bs/   DD D*!D6DD'*D36D?c                 R   g d}g d}t        ||d      }|j                         dd }t        t              5 }g d}g d}t	        |||       d d d        dt        j                        v sJ t        t              5 }g d}g d}g d	}t	        ||||
       d d d        dt        |j                        v sJ d}t        t        |      5 }d}t	        ||||       d d d        t        t              5 }d}t	        ||||       d d d        dt        |j                        v sJ t        t              5 }t	        |||d       d d d        dt        |j                        v sJ y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   TxY w)Nr   r   Tr   r9   rT   r   r   )r   r   r   r   r   r   z;Interior knots t must satisfy Schoenberg-Whitney conditionsmatch)r   r   rK   r   r   r;   r   )r   r$   r   r   r   r   r   )	rC   r   r   rP   t_valuesr   r   messager   s	            r1   ,test_invalid_input_for_lsq_univariate_splinezATestUnivariateSpline.test_invalid_input_for_lsq_univariate_splineU  s   $,xE==?1Q':& 	>$(H+H(H=	> 3c$**oEEE:& 	J$(H0H+H(HI		J
 7#djj/IIIO:W5 	ID(H4H	I :& 	I$D(H4H	I +c$**o===:& 	C$(HB	C(C

O;;;3	> 	>	J 	J	I 	I	I 	I
	C 	Cs;   E,?E9F8F:F,E69FFFF&c                    t        j                  g d      }t        j                  g d      }t        j                  g d      }t        j                  ddg      }t        ||||      }t        |j                         |j                         |j                         |j                               }t	         |g d       |g d             y )Nr   r   )r   r   r   r   r   r  r   )rD   rE   r   r   r   )r{   r   r   tolistr   )rC   r   r   r   r   spl1r   s          r1   test_array_like_inputz*TestUnivariateSpline.test_array_like_inputw  s    88-.88568856xxs$(h(%)+  (//"3x7H"*//"3$++-I 	2323	5r3   c                     t        d      }g d}d}t        j                  t        |      5  t	        ||d       d d d        y # 1 sw Y   y xY w)Nm   )mrh   rh   rh   rh   rh   %@rh         &@rh   rh   rh   r  rh   rh   rh   rh   rh   rh   r  rh   rh   rh   r  rh   rh   rh   r  rh   rh   rh         %@rh   rh   rh   ffffff%@rh   rh   rh   r  rh   rh   rh   rh   rh   rh   r  rh   rh   r  rh   rh   rh   333333%@rh   rh   rh   r  rh   rh   r  rh   rh   r  rh   rh   g      '@rh   rh   rh   r  rh   rh   r  rh   rh   r  rh   rh   皙%@rh   rh   rh   r  rh   rh   r  rh   rh   rh   $@rh   rh   r  rh   rh   r  rh   rh   rh   r  rh   rh   rh   r  rh   rh   rh   r  rh   z2does not satisfy the condition abs\(fp-s\)/s < tolr  r#   r;   )r   pytestwarnsUserWarningr   )rC   rD   rE   msgs       r1   test_fpknot_oob_crashz*TestUnivariateSpline.test_fpknot_oob_crash  sI    #J; D\\+S1 	(QQ'	( 	( 	(s   AAc                     t        j                  dt              }|dz  }t        j                  dt              }|d   |d<   t        ||d      }d }t	        d	|||       y )
Nr   r   r9   r   r#   Tr   c                      ||       y Nrd   )_interprD   s      r1   	worker_fnz8TestUnivariateSpline.test_concurrency.<locals>.worker_fn  s	    1Ir3   r   )r{   r   r   r   r   )rC   r   r   rD   rP   r  s         r1   test_concurrencyz%TestUnivariateSpline.test_concurrency  s]     YYs%(UIIc't!r2D9	 	 IsA6r3   c                    t        j                  g d      }t        j                  g d      }|j                  dd      }|j                  dd      }t        ||      }t        ||      }t        j                  g d      }t         j                  j                   ||       ||             |j                  dd      }|j                  dd      }	t        ||	      }
t         j                  j                   ||       |
|             t        j                  g dg dg      }t        j                  g dg d	g      }t        j                  t        d
      5  t        ||       ddd       y# 1 sw Y   yxY w)z=Test that 2D arrays are flattened correctly in Fortran order.)rh   r   r         @r         @)rh   r   r         "@      0@      9@rK   r#   )r   r>   rW   r   )r   r   r!  )r   r"  r   )r   r   r#  )r$  r%  g      B@zx\[0\]<x\[1\]<r  N)	r{   r   r(   r   testingassert_allcloser  r  r  )rC   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_handlingz2TestUnivariateSpline.test_curfit_2d_array_handling  s7    xx01xx23 R#R#-dD9.ue<hh34


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


""6+#68LM xx$& 'xx') * \\+-AB 	5(t4	5 	5 	5s   E11E:) ra   rb   rc   rF   r  markparametrizerQ   rY   r[   rj   rs   rv   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r  r4  rd   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                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestLSQBivariateSplinec           
      :   g d}g d}g d}d}d|z   d|z
  g}d|z   d|z
  g}t        j                  t        d      5 }t        |||||dd	      }t	        |      dk(  sJ 	 d d d        t         d
d
      t        j                  d             y # 1 sw Y   0xY w)N	r#   r#   r#   r8   r8   r8   r9   r9   r9   	r#   r8   r9   r#   r8   r9   r#   r8   r9   	r9   r9   r9   r9   r9   r9   r9   r9   r9   r   r#   r9   
The coefficients of the spliner  r,   r-   r8   r!  )r  r  r  r   r&   r   r{   asarray	rC   rD   rE   r   rJ   r*   r+   rr)   s	            r1   rF   z+TestLSQBivariateSpline.test_linear_constant  s    c!A#Yc!A#Y\\+-OP 	TU$Qq2bA;Cq6Q;;	 	C1Irzz"~6		 	s   #BBc           
      l   g d}g d}g d}d}d|z   d|z
  g}d|z   d|z
  g}t        j                  t        d      5  t        |||||dd	      }d d d        j	                         \  }}t        |d d
 |dd        D ]  \  }}	t        |d d
 |dd        D ]  \  }
}dD ]  }dD ]}  }|d|z
  z  |	|z  z   }|
d|z
  z  ||z  z   } |||
      d|z
  z  d|z
  z   ||	|
      |z  d|z
  z  z    |||      d|z
  z  |z  z    ||	|      |z  |z  z   }t         |||      |           y # 1 sw Y   xY w)Nr:  r;  	r   rm   r   r9   rT   rm   r#   r9   rT   r   r#   r9   r=  r  r>  rK   )r   r   r   )r   皙?gffffff?)r  r  r  r   r$   zipr   )rC   rD   rE   r   rJ   r*   r+   r)   xaxbyaybrO   r   ypzps                   r1   test_bilinearityz'TestLSQBivariateSpline.test_bilinearity  s   c!A#Yc!A#Y\\+-OP 	<$Qq2bA;C	< B"Sb'2ab6* 
	<FBb"gr!"v. 	<B( <A, <1X1_1X1_ #BmQqS11Q37 #BAqs 34 #BQqS 1! 34 !$BAa0 ,C2J;<<	<
	<	< 	<s   D**D3c                    g d}g d}t        g d      }d}d|z   d|z
  g}d|z   d|z
  g}t        j                  t        d      5 }t	        |||||dd	      }t        |      dk(  sJ 	 d d d        j                         \  }} |||      }	d
t        |      d d d f   t        |      d d d f   z  |	d dd df   |	dd d df   z   |	d ddd f   z   |	dd dd f   z   z  j                         z  }
t        t        j                  |j                  |d   |d   |d   |d               t        j                  |
             y # 1 sw Y   xY w)N)	r#   r#   r#   r8   r8   r8   r   r   r   r;  rC  r   r#   r9   r=  r  r>        ?rK   r   )r   r  r  r  r   r&   r$   r	   sumr   r{   r?  r   )rC   rD   rE   r   rJ   r*   r+   rA  r)   tztrpzs              r1   test_integralz$TestLSQBivariateSpline.test_integral  sj   %&c!A#Yc!A#Y\\+-OP 	TU$Q1b"qACq6Q;;	 BR[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,	.	 	s   #EEc           
         g d}g d}g d}d}d|z   d|z
  g}d|z   d|z
  g}t        j                  t        d      5 }t        |||||dd	      }t	        |      dk(  sJ 	 d d d        t         g g       t        j                  d
             t         |g g d      t        j                  d             y # 1 sw Y   XxY w)Nr:  r;  r<  r   r#   r9   r=  r  r>  r   Fgridr   )r  r  r  r   r&   r   r{   r   r@  s	            r1   rs   z'TestLSQBivariateSpline.test_empty_input  s    c!A#Yc!A#Y\\+-OP 	TU$Q1b"qACq6Q;;	 	BRXXe_5B/$@	 	s   #B99Cc           
         d}d|z   d|z
  g}d|z   d|z
  g}t        t              5 }t        j                  dd      }t        j                  dd      }t        j                  ddd      }t	        |||||       d d d        dt        j                        v sJ t        t              5 }t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  ddd	      }t	        ||||||
       d d d        dt        |j                        v sJ t        t              5 }t        j                  dd      }t	        |||
       d d d        dt        |j                        v sJ t        t              5 }d}	t	        |||	       d d d        dt        |j                        v sJ t        t              5 }t	        ||dd       d d d        dt        |j                        v sJ t        t              5 }
t	        ||d       d d d        dt        
j                        v sJ t        t              5 }
t	        ||d       d d d        dt        |
j                        v sJ y # 1 sw Y   #xY w# 1 sw Y   xY w# 1 sw Y   IxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   oxY w)Nr   r#   r9   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)rh   epseps should be between (0, 1))r   r   r{   r
   r   r   r   )rC   rJ   r*   r+   r   rD   rE   r   r   r   exc_infos              r1   test_invalid_inputz)TestLSQBivariateSpline.test_invalid_input  s   !eQU^!eQU^:& 	0$C&AC&AC2.Aq!QB/		0
 7#djj/III:& 	5$C&AC&AC&AC2.Aq!QB!4	5 :S_LLL:& 	5$D$'Aq!QB!4	5 &TZZ888:& 	;$$Dq!QBT:	; +c$**o===:& 	>$q!QB2"=	>L4:: 	  :& 	9(q!QBC8	9-X^^1DDDD:& 	9(q!QBC8	9-X^^1DDDDI	0 	0	5 	5	5 	5
	; 	;
	> 	>
	9 	9	9 	9sU   AJ*A,J((J5K"K%K'K'J%(J25J?KKK$'K0c           
          d}t        j                  d|z   d|z
  g      }t        j                  d|z   d|z
  g      }t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  g d      }t        j                  t
        d      5 }	t        |||||||	      }
t        |j                         |j                         |j                         |j                         |j                         |j                         |	      }t         |
d
d
       |d
d
             t        |	      dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr   r#   r9   r   rX  )r   rX  r   rX  r=  r  )r   r   r   r8   )
r{   r   r
   r  r  r  r   r  r   r&   )rC   rJ   r*   r+   rD   rE   r   r   r   rA  r	  r   s               r1   r
  z,TestLSQBivariateSpline.test_array_like_inputG  s-   XXq1ua!en%XXq1ua!en%KKT"KKT"KKT"KKT"xx./\\+-OP 	TU%aAr2FD%ahhj!((*ahhj&(iik299;!((*+/1D DcNDcN;q6Q;;	 	 	s   B#E44E=c                    t         j                  ddddf   \  }}|j                         }|j                         }dt        j                  |      z  }t        j                  ddd      }t        j                  ddd      }t        j                  t        d	      5 }t        |||||      }t        |      d
k(  sJ 	 ddd       t         ||d      |       y# 1 sw Y   xY w)zkTest 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#   NFrT  )r{   mgridravelr   r
   r  r  r  r   r&   r   )rC   rD   rE   r   r*   r+   rA  r)   s           r1   test_unequal_length_of_knotsz3TestLSQBivariateSpline.test_unequal_length_of_knots[  s     xx#qu%1GGIGGI",,q/![[dB'[[dB'\\+-OP 	TU$Qq2b1Cq6Q;;	 	C15115		 	s    CC&N)
ra   rb   rc   rF   rL  rR  rs   rf  r
  rm  rd   r3   r1   r8  r8    s(    7<0.&A)EV(6r3   r8  c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestSmoothBivariateSplinec                 6   g d}g d}g d}t        |||dd      }|j                         D ]  }t        |g d        t        |j                         g d       t	        |j                               dk  sJ t         |g d	dd
g      ddgddgddgg       y )Nr:  r;  r<  r#   r>  )r#   r#   r9   r9   )r9   r9   r9   r9   rL   r=   r>   r9   )r   r$   r   r'   r@   rA   rC   rD   rE   r   r)   rO   s         r1   rF   z.TestSmoothBivariateSpline.test_linear_constantm  s    #AaQ!4 	7A%a6	7 	"#.."2LA3##%&...!#kAs8"<1v1vPQSTv>VWr3   c                 \   g d}g d}g d}t        |||dd      }|j                         D ]#  }t        |t        j                  g d             % t        |j                         g d       t        |j                               dk  sJ t         |g d	dd
g      ddgddgddgg       y )Nr:  r;  )	r   r   r   r8   r8   r8   rT   rT   rT   r#   r>  )r   r#   r9   r9   )r   r   rT   rT   rL   r=   r>   r   r8   )	r   r$   r   r{   r?  r   r'   r@   rA   rq  s         r1   r[   z(TestSmoothBivariateSpline.test_linear_1dy  s    #AaQ!4 	;AArzz.9:	;!#.."2LA3##%&...!#i3"81Q%1qe9LMr3   c                    g d}g d}t        g d      }t        j                         5  t        j                  ddt               t        |||ddd      }d d d        g d	}g d
} ||      }dt        |      d d d f   t        |      d d d f   z  |d dd df   |dd d df   z   |d ddd f   z   |dd dd f   z   z  j                         z  }t        t        j                  |j                  |d   |d   |d   |d               t        j                  |             t        |||ddd      }	t        t        j                  |	j                  |d   |d   |d   |d               t        j                  |      d        ||d d |d d       }dt        |d d       d d d f   t        |d d       d d d f   z  |d dd df   |dd d df   z   |d ddd f   z   |dd dd f   z   z  j                         z  }t        t        j                  |j                  |d   |d   |d   |d               t        j                  |             y # 1 sw Y    xY w)N)	r#   r#   r#   r8   r8   r8   rT   rT   rT   r;  rC  ignorez
The required storage spacer#   r   r,   r-   rJ   )r#   r8   rT   r7   rN  rK   r8   )decimalr   )r   warningscatch_warningsfilterwarningsr  r   r	   rO  r   r{   r?  r   )
rC   rD   rE   r   r)   r*   r+   rP  rQ  lut2s
             r1   rR  z'TestSmoothBivariateSpline.test_integral  s}   %&$$& 	B##8+G'1aA!qAC		B R[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1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,	./	B 	Bs   -IIc                 >   t        j                  ddd      }t        j                  ddd      }||z   }t        j                  ddd      }t        j                  ddd      }t        |||      }t        |||      }t	        |||      } |||      }	t        ||	       y )Nr   r8   P   rK   r#   r   )r{   r
   r   r   r   r   )
rC   rD   rE   r   xiyir   res1interp_res2s
             r1   test_rerun_lwrk2_too_smallz4TestSmoothBivariateSpline.test_rerun_lwrk2_too_small  s     KKAr"KKAr"E[[Q$[[Q$q!Qr2s#'1a0r2D$'r3   c                 8   t        t              5 }t        j                  dd      }t        j                  dd      }t        j                  ddd      }t	        |||       d d d        dt        j                        v sJ t        t              5 }t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  ddd      }t	        ||||       d d d        dt        |j                        v sJ t        t              5 }t        j                  d	d      }t	        |       d d d        d
t        |j                        v sJ t        t              5 }d}t	        |       d d d        dt        |j                        v sJ t        t              5 }t	        dd       d d d        dt        |j                        v sJ t        t              5 }t	        d	       d d d        dt        |j                        v sJ t        t              5 }t	        d       d d d        dt        j                        v sJ t        t              5 }t	        d       d d d        dt        |j                        v sJ y # 1 sw Y   WxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   LxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   |xY w)Nr   rX  r   rY  r[  r\  r   r]  r   r^  r_  r   r`  r>  ra  rz   r   rh   rb  rd  )r   r   r{   r
   r   r   r   )rC   r   rD   rE   r   r   r   re  s           r1   rf  z,TestSmoothBivariateSpline.test_invalid_input  s   :& 	+$C&AC&AC2.A!!Q*		+
 7#djj/III:& 	0$C&AC&AC&AC2.A!!QQ/	0 :S_LLL:& 	0$D$'A!!QQ/	0 &TZZ888:& 	6$$D!!Q5	6 +c$**o===:& 	9$!!QbR8	9L4:: 	  :& 	3$!!QT2	3%TZZ888:& 	4(!!Qs3	4-X^^1DDDD:& 	4(!!Qs3	4-X^^1DDDDQ	+ 	+	0 	0	0 	0
	6 	6
	9 	9
	3 	3	4 	4	4 	4sa   AJ7A*K,&KKK+K8LL7KKKK(+K58LLLc           	         t        j                  g d      }t        j                  g d      }t        j                  g d      }t        j                  g d      }t        j                  g d      }t        |||||dd      }t        |j                         |j                         |j                         |j                         |j                         dd      }t	         |d	d
       |d	d
             y )Nr:  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   )rC   rD   rE   r   r   r   r	  r   s           r1   r
  z/TestSmoothBivariateSpline.test_array_like_input  s    HH01HH01HH01HH01xx,-$Q1qI$QXXZQXXZ*.++-188:()a1 	S#S#7r3   N)	ra   rb   rc   rF   r[   rR  r  rf  r
  rd   r3   r1   ro  ro  l  s$    
X	N.>(*EX8r3   ro  c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestLSQSphereBivariateSplinec                    d\  }}t        d|dz
  z  dd|dz
  z  z
  |      t        z  }t        d|dz
  z  dd|dz
  z  z
  |      dz  t        z  }t        |j                  d   |j                  d   f      }|d d d   }|d d d   }|d d dd d df   }t	        ||      \  }	}
t        |	j                         |
j                         |j                  j                         ||      }|| _        || _	        ||c| _
        | _        y )Nr   Z   r   r#   r   r   rg   )r
   r   r   r   r   r   rl  Tlut_lsqdatanew_lonsnew_lats)rC   nthetanphithetaphir  knotstknotspknotdatalatslonsr  s               r1   setup_methodz)TestLSQSphereBivariateSpline.setup_method  s
   fqj)1sFQJ/?+?H2MsD1H~q3q>'94@2EJU[[^SYYq\23ssSqS!SqS>eS)
d*4::<+/66<<>66K	'-v$t}r3   c                     t        | j                  j                               dk  sJ t        | j                  | j                  | j
                        | j                         y )NrL   )r@   r  rA   r   r  r  r  rC   s    r1   rF   z1TestLSQSphereBivariateSpline.test_linear_constant   sF    4<<,,./%777!$,,t}}dmm"L"&))	-r3   c                     t        | j                  g g       t        j                  d             t        | j                  g g d      t        j                  d             y Nr   FrT  rV  )r   r  r{   r   r  s    r1   rs   z-TestLSQSphereBivariateSpline.test_empty_input  s@    !$,,r2"6H!$,,r2E,"BBHHTNSr3   c           	      x   d\  }}t        d|dz
  z  dd|dz
  z  z
  |      t        z  }t        d|dz
  z  dd|dz
  z  z
  |      dz  t        z  }t        |j                  d   |j                  d   f      }|d d d   }|d d d   }t	        t
              5 }t        dd|	      t        z  }	t        |	|      \  }
}t        |
j                         |j                         |j                  j                         ||       d d d        d
t        j                        v sJ t	        t
              5 }t        dd|	      t        z  }	t        |	|      \  }
}t        |
j                         |j                         |j                  j                         ||       d d d        d
t        |j                        v sJ t	        t
              5 }t        dd|	      dz  t        z  }t        ||      \  }}t        |j                         |j                         |j                  j                         ||       d d d        dt        |j                        v sJ t	        t
              5 }t        dd|	      dz  t        z  }t        ||      \  }}t        |j                         |j                         |j                  j                         ||       d d d        dt        |j                        v sJ t        ||      \  }}t	        t
              5 }t        j                  |      }d|d<   t        |j                         |j                         |j                  j                         ||       d d d        dt        |j                        v sJ t	        t
              5 }t        j                  |      }t        |d<   t        |j                         |j                         |j                  j                         ||       d d d        dt        |j                        v sJ t	        t
              5 }t        j                  |      }d|d<   t        |j                         |j                         |j                  j                         ||       d d d        dt        |j                        v sJ t	        t
              5 }t        j                  |      }dt        z  |d<   t        |j                         |j                         |j                  j                         ||       d d d        dt        |j                        v sJ t	        t
              5 }t        g d      }t        |j                         |j                         |j                  j                         |||       d d d        dt        |j                        v sJ t	        t
              5 }t        |j                         |j                         |j                  j                         ||d       d d d        dt        |j                        v sJ t	        t
              5 }t        |j                         |j                         |j                  j                         ||d       d d d        dt        |j                        v sJ y # 1 sw Y   xY w# 1 sw Y   (xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   |xY w# 1 sw Y   xY w# 1 sw Y   vxY w# 1 sw Y   xY w# 1 sw Y   xxY w# 1 sw Y   xY w# 1 sw Y   xY w)Nr  r   r#   r   r   rg   皙r   rY  theta should be between [0, pi]r   皙?phi should be between [0, 2pi]rh   ztt should be between (0, pi)ztp should be between (0, 2pi)r8   	r   r   r>   r   r   r>   r   r   r   r   r^  rb  rd  )r
   r   r   r   r   r   r   r   rl  r  r   r   r{   r   r   )rC   r  r  r  r  r  r  r  re  invalid_thetainvalid_latsr  invalid_phir  invalid_lonsinvalid_knotstinvalid_knotsp	invalid_ws                     r1   rf  z/TestLSQSphereBivariateSpline.test_invalid_input	  s#   
+Q
1C-C!#%&sdQh'SD1H-=)=tDrIBNU[[^SYYq\23ssSqS:& 	E($T3F;b@M!)-!=L$$\%7%7%94::<%)VV\\^VVE	E
 1C4GGGG:& 	E($S#6:R?M!)-!=L$$\%7%7%94::<%)VV\\^VVE	E
 1C4GGGG:& 	E("4&9C?"DK!)%!=D,$TZZ\<3E3E3G%)VV\\^VVE	E
 03x~~3FFFF:& 	E("383>CK!)%!=D,$TZZ\<3E3E3G%)VV\\^VVE	E
 03x~~3FFFFeS)
d:& 	M(WWV_N $N1$TZZ\4::<%)VV\\^^VM	M
 .X^^1DDDD:& 	M(WWV_N "N1$TZZ\4::<%)VV\\^^VM	M
 .X^^1DDDD:& 	M(WWV_N $N1$TZZ\4::<%)VV\\^V^M	M
 /#hnn2EEEE:& 	M(WWV_N !BN1$TZZ\4::<%)VV\\^V^M	M
 /#hnn2EEEE:& 	B(LMI$TZZ\4::<%+VyB	B &X^^)<<<<:& 	>($TZZ\4::<%+V>	> .X^^1DDDD:& 	>($TZZ\4::<%+V>	> .X^^1DDDDQ	E 	E	E 	E	E 	E	E 	E	M 	M	M 	M	M 	M	M 	M	B 	B	> 	>
	> 	>s   A(Z.-A(Z;A+[ A+[
A["A"[/*A[<8A%\	A\A\#A\0.Z8;[[["[,/[9<\	\\ #\-0\9c           	      h   d\  }}t        d|dz
  z  dd|dz
  z  z
  |      t        z  }t        d|dz
  z  dd|dz
  z  z
  |      dz  t        z  }t        ||      \  }}t        |j                  d   |j                  d   f      }|d d d   }|d d d   }	t        |j                         j                  d         }
t        |j                         |j                         |j                  j                         ||	|
      }t        |j                         j                         |j                         j                         |j                  j                         j                         |j                         |	j                         |
j                               }t         |dd       |dd             y )	Nr  r   r#   r   r   rg   r   r   )
r
   r   r   r   r   rl  r   r  r  r   )rC   r  r  r  r  r  r  r  r  r  r   r	  r   s                r1   r
  z2TestLSQSphereBivariateSpline.test_array_like_input]  s   
+Q
1C-C!#%&sdQh'SD1H-=)=!"$&'eS)
dU[[^SYYq\23ssSqS##A&' (

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

(;(;(=(,

(;(;(=(,(=(=(?(.(.188:	G
 	"$sC.$sC.Ar3   Nra   rb   rc   r  rF   rs   rf  r
  rd   r3   r1   r  r    s     6$-
TREhBr3   r  c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestSmoothSphereBivariateSplinec                    t        dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  g	      }t        dt        z  t        dt        z  dt        z  t        dt        z  dt        z  t        dt        z  g	      }t        g d      }t        |||d      | _        y )NrN  r         ?r>   r<      _Brz   )r   r   r   r)   )rC   r  r  rA  s       r1   r  z,TestSmoothSphereBivariateSpline.setup_methodw  s    s2vs2vs2vr"ubeRUCF2vs2v' (R"Wb#(BGRr27B2X  -..uc1Er3   c                     t        | j                  j                               dk  sJ t        | j                  g dddg      ddgddgddgg       y )NrL   r=   r#   r>   r9   )r@   r)   rA   r   r  s    r1   rF   z4TestSmoothSphereBivariateSpline.test_linear_constant  sQ    488((*+e333!$((;3x"@$%q6Aq6Aq6":	<r3   c                     t        | j                  g g       t        j                  d             t        | j                  g g d      t        j                  d             y r  )r   r)   r{   r   r  s    r1   rs   z0TestSmoothSphereBivariateSpline.test_empty_input  s@    !$((2r"2BHHUOD!$((2r(">Or3   c                    t        dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  g	      }t        dt        z  t        dt        z  dt        z  t        dt        z  dt        z  t        dt        z  g	      }t        g d      }t        t              5 }t        dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  g	      }t	        |||d       d d d        d	t        j                        v sJ t        t              5 }t        dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  d
t        z  g	      }t	        |||d       d d d        d	t        |j                        v sJ t        t              5 }t        dt        z  t        dt        z  dt        z  t        dt        z  dt        z  t        dt        z  g	      }t	        |||d       d d d        dt        |j                        v sJ t        t              5 }t        dt        z  t        dt        z  dt        z  t        dt        z  dt        z  t        dt        z  g	      }t	        |||d       d d d        dt        |j                        v sJ t        t              5 }t        g d      }t	        ||||d       d d d        dt        |j                        v sJ t        t              5 }t	        |||d       d d d        dt        |j                        v sJ t        t              5 }t	        |||d       d d d        dt        |j                        v sJ t        t              5 }t	        |||d       d d d        dt        |j                        v sJ y # 1 sw Y   xY w# 1 sw Y   SxY w# 1 sw Y   xY w# 1 sw Y   YxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   |xY w)NrN  r   r  r>   r<  r  r  rz   r  r  r  r   g @r  r   rJ   r^  r   s should be positiverb  rd  )r   r   r   r   r   r   r   )rC   r  r  rA  re  r  r  r  s           r1   rf  z2TestSmoothSphereBivariateSpline.test_invalid_input  s   sRxr38R"Wb2grBwRxr385 6R"Wb#(BGRr27B2X  -.:& 	G(!4"9cBhb"r'#%7BGS2XsRx#&8#- .M (sAF		G
 1C4GGGG:& 	G(!38S2XsRxb#%7BGS2XsRx#&8#- .M (sAF		G
 1C4GGGG:& 	G(r2sRxb"cBh!#b"cBh!8 9K'{AF	G 03x~~3FFFF:& 	G(r2sRxb"cBh!#b"cBh!8 9K'{AF	G 03x~~3FFFF:& 	L(LMI'sAdK	L &X^^)<<<<:& 	?('sA>	?%X^^)<<<<:& 	A('sA4@	A-X^^1DDDD:& 	@('sA3?	@-X^^1DDDDS	G 	G	G 	G	G 	G	G 	G	L 	L
	? 	?	A 	A	@ 	@sd   :A#O4A#P AP*AP4P(P5QQ4O>PPP%(P25P>Q
Qc                    t        j                  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  g	      }t        j                  dt        z  t        dt        z  dt        z  t        dt        z  dt        z  t        dt        z  g	      }t        j                  g d      }t        j                  g d      }t        ||||d      }t        |j	                         |j	                         |j	                         |j	                         d      }t         |d	d	       |d	d	             y )
NrN  r   r  r>   r<  )	r   r   r   r   r   r   r   r   r   r  r  r   )r{   r   r   r   r  r   )rC   r  r  rA  r   r	  r   s          r1   r
  z5TestSmoothSphereBivariateSpline.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 +5#qAF +5<<>3::<+,88:tM!$sC.$sC.Ar3   Nr  rd   r3   r1   r  r  v  s     F<
P0EdBr3   r  c            	       H   e Zd Zej                  j                  dddg      d        Zej                  j                  dddg      d        Zej                  j                  dddg      d        Zej                  j                  dg d      ej                  j                  dddg      d	               Z	ej                  j                  dddg      d
        Z
d Zd Zd Zd Zd Zej                  j                  dddg      d        Zej                  j                  dddg      d        Zd Zej                  j                  dddg      d        Zd Zd Zd Zej                  j/                         ej                  j                  dddg      ej                  j                  dg d      ej                  j                  deefeeff      d                             Zej                  j9                         ej                  j;                  ej>                  dk  d       ej                  j                  dddg      ej                  j                  deefeeff      d!                             Z ej                  j                  deefeeff      d"        Z!y#)$TestRectBivariateSpliner<   r9   rT   c                 :   t        g d      }t        g d      }t        g dg dg dg dg dg      }t        |||||      }t         |||      |       t        |||||      }t	        t        |||      |j                  t        j                               y )Nrf   r#   r8   r#   r8   r#   r#   r8   r9   r8   r#   r#   r8   r8   r8   r#   r>  )	r   r   r   r   r   r    astyper{   float64)rC   r<   rD   rE   r   r)   
lut_customs          r1   test_defaultsz%TestRectBivariateSpline.test_defaults  s    /"/"?""""	$ % "!QaA6!#a)Q/Q1q1
*:q!<ahhrzz>R	Tr3   c                    t        j                  ddd      }t        j                  ddd      }t        j                  |d d d f         t        j                  |d d d f         z  }t        j                  ddd      }t        j                  ddd      }t	        |||||      } |||      }t        |||||      }	t        |	||      }
t        |
|dd       y )Nr   rT   rg   rx   r>  Tqs*>rtolrN   )r{   r
   sinr|   r   r   r    r   )rC   r<   rD   rE   r   r}  r~  refref_valscustomcustom_valss              r1    test_interpolated_offgrid_pointsz8TestRectBivariateSpline.test_interpolated_offgrid_points  s     KK1a KK1a FF1QW:$'
!33[[Ar"[[Ar"!!QaA6r2;AqQ1-4VRDX\	3r3   c                 P   t        j                  d|dz         }t        j                  d|dz         }|d d d f   |d d d f   z   }|d d |dd  z   dz  }|d d |dd  z   dz  }t        |||||      }t        |||||      } |||      }	t	        |||      }
t        |
|	dd       y )Nr#   r8   rK   r>  r   r  r  )r{   r   r   r   r    r   )rC   r<   rD   rE   r   r}  r~  r  r  r  r  s              r1   test_midpointsz&TestRectBivariateSpline.test_midpoints  s     IIaQIIaQagJ47#fqun!fqun!!!QaA6AqQ1-r2;4VRDX\	3r3   s_val)r   r   rX  g      Y@c                    t        j                  ddd      }t        j                  ddd      }t        j                  ||d      \  }}||z   }|d d |dd  z   dz  }|d d |dd  z   dz  }	t        j                  ddd	      }
t        j                  ddd	      }d
||fd||	fd|
|fg}t        ||||||      }t	        ||||||      }|D ]+  \  }}} |||      }t        |||      }t        ||dd       - y )Nr   rT   r\  ijindexingrK   r#   r8   rx   zoriginal grid	midpointsz
dense grid)rJ   r,   r-   {Gz?r  )r{   r
   r   r   r   r    r   )rC   r  r<   rD   rE   XYr   x_midy_midxi_denseyi_dense
query_setsr  r  r  r}  r~  r  r  s                       r1   test_custom_matches_referencez5TestRectBivariateSpline.test_custom_matches_reference  s/    KK1b!KK1b!{{1a$/1E3B!AB%1$3B!AB%1$;;q!R(;;q!R( a#%'8X.

 "!QUqQ?AqEaA6# 	2IAr22r{H8RHKK!%D2		2r3   c                    t        g d      }t        g d      }t        g dg dg dg dg dg      }t        |||||      }t        |||||      }g d}g d}|j                  ||      }	t        t	        ||      D 
cg c]  \  }
} ||
|      d    c}}
      }t        |	|       t        |||d	
      }t        t	        ||      D 
cg c]  \  }
}t        ||
|      d    c}}
      }t        ||dd       y c c}}
w c c}}
w )Nrf   r  r  r  r>  )r#   ffffff@g333333@r   ffffff
@333333?r9   )r#   r  r  r   r"  r   r9   r   FrT  r   r  r  )r   r   r   evrE  r   r    r   )rC   r<   rD   rE   r   r)   r  r}  r~  zir   rJ  zi2	zi_custom
zi2_customs                  r1   test_evaluatez%TestRectBivariateSpline.test_evaluate   s    ++;{;{;OP!!Aa12Q1q1
,,VVB^CBK@&"bSR[%@AB$2:r2ER	*-b"+7 &B ;:r2NtT 7 8
	:\	3 A
7s   D
D
c           	      r   t        g d      }t        g d      }t        g dg dg dg dg dg      }t        g dg dg dg dg dg      d	z  }t        g d
g d
g dg dg d
g      }t        g dg dg dg dg dg      d	z  }t        |||      }t        |||      }t         |||d      |       t         |||d      |       t         |||dd      |       t	        t        |||d      |dd       t	        t        |||d      |dd       t	        t        |||dd      |dd       y )Nrf   r  r  r  r   r   ir   r   r   r   r   r   r   r   r   rT   r   r   r   r   ir   r   r   rT   rK   r   r#   r   r>   r   g      r   r8   rN  r         пr   (   ir      iig     @0@r   g     @0   r   rg   r   r      g     +r   g     +@ir#   dxdyr  r  r   r  r  )r   r   r   r   r   r    	rC   rD   rE   r   r  r  dxdyr)   r  s	            r1   test_derivatives_gridz-TestRectBivariateSpline.test_derivatives_grid5  sC   ++;{;{;OPM,{+' ((*+M-0@m- .'(?1-A BBDE "!Aa(Qq^
!#aQ-3!#aQ-3!#aQ!"4T:*:qa@	' 	*:qa@	' 	*:qa1Ed	'r3   c           
      *   t        g d      }t        g d      }t        g dg dg dg dg dg      }t        g d      }t        g d      }t        g d      dz  }t        |||      }t         |||d	d
      |       t         |||d	d
      |       t         |||d	d	d
      |       t        |||      }t	        t        |||d	d
      |dd       t	        t        |||d	d
      |dd       t	        t        |||d	d	d
      |dd       y )Nrf   r  r  r  r   r   gUUUUUU?r   r   rT   rK   r   r  r     A   r   7             8@r#   F)r  rU  )r  rU  r  r  rU  r   r  r  )r   r   r   r   r   r    r  s	            r1   r   z(TestRectBivariateSpline.test_derivativesP  s   ++;{;{;OP>"#$%&s*!!Aa(!#aQE":2>!#aQE":2>!#aQ!"?EQq^
*:aQEJAL	
 	*:aQEJAL	
 	*:aQ!Oal	
r3   c           	      j    t        j                  |D cg c]  }|D ]  }||g  c}}      S c c}}w )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   )rC   rD   rE   r}  r~  s        r1   make_pair_gridz&TestRectBivariateSpline.make_pair_gridj  s1    & xxA:b:""b::;;:s   /
c                 n   t        g d      }t        g d      }t        g dg dg dg dg dg      }t        g dg dg dg dg dg      d	z  }t        g d
g d
g dg dg d
g      }t        g dg dg dg dg dg      d	z  }t        |||      }t        |      }ddg|fddg|fddg|ffD ]s  \  }	}
  |j                  |	 ||      } |j	                  |	      | j                  ||            j                  |
j                        }t        ||
       t        ||
       u t        |||      }t        t        |j	                  ddg      ||      |dd       t        t        |j	                  ddg      ||      |dd       t        t        |j	                  ddg      ||      |dd       y )Nrf   r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r#   r   r  r  )r   r   r2   partial_derivativer   r  r(   r   r   r   r   r    )rC   rD   rE   r   r  r  r  r)   lut_ndbsplineordersexpectedactual_rect
actual_ndbr  s                 r1   #test_partial_derivative_method_gridz;TestRectBivariateSpline.test_partial_derivative_method_grid  s   /"/"?""""	$ %
 %$#%#	% & )+	+
 %%()%	' (
 +1'1'	) * -/	/
 "!Q*,S1#$a&"A|q!fd^ L 	<FH90#00&9!Q?K911&9##Aq)ghnn%  &k8<%j(;	< Q1%
*:+@+@!Q+H!QOAL	
 	*:+@+@!Q+H!QOAL	
 	*:+@+@!Q+H!QOal	
r3   c                    t        g d      }t        g d      }t        g dg dg dg dg dg      }t        g d      t        g d      t        g d      dz  d	}t        |||      }t        |      }t        |||      }| j	                  ||      }t        j                  t        |            }	||	t        |      z  |	z      }
|j                         D ]  \  }}|\  }} |j                  ||      ||d
      }t        ||        |j                  ||g      |
      }t        ||       t        |j                  ||g      ||d
      }t        ||dd        y )Nrf   r  r  r  r  r  r  r	  ))r#   r   )r   r#   r   FrT  r   r  r  )r   r   r2   r   r  r{   r   r&   itemsr  r   r   r    r   )rC   rD   rE   r   r  r)   r  r  pointsdiag_idxdiag_pointsr  expected_valsr  r  
actual_rbsr  	actual_rps                     r1   test_partial_derivative_methodz6TestRectBivariateSpline.test_partial_derivative_method  sj   /"/"?""""	$ % ,-././#5
 "!Q*,S1Q1%
$$Q* 99SV$XA.9:%-^^%5 	7!FMFB7//B715IJ%j-@ <112r(;KHJ%j-@ 7z7L7LbRTX7V15"II}!"7	7r3   c                    t        g dt              }|j                         }t        |j                  |j                  f      }t        |||      }t        |      }t        t              5  |j                  |dz   d       d d d        |j                  |dz   dg      j                  dk(  j                         sJ t        |||||      }t        t              5  |j                  |dz   d       d d d        t        |||||      }|j                  |dz   dg      j                  dk(  j                         sJ y # 1 sw Y   xY w# 1 sw Y   YxY w)N)r   r#   r8   r9   rT   r   r#   rh   r>  )r   r   r   r   sizer   r2   r   r   r  r   r0   allr   )rC   r<   rD   rE   r   r)   r  r  s           r1   'test_partial_derivative_order_too_largez?TestRectBivariateSpline.test_partial_derivative_order_too_large  s2   //FFH!&&!&&!"!!Q*,S1:& 	-""1q5!,	- ((!a%466#=BBDDD!!QaA6:& 	-""1q5!,	- Q1q1
%%q1uaj133s:??AAA	- 	-	- 	-s   ,D>E
>E
Ec           
          t        g d      }t        g d      }t        g dg dg dg dg dg      }t        |||||      }t         |||       ||d d d f   |d d d f   d             y )Nrf   r  r  r  r>  FrT  )r   r   r   )rC   r<   rD   rE   r   r)   s         r1   test_broadcastz&TestRectBivariateSpline.test_broadcast  sf    ++;{;{;OP!!Aa12Aq	3q4y!DF)%#HIr3   c                 	   t        g d      }t        g d      }t        g dg dg dg dg dg      }t        t              5 }t        |||       d d d        dt	        j
                        v sJ t        t              5 }t        |||       d d d        dt	        j
                        v sJ t        g d      }t        g d      }t        g dg dg dg dg dg      }t        t              5 }t        |||       d d d        dt	        |j
                        v sJ t        t              5 }t        |||       d d d        dt	        |j
                        v sJ t        g d      }t        g d      }t        g dg dg dg dg      }t        t              5 }t        |||       d d d        d	t	        |j
                        v sJ t        t              5 }t        |||       d d d        d	t	        |j
                        v sJ t        g d      }t        g d      }t        g d
g d
g dg dg d
g      }t        t              5 }t        |||       d d d        dt	        |j
                        v sJ t        t              5 }t        |||       d d d        dt	        |j
                        v sJ t        g d      }t        g d      }t        g dg dg dg dg dg      }d}t        t              5 }t        ||||       d d d        dt	        |j
                        v sJ t        t              5 }t        ||||       d d d        dt	        |j
                        v sJ t        t              5 }t        |||d       d d d        dt	        |j
                        v sJ t        t              5 }t        |||d       d d d        dt	        |j
                        v sJ y # 1 sw Y   xY w# 1 sw Y   txY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   |xY w# 1 sw Y   KxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   LxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)N)r   r8   r9   rT   rg   rf   r  r  r  x must be strictly increasing)r8   r8   r9   rT   rg   y must be strictly increasingz7x dimension of z must have same number of elements as x)r#   r8   r#   r8   )r#   r8   r9   r8   )r#   r8   r8   r8   z7y dimension of z must have same number of elements as yr_  r   r`  r   rz   r   )r   r   r   r   r   r   r   )rC   rD   rE   r   r   info_customr   s          r1   rf  z*TestRectBivariateSpline.test_invalid_input  s:   /"/"?O_#_6 7 :& 	)$1a(	).#djj/AAA:& 	+Aq!	.#k6G6G2HHHH/"/"?O_#_6 7:& 	)$1a(	).#djj/AAA:& 	+Aq!	.#k6G6G2HHHH/"/"?O_#% &:& 	)$1a(	)Hdjj/" 	" " :& 	+Aq!	Hk''() 	) ) /"/"<| ,0 1 :& 	)$1a(	)Hdjj/" 	" " :& 	+Aq!	Hk''() 	) ) /"/"?O_#_6 7 :& 	4$1ad3	4*c$**o===:& 	(+Aq!$'	(*c+2C2C.DDDD:& 	1$1a40	1%TZZ888:& 	%+Aq!t$	%%[->->)????K	) 	)	 		) 	)	 		) 	)
	 		) 	)
	 		4 	4	( 	(	1 	1	% 	%s   O5P4P2P!P)P6QQQQ*Q7R5O?PPP&)P36Q QQQ'*Q47R Rc                    t        g d      }t        g d      }t        g dg dg dg dg dg      }t        g d      }t        ||||||      }t        ||||||      }t        |j                         |j                         |j                         |j                         ||      }t        |j                         |j                         |j                         |j                         ||      }	t	         |dd       |dd             t         |dd      t        |dd      dd	
       t         |dd      t        |	dd      dd	
       t        t        |dd      t        |	dd      dd	
       y )Nrf   r  r  r  )r#   rg   r#   rg   )r   r,   r-   r   r   r  r  )r   r   r   r  r   r   r    )
rC   r<   rD   rE   r   r   r	  spl1_customr   spl2_customs
             r1   r
  z-TestRectBivariateSpline.test_array_like_input@  sC   /"/"?O_"O5 6\""1a!BaADQ1="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                 B   d}t         j                  j                  dt         j                  |      }t         j                  j                  ddt         j                  z  |      }t        j                  |      }t        |||d      }d}d}t        j                  |      |z  t         j                  z  }t        j                  |      |z  dz  t         j                  z  }	 |||	       |j                         }
d|
d<   t        t              5 } ||
|	       d d d        d	t        j                        v sJ |	j                         }d|d<   t        t              5 } |||       d d d        d
t        |j                        v sJ y # 1 sw Y   rxY w# 1 sw Y   /xY w)Nr\  r   r8   r   rz   r   r9   MbP?r%  r&  )r{   randomuniformr   r   r   r   r   r   r   r   r   )rC   NSampThetaPhiDataInterpolatorNLonNLatGridPosLatsGridPosLonsnonGridPosLatsre  nonGridPosLonss                r1   test_not_increasing_inputz1TestRectBivariateSpline.test_not_increasing_inputY  sa   		!!!RUUE2ii1ruu9e4wwu~25#tsKiio,ruu4iio,q02558 	[+.$))+!q:& 	6(5	6.#hnn2EEEE$))+!q:& 	6(n5	6.#hnn2EEEE	6 	6	6 	6s   
F	
F	FFc                    t         j                  j                  d      }t        j                  |      }t        j                  |      }|j	                  dd||f      }|||j                  t         j                        fS )Nr#   r   r   )r{   r-  default_rngr   integersr  r  )rC   r.   r/   rngrD   rE   r   s          r1   _sample_large_2d_dataz-TestRectBivariateSpline._sample_large_2d_datav  s`    ii##A&IIbMIIbMLLC"b*!QXXbjj)))r3   c                      | ||      S r  rd   )rP   rD   rE   s      r1   _RectBivariateSplineEvalz0TestRectBivariateSpline._RectBivariateSplineEval  s    1ayr3   r   )^  iR  )i     s_tols))r   -q=gHz>)r#   gy&1|?-C6?)r9   r  rF  spl_apisc                     |\  }}|\  }}}| j                  ||      \  }	}
}|\  }} ||	|
||      } |||	|
      }t        j                  |      j                         rJ t	        ||||       y )Nrz   rN   r  r?  r{   isnananyr   )rC   r   rD  rG  r.   r/   rJ   rN   r  rD   rE   r   spl_constructspl_evalrP   z_spls                   r1   test_spline_large_2dz,TestRectBivariateSpline.test_spline_large_2d  s    & B4,,R41a"*xAq!q)a#88E?&&()(qt$7r3   l        z2Segfaults on 32-bit system due to large input data)reasonc           	          d\  }}d\  }}}| j                  ||      \  }}	}
|\  }} |||	|
|d||      } ||||	      }t        j                  |      j                         rJ t	        ||
||       y )N)ry   i  )r8   r  rE     )rJ   maxitr,   r-   rI  rJ  )rC   r<   rG  r.   r/   rJ   rN   r  rD   rE   r   rM  rN  rP   rO  s                  r1   test_spline_large_2d_maxitz2TestRectBivariateSpline.test_spline_large_2d_maxit  s    " B&4,,R41a"*xAq!q"$q2a#88E?&&()(qt$7r3   c                    d\  }}d\  }}d}t         j                  j                  d      }t        j                  dd|t              }t        j                  dd|t              }	t        j
                  ||	d	      \  }
}t        j                  |
      t        j                  |      z  d
t        j                  d|
z  dz         z  t        j                  d|z  dz
        z  z   d|j                  ||f      z  z   j                  t              }|\  }} |||	||||      } ||||	      }t        j                  |      j                         rJ t        ||dd       y)zU
        Test regrid with synthetic smooth data (mixed frequencies + noise).
        )@   rW  )r9   r9   r   r   rh   r   r   r  r  r   r8   r   r>   g?)r  ru  r   rI  N)r{   r-  r<  r
   r   r   r  r|   normalr  rK  rL  r   )rC   rG  r.   r/   r,   r-   rJ   r>  rD   rE   r  r  r   rM  rN  rP   rO  s                    r1   test_spline_synthetic_dataz2TestRectBivariateSpline.test_spline_synthetic_data  s>    BBii##A&KKS"E2KKS"E2 {{1a$/1FF1Iq	!BFF1q53;''"&&q3*??@SZZb"XZ../ &-	 	
 #+xAq!rQ7a#88E?&&(((qs5r3   N)"ra   rb   rc   r  r5  r6  r  r  r  r  r  r   r   r  r  r  r!  r#  rf  r
  r:  r?  rA  slowr   r   r    rP  xslowskipifsysmaxsizerU  rY  rd   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                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestRectSphereBivariateSplinec           
          t        ddt        z  dz
  d      }t        dt        dz
  d      }t        g dg dg dg dg dg dg dg      }t        |||      }t	         |||      |       y N{Gz?r8   rm   r#   r8   r#   r8   r#   r8   r#   r#   r8   r9   r8   r#   r8   r#   r#   r8   r8   r8   r#   r8   r#   )r
   r   r   r   r   rC   rE   rD   r   r)   s        r1   r  z+TestRectSphereBivariateSpline.test_defaults  si    T1R49a(T2d7A&???"??"$ % (!A.!#a(1-r3   c           
      p   t        ddt        z  dz
  d      }t        dt        dz
  d      }t        g dg dg dg dg dg dg dg      }t        |||      }g d}g d}|j	                  ||      }t        t        ||      D 	cg c]  \  }}	 |||	      d	    c}	}      }
t        ||
       y c c}	}w )
Nrc  r8   rm   rd  re  rf  )r   r#   r  g@r!  gQ@g      @)r>   rD  r  g?gjt?r   rF  r   )r
   r   r   r   r  rE  r   )rC   rE   rD   r   r)   r~  r}  r  r   rJ  r  s              r1   r  z+TestRectSphereBivariateSpline.test_evaluate  s    T1R49a(T2d7A&???"??"$ % (!A.16VVB^CBK@&"bSR[%@AB$ As   B2
c                 t   t        j                  t        j                  dt        j                  ddd      z
        j                  t        j                  dt        j
                  t        j                  ddd            z
              j                  }t        t              5 }t        j                  d	d
d      t         j                  z  dz  }t        j                  ddd      t         j                  z  dz  }t        |||       d d d        dt        j                        v sJ t        t              5 }t        j                  ddd      t         j                  z  dz  }t        j                  ddd      t         j                  z  dz  }t        |||       d d d        dt        |j                        v sJ t        t              5 }t        j                  dd
d      t         j                  z  dz  }t        j                  ddd      t         j                  z  dz  }t        |||       d d d        dt        |j                        v sJ t        t              5 }t        j                  dd
d      t         j                  z  dz  }t        j                  ddd      t         j                  z  dz  }t        |||       d d d        dt        |j                        v sJ t        t              5 }t        j                  dd
d      t         j                  z  dz  }t        j                  ddd      t         j                  z  dz  }t        |||d	       d d d        dt        |j                        v sJ y # 1 sw Y   vxY w# 1 sw Y   xY w# 1 sw Y   hxY w# 1 sw Y   xY w# 1 sw Y   VxY w)N     V@      T      T@        f@rh        u@rn   rK   rC  r   rB  u should be between (0, pi)r      K v[0] should be between [-pi, pi)h  "v[-1] should be v[0] + 2pi or lessrz   r  r{   dot
atleast_2dr
   r  r@   r   r   r   r   r   r   rC   r  re  r  r  s        r1   rf  z0TestRectSphereBivariateSpline.test_invalid_input  s   vvbmmC"++dC*D$DEGGmmD266"++b$2J+K$KLNNOa 	 :& 	8(;;r3*RUU2T9D;;q#r*RUU2T9D%dD$7	8 -HNN0CCCC:& 	8(;;r3*RUU2T9D;;q#r*RUU2T9D%dD$7	8 -HNN0CCCC:& 	8(;;r3*RUU2T9D;;tR,ruu4t;D%dD$7	8 2S5HHHH:& 	8(;;r3*RUU2T9D;;sC,ruu4t;D%dD$7	8 4s8>>7JJJJ:& 	>(;;r3*RUU2T9D;;r3+bee3d:D%dD$"=	> &X^^)<<<<9	8 	8	8 	8	8 	8	8 	8	> 	>A   #A$M;7A$NA$NA$N"3A&N.;NNN"N+.N7c                    t        ddt        z  dz
  d      }t        dt        dz
  d      }t        g dg dg dg dg dg dg dg      }t        |||      }t        ddt        z  dz
  d      }t        dt        dz
  d      }t	         |||d	      t        |||d
      dd       t	         |||d      t        |||d      dd       t	         |||dd      t        |||ddd      dd       t         |||d	       |j                  dd      ||             t         |||d       |j                  dd      ||             t         |||dd       |j                  dd      ||             t         |||dd       |j                  dd      ||d             t         |||dd       |j                  dd      ||d             t         |||ddd       |j                  dd      ||d             y )Nrc  r8   rm   rd  re  rf  r  r#   )dthetar  rF  r  )dphir  )r}  r~  ư>r  r  rc  r,  r   Fr}  rU  rT  r~  rU  r}  r~  rU  )r
   r   r   r   r   _numdiff_2dr   r  rg  s        r1   r   z3TestRectSphereBivariateSpline.test_derivatives_grid  s   T1R49a(T2d7A&???"??"$ % (!A.T1R49a(T2d7A&Aq+[aq-I!	.Aqq);sAqQ+G!	.Aq3#CA!tD!	. 	Aq+7311!Q71=	?Aqq)7311!Q71=	?Aq37311!Q71=	? 	Aq77311!Q715I	KAqqu57311!Q715I	KAq?7311!Q715I	Kr3   c                 R   t        ddt        z  dz
  d      }t        dt        dz
  d      }t        g dg dg dg dg dg dg dg      }t        |||      t        ddt        z  dz
  d      }t        dt        dz
  d      } ||dd	
      j                  |j                  k(  sJ t         ||dd	
      t        fd||d      dd       t         ||dd	      t        fd||d      dd       t         ||ddd	      t        fd||ddd      dd       y )Nrc  r8   rm   rd  re  rf  r  r#   Fr  c                      | |d      S NFrT  rd   rD   rE   r)   s     r1   <lambda>z@TestRectSphereBivariateSpline.test_derivatives.<locals>.<lambda>O      AaU0C r3   r  rF  r  r  c                      | |d      S r  rd   r  s     r1   r  z@TestRectSphereBivariateSpline.test_derivatives.<locals>.<lambda>R  r  r3   r  r  c                      | |d      S r  rd   r  s     r1   r  z@TestRectSphereBivariateSpline.test_derivatives.<locals>.<lambda>U  r  r3   r  r  r,  )r
   r   r   r   r   r   r  rg  s       @r1   r   z.TestRectSphereBivariateSpline.test_derivativesA  s.   T1R49a(T2d7A&???"??"$ % (!A.T1R49a(T2d7A&1a.44???Aq7#$CQaP!	. 	Aqqu5#$CQaP!	. 	Aq?#$C$%qQ1$@!	.r3   c                 t   t        j                  t        j                  dt        j                  ddd      z
        j                  t        j                  dt        j
                  t        j                  ddd            z
              j                  }t        t              5 }t        j                  d	d
d      t         j                  z  dz  }t        j                  d	dd      t         j                  z  dz  }t        |||       d d d        dt        j                        v sJ t        t              5 }t        j                  ddd      t         j                  z  dz  }t        j                  d	dd      t         j                  z  dz  }t        |||       d d d        dt        |j                        v sJ t        t              5 }t        j                  dd
d      t         j                  z  dz  }t        j                  ddd      t         j                  z  dz  }t        |||       d d d        dt        |j                        v sJ t        t              5 }t        j                  dd
d      t         j                  z  dz  }t        j                  ddd      t         j                  z  dz  }t        |||       d d d        dt        |j                        v sJ t        t              5 }t        j                  dd
d      t         j                  z  dz  }t        j                  ddd      t         j                  z  dz  }t        |||d       d d d        dt        |j                        v sJ y # 1 sw Y   vxY w# 1 sw Y   xY w# 1 sw Y   hxY w# 1 sw Y   xY w# 1 sw Y   VxY w)Nrj  rk  rl  rm  rn  rh   ro  rn   r   rC  rB  rp  r      rr  rs  rt  ru  rv  rK   rz   r  rw  rz  s        r1   test_invalid_input_2z2TestRectSphereBivariateSpline.test_invalid_input_2Y  s   vvbmmC"++dC*D$DEGGmmD266"++b$2J+K$KLNNOa 	 :& 	8(;;q#q)BEE1D8D;;q#r*RUU2T9D%dD$7	8 -HNN0CCCC:& 	8(;;r3*RUU2T9D;;q#r*RUU2T9D%dD$7	8 -HNN0CCCC:& 	8(;;r3*RUU2T9D;;tR,ruu4t;D%dD$7	8 2S5HHHH:& 	8(;;r3*RUU2T9D;;sC,ruu4t;D%dD$7	8 4s8>>7JJJJ:& 	>(;;r3*RUU2T9D;;r3+bee3d:D%dD$"=	> &X^^)<<<<9	8 	8	8 	8	8 	8	8 	8	> 	>r{  c           
      V   t        ddt        z  dz
  d      }t        dt        dz
  d      }t        g dg dg dg dg dg dg dg      }t        |||      }t        |j	                         |j	                         |j	                               }t         |||       |||             y rb  )r
   r   r   r   r  r   )rC   rE   rD   r   r	  r   s         r1   r
  z3TestRectSphereBivariateSpline.test_array_like_input{  s    T1r6D=!,T29a((*?((*?((	* + )Aq1(QXXZL!$q!*d1aj9r3   c                    t        j                  g d      }t        j                  g d      }t        j                  ||      }|d   |d   z   }t        j                  |      }t        j                  |      }t	        |||      }t        j                  t        j                  ddg            }t        j                  t        j                  ddg            }	 |||	      }
t        j                  d	d
gddgg      }t        |
|       y )N)r  rS  #   r  -   )iiir   r   r#   r  g     B@r  g     `Sg     Fg=Eg     HgDioEG)r{   r   r   radiansr   r   )rC   r  r  meshr  lat_rlon_rinterpolator	query_lat	query_londata_interpanss               r1   test_negative_evaluationz6TestRectSphereBivariateSpline.test_negative_evaluation  s    xx,-xx01{{4&Awa 

4 

4 0tDJJrxxT
34	JJrxxe56	"9i8hh
+!9-/ 0!+s3r3   c                    t        j                  dd      t         j                  z  dz  }t        j                  dd      t         j                  z  dz  }t        j                  d      }dD ]  }t	        |||d|        y )Nr#   r   )rn   rn   ))TT)TF)FFr   )rJ   pole_continuity)r{   r   r   r   r   )rC   uvrA  ps        r1   test_pole_continuity_gh_14591z;TestRectSphereBivariateSpline.test_pole_continuity_gh_14591  so     IIaruu$r)IIaruu$r)HHV> 	GA%aAAF	Gr3   N)ra   rb   rc   r  r  rf  r   r   r  r
  r  r  rd   r3   r1   r`  r`    s4    .% =D KD.0 =D:4Gr3   r`  c                    |dk(  r|dk(  r	 | ||      S |dk(  r$|dk(  r | ||z   |       | ||z
  |      z
  d|z  z  S |dk(  r$|dk(  r | |||z          | |||z
        z
  d|z  z  S |dk(  rM|dk(  rH | ||z   ||z          | ||z
  ||z         z
   | ||z   ||z
        z
   | ||z
  ||z
        z   d|z  dz  z  S t        d      )Nr   r#   r8   zinvalid derivative order)r   )funcrD   rE   r  r  rc  s         r1   r  r    s   	Qw27Aqz	qR1WQWa 4C#33#>>	qR1WQC 41s7#33#>>	qR1WQWa#g&a#gq3w)??q3wC()+/CS+ABFGeaZP 	P 344r3   c                   4    e Zd ZdZd Zd Zd Zd Zd Zd Z	y)	Test_DerivedBivariateSplinezgTest the creation, usage, and attribute access of the (private)
    _DerivedBivariateSpline class.
    c                    t        j                  t        t        t	        d      t	        d                        }t        j                  t        t        t	        d      t	        dd                        }t        j                  t        j
                  ddd      t        j
                  ddd      f      }t        j                  t        d      5  t        |||t        ddd	      t        d
dd	      d      | _
        d d d        t        |||      | _        t        ddd      }|dz   }t        t	        |j                        D cg c]  }t        j                  ||       c}      }t!        |||d	d	      | _        t%        |||d	d	      | _        t        t)        j*                  t	        d      t	        d                  | _        y # 1 sw Y   xY wc c}w )Nr   r#      r9   r=  r  r   g     3@rT   r>   g     4@rc  rb  r   r\  r   r>  )r{   concatenatelistrE  r   r
   r  r  r  r   r  r   
lut_smoothr   r  rollr   lut_rectr   lut_rect_custom	itertoolsproductr  )rC   rD   rE   r   r   r   izzs           r1   r  z(Test_DerivedBivariateSpline.setup_method  sd   NN4E"IuRy 9:;NN4E"IuQ| <=>NNBKK1b12;;q!R3HIJ\\+-OP 	8-aA.6sD!.D.6sD!.D268DL	8
 01a8aB#X5=9aBGGAqM9:+BB1C&r2raA>9,,U1XuQx@A	8 	8 :s   -GGGc                     | j                   D ]I  \  }}| j                  j                  ||      } |ddd      }| j                  dd||d      }||k(  rIJ  y )Nr   FrT  r
  )r  r  r  rC   nuxnuylut_derr   r   s         r1   test_creation_from_LSQz2Test_DerivedBivariateSpline.test_creation_from_LSQ  s`     	HCll55c3?GSu-AS###EBA6M6		r3   c                     | j                   D ]I  \  }}| j                  j                  ||      } |ddd      }| j                  dd||d      }||k(  rIJ  y )Ng      @FrT  r
  )r  r  r  r  s         r1   test_creation_from_Smoothz5Test_DerivedBivariateSpline.test_creation_from_Smooth  s`     	HCoo88cBGSu-ASSSuEA6M6		r3   c                    | j                   D ]I  \  }}| j                  j                  ||      } |ddd      }| j                  dd||d      }||k(  rIJ  | j                   D ]X  \  }}| j                  j	                  ||g      }t        |dd      }t        | j                  dd||      }t        ||dd	       Z | j                   D ]  \  }}| j                  j                  ||      }t        | j                        }|j	                  ||f      } |ddd      } |d
g      }| j                  dd||d      } |d
g||f      }	||k(  sJ t        ||	        y )Nr   r>   FrT  r
  r  r   r  r  )r   r>   rU   )	r  r  r  r  r   r    r   r2   r   )
rC   r  r  r  r   r   lut_ndsplinelut_der_ndbsplinea_ndbsplineb_ndbsplines
             r1   test_creation_from_Rectz3Test_DerivedBivariateSpline.test_creation_from_Rect  sv    	HCmm66sC@GSu-Ac333UCA6M6		  	=HC**55sCjAG.wSAA.$$c333@AAqq|<	=  		:HCmm66sC@G/>L , 7 7c
 CSu-A+ZL9Kc333UCA&
|c
CK6M6[9		:r3   c                    | j                   j                  dd      }t        t              5  |j                   d d d        | j
                  j                  ddg      }t        t              5  |j                   d d d        t        | j                         }|j                  ddg      }t        t              5  |j                   d d d        y # 1 sw Y   xY w# 1 sw Y   cxY w# 1 sw Y   y xY w)Nr#   rU   )r  r  r   AttributeErrorfpr  r   r2   )rC   derr  s      r1   test_invalid_attribute_fpz5Test_DerivedBivariateSpline.test_invalid_attribute_fp  s    mm..q!4>* 	FF	 ""--q!f5>* 	FF	 -T]];&&1a&&1>* 	FF	 		 		 	
	 	s#   C-C:C(CC%(C1c                     | j                   j                  dd      }t        t              5  |j	                          d d d        y # 1 sw Y   y xY wr"   )r  r  r   r  rA   )rC   r  s     r1   #test_invalid_attribute_get_residualz?Test_DerivedBivariateSpline.test_invalid_attribute_get_residual  sA    oo00A6>* 		 	 	s   AAN)
ra   rb   rc   __doc__r  r  r  r  r  r  rd   r3   r1   r  r    s&    B":2r3   r  )r   r   g:0yE>)5r  r]  rw  numpyr{   r  r   r   scipy._lib._array_apir   r   r   r   r   r	   r
   r   r   r   r   scipy.interpolate._fitpack_pyr   r   r   r   scipy.interpolate._fitpack2r   r   r   r   r   r   r   r   r   scipy._lib._testutilsr   scipy.interpolater   r   scipy.interpolate._regridr   r    r2   r5   r8  ro  r  r  r  r`  r  r  rd   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   