a
    ‡ù»j‡ ã                   @   sÈ  d dl mZmZmZmZmZmZmZ d dlm	Z
 d dlZd dlmZmZmZmZmZmZ d dlZd dlmZmZmZmZmZmZmZmZmZmZmZmZm Z  d dl!m"Z"m#Z# d dlm$Z$ d dl%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ƒZ0G dd„ dƒZ1G dd„ dƒZ2G dd„ dƒZ3G dd„ dƒZ4G dd „ d ƒZ5G d!d"„ d"ƒZ6d#d$„ Z7ej8fd%d&„Z9d'd(„ Z:d/d)d*„Z;d0d+d,„Z<d1d-d.„Z=dS )2é    )Úassert_Úassert_equalÚassert_almost_equalÚassert_array_almost_equalÚassert_array_equalÚassert_allcloseÚsuppress_warnings)ÚraisesN)ÚmgridÚpiÚsinÚogridÚpoly1dÚlinspace)Úinterp1dÚinterp2dÚlagrangeÚPPolyÚBPolyÚsplrepÚsplevÚ
splantiderÚsplintÚsprootÚAkima1DInterpolatorÚNdPPolyÚBSpline)ÚpochÚgamma)Ú_ppoly)Úassert_deallocatedÚIS_PYPY)Únquad)Úbinomc                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestInterp2Dc                 C   sÈ   t ddd…dtd…f \}}t|d|  ƒ}tƒ �‚}| t¡ t|||ƒ}t|ddƒtdƒdd� tddd	…dtd
…f \}}t|| 	¡ | 	¡ ƒt|d|  ƒdd� W d   ƒ n1 sº0    Y  d S )Nr   é   ù              4@ù              5@ç      à?ç      ð?ç       @©Údecimaly              8@y              9@)
r
   r   r   r   ÚfilterÚDeprecationWarningr   r   r   Úravel)ÚselfÚyÚxÚzÚsupÚIIÚvÚu© r8   úNE:\soccer\ml_env\Lib\site-packages\scipy/interpolate/tests/test_interpolate.pyÚtest_interp2d   s    
ÿzTestInterp2D.test_interp2dc                 C   s˜   t dddƒ}t dtdƒ}t|d d d …f |d d …d f d  ƒ}tƒ �>}| t¡ t|||ƒ}t|ddƒtdƒdd� W d   ƒ n1 sŠ0    Y  d S )Nr   r%   é   é   r*   r)   r+   )r   r   r   r   r-   r.   r   r   )r0   r2   r1   r3   r4   r5   r8   r8   r9   Útest_interp2d_meshgrid_input&   s    (
z)TestInterp2D.test_interp2d_meshgrid_inputc                 C   s|  t j d¡ tdddƒ}tdtdƒ}t|d d d …f |d d …d f d  ƒ}tƒ ��}| t¡ t	| 
¡ | 
¡ |dd�}t j |¡ t|d d d …f |d d …d f d  ƒ}t	| 
¡ | 
¡ |dd�}t j |¡ t j |¡ t|d d d …f |d d …d f d  ƒ}t	|||dd�}tddd	ƒ}tdtd
ƒ}t|||ƒ|||ƒƒ t|||ƒ|||ƒƒ W d   ƒ n1 �sn0    Y  d S )NéÒ  r   r%   r;   r<   r*   Úcubic©Úkindé   é   )ÚnpÚrandomÚseedr   r   r   r   r-   r.   r   ÚcopyÚshuffler   )r0   r2   r1   r3   r4   Zip1Zip2Zip3r8   r8   r9   Ú%test_interp2d_meshgrid_input_unsorted0   s$    (

((z2TestInterp2D.test_interp2d_meshgrid_input_unsortedc              	   C   sÆ   t ddd…dtd…f \}}t|d|  ƒ}tƒ �€}| t¡ t|||ƒ}t g d¢¡}t ddg¡}t	|||ƒ|||d d d	… ƒƒ t
t|||d d d	… ddd
ƒ W d   ƒ n1 s¸0    Y  d S )Nr   r%   r&   r'   r(   )é   é   é   g333333@gffffff@éÿÿÿÿT)r
   r   r   r   r-   r.   r   rD   Úarrayr   Úassert_raisesÚ
ValueError)r0   r1   r2   r3   r4   ÚfuncZxeZyer8   r8   r9   Útest_interp2d_eval_unsortedI   s    
 z(TestInterp2D.test_interp2d_eval_unsortedc                 C   sž   t  ddg¡}d|d< t  d¡ }}tƒ �`}| t¡ t|||dƒ}t|ddƒt  dg¡dd	� t|dd
ƒt  dg¡dd	� W d   ƒ n1 s�0    Y  d S )NrL   r)   )r%   r%   Úlinearr*   ç      ø?r(   r%   r+   ç      @)	rD   ÚzerosÚaranger   r-   r.   r   r   rN   )r0   Úar2   r1   r4   Úbr8   r8   r9   Útest_interp2d_linearV   s    
z!TestInterp2D.test_interp2d_linearc                 C   sV  t  ddd¡}t  ddd¡}|d d d …f d |d d …d f  }t  ddd¡}t  ddd	¡}tƒ �Þ}| t¡ t|||d
d�}tt|||ƒ t|||t jd�}|||ƒ}|dk |dkB }	|dk |dkB }
t	t  
||
d d …f ¡ ¡ ƒ t	t  
|d d …|	f ¡ ¡ ƒ t	t  ||
 d d …f d d …|	 f ¡ ¡ ƒ W d   ƒ n1 �sH0    Y  d S )Nr   é   rL   r%   é   rM   rJ   rB   é!   T©Úbounds_error©Ú
fill_value)rD   r   r   r-   r.   r   rO   rP   Únanr   ÚisnanÚallÚisfinite)r0   r2   r1   r3   ZixZiyr4   rY   ZizÚmxÚmyr8   r8   r9   Útest_interp2d_boundsa   s     $

z!TestInterp2D.test_interp2d_boundsN)	Ú__name__Ú
__module__Ú__qualname__r:   r=   rI   rR   rZ   rh   r8   r8   r8   r9   r$      s   
r$   c                   @   sB  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dId d!„ZdJd"d#„Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ ZdKd,d-„ZdLd.d/„Zd0d1„ Zejdfd2d3„Zd4d5„ Zej j!e"d6d7�d8d9„ ƒZ#d:d;„ Z$d<d=„ Z%d>d?„ Z&d@dA„ Z'dBdC„ Z(ej  )dDdE¡dFdG„ ƒZ*dHS )MÚTestInterp1Dc                 C   sH  t  d¡| _t  d¡| _t  d¡| _| j d¡| _t  d¡| _t  d¡| _t  	dg¡| _
t  	dg¡| _t  d¡ d¡| _t  d¡ d¡| _t  d¡ d	¡| _t  d¡ d¡| _t  d
¡ d¡| _t  d
¡ d¡| _t  d¡ d¡| _d| jd d …df< d| jd d …df< t  d¡ d¡| _d| jdd d …f< d| jdd d …f< d| _d S )Nç      @ç      $@)r%   rL   r*   ç        g      4@©r%   é
   )rq   r%   )r%   r%   rL   g      >@)r%   rJ   rL   )rJ   r%   rL   rC   r   éâÿÿÿrM   g      YÀ)rD   rW   Úx5Úx10Úy10ÚreshapeÚx25Úx2Úy2rN   Úx1Úy1Úy210Úy102Úy225Úy25Úy235Úy325Úy210_edge_updatedÚy102_edge_updatedra   ©r0   r8   r8   r9   Úsetup_methodz   s*    zTestInterp1D.setup_methodc              
   C   s  dD ]*}t | j| j|d� t | j| j|dd� qt | j| jddd� t | j| jdt dg¡d� t | j| jddd� t | j| jddd� t | j| jdd	d� t | j| jd
d� t | j| jdd� t | j| jdd� t | j| jdd� t | j| jddd	d� t | j| jdd
t d¡d� t | j| jdd
t d¡t d¡fd� t | j| jdd
t d¡dfd� tt	t | j
| jƒ tt	t | jt d
¡ƒ tt	t | j| jƒ tt	t | j| jƒ tt	t | j| jƒ t | j| jƒ t | j| jd
d� tt	t | j| jƒ tt	t | j| jƒ tt	t | j| jddd� tt	t | j| jdg d¢d� tt	t | j| jdt d¡d� tt	t | j| jddggd� tt	t | j| jdddgd� tt	t | j| jdt g ¡d� tt	t | j| jddd� tt	t | j| jdd
ddgd� tt	t | j| jdd
dddgfd� d S )N)	Únearestú
nearest-upÚzerorS   ÚslinearÚ	quadraticr?   ÚpreviousÚnextr@   Úextrapolate©rA   ra   rS   )rM   r[   rM   )rM   )rM   rM   r   r[   r%   rJ   ©rA   Úaxisra   rq   ©r�   )rM   rM   rM   r8   ro   )r   rt   ru   rD   rN   r|   rx   ÚonesrO   rP   rw   ry   r}   rz   r{   ©r0   rA   r8   r8   r9   Útest_validation£   sˆ    
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿzTestInterp1D.test_validationc                 C   s<  t t| j| jƒjƒ t t| j| jdd�j ƒ t t| j| jƒjƒ t t| j| jdd�j ƒ t t t| j| jƒj¡ƒ t	t| j| jdd�jdƒ t	t| j| jdd�jdƒ t	t| j| jƒj
dƒ t	t| j| jƒj
dƒ t	t| j| jdd	�j
dƒ tt| j| jƒj| jƒ tt| j| jƒj| jƒ tt| j| jƒj| jƒ d S )
NF)rG   r^   ç      @r`   )r)   r*   r   r[   r‘   )r   r   rt   ru   rG   r_   rD   rc   ra   r   r�   r|   r}   r   r2   r1   r„   r8   r8   r9   Ú	test_initç   s"    ÿÿzTestInterp1D.test_initc                 C   s0  t | j| jƒ}t | jd d d… | jd d d… ƒ}t|| jƒ| jƒ t|dƒt dg¡ƒ t|g d¢ƒ|g d¢ƒƒ t | jd d d… | jd d d… dd�}t|| jƒ| jƒ t | jd d d… | jd d d… dd�}tt|| jƒ t | j| jƒ}t | jd d d… | jd d …d d d…f ƒ}t|| jƒ|| jƒƒ d S )NrM   ç333333ó?©g333333@gffffff@ç      @F)Úassume_sortedT)	r   rt   ru   r   rD   rN   rO   rP   r|   )r0   Úinterp10Zinterp10_unsortedZinterp10_assume_kwZinterp10_assume_kw2Zinterp10_y_2dZinterp10_y_2d_unsortedr8   r8   r9   Útest_assume_sortedú   s(    "
ÿÿÿ*
ÿzTestInterp1D.test_assume_sortedc                 C   s   dD ]}|   |¡ qd S )N)rS   r‰   )Ú_check_linearr“   r8   r8   r9   Útest_linear  s    zTestInterp1D.test_linearc                 C   s°   t | j| j|d�}t|| jƒ| jƒ t|dƒt dg¡ƒ t|g d¢ƒt g d¢¡ƒ t | j| j|dd�}t|g d¢ƒg d¢dd	� t|dd
d�}tt	t | j| jfi |¤Ž d S )Nr@   r—   r˜   r�   rŽ   ©ç      ð¿r   é	   é   )rM   r   r¡   r¢   ç›+¡†›„=©ÚrtolT©rA   ra   r_   ©
r   rt   ru   r   rD   rN   r   ÚdictrO   rP   )r0   rA   r›   ÚextrapolatorÚoptsr8   r8   r9   r�     s"    ÿÿÿþzTestInterp1D._check_linearc                 C   sŒ   t jt jt jt jfD ]B}t jd|d�}|}t||dd�|ƒ}t|j|ƒ t	||dd� qg d¢}t j
dd	g}t||ƒ|ƒ}t	||dd� d S )
Né   ©ÚdtyperS   r@   çVçž¯Ò<©Úatol©r   r[   r%   r   r[   )rD   Úfloat16Úfloat32Úfloat64Z
longdoublerW   r   r   r­   r   rb   )r0   Zdtypr2   r1   Zypr8   r8   r9   Útest_linear_dtypes+  s    ýzTestInterp1D.test_linear_dtypesc                 C   s¸   t jt jt jg}|t jt jg }g d¢}|D ]†}t jdd|d�}|D ]l}t  | d ¡ |¡}|D ]L}| |¡}	|D ]8}
t	|||
dd�}t
||	ƒ|d|› d	|› d
|› �d� qtqbqDq,d S )N)r‰   rˆ   rŠ   r?   r   rq   r¬   r•   F©rA   r_   çH¯¼šò×z>z, ú ©r°   Úerr_msg)rD   r²   r³   r´   Ú	complex64Ú
complex128rW   ÚexpÚastyper   r   )r0   Zdt_rZdt_rcZspline_kindsZdtxr2   Zdtyr1   ZdtnÚxnewrA   Úfr8   r8   r9   Útest_slinear_dtypes@  s    
ÿz TestInterp1D.test_slinear_dtypesc                 C   sp   t | j| jdd�}t|| jƒ| jƒ t|dƒt dg¡ƒ t|dƒt dg¡ƒ t|g d¢ƒt g d¢¡ƒ d S )Nr?   r@   r—   rT   r˜   ©r   rt   ru   r   rD   rN   ©r0   r›   r8   r8   r9   Ú
test_cubicQ  s    ÿzTestInterp1D.test_cubicc                 C   sÂ   t | j| jdd�}t|| jƒ| jƒ t|dƒt d¡ƒ t|dƒt d¡ƒ t|g d¢ƒt g d¢¡ƒ t | j| jddd	�}t|g d
¢ƒg d¢dd� tdddd�}tt	t | j| jfi |¤Ž d S )Nr†   r@   r—   r)   rT   r˜   ©r*   r™   r™   r�   rŽ   rŸ   ©r   r   r¡   r¡   r£   r¤   Tr¦   r§   ©r0   r›   r©   rª   r8   r8   r9   Útest_nearestZ  s$    ÿÿÿþzTestInterp1D.test_nearestc                 C   sÂ   t | j| jdd�}t|| jƒ| jƒ t|dƒt d¡ƒ t|dƒt d¡ƒ t|g d¢ƒt g d¢¡ƒ t | j| jdd	d
�}t|g d¢ƒg d¢dd� tdd	dd�}tt	t | j| jfi |¤Ž d S )Nr‡   r@   r—   r)   rT   r*   r˜   rÅ   r�   rŽ   rŸ   rÆ   r£   r¤   Tr¦   r§   rÇ   r8   r8   r9   Útest_nearest_upo  s$    ÿÿÿþzTestInterp1D.test_nearest_upc              	   C   sŠ  t | j| jdd�}t|| jƒ| jƒ t|dƒt d¡ƒ t|dƒt d¡ƒ t|g d¢ƒt g d¢¡ƒ t | j| jddd	�}t|g d
¢ƒtjdddgdd� t | j| jddd	�}t|g d¢ƒtjtjddddgƒ t | j| jddd	�}t|g d¢ƒtjtjddddgtjtjddddggƒ t | j| j	dddd�}t|g d¢ƒtjtjgddgddggƒ t
dddd�}ttt | j| jfi |¤Ž t g d¢g d¢dddd�}t|g d¢ƒtjtjddd d d gƒ t g d!¢g d"¢ddd#d�}t|g d¢ƒtjtjddd d d gƒ t | j| jddd	�}t|g d¢ƒtjtjddd$d$gtjtjddd$d$ggƒ t | j| jdddd�}t|g d¢ƒtjtjgddgd$d$ggƒ d S )%Nr‹   r@   r—   r)   rT   r˜   ©r*   rm   r™   r�   rŽ   rŸ   r   r¡   r£   r¤   ©rM   éþÿÿÿrL   r«   é   é   rL   r«   é   é   é   r�   ©rÌ   rL   rÍ   rq   r¢   Tr¦   r±   ©r   r[   rM   ©rA   ra   rš   ©rÌ   rM   r   r[   r%   rJ   rL   r[   rM   ©r%   r   r[   ©rM   r   r[   Frr   ©r   rt   ru   r   rD   rN   r   rb   r|   r}   r¨   rO   rP   r‚   rƒ   ©r0   r›   r©   Zinterpolator1DZinterpolator2DZinterpolator2DAxis0rª   r8   r8   r9   Útest_previous„  s˜    ÿÿÿÿÿÿÿÿÿ
þÿþýÿýÿ
þÿÿ
þ
þÿzTestInterp1D.test_previousc              	   C   sŠ  t | j| jdd�}t|| jƒ| jƒ t|dƒt d¡ƒ t|dƒt d¡ƒ t|g d¢ƒt g d¢¡ƒ t | j| jddd	�}t|g d
¢ƒdddtjgdd� t | j| jddd	�}t|g d¢ƒddddtjtjgƒ t | j| jddd	�}t|g d¢ƒddddtjtjgddddtjtjggƒ t | j| j	dddd�}t|g d¢ƒddgddgtjtjggƒ t
dddd�}ttt | j| jfi |¤Ž t g d¢g d¢dddd�}t|g d¢ƒdddddtjtjgƒ t g d ¢g d!¢ddd"d�}t|g d¢ƒdddddtjtjgƒ t | j| jddd	�}t|g d¢ƒd#d#ddtjtjgd#d#ddtjtjggƒ t | j| jdddd�}t|g d¢ƒd#d#gddgtjtjggƒ d S )$NrŒ   r@   r—   r*   rT   r˜   )r•   r™   r™   r�   rŽ   rŸ   r   r¡   r£   r¤   rË   rL   r«   rq   rÏ   rÐ   r�   rÒ   r[   r¢   Tr¦   r±   rÓ   rÔ   rÕ   rM   rÖ   r×   FrC   rØ   rÙ   r8   r8   r9   Ú	test_nextÉ  s˜    ÿÿÿÿÿÿÿÿÿ
þÿþýÿýÿ
þÿÿ
þ
þÿzTestInterp1D.test_nextc                 C   sl   t | j| jdd�}t|| jƒ| jƒ t|dƒt d¡ƒ t|dƒt d¡ƒ t|g d¢ƒt g d¢¡ƒ d S )Nrˆ   r@   r—   r)   rT   r˜   rÊ   rÂ   rÃ   r8   r8   r9   Ú	test_zero  s    ÿzTestInterp1D.test_zeroc              
   C   sT   t t||ƒ z||ƒ W n6 tyN } z|› t|ƒv s:J ‚W Y d }~n
