o
    Ö­j«é  ã                   @   sR  d dl Z d dlmZ d dlZd dlmZ d dlZd dlmZ	 d dl
mZmZmZmZ d dlmZmZmZmZmZmZmZ d dlmZmZmZmZ d dlmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$ d d	l%m&Z& d d
l'm(Z( G dd„ dƒZ)G dd„ dƒZ*G dd„ dƒZ+G dd„ dƒZ,G dd„ dƒZ-G dd„ dƒZ.G dd„ dƒZ/ddd„Z0G dd„ dƒZ1dS )é    N)ÚLock)Úsuppress_warnings)Úraises)Úxp_assert_equalÚxp_assert_closeÚassert_almost_equalÚassert_array_almost_equal)ÚarrayÚdiffÚlinspaceÚmeshgridÚonesÚpiÚshape)ÚbisplrepÚbisplevÚsplrepÚspalde)	ÚUnivariateSplineÚLSQUnivariateSplineÚInterpolatedUnivariateSplineÚLSQBivariateSplineÚSmoothBivariateSplineÚRectBivariateSplineÚLSQSphereBivariateSplineÚSmoothSphereBivariateSplineÚRectSphereBivariateSpline)Ú_run_concurrent_barrier)Úmake_splrepc                   @   sÔ   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zejjd-d.„ ƒZd/d0„ Zd1S )2ÚTestUnivariateSplinec                 C   s´   g d¢}g d¢}t ||dd�}t| ¡ ddgƒ t| ¡ ddgƒ t| ¡ ƒdk s+J ‚t|g d¢ƒg d¢ƒ t||dt|ƒd�}t|j	dd	… | ¡ d
d� t|j
| ¡ d
d� d S )N©é   é   é   )r#   r#   r#   r!   ©Úkr#   g»½×Ùß|Û=©r!   ç      ø?r"   )r%   ÚséÿÿÿÿçVçž¯Ò<©Úatol)r   r   Ú	get_knotsÚ
get_coeffsÚabsÚget_residualr   Úlenr   ÚtÚc)ÚselfÚxÚyÚlutÚspl© r9   úb/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/interpolate/tests/test_fitpack2.pyÚtest_linear_constant   s   z)TestUnivariateSpline.test_linear_constantc                 C   s–   g d¢}g d¢}t ||dd�}d}t|ƒt||ƒƒksJ ‚t|ƒt||dd�ƒks+J ‚g d¢}t|ƒt||ƒƒks;J ‚t|ƒt||dd�ƒksIJ ‚d S )Nr    ©r   r"   é   r!   r$   r"   )Únu)r'   r"   ç      @)r   r   )r4   r5   r6   r7   Úargr9   r9   r:   Útest_preserve_shape&   s    z(TestUnivariateSpline.test_preserve_shapec                 C   sp   g d¢}g d¢}t ||dd�}t| ¡ ddgƒ t| ¡ ddgƒ t| ¡ ƒdk s+J ‚t|g d	¢ƒg d
¢ƒ d S )Nr    r<   r!   r$   r#   r   r=   r*   r&   )r   r!   r"   )r   r   r-   r.   r/   r0   )r4   r5   r6   r7   r9   r9   r:   Útest_linear_1d1   s   z#TestUnivariateSpline.test_linear_1dc                 C   s@   G dd„ dt ƒ}|g d¢g d¢dd�}t|ddgƒd	d	gƒ d S )
Nc                   @   s   e Zd Zdd„ ZdS )z9TestUnivariateSpline.test_subclassing.<locals>.ZeroSplinec                 S   s   dt |ƒ S )Nr   )r	   )r4   r5   r9   r9   r:   Ú__call__>   ó   zBTestUnivariateSpline.test_subclassing.<locals>.ZeroSpline.__call__N)Ú__name__Ú
__module__Ú__qualname__rC   r9   r9   r9   r:   Ú
ZeroSpline=   s    rH   ©r!   r"   r#   r=   é   )r#   r"   r#   r"   r#   r"   r$   r'   r?   ç        )r   r   )r4   rH   Úspr9   r9   r:   Útest_subclassing:   s   z%TestUnivariateSpline.test_subclassingc                 C   s4   g d¢}g d¢}t ||dd�}t|g ƒtg ƒƒ d S )N©r!   r#   rJ   é   é	   ©r   r=   rP   é   é   r#   r$   )r   r   r	   ©r4   r5   r6   r8   r9   r9   r:   Útest_empty_inputD   s   z%TestUnivariateSpline.test_empty_inputc                 C   s4   g d¢}g d¢}t ||dd�}t| ¡ d dƒ d S )NrN   rQ   r#   r$   r   g7Ã£ŽýÍð?)r   r   ÚrootsrT   r9   r9   r:   Ú
test_rootsK   s   zTestUnivariateSpline.test_rootsc                 C   sD   t  ddt j d¡}t  |¡}t||dd�}t| ¡ ƒdks J ‚d S )Nr   é2   iè  ©r(   )Únpr   r   Úcosr   r1   rV   rT   r9   r9   r:   Útest_roots_lengthQ   s   
z&TestUnivariateSpline.test_roots_lengthc                 C   s6   g d¢}g d¢}t ||dd�}t| d¡g d¢ƒ d S )NrN   rQ   r#   r$   ç      @)gÌó;¨@gpZ•é<oû?gOÀ¼¶mÇ¿g      Ô?)r   r   ÚderivativesrT   r9   r9   r:   Útest_derivativesW   s   
ÿz%TestUnivariateSpline.test_derivativesc                 C   sp   t  d¡}|d d|d   }t||dd�}td|ƒ}t|g d¢dd	� t||ddd
�}t| d¡|dd	� d S )Né   r#   ç       @r"   r   rY   )g     €F@g     €C@g      6@ç      @r*   r+   )r(   r%   )rZ   Úaranger   r   r   r   r^   )r4   r5   r6   ÚtckÚdersr8   r9   r9   r:   Útest_derivatives_2^   s   


ü

þz'TestUnivariateSpline.test_derivatives_2c                 C   sN   g d¢}g d¢}g d¢}t |||dd�}tg d¢ƒ}t|g d¢ƒ|dd	� dS )
zRegression test for #1375.)ç      ð¿gææ<ß&Îä¿g_�µ€Õâ¿g@ø³Ìà7Ñ¿gš46	<Æ¿gŠÅóBÏ ¹¿rK   gŠÅóBÏ ¹?gš46	<Æ?g@ø³Ìà7Ñ?g_�µ€Õâ?gææ<ß&Îä?ç      ð?)rh   ç1\_#ä?ç~aèÇ�â?çwõÆÿ“Ù?ç¶ß5?×?ç0¯m›sÖ?gî­x—‰Ö?rm   rl   rk   rj   ri   rh   )ç   ¢”mBçoÙ!þ‡…@çuª)	•~@ç¡eÝ?Ö­z@ç½Œbùý‚@ç¦Öû�v5|@geS®ð®×s@rs   rr   rq   rp   ro   rn   N)r5   r6   Úwr(   )gJ·dØvÖ?gÔc�Œà?gœž=¸ì?gt²—ï?©çš™™™™™¹?ç      à?çÍÌÌÌÌÌì?g®Gáz®ï?gü©ñÒMb@?r+   )r   r	   r   )r4   r5   r6   rt   r8   Údesiredr9   r9   r:   Útest_resize_regressionn   s   z+TestUnivariateSpline.test_resize_regressionc           
   	   C   sP  t jdtd�}|d }tdddƒ}| ¡ }d|t  |dk |d	k¡< | ¡ }|d |||d k < |d
 |||d
 k< ttfD ]€}|||d�}dD ]}t|||d�|d dd� t||||d�|ƒ|d dd� qGdD ]}t|||d�|d dd� t||||d�|ƒ|d dd� qidD ]}t	t
