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

1a 0!%@6 r6   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   r$   Tcheck_finiter9   r   r0   r1   r   )r0   r1   r   r   )r0   r1   r   r   r0   r1   r   r   r   )r_   rn   r   	ones_liker   r+   naninfr   r   r   r   r   )r/   r0   r1   r   rV   r   y_endzs           r3   test_nanzTestUnivariateSpline.test_nan   sK   IIb&qDLLOq!$7MMOAa "&&"&&266'*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 +r6   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   r$   r   r"   Tr   r9   )r0   r1   r   r^   r   r   )r0   r1   r^   r   r   )r_   rn   r   r   r   r+   r   r   r   r   r   r/   xxyyr0   r1   r   rV   r   s           r3   test_strictly_increasing_xz/TestUnivariateSpline.test_strictly_increasing_x   s    
 YYr'UIIb&t!qDLLOr2D9MMOAa 1Q!$?a1QTBj"2 	:a148	:j"> 	5ad3	5r6   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   r$   r   rt   r"   Tr   r9   r   r   )r_   rn   r   r   r   r+   r   r   r   r   r   r   s           r3   test_increasing_xz&TestUnivariateSpline.test_increasing_x   s    YYr'UIIb&tcz!qDLLOr2D9MMOAa j"2 	5ad3	5j"> 	5ad3	5j"5 	?a1=	?r6   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   r;   !x and y should have a same lengthr   r   r   r;   gffffff@rs   rt   rt   rt   r   %x, y, and w should have a same lengthr   r   bbox shape should be (2,)r   r%   k should be 1 <= k <= 5rs   r]   s should be s >= 0.0)r   r   r   strvaluer/   infor   r   w_valuesr   s         r3   (test_invalid_input_for_univariate_splinez=TestUnivariateSpline.test_invalid_input_for_univariate_spline  sF   :&$(H+HXx0 ' 3c$**oEEE:&$(H0H,HXx8<	 '
 7#djj/III:&$DXxd; ' +c$**o===:&$Xx15 '(C

O;;;:&$Xx48 '%TZZ8881 '& '& '&
 '& '&s;   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   r   r   r   r   r%   r   )r   r   r   r   r   r   s         r3   5test_invalid_input_for_interpolated_univariate_splinezJTestUnivariateSpline.test_invalid_input_for_interpolated_univariate_spline"  s   :&$(H+H(8< ' 3c$**oEEE:&$(H0H,H(8xH	 '
 7#djj/III:&$D(8$G ' +c$**o===:&$(8qA '(C

O;;;) '& '& '&
 '&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   r$   r9   r   r   )rt   rt   rt   rt   r   r   z;Interior knots t must satisfy Schoenberg-Whitney conditions)match)r   r   r   r   r   r%   r   )r   r+   r   r   r   r   r   )	r/   r   r   rV   t_valuesr   r   messager   s	            r3   ,test_invalid_input_for_lsq_univariate_splinezATestUnivariateSpline.test_invalid_input_for_lsq_univariate_spline:  sr   $,xE==?1Q':&$(H+H(H= ' 3c$**oEEE:&$(H0H+H(HI	 '
 7#djj/IIIO:W5D(H4H 6 :&$D(H4H ' +c$**o===:&$(HB '(C

O;;;3 '& '& 65 '&
 '&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   )rt   rt   rt   rt   rt   r   r   )r0   r1   r   r   r   )r_   r
   r   tolistr   )r/   r   r   r   r   spl1r   s          r3   test_array_like_inputz*TestUnivariateSpline.test_array_like_input\  s    88-.88568856xxs$(h(%)+  (//"3x7H"*//"3$++-I 	2323	5r6   c                     t        d      }g d}t               5 }|j                  t        d      }t	        ||d       t        t        |      d       d d d        y # 1 sw Y   y xY w)Nm   )mr'   r'   r'   r'   r'   %@r'         &@r'   r'   r'   r   r'   r'   r'   r'   r'   r'   r   r'   r'   r'   r   r'   r'   r'   r   r'   r'   r'         %@r'   r'   r'   ffffff%@r'   r'   r'   r   r'   r'   r'   r'   r'   r'   r   r'   r'   r   r'   r'   r'   333333%@r'   r'   r'   r   r'   r'   r   r'   r'   r   r'   r'   g      '@r'   r'   r'   r   r'   r'   r   r'   r'   r   r'   r'   皙%@r'   r'   r'   r   r'   r'   r   r'   r'   r'   $@r'   r'   r   r'   r'   r   r'   r'   r'   r   r'   r'   r'   r   r'   r'   r'   r   r'   a#  
The maximal number of iterations maxit \(set to 20 by the program\)
allowed for finding a smoothing spline with fp=s has been reached: s
too small.
There is an approximation returned but the corresponding weighted sum
of squared residuals does not satisfy the condition abs\(fp-s\)/s < tol.r"   r%   )r   r   recordUserWarningr   r   ra   )r/   r0   r1   suprs        r3   test_fpknot_oob_crashz*TestUnivariateSpline.test_fpknot_oob_crashk  s\    #J;  C

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

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

;(JKA$Q1b"qACQ# ! BR[DHQtV$T"Xd1f%55#2#crc'{2ab"f:-b"QRj8ABqrEBDEHSUK 	CLLA21r"vF 	" ! s   >D))D2c           
         g d}g d}g d}d}d|z   d|z
  g}d|z   d|z
  g}t               5 }|j                  t        d      }t        |||||dd      }	t	        t        |      d       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"   r$   r  r  r   Fgridr   )	r   r   r   r   r   ra   r   r_   r   r  s
             r3   rW   z'TestLSQBivariateSpline.test_empty_input  s    c!A#Yc!A#Y C