d }~0 0 d S ©N)rO   rP   Ústr)r0   ZinterpolantZ
test_arrayZ
fail_valueÚerrr8   r8   r9   Úbounds_check_helper  s
    z TestInterp1D.bounds_check_helperrS   c                 C   sü   t | j| j| jd|d�}t|dƒt | j¡ƒ t|dƒt | j¡ƒ t|dgdgdgdgggƒt | j¡ƒ t| t g d¢¡¡t g d¢g d	¢g¡ƒ t | j| jd
|d�}|  |dd¡ |  |dd¡ |  |g d¢d¡ |  |g d¢d¡ |g d¢ƒ d S )NF)ra   r_   rA   gffffff&@g333333Àg333333)@gÍÌÌÌÌL3@)r    ro   rm   ç      "@ç      &@)TFFFF)FFFFTT)r_   rA   r    râ   )ro   r    ro   )ro   r)   ç      5@rã   )ro   rm   rá   )	r   rt   ru   ra   r   rD   rN   Z_check_boundsrà   )r0   rA   Zextrap10Zraises_bounds_errorr8   r8   r9   Ú_bounds_check   s.    ÿ
ÿÿ
ÿþÿzTestInterp1D._bounds_checkc                 C   st   t  d¡ t¡}t  d¡ t¡}t|||t jdd�}||d ƒ}tt  |d ¡ƒ t|t j	t j|d d… f ƒ d S )Nrq   Fr¦   r[   r   rM   )
rD   rW   r¾   Úintr   rb   r   rc   r   Úr_)r0   rA   r2   r1   ÚcÚyir8   r8   r9   Ú_bounds_check_int_nan_fill8  s    z'TestInterp1D._bounds_check_int_nan_fillc                 C   s"   dD ]}|   |¡ |  |¡ qd S )N)rS   r?   r†   r‹   rŒ   r‰   rˆ   rŠ   )rä   ré   r“   r8   r8   r9   Útest_bounds@  s    
zTestInterp1D.test_boundsc                 C   sä  t | j| j|ddd�}t|dƒdƒ t|dƒdƒ t|ddgƒddgƒ | j| j| j| jfD ]Î}t | j||dddd	�}t|dƒdƒ t|dƒdƒ t|ddgƒdƒ t | j||dddd	�}t|dƒdƒ t|dƒdƒ |j	d
k�rddgg|j
d  g|j
d  }nddgg|j
d  }t|ddgƒ|ƒ q\g d¢}| j| jfD ] }ttt | j||d|dd	� �q@t | j| j|d|dd	�}t|dƒg d¢gd ƒ t|dƒg d¢gd ƒ t|ddgƒddgddgddgggd ƒ ddg}ttt | j| j|d|dd	� | j| j| jfD ]š}t | j||d|dd	�}ddg}|j	d
k�rF|g|j
d  }t|dƒ|ƒ t|dƒ|ƒ ddgddgg}|j	d
k�rŽ|g|j
d  }t|ddgƒ|ƒ �qt g d¢¡df}| j| jfD ] }ttt | j||d|dd	� �qÂt | j| j|d|dd	�}t|dƒdƒ t|dƒg d¢gd ƒ t|ddgƒddgddgddgggd ƒ t ddg¡df}ttt | j| j|d|dd	� | j| j| jfD ]š}t | j||d|dd	�}t|dƒdƒ ddg}|j	d
k�rÖ|g|j
d  }t|dƒ|ƒ ddgddgg}|j	d
k�r|g|j
d  }t|ddgƒ|ƒ �qŠg d¢g d¢f}| j| jfD ] }ttt | j||d|dd	� �qBtdƒD ]”}|dk�rŒtdd„ |D ƒƒ}t | j| j|d|dd	�}t|dƒg d¢gd ƒ t|dƒg d¢gd ƒ t|ddgƒddgddgddgggd ƒ �qlddgddgf}ttt | j| j|d|dd	� | j| j| jfD ]¾}t | j||d|dd	�}ddg}|j	d
k�r||g|j
d  }t|dƒ|ƒ ddg}|j	d
k�r®|g|j
d  }t|dƒ|ƒ ddgddgg}|j	d
k�rè|g|j
d  }t|ddgƒ|ƒ �q>ddgddgg}| j| j| jfD ] }ttt | j||d|dd	� �qtdƒD ]”}|dk�r`t |¡}t | j| j|d|dd	�}t|dƒddgddggƒ t|dƒddgddggƒ t|ddgƒddgddggddgddgggƒ �qHddgddggddgddggf}| j| j| jfD ] }ttt | j||d|dd	� �qtdƒD ]¦}|dk�rbt |d ¡t |d ¡f}t | j| j|d|dd	�}t|dƒddgddggƒ t|dƒddgddggƒ t|ddgƒddgddggddgddgggƒ �q8d S )N)éœÿÿÿéd   Fr¦   rq   rì   éöÿÿÿrë   rM   )rA   r�   ra   r_   rJ   r[   r   )rì   éÈ   é,  r%   rî   rï   )rë   é8ÿÿÿéÔþÿÿrð   rñ   c                 s   s   | ]}t  |¡V  qd S rÝ   )rD   rN   )Ú.0rÀ   r8   r8   r9   Ú	<genexpr>§  ó    z1TestInterp1D._check_fill_value.<locals>.<genexpr>iè  iÐ  iüÿÿi0øÿÿ)r   rt   ru   r   r€   r�   r~   r   rs   ÚndimÚshaperO   rP   rD   rN   ÚrangeÚtuple)r0   rA   Úinterpr1   Úresultra   Úiir8   r8   r9   Ú_check_fill_valueF  sV   ÿÿÿ"ÿ
ÿþþÿÿÿ
ÿþþÿÿÿ

ÿþþ
ÿÿÿ


ÿÿÿþ
ÿÿ

ÿÿÿÿþzTestInterp1D._check_fill_valuec                 C   s   dD ]}|   |¡ qd S ©N)rS   r†   r?   r‰   rŠ   rˆ   r‹   rŒ   )rü   r“   r8   r8   r9   Útest_fill_valueç  s    zTestInterp1D.test_fill_valuec                 C   s4   t | j| jdd�}t|jdƒ d|_t|jdƒ d S )Ng     À^@r`   g     t@)r   rt   ru   r   ra   )r0   rù   r8   r8   r9   Útest_fill_value_writeableí  s    z&TestInterp1D.test_fill_value_writeablec                 C   sŒ  t | j| j|d�}t|t ddgddgg¡ƒt ddgddgg¡ƒ tt|dƒtjƒƒ t	|dƒj
dƒ t | j| j|d�}t|dƒt dd	g¡ƒ t|t ddg¡ƒt ddgd	d
gg¡ƒ t | j| jd|d�}t|dƒt ddg¡ƒ t|t ddg¡ƒt ddgddgg¡ƒ t ddgddgg¡}t||ƒt ddgddggddgd
dggg¡ƒ t||ƒt ddgdd	ggddgddggg¡ƒ d S )Nr@   r•   rm   r*   ç      @r—   r8   r)   râ   ç      (@r   ©r�   rA   r™   g      *@g      .@g      1@rn   ç      @g      ,@)r   rt   ru   r   rD   rN   r   Ú
isinstanceZndarrayr   rö   r|   r}   )r0   rA   r›   Z	interp210Z	interp102Zx_newr8   r8   r9   Ú_nd_check_interpô  s6    ÿÿÿÿÿÿÿzTestInterp1D._nd_check_interpc           
      C   s¤   g d¢}t  t  |¡¡j|Ž }t|ƒD ]x\}}t  |¡}t||||d�}t||ƒ||d� t  d¡ d¡d }t|ƒ}	g d¢|	||d …< t||ƒj|	|d� q&d S )N)rK   rL   é   r\   r  ©rº   r  )r%   rJ   r[   r  r[   )	rD   rW   Úprodrv   Ú	enumerater   r   Úliströ   )
