
    Ugf                        d dl Z d dlZd dlmZmZmZmZmZm	Z	 d dl
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"  G d d          Z# G d	 d
          Z$ G d d          Z% G d d          Z& G d d          Z' G d d          Z( G d d          Z)ddZ* G d d          Z+dS )    N)assert_equalassert_almost_equalassert_array_equalassert_array_almost_equalassert_allclosesuppress_warnings)raises)arraydifflinspacemeshgridonespishape)bisplrepbisplevsplrepspalde)	UnivariateSplineLSQUnivariateSplineInterpolatedUnivariateSplineLSQBivariateSplineSmoothBivariateSplineRectBivariateSplineLSQSphereBivariateSplineSmoothSphereBivariateSplineRectSphereBivariateSplinec                       e 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dS )TestUnivariateSplinec                 H   g d}g d}t          ||d          }t          |                                ddg           t          |                                ddg           t	          |                                d           t           |g d          g d           d S )N         )r$   r$   r$   r"   kr$           r"         ?r#   r   r   	get_knots
get_coeffsr   get_residualselfxyluts       d/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/scipy/interpolate/tests/test_fitpack2.pytest_linear_constantz)TestUnivariateSpline.test_linear_constant       GGGGqQ'''!#--//1Q%888!#.."2"2Aa5999C,,..s333!##iii..99999    c           	         g d}g d}t          ||d          }d}t          t          |          t           ||                               t          t          |          t           ||d                               g d}t          t          |          t           ||                               t          t          |          t           ||d                               d S )Nr!   r   r#      r"   r%   r#   )nu)r)   r#         @)r   r   r   )r/   r0   r1   r2   args        r3   test_preserve_shapez(TestUnivariateSpline.test_preserve_shape   s    IIIIq!q)))U3ZZss3xx111U3ZZss31~~~!6!6777mmU3ZZss3xx111U3ZZss31~~~!6!677777r6   c                 H   g d}g d}t          ||d          }t          |                                ddg           t          |                                ddg           t	          |                                d           t           |g d	          g d
           d S )Nr!   r8   r"   r%   r$   r   r9   r'   r(   )r   r"   r#   r*   r.   s       r3   test_linear_1dz#TestUnivariateSpline.test_linear_1d&   r5   r6   c                      G d dt                     } |g dg dd          }t           |ddg          d	d	g           d S )
Nc                       e Zd Zd ZdS )9TestUnivariateSpline.test_subclassing.<locals>.ZeroSplinec                 &    dt          |          z  S )Nr   )r
   )r/   r0   s     r3   __call__zBTestUnivariateSpline.test_subclassing.<locals>.ZeroSpline.__call__3   s    qz!r6   N)__name__
__module____qualname__rD    r6   r3   
ZeroSplinerB   2   s#        " " " " "r6   rI   r"   r#   r$   r9      )r$   r#   r$   r#   r$   r#   r%   r)   r;   r'   )r   r   )r/   rI   sps      r3   test_subclassingz%TestUnivariateSpline.test_subclassing/   ss    	" 	" 	" 	" 	") 	" 	" 	" Z[[[A66622sCj>>B844444r6   c                     g d}g d}t          ||d          }t           |g           t          g                      d S )Nr"   r$   rK      	   r   r9   rQ         r$   r%   )r   r   r
   r/   r0   r1   spls       r3   test_empty_inputz%TestUnivariateSpline.test_empty_input9   sL    KKMMq!q)))33r77E"II.....r6   c                     g d}g d}t          ||d          }t          |                                d         d           d S )NrO   rR   r$   r%   r   g7ã?)r   r   rootsrU   s       r3   
test_rootszTestUnivariateSpline.test_roots@   sM    OOq!q)))CIIKKN,=>>>>>r6   c                     t          j        ddt           j        z  d          }t          j        |          }t	          ||d          }t          t          |                                          d           d S )Nr   2   i  s)npr   r   cosr   r   lenrY   rU   s       r3   test_roots_lengthz&TestUnivariateSpline.test_roots_lengthF   sb    K2:t,,F1IIq!q)))S%%r*****r6   c                     g d}g d}t          ||d          }t          |                    d          g d           d S )NrO   rR   r$   r%         @)g;@gpZ<o?gOmǿg      ?)r   r   derivativesrU   s       r3   test_derivativesz%TestUnivariateSpline.test_derivativesL   sb    OOq!q)))COOC00FFF	H 	H 	H 	H 	Hr6   c                 &   t          j        d          }|dz  d|dz  z  z   }t          ||d          }t          d|          }t	          |g dd	           t          ||dd
          }t	          |                    d          |d	           d S )N   r$          @r#   r   r]   )g     F@g     C@g      6@      @V瞯<atol)r^   r&   )r_   aranger   r   r   r   re   )r/   r0   r1   tckdersrV   s         r3   test_derivatives_2z'TestUnivariateSpline.test_derivatives_2S   s    IaLLqD2ad7NQQa~~ # # # #		$ 	$ 	$ 	$
 q!qA...**"	$ 	$ 	$ 	$ 	$ 	$r6   c                     g d}g d}g d}t          |||d          }t          g d          }t           |g d          |d	           dS )
zRegression test for #1375.)      g<&g_g@7ѿg46	<ƿgBϠr'   gBϠ?g46	<?g@7?g_?g<&?      ?)rt   1\_#?~a?w?5??0ms?gx?ry   rx   rw   rv   ru   rt   )   mBo!@u)	~@e?֭z@b@v5|@geSs@r   r~   r}   r|   r{   rz   N)r0   r1   wr^   )gJdv?gc?g=?gt?皙?      ??gGz?gMb@?rl   )r   r
   r   )r/   r0   r1   r   rV   desireds         r3   test_resize_regressionz+TestUnivariateSpline.test_resize_regressionc   s           a1555HHHII11122G$GGGGGGr6   c           
         t          j        dt                    }|dz  }t          ddd          }|                                }d|t          j        |dk     |d	k              <   |                                }|d         |||d         k     <   |d
         |||d
         k    <   t          t          fD ]$} |||          }dD ]L}t           |||          |dz  d           t            ||||          |          |dz  d           MdD ]L}t           |||          |dz  d           t            ||||          |          |dz  d           MdD ]$}t          t          ||fi t          |           %dD ]L}t           |||          |dz  d           t            ||||          |          |dz  d           M&|                                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 ]\}t          ||          }t          t          ||fi t          |           t          t          t          fi t          |||           ]d S )NrK   dtyper$      d   r   r'         @)r0   r1   )r   extrapolate)extgؗҜ<rl   )r"   zeros)r#   raise)r$   constr9   r"   r#   )r   unknown)r0   r1   r   )r_   rn   floatr   copy
logical_orr   r   r   assert_raises
ValueErrordictr+   r   )
r/   r0   r1   xpxp_zerosxp_clipclsrV   r   ts
             r3   test_out_of_range_regressionz1TestUnivariateSpline.test_out_of_range_regressions   s   Iau%%%qDb"c""7799@Ax"}hm<<=''))"#A$!A$#$R5!B% $&BC 	P 	PC#Q---C) K KBC 0 0 0"a%eDDDD 2Aqc 2 2 22 6 6AEJJJJJ# Q QBC 0 0 0(A+EJJJJ 2Aqc 2 2 22 6 6!%PPPPP# D Dj#rCCTc]]]CCCC# P PBC 0 0 0'1*5IIII 2Aqc 2 2 22 6 6
OOOOOP
 MMOOAaC !!Q**BAAE::::BA!%@@@@j#r99Ta[[[999BA
???? # 	/ 	/C"1a((C*c2??#???*&6 / /Q!---/ / / /	/ 	/r6   c                     t          j        d          dz  }t          j        d          dz  }t          j        ddd          }d}t          t          t
          ||||           d S )Nr   rt   r   c   
   )r   e   bbox)r_   rn   r   r   r   r   )r/   xsysknotsr   s        r3   test_lsq_fpchecz$TestUnivariateSpline.test_lsq_fpchec   sm    Ys^^b Ys^^b Ar2&&j"5r2u	! 	! 	! 	! 	! 	!r6   c                    t          j        ddd          dz  }t          j        |          }t          ||d          }|                    d                              d          }t           |d           |d                     |                    d          }t           |d           |d	          z
  |                    d	d                     d S )
Nr   r"   F   r$   r]   r#   333333?g333333?皙?)r_   r   r`   r   antiderivative
derivativer   integral)r/   r0   r1   rV   spl2s        r3   "test_derivative_and_antiderivativez7TestUnivariateSpline.test_derivative_and_antiderivative   s    K1b!!1$F1IIq!q)))!!!$$//22C$$s)),,,!!!$$S		DDII-S#..	0 	0 	0 	0 	0r6   c                     g d}g d}t          ||dd          }g d}t           |                                |          dd	           d S )
Nr"   r#   r9      g      !@)r   皙??r;   rK   r   r$   )r   r&   )r   r   g      rQ   g      #@r   r   rk   rl   )r   r   r   )r/   x_valuesy_valuesfr0   s        r3   test_derivative_extrapolationz2TestUnivariateSpline.test_derivative_extrapolation   sh     %$$***XxWBBB%%%q))15999999r6   c                     t          j        ddd          }t          d          D ]C}t          ||d|          }dD ]+\  }}t	          |                    ||          dd	           ,Dd S )
Nr'   rt   rP   r9   r   )r^   r   ))r"   r"   )r"   rK   )r#   rK   r   r   )r   )r   r   rk   rl   )r_   r   ranger   r   r   )r/   r0   r   r   abs         r3   test_integral_out_of_boundsz0TestUnivariateSpline.test_integral_out_of_bounds   s     KB""88 	A 	AC A444A6 A AA

1a 0 0!%@@@@@A	A 	Ar6   c                 4   t          j        dt                    }|dz  }t          j        |          }t	          ||d          }|                                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           	d S )Nr   r   r$   Tcheck_finiter9   r   r0   r1   r   )r0   r1   r   r   )r0   r1   r   r   r0   r1   r   r   r   )r_   rn   r   	ones_liker   r+   naninfr   r   r   r   r   )r/   r0   r1   r   rV   r   y_endzs           r3   test_nanzTestUnivariateSpline.test_nan   s   Ib&&&qDLOOq!$777MMOOAaC "&"&26'* 	C 	CAAbE*&6 9 9Q!$7779 9 9*&B 9 9Q!$7779 9 9*&9 > >Q!qt<<<> > >AbEAbE*&6 > >Q!qt<<<> > >*&B > >Q!qt<<<> > >*&9 C CQ!qADAAAC C C C	C 	Cr6   c           
         t          j        dt                    }|dz  }t          j        dt                    }|d         |d<   |dz  }t          j        |          }t	          ||d          }|                                dd         }t	          |||dd	           t          ||||d
           t          t          t          fi t          ||dd           t          t          t          fi t          ||d           d S )Nr   r   r$   r   r"   Tr   r9   )r0   r1   r   r^   r   r   )r0   r1   r^   r   r   )r_   rn   r   r   r   r+   r   r   r   r   r   r/   xxyyr0   r1   r   rV   r   s           r3   test_strictly_increasing_xz/TestUnivariateSpline.test_strictly_increasing_x   s&   
 Yr'''UIb&&&t!qDLOOr2D999MMOOAaC 1Q!$????a1QTBBBBj"2 	: 	:a14888	: 	: 	:j"> 	5 	5ad333	5 	5 	5 	5 	5r6   c                    t          j        dt                    }|dz  }t          j        dt                    }|d         dz
  |d<   |dz  }t          j        |          }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           d S )Nr   r   r$   r   rt   r"   Tr   r9   r   r   )r_   rn   r   r   r   r+   r   r   r   r   r   r   s           r3   test_increasing_xz&TestUnivariateSpline.test_increasing_x   s+   Yr'''UIb&&&tcz!qDLOOr2D999MMOOAaC j"2 	5 	5ad333	5 	5 	5j"> 	5 	5ad333	5 	5 	5j"5 	? 	?a1===	? 	? 	? 	? 	?r6   c                    t          t                    5 }g d}g d}t          ||           d d d            n# 1 swxY w Y   dt          |j                  v sJ t          t                    5 }g d}g d}g d}t          |||           d d d            n# 1 swxY w Y   dt          |j                  v sJ t          t                    5 }d}t          |||	           d d d            n# 1 swxY w Y   d