;(JKA$Q1b"qACQ# !
 	3r2;83r2E2BHHTNC ! s   >C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"   r$   rt         $@r   num%x, y, and z should have a same length   r   (x, y, z, and w should have a same lengthrs   w should be positiver   r   r   r   bbox shape should be (4,)r  ;The length of x, y and z should be at least (kx+1) * (ky+1)r'   epseps should be between (0, 1))r   r   r_   r   r   r   r   )r/   r^   r  r  r   r0   r1   r   r   r   exc_infos              r3   test_invalid_inputz)TestLSQBivariateSpline.test_invalid_input  s   !eQU^!eQU^:&$C&AC&AC2.Aq!QB/	 '
 7#djj/III:&$C&AC&AC&AC2.Aq!QB!4 ' :S_LLL:&$D$'Aq!QB!4 ' &TZZ888:&$$Dq!QBT: ' +c$**o===:&$q!QB2"= 'L4:: 	  :&(q!QBC8 '-X^^1DDDD:&(q!QBC8 '-X^^1DDDDI '& '& '&
 '&
 '&
 '& '&sU   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               5 }	|	j	                  t
        d      }
t        |||||||      }t        |j                         |j                         |j                         |j                         |j                         |j                         |      }t         |d	d	       |d	d	             t        t        |
      d
       d d d        y # 1 sw Y   y xY w)Nr   r"   r$   rt   r%  )rt   r%  rt   r%  r  )r   r   ri   r#   )r_   r
   r   r   r   r   r   r   r   r   ra   )r/   r^   r  r  r0   r1   r   r   r   r   r   r   r   s                r3   r   z,TestLSQBivariateSpline.test_array_like_input  s)   XXq1ua!en%XXq1ua!en%KKT"KKT"KKT"KKT"xx./ C

