
    -ii                        d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
mZmZ d dlmZmZmZmZmZmZmZ d dlmZmZmZmZ d dlmZmZmZmZmZmZm Z m!Z!m"Z" d dl#m$Z$ d dl%m&Z&m'Z' d	 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)raises)xp_assert_equalxp_assert_closeassert_almost_equalassert_array_almost_equal)arraydifflinspacemeshgridonespishape)bisplrepbisplevsplrepspalde)	UnivariateSplineLSQUnivariateSplineInterpolatedUnivariateSplineLSQBivariateSplineSmoothBivariateSplineRectBivariateSplineLSQSphereBivariateSplineSmoothSphereBivariateSplineRectSphereBivariateSpline)_run_concurrent_barrier)make_splrep	NdBSplinec                    |                                  \  }}| j        \  }}t          |          t          |          }}|                                                     ||z
  dz
  ||z
  dz
  f          }t          ||f|||f          S N   )	get_knotsdegreeslen
get_coeffsreshaper   )luttxtykxkynxnycs           k/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/scipy/interpolate/tests/test_fitpack2.pyconvert_to_ndbspliner0      s    ]]__FB[FBWWc"ggB  "r'A+rBw{!;<<Ab"Xq2r(+++    c                       e Zd Zd Zej                            dddg          d             Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestUnivariateSplinec                 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 )Nr!         r7   r7   r7   r!   kr7   g|=r!         ?r6   r   r   r"   r%   absget_residualselfxyr'   s       r/   test_linear_constantz)TestUnivariateSpline.test_linear_constant!   s    GGGGqQ'''!#--//Aq6:::!#.."2"2QF;;;3##%%&&....!##kkk"2"2III>>>>>r1   bc_typeNperiodicc                 0   g d}g d}t          ||d          }t          ||dt          |          |          }t          |j        dd         |                                d           t          |j        |                                d           d S )	Nr5   r8   r!   r9   )r:   srE   V瞯<atol)r   r   r$   r   tr"   r.   r%   )rA   rE   rB   rC   r'   spls         r/   test_linear_constant_periodicz2TestUnivariateSpline.test_linear_constant_periodic*   s    GGGGqQ'''!Q!s1vvw???adS]]__5AAAAs~~//e<<<<<<r1   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 )Nr5   r   r6      r!   r9   r6   nu)r<   r6         @)r   r   )rA   rB   rC   r'   args        r/   test_preserve_shapez(TestUnivariateSpline.test_preserve_shape4   s    IIIIq!q)))SzzU33s88__,,,,SzzU33sq>>>222222mmSzzU33s88__,,,,SzzU33sq>>>22222222r1   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 )Nr5   rQ   r!   r9   r7   r   rR   rJ   r;   )r   r!   r6   r=   r@   s       r/   test_linear_1dz#TestUnivariateSpline.test_linear_1d?   s    GGGGqQ'''!#--//1Q%888!#.."2"2Aa59993##%%&&....!##iii..99999r1   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   )rA   rB   s     r/   __call__zBTestUnivariateSpline.test_subclassing.<locals>.ZeroSpline.__call__L   s    qz!r1   N)__name__
__module____qualname__r^    r1   r/   
ZeroSpliner\   K   s#        " " " " "r1   rc   r!   r6   r7   rR      )r7   r6   r7   r6   r7   r6   r9   r<   rU           )r   r   )rA   rc   sps      r/   test_subclassingz%TestUnivariateSpline.test_subclassingH   ss    	" 	" 	" 	" 	") 	" 	" 	" Z[[[A666C:R11111r1   c                     g d}g d}t          ||d          }t           |g           t          g                      d S )Nr!   r7   re      	   r   rR   rl         r7   r9   )r   r   r   rA   rB   rC   rN   s       r/   test_empty_inputz%TestUnivariateSpline.test_empty_inputR   sL    KKMMq!q)))Br+++++r1   c                     g d}g d}t          ||d          }t          |                                d         d           d S )Nrj   rm   r7   r9   r   g7ã?)r   r   rootsrp   s       r/   
test_rootszTestUnivariateSpline.test_rootsY   sM    OOq!q)))CIIKKN,=>>>>>r1   c                     t          j        ddt           j        z  d          }t          j        |          }t	          ||d          }t          |                                          dk    sJ d S )Nr   2     rH   )npr
   r   cosr   r$   rs   rp   s       r/   test_roots_lengthz&TestUnivariateSpline.test_roots_length_   sc    K2:t,,F1IIq!q)))399;;2%%%%%%r1   c                     g d}g d}t          ||d          }t          |                    d          g d           d S )Nrj   rm   r7   r9         @)g;@gpZ<o?gOmǿg      ?)r   r   derivativesrp   s       r/   test_derivativesz%TestUnivariateSpline.test_derivativese   sb    OOq!q)))COOC00FFF	H 	H 	H 	H 	Hr1   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   r7          @r6   r   rx   )g     F@g     C@g      6@      @rJ   rK   )rH   r:   )ry   aranger   r   r   r   r~   )rA   rB   rC   tckdersrN   s         r/   test_derivatives_2z'TestUnivariateSpline.test_derivatives_2l   s    IaLLqD2ad7NQQa~~ # # # #		$ 	$ 	$ 	$
 q!qA...**"	$ 	$ 	$ 	$ 	$ 	$r1   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Ϡrf   gBϠ?g46	<?g@7?g_?g<&?      ?)r   1\_#?~a?w?5??0ms?gx?r   r   r   r   r   r   )   mBo!@u)	~@e?֭z@b@v5|@geSs@r   r   r   r   r   r   N)rB   rC   wrH   )gJdv?gc?g=?gt?皙?      ??gGz?gMb@?rK   )r   r   r   )rA   rB   rC   r   rN   desireds         r/   test_resize_regressionz+TestUnivariateSpline.test_resize_regression|   s           a1555HHHII11122G$GGGGGGr1   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 )Nre   dtyper7      d   r   rf         @rI   )rB   rC   )r   extrapolate)extgؗҜ<rK   )r!   zeros)r6   raise)r7   constgؗҬ<rR   r!   r6   )rI   unknown)rB   rC   r   )ry   r   floatr
   copy
