
    _Mh                        d dl Z d dlmZ d dlZd dlm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(  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Z0 G d d          Z1dS )    N)Lock)suppress_warnings)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_splrepc                       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ej        j        d             Zd ZdS )TestUnivariateSplinec                 F   g d}g d}t          ||d          }t          |                                ddg           t          |                                ddg           t	          |                                          dk     sJ t           |g d          g d           t          ||dt          |                    }t          |j	        dd	         |                                d
           t          |j
        |                                d
           d S )N         )r&   r&   r&   r$   kr&   g|=r$         ?r%   )r(   sV瞯<atol)r   r	   	get_knots
get_coeffsabsget_residualr   lenr   tc)selfxylutspls        e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/interpolate/tests/test_fitpack2.pytest_linear_constantz)TestUnivariateSpline.test_linear_constant   s   GGGGqQ'''!#--//Aq6:::!#.."2"2QF;;;3##%%&&....!##kkk"2"2III>>>!Q!s1vv...adS]]__5AAAAs~~//e<<<<<<    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 d S )Nr#   r   r%      r$   r'   r%   )nu)r*   r%         @)r   r   )r7   r8   r9   r:   args        r<   test_preserve_shapez(TestUnivariateSpline.test_preserve_shape&   s    IIIIq!q)))SzzU33s88__,,,,SzzU33sq>>>222222mmSzzU33s88__,,,,SzzU33sq>>>22222222r>   c                 R   g d}g d}t          ||d          }t          |                                ddg           t          |                                ddg           t	          |                                          dk     sJ t           |g d	          g d
           d S )Nr#   r@   r$   r'   r&   r   rA   r-   r)   )r   r$   r%   )r   r	   r0   r1   r2   r3   )r7   r8   r9   r:   s       r<   test_linear_1dz#TestUnivariateSpline.test_linear_1d1   s    GGGGqQ'''!#--//1Q%888!#.."2"2Aa59993##%%&&....!##iii..99999r>   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
   )r7   r8   s     r<   __call__zBTestUnivariateSpline.test_subclassing.<locals>.ZeroSpline.__call__>   s    qz!r>   N)__name__
__module____qualname__rL    r>   r<   
ZeroSplinerJ   =   s#        " " " " "r>   rQ   r$   r%   r&   rA      )r&   r%   r&   r%   r&   r%   r'   r*   rC           )r   r   )r7   rQ   sps      r<   test_subclassingz%TestUnivariateSpline.test_subclassing:   ss    	" 	" 	" 	" 	") 	" 	" 	" Z[[[A666C:R11111r>   c                     g d}g d}t          ||d          }t           |g           t          g                      d S )Nr$   r&   rS      	   r   rA   rZ         r&   r'   )r   r   r
   r7   r8   r9   r;   s       r<   test_empty_inputz%TestUnivariateSpline.test_empty_inputD   sL    KKMMq!q)))Br+++++r>   c                     g d}g d}t          ||d          }t          |                                d         d           d S )NrX   r[   r&   r'   r   g7ã?)r   r   rootsr^   s       r<   
test_rootszTestUnivariateSpline.test_rootsK   sM    OOq!q)))CIIKKN,=>>>>>r>   c                     t          j        ddt           j        z  d          }t          j        |          }t	          ||d          }t          |                                          dk    sJ d S )Nr   2   i  r+   )npr   r   cosr   r4   ra   r^   s       r<   test_roots_lengthz&TestUnivariateSpline.test_roots_lengthQ   sc    K2:t,,F1IIq!q)))399;;2%%%%%%r>   c                     g d}g d}t          ||d          }t          |                    d          g d           d S )NrX   r[   r&   r'         @)g;@gpZ<o?gOmǿg      ?)r   r   derivativesr^   s       r<   test_derivativesz%TestUnivariateSpline.test_derivativesW   sb    OOq!q)))COOC00FFF	H 	H 	H 	H 	Hr>   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   re   )g     F@g     C@g      6@      @r-   r.   )r+   r(   )rf   aranger   r   r   r   rk   )r7   r8   r9   tckdersr;   s         r<   test_derivatives_2z'TestUnivariateSpline.test_derivatives_2^   s    IaLLqD2ad7NQQa~~ # # # #		$ 	$ 	$ 	$
 q!qA...**"	$ 	$ 	$ 	$ 	$ 	$r>   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ϠrT   gBϠ?g46	<?g@7?g_?g<&?      ?)rw   1\_#?~a?w?5??0ms?gx?r|   r{   rz   ry   rx   rw   )   mBo!@u)	~@e?֭z@b@v5|@geSs@r   r   r   r   r~   r}   N)r8   r9   wr+   )gJdv?gc?g=?gt?皙?      ??gGz?gMb@?r.   )r   r
   r   )r7   r8   r9   r   r;   desireds         r<   test_resize_regressionz+TestUnivariateSpline.test_resize_regressionn   s           a1555HHHII11122G$GGGGGGr>   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 )NrS   dtyper&      d   r   rT         @r,   )r8   r9   )r   extrapolate)extgؗҜ<r.   )r$   zeros)r%   raise)r&   constgؗҬ<rA   r$   r%   )r,   unknown)r8   r9   r   )rf   rq   floatr   copy