r0   rA   rX   r1   ÚnÚsr2   r3   rx   rY   r8   r8   r9   Ú_nd_check_shape  s    
zTestInterp1D._nd_check_shapec                 C   s"   dD ]}|   |¡ |  |¡ qd S )N)rS   r?   r‰   rŠ   r†   rˆ   r‹   rŒ   )r  r  r“   r8   r8   r9   Útest_nd"  s    
zTestInterp1D.test_ndc           	      C   sª   t  g d¢¡}||d  }| |¡}t|||d�}t|d d… ||ƒd d… ƒ t  ddd¡}t||j|d�}t||j|d�}t||ƒj||ƒƒ t||ƒj||ƒƒ d S )N)
r[   rU   rJ   gÍÌÌÌÌÌ@rK   gš™™™™™@gš™™™™™@g       @g      #@rq   ù      ð?       @r@   rM   r[   rq   rB   )rD   rN   r¾   r   r   r   ÚrealÚimag)	r0   r­   rA   r2   r1   rç   ÚxiÚcrÚcir8   r8   r9   Ú_check_complex(  s    
zTestInterp1D._check_complexc                 C   s*   dD ] }|   tj|¡ |   tj|¡ qd S rý   )r  rD   r»   r¼   r“   r8   r8   r9   Útest_complex8  s    zTestInterp1D.test_complexzTest not meaningful on PyPy)Úreasonc                 C   sV   t  dd¡}t  dd¡}tt||ƒ�}|ddgƒ ~W d   ƒ n1 sH0    Y  d S )Nr   r[   çš™™™™™¹?çš™™™™™É?)rD   r   r    r   )r0   r2   r1   rù   r8   r8   r9   Útest_circular_refs>  s
    zTestInterp1D.test_circular_refsc                 C   s>   dD ]4}t jg d¢t jd�}t|||d�}t||ƒ|ƒ qd S )N)r†   r‹   rŒ   )r   é2   é   r¬   r@   )rD   rN   Zint8r   r   )r0   rA   r2   rû   r8   r8   r9   Útest_overflow_nearestH  s    z"TestInterp1D.test_overflow_nearestc                 C   s\   t  d¡ t¡}| ¡ }t j|d< dD ]0}t|||d�}|ddgƒ}tt  |¡ 	¡ ƒ q&d S )Nrq   r  )rˆ   r‰   r@   gš™™™™™@r   )
rD   rW   r¾   ÚfloatrG   rb   r   r   re   rd   )r0   r2   r1   rA   ÚirÚvalsr8   r8   r9   Útest_local_nansO  s    
zTestInterp1D.test_local_nansc           
      C   s°   t  d¡ t¡}| ¡ }| ¡ }t j|d< dD ]|}t|||d�}t|||d�}dddgddgddggfD ]@}t  |¡}||ƒ||ƒ }}	tt  	|	¡ 
¡ ƒ t|j|	jƒ qhq.d S )Nr«   rJ   )rŠ   r?   r@   r  r[   rL   )rD   rW   r¾   r  rG   rb   r   Úasarrayr   rc   rd   r   rö   )
r0   r2   r1   ZynrA   r  Zirnr¿   ÚoutZoutnr8   r8   r9   Útest_spline_nansZ  s    

zTestInterp1D.test_spline_nansc                 C   sT   t  d¡t j }t  d¡}ttƒ� t||dd� W d   ƒ n1 sF0    Y  d S )Nrq   r?   r@   )rD   r’   rb   rW   rO   rP   r   )r0   r2   r1   r8   r8   r9   Útest_all_nansl  s    

zTestInterp1D.test_all_nansc                 C   sz   t  dd¡}t  | d ¡}t  ddd¡}dD ]F}||j_d|j_dD ],}t|||d	�}||ƒ}tt  |¡ ¡ ƒ qFq.d S )
Nr   rq   r•   r¡   r  ©TFF)rS   r†   rˆ   r‰   rŠ   r?   r@   )	rD   rW   r½   ÚflagsÚ	writeabler   r   re   rd   )r0   r2   r1   r¿   Zxnew_writeablerA   rÀ   r   r8   r8   r9   Útest_read_onlys  s    zTestInterp1D.test_read_onlyrA   )rS   r†   r‡   r‹   rŒ   c                 C   sx   t dgdg|ddd�}t|g d¢ƒg d¢ƒ t dgdg|dd	�}ttd
d�� |dƒ W d   ƒ n1 sj0    Y  d S )NrT   r  Frp   )rA   r_   ra   )r[   rT   r%   )r%   r  rq   Tr¶   zx_new is above©Úmatchr*   )r   r   rO   rP   )r0   rA   rÀ   r8   r8   r9   Útest_single_value�  s    ÿzTestInterp1D.test_single_valueN)rS   )rS   )rS   )rS   )+ri   rj   rk   r…   r”   r–   rœ   rž   r�   rµ   rÁ   rÄ   rÈ   rÉ   rÚ   rÛ   rÜ   rà   rä   ré   rê   rü   rþ   rÿ   r  r  r  rD   r¼   r  r  ÚpytestÚmarkZskipifr!   r  r  r!  r$  r%  r)  Zparametrizer,  r8   r8   r8   r9   rl   x   sL   )D	EE		

 "
 

	ÿrl   c                   @   s   e Zd Zdd„ ZdS )ÚTestLagrangec                 C   s@   t g d¢ƒ}t t|jƒ¡}||ƒ}t||ƒ}t|j|jƒ d S )N)rL   r%   r[   rK   rJ   )r   rD   rW   ÚlenÚcoeffsr   r   )r0   ÚpÚxsZysÚplr8   r8   r9   Útest_lagrange‘  s
    
zTestLagrange.test_lagrangeN)ri   rj   rk   r5  r8   r8   r8   r9   r/  �  s   r/  c                   @   sL   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S )ÚTestAkima1DInterpolatorc                 C   sR   t  dd¡}t  g d¢¡}t||ƒ}t  g d¢¡}t  g d¢¡}t||ƒ|ƒ d S )Nro   râ   ©ro   r*   r)   r•   r*   r™   ç      @r8  gš™™™™™@çffffff@r•   ©ro   r(   r)   rT   rU   ç      @g      @r9  g      @gÍÌÌÌÌÌ@g333333!@gÍÌÌÌÌÌ#@rn   ©ro   g      ö?r*   rT   g     @ÿ?g     à@gŒ.ºè¢‹@gß^äë@gn ¹ä@gGNBÐ@grcß–÷·@g¦	£ÎI@r•   ©rD   rW   rN   r   r   ©r0   r2   r1   Úakr  rè   r8   r8   r9   Ú	test_evalš  s    
z!TestAkima1DInterpolator.test_evalc                 C   sV   t  dd¡}t  g d¢¡}t||dd�}t  g d¢¡}t  g d¢¡}t||ƒ|ƒ d S )Nro   râ   r7  Zmakima©Úmethodr:  )ro   gFð?ðƒõ?r*   gš™™™™÷?gš™™™™ÿ?g…¶g{¶'@gú>J(j@g?±Ôç§ð@gqÁü@gýÞÀÇð³@gû•Š9~@g­Áøo¢
@r•   r=  r>  r8   r8   r9   Útest_eval_mod§  s    z%TestAkima1DInterpolator.test_eval_modc                 C   sv   t  dd¡}t  g d¢¡}t  |d| f¡}t||ƒ}t  g d¢¡}t  g d¢¡}t  |d| f¡}t||ƒ|ƒ d S )Nro   râ   r7  r*   r:  r<  )rD   rW   rN   Zcolumn_stackr   r   r>  r8   r8   r9   Útest_eval_2d¸  s    
z$TestAkima1DInterpolator.test_eval_2dc                 C   s  t  dd¡}t  g d¢¡}t  d¡}||d d …ddf< d| |d d …ddf< d| |d d …ddf< d	| |d d …ddf< t||ƒ}t  g d
¢¡}t  d¡}t  g d¢¡}||d d …ddf< d| |d d …ddf< d| |d d …ddf< d	| |d d …ddf< t||ƒ|ƒ d S )Nro   râ   r7  )r¢   r%   r%   r   r*   r[   r•   r  r:  )é   r%   r%   r<  )rD   rW   rN   Úemptyr   r   )r0   r2   Zy_r1   r?  r  rè   Zyi_r8   r8   r9   Útest_eval_3dÉ  s     


z$TestAkima1DInterpolator.test_eval_3dc                 C   s`   t  g d¢¡}t  ||d f¡j}t||ƒ}t  ddg¡}||ƒ}t|t  ||d f¡jƒ d S )Nr±   r%   r(   rT   )rD   rN   ZvstackÚTr   r   )r0   r2   r1   r?  Zx_evalZy_evalr8   r8   r9   Ú%test_degenerate_case_multidimensionalâ  s    
z=TestAkima1DInterpolator.test_degenerate_case_multidimensionalc                 C   sf   t  dd¡}t  g d¢¡}t||ƒ}d}tjt|d�� | d d ¡ W d   ƒ n1 sX0    Y  d S )Nro   râ   r7  z9Extending a 1-D Akima interpolator is not yet implementedr*  )rD   rW   rN   r   r-  r	   ÚNotImplementedErrorÚextend)r0   r2   r1   r?  r+  r8   r8   r9   Útest_extendë  s    
z#TestAkima1DInterpolator.test_extendc                 C   s^   t  dd¡}t  g d¢¡}d}tjt|d�� t||dd� W d   ƒ n1 sP0    Y  d S )Nro   râ   r7  z `method`=invalid is unsupported.r*  ÚinvalidrA  )rD   rW   rN   r-  r	   rJ  r   )r0   r2   r1   r+  r8   r8   r9   Útest_mod_invalid_methodó  s
    z/TestAkima1DInterpolator.test_mod_invalid_methodc                 C   sj   t  dd¡}t  g d¢¡}|d|  }d}tjttf|d�� t||ƒ W d   ƒ n1 s\0    Y  d S )Nro   râ   r7  y               @zBPassing an array with a complex.*|Casting complex values to real.*r*  )rD   rW   rN   r-  ZwarnsÚRuntimeWarningr.   r   )r0   r2   r1   Úmsgr8   r8   r9   r  ú  s    z$TestAkima1DInterpolator.test_complexN)ri   rj   rk   r@  rC  rD  rG  rI  rL  rN  r  r8   r8   r8   r9   r6  ™  s   	r6  c                   @   sL   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S )ÚTestPPolyCommonc                 C   sJ   t  ddgddgddgg¡}t  g d¢¡}ttt||ƒ ttt||ƒ d S )Nr[   rK   r%   rL   rJ   r  )r   r[   r(   )rD   rN   rO   rP   r   r   )r0   rç   r2   r8   r8   r9   Útest_sort_check  s    zTestPPolyCommon.test_sort_checkc                 C   s>   t tƒ�" tddgddgƒ W d   ƒ n1 s00    Y  d S )Nr[   r%   r   )rO   rP   r   r„   r8   r8   r9   Útest_ctor_c  s    
zTestPPolyCommon.test_ctor_cc                 C   s8  t j d¡ d}t  t jddt j d¡ df ¡}dt j |d t|ƒd dd¡ d }ttfD ]Ò}||d d …d d…f |d d… ƒ}| 	|d d …dd …f |dd … ¡ ||d d …dd …f |dd … ƒ}| 	|d d …d d…f |d d… ¡ |||ƒ}t
|j|jƒ t
|j|jƒ t
|j|jƒ t
|j|jƒ q`d S )	Nr>   rJ   r   rq   rC   r%   r[   r¡   )rD   rE   rF   Úuniqueræ   Úrandr0  r   r   rK  r   rç   r2   )r0   Úorderr2   rç   ÚclsÚppÚpp2Úpp3r8   r8   r9   rL    s    "&"$"$
zTestPPolyCommon.test_extendc                 C   sÌ   t j d¡ t  ddd¡}t j dd¡}t  ddd¡}t j dd¡}ttfD ]z}|||ƒ}|||ƒ}|||ƒ}| ||dd … ¡ t jdddd	d
�}	t  ddd¡}
t||	ƒ||	ƒƒ t||
ƒ||
ƒƒ qLd S )Nr>   r   r[   r  r%   rL   rK   rï   F)Úendpoint)	rD   rE   rF   r   rU  r   r   rK  r   )r0   r2   rç   rx   Úc2rW  Úpp1rY  Zpp_combZxi1Zxi2r8   r8   r9   Útest_extend_diff_orders)  s    