logical_orr   r   r   assert_raises
ValueErrordictr"   r   )
rA   rB   rC   xpxp_zerosxp_clipclsrN   r   rM   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!---/ / / /	/ 	/r1   c                     t          j        d          dz  }t          j        d          dz  }t          j        ddd          }d}t          t          t
          ||||           d S )Nr   r   r   c   
   )rI   e   bbox)ry   r   r
   r   r   r   )rA   xsysknotsr   s        r/   test_lsq_fpchecz$TestUnivariateSpline.test_lsq_fpchec   sm    Ys^^b Ys^^b Ar2&&j"5r2u	! 	! 	! 	! 	! 	!r1   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   r7   rx   r6   333333?g333333?皙?)ry   r
   rz   r   antiderivative
derivativer   integral)rA   rB   rC   rN   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 	0r1   c                     g d}g d}t          ||dd          }g d}t           |                                |          t          j        |          d           d S )	Nr!   r6   rR      g      !@)r   皙??rU   re   r   r7   )r   r:   )rI   r   g      rl   g      #@r   rJ   rK   )r   r   r   ry   
zeros_like)rA   x_valuesy_valuesfrB   s        r/   test_derivative_extrapolationz2TestUnivariateSpline.test_derivative_extrapolation   sr     %$$***XxWBBB%%%q))2=+;+;%HHHHHHr1   c                     t          j        ddd          }t          d          D ]F}t          ||d|          }dD ].\  }}t	          |                    ||                    dk     sJ /Gd S )	Nrf   r   rk   rR   r   )rH   r   )r!   r!   )r!   re   )r6   re   r   r   )r   )r   rI   rJ   )ry   r
   ranger   r>   r   )rA   rB   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 	5r1   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   r7   Tcheck_finiterR   rI   rB   rC   r   )rB   rC   rM   r   )rB   rC   r   r   rB   rC   rM   r   r   )ry   r   r   	ones_liker   r"   naninfr   r   r   r   r   )rA   rB   rC   r   rN   rM   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r1   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   r7   r   r!   Tr   rR   )rB   rC   r   rH   r   r   )rB   rC   rH   r   r   )ry   r   r   r   r   r"   r   r   r   r   r   rA   xxyyrB   rC   r   rN   rM   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 	5r1   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   r7   r   r   r!   Tr   rR   r   r   )ry   r   r   r   r   r"   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===	? 	? 	? 	? 	?r1   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   rU   !x and y should have a same lengthr   r   r   rU   gffffff@r   r   r   r   r   %x, y, and w should have a same lengthrI   r   bbox shape should be (2,)r   r9   k should be 1 <= k <= 5r   rx   s should be s >= 0.0)r   r   r   strvaluerA   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   rI   r   r   r   r9   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   r7   rR   r   r   )r   r   r   r   r   r   z;Interior knots t must satisfy Schoenberg-Whitney conditionsmatch)r   r   rI   r   r   r9   r   )r   r"   r   r   r   r   r   )	rA   r   r   rN   t_valuesr   r   messager   s	            r/   ,test_invalid_input_for_lsq_univariate_splinezATestUnivariateSpline.test_invalid_input_for_lsq_univariate_splineS  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   )r   r   r   r   r   r  r   )rB   rC   r   r   r   )ry   r   r   tolistr   )rA   r   r   r   r   spl1r   s          r/   test_array_like_inputz*TestUnivariateSpline.test_array_like_inputu  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 	5r1   c                     t          d          }g d}d}t          j        t          |          5  t	          ||d           d d d            d S # 1 swxY w Y   d S )Nm   )mrf   rf   rf   rf   rf   %@rf         &@rf   rf   rf   r  rf   rf   rf   rf   rf   rf   r  rf   rf   rf   r  rf   rf   rf   r  rf   rf   rf         %@rf   rf   rf   ffffff%@rf   rf   rf   r  rf   rf   rf   rf   rf   rf   r  rf   rf   r  rf   rf   rf   333333%@rf   rf   rf   r  rf   rf   r  rf   rf   r  rf   rf   g      '@rf   rf   rf   r  rf   rf   r  rf   rf   r  rf   rf   皙%@rf   rf   rf   r  rf   rf   r  rf   rf   rf   $@rf   rf   r  rf   rf   r  rf   rf   rf   r  rf   rf   rf   r  rf   rf   rf   r  rf   z2does not satisfy the condition abs\(fp-s\)/s < tolr   r!   r9   )r   pytestwarnsUserWarningr   )rA   rB   rC   msgs       r/   test_fpknot_oob_crashz*TestUnivariateSpline.test_fpknot_oob_crash  s    #JJ; ; ; D\+S111 	( 	(QQ''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   AAAc                     t          j        dt                    }|dz  }t          j        dt                    }|d         |d<   t          ||d          }d }t	          d	|||           d S )