logical_orr   r   r   assert_raises
ValueErrordictr0   r   )
r7   r8   r9   xpxp_zerosxp_clipclsr;   r   r5   s
             r<   test_out_of_range_regressionz1TestUnivariateSpline.test_out_of_range_regression~   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!---/ / / /	/ 	/r>   c                     t          j        d          dz  }t          j        d          dz  }t          j        ddd          }d}t          t          t
          ||||           d S )Nr   rw   r   c   
   )r,   e   bbox)rf   rq   r   r   r   r   )r7   xsysknotsr   s        r<   test_lsq_fpchecz$TestUnivariateSpline.test_lsq_fpchec   sm    Ys^^b Ys^^b Ar2&&j"5r2u	! 	! 	! 	! 	! 	!r>   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&   re   r%   333333?g333333?皙?)rf   r   rg   r   antiderivative
derivativer   integral)r7   r8   r9   r;   spl2s        r<   "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 	0r>   c                     g d}g d}t          ||dd          }g d}t           |                                |          t          j        |          d           d S )	Nr$   r%   rA      g      !@)r   皙??rC   rS   r   r&   )r   r(   )r,   r   g      rZ   g      #@r   r-   r.   )r   r   r   rf   
zeros_like)r7   x_valuesy_valuesfr8   s        r<   test_derivative_extrapolationz2TestUnivariateSpline.test_derivative_extrapolation   sr     %$$***XxWBBB%%%q))2=+;+;%HHHHHHr>   c                     t          j        ddd          }t          d          D ]F}t          ||d|          }dD ].\  }}t	          |                    ||                    dk     sJ /Gd S )	NrT   rw   rY   rA   r   )r+   r   ))r$   r$   )r$   rS   )r%   rS   r   r   )r   )r   r,   r-   )rf   r   ranger   r2   r   )r7   r8   r   r   abs         r<   test_integral_out_of_boundsz0TestUnivariateSpline.test_integral_out_of_bounds   s     KB""88 	5 	5C A444A6 5 5A1::a++,,u444445	5 	5r>   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_finiterA   r,   r8   r9   r   )r8   r9   r5   r   )r8   r9   r   r   r8   r9   r5   r   r   )rf   rq   r   	ones_liker   r0   naninfr   r   r   r   r   )r7   r8   r9   r   r;   r5   y_endzs           r<   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r>   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   rA   )r8   r9   r   r+   r   r   )r8   r9   r+   r   r   )rf   rq   r   r   r   r0   r   r   r   r   r   r7   xxyyr8   r9   r   r;   r5   s           r<   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 	5r>   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   rw   r$   Tr   rA   r   r   )rf   rq   r   r   r   r0   r   r   r   r   r   r   s           r<   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===	? 	? 	? 	? 	?r>   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   rC   !x and y should have a same lengthr   r   r   rC   gffffff@rv   rw   rw   rw   r   %x, y, and w should have a same lengthr,   r   bbox shape should be (2,)r   r'   k should be 1 <= k <= 5rv   re   s should be s >= 0.0)r   r   r   strvaluer7   infor   r   w_valuesr   s         r<   (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         r<   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&   rA   r   r   )rw   rw   rw   rw   r   r   z;Interior knots t must satisfy Schoenberg-Whitney conditions)match)r   r   r,   r   r   r'   r   )r   r0   r   r   r   r   r   )	r7   r   r   r;   t_valuesr   r   messager   s	            r<   ,test_invalid_input_for_lsq_univariate_splinezATestUnivariateSpline.test_invalid_input_for_lsq_univariate_splineE  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   )rw   rw   rw   rw   rw   r   r   )r8   r9   r   r   r   )rf   r
   r   tolistr   )r7   r   r   r   r   spl1r   s          r<   test_array_like_inputz*TestUnivariateSpline.test_array_like_inputg  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 	5r>   c                     t          d          }g d}t                      5 }|                    t          d          }t	          ||d           t          |          dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nm   )mrT   rT   rT   rT   rT   %@rT         &@rT   rT   rT   r   rT   rT   rT   rT   rT   rT   r   rT   rT   rT   r   rT   rT   rT   r   rT   rT   rT         %@rT   rT   rT   ffffff%@rT   rT   rT   r   rT   rT   rT   rT   rT   rT   r   rT   rT   r   rT   rT   rT   333333%@rT   rT   rT   r   rT   rT   r   rT   rT   r   rT   rT   g      '@rT   rT   rT   r   rT   rT   r   rT   rT   r   rT   rT   皙%@rT   rT   rT   r   rT   rT   r   rT   rT   rT   $@rT   rT   r   rT   rT   r   rT   rT   rT   r   rT   rT   rT   r   rT   rT   rT   r   rT   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   r4   )r7   r8   r9   suprs        r<   test_fpknot_oob_crashz*TestUnivariateSpline.test_fpknot_oob_crashv  s     #JJ; ; ;    
	C