z'TestPPolyCommon.test_extend_diff_ordersc                 C   s&  t j d¡ d}t  t j ddd¡¡}t j |d |jd d dd¡}ttfD ]Ò}|||ƒ}||d d …d d…f |d d… ƒ}| 	|d d …dd …f |dd … ¡ ||d d …dd …f |dd … ƒ}| 	|d d …d d…f |d d… ¡ t
|j|jƒ t
|j|jƒ t
|j|jƒ t
|j|jƒ qNd S )Nr   rJ   rq   é   r[   r%   r¡   )rD   rE   rF   ÚsortÚuniformrU  rö   r   r   rK  r   rç   r2   )r0   rV  r2   rç   rW  r2  Úp1Úp2r8   r8   r9   Útest_extend_descendingB  s     
"$"$z&TestPPolyCommon.test_extend_descendingc                 C   sÖ   t j d¡ t j ddddd¡}t  t j d¡¡}t j dd	¡}ttfD ]}|||ƒ}t||ƒjd
ƒ qHttfD ]`}||d |ƒ}tt  |dƒ¡dƒ tt  |t  	d¡ƒ¡dƒ t
t|t j	ddgdggtd�ƒ qpd S )Nr>   r«   rÍ   rL   r  r\   rE  rJ   rK   )rJ   rK   rL   r  r\   ).r   r   r   r(   r8   r  r  çš™™™™™Ù?r¬   )rD   rE   rF   rU  r`  r   r   r   rö   rN   rO   rP   Úobject)r0   rç   r2   ÚxprW  r2  r8   r8   r9   Ú
test_shapeW  s    
zTestPPolyCommon.test_shapec                 C   s¶   t j d¡ t  t j d¡¡}t j d¡d }|j|j }}t j d¡}ttfD ]`}|||ƒ|||ƒ|||ƒ  }}}	dD ]4}
t|||
ƒj|||
ƒƒ t|||
ƒj|	||
ƒƒ qzqPd S )Né90  rE  )r«   rÍ   y      ð?333333Ó?rL   r±   )	rD   rE   rF   r`  r  r  r   r   r   )r0   r2   rç   Zc_reZc_imrg  rW  r2  Zp_reZp_imÚnur8   r8   r9   Útest_complex_coefi  s    "z!TestPPolyCommon.test_complex_coefc              
   C   s†  t j d¡ t j dddddd¡}|j}t j d¡}d	D �]}|j|d
  }t  t j |d
 ¡¡}ttfD ]Ü}||||d�}t|j	j|||d … |d |…  ||d d …  ƒ ||ƒ}	|d |… |j |d| d …  }
t|	j|
ƒ ||||d� 
¡ ||||d� 
d¡||||d� ¡ ||||d� d¡fD ]}t|j|jƒ �q0qjq8dD ]2}ttfD ]"}tt|fi t|||d�¤Ž �qZ�qNd S )Nri  rJ   rK   rL   r  r\   r«   )r[   r%   ©r   r[   r%   rJ   r[   r‘   r%   )rM   rK   rL   r  )rç   r2   r�   )rD   rE   rF   rU  rö   r`  r   r   r   rç   Ú
derivativeÚantiderivativer�   rO   rP   r¨   )r0   rç   Zc_srg  r�   Úmr2   rW  r2  ÚresZ
targ_shaperb  r8   r8   r9   Ú	test_axisu  s0    
*ÿ"ýzTestPPolyCommon.test_axisN)ri   rj   rk   rR  rS  rL  r^  rd  rh  rk  rq  r8   r8   r8   r9   rQ    s   rQ  c                   @   sT   e Zd ZG dd„ deƒZG dd„ deƒZdd„ Zdd„ Zd	d
„ Z	dd„ Z
dd„ ZdS )ÚTestPolySubclassingc                   @   s   e Zd ZdS )zTestPolySubclassing.PN©ri   rj   rk   r8   r8   r8   r9   ÚP”  s   rt  c                   @   s   e Zd ZdS )zTestPolySubclassing.BNrs  r8   r8   r8   r9   ÚB—  s   ru  c                 C   sB   t j d¡ t  t j d¡¡}t j d¡}|  ||¡|  ||¡fS )Nr>   rJ   )rK   r%   )rD   rE   rF   r`  rt  ru  )r0   r2   rç   r8   r8   r9   Ú_make_polynomialsš  s    z%TestPolySubclassing._make_polynomialsc                 C   sJ   |   ¡ \}}||fD ]}| ¡ }t|j|jƒ q| ¡ }t|j|jƒ d S rÝ   )rv  rm  r   Ú	__class__rn  )r0   rX  Úbpr2  ÚpdZppar8   r8   r9   Útest_derivative   s    z#TestPolySubclassing.test_derivativec                 C   sf   t j d¡ t  t jdt j d¡df ¡}t j t|ƒ¡}t||dd�}| j 	|¡}t
|j| jƒ d S )Nr>   r   r¢   r[   ©r  )rD   rE   rF   r`  ræ   rU  r0  r   rt  Úfrom_spliner   rw  )r0   r2   r1   ÚsplrX  r8   r8   r9   Útest_from_spline©  s    z$TestPolySubclassing.test_from_splinec                 C   sD   |   ¡ \}}| j |¡}t|j| jƒ | j |¡}t|j| jƒ d S rÝ   )rv  rt  Úfrom_bernstein_basisr   rw  ru  Úfrom_power_basis)r0   rX  rx  r]  Úbp1r8   r8   r9   Útest_conversions²  s
    z$TestPolySubclassing.test_conversionsc                 C   s8   g d¢}dgdgdgg}| j  ||¡}t|j| j ƒ d S )Nr±   r[   r%   rJ   )ru  Úfrom_derivativesr   rw  )r0   r2   r1   rx  r8   r8   r9   Útest_from_derivatives»  s    z)TestPolySubclassing.test_from_derivativesN)ri   rj   rk   r   rt  r   ru  rv  rz  r~  r‚  r„  r8   r8   r8   r9   rr  “  s   			rr  c                   @   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d-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9S ):Ú	TestPPolyc                 C   sT   t  ddgddgddgg¡}t  g d¢¡}t||ƒ}t|dƒd	ƒ t|d
ƒdƒ d S )Nr[   rK   r%   rL   rJ   r  ©r   r(   r[   ç333333Ó?ç…ëQ¸…@çffffffæ?ç¤p=
×£@©rD   rN   r   r   ©r0   rç   r2   r2  r8   r8   r9   Útest_simpleÃ  s
    
zTestPPoly.test_simplec                 C   sx   t  ddgddgddgg¡}t  g d¢¡}t||dd	�}t|d
ƒdƒ t|dƒdƒ t|d
dƒdƒ t|ddƒdƒ d S )Nr[   rK   r%   rL   rJ   r  r†  Úperiodic©r�   gÍÌÌÌÌÌô?rˆ  ç333333Ó¿rŠ  gÍÌÌÌÌÌ@gffffff@r‹  rŒ  r8   r8   r9   Útest_periodicÊ  s    zTestPPoly.test_periodicc                 C   sˆ   t  ddgddgddgg¡}t  g d¢¡}t  g d¢¡}t||d	d
� dD ]8}||j_||j_t||ƒ}||ƒ}tt  |¡ ¡ ƒ qJd S )Nr[   rK   r%   rL   rJ   r  r†  )r   r  r  rŽ  r�  r&  )rD   rN   r   r'  r(  r   re   rd   )r0   rç   r2   r¿   r(  rÀ   r   r8   r8   r9   r)  Õ  s    
zTestPPoly.test_read_onlyc              	   C   sò  dd„ }t j d¡ d}dD �]Î}t  t j dd|d ¡¡}t jjdd	|d |fd
�}t  |¡}|d d d …f t  |d ¡d d d…d f  }||ƒ}|| }	t  |j|	¡}
|
| }t	||dd�}t	|d d …d d d…f |d d d… dd�}t j ddd¡}t
||ƒ||ƒdd� t
||dƒ||dƒdd� | ¡ }| ¡ }t
||ƒ||ƒdd� | ¡ }| ¡ }t j ddd¡D ]V\}}| ||¡}| ||¡}t
||dd� t
||ƒ||ƒ ||ƒ||ƒ dd� �qp| ¡ }| ¡ }t
|t  |¡dd� qd S )Nc                 S   sF   t  | d ¡ dd¡}t  | d ¡}t||ƒ}|d d d…d d d…f S )Nr[   rM   )rD   rW   rv   r#   )Úpowerr  Úkru  r8   r8   r9   Úbinom_matrixã  s    
z/TestPPoly.test_descending.<locals>.binom_matrixr   rJ   ©rq   r_  rC   rq   r[   rÌ   r%   ©ÚsizerM   Tr�  rí   r_  rì   ç‚vIhÂ%<=r¤   ©rL   r%   çê-�™—q=)rD   rE   rF   r`  ra  ÚdiffrW   ÚdotrH  r   r   rm  rn  Ú	integrateÚroots)r0   r”  r’  ro  r2   ÚcaÚhZh_powersru  ÚcapZcdpÚcdÚpary  Úx_testÚpa_dÚpd_dÚpa_iÚpd_irX   rY   Úint_aÚint_dZroots_dZroots_ar8   r8   r9   Útest_descendingâ  s@    

,*ÿ
zTestPPoly.test_descendingc                 C   s¾   t j ddddd¡}t  g d¢¡}t||ƒ}t|jj|jƒ t|jj|jƒ t|dƒj|jdd … ƒ t|t j dd¡ƒjd|jdd …  ƒ | 	¡ }t|jjd	ƒ | 
¡ }t|jjd
ƒ d S )Nr  r%   r[   rJ   r†  r‡  rL   ©rL   r  ©rL   r%   r[   r%   rJ   )r\   r%   r[   r%   rJ   )rD   rE   rU  rN   r   r   r2   rö   rç   rm  rn  )r0   rç   r2   r2  ÚdpÚipr8   r8   r9   Útest_multi_shape  s    
(zTestPPoly.test_multi_shapec                 C   sf   t j d¡ t jddgddgddggtd�}t  g d	¢¡}t ||¡}t|d
ƒdƒ t|dƒdƒ d S )Nr>   r[   rK   r%   rL   rJ   r  r¬   r†  r‡  rˆ  r‰  rŠ  )rD   rE   rF   rN   r  r   Zconstruct_fastr   rŒ  r8   r8   r9   Útest_construct_fast"  s     zTestPPoly.test_construct_fastc                 C   s¤   t j d¡ t j ddd¡}t  t jdt j d¡df ¡}t||ƒ}t jd }t|||ƒ}t||ƒ|ƒ t	|d d …d d …df ||ƒ}t||ƒd d …df |ƒ d S )	Nr>   rJ   rÍ   é   r   r¢   r[   )r‡  r(   g…ëQ¸Õ?ç333333ã?)
rD   rE   rF   rU  r`  ræ   r   Ú_ppoly_eval_1r   Ú_ppoly_eval_2)r0   rç   r2   r2  rg  Úexpectedr8   r8   r9   Ú#test_vs_alternative_implementations*  s    