Nr   r   r7   r   r!   Tr   c                      ||           d S )Nrb   )_interprB   s      r/   	worker_fnz8TestUnivariateSpline.test_concurrency.<locals>.worker_fn  s    F1IIIIIr1   r   )ry   r   r   r   r   )rA   r   r   rB   rN   r  s         r/   test_concurrencyz%TestUnivariateSpline.test_concurrency  s     Ys%(((UIc'''t!r2D999	 	 	 	 IsA66666r1   )r_   r`   ra   rD   r  markparametrizerO   rW   rY   rh   rq   rt   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  rb   r1   r/   r3   r3       s       ? ? ? [Yz(:;;= = <;=	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( ( (&7 7 7 7 7r1   r3   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestLSQBivariateSplinec           
      `   g d}g d}g d}d}d|z   d|z
  g}d|z   d|z
  g}t          j        t          d          5 }t          |||||dd	          }t	          |          dk    sJ 	 d d d            n# 1 swxY w Y   t           |d
d
          t          j        d                     d S )N	r!   r!   r!   r6   r6   r6   r7   r7   r7   	r!   r6   r7   r!   r6   r7   r!   r6   r7   	r7   r7   r7   r7   r7   r7   r7   r7   r7   r   r!   r7   
The coefficients of the spliner   r*   r+   r6         @)r  r  r  r   r$   r   ry   asarray	rA   rB   rC   r   rH   r(   r)   rr'   s	            r/   rD   z+TestLSQBivariateSpline.test_linear_constant  s   c!A#Yc!A#Y\+-OPPP 	TU$Qq2bA;;;Cq66Q;;;;;	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	CC1IIrz"~~66666   ,A77A;>A;c           
         g d}g d}g d}d}d|z   d|z
  g}d|z   d|z
  g}t          j        t          d          5  t          |||||dd	          }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   rk   r   r7   rR   rk   r!   r7   rR   r   r!   r7   r%  r   r&  rI   )r   r   r   )r   皙?gffffff?)r  r  r  r   r"   zipr   )rA   rB   rC   r   rH   r(   r)   r'   xaxbyaybrM   r   ypzps                   r/   test_bilinearityz'TestLSQBivariateSpline.test_bilinearity  s<   c!A#Yc!A#Y\+-OPPP 	< 	<$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   A!!A%(A%c                 4   g d}g d}t          g d          }d}d|z   d|z
  g}d|z   d|z
  g}t          j        t          d          5 }t	          |||||dd	          }t          |          dk    sJ 	 d d d            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!   r6   r6   r6   r   r   r   r#  r-  r   r!   r7   r%  r   r&        ?rI   r   )r   r  r  r  r   r$   r"   r	   sumr   ry   r(  r   )rA   rB   rC   r   rH   r(   r)   r*  r'   tztrpzs              r/   test_integralz$TestLSQBivariateSpline.test_integral  s   %%%&&c!A#Yc!A#Y\+-OPPP 	TU$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   ,BBBc           
         g d}g d}g d}d}d|z   d|z
  g}d|z   d|z
  g}t          j        t          d          5 }t          |||||dd	          }t	          |          dk    sJ 	 d d d            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!   r7   r%  r   r&  r   Fgridr   )r  r  r  r   r$   r   ry   r   r)  s	            r/   rq   z'TestLSQBivariateSpline.test_empty_input  s7   c!A#Yc!A#Y\+-OPPP 	TU$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!   r7   r         $@r   num%x, y, and z should have a same length   r   (x, y, z, and w should have a same lengthr   w should be positiver  r   r  r   bbox shape should be (4,)r&  ;The length of x, y and z should be at least (kx+1) * (ky+1)rf   epseps should be between (0, 1))r   r   ry   r
   r   r   r   )rA   rH   r(   r)   r   rB   rC   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           
      Z   d}t          j        d|z   d|z
  g          }t          j        d|z   d|z
  g          }t          j        dd          }t          j        dd          }t          j        dd          }t          j        dd          }t          j        g d          }t          j        t
          d          5 }	t          |||||||	          }
t          |                                |                                |                                |                                |                                |                                |	          }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!   r7   r   rB  )r   rB  r   rB  r%  r   )r   r   r   r6   )
ry   r   r
   r  r  r  r   r  r   r$   )rA   rH   r(   r)   rB   rC   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...//\+-OPPP 	TU%aAr2FFFD%ahhjj!((**ahhjj&(iikk299;;!((**+/1 1 1D DDcNNDDcNN;;;q66Q;;;;;	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s    CF  F$'F$c                    t           j        ddddf         \  }}|                                }|                                }dt          j        |          z  }t          j        ddd          }t          j        ddd          }t          j        t          d	          5 }t          |||||          }t          |          d
k    sJ 	 ddd           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   r!   NFr>  )ry   mgridravelr   r
   r  r  r  r   r$   r   )rA   rB   rC   r   r(   r)   r*  r'   s           r/   test_unequal_length_of_knotsz3TestLSQBivariateSpline.test_unequal_length_of_knots.  s.    x#qu%1GGIIGGII",q//![dB''[dB''\+-OPPP 	TU$Qq2b11Cq66Q;;;;;	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	CC15111155555s   ")CCCN)
r_   r`   ra   rD   r6  r<  rq   rP  r  rW  rb   r1   r/   r   r     s        7 7 7< < <0. . .&A A A)E )E )EV  (6 6 6 6 6r1   r   c                   2    e Zd Zd Zd Z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!   r7   r7   )r7   r7   r7   r7   rJ   r;   r<   r7   )r   r"   r   r%   r>   r?   rA   rB   rC   r   r'   rM   s         r/   rD   z.TestSmoothBivariateSpline.test_linear_constant@  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Wr1   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   r6   r6   r6   rR   rR   rR   r!   r&  )r   r!   r7   r7   )r   r   rR   rR   rJ   r;   r<   r   r6   )	r   r"   r   ry   r(  r   r%   r>   r?   r[  s         r/   rY   z(TestSmoothBivariateSpline.test_linear_1dL  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Mr1   c                    g d}g d}t          g d          }t          j                    5  t          j        ddt                     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!   r6   r6   r6   rR   rR   rR   r#  r-  ignorez
The required storage spacer!   r   )r*   r+   rH   )r!   r6   rR   r5   r8  rI   r6   )decimalr   )r   warningscatch_warningsfilterwarningsr  r   r	   r9  r   ry   r(  r   )
rA   rB   rC   r   r'   r(   r)   r:  r;  lut2s
             r/   r<  z'TestSmoothBivariateSpline.test_integralW  sx   %%%&&$&& 	B 	B#8+G G G'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.1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   r6   P   rI   r!   r   )ry   r
   r   r   r   r   )
rA   rB   rC   r   xiyir   res1interp_res2s
             r/   test_rerun_lwrk2_too_smallz4TestSmoothBivariateSpline.test_rerun_lwrk2_too_smallv  s     KAr""KAr""E[Q$$[Q$$q!Qr2s##'1a00wr2D$'''''r1   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 )Nr   rB  r   rC  rE  rF  r   rG  r   rH  rI  r   rJ  r&  rK  rx   r   rf   rL  rN  )r   r   ry   r
   r   r   r   )rA   r   rB   rC   r   r   r   rO  s           r/   rP  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!   )r   r'  r   r'  r!   )r   r   r*   r+   )r   r   r*   r+   r   r   )ry   r   r   r  r   )rA   rB   rC   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7r1   N)	r_   r`   ra   rD   rY   r<  rk  rP  r  rb   r1   r/   rY  rY  ?  sx        
X 
X 
X	N 	N 	N. . .>( ( (*E *E *EX8 8 8 8 8r1   rY  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!   r   r   re   )r
   r   r   r   r   r   rV  Tlut_lsqdatanew_lonsnew_lats)rA   nthetanphithetaphiru  knotstknotspknotdatalatslonsrt  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}}}r1   c                     t          | j                                                  dk     sJ t          |                     | j        | j                  | j                   d S )NrJ   )r>   rt  r?   r   rw  rv  ru  rA   s    r/   rD   z1TestLSQSphereBivariateSpline.test_linear_constant  s^    4<,,..//%7777!$,,t}dm"L"L"&)	- 	- 	- 	- 	-r1   c                     t          |                     g g           t          j        d                     t          |                     g g d          t          j        d                     d S Nr   Fr>  r@  )r   rt  ry   r   r  s    r/   rq   z-TestLSQSphereBivariateSpline.test_empty_input  sX    !$,,r2"6"6HHH!$,,r2E,"B"BBHTNNSSSSSr1   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 )Nrq  r   r!   r   r   re   皙r   rC  theta should be between [0, pi]r   皙?phi should be between [0, 2pi]rf   ztt should be between (0, pi)ztp should be between (0, 2pi)r6   	r   r   r<   r   r   r<   r   r   r   r   rH  rL  rN  )r
   r   r   r   r   r   r   r   rV  rs  r   r   ry   r   r   )rA   rx  ry  rz  r{  ru  r|  r}  rO  invalid_thetainvalid_latsr  invalid_phir  invalid_lonsinvalid_knotstinvalid_knotsp	invalid_ws                     r/   rP  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 )	Nrq  r   r!   r   r   re   r   r   )
r
   r   r   r   r   rV  r   rs  r  r   )rA   rx  ry  rz  r{  r  r  ru  r|  r}  r   r  r   s                r/   r  z2TestLSQSphereBivariateSpline.test_array_like_input0  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Ar1   Nr_   r`   ra   r  rD   rq   rP  r  rb   r1   r/   ro  ro    sn        6 6 6$- - -