t          |j                  v sJ t          t                    5 }t          ||d           d d d            n# 1 swxY w Y   dt          |j                  v sJ t          t                    5 }t          ||d           d d d            n# 1 swxY w Y   dt          |j                  v sJ d S )Nr   r   r   r   r;   !x and y should have a same lengthr   r   r   r;   gffffff@rs   rt   rt   rt   r   %x, y, and w should have a same lengthr   r   bbox shape should be (2,)r   r%   k should be 1 <= k <= 5rs   r]   s should be s >= 0.0)r   r   r   strvaluer/   infor   r   w_valuesr   s         r3   (test_invalid_input_for_univariate_splinez=TestUnivariateSpline.test_invalid_input_for_univariate_spline  s   :&& 	1$(((H+++HXx000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 3c$*ooEEEE:&& 	=$(((H000H,,,HXx8<<<<		= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=
 7#dj//IIII:&& 	<$DXxd;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< +c$*oo====:&& 	6$Xx15555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6(C
OO;;;;:&& 	9$Xx48888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9%TZ888888sU   :>>1BB #B C44C8;C8+E

EEF  F$'F$c                    t          t                    5 }g d}g d}t          ||           d d d            n# 1 swxY w Y   dt          |j                  v sJ t          t                    5 }g d}g d}g d}t          |||           d d d            n# 1 swxY w Y   dt          |j                  v sJ t          t                    5 }d}t          |||	           d d d            n# 1 swxY w Y   d
t          |j                  v sJ t          t                    5 }t          ||d           d d d            n# 1 swxY w Y   dt          |j                  v sJ d S )Nr   r   r   r   r   r   r   r   r   r   r   r%   r   )r   r   r   r   r   r   s         r3   5test_invalid_input_for_interpolated_univariate_splinezJTestUnivariateSpline.test_invalid_input_for_interpolated_univariate_spline"  s   :&& 	=$(((H+++H(8<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 3c$*ooEEEE:&& 	I$(((H000H,,,H(8xHHHH		I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I
 7#dj//IIII:&& 	H$D(8$GGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H +c$*oo====:&& 	B$(8qAAAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B(C
OO;;;;;;sC   :>>1BB #B C44C8;C8+E

EEc                    g d}g d}t          ||d          }|                                dd         }t          t                    5 }g d}g d}t	          |||           d d d            n# 1 swxY w Y   dt          |j                  v sJ t          t                    5 }g d}g d}g d	}t	          ||||
           d d d            n# 1 swxY w Y   dt          |j                  v sJ d}t          t          |          5 }d}t	          ||||           d d d            n# 1 swxY w Y   t          t                    5 }d}t	          ||||           d d d            n# 1 swxY w Y   dt          |j                  v sJ t          t                    5 }t	          |||d           d d d            n# 1 swxY w Y   dt          |j                  v sJ d S )Nr   r   Tr   r$   r9   r   r   )rt   rt   rt   rt   r   r   z;Interior knots t must satisfy Schoenberg-Whitney conditions)match)r   r   r   r   r   r%   r   )r   r+   r   r   r   r   r   )	r/   r   r   rV   t_valuesr   r   messager   s	            r3   ,test_invalid_input_for_lsq_univariate_splinezATestUnivariateSpline.test_invalid_input_for_lsq_univariate_spline:  s   $$$,,,xEEE==??1Q3':&& 	>$(((H+++H(H===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 3c$*ooEEEE:&& 	J$(((H000H+++H(HIIII		J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J
 7#dj//IIIIO:W555 	ID(H4HHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I :&& 	I$D(H4HHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I +c$*oo====:&& 	C$(HBBBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C(C