LM MA QQ''''q66Q;;;;;
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	s   AA33A7:A7c                     t          j        dt                    }|dz  }t          j        dt                    }|d         |d<   t          ||d          }d }t	          d	|||           d S )
Nr   r   r&   r   r$   Tr   c                      ||           d S )NrP   )_interpr8   s      r<   	worker_fnz8TestUnivariateSpline.test_concurrency.<locals>.worker_fn  s    F1IIIIIr>   r   )rf   rq   r   r   r   )r7   r   r   r8   r;   r  s         r<   test_concurrencyz%TestUnivariateSpline.test_concurrency  s     Ys%(((UIc'''t!r2D999	 	 	 	 IsA66666r>   N)rM   rN   rO   r=   rE   rG   rV   r_   rb   rh   rl   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   pytestmarkthread_unsafer  r  rP   r>   r<   r!   r!      s       = = =	3 	3 	3: : :2 2 2, , ,? ? ?& & &H H H$ $ $ H H H '/ '/ '/R! ! !0 0 0I I I5 5 5C C C45 5 5*? ? ?$9 9 98< < <0 <  <  <D5 5 5 [  67 7 7 7 7r>   r!   c                       e Zd Zej        j        d             Zd Zej        j        d             Zej        j        d             Z	d Z
ej        j        d             Zej        j        d             ZdS )	TestLSQBivariateSplinec           
      |   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	          |          dk    sJ 	 d d d            n# 1 swxY w Y   t           |	d	d	          t          j        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   r4   r   rf   asarray
r7   r8   r9   r   r+   txtyr   r   r:   s
             r<   r=   z+TestLSQBivariateSpline.test_linear_constant  s   c!A#Yc!A#Y   	C

;(JKKA$Qq2bA;;;Cq66Q;;;;;	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 	CC1IIrz"~~66666   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   rY   rn   r&   rA   rY   r$   r&   rA   r   r$   r&   r  r  r,   )r   r   r   )r   皙?gffffff?)r   filterr   r   r0   zipr   )r7   r8   r9   r   r+   r  r  r   r:   xaxbyaybr5   r   ypzps                    r<   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                 P   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          |          dk    sJ 	 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          t          j        |	                    |d         |d
         |d         |d
                             t          j        |                     d S )N)	r$   r$   r$   r%   r%   r%   rn   rn   rn   r  r  r   r$   r&   r  r        ?r,   r   )r
   r   r   r   r   r4   r0   r   sumr   rf   r  r   )r7   r8   r9   r   r+   r  r  r   r   r:   tztrpzs               r<   test_integralz$TestLSQBivariateSpline.test_integral  s
   %%%&&c!A#Yc!A#Y   	C