T T TRE RE REhB B B B Br1   ro  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 )Nr8  r         ?r<   r$      _Brx   )r   r   r   r'   )rA   rz  r{  r*  s       r/   r  z,TestSmoothSphereBivariateSpline.setup_methodJ  s    s2vs2vs2vr"ubeRUCF2vs2v' ( (R"Wb#(BGRr27B2X    ---...uc1EEEr1   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 )NrJ   r;   r!   r<   r7   )r>   r'   r?   r   r  s    r/   rD   z4TestSmoothSphereBivariateSpline.test_linear_constantR  ss    48((**++e3333!$((;;;3x"@"@$%q6Aq6Aq6":	< 	< 	< 	< 	<r1   c                     t          |                     g g           t          j        d                     t          |                     g g d          t          j        d                     d S r  )r   r'   ry   r   r  s    r/   rq   z0TestSmoothSphereBivariateSpline.test_empty_inputW  sX    !$((2r"2"2BHUOODDD!$((2r(">">OOOOOr1   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 )Nr8  r   r  r<   r$  r  r  rx   r  r  r  r   g @r  r   rH   rH  r   s should be positiverL  rN  )r   r   r   r   r   r   r   )rA   rz  r{  r*  rO  r  r  r  s           r/   rP  z2TestSmoothSphereBivariateSpline.test_invalid_input[  s   sRxr38R"Wb2grBwRxr385 6 6R"Wb#(BGRr27B2X    ---..:&& 	G(!4"9cBhb"r'#%7BGS2XsRx#&8#- . .M (sAFFFF		G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G
 1C4G4GGGGG:&& 	G(!38S2XsRxb#%7BGS2XsRx#&8#- . .M (sAFFFF		G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G
 1C4G4GGGGG:&& 	G(r2sRxb"cBh!#b"cBh!8 9 9K'{AFFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 03x~3F3FFFFF:&& 	G(r2sRxb"cBh!#b"cBh!8 9 9K'{AFFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 03x~3F3FFFFF:&& 	L(LLLMMI'sAdKKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L &X^)<)<<<<<:&& 	?('sA>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?%X^)<)<<<<<:&& 	A('sA4@@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A-X^1D1DDDDD:&& 	@('sA3????	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@-X^1D1DDDDDDDs   A4EE!$E!A4HHHA+KK	K9A+M00M47M4'&OO OP00P47P4'RRR>SS"%S"c                    t          j        dt          z  dt          z  dt          z  dt          z  dt          z  dt          z  dt          z  dt          z  dt          z  g	          }t          j        dt          z  t          dt          z  dt          z  t          dt          z  dt          z  t          dt          z  g	          }t          j        g d          }t          j        g d          }t          ||||d          }t          |                                |                                |                                |                                d          }t           |d	d	           |d	d	                     d S )