OO;;;;;;sZ   A11A58A5( CCCD11D58D5E22E69E6)G		GGc                    t          j        g d          }t          j        g d          }t          j        g d          }t          j        ddg          }t          ||||          }t          |                                |                                |                                |                                          }t	           |g d           |g d                     d S )Nr   r   )rt   rt   rt   rt   rt   r   r   )r0   r1   r   r   r   )r_   r
   r   tolistr   )r/   r   r   r   r   spl1r   s          r3   test_array_like_inputz*TestUnivariateSpline.test_array_like_input\  s   8---..855566855566xs$$(h(%)+ + +  (//"3"3x7H7H"*//"3"3$++--I I I 	2223322233	5 	5 	5 	5 	5r6   c                    t          d          }g d}t                      5 }|                    t          d          }t	          ||d           t          t          |          d           d d d            d S # 1 swxY w Y   d S )Nm   )mr'   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'   ffffff%@r'   r'   r'   r   r'   r'   r'   r'   r'   r'   r   r'   r'   r   r'   r'   r'   333333%@r'   r'   r'   r   r'   r'   r   r'   r'   r   r'   r'   g      '@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'   r   r'   r'   r'   r   r'   r'   r'   r   r'   a#  
The maximal number of iterations maxit \(set to 20 by the program\)
allowed for finding a smoothing spline with fp=s has been reached: s
too small.
There is an approximation returned but the corresponding weighted sum
of squared residuals does not satisfy the condition abs\(fp-s\)/s < tol.r"   r%   )r   r   recordUserWarningr   r   ra   )r/   r0   r1   suprs        r3   test_fpknot_oob_crashz*TestUnivariateSpline.test_fpknot_oob_crashk  s    #JJ; ; ;    
	$C

LM MA QQ''''Q###
	$ 
	$ 
	$ 
	$ 
	$ 
	$ 
	$ 
	$ 
	$ 
	$ 
	$ 
	$ 
	$ 
	$ 
	$ 
	$ 
	$ 
	$s   AA::A>A>N)rE   rF   rG   r4   r=   r?   rM   rW   rZ   rb   rf   rq   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rH   r6   r3   r   r      s{       : : :	8 	8 	8: : :5 5 5/ / /? ? ?+ + +H H H$ $ $ H H H '/ '/ '/R! ! !0 0 0: : :A A AC C C45 5 5*? ? ?$9 9 98< < <0 <  <  <D5 5 5$ $ $ $ $r6   r   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestLSQBivariateSplinec           
      f   g d}g d}g d}d}d|z   d|z
  g}d|z   d|z
  g}t                      5 }|                    t          d          }t          |||||dd          }	t	          t          |          d           d d d            n# 1 swxY w Y   t           |	d	d	          d
           d S )N	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$   
The coefficients of the splinekxkyr#         @)r   r   r   r   r   ra   r   
r/   r0   r1   r   r^   txtyr   r   r2   s
             r3   r4   z+TestLSQBivariateSpline.test_linear_constant  s   c!A#Yc!A#Y   	$C

;(JKKA$Qq2bA;;;CQ###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$
 	CC!HHb)))))   ABBBc           
         g d}g d}g d}d}d|z   d|z
  g}d|z   d|z
  g}t                      5 }|                    t          d           t          |||||dd          }d d d            n# 1 swxY w Y   |                                \  }}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           |||          |           d S )Nr  r  	r   rP   rh   r$   r9   rP   r"   r$   r9   r   r"   r$   r  r  r   )r   r   r   )r   皙?gffffff?)r   filterr   r   r+   zipr   )r/   r0   r1   r   r^   r  r  r   r2   xaxbyaybr   r   ypzps                    r3   test_bilinearityz'TestLSQBivariateSpline.test_bilinearity  sD   c!A#Yc!A#Y   	<CJJ{$FGGG$Qq2bA;;;C	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<
 B"SbS'2abb6** 
	< 
	<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 ,CC2JJ;;;;<<	<
	< 
	<s   2A//A36A3c           
         g d}g d}t          g d          }d}d|z   d|z
  g}d|z   d|z
  g}t                      5 }|                    t          d          }t	          |||||dd          }	t          t          |          d           d d d            n# 1 swxY w Y   |	                                \  }} |	||          }
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  	                                z  }t          |	                    |d         |d
         |d         |d
                   |           d S )N)	r"   r"   r"   r#   r#   r#   rh   rh   rh   r  r  r   r"   r$   r  r        ?r   r   )r
   r   r   r   r   r   ra   r+   r   sumr   r   )r/   r0   r1   r   r^   r  r  r   r   r2   tztrpzs               r3   test_integralz$TestLSQBivariateSpline.test_integral  s   %%%&&c!A#Yc!A#Y   	$C

;(JKKA$Q1b"qAAACQ###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ BSR[[DHHQQQtV$T"XXd111f%55#2#crc'{2abb"f:-b"QRRj8ABBqrrEBDEHSUUK 	CLLA21r"vFF 	" 	" 	" 	" 	"s   ABB Bc           
         g d}g d}g d}d}d|z   d|z
  g}d|z   d|z
  g}t                      5 }|                    t          d          }t          |||||dd          }	t	          t          |          d           d d d            n# 1 swxY w Y   t           |	g g           t          j        d	                     t           |	g g d
          t          j        d                     d S )Nr  r  r  r   r"   r$   r  r  r   Fgridr   )	r   r   r   r   r   ra   r   r_   r   r  s
             r3   rW   z'TestLSQBivariateSpline.test_empty_input  sA   c!A#Yc!A#Y   	$C

;(JKKA$Q1b"qAAACQ###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$
 	33r2;;88833r2E222BHTNNCCCCCr  c           
      j   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            n# 1 swxY w Y   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            n# 1 swxY w Y   dt          |j                  v sJ t          t                    5 }t          j        dd          }t	          ||||||
           d d d            n# 1 swxY w Y   dt          |j                  v sJ t          t                    5 }d}	t	          ||||||	           d d d            n# 1 swxY w Y   dt          |j                  v sJ t          t                    5 }t	          |||||dd           d d d            n# 1 swxY w Y   dt          |j                  v sJ t          t                    5 }
t	          |||||d           d d d            n# 1 swxY w Y   dt          |
j                  v sJ t          t                    5 }
t	          |||||d           d d d            n# 1 swxY w Y   dt          |
j                  v sJ d S )Nr   r"   r$   rt         $@r   num%x, y, and z should have a same length   r   (x, y, z, and w should have a same lengthrs   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)r'   epseps should be between (0, 1))r   r   r_   r   r   r   r   )r/   r^   r  r  r   r0   r1   r   r   r   exc_infos              r3   test_invalid_inputz)TestLSQBivariateSpline.test_invalid_input  s   !eQU^!eQU^:&& 	0$C&&AC&&AC2...Aq!QB///		0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0
 7#dj//IIII:&& 	5$C&&AC&&AC&&AC2...Aq!QB!4444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 :S__LLLL:&& 	5$D$''Aq!QB!4444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 &TZ8888:&& 	;$$Dq!QBT::::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; +c$*oo====:&& 	>$q!QB2"====	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>L4:    :&& 	9(q!QBC8888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9-X^1D1DDDDD:&& 	9(q!QBC8888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9-X^1D1DDDDDDDs   ABBBA,D;;D?D?2+F))F-0F- HHH;II"%I"J77J;>J;.LLL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                      5 }	|	                    t
          d          }
t          |||||||          }t          |                                |                                |                                |                                |                                |                                |          }t           |d	d	           |d	d	                     t          t          |
          d
           d d d            d S # 1 swxY w Y   d S )Nr   r"   r$   rt   r&  )rt   r&  rt   r&  r  )r   r   ri   r#   )r_   r
   r   r   r   r   r   r   r   r   ra   )r/   r^   r  r  r0   r1   r   r   r   r   r   r   r   s                r3   r   z,TestLSQBivariateSpline.test_array_like_input  s   Xq1ua!en%%Xq1ua!en%%KT""KT""KT""KT""x...//   		$C

;(JKKA%aAr2FFFD%ahhjj!((**ahhjj&(iikk299;;!((**+/1 1 1D DDcNNDDcNN;;;Q###		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$s   3C5F55F9<F9c                 ,   t           j        ddddf         \  }}|                                }|                                }dt          j        |          z  }t          j        ddd          }t          j        ddd          }t                      5 }|                    t          d          }t          |||||          }t          t          |          d	           d
d
d
           n# 1 swxY w Y   t           |||d          |           d
S )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"   NFr"  )r_   mgridravelr   r   r   r   r   r   r   ra   r   )	r/   r0   r1   r   r  r  r   r   r2   s	            r3   test_unequal_length_of_knotsz3TestLSQBivariateSpline.test_unequal_length_of_knots  s8    x#qu%1GGIIGGII",q//![dB''[dB''   	$C

;(JKKA$Qq2b11CQ###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$
 	CC15111155555s   AC--C14C1N)
rE   rF   rG   r4   r  r   rW   r4  r   r;  rH   r6   r3   r  r    s        * * *< < <2" " "(D D D )E )E )EV$ $ $*6 6 6 6 6r6   r  c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestSmoothBivariateSplinec                 p   g d}g d}g d}t          |||dd          }t          |                                g dg df           t          |                                g d           t	          |                                d           t           |g d	dd
g          ddgddgddgg           d S )Nr  r  r  r"   r  r"   r"   r$   r$   )r$   r$   r$   r$   r'   r(   r)   r$   r   r   r+   r,   r   r-   r/   r0   r1   r   r2   s        r3   r4   z.TestSmoothBivariateSpline.test_linear_constant'      #AaQ!444!#--//999YYY2GHHH!#.."2"2999===C,,..s333!##iii3"8"81Q%1qe9LMMMMMr6   c                 p   g d}g d}g d}t          |||dd          }t          |                                g dg df           t          |                                g d           t	          |                                d           t           |g d	dd
g          ddgddgddgg           d S )Nr  r  )	r   r   r   r#   r#   r#   r9   r9   r9   r"   r  r?  )r   r   r9   r9   r'   r(   r)   r   r#   r@  rA  s        r3   r?   z(TestSmoothBivariateSpline.test_linear_1d1  rB  r6   c           	         g d}g d}t          g d          }t                      5 }|                    t          d           t	          |||ddd          }d d d            n# 1 swxY w Y   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                                  z  }	t          |                    |d         |d         |d         |d                   |	           t	          |||ddd          }
t          |
                    |d         |d         |d         |d                   |	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                                  z  }	t          |                    |d         |d         |d         |d                   |	           d S )N)	r"   r"   r"   r#   r#   r#   r9   r9   r9   r  r  z
The required storage spacer"   r   )r  r	  r^   )r"   r#   r9   r!   r  r   r#   )decimalr   )	r
   r   r  r   r   r   r  r   r   )r/   r0   r1   r   r   r2   r  r  r  r  lut2s              r3   r   z'TestSmoothBivariateSpline.test_integral;  s   %%%&&   	BCJJ{$BCCC'1aA!qAAAC	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B
 WWWWSR[[DHHQQQtV$T"XXd111f%55#2#crc'{2abb"f:-b"QRRj8ABBqrrEBDEHSUUKCLLA21r"vFFMMM$Q1qA>>>DMM"Q%BA2GG$%	' 	' 	' 	' SCRC"SbS'""DCRCMM!!!D&)$r#2#w--QQQ*??#2#crc'{2abb"f:-b"QRRj8ABBqrrEBDEHSUUKCLLA21r"vFFMMMMMs   1A%%A),A)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          ||	           d S )Nr   r#   P   r   r"   r   )r_   r   r   r   r   r   )
r/   r0   r1   r   xiyiro   res1interp_res2s
             r3   test_rerun_lwrk2_too_smallz4TestSmoothBivariateSpline.test_rerun_lwrk2_too_smallV  s     KAr""KAr""E[Q$$[Q$$q!Qr2s##'1a00wr2D$'''''r6   c                    t          t                    5 }t          j        dd          }t          j        dd          }t          j        ddd          }t	          |||           d d d            n# 1 swxY w Y   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            n# 1 swxY w Y   dt          |j                  v sJ t          t                    5 }t          j        d	d          }t	          ||||           d d d            n# 1 swxY w Y   d