||fi t|d�¤Ž q‹dD ]}t|||d�|d dd� t||||d�|ƒ|d dd� q�q=| ¡ dd… }	t|||	ƒ}t||dd�|d dd� t||dd�|d dd� t	t
||fi tdd�¤Ž t||dd�|d dd� dD ]#}t||ƒ}t	t
||fi t|d�¤Ž t	t
tfi t|||d�¤Ž �qd S )NrJ   ©Údtyper#   éøÿÿÿé   éd   r   rK   ç      @r)   ©r5   r6   )r   Úextrapolate)Úextg¼‰Ø—²Òœ<r+   )r!   Úzeros)r"   Úraise)r#   Úconstg¼‰Ø—²Ò¬<r=   r!   r"   )r)   Úunknown)r5   r6   rƒ   )rZ   rc   Úfloatr   ÚcopyÚ
logical_orr   r   r   Úassert_raisesÚ
ValueErrorÚdictr-   r   )
r4   r5   r6   ÚxpÚxp_zerosÚxp_clipÚclsr8   rƒ   r2   r9   r9   r:   Útest_out_of_range_regression~   sF   """þ


ÿýz1TestUnivariateSpline.test_out_of_range_regressionc                 C   sF   t  d¡d }t  d¡d }t  ddd¡}d}ttt||||d� d S )Nr   rh   r   éc   é
   )r)   ée   ©Úbbox)rZ   rc   r   r‹   rŒ   r   )r4   ÚxsÚysÚknotsr—   r9   r9   r:   Útest_lsq_fpchec§   s   
ÿz$TestUnivariateSpline.test_lsq_fpchecc                 C   sx   t  ddd¡d }t  |¡}t||dd�}| d¡ d¡}t|dƒ|dƒƒ | d¡}t|dƒ|d	ƒ | d	d¡ƒ d S )
Nr   r!   éF   r#   rY   r"   ç333333Ó?g333333ã?çš™™™™™É?)rZ   r   r[   r   ÚantiderivativeÚ
derivativer   Úintegral)r4   r5   r6   r8   Úspl2r9   r9   r:   Ú"test_derivative_and_antiderivative¯   s   


ÿz7TestUnivariateSpline.test_derivative_and_antiderivativec                 C   sH   g d¢}g d¢}t ||ddd�}g d¢}t| ¡ |ƒt |¡dd� d S )	N©r!   r"   r=   é   g      !@)rw   çš™™™™™é?çÍÌÌÌÌÌô?r?   rJ   r†   r#   )rƒ   r%   )r)   r   g      à¿rP   g      #@r”   r*   r+   )r   r   r    rZ   Ú
zeros_like)r4   Úx_valuesÚy_valuesÚfr5   r9   r9   r:   Útest_derivative_extrapolation¼   s
    z2TestUnivariateSpline.test_derivative_extrapolationc                 C   sV   t  ddd¡}tdƒD ]}t||d|d�}dD ]\}}t| ||¡ƒdk s'J ‚qqd S )	NrK   rh   rO   r=   r   )r(   rƒ   ))r!   r!   )r!   rJ   )r"   rJ   ©r   r   )éþÿÿÿr   )r®   r)   r*   )rZ   r   Úranger   r/   r¡   )r4   r5   rƒ   r«   ÚaÚbr9   r9   r:   Útest_integral_out_of_boundsÆ   s   þþz0TestUnivariateSpline.test_integral_out_of_boundsc                 C   s,  t jdtd�}|d }t  |¡}t||dd�}| ¡ dd… }|d }t jt jt j fD ]g}||d< tt	tfi t
||dd�¤Ž tt	tfi t
||dd�¤Ž tt	tfi t
|||dd	�¤Ž ||d< ||d< tt	tfi t
|||dd
�¤Ž tt	tfi t
|||dd
�¤Ž tt	tfi t
||||dd�¤Ž q,d S )Nr”   r{   r#   T©Úcheck_finiter=   r)   ©r5   r6   r´   )r5   r6   r2   r´   )r5   r6   rt   r´   ©r5   r6   r2   rt   r´   )rZ   rc   rˆ   Ú	ones_liker   r-   ÚnanÚinfr‹   rŒ   r�   r   r   )r4   r5   r6   rt   r8   r2   Úy_endÚzr9   r9   r:   Útest_nanÐ   s:   

ÿ
ÿ
ÿ
ÿ
ÿ
ÿòzTestUnivariateSpline.test_nanc              	   C   sÂ   t jdtd�}|d }t jdtd�}|d |d< |d }t  |¡}t||dd�}| ¡ dd… }t|||ddd	� t||||dd
� tttfi t	||ddd�¤Ž ttt
fi t	||dd�¤Ž d S )Nr”   r{   r#   r   r!   Tr³   r=   )r5   r6   rt   r(   r´   r¶   )r5   r6   r(   r´   rµ   )rZ   rc   rˆ   r·   r   r-   r   r‹   rŒ   r�   r   ©r4   ÚxxÚyyr5   r6   rt   r8   r2   r9   r9   r:   Útest_strictly_increasing_xê   s    

ÿ

ÿz/TestUnivariateSpline.test_strictly_increasing_xc              
   C   sÀ   t jdtd�}|d }t jdtd�}|d d |d< |d }t  |¡}t||dd�}| ¡ dd	… }tttfi t||dd
�¤Ž ttt	fi t||dd
�¤Ž ttt
fi t||||dd�¤Ž d S )Nr”   r{   r#   r   rh   r!   Tr³   r=   rµ   r¶   )rZ   rc   rˆ   r·   r   r-   r‹   rŒ   r�   r   r   r½   r9   r9   r:   Útest_increasing_xÿ   s"   

ÿ
ÿ

ÿz&TestUnivariateSpline.test_increasing_xc                 C   s”  t tƒ�}g d¢}g d¢}t||ƒ W d   ƒ n1 sw   Y  dt|jƒv s*J ‚t tƒ�}g d¢}g d¢}g d¢}t|||d� W d   ƒ n1 sLw   Y  dt|jƒv sZJ ‚t tƒ�}d}t|||d	� W d   ƒ n1 srw   Y  d
t|jƒv s€J ‚t tƒ�}t||dd� W d   ƒ n1 s–w   Y  dt|jƒv s¤J ‚t tƒ�}t||dd� W d   ƒ n1 sºw   Y  dt|jƒv sÈJ ‚d S )Nr¤   ©rw   r¦   r§   r?   ú!x and y should have a same length©rw   r¦   r§   r?   gffffff@©rg   rh   rh   rh   ©rt   ú%x, y, and w should have a same lengthr)   r–   úbbox shape should be (2,)r¥   r$   úk should be 1 <= k <= 5rg   rY   ús should be s >= 0.0)r‹   rŒ   r   ÚstrÚvalue©r4   Úinfor©   rª   Úw_valuesr—   r9   r9   r:   Ú(test_invalid_input_for_univariate_spline  s4   
ý
ü
þ
ÿ
ÿz=TestUnivariateSpline.test_invalid_input_for_univariate_splinec                 C   sL  t tƒ�}g d¢}g d¢}t||ƒ W d   ƒ n1 sw   Y  dt|jƒv s*J ‚t tƒ�}g d¢}g d¢}g d¢}t|||d� W d   ƒ n1 sLw   Y  dt|jƒv sZJ ‚t tƒ�}d}t|||d	� W d   ƒ n1 srw   Y  d
t|jƒv s€J ‚t tƒ�}t||dd� W d   ƒ n1 s–w   Y  dt|jƒv s¤J ‚d S )Nr¤   rÂ   rÃ   rÄ   rÅ   rÆ   rÇ   r)   r–   rÈ   r¥   r$   rÉ   )r‹   rŒ   r   rË   rÌ   rÍ   r9   r9   r:   Ú5test_invalid_input_for_interpolated_univariate_spline-  s,   
ý
ü
þ
ÿzJTestUnivariateSpline.test_invalid_input_for_interpolated_univariate_splinec           	      C   sÆ  g d¢}g d¢}t ||dd�}| ¡ dd… }ttƒ�}g d¢}g d¢}t|||ƒ W d   ƒ n1 s4w   Y  dt|jƒv sBJ ‚ttƒ�}g d¢}g d¢}g d	¢}t||||d
� W d   ƒ n1 sew   Y  dt|jƒv ssJ ‚d}tt|d��}d}t||||d� W d   ƒ n1 s�w   Y  ttƒ�}d}t||||d� W d   ƒ n1 s®w   Y  dt|jƒv s¼J ‚ttƒ�}t|||dd� W d   ƒ n1 sÓw   Y  dt|jƒv sáJ ‚d S )Nr¤   rÄ   Tr³   r#   r=   rÂ   rÃ   )rh   rh   rh   rh   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Ì   )	r4   r©   rª   r8   Út_valuesrÎ   rÏ   Úmessager—   r9   r9   r:   Ú,test_invalid_input_for_lsq_univariate_splineE  s>   
ý
üþ
þ
ÿzATestUnivariateSpline.test_invalid_input_for_lsq_univariate_splinec                 C   s†   t  g d¢¡}t  g d¢¡}t  g d¢¡}t  ddg¡}t||||d�}t| ¡ | ¡ | ¡ | ¡ d�}t|g d¢ƒ|g d¢ƒƒ d S )Nr¤   rÄ   )rh   rh   rh   rh   rh   rÓ   r   )r5   r6   rt   r—   ru   )rZ   r	   r   Útolistr   )r4   r©   rª   rÏ   r—   Úspl1r¢   r9   r9   r:   Útest_array_like_inputg  s   ÿÿ
ÿz*TestUnivariateSpline.test_array_like_inputc                 C   sf   t dƒ}g d¢}tƒ �}| td¡}t||dd� t|ƒdks!J ‚W d   ƒ d S 1 s,w   Y  d S )Ném   )mrK   rK   rK   rK   rK   çÍÌÌÌÌÌ%@rK   ç      &@rK   rK   rK   rÛ   rK   rK   rK   rK   rK   rK   rÛ   rK   rK   rK   rÜ   rK   rK   rK   rÛ   rK   rK   rK   ç      %@rK   rK   rK   çffffff%@rK   rK   rK   rÜ   rK   rK   rK   rK   rK   rK   rÛ   rK   rK   rÞ   rK   rK   rK   ç333333%@rK   rK   rK   rÝ   rK   rK   rÞ   rK   rK   rÝ   rK   rK   g      '@rK   rK   rK   rÞ   rK   rK   rÞ   rK   rK   rÛ   rK   rK   çš™™™™™%@rK   rK   rK   rÞ   rK   rK   rß   rK   rK   rK   çÍÌÌÌÌÌ$@rK   rK   rß   rK   rK   rÝ   rK   rK   rK   rÞ   rK   rK   rK   rá   rK   rK   rK   rà   rK   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   r1   )r4   r5   r6   ÚsupÚrr9   r9   r:   Útest_fpknot_oob_crashv  s   þ"öz*TestUnivariateSpline.test_fpknot_oob_crashc                 C   sX   t jdtd�}|d }t jdtd�}|d |d< t||dd�}dd	„ }td
|||ƒ d S )Nr   r{   r#   r   r!   Tr³   c                 S   s   ||ƒ d S )Nr9   )Ú_Úinterpr5   r9   r9   r:   Ú	worker_fn›  rD   z8TestUnivariateSpline.test_concurrency.<locals>.worker_fnr”   )rZ   rc   rˆ   r   r   )r4   r¾   r¿   r5   r8   ré   r9   r9   r:   Útest_concurrency’  s   z%TestUnivariateSpline.test_concurrencyN)rE   rF   rG   r;   rA   rB   rM   rU   rW   r\   r_   rf   rz   r’   r›   r£   r¬   r²   r¼   rÀ   rÁ   rÐ   rÑ   rÖ   rÙ   ÚpytestÚmarkÚthread_unsaferæ   rê   r9   r9   r9   r:   r      s4    	
)

"
r   c                   @   sl   e Zd Zejjdd„ ƒZdd„ Zejjdd„ ƒZejjdd„ ƒZ	d	d
„ Z
ejjdd„ ƒZejjdd„ ƒZdS )ÚTestLSQBivariateSplinec           
   
   C   s®   g d¢}g d¢}g d¢}d}d| d| g}d| d| g}t ƒ �!}| td¡}t|||||ddd�}	t|ƒdks;J ‚W d   ƒ n1 sEw   Y  t|	d	d	ƒt d
¡ƒ d S )N©	r!   r!   r!   r"   r"   r"   r#   r#   r#   ©	r!   r"   r#   r!   r"   r#   r!   r"   r#   ©	r#   r#   r#   r#   r#   r#   r#   r#   r#   rv   r!   r#   ú
The coefficients of the spline©ÚkxÚkyr"   ç      @)r   râ   rã   r   r1   r   rZ   Úasarray©
r4   r5   r6   r»   r(   ÚtxÚtyrä   rå   r7   r9   r9   r:   r;   £  s   ýz+TestLSQBivariateSpline.test_linear_constantc              
   C   s‚  g d¢}g d¢}g d¢}d}d| d| g}d| d| g}t ƒ �}| td¡ t|||||ddd�}W d   ƒ n1 s=w   Y  | ¡ \}}t|d d	… |dd … ƒD ]i\}	}
t|d d	… |dd … ƒD ]W\}}d
D ]P}dD ]K}|	d|  |
|  }|d|  ||  }||	|ƒ
 d|  d|  ||
|ƒ| d|   ||	|ƒd|  |  ||
|ƒ| |  }t|||ƒ|ƒ qpqlqfqUd S )Nrï   rð   ©	r   rO   r`   r#   r=   rO   r!   r#   r=   rv   r!   r#   rò   ró   r)   )rv   rw   rx   )r�   çš™™™™™Ù?gffffffæ?)r   Úfilterrã   r   r-   Úzipr   )r4   r5   r6   r»   r(   rù   rú   rä   r7   ÚxaÚxbÚyaÚybr2   rŽ   ÚypÚzpr9   r9   r:   Útest_bilinearity²  s:   ý""ÿþýùÿÿÿz'TestLSQBivariateSpline.test_bilinearityc              
   C   sd  g d¢}g d¢}t g d¢ƒ}d}d| d| g}d| d| g}tƒ �!}| td¡}t|||||ddd�}	t|ƒdks=J ‚W d   ƒ n1 sGw   Y  |	 ¡ \}}|	||ƒ}
d	t|ƒd d …d f t|ƒd d d …f  |
d d
…d d
…f |
dd …d d
…f  |
d d
…dd …f  |
dd …dd …f    ¡  }t	t
 |	 |d |d
 |d |d
 ¡¡t
 |¡ƒ d S )N)	r!   r!   r!   r"   r"   r"   r`   r`   r`   rð   rû   rv   r!   r#   rò   ró   ç      Ð?r)   r   )r	   r   râ   rã   r   r1   r-   r
   Úsumr   rZ   r÷   r¡   )r4   r5   r6   r»   r(   rù   rú   rä   rå   r7   ÚtzÚtrpzr9   r9   r:   Útest_integralË  s*   ý
(Nÿÿ&ÿz$TestLSQBivariateSpline.test_integralc           
   
   C   sÈ   g d¢}g d¢}g d¢}d}d| d| g}d| d| g}t ƒ �!}| td¡}t|||||ddd�}	t|ƒdks;J ‚W d   ƒ n1 sEw   Y  t|	g g ƒt d	¡ƒ t|	g g d
d�t d¡ƒ d S )Nrï   rð   rñ   rv   r!   r#   rò   ró   r­   F©Úgrid©r   )r   râ   rã   r   r1   r   rZ   r„   rø   r9   r9   r:   rU   à  s   ýz'TestLSQBivariateSpline.test_empty_inputc              
   C   s¾  d}d| d| g}d| d| g}t tƒ�$}t dd¡}t dd¡}tjdddd�}t|||||ƒ W d   ƒ n1 s=w   Y  dt|jƒv sKJ ‚t tƒ�,}t dd¡}t dd¡}t dd¡}tjddd	d�}t||||||d
� W d   ƒ n1 s~w   Y  dt|jƒv sŒJ ‚t tƒ�}t dd¡}t||||||d
� W d   ƒ n1 s«w   Y  dt|jƒv s¹J ‚t tƒ�}d}	t||||||	d� W d   ƒ n1 sÔw   Y  dt|jƒv sâJ ‚t tƒ�}t|||||ddd� W d   ƒ n1 süw   Y  dt|jƒv �sJ ‚t tƒ�}
t|||||dd� W d   ƒ n	1 �s%w   Y  dt|
jƒv �s4J ‚t tƒ�}
t|||||dd� W d   ƒ n	1 �sNw   Y  dt|
jƒv �s]J ‚d S )Nrv   r!   r#   rh   ç      $@r”   ©Únumú%x, y, and z should have a same lengthé   rÆ   ú(x, y, z, and w should have a same lengthrg   ú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)rK   ©Úepsúeps should be between (0, 1))r‹   rŒ   rZ   r   r   rË   rÌ   )r4   r(   rù   rú   rÎ   r5   r6   r»   rt   r—   Úexc_infor9   r9   r:   Útest_invalid_inputñ  sT   
ü
û
þ
þ
ÿ
ÿ
ÿ
ÿz)TestLSQBivariateSpline.test_invalid_inputc              
   C   s  d}t  d| d| g¡}t  d| d| g¡}t  dd¡}t  dd¡}t  dd¡}t  dd¡}t  g d¢¡}tƒ �D}	|	 td¡}
t|||||||d�}t| ¡ | ¡ | ¡ | ¡ | ¡ | ¡ |d�}t|d	d	ƒ|d	d	ƒƒ t	|
ƒd
ksvJ ‚W d   ƒ d S 1 s�w   Y  d S )Nrv   r!   r#   rh   r  )rh   r  rh   r  rò   )rt   r—   ra   r"   )
rZ   r	   r   r   râ   rã   r   r×   r   r1   )r4   r(   rù   rú   r5   r6   r»   rt   r—   rä   rå   rØ   r¢   r9   r9   r:   rÙ     s$   þ"÷z,TestLSQBivariateSpline.test_array_like_inputc           	      C   s¾   t jdd…dd…f \}}| ¡ }| ¡ }dt  |¡ }t  ddd¡}t  ddd¡}tƒ �}| td¡}t|||||ƒ}t	|ƒd	ksDJ ‚W d
  ƒ n1 sNw   Y  t
|||dd�|ƒ d
S )zkTest for the case when the input knot-location arrays in x and y are
        of different lengths.
        r   r   rö   rv   g     €X@é   é!   rò   r!   NFr  )rZ   ÚmgridÚravelr·   r   r   râ   rã   r   r1   r   )	r4   r5   r6   r»   rù   rú   rä   rå   r7   r9   r9   r:   Útest_unequal_length_of_knots2  s   ýz3TestLSQBivariateSpline.test_unequal_length_of_knotsN)rE   rF   rG   rë   rì   rí   r;   r  r
  rU   r  rÙ   r!  r9   r9   r9   r:   rî   ¡  s    


+
rî   c                   @   sD   e Zd Zdd„ Zdd„ Zejjdd„ ƒZdd„ Z	d	d
„ Z
dd„ ZdS )ÚTestSmoothBivariateSplinec                 C   sš   g d¢}g d¢}g d¢}t |||ddd�}| ¡ D ]	}t|g d¢ƒ qt| ¡ g d¢ƒ t| ¡ ƒdk s6J ‚t|g d	¢dd
gƒddgddgddggƒ d S )Nrï   rð   rñ   r!   ró   )r!   r!   r#   r#   )r#   r#   r#   r#   r*   r&   r'   r#   )r   r-   r   r.   r/   r0   ©r4   r5   r6   r»   r7   r2   r9   r9   r:   r;   F  s   .z.TestSmoothBivariateSpline.test_linear_constantc                 C   s    g d¢}g d¢}g d¢}t |||ddd�}| ¡ D ]}t|t g d¢¡ƒ qt| ¡ g d¢ƒ t| ¡ ƒdk s9J ‚t|g d	¢dd
gƒddgddgddggƒ d S )Nrï   rð   )	r   r   r   r"   r"   r"   r=   r=   r=   r!   ró   )rh   r!   r#   r#   )r   r   r=   r=   r*   r&   r'   r   r"   )	r   r-   r   rZ   r÷   r   r.   r/   r0   r#  r9   r9   r:   rB   R  s   .z(TestSmoothBivariateSpline.test_linear_1dc              
   C   sX  g d¢}g d¢}t g d¢ƒ}tƒ �}| td¡ t|||dddd�}W d   ƒ n1 s,w   Y  g d¢}g d	¢}|||ƒ}d
t|ƒd d …d f t|ƒd d d …f  |d d…d d…f |dd …d d…f  |d d…dd …f  |dd …dd …f    ¡  }	tt 	| 
|d |d |d |d ¡¡t 	|	¡ƒ t|||dddd�}
tt 	|
 
|d |d |d |d ¡¡t 	|	¡dd� ||d d… |d d… ƒ}d
t|d d… ƒd d …d f t|d d… ƒd d d …f  |d d…d d…f |dd …d d…f  |d d…dd …f  |dd …dd …f    ¡  }	tt 	| 
|d |d |d |d ¡¡t 	|	¡ƒ d S )N)	r!   r!   r!   r"   r"   r"   r=   r=   r=   rð   rû   z
The required storage spacer!   r   )rô   rõ   r(   )r!   r"   r=   r    r  r)   r"   )Údecimalr®   )r	   r   rý   rã   r   r
   r  r   rZ   r÷   r¡   )r4   r5   r6   r»   rä   r7   rù   rú   r  r	  Úlut2r9   r9   r:   r
  ]  s@   ý
(Nÿÿ&ÿ&þ8Nÿÿ&ÿz'TestSmoothBivariateSpline.test_integralc           
      C   s|   t  ddd¡}t  ddd¡}|| }t  ddd¡}t  ddd¡}t|||ƒ}t|||ƒ}t|||ƒ}|||ƒ}	t||	ƒ d S )Nr®   r"   éP   r)   r!   r   )rZ   r   r   r   r   r   )
r4   r5   r6   r»   ÚxiÚyird   Úres1Úinterp_Úres2r9   r9   r:   Útest_rerun_lwrk2_too_small|  s   
z4TestSmoothBivariateSpline.test_rerun_lwrk2_too_smallc                 C   sÊ  t tƒ�"}t dd¡}t dd¡}tjdddd�}t|||ƒ W d   ƒ n1 s)w   Y  dt|jƒv s7J ‚t tƒ�*}t dd¡}t dd¡}t dd¡}tjdddd�}t||||d� W d   ƒ n1 shw   Y  dt|jƒv svJ ‚t tƒ�}t d	d¡}t||||d� W d   ƒ n1 s“w   Y  d
t|jƒv s¡J ‚t tƒ�}d}t||||d� W d   ƒ n1 sºw   Y  dt|jƒv sÈJ ‚t tƒ�}t|||ddd� W d   ƒ n1 sàw   Y  dt|jƒv sîJ ‚t tƒ�}t|||d	d� W d   ƒ n	1 �sw   Y  dt|jƒv �sJ ‚t tƒ�}t|||dd� W d   ƒ n	1 �s-w   Y  dt|jƒv �s<J ‚t tƒ�}t|||dd� W d   ƒ n	1 �sTw   Y  dt|jƒv �scJ ‚d S )Nrh   r  r”   r  r  r  rÆ   r  rg   r  r  r–   r  ró   r  rY   rÊ   rK   r  r  )r‹   rŒ   rZ   r   r   rË   rÌ   )r4   rÎ   r5   r6   r»   rt   r—   r  r9   r9   r:   r  ‹  sV   
ü
û
þ
þ
ÿÿ
ÿ
ÿ
ÿz,TestSmoothBivariateSpline.test_invalid_inputc              	   C   s    t  g d¢¡}t  g d¢¡}t  g d¢¡}t  g d¢¡}t  g d¢¡}t|||||ddd�}t| ¡ | ¡ | ¡ | ¡ | ¡ ddd�}t|d	d
ƒ|d	d
ƒƒ d S )Nrï   rð   rñ   )	r!   r!   r!   r!   r!   r!   r!   r!   r!   )rh   rö   rh   rö   r!   )rt   r—   rô   rõ   )r—   rt   rô   rõ   rv   rw   )rZ   r	   r   r×   r   )r4   r5   r6   r»   rt   r—   rØ   r¢   r9   r9   r:   rÙ   ·  s   þz/TestSmoothBivariateSpline.test_array_like_inputN)rE   rF   rG   r;   rB   rë   rì   rí   r
  r,  r  rÙ   r9   r9   r9   r:   r"  E  s    
,r"  c                   @   ó4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestLSQSphereBivariateSplinec                 C   sê   d\}}t d|d  dd|d   |ƒt }t d|d  dd|d   |ƒd t }t|jd |jd fƒ}|d d d… }|d d d… }|d d d…d d d…f }t||ƒ\}	}
t|	 ¡ |
 ¡ |j ¡ ||ƒ}|| _|| _	||| _
| _d S )N©rœ   éZ   rw   r!   ra   r   rJ   )r   r   r   r   r   r   r   ÚTÚlut_lsqÚdataÚnew_lonsÚnew_lats)r4   ÚnthetaÚnphiÚthetaÚphir3  ÚknotstÚknotspÚknotdataÚlatsÚlonsr2  r9   r9   r:   Úsetup_methodÇ  s   $(ÿz)TestLSQSphereBivariateSpline.setup_methodc                 C   s2   t | j ¡ ƒdk sJ ‚t|  | j| j¡| jƒ d S )Nr*   )r/   r2  r0   r   r5  r4  r3  ©r4   r9   r9   r:   r;   Ù  s   ÿz1TestLSQSphereBivariateSpline.test_linear_constantc                 C   ó8   t |  g g ¡t d¡ƒ t | jg g dd�t d¡ƒ d S ©Nr­   Fr  r  )r   r2  rZ   r„   r@  r9   r9   r:   rU   Þ  ó    z-TestLSQSphereBivariateSpline.test_empty_inputc              	   C   sn  d\}}t d|d  dd|d   |ƒt }t d|d  dd|d   |ƒd t }t|jd |jd fƒ}|d d d… }|d d d… }ttƒ�'}t dd|d	�t }	t|	|ƒ\}
}t|
 ¡ | ¡ |j	 ¡ ||ƒ W d   ƒ n1 srw   Y  d
t
|jƒv s€J ‚ttƒ�'}t dd|d	�t }	t|	|ƒ\}
}t|
 ¡ | ¡ |j	 ¡ ||ƒ W d   ƒ n1 s®w   Y  d
t
|jƒv s¼J ‚ttƒ�)}t dd|d	�d t }t||ƒ\}}t| ¡ | ¡ |j	 ¡ ||ƒ W d   ƒ n1 sìw   Y  dt
|jƒv súJ ‚ttƒ�)}t dd|d	�d t }t||ƒ\}}t| ¡ | ¡ |j	 ¡ ||ƒ W d   ƒ n	1 �s+w   Y  dt
|jƒv �s:J ‚t||ƒ\}}ttƒ� }t |¡}d|d< t| ¡ | ¡ |j	 ¡ ||ƒ W d   ƒ n	1 �siw   Y  dt
|jƒv �sxJ ‚ttƒ� }t |¡}t|d< t| ¡ | ¡ |j	 ¡ ||ƒ W d   ƒ n	1 �s w   Y  dt
|jƒv �s¯J ‚ttƒ� }t |¡}d|d< t| ¡ | ¡ |j	 ¡ ||ƒ W d   ƒ n	1 �s×w   Y  dt
|jƒv �sæJ ‚ttƒ�"}t |¡}dt |d< t| ¡ | ¡ |j	 ¡ ||ƒ W d   ƒ n	1 �sw   Y  dt
|jƒv �sJ ‚ttƒ�}tg d¢ƒ}t| ¡ | ¡ |j	 ¡ |||d� W d   ƒ n	1 �sFw   Y  dt
|jƒv �sUJ ‚ttƒ�}t| ¡ | ¡ |j	 ¡ ||dd� W d   ƒ n	1 �svw   Y  dt
|jƒv �s…J ‚ttƒ�}t| ¡ | ¡ |j	 ¡ ||dd� W d   ƒ n	1 �s¦w   Y  dt
|jƒv �sµJ ‚d S )Nr/  rw   r!   ra   r   rJ   çš™™™™™¹¿rh   r  útheta should be between [0, pi]rv   çš™™™™™ñ?úphi should be between [0, 2pi]rK   ztt should be between (0, pi)ztp should be between (0, 2pi)r"   ©	rg   rh   r'   rw   rh   r'   rw   rh   rh   rÆ   r  r  r  )r   r   r   r   r‹   rŒ   r   r   r   r1  rË   rÌ   rZ   r‰   r	   )r4   r6  r7  r8  r9  r3  r:  r;  r  Úinvalid_thetaÚinvalid_latsr>  Úinvalid_phir=  Úinvalid_lonsÚinvalid_knotstÚinvalid_knotspÚ	invalid_wr9   r9   r:   r  â  s¼   ÿÿ(
ÿý
ÿý
ÿý
ÿý

ÿý

ÿý

ÿý

ÿý
ÿþ
ÿÿ
ÿÿz/TestLSQSphereBivariateSpline.test_invalid_inputc                 C   s  d\}}t d|d  dd|d   |ƒt }t d|d  dd|d   |ƒd t }t||ƒ\}}t|jd |jd fƒ}|d d d… }|d d d… }	t| ¡ jd ƒ}
t| ¡ | ¡ |j ¡ ||	|
d�}t| ¡  ¡ | ¡  ¡ |j ¡  ¡ | ¡ |	 ¡ |
 ¡ d�}t	|ddƒ|ddƒƒ d S )	Nr/  rw   r!   ra   r   rJ   rÆ   rh   )
r   r   r   r   r   r   r   r1  r×   r   )r4   r6  r7  r8  r9  r=  r>  r3  r:  r;  rt   rØ   r¢   r9   r9   r:   rÙ   6  s8   ÿÿÿÿÿÿ
üz2TestLSQSphereBivariateSpline.test_array_like_inputN©rE   rF   rG   r?  r;   rU   r  rÙ   r9   r9   r9   r:   r.  Æ  s    Tr.  c                   @   r-  )ÚTestSmoothSphereBivariateSplinec                 C   s’   t dt dt dt dt dt dt dt dt dt g	ƒ}t dt tdt dt tdt dt tdt g	ƒ}t g d¢ƒ}t|||dd�| _d S )Nr  rw   ç      è?r'   rñ   ç    _ BrY   )r	   r   r   r7   )r4   r8  r9  rå   r9   r9   r:   r?  P  s   ,ÿ&ÿz,TestSmoothSphereBivariateSpline.setup_methodc                 C   sF   t | j ¡ ƒdk sJ ‚t|  g d¢ddg¡ddgddgddggƒ d S )Nr*   r&   r!   r'   r#   )r/   r7   r0   r   r@  r9   r9   r:   r;   X  s   ÿz4TestSmoothSphereBivariateSpline.test_linear_constantc                 C   rA  rB  )r   r7   rZ   r„   r@  r9   r9   r:   rU   ]  rC  z0TestSmoothSphereBivariateSpline.test_empty_inputc                 C   sÔ  t dt dt dt dt dt dt dt dt dt g	ƒ}t dt tdt dt tdt dt tdt g	ƒ}t g d¢ƒ}ttƒ�/}t dt dt dt dt dt dt dt dt dt g	ƒ}t|||dd� W d   ƒ n1 stw   Y  d	t|jƒv s‚J ‚ttƒ�/}t dt dt dt dt dt dt dt dt d
t g	ƒ}t|||dd� W d   ƒ n1 s¸w   Y  d	t|jƒv sÆJ ‚ttƒ�)}t dt tdt dt tdt dt tdt g	ƒ}t|||dd� W d   ƒ n1 söw   Y  dt|jƒv �sJ ‚ttƒ�)}t dt tdt dt tdt dt tdt g	ƒ}t|||dd� W d   ƒ n	1 �s6w   Y  dt|jƒv �sEJ ‚ttƒ�}t g d¢ƒ}t||||dd� W d   ƒ n	1 �sdw   Y  dt|jƒv �ssJ ‚ttƒ�}t|||dd� W d   ƒ n	1 �s‹w   Y  dt|jƒv �sšJ ‚ttƒ�}t|||dd� W d   ƒ n	1 �s²w   Y  dt|jƒv �sÁJ ‚ttƒ�}t|||dd� W d   ƒ n	1 �sÙw   Y  dt|jƒv �sèJ ‚d S )Nr  rw   rR  r'   rñ   rD  rS  rY   rE  rF  rG  rh   gÍÌÌÌÌÌ @rH  ©rt   r(   r  rg   ús should be positiver  r  )r	   r   r‹   rŒ   r   rË   rÌ   )r4   r8  r9  rå   r  rI  rK  rO  r9   r9   r:   r  a  sl   &ÿ&ÿ
þü
þü
ÿý
ÿý
þ
ÿ
ÿ
ÿz2TestSmoothSphereBivariateSpline.test_invalid_inputc                 C   sÞ   t  dt dt dt dt dt dt dt dt dt g	¡}t  dt tdt dt tdt dt tdt g	¡}t  g d¢¡}t  g d¢¡}t||||dd�}t| ¡ | ¡ | ¡ | ¡ dd�}t|d	d	ƒ|d	d	ƒƒ d S )
Nr  rw   rR  r'   rñ   )	rh   rh   rh   rh   rh   rh   rh   rh   rh   rS  rT  rh   )rZ   r	   r   r   r×   r   )r4   r8  r9  rå   rt   rØ   r¢   r9   r9   r:   rÙ   “  s   "ÿ&ÿÿz5TestSmoothSphereBivariateSpline.test_array_like_inputNrP  r9   r9   r9   r:   rQ  O  s    2rQ  c                   @   sd   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )ÚTestRectBivariateSplinec                 C   s^   t g d¢ƒ}t g d¢ƒ}t g d¢g d¢g d¢g d¢g d¢gƒ}t|||ƒ}t|||ƒ|ƒ d S )NrI   ©r!   r"   r!   r"   r!   ©r!   r"   r#   r"   r!   ©r!   r"   r"   r"   r!   ©r	   r   r   ©r4   r5   r6   r»   r7   r9   r9   r:   Útest_defaults¥  s
   &z%TestRectBivariateSpline.test_defaultsc                    s�   t g d¢ƒ}t g d¢ƒ}t g d¢g d¢g d¢g d¢g d¢gƒ}t|||ƒ‰ g d¢}g d¢}ˆ  ||¡}t ‡ fdd„t||ƒD ƒƒ}t||ƒ d S )	NrI   rW  rX  rY  )r!   çffffff@g333333@rw   çffffff
@ç333333ó?r#   )r!   r^  r_  r€   g      @rh   r#   c                    ó   g | ]\}}ˆ ||ƒd  ‘qS ©r­   r9   ©Ú.0rŽ   r  ©r7   r9   r:   Ú
<listcomp>µ  ó    z9TestRectBivariateSpline.test_evaluate.<locals>.<listcomp>)r	   r   Úevrþ   r   )r4   r5   r6   r»   r'  r(  ÚziÚzi2r9   rd  r:   Útest_evaluate¬  s   &z%TestRectBivariateSpline.test_evaluatec                 C   s  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	 }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	 }t|||ƒ}t|||dd�|ƒ t|||dd�|ƒ t|||ddd�|ƒ d S )NrI   rW  rX  rY  ©r   r   iìÿÿÿr   r   ©r   r   r~   r   r   ©r   r   r=   r   r   ©r   r   iõÿÿÿr   r   rb   ©r=   r)   r   r!   éüÿÿÿ©r   r'   r   g      ø¿r   ©r"   r  r   ç      Ð¿r®   ©é(   içÿÿÿr   é   iØÿÿÿ©iæÿÿÿg     @0@r   g     @0Àé   ©r}   rJ   r   éûÿÿÿr`   ©é   g     €+Àr   g     €+@iêÿÿÿr!   ©Údx©Údy)r~  r€  rZ  ©r4   r5   r6   r»   r~  r€  Údxdyr7   r9   r9   r:   Útest_derivatives_grid¹  s(   &ÿÿÿÿÿz-TestRectBivariateSpline.test_derivatives_gridc                 C   sº   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 }t|||ƒ}t|||d	d
d�|ƒ t|||d	d
d�|ƒ t|||d	d	d
d�|ƒ d S )NrI   rW  rX  rY  ©r   r   gUUUUUUå?r   r   ©r=   r)   r   rs  rp  ©é    éA   r   é7   é    ç      8@r!   F)r~  r  )r€  r  ©r~  r€  r  rZ  r�  r9   r9   r:   r_   È  s   &z(TestRectBivariateSpline.test_derivativesc                 C   s  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	 }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	 }t|||ƒ}t| dd¡||ƒ|ƒ t| dd¡||ƒ|ƒ t| dd¡||ƒ|ƒ d S )NrI   rW  rX  rY  rk  rl  rm  rn  rb   ro  rq  rr  rt  rw  ry  r{  r!   r   ©r	   r   r   Úpartial_derivativer�  r9   r9   r:   Ú#test_partial_derivative_method_gridÔ  sD   üüüüüüz;TestRectBivariateSpline.test_partial_derivative_method_gridc                 C   sÊ   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 }t|||ƒ}t| d	d
¡||dd�|ƒ t| d
d	¡||dd�|ƒ t| d	d	¡||dd�|ƒ d S )NrI   rW  rX  rY  r„  r…  r†  r‹  r!   r   Fr  r�  r�  r9   r9   r:   Útest_partial_derivative_methodð  s6   üÿþÿþÿþz6TestRectBivariateSpline.test_partial_derivative_methodc                 C   sn   t g d¢td�}| ¡ }t|j|jfƒ}t|||ƒ}ttƒ� | dd¡ W d   ƒ d S 1 s0w   Y  d S )N)r   r!   r"   r#   r=   r{   r=   r!   )	r	   rˆ   r‰   r   Úsizer   r‹   rŒ   rŽ  r[  r9   r9   r:   Ú'test_partial_derivative_order_too_large  s   
"ÿz?TestRectBivariateSpline.test_partial_derivative_order_too_largec                 C   s€   t g d¢ƒ}t g d¢ƒ}t g d¢g d¢g d¢g d¢g d¢gƒ}t|||ƒ}t|||ƒ||d d …d f |d d d …f dd�ƒ d S )NrI   rW  rX  rY  Fr  )r	   r   r   r[  r9   r9   r:   Útest_broadcast  s
   &6z&TestRectBivariateSpline.test_broadcastc                 C   sî  t tƒ�-}tg d¢ƒ}tg d¢ƒ}tg d¢g d¢g d¢g d¢g d¢gƒ}t|||ƒ W d   ƒ n1 s4w   Y  dt|jƒv sBJ ‚t tƒ�-}tg d¢ƒ}tg d¢ƒ}tg d¢g d¢g d¢g d¢g d¢gƒ}t|||ƒ W d   ƒ n1 svw   Y  dt|jƒv s„J ‚t tƒ�*}tg d¢ƒ}tg d¢ƒ}tg d¢g d¢g d¢g d¢gƒ}t|||ƒ W d   ƒ n1 sµw   Y  d	t|jƒv sÃJ ‚t tƒ�-}tg d¢ƒ}tg d¢ƒ}tg d
¢g d
¢g d¢g d¢g d
¢gƒ}t|||ƒ W d   ƒ n1 s÷w   Y  dt|jƒv �sJ ‚t tƒ�1}tg d¢ƒ}tg d¢ƒ}tg d¢g d¢g d¢g d¢g d¢gƒ}d}t||||d� W d   ƒ n	1 �s?w   Y  dt|jƒv �sNJ ‚t tƒ�}t|||dd� W d   ƒ n	1 �sfw   Y  dt|jƒv �suJ ‚d S )N)r¥   r"   r#   r=   rJ   rI   rW  rX  rY  úx must be strictly increasing)r"   r"   r#   r=   rJ   ú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  rg   rY   rÊ   )r‹   rŒ   r	   r   rË   rÌ   )r4   rÎ   r5   r6   r»   r—   r9   r9   r:   r    sl   
ÿû
ÿû
ÿûÿ
ÿû
ÿ
ÿú
ÿz*TestRectBivariateSpline.test_invalid_inputc                 C   s”   t g d¢ƒ}t g d¢ƒ}t g d¢g d¢g d¢g d¢g d¢gƒ}t g d¢ƒ}t||||d�}t| ¡ | ¡ | ¡ | ¡ d�}t|ddƒ|ddƒƒ d S )NrI   rW  rX  rY  )r!   rJ   r!   rJ   r–   rh   )r	   r   r×   r   )r4   r5   r6   r»   r—   rØ   r¢   r9   r9   r:   rÙ   F  s   ÿÿz-TestRectBivariateSpline.test_array_like_inputc                 C   s0  d}t j dt j|¡}t j ddt j |¡}t  |¡}t|||dd�}d}d}t  |¡| t j }t  |¡| d t j }	|||	ƒ | ¡ }
d|
d< tt	ƒ�}||
|	ƒ W d   ƒ n1 s^w   Y  d	t
|jƒv slJ ‚|	 ¡ }d|d< tt	ƒ�}|||ƒ W d   ƒ n1 sˆw   Y  d
t
|jƒv s–J ‚d S )Nr  r   r"   r]   rY   r¥   r#   çü©ñÒMbP?r”  r•  )rZ   ÚrandomÚuniformr   r   r   rc   r‰   r‹   rŒ   rË   rÌ   )r4   ÚNSampÚThetaÚPhiÚDataÚInterpolatorÚNLonÚNLatÚGridPosLatsÚGridPosLonsÚnonGridPosLatsr  ÚnonGridPosLonsr9   r9   r:   Útest_not_increasing_inputR  s,   


ÿ
ÿz1TestRectBivariateSpline.test_not_increasing_inputN)rE   rF   rG   r\  rj  rƒ  r_   r�  r�  r’  r“  r  rÙ   r¤  r9   r9   r9   r:   rV  ¤  s    1rV  c                   @   sT   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ ZdS )ÚTestRectSphereBivariateSplinec              	   C   sv   t ddt d dƒ}t dtd dƒ}tg d¢g d¢g d¢g d¢g d¢g d¢g d¢gƒ}t|||ƒ}t|||ƒ|ƒ d S ©Nç{®Gáz„?r"   rO   ©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   ©r4   r6   r5   r»   r7   r9   r9   r:   r\  q  s   þz+TestRectSphereBivariateSpline.test_defaultsc              	      s¨   t ddt d dƒ}t dtd dƒ}tg d¢g d¢g d¢g d¢g d¢g d¢g d¢gƒ}t|||ƒ‰ g d¢}g d¢}ˆ  ||¡}t‡ fd	d
„t||ƒD ƒƒ}t||ƒ d S )Nr§  r"   rO   r¨  r©  rª  )rž   r!   r]  gÍÌÌÌÌÌ@rö   gìQ¸…ë@g      @)r'   rü   rF  gÍÌÌÌÌÌÜ?gj¼t“Î?rh   ç-Cëâ6?c                    r`  ra  r9   rb  rd  r9   r:   re  „  rf  z?TestRectSphereBivariateSpline.test_evaluate.<locals>.<listcomp>)r   r   r	   r   rg  rþ   r   )r4   r6   r5   r»   r(  r'  rh  ri  r9   rd  r:   rj  z  s   þz+TestRectSphereBivariateSpline.test_evaluatec                 C   sš  t  t  dt  ddd¡ ¡jt  dt  t  ddd¡¡ ¡¡j}ttƒ�&}t  d	d
d¡t j d }t  ddd¡t j d }t	|||ƒ W d   ƒ n1 sLw   Y  dt
|jƒv sZJ ‚ttƒ�&}t  ddd¡t j d }t  ddd¡t j d }t	|||ƒ W d   ƒ n1 s‡w   Y  dt
|jƒv s•J ‚ttƒ�&}t  dd
d¡t j d }t  ddd¡t j d }t	|||ƒ W d   ƒ n1 sÂw   Y  dt
|jƒv sÐJ ‚ttƒ�&}t  dd
d¡t j d }t  ddd¡t j d }t	|||ƒ W d   ƒ n1 sýw   Y  dt
|jƒv �sJ ‚ttƒ�(}t  dd
d¡t j d }t  ddd¡t j d }t	|||d	d� W d   ƒ n	1 �s<w   Y  dt
|jƒv �sKJ ‚d S )Nç     €V@ç      TÀç      T@é   ç     €f@rK   ç     àu@rP   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 lessrY   rU  ©rZ   ÚdotÚ
atleast_2dr   r1  r/   r‹   rŒ   r   r   rË   rÌ   ©r4   r3  r  r=  r>  r9   r9   r:   r  ‡  óF   ÿÿ
ý
ý
ý
ý
ýz0TestRectSphereBivariateSpline.test_invalid_inputc              
   C   sä  t ddt d dƒ}t dtd dƒ}tg d¢g d¢g d¢g d¢g d¢g d¢g d¢gƒ}t|||ƒ}t ddt d dƒ}t dtd dƒ}t|||dd	�t|||dd
�ddd� t|||dd�t|||dd�ddd� t|||ddd�t|||dddd�ddd� t|||dd	�| dd¡||ƒƒ t|||dd�| dd¡||ƒƒ t|||ddd�| dd¡||ƒƒ t|||ddd�| dd¡||dd�ƒ t|||ddd�| dd¡||dd�ƒ t|||dddd�| dd¡||dd�ƒ d S )Nr§  r"   rO   r¨  r©  rª  ç{®Gáz”?r!   )Údthetar}  r¬  ©Úrtolr,   )Údphir  )rÂ  rÅ  ç�íµ ÷Æ°>©r~  r€  r  r–  r   F©rÂ  r  r  ©rÅ  r  ©rÂ  rÅ  r  )r   r   r	   r   r   Ú_numdiff_2dr   rŽ  r«  r9   r9   r:   rƒ  ©  sJ   þÿÿþÿÿÿÿÿÿz3TestRectSphereBivariateSpline.test_derivatives_gridc              
      s<  t ddt d dƒ}t dtd dƒ}tg d¢g d¢g d¢g d¢g d¢g d¢g d¢gƒ}t|||ƒ‰ t ddt d dƒ}t dtd dƒ}ˆ ||dd	d
�j|jksQJ ‚tˆ ||dd	d
�t‡ fdd„||dd�ddd� tˆ ||dd	d�t‡ fdd„||dd�ddd� tˆ ||ddd	d�t‡ fdd„||dddd�ddd� d S )Nr§  r"   rO   r¨  r©  rª  rÁ  r!   FrÈ  c                    ó   ˆ | |dd�S ©NFr  r9   r�   rd  r9   r:   Ú<lambda>Ù  ó    z@TestRectSphereBivariateSpline.test_derivatives.<locals>.<lambda>r}  r¬  rÃ  rÉ  c                    rÌ  rÍ  r9   r�   rd  r9   r:   rÎ  Ü  rÏ  r  rÊ  c                    rÌ  rÍ  r9   r�   rd  r9   r:   rÎ  ß  rÏ  rÆ  rÇ  r–  )r   r   r	   r   r   r   rË  )r4   r6   r5   r»   r9   rd  r:   r_   Ë  s0   þþþ
ÿ
ýz.TestRectSphereBivariateSpline.test_derivativesc                 C   sš  t  t  dt  ddd¡ ¡jt  dt  t  ddd¡¡ ¡¡j}ttƒ�&}t  d	d
d¡t j d }t  d	dd¡t j d }t	|||ƒ W d   ƒ n1 sLw   Y  dt
|jƒv sZJ ‚ttƒ�&}t  ddd¡t j d }t  d	dd¡t j d }t	|||ƒ W d   ƒ n1 s‡w   Y  dt
|jƒv s•J ‚ttƒ�&}t  dd
d¡t j d }t  ddd¡t j d }t	|||ƒ W d   ƒ n1 sÂw   Y  dt
|jƒv sÐJ ‚ttƒ�&}t  dd
d¡t j d }t  ddd¡t j d }t	|||ƒ W d   ƒ n1 sýw   Y  dt
|jƒv �sJ ‚ttƒ�(}t  dd
d¡t j d }t  ddd¡t j d }t	|||dd� W d   ƒ n	1 �s<w   Y  dt
|jƒv �sKJ ‚d S )Nr­  r®  r¯  r°  r±  rK   r²  rP   r   r³  r´  rµ  r”   é´   r·  r¸  r¹  rº  r»  r)   rY   rU  r¼  r¿  r9   r9   r:   Útest_invalid_input_2ã  rÀ  z2TestRectSphereBivariateSpline.test_invalid_input_2c              	   C   s”   t ddt d dƒ}t dtd dƒ}tg d¢g d¢g d¢g d¢g d¢g d¢g d¢gƒ}t|||ƒ}t| ¡ | ¡ | ¡ ƒ}t|||ƒ|||ƒƒ d S r¦  )r   r   r	   r   r×   r   )r4   r6   r5   r»   rØ   r¢   r9   r9   r:   rÙ     s   üz3TestRectSphereBivariateSpline.test_array_like_inputc                 C   s®   t  g d¢¡}t  g d¢¡}t  ||¡}|d |d  }t  |¡}t  |¡}t|||ƒ}t  t  ddg¡¡}t  t  ddg¡¡}	|||	ƒ}
t  d	d
gddgg¡}t|
|ƒ d S )N)rv  é   é#   ru  é-   )i¦ÿÿÿi«ÿÿÿé°ÿÿÿiµÿÿÿrœ   r   r!   rÓ  g     ÀB@rÕ  g     `SÀg     €FÀgÐñÑâŒ=EÀg     ˆHÀgDioð…EGÀ)rZ   r	   r   Úradiansr   r   )r4   r=  r>  Úmeshr3  Úlat_rÚlon_rÚinterpolatorÚ	query_latÚ	query_lonÚdata_interpÚansr9   r9   r:   Útest_negative_evaluation  s   



ÿz6TestRectSphereBivariateSpline.test_negative_evaluationc                 C   sV   t  dd¡t j d }t  dd¡t j d }t  d¡}dD ]}t|||d|d� qd S )Nr!   r”   )rP   rP   ))TT)TF)FFr   )r(   Úpole_continuity)rZ   rc   r   r„   r   )r4   ÚuÚvrå   Úpr9   r9   r:   Útest_pole_continuity_gh_14591"  s   
ÿz;TestRectSphereBivariateSpline.test_pole_continuity_gh_14591N)rE   rF   rG   r\  rj  r  rƒ  r_   rÑ  rÙ   rß  rä  r9   r9   r9   r:   r¥  p  s    	"""r¥  ç:Œ0âŽyE>c                 C   sî   |dkr|dkr| ||ƒS |dkr'|dkr'| || |ƒ| || |ƒ d|  S |dkrA|dkrA| ||| ƒ| ||| ƒ d|  S |dkrs|dkrs| || || ƒ| || || ƒ | || || ƒ | || || ƒ d| d  S t dƒ‚)Nr   r!   r"   zinvalid derivative order)rŒ   )Úfuncr5   r6   r~  r€  r  r9   r9   r:   rË  1  s   
$$"ÿÿ
ÿrË  c                   @   s@   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dS )ÚTest_DerivedBivariateSplinezgTest the creation, usage, and attribute access of the (private)
    _DerivedBivariateSpline class.
    c              
      s  t  tttdƒtdƒƒƒ¡}t  tttdƒtddƒƒƒ¡}t  t  ddd¡t  ddd¡f¡‰ tƒ �!}| td¡ t	||ˆ tdddƒtd	d