Nr8  r   r  r<   r$  )	r   r   r   r   r   r   r   r   r   r  r  r   )ry   r   r   r   r  r   )rA   rz  r{  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Ar1   Nr  rb   r1   r/   r  r  I  sn        F F F< < <
P P P0E 0E 0EdB B B B Br1   r  c                      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ej                                        ej                            dddg          ej                            dg d          d                                     Zej                                        ej                            ej        dk    d          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 )Nrd   r!   r6   r!   r6   r!   r!   r6   r7   r6   r!   r!   r6   r6   r6   r!   r   r   r   rA   rB   rC   r   r'   s        r/   test_defaultsz%TestRectBivariateSpline.test_defaults  s    ++++++;;;{{{;;;{{{;;;OPP!!Aa((!##a((1-----r1   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 )Nrd   r  r  r  )r!   ffffff@g333333@r   ffffff
@333333?r7   )r!   r  r  r   g      @r   r7   c                 :    g | ]\  }} ||          d          S r   rb   .0r   r4  r'   s      r/   
<listcomp>z9TestRectBivariateSpline.test_evaluate.<locals>.<listcomp>  ,    @@@&"bSSR[[%@@@r1   )r   r   evr/  r   )	rA   rB   rC   r   rf  rg  zizi2r'   s	           @r/   test_evaluatez%TestRectBivariateSpline.test_evaluate  s    ++++++;;;{{{;;;{{{;;;OPP!!Aa((,,,,,,VVB^^@@@@CBKK@@@AAB$$$$$r1   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 )Nrd   r  r  r  r   r   ir   r   r   r   r   r   r   r   r   rR   r   r   r   r   ir   r   r   rR   rI   r   r!   r   r<   r   g      r   r6   r8  r         пr   (   ir      iig     @0@r   g     @0   r   re   r   r      g     +r   g     +@ir!   dxdy)r  r  r  rA   rB   rC   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:::::r1   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 )Nrd   r  r  r  r   r   gUUUUUU?r   r   rR   rI   r   r  r     A   r   7             8@r!   F)r  r?  )r  r?  r  r  r?  r  r  s           r/   r   z(TestRectBivariateSpline.test_derivatives  s   ++++++;;;{{{;;;{{{;;;OPP>>>""###$$%%%&&s*!!Aa((!##aQE":":":2>>>!##aQE":":":2>>>!##aQ!"?"?"?EEEEEr1   c                 D    t          j        fd|D                       S )a  
        Create an array of (xi, yi) pairs for all xi in x and yi in y,
        and reshape it to the desired shape.

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

        Returns
        -------
        np.ndarray
            Reshaped array of (x, y) pairs.
        c                 "    g | ]}D ]}||gS rb   rb   )r  rf  rg  rC   s      r/   r  z:TestRectBivariateSpline.make_pair_grid.<locals>.<listcomp>  s*    :::b::""b::::r1   )ry   r   )rA   rB   rC   s     `r/   make_pair_gridz&TestRectBivariateSpline.make_pair_grid  s*    & x::::A:::;;;r1   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g|fddg|fddg|ffD ]\  }	}
  |j        |	 ||          } |                    |	          |                     ||                                        |