;(JKKA$Q1b"qAAACq66Q;;;;;	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 BSR[[DHHQQQtV$T"XXd111f%55#2#crc'{2abb"f:-b"QRRj8ABBqrrEBDEHSUUK 	BJs||BqE2b62a5"R&'Q'QRRJt,,	. 	. 	. 	. 	.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	          |          dk    sJ 	 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   r4   r   rf   r   r  s
             r<   r_   z'TestLSQBivariateSpline.test_empty_input  sB     c!A#Yc!A#Y   	C

;(JKKA$Q1b"qAAACq66Q;;;;;	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 	BRXe__555B///$@@@@@r  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&   rw         $@r   num%x, y, and z should have a same length   r   (x, y, z, and w should have a same lengthrv   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)rT   epseps should be between (0, 1))r   r   rf   r   r   r   r   )r7   r+   r  r  r   r8   r9   r   r   r   exc_infos              r<   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           
      v   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          |
          d
k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   r$   r&   rw   r2  )rw   r2  rw   r2  r  )r   r   ro   r%   )
rf   r
   r   r   r   r   r   r   r   r4   )r7   r+   r  r  r8   r9   r   r   r   r   r   r   r   s                r<   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;;;q66Q;;;;;		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		s   3C-F..F25F2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          |          d	k    sJ 	 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.  )rf   mgridravelr   r   r   r   r   r   r4   r   )	r7   r8   r9   r   r  r  r   r   r:   s	            r<   test_unequal_length_of_knotsz3TestLSQBivariateSpline.test_unequal_length_of_knots2  s7   
 x#qu%1GGIIGGII",q//![dB''[dB''   	C

;(JKKA$Qq2b11Cq66Q;;;;;	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 	CC15111155555s   AC&&C*-C*N)rM   rN   rO   r  r	  r
  r=   r&  r,  r_   r@  r   rG  rP   r>   r<   r  r    s        [7 7 7< < <2 [. . .( [A A A )E )E )EV [  * [6 6 6 6 6r>   r  c                   V    e Zd Zd Zd Zej        j        d             Zd Z	d Z
d ZdS )TestSmoothBivariateSplinec                 |   g d}g d}g d}t          |||dd          }|                                D ]}t          |g d           t          |                                g d           t	          |                                          dk     sJ 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   r0   r	   r1   r2   r3   r7   r8   r9   r   r:   r5   s         r<   r=   z.TestSmoothBivariateSpline.test_linear_constantF  s    #AaQ!444 	7 	7A%a6666!#.."2"2LLLAAA3##%%&&....!##kkkAs8"<"<1v1vPQSTv>VWWWWWr>   c                    g d}g d}g d}t          |||dd          }|                                D ]&}t          |t          j        g d                     't          |                                g d           t          |                                          dk     sJ 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%   rA   rA   rA   r$   r  )rw   r$   r&   r&   )r   r   rA   rA   r-   r)   r*   r   r%   )	r   r0   r   rf   r  r	   r1   r2   r3   rK  s         r<   rG   z(TestSmoothBivariateSpline.test_linear_1dR  s    #AaQ!444 	; 	;AArz...99::::!#.."2"2LLLAAA3##%%&&....!##iii3"8"81Q%1qe9LMMMMMr>   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          t          j	        |
                    |d         |d         |d         |d                             t          j	        |	                     t	          |||ddd          }
t          t          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                                  z  }	t          t          j	        |
                    |d         |d         |d         |d                             t          j	        |	                     d S )N)	r$   r$   r$   r%   r%   r%   rA   rA   rA   r  r  z
