
    bi                        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      Z1y)    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                         \  }}| j                  \  }}t        |      t        |      }}| j                         j	                  ||z
  dz
  ||z
  dz
  f      }t        ||f|||f      S N   )	get_knotsdegreeslen
get_coeffsreshaper   )luttxtykxkynxnycs           `/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/scipy/interpolate/tests/test_fitpack2.pyconvert_to_ndbspliner0      sr    ]]_FB[[FBWc"gB  "r'A+rBw{!;<Ab"Xq2r(++    c                       e Zd Zd Zej
                  j                  dddg      d        Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestUnivariateSplinec                    g d}g d}t        ||d      }t        |j                         ddg       t        |j                         ddg       t	        |j                               dk  sJ t         |g d      g d       y )Nr!         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!   sn    qQ'!#--/Aq6:!#.."2QF;3##%&...!#k"2I>r1   bc_typeNperiodicc                     g d}g d}t        ||d      }t        ||dt        |      |      }t        |j                  dd |j                         d       t        |j                  |j                         d       y )	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*   sc    qQ'!Q!s1vw?aS]]_5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 y )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    q!q)SzU3s8_,,,SzU3sq>2222SzU3s8_,,,SzU3sq>2222r1   c                    g d}g d}t        ||d      }t        |j                         ddg       t        |j                         ddg       t	        |j                               dk  sJ t         |g d	      g d
       y )Nr5   rQ   r!   r9   r7   r   rR   rJ   r;   )r   r!   r6   r=   r@   s       r/   test_linear_1dz#TestUnivariateSpline.test_linear_1d?   sm    qQ'!#--/1Q%8!#.."2Aa593##%&...!#i.9r1   c                 l     G d dt               } |g dg dd      }t         |ddg      d	d	g       y )
Nc                       e Zd Zd Zy)9TestUnivariateSpline.test_subclassing.<locals>.ZeroSplinec                     dt        |      z  S )Nr   )r   )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   s5    	") 	" [A6C:R1r1   c                 f    g d}g d}t        ||d      }t         |g       t        g              y )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   s,    q!q)Br+r1   c                 j    g d}g d}t        ||d      }t        |j                         d   d       y )Nrj   rm   r7   r9   r   g7ã?)r   r   rootsrp   s       r/   
test_rootszTestUnivariateSpline.test_rootsY   s/    q!q)CIIKN,=>r1   c                     t        j                  ddt         j                  z  d      }t        j                  |      }t	        ||d      }t        |j                               dk(  sJ y )Nr   2     rH   )npr
   r   cosr   r$   rs   rp   s       r/   test_roots_lengthz&TestUnivariateSpline.test_roots_length_   sP    KK2:t,FF1Iq!q)399;2%%%r1   c                 j    g d}g d}t        ||d      }t        |j                  d      g d       y )Nrj   rm   r7   r9         @)g;@gpZ<o?gOmǿg      ?)r   r   derivativesrp   s       r/   test_derivativesz%TestUnivariateSpline.test_derivativese   s1    q!q)COOC0F	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	        |j                  d      |d	       y )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|    IIaLqD2ad7NQQa~ # #		$
 q!qA.*"	$r1   c                     g d}g d}g d}t        |||d      }t        g d      }t         |g d      |d	       y)
zRegression test for #1375.)      g<&g_g@7ѿg46	<ƿgBϠ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|   sF     a15HI12G$Gr1   c           
         t        j                  dt              }|dz  }t        ddd      }|j	                         }d|t        j
                  |dk  |d	kD        <   |j	                         }|d   |||d   k  <   |d
   |||d
   kD  <   t        t        fD ]  } |||      }dD ];  }t         |||      |dz  d       t          ||||      |      |dz  d       = dD ];  }t         |||      |dz  d       t          ||||      |      |dz  d       = dD ]  }t        t        ||fi t        |         dD ];  }t         |||      |dz  d       t          ||||      |      |dz  d       =  j                         dd }	t        |||	      }t         ||d      |dz  d       t         ||d      |dz  d       t        t        ||fi t        d       t         ||d      |dz  d       dD ]K  }t        ||      }t        t        ||fi t        |       t        t        t        fi t        |||       M y )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   sx   IIau%qDb"c"779@Ax"}hm<='')"#A$!A$#$R5!B% $&BC 	PCQ-C) KBC 0"a%eD 2Aqc 22 6AEJK $ QBC 0(A+EJ 2Aqc 22 6!%PQ $ Dj#rCTc]CD# PBC 0'1*5I 2Aqc 22 6
OP	P MMOAa !!Q*BAAE:BA!%@j#r9Ta[9BA
? # 	/C"1a(C*c2?#?*&6 /Q!-/	/r1   c                     t        j                  d      dz  }t        j                  d      dz  }t        j                  ddd      }d}t        t        t
        ||||       y )Nr   r   r   c   
   )rI   e   bbox)ry   r   r
   r   r   r   )rA   xsysknotsr   s        r/   test_lsq_fpchecz$TestUnivariateSpline.test_lsq_fpchec   sS    YYs^b YYs^b Ar2&j"5r2u	!r1   c                 f   t        j                  ddd      dz  }t        j                  |      }t        ||d      }|j	                  d      j                  d      }t         |d       |d             |j	                  d      }t         |d       |d	      z
  |j                  d	d             y )
Nr   r!   F   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    KK1b!1$FF1Iq!q)!!!$//2C$s),!!!$S	DI-S#.	0r1   c                     g d}g d}t        ||dd      }g d}t         |j                         |      t        j                  |      d       y )	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   sE     %*XxWB%q)2==+;%Hr1   c                     t        j                  ddd      }t        d      D ];  }t        ||d|      }dD ]%  \  }}t	        |j                  ||            dk  r%J  = y )	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   sl     KKB"8 	5C A4A6 5A1::a+,u4445	5r1   c                    t        j                  dt              }|dz  }t        j                  |      }t	        ||d      }|j                         dd }|d   }t         j                  t         j                  t         j                   fD ]  }||d<   t        t        t        fi t        ||d       t        t        t        fi t        ||d       t        t        t        fi t        |||d	       ||d<   ||d<   t        t        t        fi t        |||d
       t        t        t        fi t        |||d
       t        t        t        fi t        ||||d        y )Nr   r   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   sR   IIb&qDLLOq!$7MMOAa "&&"&&266'* 	CAAbE*&6 9Q!$79*&B 9Q!$79*&9 >Q!qt<>AbEAbE*&6 >Q!qt<>*&B >Q!qt<>*&9 CQ!qADAC	Cr1   c           
         t        j                  dt              }|dz  }t        j                  dt              }|d   |d<   |dz  }t        j                  |      }t	        ||d      }|j                         dd }t	        |||dd	       t        ||||d
       t        t        t        fi t        ||dd       t        t        t        fi t        ||d       y )Nr   r   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    
 YYr'UIIb&t!qDLLOr2D9MMOAa 1Q!$?a1QTBj"2 	:a148	:j"> 	5ad3	5r1   c                    t        j                  dt              }|dz  }t        j                  dt              }|d   dz
  |d<   |dz  }t        j                  |      }t	        ||d      }|j                         dd	 }t        t        t        fi t        ||d
       t        t        t        fi t        ||d
       t        t        t        fi t        ||||d       y )Nr   r   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    YYr'UIIb&tcz!qDLLOr2D9MMOAa j"2 	5ad3	5j"> 	5ad3	5j"5 	?a1=	?r1   c                    t        t              5 }g d}g d}t        ||       d d d        dt        j                        v sJ t        t              5 }g d}g d}g d}t        |||       d d d        dt        |j                        v sJ t        t              5 }d}t        |	       d d d        d
t        |j                        v sJ t        t              5 }t        d       d d d        dt        |j                        v sJ t        t              5 }t        d       d d d        dt        |j                        v sJ y # 1 sw Y   .xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   TxY w)Nr   r   r   r   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  si   :& 	1$(H+HXx0	1 3c$**oEEE:& 	=$(H0H,HXx8<		=
 7#djj/III:& 	<$DXxd;	< +c$**o===:& 	6$Xx15	6(C

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

O;;;)	= 	=	I 	I	H 	H
	B 	Bs/   DD D*!D6DD'*D36D?c                 R   g d}g d}t        ||d      }|j                         dd }t        t              5 }g d}g d}t	        |||       d d d        dt        j                        v sJ t        t              5 }g d}g d}g d	}t	        ||||
       d d d        dt        |j                        v sJ d}t        t        |      5 }d}t	        ||||       d d d        t        t              5 }d}t	        ||||       d d d        dt        |j                        v sJ t        t              5 }t	        |||d       d d d        dt        |j                        v sJ y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   TxY w)Nr   r   Tr   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==?1Q':& 	>$(H+H(H=	> 3c$**oEEE:& 	J$(H0H+H(HI		J
 7#djj/IIIO:W5 	ID(H4H	I :& 	I$D(H4H	I +c$**o===:& 	C$(HB	C(C

O;;;3	> 	>	J 	J	I 	I	I 	I
	C 	Cs;   E,?E9F8F:F,E69FFFF&c                    t        j                  g d      }t        j                  g d      }t        j                  g d      }t        j                  ddg      }t        ||||      }t        |j                         |j                         |j                         |j                               }t	         |g d       |g d             y )Nr   r   )r   r   r   r   r   r  r   )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    88-.88568856xxs$(h(%)+  (//"3x7H"*//"3$++-I 	2323	5r1   c                     t        d      }g d}d}t        j                  t        |      5  t	        ||d       d d d        y # 1 sw Y   y xY w)Nm   )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  sI    #J; D\\+S1 	(QQ'	( 	( 	(s   AAc                     t        j                  dt              }|dz  }t        j                  dt              }|d   |d<   t        ||d      }d }t	        d	|||       y )
Nr   r   r7   r   r!   Tr   c                      ||       y )Nrb   )_interprB   s      r/   	worker_fnz8TestUnivariateSpline.test_concurrency.<locals>.worker_fn  s	    1Ir1   r   )ry   r   r   r   r   )rA   r   r   rB   rN   r  s         r/   test_concurrencyz%TestUnivariateSpline.test_concurrency  s]     YYs%(UIIc't!r2D9	 	 IsA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:2,?&H$ H '/R!0I5C45*?$98<0 <D5(&7r1   r3   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestLSQBivariateSplinec           
      :   g d}g d}g d}d}d|z   d|z
  g}d|z   d|z
  g}t        j                  t        d      5 }t        |||||dd	      }t	        |      dk(  sJ 	 d d d        t         d
d
      t        j                  d             y # 1 sw Y   0xY w)N	r!   r!   r!   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 	TU$Qq2bA;Cq6Q;;	 	C1Irzz"~6		 	s   #BBc           
      l   g d}g d}g d}d}d|z   d|z
  g}d|z   d|z
  g}t        j                  t        d      5  t        |||||dd	      }d d d        j	                         \  }}t        |d d
 |dd        D ]  \  }}	t        |d d
 |dd        D ]  \  }
}dD ]  }dD ]}  }|d|z
  z  |	|z  z   }|
d|z
  z  ||z  z   } |||
      d|z
  z  d|z
  z   ||	|
      |z  d|z
  z  z    |||      d|z
  z  |z  z    ||	|      |z  |z  z   }t         |||      |           y # 1 sw Y   xY w)Nr"  r#  	r   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 	<$Qq2bA;C	< B"Sb'2ab6* 
	<FBb"gr!"v. 	<B( <A, <1X1_1X1_ #BmQqS11Q37 #BAqs 34 #BQqS 1! 34 !$BAa0 ,C2J;<<	<
	<	< 	<s   D**D3c                    g d}g d}t        g d      }d}d|z   d|z
  g}d|z   d|z
  g}t        j                  t        d      5 }t	        |||||dd	      }t        |      dk(  sJ 	 d d d        j                         \  }} |||      }	d
t        |      d d d f   t        |      d d d f   z  |	d dd df   |	dd d df   z   |	d ddd f   z   |	dd dd f   z   z  j                         z  }
t        t        j                  |j                  |d   |d   |d   |d               t        j                  |
             y # 1 sw Y   xY w)N)	r!   r!   r!   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  sj   %&c!A#Yc!A#Y\\+-OP 	TU$Q1b"qACq6Q;;	 BR[DHQtV$T"Xd1f%55#2#crc'{2ab"f:-b"QRj8ABqrEBDEHSUK 	BJJs||BqE2b62a5"R&'QRJJt,	.	 	s   #EEc           
         g d}g d}g d}d}d|z   d|z
  g}d|z   d|z
  g}t        j                  t        d      5 }t        |||||dd	      }t	        |      dk(  sJ 	 d d d        t         g g       t        j                  d
             t         |g g d      t        j                  d             y # 1 sw Y   XxY w)Nr"  r#  r$  r   r!   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  s    c!A#Yc!A#Y\\+-OP 	TU$Q1b"qACq6Q;;	 	BRXXe_5B/$@	 	s   #B99Cc           
         d}d|z   d|z
  g}d|z   d|z
  g}t        t              5 }t        j                  dd      }t        j                  dd      }t        j                  ddd      }t	        |||||       d d d        dt        j                        v sJ t        t              5 }t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  ddd	      }t	        ||||||
       d d d        dt        |j                        v sJ t        t              5 }t        j                  dd      }t	        |||
       d d d        dt        |j                        v sJ t        t              5 }d}	t	        |||	       d d d        dt        |j                        v sJ t        t              5 }t	        ||dd       d d d        dt        |j                        v sJ t        t              5 }
t	        ||d       d d d        dt        
j                        v sJ t        t              5 }
t	        ||d       d d d        dt        |
j                        v sJ y # 1 sw Y   #xY w# 1 sw Y   xY w# 1 sw Y   IxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   oxY w)Nr   r!   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
 7#djj/III:& 	5$C&AC&AC&AC2.Aq!QB!4	5 :S_LLL:& 	5$D$'Aq!QB!4	5 &TZZ888:& 	;$$Dq!QBT:	; +c$**o===:& 	>$q!QB2"=	>L4:: 	  :& 	9(q!QBC8	9-X^^1DDDD:& 	9(q!QBC8	9-X^^1DDDDI	0 	0	5 	5	5 	5
	; 	;
	> 	>
	9 	9	9 	9sU   AJ*A,J((J5K"K%K'K'J%(J25J?KKK$'K0c           
          d}t        j                  d|z   d|z
  g      }t        j                  d|z   d|z
  g      }t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  g d      }t        j                  t
        d      5 }	t        |||||||	      }
t        |j                         |j                         |j                         |j                         |j                         |j                         |	      }t         |
d
d
       |d
d
             t        |	      dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr   r!   r7   r   rA  )r   rA  r   rA  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-   XXq1ua!en%XXq1ua!en%KKT"KKT"KKT"KKT"xx./\\+-OP 	TU%aAr2FD%ahhj!((*ahhj&(iik299;!((*+/1D DcNDcN;q6Q;;	 	 	s   B#E44E=c                    t         j                  ddddf   \  }}|j                         }|j                         }dt        j                  |      z  }t        j                  ddd      }t        j                  ddd      }t        j                  t        d	      5 }t        |||||      }t        |      d
k(  sJ 	 ddd       t         ||d      |       y# 1 sw Y   xY w)zkTest for the case when the input knot-location arrays in x and y are
        of different lengths.
        r   r   r'  r   g     X@   !   r%  r   r!   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     xx#qu%1GGIGGI",,q/![[dB'[[dB'\\+-OP 	TU$Qq2b1Cq6Q;;	 	C15115		 	s    CC&N)
r_   r`   ra   rD   r5  r;  rq   rO  r  rV  rb   r1   r/   r   r     s(    7<0.&A)EV(6r1   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestSmoothBivariateSplinec                 6   g d}g d}g d}t        |||dd      }|j                         D ]  }t        |g d        t        |j                         g d       t	        |j                               dk  sJ t         |g d	dd
g      ddgddgddgg       y )Nr"  r#  r$  r!   r&  )r!   r!   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 	7A%a6	7 	"#.."2LA3##%&...!#kAs8"<1v1vPQSTv>VWr1   c                 \   g d}g d}g d}t        |||dd      }|j                         D ]#  }t        |t        j                  g d             % t        |j                         g d       t        |j                               dk  sJ t         |g d	dd
g      ddgddgddgg       y )Nr"  r#  )	r   r   r   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?   rZ  s         r/   rY   z(TestSmoothBivariateSpline.test_linear_1dL  s    #AaQ!4 	;AArzz.9:	;!#.."2LA3##%&...!#i3"81Q%1qe9LMr1   c                    g d}g d}t        g d      }t        j                         5  t        j                  ddt               t        |||ddd      }d d d        g d	}g d
} ||      }dt        |      d d d f   t        |      d d d f   z  |d dd df   |dd d df   z   |d ddd f   z   |dd dd f   z   z  j                         z  }t        t        j                  |j                  |d   |d   |d   |d               t        j                  |             t        |||ddd      }	t        t        j                  |	j                  |d   |d   |d   |d               t        j                  |      d        ||d d |d d       }dt        |d d       d d d f   t        |d d       d d d f   z  |d dd df   |dd d df   z   |d ddd f   z   |dd dd f   z   z  j                         z  }t        t        j                  |j                  |d   |d   |d   |d               t        j                  |             y # 1 sw Y    xY w)N)	r!   r!   r!   r6   r6   r6   rR   rR   rR   r#  r,  ignorez
The required storage spacer!   r   )r*   r+   rH   )r!   r6   rR   r5   r7  rI   r6   )decimalr   )r   warningscatch_warningsfilterwarningsr  r   r	   r8  r   ry   r(  r   )
rA   rB   rC   r   r'   r(   r)   r9  r:  lut2s
             r/   r;  z'TestSmoothBivariateSpline.test_integralW  s}   %&$$& 	B##8+G'1aA!qAC		B R[DHQtV$T"Xd1f%55#2#crc'{2ab"f:-b"QRj8ABqrEBDEHSUKBJJs||BqE2b62a5"R&'QRJJt,	. %Q1qA>BJJt}}RUBrFBqE2b6'RSJJt,$%	' CR"Sb'"DCRM!D&)$r#2w-Q*??#2#crc'{2ab"f:-b"QRj8ABqrEBDEHSUKBJJs||BqE2b62a5"R&'QRJJt,	./	B 	Bs   -IIc                 >   t        j                  ddd      }t        j                  ddd      }||z   }t        j                  ddd      }t        j                  ddd      }t        |||      }t        |||      }t	        |||      } |||      }	t        ||	       y )Nr   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     KKAr"KKAr"E[[Q$[[Q$q!Qr2s#'1a0r2D$'r1   c                 8   t        t              5 }t        j                  dd      }t        j                  dd      }t        j                  ddd      }t	        |||       d d d        dt        j                        v sJ t        t              5 }t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  ddd      }t	        ||||       d d d        dt        |j                        v sJ t        t              5 }t        j                  d	d      }t	        |       d d d        d
t        |j                        v sJ t        t              5 }d}t	        |       d d d        dt        |j                        v sJ t        t              5 }t	        dd       d d d        dt        |j                        v sJ t        t              5 }t	        d	       d d d        dt        |j                        v sJ t        t              5 }t	        d       d d d        dt        j                        v sJ t        t              5 }t	        d       d d d        dt        |j                        v sJ y # 1 sw Y   WxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   LxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   |xY w)Nr   rA  r   rB  rD  rE  r   rF  r   rG  rH  r   rI  r&  rJ  rx   r   rf   rK  rM  )r   r   ry   r
   r   r   r   )rA   r   rB   rC   r   r   r   rN  s           r/   rO  z,TestSmoothBivariateSpline.test_invalid_input  s   :& 	+$C&AC&AC2.A!!Q*		+
 7#djj/III:& 	0$C&AC&AC&AC2.A!!QQ/	0 :S_LLL:& 	0$D$'A!!QQ/	0 &TZZ888:& 	6$$D!!Q5	6 +c$**o===:& 	9$!!QbR8	9L4:: 	  :& 	3$!!QT2	3%TZZ888:& 	4(!!Qs3	4-X^^1DDDD:& 	4(!!Qs3	4-X^^1DDDDQ	+ 	+	0 	0	0 	0
	6 	6
	9 	9
	3 	3	4 	4	4 	4sa   AJ7A*K,&KKK+K8LL7KKKK(+K58LLLc           	         t        j                  g d      }t        j                  g d      }t        j                  g d      }t        j                  g d      }t        j                  g d      }t        |||||dd      }t        |j                         |j                         |j                         |j                         |j                         dd      }t	         |d	d
       |d	d
             y )Nr"  r#  r$  )	r!   r!   r!   r!   r!   r!   r!   r!   r!   )r   r'  r   r'  r!   )r   r   r*   r+   )r   r   r*   r+   r   r   )ry   r   r   r  r   )rA   rB   rC   r   r   r   r  r   s           r/   r  z/TestSmoothBivariateSpline.test_array_like_input  s    HH01HH01HH01HH01xx,-$Q1qI$QXXZQXXZ*.++-188:()a1 	S#S#7r1   N)	r_   r`   ra   rD   rY   r;  rj  rO  r  rb   r1   r/   rX  rX  ?  s$    