t          |j                  v sJ t          t                    5 }d}t	          ||||           d d d            n# 1 swxY w Y   dt          |j                  v sJ t          t                    5 }t	          |||dd           d d d            n# 1 swxY w Y   dt          |j                  v sJ t          t                    5 }t	          |||d	           d d d            n# 1 swxY w Y   dt          |j                  v sJ t          t                    5 }t	          |||d           d d d            n# 1 swxY w Y   dt          |j                  v sJ t          t                    5 }t	          |||d           d d d            n# 1 swxY w Y   dt          |j                  v sJ d S )Nrt   r&  r   r'  r)  r*  r   r+  rs   r,  r-  r   r.  r  r/  r]   r   r'   r0  r2  )r   r   r_   r   r   r   r   )r/   r   r0   r1   r   r   r   r3  s           r3   r4  z,TestSmoothBivariateSpline.test_invalid_inpute  s3   :&& 	+$C&&AC&&AC2...A!!Q***		+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+
 7#dj//IIII:&& 	0$C&&AC&&AC&&AC2...A!!QQ////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 :S__LLLL:&& 	0$D$''A!!QQ////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 &TZ8888:&& 	6$$D!!Q5555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 +c$*oo====:&& 	9$!!QbR8888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9L4:    :&& 	3$!!QT2222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3%TZ8888:&& 	4(!!Qs3333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4-X^1D1DDDDD:&& 	4(!!Qs3333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4-X^1D1DDDDDDDs   AA44A8;A8+A*D!!D%(D%)FFFG&&G*-G*H>>II5JJJK,,K03K0#MM
Mc           	      6   t          j        g d          }t          j        g d          }t          j        g d          }t          j        g d          }t          j        g d          }t          |||||dd          }t          |                                |                                |                                |                                |                                dd          }t	           |d	d
           |d	d
                     d S )Nr  r  r  )	r"   r"   r"   r"   r"   r"   r"   r"   r"   )rt   r
  rt   r
  r"   )r   r   r  r	  )r   r   r  r	  r   r   )r_   r
   r   r   r   )r/   r0   r1   r   r   r   r   r   s           r3   r   z/TestSmoothBivariateSpline.test_array_like_input  s   H00011H00011H00011H00011x,,,--$Q1qIII$QXXZZQXXZZ*.++--188::()a1 1 1 	S#S#77777r6   N)	rE   rF   rG   r4   r?   r   rN  r4  r   rH   r6   r3   r=  r=  &  s{        N N NN N NN N N6( ( (*E *E *EX8 8 8 8 8r6   r=  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestLSQSphereBivariateSplinec                 L   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                                        ||          }|| _        || _	        ||c| _
        | _        d S )Nr   Z   r   r"   ri   r   rK   )r   r   r   r   r   r   r:  Tlut_lsqdatanew_lonsnew_lats)r/   nthetanphithetaphirX  knotstknotspknotdatalatslonsrW  s               r3   setup_methodz)TestLSQSphereBivariateSpline.setup_method  s(   fqj)1sFQJ/?+?HH2MsD1H~q3q>'94@@2EJU[^SYq\233sssSSqS!SSqS>eS))