The required storage spacer$   r   )r  r  r+   )r$   r%   rA   r#   r(  r,   r%   )decimalr   )r
   r   r  r   r   r   r)  r   rf   r  r   )r7   r8   r9   r   r   r:   r  r  r*  r+  lut2s              r<   r,  z'TestSmoothBivariateSpline.test_integral]  sf   %%%&&   	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BJs||BqE2b62a5"R&'Q'QRRJt,,	. 	. 	. %Q1qA>>>BJt}}RUBrFBqE2b6'R'RSSJt,,$%	' 	' 	' 	' SCRC"SbS'""DCRCMM!!!D&)$r#2#w--QQQ*??#2#crc'{2abb"f:-b"QRRj8ABBqrrEBDEHSUUKBJs||BqE2b62a5"R&'Q'QRRJt,,	. 	. 	. 	. 	.s   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   )rf   r   r   r   r   r   )
r7   r8   r9   r   xiyirr   res1interp_res2s
             r<   test_rerun_lwrk2_too_smallz4TestSmoothBivariateSpline.test_rerun_lwrk2_too_small|  s     KAr""KAr""E[Q$$[Q$$q!Qr2s##'1a00wr2D$'''''r>   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 )Nrw   r2  r   r3  r5  r6  r   r7  rv   r8  r9  r   r:  r  r;  re   r   rT   r<  r>  )r   r   rf   r   r   r   r   )r7   r   r8   r9   r   r   r   r?  s           r<   r@  z,TestSmoothBivariateSpline.test_invalid_input  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$   )rw   r  rw   r  r$   )r   r   r  r  )r   r   r  r  r   r   )rf   r
   r   r   r   )r7   r8   r9   r   r   r   r   r   s           r<   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7r>   N)rM   rN   rO   r=   rG   r  r	  r
  r,  rW  r@  r   rP   r>   r<   rI  rI  E  s        
X 
X 
X	N 	N 	N [. . .<( ( (*E *E *EX8 8 8 8 8r>   rI  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$   ro   r   rS   )r   r   r   r   r   r   rF  Tlut_lsqdatanew_lonsnew_lats)r7   nthetanphithetaphira  knotstknotspknotdatalatslonsr`  s               r<   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}}}r>   c                     t          | j                                                  dk     sJ t          |                     | j        | j                  | j                   d S )Nr-   )r2   r`  r3   r	   rc  rb  ra  r7   s    r<   r=   z1TestLSQSphereBivariateSpline.test_linear_constant  s^    4<,,..//%7777!$,,t}dm"L"L"&)	- 	- 	- 	- 	-r>   c                     t          |                     g g           t          j        d                     t          |                     g g d          t          j        d                     d S Nr   Fr.  r0  )r	   r`  rf   r   ro  s    r<   r_   z-TestLSQSphereBivariateSpline.test_empty_input  sX    !$,,r2"6"6HHH!$,,r2E,"B"BBHTNNSSSSSr>   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 )Nr]  r   r$   ro   r   rS   皙rw   r3  theta should be between [0, pi]r   皙?phi should be between [0, 2pi]rT   ztt should be between (0, pi)ztp should be between (0, 2pi)r%   	rv   rw   r*   r   rw   r*   r   rw   rw   r   r8  r<  r>  )r   r   r   r   r   r   r   r   rF  r_  r   r   rf   r   r
   )r7   rd  re  rf  rg  ra  rh  ri  r?  invalid_thetainvalid_latsrl  invalid_phirk  invalid_lonsinvalid_knotstinvalid_knotsp	invalid_ws                     r<   r@  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 )	Nr]  r   r$   ro   r   rS   r   rw   )