z-TestPPoly.test_vs_alternative_implementationsc                 C   sØ   t j d¡ t  t jdt j d¡df ¡}t j t|ƒ¡}t||dd�}t 	|¡}t  
ddd¡}t||ƒt||ƒƒ t|Ž }t 	|¡}t||ƒ||ƒƒ |\}}	}
dD ],}t||	|
|d�}t 	|¡}t|j|jƒ q¦d S )	Nr>   r   r¢   r[   r{  rî   )NTFr�  )rD   rE   rF   r`  ræ   rU  r0  r   r   r|  r   r   r   r   r   r�   )r0   r2   r1   r}  rX  r  rY   ZpppÚtrç   r“  Zextrapr2  r8   r8   r9   r~  8  s    



zTestPPoly.test_from_splinec                 C   s˜   t j d¡ t  g d¢g¡j}t  g d¢g¡j}t  ddgg¡j}t  ddg¡}t||ƒ}t||ƒ}t||ƒ}t| ¡ j|jƒ t| d¡j|jƒ d S )	Nr>   )rK   rJ   r%   r[   )rÍ   r  r%   é   r  r   r[   r%   )	rD   rE   rF   rN   rH  r   r   rm  rç   )r0   rç   ZdcZddcr2   rX  ZdppZddppr8   r8   r9   Útest_derivative_simpleO  s    


z TestPPoly.test_derivative_simplec                 C   sŒ   t j d¡ t  t jdt j d¡df ¡}t j t|ƒ¡}t||dd�}t 	|¡}t  
ddd¡}tddƒD ]}t|||ƒt|||ƒƒ qjd S )Nr>   r   r¢   r[   r{  rî   rJ   )rD   rE   rF   r`  ræ   rU  r0  r   r   r|  r   r÷   r   r   ©r0   r2   r1   r}  rX  r  Údxr8   r8   r9   Útest_derivative_eval]  s    
zTestPPoly.test_derivative_evalc                 C   sš   t j d¡ t  t jdt j d¡df ¡}t j t|ƒ¡}t||ddd�}t 	|¡}t  
ddd¡}tddƒD ](}t|||ƒ| |¡|ƒd	|f d
� qld S )Nr>   r   r¢   r[   rL   ©r  r“  rî   rq   zdx=%dr  )rD   rE   rF   r`  ræ   rU  r0  r   r   r|  r   r÷   r   rm  r»  r8   r8   r9   rz  i  s    
ÿzTestPPoly.test_derivativec                 C   s^   t dggddgƒ}t| ¡ jt dgdggddgƒjƒ t| ¡ jt dgdggddgƒjƒ d S )Nr)   r   r[   )r   r   rn  rç   r2   )r0   r2  r8   r8   r9   Útest_antiderivative_of_constantv  s    $z)TestPPoly.test_antiderivative_of_constantc                 C   sp   t ddggg d¢ƒ}| ¡ }t|jddgddggƒ t|jg d¢ƒ t| dd¡dƒ t|dƒ|dƒ dƒ d S )Nr)   r(   r±   r[   r   r%   rT   )r   rn  r   rç   r2   r   r�  )r0   r2  Úqr8   r8   r9   Ú#test_antiderivative_regression_4355|  s    z-TestPPoly.test_antiderivative_regression_4355c           	      C   sÆ   t j d¡ t  g d¢g d¢g¡j}t  g d¢g d¢g¡j}t  g d¢g d¢g¡j}t  g d¢¡}t||ƒ}| ¡ }| d	¡}| ¡ }t|j|ƒ t|j	j|jƒ t|j	j|jƒ t|j	j|jƒ d S )
Nr>   )rJ   r%   r[   )r   r   ç      û?)r[   r[   r[   r   )r   r   rÂ  ç      Õ?)ç      Ð?gUUUUUUÕ?r(   r   r   )r   r   g      ë?rÃ  g«ªªªª*£?)r   rÄ  r[   r%   )
rD   rE   rF   rN   rH  r   rn  r   r2   rç   )	r0   rç   ZicZiicr2   rX  ÚippZiippZiipp2r8   r8   r9   Útest_antiderivative_simple…  s    
ÿ

z$TestPPoly.test_antiderivative_simplec              	   C   sì   t j d¡ t  ddd¡d }t j t|ƒ¡}t||ddd�}t |¡}t	ddƒD ]”}| 
|¡}| |¡}t|j|jƒ t	|ƒD ]d}| |¡}d	}	|	|jd d
…  d|	 |jdd …   }
t||jdd … ƒ||
ƒdd||f d� q€qRd S )Nr>   r   r[   rC   r%   rL   r¾  rq   r˜  rM   r·   z
dx=%d k=%d)r¥   rº   )rD   rE   rF   r   rU  r0  r   r   r|  r÷   rn  rm  r   rç   r2   )r0   r2   r1   r}  rX  r¼  rÅ  rY  r“  Úrr[  r8   r8   r9   Ú!test_antiderivative_vs_derivative�  s     



(ÿz+TestPPoly.test_antiderivative_vs_derivativec           	      C   s¢   t j d¡ t  t jdt j d¡df ¡}t j t|ƒ¡}t||ddd�}t 	|¡}t
ddƒD ]>}| |¡}t||ƒ}t  ddd¡}t||ƒt||ƒd	d
� q^d S )Nr>   r   r¢   r[   rL   r¾  rq   rî   r·   r¤   )rD   rE   rF   r`  ræ   rU  r0  r   r   r|  r÷   rn  r   r   r   r   )	r0   r2   r1   r}  rX  r¼  rY  Zspl2r  r8   r8   r9   Útest_antiderivative_vs_splineµ  s    