d*4::<<+/6<<>>66K K	'-v$t}}}r6   c                     t          | j                                        d           t          |                     | j        | j                  | j                   d S )Nr'   )r   rW  r-   r   rZ  rY  rX  r/   s    r3   r4   z1TestLSQSphereBivariateSpline.test_linear_constant  sU    DL5577===!$,,t}dm"L"L"&)	- 	- 	- 	- 	-r6   c                     t          |                     g g           t          j        d                     t          |                     g g d          t          j        d                     d S Nr   Fr"  r$  )r   rW  r_   r   rf  s    r3   rW   z-TestLSQSphereBivariateSpline.test_empty_input  sX    !$,,r2"6"6HHH!$,,r2E,"B"BBHTNNSSSSSr6   c           	      f   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	                                        ||           d d d            n# 1 swxY w Y   d
t          |j                  v sJ t	          t
                    5 }t          dd|	          t          z  }	t          |	|          \  }
}t          |
                                |                                |j	                                        ||           d d d            n# 1 swxY w Y   d
t          |j                  v sJ t	          t
                    5 }t          dd|	          dz  t          z  }t          ||          \  }}t          |                                |                                |j	                                        ||           d d d            n# 1 swxY w Y   dt          |j                  v sJ t	          t
                    5 }t          dd|	          dz  t          z  }t          ||          \  }}t          |                                |                                |j	                                        ||           d d d            n# 1 swxY w Y   dt          |j                  v sJ t          ||          \  }}t	          t
                    5 }t          j        |          }d|d<   t          |                                |                                |j	                                        ||           d d d            n# 1 swxY w Y   dt          |j                  v sJ t	          t
                    5 }t          j        |          }t          |d<   t          |                                |                                |j	                                        ||           d d d            n# 1 swxY w Y   dt          |j                  v sJ t	          t
                    5 }t          j        |          }d|d<   t          |                                |                                |j	                                        ||           d d d            n# 1 swxY w Y   dt          |j                  v sJ t	          t
                    5 }t          j        |          }dt          z  |d<   t          |                                |                                |j	                                        ||           d d d            n# 1 swxY w Y   dt          |j                  v sJ t	          t
                    5 }t          g d          }t          |                                |                                |j	                                        |||           d d d            n# 1 swxY w Y   dt          |j                  v sJ t	          t
                    5 }t          |                                |                                |j	                                        ||d           d d d            n# 1 swxY w Y   dt          |j                  v sJ t	          t
                    5 }t          |                                |                                |j	                                        ||d           d d d            n# 1 swxY w Y   dt          |j                  v sJ d S )NrT  r   r"   ri   r   rK   皙rt   r'  theta should be between [0, pi]r   皙?phi should be between [0, 2pi]r'   ztt should be between (0, pi)ztp should be between (0, 2pi)r#   	rs   rt   r)   r   rt   r)   r   rt   rt   r   r,  r0  r2  )r   r   r   r   r   r   r   r   r:  rV  r   r   r_   r   r
   )r/   r[  r\  r]  r^  rX  r_  r`  r3  invalid_thetainvalid_latsrc  invalid_phirb  invalid_lonsinvalid_knotstinvalid_knotsp	invalid_ws                     r3   r4  z/TestLSQSphereBivariateSpline.test_invalid_input  s
   
+Q
1C-C! !#%&sdQh'SD1H-=)=tDDrIBNU[^SYq\233sssSSqS:&& 	E($T3F;;;b@M!)-!=!=L$$\%7%7%9%94::<<%)V\\^^VVE E E	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E
 1C4G4GGGGG:&& 	E($S#6:::R?M!)-!=!=L$$\%7%7%9%94::<<%)V\\^^VVE E E	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E
 1C4G4GGGGG:&& 	E("4&999C?"DK!)%!=!=D,$TZZ\\<3E3E3G3G%)V\\^^VVE E E	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E
 03x~3F3FFFFF:&& 	E("38883>CK!)%!=!=D,$TZZ\\<3E3E3G3G%)V\\^^VVE E E	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E
 03x~3F3FFFFFeS))
d:&& 	M(WV__N $N1$TZZ\\4::<<%)V\\^^^VM M M	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M
 .X^1D1DDDDD:&& 	M(WV__N "N1$TZZ\\4::<<%)V\\^^^VM M M	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M
 .X^1D1DDDDD:&& 	M(WV__N $N1$TZZ\\4::<<%)V\\^^V^M M M	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M
 /#hn2E2EEEEE:&& 	M(WV__N !BN1$TZZ\\4::<<%)V\\^^V^M M M	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M
 /#hn2E2EEEEE:&& 	B(LLLMMI$TZZ\\4::<<%+VyB B B B	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B &X^)<)<<<<<:&& 	>($TZZ\\4::<<%+V> > > >	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> .X^1D1DDDDD:&& 	>($TZZ\\4::<<%+V> > > >	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> .X^1D1DDDDDDDs   *A<D22D69D6)A<G11G58G5(A?J33J7:J7*A?M55M9<M9?A(P33P7:P7*A-S##S'*S'A(VVVA0YYY8A"[&&[*-[*A]::]>]>1A```c           	         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        d                   }
t          |                                |                                |j                                        ||	|
          }t          |                                                                |                                                                |j                                                                        |                                |	                                |
                                          }t           |dd           |dd                     d S )	NrT  r   r"   ri   r   rK   r   rt   )