j                  }t          ||
           t          ||
           d S )Nrd   r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r!   r   )	r   r   r0   partial_derivativer   r  r&   r   r   )rA   rB   rC   r   r  r  r  r'   lut_ndbsplineordersexpectedactual_rect
actual_ndbs                r/   #test_partial_derivative_method_gridz;TestRectBivariateSpline.test_partial_derivative_method_grid  s   ///""///""???"??"??"??"??	$ % %
 %%%$$$#OO%%%#OO	% & & )+	+
 %%%%%%((()))%%%	' ( (
 +++111'''111'''	) * * -/	/
 "!Q**,S11#$a&"A|q!fd^ L 	< 	<FH90#0&9!Q??K911&99##Aq)) ghn%%  &k8<<<%j(;;;;	< 	<r1   c                    t          g d          }t          g d          }t          g dg dg dg dg dg          }t          g d          t          g d          t          g d          dz  d	}t          |||          }t          |          }|                     ||          }t	          j        t          |                    }||t          |          z  |z            }	|                                D ]l\  }
}|
\  }} |                    ||          ||d
          }t          ||            |
                    ||g          |	          }t          ||           md S )Nrd   r  r  r  r  r  r  r  ))r!   r   )r   r!   r   Fr>  )r   r   r0   r  ry   r   r$   itemsr  r   r   )rA   rB   rC   r   r  r'   r  pointsdiag_idxdiag_pointsr  expected_valsr  r  
actual_rbsr  s                   r/   test_partial_derivative_methodz6TestRectBivariateSpline.test_partial_derivative_method  s   ///""///""???"??"??"??"??	$ % % ,,,--...//...//#5
 
 "!Q**,S11$$Q** 9SVV$$XA.9:%-^^%5%5 	A 	A!FMFB7//B7715IIIJ%j-@@@ <112r(;;KHHJ%j-@@@@	A 	Ar1   c                    t          g dt                    }|                                }t          |j        |j        f          }t          |||          }t          |          }t          t                    5  |	                    dd           d d d            n# 1 swxY w Y   |
                    ddg          j        dk                                    sJ d S )N)r   r!   r6   r7   rR   r   rR   r!   rf   )r   r   r   r   sizer   r0   r   r   r  r   r.   all)rA   rB   rC   r   r'   r  s         r/   'test_partial_derivative_order_too_largez?TestRectBivariateSpline.test_partial_derivative_order_too_large&  s   //////FFHH!&!&!""!!Q**,S11:&& 	) 	)""1a(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) ((!Q002c9>>@@@@@@@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 )Nrd   r  r  r  Fr>  )r   r   r   r  s        r/   test_broadcastz&TestRectBivariateSpline.test_broadcast1  s    ++++++;;;{{{;;;{{{;;;OPP!!Aa((Aq		33q4y!DF)%#H#H#HIIIIIr1   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   r6   r7   rR   re   rd   r  r  r  x must be strictly increasing)r6   r6   r7   rR   re   y must be strictly increasingz7x dimension of z must have same number of elements as x)r!   r6   r!   r6   )r!   r6   r7   r6   )r!   r6   r6   r6   z7y dimension of z must have same number of elements as yrI  r   rJ  r   rx   r   )r   r   r   r   r   r   )rA   r   rB   rC   r   r   s         r/   rP  z*TestRectBivariateSpline.test_invalid_input8  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 )Nrd   r  r  r  )r!   re   r!   re   r   r   )r   r   r  r   )rA   rB   rC   r   r   r  r   s          r/   r  z-TestRectBivariateSpline.test_array_like_inputi  s    ///""///""???OOO___"??OOO5 6 6\\\"""1a666"188::qxxzz188::(,7 7 7!$$sC..$$sC..AAAAAr1   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 )NrF  r   r6   r}   rx   r   r7   MbP?r  r  )ry   randomuniformr   r   r   r   r   r   r   r   r   )rA   NSampThetaPhiDataInterpolatorNLonNLatGridPosLatsGridPosLonsnonGridPosLatsrO  nonGridPosLonss                r/   test_not_increasing_inputz1TestRectBivariateSpline.test_not_increasing_inputu  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c                    t           j                            d          }t          j        |          }t          j        |          }|                    dd||f          }|||                    t           j                  fS )Nr!   r   r   )ry   r  default_rngr   integersastypefloat64)rA   r,   r-   rngrB   rC   r   s          r/   _sample_large_2d_dataz-TestRectBivariateSpline._sample_large_2d_data  se    i##A&&IbMMIbMMLLC"b**!QXXbj))))r1   r   )^  iR  )i     s_tols))r   -q=gHz>)r!   gy&1|?-C6?)r7   {Gz?r  c                    |\  }}|\  }}}|                      ||          \  }}	}