r   r   r   r   r   rF  r   r_  r   r	   )r7   rd  re  rf  rg  rk  rl  ra  rh  ri  r   r   r   s                r<   r   z2TestLSQSphereBivariateSpline.test_array_like_input6  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Ar>   NrM   rN   rO   rm  r=   r_   r@  r   rP   r>   r<   r[  r[    sn        6 6 6$- - -
T T TRE RE REhB B B B Br>   r[  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      _Bre   )r
   r   r   r:   )r7   rf  rg  r   s       r<   rm  z,TestSmoothSphereBivariateSpline.setup_methodP  s    s2vs2vs2vr"ubeRUCF2vs2v' ( (R"Wb#(BGRr27B2X    ---...uc1EEEr>   c                     t          | j                                                  dk     sJ t          |                     g dddg          ddgddgddgg           d S )Nr-   r)   r$   r*   r&   )r2   r:   r3   r	   ro  s    r<   r=   z4TestSmoothSphereBivariateSpline.test_linear_constantX  ss    48((**++e3333!$((;;;3x"@"@$%q6Aq6Aq6":	< 	< 	< 	< 	<r>   c                     t          |                     g g           t          j        d                     t          |                     g g d          t          j        d                     d S rq  )r	   r:   rf   r   ro  s    r<   r_   z0TestSmoothSphereBivariateSpline.test_empty_input]  sX    !$((2r"2"2BHUOODDD!$((2r(">">OOOOOr>   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  rs  r  re   rt  ru  rv  rw   g @rw  r   r+   r8  rv   s should be positiver<  r>  )r
   r   r   r   r   r   r   )r7   rf  rg  r   r?  rx  rz  r~  s           r<   r@  z2TestSmoothSphereBivariateSpline.test_invalid_inputa  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  )	rw   rw   rw   rw   rw   rw   rw   rw   rw   r  r  rw   )rf   r
   r   r   r   r	   )r7   rf  rg  r   r   r   r   s          r<   r   z5TestSmoothSphereBivariateSpline.test_array_like_input  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Ar>   Nr  rP   r>   r<   r  r  O  sn        F F F< < <