r   r   r   r   r   r:  r   rV  r   r   )r/   r[  r\  r]  r^  rb  rc  rX  r_  r`  r   r   r   s                r3   r   z2TestLSQSphereBivariateSpline.test_array_like_input  s   
+Q
1C-C! !#%&sdQh'SD1H-=)= !"$&'eS))
dU[^SYq\233sssSSqS#A&'' (

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

(;(;(=(=(,

(;(;(=(=(,(=(=(?(?(.(.188::	G G G
 	"$$sC..$$sC..AAAAAr6   NrE   rF   rG   rd  r4   rW   r4  r   rH   r6   r3   rR  rR    sn        6 6 6$- - -
T T TRE RE REhB B B B Br6   rR  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )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          | _        d S )Nr  r         ?r)   r      _Br]   )r
   r   r   r2   )r/   r]  r^  r   s       r3   rd  z,TestSmoothSphereBivariateSpline.setup_method*  s    s2vs2vs2vr"ubeRUCF2vs2v' ( (R"Wb#(BGRr27B2X    ---...uc1EEEr6   c                     t          | j                                        d           t          |                     g dddg          ddgddgddgg           d S )Nr'   r(   r"   r)   r$   )r   r2   r-   r   rf  s    r3   r4   z4TestSmoothSphereBivariateSpline.test_linear_constant2  sj    DH1133R888!$((;;;3x"@"@$%q6Aq6Aq6":	< 	< 	< 	< 	<r6   c                     t          |                     g g           t          j        d                     t          |                     g g d          t          j        d                     d S rh  )r   r2   r_   r   rf  s    r3   rW   z0TestSmoothSphereBivariateSpline.test_empty_input7  sX    !$((2r"2"2BHUOODDD!$((2r(">">OOOOOr6   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            n# 1 swxY w Y   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            n# 1 swxY w Y   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            n# 1 swxY w Y   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            n# 1 swxY w Y   dt          |j                  v sJ t          t                    5 }t          g d          }t	          ||||d           d d d            n# 1 swxY w Y   dt          |j                  v sJ t          t                    5 }t	          |||d           d d d            n# 1 swxY w Y   dt          |j                  v sJ t          t                    5 }t	          |||d           d d d            n# 1 swxY w Y   dt          |j                  v sJ t          t                    5 }t	          |||d           d d d            n# 1 swxY w Y   dt          |j                  v sJ d S )Nr  r   r{  r)   r  rj  r|  r]   rk  rl  rm  rt   g @rn  r   r^   r,  rs   s should be positiver0  r2  )r
   r   r   r   r   r   r   )r/   r]  r^  r   r3  ro  rq  ru  s           r3   r4  z2TestSmoothSphereBivariateSpline.test_invalid_input;  s   sRxr38R"Wb2grBwRxr385 6 6R"Wb#(BGRr27B2X    ---..:&& 	G(!4"9cBhb"r'#%7BGS2XsRx#&8#- . .M (sAFFFF		G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G
 1C4G4GGGGG:&& 	G(!38S2XsRxb#%7BGS2XsRx#&8#- . .M (sAFFFF		G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G
 1C4G4GGGGG:&& 	G(r2sRxb"cBh!#b"cBh!8 9 9K'{AFFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 03x~3F3FFFFF:&& 	G(r2sRxb"cBh!#b"cBh!8 9 9K'{AFFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 03x~3F3FFFFF:&& 	L(LLLMMI'sAdKKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L &X^)<)<<<<<:&& 	?('sA>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?%X^)<)<<<<<:&& 	A('sA4@@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A-X^1D1DDDDD:&& 	@('sA3????	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@-X^1D1DDDDDDDs   A4EE!$E!A4HHHA+KK	K9A+M00M47M4'&OO OP00P47P4'RRR>SS"%S"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          |                                |                                |                                |                                d          }t           |d	d	           |d	d	                     d S )
Nr  r   r{  r)   r  )	rt   rt   rt   rt   rt   rt   rt   rt   rt   r|  r  rt   )r_   r
   r   r   r   r   )r/   r]  r^  r   r   r   r   s          r3   r   z5TestSmoothSphereBivariateSpline.test_array_like_inputm  sG   #(C"HcBhRbr'38S2XsRxA B BhRS2XrBwC"Hb2gC"H& ' 'H00011HBBBCC +5#qAFFF +5<<>>3::<<+,88::tM M M!$$sC..$$sC..AAAAAr6   Nrw  rH   r6   r3   ry  ry  )  sn        F F F< < <
P P P0E 0E 0EdB B B B Br6   ry  c                   P    e 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S )TestRectBivariateSplinec                     t          g d          }t          g d          }t          g dg dg dg dg dg          }t          |||          }t           |||          |           d S )NrJ   r"   r#   r"   r#   r"   r"   r#   r$   r#   r"   r"   r#   r#   r#   r"   r
   r   r   rA  s        r3   test_defaultsz%TestRectBivariateSpline.test_defaults  s    ++++++;;;{{{;;;{{{;;;OPP!!Aa((!##a((1-----r6   c                 X   t          g d          }t          g d          }t          g dg dg dg dg dg          }t          |||          g d}g d}                    ||          }t          fdt          ||          D                       }t	          ||           d S )NrJ   r  r  r  )r"   ffffff@g333333@r   ffffff
@333333?r$   )r"   r  r  r   g      @rt   r$   c                 :    g | ]\  }} ||          d          S r   rH   .0r   r  r2   s      r3   
<listcomp>z9TestRectBivariateSpline.test_evaluate.<locals>.<listcomp>  ,    @@@&"bSSR[[%@@@r6   )r
   r   evr  r   )	r/   r0   r1   r   rI  rJ  zizi2r2   s	           @r3   test_evaluatez%TestRectBivariateSpline.test_evaluate  s    ++++++;;;{{{;;;{{{;;;OPP!!Aa((,,,,,,VVB^^@@@@CBKK@@@AAB$$$$$r6   c                    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          |           t           |||d          |           t           |||dd          |           d S )NrJ   r  r  r  r   r   ir   r   r   r   r   r   r   r   r   r9   r   r   r   r   ir   r   rj   r9   r   r   r"   r   r)   r   g      r   r#   r  r         пr   (   ir      iig     @0@r   g     @0   r   rK   r   rh      g     +r   g     +@ir"   dxdy)r  r  r  r/   r0   r1   r   r  r  dxdyr2   s           r3   test_derivatives_gridz-TestRectBivariateSpline.test_derivatives_grid  s   ++++++;;;{{{;;;{{{;;;OPPMMM,,,{{{MM+++' ( ((*+MMM---0@0@0@mmm- . .'''(?(?(?MM111---A B BBDE!!Aa((!##aQ---333!##aQ---333!##aQ!"4"4"4T:::::r6   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
          |           d S )NrJ   r  r  r  r   r   gUUUUUU?r   r   r9   r   r   r  r     A   r   7             8@r"   F)r  r#  )r  r#  r  r  r#  r  r  s           r3   rf   z(TestRectBivariateSpline.test_derivatives  s   ++++++;;;{{{;;;{{{;;;OPP>>>""###$$%%%&&s*!!Aa((!##aQE":":":2>>>!##aQE":":":2>>>!##aQ!"?"?"?EEEEEr6   c                 |   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          ||          |           t           |                    dd          ||          |           t           |                    dd          ||          |           d S )NrJ   r  r  r  r  r  r  r  rj   r  r  r  r  r  r  r  r"   r   r
   r   r   partial_derivativer  s           r3   #test_partial_derivative_method_gridz;TestRectBivariateSpline.test_partial_derivative_method_grid  s   ///""///""???"??"??"??"??	$ % %
 %%%$$$#OO%%%#OO	% & & )+	+
 %%%%%%((()))%%%	' ( (
 +++111'''111'''	) * * -/	/
 "!Q**!">#"8"8A">">q!"D"DbIII!">#"8"8A">">q!"D"DbIII!">#"8"8A">">q!"D"DdKKKKKr6   c                 4   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
          ||d          |           t           |                    d
d	          ||d          |           t           |                    d	d	          ||d          |           d S )NrJ   r  r  r  r  r  r  r  r"   r   Fr"  r  r  s           r3   test_partial_derivative_methodz6TestRectBivariateSpline.test_partial_derivative_method  s   ///""///""???"??"??"??"??	$ % %
 %%%&&'''(()))**S0!!Q**!">#"8"8A">">q!DI#K #K #K"$	& 	& 	& 	"">#"8"8A">">q!DI#K #K #K"$	& 	& 	& 	"">#"8"8A">">q!DI#K #K #K"&	( 	( 	( 	( 	(r6   c                 <   t          g dt                    }|                                }t          |j        |j        f          }t          |||          }t          t                    5  |                    dd           d d d            d S # 1 swxY w Y   d S )N)r   r"   r#   r$   r9   r   r9   r"   )	r
   r   r   r   sizer   r   r   r  rA  s        r3   'test_partial_derivative_order_too_largez?TestRectBivariateSpline.test_partial_derivative_order_too_large  s    //////FFHH!&!&!""!!Q**:&& 	) 	)""1a(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   -BBB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                     d S )NrJ   r  r  r  Fr"  )r
   r   r   rA  s        r3   test_broadcastz&TestRectBivariateSpline.test_broadcast  s    ++++++;;;{{{;;;{{{;;;OPP!!Aa((Aq		33q4y!DF)%#H#H#HIIIIIr6   c           	         t          t                    5 }t          g d          }t          g d          }t          g dg dg dg dg dg          }t          |||           d d d            n# 1 swxY w Y   dt	          |j                  v sJ t          t                    5 }t          g d          }t          g d          }t          g dg dg dg dg dg          }t          |||           d d d            n# 1 swxY w Y   dt	          |j                  v sJ t          t                    5 }t          g d          }t          g d          }t          g dg dg dg dg          }t          |||           d d d            n# 1 swxY w Y   d	t	          |j                  v sJ t          t                    5 }t          g d          }t          g d          }t          g d
g d
g dg dg d
g          }t          |||           d d d            n# 1 swxY w Y   dt	          |j                  v sJ t          t                    5 }t          g d          }t          g d          }t          g dg dg dg dg dg          }d}t          ||||           d d d            n# 1 swxY w Y   dt	          |j                  v sJ t          t                    5 }t          |||d           d d d            n# 1 swxY w Y   dt	          |j                  v sJ d S )N)r   r#   r$   r9   rK   rJ   r  r  r  x must be strictly increasing)r#   r#   r$   r9   rK   y must be strictly increasingz7x dimension of z must have same number of elements as x)r"   r#   r"   r#   )r"   r#   r$   r#   )r"   r#   r#   r#   z7y dimension of z must have same number of elements as yr-  r   r.  rs   r]   r   )r   r   r
   r   r   r   )r/   r   r0   r1   r   r   s         r3   r4  z*TestRectBivariateSpline.test_invalid_input  s   :&& 	)$ooo&&Aooo&&A&9 : :A1a(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) /#dj//AAAA:&& 	)$ooo&&Aooo&&A&9 : :A1a(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) /#dj//AAAA:&& 	)$ooo&&Aooo&&A&( ) )A1a(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) Idj//" " " " :&& 	)$ooo&&Aooo&&A|||\\\<<<#||\\\3 4 4A1a(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) Idj//" " " " :&& 	4$ooo&&Aooo&&A&9 : :A$D1ad3333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 +c$*oo====:&& 	1$1a40000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1%TZ888888sp   AA33A7:A7*ADDD?AFF!FAH//H36H3&AKKK?LL#&L#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           |dd           |dd                     d S )NrJ   r  r  r  )r"   rK   r"   rK   r   rt   )r
   r   r   r   )r/   r0   r1   r   r   r   r   s          r3   r   z-TestRectBivariateSpline.test_array_like_input   s    ///""///""???OOO___"??OOO5 6 6\\\"""1a666"188::qxxzz188::(,7 7 7!$$sC..$$sC..AAAAAr6   c                 d   d}t           j                            dt           j        |          }t           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  }	 |||	           |                                }
d|
d<   t          t                    5 } ||
|	           d d d            n# 1 swxY w Y   d	t          |j                  v sJ |	                                }d|d<   t          t                    5 } |||           d d d            n# 1 swxY w Y   d
t          |j                  v sJ d S )Nr*  r   r#   rd   r]   r   r$   MbP?r  r  )r_   randomuniformr   r   r   rn   r   r   r   r   r   )r/   NSampThetaPhiDataInterpolatorNLonNLatGridPosLatsGridPosLonsnonGridPosLatsr3  nonGridPosLonss                r3   test_not_increasing_inputz1TestRectBivariateSpline.test_not_increasing_input,  s   	!!!RUE22i1ru9e44wu~~25#tsKKKioo,ru4ioo,q0258 	[+...$))++!q:&& 	6(L555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6.#hn2E2EEEEE$))++!q:&& 	6(Ln555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6.#hn2E2EEEEEEEs$   D$$D(+D(4FFFN)rE   rF   rG   r  r  r  rf   r  r  r  r  r4  r   r  rH   r6   r3   r  r  ~  s        . . .% % %; ; ;
F 
F 
FL L L8( ( (,) ) )J J J/9 /9 /9b
B 
B 
BF F F F Fr6   r  c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )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	           |||          |           d S N{Gz?r#   rP   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/   r1   r0   r   r2   s        r3   r  z+TestRectSphereBivariateSpline.test_defaultsK  s    T1R49a((T2d7A&&?????????"????????"??$ % % (!A..!##a((1-----r6   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          |||          g d}g d}                    ||          }t          fd	t          ||          D                       }t          ||           d S )
Nr  r#   rP   r  r  r  )r   r"   r  g@r
  gQ@g      @)r)   r  rl  g?gjt?rt   -C6?c                 :    g | ]\  }} ||          d          S r  rH   r  s      r3   r  z?TestRectSphereBivariateSpline.test_evaluate.<locals>.<listcomp>^  r  r6   )r   r   r
   r   r  r  r   )	r/   r1   r0   r   rJ  rI  r  r  r2   s	           @r3   r  z+TestRectSphereBivariateSpline.test_evaluateT  s    T1R49a((T2d7A&&?????????"????????"??$ % % (!A..111666VVB^^@@@@CBKK@@@AAB$$$$$r6   c                 Z   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            n# 1 swxY w Y   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            n# 1 swxY w Y   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            n# 1 swxY w Y   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            n# 1 swxY w Y   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            n# 1 swxY w Y   dt          |j                  v sJ d S )N     V@      T      T@        f@r'        u@rQ   r      r   ^  u should be between (0, pi)r      K v[0] should be between [-pi, pi)h  "v[-1] should be v[0] + 2pi or lessr]   r  r_   dot
atleast_2dr   rV  absr   r   r   r   r   r   r/   rX  r3  rb  rc  s        r3   r4  z0TestRectSphereBivariateSpline.test_invalid_inputa  su   vbmC"+dC*D*D$DEEGmD26"+b$2J2J+K+K$KLLN NNO 	 :&& 	8(;r3**RU2T9D;q#r**RU2T9D%dD$777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 -HN0C0CCCCC:&& 	8(;r3**RU2T9D;q#r**RU2T9D%dD$777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 -HN0C0CCCCC:&& 	8(;r3**RU2T9D;tR,,ru4t;D%dD$777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 2S5H5HHHHH:&& 	8(;r3**RU2T9D;sC,,ru4t;D%dD$777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 4s8>7J7JJJJJ:&& 	>(;r3**RU2T9D;r3++be3d:D%dD$"====	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> &X^)<)<<<<<<<_   ADD	D9AF##F'*F'AIII;AK%%K),K)A NNNc                 8   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	           |                    dd          ||                     t           |||d           |                    dd          ||                     t           |||dd           |                    dd          ||                     t           |||dd           |                    dd          ||d                     t           |||dd           |                    dd          ||d                     t           |||ddd           |                    dd          ||d                     d S )Nr  r#   rP   r  r  r  {Gz?r"   )dthetar  r  rtolrm   )dphir  )r   r  ư>r  r  r1  r  r   Fr   r#  r"  r  r#  r   r  r#  )r   r   r
   r   r   _numdiff_2dr   r  r  s        r3   r  z3TestRectSphereBivariateSpline.test_derivatives_grid  sH   T1R49a((T2d7A&&?????????"????????"??$ % % (!A..T1R49a((T2d7A&&Aq+++[aq-I-I-I!	. 	. 	. 	.Aqq)));sAqQ+G+G+G!	. 	. 	. 	.Aq333#CA!tDDD!	. 	. 	. 	. 	33q!A...7311!Q771==	? 	? 	?33q!!,,,7311!Q771==	? 	? 	?33q!AA6667311!Q771==	? 	? 	? 	33q!AE:::7311!Q7715III	K 	K 	K33q!!%8887311!Q7715III	K 	K 	K33q!AAEBBB7311!Q7715III	K 	K 	K 	K 	Kr6   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d	
          j        |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           d S )Nr  r#   rP   r  r  r  r  r"   Fr  c                       | |d          S NFr"  rH   r0   r1   r2   s     r3   <lambda>z@TestRectSphereBivariateSpline.test_derivatives.<locals>.<lambda>      AaU0C0C0C r6   r  r  r  r  c                       | |d          S r  rH   r  s     r3   r  z@TestRectSphereBivariateSpline.test_derivatives.<locals>.<lambda>  r  r6   r  r  c                       | |d          S r  rH   r  s     r3   r  z@TestRectSphereBivariateSpline.test_derivatives.<locals>.<lambda>  r  r6   r  r  r  )r   r   r
   r   r   r   r   r	  r  s       @r3   rf   z.TestRectSphereBivariateSpline.test_derivatives  s   T1R49a((T2d7A&&?????????"????????"??$ % % (!A..T1R49a((T2d7A&&SSAae444:AGDDDAq777#$C$C$C$CQaPPP!	. 	. 	. 	. 	Aqqu555#$C$C$C$CQaPPP!	. 	. 	. 	. 	Aq???#$C$C$C$C$%qQ1$@ @ @!	. 	. 	. 	. 	. 	.r6   c                 Z   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            n# 1 swxY w Y   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            n# 1 swxY w Y   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            n# 1 swxY w Y   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            n# 1 swxY w Y   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            n# 1 swxY w Y   dt          |j                  v sJ d S )Nr  r  r  r  r  r'   r  rQ   r   r  r  r  r      r  r  r  r  r  r   r]   r  r  r  s        r3   test_invalid_input_2z2TestRectSphereBivariateSpline.test_invalid_input_2  su   vbmC"+dC*D*D$DEEGmD26"+b$2J2J+K+K$KLLN NNO 	 :&& 	8(;q#q))BE1D8D;q#r**RU2T9D%dD$777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 -HN0C0CCCCC:&& 	8(;r3**RU2T9D;q#r**RU2T9D%dD$777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 -HN0C0CCCCC:&& 	8(;r3**RU2T9D;tR,,ru4t;D%dD$777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 2S5H5HHHHH:&& 	8(;r3**RU2T9D;sC,,ru4t;D%dD$777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 4s8>7J7JJJJJ:&& 	>(;r3**RU2T9D;r3++be3d:D%dD$"====	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> &X^)<)<<<<<<<r  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          |                                |                                |                                          }t           |||           |||                     d S r  )r   r   r
   r   r   r   )r/   r1   r0   r   r   r   s         r3   r   z3TestRectSphereBivariateSpline.test_array_like_input  s    T1r6D=!,,T29a(((((*?*?*?((((((*?*?*?((((((	* + + )Aq11(QXXZZLL!$$q!**dd1ajj99999r6   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          |
|           d S )N)r     #   r  -   )iiir   r   r"   r  g     B@r  g     `Sg     Fg=Eg     HgDioEG)r_   r
   r   radiansr   r   )r/   rb  rc  meshrX  lat_rlon_rinterpolator	query_lat	query_londata_interpanss               r3   test_negative_evaluationz6TestRectSphereBivariateSpline.test_negative_evaluation  s   x,,,--x00011{4&&Awa 
4  
4  0tDDJrxT
3344	Jrxe5566	"l9i88h
+!9-/ 0 0!+s33333r6   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|           d S )Nr"   r   )rQ   rQ   ))TT)TF)FFr   )r^   pole_continuity)r_   rn   r   r   r   )r/   uvr   ps        r3   test_pole_continuity_gh_14591z;TestRectSphereBivariateSpline.test_pole_continuity_gh_14591  s     Iaru$r)Iaru$r)HV> 	G 	GA%aAAFFFFF	G 	Gr6   N)rE   rF   rG   r  r  r4  r  rf   r  r   r$  r*  rH   r6   r3   r  r  J  s        . . .% % % =  =  =D K  K  KD. . .0 =  =  =D: : :4 4 4G G G G Gr6   r  :0yE>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    rZ|dk    rT | ||z   ||z              | ||z
  ||z             z
   | ||z   ||z
            z
   | ||z
  ||z
            z   d|z  dz  z  S t          d          )Nr   r"   r#   zinvalid derivative order)r   )funcr0   r1   r  r  r1  s         r3   r	  r	    sO   	Qww277tAqzz	qR1WWQWa  44C#3#33#>>	qR1WWQC  441s7#3#33#>>	qR1WWQWa#g&&a#gq3w)?)??$q3wC(()+/4CS+A+ABFGeaZP 	P 3444r6   c                   6    e Zd ZdZd Zd Zd Zd Zd Zd Z	dS )	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                      5 }|                    t          d           t          ||t          ddd          t          d	d