t          ||	|
|          } |||	          }t          j        |                                          rJ t          ||
||           d S )Nrx   rL   rtolr  r   ry   isnananyr   )rA   r   r  r,   r-   rH   rL   r  rB   rC   r   rN   z_spls                r/   test_spline_large_2dz,TestRectBivariateSpline.test_spline_large_2d  s     B4,,R441a!!QQ///Aq		8E??&&(()))qt$777777r1   l        z2Segfaults on 32-bit system due to large input data)reasonc                    d\  }}d\  }}}|                      ||          \  }}}t          ||||d          }	 |	||          }
t          j        |
                                          rJ t          |
|||           d S )N)rw   i  )r6   r  r  r  )rH   maxitr  r  )rA   r,   r-   rH   rL   r  rB   rC   r   rN   r  s              r/   test_spline_large_2d_maxitz2TestRectBivariateSpline.test_spline_large_2d_maxit  s    
 B&4,,R441a!!QQb999Aq		8E??&&(()))qt$777777r1   N)r_   r`   ra   r  r  r  r   r  r  r  r  r  rP  r  r  r  r  r  slowr  r  skipifsysmaxsizer   rb   r1   r/   r  r    s       . . .% % %; ; ;
F 
F 
F< < <* <  <  <DA A AB	A 	A 	AJ J J/9 /9 /9b
B 
B 
BF F F:* * * [[Wz;&?@@[X (9 (9 (9 : :	8 	8: : A@ 
	8 [[u, 6O P P	8 	8P P 	8 	8 	8r1   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?r6   rk   r!   r6   r!   r6   r!   r6   r!   r!   r6   r7   r6   r!   r6   r!   r!   r6   r6   r6   r!   r6   r!   )r
   r   r   r   r   rA   rC   rB   r   r'   s        r/   r  z+TestRectSphereBivariateSpline.test_defaults  s    T1R49a((T2d7A&&?????????"????????"??$ % % (!A..!##a((1-----r1   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)  r6   rk   r*  r+  r,  )r   r!   r  g@r'  gQ@g      @)r<   r.  r  g?gjt?r   r  c                 :    g | ]\  }} ||          d          S r  rb   r  s      r/   r  z?TestRectSphereBivariateSpline.test_evaluate.<locals>.<listcomp>  r  r1   )r
   r   r   r   r  r/  r   )	rA   rC   rB   r   rg  rf  r  r  r'   s	           @r/   r  z+TestRectSphereBivariateSpline.test_evaluate  s    T1R49a((T2d7A&&?????????"????????"??$ % % (!A..111666VVB^^@@@@CBKK@@@AAB$$$$$r1   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@rf        u@rl   rI   r  r   r  u should be between (0, pi)r      K v[0] should be between [-pi, pi)h  "v[-1] should be v[0] + 2pi or lessrx   r  ry   dot
atleast_2dr
   rs  r>   r   r   r   r   r   r   rA   ru  rO  r  r  s        r/   rP  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)  r6   rk   r*  r+  r,  r  r!   )dthetar  r  r  rL   )dphir  )rD  rF  ư>r  r  rM  r  r   FrD  r?  r>  rF  r?  rD  rF  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r1   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)  r6   rk   r*  r+  r,  r  r!   FrI  c                       | |d          S NFr>  rb   rB   rC   r'   s     r/   <lambda>z@TestRectSphereBivariateSpline.test_derivatives.<locals>.<lambda>"      AaU0C0C0C r1   r  r  rE  rJ  c                       | |d          S rO  rb   rP  s     r/   rQ  z@TestRectSphereBivariateSpline.test_derivatives.<locals>.<lambda>%  rR  r1   r  rK  c                       | |d          S rO  rb   rP  s     r/   rQ  z@TestRectSphereBivariateSpline.test_derivatives.<locals>.<lambda>(  rR  r1   rG  rH  r  )r
   r   r   r   r   r   rL  r-  s       @r/   r   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$@ @ @!	. 	. 	. 	. 	. 	.r1   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 )Nr1  r2  r3  r4  r5  rf   r6  rl   r   r  r  r7  r      r9  r:  r;  r<  r=  rI   rx   r  r>  rA  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^)<)<<<<<<<rB  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   )rA   rC   rB   r   r  r   s         r/   r  z3TestRectSphereBivariateSpline.test_array_like_inputN  s    T1r6D=!,,T29a(((((*?*?*?((((((*?*?*?((((((	* + + )Aq11(QXXZZLL!$$q!**dd1ajj99999r1   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)ry   r   r   radiansr   r   )rA   r  r  meshru  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3r1   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   )rl   rl   ))TT)TF)FFr   )rH   pole_continuity)ry   r   r   r   r   )rA   uvr*  ps        r/   test_pole_continuity_gh_14591z;TestRectSphereBivariateSpline.test_pole_continuity_gh_14591k  s     Iaru$r)Iaru$r)HV> 	G 	GA%aAAFFFFF	G 	Gr1   N)r_   r`   ra   r  r  rP  r  r   rW  r  rg  rm  rb   r1   r/   r&  r&    s        . . .% % % =  =  =D K  K  KD. . .0 =  =  =D: : :4 4 4G G G G Gr1   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!   r6   zinvalid derivative order)r   )funcrB   rC   r  r  rM  s         r/   rL  rL  z  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4r1   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          j        t          d          5  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!      r7   r%  r   r   g     3@rR   r<   g     4@r)  rL  r   rF  r   c                 :    g | ]}t          j        |          S rb   )ry   roll)r  ir   s     r/   r  z<Test_DerivedBivariateSpline.setup_method.<locals>.<listcomp>  s#    999aBGAqMM999r1   )ry   concatenatelistr/  r   r
   r  r  r  r   rt  r   