;(JKA%aAr2FD%ahhj!((*ahhj&(iik299;!((*+/1D DcNDcN;Q# !  s   6B>E==F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               5 }|j                  t        d      }t        |||||      }t        t        |      d	       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"   NFr!  )r_   mgridravelr   r   r   r   r   r   r   ra   r   )	r/   r0   r1   r   r  r  r   r   r2   s	            r3   test_unequal_length_of_knotsz3TestLSQBivariateSpline.test_unequal_length_of_knots  s     xx#qu%1GGIGGI",,q/![[dB'[[dB' C

;(JKA$Qq2b1CQ# !
 	C15115 ! s   ;C&&C/N)
rE   rF   rG   r4   r  r  rW   r3  r   r:  rH   r6   r3   r  r    s(    *<2"(D )EV$*6r6   r  c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestSmoothBivariateSplinec                 (   g d}g d}g d}t        |||dd      }t        |j                         g dg df       t        |j                         g d       t	        |j                         d       t         |g d	dd
g      ddgddgddgg       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/   r0   r1   r   r2   s        r3   r4   z.TestSmoothBivariateSpline.test_linear_constant'      #AaQ!4!#--/9Y2GH!#.."29=C,,.s3!#i3"81Q%1qe9LMr6   c                 (   g d}g d}g d}t        |||dd      }t        |j                         g dg df       t        |j                         g d       t	        |j                         d       t         |g d	dd
g      ddgddgddgg       y )Nr  r  )	r   r   r   r#   r#   r#   r9   r9   r9   r"   r  r>  )r   r   r9   r9   r'   r(   r)   r   r#   r?  r@  s        r3   r?   z(TestSmoothBivariateSpline.test_linear_1d1  rA  r6   c           	         g d}g d}t        g d      }t               5 }|j                  t        d       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        |j                  |d   |d   |d   |d         |	       t	        |||ddd      }
t        |
j                  |d   |d   |d   |d         |	d        ||d d |d d       }d
t        |d d       d d d f   t        |d d       d d d f   z  |d dd df   |dd d df   z   |d ddd f   z   |dd dd f   z   z  j                         z  }	t        |j                  |d   |d   |d   |d         |	       y # 1 sw Y   xY w)N)	r"   r"   r"   r#   r#   r#   r9   r9   r9   r  r  z
The required storage spacer"   r   )r  r	  r^   )r"   r#   r9   r!   r  r   r#   )decimalr   )	r
   r   r  r   r   r   r  r   r   )r/   r0   r1   r   r   r2   r  r  r  r  lut2s              r3   r  z'TestSmoothBivariateSpline.test_integral;  s'   %& CJJ{$BC'1aA!qAC !
 R[DHQtV$T"Xd1f%55#2#crc'{2ab"f:-b"QRj8ABqrEBDEHSUKCLLA21r"vFM$Q1qA>DMM"Q%BA2G$%	' CR"Sb'"DCRM!D&)$r#2w-Q*??#2#crc'{2ab"f:-b"QRj8ABqrEBDEHSUKCLLA21r"vFM) ! s   (GG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   r#   P   r   r"   r   )r_   r   r   r   r   r   )
r/   r0   r1   r   xiyiro   res1interp_res2s
             r3   test_rerun_lwrk2_too_smallz4TestSmoothBivariateSpline.test_rerun_lwrk2_too_smallV  s     KKAr"KKAr"E[[Q$[[Q$q!Qr2s#'1a0r2D$'r6   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)Nrt   r%  r   r&  r(  r)  r   r*  rs   r+  r,  r   r-  r  r.  r]   r   r'   r/  r1  )r   r   r_   r   r   r   r   )r/   r   r0   r1   r   r   r   r2  s           r3   r3  z,TestSmoothBivariateSpline.test_invalid_inpute  s   :&$C&AC&AC2.A!!Q*	 '
 7#djj/III:&$C&AC&AC&AC2.A!!QQ/ ' :S_LLL:&$D$'A!!QQ/ ' &TZZ888:&$$D!!Q5 ' +c$**o===:&$!!QbR8 'L4:: 	  :&$!!QT2 '%TZZ888:&(!!Qs3 '-X^^1DDDD:&(!!Qs3 '-X^^1DDDDQ '& '& '&
 '&
 '&
 '& '& '&sa   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"   )rt   r
  rt   r
  r"   )r   r   r  r	  )r   r   r  r	  r   r   )r_   r
   r   r   r   )r/   r0   r1   r   r   r   r   r   s           r3   r   z/TestSmoothBivariateSpline.test_array_like_input  s    HH01HH01HH01HH01xx,-$Q1qI$QXXZQXXZ*.++-188:()a1 	S#S#7r6   N)	rE   rF   rG   r4   r?   r  rM  r3  r   rH   r6   r3   r<  r<  &  s%    NNN6(*EX8r6   r<  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"   ri   r   rK   )r   r   r   r   r   r   r9  Tlut_lsqdatanew_lonsnew_lats)r/   nthetanphithetaphirW  knotstknotspknotdatalatslonsrV  s               r3   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}r6   c                     t        | j                  j                         d       t        | j                  | j                  | j
                        | j                         y )Nr'   )r   rV  r-   r   rY  rX  rW  r/   s    r3   r4   z1TestLSQSphereBivariateSpline.test_linear_constant  s=    DLL557=!$,,t}}dmm"L"&))	-r6   c                     t        | j                  g g       t        j                  d             t        | j                  g g d      t        j                  d             y Nr   Fr!  r#  )r   rV  r_   r   re  s    r3   rW   z-TestLSQSphereBivariateSpline.test_empty_input  s@    !$,,r2"6H!$,,r2E,"BBHHTNSr6   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)NrS  r   r"   ri   r   rK   皙rt   r&  theta should be between [0, pi]r   皙?phi should be between [0, 2pi]r'   ztt should be between (0, pi)ztp should be between (0, 2pi)r#   	rs   rt   r)   r   rt   r)   r   rt   rt   r   r+  r/  r1  )r   r   r   r   r   r   r   r   r9  rU  r   r   r_   r   r
   )r/   rZ  r[  r\  r]  rW  r^  r_  r2  invalid_thetainvalid_latsrb  invalid_phira  invalid_lonsinvalid_knotstinvalid_knotsp	invalid_ws                     r3   r3  z/TestLSQSphereBivariateSpline.test_invalid_input  s   
+Q
1C-C!#%&sdQh'SD1H-=)=tDrIBNU[[^SYYq\23ssSqS:&($T3F;b@M!)-!=L$$\%7%7%94::<%)VV\\^VVE '
 1C4GGGG:&($S#6:R?M!)-!=L$$\%7%7%94::<%)VV\\^VVE '
 1C4GGGG:&("4&9C?"DK!)%!=D,$TZZ\<3E3E3G%)VV\\^VVE '
 03x~~3FFFF:&("383>CK!)%!=D,$TZZ\<3E3E3G%)VV\\^VVE '
 03x~~3FFFFeS)
d:&(WWV_N $N1$TZZ\4::<%)VV\\^^VM '
 .X^^1DDDD:&(WWV_N "N1$TZZ\4::<%)VV\\^^VM '
 .X^^1DDDD:&(WWV_N $N1$TZZ\4::<%)VV\\^V^M '
 /#hnn2EEEE:&(WWV_N !BN1$TZZ\4::<%)VV\\^V^M '
 /#hnn2EEEE:&(LMI$TZZ\4::<%+VyB ' &X^^)<<<<:&($TZZ\4::<%+V> ' .X^^1DDDD:&($TZZ\4::<%+V> ' .X^^1DDDDQ '& '& '& '& '& '& '& '& '& '&
 '&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 )	NrS  r   r"   ri   r   rK   r   rt   )
r   r   r   r   r   r9  r   rU  r   r   )r/   rZ  r[  r\  r]  ra  rb  rW  r^  r_  r   r   r   s                r3   r   z2TestLSQSphereBivariateSpline.test_array_like_input  s   
+Q
1C-C!#%&sdQh'SD1H-=)=!"$&'eS)
dU[[^SYYq\23ssSqS##A&' (

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

(;(;(=(,

(;(;(=(,(=(=(?(.(.188:	G
 	"$sC.$sC.Ar6   NrE   rF   rG   rc  r4   rW   r3  r   rH   r6   r3   rQ  rQ    s     6$-
TREhBr6   rQ  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 )Nr  r         ?r)   r      _Br]   )r
   r   r   r2   )r/   r\  r]  r   s       r3   rc  z,TestSmoothSphereBivariateSpline.setup_method*  s    s2vs2vs2vr"ubeRUCF2vs2v' (R"Wb#(BGRr27B2X  -..uc1Er6   c                     t        | j                  j                         d       t        | j                  g dddg      ddgddgddgg       y )Nr'   r(   r"   r)   r$   )r   r2   r-   r   re  s    r3   r4   z4TestSmoothSphereBivariateSpline.test_linear_constant2  sH    DHH113R8!$((;3x"@$%q6Aq6Aq6":	<r6   c                     t        | j                  g g       t        j                  d             t        | j                  g g d      t        j                  d             y rg  )r   r2   r_   r   re  s    r3   rW   z0TestSmoothSphereBivariateSpline.test_empty_input7  s@    !$((2r"2BHHUOD!$((2r(">Or6   c                    t        dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  g	      }t        dt        z  t        dt        z  dt        z  t        dt        z  dt        z  t        dt        z  g	      }t        g d      }t        t              5 }t        dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  g	      }t	        |||d       d d d        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)Nr  r   rz  r)   r  ri  r{  r]   rj  rk  rl  rt   g @rm  r   r^   r+  rs   s should be positiver/  r1  )r
   r   r   r   r   r   r   )r/   r\  r]  r   r2  rn  rp  rt  s           r3   r3  z2TestSmoothSphereBivariateSpline.test_invalid_input;  s   sRxr38R"Wb2grBwRxr385 6R"Wb#(BGRr27B2X  -.:&(!4"9cBhb"r'#%7BGS2XsRx#&8#- .M (sAF	 '
 1C4GGGG:&(!38S2XsRxb#%7BGS2XsRx#&8#- .M (sAF	 '
 1C4GGGG:&(r2sRxb"cBh!#b"cBh!8 9K'{AF ' 03x~~3FFFF:&(r2sRxb"cBh!#b"cBh!8 9K'{AF ' 03x~~3FFFF:&(LMI'sAdK ' &X^^)<<<<:&('sA> '%X^^)<<<<:&('sA4@ '-X^^1DDDD:&('sA3? '-X^^1DDDDS '& '& '& '& '&
 '& '& '&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 )
Nr  r   rz  r)   r  )	rt   rt   rt   rt   rt   rt   rt   rt   rt   r{  r  rt   )r_   r
   r   r   r   r   )r/   r\  r]  r   r   r   r   s          r3   r   z5TestSmoothSphereBivariateSpline.test_array_like_inputm  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.Ar6   Nrv  rH   r6   r3   rx  rx  )  s     F<
P0EdBr6   rx  c                   N    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y)TestRectBivariateSplinec                     t        g d      }t        g d      }t        g dg dg dg dg dg      }t        |||      }t         |||      |       y )NrJ   r"   r#   r"   r#   r"   r"   r#   r$   r#   r"   r"   r#   r#   r#   r"   r
   r   r   r@  s        r3   test_defaultsz%TestRectBivariateSpline.test_defaults  sI    ++;{;{;OP!!Aa(!#a(1-r6   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 )NrJ   r  r  r  )r"   ffffff@g333333@r   ffffff
@333333?r$   )r"   r  r  r   g      @rt   r$   r   )r
   r   evr  r   )r/   r0   r1   r   r2   rH  rI  zir   r  zi2s              r3   test_evaluatez%TestRectBivariateSpline.test_evaluate  s    ++;{;{;OP!!Aa(,,VVB^CBK@K&"bSR[%K@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 )NrJ   r  r  r  r   r   ir   r   r   r   r   r   r   r   r   r9   r   r   r   r   ir   r   rj   r9   r   r   r"   r   r)   r   g      r   r#   r  r         пr   (   ir      iig     @0@r   g     @0   r   rK   r   rh      g     +r   g     +@ir"   dxdy)r  r  r  r/   r0   r1   r   r  r  dxdyr2   s           r3   test_derivatives_gridz-TestRectBivariateSpline.test_derivatives_grid  s    ++;{;{;OPM,{+' ((*+M-0@m- .'(?1-A BBDE!!Aa(!#aQ-3!#aQ-3!#aQ!"4T:r6   c           	      `   t        g d      }t        g d      }t        g dg dg dg dg dg      }t        g d      }t        g d      }t        g d      dz  }t        |||      }t         |||d	d
      |       t         |||d	d
      |       t         |||d	d	d
      |       y )NrJ   r  r  r  r   r   gUUUUUU?r   r   r9   r   r   r  r     A   r   7             8@r"   F)r  r"  )r  r"  r  r  r"  r  r  s           r3   rf   z(TestRectBivariateSpline.test_derivatives  s    ++;{;{;OP>"#$%&s*!!Aa(!#aQE":2>!#aQE":2>!#aQ!"?Er6   c                     t        g d      }t        g d      }t        g dg dg dg dg dg      }t        g dg dg dg dg dg      d	z  }t        g d
g d
g dg dg d
g      }t        g dg dg dg dg dg      d	z  }t        |||      }t         |j                  dd      ||      |       t         |j                  dd      ||      |       t         |j                  dd      ||      |       y )NrJ   r  r  r  r  r  r  r  rj   r  r  r  r  r  r  r  r"   r   r
   r   r   partial_derivativer  s           r3   #test_partial_derivative_method_gridz;TestRectBivariateSpline.test_partial_derivative_method_grid  s   /"/"?""""	$ %
 %$#%#	% & )+	+
 %%()%	' (
 +1'1'	) * -/	/
 "!Q*!">#"8"8A">q!"DbI!">#"8"8A">q!"DbI!">#"8"8A">q!"DdKr6   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         |j                  d	d
      ||d      |       t         |j                  d
d	      ||d      |       t         |j                  d	d	      ||d      |       y )NrJ   r  r  r  r  r  r  r  r"   r   Fr!  r  r  s           r3   test_partial_derivative_methodz6TestRectBivariateSpline.test_partial_derivative_method  s    /"/"?""""	$ %
 %&'()*S0!!Q*!">#"8"8A">q!DI#K"$	& 	"">#"8"8A">q!DI#K"$	& 	"">#"8"8A">q!DI#K"&	(r6   c                    t        g dt              }|j                         }t        |j                  |j                  f      }t        |||      }t        t              5  |j                  dd       d d d        y # 1 sw Y   y xY w)N)r   r"   r#   r$   r9   r   r9   r"   )	r
   r   r   r   sizer   r   r   r  r@  s        r3   'test_partial_derivative_order_too_largez?TestRectBivariateSpline.test_partial_derivative_order_too_large  sb    //FFH!&&!&&!"!!Q*:&""1a( '&&s   !A==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             y )NrJ   r  r  r  Fr!  )r
   r   r   r@  s        r3   test_broadcastz&TestRectBivariateSpline.test_broadcast  sb    ++;{;{;OP!!Aa(Aq	3q4y!DF)%#HIr6   c           	         t        t              5 }t        g d      }t        g d      }t        g dg dg dg dg dg      }t        |||       d d d        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   r#   r$   r9   rK   rJ   r  r  r  x must be strictly increasing)r#   r#   r$   r9   rK   y must be strictly increasingz7x dimension of z must have same number of elements as x)r"   r#   r"   r#   )r"   r#   r$   r#   )r"   r#   r#   r#   z7y dimension of z must have same number of elements as yr,  r   r-  rs   r]   r   )r   r   r
   r   r   r   )r/   r   r0   r1   r   r   s         r3   r3  z*TestRectBivariateSpline.test_invalid_input  sj   :&$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/" 	" " :&$o&Ao&A&9 :A$D1ad3 ' +c$**o===:&$1a40 '%TZZ888[ '& '& '& '& '& '&sK   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 )NrJ   r  r  r  )r"   rK   r"   rK   r   rt   )r
   r   r   r   )r/   r0   r1   r   r   r   r   s          r3   r   z-TestRectBivariateSpline.test_array_like_input   s    /"/"?O_"O5 6\""1a6"188:qxxz188:(,7!$sC.$sC.Ar6   c                 B   d}t         j                  j                  dt         j                  |      }t         j                  j                  ddt         j                  z  |      }t        j                  |      }t        |||d      }d}d}t        j                  |      |z  t         j                  z  }t        j                  |      |z  dz  t         j                  z  }	 |||	       |j                         }
d|
d<   t        t              5 } ||
|	       d d d        d	t        j                        v sJ |	j                         }d|d<   t        t              5 } |||       d d d        d
t        |j                        v sJ y # 1 sw Y   rxY w# 1 sw Y   /xY w)Nr)  r   r#   rd   r]   r   r$   MbP?r  r  )r_   randomuniformr   r   r   rn   r   r   r   r   r   )r/   NSampThetaPhiDataInterpolatorNLonNLatGridPosLatsGridPosLonsnonGridPosLatsr2  nonGridPosLonss                r3   test_not_increasing_inputz1TestRectBivariateSpline.test_not_increasing_input,  sS   		!!!RUUE2ii1ruu9e4wwu~25#tsKiio,ruu4iio,q02558 	[+.$))+!q:&(5 '.#hnn2EEEE$))+!q:&(n5 '.#hnn2EEEE '& '&s   
F	
F	FFN)rE   rF   rG   r  r  r  rf   r  r  r  r  r3  r   r  rH   r6   r3   r  r  ~  s?    .%;
FL8(,)J/9b
BFr6   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?r#   rP   r"   r#   r"   r#   r"   r#   r"   r"   r#   r$   r#   r"   r#   r"   r"   r#   r#   r#   r"   r#   r"   )r   r   r
   r   r   r/   r1   r0   r   r2   s        r3   r  z+TestRectSphereBivariateSpline.test_defaultsK  si    T1R49a(T2d7A&???"??"$ % (!A.!#a(1-r6   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  r#   rP   r  r  r  )r   r"   r  g@r
  gQ@g      @)r)   r  rk  g?gjt?rt   -C6?r   )r   r   r
   r   r  r  r   )r/   r1   r0   r   r2   rI  rH  r  r   r  r  s              r3   r  z+TestRectSphereBivariateSpline.test_evaluateT  s    T1R49a(T2d7A&???"??"$ % (!A.16VVB^CBK@K&"bSR[%K@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@r'        u@rQ   r      r   ^  u should be between (0, pi)r      K v[0] should be between [-pi, pi)h  "v[-1] should be v[0] + 2pi or lessr]   r  r_   dot
atleast_2dr   rU  absr   r   r   r   r   r   r/   rW  r2  ra  rb  s        r3   r3  z0TestRectSphereBivariateSpline.test_invalid_inputa  s   vvbmmC"++dC*D$DEGGmmD266"++b$2J+K$KLNNOa 	 :&(;;r3*RUU2T9D;;q#r*RUU2T9D%dD$7 ' -HNN0CCCC:&(;;r3*RUU2T9D;;q#r*RUU2T9D%dD$7 ' -HNN0CCCC:&(;;r3*RUU2T9D;;tR,ruu4t;D%dD$7 ' 2S5HHHH:&(;;r3*RUU2T9D;;sC,ruu4t;D%dD$7 ' 4s8>>7JJJJ:&(;;r3*RUU2T9D;;r3+bee3d:D%dD$"= ' &X^^)<<<<9 '& '& '& '& '&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  r#   rP   r  r  r  {Gz?r"   )dthetar  r  rtolrm   )dphir  )r  r  ư>r  r  r0  r  r   Fr  r"  r!  r  r"  r  r  r"  )r   r   r
   r   r   _numdiff_2dr   r  r  s        r3   r  z3TestRectSphereBivariateSpline.test_derivatives_grid  s   T1R49a(T2d7A&???"??"$ % (!A.T1R49a(T2d7A&Aq+[aq-I!	.Aqq);sAqQ+G!	.Aq3#CA!tD!	. 	3q!A.7311!Q71=	?3q!!,7311!Q71=	?3q!AA67311!Q71=	? 	3q!AE:7311!Q715I	K3q!!%87311!Q715I	K3q!AAEB7311!Q715I	Kr6   c                 \   t        ddt        z  dz
  d      }t        dt        dz
  d      }t        g dg dg dg dg dg dg dg      }t        |||      t        ddt        z  dz
  d      }t        dt        dz
  d      }t	         ||dd	
      j
                  |j
                         t         ||dd	
      t        fd||d      dd       t         ||dd	      t        fd||d      dd       t         ||ddd	      t        fd||ddd      dd       y )Nr  r#   rP   r  r  r  r  r"   Fr  c                      | |d      S NFr!  rH   r0   r1   r2   s     r3   <lambda>z@TestRectSphereBivariateSpline.test_derivatives.<locals>.<lambda>      AaU0Cr6   r  r  r  r  c                      | |d      S r  rH   r  s     r3   r  z@TestRectSphereBivariateSpline.test_derivatives.<locals>.<lambda>  r  r6   r  r   c                      | |d      S r  rH   r  s     r3   r  z@TestRectSphereBivariateSpline.test_derivatives.<locals>.<lambda>  r  r6   r  r  r  )r   r   r
   r   r   r   r   r  r  s       @r3   rf   z.TestRectSphereBivariateSpline.test_derivatives  s*   T1R49a(T2d7A&???"??"$ % (!A.T1R49a(T2d7A&SAae4::AGGDAq7#$CQaP!	. 	Aqqu5#$CQaP!	. 	Aq?#$C$%qQ1$@!	.r6   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  r'   r  rQ   r   r  r  r  r      r  r  r  r  r  r   r]   r  r  r  s        r3   test_invalid_input_2z2TestRectSphereBivariateSpline.test_invalid_input_2  s   vvbmmC"++dC*D$DEGGmmD266"++b$2J+K$KLNNOa 	 :&(;;q#q)BEE1D8D;;q#r*RUU2T9D%dD$7 ' -HNN0CCCC:&(;;r3*RUU2T9D;;q#r*RUU2T9D%dD$7 ' -HNN0CCCC:&(;;r3*RUU2T9D;;tR,ruu4t;D%dD$7 ' 2S5HHHH:&(;;r3*RUU2T9D;;sC,ruu4t;D%dD$7 ' 4s8>>7JJJJ:&(;;r3*RUU2T9D;;r3+bee3d:D%dD$"= ' &X^^)<<<<9 '& '& '& '& '&r  c           
      V   t        ddt        z  dz
  d      }t        dt        dz
  d      }t        g dg dg dg dg dg dg dg      }t        |||      }t        |j	                         |j	                         |j	                               }t         |||       |||             y r  )r   r   r
   r   r   r   )r/   r1   r0   r   r   r   s         r3   r   z3TestRectSphereBivariateSpline.test_array_like_input  s    T1r6D=!,T29a((*?((*?((	* + )Aq1(QXXZL!$q!*d1aj9r6   c                    t        j                  g d      }t        j                  g d      }t        j                  ||      }|d   |d   z   }t        j                  |      }t        j                  |      }t	        |||      }t        j                  t        j                  ddg            }t        j                  t        j                  ddg            }	 |||	      }
t        j                  d	d
gddgg      }t        |
|       y )N)r     #   r  -   )iiir   r   r"   r  g     B@r  g     `Sg     Fg=Eg     HgDioEG)r_   r
   r   radiansr   r   )r/   ra  rb  meshrW  lat_rlon_rinterpolator	query_lat	query_londata_interpanss               r3   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3r6   c                    t        j                  dd      t         j                  z  dz  }t        j                  dd      t         j                  z  dz  }t        j                  d      }dD ]  }t	        |||d|        y )Nr"   r   )rQ   rQ   ))TT)TF)FFr   )r^   pole_continuity)r_   rn   r   r   r   )r/   uvr   ps        r3   test_pole_continuity_gh_14591z;TestRectSphereBivariateSpline.test_pole_continuity_gh_14591  sh     IIaruu$r)IIaruu$r)HHV>A%aAAF ?r6   N)rE   rF   rG   r  r  r3  r  rf   r  r   r  r"  rH   r6   r3   r  r  J  s4    .% =D KD.0 =D:4Gr6   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"   r#   zinvalid derivative order)r   )funcr0   r1   r  r  r0  s         r3   r  r    s   	Qw27Aqz	qR1WQWa 4C#33#>>	qR1WQC 41s7#33#>>	qR1WQWa#g&a#gq3w)??q3wC()+/CS+ABFGeaZP 	P 344r6   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               5 }|j                  t        d       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"      r$   r  r   g     3@r9   r)   g     4@r  r/  r   r)  rt   )r_   concatenatelistr  r   r   r   r   r   r   rV  r   
lut_smoothr
   r  rollr   lut_rect	itertoolsproductorders)	r/   r0   r1   r   r   r   r   izzs	            r3   rc  z(Test_DerivedBivariateSpline.setup_method  sP   NN4E"IuRy 9:;NN4E"IuQ| <=>NNBKK1b12;;q!R3HIJ CJJ{$FG-aA.6sD!.D.6sD!.D268DL ! 01a8aB#X5=9=aBGGAqM=9:+BB79,,U1XuQx@A !  :s   AF9G9Gc                     | j                   D ]N  \  }}| j                  j                  ||      } |ddd      }| j                  dd||d      }t        ||       P y )Nrd   Fr!  r  )r0  rV  r  r   r/   nuxnuylut_derr   r   s         r3   test_creation_from_LSQz2Test_DerivedBivariateSpline.test_creation_from_LSQ.  sZ    HCll55c3?GSu-AS###EBAA	 $r6   c                     | j                   D ]N  \  }}| j                  j                  ||      } |ddd      }| j                  dd||d      }t        ||       P y )Ng      @Fr!  r  )r0  r+  r  r   r4  s         r3   test_creation_from_Smoothz5Test_DerivedBivariateSpline.test_creation_from_Smooth5  sZ    HCoo88cBGSu-ASSSuEAA	 $r6   c                     | j                   D ]N  \  }}| j                  j                  ||      } |ddd      }| j                  dd||d      }t        ||       P y )Nr   r)   Fr!  r  )r0  r-  r  r   r4  s         r3   test_creation_from_Rectz3Test_DerivedBivariateSpline.test_creation_from_Rect<  sZ    HCmm66sC@GSu-Ac333UCAA	 $r6   c                     | j                   j                  dd      }t        t              5  |j                   d d d        y # 1 sw Y   y xY wNr"   )r-  r  r   AttributeErrorfpr/   ders     r3   test_invalid_attribute_fpz5Test_DerivedBivariateSpline.test_invalid_attribute_fpC  s3    mm..q!4>*FF +**s   AAc                     | j                   j                  dd      }t        t              5  |j	                          d d d        y # 1 sw Y   y xY wr>  )r+  r  r   r?  r-   rA  s     r3   #test_invalid_attribute_get_residualz?Test_DerivedBivariateSpline.test_invalid_attribute_get_residualH  s8    oo00A6>* +**s   AAN)
rE   rF   rG   __doc__rc  r8  r:  r<  rC  rE  rH   r6   r3   r&  r&    s&    B"
r6   r&  )r   r   g:0yE>),r.  numpyr_   numpy.testingr   r   r   r   r   r   pytestr	   r   r
   r   r   r   r   r   r   scipy.interpolate._fitpack_pyr   r   r   r   scipy.interpolate._fitpack2r   r   r   r   r   r   r   r   r   r   r  r<  rQ  rx  r  r  r  r&  rH   r6   r3   <module>rL     s     G G * B B B K K# # #s$ s$l\6 \6~w8 w8tFB FBRRB RBjIF IFX~G ~GB52 2r6   