ÿz'TestPPoly.test_antiderivative_vs_splinec                 C   sh   t  g d¢g d¢g¡j}t  g d¢¡}t||ƒ}| ¡ }t|dƒ|dƒdd� | ¡ }t|j|jƒ d S )N)r%   r[   r%   r%   )r%   r[   rJ   rJ   r†  gAíþÿÿß?g_p‰   à?g:Œ0âŽyE>r¤   )rD   rN   rH  r   rn  r   rm  rç   )r0   rç   r2   r2  r¯  rc  r8   r8   r9   Útest_antiderivative_continuityÅ  s    
z(TestPPoly.test_antiderivative_continuityc           	      C   sè   t j d¡ t  t jdt j d¡df ¡}t j t|ƒ¡}t||ddd�}t 	|¡}d\}}| 
||¡}| ¡ }t|||ƒ||ƒ ƒ t|t|||ƒƒ d\}}|j
||d	d
�}t|||ƒ||ƒ ƒ tt  |j
||dd
�¡ ¡ ƒ d S )Nr>   r   r¢   r[   rL   r¾  )r‡  çÍÌÌÌÌÌì?)r�  rË  Tr�  F)rD   rE   rF   r`  ræ   rU  r0  r   r   r|  r�  rn  r   r   r   rc   rd   )	r0   r2   r1   r}  rX  rX   rY   ÚigrÅ  r8   r8   r9   Útest_integrateÓ  s    
zTestPPoly.test_integratec                 C   sn   t  g d¢¡}t  ddgddgddgddgg¡}dD ]4}||j_t||ƒ}| dd	¡}tt  |¡ ¡ ƒ q4d S )
N©r[   r%   rK   ro   r    r*   ç       €r)   r&  r[   rK   )	rD   rN   r'  r(  r   r�  r   re   rd   )r0   r2   rç   r(  rt  r   r8   r8   r9   Útest_integrate_readonlyè  s    "
z!TestPPoly.test_integrate_readonlyc                 C   s¦  t  g d¢¡}t  ddgddgddgddgg¡}t||dd�}| ¡ }|d	ƒ|d
ƒ }t| d
d	¡|ƒ t| dd¡|ƒ t| dd¡d| ƒ t| dd¡|dƒ|dƒ ƒ t| dd¡|dƒ|d
ƒ |d	ƒ |dƒ ƒ t| dd¡|dƒ|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|  ƒ d S ©NrÎ  ro   r    r*   rÏ  r)   rŽ  r�  rK   r[   rí   iùÿÿÿéüÿÿÿr%   rT   rU   r;  rL   g      /@é   r   rM   rJ   i÷ÿÿÿ)rD   rN   r   rn  r   r�  ©r0   r2   rç   rt  ÚIZ
period_intr8   r8   r9   Útest_integrate_periodicô  s&    ".ÿ&ÿz!TestPPoly.test_integrate_periodicc                 C   sl   t  ddd¡d }t  d| ¡}t||ddd�}t |¡}| ¡ }||dk|d	k@  }t|t|ƒd
d� d S )Nr   r[   rB   r%   rC   rJ   r¾  gVçž¯Ò¼g     ð?r®   r¯   )	rD   r   r   r   r   r|  rž  r   r   )r0   r2   r1   r}  rX  rÇ  r8   r8   r9   Ú
test_roots  s    
zTestPPoly.test_rootsc                 C   sš   t  ddgddgddgg¡j}t  g d¢¡}t||ƒ}t| ¡ ddt jdgƒ d}| ¡ }|dd d …f  |7  < t||ƒ}t| |¡ddt jdgƒ d S )	NrM   rÄ  r   )r   re  r³  r)   re  g333333ë?r*   r[   )	rD   rN   rH  r   r   rž  rb   rG   Úsolve)r0   rç   r2   rX  ÚconstÚc1r]  r8   r8   r9   Útest_roots_idzero  s    
ÿ

ÿzTestPPoly.test_roots_idzeroc                 C   sÄ   dgdgg}ddg}t ||ƒ}t| ¡ dtjgƒ t| d¡dtjgƒ t| d¡g ƒ ddgddgg}g d¢}t ||ƒ}t| ¡ dtjdtjgƒ t| d¡dtjdtjgƒ t| d¡g ƒ d S )Nr   r[   r±   )r   r   rž  rD   rb   rØ  rŒ  r8   r8   r9   Útest_roots_all_zero*  s    

zTestPPoly.test_roots_all_zeroc                 C   sZ   t  g d¢g d¢g¡j}t  g d¢¡}t||ƒ}t| ¡ ddgƒ t|jdd�dgƒ d S )N)r[   r   rM   )rM   r   r   r×   rÌ   r   Fr�  )rD   rN   rH  r   r   rž  ©r0   rç   r2   rX  r8   r8   r9   Útest_roots_repeated:  s
    
zTestPPoly.test_roots_repeatedc                 C   sœ   t  dgdgg¡j}t  g d¢¡}t||ƒ}t| ¡ dgƒ t|jdd�g ƒ t| d¡dgƒ t|jddd�g ƒ t| d¡g ƒ t|jddd�g ƒ d S )Nr[   rM   r†  r(   F)ÚdiscontinuityrT   )rD   rN   rH  r   r   rž  rØ  rÝ  r8   r8   r9   Útest_roots_discontF  s    
zTestPPoly.test_roots_discontc                 C   sX  t j d¡ d}dD �]*}tddƒD �]}t  t jddt j d¡ df ¡}dt j |d t|ƒd dd	¡ d }t||ƒ}dt j ¡ fD ]²}|j	|d
|d�}tdƒD ]”}	td	ƒD ]†}
||	|
f }|j
dkr²||j
7 }|||d�d d …|	|
f }||d|d�d d …|	|
f }d|›dt|ƒ› �}t|| | dd|d� q²q¦qŠq$qt|dkt|ƒƒ d S )Nr>   r   r&  r_  rq   rC   r%   r[   rJ   F)rß  r�   r�  )rj  r�   ú(z) r = r·   r¹   rì   )rD   rE   rF   r÷   rT  ræ   rU  r0  r   rØ  r—  Úreprr   r   )r0   Únumr�   rV  r2   rç   rX  r1   rÇ  ÚiÚjZrrÚvalZcmpvalrP  r8   r8   r9   Útest_roots_randomU  s2    
"&


ÿÿÿzTestPPoly.test_roots_randomc              
   C   sN  t j d¡ tddƒD �]0}t j |dd¡}|dkrFd|d d …ddf< dt j ¡ fD ]ò}t j|jtd�}t 	||¡ |dkr�t
t  |¡ ¡ ƒ qTd}d}t|ƒD ]H}|||d f ||d |   7 }|t||d f ||d |   ƒ7 }q t jd	d
�� || }W d   ƒ n1 �s0    Y  | ¡ }|t  |¡  }t|ddd� qTqd S )Nr>   r[   rÏ   é‚   rJ   )r[   r%   r[   r   r¬   Úignore)rM  g»½×Ùß|Û=r¯   )rD   rE   rF   r÷   rU  rF  rö   Úcomplexr   Z_croots_poly1r   rc   rd   ÚabsZerrstater/   r   )r0   r“  rç   r1   Úwrp  Zcresrä  r8   r8   r9   Útest_roots_crootst  s*     &(zTestPPoly.test_roots_crootsc                 C   s  t  g d¢g¡j}t  ddg¡}dD ]ê}t|||d�}| ¡ }| ¡ }|du r®tt  |ddgƒ¡ ¡ ƒ tt  |ddgƒ¡ ¡ ƒ tt  |ddgƒ¡ ¡ ƒ t	| 
¡ dgƒ q$t|ddgƒd	d
gƒ tt  |ddgƒ¡ ¡  ƒ tt  |ddgƒ¡ ¡  ƒ t| 
¡ ddgƒ q$d S )Nr×   r   r[   ©TFNr�  Fçš™™™™™¹¿çš™™™™™ñ?g®Gáz®ï?gèz®GáÊ¿rM   )rD   rN   rH  r   rm  rn  r   rc   rd   r   rž  r   Úany)r0   rç   r2   r�   rX  Zpp_dZpp_ir8   r8   r9   Útest_extrapolate_attr’  s    zTestPPoly.test_extrapolate_attrN)ri   rj   rk   r�  r‘  r)  r«  r°  r±  r·  r~  rº  r½  rz  r¿  rÁ  rÆ  rÈ  rÉ  rÊ  rÍ  rÐ  rÖ  r×  rÛ  rÜ  rÞ  rà  rç  rí  rò  r8   r8   r8   r9   r…  Â  s8   1	r…  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 )Ú	TestBPolyc                 C   s,   ddg}dgg}t ||ƒ}t|dƒdƒ d S )Nr   r[   rJ   r  r•   ©r   r   ©r0   r2   rç   rx  r8   r8   r9   r�  ©  s    
zTestBPoly.test_simplec                 C   s0   ddg}dgdgg}t ||ƒ}t|dƒdƒ d S )Nr   r[   rJ   r  ggfffff@rô  rõ  r8   r8   r9   Útest_simple2¯  s    
zTestBPoly.test_simple2c                 C   s4   ddg}dgdgdgg}t ||ƒ}t|dƒdƒ d S )Nr   r[   rJ   rK   r  g433333@rô  rõ  r8   r8   r9   Útest_simple3µ  s    
ÿzTestBPoly.test_simple3c                 C   s8   ddg}dgdgdgdgg}t ||ƒ}t|dƒdƒ d S )Nr   r[   r%   r‡  g:ßO�—nð?rô  rõ  r8   r8   r9   Útest_simple4¼  s    
zTestBPoly.test_simple4c                 C   s<   ddg}dgdgdgdgdgg}t ||ƒ}t|dƒdƒ d S )Nr   r[   r«   r%   r‡  g”Ô	h"l@rô  rõ  r8   r8   r9   Útest_simple5Å  s    
zTestBPoly.test_simple5c                 C   sl   g d¢}ddgddgddgg}t ||dd�}t|dƒdƒ t|d	ƒd
ƒ t|ddƒdƒ t|d	dƒdƒ d S )N©r   r[   rJ   rJ   r   r%   rŽ  r�  g333333@gHáz®Gñ?gÍÌÌÌÌÌô¿ç[�Âõ(\Ï?r[   çÌÌÌÌÌÌÀr‰  rô  rõ  r8   r8   r9   r‘  Ï  s    zTestBPoly.test_periodicc              	   C   s|  t j d¡ d}dD �]`}t  t j dd|d ¡¡}t jjdd|d |fd�}|d d d	…  ¡ }t||d
d�}t|d d …d d d	…f |d d d	… d
d�}t j ddd¡}t||ƒ||ƒdd� t||dƒ||dƒdd� | ¡ }	| ¡ }
t|	|ƒ|
|ƒdd� | 	¡ }| 	¡ }t j ddd¡D ]V\}}| 
||¡}| 
||¡}t||dd� t||ƒ||ƒ ||ƒ||ƒ dd� �qqd S )Nr   rJ   r•  rq   r[   rï  r  r–  rM   Tr�  rí   r_  rì   r˜  r¤   r™  rš  )rD   rE   rF   r`  ra  rG   r   r   rm  rn  r�  )r0   r’  ro  r2   rŸ  r¢  r£  ry  r¤  r¥  r¦  r§  r¨  rX   rY   r©  rª  r8   r8   r9   r«  Û  s.    
*ÿzTestBPoly.test_descendingc                 C   s¨   t j ddddd¡}t  g d¢¡}t||ƒ}t|jj|jƒ t|jj|jƒ t|dƒj|jdd … ƒ t|t j dd¡ƒjd|jdd …  ƒ | 	¡ }t|jjd	ƒ d S )
Nr  r%   r[   rJ   r†  r‡  rL   r¬  r­  )
rD   rE   rU  rN   r   r   r2   rö   rç   rm  )r0   rç   r2   r2  r®  r8   r8   r9   r°  ý  s    
ÿzTestBPoly.test_multi_shapec                 C   sl   ddg}dgdgdgg}t ||ƒ}d}|d }t||ƒdd|  d|  d| d|   d| |  ƒ d S )Nr   r%   rJ   r[   rK   r  rô  )r0   r2   rç   rx  Zxvalr  r8   r8   r9   Útest_interval_length
  s    
zTestBPoly.test_interval_lengthc                 C   sH   g d¢}ddgddgddgg}t ||ƒ}t|dƒdƒ t|dƒdƒ d S )	Nrú  rJ   r   r%   re  gGáz®Gñ?ç333333û?rû  rô  rõ  r8   r8   r9   Útest_two_intervals  s
    
zTestBPoly.test_two_intervalsc                 C   s¼   ddg}dgdgdgg}t ||ƒ}dD ]�}t |||d�}| ¡ }|du r~tt |d	d
gƒ¡ ¡ ƒ tt |d	d
gƒ¡ ¡ ƒ q&tt |d	d
gƒ¡ ¡  ƒ tt |d	d
gƒ¡ ¡  ƒ q&d S )Nr   r%   rJ   r[   rK   rî  r�  Frï  gÍÌÌÌÌÌ @)r   rm  r   rD   rc   rd   rñ  )r0   r2   rç   rx  r�   Zbp_dr8   r8   r9   rò    s    
zTestBPoly.test_extrapolate_attrN)ri   rj   rk   r�  rö  r÷  rø  rù  r‘  r«  r°  rý  rÿ  rò  r8   r8   r8   r9   ró  ¨  s   	
"ró  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 )ÚTestBPolyCalculusc                 C   s¨   g d¢}ddgddgddgg}t ||ƒ}| ¡ }t|dƒdƒ t|dƒdƒ t|dd	d
�|ddd
�|ddd
�gg d¢ƒ t|dd	d
�|ddd
�|ddd
�gg d¢ƒ d S )Nrú  rJ   r   r%   re  rü  rþ  r‰  r[   ©rj  )rü  r™   ro   )r‰  r)   r   )r   rm  r   )r0   r2   rç   rx  Zbp_derr8   r8   r9   rz  +  s    
"ÿ"ÿz!TestBPolyCalculus.test_derivativec           	      C   s˜   t j d¡ d\}}t  t j |¡¡}t j ||d f¡}t||ƒ}t |¡}t|ƒD ]<}| ¡ }| ¡ }t  	|d |d d¡}t
||ƒ||ƒƒ qVd S ©Nr>   ©rL   r«   r[   r   rM   r<   )rD   rE   rF   r`  r   r   r  r÷   rm  r   r   )	r0   ro  r“  r2   rç   rx  rX  Údrg  r8   r8   r9   Útest_derivative_ppoly9  s    

z'TestBPolyCalculus.test_derivative_ppolyc           	      C   sœ   t j d¡ d\}}t  t j |¡¡}t j ||d f¡}| ¡ |d fD ]L}t||ƒ}t  |d |d d¡}t|ƒD ]}t|||ƒ| 	|¡|ƒƒ qvqJd S )Nr>   r  r[   r  r   rM   r<   )
rD   rE   rF   r`  rG   r   r   r÷   r   rm  )	r0   ro  r“  r2   rç   Úccrx  rg  rä  r8   r8   r9   Útest_deriv_inplaceH  s    
z$TestBPolyCalculus.test_deriv_inplacec              	   C   sz   g d¢}ddgddgg}t ||ƒ}| ¡ }t ddd¡}t||ƒt |dk |d d d| |d d  d	 ¡d
d
d� d S )Nrú  r   r[   rJ   r¢   r%   r*   r(   g      è?rš  ©r°   r¥   )r   rn  rD   r   r   Úwhere)r0   r2   rç   rx  ZbiÚxxr8   r8   r9   rÆ  U  s    
ÿýz,TestBPolyCalculus.test_antiderivative_simplec                 C   sn   t j d¡ t  t j d¡¡}t j d¡}t||ƒ}t  |d |d d¡}t| ¡  ¡ |ƒ||ƒddd� d S )	Nr>   r¢   ©rK   rq   r%   rJ   r   rM   rì   rš  r  )	rD   rE   rF   r`  r   r   r   rn  rm  ©r0   r2   rç   rx  r
  r8   r8   r9   Útest_der_antideri  s    

ÿz"TestBPolyCalculus.test_der_antiderc                 C   s|   t j d¡ t  t j d¡¡}t j d¡}t||ƒ}t |¡}t  |d |d d¡}t| 	d¡|ƒ| 	d¡|ƒddd	� d S )
Nr>   r¢   r  r   rM   rq   r%   rš  r  )
rD   rE   rF   r`  r   r   r  r   r   rn  )r0   r2   rç   rx  rX  r
  r8   r8   r9   Útest_antider_ppolys  s    

ÿz$TestBPolyCalculus.test_antider_ppolyc                 C   sj   t j d¡ t  t j d¡¡}t j d¡}t||ƒ ¡ }|jdd… }t||d ƒ||d ƒddd� d S )	Nr>   r¢   ©rK   rq   r[   rM   r£   rš  r  )rD   rE   rF   r`  r   rn  r2   r   r  r8   r8   r9   Útest_antider_continuous  s    ÿz)TestBPolyCalculus.test_antider_continuousc                 C   sb   t j d¡ t  t j d¡¡}t j d¡}t||ƒ}t |¡}t| dd¡| dd¡ddd� d S )Nr>   r¢   r  r   r[   rš  r  )	rD   rE   rF   r`  r   r   r  r   r�  )r0   r2   rç   rx  rX  r8   r8   r9   rÍ  ‰  s    

ÿz TestBPolyCalculus.test_integratec                 C   sr   dgg}ddg}t ||ƒ}t| dd¡ddd� t ||dd�}tt | dd¡¡ƒ t|jddd	d�ddd� d S )
Nr[   r   r%   r*   r£   r¯   Fr�  T)r   r   r�  r   rD   rc   )r0   rç   r2   rY   Úb1r8   r8   r9   Útest_integrate_extrap’  s    
z'TestBPolyCalculus.test_integrate_extrapc                 C   s¬  t  g d¢¡}t  ddgddgddgddgg¡}tjt||ƒdd�}| ¡ }|d	ƒ|d
ƒ }t| d
d	¡|ƒ t| dd¡|ƒ t| dd¡d| ƒ t| dd¡|dƒ|dƒ ƒ t| dd¡|dƒ|d
ƒ |d	ƒ |dƒ ƒ t| dd¡|dƒ|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|  ƒ d S rÑ  )rD   rN   r   r€  r   rn  r   r�  rÔ  r8   r8   r9   rÖ  Ÿ  s&    ".ÿ&ÿz)TestBPolyCalculus.test_integrate_periodicc                 C   sr   dgg}ddg}t ||ƒ}t ddd¡}t| d¡|ƒ| ¡ |ƒddd� t| d¡|ƒ| d¡|ƒddd� d S )Nr[   r   r<   rM   rš  r  )r   rD   r   r   rm  rn  )r0   rç   r2   rY   r
  r8   r8   r9   Útest_antider_neg·  s    
ÿÿz"TestBPolyCalculus.test_antider_negN)ri   rj   rk   rz  r  r  rÆ  r  r  r  rÍ  r  rÖ  r  r8   r8   r8   r9   r   *  s   

	r   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestPolyConversionsc                 C   sl   g d¢}ddgddgddgg}t ||ƒ}t |¡}t  |¡}ddg}t||ƒ||ƒƒ t||ƒ||ƒƒ d S )	Nrú  rJ   r%   r[   r«   rK   r  çffffffö?)r   r   r€  r  r   )r0   r2   rç   rX  rx  r]  rg  r8   r8   r9   Útest_bp_from_ppÆ  s    


z#TestPolyConversions.test_bp_from_ppc           	      C   s–   t j d¡ d\}}t  t j |¡¡}t j ||d f¡}t||ƒ}t |¡}t |¡}t  |d |d d¡}t	||ƒ||ƒƒ t	||ƒ||ƒƒ d S r  )
rD   rE   rF   r`  r   r   r€  r  r   r   )	r0   ro  r“  r2   rç   rX  rx  r]  rg  r8   r8   r9   Útest_bp_from_pp_randomÑ  s    