X	N.>(*EX8r1   rX  c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestLSQSphereBivariateSplinec                    d\  }}t        d|dz
  z  dd|dz
  z  z
  |      t        z  }t        d|dz
  z  dd|dz
  z  z
  |      dz  t        z  }t        |j                  d   |j                  d   f      }|d d d   }|d d d   }|d d dd d df   }t	        ||      \  }	}
t        |	j                         |
j                         |j                  j                         ||      }|| _        || _	        ||c| _
        | _        y )Nr   Z   r   r!   r   r   re   )r
   r   r   r   r   r   rU  Tlut_lsqdatanew_lonsnew_lats)rA   nthetanphithetaphirt  knotstknotspknotdatalatslonsrs  s               r/   setup_methodz)TestLSQSphereBivariateSpline.setup_method  s
   fqj)1sFQJ/?+?H2MsD1H~q3q>'94@2EJU[[^SYYq\23ssSqS!SqS>eS)
d*4::<+/66<<>66K	'-v$t}r1   c                     t        | j                  j                               dk  sJ t        | j                  | j                  | j
                        | j                         y )NrJ   )r>   rs  r?   r   rv  ru  rt  rA   s    r/   rD   z1TestLSQSphereBivariateSpline.test_linear_constant  sF    4<<,,./%777!$,,t}}dmm"L"&))	-r1   c                     t        | j                  g g       t        j                  d             t        | j                  g g d      t        j                  d             y Nr   Fr=  r?  )r   rs  ry   r   r  s    r/   rq   z-TestLSQSphereBivariateSpline.test_empty_input  s@    !$,,r2"6H!$,,r2E,"BBHHTNSr1   c           	      x   d\  }}t        d|dz
  z  dd|dz
  z  z
  |      t        z  }t        d|dz
  z  dd|dz
  z  z
  |      dz  t        z  }t        |j                  d   |j                  d   f      }|d d d   }|d d d   }t	        t
              5 }t        dd|	      t        z  }	t        |	|      \  }
}t        |
j                         |j                         |j                  j                         ||       d d d        d
t        j                        v sJ t	        t
              5 }t        dd|	      t        z  }	t        |	|      \  }
}t        |
j                         |j                         |j                  j                         ||       d d d        d
t        |j                        v sJ t	        t
              5 }t        dd|	      dz  t        z  }t        ||      \  }}t        |j                         |j                         |j                  j                         ||       d d d        dt        |j                        v sJ t	        t
              5 }t        dd|	      dz  t        z  }t        ||      \  }}t        |j                         |j                         |j                  j                         ||       d d d        dt        |j                        v sJ t        ||      \  }}t	        t
              5 }t        j                  |      }d|d<   t        |j                         |j                         |j                  j                         ||       d d d        dt        |j                        v sJ t	        t
              5 }t        j                  |      }t        |d<   t        |j                         |j                         |j                  j                         ||       d d d        dt        |j                        v sJ t	        t
              5 }t        j                  |      }d|d<   t        |j                         |j                         |j                  j                         ||       d d d        dt        |j                        v sJ t	        t
              5 }t        j                  |      }dt        z  |d<   t        |j                         |j                         |j                  j                         ||       d d d        dt        |j                        v sJ t	        t
              5 }t        g d      }t        |j                         |j                         |j                  j                         |||       d d d        dt        |j                        v sJ t	        t
              5 }t        |j                         |j                         |j                  j                         ||d       d d d        dt        |j                        v sJ t	        t
              5 }t        |j                         |j                         |j                  j                         ||d       d d d        dt        |j                        v sJ y # 1 sw Y   xY w# 1 sw Y   (xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   |xY w# 1 sw Y   xY w# 1 sw Y   vxY w# 1 sw Y   xY w# 1 sw Y   xxY w# 1 sw Y   xY w# 1 sw Y   xY w)Nrp  r   r!   r   r   re   皙r   rB  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   rG  rK  rM  )r
   r   r   r   r   r   r   r   rU  rr  r   r   ry   r   r   )rA   rw  rx  ry  rz  rt  r{  r|  rN  invalid_thetainvalid_latsr  invalid_phir~  invalid_lonsinvalid_knotstinvalid_knotsp	invalid_ws                     r/   rO  z/TestLSQSphereBivariateSpline.test_invalid_input  s#   
+Q
1C-C!#%&sdQh'SD1H-=)=tDrIBNU[[^SYYq\23ssSqS:& 	E($T3F;b@M!)-!=L$$\%7%7%94::<%)VV\\^VVE	E
 1C4GGGG:& 	E($S#6:R?M!)-!=L$$\%7%7%94::<%)VV\\^VVE	E
 1C4GGGG:& 	E("4&9C?"DK!)%!=D,$TZZ\<3E3E3G%)VV\\^VVE	E
 03x~~3FFFF:& 	E("383>CK!)%!=D,$TZZ\<3E3E3G%)VV\\^VVE	E
 03x~~3FFFFeS)
d:& 	M(WWV_N $N1$TZZ\4::<%)VV\\^^VM	M
 .X^^1DDDD:& 	M(WWV_N "N1$TZZ\4::<%)VV\\^^VM	M
 .X^^1DDDD:& 	M(WWV_N $N1$TZZ\4::<%)VV\\^V^M	M
 /#hnn2EEEE:& 	M(WWV_N !BN1$TZZ\4::<%)VV\\^V^M	M
 /#hnn2EEEE:& 	B(LMI$TZZ\4::<%+VyB	B &X^^)<<<<:& 	>($TZZ\4::<%+V>	> .X^^1DDDD:& 	>($TZZ\4::<%+V>	> .X^^1DDDDQ	E 	E	E 	E	E 	E	E 	E	M 	M	M 	M	M 	M	M 	M	B 	B	> 	>
	> 	>s   A(Z.-A(Z;A+[ A+[
A["A"[/*A[<8A%\	A\A\#A\0.Z8;[[["[,/[9<\	\\ #\-0\9c           	      h   d\  }}t        d|dz
  z  dd|dz
  z  z
  |      t        z  }t        d|dz
  z  dd|dz
  z  z
  |      dz  t        z  }t        ||      \  }}t        |j                  d   |j                  d   f      }|d d d   }|d d d   }	t        |j                         j                  d         }
t        |j                         |j                         |j                  j                         ||	|
      }t        |j                         j                         |j                         j                         |j                  j                         j                         |j                         |	j                         |
j                               }t         |dd       |dd             y )	Nrp  r   r!   r   r   re   r   r   )
r
   r   r   r   r   rU  r   rr  r  r   )rA   rw  rx  ry  rz  r~  r  rt  r{  r|  r   r  r   s                r/   r  z2TestLSQSphereBivariateSpline.test_array_like_input0  s   
+Q
1C-C!#%&sdQh'SD1H-=)=!"$&'eS)
dU[[^SYYq\23ssSqS##A&' (

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

(;(;(=(,

(;(;(=(,(=(=(?(.(.188:	G
 	"$sC.$sC.Ar1   Nr_   r`   ra   r  rD   rq   rO  r  rb   r1   r/   rn  rn    s     6$-
TREhBr1   rn  c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestSmoothSphereBivariateSplinec                    t        dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  g	      }t        dt        z  t        dt        z  dt        z  t        dt        z  dt        z  t        dt        z  g	      }t        g d      }t        |||d      | _        y )Nr7  r         ?r<   r$      _Brx   )r   r   r   r'   )rA   ry  rz  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r1   c                     t        | j                  j                               dk  sJ t        | j                  g dddg      ddgddgddgg       y )NrJ   r;   r!   r<   r7   )r>   r'   r?   r   r  s    r/   rD   z4TestSmoothSphereBivariateSpline.test_linear_constantR  sQ    488((*+e333!$((;3x"@$%q6Aq6Aq6":	<r1   c                     t        | j                  g g       t        j                  d             t        | j                  g g d      t        j                  d             y r  )r   r'   ry   r   r  s    r/   rq   z0TestSmoothSphereBivariateSpline.test_empty_inputW  s@    !$((2r"2BHHUOD!$((2r(">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        d	t        j                        v sJ t        t              5 }t        dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  d
t        z  g	      }t	        |||d       d d d        d	t        |j                        v sJ t        t              5 }t        dt        z  t        dt        z  dt        z  t        dt        z  dt        z  t        dt        z  g	      }t	        |||d       d d d        dt        |j                        v sJ t        t              5 }t        dt        z  t        dt        z  dt        z  t        dt        z  dt        z  t        dt        z  g	      }t	        |||d       d d d        dt        |j                        v sJ t        t              5 }t        g d      }t	        ||||d       d d d        dt        |j                        v sJ t        t              5 }t	        |||d       d d d        dt        |j                        v sJ t        t              5 }t	        |||d       d d d        dt        |j                        v sJ t        t              5 }t	        |||d       d d d        dt        |j                        v sJ y # 1 sw Y   xY w# 1 sw Y   SxY w# 1 sw Y   xY w# 1 sw Y   YxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   |xY w)Nr7  r   r  r<   r$  r  r  rx   r  r  r  r   g @r  r   rH   rG  r   s should be positiverK  rM  )r   r   r   r   r   r   r   )rA   ry  rz  r*  rN  r  r  r  s           r/   rO  z2TestSmoothSphereBivariateSpline.test_invalid_input[  s   sRxr38R"Wb2grBwRxr385 6R"Wb#(BGRr27B2X  -.:& 	G(!4"9cBhb"r'#%7BGS2XsRx#&8#- .M (sAF		G
 1C4GGGG:& 	G(!38S2XsRxb#%7BGS2XsRx#&8#- .M (sAF		G
 1C4GGGG:& 	G(r2sRxb"cBh!#b"cBh!8 9K'{AF	G 03x~~3FFFF:& 	G(r2sRxb"cBh!#b"cBh!8 9K'{AF	G 03x~~3FFFF:& 	L(LMI'sAdK	L &X^^)<<<<:& 	?('sA>	?%X^^)<<<<:& 	A('sA4@	A-X^^1DDDD:& 	@('sA3?	@-X^^1DDDDS	G 	G	G 	G	G 	G	G 	G	L 	L
	? 	?	A 	A	@ 	@sd   :A#O4A#P AP*AP4P(P5QQ4O>PPP%(P25P>Q
Qc                    t        j                  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  g	      }t        j                  dt        z  t        dt        z  dt        z  t        dt        z  dt        z  t        dt        z  g	      }t        j                  g d      }t        j                  g d      }t        ||||d      }t        |j	                         |j	                         |j	                         |j	                         d      }t         |d	d	       |d	d	             y )
Nr7  r   r  r<   r$  )	r   r   r   r   r   r   r   r   r   r  r  r   )ry   r   r   r   r  r   )rA   ry  rz  r*  r   r  r   s          r/   r  z5TestSmoothSphereBivariateSpline.test_array_like_input  s   #(C"HcBhRbr'38S2XsRxA BhhRS2XrBwC"Hb2gC"H& 'HH01HHBC +5#qAF +5<<>3::<+,88:tM!$sC.$sC.Ar1   Nr  rb   r1   r/   r  r  I  s     F<
P0Ed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"                  j%                         ej"                  j'                  dddg      ej"                  j'                  dg d      d                      Zej"                  j%                         ej"                  j+                  ej.                  dk  d      d               Zy)TestRectBivariateSplinec                     t        g d      }t        g d      }t        g dg dg dg dg dg      }t        |||      }t         |||      |       y )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  sI    ++;{;{;OP!!Aa(!#a(1-r1   c           
      B   t        g d      }t        g d      }t        g dg dg dg dg dg      }t        |||      }g d}g d}|j                  ||      }t        t        ||      D 	cg c]  \  }}	 |||	      d    c}	}      }
t	        ||
       y c c}	}w )Nrd   r  r  r  )r!   ffffff@g333333@r   ffffff
@333333?r7   )r!   r  r  r   g      @r   r7   r   )r   r   evr.  r   )rA   rB   rC   r   r'   re  rf  zir   r3  zi2s              r/   test_evaluatez%TestRectBivariateSpline.test_evaluate  s    ++;{;{;OP!!Aa(,,VVB^CBK@&"bSR[%@AB$ As   0B
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      |       y )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   r7  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M,{+' ((*+M-0@m- .'(?1-A BBDE!!Aa(!#aQ-3!#aQ-3!#aQ!"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
      |       y )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>"#$%&s*!!Aa(!#aQE":2>!#aQE":2>!#aQ!"?Er1   c           	      j    t        j                  |D cg c]  }|D ]  }||g  c}}      S c c}}w )a  
        Create an array of (xi, yi) pairs for all xi in x and yi in y,
        and reshape it to the desired shape.

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

        Returns
        -------
        np.ndarray
            Reshaped array of (x, y) pairs.
        )ry   r   )rA   rB   rC   re  rf  s        r/   make_pair_gridz&TestRectBivariateSpline.make_pair_grid  s1    & xxA:b:""b::;;:s   /
c                 R   t        g d      }t        g d      }t        g dg dg dg dg dg      }t        g dg dg dg dg dg      d	z  }t        g d
g d
g dg dg d
g      }t        g dg dg dg dg dg      d	z  }t        |||      }t        |      }ddg|fddg|fddg|ffD ]s  \  }	}
  |j                  |	 ||      } |j	                  |	      | j                  ||            j                  |
j                        }t        ||
       t        ||
       u y )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^   /"/"?""""	$ %
 %$#%#	% & )+	+
 %%()%	' (
 +1'1'	) * -/	/
 "!Q*,S1#$a&"A|q!fd^ L 	<FH90#00&9!Q?K911&9##Aq)ghnn%  &k8<%j(;	<r1   c                 J   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        |      }| j                  ||      }t	        j
                  t        |            }||t        |      z  |z      }	|j                         D ]V  \  }
}|
\  }} |j                  ||      ||d
      }t        ||        |j                  ||g      |	      }t        ||       X y )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$$Q* 99SV$XA.9:%-^^%5 	A!FMFB7//B715IJ%j-@ <112r(;KHJ%j-@	Ar1   c                    t        g dt              }|j                         }t        |j                  |j                  f      }t        |||      }t        |      }t        t              5  |j                  dd       d d d        |j                  ddg      j                  dk(  j                         sJ y # 1 sw Y   :xY w)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    //FFH!&&!&&!"!!Q*,S1:& 	)""1a(	) ((!Q022c9>>@@@	) 	)s   ,B88Cc           
          t        g d      }t        g d      }t        g dg dg dg dg dg      }t        |||      }t         |||       ||d d d f   |d d d f   d             y )Nrd   r  r  r  Fr=  )r   r   r   r  s        r/   test_broadcastz&TestRectBivariateSpline.test_broadcast1  sb    ++;{;{;OP!!Aa(Aq	3q4y!DF)%#H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        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        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        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        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        dt	        |j
                        v sJ t        t              5 }t        d       d d d        dt	        |j
                        v sJ y # 1 sw Y   -xY w# 1 sw Y   xY w# 1 sw Y   fxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   cxY w)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 yrH  r   rI  r   rx   r   )r   r   r   r   r   r   )rA   r   rB   rC   r   r   s         r/   rO  z*TestRectBivariateSpline.test_invalid_input8  s   :& 	)$o&Ao&A&9 :A1a(	) /#djj/AAA:& 	)$o&Ao&A&9 :A1a(	) /#djj/AAA:& 	)$o&Ao&A&( )A1a(	) Idjj/" 	" " :& 	)$o&Ao&A|\<#\3 4A1a(	) Idjj/" 	" " :& 	4$o&Ao&A&9 :A$D1ad3	4 +c$**o===:& 	1$1a40	1%TZZ888[	) 	)	) 	)	) 	)	) 	)	4 	4	1 	1sK   AI=AJ
4?J#AJ$AJ1J==J
JJ!$J.1J:=Kc                 f   t        g d      }t        g d      }t        g dg dg dg dg dg      }t        g d      }t        ||||      }t        |j                         |j                         |j                         |j                               }t         |dd       |dd             y )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    /"/"?O_"O5 6\""1a6"188:qxxz188:(,7!$sC.$sC.Ar1   c                 B   d}t         j                  j                  dt         j                  |      }t         j                  j                  ddt         j                  z  |      }t        j                  |      }t        |||d      }d}d}t        j                  |      |z  t         j                  z  }t        j                  |      |z  dz  t         j                  z  }	 |||	       |j                         }
d|
d<   t        t              5 } ||
|	       d d d        d	t        j                        v sJ |	j                         }d|d<   t        t              5 } |||       d d d        d
t        |j                        v sJ y # 1 sw Y   rxY w# 1 sw Y   /xY w)NrE  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nonGridPosLatsrN  nonGridPosLonss                r/   test_not_increasing_inputz1TestRectBivariateSpline.test_not_increasing_inputu  sa   		!!!RUUE2ii1ruu9e4wwu~25#tsKiio,ruu4iio,q02558 	[+.$))+!q:& 	6(5	6.#hnn2EEEE$))+!q:& 	6(n5	6.#hnn2EEEE	6 	6	6 	6s   
F	
F	FFc                    t         j                  j                  d      }t        j                  |      }t        j                  |      }|j	                  dd||f      }|||j                  t         j                        fS )Nr!   r   r   )ry   r  default_rngr   integersastypefloat64)rA   r,   r-   rngrB   rC   r   s          r/   _sample_large_2d_dataz-TestRectBivariateSpline._sample_large_2d_data  s`    ii##A&IIbMIIbMLLC"b*!QXXbjj)))r1   r   )^  iR  )i     s_tols))r   -q=gHz>)r!   gy&1|?-C6?)r7   {Gz?r  c                     |\  }}|\  }}}| j                  ||      \  }}	}
t        ||	|
|      } |||	      }t        j                  |      j	                         rJ t        ||
||       y )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  ss     B4,,R41a!!QQ/Aq	88E?&&()(qt$7r1   l        z2Segfaults on 32-bit system due to large input data)reasonc                     d\  }}d\  }}}| j                  ||      \  }}}t        ||||d      }	 |	||      }
t        j                  |
      j	                         rJ t        |
|||       y )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  su    
 B&4,,R41a!!QQb9Aq	88E?&&()(qt$7r1   N)r_   r`   ra   r  r  r  r   r  r  r  r  r  rO  r  r  r  r  r  slowr  r  skipifsysmaxsizer  rb   r1   r/   r  r    s    .%;
F<* <DAB	AJ/9b
BF:* [[[[Wz;&?@[[X (9 :	8: A 
	8 [[[[u, 6O P	8P 	8r1   r  c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestRectSphereBivariateSplinec           
          t        ddt        z  dz
  d      }t        dt        dz
  d      }t        g dg dg dg dg dg dg dg      }t        |||      }t	         |||      |       y N{Gz?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  si    T1R49a(T2d7A&???"??"$ % (!A.!#a(1-r1   c           
      p   t        ddt        z  dz
  d      }t        dt        dz
  d      }t        g dg dg dg dg dg dg dg      }t        |||      }g d}g d}|j	                  ||      }t        t        ||      D 	cg c]  \  }}	 |||	      d	    c}	}      }
t        ||
       y c c}	}w )
Nr!  r6   rk   r"  r#  r$  )r   r!   r  g@r'  gQ@g      @)r<   r-  r  g?gjt?r   r  r   )r
   r   r   r   r  r.  r   )rA   rC   rB   r   r'   rf  re  r  r   r3  r  s              r/   r  z+TestRectSphereBivariateSpline.test_evaluate  s    T1R49a(T2d7A&???"??"$ % (!A.16VVB^CBK@&"bSR[%@AB$ As   B2
c                 t   t        j                  t        j                  dt        j                  ddd      z
        j                  t        j                  dt        j
                  t        j                  ddd            z
              j                  }t        t              5 }t        j                  d	d
d      t         j                  z  dz  }t        j                  ddd      t         j                  z  dz  }t        |||       d d d        dt        j                        v sJ t        t              5 }t        j                  ddd      t         j                  z  dz  }t        j                  ddd      t         j                  z  dz  }t        |||       d d d        dt        |j                        v sJ t        t              5 }t        j                  dd
d      t         j                  z  dz  }t        j                  ddd      t         j                  z  dz  }t        |||       d d d        dt        |j                        v sJ t        t              5 }t        j                  dd
d      t         j                  z  dz  }t        j                  ddd      t         j                  z  dz  }t        |||       d d d        dt        |j                        v sJ t        t              5 }t        j                  dd
d      t         j                  z  dz  }t        j                  ddd      t         j                  z  dz  }t        |||d	       d d d        dt        |j                        v sJ y # 1 sw Y   vxY w# 1 sw Y   xY w# 1 sw Y   hxY w# 1 sw Y   xY w# 1 sw Y   VxY w)N     V@      T      T@        f@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
   rr  r>   r   r   r   r   r   r   rA   rt  rN  r~  r  s        r/   rO  z0TestRectSphereBivariateSpline.test_invalid_input  s   vvbmmC"++dC*D$DEGGmmD266"++b$2J+K$KLNNOa 	 :& 	8(;;r3*RUU2T9D;;q#r*RUU2T9D%dD$7	8 -HNN0CCCC:& 	8(;;r3*RUU2T9D;;q#r*RUU2T9D%dD$7	8 -HNN0CCCC:& 	8(;;r3*RUU2T9D;;tR,ruu4t;D%dD$7	8 2S5HHHH:& 	8(;;r3*RUU2T9D;;sC,ruu4t;D%dD$7	8 4s8>>7JJJJ:& 	>(;;r3*RUU2T9D;;r3+bee3d:D%dD$"=	> &X^^)<<<<9	8 	8	8 	8	8 	8	8 	8	> 	>A   #A$M;7A$NA$NA$N"3A&N.;NNN"N+.N7c                    t        ddt        z  dz
  d      }t        dt        dz
  d      }t        g dg dg dg dg dg dg dg      }t        |||      }t        ddt        z  dz
  d      }t        dt        dz
  d      }t	         |||d	      t        |||d
      dd       t	         |||d      t        |||d      dd       t	         |||dd      t        |||ddd      dd       t         |||d	       |j                  dd      ||             t         |||d       |j                  dd      ||             t         |||dd       |j                  dd      ||             t         |||dd       |j                  dd      ||d             t         |||dd       |j                  dd      ||d             t         |||ddd       |j                  dd      ||d             y )Nr!  r6   rk   r"  r#  r$  r  r!   )dthetar  r  r  rL   )dphir  )r;  r=  ư>r  r  rL  r  r   Fr;  r>  r=  r=  r>  r;  r=  r>  )r
   r   r   r   r   _numdiff_2dr   r  r%  s        r/   r  z3TestRectSphereBivariateSpline.test_derivatives_grid  s   T1R49a(T2d7A&???"??"$ % (!A.T1R49a(T2d7A&Aq+[aq-I!	.Aqq);sAqQ+G!	.Aq3#CA!tD!	. 	Aq+7311!Q71=	?Aqq)7311!Q71=	?Aq37311!Q71=	? 	Aq77311!Q715I	KAqqu57311!Q715I	KAq?7311!Q715I	Kr1   c                 R   t        ddt        z  dz
  d      }t        dt        dz
  d      }t        g dg dg dg dg dg dg dg      }t        |||      t        ddt        z  dz
  d      }t        dt        dz
  d      } ||dd	
      j                  |j                  k(  sJ t         ||dd	
      t        fd||d      dd       t         ||dd	      t        fd||d      dd       t         ||ddd	      t        fd||ddd      dd       y )Nr!  r6   rk   r"  r#  r$  r  r!   Fr@  c                      | |d      S NFr=  rb   rB   rC   r'   s     r/   <lambda>z@TestRectSphereBivariateSpline.test_derivatives.<locals>.<lambda>"      AaU0C r1   r  r  r<  rA  c                      | |d      S rF  rb   rG  s     r/   rH  z@TestRectSphereBivariateSpline.test_derivatives.<locals>.<lambda>%  rI  r1   r  rB  c                      | |d      S rF  rb   rG  s     r/   rH  z@TestRectSphereBivariateSpline.test_derivatives.<locals>.<lambda>(  rI  r1   r>  r?  r  )r
   r   r   r   r   r   rC  r%  s       @r/   r   z.TestRectSphereBivariateSpline.test_derivatives  s.   T1R49a(T2d7A&???"??"$ % (!A.T1R49a(T2d7A&1a.44???Aq7#$CQaP!	. 	Aqqu5#$CQaP!	. 	Aq?#$C$%qQ1$@!	.r1   c                 t   t        j                  t        j                  dt        j                  ddd      z
        j                  t        j                  dt        j
                  t        j                  ddd            z
              j                  }t        t              5 }t        j                  d	d
d      t         j                  z  dz  }t        j                  d	dd      t         j                  z  dz  }t        |||       d d d        dt        j                        v sJ t        t              5 }t        j                  ddd      t         j                  z  dz  }t        j                  d	dd      t         j                  z  dz  }t        |||       d d d        dt        |j                        v sJ t        t              5 }t        j                  dd
d      t         j                  z  dz  }t        j                  ddd      t         j                  z  dz  }t        |||       d d d        dt        |j                        v sJ t        t              5 }t        j                  dd
d      t         j                  z  dz  }t        j                  ddd      t         j                  z  dz  }t        |||       d d d        dt        |j                        v sJ t        t              5 }t        j                  dd
d      t         j                  z  dz  }t        j                  ddd      t         j                  z  dz  }t        |||d       d d d        dt        |j                        v sJ y # 1 sw Y   vxY w# 1 sw Y   xY w# 1 sw Y   hxY w# 1 sw Y   xY w# 1 sw Y   VxY w)Nr(  r)  r*  r+  r,  rf   r-  rl   r   r  r  r.  r      r0  r1  r2  r3  r4  rI   rx   r  r5  r8  s        r/   test_invalid_input_2z2TestRectSphereBivariateSpline.test_invalid_input_2,  s   vvbmmC"++dC*D$DEGGmmD266"++b$2J+K$KLNNOa 	 :& 	8(;;q#q)BEE1D8D;;q#r*RUU2T9D%dD$7	8 -HNN0CCCC:& 	8(;;r3*RUU2T9D;;q#r*RUU2T9D%dD$7	8 -HNN0CCCC:& 	8(;;r3*RUU2T9D;;tR,ruu4t;D%dD$7	8 2S5HHHH:& 	8(;;r3*RUU2T9D;;sC,ruu4t;D%dD$7	8 4s8>>7JJJJ:& 	>(;;r3*RUU2T9D;;r3+bee3d:D%dD$"=	> &X^^)<<<<9	8 	8	8 	8	8 	8	8 	8	> 	>r9  c           
      V   t        ddt        z  dz
  d      }t        dt        dz
  d      }t        g dg dg dg dg dg dg dg      }t        |||      }t        |j	                         |j	                         |j	                               }t         |||       |||             y 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(QXXZL!$q!*d1aj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        |
|       y )N)r     #   r  -   )iiir   r   r!   rR  g     B@rT  g     `Sg     Fg=Eg     HgDioEG)ry   r   r   radiansr   r   )rA   r~  r  meshrt  lat_rlon_rinterpolator	query_lat	query_londata_interpanss               r/   test_negative_evaluationz6TestRectSphereBivariateSpline.test_negative_evaluation\  s    xx,-xx01{{4&Awa 

4 

4 0tDJJrxxT
34	JJrxxe56	"9i8hh
+!9-/ 0!+s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|        y )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  so     IIaruu$r)IIaruu$r)HHV> 	GA%aAAF	Gr1   N)r_   r`   ra   r  r  rO  r  r   rN  r  r^  rd  rb   r1   r/   r  r    s4    .% =D KD.0 =D:4Gr1   r  c                    |dk(  r|dk(  r	 | ||      S |dk(  r$|dk(  r | ||z   |       | ||z
  |      z
  d|z  z  S |dk(  r$|dk(  r | |||z          | |||z
        z
  d|z  z  S |dk(  rM|dk(  rH | ||z   ||z          | ||z
  ||z         z
   | ||z   ||z
        z
   | ||z
  ||z
        z   d|z  dz  z  S t        d      )Nr   r!   r6   zinvalid derivative order)r   )funcrB   rC   r  r  rL  s         r/   rC  rC  z  s   	Qw27Aqz	qR1WQWa 4C#33#>>	qR1WQC 41s7#33#>>	qR1WQWa#g&a#gq3w)??q3wC()+/CS+ABFGeaZP 	P 344r1   c                   4    e Zd ZdZd Zd Zd Zd Zd Zd Z	y)	Test_DerivedBivariateSplinezgTest the creation, usage, and attribute access of the (private)
    _DerivedBivariateSpline class.
    c                    t        j                  t        t        t	        d      t	        d                        }t        j                  t        t        t	        d      t	        dd                        }t        j                  t        j
                  ddd      t        j
                  ddd      f      }t        j                  t        d      5  t        |||t        ddd	      t        d
dd	      d      | _
        d d d        t        |||      | _        t        ddd      }|dz   }t        t	        |j                        D cg c]  }t        j                  ||       c}      }t!        |||      | _        t        t%        j&                  t	        d      t	        d                  | _        y # 1 sw Y   xY wc c}w )Nr   r!      r7   r%  r   r   g     3@rR   r<   g     4@r!  rK  r   rE  r   )ry   concatenatelistr.  r   r
   r  r  r  r   rs  r   
lut_smoothr   r  rollr   lut_rect	itertoolsproductr  )rA   rB   rC   r   r   r   izzs           r/   r  z(Test_DerivedBivariateSpline.setup_method  sK   NN4E"IuRy 9:;NN4E"IuQ| <=>NNBKK1b12;;q!R3HIJ\\+-OP 	8-aA.6sD!.D.6sD!.D268DL	8
 01a8aB#X5=9aBGGAqM9:+BB79,,U1XuQx@A	8 	8 :s   -F4G 4F=c                     | j                   D ]I  \  }}| j                  j                  ||      } |ddd      }| j                  dd||d      }||k(  rIJ  y )Nr}   Fr=  r  )r  rs  r  rA   nuxnuylut_derr   r   s         r/   test_creation_from_LSQz2Test_DerivedBivariateSpline.test_creation_from_LSQ  s`     	HCll55c3?GSu-AS###EBA6M6		r1   c                     | j                   D ]I  \  }}| j                  j                  ||      } |ddd      }| j                  dd||d      }||k(  rIJ  y )Ng      @Fr=  r  )r  rm  r  ru  s         r/   test_creation_from_Smoothz5Test_DerivedBivariateSpline.test_creation_from_Smooth  s`     	HCoo88cBGSu-ASSSuEA6M6		r1   c                 H   | j                   D ]  \  }}| j                  j                  ||      }t        | j                        }|j	                  ||f      } |ddd      } |dg      }| j                  dd||d      } |dg||f      }	||k(  sJ t        ||	        y )Nr   r<   Fr=  )r   r<   r  rS   )r  ro  r  r0   r   r   )
rA   rv  rw  rx  lut_ndsplinelut_der_ndbspliner   a_ndbspliner   b_ndbsplines
             r/   test_creation_from_Rectz3Test_DerivedBivariateSpline.test_creation_from_Rect  s     		:HCmm66sC@G/>L , 7 7c
 CSu-A+ZL9Kc333UCA&
|c
CK6M6[9		:r1   c                 H   | j                   j                  dd      }t        | j                         }|j                  d      }t	        t
              5  |j                   d d d        t	        t
              5  |j                   d d d        y # 1 sw Y   .xY w# 1 sw Y   y xY w)Nr!   r   )ro  r  r0   r   r   AttributeErrorfp)rA   derr}  der_ndbsplines       r/   test_invalid_attribute_fpz5Test_DerivedBivariateSpline.test_invalid_attribute_fp  s    mm..q!4+DMM:$//7>* 	FF	>* 		 		 		 	s   B6BBB!c                     | j                   j                  dd      }t        t              5  |j	                          d d d        y # 1 sw Y   y xY wr    )rm  r  r   r  r?   )rA   r  s     r/   #test_invalid_attribute_get_residualz?Test_DerivedBivariateSpline.test_invalid_attribute_get_residual  sA    oo00A6>* 		 	 	s   AAN)
r_   r`   ra   __doc__r  ry  r{  r  r  r  rb   r1   r/   rh  rh    s&    B 
:r1   rh  )r   r   g:0yE>)2rp  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   rX  rn  r  r  r  rC  rh  rb   r1   r/   <module>r     s     
    *  C B B K K# # # : 4,C7 C7LV6 V6r~8 ~8BFB FBRRB RBjX8 X8v~G ~GB5: :r1   