lut_smoothr   r  r   lut_rect	itertoolsproductr  )rA   rB   rC   r   r   zzr   s         @r/   r  z(Test_DerivedBivariateSpline.setup_method  s   N4E"IIuRyy 9 9::;;N4E"IIuQ|| < <==>>NBK1b112;q!R3H3HIJJ\+-OPPP 	8 	8-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   .9D33D7:D7c                     | j         D ]P\  }}| j                            ||          } |ddd          }|                     dd||d          }||k    sJ Qd S )Nr}   Fr>  r  )r  rt  r  rA   nuxnuylut_derr   r   s         r/   test_creation_from_LSQz2Test_DerivedBivariateSpline.test_creation_from_LSQ  sx     	 	HCl55c3??GSu---AS###EBBA66666		 	r1   c                     | j         D ]P\  }}| j                            ||          } |ddd          }|                     dd||d          }||k    sJ Qd S )Ng      @Fr>  r  )r  rz  r  r  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		 	r1   c                 d   | j         D ]\  }}| j                            ||          }t          | j                  }|                    ||f          } |ddd          } |dg          }|                     dd||d          } |dg||f          }	||k    sJ t          ||	           d S )Nr   r<   Fr>  )r   r<   r  rS   )r  r{  r  r0   r   r   )
rA   r  r  r  lut_ndsplinelut_der_ndbspliner   a_ndbspliner   b_ndbsplines
             r/   test_creation_from_Rectz3Test_DerivedBivariateSpline.test_creation_from_Rect  s     		: 		:HCm66sC@@G/>>L , 7 7c
 C CSu---A++ZL99Kc333UCCA&,
|c
CCCK6666[9999		: 		:r1   c                 \   | j                             dd          }t          | j                   }|                    d          }t	          t
                    5  |j         d d d            n# 1 swxY w Y   t	          t
                    5  |j         d d d            d S # 1 swxY w Y   d S )Nr!   r   )r{  r  r0   r   r   AttributeErrorfp)rA   derr  der_ndbsplines       r/   test_invalid_attribute_fpz5Test_DerivedBivariateSpline.test_invalid_attribute_fp  s    m..q!44+DM::$//77>** 	 	FF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	>** 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   A--A14A1B!!B%(B%c                     | j                             dd          }t          t                    5  |                                 d d d            d S # 1 swxY w Y   d S r    )rz  r  r   r  r?   )rA   r  s     r/   #test_invalid_attribute_get_residualz?Test_DerivedBivariateSpline.test_invalid_attribute_get_residual  s    o00A66>** 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAN)
r_   r`   ra   __doc__r  r  r  r  r  r  rb   r1   r/   rr  rr    s{         B B B     
: 
: 
:      r1   rr  )r   r   rn  )2r|  r#  r`  numpyry   r  r   r   scipy._lib._array_apir   r   r   r   r   r	   r
   r   r   r   r   scipy.interpolate._fitpack_pyr   r   r   r   scipy.interpolate._fitpack2r   r   r   r   r   r   r   r   r   scipy._lib._testutilsr   scipy.interpolater   r   r0   r3   r   rY  ro  r  r  r&  rL  rr  rb   r1   r/   <module>r     sA       



       * * * * * *            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 4 4 4 4 4 4 4 4, , ,C7 C7 C7 C7 C7 C7 C7 C7LV6 V6 V6 V6 V6 V6 V6 V6r~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X8 X8 X8 X8 X8 X8 X8 X8v~G ~G ~G ~G ~G ~G ~G ~GB5 5 5 5: : : : : : : : : :r1   