dƒdd�| _
W d   ƒ n1 sUw   Y  t||ˆ ƒ| _tdddƒ}|d }t‡ fdd„tˆ jƒD ƒƒ}t|||ƒ| _tt tdƒtdƒ¡ƒ| _d S )Nr”   r!   é   r#   rò   rw   g     €3@r=   r'   g     €4@r§  r  r   r  rh   c                    s   g | ]}t  ˆ |¡‘qS r9   )rZ   Úroll)rc  Úi©r»   r9   r:   re  P  s    z<Test_DerivedBivariateSpline.setup_method.<locals>.<listcomp>)rZ   ÚconcatenateÚlistrþ   r¯   r   r   râ   rã   r   r2  r   Ú
lut_smoothr	   r‘  r   Úlut_rectÚ	itertoolsÚproductÚorders)r4   r5   r6   rä   r¾   r¿   Úzzr9   rë  r:   r?  C  s"   "


ýþz(Test_DerivedBivariateSpline.setup_methodc                 C   óP   | j D ]"\}}| j ||¡}|dddd�}| jdd||dd�}||ks%J ‚qd S )Nr]   Fr  rŒ  )rò  r2  rŽ  ©r4   ÚnuxÚnuyÚlut_derr°   r±   r9   r9   r:   Útest_creation_from_LSQT  ó   üz2Test_DerivedBivariateSpline.test_creation_from_LSQc                 C   rô  )Ng      @Fr  rŒ  )rò  rî  rŽ  rõ  r9   r9   r:   Útest_creation_from_Smooth[  rú  z5Test_DerivedBivariateSpline.test_creation_from_Smoothc                 C   sP   | j D ]"\}}| j ||¡}|dddd�}| jdd||dd�}||ks%J ‚qd S )Nrw   r'   Fr  rŒ  )rò  rï  rŽ  rõ  r9   r9   r:   Útest_creation_from_Rectb  rú  z3Test_DerivedBivariateSpline.test_creation_from_Rectc                 C   sB   | j  dd¡}ttƒ� |j W d   ƒ d S 1 sw   Y  d S ©Nr!   )rï  rŽ  r‹   ÚAttributeErrorÚfp©r4   Úderr9   r9   r:   Útest_invalid_attribute_fpi  s   
"ÿz5Test_DerivedBivariateSpline.test_invalid_attribute_fpc                 C   sD   | j  dd¡}ttƒ� | ¡  W d   ƒ d S 1 sw   Y  d S rý  )rî  rŽ  r‹   rþ  r0   r   r9   r9   r:   Ú#test_invalid_attribute_get_residualn  s   

"ÿz?Test_DerivedBivariateSpline.test_invalid_attribute_get_residualN)
rE   rF   rG   Ú__doc__r?  rù  rû  rü  r  r  r9   r9   r9   r:   rç  ?  s    rç  )r   r   rå  )2rð  Ú	threadingr   ÚnumpyrZ   Únumpy.testingr   rë   r   r‹   Úscipy._lib._array_apir   r   r   r   r	   r
   r   r   r   r   r   Úscipy.interpolate._fitpack_pyr   r   r   r   Úscipy.interpolate._fitpack2r   r   r   r   r   r   r   r   r   Úscipy._lib._testutilsr   Úscipy.interpolater   r   rî   r"  r.  rQ  rV  r¥  rË  rç  r9   r9   r9   r:   Ú<module>   s:   $,    %  
U M 
B