z*TestPolyConversions.test_bp_from_pp_randomc                 C   sl   g d¢}ddgddgddgg}t ||ƒ}t |¡}t  |¡}ddg}t||ƒ||ƒƒ t||ƒ||ƒƒ d S )Nrú  rJ   r[   rK   r%   r  r  )r   r   r  r€  r   )r0   r2   rç   rx  rX  r�  rg  r8   r8   r9   Útest_pp_from_bpÞ  s    


z#TestPolyConversions.test_pp_from_bpc                 C   sš   g d¢}ddgddgddgg}t ||ƒ}ttƒ� t  |¡ W d   ƒ n1 sP0    Y  t||ƒ}ttƒ� t |¡ W d   ƒ n1 sŒ0    Y  d S )Nrú  rJ   r[   rK   r%   )r   rO   Ú	TypeErrorr  r   r€  )r0   r2   rç   rX  rx  r8   r8   r9   Útest_broken_conversionsé  s    

(

z+TestPolyConversions.test_broken_conversionsN)ri   rj   rk   r  r  r  r  r8   r8   r8   r9   r  Å  s   r  c                   @   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!S )"ÚTestBPolyFromDerivativesc                 C   s&   t  dddgdg¡}t|ddgƒ d S )Nr   r[   r%   rJ   r*   r•   ©r   Ú_construct_from_derivativesr   )r0   rÚ  r8   r8   r9   Útest_make_poly_1÷  s    z)TestBPolyFromDerivatives.test_make_poly_1c                 C   sp   t  ddddgdg¡}t|g d¢ƒ t  ddddgdg¡}t|g d¢ƒ t  dddgddg¡}t|g d¢ƒ d S )Nr   r[   )r)   r)   r)   r%   rJ   )r*   r;  r)   )r*   g      à¿r)   r  ©r0   rÚ  r\  Úc3r8   r8   r9   Útest_make_poly_2û  s    z)TestBPolyFromDerivatives.test_make_poly_2c                 C   sr   t  ddg d¢dg¡}t|g d¢ƒ t  dddgg d¢¡}t|g d¢ƒ t  ddddgdd	g¡}t|g d
¢ƒ d S )Nr   r[   )r[   r%   rJ   rK   )r)   ç«ªªªªªú?g«ªªªªª@r  )rK   r%   rJ   )r)   gUUUUUU	@g«ªªªªª
@r  r%   rJ   )r)   r"  r•   r  r  r  r8   r8   r9   Útest_make_poly_3  s    z)TestBPolyFromDerivatives.test_make_poly_3c                 C   sž   t j d¡ t jdt j d¡f }t jdt j d¡f }t dd||¡}t|d d …d f ddgƒ}tdƒD ].}t|dƒ|dƒg|| || gƒ | ¡ }qjd S )Nri  r   rL   r[   r  ro   r)   )	rD   rE   rF   ræ   r   r  r÷   r   rm  )r0   ZyaZybrç   rX  rå  r8   r8   r9   Útest_make_poly_12  s    "z*TestBPolyFromDerivatives.test_make_poly_12c           	      C   sv   t j d¡ ddg}d\}}t j |ddddf¡}t||ƒ}t ||¡}t||ƒ}t  ddd¡}t||ƒ||ƒƒ d S )	Nri  r   r[   )r«   rL   r%   rJ   rK   r¢   )rD   rE   rF   r   Z_raise_degreer   r   )	r0   r2   r“  r  rç   rx  rÚ  r�  rg  r8   r8   r9   Útest_raise_degree  s    

z*TestBPolyFromDerivatives.test_raise_degreec                 C   s   t ttjddgdgƒ d S )Nr   r[   ©rO   rP   r   rƒ  r„   r8   r8   r9   Ú
test_xi_yi,  s    z#TestBPolyFromDerivatives.test_xi_yic                 C   s,   g d¢}dgdgdgg}t ttj||ƒ d S )N©r   r   r[   r   r&  )r0   r  rè   r8   r8   r9   Útest_coords_order/  s    z*TestBPolyFromDerivatives.test_coords_orderc                 C   sn   g d¢}ddgdgddgddgg}t  ||¡}t|jjdkƒ | ¡ }dD ]}t||ƒ||ƒgddgƒ qJd S )Nrl  r   )rK   rJ   )ro   r  r)   rð  gffffffþ?r*   rU   ro   )r   rƒ  r   rç   rö   rm  r   )r0   r  rè   rX  Zppdrg  r8   r8   r9   Ú
test_zeros4  s    z#TestBPolyFromDerivatives.test_zerosc                    sJ   t j d¡ t  dd„ t|d ƒD ƒ¡}‡ fdd„t|d ƒD ƒ}||fS )Nr>   c                 S   s   g | ]}d |d  ‘qS )r)   r%   r8   ©rò   rå  r8   r8   r9   Ú
<listcomp>A  rô   z<TestBPolyFromDerivatives._make_random_mk.<locals>.<listcomp>r[   c                    s   g | ]}t j ˆ ¡‘qS r8   )rD   rE   r+  ©r“  r8   r9   r,  B  rô   )rD   rE   rF   r"  r÷   ©r0   ro  r“  r  rè   r8   r-  r9   Ú_make_random_mk>  s    z(TestBPolyFromDerivatives._make_random_mkc                    s^   d\}}|   ||¡\}}t ||¡}t|d ƒD ](‰ t||ƒ‡ fdd„|D ƒƒ | ¡ }q0d S )N©rL   rÍ   r%   c                    s   g | ]}|ˆ  ‘qS r8   r8   )rò   Úyy©rV  r8   r9   r,  K  rô   z;TestBPolyFromDerivatives.test_random_12.<locals>.<listcomp>)r/  r   rƒ  r÷   r   rm  ©r0   ro  r“  r  rè   rX  r8   r2  r9   Útest_random_12E  s    z'TestBPolyFromDerivatives.test_random_12c                 C   s:   d\}}|   ||¡\}}tttjfi t||dd�¤Ž d S )Nr0  r   ©r  rè   Úorders)r/  rO   rP   r   rƒ  r¨   r.  r8   r8   r9   Útest_order_zeroN  s
    ÿz(TestBPolyFromDerivatives.test_order_zeroc                 C   sV   d\}}|   ||¡\}}tj||d| d d� tttjfi t||d| d�¤Ž d S )Nr0  r%   r[   ©r6  r5  )r/  r   rƒ  rO   rP   r¨   r.  r8   r8   r9   Útest_orders_too_highT  s    ÿz-TestBPolyFromDerivatives.test_orders_too_highc                 C   s4  d\}}|   ||¡\}}d}tj|||d�}t|d d ƒD ]6}t||dd… d ƒ||dd… d ƒƒ | ¡ }q<tt ||dd… d ƒ||dd… d ƒ¡ ƒ d}tj|||d�}t|d ƒD ]6}t||dd… d ƒ||dd… d ƒƒ | ¡ }qÆtt ||dd… d ƒ||dd… d ƒ¡ ƒ d S )	Nr0  rL   r8  r%   r[   rM   rš  r  )	r/  r   rƒ  r÷   r   rm  r   rD   Úallclose)r0   ro  r“  r  rè   rV  rX  rå  r8   r8   r9   Útest_orders_global\  s    *
2*
z+TestBPolyFromDerivatives.test_orders_globalc           
      C   s¶   d\}}|   ||¡\}}dd„ t|ƒD ƒ}t|dd… ƒD ]v\}}tj|||d�}t|| d d ƒD ]&}	t||d ƒ||d ƒƒ | ¡ }qftt 	||d ƒ||d ƒ¡ ƒ q:d S )	N)r\   rÍ   c                 S   s   g | ]}|d  ‘qS )r[   r8   )rò   Úor8   r8   r9   r,  x  rô   z>TestBPolyFromDerivatives.test_orders_local.<locals>.<listcomp>r[   rM   r8  r%   rš  )