d          d          | _
        d d d            n# 1 swxY w Y   t          ||          | _        t          ddd          }|dz   }t          fdt	          j                  D                       }t          |||          | _        t          t#          j        t	          d          t	          d                              | _        d S )Nr   r"      r$   r  r   g     3@r9   r)   g     4@r  r0  r   r*  rt   c                 :    g | ]}t          j        |          S rH   )r_   roll)r  ir   s     r3   r  z<Test_DerivedBivariateSpline.setup_method.<locals>.<listcomp>*  s#    999aBGAqMM999r6   )r_   concatenatelistr  r   r   r   r   r   r   rW  r   
lut_smoothr
   r  r   lut_rect	itertoolsproductorders)r/   r0   r1   r   r   r   zzr   s          @r3   rd  z(Test_DerivedBivariateSpline.setup_method  s   N4E"IIuRyy 9 9::;;N4E"IIuQ|| < <==>>NBK1b112;q!R3H3HIJJ   	8CJJ{$FGGG-aA.6sD!.D.D.6sD!.D.D268 8 8DL	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 01a88aB#X99995==999::+BB779,U1XXuQxx@@AAs   !AEEEc                     | j         D ]X\  }}| j                            ||          } |ddd          }|                     dd||d          }t          ||           Yd S )Nrd   Fr"  r  )r;  rW  r  r   r/   nuxnuylut_derr   r   s         r3   test_creation_from_LSQz2Test_DerivedBivariateSpline.test_creation_from_LSQ.  s|     	 	HCl55c3??GSu---AS###EBBAA		 	r6   c                     | j         D ]X\  }}| j                            ||          } |ddd          }|                     dd||d          }t          ||           Yd S )Ng      @Fr"  r  )r;  r7  r  r   r>  s         r3   test_creation_from_Smoothz5Test_DerivedBivariateSpline.test_creation_from_Smooth5  s|     	 	HCo88cBBGSu---ASSSuEEAA		 	r6   c                     | j         D ]X\  }}| j                            ||          } |ddd          }|                     dd||d          }t          ||           Yd S )Nr   r)   Fr"  r  )r;  r8  r  r   r>  s         r3   test_creation_from_Rectz3Test_DerivedBivariateSpline.test_creation_from_Rect<  s|     	 	HCm66sC@@GSu---Ac333UCCAA		 	r6   c                     | j                             dd          }t          t                    5  |j         d d d            d S # 1 swxY w Y   d S Nr"   )r8  r  r   AttributeErrorfpr/   ders     r3   test_invalid_attribute_fpz5Test_DerivedBivariateSpline.test_invalid_attribute_fpC  s    m..q!44>** 	 	FF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA	A	c                     | j                             dd          }t          t                    5  |                                 d d d            d S # 1 swxY w Y   d S rH  )r7  r  r   rI  r-   rK  s     r3   #test_invalid_attribute_get_residualz?Test_DerivedBivariateSpline.test_invalid_attribute_get_residualH  s    o00A66>** 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAN)
rE   rF   rG   __doc__rd  rB  rD  rF  rM  rO  rH   r6   r3   r/  r/    s{         B B B"        
    r6   r/  )r   r   r+  ),r9  numpyr_   numpy.testingr   r   r   r   r   r   pytestr	   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   r   r  r=  rR  ry  r  r  r	  r/  rH   r6   r3   <module>rV     s          G G G G G G G G G G G G G G G G * * * * * * B B B B B B B B B B B B B B B B B B K K K K K K K K K K K K# # # # # # # # # # # # # # # # # # # # # #s$ s$ s$ s$ s$ s$ s$ s$l\6 \6 \6 \6 \6 \6 \6 \6~w8 w8 w8 w8 w8 w8 w8 w8tFB FB FB FB FB FB FB FBRRB RB RB RB RB RB RB RBjIF IF IF IF IF IF IF IFX~G ~G ~G ~G ~G ~G ~G ~GB5 5 5 52 2 2 2 2 2 2 2 2 2r6   