P P P0E 0E 0EdB B B B Br>   r  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 )NrR   r$   r%   r$   r%   r$   r$   r%   r&   r%   r$   r$   r%   r%   r%   r$   r
   r   r	   r7   r8   r9   r   r:   s        r<   test_defaultsz%TestRectBivariateSpline.test_defaults  s    ++++++;;;{{{;;;{{{;;;OPP!!Aa((!##a((1-----r>   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 )NrR   r  r  r  )r$   ffffff@g333333@r   ffffff
@333333?r&   )r$   r  r  r   g      @rw   r&   c                 :    g | ]\  }} ||          d          S r   rP   .0r   r$  r:   s      r<   
<listcomp>z9TestRectBivariateSpline.test_evaluate.<locals>.<listcomp>  ,    @@@&"bSSR[[%@@@r>   )r
   r   evr  r   )	r7   r8   r9   r   rR  rS  zizi2r:   s	           @r<   test_evaluatez%TestRectBivariateSpline.test_evaluate  s    ++++++;;;{{{;;;{{{;;;OPP!!Aa((,,,,,,VVB^^@@@@CBKK@@@AAB$$$$$r>   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 )NrR   r  r  r  r   r   ir   r   r   r   r   r   r   r   r   rA   r   r   r   r   ir   r   rp   rA   r,   r   r$   r   r*   r   g      r   r%   r(  r         пr   (   ir      iig     @0@r   g     @0   r   rS   r   rn      g     +r   g     +@ir$   dxdy)r  r  r  r7   r8   r9   r   r  r  dxdyr:   s           r<   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:::::r>   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 )NrR   r  r  r  r   r   gUUUUUU?r   r   rA   r,   r   r  r     A   r   7             8@r$   F)r  r/  )r  r/  r  r  r/  r  r  s           r<   rl   z(TestRectBivariateSpline.test_derivatives  s   ++++++;;;{{{;;;{{{;;;OPP>>>""###$$%%%&&s*!!Aa((!##aQE":":":2>>>!##aQE":":":2>>>!##aQ!"?"?"?EEEEEr>   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 )NrR   r  r  r  r  r  r  r  rp   r  r  r  r  r  r  r  r$   r   r
   r   r	   partial_derivativer  s           r<   #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Kr>   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 )NrR   r  r  r  r  r  r  r  r$   r   Fr.  r  r  s           r<   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"&	( 	( 	( 	( 	(r>   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&   rA   r   rA   r$   )	r
   r   r   r   sizer   r   r   r  r  s        r<   '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 )NrR   r  r  r  Fr.  )r
   r   r   r  s        r<   test_broadcastz&TestRectBivariateSpline.test_broadcast  s    ++++++;;;{{{;;;{{{;;;OPP!!Aa((Aq		33q4y!DF)%#H#H#HIIIIIr>   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&   rA   rS   rR   r  r  r  x must be strictly increasing)r%   r%   r&   rA   rS   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 yr9  r   r:  rv   re   r   )r   r   r
   r   r   r   )r7   r   r8   r9   r   r   s         r<   r@  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 )NrR   r  r  r  )r$   rS   r$   rS   r   rw   )r
   r   r   r	   )r7   r8   r9   r   r   r   r   s          r<   r   z-TestRectBivariateSpline.test_array_like_inputF  s    ///""///""???OOO___"??OOO5 6 6\\\"""1a666"188::qxxzz188::(,7 7 7!$$sC..$$sC..AAAAAr>   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 )Nr6  r   r%   rj   re   r   r&   MbP?r  r  )rf   randomuniformr   r   r   rq   r   r   r   r   r   )r7   NSampThetaPhiDataInterpolatorNLonNLatGridPosLatsGridPosLonsnonGridPosLatsr?  nonGridPosLonss                r<   test_not_increasing_inputz1TestRectBivariateSpline.test_not_increasing_inputR  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)rM   rN   rO   r  r  r  rl   r  r  r  r  r@  r   r  rP   r>   r<   r  r    s        . . .% % %; ; ;
F 
F 
FL L L8( ( (,) ) )J J J/9 /9 /9b
B 
B 
BF F F F Fr>   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%   rY   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	   r7   r9   r8   r   r:   s        r<   r  z+TestRectSphereBivariateSpline.test_defaultsq  s    T1R49a((T2d7A&&?????????"????????"??$ % % (!A..!##a((1-----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          |||          g d}g d}                    ||          }t          fd	t          ||          D                       }t          ||           d S )
Nr  r%   rY   r  r  r  )r   r$   r  g@r  gQ@g      @)r*   r  ru  g?gjt?rw   -C6?c                 :    g | ]\  }} ||          d          S r  rP   r  s      r<   r  z?TestRectSphereBivariateSpline.test_evaluate.<locals>.<listcomp>  r  r>   )r   r   r
   r   r  r  r   )	r7   r9   r8   r   rS  rR  r  r  r:   s	           @r<   r  z+TestRectSphereBivariateSpline.test_evaluatez  s    T1R49a((T2d7A&&?????????"????????"??$ % % (!A..111666VVB^^@@@@CBKK@@@AAB$$$$$r>   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@rT        u@rZ   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 lessre   r  rf   dot
atleast_2dr   r_  r2   r   r   r   r   r   r   r7   ra  r?  rk  rl  s        r<   r@  z0TestRectSphereBivariateSpline.test_invalid_input  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%   rY   r  r  r  {Gz?r$   )dthetar  r  rtolr/   )dphir  )r	  r  ư>r  r  r=  r  r   Fr	  r/  r.  r  r/  r	  r  r/  )r   r   r
   r   r   _numdiff_2dr   r  r  s        r<   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!	. 	. 	. 	. 	Aq+++7311!Q771==	? 	? 	?Aqq)))7311!Q771==	? 	? 	?Aq3337311!Q771==	? 	? 	? 	Aq7777311!Q7715III	K 	K 	KAqqu5557311!Q7715III	K 	K 	KAq???7311!Q7715III	K 	K 	K 	K 	K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          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           d S )Nr  r%   rY   r  r  r  r  r$   Fr  c                       | |d          S NFr.  rP   r8   r9   r:   s     r<   <lambda>z@TestRectSphereBivariateSpline.test_derivatives.<locals>.<lambda>      AaU0C0C0C r>   r  r  r
  r  c                       | |d          S r  rP   r  s     r<   r  z@TestRectSphereBivariateSpline.test_derivatives.<locals>.<lambda>  r  r>   r  r  c                       | |d          S r  rP   r  s     r<   r  z@TestRectSphereBivariateSpline.test_derivatives.<locals>.<lambda>  r  r>   r  r  r  )r   r   r
   r   r   r   r  r  s       @r<   rl   z.TestRectSphereBivariateSpline.test_derivatives  s   T1R49a((T2d7A&&?????????"????????"??$ % % (!A..T1R49a((T2d7A&&s1a...4????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$@ @ @!	. 	. 	. 	. 	. 	.r>   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  rT   r  rZ   r   r  r  r  r      r  r  r  r   r  r,   re   r  r  r  s        r<   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	   )r7   r9   r8   r   r   r   s         r<   r   z3TestRectSphereBivariateSpline.test_array_like_input  s    T1r6D=!,,T29a(((((*?*?*?((((((*?*?*?((((((	* + + )Aq11(QXXZZLL!$$q!**dd1ajj99999r>   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)rf   r
   r   radiansr   r	   )r7   rk  rl  meshra  lat_rlon_rinterpolator	query_lat	query_londata_interpanss               r<   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3r>   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   )rZ   rZ   ))TT)TF)FFr   )r+   pole_continuity)rf   rq   r   r   r   )r7   uvr   ps        r<   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r>   N)rM   rN   rO   r  r  r@  r  rl   r  r   r-  r3  rP   r>   r<   r  r  p  s        . . .% % % =  =  =D K  K  KD. . .0 =  =  =D: : :4 4 4G G G G Gr>   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   )funcr8   r9   r  r  r=  s         r<   r  r  1  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4r>   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@rA   r*   g     4@r  r<  r   r6  rw   c                 :    g | ]}t          j        |          S rP   )rf   roll)r  ir   s     r<   r  z<Test_DerivedBivariateSpline.setup_method.<locals>.<listcomp>P  s#    999aBGAqMM999r>   )rf   concatenatelistr  r   r   r   r   r   r   r`  r   
lut_smoothr
   r  r   lut_rect	itertoolsproductorders)r7   r8   r9   r   r   r   zzr   s          @r<   rm  z(Test_DerivedBivariateSpline.setup_methodC  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 ]P\  }}| j                            ||          } |ddd          }|                     dd||d          }||k    sJ Qd S )Nrj   Fr.  r  )rD  r`  r  r7   nuxnuylut_derr   r   s         r<   test_creation_from_LSQz2Test_DerivedBivariateSpline.test_creation_from_LSQT  sx     	 	HCl55c3??GSu---AS###EBBA66666		 	r>   c                     | j         D ]P\  }}| j                            ||          } |ddd          }|                     dd||d          }||k    sJ Qd S )Ng      @Fr.  r  )rD  r@  r  rG  s         r<   test_creation_from_Smoothz5Test_DerivedBivariateSpline.test_creation_from_Smooth[  sx     	 	HCo88cBBGSu---ASSSuEEA66666		 	r>   c                     | j         D ]P\  }}| j                            ||          } |ddd          }|                     dd||d          }||k    sJ Qd S )Nr   r*   Fr.  r  )rD  rA  r  rG  s         r<   test_creation_from_Rectz3Test_DerivedBivariateSpline.test_creation_from_Rectb  sx     	 	HCm66sC@@GSu---Ac333UCCA66666		 	r>   c                     | j                             dd          }t          t                    5  |j         d d d            d S # 1 swxY w Y   d S Nr$   )rA  r  r   AttributeErrorfpr7   ders     r<   test_invalid_attribute_fpz5Test_DerivedBivariateSpline.test_invalid_attribute_fpi  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 rQ  )r@  r  r   rR  r3   rT  s     r<   #test_invalid_attribute_get_residualz?Test_DerivedBivariateSpline.test_invalid_attribute_get_residualn  s    o00A66>** 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAN)
rM   rN   rO   __doc__rm  rK  rM  rO  rV  rX  rP   r>   r<   r8  r8  ?  s{         B B B"        
    r>   r8  )r   r   r4  )2rB  	threadingr   numpyrf   numpy.testingr   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!   r  rI  r[  r  r  r  r  r8  rP   r>   r<   <module>rb     sF                 + + + + + +  * * * * * *            C 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# # # # # # # # # # # # # # # # # # # # # # : 9 9 9 9 9 ) ) ) ) ) )F7 F7 F7 F7 F7 F7 F7 F7Ra6 a6 a6 a6 a6 a6 a6 a6H~8 ~8 ~8 ~8 ~8 ~8 ~8 ~8B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r>   