r/  r÷   r	  r   rƒ  r   rm  r   rD   r:  )
r0   ro  r“  r  rè   r6  rä  r2   rX  rå  r8   r8   r9   Útest_orders_localt  s    
z*TestBPolyFromDerivatives.test_orders_localc                 C   sd   d\}}t  t j |d ¡¡}t j |d |dddf¡}t ||¡}t|jjd| |dddfƒ d S )N)r\   rL   r[   r  r\   r«   r%   )rD   r`  rE   r   rƒ  r   rç   rö   r3  r8   r8   r9   Útest_yi_trailing_dims€  s
    z.TestBPolyFromDerivatives.test_yi_trailing_dimsc                 C   sž   t  d¡}tjddgdgdgg|d�}t|dƒdƒ t  d¡}tjddgdgdgg|d�}t|dƒdƒ d}tjddgdgdgg|d�}t|dƒdƒ d}d S )Nr[   r   r8  )rD   Zint32r   rƒ  r   Zint64)r0   r6  r2  r8   r8   r9   Útest_gh_5430‡  s    

z%TestBPolyFromDerivatives.test_gh_5430N)ri   rj   rk   r  r!  r#  r$  r%  r'  r)  r*  r/  r4  r7  r9  r;  r=  r>  r?  r8   r8   r8   r9   r  ö  s    
	r  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 )ÚTestNdPPolyc                 C   sz   t j d¡ t j dd¡}t  ddd¡}t j d¡}t||fƒ}||fƒ}t|d d …d d …d f ||ƒ ¡ }t||ƒ d S )Nr>   rK   rL   r   r[   r  rî   )	rD   rE   rF   rU  r   r   r´  r/   r   )r0   rç   r2   r  r2  Úv1Úv2r8   r8   r9   Útest_simple_1dš  s    
"zTestNdPPoly.test_simple_1dc           
   
   C   sF  t j d¡ t j dddd¡}t  ddd¡}t  ddd¡d	 }t j d
¡}t j d
¡}t jt|ƒdg|jd�}| t j	¡ t
 | ddd¡||ft jddgt jd�t j||f t jddgt jd�d|¡ | ¡ }t|||f||ƒ}t||ƒ t|||fƒ}dD ]B}	|t j||f |	d�}t|||f|||	d�}t||t|	ƒd� qþd S )Nr>   rK   rL   r  r\   r   r[   r«   r%   rî   r¬   r_  é*   )N©r   r   ©r   r[   )r[   r   )r%   rJ   )r¡   r%   r  r  )rD   rE   rF   rU  r   rF  r0  r­   Úfillrb   r   Zevaluate_ndrv   rN   ZintcZc_r/   Ú_ppoly2d_evalr   r   râ  )
r0   rç   r2   r1   r  rè   rA  rB  r2  rj  r8   r8   r9   Útest_simple_2d¨  s0    ú
zTestNdPPoly.test_simple_2dc              	   C   sÔ   t j d¡ t j dddddd¡}t  dd	d¡}t  dd	d¡d
 }t  dd	d¡d }t j d¡}t j d¡}t j d¡}t||||fƒ}dD ]B}	||||f|	d�}
t||||f||||	d�}t|
|t|	ƒd� qŒd S )Nr>   rK   rL   r  r\   r«   r¡   r   r[   r%   rq   rJ   é(   )N©r   r   r   ©r   r[   r   ©r[   r   r   )r%   rJ   r   )r  r   r%   r  r  )	rD   rE   rF   rU  r   r   Ú_ppoly3d_evalr   râ  )r0   rç   r2   r1   r3   r  rè   Úzir2  rj  rA  rB  r8   r8   r9   Útest_simple_3dÅ  s    zTestNdPPoly.test_simple_3dc              
   C   sä   t j d¡ t j dddddddd	¡}t  d
dd¡}t  d
dd¡d }t  d
dd	¡d }t  d
dd¡d }t j d¡}t j d¡}t j d¡}t j d¡}	t|||||fƒ}
|
||||	fƒ}t|||||f||||	ƒ}t||ƒ d S )Nr>   rK   rL   r  r\   r«   r¡   rq   r¢   r   r[   r%   rJ   rÍ   r_  )rD   rE   rF   rU  r   r   Ú_ppoly4d_evalr   )r0   rç   r2   r1   r3   r7   r  rè   rO  Zuir2  rA  rB  r8   r8   r9   Útest_simple_4dÙ  s    zTestNdPPoly.test_simple_4dc                 C   s–   t j d¡ t j dd¡}t  ddd¡}t||fƒ}|jdgd�}t||ƒ}| ¡ }t|j	|j	ƒ |j
dgd�}t||ƒ}| 
d¡}t|j	|j	ƒ d S )	Nr>   rK   rL   r   r[   r  r  r%   )rD   rE   rF   rU  r   r   rm  r   r   rç   rn  )r0   rç   r2   r2  r®  rb  Údp1r8   r8   r9   Útest_deriv_1dí  s    


zTestNdPPoly.test_deriv_1dc           	   
   C   s\  t j d¡ t j dddddd¡}t  dd	d¡}t  dd	d¡d
 }t  dd	d¡d }t||||fƒ}t| ddd	d
dd¡|ƒ}|jd
gd�}| d
¡}t	|j
|j
 dd
dd	dd¡ƒ t| d	ddd
dd¡|ƒ}|jg d¢d�}| d	¡}t	|j
|j
 d
dddd	d¡ƒ t| d
ddd	dd¡|ƒ}|jg d¢d�}| d¡}t	|j
|j
 d
ddddd	¡ƒ d S )Nr>   rK   rL   r  r\   r«   r¡   r   r[   r%   rq   rJ   r  rL  )r   r   rJ   )rD   rE   rF   rU  r   r   r   Ú	transposerm  r   rç   rn  )	r0   rç   r2   r1   r3   r2  rb  r®  rS  r8   r8   r9   Útest_deriv_3d	  s0    
ÿ
ÿ
ÿzTestNdPPoly.test_deriv_3dc           
      C   sÀ   t  d¡}t  ddd¡d }t  ddd¡d }t  ddd¡d }t||||fƒ}| d	¡}| d
¡}t j d¡}t j d¡}t j d¡}	t||||	fƒ||d  |	d  tdƒtdƒ  ƒ d S )N)r[   r[   r[   rJ   rK   rL   r   r[   rK   rL   r%   r  rJ   )r[   r   rK   )r   r%   r   r_  )	rD   r’   r   r   rn  rE   rU  r   r   )
r0   rç   r2   r1   r3   r2  r¯  r  rè   rO  r8   r8   r9   Útest_deriv_3d_simple 	  s    


"ÿz TestNdPPoly.test_deriv_3d_simplec           	         st  t j d¡ t j dddd¡}t  ddd¡d }t  ddd¡d	 }| dd	dd
¡}| |jd |jd d¡ ¡ }t	 
||d	¡ | |j¡}| dd	dd
¡}| dd
dd	¡}| |jd |jd d¡ ¡ }t	 
||d	¡ | |j¡}| d	dd
d¡ ¡ }t|||fƒ‰ ddgddgddgddgfD ]N}ˆ  |¡}t‡ fdd„|tddd�gd	 d�\}}t||ddt|ƒd� �q d S )Nr>   rK   rL   r;   rÓ  r   r[   rÐ   r%   rJ   rM   rF  )r   r(   )r‡  r‰  )r³  r  c                    s   ˆ | |fƒS rÝ   r8   )r2   r1   ©r2  r8   r9   Ú<lambda>O	  rô   z/TestNdPPoly.test_integrate_2d.<locals>.<lambda>gñhãˆµøä>)ZepsrelZepsabs)rª   )r¥   r°   rº   )rD   rE   rF   rU  r   rU  rv   rö   rG   r   Zfix_continuityr   r�  r"   r¨   r   râ  )	r0   rç   r2   r1   ÚcxÚrangesrÌ  Zig2Zerr2r8   rX  r9   Útest_integrate_2d3	  s6    ý
ÿ

ÿzTestNdPPoly.test_integrate_2dc                 C   sX  t j d¡ t j dddddd¡}t  dd	d¡d	 }t  dd	d¡d
 }t  dd	d¡d }t||||fƒ}t j d¡}t j d¡}d\}}	|j||	dd�}
| d¡}t|
||fƒ||	||fƒ||||fƒ ƒ |j||	d	d�}| d¡}t|||fƒ|||	|fƒ||||fƒ ƒ |j||	d
d�}| d¡}t|||fƒ||||	fƒ||||fƒ ƒ d S )Nr>   rK   rL   r  r;   rÓ  rÐ   r   r[   r%   rÑ   rJ   rî   )r  r‰  r‘   rM  rL  r(  )	rD   rE   rF   rU  r   r   Zintegrate_1drn  r   )r0   rç   r2   r1   r3   r2  r7   r6   rX   rY   ZpxZpaxÚpyZpayZpzZpazr8   r8   r9   Útest_integrate_1dT	  s$    
*
*
zTestNdPPoly.test_integrate_1dN)ri   rj   rk   rC  rI  rP  rR  rT  rV  rW  r\  r^  r8   r8   r8   r9   r@  ™  s   !r@  c                    sÊ   t  t|ƒˆ jd f¡}t|ƒD ]¤\}}|dk s8|dkrLt j||dd…f< q t  ||¡d ‰||ˆ  ‰t|ˆ |  koˆ|ˆd  k n  ƒ t‡ ‡‡fdd„t	ˆ jd ƒD ƒƒ}|||dd…f< q |S )z&Evaluate piecewise polynomial manuallyr%   r   r[   Nc                 3   s0   | ](}ˆ |ˆf ˆˆ j d  | d   V  qdS )r   r[   N)rö   ©rò   r“  ©rç   r  rå  r8   r9   ró   y	  s   ÿz _ppoly_eval_1.<locals>.<genexpr>)
rD   rV   r0  rö   r	  rb   Úsearchsortedr   Úsumr÷   )rç   r2   Zxpsr#  rä  rg  rÇ  r8   r`  r9   r´  o	  s    (ÿr´  c                    sÒ   |d }|d }| j d }t  |¡}t |¡}t |¡}||k||k@ }	|||	 < | |	¡}
t ||
¡d ‰ˆ dt|ƒ¡‰| ‰|
| ˆ¡ }tj	||d�‰ t 
‡ ‡‡fdd„tt|
ƒƒD ƒ¡}|||	< ||_ |S )z4Evaluate piecewise polynomial manually (another way)r   rM   r[   )ÚNc              	      s4   g | ],}t  ˆ |d d …f ˆd d …ˆ| f ¡‘qS rÝ   )rD   rœ  r_  ©ÚVZindxsrX  r8   r9   r,  �	  rô   z!_ppoly_eval_2.<locals>.<listcomp>)rö   rD   r/   Z
empty_likeÚcompressra  Zclipr0  ZtakeZvanderrN   r÷   )r1  Zbreaksr¿   rG  rX   rY   ÚKZ	saveshaperp  Úmaskr
  r›  Úvaluesr8   rd  r9   rµ  	  s$    





$rµ  c                 C   s@   |dk rt dƒ‚n*||krdS t|| d |ƒ| ||   S dS )z
    d^n (x**y) / dx^n
    r   zinvalid derivative orderr[   N)rP   r   )r2   r1   r  r8   r8   r9   Ú_dpow–	  s
    
rj  c              
   C   st  |du rd}t jt|ƒf| jd�}| jdd… \}}tt||ƒƒD �]*\}\}	}
|d d |	  krt|d d kržn n&|d d |
  krœ|d d ksªn t j||< qBt  |d |	¡d }t  |d |
¡d }|	|d |  }|
|d |  }d}t	| jd ƒD ]`}t	| jd ƒD ]J}|| || d || d ||f t
|||d ƒ t
|||d ƒ 7 }�q�q|||< qB|S )z@
    Straightforward evaluation of 2-D piecewise polynomial
    NrE  r¬   r%   r   rM   r[   ©rD   rF  r0  r­   rö   r	  Úziprb   ra  r÷   rj  )rç   r3  r¿   Úynewrj  r#  ÚnxÚnyÚjoutr2   r1   Új1Új2Ús1Ús2ræ  Úk1Úk2r8   r8   r9   rH  ¢	  s4    (ÿ
ÿ
 ÿþ
rH  c                 C   sø  |du rd}t jt|ƒf| jd�}| jdd… \}}}	tt|||ƒƒD �]ª\}
\}}}|d d |  krz|d d krÌn nN|d d |  kr¢|d d krÌn n&|d d |  krÊ|d d ksØn t j||
< qFt  |d |¡d }t  |d |¡d }t  |d |¡d }||d |  }||d |  }||d |  }d}t	| jd ƒD ]’}t	| jd ƒD ]|}t	| jd ƒD ]f}|| || d || d |	| d |||f t
|||d ƒ t
|||d ƒ t
|||d ƒ 7 }�qz�qh�qV|||
< qF|S )	z@
    Straightforward evaluation of 3-D piecewise polynomial
    NrK  r¬   rJ   r   rM   r[   r%   rk  )rç   r3  r¿   rm  Úznewrj  r#  rn  ro  Znzrp  r2   r1   r3   rq  rr  Új3rs  rt  Ús3ræ  ru  rv  Úk3r8   r8   r9   rN  Æ	  sF     (ÿ
ÿ
þ
þ
,ÿþý
rN  c                 C   s~  |du rd}t jt|ƒf| jd�}| jdd… \}}	}
}tt||||ƒƒD �],\}\}}}}|d d |  kr€|d d krün nx|d d |  kr¨|d d krün nP|d d |  krÐ|d d krün n(|d	 d |  krú|d	 d k�sn t j||< qJt  |d |¡d }t  |d |¡d }t  |d |¡d }t  |d	 |¡d }||d |  }||d |  }||d |  }||d	 |  }d}t	| jd ƒD ]Ä}t	| jd ƒD ]®}t	| jd ƒD ]˜}t	| jd	 ƒD ]‚}|| || d |	| d |
| d || d ||||f t
|||d ƒ t
|||d ƒ t
|||d ƒ t
|||d	 ƒ 7 }�qà�qÎ�q¼�qª|||< qJ|S )
z@
    Straightforward evaluation of 4-D piecewise polynomial
    N)r   r   r   r   r¬   rK   r   rM   r[   r%   rJ   rk  )rç   r3  r¿   rm  rw  Zunewrj  r#  rf   rg   ZmzÚmurp  r2   r1   r3   r7   rq  rr  rx  Zj4rs  rt  ry  Zs4ræ  ru  rv  rz  Zk4r8   r8   r9   rQ  î	  sX    $(ÿ
ÿ
þ
þ
ý
ý

8ÿþýü
rQ  )N)N)N)>Znumpy.testingr   r   r   r   r   r   r   r-  r	   rO   Únumpyr
   r   r   r   r   r   rD   Zscipy.interpolater   r   r   r   r   r   r   r   r   r   r   r   r   Zscipy.specialr   r   r   Zscipy._lib._gcutilsr    r!   Zscipy.integrater"   r#   r$   rl   r/  r6  rQ  rr  r…  ró  r   r  r  r@  r´  rb   rµ  rj  rH  rN  rQ  r8   r8   r8   r9   Ú<module>   sT   $ <_      
m /   i  1 $ W
$
(